Разработка структуры и основных устройств микро-ЭВМ

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    578,53 Кб
  • Опубликовано:
    2013-05-27
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка структуры и основных устройств микро-ЭВМ

Содержание

Введение

1. Разработка общей структуры микроЭВМ

1.1    Функциональный состав микроЭВМ

1.2    Разработка системы команд

.3      Описание взаимодействия всех блоков микроЭВМ при выполнении команд программы

2. Разработка основных устройств микроЭВМ

.1 Запоминающие устройства

2.2    Устройство управления

2.2.1Счетчик команд

.2.2 Блок выборки команд

.2.3 Блок декодирования

.2.4 Блок выборки операндов

.2.5 Блок выполнения (OperativeBlock)

.2.6Блок стековой памяти

.3 Арифметико-логическое устройство

2.3.1 Логическое построение АЛУ и блок РОНов

2.3.2 Реализация арифметических и логических операций

.4 Организация кэш-памяти процессора

.5 Описание схемы предсказания переходов

.6 Описание арбитров

.   Функциональное моделирование

.1 Пример программы

.2 Временная диаграмма работы всего устройства

.   Анализ и оптимизация разработанной микроЭВМ

.1 Конвейерное выполнение фаз последовательностей команд

Заключение

Введение

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

В настоящее время наибольшее распространение в ЭВМ получили 2 типа архитектуры: принстонская (фон Неймана <#"656715.files/image001.gif">

Рисунок 1.3 - Схема взаимодействия блоков

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

Работа схемы начинается с блока выборки команды. По сигналу от декодера, сообщающему о том, что он забрал предыдущие данные и сброшенному сигналу собственной занятости блок начинает работать. На первом такте в регистры защелкиваются все входные данные, в частности, адрес следующей команды. Затем блок посылает запрос на доступ к кэш арбитру кэша команд и приостанавливает свою работу, пока арбитр не пришлет разрешение на поиск в кэш данной команды. Если кэш возвращает сигнал Hit=1, что сигнализирует о наличие там данной команды, то результат работы данного блока готов, и он передается декодеру для дешифрации. Если Hit=0 (промах), данной инструкции в кэш нет, следовательно, необходимо обратиться к памяти. Блок посылает запрос доступа к оперативному запоминающему устройству его арбитру и ожидает разрешения. Когда приходит разрешение, блок читает из памяти по 1 байту, так как ширина шины данных равна 1 байту, 8 раз и буферизирует полученные данные. Размер команды - 4 байта, но блок буферизировал 8 байт (2 команды), так как, размер одной строки кэш равен 8 байтам и, следую принципу локальности данных, можно предположить, что следующей командой будет команда, находящаяся в памяти непосредственно за текущей. При втором срабатывании блока, необходимая команда уже будет находиться в кэш, что ускорит работу процессора. После буферизации двух команд, посылается запрос к кэш и по окончании ожидания ответа выполняется их запись. Освобождается кэш и посылается уведомление декодеру о готовности результата.

По приходу сигнала готовности результата от блока выборки команды начинается работа декодера. По первому такту защелкиваем входные данные в регистрах и уведомляем блок выборки команды о том, что данные сняты с шин, и он может продолжить работу. Команда декодируется путем чтения с шины команд данных с определённых проводов. Результат сразу выдается на блок выборки операндов, и выставляется сигнал о готовности результата.

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

После получения сигнала готовности он блока выборки операндов начинает работу арифметико-логическое устройство. Как и на всех блоках, в первую очередь, защелкивают входные данные в регистрах. На шинах с регистров появились данные, которые в блоке выполнения (OperationBlock)выполняются. Если текущая команда-PUSHлибо POP, то встек (Stack) заталкиваются операнды, либо выталкиваются. После выполнения операций также выставляются флаги в регистре флагов. Необходимо проверить правдивость предсказания условного перехода. Если предсказано, что перехода не будет, а он должен быть, то посылается в счетчик программ (ProgramCounter) сигнал, о необходимости прыгнуть по заранее сохраненному адресу, а также посылается сигнал асинхронной очистки всех регистров, счетчиков и других элементов конвейера, в чем и заключается его очистка. Вносятся необходимые изменения в таблицу истории шаблонов, и выводится результат работы блока.

Далее по конвейеру расположен блок записи результата в память. Если текущая команда -ST, то читается с входной шины адрес назначения. Затем выполняется процесс получения доступа к памяти и запись результата в память и, так как по условия синхронизация кэш с памятью сквозная с отображением, этот же результат записывается в кэш данных по описанной ранее схеме.

2. Разработка основных устройств микро-ЭВМ

.1 Запоминающие устройства

Условно-графическое изображение ОЗУ представлено на рисунке 2.1. Размер шины адреса составляет 16 бит, следовательно, возможно адресовать память объемом 216=65536 слов, каждое из которых имеет размер в 1 байт, так как размер шины данных по условию равен 8 битам.

Рисунок 2.1 - Условно-графическое обозначение модуля памяти.

На рисунке 2.1 можно увидеть, что память имеет 4 входа и 1 выход:

-    data[7..0] - шина данных, по которой подаются данные для записи по адресу address[14..0];

-       wren- вход разрешения записи, 1 - запись разрешена, 0 - запрещена;

-       address[14..0] -шина адреса, устанавливает адрес, по которому записываются данные из входа data[7..0];

-       clock -синхросигнал;

-       q[7..0] -выходная шина данных, данные, прочитанные по адресу address[14..0].

Работа с память осуществляется блоком выборки команд, блоком выборки операндов и блоком записи результата. Для координирования действия всех трех элементов необходимо отдельное устройство. Этим занимается арбитр памяти. Арбитру на вход поступает запрос доступа, если их несколько, то доступ разрешается в соответствии с приоритетом: высший приоритет у блока выборки команды, затем блок выборки операндов и блок записи результата. После определения арбитром, кому необходимо предоставить доступ к памяти, посылается сигнал MemoryGrant, и целевое устройство начинает работать с ОЗУ. По окончанию работы устройство обязано освободить память, послав сигнал MemoryFree, иначе другие устройства не смогут работать с ней. Запись в память осуществляется только командой ST, которая для этого посылает сигнал wren. Чтение осуществляется всеми приведенными ранее блоками, но по 1 байту - максимальный размер шины данных. Как правило, блокам необходимо прочитать последовательно 8 байт, чтобы записать целую строку в кэш, поэтому чтение обращение к памяти приходится проводить 8 раз.

Разрабатываемая микроЭВМ имеет принстонскую архитектуру. Ее главной особенностью является совместное хранение команд и данных. Таким образом, всё хранится в одной памяти - оперативном запоминающем устройстве. В данной системе нет необходимости добавления дополнительной памяти.

.2 Устройство управления

Какое-либо централизованное устройство управления в архитектуре данной микроЭВМ отсутствует. В системе организована концепция квитирования, когда каждый модуль сообщает предыдущий и последующий об окончании определённого этапа обработки. Эта дает возможность правильно функционировать всему конвейеру: не забегать вперед, затирая важные данные, но и не простаивать, замедляя работу процессора. В проекте также реализованы вспомогательные блоки, предназначенные, например, для управления стеком и последовательностью команд.

2.2.1 Счетчик команд

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

-       NextComand[15..0] -адрес следующей команды;

-       JumpAddress[15..0]-адрес прыжка;

-       AllowJump-сигнал от АЛУ, указывающий, что предсказание по условному переходу было ошибочным и необходимо сделать прыжок там, где его не сделали, либо вернуться по определённому адресу там, где был выполнен прыжок;

-       LoadNext-сигнал, поступающий от блока выборки команд после того, как они закончили обработку очередной команды, таким образом, блок извещает счетчик команд и готовности принять следующий адрес;

-       Jump-сигнал от АЛУ, указывающий, что необходимо выполнить прыжок и загрузить в блок выборки команд адрес прыжка, приходит вместе с AllowJump;

-       Address[15..0] -шина, предоставляющая адрес следующей команды для блока выборки команд.

Рисунок 2.2 -Условно-графическое обозначение счетчика команд

2.2.2 Блок выборки команд

Блок выборки команд представляет собой схему, которая получает от счетчика команд адрес текущей команды, вычисляет адрес следующей команды и отправляет его обратно. Далее производится работа непосредственно с текущим адресом. Сначала предпринимается попытка найти команду в кэш, затем в памяти. Если команды не было в кэш, то она кэшируется для дальнейшего использования. Особенностью здесь является то, что команды выбираются по 2, так как строка кэш в 2 раза больше размера команды, и последующая команда будет находиться в более быстрой памяти, следовательно, получается прирост скорости работы процессора.

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

Также необходимо отметить одну важную деталь: адрес для памяти берется с небольшими изменениями. 3 младших бита устанавливаются равными нулю, следовательно, мы выравниваем адресацию памяти по 8 байт. В дальнейшем при чтении 8 байт из памяти по 1 слову, величина которого равна 1 байту, счетчик увеличивает значение обнулённой области адреса. Для кэша такой процедуры проводить нельзя, да и нет необходимости, в него заносится по 2 команды сразу, а по младшим 3 битам определяется смещение конкретного слова в строке кэша.

Условно-графическое обозначение блока представлено на рисунке 2.5.

Рисунок 2.3- Условно-графическое обозначение блока выборки команд

.2.3Блок декодирования

Условно-графическое обозначение блока представлено на рисунке 2.4.

Рисунок 2.4- Условно-графическое обозначение блока декодирования

.2.4 Блок выборки операндов

Блок выборки операндов представляет собой схему, которая получает от блока декодирования команд код операции, тип адресации, адреса операндов, а также несколько дополнительных данных. Если все операнды находятся в регистрах, то забираются оттуда, выставляется сигнал готовности результата и данные передаются арифметико-логическому устройству. Если же первый операнд находится в памяти (используется прямая адресация), то блок запрашивает у арбитра кэша данных доступ к кэш и ожидает получения разрешения. Если данных нет в кэш, то по такой же схеме данные находятся в памяти, забираются и передаются АЛУ вместе с сигналом готовности результата.

Условно-графическое обозначение блока представлено на рисунке 2.5.

Рисунок 2.5- Условно-графическое обозначение блока выборки операндов

.2.5 Блок выполнения (OperativeBlock)

Блок выполнения представляет собой операционный блок, который принимает код операции, первый операнд, второй операнд, флаг Z, а также на него заведена шина из стека, для чтения результата при выполнении команды POP.Внутри данного блока выполняются все операции и если текущая операция имеет результат, то он выводится по выходной шине.

На рисунке 2.6 представлена схема для реализации операции циклического сдвига вправо. На рисунке 2.7 - схема сравнения двух операндов, которое выполняется вычитанием второго операнда из первого. Кроме того, учитывается знак результата, который затем используется для корректного выставления определённого флага в регистре флагов.

Рисунок 2.6 - Схема блока циклического сдвига вправо

Рисунок 2.7 - Схема блока сравнения

На рисунке 2.8 представления схема реализации операции «НЕ» по флагу Z. Если флаг Z=0, то операнд пропускается обычным образом, а если Z=1, то операнд побитно инвертируется.

Рисунок 2.8 - Схема блока операции «НЕ» по флагу

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

.2.6 Блок стековой памяти

Стековая память находится в составе блока АЛУ. Стек состоит из 9 регистров, хранящих по 1 байту каждый.Основным элементом, следящим, за состоянием стека, является счетчик, считающий в обоих направлениях: +1 и −1. Если текущая операция -POP, то уменьшаем счетчик на единицу и выталкиваем значение на шину результата, если PUSH-увеличиваем счетчик и заталкиваем операнд в стек. Условно-графическое обозначение стека приведено на рисунке 2.9.

Рис 2.9-Условно-графическое обозначение блока стека

2.3 Арифметико-логическое устройство

.3.1 Логическое построение АЛУ и блок РОНов

В составе блока АЛУ находится блок стека. Если текущая операция -POP или PUSH, то далее работаем со стеком. Извлекаем значение или загружаем его в стек. Проверяется код операции и в зависимости оттого, какая операция, происходит действие над операндами или операндом. В регистр результата, которым является регистр, указанный в команде, как регистр назначения, записывается результат всех команд кроме ST (тут мы должны записать результат в память, и он подается на вход блока записи результата), а также JMP,JNC (так как результат равен нулю и в регистр не записывается) и PUSH (так как в результате этой операции ничего получиться не должно).

На рисунке 2.10 представлено условно-графическое обозначение блока АЛУ.

Рисунок 2.10-Условно-графическое обозначение блока АЛУ.

В блоке регистров общего назначения находится 28 регистров, построенных на D-триггерах, способных сохранить по 1 байту каждый. Условно-графическое обозначение этого блока представлено на рисунке 2.11.

Рис 2.11-Условно-графическое обозначение блока регистров общего назначения

Входы блока:

-    FirstReg[4..0]-номер регистра с первым операндом;

-       SecondReg[4..0]-номер регистра со вторым операндом;

-       Data[7..0]- данные для записи;

-       Destination[4..0]- номер регистра, предназначенного для сохранения результата текущей операции;

-       Write- сигнал записи в регистр.

Выходы:

-        FirstOperand[7..0]- значение первого операнда из регистра;

-       SecondOperand[7..0]- значение второго операнда.

2.3.2 Реализация арифметических и логических операций

) ST- операция записи операнда в память. Однако напрямую с памятью может работать толькоарбитр доступа к памяти. В данном случае при записи данных в память блок записи результата посылает арбитру запрос на получение доступа для работы с памятью и, когда получает разрешение, то происходит запись данных.

