Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Индексный регистр отображения на мэйнфрейме IBM 7094 с начала 1960-х годов.

Индексный регистр в компьютере CPU является регистром процессора или присвоены ячейки памяти [1] используется для модификации операндов адресов во время запуска программы. Это оказалось полезным для выполнения операций с векторами / массивами и при коммерческой обработке данных для перехода от поля к полю внутри записей. В обоих случаях индексные регистры существенно уменьшили объем используемой памяти и увеличили скорость выполнения.

Содержимое индексного регистра добавляется (в некоторых случаях вычитается из) непосредственного адреса (того, который является частью самой инструкции), чтобы сформировать «эффективный» адрес фактических данных (операнда). Обычно предоставляются специальные инструкции для проверки индексного регистра и, если тест не удается, увеличивает индексный регистр на непосредственную константу и выполняет переходы, как правило, к началу цикла. Некоторые наборы инструкций позволяют использовать более одного индексного регистра; в этом случае дополнительные поля инструкций определяют, какие индексные регистры использовать. [2] В то время как обычно процессоры, которые позволяют инструкции указывать несколько индексных регистров, складывают содержимое вместе, у IBM была линейка компьютеров, на которых содержимое было или было вместе. [3]

В ранних компьютерах без какой-либо формы косвенной адресации операции с массивами должны были выполняться путем изменения адреса инструкции, что требовало нескольких дополнительных программных шагов и использовало больше памяти компьютера [4], дефицитный ресурс в компьютерных установках ранней эпохи (как так же, как в первых микрокомпьютерах два десятилетия спустя).

История [ править ]

Индексные регистры, широко известные как B-линия в ранних британских компьютерах, были впервые использованы в британском компьютере Manchester Mark 1 в 1949 году. В целом индексные регистры стали стандартной частью компьютеров во втором поколении технологии, примерно в 1954–1966 годах. . Большинство [а] машины в IBM 700/7000 мэйнфреймов серии имели их, начиная с IBM 704 в 1954 году, хотя они были дополнительно на некоторых небольших машин , таких как IBM 650 и IBM 1401 .

В начале «малые машины» с индексными регистрами включают AN / USQ-17 , около 1960, а серия 9 из реального времени компьютеров от систем научных данных , с начала 1960 - х годов.

В то время как Intel 8080 позволяла косвенную адресацию через регистр, первым микропроцессором с истинным индексным регистром, по-видимому, был Motorola 6800 , а аналогичная технология MOS 6502 хорошо использовала два таких регистра.

Современные компьютерные разработки обычно не включают специальных индексных регистров; вместо этого они позволяют любому регистру общего назначения содержать адрес и позволяют добавлять к нему постоянное значение и, на некоторых машинах, содержимое другого регистра в качестве смещения для формирования эффективного адреса. Ранние компьютеры, разработанные таким образом, включают PDP-6 и IBM System / 360 .

Пример [ править ]

Вот простой пример использования индексного регистра в псевдокоде ассемблера, который суммирует массив из 100 записей из 4-байтовых слов:

 Clear_accumulator Load_index 400, index2 // загружаем 4 * размер массива в индексный регистр 2 (index2)loop_start: Add_word_to_accumulator array_start, index2 // Добавить в AC слово по адресу (array_start + index2) Branch_and_decrement_if_index_not_zero loop_start, 4, index2 // цикл уменьшается на 4, пока индексный регистр не станет нулевым

См. Также [ править ]

  • Для цикла

Заметки [ править ]

  1. ^ У 702, 705 и 7080 не было индексных регистров.

Ссылки [ править ]

  1. ^ «Инструкции: индексные слова» (PDF) . IBM 7070-7074 Принципы работы (PDF) . IBM. 1962. с. 11. GA22-7003-6.
  2. ^ Справочное руководство IBM 709, форма A22-6501-0, 1958, стр. 12
  3. ^ Принципы работы IBM 7094 (PDF) . Пятое издание. IBM. 21 октября 1966 г. A22-6703-4.
  4. ^ IBM 1401 Справочное руководство, форма A24-1403-4, 1960, стр. 77