andrey

Путь к Файлу: /Организация ЭВМ / Лекции ВМ-91 / (3.3) Бригада 10.doc

Ознакомиться или скачать весь учебный материал данного пользователя
Скачиваний:   0
Пользователь:   andrey
Добавлен:   13.01.2015
Размер:   573.5 КБ
СКАЧАТЬ

Компаратор

Кодированные выражения из таблицы 3.5 часто используются. Очевидная реализация выполняется за два шага. Сначала вычисляются вспомогательные сигналы l,e,g (меньше, равно, больше)

1 = 1   <->      a<b     <->      a-b<0

e = 1    <->      a=b     <->      a-b=0

g = 1   <->      a>b     <->      a-b>0

 

и затем генерируется   t(a,b,f) = f2  /\ l \/ f1 /\ e \/ f0 /\ g.

Рисунок 3.8 изображает данную реализацию, используя арифметический модуль из раздела 2.4. Примем, что сигнал вычитание sub - активен

l=neg

e = 1<->s[31:0] = 032

g=e /\ l.

Стоимость и задержка 32-битного компаратора

Ccomp(32)     =     Czero (32)+2*Cinv+4*Cand+2*Cor

(3.3) Бригада 10Ocomp(32)    =    max{Dinv + Dand, Dzero(32) + Dor, Dzero(32) + Dinv}+Dand + Dor.

 

 

Рисунок 3.8 Арифметический модуль, дополненный схемой компаратора

 

 

 

 

(3.3) Бригада 10

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.9 Реализация ALU включающего арифметический модуль AU,

логический модуль LU и компаратор

 

 

 

 

 

 

Логический модуль

 

Кодирование арифметико-логических функций из таблицы 3.6 переводится простейшим способом в рисунок 3.9. Таким образом, стоимость и задержка логического модуля LU и этого ALU

CLU(32)   =Cand(32) + Cor(32) + Cxor(32) + 3 • Cmux(32)

DLU(32)   =max{Dand + Dor,Dxor} + 2*Dmux

cALU   =CAU (32) + ClU (32) + Ccomp (32) + 2 • Cmux (32)

dALU    =max{DAU(32)+Dcomp(32),DAU(32)+Dmux,

DLU(32)+Dmux } + Dmux.

 

(3.3) Бригада 10Рисунок 3.10 Glue logic окружения ALU

 

The Glue Logic

Рисунок 3.10 предлагает, как можно генерировать сигналы sub и f [2: 0] из сигналов управления add и Rtype. Мультиплексор, управляемый сигналом Rtype, выбирает между первичным и вторичным кодом операции. Мультиплексор, управляемый add, может выставлять f [2: 0] в значение 000, которое является кодом сложения.

Арифметический модуль используется только для проверок и арифметических операций. В случае арифметических операций ALU, операция AU - сложение (add или addi) если f1 = 0 и вычитание (sub или subi) если f1 = 1. Следовательно, сигнал вычитания может быть сгенерирован как

 

sub = test \/ f1.

 

Окружение ALUenv состоит из схемы ALU и ALU glue logic. Таким образом, для всего окружения ALU мы получаем следующие задержку и стоимость:       

CALUglue =Cor + 2-Cmux(3)

DALUglue=2*Dmux(3) +Dor

caluenv=calu + CALUglue

daluenv=DALUglue + DALU.

 

 

 

3.3.5    Окружение памяти

 

Окружение памяти Menv управляется тремя сигналами

• mr указывает на доступ к памяти по чтению,

• mw указывает на доступ к памяти по записи,

• fetch указывает на выборку команды.

 

 

При выборке команды (то есть, когда fetch = 1), сигнал записи в память должен быть неактивным, то есть, mw = 0. Адрес доступа к памяти всегда определяется значением на шине адреса памяти MA [31 : 0].

 

 

 

 

 

Таблица 3.7 Кодирование ширины для доступа к памяти по записи

 

IR[27:26]

 

d

 

MAR[1:0]

 

mbw[3:0]

 

00

 

1

 

00

 

0001

 

 

 

 

 

01

 

