Единицы информации

 

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

Мы уже знаем, что основной единицей информации в современных ЭВМ является двоичный разряд, или бит. Операнды команд формата RR являются 32-разрядными словами, содержимое которых в командах сравнения и арифметических командах рассматривается как двоичное целое со знаком. Другой важной единицей информации является байт, состоящий из 8 битов.

Байты являются фундаментальными единицами информации в Системе 360, поскольку именно на них основывается вся адресация памяти. Память рассматривается как набор байтов, расположенных в порядке возрастания порядковых номеров, начиная с 0:

Говоря об адресе фиксированного места памяти, мы обычно имеем в виду номер соответствующего байта: если, например, адрес байта есть 30АС (если не оговорено противное, все адреса даются в шестнадцатеричной системе счисления), то этот байт имеет порядковый номер 30АС.

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

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

32-битовое слово состоит из 4 байтов по 8 битов каждый. При использовании команд, работающих с полными словами, их адреса определяются адресами первых входящих в них байтов. Мы можем представлять себе память как набор полных слов, каждое из которых имеет адрес на 4 больший, чем предыдущее. Первое полное слово имеет адрес 0, за ним следуют слова с адресами 4, 8, С, 10, 14 и т. д. При использовании команд работы с полными словами мы должны придерживаться следующего правила: адрес полного слова должен быть кратен 4.

Подобные правила применяются и для адресации других единиц информации, по размерам превосходящих байт. Эти правила определяются физическими, а не логическими правилами. Так мы можем работать с полями информации, логическая длина которых равна 4 байтам, и при этом не беспокоиться о соблюдении этого правила, если нам не приходится использовать команды, требующие 4-байтовых операндов. Но тот факт, что некоторая единица информации начинается с границы какого-либо полного слова, вовсе не означает, что для работы с ней нужно использовать лишь команды с 32-разрядными операндами. Информация часто записывается в память полными словами, а затем модифицируется с помощью команд, работающих с отдельными байтами. Указанное выше правило можно переформулировать так: в командах работы с полными словами адреса операндов должны быть кратны 4. Невыполнение этого или других правил расположения операндов приводит к особому случаю спецификации, фиксирующему ошибку определения операнда.

Обычно при формулировании правил расположения применяется термин выравнивание информации. Единица информации считается выровненной по границе полного слова, если ее начало совпадает с началом какого-либо полного слова, т.е. ее адрес кратен 4.

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

Нетрудно догадаться, что для полуслов должно выполняться следующее правило: адрес полуслова должен быть кратен 2.

Двойные слова (64 бита) используются в операциях арифметики с плавающей точкой двойной точности и операциях преобразования данных (гл. 19 и 15 соответственно).

Правило выравнивания для двойных слов выглядит так: адрес двойного слова должен быть кратен 8.

На рис. 6.1 схематически представлен участок памяти и его деление на части, соответствующие единицам информации.

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

Иными словами, программисту предоставлен выбор команд, требующих выравнивания операндов по границам байтов, полуслов, полных или двойных слов. Этот выбор зависит от необходимых действий и удобства. Часто приходится рассматривать один и тот же сегмент памяти как состоящий из различных по длине единиц информации на различных этапах вычислений. Таким образом, можно загрузить полное слово, используя команды побайтовой пересылки, затем обработать накопленную информацию с помощью команд с 32-разрядными операндами (это могут быть команды арифметики с фиксированной точкой, с плавающей точкой или иные), затем использовать вновь побайтовую обработку и побайтовую пересылку результатов. Правила выравнивания представляют собой не что иное как ограничения на адресацию различных единиц информации при использовании их в качестве операндов в определенных командах.

 

Рис. 6.1. Схематическое представление основных единиц информации и их расположения в памяти.

Единица памяти

Длина в битах

Длина в байтах

Адрес кратен числу

Последняя цифра адреса

Байт

8

1

1

0, 1, 2........ Е, F

Полуслово

16

2

2

0, 2, 4, 6, 8, А, С, Е

Слово

32

4

4

0, 4, 8, С

Двойное слово

64

8

8

0, 8


Таблица 6.1

 

 
Статьи раздела