Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3-й семестр / Организация ЭВМиС; Орлов С.А., Цилькер Б.Я

..pdf
Скачиваний:
422
Добавлен:
25.12.2020
Размер:
5.43 Mб
Скачать

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

81

 

 

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

Размещение числовых данных в памяти

В современных ВМ разрядность ячейки памяти, как правило, равна одному байту (8 битов), а реальная длина кодов чисел составляет 2, 4, 8 или 16 байтов. При хранении таких чисел в памяти их байты размещают в нескольких ячейках со смежными адресами, при этом для доступа к числу указывается только наименьший из адресов. При разработке архитектуры системы команд необходимо определить порядок размещения байтов в памяти, то есть какому из байтов (старшему или младшему) будет соответствовать этот наименьший адрес1. На рис. 2.26 показаны оба варианта размещения 32-разрядного числа в четырех смежных ячейках памяти, начиная с адреса A.

Рис. 2.26. Размещение в памяти 32-разрядного числа: а — начиная со старшего байта; б — начиная с младшего байта

В вычислительном плане оба способа записи равноценны. Так, фирмы DEC и Intel отдают предпочтения размещению в первой ячейке младшего байта, а IBM и Motorola ориентируются на противоположный вариант. Выбор обычно связан с некими иными соображениями разработчиков ВМ. В настоящее время в большинстве машин предусматривается использование обоих вариантов, причем выбор может быть произведен программным путем за счет соответствующей установки регистра конфигурации.

Помимо порядка размещения байтов, существенным бывает и выбор адреса, с которого может начинаться запись числа. Связано это с физической реализацией полупроводниковых запоминающих устройств, где обычно предусматривается возможность считывания (записи) четырех байтов подряд. Причем данная операция выполняется быстрее, если адрес первого байта A отвечает условию A mod S = 0

1В англоязычной литературе систему записи числа начиная со старшего байта обозначают термином «big endian», а с младшего байта — термином «little endian». Оба названия происходят от названия племен («тупоконечники» и «остроконечники»), упоминаемых в книге Джонатана Свифта «Путешествия Гулливера». Там описывается религиозная война между этими племенами, по причине разногласий в вопросе, с какого конца следует разбивать яйцо — тупого или острого.

82

Глава 2. Архитектура системы команд

 

 

(S = 2, 4, 8, 16). Числа, размещенные в памяти в соответствии с этим правилом, называются выравненными (рис. 2.27).

Рис. 2.27. Размещение чисел в памяти с выравниванием

На рис. 2.28 показаны варианты размещения 32-разрядного двойного слова без выравнивания. Такое размещение приводит к увеличению времени доступа к памяти.

Рис. 2.28. Размещение 32-разрядного слова без соблюдения правила выравнивания

Большинство компиляторов генерируют код, в котором предусмотрено выравнивание чисел в памяти.

Символьная информация

В общем объеме вычислительных действий все большая доля приходится на обработку символьной информации, содержащей буквы, цифры, знаки препинания, математические и другие символы. Каждому символу ставится в соответствие определенная двоичная комбинация. Совокупность возможных символов и назначенных им двоичных кодов образует таблицу кодировки. В настоящее время применяются множество различных таблиц кодировки. Объединяет их весовой принцип, при котором веса кодов цифр возрастают по мере увеличения цифры, а веса символов увеличиваются в алфавитном порядке. Так вес буквы «Б» на единицу больше веса буквы «А». Это способствует упрощению обработки в ВМ.

До недавнего времени наиболее распространенными были кодовые таблицы, в которых символы кодируются с помощью восьмиразрядных двоичных комбинаций (байтов), позволяющих представить 256 различных символов:

расширенный двоично-кодированный код EBCDIC (Extended Binary Coded Decimal Interchange Code);

американский стандартный код для обмена информацией ASCII (American Standard Code for Information Interchange).

Код EBCDIC используется в качестве внутреннего кода в универсальных ВМ фирмы IBM. Он же известен под названием ДКОИ (двоичный код для обработки информации).

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

83

 

 