0010

 

 

 

 

 

10

 

0100

 

 

 

 

 

11

 

1000

 

01

 

2

 

00

 

0011

 

 

 

 

 

10

 

1100

 

11

 

4

 

00

 

1111

 

 

Повторимся, что память М - байтоадресуемая. Полуслова выровнены по четному (в байтах) адресу; команды и слова выровнены по границам слова, то есть, по (в байтах) адресам, делимым на 4. Из-за выравнивания данные памяти никогда не пересекают границы слова. Поэтому мы организуем память таким образом, что для каждой границы слова e слово памяти

Mword[e] = M[e + 3 : e]

может быть доступно параллельно. Таким образом, единственный удовлетворительный доступ, загружать или сохранять каждый байт, полуслово, слово или команду.

Если mr = 1, окружение памяти Menv производит операцию чтения, то есть, операцию загрузки или выборку команды. Menv тогда поставляет на шину MDout слово

MDout[31 : 0] = Mword[(MA[31 : 2]00)].

Если операция чтения обращается к d-байтовым данным X, тогда по лемме 3.1  X есть подслово

X  = byte(MA[1:0])+d-1:(MA[1:0])(MDout)

шины памяти MDout.

При mw = 1 сигнал выборки неактивен (fetch = 0). Таким образом, выполняется операция сохранения и окружение памяти производит операцию записи. В течение операции сохранения, биты IR [27: 26] первичного кода операции определяют число байт d, сохраняемых в памяти (таблица 3.7). Адрес хранения определяется регистром адреса памяти (memory address register) (MAR). Если должны быть сохранены d-байтовые данные X, тогда окружение памяти ожидает их как подслово

(3.3) Бригада 10X  = byte(MAR[l : 0]) + d - l : (MAR[l : 0])(MDin)

Рисунок 3.11 Соединение банков памяти с шинами данных и адреса

 

шины памяти MDin и выполняет операцию записи : M[e + d -1 : e] := X.

Данные на шине памяти MDin обеспечиваются регистром MDRw. Для дальнейшего использования, мы вводим запись : m = bytes(MDRw).

Так как обращения к памяти иногда требуют множества тактовых циклов, нам необходим сигнал mbusy указывающий, что текущее обращение к памяти не будет закончено в течение текущего тактового цикла. Этот сигнал – входной для блока управления; он может быть активен только при обращении к памяти, то есть, если mr = 1 или mw = 1. Мы ожидаем сигнал mbusy, чтобы были правильными dmstat единицы времени после начала каждого тактового цикла.

На этом завершается определение окружения памяти Menv. Его реализация довольно проста. Мы используем четыре банка памяти MB [j] для j € {0, ... ,3}.. Каждый банк MB[j] – шириной в один байт и имеет собственный сигнал записи mbw[j]. Рисунок 3.11 показывает, как эти четыре банка связаны с 32-разрядными шинами данных и адреса.

 

 

 

 

Контроллер памяти

 

Сигналы записи в банк mbw[3 : 0] генерируются следующим образом: Подача битов адреса MAR[1 : 0] через 2 декодера дает 4 сигнала B[3 : 0] удовлетворяющие

 

B[j] = 1 <-> (MAR[1:0]) = j.

 

для всех j. Из последних двух битов кода операции мы декодируем ширину текущего обращения согласно таблице 3.7

B          =         IR[26]

H         =         IR[27] /\  IR[26]

W         =          IR[27] /\ IR[26].

 

 

(3.3) Бригада 10Рисунок 3.12 Контроллер памяти MC. Схема GenMbw генерирует сигнал записи

в банк в соответствии с выражением 3.1

 

(3.3) Бригада 10

При многократном использовании общих подвыражений стоимость и задержка контроллера памяти MC (рисунок 3.12) будут

cmc=Cdec(2)+2*Cinv+12•Cand+5•Cor

Далее генерируются сигналы записи в банк

 

DMC   =   max{Ddec(2), Dinv + Dand} + 2*Dand + 2*Dor.

Пусть dmem - время доступа к  банку памяти. Тогда окружение памяти задерживает данные MDout на

