- •I. Курсовой проект по дисциплине “Программно-аппаратные средства вт”
- •1. Цель и задачи курсового проекта.
- •Задание на курсовой проект
- •2. Техническое задание на разработку специализированного процессора ввода/вывода
- •2.2. Выбор системы команд
- •2.2.1 Определение минимального набора операций в алу
- •2.2.2. Выбор способа адресации команд
- •3. Схема процессора
- •4. Оценка эффективности спвв
- •Национальный исследовательский университет информационных технологий, механики и оптики. Санкт-петербургский государственный университет информационных технологий, механики и оптики
- •Лабораторная работа № 3
2.2. Выбор системы команд
2.2.1 Определение минимального набора операций в алу
Из приведенной блок-схемы видно, что минимальный набор операций в АЛУ должен быть следующим: арифметические операции - сложение, вычитание, умножение, деление, операции специальной арифметики - изменение знака числа, выделение абсолютной величины числа.
Далее составим полный список операций, с учетом дополнительных, связанных с ограничениями на кол-во операндов и место нахождения результата.
|
№ |
Операция |
Операнд 1 |
Операнд 2 |
Результат |
Примечание |
|
1 |
Загрузка из памяти значений X1 |
x |
Адрес в ОЗУ |
x |
|
|
2 |
Деление на Х2 |
x |
Адрес в ОЗУ |
x |
|
|
3 |
Загрузка I |
I |
1 |
I |
|
|
4 |
Пересылка |
t |
x |
t |
|
|
5 |
Пересылка |
c |
x |
c |
|
|
6 |
Изменение знака |
c |
- |
c |
|
|
7 |
Умножение |
c |
x |
c |
|
|
8 |
Умножение |
c |
x |
c |
|
|
9 |
Сложение |
I |
1 |
I |
|
|
10 |
Деление |
c |
I |
c |
|
|
11 |
Cложение |
I |
1 |
I |
|
|
12 |
Деление |
c |
I |
c |
|
|
13 |
Переход по условию равенства 0 |
c=0 |
Адрес команды |
переход |
|
|
14 |
Изменение знака |
c |
- |
c |
|
|
15 |
Сложение |
t |
c |
t |
|
|
16 |
Запись в память |
t |
Запись в ОЗУ |
|
|
Цветом выделены неповторяющиеся операции, в данном частном случае их получилось 8. В случае одноадресной команды добавляются предварительные пересылки операнда 1 в аккумулятор и при необходимости копирование результата (пересылка из аккумулятора) в другой регистр, но общее количество неповторяющихся операций останется прежним. Таким образом, под код операции необходимо выделить log28=3 бита. И оставшиеся 5 бит можно использовать для адресации к 4 регистрам общего назначения (по 2 бита на определение регистра для каждого операнда), которое могут быть введены в СПВВ. Тогда переменные (t, I, c, Х) можно хранить в регистрах.
2.2.2. Выбор способа адресации команд
Для задания адреса операнда можно использовать следующие способы:
-
непосредственная адресация, когда в адресном поле непосредственно содержится сам операнд;
-
прямая адресация, когда указывается адрес ячейки памяти хранения операнда. Если операнд хранится в ОЗУ, то для доступа к нему необходимо 8-бит для его произвольного размещения в ОЗУ.
-
косвенная адресация, когда указывается адрес ячейки, содержащих полноразрядный адрес операнда. Что возможно реализовать, за счет выделения начальных адресов памяти под хранение адресов операндов, находящихся по произвольным адресам.
-
регистровая адресация - это прямая с указанием регистра, в котором хранится операнд. (Эта адресация является наиболее подходящей, так как для реализации поставленной задачи достаточно переменных. И для адресации одного из 4 регистров потребуется 2 бита).
Использовать адресацию со смещением для такой простой задачи с небольшим адресным пространством смысла не имеет.
Для задания адреса перехода используется относительнуя адресация относительно счетчика команд, когда в адресном поле команды указывается смещение относительно текущего адреса команды (для программы имеющей 16 команд, см. табл. 1, 4 бита на смещение и 1 бит под направление переход: назад или вперед).
Минимальная разрядность команды получиться при регистровой адресации для операнда и косвенной регистровой для команды перехода (4бита), но в таком случае необходимы дополнительные аппаратные ресурсы (выделение дополнительного регистра для постоянного хранения адреса перехода). Поэтому лучше отказаться от данного варианта.
Таким образом, возможна следующая система команд.
|
Команда |
Код команды |
Примечание |
|||||||
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
|
МЕМ |
0 |
* |
* |
* |
* |
* |
* |
* |
Взять адрес из памяти |
|
ADD |
1 |
0 |
0 |
1 |
R1 |
R2 |
Сложение |
||
|
MUL |
1 |
0 |
1 |
0 |
R1 |
R2 |
Целочисленное умножение |
||
|
DIV |
1 |
0 |
1 |
1 |
R1 |
R2 |
Без знаковое деление |
||
|
IFGO |
1 |
1 |
0 |
0 |
смещение |
Переход по истине |
|||
|
IFTO |
1 |
1 |
0 |
1 |
смещение |
Переход по лжи |
|||
|
NEG |
1 |
1 |
1 |
0 |
0 |
0 |
R2 |
Изменение знака |
|
|
INC |
1 |
1 |
1 |
0 |
0 |
1 |
R2 |
Инкремент |
|
|
MOV |
1 |
1 |
1 |
1 |
R1 |
R2 |
Пересылка |
||
|
пустые |
1 |
1 |
1 |
0 |
1 |
0 |
* |
* |
|
|
|
1 |
1 |
1 |
0 |
1 |
1 |
* |
* |
|
|
|
1 |
0 |
0 |
0 |
* |
* |
* |
* |
|
Данная система команд использует одну команду для записи и чтения из памяти. Поэтому для того чтобы определить запись или чтение необходимо дополнительное условие – значение регистра, выделенного под переменную I (счетчик итераций) = 0 – выполняется операция чтения из памяти, >0 – выполняется операция запись в память.
