Реклама:

Серия процессоров UltraSPARC, произведенная компанией Sun, - это реализация версии 9 архитектуры SPARC. На первый взгляд все модели очень похожи и различаются главным образом по производительности и цене. В то же время, на уровне микроархитектуры они существенно различаются. В этом разделе мы обсудим процессор UltraSPARC III Си. Аббревиатура "Си" в названии модели говорит о том, что проводники микросхемы сделаны из меди - в отличие от алюминиевых проводников, применявшихся в предыдущих моделях. Сопротивление меди ниже сопротивления алюминия, за счет этого провода становятся тоньше, а быстродействие - выше.

UltraSPARC III Си - это 64-разрядная машина с 64-разрядными регистрами и 64-разрядным трактом данных, но в целях совместимости с машинами версии 8 (которые являются 32-разрядными) она может работать с 32-разрядными операндами, а программное обеспечение, написанное для 32-разрядных версий SPARC, изменять не нужно. Хотя во внутренней архитектуре машины используются 64 разряда, ширина шины памяти составляет 128 бит, аналогично процессору Pentium II с 32-разрядной архитектурой и 64-разрядной шиной памяти. В обоих случаях в одну систему устанавливаются шина и процессор разных поколений.

В отличие от Pentium 4, процессор UltraSPARC изначально проектировался как полноценная RISC-система. Следовательно, необходимости в сложном механизме преобразования старых CISC-команд в микрооперации в данном случае не было. Команды ядра представляют собой готовые микрооперации. Ситуация несколько осложняется появлением в последние годы новых команд обработки графических и мультимедийных данных, для выполнения которых требуются специальные устройства.

Общий обзор системы UltraSPARC III Си

Структурная схема UltraSPARC III Си представлена на рис. 4.33. В целом, она значительно проще микроархитектуры NetBurst, применяемой в системах Pentium 4, что объясняется менее изощренной архитектурой системы команд UltraSPARC. Тем не менее по некоторым базовым компонентам сходство с Pentium 4 прослеживается. В первую очередь, это обусловлено технологическими и экономическими факторами. К примеру, в период проектирования этих микросхем объем кэшей данных первого составлял от 8 до 16 Кбайт. Этому стандарту соответствовали обе рассматриваемые микросхемы. Когда производство кэш-памяти первого уровня емкостью 64 Мбайт станет обоснованным с технологической и экономической точек зрения, все процессоры будут оснащаться уже новыми кэшами. Различия между Pentium 4 и UltraSPARC III Си связаны по большей части с тем, что в первом случае разработчикам пришлось обеспечить поддержку унаследованного набора CISC-команд, а во втором такой задачи не ставилось.

В левой верхней части рис. 4.33 изображен 4-входовый ассоциативный кэш команд емкостью 32 Кбайт с 32-байтными строками. Поскольку большинство команд UltraSPARC занимают 4 байта, в этом кэше можно одновременно разместить около 8000 команд. По этому признаку UltraSPARC III Си несколько уступает кэшу трасс NetBurst.

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

Микроархитектура процессора UltraSPARC III Си

Рис. 4.33. Структурная схема процессора UltraSPARC III Си

Как показано на рис. 4.33, из буфера команд команды попадают в блок исполнения целочисленных операций, блок исполнения операций с плавающей точкой и блок загрузки/сохранения. Блок исполнения целочисленных операций состоит из двух АЛУ и короткого конвейера для обработки команд перехода. Кроме того, здесь есть регистры ISA и временные регистры.

Блок исполнения операций с плавающей точкой состоит из 32 регистров и трех независимых АЛУ, предназначенных для выполнения операций сложения/вычитания, умножения и деления, соответственно. Этот же блок выполняет графические операции.

Блок загрузки/сохранения, как явствует из его названия, ответственен за обработку разнообразных команд загрузки и сохранения. Содержащиеся в нем тракты данных обеспечивают соединение с тремя кэшами. Кэш данных представляет собой традиционную предназначенную для обработки данных 4-входовую ассоциативную кэш-память первого уровня емкостью 64 Кбайт с длиной строки 32 байт. Кэш предвыборки емкостью 2 Кбайт нужен по той причине, что на уровне архитектуры команд UltraSPARC предусмотрены команды упреждающей выборки, которые позволяют компилятору вызывать слова еще до того, как в них возникнет необходимость. Если компилятор полагает, что через некоторое время ему потребуется то или иное слово, он запускает команду предвыборки. В результате соответствующая строка с упреждением загружается в кэш предвыборки, и через несколько команд обращение к этой строке происходит существенно быстрее, чем если бы она не была загружена. В некоторых ситуациях проводится и аппаратная предвыборка, позволяющая повысить скорость работы устаревших программ, не поддерживающих программную предвыборку. Кэш записи представляет собой небольшой по объему (2 Кбайт) блок кэш-памяти, предназначенный для объединения результатов записи, а следовательно, оптимизации потребления ресурсов широкой (256-разрядной) шины, ведущей к кэшу второго уровня. Единственное назначение кэша записи состоит в повышении производительности.

