Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EVM.docx
Скачиваний:
18
Добавлен:
17.04.2015
Размер:
833.51 Кб
Скачать

Типы и форматы операндов

Машинные команды оперируют данными, которые в этом случае принято называть операндами. К наиболее общим (базовым) типам операндов можно отнести: числа, символы и логические данные. Помимо них, ВМ обеспечивает обработку и более сложных информационных единиц: графических изображений, аудио-, видео- и анимационной информации. Такая информация является производной от базовых типов данных и хранится в виде файлов на внешних запоминающих устройствах. Для каждого типа данных в ВМ предусмотрены определенные форматы.

Числовая информация

Такого рода данные можно классифицировать следующим образом:

  • числа с фиксированной запятой (целые, дробные, смешанные);

  • числа с плавающей запятой;

  • логические значения.

Числа в форме с фиксированной запятой

Представление числа А в форме с фиксированной запятой (ФЗ), которую иногда называют также естественной формой, включает в себя знак числа и его модуль в q-ричном коде. Здесь q основание системы счисления или база. Для современных ВМ характерна двоичная система (q = 2), но иногда используются также восьмеричная (q = 8) или шестнадцатеричная (q = 16) системы счисления. Запятую в записи числа называют соответственно двоичной, восьмеричной или шестнадцатеричной. Знак положительного числа кодируется двоичной цифрой 0, а знак отрицательного числа — цифрой 1.

Числам с ФЗ соответствует запись вида . Отрицательные числа обычно представляются в дополнительном коде. Разряд кода числа, в котором размещается знак, называется знаковым разрядом кода. Разряды, где располагаются значащие цифры числа, называются цифровыми разрядами кода. Знаковый разряд размещается левее старшего цифрового разряда. Положение запятой одинаково для всех чисел и в процессе решения задач не меняется. Хотя запятая и фиксируется, в коде числа она никак не выделяется, а только подразумевается. В общем случае разрядная сетка ВМ для размещения чисел в форме с ФЗ имеет вид, представленный на рис.10, где т разрядов используются для записи целой части числа и r разрядов — для дробной части.

Рис 10 Формат представления чисел с фиксированной запятой

Если число является смешанным (содержит целую и дробную части), оно обрабатываются как целое, хотя и не является таковым (в этом случае применяют термин масштабируемое целое). Обработка смешанных чисел в ВМ встречается крайне редко. Как правило, используются ВМ с дробной = 0) либо целочисленной (r = 0) арифметикой.

При фиксации запятой перед старшим цифровым разрядом (рис. 11) могут быть представлены только правильные дроби. Для ненулевых чисел возможны два варианта представления (нулевому значению соответствуют нули во всех разрядах): со знаком и без знака. Фиксация запятой перед старшим разрядом используется при обработке мантисс чисел в форме с плавающей запятой (рассматривается ниже).

Рис.11 Представление дробных чисел в формате ФЗ

При фиксации запятой после младшего разряда представимы лишь целые числа. Это наиболее распространенный способ. Здесь также возможны числа со знаком и без знака (рис. 12).

Рис. 12 Представление целых чисел в формате ФЗ

На рис. 13 приведены целочисленные формату с фиксированной запятой, принятые в 64-разрядных процессорах.

Представление чисел в формате ФЗ упрощает аппаратурную реализацию ВМ и сокращает время выполнения машинных операций, однако при решении задач необходимо постоянно следить за тем, чтобы все исходные данные, промежуточные и окончательные результаты не выходили за допустимый диапазон формата, иначе возможно переполнение разрядной сетки, и результат вычислений будет неверным.

Рис. 13 Целочисленные форматы 64-разрядных процессоров

Упакованные целые числа

