Уровни организации ЭВМ. Машинный уровень Лекция №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