Центрального процессора с основной и регистровой памятью
Структура основных связей блоков центрального процессора с основной и регистровой памятью представлена на рис. 5.3. В качестве места расположения программы выбрана ОП. Команды программы поступают из ОП на 64-разрядный регистр команд (РК), входящий в состав блока управляющих регистров (БУР). Выборка машинных команд из ОП осуществляется порциями по 2 байта. В зависимости от типа команды операнды могут располагаться как в ОП, так и в РОН. Для операндов, расположенных в ОП, необходимо выполнение процедуры определения их абсолютных адресов, после чего осуществляется выборка значений операндов из ОП и занесение их в регистры блока арифметико-логического (БАЛ). Далее осуществляется выполнение машинной команды, которая представляет из себя последовательность или программу из микрокоманд (рис. 4.1).
ОП |
БУР |
БАЛ |
Операции над операндами с фиксированной запятой |
Операции над операндами с плавающей запятой |
Операции над полями переменной длины (в том числе над десятичными числами) |
РОН |
РПЗ |
АДРЕСА ОП |
ДАННЫЕ |
ИСПОЛНИТЕЛЬНЫЕ КОМАНДЫ |
АДРЕСА РОН |
ДАННЫЕ |
ДАННЫЕ |
БАЗОВЫЕ АДРЕСА |
ИНДЕКСЫ |
АДРЕСА РПЗ |
АБСОЛЮТНЫЕ АДРЕСА |
Рис. 5.3. Обобщенная структурная схема взаимодействия ОП, регистровой памяти и блоков центрального процессора в процессе выполнения машинной команды
На выполнение каждой микрокоманды отводится стандартное время «Т»– машинный такт. В течение машинного такта осуществляется выполнение одного из стандартных «физических процессов», перечисленных в главе 4.
Последней микрокомандой в цепочке микрокоманд, как правило, является микрокоманда, под управлением которой осуществляется запись результатов выполнения машинной команды в ОП.
ОП типовой ЭВМ 4-го поколения состоит из огромного количества типовых восьмиразрядных ячеек памяти. Каждая ячейка представляет собой 8-разрядный регистр, в который в течение машинного такта «Т» можно записывать содержимое восьми двоичных разрядов, а также обеспечивать их считывание без разрушения записанного ранее содержимого.
Глава 6
Внутри машинное представление «данных»
Из материала предыдущих глав следует, что для внутри машинного представления «данных» используются двоичные коды. Все типы «данных» закрепляются за определенными «форматами», которые в свою очередь являются наборами правил внутри машинного закрепления отдельных фрагментов «данных», таких как знаки чисел, знаки порядков чисел, значения самих чисел и их порядков и т. д.,- за фиксированными полями разрядных сеток.
Понятие внутри машинных «форматов данных» неразрывно связано с «типами» переменных, используемых в рамках конкретного языка программирования. Количество типов переменных в разных языках программирования различно, например, в языке СИ++ используется максимальное количество «типов» переменных – 16.
Основные «типы» переменных: символьные – формат «С», целые десятичные со знаком – формат «Р», целые двоичные со знаком – форматы «Н» и «F», числа, представленные в форме с плавающей запятой, – форматы «Е» и «D», – имеют представительство практически во всех языках программирования. Закрепление переменных, использующихся в программе, за конкретными «типами» или, с точки зрения внутри машинного представления «форматами данных», осуществляется при помощи специальных макрокоманд объявления данных «DECLARE» (сокращенно DCL), структура которых представлена на рис. 6.1.
При помощи макрокоманд «DECLARE» осуществляется не только закрепление переменных за «форматами» и «типами», но и закрепление конкретных участков основной памяти за переменными.
DCL [имя переменной] «формат» (атрибуты «формата»)
Рис. 6.1. Структура команды DECLARE
В результате выполнения оператора DECLARE операционная система осуществляет формирование таблицы «имен переменных» (табл. 6.1.).
Таблица 6.1
Таблица имен переменных
№ п/п | Имя переменной | Формат данных | Длина поля ОП, байт | Адрес младшего байта поля ОП, закрепленного за переменной |
В графе 5 находится адрес байта ОП, начиная с которого располагается непрерывная область памяти, закрепленная ОС за переменной с именем, которое указано в графе 2. В графе 4 в соответствии с закрепленным «форматом» указывается длина этой области в байтах. В соответствии с правилами разработки программ, все переменные, использующиеся в программе, должны быть объявлены при помощи оператора DCL и представлены в «таблице имен». Занесение имени переменной в «таблицу имен» фактически означает закрепление за ней определенной области памяти, в которой будет размещаться ее текущее значение. В том случае, если разработчик программы забудет пропустить какую-либо переменную, используемую в программе, через оператор DCL, ОС сама организует выполнение оператора DCL для этой переменной, назначит ей «формат» и поместит ее в «таблицу имен». Заполнение «таблицы имен» фактически соответствует процессу распределения реальной ОП между переменными в программе.
6.1. Символьный формат «С»
Формат «С» – это формат переменной длины. Переменные, объявленные в данном формате, могут занимать поля ОП от 1 до 32 778 байтов. Каждый байт используется для внутри машинного представления одного из 196 символов кода ДКОИ. Макрокоманда DСL для переменной, которая должна быть объявлена в символьном формате, имеет следующий вид:
DСL [ Имя переменной ] CHARACTER (n),
где n – длина поля ОП, закрепленного за переменной, объявленной в символьном формате, в байтах, 1 ≤ n ≤ 32 778.
6.2. Десятичный формат «Р»
Формат «Р» – это формат переменной длины, предназначен для записи в ОП целых десятичных чисел со знаком. Переменные, объявленные в данном формате, могут занимать поля от 1 до 8 байтов ОП. Макрокоманда DСL для переменной, за которой закрепляется десятичный формат «Р», имеет следующий вид:
DСL [ Имя переменной ] FIXED DECIMAL (n),
где n – длина поля ОП, закрепленного за переменной, объявленной в десятичном формате, в байтах, 1 ≤ n ≤ 8.
Запись числа в ОП в формате «Р» осуществляется следующим образом: знак числа записывается в правые четыре бита старшего байта поля ОП, закрепленного за переменной, в левые четыре бита записывается двоичное представление младшей цифры числа, остальные цифры записываются справа налево (в сторону возрастания весовых коэффициентов) по две в каждый байт. Незаполненные тетрады заполняются «0». Кодировка знака числа осуществляется 16-ричными цифрами: знак «+» кодируется цифрой «С», знак «–» – цифрой «D». Особенностью формата «Р» является тот факт, что старшие по весовым коэффициентам десятичные цифры, для которых не хватило места в байтах поля ОП, зарезервированного за данной переменной, отбрасываются. В результате при выполнении операции присваивания в ОП может быть записано совершенно не то число, которое находится справа от знака равенства. В связи с этим необходимо внимательно относиться к оценке значений переменных, объявленных в формате «Р», и правильно выбирать параметр формата «n».
6.3. Целые двоичные числа – форматы «Н» и «F»
Форматы «Н» и «F» являются форматами постоянной длины. Формат «Н» имеет длину 2 байта, формат «F» – 4 байта (рис. 6.2). Для регистрации знака числа используется «0»-ой разряд. Знак числа «+»
0 1 7 | 8 15 a) | ||||||||||||||
0 1 7 8 15 16 23 24 31
б)
Рис.6.2. Структура форматов данных «H» и «F»
кодируется значением «0», знак «–» – значением «1». Числа в форматах «Н» и «F» записываются в ОП в дополнительных кодах. В разрядах с 1-го по 15-й для формата «Н» и с 1-го по 31-й для формата «F» записывается цифровая часть дополнительного кода числа. Запись цифровой части числа осуществляется справа налево, начиная с разрядов 15-ого и 31-ого разрядов, в сторону возрастания их весовых коэффициентов. Нехватка разрядов цифровой части числа соответствует ситуации «переполнение разрядной сетки» – попытке зафиксировать в поле переменной, за которой закреплен формат «Н» или «F», числа, большего по значению верхнего значения диапазонов форматов «Н» или «F». В подобной ситуации необходимо выбрать для переменной другой «формат данных».
6.4. Числа в форме с плавающей запятой – форматы «Е» и «D»
Число с основанием «d» в форме с плавающей запятой выглядит следующим образом:
Х d =± d ±Pr · M d , (6.1)
где d – основание системы счисления; Pr – порядок числа; Мd – мантисса числа – дробное число, старшая цифра в котором отлична от нуля.
Формирование числа в форме с плавающей запятой начинается с записи мантиссы числа Md. Порядок числа Pr определяется параллельно с формированием мантиссы.
Примеры представления чисел с различными основаниями в форме с плавающей запятой:
+3785,61810 = +10+4 · 0,378561810;
–0,003АС7Д16 = –16-2· 0,3АС7Д16;
+110110, 1011012 = 2+6·0,1101101011012.
Анализ компонентов формы числа с плавающей запятой (6.1) дает основание сделать вывод о том, что для данного способа внутри машинной регистрации подлежат в обязательном порядке:
1. Знак числа.
2. P r – порядок числа со знаком.
3. М d – мантисса числа.
Основание системы счисления «d» регистрировать не надо, так как для определенного класса ЭВМ оно имеет одно то тоже значение ( для современных ЭВМ 4-ого поколения d = 16). Запятую или точку в мантиссе также можно не регистрировать, так как она также имеет фиксированное место. Форматы «Е» и «D» являются форматами постоянной длины: «Е» – 4 байта, «D» – 8 байтов (рис. 6.3).
Компоненты числа, представленного в форме с плавающей запятой, размещаются в полях форматов «Е» и «D» следующим образом:
1. Знак числа в обоих форматах регистрируется в нулевом разряде, кодировка такая же, как и в форматах «H» и «F»: «+» кодируется «0»-ем, «–» –« 1»-ей.
2. Для регистрации знака порядка числа отводится 1-й разряд, числового значения Pr –разряды со 2-го по 7-й, т. е. 6 двоичных разрядов. Тогда порядок числа Pr может принимать следующие значения:
– 1111112 ≤ P r ≤ + 1111112 ;
–6310 ≤ P r ≤ +6310 ( 6.2)
0 78 15 16 23 24 31
а )
0 78 15 16 2324 31 32 39 40 47 48 55 56 63
б)
0 1 2 3 4 5 6 7
Зн. Зн.
чис по
ла ряд
ка
в)
Рис. 6.3. Представление чисел в форме с плавающей запятой:
а – формат «Е», б – формат «D», в – младший байт форматов «Е» и «D»
Алгоритмы выполнения арифметических операций над числами, представленными в форме с плавающей запятой, требуют наличия только положительных порядков операндов, участвующих в операциях. Поэтому при вводе числовой информации в ЭВМ в форматах «Е» и «D» специальным программным средствам приходится увеличивать порядки чисел на 64 посредством умножения значений всех входных переменных на 1664. В результате таких действий в ОП ЭВМ осуществляется запись не порядков чисел, а уже скорректированных машинных порядков чисел Pm:
Pm= Pr + 64
Если ко всем трем частям неравенства (6.2) прибавить 6410 = 10000002, то получится диапазон для значений машинных порядков Pm чисел, представленных в форматах «Е» и «D».
–64 + 64 ≤ P r + 64 ≤ +63 + 64
110 ≤ P m ≤ 12710
00000012 ≤ P m ≤ 11111112
В машинном порядке Pm, в результате таких преобразований получается обратная кодировка знака порядка числа Pr : если Pr ≥ 0, то значение 1-го разряда равно «1», если Pr ≤ 0, то значение 1-го разряда принимает значение «0». Для сохранения числовой информации вне ЭВМ, при выводе результатов числа, зарегистрированные в форматах «Е» и «D», умножаются на 16-64, т. е. осуществляется обратный переход от машинных порядков Pm к порядкам чисел Pr.
3. Для регистрации мантиссы в формате «Е» отводятся разряды с 8-го по 31-й – три байта. В каждом байте 2 тетрады и, следовательно, можно зафиксировать по две 16-ричных цифры, т. е. в совокупности использование формата «Е» позволяет зарегистрировать шесть 16-ричных цифр мантиссы. В формате «D» для регистрации мантиссы используются разряды с 8-го по 63-й, 7 байтов, и, соответственно, можно зарегист-рировать четырнадцать 16-ричных цифр. Поскольку использование формата «D» обеспечивает внутри машинное представление четырнадцати 16-ричных цифр, а это около восемнадцати 10-ричных цифр вне ЭВМ, против шести 16-ричных и восьми 10-ричных цифр для формата «Е», можно сделать вывод о том, что использование формата «D» обеспечивает значительно большую точность вводимых исходных данных и результатов вычисления.
Макрокоманда DEСLARE для переменных, представленных в форме с плавающей запятой, выглядит следующим образом:
DСL [ имя переменной ] FLOAТ DECIMAL ( p ), (6.3)
0 ≤ p ≤ 8 – формат «Е»
9 ≤ p ≤ 16 – формат «D»
На основании информации, представленной в данном параграфе, можно сформулировать алгоритм формирования внутри машинного представления чисел, представленных в форме с плавающей запятой –форматы «Е» и «D»:
1. Перевести число из 10-ричной СС в 16-ричную СС.
2. Представить в форме с плавающей запятой (6.1).
3. Найти значение машинного порядка в двоичной системе счисления:
Pm = 10000002 + Pr
4. Сформировать содержимое младшего байта поля: разряды с 0-го
по 7-й.
5. Сформировать содержимое поля мантиссы, записывая по две тетрады двоичных разрядов (фактически по две 16-ричных цифры в каждый байт) слева направо.
Дата добавления: 2016-03-15; просмотров: 547;