An index register in a computer CPU is a register used for modifying operand addresses during the run of a program, typically for doing vector / array operations. Index registers were first used in the British Manchester Mark I computer, in 1949.
Before the invention of index registers, and without indirect addressing, array operations had to be performed either by linearly repeating program code for each array element (i.e. over all address locations), or by using rather "dirty" self-modifying code techniques – both alternatives leading to quite significant disadvantages in program flexibility and maintenance, as well as being wasteful of computer memory; the latter a very scarce resource in computer installations of the early era (as well as in early microcomputers several decades later).
In general, index registers became a standard part of computers during the technology's second generation (roughly 1955–1964). See, for example, the IBM 700/7000 mainframess. Early "small machines" with index registers include the AN/USQ-17, around 1960, and the real-time computers from Scientific Data Systems. The first microprocessor with an index register appears to have been the Motorola 6800, whose upgraded clone the MOS Technologies 6502 made good use of two such registers.