IBM 801

редактировать

801 был экспериментальный центральный процессор (ЦП) дизайн, разработанный IBM в течение 1970 - х годов. Считается, что это первая современная RISC- архитектура, в которой для всех вычислений используются регистры процессора и исключаются многие режимы вариантной адресации, встречающиеся в CISC- проектах. Первоначально разработанный как процессор для телефонного коммутатора, позже он использовался в качестве основы для миникомпьютера и ряда продуктов для их линейки мэйнфреймов. Первоначальный дизайн был 24-битным процессором; вскоре его заменили 32-битные реализации тех же концепций, а исходный 24-битный 801 использовался только в начале 1980-х годов.

801-й имел огромное влияние на компьютерный рынок. Вооружившись огромными объемами данных о производительности, IBM смогла продемонстрировать, что простая конструкция может легко превзойти даже самые мощные классические конструкции ЦП, в то же время создавая машинный код, который лишь ненамного больше, чем сильно оптимизированные инструкции CISC. Применение тех же методов даже к существующим процессорам, таким как System / 370, в целом также удвоило производительность этих систем. Это продемонстрировало ценность концепции RISC, и все будущие системы IBM были основаны на принципах, разработанных в ходе проекта 801.

За свою работу над 801 Джон Кок был награжден премией Тьюринга в 1987 году, Национальной медалью технологий в 1991 году и Национальной медалью науки в 1994 году.

СОДЕРЖАНИЕ

  • 1 История
  • 2 Более поздние модификации
  • 3 проект Америка
  • 4 ссылки
    • 4.1 Цитаты
    • 4.2 Библиография
  • 5 Дальнейшее чтение
  • 6 Внешние ссылки

История

В 1974 году IBM начала изучать возможность построения телефонного коммутатора, способного обрабатывать один миллион вызовов в час, или около 300 вызовов в секунду. Они подсчитали, что для выполнения каждого вызова потребуется 20 000 инструкций, а с учетом дополнительных затрат времени и других соображений такая машина потребует производительности около 12 MIPS. Это потребует значительного повышения производительности; их нынешняя лучшая машина, IBM System / 370 Model 168 конца 1972 года, предлагала около 3 MIPS.

Группа, работающая над этим проектом в Исследовательском центре Томаса Дж. Ватсона, включая Джона Кока, разработала процессор для этой цели. Чтобы достичь требуемой производительности, они рассмотрели, какие операции требуются такой машине, и удалили все, что не подходило. Это привело, например, к удалению модуля с плавающей запятой, который не понадобился бы в этом приложении. Что еще более важно, они также удалили многие инструкции, которые работали с данными в основной памяти, и оставили только те инструкции, которые работали с регистрами внутреннего процессора, поскольку они были намного быстрее в использовании, и простой код в телефонном коммутаторе можно было написать для использования. только эти типы инструкций. Результатом этой работы стал концептуальный проект упрощенного процессора с требуемой производительностью.

Проект телефонного коммутатора был отменен в 1975 году, но команда добилась значительного прогресса в реализации концепции, и в октябре IBM решила продолжить его как проект общего назначения. Не имея очевидного проекта, к которому можно было бы прикрепить его, команда решила назвать его «801» в честь здания, в котором они работали. Для роли общего назначения команда начала рассматривать реальные программы, которые будут запускаться на типичном мини-компьютере.. IBM собрала огромное количество статистических данных о производительности реальных рабочих нагрузок на своих машинах, и эти данные продемонстрировали, что более половины времени в типичной программе тратится на выполнение только пяти инструкций: значение загрузки из памяти, сохранение значения в память, переход, сравните числа с фиксированной точкой и сложите числа с фиксированной точкой. Это предполагало, что такая же упрощенная конструкция процессора будет работать как для миникомпьютера общего назначения, так и для коммутатора специального назначения.

Этот вывод противоречил современной конструкции процессоров, основанной на концепции использования микрокода. IBM была одной из первых, кто широко использовал эту технику в своей серии System / 360. Модели 360 и 370 имели разные уровни производительности, и все они выполняли один и тот же код машинного языка. На высокопроизводительных машинах многие из этих инструкций были реализованы непосредственно на оборудовании, например, в блоке с плавающей запятой, тогда как низкопроизводительные машины могли вместо этого имитировать эти инструкции, используя последовательность других инструкций. Это позволяло единому бинарному интерфейсу приложения работать по всей линейке и позволяло клиентам быть уверенными в том, что, если когда-либо потребуется более высокая производительность, они смогут перейти на более быструю машину без каких-либо других изменений.