DMenv(MDout) = DMC + dmem.

Мы не вдаемся в подробности генерации сигнала mbusy. Это станет возможным только тогда, когда мы сформируем контроллеры кэша.

3.3.6    Окружение устройства сдвига SHenv

 

Окружение устройства сдвига SHenv используется для двух целей: для выполнения операций явного сдвига sll (логический сдвиг влево), srl (логический сдвиг вправо) и sra (арифметический сдвиг вправо), и во вторых, для выполнения неявных сдвигов. Неявный сдвиг используется только в операциях хранения sb и sw для выравнивания данных, которые будут сохранены в памяти. Окружение SHenv управляется единственным управляющим сигналом

 

• shift4s, означает сдвиг для операций хранения.


Таблица 3.8 Кодирование явных сдвигов

IR[1:0]

 

00    10     11

 

type

 

sll    srl    sra

 


 

Явные сдвиги

 

(3.3) Бригада 10Формально мы определим три явных сдвига. Очевидно, что левые и правые сдвиги отличаются направлением сдвига. Логические сдвиги и арифметические сдвиги отличаются заполняющим битом (fill bit). Этим битом заполняются позиции, которые больше не охвачены сдвинутым операндом. Мы определим явные сдвиги операнда a[n— 1: 0] на расстояние b[m — 1 : 0] следующим образом:

где

(3.3) Бригада 10

 

Таким образом, арифметические сдвиги расширяют знаковый бит сдвинутого операнда. Вероятно они имеют такое название от равенства

[sra(a,b)] = [[a]/2(b)],

которое может использоваться в алгоритмах деления для 2-х дополнительных чисел. В случае явной операции сдвига последние два бита IR[1 : 0] вторичного кода операции производят выбор среди трех явных сдвигов согласно таблице 3.8. Записью shift(a,b,IR[1 : 0]) мы обозначаем результат сдвига, указанного в IR[1: 0] с операндами a и b.

 

 

 

Неявные сдвиги

Неявные сдвиги влево для операций хранения необходимы, если байт или полуслово выровненные в правый конец  a[31 : 0] должны быть сохранены в байте, адрес которого не делится на 4. Адрес байта предоставляется  регистром адреса памяти (memory address register) MAR.. Измеренное в битах, расстояние сдвига (мотивированное леммой 3.1) в этом случае равняется

8 • (MAR[1 : 0]) = (MAR[1 : 0]000).

Операнд a циклически сдвинется на это расстояние. Таким образом, выход sh окружения устройства сдвига SHenv


(3.3) Бригада 10

(3.3) Бригада 10 

Рисунок 3.13 Верхний уровень окружения устройства сдвига SHenv


 

На этом завершается определение окружения устройства сдвига. Рисунок 3.13 изображает очень общую конструкцию сдвигающих устройств из [MP95]. 32-битное циклическое устройство сдвига влево CLS сдвигает операнд a[31 : 0] на расстояние dist[4 : 0], обеспеченное схемой расстояния Dist. Результат r[31 : 0] сдвига исправляется схемой Scor  как функцией заполняющего бита fill и маской замены mask[31 : 0].

 

Коррекция сдвига

 

Для каждой позиции бита i схема Scor заменяет бит ri промежуточного результата заполняющим битом в случае, если бит маски maski активен. Таким образом,

(3.3) Бригада 10

Рисунок 3.14 изображает простейшую реализацию схемы коррекции. Для всего окружения устройства сдвига SHenv, получаем следующие стоимость и задержку:

CSHenv     =     CCLS(32) + CDist + CFill + CMask + 32 • Cmux

DSHenv   =   max{DDist + DCLS(32), DFill, DMask} + Dmux

Расстояние сдвига

Согласно определениям раздела 2.4.6, n-разрядный циклический сдвиг вправо может быть также выражен как n–разрядный циклический сдвиг влево:

 

(3.3) Бригада 10crs(a, (b)) = cls(a, (b) + 1 mod n).

Рисунок 3.14 Корректирующая сдвиг схема Scor

(3.3) Бригада 10