В АСК современных микропроцессоров имеются команды, оперирующие целыми числами, представленными в упакованном виде. Связано это с обработкой мультимедийной информации. Упаковка предполагает объединение в пределах достаточно длинного слова нескольких целых чисел меньшей разрядности, а соответствующие команды обрабатывают все эти числа параллельно. Такие команды появились в рамках технологии ММХ (MultiMedia extension) фирмы Intel и похожей технологии 3DNow! фирмы AMD. Со временем сформировалась единая технология, известная под аббревиатурой SSE (Streaming SIMD Extensions). В микропроцессорах последних поколений — это версия SSE4, но уже ведется разработка варианта SSE5. В SSE4 за основу принято 128-разрядное слово и предусмотрены четыре формата упакованных целых чисел (рис. 14).

Байты в формате упакованных байтов нумеруются от 0 до 15, причем байт 0 располагается в младших разрядах 128-разрядного слова. Аналогичная система нумерации и размещения упакованных чисел применяется для 16-разрядных (номера 0-7), 32-разрядных (номера 0-3) и 64-разрядных (номера 0-1) целых чисел.

Рис. 14. Форматы упакованных целых чисел в технологии SSE4

Десятичные числа

В ряде задач, главным образом, учетно-статистического характера, приходится иметь дело с хранением, обработкой и пересылкой десятичной информации. Особенность таких задач состоит в том, что обрабатываемые числа могут состоять из различного и весьма большого количества десятичных цифр. Традиционные методы обработки с переводом исходных данных в двоичную систему счисления и обратным преобразованием результата зачастую сопряжены с существенными накладными расходами. По этой причине в ВМ применяются иные специальные формы представления десятичных данных. В их основу положен принцип кодирования каждой десятичной цифры эквивалентным двоичным числом из четырех битов (тетрадой), то есть так называемым двоично-десятичным колом (BCD — Binary Coded Decimal). Обычно используется стандартная кодировка 8421, где цифры в обозначении кодировки означают веса разрядов. Десятичные цифры 0, 1,2, 3, 4, 5, 6, 7, 8,9 кодируются двоичными комбинациями 0000,0001,0010,0011,0100,0101,0110,0111,1000,1001 соответственно. Оставшиеся шесть комбинаций (1010,1011,1100, 1101,1110,1111) используются для представления знаков «+» и «-», а также возможных служебных символов. Знак «+» принято обозначать как 1100 (С16), а знак «-» — как 1101 (D16). Такое соглашение принято исходя из того, что обозначение соответствующих шестнадцатеричных цифр можно рассматривать как аббревиатуру бухгалтерских терминов «кредит» (Credit) и «дебет» (Debit), а именно в бухгалтерских расчетах чаще всего используется рассматриваемая форма представления информации. Другие допустимые обозначения знаков — это 1010 (А16) или 1110 (Е16) для «+» и 1011 (В16) для «-». Иногда допускается представление десятичных чисел без знака, и тогда в позиции, отводимой под знак, записывается комбинация1111 ( F16).

В вычислительных машинах нашли применение два формата представления десятичных чисел (все числа рассматриваются как целые): упакованный и зонный. В обоих форматах каждая десятичная цифра представляется двоичной тетрадой, то есть заменяется двоично-десятичным кодом.

Рис.15 Форматы десятичных чисел: а – упакованный; б - зонный

Наиболее распространен упакованный формат (рис. 15, а), позволяющий не только хранить лесятичные числа, но и производить над ними арифметические операции. В данном формате запись числа имеет вид цепочки байтов, где каждый байт содержит коды двух десятичных цифр. Правая тетрада младшего байта предназначается для записи знака числа. Десятичное число должно занимать целое количество байтов. Если это условие не выполняется, то четыре старших двоичных разряда левого байта заполняются нулями. Так, представление числа -7396 в упакованном формате имеет вид, приведенный на рис 16.

Рис. 16. Представление числа -7396 в упакованном формате

