Автор работы: Пользователь скрыл имя, 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
00000000 # nop
00000000 # nop
00000000 # nop
254b0005 # addiu (09, 00)
Рисунок 41. Листинг hex-файла.
Здесь видно, что компилятор обнаружил конфликт по управлению между двумя инструкциями и сам поставил заглушки.
Таблица 7. Обход конфликта при переходе на новый адрес
Инструкция |
Состояние конвейера | ||||||||
j |
IF |
ID |
EX |
MEM |
WB |
||||
nop |
IF |
ID |
EX |
MEM |
WB |
||||
nop |
IF |
ID |
EX |
MEM |
WB |
||||
nop |
IF |
ID |
EX |
MEM |
WB |
||||
addiu |
IF |
ID |
EX |
MEM |
WB | ||||
Номер такта |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Если загрузить этот код в схему процессора lilpM32, то можно увидеть, что после выполнения первой инструкции j на стадии MEM будет вычислен адрес перехода и инструкция addiu не исполнится.
На рисунке 42 показано, что рассчитался адрес перехода, и команда addiu не загрузилась в конвейер.
Рисунок 42. Иллюстрирование устранения конфликта по управлению с помощью nop инструкций.
Рассмотрим другой пример. Его листинг приведён ниже на рисунке 43.
addiu $t1, $0, 2 #$t1=2
bne $s1, $t1, label #если $s1!=$t1 то переход
addiu $t3, $t1, 3 #$t3=$t1+3
label:
addiu $t4, $t1, 7 #$t4=$t1+7
Рисунок 43. Листинг программы.
В регистр $t1 записывается значение, равное 2. Затем проверяется условие, если значение регистра $s1 не равно значению регистра $t1. Регистр $s1 =0. В таком случае инструкция addiu $t3, $t1, 3 не должна выполниться, так как будет совершён переход на метку label. Затем будет выполнена инструкция addiu $t4, $t1, 7 и регистр $t4 запишется число 9. Листинг hex-файла приведён на рисунке 44.
# lilpM32 program; format:
# xxxxxxxx # instr (opcode, funct)
24090002 # addiu (09, 00)
00000000 # nop
00000000 # nop
00000000 # nop
16290004 # bne (05, 00)
00000000 # nop
00000000 # nop
00000000 # nop
252b0003 # addiu (09, 00)
252c0007 # addiu (09, 00)
Рисунок 44. Листинг hex-файла.
На рисунке 45 обведены кругом стадия выполнения инструкции и результат на выходе АЛУ. Результат, равный единице, говорит о том, что два регистра $t1 и $s1 не равны.
Рисунок 45. Выполнение инструкции условия.
На рисунке 46 показано, какие значения хранятся в регистрах в регистровом файле. На рисунке 47 показано, какие значения записаны в память данных. В память данных записались значения: 2 (от выполнения инструкции addiu $t1, $0, 2), 1 (от выполнения инструкции bne $s1, $t1, label), 9 (от выполнения инструкции addiu $t4, $t1, 7).
Рисунок 46. Записанные значения в регистровом файле.
Рисунок 47. Дамп ячеек памяти данных.
Другой способ избежать конфликта — вычислить адрес перехода уже на стадии получения инструкции IF, а не на стадии MEM.
Схема вычисления адреса переносится на стадию IF. Схема показана на рисунке 48. Если нет команды управления, или если условие не выполнилось, то к значению программного счётчика (РС) прибавляется единица. Если выполнился переход на метку, то к значению РС будет либо прибавляться константа (signImm), либо вычислится адрес перехода (инструкция j).
Рисунок 48. Схема вычисления адреса.
Кроме вычисления адреса перехода нужно чтобы ещё и результат инструкций получался верным. На рисунке 49 показана схема выполнения инструкций при конфликте по управлению.
Рисунок 49. Схема выполнения инструкций при конфликте по управлению.
Первый мультиплексор, у которого сигнал выборки назван как en_mux, работает следующим образом. Он либо пропускает результат инструкции от блока EX/MEM, либо подаёт нуль. Если код операции (opcode) и код функции (funct) равны нулю, то есть получается инструкция nop, то мультиплексор пропускает нуль, иначе он пропускает результат предыдущей инструкции. Этот мультиплексор поставлен для того, чтобы не происходило зацикливание результата последней инструкции.
Второй мультиплексор пропускает либо значение мультиплексора, описанного выше, либо значение регистра из регистрового файла. Управление мультиплексора идёт с помощью компаратора. Если в регистровом файле нет никаких данных, берётся значение предыдущего мультиплексора. Иначе берутся данные из регистра в регистровом файле.
Третий мультиплексор пропускает либо значение первого операнда АЛУ, либо значение второго мультиплексора. Управление мультиплексора осуществляется за счёт компаратора. Сравниваются значения текущего и следующего значения программного счётчика, и если значения равны, то пропускается результат второго мультиплексора, иначе пропускается значение операнда s.
Первый мультиплексор второго операнда АЛУ может пропускать: либо значение регистра, либо значение беззнаковой, либо значение знаковой константы.
Результат работы второго мультиплексора операнда t похож на работу третьего мультиплексора операнда s. По значению сравнения текущего и следующего значения программного счётчика мультиплексором пропускаются либо нуль, либо значение первого мультиплексора.
Арифметико-логическое устройство проверяет выполнилось ли условие или нет. Если значение результата на выходе АЛУ равно единице, то будет совершён переход, если оно будет равно нулю, то условие не выполнилось и перехода не будет.
Фактически последние мультиплексоры операндов АЛУ реализуют инструкцию nop (вставка пузыря), когда не нужно выполнять инструкцию, следующую за инструкцией управления, а нужно перейти на новый адрес и выполнить новую инструкцию.
На рисунке 50 изображён весь процессор с доработанной частью для обнаружения конфликта по управлению.
Рисунок 50. Процессор со схемой обнаружения конфликтов по управлению.
Рассмотрим первый пример, но теперь из кода hex-файла уберём пустые инструкции (nop). Полученный листинг кода показывается ниже на рисунке 51.
# lilpM32 program; format:
# xxxxxxxx # instr (opcode, funct)
08000005 # j (02, 00)
254b0005 # addiu (09, 00)
Рисунок 51. Листинг hex-файла.
В данном примере получается, что после выполнения первой инструкции j на стадии IF будет вычислен адрес перехода и инструкция addiu не исполнится. На рисунке 52 обведены кругом инструкции j, addiu и показан выход АЛУ (result). На рисунке выход result равен нулю, это говорит о том, что инструкция addiu заменилась на инструкцию nop. Инструкция addiu не должна была выполниться.
Рисунок 52. Иллюстрирование устранения конфликта по управлению аппаратным путём.
Рассмотрим теперь второй пример, который показывался в разрешении конфликта по управлению с помощью ввода пустых инструкций (nop). Полученный листинг кода показывается ниже на рисунке 53.
# lilpM32 program; format:
# xxxxxxxx # instr (opcode, funct)
24090002 # addiu (09, 00)
16290004 # bne (05, 00)
252b0003 # addiu (09, 00)
252c0007 # addiu (09, 00)
Рисунок 53. Листинг hex-файла.
На рисунке 54 обведены кругом инструкции bne, addiu $t3, $t1, 3 и показан выход АЛУ (result). На рисунке выход result равен нулю, это говорит о том, что инструкция addiu заменилась на инструкцию nop, так как выполнилось условие перехода. Инструкция addiu не должна была выполниться. Переход по условию состоится на метку label и выполнится инструкция addiu $t4, $t1, 7. В регистре $t4 должно лежать значение, равное 9 (2+7). На рисунке 55 показано, какие значения хранятся в регистрах в регистровом файле. На рисунке 56 показано, какие значения записаны в память данных. В память данных записались значения: 2 (от выполнения инструкции addiu $t1, $0, 2), 1 (от выполнения инструкции bne $s1, $t1, label), 9 (от выполнения инструкции addiu $t4, $t1, 7).
Рисунок 54. Иллюстрирование устранения конфликта по управлению аппаратным путём.
Рисунок 55. Записанные значения в регистровом файле.
Все записанные значения получились верными, и они нечем не отличаются от значений, показанных на рисунке 46.
Рисунок 56. Дамп ячеек памяти данных.
Маршрутизатор или роутер — специализированный сетевой компьютер, имеющий минимум два сетевых интерфейса, и пересылающий пакеты данных между различными сегментами сети, принимающий решения о пересылке на основании информации о топологии сети и определённых правил, заданных администратором.
Обычно маршрутизатор использует адрес получателя, указанный в пакетах данных, и определяет по таблице маршрутизации путь, по которому следует передать данные. Если в таблице маршрутизации для адреса нет описанного маршрута, пакет отбрасывается.
Таблица маршрутизации
содержит информацию, на основе которой
маршрутизатор принимает
Таблица маршрутизации может составляться двумя способами:
Маршрутизаторы помогают уменьшить загрузку сети, благодаря её разделению на домены коллизий или широковещательные домены, а также благодаря фильтрации пакетов. В основном их применяют для объединения сетей разных типов, зачастую несовместимых по архитектуре и протоколам, например для объединения локальных сетей Ethernet и WAN-соединений, использующих протоколы xDSL, PPP, ATM, Frame relay и т. д. Нередко маршрутизатор используется для обеспечения доступа из локальной сети в глобальную сеть Интернет, осуществляя функции трансляции адресов и межсетевого экрана.
Рисунок 57. Маршрутизатор Teltonika RUT100 HSDPA.
Teltonika RUT - 100 - 3G/Wi-Fi маршрутизатор, основанный на процессоре 400 MIPS, обеспечивающим высокую пропускную способность данных и удобную работу для всех пользователей беспроводной сети.
Маршрутизатор Teltonika RUT - 100 предназначен для создания точки доступа, в которой интерфейсом WAN является канал 3G/GSM (HSDPA/UMTS/ EDGE/GPRS), а интерфейсом LAN является WiFi (802. 1 1). Инструментом управления подсистемой является простой текстовый файл с конфигурацией и агент RCMS (Remote Configuration Management System), который в паре с RCMS сервером образует структуру для быстрого ввода в действие беспроводной сети и администрирования. Teltonika также обеспечивает интегрирование с RCMS сервером управления конфигурациями для автоматизации подготовки к работе и повышения управляемости сети.
Область применения:
В ходе теоретических и практических исследований, проведенных в