Стандартный код ASCII 7-разрядный, восьмая позиция отводится для записи бита четности. Это обеспечивает представление 128 символов, включая все латинские буквы, цифры, знаки основных математических операций и знаки пунктуации. Позже появилась европейская модификация ASCII, называемая Latin 1 (стандарт ISO 8859-1). В ней «полезно» используются все 8 разрядов. Дополнительные комбинации (коды 128–255) в новом варианте отводятся для представления специ­ фических букв алфавитов западноевропейских языков, символов псевдографики, некоторых букв греческого алфавита, а также ряда математических и финансовых символов. Именно эта кодовая таблица считается мировым стандартом де-факто, который применяется с различными модификациями во всех странах. В зависимости от использования кодов 128–255 различают несколько вариантов стандарта ISO 8859 (табл. 2.9).

Таблица 2.9. Варианты стандарта ISO 8859

Стандарт

Характеристика

ISO 8859-1

Западноевропейские языки

ISO 8859-2

Языки стран центральной и восточной Европы

ISO 8859-3

Языки стран южной Европы, мальтийский и эсперанто

ISO 8859-4

Языки стран северной Европы

ISO 8859-5

Языки славянских стран с символами кириллицы

ISO 8859-6

Арабский язык

ISO 8859-7

Современный греческий язык

ISO 8859-8

Языки иврит и идиш

ISO 8859-9

Турецкий язык

ISO 8859-10

Языки стран северной Европы (лапландский, исландский)

ISO 8859-11

Тайский язык

ISO 8859-13

Языки балтийских стран

ISO 8859-14

Кельтский язык

ISO 8859-15

Комбинированная таблица для европейских языков

ISO 8859-16

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

 

ского, английского, финского, французского, немецкого, венгерского,

 

ирландского, итальянского, польского, румынского и словенского

В распространенной в свое время операционной системе MS-DOS стандарт ISO 8859 реализован в форме кодовых страниц OEM (Original Equipment Manu­ facturer). Каждая OEM-страница имеет свой идентификатор (табл. 2.10).

Таблица 2.10. Наиболее распространенные кодовые страницы OEM

Идентификатор кодовой

Страны

страницы

 

CP437

США, страны западной Европы и Латинской Америки

 

 

CP708

Арабские страны

 

 

CP737

Греция

 

 

продолжение

84

Глава 2. Архитектура системы команд

 

 

 

Таблица 2.10 (продолжение)

 

 

 

 

 

Идентификатор кодовой

Страны

 

страницы

 

 

CP775

Латвия, Литва, Эстония

 

 

 

 

CP852

Страны восточной Европы

 

 

 

 

CP853

Турция

 

 

 

 

CP855

Страны с кириллической письменностью

 

 

 

 

CP860

Португалия

 

 

 

 

CP862

Израиль

 

 

 

 

CP865

Дания, Норвегия

 

 

 

 

CP866

Россия

 

 

 

 

CP932

Япония

 

 

 

 

CP936

Китай

 

 

 

 

Хотя код ASCII достаточно удобен, он все же слишком тесен и не вмещает множества необходимых символов. По этой причине в 1993 году консорциумом компаний Apple Computer, Microsoft, Hewlett–Packard, DEC и IBM был разработан 16-битовый стандарт ISO 10646, определяющий универсальный набор символов (UCS, Universal Character Set). Новый код, известный под названием Unicode, позволяет задать до 65 536 символов, то есть дает возможность одновременно представить символы всех основных «живых» и «мертвых» языков. Для букв русского языка выделены коды 1040–1093.

Все символы в Unicode логически разделяют на 17 плоскостей по 65536 (216) кодов в каждой1.

Плоскость 0 (0000–FFFF): BMP, Basic Multilingual Plane — основная многоязычная плоскость. Эта плоскость охватывает коды большинства основных символов используемых в настоящее время языков. Каждый символ представляется 16разрядным кодом.

Плоскость 1 (10000–1FFFF): SMP, Supplementary Multilingual Plane — дополнительная многоязычная плоскость.

Плоскость 2 (20000–2FFFF): SIP, Supplementary Ideographic Plane — дополнительная идеографическая плоскость.

Плоскости с 3 по 13 (30000–DFFF) пока не используются.