Таблица 2.1 - Команда ST

Код операции

00000 (0)

Пример

ST 128, R0

В десятичном виде

0 2 0 0

В двоичном виде

00000000 00000010 00000000 00000000


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

Таблица 2.2- Команда LD

Код операции00001 (1)


Пример

LD 0, R0

В десятичном виде

80 0 0

В двоичном виде

00001000 00000000 00000000 00000000


) NOTZ - при этой операции в АЛУ с помощью инвертирующего элемента будет получено значение, равное инверсии операнда, но только в том случае, если флаг Z=1.

Таблица 2.3- Команда NOTZ

Код операции00010 (2)


Пример

NOTZR2, R4

В десятичном виде

20 64 0 4

В двоичном виде

00010100 01000000 00000000 00000100


Таблица 2.4- Команда ROR

Код операции00011 (3)


Пример

RORR0, R1

В десятичном виде

28 0 0 1

В двоичном виде

00011100 00000000 00000000 00000001


) POP- операция для работы со стеком, который находится в АЛУ. При распознавании этой операции операнд читается из стека.

Таблица 2.5- Команда POP

Код операции00100 (4)


Пример

POPR4

В десятичном виде

36 0 0 4

В двоичном виде

00100100 00000000 00000000 00000100


) PUSH- операция для работы со стеком, который находится в АЛУ. При распознавании этой операции операнд записывается в стек.

