В мире царит соотношение 20/80:
20% людей выпивают 80% всего пива в мире.
В типичном компьютере 20% типов инструкций выполняются в течении
80% всего времени работы.
Идея: реализовать только эти 20%, но сделать что бы они были очень
быстрыми. (Reduced Instruction Set - урезанный набор инструкций.
Архитектура системы комманд
/ \
Аккумуляторная Стековая
|
Регистровая
/ \
CISC Выделенный
Load-Store
|
RISC
|
VLIW
|
EPIC
Архитектура
/ | | \
CISC CRISC RISC MISC
сложный простой
набор набор
команд команд
< ------------------
сложность
CISC (Common Instruction Set complex)
CRISC (Complexity Reduced Instruction set complex)
RISC (Reduced instruction set complex)
MISC (Minimal instruction set complex)
VLIW (Very Large instruction word)
RISC
раньше теперь
Фиксированная длинна команды 32 32 бит
Аппаратная реализация комманд за 1 такт
Суперскалярность 2-3 3-5
Большое число регистров общего назначения 32 256
Архитектура регистр-регистр
Небольшое число режимов адрессации памяти 1-4 3-8
Небольшое число форматов комманд 1-4 4-10
Упреждающий доступ к памяти
Операции с памятью только загрузка/выгрузка
Устройство управления с жесткой логикой
Шины данных большой разрядности 64 128,256
Наличие Write-Buffers
Существенная аппаратная поддержка ЯВУ
CISC
Большое исло машинных комманд, многие из
которых аналогичны операторам ЯВУ и выполняются
за много тактов
Большое число способов адрессации
Различная разрядность операций (8,16,32 бит)
Преобладание двухоперандного формата комманд
Малое количество регистров общего назначения
Доступ к памяти не только загрузка/выгрузка
Широкое использование микропрограмм.
Современные микропроцессоры x86 - имеют частичную RISC архитектуру.
VLIW
Фиксированная длинна команды (большая)
Много регистров общего назначения
Небольшое число форматов команд
Несколько примитивных операций в одной команде
Доступ к памяти только загрузка/выгрузка
Основная проблема VLIW - усложнение регистрового файла.
(например если ширина = 3 команды, то регистр должен иметь 6 выходов
и 3 входа).
EPIC
EPIC (Explicitly Parallel Instruction Computing)
Инструкции хранятся во VLIW
Но параллелизм задается явно
Поток инструкций содержит разделители которые
определяют границы групп команд которые могут
быть выполнены паралельно.
(IA-64)
Пример bindles:
I0 I1 I2
I0 ;; I1 I2
I0 I1 ;; I2
I0 I1 I2 ;;
I0 ;; I1 ;; I2
итд.
Пример кода:
I0 I1 I2 (I0..I4 - паралельно, затем
I3 I4 ;; I5 I5..I6 - паралельно, затем
I6 ;; I7 I8 I7..I11 - паралельно)
I9 I10 I11
Поскольку паралелизм задается явно то возможен multibranch, когда в одной
команде возможен переход во много мест. Ястно что условия перехода должны быть
ортогональны, если это не так то процессор сгенерирует exception.
VISC
VISC (Variable Instruction Set Complex)
Можно менять набор команд.
Имплементации:
Микропрограммная
Аппаратная
(реконфигурация hardware как в FPGA).