SPARC (Scalable Processor ARChitecture)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:39, 6 апреля 2016.
SPARC
Sparc-logo.svg
Дизайнер Sun Microsystems (acquired by Oracle Corporation)
Биты 64-bit (32 → 64)
Представлен 1987 (shipments)
Версия V9 (1993) / OSA2015
Дизайн RISC
Тип Register-Register
Кодирование Fixed
Разветвление Condition code
Порядок байтов Bi (Big → Bi)
Размер страницы 8 KiB (4 KiB → 8 KiB)
Расширения VIS 1.0, 2.0, 3.0 4.0
Открыто Yes, and royalty free.
Регистры
Общее назначение 31 (G0 = 0; non-global registers use register windows)
FPU (Floating Point Unit) 32 (usable as 32 single-precision, 32 double-precision, or 16 quad-precision)

SPARC (Scalable Processor ARChitecture - масштабируемая процессорная архитектура) - это 32- и 64-битная микропроцессорная архитектура от компании Sun Microsystems, которая основана на сокращенном наборе команд (RISC). Стандарт SPARC зарегистрирован в IEEE под номером 1754—1994.

История

Первоначально архитектура SPARC была разработана с целью упрощения реализации 32-битового процессора и получила название SPARC V7. Она обладала всеми чертами классических RISC процессоров, сочетая простоту набора команд и высокую скорость исполнения кода. Впоследствии, по мере улучшения технологии изготовления интегральных схем, она постепенно развивалась и в 1990 году опубликована спецификация SPARC V8, а затем, в 1993 году – 64-битовая версия архитектуры (SPARC V9), положенная в основу новых микропроцессоров, получивших название UltraSPARC.

Рис. 1. Зелёным обозначены процессоры, соответствующие седьмой версии спецификации (SPARC V7), оранжевым — SPARC V8, красным — SPARC V9. Жёлтая заливка означает многоядерный чип

Основные свойства архитектуры SPARC

Основные свойства архитектуры SPARC рассмотрим на примере микропроцессора МЦСТ R500:

  • линейное 32-разрядное адресное пространство, т.е. пронумерованная последовательность ячеек памяти от минимального номера до максимального (0х00000000…0хFFFFFFFF – адресация до 4 Гбайт оперативной памяти);
  • небольшое количество простых форматов 32-разрядных команд. Все команды в памяти выровнены по границе 32-разрядных слов. Имеется всего три базовых формата команд, в которых поля кода операции и регистровых операндов всегда находятся в одних и тех же разрядах. Доступ к памяти и ввод/вывод могут осуществляться только командами чтения/записи;
  • небольшое количество способов адресации. Адрес по памяти вычисляется либо как «регистр + регистр», либо как «регистр + непосредственное значение, литерал»;
  • трёхадресная регистровая команда – команды большей частью выполняют действия с двумя операндами (двумя регистрами или одним регистром и константой), помещая результат в третий регистр;
    Рис. 2. Микропроцессор UltraSPARC II компании Sun Microsystems
  • 136-регистровый файл с 8 окнами по 16 регистров и окном из 8 глобальных регистров. В каждый отдельный момент времени программа «видит» 8 глобальных целочисленных регистров, 16-регистровое текущее окно и 8 регистров из окна предыдущей процедуры. Регистровое окно может трактоваться как способ ускоренного доступа к параметрам процедуры, локальным значениям и адресам возврата;
  • отдельный регистровый файл вещественных регистров. В программах файл может трактоваться как набор из 32 регистров обычной точности (32-разрядных), или 16 регистров двойной точности (64-разрядных), или 8 регистров учетверённой точности (128-разрядных), или как смесь тех или иных;
  • отложенная передача управления – процессор всегда выбирает команду, следующую за командой отложенной передачи управления. Эта команда может быть выполнена или не выполнена в зависимости от состояния «аннулирующего» разряда в команде передачи управления;
  • быстрые обработчики прерываний – прерывания собраны в линейную таблицу, их генерация приводит к созданию в регистровом файле нового регистрового окна.

тегированные команды – команды тегированного сложения / вычитания рассматривают два младших разряда своих операндов в качестве тегов;

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

Структура

Рассмотрим структуру ядра микропроцессора МЦСТ R500.