Таблица 2.6- Команда PUSH

Код операции00101 (5)


Пример

PUSHR2

В десятичном виде

44 64 0 0

В двоичном виде

00101100 01000000 00000000 00000000


) AND- при выполнении этой операции в АЛУ над двумя операндами производится операция И. Результат записывается в регистр результата.

Таблица 2.7- Команда AND

Код операции00110 (6)


Пример

AND R0, R1, R2

В десятичном виде

52 0 0 34

В двоичном виде

00110100 00000000 00000000 00100010


) CMP- при этой операции сравниваются 2 операнда с помощью вычитания второго из первого с учетом знака. Далее в соответствии с полученным результатом выставляются флаги: равно нулю (Z), больше нуля (G), меньше нуля (O).

Таблица 2.8- Команда CMP

Код операции00111 (7)


Пример

CMP R2, R2

В десятичном виде

60 64 0 64

В двоичном виде

00111100 01000000 00000000 01000000


) JC- при поступлении кода этой операции, при удовлетворительном значении Z флага, выполняется прыжок.

Таблица 2.9- Команда JC

Код операции10000 (16)


Пример

JC 0

В десятичном виде

128 0 0 0

В двоичном виде

10000000 00000000 00000000 00000000


) JMP - при поступлении кода этой операции,выполняется прыжок.