В микросхеме UltraSPARC III Си также предусмотрена логика управления доступом к памяти. Она состоит из трех компонентов: системного интерфейса, контроллера кэша второго уровня и контроллера памяти. Системный интерфейс обеспечивает взаимодействие с памятью по 128-разрядной шине. Через этот интерфейс проходят все запросы вовне, за исключением запросов к кэшу второго уровня. Теоретически при использовании 43-разрядных адресов физической памяти объем основной памяти может доходить до 8 Тбайт, однако размер печатной платы, на которой устанавливается процессор, ограничивает этот показатель значением 16 Гбайт. Проектное решение интерфейса позволяет подключать к одному модулю памяти сразу несколько процессоров UltraSPARC, за счет чего формируется мультипроцессор. О мультипроцессорах речь пойдет в главе 8.

Контроллер кэша второго уровня сопряжен с объединенным кэшем второго уровня, который расположен вне микросхемы процессора. При внешнем размещении кэша второго уровня его объем может составлять 1, 4 или даже 8 Мбайт. Длина строки зависит от объема кэша (от 64 байт в кэше объемом 1 Мбайт до 512 байт в кэше объемом 8 Мбайт). Напомним, что кэш второго уровня Pentium 4 расположен на микросхеме, и из-за нехватки на ней свободного места его объем ограничен значением 1 Мбайт. Таким образом, в UltraSPARC обеспечивается значительно более высокий коэффициент кэш-попаданий, чем в Pentium (что объясняется большим объемом кэша), однако скорость доступа здесь ниже (потому что кэш расположен вне микросхемы).

Контроллер памяти преобразует 64-разрядные виртуальные адреса в 43-разрядные физические адреса. UltraSPARC поддерживает виртуальную память (см. главу 6) с размерами страницы 8, 64 и 512 Кбайт, а также 4 Мбайт. Для ускорения процесса преобразования предусмотрены специальные таблицы, называемые буферами быстрого преобразования (Translation Lookaside Buffers, TLB). Они сравнивают текущий виртуальный адрес с адресами, по которым производились обращения в недавнем прошлом. Три такие таблицы обеспечивают гибкое управление размерами страниц данных, а еще две обрабатывают команды преобразования.

Конвейер UltraSPARC III Си

Конвейер UltraSPARC III Си из 14 ступеней в упрощенной форме изображен на рис. 4.34. В левой части рисунка ступени обозначены буквами от А до D. Рассмотрим каждую из них в отдельности. Открывает конвейер ступень A (Address generation - формирование адреса). Здесь определяется адрес каждой последующей команды, которую предполагается выбрать. Как правило, он совпадает с адресом следующей команды, однако в некоторых случаях последовательная организация нарушается, например, если предыдущая команда является командой спрогнозированного перехода, перехвата исключения или прерывания, которое необходимо обработать. Так как прогнозирование ветвления за один цикл невозможно, команда, непосредственно следующая за условным переходом, выполняется в любом случае, вне зависимости от целевого объекта перехода.

Микроархитектура процессора UltraSPARC III Си

Рис. 4.34. Упрощенная схема конвейера UltraSPARC Hi Си

Исходя из определенного ранее адреса на ступени Р (Preliminary fetch - предварительная выборка) вызываются команды из кэша команд первого уровня (до четырех за цикл). Для выявления условных переходов и проверки правильности прогноза производятся обращения к таблице переходов. На ступени i7 (Fetch - выборка) завершается выборка команд и их передача в кэш команд.

На ступени В (Branch target - обнаружение объекта перехода) происходит декодирование выбранных команд. Если среди них обнаруживаются спрогнозированные переходы, они передаются обратно на ступень А для непосредственной выборки соответствующих команд.

На ступени / (Instruction group formation - группировка команд) входящие команды сортируются по группам, в зависимости от того, к каким из шести функциональных блоков они обращаются:

1. АЛ У 1 для выполнения целочисленных операций.

2. АЛУ 2 для выполнения целочисленных операций.

3. АЛУ 1 для выполнения операций с плавающей точкой и графических операций.

4. АЛУ 2 для выполнения операций с плавающей точкой и графических операций.

5. Конвейер переходов (на рис. 4.34 не представлен).

