Уровни организации ЭВМ. Машинный уровень Лекция №5

advertisement
Уровни организации ЭВМ.
Машинный уровень
Лекция №5
Уровни организации ЭВМ.
Машинный уровень
Схема машины
Джона Фон Неймана
Устройство
ввода
Память
Устройство
вывода
ЦП
УУ
АЛУ
Память
Память
–
линейная
(упорядоченная)
однородная последовательность некоторых
элементов, называемых ячейками.
Регистры - ячейки, расположенные не в
оперативной памяти, а в других устройствах
ЭВМ.
4
Память
Память, к которой
обращается CPU
Адресуемая
регистровая
память
имеет небольшой
объём (порядка
десятков ячеек)
Основная
(оперативная)
память
Имеет большой
объём.
Память
Адресом ячейки называется её номер.
Ячейки памяти в машине фон Неймана нумеруются
от нуля до некоторого положительного числа N,
которое обычно является степенью двойки.
Каждая ячейка состоит из более мелких частей,
именуемых разрядами и нумеруемых также от нуля
до определённого числа.
Память
Количество разрядов
разрядность памяти.
в
ячейке
обозначает
Каждый разряд может хранить цифру в некоторой
системе счисления.
В большинстве ЭВМ используется двоичная
система счисления, т.к. это более выгодно с точки
зрения аппаратной реализации, в этом случае
каждый разряд хранит один бит информации.
Восемь бит составляет один байт.
Память
7
6
5
Старшие
4
3
2
1
Младшие
0
Память
Адрес ячейки Содержимое в
(байта)
двоичной
системе
0000
10011010
0001
00000000
0002
11111111
0003
11000010
0004
10001111
0005
10101010
Содержимое в
16-ичной
системе
9A
00
FF
C2
8F
AA
Устройство Управления
УУ
управляет
всеми
остальными
устройствами ЭВМ. Оно осуществляет это
путём посылки управляющих сигналов,
подчиняясь которым остальные устройства
производят
определённые
действия,
предписанные этими сигналами
10
Устройство Управления
Регистры УУ
Регистр команд
(RK)
Всегда хранится
текущая
выполняемая
команда
Счётчик адреса
(RA)
При выполнении
текущей команды в
него записывается
адрес следующей
команды
Арифметико–Логическое
Устройство
Выполняет следующие действия:
 Считать содержимое некоторой ячейки
памяти – поместить содержимое ячейки
памяти в регистр, расположенный в самом
АЛУ
 Записать в некоторую ячейку памяти
 Производить операции над данными в
своих регистрах: R1, R2, S
Формальное описание выполнения
одной команды в машине Фон Неймана
 считать из памяти очередную команду на
регистр команд
 увеличить счётчик адреса на единицу
 выполнить очередную команду
 перейти к выполнению следующей
команды и т.д.
Взаимодействие УУ и АЛУ
Операция сложения двух чисел z:=x+y (здесь x, y и z
– адреса ячеек памяти)
При получении такой команды УУ последовательно
посылает управляющие сигналы в АЛУ:
1. считать операнды x и y из памяти и поместить
их на регистры R1 и R2;
2. произвести операцию сложения чисел на
регистрах R1 и R2 и записать результат на
регистр S;
3. переслать копию регистра S в ячейку памяти с
адресом z.
Команда
Команда - совокупность сведений (в виде двоичных
кодов), необходимых процессору для выполнения
требуемого действия: тип операции, информация о
местонахождении обрабатываемых данных и результата
(адреса).
Сведения размещаются в определенных разрядах –
полях.
Формат команды – заранее оговоренная структура полей
ее кода.
15
Число адресов в команде называется адресностью ЭВМ.
Схема команд с различным
числом адресов операндов
КОП
A1
8 разрядов 24 разряда
A2
A3
24 разряда
24 разряда
КОП
A1
A2
8 разрядов
24 разряда
24 разряда
КОП
A1
8 разрядов
24 разряда
КОП
8 разрядов
= 1 байт
= 7 байт
= 4 байта
= 10
байт
Форматы команд
Рассмотрим
двухадресную
ЭВМ,
в
которой
регистровая память состоит из 16 ячеек. В такой ЭВМ в
качестве адресов операндов каждой команды могут
быть или адреса двух регистров, или адрес регистра и
адрес ячейки основной памяти.
Адреса регистров на схемах команд будем обозначать
R1 и R2, а адрес основной памяти A1 или A2.
Первый вид команд будем называть командами
формата регистр-регистр (обозначается RR), а вторые
– формата регистр-память (обозначается RX).
Форматы команд
КОП
R1
1 байт
КОП
8 бит
R2
= 2 байта
1 байт
R1
4 бита
A2
20 бит
= 4 байта
Форматы команд
 регистр – регистр (RR);
 регистр – память, память – регистр (RX);
 регистр – непосредственный операнд в
