Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Описание иллюстрированного процессора.





Общая структура гипотетического иллюстративного микропроцессора представлена на рисунке 2. Входящие в его состав компоненты говорят о том, что он является процессором с программным управлением. Некоторые компоненты, а именно программный счетчик (счетчик команд), стек и регистр команд, служат для обработки команд.

 

Такие компоненты, как АЛУ, триггер переноса, общие регистры (или рабочие) и регистр адреса данных, служат для обработки данных. Все остальные компоненты, а именно дешифратор команд и блок управления и синхронизации (БУС), управляют работой других компонентов. Взаимодействие компонентов осуществляется по внутренним каналам передачи данных. Связь микропроцессора с другими блоками (ЗУ и устройствами ввода/вывода) происходит по адресной шине, шине данных и управляющей шине.

Микропроцессор работает со словами, состоящими из 8 бит. Такие слова, называемые байтами, удобны при выполнении арифметических и логических операций. Если в расчетах встречаются числа "большей длины", то применяются специальные программы для вычислений с "двойной точностью", "тройной точностью" и т. д.

С другой стороны, адрес из 8 битов позволяет прямо адресовать только 28 = 256 ячеек памяти. Для реальных задач этого, конечно, мало. Поэтому для задания адреса памяти обычно используется 16 разрядов (два байта), и это позволяет прямо адресовать

216=65 536 ячеек.

 

Информация к микропроцессору и от него передается по шинам. Шины данных в соответствии с длиной слова состоят из 8 линий, тогда как адресная шина состоит из 16 линий. Как показано на рисунке 1, адресная шина однонаправленная, а шина данных двунаправленная. Управляющая шина состоит из 5 линий, ведущих к блоку управления и синхронизации и 8 выходящих из него линий. По этим линиям передаются управляющие и тактирующие сигналы между компонентами микропроцессора и между микропроцессором и другими блоками микрокомпьютера.

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

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

 

Регистр адреса данных содержит адрес операнда для команд, обращающихся к памяти, адрес порта для команд ввода/вывода или адрес следующей команды для команд перехода.

 

Пятнадцать 8-битовых общих регистров содержат операнды для всех команд, работающих с данными. Для указания этих регистров используются 4-битовые коды от 0000 до 1110. Регистр 0000 называется аккумулятором (Асс) и участвует во всех арифметических и логических операциях. В частности, он содержит один из операндов перед выполнением операции и получает результат после ее завершения. Обычно обращения к общим регистрам осуществляются при помощи К-селектора или г-селектора. R-селектор позволяет обращаться к любому регистру, тогда как через r-селектор доступны только регистры 0000,0001 и 0010.

 

Очень полезная возможность, присутствующая во многих машинах, это косвенная адресация. Задание несуществующего регистра общего назначения 1111 используется как указание на то, что нужно обратиться к байту памяти по 16-разрядному адресу, который получается комбинированием содержимого двух фиксированных общих регистров. А именно, старшие 8 разрядов адреса из регистра 0001 (Н), а младшие 8 разрядов адреса из регистра 0010(L).

 

Все арифметические и логические операции выполняются в арифметико-логическом устройстве (АЛУ). Входами АЛУ служат две 8-битовые шины. Одна из них идет от аккумулятора (регистр 0000), а другая от К. -селектора, который выбирает либо один из регистров общего назначения от 0000 до 1110, либо ячейку памяти, если задана косвенная адресация. Еще одна входная линия поступает в АЛУ от триггера переноса С, который участвует в некоторых арифметических и логических операциях.

 

Результаты из АЛУ передаются в аккумулятор по выходной 8-битовой шине. Существуют еще две линии, идущие от АЛУ к блоку управления и синхронизации; они передают информацию о наличии или отсутствии двух особых условий: аккумулятор содержит нули (линия Z) и старший разряд аккумулятора равен 1 (линия N). Вторая линия очень удобна при работе с числами в дополнительном коде, когда старший разряд знаковый, причем 1 соответствует отрицательным числам. Триггер переноса и обе линии состояния АЛУ Z и N называются флажками и используются в командах условного перехода.

Последний компонент микропроцессора это блок управления и синхронизации (БУС). Он получает сигналы от дешифратора команд, который анализирует команду. Как уже упоминалось, в БУС из АЛУ и от триггера переноса поступают сигналы, по которым определяются условия для передач управления. Все остальные компоненты микропроцессора получают от БУС управляющие и синхронизирующие сигналы, необходимые для выполнения команды. С помощью 13-ти внешних линий реализуется интерфейс устройства управления с другими модулями микрокомпьютера.

 

 

