Введение

Микропроцессор MIPS

R4000 — это микропроцессор, разработанный компанией MIPS Computer Systems, реализующий архитектуру набора команд MIPS III (ISA). Официально анонсированный 1 октября 1991 года, он стал одним из первых 64-битных микропроцессоров и первой реализацией MIPS III. В начале 1990-х годов, когда от микропроцессоров RISC ожидали замены микропроцессорам CISC, таким как Intel i486, R4000 был выбран в качестве микропроцессора для Advanced Computing Environment (ACE) — отраслевого стандарта, призванного определить общую RISC-платформу. ACE в конечном итоге не был реализован по ряду причин, но R4000 добился успеха на рынках рабочих станций и серверов.

Модели

Существует три конфигурации R4000: R4000PC – модель начального уровня без поддержки вторительной памяти кэш; R4000SC – модель с вторительной памятью кэш, но без поддержки многопроцессорности; и R4000MC – модель с вторительной памятью кэш и поддержкой протоколов обеспечения когерентности кэша, необходимых для многопроцессорных систем.

Описание

R4000 – это скалярный суперпроцессор с восьмиступенчатым целочисленным конвейером. На первом этапе (IF) генерируется виртуальный адрес инструкции, и буфер трансляции адресов (TLB) начинает трансляцию этого адреса в физический адрес. На втором этапе (IS) трансляция завершается, и инструкция извлекается из внутреннего кэша инструкций размером 8 КБ. Кэш инструкций организован по принципу прямого отображения, с виртуальным индексированием и физической маркировкой. Размер блока кэша составляет 16 или 32 байта. Архитектурно, его можно было бы расширить до 32 КБ. На третьем этапе (RF) инструкция декодируется и происходит чтение из файла регистров. Архитектура MIPS III определяет два файла регистров: один для целочисленных операций, а другой – для операций с плавающей точкой. Каждый файл регистров имеет ширину 64 бита и содержит 32 элемента. Файл регистров для целочисленных операций имеет два порта чтения и один порт записи, в то время как файл регистров для операций с плавающей точкой имеет два порта чтения и два порта записи. Исполнение начинается на четвертом этапе (EX) как для целочисленных, так и для инструкций с плавающей точкой, а результаты записываются обратно в файлы регистров после завершения на восьмом этапе (WB). При возможности, результаты могут быть переданы по обходным путям.

Исполнение целых чисел

R4000 имеет арифметико-логическое устройство (ALU), сдвигатель, умножитель и делитель, а также выравниватель нагрузки для выполнения целочисленных инструкций. ALU состоит из 64-битного сумматора с выбором переноса и логического блока и является конвейерным. Сдвигатель – 32-битный сдвигатель типа "бочка". Он выполняет 64-битные сдвиги за два цикла, что приводит к остановке конвейера. Такая конструкция была выбрана для экономии площади кристалла. Умножитель и делитель не являются конвейерными и имеют значительную задержку: умножение занимает 10 или 20 циклов для 32-битных или 64-битных целых чисел соответственно, а деление – 69 или 133 цикла для 32-битных или 64-битных целых чисел соответственно. Большинство инструкций имеют задержку в один цикл. Сумматор ALU также используется для вычисления виртуальных адресов при загрузке, сохранении и переходах. Инструкции загрузки и сохранения выполняются целочисленным конвейером и обращаются к 8 КБ кэшу данных на кристалле.

Исполнение с плавающей точкой

R4000 имеет модуль вычислений с плавающей точкой (FPU), соответствующий стандарту IEEE 754 1985, известный как R4010. FPU является сопроцессором, обозначенным CP1 (в ISA MIPS определены четыре сопроцессора, обозначенные CP0–CP3). FPU может работать в двух режимах: 32-битном или 64-битном, которые выбираются установкой бита FR в регистре состояния процессора. В 32-битном режиме 32 регистра с плавающей точкой становятся 32-разрядными при использовании для хранения чисел одинарной точности. При использовании для хранения чисел двойной точности доступно 16 регистров с плавающей точкой (регистры объединяются в пары). FPU может работать параллельно с ALU, если нет зависимостей по данным или ресурсам, что приводит к его остановке. Он содержит три функциональных блока: сумматор, умножитель и делитель. Умножитель и делитель могут выполнять инструкцию параллельно с сумматором, но используют его на заключительных этапах выполнения, что ограничивает степень перекрытия операций. Таким образом, при определенных условиях он может выполнять до трех инструкций одновременно, по одной в каждом блоке. FPU способен завершать выполнение одной инструкции за такт. Сумматор и умножитель конвейерные. Умножитель имеет четырехступенчатый конвейер. Он тактируется с частотой, вдвое превышающей тактовую частоту микропроцессора, для обеспечения достаточной производительности и использует динамическую логику для достижения высокой тактовой частоты. Деление имеет задержку 23 или 36 тактов для операций одинарной или двойной точности, а вычисление квадратного корня – 54 или 112 тактов. Для деления и вычисления квадратного корня используется алгоритм SRT.

Управление памятью