Рисунок 3.15 Схема Dist выбора дистанции сдвига сдвигающего устройства SH

Таким образом, в схеме выбора расстояния Dist на рисунке 3.15 мультиплексор, управляемый сигналом right выбирает соответствующее левому сдвигу расстояние явного сдвига. Согласно таблице 3.8, бит IR[1] может быть использован для различия между явными левыми и явными правыми сдвигами. Таким образом, мы можем установить  right = IR[1].

 

Дополнительный мультиплексор, управляемый сигналом shift4s может силой установить расстояние сдвига в MAR[1: 0]000, то есть, расстояние левого сдвига, определенное для хранения. Стоимость и задержка схемы расстояния сдвига Dist

 

 

CDist       =         Cinv(5) + Cinc(5) + 2*Cmux(5)

DDist(b)            =         Dinv(5)+Dinc(5) + 2*Dmux(5)

DDist(MAR)      =         Dmux(5).

Заполняющий бит

Заполняющий бит отличен от 0 только в случае арифметического сдвига, который закодирован как IR[1 : 0] = 11 (таблица 3.8). В этом случае заполняющий бит равен знаковому биту a31 операнда a, и поэтому

fill = IR[1] /\ IR[0] /\ a31.

 

Стоимость и задержка вычисления заполняющего бита

cfill   =   2 • Cand dfill   =   2 • Dand.

(3.3) Бригада 10

Рисунок 3.16 Схема Mask, генерирующая маску для устройства сдвига SH.

 

Маска замены

 

В течение явного сдвига влево самые младшие (b) биты промежуточного результата r должны быть заменены. На рисунке 3.16 полудекодер (half decoder) генерирует из b соответствующую маску 032-(b)1(b). В течение явного сдвига вправо должны быть заменены старшие (b) биты промежуточного результата r. Соответствующая маска получается простым зеркальным отображением маски для сдвига влево. Обратите внимание, что для этого не нужны вентили. Таким образом, в модели вентиля, используемой здесь, зеркально отображаемая маска не способствует стоимости и задержке. При сдвигах для хранения, маска принудительно приводится к 032 и промежуточный результат r вообще не исправляется. Стоимость и задержка схемы маски

CMask     =     Chdec(5)+2•Cmux(32)

DMask    =   Dhdec(5) + 2•Dmux(32).

Для дальнейшего использования мы введем обозначение

sh = shift(a,dist).

Видно, что в этой сокращенной записи скрыто большое количество параметров.

 

3.3.7    Окружение устройства сдвига SH4Lenv

Это окружение состоит из устройства сдвига для загрузок SH4L и мультиплексора; оно управляется единственным управляющим сигналом

Shift4l означающим сдвиг для операций загрузки.

Если сигнал shift4l активен, результат R сдвигающего устройства SH4L подается к выходу C' окружения, в противном случае вход C пропускается к C':

(3.3) Бригада 10

 

Рисунок 3.17 изображает высокоуровневые схемные решения окружения сдвигающего устройства SH4Lenv; его стоимость и задержка могут быть выражены как

CSH4Lenv     =     CSH4L + Cmux(32) DSH4Lenv     =     DSH4L + Dmux(32).

 

(3.3) Бригада 10

Рисунок 3.17 Высокоуровневые схемные решения окружения сдвигающего устройства SH4L

Сдвигающее устройство SH4L используется только в операциях загрузки. Последние три бита IR [28: 26] первичного кода операции определяют тип операции загрузки (таблица 3.9). Адрес байта данных, который читается из памяти при операции загрузки, хранится в регистре адреса памяти MAR. Если байт или полуслово загружаются из байта адреса, который не делится на 4, загруженные данные MDRr должны быть сдвинуты вправо так, чтобы они были выровнены по правому концу шины данных D[31: 0]. Циклический сдвиг вправо на (MAR[1 : 0]000) бит (расстояние обоснованное леммой 3.1) выдаст промежуточный результат

 

r = crs(MDRr, MAR[1 : 0]000),