Микрокод позволял простому процессору предлагать множество инструкций, которые использовались разработчиками для реализации широкого спектра режимов адресации. Например, такая инструкция ADDможет иметь дюжину версий: одна добавляет два числа во внутренние регистры, одна добавляет регистр к значению в памяти, третья добавляет два значения из памяти и т. Д. Это позволяло программисту выбрать точное вариации, необходимые для решения конкретной задачи. Процессор будет читать эту инструкцию и использовать микрокод, чтобы разбить ее на серию внутренних инструкций. Например, добавление двух чисел в память можно реализовать, загрузив эти два числа в регистры, сложив их, а затем снова сохранив.

Команда заметила побочный эффект этой концепции; Столкнувшись с множеством возможных версий данной инструкции, авторы компилятора почти всегда выбирали единственную версию. Это почти всегда было реализовано аппаратно на младших машинах. Это гарантировало, что машинный код, сгенерированный компилятором, будет работать как можно быстрее во всей линейке. Хотя использование других версий инструкций может работать даже быстрее на машине, которая реализовала другие версии инструкции на аппаратном уровне, сложность знания того, какую из них выбрать в постоянно меняющемся списке машин, делала это крайне непривлекательным, и авторы компиляторов в значительной степени игнорировали их. возможности.

В результате большинство инструкций, доступных в наборе инструкций, никогда не использовались в скомпилированных программах. И именно здесь команда осуществила ключевую реализацию проекта 801:

Установление микрокода между компьютером и его пользователями накладывает дорогостоящие накладные расходы на выполнение наиболее часто выполняемых инструкций.

Микрокоду требуется ненулевое время для проверки инструкции перед ее выполнением. Тот же базовый процессор с удаленным микрокодом устранит эти накладные расходы и быстрее выполнит эти инструкции. Поскольку микрокод, по сути, запускал небольшие подпрограммы, предназначенные для конкретной аппаратной реализации, он в конечном итоге выполнял ту же базовую задачу, что и компилятор, реализуя инструкции более высокого уровня как последовательность машинно-зависимых инструкций. Простое удаление микрокода и его реализация в компиляторе может привести к более быстрой машине.

Одна проблема заключалась в том, что программы, написанные для такой машины, занимали бы больше памяти; некоторые задачи, которые могут быть выполнены с помощью одной инструкции на 370, должны быть выражены как несколько инструкций на 801. Например, добавление двух чисел из памяти потребует двух инструкций загрузки в регистр, добавления регистра в регистр, а затем сохранение в памяти. Это могло потенциально замедлить работу системы в целом, если бы ей приходилось тратить больше времени на чтение инструкций из памяти, чем раньше на их декодирование. По мере того, как они продолжали работать над дизайном и улучшали свои компиляторы, они обнаружили, что общая длина программы продолжала сокращаться, в конечном итоге становясь примерно такой же, как у написанных для 370.

Первоначально предложенная архитектура представляла собой машину с шестнадцатью 24-битными регистрами и без виртуальной памяти. Он используется формат с двумя операндами в инструкции, так что инструкции, как правило, в форме A = A + B, в oppposed к трем-операнда формата A = B + C. Получившийся ЦП был введен в эксплуатацию к лету 1980 года и был реализован с использованием технологии дискретных компонентов Motorola MECL-10K на больших заказных платах с проволочной оболочкой. ЦП работал с тактовой частотой 66 нс (примерно 15,15 МГц) и мог выполнять вычисления с высокой скоростью примерно 15  MIPS.

Архитектура 801 использовалась во множестве устройств IBM, включая контроллеры каналов для их мэйнфреймов S / 370 (таких как IBM 3090 ), различные сетевые устройства и, наконец, само ядро ​​мэйнфрейма IBM 9370. Первоначальная версия архитектуры 801 была основой для архитектуры микропроцессора IBM ROMP, используемого в компьютере рабочей станции IBM RT PC и нескольких экспериментальных компьютерах от IBM Research.

Более поздние модификации