Блок управления памятью (MMU) использует буфер трансляции поиска (TLB) на 48 записей для преобразования виртуальных адресов. R4000 использует 64-битный виртуальный адрес, но реализует только 40 из 64 бит, обеспечивая адресное пространство виртуальной памяти объемом 1 ТБ; остальные биты проверяются на наличие нулей. R4000 использует 36-битный физический адрес, что позволяет адресовать 64 ГБ физической памяти.

Вторичный кэш

R4000 (только в конфигурациях SC и MC) поддерживает внешний вторичный кэш емкостью от 128 КБ до 4 МБ. Доступ к кэшу осуществляется через выделенную 128-битную шину данных. Вторичный кэш может быть сконфигурирован как объединенный кэш или как раздельный кэш инструкций и данных. В последнем случае каждый кэш может иметь емкость от 128 КБ до 2 МБ. Вторичный кэш имеет физическую адресацию, физические теги и программируемый размер блока 128, 256, 512 или 1024 байта. Контроллер кэша находится на кристалле. Кэш построен на стандартной статической оперативной памяти (SRAM). Шины данных и тегов защищены с помощью ECC.

Системная шина

R4000 использует 64-битную системную шину, называемую шиной SysAD. Шина SysAD являлась мультиплексированной шиной адреса и данных, то есть для передачи данных и адресов использовался один и тот же набор линий. Хотя это снижает пропускную способность, это также обходится дешевле, чем использование отдельной адресной шины, для которой требуется больше контактов и увеличивается сложность системы. Шину SysAD можно настроить для работы на половине, трети или четверти от внутренней тактовой частоты. Шина SysAD генерирует свой тактовый сигнал, деля рабочую частоту.

Количество транзисторов, размеры деталей и деталей процесса

R4000 содержит 1,2 миллиона транзисторов. Он был разработан с использованием двухслойного металл-оксид-полупроводникового (CMOS) процесса с нормой 1,0 мкм. Поскольку MIPS была компанией, не имеющей собственного производства, R4000 производился партнерами по их технологическим процессам, которые имели минимальный размер элемента 0,8 мкм.

Часовой режим

R4000 генерирует различные тактовые сигналы из главного тактового сигнала, генерируемого внешним источником. Для рабочей частоты R4000 удваивает главный тактовый сигнал, используя встроенную фазовую автоподстройку частоты (ФАПЧ).

Упаковка

R4000PC поставляется в корпусе с керамической решеткой выводов (CPGA) на 179 выводов. R4000SC и R4000MC поставляются в корпусе с керамической ступенчатой решеткой выводов (SPGA) на 447 выводов. Распиновка R4000MC отличается от распиновки R4000SC: некоторые выводы, не используемые в R4000SC, используются для сигналов, обеспечивающих когерентность кэша в R4000MC. Распиновка R4000PC аналогична распиновке микропроцессоров R4200 и R4600 в корпусе PGA. Эта особенность позволяет правильно спроектированной системе использовать любой из этих трех микропроцессоров.

R4400

R4400 является дальнейшим развитием R4000. Он был анонсирован в начале ноября 1992 года. Образцы микропроцессора были отправлены отобранным клиентам до этого, а общая доступность началась в январе 1993 года. R4400 работает на тактовых частотах 100, 133, 150, 200 и 250 МГц. Единственным существенным улучшением по сравнению с R4000 является увеличенный объем первичной кэш-памяти, который был удвоен до 16 КБ на каждый чип с 8 КБ на каждый чип. Он содержал 2,3 миллиона транзисторов. Лицензирование R4400 осуществляли компании Integrated Device Technology (IDT), LSI Logic, NEC, Performance Semiconductor, Siemens AG и Toshiba. Компании IDT, NEC, Siemens и Toshiba производили и продавали микропроцессор. LSI Logic использовала R4400 в специализированных продуктах. Компания Performance Semiconductor продала свое логическое подразделение компании Cypress Semiconductor, где производство микропроцессоров MIPS было прекращено. NEC продавала свою версию под названием VR4400. Первая версия с частотой 150 МГц была анонсирована в ноябре 1992 года. Ранние версии производились по технологии 0,6 мкм. В середине 1995 года начались поставки образцов версии с частотой 250 МГц. Она была изготовлена по четырехслойной металлической технологии 0,35 мкм. NEC также выпустила MR4401 – керамический многочиповой модуль (MCM), содержащий VR4400SC и десять микросхем SRAM объемом 1 Мбит, реализующих вторичную кэш-память объемом 1 МБ. MCM был совместим по выводам с R4x00PC. Первая версия с частотой 150 МГц была анонсирована в 1994 году. В 1995 году была анонсирована версия с частотой 200 МГц. Toshiba продавала свою версию под названием TC86R4400. В середине 1994 года была представлена версия с частотой 200 МГц, содержащая 2,3 миллиона транзисторов и имеющая площадь 134 мм², изготовленная по технологии 0,3 мкм. Цена на R4400PC составляла , на R4400SC – , а на R4400MC – при заказе партии в 10 000 штук.

Чипсеты

Микропроцессоры R4000 и R4400 подключались к системе с помощью специализированных ASIC или коммерчески доступных чипсетов. Системные поставщики, такие как SGI, разрабатывали собственные ASIC для своих систем. Коммерческие чипсеты, такие как Tiger Shark от Toshiba, обеспечивавшие шину, совместимую с i486, разрабатывались, производились и продавались такими компаниями, как Toshiba.