6. Операции загрузки и хранения, а также специальные операции.

Ощутимые различия есть как между АЛУ для выполнения целочисленных операций, так и между АЛУ для выполнения операций с плавающей точкой и графических операций. В обоих случаях различаются наборы команд, которые способны выполнять те или иные АЛУ. Сортировка команд по блокам проводится на ступени /.

На ступени J (Instruction stage grouping - извлечение команды из очереди) команды подготавливаются к отправке в блок выполнения во время следующего цикла. В течение одного цикла на ступень R можно передать до четырех команд. Выбор команд ограничен доступностью функциональных блоков. К примеру, единовременно можно вызвать две команды выполнения целочисленной операции, одну команду выполнения операции с плавающей точкой и одну команду загрузки или сохранения. Однако запустить за один цикл три команды выполнения целочисленных операций невозможно.

На ступени R (Register - регистр) производится поиск регистров, необходимых для обработки команд выполнения целочисленных операций. Запросы на предоставление регистров с плавающей точкой перенаправляются в соответствующий регистровый файл. Здесь же проводятся проверки на предмет взаимозависимостей. Если необходимый регистр оказывается недоступным по причине его занятости предыдущей командой, текущая команда приостанавливается, а все последующие команды - блокируются. В отличие от Pentium 4, в UltraSPARC III Си команды вне исходной последовательности не выполняются.

Ступень Е (Execution - выполнение) предназначена для непосредственного выполнения целочисленных команд. Для выполнения большинства арифметических и булевых операций, а также операций сдвига, обработкой которых занимаются целочисленные АЛУ, достаточно одного цикла. Сразу по завершении выполнения команды соответствующим образом обновляется регистровый файл рабочего регистра. Некоторые сложные целочисленные команды передаются в специальный блок. Что касается команд загрузки и сохранения, то на данной ступени их выполнение только начинается, но не заканчивается. Операнды для выполнения команды с плавающей точкой извлекаются из соответствующего регистрового файла. На ступени Е, помимо обработки команд условного перехода, определяется их направление (переход/без перехода). В случае неверного прогноза сигнал отправляется обратно на ступень А, и конвейер освобождается.

На ступени С (Cache - кэш) завершается доступ к кэш-памяти первого уровня. Здесь же определяются результаты команд, предусматривающих чтение данных из памяти (например, команд загрузки).

На ступени М (Miss - промах) производится обработка слов, запрошенных, но не найденных в кэш-памяти первого уровня. Сначала выполняется поиск в кэше второго уровня, а в случае кэш-промаха осуществляется обращение к памяти, занимающее несколько циклов. Здесь же выполняются операции знакового расширения и выравнивания для байтов, четвертинок слов и половинок слов, найденных в кэше первого уровня. Для операций загрузки с плавающей точкой, у которых в кэше предвыборки имеет место кэш-попадание, на этом этапе удается получить результаты. По соображениям синхронизации кэш предвыборки при обработке целочисленных данных не задействуется.

На ступени W (Write - запись) результаты извлекаются из специального блока и записываются в регистровый файл рабочего регистра.

На ступени X (eXtend - продленное выполнение) завершается большинство графических команд и команд с плавающей точкой. Перед формальной пересортировкой результатов, происходящей на ступени Д результаты этих команд предоставляются последующим командам путем перенаправления для загрузки.

На ступени Т (Trap - перехват) перехватываются исключения, связанные с целочисленными командами и командами с плавающей точкой. Именно эта ступень отвечает за перехват исключений и обработку прерываний. Иными словами, после возникновения исключения или прерывания состояние машины должно отвечать определенным требованиям; в частности, все ранее запущенные команды должны быть завершены, а запуск последующих отменен.

На ступени D состояние целочисленных регистров и регистров с плавающей точкой фиксируется в соответствующих архитектурных регистровых файлах. При возникновении исключения или прерывания видимыми становятся именно эти значения, а не содержимое рабочих регистров. Операция записи регистра в архитектурный файл соответствует операции пересортировки результатов в процессорах Pentium. Кроме того, на ступени D результаты всех завершенных команд сохранения записываются в кэш записи (вместо кэша данных первого уровня). В конечном итоге строки этого кэша переписываются в кэш второго уровня, минуя кэш первого уровня (его содержимое не пересекается с содержимым кэша второго уровня). Эта схема упрощает задачу сборки мультипроцессоров UltraSPARC.

Наше описание микросхемы UltraSPARC III не отличается полнотой, но его вполне достаточно, чтобы вы получили некоторое представление о принципах ее работы и отличиях от архитектуры Pentium 4.

Микроархитектура процессора Pentium 4 || Оглавление || Микроархитектура процессора 8051