Буфер команд (IB). Данный модуль предназначен для выдачи запросов на получение команд в устройство управления памятью, приёма, промежуточного хранения и выдачи команд в устройство управления. Одним из основных компонентов буфера команд является кэш-память команд первого уровня.

Кэш команд первого уровня (I$). Кэш-память – высокоскоростная память небольшого объёма с низкой задержкой доступа, предназначенная для ускорения обращения к часто используемым блокам основной оперативной памяти. Ёмкость кэша I$ составляет 16 Кбайт. В кэш команд входит три блока памяти: память данных, память тегов и память механизма старения. Механизм старения определяет, какие блоки в памяти данных могут быть замещены. Кэш I$ встроен в ядро и находится на том же кристалле.

Снимок.PNG

Устройство управления (CU) предназначено для решения следующих задач:

  1. дешифрирование поступающих из кэша команд I$ инструкций;
  2. формирование пусков и блокировки устройств;
  3. организация чтения операндов из целочисленного IRF и вещественного FRF регистровых файлов для соответствующих арифметико-логических устройств (АЛУ) и записи результатов в соответствующие регистровые файлы;
  4. управление байпасами[1] устройства целочисленных команд.

Регистровый файл – модуль микропроцессора, реализующий его регистры в виде массива запоминающих ячеек. В ядре процессора R500 находятся 2 регистровых файла: для целочисленных данных и для вещественных данных.

Регистровый файл целочисленных данных (IRF). В IRF хранятся данные целочисленного типа для проведения с ними операций. Регистровый файл содержит 136 регистров по 32 бита (8 окон по 16 регистров и 1 окно из 8 глобальных регистров).

Регистровый файл вещественных данных (FRF). В этом модуле хранятся данные вещественного типа. Регистровый файл FRF содержит 32 регистра 32-разрядных данных. При этом модуль может трактоваться в программах как набор из 32 регистров одинарного формата (разрядность 32 бита), либо как 16 регистров двойного формата (разрядность 64 бита), либо как смешанный набор регистров первого и второго вида.

Арифметико-логическое устройство целочисленных команд (IU) предназначено для выполнения команд целочисленного сложения/вычитания, логических команд, команд сдвига, а также вычисления адреса в командах обращения к памяти и передачи управления.

Арифметико-логическое устройство вещественных команд (FPU) предназначено для выполнения команд с операциями над вещественными числами, а также команд умножения и деления целых чисел.

Устройство управления памятью (MMU) выполняет следующие функции:

  1. Определяет множество адресных контекстов, которые соответствуют программным процессам. Адресный контекст процесса включает в себя содержимое выделенного процессу адресного пространства задачи, а также содержимое относящихся к процессу аппаратных регистров и структур данных ядра. Адреса в адресных контекстах уникальны.
  2. Преобразует 32-разрядные виртуальные адреса активных процессов в 36-разрядные физические адреса оперативной памяти. Соответствие виртуальной памяти физической обеспечивается для страниц размером 4 Кбайт, сегментов размером 256 Кбайт, областей размером 16 Мбайт и контекстов размером 4 Гбайт.
  3. Задаёт совместное использование памяти. Области адресных пространств для пар контекстов могут быть установлены разделяемыми с точностью до страницы.
  4. Организует защиту памяти. Доступ к адресуемой памяти назначается с установкой ограничений. Каждому контексту можно индивидуально разрешить доступ к страницам по чтению, записи или выполнению.
  5. Обеспечивает (при программной поддержке со стороны операционной системы) механизм подкачки отсутствующих в основной памяти страниц из внешней памяти.
  6. Обеспечивает поддержку обращений операционной системы к другим контекстам в специальных режимах и режимах защиты.

Операционные системы, работающие на SPARC

Рис. 3. Микропроцессор МЦСТ-R500

Источники

Ссылки

Примечания

  1. Байпас (англ. bypass – обход) – функция в электронном устройстве, позволяющая выполнить коммутацию входного сигнала непосредственно на выход, минуя все функциональные блоки. При проектировании суперскалярных процессоров байпасы применяют для сокращения количества блокировок вычислительного конвейера (см. ниже), обходя избыточные элементы на пути доставки данных. Если выход одной из стадий конвейера требуется на вход другой стадии, данные передаются через байпас-шину. Без байпасов данные пришлось бы записывать и считывать из регистрового файла. Это может потребовать исполнения дополнительных стадий конвейера и вызовет замедление.