Учебная модель RISC-процессора

Автор работы: Пользователь скрыл имя, 14 Апреля 2013 в 11:33, дипломная работа

Краткое описание

Цель данной работы состоит в разработке моделей RISC-микропроцессора с MIPS-архитектурой, демонстрирующих возникновения и методы устранения конфликтов по ресурсам, по данным, по управлению.
В результате проведённой работы были разработаны схемы RISC-микропроцессоров с MIPS-архитектурой в системе Logisim , которые могут быть использованы в учебном процессе в подготовке бакалавров и магистров по направлению «Информатика и вычислительная техника».

Содержание работы

Введение. 5
1 Обоснование выбора среды моделирования Logisim. 7
2 Общие сведения RISC-микропроцессора с MIPS-архитектурой. 10
3 Структура процессора и его конвейерные стадии. 14
3.1 Основные блоки процессора. 16
3.1.1 Память команд и память данных. 18
3.1.2 Декодер инструкций. 18
3.1.3 Регистровый файл. 19
3.1.4 Арифметико-логическое устройство. 20
3.2 Стадии конвейера процессора. 22
3.2.1 Стадия получения инструкции. 22
3.2.2 Стадия декодирования инструкции и чтения регистров. 23
3.2.3 Стадия выполнения и вычисления адреса. 24
3.2.4 Стадия доступа к памяти. 26
3.2.5 Стадия запись в регистр. 28
4.Конфликты процессора. 30
4.1 Конфликт по данным. 30
4.1.1 Устранение конфликта по данным. 33
4.1.1.1 Устранение конфликта по данным с помощью заглушек (nop). 33
4.1.1.2 Устранение конфликта по данным с помощью введения обратной связи (шунт). 39
4.2 Конфликт по управлению. 46
4.2.1 Устранение конфликта по управлению. 48
4.2.1.1 Устранение конфликта по управлению с помощью заглушек (nop). 48
4.2.1.2 Устранение конфликта по управлению аппаратным путем. 53
5 Использование RISC-микропроцессора с MIPS-архитектурой в телекоммуникациях. 61
Заключение. 65
Список литературы. 66

Содержимое работы - 1 файл

Пояснит записка выпускной работы.doc

— 3.80 Мб (Скачать файл)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 Структура процессора и его конвейерные стадии.

Структурная  схема  внутреннего  устройства  процессора  lilpM32 показана на рисунке 2. Эта схема показывает лишь самые ключевые моменты внутреннего устройства процессора; многие  составные части процессора  показаны  условно,  а  некоторые  —  совсем  опущены. 

 

Рисунок 2. Структурная схема процессора lilpM32

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

Устройства,  помеченные  на  схеме  треугольником,  имеют  тактовый

(синхронизирующий)  вход; ОЗУ —  асинхронное. ОЗУ  изображено  на схеме два раза только для наглядности; на самом деле это одно и то же устройство.  За  такт  происходит  два  обращения  к ОЗУ —  считывается инструкция,  расположенная  по  адресу,  сохранённому  в  программном счётчике  (на  стадии  получения  инструкции),  и  считывается  или записывается  значение  (на  стадии  доступа  к  памяти).  В  lilpM32  это достигается  за  счёт  асинхронности  ОЗУ  —  обращение  к  памяти производится  и  при  переднем  и  при  заднем  фронте  (этот  принцип используется в памяти типа DDR — Double Data Rate).

3.1 Основные блоки процессора.

К основным блокам процессора относятся:

  • память команд и память данных
  • декодер инструкций
  • регистровый файл
  • арифметико-логическое устройство

На рисунке 3 представлена схема процессора  lilpM32 в программе Logisim.

Рисунок 3. Схема процессора lilpM32, реализованного в программе Logisim.

3.1.1 Память команд и память данных.

Оба ОЗУ являются асинхронными. В память команд загружаются  инструкции из hex-файла. Эти инструкции выполняются по очереди, проходя все стадии конвейера процессора. На рисунке 4.1 представлена память команд, и на рисунке 4.2 показана память данных.

  

Рисунок 4.1 Память команд.  Рисунок 4.2 Память данных.

3.1.2 Декодер инструкций.

