Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовой проект_1 / Раздел 3

.doc
Скачиваний:
17
Добавлен:
26.05.2014
Размер:
46.08 Кб
Скачать

3. Алгоритм работы процессора

3.1. Выбор и обоснование

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

Для описания алгоритма широко используется граф-схема. Граф-схема алгоритма (ГСА) это ориентированный связный граф, содержащий одну начальную и одну конечную вершину, и произвольное количество условных, ждущих и операционных вершин. Структура ГСА должна удовлетворять условиям, обеспечивающим непременную возможность перехода от начальной вершины к конечной при любых вариантах значений условных вершин.

Для реализации заданного критерия проектирования – быстродействия процессора – в алгоритме производится совмещение в одной операторной вершине всех независимых микроопераций, а также для выполнения арифметических операций используются дополнительные коды.

3.2. Техническое описание

Цикл исполнения команды процессора условно разбит на следующие этапы:

3.2.1. Выборка команды. По содержимому программного счетчика адреса команд (СЧАК) происходит обращение к оперативному запоминающему устройству (ОЗУ) в режиме чтения, в результате которого на регистре слова ОЗУ (РСозу) появляется выбранная команда. На регистр команд (РК) загружается слово в 2 байта, т.к. ширина выборки из ОЗУ 2 байта, затем анализируется формат команды по старшему разряду слова. Если формат команды равен нулю, то СЧАК увеличивается на 1, если формат команды равен единице, то СЧАК увеличивается на 2.

3.2.2. Формирование продвинутого адреса команд. На этом этапе путем инкремента СЧАК формируется адрес следующей команды.

3.2.3. Проверка ОЗУ на переполнение. Емкость ОЗУ составляет 4М 16-разрядных слов. Причем под стек, реализуемый в процессоре программно, выделяется область ОЗУ с 221 по (222-1) ячейку включительно. Вся остальная область ОЗУ служит для хранения программ, команд и данных. СЧАК не может обращаться к ячейкам памяти, отведенным под стек. В связи с этим происходит анализ содержимого СЧАК, при достижении СЧАК максимального значения взводится в единицу триггер переполнения СЧАК, и программа завершает свою работу.

3.2.4. Дешифрация кода операции. По содержимому операционного поля (ОП) – коду операции (КОП) определяется тип выполняемой операции. Дешифрация происходит с помощью дешифратора. На ГСА дешифратор условно обозначен в виде пяти условных вершин.

3.2.5. Выполнение операции. Выполнение операций производится в соответствии с форматом команд:

Команды формата Ф0.

Данному формату соответствует команды Останова, «Исключающее ИЛИ», Сложения, Деления и Загрузки РОН из СТЕКа.

Останов.

По данной команде алгоритм переходит на вершину «КОНЕЦ» и процессор завершает свою работу. Работа процессора может быть возобновлена при повторном запуске процессора.

Сложение, Деление и «Исключающее ИЛИ».

Формирование исполнительных адресов и выборка операндов. В адресном поле R1 находится номер РОН с первым операндом. Номер РОН по ШАрон передается на DCAрон и в режиме чтения в регистр Ралу записывается содержимое РОН с указанным номером. Второй операнд уже задан на аккумуляторе.

Выполнение операции сложения. На сумматоре производится сложение содержимого аккумулятора и регистра Ралу, а результат записывается в регистр результата РРалу. Затем производится проверка на переполнение разрядной сетки, причем используется следующее утверждение, что переполнение может произойти только при сложении чисел имеющих одинаковые знаки. Пользуясь этим утверждением сначала проверяем на КС3 равенство знаков, а затем при условии что знаки равны на КС4 проверим равенство знаков одного из исходных операндов со знаком результата. В случае если знаки операнда и результата не совпадают, то триггер переполнения АЛУ (ТППалу) устанавливается в единицу и алгоритм переходит в вершину «КОНЕЦ», и работа процессора останавливается. Иначе если переполнения не произошло, то результат из регистра РРалу записывается в аккумулятор.

Выполнение операции логическое ИЛИ. Данные с аккумулятора и регистра Ралу поступают на КС2 представляющий из себя шестнадцать двухвходовых элементов «Исключающее ИЛИ», и результат поступает на регистр РРалу. Запись результата производится аналогично операции сложения.

Выполнение операции деления. Для выполнения деления используется алгоритм без восстановления остатка над целыми числами, представленными в дополнительном коде. Причем делимое берется двойной длины по отношению к делителю. Для этого во все 32 разряда промежуточного регистра Р1алу записывается знаковый разряд аккумулятора.

Перед началом выполнения операции деления производится анализ делителя на равенство его нулю, т.к. если в этом случае деление невозможно. Также производится анализ делимого на равенство его нуля, т.к. можно будет сразу записать результат, который будет равен нулю. Если делитель (в регистре Ралу) равен нулю, то взводится триггер переполнения АЛУ и алгоритм переходит к вершине «КОНЕЦ». А также проверяется, что делимое больше делителя, т.к. если делимое меньше, то результат будет дробный, а у нас числа целые, следовательно, взводится триггер переполнения АЛУ и алгоритм переходит к вершине «КОНЕЦ».

В триггер знака АЛУ заносится старший (знаковый) разряд делимого. Значение счетчика СЧциклов устанавливается равным 25, т.е. равно количеству разрядов делителя.

Затем сдвигаем влево на 1 разряд регистр Р1алу и в старший освободившийся разряд записываем знаковый разряд аккумулятора, после сдвигаем влево на 1 разряд аккумулятор и в старший освободившийся разряд заносим ноль.

Анализируем на КС6 знаковый разряд регистров Р1алу и Ралу. Если результат по сложению по модулю 2 будет равен 1, то в регистр результата РРалу заносим результат вычитания Ралу из Р1алу, иначе в регистр результата РРалу заносим результат сложения Ралу из Р1алу.

В старший разряд Р2алу заносим результат КС7 (сложение по модулю 2 и инверсия результата знаковых разрядов регистров РРалу и Ралу). Далее производится декремент счетчика Счциклов. Если счетчик равен единице, то в регистр Р1алу записываем данные регистра РРалу, и цикл повторяется до тех пор пока значение счетчика не станет равным нулю. Если счетчик равен нулю, то в регистр результата РРалу записываем содержимое регистра Р2алу. Далее проводим анализ выражения (&Ралу[0])V(Тзн.алу &(Ралу[0]РРалу[0]). Если выражение равно единице, то следует провести коррекцию результат на регистре РРалу. Запись результата производится аналогично операции сложения.

Выполнение операции загрузка РОН из СТЕКа.

Производим проверку на допустимый диапазон указателя стека. В случае если указатель стека достигает дна, то триггер переполнения стека ТППстек взводится в единицу и работа завершается. Иначе производим чтение из СТЕКа по адресу 1FFFFEh и УС инкрементируется. Содержимое СТЕКа записывается в РСозу и далее из РСозу записывается в адрес R1 регистра общего назначения.

Команды формата Ф1.

Данному формату соответствуют команда условного перехода по индексу (УПинд).

Условный переход по индексу.

Формирование исполнительных адресов и выборка операндов. В адресном поле (АП) R1 данной команды находится номер регистра общего назначения (РОН) содержащий первый операнд – текущий индекс. По шине адреса РОН (ШАрон) R1 поступает на дешифратор адреса РОН (DCAрон), по которому происходит чтение первого операнда, который поступает по шине данных (ШД) на счетчик СЧинд.

Для формирования второго операнда – максимальное значение индекса, необходимо организовать адрес (R1+1). Для этого на четырехразрядный счетчик СЧадр подается R1 с адресного поля (АП) команды. Затем производим инкремент счетчика СЧадр и по шине адреса РОН (ШАрон) содержимое счетчика СЧадр поступает на дешифратор адреса РОН (DCAрон), по которому происходит чтение максимального значения индекса, который поступает по шине данных (ШД) на регистр Рмах.

Нам также необходим регистр Рисп, для последующего формирования исполнительного адреса перехода. Для этого в адресном поле (АП) B2 данной команды находится номер регистра общего назначения (РОН) содержащий операнд Рисп. По шине адреса РОН (ШАрон) B2 поступает на дешифратор адреса РОН (DCAрон), по которому происходит чтение Рисп, который поступает по шине данных (ШД) на регистр Рисп.

Выполнение команды. После того как выбраны все необходимые данные, то происходит инкремент счетчика СЧинд. На DCAрон по ШАрон выставляется номер РОН – R1, на ШД выставляется содержимое счетчика СЧинд и происходит запись в РОН с номером R1. Таким образом обновляется текущее значение индекса. Далее с помощью комбинационной схемы (КС) КС1 происходит сравнение текущего значения индекса (СЧинд) с максимальным (Рмах). По результату сравнения происходит либо переход на выборку следующей команды (при выполнении условия сравнения), либо формирование адреса перехода на регистре РАисп.

Для этого путем склеивания на регистр РАисп записываются в старшие разряды 14 разрядов регистра Рисп, а в младшие разряды записывается смещение D2 с адресного поля (АП) данной команды. Далее происходит запись СЧАК из регистра РАисп, для формирования адреса перехода в ячейку адреса ОЗУ.

Соседние файлы в папке Курсовой проект_1