Введение

Чипсет микропроцессора R8000 — это чипсет микропроцессора, разработанный компаниями MIPS Technologies, Inc. (MTI), Toshiba и Weitek. Он стал первой реализацией архитектуры набора команд MIPS IV. R8000 также известен как TFP (Tremendous Floating Point) – название, использовавшееся в период разработки.

История

Разработка R8000 началась в начале 1990-х годов в компании Silicon Graphics, Inc. (SGI). R8000 был специально разработан для обеспечения производительности суперкомпьютеров начала 1990-х годов, используя микропроцессор вместо центрального процессора (CPU), построенного из множества дискретных компонентов, таких как вентильные матрицы. В то время производительность традиционных суперкомпьютеров росла не так быстро, как у микропроцессоров с упрощенным набором команд (RISC). Предполагалось, что микропроцессоры RISC в конечном итоге достигнут производительности более дорогих и крупных суперкомпьютеров, при этом стоимость и размеры будут значительно меньше, что сделает компьютеры с таким уровнем производительности более доступными и позволит рабочим станциям и серверам заменить суперкомпьютеры во многих областях. Первые сведения о R8000 появились в апреле 1992 года в объявлении MIPS Computer Systems о будущих микропроцессорах MIPS. В марте 1992 года SGI объявила о приобретении MIPS Computer Systems, которая стала дочерней компанией SGI под названием MIPS Technologies, Inc. (MTI) в середине 1992 года. Разработка R8000 была передана в MTI, где она продолжилась. Ожидалось, что R8000 будет представлен в 1993 году, но его выпуск был отложен до середины 1994 года. Первый R8000 с частотой 75 МГц был представлен 7 июня 1994 года и стоил 2500 долларов США. В середине 1995 года версия с частотой 90 МГц появилась в системах SGI. Высокая стоимость R8000 и узкая специализация (технические и научные вычисления) ограничили его долю на рынке, и хотя он был популярен в своей нише, его в значительной степени заменил более дешевый и, как правило, более производительный R10000, представленный в январе 1996 года. Пользователями R8000 была компания SGI, которая использовала его в рабочих станциях Power Indigo2, серверах Power Challenge, кластере Power ChallengeArray и системе визуализации Power Onyx. В списке TOP500 за ноябрь 1994 года 50 из 500 систем использовали R8000. Наивысший рейтинг среди систем на базе R8000 имели четыре сервера Power Challenge, занявшие позиции с 154 по 157, каждый из которых был оснащен 18 процессорами R8000. SGI заявляла о пропускной способности операций с плавающей запятой в 300 миллионов инструкций в секунду, рейтинге SPECfp92 равном 310 и более скромном рейтинге SPECint92 равном 108.

Описание

Чипсет состоял из микропроцессора R8000, сопроцессора для работы с плавающей точкой R8010, двух Tag RAM и потокового кэша. R8000 является суперскалярным, способен выполнять до четырех инструкций за такт и выполняет инструкции в порядке их следования в программе. Он имеет пятиступенчатый целочисленный конвейер.

R8000

R8000 управлял набором микросхем и выполнял целочисленные инструкции. Он содержал целочисленные исполнительные устройства, регистровый файл целых чисел, первичные кэши и аппаратное обеспечение для выборки инструкций, предсказания переходов и буферы трансляции адресов (TLB). На первом этапе из кэша инструкций извлекаются четыре инструкции. Кэш инструкций имеет размер 16 кБ, использует прямое отображение, виртуальное тегирование и виртуальную индексацию, а также размер блока 32 байта. Декодирование инструкций и чтение из регистров происходят на втором этапе, а также разрешаются инструкции перехода, что приводит к штрафу в один цикл за неправильное предсказание перехода. Инструкции загрузки и сохранения начинают выполняться на третьем этапе, а целочисленные инструкции – на четвертом. Выполнение целочисленных инструкций было отложено до четвертого этапа, чтобы целочисленные инструкции, использующие результат загрузки в качестве операнда, могли быть выданы на цикл после завершения загрузки. Результаты записываются в регистровый файл целых чисел на пятом этапе. Регистровый файл целых чисел имеет девять портов чтения и четыре порта записи. Четыре порта чтения обеспечивают операнды для двух целочисленных исполнительных устройств (блок предсказания переходов рассматривался как часть целочисленного устройства). Еще четыре порта чтения обеспечивают операнды для двух генераторов адресов. Требуется четыре порта, а не два, из-за стиля адресации "база (регистр) + индекс (регистр)", добавленного в ISA MIPS IV. R8000 выдает не более одной целочисленной операции сохранения за цикл, и один конечный порт чтения предоставляет данные для сохранения целых чисел. Два порта записи в регистровый файл используются для записи результатов от двух целочисленных функциональных блоков. R8000 выдает две целочисленные операции загрузки за цикл, а два других порта записи используются для записи результатов целочисленных загрузок в регистровый файл. Кэш данных первого уровня был организован как два избыточных массива, каждый из которых имел один порт чтения и один порт записи. Целочисленные сохранения записывались в оба массива. Две загрузки могли обрабатываться параллельно, по одной на каждом массиве. Целочисленные функциональные блоки состояли из двух целочисленных устройств, устройства сдвига, устройства умножения-деления и двух устройств генерации адресов. Инструкции умножения и деления выполняются в устройстве умножения-деления, которое не является конвейерным. В результате задержка для инструкции умножения составляет четыре цикла для 32-битных операндов и шесть циклов для 64-битных. Задержка для инструкции деления зависит от количества значащих цифр в результате и, следовательно, варьируется от 21 до 73 циклов.

