
- •Российская академия народного хозяйства
- •Форматы данных, команд и способы адресации
- •Ост пу?
- •Алгоритмы выполнения отдельных операций оп команд y1 y2 x1 y4 ram d fl a rd wr rgрдВыборка команды
- •Обработка адресной части команды
- •Арифметические и логические операции
- •Заключение
- •Практика по архитектуре
- •Заключение
6
0
S
Байт
7
14
0
S
Слово
15
Числа с фиксированной точкой представляют собой целые со знаком или без него. Целые числа со знаком представляются в дополнительных кодах.
Адреса представляются в виде целых чисел без знака
Формат команд
В битах 26 – 31 (КОП) хранится код операции.
Двухразрядное поле ПА1, ПА2, ПА3 указывает способ адресации для соответствующих полей А:
ПА1, ПА2, ПА3 = 0 – непосредственная адресация;
ПА1, ПА2, ПА3 = 1 – прямая адресация;
ПА1, ПА2, ПА3 = 2 – относительная адресация.
Адресные поля А1, А2 и А3 используются для хранения 1-го, 2-го операндов и результата.
Поля ИР1, ИР2, ИР3 служат для указания номера индексного регистра, используемого при относительной адресации (это регистры R60 –R63).
Способы адресации
В соответствии с техническим заданием, требуется осуществить 3 способа адресации.
Непосредственная адресация
Значение, записываемое в регистр, задаётся непосредственно в команде. Например movax,50.
Относительная адресация
Исполнительный адрес формируется следующим образом:
AИСП=A+X, где
A– базовый адрес, указываемый в адресном поле команды;
X– относительный адрес (индекс), указывающий положение данного, относителен
МП
ВК
МП
ОА
АО
УПi
КВВ
ЛО
БП
БПВ
Ост
МП
АО
МП
УПi
МП
КВВ
МП
ЛО
МП
БП
МП
БПВ
МП
Ост
МП
АвОст
Нет
ПР?
Да
Нет
МП
Пр
Да
Рис. 4
Ост пу?
Обобщённая схема алгоритма функционирования процессора показана
В блоке МП ВК происходит выбор очередной команды и подготовка следующей. В соответствии с последовательностью управляющих сигналов {У}, вырабатываемых УУ центрального устройства управления, содержимое IPпередается на РА ОП и, после выполнения операции “Чтение”, содержимое РД, на котором находился очередная команда, передается на РК. Одновременно содержимоеIPувеличивается на единицу, чем обеспечивается подготовка следующей команды.
В блоке МП ОА происходит обработка адресной части команды. По этой команде в УУ центрального устройства управления производится анализ полей признака адресации (ПА1, ПА2, ПА3) РК и, в случае относительной адресации, формируются исполнительные адреса в соответствии с разделом 4.3.
После этого блока происходит проверка признака выполнения:
арифметической операции (АО),
логической операции (ЛО),
операции безусловного перехода (БП),
операции условного перехода (УП),
безусловного перехода с возвратом (БПВ) (вызов подпрограммы),
команд ввода – вывода (КВВ),
команды программного останова (Ост).
В последующих блоках происходит выполнение соответствующей микропрограммы.
В блок-схеме присутствует блок АвОст. Это аварийный останов. Он производится всегда, когда приходит неверный код операции.
В блоке Ост ПУ производится проверка поступления сигнала останова с пульта управления.
В блоке ПР производится проверка прихода сигнала прерывания. Если такой сигнал пришёл, то в блоке МП Пр происходит обработка прерывания.
Алгоритмы выполнения отдельных операций оп команд y1 y2 x1 y4 ram d fl a rd wr rgрдВыборка команды
Y3
Рис. 5
На
рис. 8 приведён фрагмент структуры
процессора, относящийся к выборке
команды, а на рис. 9 – соответствующая
ей микропрограмма.
У разрабатываемого процессора разрядность команды и разрядность ячейки памяти в которой она хранится совпадают. Исходными данными является адрес размещения команды в памяти ЭВМ, который хранится в счётчике адреса команд IP. СодержимоеIPпередаётся в регистр адреса РА оперативной памяти, осуществляется чтение из оперативной памяти команд хранящейся в ней информации в регистр даных РД. После чтения из ОП, требуемая команда будет находиться в регистре РД. Далее осуществляется передача содержимого РД на РК.
Обработка адресной части команды
Рис. 6
РК
A
RG
ИР
ПА
Дш
0
1
2
3
DC
1
2
R60
X0
RG
R63
X3
RG
SE0
SE7
K
MUX
D0
.
.
D7
D8
E
E
СмИ
SM
D
РА
RG
D
E Y8 Y7 Y5 Y6 X2 Aисп

