ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 24.12.2021
Просмотров: 6734
Скачиваний: 8
Пример микроархитектуры
233
Данное АЛУ идентично тому, которое изображено на рис. 3.18 и 3.19. Его функ-
ционирование зависит от линий управления. На рис. 4.1 перечеркнутая стрелочка
с цифрой 6 сверху указывает на наличие шести линий управления АЛУ. Из них
F
u
и р!служат для определения операции, EN А и ENB — для разрешения входных
сигналов А и В соответственно, 1NVA — для инверсии левого входа и INC — для
прибавления единицы к результату. Однако не все 64 комбинации значений на
линиях управления могут быть полезны.
Некоторые комбинации показаны в табл. 4.1. Не все из этих функций нужны
для IJVM, но многие из них могут пригодиться для полной JVM. В большинстве
случаев существует несколько возможностей для достижения одного и того же ре-
зультата. В данной таблице знак «+» означает арифметический плюс, а знак «-» —
арифметический минус, поэтому -А означает дополнение А.
Таблица 4 . 1
. Некоторые комбинации сигналов АЛУ и соответствующие им функции
F
o
F, ENA ENB INVA INC Функция
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
1
1
0
1
1
1
1
1
0
1
0
1
1
1
0
0
0
0
1
0
1
1
1
0
1
1
1
0
1
1
0
0
0
0
0
1
0
0
0
0
0
1
1
1
0
0
0
0
1
0
0
0
0
0
1
1
1
1
0
1
0
0
0
1
0
A
в
A
в
A+B
A+B+1
A+1
B+1
B-A
B-1
-A
А И В
А ИЛИ В
0
1
-1
АЛУ, изображенное на рис. 4.1, содержит два входа для данных: левый вход (А)
и правый вход (В). С левым входом связан регистр временного хранения Н. С пра-
вым входом связана шина В, в которую могут поступать значения из одного из
девяти источников, что показано с помощью девяти серых стрелок, примыкающих
к шине. Существует и другая разработка АЛУ с двумя полноразрядными шинами,
и мы рассмотрим ее чуть позже в этой главе.
В регистр Н может поступать функция АЛУ, которая проходит через правый
вход (из шины В) к выходу АЛУ Одна из таких функций — сложение входных
сигналов АЛУ, только при этом сигнал ENA отрицается, и левый вход получает
значение 0. Если к значению шины В прибавить 0, это значение не изменится.
Затем результат проходит через схему сдвига (также без изменений) и сохраняется
в регистре Н.
2 3 4 Глава 4. Микроархитектурный уровень
Существует еще две линии управления, которые используются независимо от
остальных. Они служат для управления выходом АЛУ. Линия SLL8 (Shift Left
Logical — логический сдвиг влево) сдвигает число влево на 1 байт, заполняя 8 са-
мых младших двоичных разрядов нулями; линия SRA1 (Shift Right Arithmetic —
арифметический сдвиг вправо) число вправо на 1 бит, оставляя самый старший
двоичный разряд без изменений.
Можно считать и записать один и тот же регистр за один цикл. Для этого, на-
пример, нужно поместить значение SP на шину В, закрыть левый вход АЛУ, уста-
новить сигнал INC и сохранить полученный результат в регистре SP, увеличив
таким образом его значение на 1 (см. восьмую строку табл. 4.1). Если один и тот же
регистр может считываться и записываться за один цикл, то как при этом предот-
вратить появление ненужных данных? Дело в том, что процессы чтения и записи
проходят в разных частях цикла. Когда в качестве правого входа АЛУ выбирается
один из регистров, его значение помещается на шину В в начале цикла и хранится
там на протяжении всего цикла. Затем АЛУ выполняет свою работу и производит
результат, который через схему сдвига поступает на шину С. Незадолго до конца
цикла, когда значения выходных сигналов АЛУ и схемы сдвига стабилизирова-
лись, содержание шины С передается в один или несколько регистров. Одним из
этих регистров вполне может быть тот, от которого поступил сигнал на шину В.
Точная синхронизация тракта данных делает возможным считывание и запись
одного и того же регистра за один цикл. Об этом речь пойдет ниже.
Синхронизация тракта данных
Как происходит синхронизация этих действий, показано на рис. 4.2. Здесь в нача-
ле каждого цикла генерируется короткий импульс. Он может выдаваться задаю-
щим генератором, как показано на рис. 3.20,
в.
На заднем фронте импульса уста-
навливаются биты, которые будут запускать все вентили. Этот процесс занимает
определенный отрезок времени Aw. Затем выбирается регистр, и его значение пе-
редается на шину В. На это требуется время Дх. Затем АЛУ и схема сдвига начина-
ют оперировать поступившими к ним данными. После промежутка Ду выходные
сигналы АЛУ и схемы сдвига стабилизируются. В течение следующего отрезка Дг
результаты проходят по шине С к регистрам, куда они загружаются на нарастаю-
щем фронте следующего импульса. Загрузка должна запускаться фронтом сиг-
нала и осуществляться мгновенно, так что даже в случае изменений каких-либо
входных регистров изменения в шине С будут происходить только после полной
загрузки регистров. На нарастающем фронте импульса регистр, запускающий шину
В, приостанавливает свою работу и ждет следующего цикла. На рис. 4.2 упомяну-
ты регистры МРС и MIR, а также память. Их предназначение мы обсудим чуть
позже.
Важно осознавать, что хотя в тракте данных нет никаких запоминающих эле-
ментов, для прохождения сигнала по нему требуется определенное время. Изме-
нение значения на шине В вызывает изменения на шине С не сразу, а только через
некоторое время (это объясняется задержками на каждом шаге). Следовательно,
даже если один из входных регистров изменяется, новое значение будет сохранено
Пример микроархитектуры
235
в регистре задолго до того, как старое (и уже неправильное) значение этого регис-
тра, помещенное на шину В, сможет достичь АЛУ.
Цикл 1
начинается
здесь
Выходной сигнал
схемы сдвига
стабилен
Регистры загружаются из шины С
и памяти на нарастающем фронте
синхронизирующего сигнала
Цикл 2
Здесь новое значение МРС
_ используется для загрузки
в регистр MIR новой
микросхемы
Установка
сигналов
для запуска
тракта данных
Здесь доступен
регистр МРС
Регистр Н Продвижение
и шина В сигнала
из схемы сдвига
в регистры
Рис.
4.2. Временная диаграмма цикла тракта данных
Для такой разработки требуется жесткая синхронизация и довольно длинный
цикл; должно быть известно минимальное время прохождения сигнала через АЛУ;
регистры должны загружаться из шины С очень быстро. Если подойти к этому
вопросу с особым вниманием и осторожностью, можно сделать так, чтобы тракт
данных функционировал правильно.
Цикл тракта данных можно разбить на подциклы. Начало подцикла 1 запуска-
ется задним фронтом синхронизирующего сигнала. Ниже показано, что происхо-
дит во время каждого из подциклов. В скобках приводится длина подцикла.
1. Устанавливаются сигналы управления (Aw).
2. Значения регистров загружаются на шину В (Ах).
3. Происходит работа АЛУ и схемы сдвига (Ду).
4. Результаты проходят по шине С обратно к регистрам (Дг).
На нарастающем фронте следующего цикла результаты сохраняются в регистрах.
Никаких внешних сигналов, указывающих на начало и конец подцикла и сооб-
щающих АЛУ, когда нужно начинать работу и когда нужно передавать результаты
на шину С, нет. В действительности АЛУ и схема сдвига работают постоянно. Одна-
ко их входные сигналы недействительны в течение периода Aw+Дх. Точно так же
их выходные сигналы недействительны в течение периода Aw+ Дх+Ду. Единствен-
ными внешними сигналами, управляющими трактом данных, являются задний
фронт синхронизирующего сигнала, с которого начинается цикл тракта данных, и
нарастающий фронт синхронизирующего сигнала, который загружает регистры из
шины С. Границы подциклов определяются толоко временем прохождения сигна-
ла, поэтому разработчики тракта данных должны все очень четко рассчитать.
236 Глава 4. Микроархитектурный уровень
Работа памяти
Наша машина может взаимодействовать с памятью двумя способами: через порт с
пословной адресацией (32-битный) и через порт с байтовой адресацией (8-бит-
ный). Порт с пословной адресацией управляется двумя регистрами;
MAR (Memory
Address Register — регистр адреса ячейки памяти)
и
MDR (Memory Data Register —
информационный регистр памяти),
которые показаны на рис. 4.1. Порт с байтовой
адресацией управляется регистром PC, который записывает 1 байт в 8 младших
разрядов регистра
MBR (Memory Buffer Register — буферный регистр памяти).
Этот порт может считывать данные из памяти, но не может их записывать в память.
Каждый из этих регистров, а также все остальные регистры, изображенные на
рис. 4.1, запускаются одним из
сигналов управления.
Белая стрелка под регист-
ром указывает на сигнал управления, который разрешает передавать выходной
сигнал регистра на шину В. Регистр MAR не связан с шиной В, поэтому у него нет
сигнала разрешения. У регистра Н этого сигнала тоже нет, так как он является
единственным возможным левым входом АЛУ
и
поэтому всегда разрешен.
Черная стрелка под регистром указывает на сигнал управления, который запи-
сывает (то есть загружает) регистр из шины С. Поскольку регистр MBR не может
загружаться из шины С, у него нет сигнала записи (но зато есть два сигнала разре-
шения, о которых речь пойдет ниже). Чтобы инициировать процесс считывания
из памяти или записи в память, нужно загрузить соответствующие регистры па-
мяти, а затем передать памяти сигнал чтения или записи (он не показан на рис. 4.1).
Регистр
MAR
содержит адреса слов, таким образом, значения 0,1,2 и т. д. ука-
зывают на последовательные слова. Регистр PC содержит адреса байтов, таким
образом, значения 0,1,2 и т. д. указывают на последовательные байты. Если значе-
ние 2 поместить в регистр PC и начать процесс чтения, то из памяти считается
байт 2, который затем будет записан в 8 младших разрядов регистра MBR. Если
значение 2 поместить в регистр MAR и начать процесс чтения, то из памяти счита-
ются байты 8-11 (то есть слово 2), которые затем будут записаны в регистр MDR.
Для чего потребовалось два регистра с разной адресацией? Дело в том, что ре-
гистры MAR и PC будут использоваться для обращения к двум разным частям
памяти, а зачем это нужно, станет ясно чуть позже. А пока достаточно сказать, что
регистры MAR и MDR используются для чтения и записи слов данных на уровне
архитектуры команд, а регистры PC и MBR — для считывания программы уровня
архитектуры команд, которая состоит из потока байтов. Во всех остальных регис-
трах, содержащих адреса, применяется принцип пословной адресации, как и в MAR.
В действительности существует только одна память: с байтовой адресацией. Как
же регистр MAR обращается к словам, если намять состоит из байтов? Когда зна-
чение регистра MAR помещается на адресную шину, 32 бита этого значения не
попадают точно на 32 адресные линии (с 0 по 31). Вместо этого бит 0 соединяется
с адресной линией 2, бит 1 — с адресной линией 3 и т. д. Два старших бита не учи-
тываются, поскольку они нужны только для адресов свыше 2
32
, а такие адреса
недопустимы в нашей машине на 4 Гбайт. Когда значение MAR равно 1, на шину
помещается адрес 4; когда значение MAR равно 2, на шину помещается адрес 8
и
т. д. Распределение битов регистра MAR по адресным линиям показано на рис. 4.3.
Пример микроархитектуры 237
Не учитываются
32-битный регистр MAR (измеряется в словах)
I
О О
32-битная адресная шина (измеряется в байтах)
Рис.
4.3. Распределение битов регистра MAR в адресной шине
Как уже было сказано выше, данные, считанные из памяти через 8-битный порт,
сохраняются в 8-битном регистре MBR. Этот регистр может быть скопирован на
шину В двумя способами: со знаком и без знака. Когда требуется значение без зна-
ка, 32-битное слово, помещаемое на шину В, содержит значение MBR в младших
8 битах и нули в остальных 24 битах. Значения без знака нужны для индексирова-
ния таблиц или для получения целого 16-битного числа из двух последователь-
ных байтов (без знака) в потоке команд.
Другой способ превращения 8-битного регистра MBR в 32-битное слово — рас-
сматривать его как значение со знаком между -128 и +127 и использовать это зна-
чение для порождения 32-битного слова с тем же самым численным значением.
Это преобразование делается путем дублирования знакового бита (самого левого
бита) регистра MBR в верхние 24 битовые позиции шины В. Такой процесс назы-
вается расширением по знаку или знаковым расширением Если выбран данный
параметр, то либо все старшие 24 бита примут значение 0, либо все они примут
значение 1, в зависимости от того, каков самый левый бит регистра MBR: 0 или 1.
В какое именно 32-битное значение (со знаком или без знака) превратится
8-битное значение регистра MBR, определяется тем, какой из двух сигналов управ-
ления (две белые стрелки под регистром MBR на рис. 4.1) установлен. Прямо-
угольник, обозначенный на рисунке пунктиром, показывает способность 8-битного
регистра MBR действовать в качестве источника 32-битных слов для шины В.
Микрокоманды
Для управления трактом данных, изображенным на рис. 4.1, нам нужно 29 сигна-
лов Их можно разделить на пять функциональных групп'
• 9 сигналов для записи данных из шины С в регистры.
• 9 сигналов для разрешения передачи регистров на шину В и в АЛУ.
• 8 сигналов для управления АЛУ и схемой сдвига.
• 2 сигнала, которые указывают, что нужно осуществить чтение или запись
через регистры MAR/MDR (на рисунке они не показаны)
• 1 сигнал, который указывает, что нужно осуществить вызов из памяти через
регистры PC/MBR (на рисунке также не показан).