Таблица 2.9- Команда JC

Код операции

10001 (17)

Пример

JMP 0

В десятичном виде

136 0 0 0

В двоичном виде

10001000 00000000 00000000 00000000



2.4 Организация кэш-памяти процессора

В разработанной микроЭВМ используется 2 кэша: кэш команд и кэш данных. Оба они имею идентичную структуру: 2 банка по 16 строк, в каждой их которых 64 бита. Степень ассоциативности кэш- 2. Синхронизация с памятью - сквозная с отображением. Алгоритм замещения строк - без анализа. На рисунке 2.12 представления схема интерпретации адреса блоком кэш.

электронный вычислительный процессор моделирование

15……………………………………………………7

6…….…....3

2………..0

tag

offset

Рисунок 2.12 - Интерпретация адреса блоком кэш

На представленном рисунке offset-смещение байт в одной строке кэш. Так как длина строки - 8 байт, то 3 младших бита используется для смещения по ним. Indexиспользуется для выбора необходимой строки в кэш. Остальные 9 бит являются тэгом, и поиск соответствия в выбранном множестве происходит именно по ним.

Условно-графическое обозначение кэш показано на рисунке 2.13. На рисунке 2.14 показано условно-графическое обозначение банка кэш, а на рисунке 2.15 - ячейка кэш.