Как известно, команды х86 отличает сложность и переменная длина, затрудняющие их динамическое выполнение. Декодер, представляющий собой наиболее сложную часть микропроцессора,  разбивает  длинные  CISC-инструкции  на  небольшие RISC-подобные  компоненты  –  так  называемые  ROP  (RISC-операции). Условное изображение показано на рисунке 5. Сама схема декодера представлена на рисунке 6.

Рисунок 5. УГО декодера инструкций.

Рисунок 6. Схема декодера инструкций.

3.1.3 Регистровый файл.

Для работы с  целыми числами и адресами lilpM32 имеет 32 32-битных регистра.  Они  объединены  в  регистровый  файл.  Номера  и  имена регистров принято начинать со знака доллара («$»); для ассемблера это обязательное  условие. В  таблице  1 представлены названия регистров и их назначение. Условное изображение регистрового файла показано на рисунке 7. Сама схема регистрового файла представлена на рисунке 8, на рисунке показаны не все 32 регистра, а лишь часть из них. В приложении 1 на Э2 показана полная схема регистрового файла.

 

Рисунок 7. УГО регистрового файла.

Рисунок 8. Схема регистрового файла.

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

Арифметико-логическое  устройство  выполняет арифметические операции (сложение, вычитание, умножение, деление), логические операции, операции  сдвигов. Условное изображение арифметико-логического  устройства  показано на рисунке 9. Сама схема арифметико-логического  устройства представлена на рисунке 10, а также в приложении 1 на Э2.

 

Рисунок 9. УГО арифметико-логического  устройства.

Рисунок 10. Схема арифметико-логического  устройства.

 

3.2 Стадии конвейера процессора.

Процессор  lilpM32,  как  и  все MIPS  (и  вообще  RISC)  процессоры, использует конвейер. Конвейер (англ. pipeline) — это способ организации вычислений  внутри  процессора,  при  котором  обработка  инструкции разделяется на последовательность независимых стадий с сохранением результатов в конце каждой стадии. В lilpM32 таких стадий пять:

  • получение инструкции (Instruction Fetch, IF)
  • декодирование  инструкции  и  чтение  регистров  (Instruction Decode & Register Fetch, ID)
  • выполнение и вычисление адреса (Execute & Address Calc., EX)
  • доступ к памяти (Memory Access, MEM)
  • запись в регистр (Write Back, WB)

3.2.1 Стадия получения инструкции.

Инструкция  считывается из памяти с использованием адреса в счётчике команд (PC), с последующим помещением её в регистр инструкций.

В ОЗУ инструкций загружаются машинные коды команд, которые пойдут на следующую стадию декодирования  инструкций  и чтения  регистров. Схема первой стадии конвейера изображена на рисунке 11.

Рисунок 11. Получение инструкции.

3.2.2 Стадия декодирования инструкции  и чтения  регистров.

Команды поступают  на декодер инструкций, где они  декодируются. Здесь же происходит чтение значений регистров. На рисунке 12 показана стадия декодирования  инструкции  и  чтения  регистров и условное изображение блока конвейера ID/EX. Инструкция, которая находится в регистре инструкций, предоставляет номера регистров для чтения двух регистров и расширяет знак 16-разрядного непосредственного значения ID/EX. На рисунке 13 представлена схема блока ID/EX.

Рисунок 12. Стадия декодирования  инструкции  и  чтения  регистров.

 

Рисунок 13. Схема блока ID/EX.

3.2.3 Стадия выполнения и вычисления адреса.

Значения первого  и второго операндов поступают  в  арифметико-логическое  устройство. На вход первого операнда поступает значение регистра, а на вход второго операнда могут поступать: значение регистра, либо значение беззнаковой, либо знаковой константы. Значение операции сформируется на выходе АЛУ (выход result) и с помощью датчика можно будет увидеть значение полученной операции.  На этой стадии конвейера происходит вычисление адреса. Если есть условие, то этой стадии будет вычисляться адрес; нужно ли будет выполнить следующую инструкцию, либо сделать переход по вычисленному адресу. На рисунке 14 показана стадия выполнения и вычисления адреса и условное изображение блока конвейера EX/MEM. На рисунке 15 представлена схема блока EX/MEM.

Рисунок 14. Стадия выполнения и вычисления адреса.

 

Рисунок 15. Схема блока EX/MEM.

3.2.4 Стадия доступа к памяти.