Грузы и запасы

На третьей стадии начинаются операции загрузки и сохранения. R8000 имеет два устройства генерации адресов (AGU), которые вычисляют виртуальные адреса для загрузок и сохранений. На четвертом этапе виртуальные адреса преобразуются в физические адреса с помощью двухпортового TLB, содержащего 384 записи и организованного по принципу трехсторонней ассоциативности. К кэшу данных объемом 16 кБ осуществляется доступ в том же цикле. Он двухпортовый и доступ к нему осуществляется через две 64-битные шины. Он может обслуживать две загрузки или одну загрузку и одно сохранение за цикл. Кэш не защищен контролем четности или кодом коррекции ошибок (ECC). В случае промаха кэша данные должны быть загружены из потокового кэша с задержкой в восемь циклов. Кэш имеет виртуальное индексирование, физическое тегирование, прямое отображение, размер блока 32 байта и использует протокол сквозной записи с выделением блока. Если загрузка попадает в кэш данных, результат записывается в регистровую память целых чисел на пятом этапе.

R8010

R8010 выполнял инструкции с плавающей точкой, предоставляемые очередью инструкций на R8000. Эта очередь отделила конвейер операций с плавающей точкой от целочисленного конвейера, реализуя ограниченную форму внеочередного выполнения, позволяя инструкциям с плавающей точкой выполняться, когда это возможно, до или после выдачи целочисленных инструкций из той же группы. Конвейеры были разделены для смягчения части задержки потокового кэша. Он содержал файл регистров с плавающей точкой, очередь загрузки, очередь сохранения и два идентичных устройства для операций с плавающей точкой. Все инструкции, кроме деления и извлечения квадратного корня, выполняются конвейерно. R8010 реализует итеративный алгоритм деления и извлечения квадратного корня, использующий умножитель для ключевой части, что требует остановки конвейера на время выполнения операции. Арифметические инструкции, за исключением сравнений, имеют задержку в четыре такта. Деление одинарной и двойной точности имеет задержку в 14 и 20 тактов соответственно.

Стрейм-кеш и теги RAM

Стриминговый кэш – это внешний кэш объемом от 1 до 16 МБ, который выполняет роль объединенного кэша L2 для R8000 и кэша данных L1 для R8010. Он работает на той же тактовой частоте, что и R8000, и построен на основе стандартных синхронных статических оперативных запоминающих устройств (SSRAM). Доступ к каждому банку осуществляется через две 64-битные однонаправленные шины: одну для чтения и другую для записи. Такая схема была применена для избежания разворота шины, который необходим при использовании двунаправленных шин. Исключая разворот шины, кэш может быть прочитан за один цикл, а затем записан в следующем цикле без промежуточного цикла для разворота, что повышает производительность. Помимо хранения тегов кэша, Tag RAM отвечает за то, что стриминговый кэш является четырехканальным ассоциативным. Чтобы уменьшить количество выводов, теги кэша организованы как четырехканальные ассоциативные, а логика выбирает, к какому каналу обращаться после поиска, вместо традиционного способа реализации ассоциативных кэшей. Доступ к стриминговому кэшу конвейеризован для снижения задержки. Конвейер состоит из пяти этапов: на первом этапе адреса отправляются в Tag RAM, к которым осуществляется доступ на втором этапе. Третий этап предназначен для распространения сигналов от Tag RAM к SSRAM. На четвертом этапе осуществляется доступ к SSRAM, а на пятом этапе данные возвращаются в R8000 или R8010.

Физическое

R8000 содержал 2,6 миллиона транзисторов и имел размеры 17,34 мм x 17,30 мм (299,98 мм²). R8010 содержал 830 000 транзисторов. В сумме, два чипа содержали 3,43 миллиона транзисторов. Оба были изготовлены компанией Toshiba с использованием процесса VHMOSIII – 0,7 мкм, трехслойного металлического комплементарного металл-оксид-полупроводникового (CMOS) процесса. Оба чипа поставлялись в 591-выводных керамических корпусах с контактной решеткой (CPGA). Оба чипа работали от источника питания 3,3 В, при этом R8000 рассеивал 13 Вт при частоте 75 МГц.