Рисунок 2.13 - Условно-графическое обозначение кэш.

Рисунок 2.14- Условно-графическое обозначение банка кэш

Рисунок 2.15- Условно-графическое обозначение ячейки кэш

.5 Описание схемы предсказания переходов

Предсказания динамические, т.к. используется информациях о переходах в прошлом. В состав этого входит блок PHT (patternhistorytable) - таблица истории для шаблонов. Элемент таблицы (ShiftReg) - сдвиговый регистр на 2 ячейки. Если хотя бы в одной из ячеек будет 1, то скорее всего переход будет. Для определения ячейки таблицы шаблонов, надо4 бита значения счетчика. Ячейками таблицы шаблонов являются сдвиговые регистры.

На рисунке 2.16 показано УГО блока предсказателя.

Рисунок 2.16 - УГО блока предсказателя

Блок имеет следующие входы:

-        Jump- значение совершился переход или нет;

-       Shift- тактовый сигнал;

-       Address[15..0]- значение счетчика команд.

И следующий выход:

-        Branch - предсказание.

На рисунке 2.17 представлено УГО блока PHT.

Рисунок 2.17- УГО блока PHT

Блок имеет следующие входы:

-        Jump- значение совершился переход или нет;

-       Shift- тактовый сигнал;

-       Pattern[3..0]-4 бита, выделенные из адреса для выбора сдвигового регистра.

И следующий выход:

-        Branch - предсказание.

.6 Описание арбитров

В схеме используется 3 арбитра: для доступа к кэшу команд, для доступа к кэшу данных и для доступа к ОЗУ. К кэшу команд могут обращаться блок выборки команд и блок записи результата, к кэшу данных могут обращаться блок выборки операндов и блок записи результата, к памяти могут обращаться блок выборки команд, блок выборки операндов и блок записи результата. Писать в память может только блок записи результата. Все 3 арбитра работают по одной и той же схеме. Определенное устройство, желающее получить доступ к кэш либо к памяти, посылает соответствующий запрос и ожидает, пока арбитр пришлет разрешение, далее работает с целевыми блоками, и обязательно освобождает. Если одновременно от нескольких блоков приходит запрос, то разрешение выдается в порядке приоритетов.

На рисунке 2.18 представлено УГО арбитра доступа к памяти. На 2.19 - к кэшу команд и на 2.20 - к кэшу данных.

Рис 2.18- УГО арбитра доступа к памяти

Рис 2.19- УГО арбитра доступа к кэшу команд

Рис 2.20- УГО арбитра доступа к кэшу данных

3. Функциональное моделирование

3.1   Пример программы

Программу, которая выполняется на микроЭВМ, разработанную для курсового проекта, можно увидеть в таблице 3.1. В таблице используется символьный вид, бинарный и десятичный. Первые 5 бит - это код операции, 1 бит - тип адресации, далее 16 бит показывают адрес первого операнда либо 5 бит - номер регистра с первым операндом и 11 бит зарезервированных (в случае прямой регистровой адресации), следующие 5 бит - это номер регистра, в котором хранится второй операнд, последние 5 бит - номер регистра для сохранения результата.

Таблица 3.1-Листинг программы

Символьный вид

Бинарный вид

Десятичный вид

1

LD0,R0

00001|0|00_000|00000_000000|00_000|00000

8 8 0 0

2

ST 128,R0

00000|0|00_000|00010_000000|00_000|00000

0 2 0 0

3

LD 128,R0