Плоскость 14 (E0000–EFFFF): SSP, Supplementary Special-purpose Plane — специализированная дополнительная плоскость.

Плоскость 15 (F0000–FFFFF): PUA, Private Use Area — область для частного использования.

Плоскость 16 (100000–10FFFF): PUA, Private Use Area — область для частного использования.

1 Предусмотрено увеличение длины кода до 21 бита.

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

85

 

 

Внастоящее используется порядка 10% потенциального пространства кодов.

В«естественном» варианте кодировки Unicode, известном как UCS-2, каждый символ описывается двумя последовательными байтами m и n, так что номеру символа соответствует численное значение 256 × m + n. Таким образом, кодовый номер представлен 16-разрядным двоичным числом.

Наряду с UCS-2 в рамках Unicode существуют еще несколько вариантов кодировки Unicode (UTF, Unicode Transformation Formats), основные из которых UTF-32, UTF-16, UTF-8 и UTF-7.

В кодировке UTF-32 каждая кодовая позиция представлена 32-разрядным двоичным числом. Это очень простая и очевидная система кодирования, хотя и неэффективная в плане разрядности кода. Кодировка UTF-32 используется редко, главным образом, в операциях обработки строк для внутреннего представления данных.

UTF-16 каждую кодовую позицию для символов из плоскости BMP представляет двумя байтами. Кодовые позиции из других плоскостей представлены так называемой суррогатной парой. Представление основных символов одинаковым числом байтов очень удобно в том плане, что можно прямо адресоваться к любому символу строки.

В кодировке UTF-8 коды символов меньшие, чем 128, представляются одним байтом. Все остальные коды формируются по более сложным правилам. В зависимости от символа, его код может занимать от двух до шести байтов, причем старший бит каждого байта всегда имеет единичное значение. Иными словами, значение байта лежит в диапазоне от 128 до 255. Ноль в старшем бите байта означает, что код занимает один байт и совпадает по кодировке с ASCII. Схема формирования кодов UTF-8 показана в табл. 2.11.

Таблица 2.11. Структура кодов UTF-8

 

 

 

 

 

Число

Двоичное представление

Число свобод-

байтов

 

ных битов

1

0xxxxxxx

7

 

2

110xxxxx 10xxxxxx

11

(5 + 6)

3

1110xxxx 10xxxxxx 10xxxxxx

16

(4 + 6 × 2)

4

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

21

(3 + 6 × 3)

5

111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

26

(2 + 6 × 4)

6

1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

31

(1 + 6 × 5)

В UTF-7 код символа также может занимать один или более байтов, однако в каждом из байтов значение не превышает 127 (старший бит байта содержит ноль). Многие символы кодируются одним байтом, и их кодировка совпадает с ASCII, однако некоторые коды зарезервированы для использования в качестве преамбулы, характеризующей последующие байты многобайтового кода.

Стандарт Unicode обратно совместим c кодировкой ASCII, однако, если в ASCII для представления схожих по виду символов (минус, тире, знак переноса) применялся общий код, в Unicode каждый из этих символов имеет уникальную кодировку.

86

Глава 2. Архитектура системы команд

 

 

Впервые Unicode был использован в операционной системе Windows NT. Распределение кодов в Unicode иллюстрирует табл. 2.12.

Таблица 2.12. Блоки символов в стандарте Unicode

Коды

Символы

0–8191

Алфавиты — английский, европейские, фонетический, кириллица, ар-

 

мянский, иврит, арабский, эфиопский, бенгали, деванагари, гур, гуджара-

 

ти, ория, телугу, тамильский, каннада, малайский, сингальский, грузин-

 

ский, тибетский, тайский, лаосский, кхмерский, монгольский

8192–12287

Знаки пунктуации, математические операторы, технические символы,

 

орнаменты и т. п.

12288–16383

Фонетические символы китайского, корейского и японского языков

16384–59391

Китайские, корейские, японские идеографы. Единый набор символов

 

каллиграфии хань

59392–65024

Блок для частного использования

65025–65536

Блок обеспечения совместимости с программным обеспечением

Логические данные

