Принципы работы системы IBM/370
Описание логической структуры вычислительных машин Системы 370. Особенности мультипроцессирования. Команды общего назначения и управления системой, обработки десятичных данных и команды с плавающей точкой. Средства обработки машинных ошибок (коррекция).
Рубрика | Программирование, компьютеры и кибернетика |
Вид | книга |
Язык | русский |
Дата добавления | 12.06.2014 |
Размер файла | 658,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
3. Если недоступная строка изменяется таким образом, что промежуточные результаты изменения представляют собой доступную строку, то каждый процессор, в котором данная строка является присоединенной, должен выполнить команду ОЧИСТКА TLB после того, как изменение произведено, и до использования этим процессором данной строки при неявном преобразовании адресов. Если эти правила соблюдаются, то динамическая переадресация выполняется так, как будто в процессе ее всегда используются строки таблиц из основной памяти.
Следует отметить, что нет необходимости очищать TLB в процессоре, в котором недоступная строка таблицы страниц, ранее неактивная, становится доступной без введения промежуточных допустимых значений этой строки. Точно так же нет необходимости очищать TLB в процессоре, в котором недоступная строка таблицы сегментов и все присоединенные к ней таблицы страниц были неактивными, если эта строка таблицы сегментов становится доступной без введения промежуточных доступных значений этой строки.
На некоторых моделях выполнение команды ОЧИСТКА TLB может резко понизить производительность. Поэтому эту команду следует применять как можно реже в соответствии с приведенными выше правилами.
5.6 Регистрация обращений и изменений
Результаты регистрации обращений используются при выборе блоков памяти для замены страниц. Регистрация изменений позволяет определить, содержимое каких страниц следует сохранять при замене их новыми страницами. Регистрация изменений и обращений связана с динамической переадресацией.
Если процессор оснащен средствами динамической переадресации, ключ памяти пополняется двумя дополнительными битами. Бит 5 (бит обращения) устанавливается в единицу, как правило, всякий раз, когда к ячейке, находящейся в соответствующем блоке памяти, производится обращение для записи или выборки. Бит 6 (бит изменения) устанавливается в единицу, как правило, всякий раз, когда в соответствующий блок памяти производится запись. Регистрация обращений и изменений выполняется независимо от того, находится ли процессор в режиме расширенного управления и задан ли режим переадресации.
Регистрация обращений и изменений производится при всех обращениях к основной памяти как от процессора, так и при операциях ввода-вывода. Следовательно, это относится и к обращениям к ячейкам основной памяти, которые используются при прерываниях и при выполнении команд ввода-вывода (например, обращения к области CAW, CSW и PSW). Использование таблиц переадресации в процессе динамического преобразования адреса рассматривается как обращение, если действительно имеет место обращение к таблице, находящейся в основной памяти. Невозможно предсказать, вызовет ли обновление интервального таймера в слове с адресом 80 установку битов изменения и обращения. Обращения к областям, содержащим операнды команды УСТАНОВИТЬ КЛЮЧ ПАМЯТИ, ПРОЧИТАТЬ КЛЮЧ ПАМЯТИ и СБРОСИТЬ БИТ ОБРАЩЕНИЯ, не вызывают регистрации обращения или изменения.
Бит изменения при попытке записи не устанавливается в единицу, если обращение к памяти не разрешено, независимо от того, подавлена или прекращена команда процессора, ответственная за это обращение.
В частности, обращения процессора, приводящие к возникновению особых случаев защиты, адресации, спецификации, переадресации, использования сегмента или страницы, либо обращения от системы ввода-вывода к отсутствующей в данной установке или защищенной ячейке не вызывают установку в единицу бита изменения.
Регистрация обращений посредством бита обращения в основном достаточно точна. Однако иногда бит обращения может устанавливаться в единицу при выборке данных или команд, которых программа не вызывает и не использует. В то же время при некоторых условиях обращение может произойти, а бит обращения не будет установлен в единицу. При некоторых необычных условиях бит обращения может быть установлен в нуль не только явной операцией, которая задана программой.
Независимо от текущего размера страницы обращения и изменения регистрируются в пределах 2048-байтового блока. Странице размером 4096 байтов сопоставляются два ключа памяти.
Замечания по программированию
Принятая точность регистрации обращений обеспечивает эффективную реализацию алгоритма обмена страниц.
Бит обращения нельзя использовать для учета обращений к странице, содержащей таблицы переадресации, так как после первой выборки содержимое таблицы может участвовать в процессе переадресации косвенно вследствие обращений к буферу быстрой переадресации без выборки строк таблиц из основной памяти.
5.7 Особые случаи при выполнении переадресации
Если установлены средства динамической переадресации, то добавляются три условия программных прерываний: особый случай использования сегмента, особый случай использования страницы и особый случай спецификации переадресации. Прерывание, обусловленное этими особыми случаями, не может быть замаскировано.
Возможность динамической переадресации также добавляет новые условия, которые распознаются как особые случаи адресации. Если выполняется динамическое преобразование адресов, то особый случай адресации распознается, когда производится попытка использовать строку таблицы сегментов или страниц, адрес который указывает ячейку за пределами основной памяти, доступной на данной вычислительной установке. Элемент операции подавляется.
Сведения обо всех особых случаях, связанных с динамической переадресацией, содержатся в табл. 6.1.
5.8 Форматы динамической переадресации
В табл. 5.3 приведены возможные сочетания полей адреса страницы и индекса байтов при формировании реального адреса.
Таблица 5.3
Размер страницы, Кб |
Адрес реальной памяти |
||||
Адрес страницы |
Индекс байтов |
||||
Позиции строки таблицы страниц |
Число битов |
Позиции логического адреса |
Число битов |
||
2 |
0-12 |
13 |
21-31 |
11 |
|
4 |
0-11 |
12 |
20-31 |
12 |
Восьмибитовое поле длины в управляющем регистре 1 позволяет записать максимальный код длины 255 и задать таблицу сегментов длиной 16 384 байта, что составляет 4096 строк. Это больше, чем можно указать в целях динамической переадресации с помощью логического адреса. При 1 Мб сегментах можно адресовать только 16 сегментов, для чего требуется таблица сегментов размером 64 байта. Код длины для таблицы такого размера принимается равным 0, и это соответствует минимальной таблице, которая может быть задана. При 64 Кб сегментах можно адресовать до 256 сегментов, для чего требуется таблица сегментов самое большее длиной 1024 байта и код длины 15. Эти соотношения приведены в табл. 5.4.
Таблица 5.4
Размер сегмента |
Размер поля индекса сегмента, бит |
Число адресуемых сегментов |
Максимальная таблица сегментов |
Приращение таблицы, байт |
||
Размер, байт |
Применяемый код длины |
|||||
64 Кб |
8 |
256 |
1024 |
15 |
64 |
|
1 Мб |
4 |
16 |
64 |
0 |
64 |
В таблице 5.5 перечислены максимальные размеры таблицы страниц и приращения, в которых может быть выражен объем таблицы страниц.
Таблица 5.5
Размер |
Число страниц в сегменте |
Максимальная таблица страниц |
Приращение таблицы, байт |
||||
Сегмента |
страницы, байт |
поля индекса страницы, бит |
Размер, байт |
Применяемый код длины |
|||
64 Кб |
2 |
5 |
32 |
64 |
15 |
4 |
|
64 Кб |
4 |
4 |
16 |
32 |
15 |
2 |
|
1 Мб |
2 |
9 |
512 |
1024 |
15 |
64 |
|
1 Мб |
4 |
8 |
256 |
512 |
15 |
32 |
Глава 6. Прерывания
Система прерываний позволяет изменять состояние процессора при возникновении определенных условий в самом процессоре, в системе или вне ее. Для немедленного распознавания условий, имеющих высокий приоритет, и обеспечения быстрой реакции на них условия прерываний делятся на шесть классов: прерывания ввода-вывода, внешние прерывания, программные прерывания, прерывания при обращении к супервизору, прерывания от схем контроля машины и прерывания повторного пуска.
6.1 Действия при прерываниях
Прерывание сводится к сохранению текущего PSW в качестве старого PSW, к последующей записи более подробной информации о причине прерывания и к выборке нового PSW. Работа продолжается в соответствии с управляющей информацией, заданной новым PSW.
Старое PSW, записанное при прерывании, обычно содержит адрес команды, которая выполнялась бы следующей, если бы прерывания не произошло, благодаря чему обеспечивается продолжение выполнения прерванной программы. При программных прерываниях и прерываниях при обращении к супервизору записывается также код, определяющий длину последней выполненной команды, что позволяет программе реагировать на причину прерывания. В случае некоторых программных прерываний, после которых обычно возобновляется выполнение команды, вызвавшей прерывание, адрес команды непосредственно указывает на последнюю выполненную команду.
Прерывание, за исключением прерываний повторного пуска, может происходить только тогда, когда процессор находится в состоянии “работа”. Прерывания повторного пуска могут происходить как в состоянии “работа”, так и в состоянии “стоп”.
Приведенные в последующих разделах сведения об идентификации источников и моментов прерываний, а также и о том, как заканчивается выполнение команд в случае прерываний, сведены в табл. 6.1.
Замечания по программированию
Проверка формата нового PSW при прерываниях рассмотрена в разделе 4.3.
Таблица 6.1. Действия при прерываниях
Источник прерывания |
Код прерывания |
Биты маски PSW |
Биты маски в управляющих регистрах |
Код длины |
Выполнение команды, указанной старым PSW |
|||
BC |
EC |
регистр |
бит |
|||||
Сигнал от схем контроля (старое PSW 48, новое PSW 112) |
||||||||
Неотложные условия |
mmmm mmmm mmmm mmmm1 |
13 |
13 |
х |
Прекращается или аннулируется |
|||
Подавляемые условия |
mmmm mmmm mmmm mmmm1 |
13 |
13 |
14 |
4-7 |
х |
Не затрагивается |
|
Сигнал при обращении к супервизору (старое PSW 32, новое PSW 96) |
||||||||
Биты команды |
0000 0000 rrrr rrrr |
1, 2 |
Завершается |
|||||
Программное (старое PSW 40, новое PSW 104) |
||||||||
Код операции |
0000 0000 n000 0001 |
1, 2, 3 |
Подавляется |
|||||
Привилегированная операция |
0000 0000 n000 0010 |
1, 2 |
Подавляется |
|||||
Команда ВЫПОЛНИТЬ |
0000 0000 n000 0011 |
2 |
Подавляется |
|||||
Защита памяти |
0000 0000 n000 0100 |
0, 1, 2, 3 |
Подавляется или прекращается |
|||||
Адресация |
0000 0000 n000 0101 |
0, 1, 2, 3 |
Подавляется или прекращается |
|||||
Спецификация |
0000 0000 n000 0110 |
0, 1, 2, 3 |
Подавляется или завершается |
|||||
Данные |
0000 0000 n000 0111 |
2, 3 |
Подавляется или прекращается |
|||||
Переполнение с фиксированной точкой |
0000 0000 n000 1000 |
36 |
20 |
1, 2 |
Завершается |
|||
Деление с фиксированной точкой |
0000 0000 n000 1001 |
37 |
21 |
1, 2 |
Подавляется или завершается |
|||
Десятичное переполнение |
0000 0000 n000 1010 |
38 |
22 |
2, 3 |
Завершается |
|||
Десятичное деление |
0000 0000 n000 1011 |
39 |
23 |
2, 3 |
Подавляется |
|||
Переполнение порядка |
0000 0000 n000 1100 |
1, 2 |
Завершается |
|||||
Исчезновение порядка |
0000 0000 n000 1101 |
1, 2 |
Завершается |
|||||
Потеря значимости |
0000 0000 n000 1110 |
1, 2 |
Завершается |
|||||
Деление с плавающей точкой |
0000 0000 n000 1111 |
1, 2 |
Подавляется |
|||||
Использование сегмента |
0000 0000 n001 0000 |
1, 2, 3 |
Аннулируется |
|||||
Использование страницы |
0000 0000 n001 0001 |
1, 2, 3 |
Аннулируется |
|||||
Спецификация переадресации |
0000 0000 n001 0010 |
1, 2, 3 |
Подавляется |
|||||
Специальная операция |
0000 0000 n001 0011 |
0 |
1 |
2 |
Подавляется |
|||
Мониторное событие |
0000 0000 n100 0000 |
8 |
162 |
2 |
Завершается |
|||
Программное событие |
0000 0000 1e0e eeee3 |
-4 |
1 |
9 |
0-3 |
0, 1, 2, 3 |
Завершается 5 |
|
Внешнее (старое PSW 24, новое PSW 88) |
||||||||
Интервальный таймер |
0000 0000 1nnn nnnn |
7 |
7 |
0 |
24 |
х |
Не затрагивается |
|
Кнопка прерывания |
0000 0000 n1nn nnnn |
7 |
7 |
0 |
25 |
х |
Не затрагивается |
|
Внешний сигнал 2 |
0000 0000 nn1n nnnn |
7 |
7 |
0 |
26 |
х |
Не затрагивается |
|
Внешний сигнал 3 |
0000 0000 nnn1 nnnn |
7 |
7 |
0 |
26 |
х |
Не затрагивается |
|
Внешний сигнал 4 |
0000 0000 nnnn 1nnn |
7 |
7 |
0 |
26 |
х |
Не затрагивается |
|
Внешний сигнал 5 |
0000 0000 nnnn n1nn |
7 |
7 |
0 |
26 |
х |
Не затрагивается |
|
Внешний сигнал 6 |
0000 0000 nnnn nn1n |
7 |
7 |
0 |
26 |
х |
Не затрагивается |
|
Внешний сигнал 7 |
0000 0000 nnnn nnn1 |
7 |
7 |
0 |
26 |
х |
Не затрагивается |
|
Оповещение о сбое |
0001 0010 0000 0000 |
7 |
7 |
0 |
16 |
х |
Не затрагивается |
|
Экстренный сигнал |
0001 0010 0000 0001 |
7 |
7 |
0 |
17 |
х |
Не затрагивается |
|
Внешний вызов |
0001 0010 0000 0010 |
7 |
7 |
0 |
18 |
х |
Не затрагивается |
|
Синхронизация часов |
0001 0000 0000 0011 |
7 |
7 |
0 |
19 |
х |
Не затрагивается |
|
Компаратор |
0001 0000 0000 0110 |
7 |
7 |
0 |
20 |
х |
Не затрагивается |
|
Таймер CPU |
0001 0000 0000 0101 |
7 |
7 |
0 |
21 |
х |
Не затрагивается |
|
Ввод-вывод (старое PSW 56, новое PSW 120) |
||||||||
Канал 0 |
0000 0000 dddd dddd6 |
0 |
6 |
2 |
07 |
х |
Не затрагивается |
|
Канал 1 |
0000 0001 dddd dddd6 |
1 |
6 |
2 |
17 |
х |
Не затрагивается |
|
Канал 2 |
0000 0010 dddd dddd6 |
2 |
6 |
2 |
27 |
х |
Не затрагивается |
|
Канал 3 |
0000 0011 dddd dddd6 |
3 |
6 |
2 |
37 |
х |
Не затрагивается |
|
Канал 4 |
0000 0100 dddd dddd6 |
4 |
6 |
2 |
47 |
х |
Не затрагивается |
|
Канал 5 |
0000 0101 dddd dddd6 |
5 |
6 |
2 |
57 |
х |
Не затрагивается |
|
Канал 6 и т.д. |
cccc cccc dddd dddd6 |
6 |
6 |
2 |
62 |
х |
Не затрагивается |
|
Повторный пуск (старое PSW 8, новое PSW 0) |
||||||||
Кнопка повторного пуска |
0000 0000 0000 00008 |
х |
Не затрагивается |
|||||
1 64-разрядный код прерывания от схем контроля записывается в область с адресами 232-239.2 И дополнительно следующие биты управляющего регистра.3 Если код прерывания свидетельствует о программном событии, то в память записывается нулевой код длины только в том случае, когда не все биты 12-15 кода прерывания установлены в нуль.4 В режиме BC регистрация программных событий не обеспечивается.5 Если одновременно возникший особый случай в программе не вызывает аннулирования, подавления или прекращения выполнения элемента операции.6 В режиме EC адрес ввода-вывода записывается в ячейки 186-187.7 В режиме BC маска каналов в управляющем регистре 2 не влияет на каналы 0-5.8 Биты 16-31 старого PSW в режиме BC устанавливаются в нуль; в режиме EC код прерывания не предусматривается.Обозначения:c - биты адреса канала;d - биты адреса устройства;e - возможный ненулевой код, указывающий другое условие программного прерывания;m - биты кода, зависящего от модели;n - возможная индикация единичными битами других одновременных условий прерывания;r - биты поля 1 команды ОБРАЩЕНИЕ К СУПЕРВИЗОРУ;x - в режиме BC код не предсказуем, а в режиме EC не записывается. |
Идентификация источника прерывания
Деление прерываний на шесть классов (прерывания ввода-вывода, внешние прерывания, программные прерывания, прерывания при обращении к супервизору, прерывания от схем контроля машины и прерывания повторного пуска) основано на том, что за каждым классом закреплены свои области памяти, в которых запоминается старое PSW и из которых производится выборка нового PSW. Для большинства классов прерываний причины прерываний уточняются кодом прерывания, а для некоторых классов - на основе дополнительной информации, заносимой в основную память в процессе прерывания. Для прерываний ввода-вывода, внешних прерываний, прерываний при обращении к супервизору и программных прерываний код прерывания состоит из 16 битов. Он заносится в старое PSW, если задан режим BC, и в отдельную область основной памяти, если задан режим EC.
При прерываниях ввода-вывода в область памяти с адресом 64 заносится дополнительная информация - слово состояния канала (CSW); более подробную информацию может дать ограниченная регистрация состояния канала в области с адресом 176 и расширенная регистрация ввода-вывода.
При программных прерываниях могут дополнительно сообщаться номер класса монитора и код обращения к монитору, адрес, если имеет место особый случай переадресации, а также код PER и адрес PER, которые заносятся в области памяти с адресами 144-159.
При прерываниях от схем контроля код прерывания состоит из 64 битов и заносится в область основной памяти с адресом 232. Более подробная информация, определяющая причину прерывания и служащая для восстановления состояния процессора, может содержаться в областях регистрации и сохранения.
Распределение и формат постоянно распределенных областей памяти показаны в табл. 6.8 и 6.9.
Запрещенные и разрешенные прерывания
В процессоре все прерывания ввода-вывода, внешние прерывания и прерывания от схем контроля машины, а также некоторые программные прерывания могут быть разрешены (размаскированы) или запрещены (замаскированы). Если прерывания некоторого класса разрешены, то они могут произойти. Когда в процессоре прерывания замаскированы, условия, вызывающие прерывания ввода-вывода, остаются в ожидании обработки, а условия неразрешенного программного прерывания игнорируются, если не считать, что на некоторые из причин этого прерывания указывает также и состояние признака результата. Условия внешних прерываний и прерываний от схем контроля в зависимости от их типа остаются в ожидании обработки или игнорируются.
Программные прерывания, для которых маска не предусмотрена, а также прерывания при обращении к супервизору и прерывания повторного пуска происходят независимо от состояния процессора. Прерывание выполняется процессором в зависимости от маски в текущем PSW и в управляющих регистрах. Установкой маски можно запретить все прерывания внутри класса или избирательно разрешить прерывания, вызываемые определенными причинами. Каждый бит маски в PSW закреплен за некоторой конкретной причиной, как, например, в случае четырех маскируемых прерываний, или же имеет место иерархия масок, при которой маска в PSW управляет всеми прерываниями заданного вида, а маски в управляющих регистрах осуществляют избирательный контроль за источником прерываний.
Если бит маски установлен в единицу, соответствующее прерывание в процессоре разрешено. Если бит маски установлен в нуль, прерывания замаскированы, т. е. не разрешаются. Прерывания, которыми управляет иерархия масок, разрешены только тогда, когда все биты масок в иерархии установлены в единицы.
Замечания по программированию
Маски в PSW - это средство запрещения всех маскируемых прерываний; например, новое PSW, которое становится текущим в результате некоторого прерывания, может запретить последующие прерывания. Более того, маски позволяют установить иерархию приоритетов прерываний, при введении который условие, относящееся к одному классу иерархии, может вызывать прерывание программы, обрабатывающей прерывание другого класса, но не наоборот. Чтобы предотвратить прерывание программы, обрабатывающей прерывание другого класса, до того как будут выполнены все необходимые действия, новое PSW должно запретить процессору дальнейшие прерывания этого класса или класса, имеющего более низкий приоритет.
Так как биты маски в управляющих регистрах в ходе прерывания не изменяются, эти маски нельзя использовать для предотвращения последующих прерываний, если они относятся к одному и тому же классу. Маски в управляющих регистрах - это средство, позволяющее выборочно разрешить прерывания от одного источника и запретить прерывания того же класса от других источников.
Код длины команды
Код длины команды (ILC) занимает 2 бита и определяет длину последней выполнявшейся команды. Он позволяет определить, какая команда вызывала прерывание при условии, что в старом PSW указан адрес следующей по порядку команды. Код длины команды устанавливается также при выполнении команд перехода с возвратом.
В старом PSW, указывающем режим BC, код длины команды запоминается в битах 32 и 33. Он имеет смысл только после программных прерываний или прерываний при обращений к супервизору. Код не указывает длину последней выполнявшейся команды и является непредсказуемым для прерываний ввода-вывода, внешних прерываний, прерываний от схем контроля машины и прерываний повторного пуска. Точно так же код длины команды непредсказуем, когда PSW заносится в память в ходе записи состояния и когда производится индикация PSW на панели оператора.
Когда старое PSW задает режим EC, код длины команды для прерываний при обращении к супервизору и для программных прерываний записывается в биты 5 и 6 байтов с адресами 137 и 141 соответственно. Для прерываний ввода-вывода, внешних прерываний, прерываний от схем контроля машины и прерываний повторного пуска код не записывается. При прерываний при обращении к супервизору и программных прерываниях код длины команды, не равный нулю, определяет длину в полусловах последней выполнявшейся команды. При выполнении некоторой команды с помощью команды ВЫПОЛНИТЬ устанавливается код длины команды 2, определяющий длину команды ВЫПОЛНИТЬ, а не подчиненной команды, которая ею инициируется.
Если код длины команды не равен нулю, его величина определяется двумя левыми битами кода команды. Эта величина не зависит от того, закреплен ли код операций за какой-либо командой и предусмотрена ли эта команда на данном процессоре. В табл. 6.2 приведены значения кода длины команды.
Таблица 6.2. Значения кода длины команды
Код длины команды |
Биты команды 0-1 |
Длина команды |
||
Десятичный |
двоичный |
|||
0 |
00 |
Не указана |
||
1 |
01 |
00 |
Одно полуслово |
|
2 |
10 |
01 |
Два полуслова |
|
2 |
10 |
10 |
Два полуслова |
|
3 |
11 |
11 |
Три полуслова |
Нулевой код длины команды
Если после программного прерывания обнаруживается, что код длины команды равен нулю, это означает, что программе не сообщается о том, где находится команда, вызвавшая прерывание. Код длины команды устанавливается в нуль только в следующих случаях.
1. Распознается особый случай спецификации, причиной которого является некорректность формата PSW, вызванная прерыванием или выполнением команды ЗАГРУЗКА PSW. Этот особый случай не может быть вызван нечетностью адреса команды в новом PSW. При выполнении команды ЗАГРУЗКА PSW адрес команды заменяется содержанием нового PSW. Когда некорректное PSW вводится в результате прерывания, ошибки в формате нельзя связать ни с одной из команд.
2. На некоторых моделях, когда в процессе обращения для записи распознается особый случай адресации (за исключением особых случаев, выявляемых при неявных обращениях к строкам таблиц динамической переадресации) или особый случай защиты. В этой ситуации прерывание, вызванное особым случаем, задерживается, причем время задержки или количество команд, выполняемых до прерывания, непредсказуемо. Программа не может определить ни адрес команды, вызвавшей прерывание, ни длину команды, выполнявшейся последней.
Если команда ЗАГРУЗКА PSW или ОБРАЩЕНИЕ К СУПЕРВИЗОРУ делает текущим PSW с некорректным форматом, причем адрес команды в этом PSW четный, и одновременно команда ЗАГРУЗКА PSW или ОБРАЩЕНИЕ К СУПЕРВИЗОРУ воспринимается процессором как событие в программе, то код длины команды устанавливается в нуль, как это и требуется при особых случаях спецификации.
Код длины команды в особых случаях при выборке команды
Если программное прерывание происходит вследствие особого случая, препятствующего доступу к команде, то код длины команды не может быть установлен на основе первых двух битов команды. Что касается установки кода длины команды, то различаются две ситуации.
1. Когда распознается особый случай спецификации вследствие нечетного адреса команды либо при выборке команды встречается особый случай защиты, адресации или спецификации переадресации, то устанавливается код длины команды 1, 2 или 3, что указывает на количество полуслов, на которое увеличен адрес команды. Если адрес команды в PSW уменьшить на величину, соответствующую числу полуслов, указанному кодом длины команды, то получится первоначально заданное в PSW значение адреса команды. Будет ли код равен 1, 2 или 3, предсказать невозможно.
2. Когда при доступе к команде распознается особый случай использования сегмента или страницы, значение кода длины команды равно 1, 2 или 3. Будет ли код равен 1, 2 или 3, предсказать невозможно. Операция в этом случае аннулируется, а адрес команды не увеличивается.
Если может произойти выборка первого полуслова команды, но при выборке второго или третьего полуслова распознается особый случай при обращении, то код длины команды необязательно соответствует первым двум битам команды.
Если встречаются какие-либо особые случаи при выборке подчиненной команды, которая инициируется командой ВЫПОЛНИТЬ, код длины команды устанавливается равным 2.
Замечания по программированию
Код длины при программном прерывании, не равный нулю, определяет количество полуслов, на которое необходимо уменьшить адрес команды в старом PSW, чтобы получить адрес последней выполнявшейся команды. Однако существуют ситуации, в которых ненулевой код длины не позволяет получать адрес последней выполнявшейся команды:
1.) прерывание вызвано особым случаем использования сегмента или страницы;
2.) прерывание, вызываемое событием в программе, происходит до завершения выполнения прерываемой команды;
3.) прерывание вызвано событием в программе, возникшим в результате выполнения команды перехода, команды ЗАГРУЗКА PSW или ОБРАЩЕНИЕ К СУПЕРВИЗОРУ;
4.) прерывание вызвано особым случаем доступа в процессе выборки команды; адрес команды был введен в PSW не в результате последовательного выполнения команд, а каким-либо другим путем (командой перехода, прерыванием или командой ЗАГРУЗКА PSW);
5.) прерывание вызвано особым случаем спецификации, связанным с нечетностью адреса команды;
6.) прерывание вызвано особым случаем доступа или спецификации, встретившимся в процессе выборки команды; причем могли быть внесены или оказались уже внесенными изменения в параметры, управляющие соотношением между логическим и реальным адресами (изменение режима переадресации без полной замены PSW; изменение параметров в управляющих регистрах 0 и 1, управляющих переадресацией; внесение некорректных значений в биты 0-7 PSW расширенного режима управления).
В ситуациях 1 и 2 операция аннулируется, а адрес команды указывает последнюю выполнявшуюся команду. Это единственные случаи, в которых адрес команды в старом PSW идентифицирует команду, вызвавшую прерывание.
В ситуациях 3--5 адрес команды в старом PSW программных прерываний был заменен; его нельзя вычислить, используя появившийся в PSW новый адрес.
В ситуации 6 логический адрес команды в PSW заменен не был, однако соответствующий реальный адрес после изменения стал другим.
Когда бит 8 (событие в программе) в коде прерывания установлен в единицу, адрес PER в области памяти с адресами 153-155 указывает местоположение команды, вызывающей прерывание, и в данном случае код длины команды представляет собой избыточную информацию. Точно так же информация, содержащаяся в коде длины команды, является избыточной, если операция аннулируется, так как в этом случае код длины команды можно определить по коду операции команды, которая указана старым PSW.
Момент прерывания
Прерывания разрешены только в промежутках между операциями, т. е. прерывание может произойти после выполнения одной операции и до начала выполнения следующей. Операцией считается завершаемое выполнение команды.
Для некоторых команд, называемых прерываемыми командами, прерывание разрешено после частичного выполнения команды. Считается, что выполнение прерываемой команды складывается из выполнения ряда элементов операций, и процессору разрешается производить прерывания между этими элементами. Объем данных, обработанных в процессе выполнения элемента операции, зависит от конкретной команды и зависит от модели и конкретных условий, вызвавших выполнение команды, которая может быть прервана.
Когда в данной книге идет речь о моментах прерывания, включая и те прерывания, которые происходят в процессе выполнения прерываемой команды, используется термин “элемент операции”. При использовании этого термина подразумевается, что завершаемое выполнение непрерываемой команды - это фактическая операция, состоящая из одного элемента.
Замечания по программированию
Любые прерывания, за исключением некоторых программных прерываний и прерываний при обращении к супервизору, могут происходить после частичного выполнения прерываемой команды. Говоря более конкретно, в промежутках между элементами операции могут происходить прерывания ввода-вывода, внешние прерывания и прерывания от схем контроля, а также программные прерывания, обусловленные особыми случаями доступа.
Выполнение команд
Разновидности окончаний
Выполнение команд может окончиться одним из четырех способов: завершением, аннулированием, подавлением или прекращением.
Когда выполнение команды завершается, результаты получаются такими, какими они должны быть согласно описанию. Когда прерывание происходит после завершения выполнения команды, адрес команды в старом PSW указывает на команду, которая должна выполняться следующей.
Когда выполнение команды подавляется, команда выполняется так, как если бы была задана фиктивная операция “нет операции”. Содержимое всех полей, предназначенных для записи результатов, включая признак результата, не изменяется. После прерывания в результате подавления адрес команды в старом PSW указывает команду, расположенную непосредственно за подавленной командой.
Аннулирование аналогично подавлению, отличие лишь в том, что при прерывании после выполнения аннулированной команды адрес команды в старом PSW указывает команду, которая была аннулирована, а не команду, расположенную непосредственно за аннулированной командой.
Когда выполнение команды прекращается, содержимое всех полей, которые должны измениться в результате выполнения команды, непредсказуемо. Содержимое всех полей, отведенных под результат, может быть заменено полностью или частично или вообще не заменено, а признак результата может быть изменен, если это изменение вызывается командой. Если прекращение не вызвано сигналом от схем контроля при условии нарушения, то оно не оказывает никакого другого влияния на состояние или работу системы. После прерывания в результате прекращения адрес команды в старом PSW указывает на команду, расположенную непосредственно за прекращенной командой.
Выполнение прерываемых команд
Выполнение прерываемой команды завершается, когда завершаются все элементы операции, связанные с этой командой. Когда прерывание происходит после завершения, аннулирования или подавления некоторого элемента операции, все предшествующие элементы операции уже завершены.
После завершения выполнения элемента операции, не являющегося последним, или после аннулирования любого элемента операции адрес команды в старом PSW указывает прерванную команду, а параметрам операндов присваиваются такие значения, которые могут обеспечить возобновление выполнения прерванной команды с момента прерывания, когда старое PSW, записанное в результате прерывания, снова станет текущим. Присвоенное параметрам операндов значение зависит от команды. Когда элемент операции подавляется, адрес команды в старом PSW указывает на команду, расположенную непосредственно за подавленной. Но параметрам операндов присваивается такое значение, при котором они будут указывать степень завершенности выполнения команды. Если после снятия условий, вызывавших подавление, команда выполняется вторично, то выполнение ее начинается с момента прерывания. Как и в случае с завершением или аннулированием выполнения команды, значение, присваиваемое параметрам операндов, зависит от команды.
Когда при выполнении прерываемой команды элемент операции прекращается, содержимое всех полей, которые должны быть изменены этой командой, вообще говоря, является непредсказуемым. После прерывания адрес команды в старом PSW указывает на команду, расположенную непосредственно за прерванной командой.
6.2 Прерывания от схем контроля машины
Прерывания от схем контроля являются тем средством, которое позволяет сообщить программе о сбоях в работе оборудования. Информация сообщается для того, чтобы помочь программе определить место и степень повреждения.
При прерываниях от схем контроля старое PSW записывается в память по адресу 48, а выборка нового PSW производится по адресу 112. Когда в старом PSW задан режим BC, код прерывания и код длины команды непредсказуем.
Причина и серьезность неисправности при сбоях оборудования идентифицируются 64-битовым кодом прерывания от схем контроля, записываемым в память по адресу 232. Дополнительная информация, уточняющая причину прерывания и локализующая неисправность, может быть записана в область памяти с адресами 216-511, а также в область, указанную управляющим регистром 15.
Прерыванием и записью соответствующей информации управляют бит 13 слова состояния программы и биты управляющего регистра 14. Более подробно информация по этому вопросу изложена в главе 12.
6.3 Программные прерывания
Программные прерывания возникают в ходе выполнения команды при неправильной спецификации, неправильном использовании команд и данных или же при обнаружении программных или мониторных событий.
При программном прерывании старое PSW записывается в память по адресу 40, а выборка нового PSW производится по адресу 104.
Причина прерывания идентифицируется кодом прерывания. Если в старом PSW задан режим BC, код прерывания и код длины команды помещаются в старое PSW; если задан режим EC, код прерывания помещается в память по адресам 142-143, а код длины команды - в биты 5 и 6 байта 141, причем во все остальные биты байта заносятся нули; нули заносятся и во все биты байта 140. В некоторых случаях в основную память по адресам 144-159 записывается дополнительная информация, идентифицирующая причину прерывания.
За исключением условий, вызывающих программное событие, условия, вызывающие прерывания, идентифицируются значением семи младших битов кода прерывания. Несколько условий не могут быть идентифицированы одновременно. Биты 0-7 кода прерывания устанавливаются в нуль.
На условие программного события указывает единица в бите 8 кода прерывания, причем в биты 0-7 заносятся нули. Условие программного события может идентифицироваться одновременно с другим условием программного прерывания; в этом случае в бит 8 заносится единица, а в биты 9-15 - закодированная величина.
Программное прерывание может произойти только тогда, когда соответствующий бит маски (если таковой имеется) равен единице. Маска программы в PSW позволяет замаскировать четыре особых случая; содержимое бита 1 управляющего регистра 0 определяет, будет ли команда УСТАНОВИТЬ МАСКУ СИСТЕМЫ вызывать особый случай, называемый специальной операцией; биты 16-31 управляющего регистра 8 управляют прерываниями, возникающими вследствие мониторных событий; в режиме EC предусмотрены маски для управления прерываниями, которые обусловлены программными событиями. Если бит маски содержит нуль, условие игнорируется; оно также не сохраняется для последующей обработки.
Замечания по программированию
Когда при программном прерывании новое PSW имеет некорректный формат или вызывает особый случай, распознаваемый при выборке команды, то имеет место цепочка программных прерываний. Описание того, как прекращается цепочка программных прерываний, можно найти в разделе 6.8.
Некоторые из условий, определяемые как особые случаи при выполнении программы, могут распознаваться также при операциях ввода-вывода. При этом причина прерывания указывается в слове состояния канала.
Условия программных прерываний
Особый случай употребления кода операции
Особый случай употребления кода операции распознается тогда, когда процессор пытается выполнить некоторую команду с недействительным кодом операции: или такому коду не соответствует никакая операция, или на данном процессоре не предусмотрено выполнение команды с этим кодом операции. При распознавании особого случая в качестве кода операции рассматриваются первые 8 битов команды или первые 16 битов, если значение первых 8 битов выражается шестнадцатеричной величиной B2.
Операция подавляется.
Код длины команды равен 1, 2 или 3.
Замечания по программированию
Если в командах ввода-вывода содержимое битов 0-7 имеет значение 9C, 9D или 9E, то бит 15 дополнительно используется как бит кода операции. Биты 8-14 на равенство нулю не проверяются, и по ним никогда не распознается особый случай употребления кода операции.
Для того чтобы существующие программы могли работать и в том случае, когда коды операций будут расширены для обеспечения новых функций (если это будет иметь место), в биты 8-14 следует помещать только нули. Точно так же нули следует записывать в биты 8-15 в команду с кодом операции 9F. В соответствии с этими рекомендациями коды операций для семи команд ввода-вывода имеют следующий вид: 9C00, 9C01, 9D00, 9D01, 9E00, 9E01, 9F00.
На некоторых моделях предусмотрены команды, не описанные в этой книге, например команды эмуляции и команды, введенные по заказу пользователя. Коды, не описанные в данной книге, могут и не вызывать особого случая употребления кода операции. Более того, эти команды могут вызывать изменение режима выполнения операции или каким-либо образом влиять на выполнение последующих команд. Чтобы исключить возможность нежелательного влияния, не указанные в списках коды операций следует использовать только в том случае, когда вы хотите реализовать связанную с этим кодом функцию.
В тех случаях, когда программист сознательно желает вызвать индикацию особого случая употребления кода операции, можно воспользоваться кодом операции 00 в двухбайтовых командах и 16-битовыми кодами операций от B2E0 до B2EF в четырехбайтовых командах. Эти коды отведены для нужд программного обеспечения, и не предполагается, чтобы когда-либо в будущем в процессоре появились операции с этими кодами.
Особый случай употребления привилегированной операции
Этот случай имеет место, если привилегированная команда встречается в состоянии “задача”.
Операция подавляется.
Код длины команды равен 1 или 2.
Особый случай употребления команды ВЫПОЛНИТЬ
Этот случай имеет место, если команда ВЫПОЛНИТЬ ссылается на команду ВЫПОЛНИТЬ.
Операция подавляется.
Код длины команды равен 2.
Особый случай защиты памяти
Этот случай имеет место, когда процессор обращается в область памяти, защищенную от этого типа обращения, а ключ памяти не соответствует ключу защиты в текущем PSW.
Выполнение команды подавляется, если команда, в том числе подчиненная команда для команды ВЫПОЛНИТЬ, находится в области памяти, защищенной от выборки. Когда в процессе обращения за операндом в память имеет место особый случай защиты памяти, операция прекращается всегда, за исключением некоторых особых команд, выполнение которых при этом подавляется. В табл. 6.3 указаны действия, выполняемые при особых случаях защиты памяти.
Таблица 6.3. Действия при особых случаях защиты памяти и адресации
Особый случай |
Действия |
|||
при выборке строки таблицы переадресации |
при выборке команды |
при обращении к операнду |
||
Зашиты |
Не бывает |
Подавление |
Подавление команд LPSW, SSM, STNSM, STOSM, SCKC, SPT, SPX и прекращение * остальных команд |
|
Адресации |
Подавление |
Подавление |
Подавление команд LPSW, SSM, STNSM, STOSM, SCKC, SPT, SPX и прекращение остальных команд |
|
* При прекращении могут измениться только те поля, которые должны быть изменены этой операцией и которые не вызывают особого случая доступа. Поэтому, когда команда должна изменить содержимое только основной памяти и каждый байт поля результатов вызывает особый случай доступа, производится подавление команды. Термин “поле результатов” в этом смысле включает признак результата и регистры (если они есть), которые должны быть изменены командой. |
В случае выполнения выборки защищенная информация не загружается в адресуемый регистр и не пересылается в другую область памяти. Когда часть операнда защищена против записи, а часть не защищена, то может произойти запись в незащищенную часть операнда. Содержимое защищенной части операнда не изменяется.
При обращении к защищенной области за операндом код длины команды может принимать значения 1, 2 или 3 и указывает длину команды, вызвавшей обращение. Но на некоторых моделях при обращении к защищенной области памяти для записи операнда код длины команды может равняться нулю.
Если часть команды защищена против выборки, код длины команды равен 1, 2 или 3, что указывает на количество полуслов, на которое был увеличен адрес команды. Невозможно предсказать заранее, будет ли код равен 1, 2 или 3.
Особый случай адресации
Особый случай адресации распознается тогда, когда процессор обращается к недоступной для него области памяти. Основная память не доступна процессору, когда эта область не предусмотрена, когда физический блок памяти не подключен к процессору или когда отключено питание физического блока памяти. Адрес, указывающий на недоступную область памяти, считается некорректным.
Если адрес команды, в том числе команды, инициируемой командой ВЫПОЛНИТЬ, некорректен, выполнение команды подавляется. Точно так же элемент операции подавляется, когда в процессе неявного обращения к строке таблицы динамической переадресации (DAT) имеет место этот особый случай. Если адрес операнда, который может быть динамически преобразован, указывает на недоступную область памяти, операция прекращается во всех случаях, за исключением особых команд, которые подавляются. Действия, выполняемые при особых случаях адресации, приведены в табл. 6.3.
Данные в памяти не изменяются, пока эта область не станет доступной. Если часть области операнда доступна процессору, а другая часть нет, запись может быть произведена в доступную часть.
В случае некорректного адреса операнда или некорректного адреса строки таблицы DAT, используемой при обращении к операнду, код длины команды равен 1, 2 или 3, что указывает на длину команды, вызвавшей обращение. Если, однако, особый случай адресации возникает как результат попытки произвести запись и адрес может быть динамически преобразован, но указывает на недоступный операнд, код длины на некоторых моделях может быть равен нулю.
Если часть команды недоступна или адрес строки таблицы динамической переадресации, используемой при выборке команды, некорректен, код длины команды равен 1, 2 или 3, что указывает на количество полуслов, на которое был увеличен адрес команды. Будет ли код равен 1, 2 или 3, предсказать невозможно.
Особый случай спецификации
Особый случай спецификации возникает по следующим причинам.
1. Адрес команды не является четным.
2. Адрес операнда не соответствует целочисленной границе, соблюдение которой требуется при выполнении данной команды.
3. Четыре младших бита адреса блока в командах УСТАНОВИТЬ КЛЮЧ ПАМЯТИ и ПРОЧИТАТЬ КЛЮЧ ПАМЯТИ не равны нулю.
4. Поле R команды, требующей указания регистра с четным адресом, определяет регистр с нечетным адресом.
5. Для короткого или длинного операнда указан номер регистра с плавающей точкой, отличающийся от 0, 2, 4 или 6, либо для расширенного операнда указывается номер регистра с плавающей точкой, отличающийся от 0 и 4.
6. Множитель или делитель в операциях десятичной арифметики превышает по размерам 15 цифр и знак.
7. При десятичном умножении или делении поле первого операнда короче поля второго операнда или равно ему.
8. Биты 8-11 команды ВЫЗОВ МОНИТОРА не установлены в нуль.
9. В процессоре, который не оборудован для работы в режиме EC, задан режим EC (бит 12 PSW установлен в единицу).
10. В режиме EC в незакрепленный бит PSW занесена единица (биты 0, 2-4, 16-17, 34-39).
Выполнение команды, адрес которой указан в старом PSW, подавляется. Однако в случаях 9 и 10 производится завершение операции, которая вводит новое PSW, и сразу же после него происходит прерывание.
Если адрес команды нечетный (случай 1), код длины команды равен 1, 2 или 3, что указывает на число полуслов, на которое был увеличен код команды. Невозможно предсказать, будет ли код равен 1, 2 или 3.
Для случаев 2-8 код длины команды равен 1, 2 или 3, что указывает на длину команды, вызвавшей прерывание.
Когда в соответствии с п. 9 и 10 распознается особый случай и некорректное значение бита введено командой ЗАГРУЗКА PSW или в результате прерывания, код длины команды равен нулю. Когда эти особые случаи возникают в результате выполнения команды УСТАНОВИТЬ МАСКУ СИСТЕМЫ или ЗАПИСЬ В ПАМЯТЬ И МОДИФИКАЦИЯ МАСКИ СИСТЕМЫ ЛОГИЧЕСКИМ СЛОЖЕНИЕМ, код длины команды равен двум.
В разделе 4.3 рассматривается, когда именно распознаются особые случаи, связанные с PSW.
Особый случай в данных
Особый случай в данных распознается когда:
1.) знак или коды цифр операндов в командах десятичной арифметики или в команде ПРЕОБРАЗОВАНИЕ В ДВОИЧНУЮ являются некорректными;
2.) поля операндов в командах СЛОЖЕНИЕ ДЕСЯТИЧНОЕ, СРАВНЕНИЕ ДЕСЯТИЧНОЕ, ДЕЛЕНИЕ ДЕСЯТИЧНОЕ, УМНОЖЕНИЕ ДЕСЯТИЧНОЕ и ВЫЧИТАНИЕ ДЕСЯТИЧНОЕ перекрываются так, что их младшие байты не совпадают; поля операндов в команде СЛОЖЕНИЕ С ОЧИСТКОЙ перекрываются и младшие байты второго операнда расположены правее младших байтов первого операнда;
3.) множимое команды УМНОЖЕНИЕ ДЕСЯТИЧНОЕ не имеет достаточного количества старших нулей.
За исключением команд ОТРЕДАКТИРОВАТЬ и ОТРЕДАКТИРОВАТЬ И ОТМЕТИТЬ, операция подавляется, когда код знака некорректен, независимо от того, существуют ли какие-либо другие условия, вызывающие особый случай; в других случаях операция прекращается. Однако или поле знака в младшем байте поля результата остается неизменным, или устанавливается выбранный код знака; содержимое оставшейся части поля результата непредсказуемо.
При выполнении команды ОТРЕДАКТИРОВАТЬ или ОТРЕДАКТИРОВАТЬ И ОТМЕТИТЬ некорректный код знака не распознается, а при особом случае в данных операциях прекращается.
Код длины команды равен 2 или 3.
Замечания по программированию
Если после программного прерывания из-за особого случая в данных программа обнаруживает некорректность кода знака, то это означает. что операция была подавлена, если одновременно выполняются следующие два условия:
1.) Некорректный знак не находится в цифровой части поля результата;
2.) Код знака расположен так, что при выполнении данной команды он проверяется на корректность знака (это условие не относится к первому операнду команды СЛОЖЕНИЕ С ОЧИСТКОЙ и обоим операндам команд ОТРЕДАКТИРОВАТЬ и ОТРЕДАКТИРОВАТЬ И ОТМЕТИТЬ).
При прекращении операции не порождается некорректный код знака в младшем байте поля результата. Однако некорректный код знака второго операнда может не сохраниться, если он появляется в цифровой части поля результата.
Переполнение в операции с фиксированной точкой
Особый случай, называемый переполнением с фиксированной точкой, распознается, когда при арифметических операциях с фиксированной точкой происходит перенос из старшего бита или старшие значимые биты теряются в результате арифметического сдвига влево.
В режиме BC прерывание может быть замаскировано битом 36 PSW, в режиме EC - битом 20 PSW.
Операция завершается с признаком результата, равным 3, а информация, выходящая за пределы регистра, теряется.
Код длины команды равен 1 или 2.
Особый случай деления с фиксированной точкой
Особый случай деления с фиксированной точкой распознается всегда, когда частное превышает размер регистра, в том числе при делении на нуль, а также тогда, когда результат выполнения команды ПРЕОБРАЗОВАНИЕ В ДЕСЯТИЧНУЮ превышает 31 бит.
Операция деления подавляется. Команда ПРЕОБРАЗОВАНИЕ В ДЕСЯТИЧНУЮ завершается, причем старшие биты, которые не могут быть помещены в регистр, теряются.
Код длины команды равен 1 или 2.
Десятичное переполнение
Особый случай, называемый десятичным переполнением, распознается, когда одна или несколько значащих старших цифр теряются из-за того, что результат не помещается в отведенное для него поле.
В режиме BC прерывание может быть замаскировано битом 37 PSW, в режиме EC - битом 21 PSW.
Операция завершается с признаком результата, равным 3, при этом информация, выходящая за пределы поля, теряется.
Код длины команды равен 2 или 3.
Особый случай десятичного деления
Особый случай десятичного деления распознается, когда частное выходит за пределы указанного поля.
Операция подавляется.
Код длины команды равен 2 или 3.
Переполнение порядка
Если при сложении, вычитании, умножении или делении с плавающей точкой характеристика результата превышает 127, распознается особый случай, называемый переполнением порядка.
Операция завершается. Мантисса нормализуется, знак и мантисса результата остаются истинными. Характеристика результата становится меньше истинной характеристики на 128.
Код длины команды равен 1 или 2.
Исчезновение порядка
Особый случай, называемый исчезновением порядка, распознается, когда при сложении, вычитании, умножении, делении или выполнении операции ПОПОЛАМ характеристика результата меньше нуля, а мантисса результата не равна 0.
В режиме BC прерывание маскируется битом 38 PSW, в режиме EC - битом 22 PSW.
Операция завершается. Содержимое маски исчезновения порядка влияет также и на результат операции. Если бит маски равен нулю, знак, характеристика и мантисса устанавливаются в нуль и результат становится истинным нулем. Если бит маски равен единице, мантисса нормализуется, характеристика становится на 128 больше истинного значения характеристики, а знак и мантисса остается истинными.
Код длины команды равен 1 или 2.
Потеря значимости
Особый случай, называемый потерей значимости, распознается, когда при сложении или вычитании с плавающей точкой мантисса результата равна нулю.
В режиме BC прерывание может быть замаскировано битом 39 PSW, в режиме EC - битом 23 PSW.
Операция завершается. Состояние маски потери значимости влияет также и на результат. Если бит маски равен нулю, операция завершается путем замены результат истинным нулем. Если бит маски равен единице, операция завершается без каких-либо дополнительных изменений характеристики и знака результата.
Код длины команды равен 1 или 2.
Особый случай деления с плавающей точкой
Особый случай деления с плавающей точкой распознается, когда сделана попытка деления на число с нулевой мантиссой.
Операция подавляется.
Код длины команды равен 1 или 2.
Особый случай использования сегмента
Особый случай использования сегмента распознается в следующих ситуациях:
1.) строка таблицы сегментов находится за пределами этой таблицы;
2.) бит доступности сегмента равен единице.
Особый случай распознается в процессе выполнения команды, которой при динамическом преобразовании адреса операнда или команды (за исключением адреса операнда команды ЗАГРУЗКА РЕАЛЬНОГО АДРЕСА) требуется строка таблицы сегментов. При выполнении команды ЗАГРУЗКА РЕАЛЬНОГО АДРЕСА это условие отражается признаком результата.
Элемент операции аннулируется.
Подобные документы
Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.
курсовая работа [266,9 K], добавлен 24.12.2013Общая характеристика и преимущество использования двоично-десятичных чисел с плавающей точкой. Разработка цифрового автомата. Функциональное назначение выводов корпуса МК51, арифметико-логического устройства, портов. Примеры деления данных чисел.
курсовая работа [719,3 K], добавлен 12.09.2015Сущность и роль бухгалтерской отчетности. Характеристика хозяйственных операции и системы обработки данных в первичные учетные документы. Особенности логической структуры реляционной базы данных. Описание методов работы с информационной системой.
курсовая работа [1,1 M], добавлен 26.04.2015Операции, осуществляемые при реализации алгоритмов цифровой обработки сигналов. Применение процессора ADSP-2106x для операций с фиксированной и плавающей точкой. Исключения при выполнении операций с плавающей точкой, режимы и границы округления.
реферат [35,2 K], добавлен 13.11.2009Основные форматы данных и их представление. Запись чисел в формат с плавающей точкой. Вычитание чисел в формате с плавающей точкой. Регистры операндов и результата, размером формата числа с плавающей точкой, двойной точности. Поля смещённого порядка.
курсовая работа [78,9 K], добавлен 09.09.2014Проектирование блоков устройства контроля по модулю три матричного умножителя с сокращением вычислений для обработки мантисс чисел с плавающей точкой. Методика выполнения арифметических операций, порядок обработки мантисс по n-разрядным операндам.
курсовая работа [125,2 K], добавлен 24.09.2010Периоды применения средств вычислительной техники. Переход к новому поколению электронно-вычислительных машин. Системы, основанные на знаниях. Экспертные системы и искусственный интеллект. Этапы обработки данных на ЭВМ. Иерархическая структура знания.
презентация [170,6 K], добавлен 14.08.2013Общее представление о записи данных. Виды регистров и типов данных с плавающей точкой. Модель выполнения программы SIMD. Формат данных в памяти регистра с плавающей точкой. Состояние и управление потоковым разрешением. Поле управления округлением.
реферат [1,1 M], добавлен 06.01.2011Понятие машинной команды как закодированного по определенным правилам указания микропроцессору на выполнение некоторой операции или действия. Элементы машинных команд (код операции, операнд) и их виды (передачи данных, управления, арифметико-логические).
презентация [120,6 K], добавлен 14.10.2013Арифметические команды языка Assembler в архитектуре x86. Организация ветвлений и циклов в программах. Ввод строк с клавиатуры и команды пакетной обработки (строковые команды). Алгоритм вывода на экран в текстовом режиме с использованием средств BIOS.
контрольная работа [18,0 K], добавлен 05.07.2014