Similar presentations:
Вычислительные системы. Микропроцессор
1.
Вычислительные системыМикропроцессор
2.
Микропроцессор2
3.
Описание микропроцессораКонструктивно микропроцессор состоит из следующих
составных частей: арифметико-логического устройства
(АЛУ), собранного ранее, шестнадцатиразрядных
регистров D и A, счетчика команд, двух
мультиплексоров и ряда других вспомогательных
элементов. Счетчик команд, находящийся в середине
нижней части схемы, берется из раздела «Память»
элементов Logisim. Чтобы не загромождать схему
проводниками, используется вспомогательный
элемент Logisim, называемый «Тоннель» из раздела
«Проводка», который передает сигнал с одного места,
где имеется подключение с каким-либо обозначением
в другое место с тем же обозначением.
3
4.
Команды микропроцессораЗадача микропроцессора заключается в том, чтобы
прочитать содержимое команды, поступившей на
вход "instruction" и, в соответствие с содержимым
команды, сформировать сигналы различным
компонентам схемы, обеспечивающие выполнение
требуемой операции.
Команды микропроцессора делятся на два основных
класса. К первому классу относятся команды, старший
(левый) бит которых установлен в нуль, так
называемые A-команды. Содержимое этих команд
копируется в A-регистр и их основная цель
заключается в вводе различных констант и данных.
4
5.
C-командыОстальные команды, называемые Cкоманды, старший (левый) бит которых
установлен в единицу, предназначены для
выполнения различных действий над
данными, записи результата выполнения
операции в требуемые регистры, а также
обеспечение возможности выполнения
условных и безусловных переходов.
5
6.
Описание C-командДля описания C-команд их двоичное
содержимое удобно представить в виде
1 1 1 a c1 c2 c3 c4 c5 c6 d1 d2 d3 j1 j2 j3
В записанной таким образом команде a-бит и cбиты определяют тип операции, выполняемой
АЛУ, согласно таблицы, аналогичной таблице
АЛУ. Назначение бита a состоит в том, что он
модифицирует выполнение операции для
регистра A (при a=0) или для ячейки памяти M
(при a=1). С этой целью входные сигналы c-битов
поступают непосредственно на входы АЛУ.
6
7.
Описание C-команд (продолжение)Отметим также, что сигнал с бита a приходит на
управляющий вход второго мультиплексора. Это
позволяет выдавать на выход мультиплексора,
подключенный ко второму входу (y) АЛУ, либо
данные с регистра A, либо данные из ячейки
памяти, поступающие на вход inM
микропроцессора. Для адресации используемой
ячейки памяти служит содержимое регистра A,
подаваемое на один из выходов
микропроцессора ("addressM").
7
8.
Описание C-команд (продолжение)Результат выполненной операции с выхода АЛУ
передается на выход микропроцессора "outM",
на вход регистра D и на второй вход первого
мультиплексора. На управляющий вход этого
мультиплексора подается сигнал "ak" старшего
(крайнего левого) бита команды. Таким образом,
для A-команды, когда этот бит равен 0,
мультиплексор загружает в регистр A саму
команду, а для C-команд, когда этот бит равен 1,
в регистр A загружается результат выполненной
операции.
8
9.
Основные операции, определяемыеc-битами команды
Операци
я
(при a=0)
c1(zx)
c2(nx)
c3(zy)
c4(ny)
c5(f)
c6(no)
0
1
0
1
0
1
0
1
1
1
1
1
1
1
-1
1
1
1
0
1
0
D
0
0
1
1
0
0
A
1
1
0
0
0
0
!D
0
0
1
1
0
1
!A
1
1
0
0
0
1
-D
0
0
1
1
1
1
-A
1
1
0
0
1
1
Операци
я
(при a=1)
M
!M
-M
9
10.
Основные операции, определяемыеc-битами команды
Операци
я
(при a=0)
Операци
я
(при a=1)
c1(zx)
c2(nx)
c3(zy)
c4(ny)
c5(f)
c6(no)
D+1
0
1
1
1
1
1
A+1
1
1
0
1
1
1
D-1
0
0
1
1
1
0
A-1
1
1
0
0
1
0
M-1
D+A
0
0
0
0
1
0
D+M
D+A
0
1
0
0
1
1
D-M
A-D
0
0
0
1
1
1
M-D
D&A
0
0
0
0
0
0
D&M
D|A
0
1
0
1
0
1
D|M
M+1
10
11.
Описание C-команд (продолжение)Чтобы указать в команде, где должен сохраняться
результат операции, используются d-биты команды. Для
аппаратной реализации такого поведения сигналы dвходов подаются на соответствующие участки схемы.
Например, для записи результата операции в память
используется сигнал "writeM", который формируется с
помощью логического "И" сигналов "d3" и "ak", т.к. при
d3=1 должна обеспечиваться запись в память. Логическое
"И" с сигналом "ak" гарантирует, что сигнал с "d3" не будет
срабатывать для A-команд, которые используются только
для размещения данных в A-регистре. Аналогичным
образом сигнал "d1" используется для записи в A-регистр,
а сигнал "d2" для записи в D-регистр.
11
12.
Местоположение результатаоперации определяется d-битами
d1
d2
d3
Мнемоник Местоположение, где будет сохранен
а
результат операции
0
0
0
null
Результат не сохраняется
0
0
1
M
M[A] Ячейка памяти, адрес которой
записан в A-регистре
0
1
0
D
D-регистр
0
1
1
MD
M[A] и D-регистр
1
0
0
A
A-регистр
1
0
1
AM
A-регистр и M[A]
1
1
0
AD
A-регистр и D-регистр
1
1
1
AMD
A-регистр, M[A] и D-регистр
12
13.
Описание C-команд (продолжение)Кроме вычисления результата операции над заданными
операндами, микропроцессор должен также управлять процессом
выполнения программы. При выполнении программы,
загруженной в память, процессор последовательно считывает
команды из ячеек памяти, расположенных друг за другом. Такое
последовательное выполнение команд может измениться при
выполнении каких-либо условий, вследствие чего процессор
должен перейти к считыванию команд из другого участка памяти.
Для осуществления такой функциональности в микропроцессор
встроен счетчик команд, представляющий собой управляемый
регистр, содержимое которого передается на выход "pc"(счетчик
команд) для адресации ячеек памяти. В обычном режиме счетчик
команд работает в счетном режиме, увеличивая свое значение на
единицу с каждым машинным тактом. Кроме того, для
осуществления переходов, существует возможность загрузить в
счетчик данные из A-регистра.
13
14.
Реализация переходов с помощью jбит командыj1(out<0)
j2(out=0)
j3(out>0)
Мнемоника
Переход
0
0
0
null
Нет перехода
0
0
1
JGT
Переход, если
out > 0
0
1
0
JEQ
Переход, если
out = 0
0
1
1
JGE
Переход, если
out >= 0
1
0
0
JLT
Переход, если
out < 0
1
0
1
JNE
Переход, если
out != 0
1
1
0
JLE
Переход, если
out <= 0
1
1
1
Jump
Безусловный
переход 14
15.
Описание C-команд (окончание)Условия, при которых осуществляется такая загрузка, т.е. переход,
определяются j-битами команды и значениями на выходах АЛУ
"ng" и "zr". Выход "ng" определяет является ли полученный
результат положительным или отрицательным, а выход "zr" является ли результат нулевым или ненулевым. Аппаратная
реализация этих условий приведена на схеме микропроцессора.
Например, согласно этой схеме, сигнал "j3" объединяется
операцией "И" с сигналами "zr" (равен 1, если результат не равен
нулю) и не-"ng" (равен 1, если результат не отрицательный) и на
выходе вентиля "И" будет 1 при j3=1 и положительном результате,
что соответствует переходу по условию «больше чем». Остальные
варианты рассматриваются аналогично.
Наконец, необходимо отметить наличие сигнала "clock" для
подачи тактовых импульсов и сигнала "reset" для сброса
процессора в начальное состояние.
15
16.
Микропроцессорная системаМикропроцессорная система, представленная на следующем
слайде, кроме микропроцессора включает еще и память, в
которой хранится программа и данные для обработки. В данной
системе память состоит из двух частей. В одной находится
исполняемая программа и из нее можно только считывать
команды, другая память используется для хранения данных, в нее
можно как записывать данные, так и считывать. Первый тип
памяти называется ПЗУ (Постоянное Запоминающее Устройство)
или ROM (Read Only Memory), второй тип - ОЗУ (Оперативное
Запоминающее Устройство) или RAM (Random Access Memory).
Поскольку раньше уже рассматривались принципы организации
памяти, то в данном проекте используются готовые элементы
памяти, имеющиеся в Logisim.
16
17.
Микропроцессорная система17
18.
Программа для микропроцессора• Для работы микропроцессорной системы в нее необходимо
загрузить программу, которую можно записать в отдельном
файле с произвольным именем, например, add.txt. Программа
пишется в обычном "Блокноте" и состоит из команд,
записанных в шестнадцатеричном виде, причем первая строка
идентифицирует формат файла. В качестве примера ниже
приведена программа сложения двух чисел.
• v2.0 raw
• 0002
• ec10
• 0003
• e090
• 0000
• e308
18
19.
Как работает программаЧтобы понять, как работает программа, нужно сопоставить содержимое
каждой строки (команды) в соответствие с таблицами, используемыми
при построении микропроцессора. В данном случае, первая строка
приводит к загрузке в A-регистр числа 2 (первое слагаемое). Вторая
строка приводит к копированию содержимого A-регистра в D-регистр. В
этом можно убедиться, с одной стороны, проверив код команды по
соответствующим таблицам, а с другой стороны, щелкнув дважды на
схемном элементе "cpu" и прочитав содержимое A-регистра и Dрегистра. Третья строка приводит к загрузке в A-регистр числа 3 (второе
слагаемое). Четвертая строка приводит к сложению содержимого Aрегистра и D-регистра и занесению результата операции в D-регистр.
Пятая строка приводит к загрузке в A-регистр числа 0, которое будет
определять для следующей команды адрес ОЗУ, по которому будет
загружен результат операции. И, наконец, шестая строка приведет к
копированию содержимого D-регистра в память ОЗУ по нулевому адресу,
что будет отображено в содержимом схемного элемента ОЗУ.
19
20.
Пошаговый режимНа начальном этапе работы с системой
рекомендуется выполнять команды в
пошаговом, т.е. ручном, режиме с помощью
кнопки "clock", наблюдая за изменением
содержимого регистров процессора и ячеек
памяти.
20
21.
Другой примерВ качестве еще одного примера рассмотрим
программу определения максимального из двух
заданных чисел. Предполагается, что перед началом
работы программы эти два числа находятся в
начальных ячейках оперативной памяти по нулевому
и первому адресам. По окончанию работы программы
максимальное из этих чисел должно быть
скопировано в следующую ячейку памяти по адресу 2.
Шестнадцатеричный код программы приведен ниже
вместе с соответствующими ассемблерными
командами, записанными в виде комментариев после
знака #.
21
22.
Программаv2.0 raw
0000 #
fc10 # D=M
0001 #
f4d0 # D=D-M
000a # адрес 10й команды в A-регистр
e301 # D;JGT переход, если D>0, т.е. если первое число больше второго
0001 #
fc10 # D=M
000c # адрес 12й команды в A-регистр
ea87 # 0;JMP
0000 # 10ая команда
fc10 # D=M
0002 # 12ая команда
e308 # M=D
22
23.
Пояснения к программеПриведем пояснения к программе. С помощью первых двух строк
программы в D-регистр записывается первое число. Следующие
две строки вычисляют разность между первым и вторым числом и
записывают эту разность в D-регистр. Следующая строка заносит в
A-регистр адрес 10й команды для осуществления перехода в
случае положительного результата проверки, осуществляемой в
следующей команде. Следующие команды выполняются, если
переход не произошел, т.е. если второе число больше первого.
При этом в D-регистр записывается второе число, после чего
осуществляется безусловный переход на 12ую команду. Десятая и
следующая команды служат для записи в D-регистр первого числа,
таким образом к этому моменту в D-регистр будет записано
максимальное число, независимо от того какой переход был
сделан. Следующие две команды служат для копирования
содержимого D-регистра во вторую ячейку памяти.
23