Элементом логических данных является логическая (булева) переменная, которая может принимать лишь два значения: «истина» или «ложь». Кодирование логического значения принято осуществлять битом информации: единицей кодируют истинное значение, нулем — ложное. Как правило, в ВМ оперируют наборами логических переменных длиной в машинное слово. Обрабатываются такие слова с помощью команд логических операций (И, ИЛИ, НЕ и т. д.), при этом все биты обрабатываются одинаково, но независимо друг от друга, то есть никаких переносов между разрядами не возникает.

Строки

Строки — это непрерывная последовательность битов, байтов, слов или двойных слов. Битовая строка может начинаться в любой позиции байта и содержать до 232 битов. Байтовая строка может состоять из байтов, слов или двойных слов. Длина такой строки варьируется от нуля до 232 – 1 байтов (4 Гбайт). Приведенные цифры характерны для 32-разрядных ВМ.

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

Прочие виды информации

Представляемая в ВМ информация может быть статической или динамической [25].Так,числовая,символьнаяилогическаяинформацияявляетсястатической—ее

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

87

 

 

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

Видеоинформация

Видеоинформация бывает как статической, так и динамической. Статическая видеоинформация включает в себя текст, рисунки, графики, чертежи, таблицы и др. Рисунки делятся также на плоские — двумерные и объемные — трехмерные.

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

Для демонстрации анимационных и слайд-фильмов опираются на различные принципы. Анимационные фильмы демонстрируются так, чтобы зрительный аппарат человека не мог зафиксировать отдельных кадров (для получения качественной анимации кадры должны сменяться порядка 70 раз/с). При демонстрации слайдфильмов каждый кадр экспонируется на экране столько времени, сколько необходимо для восприятия его человеком (обычно от 30 с до 1 мин). Слайд-фильмы можно отнести к статической видеоинформации.

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

Вматричных форматах изображение представляется прямоугольной матрицей точек — пикселов (picture element), положение которых в матрице соответствует координатам точек на экране. Помимо координат, каждый пиксел характеризуется своим цветом, цветом фона или градацией яркости. Количество битов, выделяемых для указания цвета пиксела, изменяется в зависимости от формата. В высококачественных изображениях цвет пиксела описывают 32 битами, что дает около 4096 млн цветов. Основной недостаток матричной (растровой) графики заключается в большой емкости памяти, требуемой для хранения изображения, из-за чего для описания изображений прибегают к различным методам сжатия данных. Сжатие изображения обычно включает два этапа. На первом этапе изображение делится на блоки пикселей, в каждом из которых устраняется избыточность. На втором этапе производится кодирование длинных последовательностей нулей и единиц и представление их кодами переменной длины. В случае динамической видеоинформации возможен и третий этап сжатия за счет сравнения каждого изображения с предыдущим и сохранением лишь изменившейся его части. В настоящее время существует множество форматов графических файлов, различающихся алгоритмами сжатия

88

Глава 2. Архитектура системы команд

 

 

и способами представления матричных изображений, а также сферой применения. Некоторые из распространенных форматов матричных графических файлов перечислены в табл. 2.13.

Таблица 2.13. Матричные графические форматы

Обозначение

Полное название

BMP

Windows и OS\2 Bitmap

GIF

Graphics Interchange Format

PCX

PC Paintbrush File Format

JPEG

Joint Photographic Experts Group

TIFF

Tagged Image File Format

PNG

Portable Network Graphics

Векторное представление, в отличие от матричной графики, задает изображение не пикселами, а графическими примитивами, которые могут быть описаны математически. В качестве примитивов могут выступать:

линии и ломаные линии;многоугольники;окружности и эллипсы;сплайны;безигоны.

Прежде всего следует пояснить некоторые пункты в вышеприведенном списке, в частности понятия сплайна и безигона.

Сплайн — это гладкая кривая, которая проходит через две или более опорных точки, управляющие формой сплайна. В векторной графике наиболее распространены сплайны на основе кривых Безье (Bezie). Кривая Безье описывается парой касательных в точках ее концов. Касательные задаются как отрезки прямой путем указания координат концов этих отрезков, то есть четырьмя координатами P0, P1, P2 и P3. Эти отрезки можно рассматривать как «рычаги», с помощью которых кривую изгибают нужным образом. Форма кривой зависит не только от наклона касательной, но и от длины отрезка, представляющего касательную (рис. 2.29).

