Команда | Описание |
ADD (Сложить) | АКК ( АКК + (А) |
SUB (Вычесть) | АКК ( АКК - (А) |
LOAD (Загрузить) | АКК ( (А) |
STORE (Записать) | (А) ( АКК |
BRANCH (Переход) | Переход на А |
COND BRANCH (Условный переход) | Если АКК=0, то переход на А |
по 8 бит — код операции (КОП) и адрес памяти А. В состав процессора входит арифметико-логическое устройство (АЛУ) для выполнения некоторых арифметических действий. Регистры компьютера ITSIAC и их функции показаны на рис. 2.2.
Регистр | Функция |
АКК | Аккумулятор. Этот накапливающий регистр участвует в выполнении всех арифметических операций. При выполнении каждой арифметической операции один из операндов должен находиться в аккумуляторе, а другой — в основной памяти. |
РАКОП | Регистр адреса команды основной памяти. Этот регистр указывает ячейку основной памяти, где находится следующая команда машинного языка, подлежащая выполнению. |
РАП | Регистр адреса памяти. Этот регистр участвует во всех обращениях к основной памяти. Он содержит адрес ячейки памяти, к которой производится обращение для чтения или записи. |
РДП | Регистр данных памяти. Этот регистр также участвует во всех обращениях к основной памяти. Он содержит данные, которые записываются, или принимает данные, которые считываются из ячейки основной памяти, указанной в РАП. |
РР | Рабочий регистр. Этот регистр используется для выделения поля адреса (8 бит справа) машинной команды, хранящейся в регистре РДП, чтобы его можно было поместить в РАП (в машине прямая пересылка данных из РДП в РАП невозможна). |
РАКУП | Регистр адреса команд управляющей памяти. Этот регистр указывает адрес следующей микрокоманды (в управляющей памяти), подлежащей выполнению. |
РМК | Регистр микрокоманды. Этот регистр содержит текущую выполняемую микрокоманду. |
Машина ITSIAC работает следующим образом. Прежде всего в управляющую память загружается микропрограмма. Команда машинного языка декодируется, и управление передается соответствующей подпрограмме микропрограммы для ее интерпретации. Каждая команда микропрограммы занимает одну ячейку управляющей памяти. Регистр адреса команды управляющей памяти РАКУП указывает на следующую выполняемую микрокоманду. Эта микрокоманда выбирается из управляющей памяти и помещается в регистр микрокоманд РМК.
Затем содержимое регистра РАКУП увеличивается на 1 (теперь он указывает на следующую выполняемую микрокоманду), и весь процесс повторяется. Микропрограмма принимает из регистра адреса команды основной памяти РАКОП адрес ячейки, где хранится следующая команда машинного языка, подлежащая интерпретации. После интерпретации очередной команды машинного языка микропрограмма меняет содержимое регистра РАКОП — теперь он указывает на ячейку основной памяти, где хранится следующая выполняемая команда машинного языка.
Декодированные микрокоманды непосредственно соответствуют тем элементарным операциям, которые могут выполняться аппаратными средствами; они гораздо проще, чем команды машинного я зыка
Межрегистровые передачи (РЕГ — это АКК, РАКОП или РР): |
РДП ¬ РЕГРЕГ ¬ РДПРАП ¬ РДП |
Операции с основной памятью: |
READ (чтение ячейки основной памяти в РДП)WRITE (запись РДП в ячейку основной памяти) |
Операции управления последовательностью: |
РАКУП ¬ РАКУП+1 (обычный случай)РАКУП ¬ декодированный РДПРАКУП ¬ константаSKIP (перескок, т. е. прибавление 2 к РАКУП, если АКК = 0; в противном случае прибавляется 1) |
Операции с участием аккумулятора: |
АКК ¬ АКК + РЕГАКК ¬ АКК – РЕГАКК ¬ РЕГРЕГ ¬ АККАКК ¬ РЕГ + 1 |
Из перечисленных микроопераций составляются последовательности, которые реализуют команды машинного языка нашей простой машины. Микропрограмма, выполняющая команды машинного языка, показана на рис. 2.4. Выполнение микропрограммы начинается с ячейки 00, с подпрограммы, которая выбирает следующую выполняемую команду машинного языка.
Рассматриваемая машина с микропрограммным управлением работает следующим образом. Вначале регистр РАКУП устанавливается в нуль и тем самым указывает на микрокод подпрограммы, осуществляющей выборку команды машинного языка. Следующая команда машинного языка для выполнения выбирается из ячейки, адрес которой находится в РАКОП. Загрузка этой команды из основной
Выбор команды: |
(00) РАП ¬ РАКОП(01) READ(02) РАКУП ¬ декодированный РДП |
ADD: |
(10) АКК ¬ РАКОП 4- 1(11) РАКОП ¬ АКК(12) РР ¬ РДП(13) РАП ¬ РР(14) READ(15) РР ¬ РДП(16) АКК ¬ АКК + РР(17) РАКУП ¬ 0 |
SUB: |
(20) АКК ¬ РАКОП + 1(21) РАКОП ¬ АКК(22) РР ¬ РДП(23) РАП ¬ РР(24) READ(25) РР ¬ РДП(26) АКК ¬ АКК - РР(27) РАКУП ¬ 0 |
LOAD: |
(30) АКК ¬ РАКОП + 1(31) РАКОП ¬ АКК(32) РР ¬ РДП(33) РАП ¬ РР(34) READ(35) РР ¬ РДП(36) АКК ¬ РР(37) РАКУП ¬ 0 |
STORE: |
(40) АКК ¬ РАКОП + 1(41) РАКОП ¬ АКК(42) РР ¬ РДП(43) РАП ¬ РР(44) РДП ¬ АКК(45) WRITE(46) РАКУП ¬ 0 |
BRANCH: |
(50) РАКОП ¬ РДП(51) РАКУП ¬ 0 |
COND BRANCH: |
(60) SKIP(61) РАКУП ¬ 0(62) РАКОП ¬ РДП(63) РАКУП ¬ 0 |
памяти в регистр РДП осуществляется по команде чтения READ. Команда
РАКУП ( декодированный РДП
устанавливает в РАКУП адрес соответствующей микрокодированной подпрограммы управляющей памяти для интерпретации данной команды машинного языка; при этом просто анализируется код операции и осуществляется как бы табличный поиск с использованием кода операции в качестве ключа поиска. Следующий микрокомандный цикл вызывает передачу управления на микрокод подпрограммы.
Если, например, интерпретируемая машинная команда имеет вид
ADD 50
то нужно содержимое ячейки 50 основной памяти сложить с содержимым аккумулятора. Рассмотрим микрокод, который выполняет эту операцию.
(10) АКК ¬ РАКОП + 1
(11) РАКОП ¬ АКК
(12) РР ¬ РДП
(13) РАП ¬ РР
(14) READ
(15) РР ¬ РДП
(16) АКК ¬ АКК + РР
(17) РАКУП ¬ 0
Микрокоманды (10) и (11) обеспечивают установку в РАКОП адреса следующей по порядку ячейки основной памяти. Микрокоманды (12) и (13) выделяют адрес основной памяти команды, находящейся в РДП, и передают его в РАП. (Две микрокоманды с использованием РР для этого необходимы опять-таки потому, что машина не позволяет производить непосредственную передачу содержимого РДП в РАП.) После выполнения микрокоманды (13) в РАП оказывается адрес ячейки 50. Команда чтения READ (14) вызывает загрузку содержимого ячейки, указанной в РАП, в регистр РДП. По команде (15) эти данные заносятся в РР, а по команде (16) — суммируются с содержимым аккумулятора. Команда (17) устанавливает в РАКУП нулевой адрес подпрограммы выборки микрокоманд, так что следующий микрокомандный цикл начнет процесс выборки следующей команды машинного языка для выполнения.
Заключение
Аппаратура — это устройства вычислительной машины. Программное обеспечение составляют команды, интерпретируемые аппаратурой, а микропрограммы включают микрокодированные команды, размещаемые в высокоскоростной управляющей памяти.
Расслоение памяти обеспечивает возможность одновременного доступа к последовательным ячейкам основной памяти, поскольку ячейки с соседними адресами размещаются к различных модулях памяти. Механизм прерываний играет важную роль для режимов работы, при которых много операций могут выполняться асинхронно, но в определенных случаях требуют синхронизации. Буферизация с несколькими буферами позволяет эффективно совмещать операции ввода-вывода с вычислениями.
Спулинг (ввод-вывод с буферизацией) позволяет отделить работающую программу от низкоскоростных устройств ввода-вывода, таких, как принтеры и устройства ввода данных с перфокарт. При спулинге ввод-вывод данных для программы осуществляется при посредстве высокоскоростного внешнего запоминающего устройства, например накопителя на магнитных дисках, а фактическое чтение или распечатка данных производится в то время, когда устройства ввода перфокарт и принтеры свободны. Для изоляции пользователей друг от друга в многоабонентских системах необходимо предусматривать защиту памяти; защиту можно реализовывать несколькими различными способами, в том числе при помощи граничных регистров или ключей защиты.
Применение стандартного интерфейса ввода-вывода существенно упрощает подключение к машине новых внешних устройств. Внешние устройства могут работать под непосредственным управлением центрального процессора в режиме он-лайн, или автономно (оф-лайн), под управлением отдельных контроллеров, независимых от процессора. Функционально законченные вычислительные машины, которые выполняют операции ввода данных с перфокарт на магнитную ленту, вывода данных с магнитной ленты на печать и т. д. для более крупных машин, называются процессорами ввода-вывода, или компьютерами-сателлитами.
Канал — специализированная вычислительная машина для выполнения операций ввода-вывода без участия центрального процессора. Для координации взаимодействия между центральным процессором и каналом применяется, как правило, способ регулярного опроса или механизм прерываний. Наиболее известные типы каналов — это селекторные, байт-мультиплексные и блок-мультиплексные каналы.
Система управления вводом-выводом (IOCS) — это пакет программ, назначение которого заключается в том, чтобы освободить пользователя от необходимости детального управления вводом-выводом. Пакеты IOCS являются важной частью современных операционных систем.
Метод относительной адресации дает возможность работать с очень большим адресным пространством без необходимости увеличивать размер машинного слова; во время выполнения программы все адреса формируются путем прибавления смещения к содержимому базового регистра. Благодаря этому упрощается также перемещение программ по памяти.