- •I. Методические указания к курсовому проекту по дисциплине “Программно-аппаратные средства вт”
- •1. Цель и задачи курсового проекта.
- •Задание на курсовой проект
- •2.1. Техническое задание на разработку специализированного процессора ввода/вывода
- •2.2. Пояснение технического задания
- •Содержание и объём курсового проекта
- •Порядок выполнения курсового проекта.
- •II. Методические указания к выполнению этапов курсового проекта
- •2.1. Разработка алгоритма решения функциональной задачи
- •2.2. Выбор системы команд
- •2.2.1 Определение минимального набора операций в алу
- •2.2.2. Выбор способа адресации команд
- •3. Разработка структуры спвв
- •4. Оценка эффективности спвв
- •Заключение
- •Алу. Процессор.
- •Аккумуляторная и регистр – регистровая архитектура.
2.2.2. Выбор способа адресации команд
Адресность команд задана техническим заданием, поэтому количество операндов определено и равно 2. Для примера рассмотрим, переход по условию равенства 0 одного операнда на адрес другой команды. Данная команда содержит 2 операнда - операнд, проверяемый на равенство 0 и адреса перехода.
Для задания адреса операнда можно использовать следующие способы:
непосредственная адресация, когда в адресном поле непосредственно содержится сам операнд для нашего алгоритма неприемлем, ввиду того, что все команды предполагают работу с переменными;
прямая адресация, когда указывается адрес ячейки памяти хранения операнда. Если операнд хранится в ОЗУ, то для доступа к нему необходимо 8-бит для его произвольного размещения в ОЗУ. В принципе при имеющейся постановке задачи возможно выделение ограниченного объема памяти для хранения операндов, что позволит уменьшить кол-во бит для адресного поля команды.
косвенная адресация, когда указывается адрес ячейки, содержащих полноразрядный адрес операнда. Что возможно реализовать, за счет выделения начальных адресов памяти под хранение адресов операндов, находящихся по произвольным адресам.
регистровая адресация - это прямая с указанием регистра, в котором хранится операнд. Эта адресация является наиболее подходящей, так как для реализации поставленной задачи достаточно 5 переменных. И для адресации одного из 4 регистров потребуется 2 бита.
Использовать адресацию со смещением для такой простой задачи с небольшим адресным пространством смысла не имеет.
Для задания адреса перехода можно использовать можно использовать прямую адресации с заданием адреса команды перехода в адресном поле команды (8 бит для свободного размещения программы в ОЗУ), косвенную регистровую, в адресном поле команды указывать регистр, в котором хранится программа (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 |
Инкремент |
|
DEC |
1 |
1 |
1 |
0 |
1 |
0 |
R2 |
Декремент |
|
ZER |
1 |
1 |
1 |
0 |
1 |
1 |
R2 |
Обнуление |
|
MOV |
1 |
1 |
1 |
1 |
R1 |
R2 |
Пересылка |
||
пустые |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
|
|
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
|
|
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
|
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
|
|
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
|
|
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
|
|
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
1 |
0 |
0 |
0 |
* |
* |
* |
* |
|
*) Данная система команд использует одну команду для записи и чтения из памяти. Поэтому для того чтобы определить запись или чтение необходимо дополнительное условие – значение регистра, выделенного под переменную I (счетчик итераций) = 0 – выполняется операция чтения из памяти, >0 – выполняется операция запись в память.