Зонный формат (рис. 15, б) распространен, главным образом, в больших универсальных ВМ. В нем под каждую цифру выделяется один байт, где младшие четыре разряда отводятся под код цифры, а в старшую тетраду (поле зоны) записывается специальный код «зона», не совпадающий с кодами цифр и знаков. В ЭBM это код 11112 — FI6. Исключение составляет байт, содержащий младшую цифру десятичного числа, где в поле зоны хранится знак числа. 11а рис. 17 показана запись числа -7396 в зонном формате. В некоторых ВМ принят вариант зонного формата, где поле зоны заполняется нулями.

Рис. 17 Представление числа -7396 в зонном формате

Размещение знака в младшем байте, как в зонном, так и в упакованном представлениях, позволяет задавать десятичные числа произвольной длины и передавать их в виде цепочки байтов. В этом случае знак указывает, что байт, в котором он содержится, является последним байтом данного числа, а следующий байт последовательности — это старший байт очередного числа.

Рассмотренный вариант двоично-кодированного представления десятичных цифр с весами 8421 наиболее распространен, но не является единственным. Возможные иные схемы кодирования приведены в табл.:

Варианты двоично-кодированного представления десятичных цифр

Цифра

BCD 8 4 2 1

Excess-3(код Стибица)

BCD 2 4 2 1

BCD 8 4 -2 -1

BCD 8 4 2 1 (IBM 702, 705)

0

0000

0011

0000

0000

1010

1

0001

0100

0001

0111

0001

2

0010

0101

0010

0110

0010

3

0011

0110

0011

0101

0011

4

0100

0111

0100

0100

0100

5

0101

1000

1011

1011

1011

6

0110

1001

1100

1010

0110

7

0111

1010

1101

1001

0111

8

1000

1011

1110

1000

1000

9

1001

1100

1111

1111

1001

Использование 4-х двоичных цифр для представления одной десятичной цифры по своей сути избыточно. В то же время при иной системе кодирования для представления десятичного числа из трех цифр достаточно 10 двоичных разрядов. Два наиболее известных варианта такого «экономичного» кодирования — код Чен- Хо (Tien Chi Chen, Irving Т. Но) и плотно упакованный десятичный код (DPD — Densely Packed Decimal).

В обоих вариантах каждая десятичная цифра классифицируется по значению старшего бита в ее представлении в коде BCD на «маленькую» 0-7 (00002-01112) или «большую» 8-9 (10002-10012). Для идентификации маленькой цифры (М) достаточно 3 бита, а большой (Б) — одного бита.

При таком представлении возможны следующие комбинации из трех десятичных цифр:

  • M + M + M (требуется 9 битов для цифр и остается 1 бит для идентификации этой комбинации);

  • M + M + Б, или M + Б + М, или Б + M + M (требуется 7 битов для цифр и оста­ется 3 бита для идентификации этих комбинаций);

  • M + Б + Б, или Б + M + Б, или Б + Б + M (требуется 5 битов для цифр и остается 5 битов для идентификации этих комбинаций);

  • Б + Б + Б (3 бита для цифр и 7 битов для индикации этой комбинации, хотя нужно только 5).

Для идентификации конкретной комбинации используются те из 10 битов, которые остались свободными после представления закодированных значений цифр. Различие в методах кодирования Чен-Хо и DPD состоит в способе формирования идентификатора комбинации. В табл. 6 приведены примеры кодировки троек десятичных чисел в кодах BCD, Чен-Хо и DPD.

Табл.6 Примеры представления десятичных чисел в разных кодировках

Десятичное число

BCD 8421

Чен-Хо

DPD

005

0000 0000 0101

000 000 0101

000 000 0101

009

0000 0000 1001

110 000 0001

000 000 1001

055

0000 0101 0101

000 010 1101

000 101 0101

079

0000 0111 1001

110 011 1001

000 111 1001

080

0000 1000 0000

101 000 0000

000 000 1010

099

0000 1001 1001

111 000 1001

000 101 1111

555

0101 0101 0101

010 110 1101

101 101 0101

999

1001 1001 1001

111 111 1001

001 111 1111

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]