Учебный курс Архитектура ЭВМ и язык ассемблера Лекция 8 заместитель министра связи и массовых коммуникаций РФ, старший преподаватель Северов Дмитрий Станиславович Микроархитектура 2 Управление микрокомандами • Микропрограммная память – – – – – (9) Псевдорегистр «микропрограммный счётчик» (MPC) (512x36) Управляющая память (36) Регистр микрокоманд (MIR) Триггеры признаков (N),(Z) Схемы управления выбором следующего микроадреса • Уточнённый цикл микрокоманды – – – – – Спадом такта микрокоманда фиксируется в MIR Выдача из регистра на входную шину Срабатывание АЛУ и сдвигателя Стабилизация выходной шины, шин памяти, АЛУ Защёлкивание (ростом такта) • в триггеры признаков (N), (Z) • в регистры с выходной шины и/или из памяти – Формирование MPC к началу след. цикла (спаду такта ) 3 Некоторые задачи реализации АСК • Определить модель памяти – – – – Набор констант Фрейм локальных переменных Стек операндов Область процедур • Определить набор команд • Определить поведение памяти при… – передаче параметров и управления между процедурами – cоздании локальных переменных – вычислении выражений • Определить состав микрокоманд • Реализовать АСК в виде микропрограммы 4 Модель памяти SP Текущий стек операндов 3 Текущий фрейм локальных переменных 3 Фрейм локальных переменных 2 Набор констант СРР Фрейм локальных переменных 1 LV Область процедур PC 5 Набор команд IJVM Число Мнемоника 0x10 BIPUSH byte 0x59 DUP 0xA7 GOTO offset 0x60 IADD 0x7E IAND 0x99 0x9B 0x9F 0x84 Примечание Помещает байт в стек Копирует верхнее слова стека и помещает его в стек Безусловный переход Выталкивает два слова из стека; помещает в стек их сумму Выталкивает два слова из стека; помещает в стек результат логического умножения IFEQ offset Выталкивает слово из стека и совершает переход, если оно равно нулю IFLT offset Выталкивает слово из стека и совершает переход, если оно меньше нуля IF_ICMPEQ Выталкивает два слова из стека; совершает переход, если offset они равны IINC varnum Прибавляет константу к локальной переменной const 6 Набор команд IJVM (продолжение) 0x15 ILOAD Помещает локальную переменную в стек varnum 0xB6 INVOKEVIRT Вызывает процедуру UAL disp 0x80 IOR Выталкивает два слова из стека; помещает в стек результат логического сложения 0xAC IRETURN Выдает результат выполнения процедуры (целое число) 0x36 ISTORE Выталкивает слово из стека и запоминает его во фрейме vamum локальных переменных 0x64 ISUB Выталкивает два слова из стека; помещает в стек их разность 0x13 LDC_W index Берет константу из набора констант и помещает ее в стек 0x00 NOP Не производит никаких действий 0x57 POP Удаляет верхнее слово стека Ox5F SWAP Переставляет два верхних слова стека OxC4 WIDE Префиксная команда; следующая команда содержит16битный индекс Память при вызове и возврате 8 Микрооперации Таблица 4.3. Все допустимые операции. Любую из перечисленных операций можно расширить, добавив «<<8», что означает сдвиг результата влево на 1 байт. Например, часто используется операция H=MBR<<8 DEST=H DEST=SOURCE DEST=H DEST=SOURCE DEST=H+SOURCE DEST=H+S0URCE+1 DEST=H+1 DEST=S0URCE+1 DEST=SOURCE-H DEST=S0URCE-1 DEST= -H DEST=H И SOURCE DEST=H ИЛИ SOURCE DEST=0 DEST=1 DEST= -1 SOURCE - MDR - PC - MBR - MBRU - SP - LV - CPP - TOS - OPC DEST - MAR - MDR - PC - SP - LV - CPP - TOS - OPC - H 9 Микропрограмма для Mic-1 Микрокоманда Main1 nop1 iadd1 iadd2 iadd3 lload1 iload2 iload3 iload4 Операция РС=РС+1; fetch; goto(MBR) goto Main 1 Комментарий MBR содержит код операции; получение следующего байта; отсылка Ничего не происходит Чтение слова, идущего после верхнего слова MAR=SP=SP-1;rd стека H=TOS Н = вершина стека MDR=TOS=MDR+ Суммирование двух верхних слов; запись H;wr; goto Main 1 суммы в верхнюю позицию стека MBR содержит индекс; копирование значения H-LV LVBH MAR = адрес локальной переменной, которую MAR=MBRU+H; rd нужно поместить в стек Регистр SP указывает на новую вершину MAR=SP=SP+1 стека; подготовка к записи Увеличение значения PC на 1; вызов кода PC=PC+1; fetch; wr следующей операции; запись вершины стека 10 Микропрограмма для Mic-1 (продолжение) iload5 goto1 goto2 goto3 goto4 goto5 goto6 TOS=MDR; goto Malnl OPC=PC-1 Обновление TOS Сохранение адреса кода операции MBR ■ первый байт смещения; вызов второго PC=PC+1; fetch байта Сдвиг первого байта влево на 8 битов и H=MBR<<8 сохранение его в регистре Н H=MBRU ИЛИ Н Н =16-битное смещение перехода PC=OPC+H; fetch Суммирование смещения и ОРС goto Maln1 Ожидание вызова следующего кода операции А дальше? • Учебные модели – Google: VS-CPU Carpinelli – Google: RS-CPU Carpinelli – Жмакин А.П. Архитектура ЭВМ. (с диском) • ISBN 5-94157-719-2 • Простейший процессор – 8 бит – 4-ре команды – www.csie.ntu.edu.tw/~b92029/data/EXP 12 Ускорение микроархитектуры • Меньше микроопераций в операции – упрятать выборку команды – три шины • Короче цикл – меньше последовательных действий – короче отдельные действия • сложнее сумматор (АЛУ) • убрать декодер 4в16 • Несколько действий одновременно – Отдельный блок выборки команд 13 Mic-2 LDC-W SWAP 9 8 3 6 ILOAD 6 3 IADD 4 3 LDC-W 9 3 14 Mic-3 • Такт короче • Всё доступно Mic-2 Mic-3 Mic-2 Mic-3 15 Конвейер 16 Mic-4 • Микрооперации • Специализация – – – – – Начало в ПЗУ Выборка заранее Очередь исполнения MIR на стадию Микропереходы отдельно 17 Кэш (cache) • Отображение, «попадание», «промах» • Блоки, строки, теги • Основные характеристики – – – – – – Емкость (1КB-10МБ) Размер строки Алгоритм отображения Алгоритм замещения Алгоритм согласования Число уровней 18