Если не используется прямая или непосредственная адресация, то необходимо вычислить исполнительный адрес при помощи относительной адресации. Для реализации относительной адресации в процессоре предусмотрено 4 индексных регистра R60 –R63.
На сумматоре производится сложение адресной части РК с индексом, находящимя в одном из индексных регистров R60 –R63. Для определения номера индексного регистра, в команде отведены поля ИР1, ИР2, ИР3. После этого исполнительный адрес заносится в РА. Структурная схема и микропрограмма приведены на рис. 10 и рис. 11.
Арифметические и логические операции
Рис. 7
РК
A3
RG
A1
INS
K
MUX
D1
SE3
SE2
РА
RG
D
E Y9
Память
данных
RAM
D
END
A
RD
WR RG
РД Y3 Y16
АЛУ
ALU RG RG3
Р3
ST RG4
Р4
INS
RG2
Р2
D
E
RG1
Р1
D
E
FL Y13 Y14 Y15
X3
A2
SE1
D2
D1 Y10 Y12 Y11
Y9,Y10
X1
Y13 Y9,Y10:
РА=А1 X1:
ОП завершила работу? Y13:
Р1=РД
Y3
Y9,Y11
Y3
X1
Y14
1
1
Y15
X3
Y9,Y12
X1
Y16 Y3:
Чтение из ОП Y9,Y11:
РА=А2 Y14:
Р2=РД Y15:
Запуск АЛУ X3:
АЛУ закончило
работу? Y9,Y12:
РА=А3 Y16:
Запись в ОП
Рис. 8
X1
В регистре команд уже находится очередная считанная команда в результате выборки команды. На первом этапе из памяти данных читается первый операнд, адрес которого находится в поле А1 регистра команд (то есть в текущей выполняемой команде). Операнд из РД передаётся в регистр Р1 АЛУ. Аналогично из памяти данных считывается второй операнд и заносится в Р2 АЛУ. Далее запускается устройство управления АЛУ. В соответствии с кодом операции, поступающим на АЛУ из РК, АЛУ выполняет требуемую микропрограмму. В процессе выполнения микропрограммы на Р4 АЛУ формируется результат операции, а на Р3 фиксируются признаки результата операции (равенство нулю, переполнение, перенос…). По завершении выполнения операции, АЛУ вырабатывает сигнал X1. После этого результат выполнения операции из Р4 помещается в ОП по адресу, указанному в поле А3 регистра команд.
Y17
Y17 Y17:
IP=Адрес
Рис. 9
РК
А
RG
INS
В
счётчик адресов команд просто записывается
адресная часть команды
Ввод
– вывод
A1
РА
RG
D
E Y19
A2
КОП
РД
RG
D
E
В
соответствии с техническим заданием
необходимо реализовать ввод-вывод по
аналогии с ячейками памяти. Для этого
в адресном пространстве выделен диапазон
адресов для обращения к устройствам
ввода вывода. В одной из адресных частей
указывается адрес устройства ввода
вывода, а в другой – адрес слова, которое
необходимо передать в устройство или
считать из него.
Обработка запроса на прерывание.
В данном курсовом проекте требуется реализовать одноуровневую систему прерываний. Это значит, что прерывания от различных устройств имеют одинаковый приоритет и выполняются последовательно.
Запросы на прерывания могут быть внутренними (например деление на 0, переполнение …) или внешними (различные запросы от внешних устройств). На рис. 17 внутренним прерываниям соответствуют сигналы Y20 иY21, а внешним – ЗП3 и ЗП4. Внутренние запросы запоминаются на триггерах Т1 и Т2. Все запросы фиксируются на регистре РЗПР сигналомY22. На выходе блока обработки запросов образуется признак наличия запросаX5 и номер запроса. Дешифратор испoльзуется для сброса триггеров внутренних запроcсов
Заключение
В курсовой работе был разработан RISCпроцессор для встроенных применений, который может использоваться, например, в составе систем управления в реальном масштабе времени.
Практика по архитектуре
Debug — Программа-отладчик, которую используют для проверки и отладки выполняемых файлов. Использовалась при операционной системе MS-DOS. Под более поздние версии операционных систем работает через эмулятор MS-DOS и имеет ограниченные возможности.
Ниже приведен пример создания с помощью отладчика debug простой программы, выводящей строку текста
Сначала, используя команду a, вводятся команды программы на языке Ассемблера.
Сама программа представлена ниже.
jmp 118
db 0d,0a, "My first program!"
db 0d,0a, "$"
mov ah,9
mov dx,102
int 21
mov ah,0
int 21
Дадим некоторые пояснения к программе. В первой строке с помощью команды jmp осуществляется безусловный переход по адресу 118, что позволяет пропустить текстовую строку, записанную во второй и третьей строках программы. В четвертой строке с помощью команды mov в регистр ah заносится число 9, что подготавливает программу к вызову функции вывода строки на экран. В пятой строке в регистр dx заносится число 102, указывающее начало выводимой строки. В шестой строке прерывание int 21 обеспечивает вывод требуемой строки. И, наконец, последние две строки завершают работу программы.
Чтобы проверить работу программы используется команда отладчика g с параметром =100, указывающим откуда должна выполняться программа. На экране видно, что после ввода этой команды и выполнения программы выводится заданная строка и сообщение о нормальном завершении программы.
Следующие команды отладчика иллюстрируют как можно полученную программу записать в отдельный исполнимый файл с расширением com и произвольным именем first.
Для этого с помощью команды n определяем имя создаваемого файла. После этого командой rcx меняем содержимое регистра cx, записывая в него размер созданной программы и, наконец, командой w записываем программу в файл. Команда q заканчивает сеанс работы с отладчиком.
Debug.exe позволяет вводить программу непосредственно в память машины, а затем следить и управлять ее выполнением. Мы будем вводить программу в машинных кодах, используя команду E. При этом будьте бдительны - ввод ошибочных данных по ошибочному адресу чреват не предсказумыми последствиями! Хотя к серьезным проблемам в системе это вряд ли приведет, но потерять все данные, введенные в debug.exe, можно потерять запросто. Программа, которую мы сейчас будем вводить, использует данные, заложенные непосредственно в теле инструкций. Далее показан листинг программы на Ассемблере, в комментариях указаны аналоги команд языка в машинных кодах, а также объяснение каждый команды. Замечу, что в числах нет символа h, поскольку, как было сказано выше,debug.exe понимает только числа в шестнадцатеричной системе.
MOV AX, 0123 ; код B82301: заносим значение 0123h в AX
ADD AX, 0025 ; код 052500: прибавляем 0225h к значению AX
MOV BX, AX ; код 8BD8: заносим значение AX в BX
ADD BX, AX ; код 03D8: прибавляем значение AX к BX
MOV CX, BX ; код 8BCB: заносим значение BX в CX
SUB CX, AX ; код 2BC8: отнимаем значение AX из CX
SUB AX, AX ; код 2BC0: очищаем AX
JMP 100 ; код EBEE: переходим к началу программы
Как можно заметить, каждая машинная инструкция имеет длину от 1 до 3 байтов. Первый байт указывает операцию, последующие - ее операнды. Исполнение программы начинается соответственно с первой инструкции и последовательно проходит через все инструкции одну за другой. Теперь можно ввести программу в память. Разделим машинный код на три части по шесть байт и введем каждую, используя команду E и начиная с адреса CS:100.
-E CS:100 B8 23 01 05 25 00
-E CS:106 8B D8 03 D8 8B CB
-E CS:10C 2B C8 2B C0 EB EE
-_
Теперь, когда программа введена в память, попробуем управлять ее выполнением. Для начала проверим текущее состояние регистров и флагов, для этого вводим команду R. Отладчик выведет содержимое регистров в шестнадцатеричной форме; на разных машинах содержимое регистров может различаться.
Заключение
Данная программа является консольным приложением и предназначена для создания или изменения кода файлов. С помощью неё можно создавать простые приложение под MS-DOS и отслеживать их работу. Данный отладчик находится на самом низком уровне компиляторов assembler. Но обладает неплохими возможностями такими как просмотр, изменение памяти и получение состояния регистров.