Индексный регистр - Index register

Индексный регистр отображается на IBM 7094 мейнфрейм начала 1960-х годов.

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

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

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

История

Индексные регистры, широко известные как B-линия в ранних британских компьютерах, были впервые использованы в Британский Манчестер Марк 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, декремент 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