Разобьем число на две части

 

A = A1 + A2 · 2n/2

сдвиг вправо на n/2 разрядов

 

 

AB = (A1+A2·2n/2)·( B1+B2·2n/2) = A1·B1 + A1·B2·2n/2 + A2·B1·2n/2 + A2·B2·2n

 

Умножение двух чисел будем производить как в предыдущем случае

Например, умножаются два 8-ми разрядных числа

24 – возможное количество результатов операции умножения

24*4р = 256 ´ 8р будет занимать таблица результатов

 

Малорегистровая и многорегистровая структура автоматов. Варианты реализации аккумулятора.

Если n ³ 4 (n – число слов), то выгодно использовать РЗУ

Слова – известные программе или некоторые внутренние (собственные) слова алгоритма

Например, вспомним команду JSB (переход на подпрограмму) – под считанный адрес отводится внутренняя переменная

 

Микропрограммный аккумулятор – аккумулятор это одна из ячеек РЗУ, доступ к нему осуществляется как к одному из регистров; может быть обращение к аккумулятору по умолчанию

 

Рграсш вводится для ускорения операций умножения, деления

Регистры собираются в РЗУ

Микрокоманда – совокупность УС (управляющих сигналов), вырабатываемых за 1 такт.

В микрокоманде определяются адреса регистров, выбираемых по умолчанию

Акк – один из регистров РЗК

Регистры можно определять как по команде, так и по микрокоманде

В ассемблере, как правило, регистр указывается явно

Акк – регистр, используемый по умолчанию

В Акк помещается результат

 

Многорегистровая схема с аппаратным аккумулятором

 

Когда говорят об Акк, говорят о младшей части Акк и старшей

Рг расширения – младшая часть аккумулятора

просто Рг Акк – старшая часть аккумулятора

 

 

Схема без РЗУ при n = 4 (или меньше) может быть более выгодной, чем с РЗУ

 

Схема без Рграсш (регистра расширения)

За каждым словом закрепляется свой регистр

Схема с непосредственными связями

Управляющий автомат

Как уже рассматривалось, процессор можно представить в виде двух автоматов: операционного и управляющего. Операционный автомат получает на вход некоторые данные и управляющую информацию из управляющего автомата, на выходе – результат операции над исходными данными. Управляющий автомат имеет на входе признаки (данных из ОА и внешние), а вырабатывает совокупности управляющих сигналов для ОА.

 
 

 


Микрокоманда – совокупность сигналов (двоичное слово), которые определяют действия.

Кодирование микроопераций

 

Микрооперация -?. Необходимо кодирование микроопераций.

Существует несколько вариантов кодирования микроопераций:

1. Вертикальное

2. Горизонтальное

3. Смешанное

4. Косвенное (с нанопамятью)

 

Первый и второй вариант кодирования в чистом виде не встречается.

 

Вертикальное кодирование:

 
 

 


В данном случае микрооперация представляет собой унарный код, т.о. за один такт выполняется только одна микрооперация.

Достоинство: небольшой размер закодированной микроопераций (№ mопер), а следовательно, и небольшие аппаратные затраты. Если количество микроопераций равно N, то размерность номера микрооперации равна n=log2N, т.к. N=2n .

Недостаток: выполняется всего одна микрооперация за такт – неэффективно, большие временные затраты.

Горизонтальное кодирование:

 

 

В этом случае одна микрооперация может определить до k операций за такт, т.к. если микрооперация представляет собой двоичное слово длиной k, то единица в каком-нибудь i-м разряде означает выполнение некоторой i-й операции, а соответственно ноль - невыполнение.

При этом достоинства и недостатки противоположны достоинствам и недостаткам вертикального кодирования микроопераций. Сокращаются временные затраты, т.к. параллельно выполняются несколько операций, но увеличиваются аппаратные затраты, т.к. эту параллельность надо обеспечить соответствующим схемным решением и увеличением длины микрооперации (равна общему количеству операций).

 

Смешанное кодирование:

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

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

 
 

 

 


Каждое поле управляет своим функциональным элементом.

 

Микрооперация - действие в одном функциональном элементе (поэтому несовместимы действия одной группы микроопераций).

Смешанное кодирование совмещает достоинства предыдущих способов:

- за один такт выполняется несколько микроопераций (при условии что они совместимы во времени);

- небольшие аппаратные затраты, т.к. длина микрокоманды меньше (равна не общему количеству микроопераций, а количество групп*[log2(Количество микроопераций в группе)] ) и не требуется дополнительных схем, т.к. необходимые дешифраторы уже есть в ОА и распараллеливаются только несовместимые микрооперации (не нужно стоить несколько сумматоров как при горизонтальном кодировании).

 

Косвенное кодирование с нанопамятью:

Нанопамять - малая память, которая хранит микрокоманды. Каждой микрокоманде соответствует свой номер в нанопамяти ( 0 … количество микрокоманд-1 ), которым она и кодируется. Т.о. при небольшой длине закодированной микрокоманды можно определить микрокоманду любой необходимой длины, т.е. возможно совмещение во времени любого числа микроопераций. Из затрат только введение небольшого ПЗУ.