где загруженные данные уже выровнены по правому концу. Обратите внимание, что это также охватывает случай с операцией загрузки слова, потому что слова хранятся в адресах с MAR[1 : 0] = 00.. После того, как загруженные данные были выровнены, часть выхода R не принадлежащая загруженным данным, заменяется заполняющим битом:

(3.3) Бригада 10

В беззнаковых операциях загрузки заполняющий бит равен 0, в то время как в знаковых операциях загрузки заполняющий бит - знаковый разряд сдвинутого операнда. Все это объединено в таблице 3.9, которой завершается определение устройства сдвига SH4L.

Рисунок 3.18 изображает простейшую реализацию устройства сдвига SH4L.

Расстояние сдвига всегда кратно 8. Таким образом, устройство циклического сдвига вправо включает только две стадии для расстояний сдвига 8 и 16. Повторимся, что для 32-битных данных, циклический сдвиг вправо на 8 (16) бит равняется циклическому сдвигу влево на 24(16) бит.

Первое полуслово r[31:16] промежуточного результата заменяется заполняющим битом в случае, если этот байт или полуслово загружаются. В течение загрузки принимается что IR [27] = 0. Байт r[15: 8] заменяется только при загрузке единственного байта. В течение загрузки принимается что IR [27: 26] = 00. Это объясняет конструкцию мультиплексора на рисунке 3.18.


Таблица 3.9 Заполняющий бит сдвигов для загрузки

IR[28]

 

IR[27:26]

 

Тип

 

MAR[1:0]

 

Заполняющий бит

 

0

 

00

 

байт, знаковый

 

00

01

10

11

 

MDRr[7]

MDRr[15]

MDRr[23]

MDRr[31]

 

01

 

полуслово, знаковое

 

00

10

 

MDRr[15]

MDRr[31]

 

11

 

слово

 

 

 

*

 

1

 

00

 

байт, беззнаковый

 

 

 

0

 

01

 

полуслово, беззнаковое

 

 

 

0

 

(3.3) Бригада 10

Рисунок 3.18 Устройство сдвига SH4L для загрузки команд

 

Схема LFILL на рисунке 3. 19 грубая реализация функции заполняющего бита, определенной в таблице 3.9. Стоимость и задержка устройства сдвига SH4L и схемы LFILL

CSH4L     =         2 • Cmux(32) + Cmux(24) + Cnand + CLFILL

DSH4L    =         max{2•Dmux(32), Dnand,DLFILL} + Dmux(24)

clfill      =             5•Cmux + Cand + Cinv 

dlfill      =         max{3•Dmux , Dinv} + Dand.

Для дальнейшего использования мы вводим обозначение

R = sh4l(MDRr,MAR[1:0]000).

 

 

(3.3) Бригада 10

 

 

 

 

 

 

 

 

 

 

Рисунок 3.19 Схема LFILL, вычисляющая заполняющий бит для устройства сдвига SH4L

 

Наверх страницы

Внимание! Не забудьте ознакомиться с остальными документами данного пользователя!

Соседние файлы в текущем каталоге:

На сайте уже 21970 файлов общим размером 9.9 ГБ.

Наш сайт представляет собой Сервис, где студенты самых различных специальностей могут делиться своей учебой. Для удобства организован онлайн просмотр содержимого самых разных форматов файлов с возможностью их скачивания. У нас можно найти курсовые и лабораторные работы, дипломные работы и диссертации, лекции и шпаргалки, учебники, чертежи, инструкции, пособия и методички - можно найти любые учебные материалы. Наш полезный сервис предназначен прежде всего для помощи студентам в учёбе, ведь разобраться с любым предметом всегда быстрее когда можно посмотреть примеры, ознакомится более углубленно по той или иной теме. Все материалы на сайте представлены для ознакомления и загружены самими пользователями. Учитесь с нами, учитесь на пятерки и становитесь самыми грамотными специалистами своей профессии.

Не нашли нужный документ? Воспользуйтесь поиском по содержимому всех файлов сайта:



Каждый день, проснувшись по утру, заходи на obmendoc.ru

Товарищ, не ленись - делись файлами и новому учись!

Яндекс.Метрика