Разобьем число на две части
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 ), которым она и кодируется. Т.о. при небольшой длине закодированной микрокоманды можно определить микрокоманду любой необходимой длины, т.е. возможно совмещение во времени любого числа микроопераций. Из затрат только введение небольшого ПЗУ.