Рис.2. Структура гипотетического микропроцессора

Описание операций.

 

1. Операция загрузки программы.

Специальная программа-загрузчик вы­полняет операции по вводу требуемой программы с некоторого устрой­ства ввода и размещению ее в памяти. Главная процедура четырежды обращается к подпрограмме ввода для ввода первых четырех адресных слов, передавая эти слова каждый-раз в новые общие регистры. Затем начинается цикл передачи вводи­мых слов в память. Каждое слово вводится подпрограммой ввода и за­тем передается в соответствующую ячейку памяти, адрес которой за­дается текущим значением адреса (ТА). ТА увеличивается на 1 при каждом прохождении цикла, т. е. при поступлении каждого слова. В конце цикла происходит проверка, не превышает ли ТА значение конечного адреса (КА). Если это так, процедура загрузки заканчива­ется; в противном случае — цикл повторяется. Программа-загрузчик начинается в ячейке 0000.Программа обраща­ется к двум портам ввода: к порту 00 — за информацией о состоянии и к порту 01 — за данными. Первая группа команд соответствует главной процедуре. Подпро­грамма ввода начинается с ячейки 001D. Общие регистры 1, 2, 3 и 4 хранят соответственно ТАН TAL, KAH и KAL. Они загружаются адресной информацией, поступающей с устройства ввода. Для этого каждый раз выполняется команда перехода на подпрограмму и команда пересылки.

Цикл начинается командой перехода на подпрограмму ввода. После возврата из нее очередное введенное слово находится в аккумуляторе. Это слово переда­ется в ячейку памяти с помощью имеющегося в иллюстративном мик­ропроцессоре механизма косвенной адресации. А именно, команда MOV О to F передает содержимое аккумулятора в ячейку памяти, адрес которой задан содержимым регистров 1 и 2 (т. е. Н и L). Поскольку эти регистры содержат значение ТА, слово попадает в нужное место памяти. Следующая команда, IHL, увеличивает на 1 значение ТА. Сравнение адресов ТА и КА осуществляется при помощи проце­дуры вычитания с двойной точностью и последующего условного пе­рехода. Для вычитания с двойной точностью сначала вычитаются младшие части ТА и КА, а затем старшие части с участием заема, оставшегося от младших частей. Окончательный заем остается в триг­гере С. Следующая команда — «переход при нулевом переносе» на начало цикла. При С=0 снова входим в цикл, при С= 1 программа ос­танавливается.

2. Операция № 2 – сложение элементов массива с константой.

Команда LDR 1 загружает в регистр 1 константу 4D, команда LDR 0 осуществляет загрузку 1 элемента заданного массива в аккумулятор. Затем с использованием команды ADD 1 происходит сложение значения, которое хранится в аккумуляторе, со значением, которое храниться в регистре 1. Результат суммы передается в ячейку памяти с использованием команды STR. Затем в аккумулятор аналогично загружаются оставшиеся элементы массива 2,3,4,5, складываются с константой. Однобайтовая константа загружается в регистр R3, в регистре R5 находится счётчик для цикла перебора всех элементов массива.

3. Операция №1 – сложение каких-либо двух элементов массива.

Команда LDR 0 загружает в аккумулятор 1-ое число, команда LDR 1 загружает в регистр 1 второе число. Затем происходит сложение загруженных чисел с использованием команды ADD 1. Результат суммы сохраняется в аккумуляторе. Команда STR 0 передаёт значение аккумулятора в ячейку памяти.

4. Операции №6 – операция перехода к подпрограмме с передачей параметров через стек.

Первые две команды заполняют регистры H и L старшей и младшей частями адреса первого числа соответственно. Следующая команда PUSH отправляет значения этих регистров в стек. После чего стек опускается дважды. Второе число отправляется в стек аналогичным образом. После того, как данные отправились в стек, происходит переход на подпрограмму, которая осуществляет разгрузку стека с использованием команды POP. Извлечённые из стека данные передаются в ячейки памяти командой STR. Команда RET – выход из подпрограммы.

5. Операция №5 – операция перехода к подпрограмме с передачей параметров через регистры.

Команда LDR 0 загружает первое число в аккумулятор, затем команда MOV передаёт данные в регистр 5. Далее происходит загрузка второго числа в аккумулятор и передача данных в регистр 6. Аналогично загружается третье число, данные передаются в регистр 7. Затем происходит переход к подпрограмме, которая передаёт данные из регистров 5, 6, 7 в ячейки памяти с использованием команд MOV и STR. Команда RET – выход из подпрограммы.