Первоначально конструкция 801 была разработана для системы с ограниченными функциями, но в ней отсутствовал ряд функций, которые можно было бы увидеть на более крупных машинах. Среди них следует отметить отсутствие аппаратной поддержки виртуальной памяти, которая не требовалась для роли контроллера и была реализована в программном обеспечении в системах начала 801 года, которые в ней нуждались. Для более широкого использования поддержка оборудования была обязательной функцией. Вдобавок к 1980-м годам компьютерный мир в целом двигался в сторону 32-битных систем, и было желание сделать то же самое с 801.

Переход на 32-битный формат имел еще одно существенное преимущество. На практике было обнаружено, что формат с двумя операндами трудно использовать в типичном математическом коде. В идеале оба входных операнда должны оставаться в регистрах, где их можно было бы повторно использовать в последующих операциях, но поскольку выходные данные операции перезаписывали один из них, часто приходилось перезагружать одно из значений из памяти.. При переходе к 32-битному формату дополнительные биты в командных словах позволяли указывать дополнительный регистр, так что вывод таких операций мог быть направлен в отдельный регистр. Более крупное командное слово также позволило увеличить количество регистров с шестнадцати до тридцати двух, изменение, которое явно было предложено при изучении кода 801. Несмотря на расширение командных слов с 24 до 32 разрядов, программы не выросли на соответствующие 33% из-за избежания загрузок и сохранений из-за этих двух изменений.

Другие желательные дополнения включают инструкции для работы со строковыми данными, которые были закодированы в "упакованном" формате с несколькими символами ASCII в одном слове памяти, и дополнения для работы с двоично- десятичными числами, включая сумматор, который может переносить четырехбитовые десятичные числа..

Когда новая версия 801 была запущена в качестве симулятора на 370, команда была удивлена, обнаружив, что код, скомпилированный для 801 и запускаемый в симуляторе, часто работал быстрее, чем тот же исходный код, скомпилированный непосредственно на 370 машинный код с использованием Компилятор 370 PL / 1. Когда они перенесли свой экспериментальный язык «PL.8» обратно на 370 и скомпилировали приложения, использующие его, они также работали быстрее, чем существующий код PL / 1, в три раза быстрее. Это было связано с тем, что компилятор принимал RISC-подобные решения о том, как компилировать код во внутренние регистры, тем самым оптимизируя как можно больше обращений к памяти. На 370 они были такими же дорогими, как и на 801, но обычно эта стоимость была скрыта простотой одной строки кода CISC. Компилятор PL.8 гораздо более агрессивно избегал загрузок и сохранений, что приводило к более высокой производительности даже на процессоре CISC.

Америка проект

В начале 1980-х уроки, извлеченные из 801-го, были возвращены в новый «американский» дизайн. Это был набор процессоров с тремя микросхемами, включая процессор инструкций, который выбирает и декодирует инструкции, процессор с фиксированной точкой, который разделяет обязанности с процессором инструкций, и процессор с плавающей запятой для тех систем, которым это необходимо. Разработанный командой 801, окончательный проект был отправлен в офис IBM в Остине, который разработал его в систему IBM RS / 6000. RS / 6000, работающий на частоте 25 МГц, был одним из самых быстрых компьютеров своего времени. Он превосходил другие RISC-машины в два-три раза в обычных тестах и ​​тривиально превосходил более старые системы CISC.

После RS / 6000 компания обратила внимание на версию концепта 801, которую можно было эффективно производить в различных масштабах. Результатом стала архитектура набора команд IBM POWER и ответвление PowerPC. За свою работу над 801 Джон Кок был награжден премией Тьюринга в 1987 году, Национальной медалью технологий в 1991 году и Национальной медалью науки в 1994 году.

Майкл Дж. Флинн рассматривает проект IBM 801 как первую компьютерную систему с сокращенным набором команд (RISC).

использованная литература

Цитаты

Библиография

дальнейшее чтение

  • «Изменение компьютерной архитектуры - способ повысить пропускную способность, - предлагают исследователи IBM». Электроника, т. 49, № 25 (23 декабря 1976 г.), стр. 30–31.
  • В. Маклеллан: «IBM Mini - радикальный отход». Datamation, т. 25, № 11 (октябрь 1979 г.), стр. 53–55.
  • Дьюар, Роберт Б.К.; Смосна, Мэтью (1990). Микропроцессоры: взгляд программиста. Макгроу-Хилл. С. 258–264.
  • Табак, Даниэль (1987). Архитектура RISC. Research Studies Press. С. 69–72.

внешние ссылки

Последняя правка сделана 2023-04-21 08:14:14
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте