
- •Тверской государственный технический университет
- •Внутри машинное представление «данных».
- •1. Основные сведения о информации.
- •2. Системы счисления и кодирования информации
- •3.Структура и общие принципы организации запоминающих устройств, использующихся для внутри машинного размещения информации
- •5. Примеры внутри машинного представления значений переменных в основных форматах данных
- •6.Требования к выполнению и оформлению пояснительной записки расчетно-графической работы
- •Приложения
- •Тверской государственный технический университет
- •Тверь 2011
- •Библиографический список
- •1. Основные сведения о информации…………..….…………...………………4
3.Структура и общие принципы организации запоминающих устройств, использующихся для внутри машинного размещения информации
После ввода в ЭВМ информация может располагаться и храниться в основной памяти (ОП), на жестком магнитном диске (МД), в сверхоперативной памяти (СОП), входящей в состав центрального процессора. Она может также располагаться и быть доступной для обработки на сменных дисках, флэш-картах и т. д. Поскольку задачей данного пособия является рассмотрение принципов и способов представления «данных» и «управляющей информации» внутри ЭВМ, то, безусловно, необходимо дать характеристику и самим основным устройствам, в которых размещается эта информация: ОП и СОП. В ЭВМ 3 и 4-го поколений используется абсолютная и относительная адресация. Абсолютная адресация используется при указании адресов операндов, которые располагаются в СОП, относительная – для адресации операндов, которые располагаются в ОП. Выбор относительной адресации был обусловлен возможностью сокращения адресных полей операндов и длины машинной команды.
3.1. Структура основной памяти (ОП)
ОП является адресной памятью, состоит из огромного количества 8-разрядных ячеек, каждая из которых имеет свой уникальный 16-ричный адрес. Структура ОП приведена на рис. 3.1. Реализация относительной адресации связана с условным разбиением ОП на блоки по 4096 байтов. Справа от структуры ОП в общем виде представлена структура адреса произвольного байта ОП. Формирование адреса осуществляется при помощи двух частей: пять старших битов соответствуют номеру блока, а три младших – смещению относительно начала блока. Начало каждого блока совпадает с адресом ее первого байта, значение которого кратно 4096. Этот адрес получил называние базового. Поскольку объем блока равен 4096, то базовым может считаться адрес. кратный 4096, или адрес, в котором 3 младшие шестнадцатеричные цифры равны «0». Отсчет блоков начинается с «0».
Самые верхние 4096 байтов образуют «0»-ой блок ОП. Понятие базового адреса используется при вычислении абсолютных или исполнительных адресов операндов, размещающихся в ОП. В пределах каждого блока адрес любого байта определяется 12-ти разрядным двоичным или 3-х разрядным 16-ричным числом, которое называется смещением и обозначается в машинных командах латинской буквой «D». Смещение может принимать значение от ООО16 до FFF16.
Рис. 3.1. Блочная организация ОП
Если при помощи выражения (В) обозначить содержимое регистра СОП, в котором находится значение базового адреса, то значение любого абсолютного адреса «А» ОП можно определить по формуле
А=[В]+D, (5.1)
где А, [В] и D представляются в 16-ричной системе счисления.
Если программы и данные располагаются в нескольких блоках основной памяти, то в регистрах общего назначения приходится хранить несколько базовых адресов (БА). Местом хранения базовых адресов являются регистры общего назначения СОП. Применение относительной адресации упрощает процесс перемещения программ в ОП. Для этого достаточно поменять значения базовых адресов в регистрах СОП. Распределение ОП и назначение БА осуществляется автоматически управляющей программой операционной системы. При программировании на машинно-ориентированных языках (Ассемблерах) программистам, как правило, самим приходится назначать базовые адреса и распределять основную память. Эти операции приходится выполнять и при составлении программ для микроконтроллеров. Назначение нескольких базовых адресов для одной и той же программы происходит в тех случаях, когда объем программы и данных требуют объема, большего, чем 4096 байтов. Распределение ОП между несколькими программами, исходя из блочной организации памяти, осуществляется исключительно блоками со стандартными объемами 4096 байтов. При оперировании с «данными», имеющими длины полуслов, слов или двойных слов, в качестве абсолютных адресов в командах выступают адреса самых младших байтов полей ОП, закрепленных за этими переменными.
3.2. Структура и организация сверхоперативной памяти (СОП)
СОП также является адресной памятью, каждая ячейка имеет свой собственный адрес или номер (рис. 3.2). У этой памяти есть и другое название –регистры общего назначения (РОН). Она состоит из шестнадцати 32-разрядных регистров общего назначения.
Поскольку среди числовых форматов «данных» есть форматы, которые имеют длину 8 байт, то разработчикам современных ЭВМ пришлось на базе тех же стандартных соседних РОН, только спаренных по два, условно выделить четыре регистра с плавающей запятой (РПЗ) с уникальными четными номерами 0, 2, 4, 6. РПЗ с номером 0 – это спаренные РОН с номерами 0 и 1, 2 – это 2 и 3, 4 – это 4 и 5, 6 – это 6 и 7.
Номер регистра |
Двоичный адрес регистра (R) |
РОН |
РПЗ |
0 1 2 3 4 5 6 7 8 9 A B C D E F |
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 |
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
0
0
0
0
|
Рис. 3.2. Структура сверхоперативной памяти
Использование СОП позволяет повысить среднюю скорость выполнения операций, поскольку СОП имеет меньший цикл обращения по сравнению с ОП. СОП используется для временного хранения операндов и результатов арифметических операций, а также для хранения базовых адресов и индексов переменных типа «массив» (констант модификации адресов), которые используются при формировании исполнительных (абсолютных) адресов ОП. Вопрос двойного назначения регистров с номерами 0, 2, 4 и 6, использующихся в машинных командах, решается при помощи полей кодов операций (КОП), в которых заложена информация о форматах «данных», обработка которых будет осуществляться при помощи данной команды.
4. Характеристика основных форматов «данных»
Из материала предыдущих разделов следует, что для внутри машинного представления «данных» используются двоичные коды. Все типы «данных» закрепляются за определенными «форматами», которые в свою очередь являются наборами правил внутри машинного закрепления отдельных фрагментов «данных», таких как знаки чисел, знаки порядков чисел, значения самих чисел и их порядков и т. д.
Понятие внутри машинных «форматов данных» неразрывно связано с «типами» переменных, используемых в рамках конкретного языка программирования. Количество типов переменных в разных языках программирования различно, например, в языке СИ++ используется максимальное количество «типов» переменных – 16.
Основные «типы» переменных: символьные – формат «С», целые десятичные со знаком – формат «Р», целые двоичные со знаком – форматы «Н» и «F», числа, представленные в форме с плавающей запятой, – форматы «Е» и «D», – имеют представительство практически во всех языках программирования. Закрепление переменных, использующихся в программе, за конкретными «типами» или, с точки зрения внутри машинного представления «форматами данных», осуществляется при помощи специальных макрокоманд объявления данных «DECLARE» (сокращенно DCL), структура которых представлена на рис. 4.1.
При помощи макрокоманд «DECLARE» осуществляется не только закрепление переменных за «форматами» и «типами», но и закрепление конкретных участков основной памяти за переменными.
DCL [имя переменной] «формат» (атрибуты «формата»)
Рис. 4.1. Структура команды DECLARE
В результате выполнения оператора DECLARE операционная система осуществляет формирование таблицы «имен переменных» (табл. 4.1.).
Таблица 4.1
Таблица имен переменных
№ п/п |
Имя переменной |
Формат данных |
Длина поля ОП, байт |
Адрес младшего байта поля ОП, закрепленного за переменной |
1 |
2 |
3 |
4 |
5 |
|
|
|
|
|
В графе 5 находится адрес байта ОП, начиная с которого располагается непрерывная область памяти, закрепленная ОС за переменной с именем, которое указано в графе 2. В графе 4 в соответствии с закрепленным «форматом» указывается длина этой области в байтах. В соответствии с правилами разработки программ, все переменные, использующиеся в программе, должны быть объявлены при помощи оператора DCL и представлены в «таблице имен». Занесение имени переменной в «таблицу имен» фактически означает закрепление за ней определенной области памяти, в которой будет размещаться ее текущее значение. В том случае, если разработчик программы забудет пропустить какую-либо переменную через оператор DCL, ОС сама организует выполнение оператора DCL для этой переменной, назначит ей «формат» и поместит ее в «таблицу имен». Заполнение «таблицы имен» фактически соответствует процессу распределения реальной ОП между используемыми переменными в программе.
4.1. Символьный формат «С»
Формат «С» – это формат переменной длины. Переменные, объявленные в данном формате, могут занимать поля ОП от 1 до 32 778 байтов. Каждый байт используется для внутри машинного представления одного из 196 символов кода ДКОИ. Макрокоманда DСL для переменной, которая должна быть объявлена в символьном формате, имеет следующий вид:
DСL [ Имя переменной ] CHARACTER (n),
где n – длина поля ОП, закрепленного за переменной, объявленной в символьном формате, в байтах, 1 ≤ n ≤ 32 778.
4.2. Десятичный формат «Р»
Формат «Р» – это формат переменной длины, предназначен для записи в ОП целых десятичных чисел со знаком. Переменные, объявленные в данном формате, могут занимать поля от 1 до 8 байтов ОП. Макрокоманда DСL для переменной, за которой закрепляется десятичный формат «Р», имеет следующий вид:
DСL [ Имя переменной ] FIXED DECIMAL (n),
где n – длина поля ОП, закрепленного за переменной, объявленной в десятичном формате, в байтах, 1 ≤ n ≤ 8.
Запись числа в ОП в формате «Р» осуществляется следующим образом: знак числа записывается в правые четыре бита старшего байта поля ОП, закрепленного за переменной, в левые четыре бита записывается двоичное представление младшей цифры числа, остальные цифры записываются справа налево (в сторону возрастания весовых коэффициентов) по две в каждый байт. Незаполненные тетрады заполняются «0». Кодировка знака числа осуществляется 16-ричными цифрами: знак «+» кодируется цифрой «С», знак «–» – цифрой «D». Особенностью формата «Р» является тот факт, что десятичные цифры, для которых не хватило места в байтах поля ОП, зарезервированного за данной переменной, отбрасываются. В результате при выполнении операции присваивания в ОП может быть записано совершенно не то число, которое находится справа от знака равенства. В связи с этим необходимо внимательно относиться к оценке значений переменных, объявленных в формате «Р», и правильно выбирать параметр формата «n».
4.3. Целые двоичные числа – форматы «Н» и «F»
Форматы «Н» и «F» являются форматами постоянной длины. Формат «Н» имеет длину 2 байта, формат «F» – 4 байта (рис. 4.2):
|
|
|
|
|
|
| |||||||||||
0 1 7 |
8 15 а) |
| |||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
0 1 7 8 15 16 23 24 31
б)
Рис.4.2. Структура форматов данных «H» и «F»
Для регистрации знака числа используется нулевой разряд. Знак числа «+» кодируется значением «0», знак «–» – значением «1». Числа в форматах «Н» и «F» записываются в ОП в дополнительных кодах. В разрядах с 1-го по 15-й для формата «Н» и с 1-го по 31-й для формата «F» записывается цифровая часть дополнительного кода числа. Нехватка разрядов цифровой части числа соответствует ситуации «переполнение разрядной сетки» – попытке зафиксировать в поле переменной, за которой закреплен формат «Н» или «F», числа, большего по значению верхнего значения диапазона форматов «Н» или «F». В подобной ситуации необходимо выбрать для переменной другой «формат данных».
4.4. Числа в форме с плавающей запятой – форматы «Е» и «D»
Число с основанием «d» в форме с плавающей запятой выглядит следующим образом:
Х d =± d ±Pr · M d , (4.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.
Анализ компонентов формы числа с плавающей запятой (4.1) дает основание сделать вывод о том, что для данного способа внутри машинной регистрации подлежат в обязательном порядке:
Знак числа.
P r – порядок числа со знаком.
М d – мантисса числа.
Основание системы счисления «d» регистрировать не надо, так как для определенного класса ЭВМ оно имеет одно то тоже значение ( для современных ЭВМ 4-ого поколения d = 16). Запятую или точку в мантиссе также можно не регистрировать, так как она имеет фиксированное место. Форматы «Е» и «D» являются форматами постоянной длины: «Е» – 4 байта, «D» – 8 байтов (рис. 6.3).
Компоненты числа, представленного в форме с плавающей запятой, размещаются в полях форматов «Е» и «D» следующим образом:
1. Знак числа в обоих форматах регистрируется в нулевом разряде, кодировка такая же, как и в форматах «H» и «F»: «+» кодируется «0»-ем, «–» –« 1»-ей.
|
|
|
|
0 78 15 16 23 24 31
а )
|
|
|
|
|
|
|
|
0 7 8 15 16 2324 31 32 39 40 47 48 55 56 63
б)
|
|
|
|
|
|
|
0 1 2 3 4 5 6 7
Зн. Зн.
чис по
ла ряд
ка
в)
Рис. 4.3. Представление чисел в форме с плавающей запятой:
а – формат «Е», б – формат «D», в – младший байт форматов «Е» и «D»
2. Для регистрации знака порядка числа отводится 1-й разряд, значения Pr –разряды со 2-го по 7-й, т. е. 6 двоичных разрядов. Порядок числа Pr может принимать следующие значения:
– 1111112 ≤ P r ≤ + 1111112 ;
–6310 ≤ P r ≤ +6310 ( 4.2)
Алгоритмы выполнения арифметических операций над числами, представленными в форме с плавающей запятой, требуют наличия только положительных порядков операндов, участвующих в операциях. Поэтому при вводе числовой информации в ЭВМ в форматах «Е» и «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 ), (4.3)
0 ≤ p ≤ 8 – формат «Е»
9 ≤ p ≤ 16 – формат «D»
На основании информации, представленной в данном параграфе, можно сформулировать алгоритм формирования внутри машинного представления чисел, представленных в форме с плавающей запятой –форматы «Е» и «D»:
1. Перевести число из 10-ричной СС в 16-ричную СС.
2. Представить в форме с плавающей запятой (6.1).
3. Найти значение машинного порядка в двоичной системе счисления:
Pm = 10000002 + Pr
4. Сформировать содержимое младшего байта поля: разряды с 0-го
по 7-й.
5. Сформировать содержимое поля мантиссы, записывая по две тетрады двоичных разрядов (фактически по две 16-ричных цифры в каждый байт) слева направо.