6. Операция №7 – операция умножения двух элементов массива.

Регистры рас­пределены следующим образом: R2—счетчик итераций, R3—мно­жимое 1 элемент массива, R4—множитель 2 элемент, R5—старшая часть произведения рн, R6— младшая часть произведения PL. Операция начинается с инициализа­ции цикла – установка нулей в регистрах старшей и младшей части произведений, установка начального значения счётчика. Затем происходит загрузка множителя 1-го в аккуму­лятор из регистра 4, сдвиг множителя циклически вправо и воз­вращение результата в регистр 4. Таким образом, очередной разряд множителя, определяющий частное произведение, оказывается на триггере пере­носа С. Затем для подготовки сложения и сдвигов старшая часть про­изведения рн переносится в аккумулятор. Тестирование С = 1 осуществляется коман­дой «переход при ненулевом переносе». Она обеспечивает пропуск следующей команды при С=0. Эта следующая команда прибавляет множимое 2-ой к аккумулятору (который содержит рн) и сохраняет перенос из старшего разряда в С. Затем Рн и С циклически сдвига­ются вправо командой RTR. После сдвига новое значение рн воз­вращается в регистр 5. Затем pl и С сдвигаются вправо, для чего pl из регистра 6 загружается в аккумулятор, циклически сдвигается вместе с С и результат возвращается в регистр 6. После этого счет­чик в регистре 2 уменьшается на 1 командой DHL, результат переда­ется в аккумулятор и тестируется командой «переход при ненулевом аккумуляторе». Если аккумулятор содержит 0, то выполняется вы­ход из подпрограммы; в противном случае управление передается на начало цикла.

7. Операция №4 – сложение всех элементов массива.

Первые две команды заносят в Н и L адрес первого числа. Затем в регистр 3 помещается начальное значение, равное 5. Регистр 3 бу­дет выполнять функции счетчика количества суммируемых чисел. Сумма накапливается в общем регистре 4, в него заносится нулевое начальное значение. Наконец, в общий регистр 5 загру­жается константа 1, которая будет вычитаться из счетчика в процессе суммирования чисел. Рабочая часть цикла начинается с загрузки текущей частной суммы в аккумулятор из регистра 4. Далее следует команда сложения ADD F, содержащая специальный указатель F, который на самом деле соответствует ячейке главной памяти с адресом в паре регистров Н и L. Содержимое этой ячейки прибавляется к частной сумме в аккумуляторе.

После этого результат передается в общий регистр 4. Далее команда IHL модифицирует регистры Н и L, так, чтобы они содержали адрес данных, которые должны обрабатываться при следующей итерации. Затем содержимое счетчика цикла передается в аккумулятор, уменьшается на 1 и снова возвра­щается в регистр 3. Когда вычисления завершаются, в аккумуляторе будет 0. Это условие тестируется командой «условный переход при ненулевом аккумуляторе». Если в аккумуляторе 0, тогда переход не происходит, и программа выходит на команду останова, в противном случае выполняется следующая итерация.

8. Операция № 3 – нахождение наибольшего из элементов массива.

Команда LDR 0 загружает 1 элемент в аккумуля­тор, команда LDR 1 помещает 2 элемент в общий регистр 1. Затем осуществляется их сравнение путем вычитания 2 из 1. Если 2 элемент строго больше первого, тогда возникает заем в старший разряд, который сохраняется в виде еди­ницы в триггере переноса С. Однако еще до проверки переноса С значение 1-ого, как «пробное» наибольшее из 1-го и 2-го загружается в регистр 2.

Затем выполняется команда условного перехода по значению С. Если С не равно нулю, то претендент на роль наибольшего, т. е. 1 элемент, заменяется на 2 элемент. Если С=0, то происходит переход на загрузку третьего элемента массива, и в этом случае в качестве большего значения остается третий - происходит вычитание из наибольшего чисел 1 и 2, проверяется наличие заёма. Если заем есть, то 3-ий больше и происходит передача 3-его в регистр 2, заменяющая наибольшее из 1 и 2. При любом варианте наибольшее значение из чисел находится в регистре 2, и оно будет аналогичным образом срав­ниваться со следующим 4 элементом, а затем пятым элементом массива. После сравнения всех 5 чисел, команда STR 2 осуществляет передачу содержимого регистра 2, т.е. наибольшего значения из чисел в ячейку памяти.

 


Date: 2016-07-25; view: 384; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию