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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

31 Cтарший байт

 

 

Младший байт 0

                                                         
                                                               

 

             
z
 
z+1
 
z + 2 а)
 
z+3

 

 


31 Младший байт

 

 

Cтарший байт 0

                                                         
                                                               

 

 

 

 


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

Представление нечисловой информации в ВМ

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

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

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

·  расширенный двоично – кодированный код EBCDIC (Extended Binary Coded Decimal Interchange Code). Код используется в качестве внутреннего кода в универсальных ВМ фирмы IBM. В нашей стране он известен под названием ДКОИ (двоичный код для обработки информации);

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

Стандартный код ASCII обеспечивал представление 128 символов, включая все латинские буквы, цифры, знаки основных математических и знаки пунктуации. Для кодирования символа отводилось 7 разрядов, восьмой разряд использовался для контроля четности. В последствии появилась европейская модификация ASCII, в которой за счет использования восьмого разряда для кодирования символов, дополнительные комбинации (коды 128 -255) отведены для представления специфических букв алфавитов западно – европейских языков, символов псевдографики, некоторых букв греческого алфавита, ряда математических и финансовых символов. Эта кодовая таблица считается мировым стандартом, применяется с различными модификациями во всех странах. В зависимости от использования кодов 128 – 255 для национальных алфавитов различают 16 вариантов стандарта ISO 8859.

Код ASCII оказался недостаточным для воспроизведения всего множества необходимых символов. В 1993 году компании Apple Computer, Microsoft, Hewlet - Packard, DEC и IBM разработали 16-битовый стандарт ISO 10646, определяющий универсальный набор символов (UCS, universal Character Code). В новом коде, известном под названием Unicode, разрешено задавать до 65 536 символов. Для букв русского языка выделены коды 1040 – 1093.

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

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

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

Графические изображения представляются в матричном или векторном формате.

В матричных форматах изображение разбивается на множество точек (матрица пикселей), положение точек определяется её координатами на экране. Пиксель помимо координат характеризуется своим цветом, цветом фона или градацией яркости. Количество бит, необходимое для кодирования цвета точки называется глубиной цвета. Наиболее распространенными значениями глубины цвета являются 4, 8, 16 и 24 бита на точку. Количество цветов можно вычислить по формуле N =2 I , где I- глубина цвета. Матричный формат требует для хранения изображения большой объем памяти, поэтому для описания изображения используются различные методы сжатия данных. Существует множество форматов графических файлов, отличающихся способами представления матричных изображений, алгоритмами сжатия, сферой применения.

Векторные форматы используются для чертежей и изображений с простыми формами, в тех случаях, когда требуется возможное изменение масштаба без ухудшения качества изображения. В векторной графике для описания изображения используются кривые – сплайны. Сплайн – это гладкая кривая, проходящая через две или более опорные точки, управляющие формой сплайна. В векторной графике для описания объектов используются математические формулы. Ряд простейших объектов (примитивов) и их комбинации служат основой создания более сложных изображений. Это приводит к некоторой искусственности изображения, так как изображение разбивается на конечное множество составляющих его примитивов (эллипсов, линий, прямоугольников, дуг). Описание объекта является простым и занимает мало памяти.

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

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

Звук представляет собой звуковую волну с непрерывно меняющейся амплитудой и частотой. Понятие аудио связано со звуками, воспринимаемых человеческим ухом и имеющих частоту от 15 Гц до 20 КГц. Вычислительная машина способна обрабатывать информацию представленную в двоичном виде, поэтому аудиоинформация оцифровывается (преобразуется в цифровую форму). Оцифровку звука выполняет специальное устройство на звуковой плате. Называется аналого-цифровой преобразователь (АЦП). Обратный процесс – воспроизведение закодированного звука производится с помощью цифро-аналогового преобразователя (ЦАП).

В процессе кодирования непрерывного звукового сигнала производится его дискретизация по времени. Звуковая волна разбивается на отдельные маленькие временные участки и для каждого участка устанавливается определенная величина амплитуды. Данный метод называется импульсно - амплитудной модуляцией. Таким образом, гладкая кривая заменяется на последовательность «ступенек» (рис. 2.10). Чем мельче «ступеньки», тем выше может быть точность последующего воспроизведения исходного сигнала, но тем большая емкость памяти требуется для хранения оцифрованного звука. Как правило, к файлам аудиоинформации применяются различные методы сжатия, к которым предъявляется требование возможности восстановления непрерывного сигнала без заметного ухудшения его качества.

 

Амплитуда

                   

 

                   
                   
                   
                   
                   
                   
                   
                   
                   
                   

 Время                   t

 

 
Рис. 2.10. Звуковой сигнал после оцифровки  


Система кодирования чисел.

Для представления чисел с учётом их знаков в вычислительных машинах используются специальные коды.  

Прямой код.

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

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

 Обозначение: [ А ]пр   

Пример: А = + 10101.01→ [ А ]пр = 0 [4] 10101.01;

В = - 11001.1 → [ В ]пр   = 1  11001.1.

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

Обратный код.

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

Для получения обратного кода отрицательного числа следует каждую 1 поменять на 0, а 0 на 1 (инвертировать число), в знаковый разряд записать 1.

Пример: А = + 10101.01→ [ А ]пр = 0 10101.01→[ А ]обр = 0 10101.01;

           В = - 11001.1 → [ В ]пр = 1 11001.1 →[ В ]обр = 1 00110.0

           А = - 11001 → [ А ]пр = 1 11001 → [ А ]обр = 1 00110;

            В = -011     → [ В ]пр = 1 100   → [ В ]обр = 1 011.

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

2.2.3. Дополнительный код.

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

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

Пример: [ А ]пр = 1 11001 → [ А ]обр = 1 00110→ [ А ]д = 1 00111;

            ]пр = 1 100 → [ В ]обр = 1 011 → [ В ]д = 1 100.

В вычислительных машинах операция вычитание над числами заменена сложением чисел, причём вычитаемое представляется как отрицательное число в дополнительно коде.

Пример: выполнение операции вычитания А-В (А =510, В =310) осуществляется как операция сложения А+(-В). Переводим числа в дополнительный код и осуществляем операцию сложения.

           [ А ]пр= 0 001012→ [ А ]обр = 0 0001012→ [А]д = 0 0001012;

           [ В ]пр = 1 00112→ [ В ]обр = 1 1111002 → [В]д = 1 1111012.

              Знак Слагаемые

    результат 0 1 0 0 0 0 1 0 12       1 1 1 1 0 12        0 0 0 0 1 0 2    510 -310 210


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

[0]д = 0 0…0;

 +0 = [0]о=0 000…00;

-0 = [0]о=1 111…11.

2.2.4. Модифицированные коды.

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

Чтобы избежать переполнения вводятся модифицированные коды. Модификация кодов заключается во введении дополнительного разряда, который располагается перед знаковым разрядом. Этот разряд часто называют разрядом переполнения (РП). Перед выполнением сложения положительные числа имеют в знаковом разряде и РП два нуля, а отрицательные – две единицы (рис. 2.11, а). Признаком переполнения разрядной сетки является наличие в знаковом разряде результата и в разряде переполнения различных цифр (рис. 2.11, б).

           
1
 

 


Код с исправлением ошибок

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

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

Коды Хемминга

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

Для построения самоконтролирующегося кода достаточно иметь один контрольный разряд (код с проверкой на четность). Но при этом неизвестно, в каком именно разряде произошла ошибка и отсутствует возможность ее исправления. Чётное числа ошибок остается незамеченным.

Коды Хемминга обладают большей относительной избыточностью, чем коды с проверкой на четность, и предназначены либо для исправления одиночных ошибок (при d [5]=3), либо для исправления одиночных и обнаружения без исправления двойных ошибок (d =4). В таком коде n – значное число имеет m информационных и k контрольных разрядов (длина слова n = m + k ). Каждый из контрольных разрядов является знаком четности для определенной группы информационных знаков слова. При декодировании производится k групповых проверок на четность. В результате каждой проверки в соответствующий разряд записывается 0, если проверка была успешной, или 1, если была обнаружена нечетность.

Группы проверки образуются таким образом, что в регистре ошибки после окончания проверки получается k – разрядное двоичное число, указывающее номер позиции ошибочного двоичного разряда. Изменение значения этого разряда (0 на 1 или 1на 0) исправляет ошибку.

Для любых двух кодированных слов, например 10001001 и 10110001, можно определить, сколько соответствующих битов в них различается. Используя логическую операцию исключающее ИЛИ (xor), сосчитаем число битов со значением 1 в полученном результате (10001001 xor 10110001=0 1 000 11 0). В данном примере таких бита 3. Число битовых позиций, по которым различаются два слова, называются интервалом Хэмминга. Если интервал Хэмминга для двух слов равен d, это означает, что достаточно d битовых ошибок, чтобы превратить одно слово в другое.

Память состоит из m - битных слов, существует 2 m вариантов сочетания битов. Кодированные слова состоят из n битов, но из-за способа подсчета контрольных разрядов допустимы только 2 m из 2 n кодированных слов. Если в памяти обнаруживается недопустимое кодированное слово, то компьютер знает, что произошла ошибка. При наличии алгоритма для подсчета контрольных разрядов можно составить полный список допустимых кодированных слов и из этого списка найти два слова, для которых интервал Хэмминга будет минимальным. Это интервал Хэмминга полного кода.

Свойства проверки и исправления ошибок определенного кода зависят от его интервала Хэмминга. Чтобы обнаружить d ошибок в слове, необходим код с интервалом d +1, поскольку d ошибок не могут изменить одно допустимое кодированное слово на другое допустимое кодированное слово. Соответственно, чтобы исправить d ошибок в битах, необходим код с интервалом 2 d +1, поскольку в этом случае допустимые кодированные слова настолько отличаются друг от друга, что даже если произойдет d ошибок, изначальное кодированное слово будет ближе к ошибочному, чем любое другое кодированное слово, поэтому его можно будет определить.

2.2.5.2. Контроль по модулю.

Для контроля выполнения операций в компьютере код Хэмминга непригоден, так как он основан на определении изменения исходного кода. При выполнении же арифметических и логических операций (АЛО) код изменяется всегда.

Известно много кодов для контроля выполнения АЛО. Например, код «2 из 5» (2 единицы и 3 нуля) или «2 из 7» (2 единицы и 5 нулей). Однако эти коды имеют большую избыточность, требуют сложной схемы реализации. 

Наибольшее распространение как в отечественных, так и в зарубежных компьютерах получил раздельный контроль АЛО с помощью специального устройства, выполняющего арифметические операции над контрольными разрядами. При этом контрольные знаки представляют собой двоичное изображение наименьшего вычета [6] по mod P. Такой контроль получил название контроля по модулю.

Кодирование чисел состоит в определении C(Ni), а для обнаружения ошибок АЛО вместо декодирования выполняется операция сравнения C(N 3) и C(N1)€ C(N 2), где €- знак выполняемой операции. Совпадение результатов является признаком отсутствия ошибки при выполнении АЛО. Принцип раздельного контроля по модулю может быть представлен схемой, приведенной на рис. 2.12.

         
Определение вычета
 

 


                 
C(N1) C(N2)

 

 


 

 


Модуль с минимальным кодовым расстоянием d =2 используют для обнаружения одиночных и некоторых кратных ошибок. Чаще выбирают P равный B -1,где B – основаниесистемы счисления, что позволяет упростить определение вычетов.



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 41; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.29.145 (0.053 с.)