команде (RI);
 память – непосредственный операнд в
команде (SI);
 память – память, т.е. оба операнда в
основной памяти (SS).
Базирование адресов
Пусть переменные располагаются в следующих
ячейках памяти:
 A – в ячейке с адресом 10 000 000
 B – в ячейке с адресом 10 000 001
 X – в ячейке с адресом 10 000 002
 R – в ячейке с адресом 10 000 003
большинство адресов в нашей программе имеют
вид B+, где
B - базовый адрес программы или просто база (в
нашем случае B=10 000 000),
 – смещение адреса относительно этой базы.
Сегментирование
Сегмент памяти – это сплошной участок памяти,
начало которого задаётся в некотором регистре,
называемом базовым, или сегментным.
Сегментирование позволяет уменьшить объём
памяти для хранения программ.
Недостаток: каждая команда может обращаться не
к любой ячейки оперативной памяти, а только к
тем из них, до которых "дотягивается" смещение.
Сегментирование
Для доступа к другим ячейкам памяти
необходимо записать в сегментный регистр
новое значение (как говорят, перезагрузить
сегментный регистр). Несмотря на указанный
недостаток, практически все современные
ЭВМ производят сегментирование памяти.
Способы адресации
Способ адресации – это способ задания
операндов внутри машинной команды. Другими
словами это правила, по которым заданные в
команде
(двоичные)
числа
определяют
местонахождение и значение операндов для
данной команды.
Способы адресации
 Прямой способ адресации – в адресном поле
фактически указывается адресный код операнда
 Непосредственный способ адресации – в
адресном поле указывается не адресный код, а сам
операнд. Обычно применяется для задания
констант вычисления
 Косвенный способ адресации – адресный код
содержит не адрес самого операнда, а адрес памяти,
где хранится адрес операнда, то есть адресный код
– это адрес адреса
Типы машинных команд
Функциональное
назначение
Команды передачи
данных
1. кодов внутри
CPU
2. обмена CPU с
памятью
3. кодов между
CPU и
Команды
обработки данных
1.Арифметически
е
2.Логические
3.Команды сдвига
4.Команды
обработки строк
Уровни организации ЭВМ.
Микропрограммный уровень
Любая машинная команда исполняется
аппаратурой не непосредственно, а путем их
интерпретации
в
соответствующую
последовательность более простых действий.
Следовательно, всегда существует задача
программирования машинных команд из
более
простых
действий
–
микропрограммирование.
Уровни организации ЭВМ.
Ассемблерный уровень
Для упрощения процесса написания программ
для ЭВМ был разработан язык-посредник,
названный Ассемблером, который, с одной
стороны,
должен
быть
машинноориентированным
(допускать
написание
любых машинных программ), а с другой
стороны – позволять автоматизировать процесс
составления программ в машинном коде.
Уровни организации ЭВМ.
Ассемблерный уровень
Для перевода с языка Ассемблера на язык
машины используется специальная программапереводчик, также называемая Ассемблером
(от
английского
слова
“assembler”
–
“сборщик”).
Уровни организации ЭВМ.
Ассемблерный уровень
Что должна делать программа Ассемблер при переводе
с языка Ассемблера на язык машины:
 заменять
мнемонические
обозначения
кодов
операций на соответствующие машинные коды
операций;
 автоматически распределять память под хранение
переменных, что позволяет программисту не
заботиться о конкретном адресе переменной, если
ему всё равно, где она будет расположена;
 преобразовывать числа, написанные в программе в
различных системах счисления во внутреннее
машинное представление (в машинную систему
счисления).
Пример полной программы на
Ассемблере
s segment stack
db 128 dup(?)
s ends
data segment
x dw 5
y dw 3
z dw ?
data ends
code segment
assume
cs:code,
ds:data, ss:s
begin:
mov ax,data
mov ds,ax
mov ax,x
add ax,y
mov z,ax
mov ah,4ch
int 21h
code ends
end begin
Download