Аккумуляторная архитектура


Архитектура на базе аккумулятора исторически возникла одной из первых. В ней для хранения одного из операндов арифметической или логической операции в процессоре имеется выделенный регистр — аккумулятор. В этот же регистр заносится и результат операции. Поскольку адрес одного из операндов предопределен, в командах обработки достаточно явно указать местоположение только второго операнда. Изначально оба операнда хранятся в основной памяти, и до выполнения операции один из них нужно загрузить в аккумулятор. После выполнения команды обработки результат находится в аккумуляторе и, если он не является операндом для последующей команды, его требуется сохранить в ячейке памяти.

       
 
 
   

 


ШИНА адреса

           
   
 
   
 
   
 
 

 

 


ШИНА ШИНА

 
 


JKn JK0  
данных команд

                           
 
 
       
       
 

 


Q Q

               
   
SM
     
 
 
   
 
 

 

 


Рис.6.4 Схема аккумуляторного ОУ для одноадресной команды

Рассмотрим работу ОУ с аккумуляторной архитектурой на примере выполнения одноадресной инструкции – ADD.

Шаг 1 – Выборка (вызов) команды – на шину адреса подается начальный адрес программы сложения в ОП, команда появляется на шине команд и заносится в регистр команд.

Шаг 2 - Декодирование команды – определяется начальный адрес ассемблерной микропрограммы в ПЗУ устройства управления (в ПЗУ производитель процессора занес оттранслированную (компилированную) версию команды Add, которая представляет собой микропрограмму, занимающую несколько строк), при этом происходит настройка ОУ.

Шаг 3. Выборкаоперанда – УУ выставляет на шине адреса адрес первого операнда – Х1, который и появляется ни шине данных, а затем заносится в регистр R2.

Шаг 4. Исполнение– реализуется операция пересылки операнда Х1 в регистр аккумулятор АЛУ или в ассемблерном формате – R1:=R1`+R2 (только на 4ом шаге появилась одна переменная).

Шаг 5. Выборкаоперанда – УУ выставляет на шине адреса адрес второго операнда – Х2, который и появляется ни шине данных, а затем заносится в регистр R2. Сейчас ситуация следующая, в R1 (а значит на входе сумматора АЛУ) лежит операнд Х1, а в регистре R2 лежит операнд Х2. мы готовы произвести нашу арифметическую операцию сложения.

Шаг 6. Исполнение –реализуется операция R1:=R1+R2, т.е. мы суммируем содержимое двух регистров и пересылаем результат в аккумулятор АЛУ, т.е. в регистр R1.

Шаг 7. Запись результата– [Asum ]:=R1, т.е. содержимое (сумма Х1 и Х2) пересылается в ОП по адресу, находящемуся в ПЗУ устройства управления.

Для загрузки в аккумулятор содержимого ячейки х предусмотрена команда загрузки Load. По этой команде информация считывается из ячейки памяти и происходит занесение считанных данных в аккумулятор. Запись содержимого аккумулятора в ячейку памяти осуществляется командой сохранения Store, при выполнении которой выходы аккумулятора подключаются к шине, после чего информация с шины записывается в память. Для выполнения операции в АЛУ производится считывание одного из операндов из памяти в регистр данных R2. Второй операнд находится в аккумуляторе – R1. Выходы регистра данных и аккумулятора подключаются к соответствующим входам АЛУ. По окончании предписанной операции результат с выхода АЛУ заносится в аккумулятор.

Достоинствами аккумуляторной АСК можно считать короткие команды и простоту декодирования команд. Однако наличие всего одного регистра порождает многократные обращения к основной памяти.