Функциональная схема RISC-процессоров


Функциональная схема RISC-процессоров

RG является буферным сдвиговым регистром для ALU. Что означает буферный регистр? ALU является комбинационной схемой, поэтому результат, если будет снят операнд со входа, через некоторое время будет изменен, то есть не будет зафиксирован. Поэтому требуется его фиксировать в некотором регистре, потому что если на вход регистра подать адрес куда надо записать данные какой-то из выходов станет другим, например А, то есть значение будет на выходе не таким, которое первоначально туда подавалось, а значит через какое-то время на выходе будет новый результат, а чтобы этого не было мы обязательно должны зафиксировать этот результат в некотором буферном регистре, но попутно он еще выполняет роль сдвигателя. После этого мы подаем этот 32 разрядный результат опять в регистровый файл. То есть делаем так, что результат какой-то операции может быть записан только лишь в регистр. Но мы должны записывать в RF данные считываемые из внешней памяти. Для того чтобы из основной памяти переписать операнд храняйщийся по какому-то адресу мы должны использовать тот же вход RF. Как следствие этого мы должны здесь поставить мультиплексор(Мх), который позволяет выбирать нам выход или с сдвигателя или же с основной памяти. Понятно что ALU формирует признаки результата и на вход его подается некие управляющие сигналы с блока управления. У нас 4 признака результата. Как правило ALU выполняет до 16 каких-то простых операций, поэтому в общем случае мы заведем 4 разряда которые будут определять ту операцию, которая будет выполняться ALU. Ясно,что регистр сдвига должен тоже управляться. Нам для этого потребуются 3 разряда. RF будет тоже управляться и на вход подаются два информационных сигнала: регистр входа А и регистр входа В или С. Мы с вами говорили, что обязательно должен присутствовать регистр команд для работы УБ.

Возможно формирование флагов в сдвиговом регистре, поэтому поставим мультиплексор который поможет получить нам как бы объединенные флаги. Получаем 4 разряда флагов, которые идут в УБ. Понятно, что этот мультиплексор управляется типом команды: командой сложения или сдвига. Если команда сложения, флаги идут с одного места, если команда сдвига, то с другого.

Далее мы видели, что регистр команды имеет три поля:Ra, Rb, КОП. Мы заводим выходы этого регистра на соответсвующие входы регистрового файла.

На вход УБ с «жесткой» логикой работы подается КОП.

Далее мы должны реализовать счетчик команд. Он будет реализован следующим образом: УБ будет модифицировать содержимое счетчика в зависимости от кода команды. Содержимое регистра счетчика команд – это РС считывается в УБ и он, в зависимости от того какая команда, или прибавляет 1 к РС или же заменяет его на содержимое регистра В. Поэтому впереди ставим мультиплексор на один из входов которого заводим выход регистрового файла В, а на другой вход выход устройства управления.

Далее нам потребуется считывать текущую команду из памяти. Как только она появилась на выходе RF, мы должны ее подать на мультиплексор, образующий шину адреса процессора. Для того чтобы организовать двунаправленную передачу данных по одной и той же шине данных ставим шинный формирователь BD и замкнем эти 2 шины. После этих дополнений шина данных получилась двунаправленная. В итоге получилось необходимость в наличии управляющих сигналов на каждый из перечисленных функциональных блоков. Эти все управляющие сигналы(С1-С10) вырабатываются устройством управления. Также устройством управления вырабатывается шина управления процессором, которая сообщает внешним запоминающим устройствам чтение или запись(один разряд на ЗУК а другой на ЗУД).

Загрузка...