Рис. 2.29. Пример кривой Безье

Термин безигон образованный сочетанием слов Безье и полигон (многоугольник), обозначает фигуру, напоминающую многоугольник, но в котором вершины соединены не прямой линией, а кривыми Безье.

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

89

 

 

Так как все примитивы в векторной графике определены соответствующими математическими выражениями, для их описания в рамках изображения достаточно указать лишь несколько параметров, а соответствующее графическое представление получить путем «вычислений». Так, для описания окружности достаточно указать ее радиус и координаты центра, а также цвет и толщину контура и цвет заполнения (если не предполагается сделать контур или окружность прозрачными). Сравнительно небольшое число параметров, характеризующих графические примитивы, позволяет существенно сократить объем файла с изображением. Еще одно достоинство векторной графики — при масштабировании объектов качество изображения не ухудшается.

Недостатком векторных изображений является их некоторая искусственность, заключающаяся в том, что любое изображение необходимо разбить на конечное множество составляющих его примитивов. Кроме того, с увеличением числа графических примитивов возрастает и объем соответствующего файла. Как и для матричной графики, существует несколько форматов графических векторных файлов. Некоторые из них приведены в табл. 2.14.

Таблица 2.14. Векторные графические форматы

Обозначение

Полное название

DXF

Drawing Interchange Format

CDR

Corel Drawing

AI

Adobe Illustrator

PS

PostScript

SVG

Scalable Vector Graphics

VSD

Microsoft Visio format

Матричная и векторная графика существуют не обособленно друг от друга. Так, векторные рисунки могут включать в себя и матричные изображения. Кроме того, векторные и матричные изображения могут быть преобразованы друг в друга. Графические форматы, позволяющие сочетать матричное и векторное описание изображения, называются метафайлами. Метафайлы обеспечивают достаточную компактность файлов с сохранением высокого качества изображения. Примеры наиболее распространенных форматов метафайлов даны в табл. 2.15.

Таблица 2.15. Форматы метафайлов

 

 

 

Обозначение

Полное название

EPS

Encapsulated PostScript

WMF

Windows Metafile

CGM

Computer Graphics Metafile

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

90

Глава 2. Архитектура системы команд

 

 

Аудиоинформация

Понятие аудио связано со звуками, которые способно воспринимать человеческое ухо. Частоты аудиосигналов лежат в диапазоне от 15 Гц до 20 кГц, а сигналы по своей природе являются непрерывными (аналоговыми). Прежде чем быть представленной в ВМ, аудиоинформация должна быть преобразована в цифровую форму (оцифрована). Для этого значения звуковых сигналов (выборки, samples), взятые через малые промежутки времени, с помощью аналого-цифровых преобразователей (АЦП) переводятся в двоичный код. Обратное действие выполняется цифроаналоговыми преобразователями (ЦАП). Чем чаще производятся выборки, тем выше может быть точность последующего воспроизведения исходного сигнала, но тем большая емкость памяти требуется для хранения оцифрованного звука. Для высококачественного представления аудиоинформации рекомендуется 16-раз­ рядное представление амплитуды сигнала (216 градаций уровня звука) и частота выборки порядка 40 кГц (промежуток времени между последовательными выборками не более 25 мкс).

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

Таблица 2.16. Форматы аудиофайлов

 

 

 

Обозначение

Полное название

AVI

Audio Video Interleave

WAV

WAVeform Extension

MIDI

Musical Instrument Digital Interface

AIF

Audio Interchange Format

MPEG

Motion Picture Expert Group Audio

RA

Real Audio

Типы команд

Несмотря на различие в системах команд разных ВМ, некоторые основные типы операций могут быть найдены в любой из них. Для описания этих типов примем следующую классификацию:

команды пересылки данных;команды арифметической и логической обработки;команды работы со строками;

команды SIMD;

команды преобразования;команды ввода/вывода;

команды управления потоком команд.