1.3. Модель компьютерных вычислений
Рассмотрим работу компьютера в самом
общем виде и на логическом уровне, не будем вдаваться в технические детали
реализации. Важно отметить, что все компьютеры, от простых до самых сложных, имеют
приблизительно одну и ту же структуру: процессор, память, устройства
ввода, устройства вывода. Процессор производит обработку информации в
соответствии с программой и данными, находящимися в оперативной
памяти. Устройства ввода, такие как клавиатура,мышь и т. д. предназначены для
ввода информации. Устройства вывода, терминал, печать и т. д. предназначены для
преобразования цифровой информации и отображения ее в удобочитаемом виде для
пользователя. Дисковые устройства рассматриваются как устройства ввода и вывода.
Рассмотрим отдельно каждый из
указанных типов устройств. Начнем рассмотрение с описания оперативной
памяти(ОП). ОП предназначена для хранения программ и данных, представленных в
двоичном виде. Вся ОП представляет собой совокупность ячеек, называемых байтами. В
каждом байте можно хранить одно восьмиразрядное двоичное число. Один разряд
байта называется битом. Каждый бит байта также имеет номер, такой же, как и
разряд - нулевой бит,первый бит и т.д. Каждый байт в ОП имеет свой порядковый
номер, который называеется адресом. Все данные и программы записываются в ОП
побайтно. Адрес самого младшего байта (байт с наименьшим номером) называется
адресом объекта (программы или данного).
При работе с ОП необходимо знать
следующее:
- Для того, чтобы прочитать двоичное
число, записанное в ячейке, нужно задать ее адрес. При выполнении операции чтения
двоичное число в ячейке не изменяется.
-
Для того, чтобы записать двоичное
число в ячейку ОП, необходимо знать ее адрес. При записи нового числа старое
двоичное число теряется .
Процессор - устройство
компьютера, предназначенное для обработки информации в соответствии с некоторой
программой. Программа, записанная в ОП, состоит из команд, представленных в виде
двоичных чисел. Процессор логически состоит из устройства управления
(УУ), арифметического устройства (АУ) и регистров. УУ производит выборку
команды, распознавание типа (кода) команды, выборки данных из ОП. АУ производит
выполнение операции, например, сложение, вычитание, умножение, деление и т.д. Регистры - специальные ячейки памяти,
находящиеся в процессоре. Они предназначены для хранения служебной и
промежуточной информации.
Регистры бывают: - счетчик команд PC (содержит адрес
текущей команды);
- указатель стека SP (содержит адрес
вершины стека);
- индексный регистр IR (содержит
адрес некоторого блока памяти);
- сегментный регистр SR (содержит
адрес некоторого сегмента памяти );
- слово состояния программы PSW
(содержит флажки выполнения команды и другие флажки);
- регистры общего назначения, могут
использоваться как для хранения данных, так и для хранения адресов.
Размер регистров в общем случае может
быть разным. В некоторых случаях, вводят понятие «слово», которое означает то, что в ОП
хранится блок памяти, размер которого равен размеру регистра процессора. Если
размер регистра равен 16 бит (два байта), то говорят «шестнадцатиразрядное
слово», если 32, то «тридцатидвухразрядное слово». Рассмотрим организацию команд
процессора. Команда состоит из кода операции и списка операндов .Операнд -это
информация, указывающая на то, где и как получить данные для выполнения заданной
операции. Количество операндов зависит от типа команды и организации
вычислений. В некоторых случаях операнды могут отсутствовать. Например, команда
«стоп». Говорят, что процессор двухадресный, если команда может содержать не
более двух операндов. Например, в команде «сложить» должен быть операнд «первое
слагаемое», операнд «второе слагаемое» и операнд «результат сложения». В
двухадресном процессоре результат сложения может быть записан по адресу первого
операнда.Тогда для команды сложения необходимо указать только два операнда. Для
одноадресных процессоров команда сложения содержит только один операнд, в
котором хранится адрес первого слагаемого, второе слагаемое хранится в
специальном регистре и результат сложения также будет помещен в этот
регистр. Обычно команда фиксированной длины и равна размеру слова процессора. Код
команды имеет также фиксированный размер и обычно равен размеру байта. Размер
операндов тоже фиксирован и зависит от кода операции.В настоящее время
существует достаточно большое разнообразие способов организации адресации
(указания на то, где взять значение операнда). Рассмотрим наиболее
распространенные:
- Непосредственная.Двоичное
число, которое хранится в поле операнда, является искомым данным для операции.
- Прямая.Двоичное число,которое
хранится в поле операнда, является адресом чейки ОП, где хранится данное.
- Косвенная. Двоичное число, которое
хранится в поле операнда, является адресом чейки ОП, где хранится адрес ячейки
памяти, где хранится данное.
- Индексная, адрес данного является
суммой содержимого индексного регистра и двоичного числа,которое хранится в
операнде.
В некоторых процессорах поле
операнда может содержать только адрес регистра и тип адресации. Тогда все
вышесказанное относится к содержанию регистра.
Система команд обычно состоит из
следующих групп: - арифметические команды;
- команды перемещения данных
(загрузки);
- команды сравнения;
- команды перехода и условного
перехода;
- команды работы со стеком;
- команды вызова подпрограмм и
возврата;
- логические команды;
- специальные команды.
Арифметические команды предназначены
для выполнения арифметических действий: сложения, вычитания, умножения и деления
для разных форматов представления чисел (см.выше раздел "Представление чисел").
Команды загрузки и перемещения данных
предназначены для копирования данных, обычно это команды перемещения данных из
ОП в регистры и наоборот. Например, переместить слово, хранящееся по адресу в ОП
в некоторый регистр. Команды сравнения предназначены для сравнения двух
двоичных чисел, причем сравнение производится вычитанием, если результат равен
нулю, то устанавливается в единицу специальный бит регистра PSW, называемый
«Zero» или просто Z. Кроме того, могут быть установлены
следующие специальные биты: V - бит переполнения, он
устанавливается, например, если при сложении двух целых положительных чисел
получается число отрицательное ; C - бит переноса, устанавливается, если
при выполнении операции произошел перенос бита из самого старшего разряда
слова; N - бит знака, устанавливается, если в
результате операции устанавливается единица в самом старшем разряде слова. Команды перехода осуществляют
передачу управления на другой участок программы. Обычно в команде записан
адрес, по которому следует произвести переход. Просто указанный адрес
записывается в регистр счетчика команд PC.
1.3.1. Организация ввода/вывода
Все устройства ввода/вывода с
логической точки зрения работают одинаково. У каждого устройства имеется, по
крайней мере, две ячейки памяти, называемых регистром данных и регистром
состояния. Регистр данных предназначен для хранения данных, которые устройства
ввода туда записывают, а устройства вывода берут для вывода. Регистр состояния
предназначен для отображения состояния устройства. Например, состояние «готов»/«не готов» или, например, для принтера, «нет бумаги». Для того, что бы вывести
информацию, необходимо сначала проверить состояние устройства, прочитав
соответствующий регистр состояния, и если устройство готово, то записать порцию
выводимой информации в регистр данных, этот процесс производится в цикле, пока
все данные не будут выведены. Для ввода производятся аналогичные
действия, читается регистр состояния, обычно это делается в цикле, и если регистр
состояния сообщает, что данное введено, то производится чтение регистра
данных. Более сложные процессы ввода/вывода основаны на концепции прерываний. Рассмотрим вопрос об организации
обмена информацией между отдельными устройствами вычислительной системы. Каким
образом происходит обмен между процессором, памятью, устройствами ввода/вывода? В
настоящее время в большинстве типов компьютеров обмен информацией производится
на основе организации межмодульного интерфейса «общая шина». Это означает, что
все регистры устройств имеют адреса в адресном пространстве
ОП. Например, выделяют адреса в ОП с номера 100000 по 110000 для адресов
регистров устройств ввода/вывода. Тогда читать и писать информацию можно
стандартным образом, как будто читаешь обычную ячейку памяти.
1.3.2. Концепция системы прерываний
Прерывание - это механизм, который
обеспечивает возможность прервать выполнение текущей программы, выполнить другую
и возобновить выполнение прерванной программы. Для чего это нужно? Обычно операции
ввода/вывода очень медленны, по сравнению с работой процессора. Поэтому для того,
чтобы процессор не простаивал во время проведения операций
ввода/вывода, решено, что он должен выполнять другие программы. На самом
деле, механизм прерываний такой: процессор выполняет некоторую программу, пусть
будет это вычислительная программа. В некоторый период времени пользователь
нажимает клавишу на клавиатуре, при этом сигнал от клавиатуры поступает в
процессор, процессор прерывает текущую программу ,запоминает всю информацию для
возобновления процесса вычислений, и вызывает специальную программу ввода
символа от клавиатуры, выполняет эту программу, затем возобновляет прерванный
вычислительный процесс. Для организации такого способа работы процессора
необходимо: - Для каждого устройства написать
специальную программу ввода информации по прерыванию, такие программы назвали
драйверами;
- Перед работой компьютера загрузить
драйверы в ОП;
- В специальные ячейки памяти записать
адреса программ, эти ячейки находятся в начале ОП и носят названия векторов
системы прерываний.
Выполнение программы на примере
конкретной архитектуры
|