00001|0|00_000|00010_000000|00_000|00000

8 2 0 0

4

ANDR0,R1,R2

00110|1|00_000|00000_000000|00_001|00010

52 0 0 34

5

NOTZ R2,R4

00010|1|00_010|00000_000000|00_000|00100

20 64 0 4

6

PUSH R2

00101|1|00_010|00000_000000|00_000|00000

7

POP R4

00100|1|00_011|00000_000000|00_000|00100

36004

8

CMP R2, R2

00111|1|00_010|00000_000000|00_010|00000

6064064

9

JC 8

10000|0|00_000|00000_001000|00_000|00000

1280320  32 0

10

JMP 8

10001|0|00_000|00000_001000|00_000|00000

1360320


) Первой командой программа в регистр R0 загружает значение из памяти по адресу 0, следовательно после выполнения в R0 будет храниться 8.

2)      Второй командой значение из R0 сохраняется в память по 128 адресу - это хорошо видно, если сравнить рисунки 3.1 и 3.2.

)        Третьей командой загружаем в регистр R0 значение ячейки памяти по адресу 128, то есть должны прочитать только что записанную 8.

)        Четвертая команда выполняет побитовой «И» регистров R0 и R1 и сохраняет результат в регистре R2.

)        Пятая команда выполняет побитовую инверсию значения регистра R2 и сохраняет результат в регистр R4 при условии, что установлен флаг Z, на данный момент он не установлен.

)        Шестая команда заталкивает в стек значение регистра R2 и сразу же выталкивает это значение в регистр R4.

)        Восьмая команда выполняет сравнение двух регистров, так как это один и тот регистр, то результатом выполнения будет ноль, следовательно, будет установлен флаг Z.

)        На девятой команде будет выполнен прыжок по 8 адресу, так флаг Z установлен.

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

На рисунке 3.1 представлена приведенная программа, записанная в ОЗУ микроЭВМ, а на рисунке 3.2 - состояние ОЗУ после работы программы.

Рисунок 3.1 - Состояние ОЗУ до работы программы

Рисунок 3.2 - Состояние памяти после работы программы

Временная диаграмма работы всего устройства

3.2   

Описание:

-       Clock- тактирующий сигнал;

-       PC- счетчик команд;

-       AddressStored- адрес команды в блоке выборки команд сохранен;

-       ComandFetched- блок выборки команд выбрал команду;

-       Cmd - команда;

-       ComandStored- декодер забуферизировал команду, которая пришла на вход.

-       ComandDecoded- команда декодирована;

-       OCForOF- декодирован код операции;

-       AMForOF-декодирован тип адресации;

-       FOpForOF- декодирован адрес первого операнда;

-       SOpForOF- декодирован адрес второго операнда;

-       DForOF-декодирован адрес назначения;

-       DecodedComandSaved-блок выборки операндов подал сигнал декодеру о забранных данных;

-       OperandsFetched- завершена выборка операндов. Сигнал от блока выборки операндов к АЛУ;

-       OCForALU- код операции для АЛУ;

-       FOpForALU- первый операнд для АЛУ;

-       SOpForALU- второй операнд для АЛУ;

-       DForALU- адрес назначения для АЛУ;

-       OperandsSaved- сигналблоку выборки операндов от АЛУ о забранных данных;

-       Data- результат работы АЛУ;

-       MemoryAddress- адрес по которому надо писать в память;

-       MemoryDatap-данные на выходе из памяти;

-       CF-блок выборки команды получил доступ к памяти;

-       OF- блок выборки операндов получил доступ к памяти;

-       Savedaa-блок записи результата записал данные в память;

-       DR-запрос доступа к кэшу данных;

-       CR-запрос доступа к кэшу команд;

-       Z-Z флаг;

-       Prediction - предсказание;

-       Clear-сигнал очистки конвейера;

4. Анализ и оптимизация разработанной микроЭВМ

4.1 Конвейерное выполнение фаз последовательностей команд