На этой стадии конвейера может осуществляться чтение данных из памяти, запись данных в память. Данные могут браться  из памяти, для того чтобы выводить эти данные на 4 буфера вывода процессора. На рисунке 16 показана стадия доступа к памяти и условное изображение блока конвейера MEM/WB. На рисунке 17 представлена схема блока MEM/WB.

Рисунок 16. Стадия доступа к памяти.

Рисунок 17. Схема блока MEM/WB.

3.2.5 Стадия запись в регистр.

На этой стадии конвейера происходит запись результата выполненной операции в необходимый регистр, который находится в регистровом файле. По сигналу writeRegNum определяется номер регистра, куда должно поступить значение операции. По сигналу writeRegData записывается значение операции в регистр. На рисунке 18 показана стадия записи в регистр.

Рисунок 18. Стадия записи в регистр.

 

4.Конфликты процессора.

Использование  конвейера  даёт  большой  прирост  производительности — за  один  такт  выполняется  одна  инструкция,  и суммарная  задержка  устройств  внутри  одной  стадии  меньше,  чем  без использования конвейера  (а  значит  тактовая частота — выше). Однако часто  возникают  ситуации,  когда  использование  конвейера  приводит  к возникновению  конфликтов  (англ.  hazard).  Чтобы понять  суть  этого явления,  рассмотрим  таблицу,  демонстрирующую состояние конвейера во времени (таблица 3).

Таблица 3. Обычное состояние конвейера

Номер

инструкции

Состояние конвейера

1

IF

ID

EX

MEM

WB

       

2

 

IF

ID

EX

MEM

WB

     

3

   

IF

ID

EX

MEM

WB

   

4

     

IF

ID

EX

MEM

WB

 

5

       

IF

ID

EX

MEM

WB

Номер

такта

1

2

3

4

5

6

7

8

9


Во  время  пятого  такта  (он  выделен)  весь  конвейер  заполнен инструкциями — первая инструкция проходит стадию WB (последнюю), а пятая — стадию IF (первую). Если продолжить добавлять инструкции (шестую,  седьмую,  и  т.д.),  то  и  в  последующие  такты  конвейер  будет полностью заполнен.

4.1 Конфликт по данным.

Конфликт может  случиться, если потребуется выполнить вот такую последовательность  инструкций  (все символы строки,  начиная с  «#», являются комментариями), листинг программы приведён ниже на рисунке 19.

 addiu $t3, $s1, 4   # $t3 = $s1 + 4

 addiu $t4, $t3, 2   # $t4= $t3 + 2

Рисунок 19. Листинг программы с конфликтом по данным.

Записывая  такую последовательность, подразумевается,  что на момент выполнения второй инструкции первая уже будет выполнена, то есть  регистр $t3  будет содержать результат сложения.  Что же произойдёт  на  самом деле?  Запись  результата  сложения  в регистр происходит  на  стадии  WB,  а чтение  значения  регистра  (в нашем случае — $t3)  — на  стадии  ID.  Если  внимательно посмотреть  на таблицу состояний конвейера (таблица 4),  то  видно,  что первая инструкция пройдёт стадию WB позже, чем вторая — стадию ID.

Таблица 4. Конфликт по данным при чтении из регистра

Инструкция

Состояние конвейера

addiu

IF

ID

EX

MEM

WB

 

addiu

 

IF

ID

EX

MEM

WB

Номер такта

1

2

3

4

5

6


В данном примере  получается, что регистр $t3 запишется значение операции, равным 4 (на рисунке 20 кругом обведены поступления в регистры кодов операций и результат первой инструкции). Но сразу же после выполнения первой операции последует вторая операция, но запись результата первой операции произойдёт значительно позже, и результат второй инструкции будет не верен. Он получится равным 2 (0+2), а не 6 как предполагается, на рисунке 21 выделен кругом полученный неверный результат.

Рисунок 20. Выполнение первой инструкции.

Рисунок 21. Выполнение второй инструкции.

4.1.1 Устранение конфликта по данным.

Чтобы результаты инструкций выдавали правильные значения необходимо исправлять конфликты по данным. Ниже будет рассмотрено два  варианта устранения конфликта по данным:

  • с помощью введения заглушек (введение nop инструкций) программным путём.
  • с помощью введения обратной связи (шунт) аппаратным путём.

Информация о работе Учебная модель RISC-процессора