Введение
1967 суперкомпьютер
CDC 7600 был разработан Сеймуром Крэем как преемник CDC 6600, продлив доминирование Control Data в области суперкомпьютеров в 1970-е годы. 7600 работал на частоте 36,4 МГц (27,5 нс тактового цикла) и имел 65 Кслов первичной памяти (с 60-битным размером слова) с использованием магнитных сердечников и переменного размера (до 512 Кслов) вторичной памяти (в зависимости от установки). Он был примерно в десять раз быстрее, чем CDC 6600, и мог выдавать около 10 MFLOPS на скомпилированном вручную коде, с пиковой производительностью 36 MFLOPS. Кроме того, в контрольных тестах в начале 1970 года было показано, что он немного быстрее, чем его конкурент IBM, IBM System/360, модель 195. Когда система была выпущена в 1967 году, она продавалась за около 5 миллионов долларов в базовой конфигурации и значительно дороже с добавлением опций и функций. Среди заметных достижений 7600, помимо широкого использования конвейерной обработки, была физическая С-образная форма, которая уменьшила занимаемую площадь и значительно увеличила производительность за счет сокращения расстояния, которое должны были пройти сигналы. По мере улучшения производственных процессов и качества, подобные улучшения могли увеличить скорость машины в два, а возможно, и в пять раз. Однако, как и в случае с 6600, Крей поставил перед собой цель создать машину с десятикратно большей производительностью. Одна из причин, по которой 6600 был намного быстрее своих современников, заключалась в наличии нескольких функциональных блоков, способных работать параллельно. Например, машина могла одновременно выполнять сложение двух чисел и умножение двух других. Однако любая инструкция должна была завершить прохождение через блок, прежде чем следующая могла быть в него подана, что создавало узкое место, когда в системе планировщика заканчивались инструкции. Добавление большего количества функциональных блоков не улучшило бы производительность, если бы планировщик также не был значительно улучшен, особенно в плане увеличения его памяти, чтобы он мог просматривать больше инструкций и выбирать те, которые можно было бы подать в параллельные блоки. Это казалось серьезной проблемой. Чтобы решить эту проблему, Крей обратился к концепции конвейера команд. Каждый функциональный блок состоял из нескольких секций, работающих последовательно. Например, блок сложения мог иметь схему, предназначенную для извлечения операндов из памяти, затем сам математический блок и, наконец, схему для отправки результатов обратно в память. В любой момент времени активной была только одна часть блока, а остальные ждали своей очереди. Конвейерная обработка улучшает это, подавая следующую инструкцию до завершения первой, используя это время простоя. Например, пока одна инструкция складывается, можно извлечь операнды для следующей инструкции сложения. Таким образом, как только текущая инструкция завершается и переходит в выходную схему, операнды для следующего сложения уже готовы к сложению. Таким образом, каждый функциональный блок работает "параллельно", как и машина в целом. Улучшение производительности обычно зависит от количества шагов, необходимых блоку для завершения операции. Например, умножитель 6600 выполнял инструкцию за 10 циклов, поэтому, благодаря конвейерной обработке, можно было ожидать увеличения скорости примерно в 10 раз. Однако все не так просто. Конвейерная обработка требует, чтобы внутренние компоненты блока можно было эффективно разделить до такой степени, чтобы каждый шаг операции выполнялся на полностью отдельных схемах. Это редко достижимо на практике. Тем не менее, использование конвейерной обработки в 7600 улучшило производительность по сравнению с 6600 примерно в 3 раза. Чтобы достичь остальной части цели, машине необходимо было работать на более высокой скорости, что стало возможным благодаря новым конструкциям транзисторов. Однако существует физический предел производительности из-за времени, необходимого для перемещения сигналов между частями машины, которое, в свою очередь, определяется ее физическим размером. Как всегда, Крей приложил значительные усилия к решению этой проблемы в процессе проектирования, что позволило добиться более высоких рабочих частот. Для 7600 каждый модуль схемы фактически состоял из шести печатных плат, каждая из которых была наполнена субминиатюрными резисторами, диодами и транзисторами. Шесть плат складывались в стопку и соединялись по краям, создавая очень компактный, но практически неремонтопригодный модуль. Однако такая плотная упаковка также привела к самой большой проблеме машины – нагреву. Для 7600 Крей снова обратился к своему инженеру по холодильному оборудованию Дину Рашу, ранее работавшему в компании Amana. Раш добавил алюминиевую пластину к задней части каждой стороны стопки, которые, в свою очередь, охлаждались жидкой фреоновой системой, проходящей через ядро машины. Поскольку эта система была механической и, следовательно, подвержена поломкам, 7600 был перепроектирован в большую С-образную форму, чтобы обеспечить доступ к модулям с обеих сторон от охлаждающих труб, войдя внутрь "С" и открыв шкаф.
Архитектура
+ CDC 7600 регистры 59 . 17 . 00 (позиция бита) Регистры операндов (60 бит) X0 (начальный адрес LCM) Регистр 0 X1 (чтение) Регистр 1 X2 (чтение) Регистр 2 X3 (чтение) Регистр 3 X4 (чтение) Регистр 4 X5 (чтение) Регистр 5 X6 (запись) Регистр 6 X7 (запись) Регистр 7 Адресные регистры (18 бит) A0 (начало SCM) Адрес 0 A1 (адрес чтения) Адрес 1 A2 (адрес чтения) Адрес 2 A3 (адрес чтения) Адрес 3 A4 (адрес чтения) Адрес 4 A5 (адрес чтения) Адрес 5 A6 (адрес записи) Адрес 6 A7 (адрес записи) Адрес 7 Регистры приращения (18 бит) B0 (все биты в ноль) Приращение 0 B1 Приращение 1 B2 Приращение 2 B3 Приращение 3 B4 Приращение 4 B5 Приращение 5 B6 Приращение 6 B7 Приращение 7 Программный адрес (18 бит) P
The 7600 was an architectural landmark, and most of its features are still standard parts of computer design. It is a load store computer with a 15 bit instruction word containing a 6 bit operation code. There are only 64 machine codes, including a no operation code, with no fixed point multiply or divide operations in the central processor. The 7600 has two main core memories. Small core memory holds the instructions currently being executed and the data currently being processed. It has an access time of 10 of the 27.5 ns minor cycles and a 60 bit word length. Large core memory holds data ready to transfer to small core memory. It has an access time of 60 of the 27.5 ns minor cycles and a word length of 480 bits (512 bits with parity).
7600 стала архитектурной вехой, и большинство её особенностей до сих пор являются стандартными элементами компьютерной архитектуры. Это компьютер с загрузкой и сохранением, с 15-битным словом команды, содержащим 6-битный код операции. Существует всего 64 машинных кода, включая код без операции, без операций умножения или деления с фиксированной точкой в центральном процессоре. 7600 имеет две основные ячейки памяти. Малая ячейка памяти хранит инструкции, которые в настоящее время выполняются, и данные, которые в настоящее время обрабатываются. Время доступа к ней составляет 10 из 27,5 нс малых циклов, а длина слова – 60 бит. Большая ячейка памяти хранит данные, готовые к передаче в малую ячейку памяти. Время доступа к ней составляет 60 из 27,5 нс малых циклов, а длина слова – 480 бит (512 бит с контролем четности).
The 7600 was an architectural landmark, and most of its features are still standard parts of computer design. It is a load store computer with a 15 bit instruction word containing a 6 bit operation code. There are only 64 machine codes, including a no operation code, with no fixed point multiply or divide operations in the central processor. The 7600 has two main core memories. Small core memory holds the instructions currently being executed and the data currently being processed. It has an access time of 10 of the 27.5 ns minor cycles and a 60 bit word length. Large core memory holds data ready to transfer to small core memory. It has an access time of 60 of the 27.5 ns minor cycles and a word length of 480 bits (512 bits with parity).
Связь с CDC 6600
CDC 7600 "был разработан с обеспечением обратной совместимости машинного кода с 6600, но с существенным увеличением производительности". Один пользователь говорил: "Большинство пользователей могли работать на любой системе без изменений", однако переход на 7600 был осуществлен, когда Крей пришел к выводу о невозможности полной совместимости. Тем не менее, благодаря архитектуре операционной системы 7600, 6600 и 7600 разделяли "единую программную среду", несмотря на различия на низком уровне. В течение каждого цикла работы машины один из ППУ осуществлял управление, передавая данные в память, пока основной процессор выполнял вычисления. После завершения цикла управление передавалось следующему ППУ. Таким образом, память всегда содержала актуальную информацию для работы основного процессора (за исключением задержек во внешних устройствах), что исключало задержки при работе с данными и позволяло построить ЦП исключительно для математических вычислений. ППУ можно было бы назвать высокоинтеллектуальным "каналом связи". Как и в 6600, в 7600 использовались 60-битные слова с инструкциями, обычно длиной 15 бит, хотя также присутствовали и 30-битные инструкции. Инструкции упаковывались в 60-битные слова, но 30-битная инструкция не могла занимать части двух слов, и управление могло быть передано только первой инструкции в слове. Однако сам набор инструкций был изменен, чтобы отразить новую внутреннюю организацию памяти, что сделало его несовместимым с более ранней 6600. Машины были достаточно похожи, чтобы обеспечить относительно простую переносимость компиляторов и операционных систем. Первоначально машина поставлялась без программного обеспечения; пользователи должны были быть готовы разработать собственную операционную систему, такую как LTSS, NCAROS и другие, а также компиляторы, такие как LRLTRAN (версия Fortran от Livermore с динамическим управлением памятью и другими нестандартными функциями). CDC также производила два многопроцессорных компьютера на базе 7600, под номером модели 7700. Они состояли из двух машин 7600 в асимметричной конфигурации: центральной и вспомогательной. Они использовались для запуска ракет и отслеживания входящих советских межконтинентальных баллистических ракет. Симулятор радаров представлял собой систему моделирования в реальном времени с CDC 6400 для обеспечения ввода/вывода. Эти системы предназначались для использования на Тихоокеанском ракетном полигоне. Один компьютер был установлен в TRW в Редондо-Бич, штат Калифорния (позже перенесен на атолл Кваджалейн в южной части Тихого океана), а второй – в McDonnell Douglas в Хантингтон-Бич, штат Калифорния. Это были настоящие 7600, соединенные через шасси 25, что позволило объединить их в 7600 MP.
Прием и использование
С 1969 по 1975 год CDC 7600 общепризнанно считался самым быстрым компьютером в мире, за исключением специализированных машин. Однако, несмотря на передовую механику и систему охлаждения, 7600 был склонен к поломкам. И LLNL, и NCAR сообщали, что машина выходила из строя как минимум раз в день, а часто – четыре или пять раз. Приёмка на местах установки занимала годы, пока устранялись ошибки, и хотя машина в целом достаточно хорошо продавалась, учитывая её позиционирование в "высоком" сегменте, вряд ли она принесла CDC какую-либо ощутимую прибыль. Преемник CDC 8600 так и не был завершен, и Сеймур Крей основал собственную компанию, Cray Research. Один из сохранившихся 7600 частично экспонируется в Музее истории компьютеров. Из-за своих габаритов можно продемонстрировать только два угловых блока. Остальные находятся на хранении. Другой 7600 выставлен в Музее промышленности и технологий Чиппева-Фоллс вместе с консолью и контроллером ленточного накопителя.