Конвейер, на основе которого работает данная реализация микроЭВМ, имеет пять ступеней. На первой ступени конвейера выполняется выборка команд. Как только начинает работать блок выборки команд, выставляется бит занятости этого блока. Сначала команда ищется в кэше команд, для чего необходимо послать запрос доступа к кэшу и получить разрешение для работы с ним. Если в кэше команды не оказалось, то поиск будет осуществлен в памяти. Для этого также необходимо послать запрос доступа к памяти, а после получение проделать необходимые операции. Однако, учитывая то, что шина данных имеет размерность 8 бит, а прочитать надо 64 бита, чтение происходит в 8 этапов. Прочитали слово, буферизировали его, увеличили адрес в памяти, с которого читать. И так происходит, пока все 8 слов не будут прочитаны. Прочитанная команда записывается в кэш команд, чтобы в следующий раз читать не из памяти, а из кэш. Результат выборки команды подается на вход следующего блока - блока декодирования команды. Также подается сигнал этому блоку, что команда выбрана, и он может приступать к работе. Блок декодирования, получая данные, выставляет бит занятости этого блока и подает сигнал блоку выборки команд, что команда принята. Блок декодирования является второй ступенью конвейера. Команда расчленяется на искомые части: код операции, тип адресации, адрес первого операнда, адрес второго операнда (номер регистра), адрес сохранения результата. После завершения декодирования выставляется бит, что блок свободен. Также посылается сигнал следующему блоку - блоку выборки операндов - что работа завершена, и он может принимать результаты этой работы. Следующая ступень конвейера - блок выборки операндов. При получении данных, блок выборки операндов выставляет бит занятости блока. Также подается сигнал предыдущему блоку, что данные приняты. Как и в блоке выборки команд, первый операнд ищется в кэше, а если не находится, то ищется в памяти и записывается в кэш данных. Второй операнд всегда хранится в каком-либо регистре. После завершения выборки операндов, выставляется бит занятости блока, блок свободен. Также подается сигнал следующему блоку - АЛУ - что работа сделана. Следующая, четвертая, ступень конвейера - АЛУ. При получении данных, посылается сигнал предыдущему блоку о том, что данные забраны, и выставляется бит занятости блока. Тут выполняются вычисления, а после вычислений в зависимости оттого, какая операция закодирована, результат соответствующих вычислений записывается либо в регистр, либо подается на вход следующего блока, это при условии выполнения команды ST, либо вообще не сохраняется, например, при прыжке или PUSH. После завершения работы посылается сигнал следующему блоку и выставляется бит занятости, т.е. блок АЛУ свободен. Последняя ступень конвейера - сохранение результата в память. Этот блок сохраняет результат после команды сохранения в память. Однако для этого надо сначала послать запрос для работы с памятью, а потом получить разрешение для записи в память. Стоит заметить, что это единственный блок, который может писать в память, ведь блок выборки команд и блок выборки операндов могут лишь читать из памяти.

Заключение

В результате работы, была разработана микроЭВМ на основе пятиступенчатого конвейера, имеющего в своем составе 2 блока кэш: данных и команд. В каждом блок 2 банка по 16 строк, в каждой и которых 64 байта. Архитектура - принстонская, т.е. данные и команды хранятся в одном массиве памяти. Разрядность шины данных 8 бит, шины адреса 16 бит. В блоке регистров общего назначения содержатся 28 регистров. Стек состоит из 9 регистров, направление роста у которых вверх. Архитектура процессора рассчитана на работу с тремя арбитрами, по одному на блок выборки команд, блок выборки операндов и блок записи результата в память. Важной особенностью является наличие конвейера, 5 команд могут выполнять одновременно на различных стадиях. Благодаря предсказателю переходов, реализована возможность предсказывать исход работы команды условного перехода, таким образом, резко повышая производительно процессоров, например, при вычислении каких-либо данных по циклу. Минусом является то, что при ошибке предсказания необходимо полностью очищать конвейер и возвращаться к выполнению операции, которая должна была начаться вместо неверного разветвления алгоритма.

В таблице 4.1 еще раз приведен список реализованных в проекте инструкций.

Название операции

Описание операции.

ST

Сохранить в память

LD

Загрузить из памяти

PUSH

Затолкнуть в стек

POP

Вытолкнуть из стека

AND

Логическая операция «И»

NOTZ

Инверсия по флагу Z.

CMP

Сравнение двух операндов.

ROR

Циклический сдвиг вправо.

JC

Прыжок по флагу Z.


Похожие работы на - Разработка структуры и основных устройств микро-ЭВМ

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!