Организация ЭВМ и систем. Однопроцессорные ЭВМ. Часть 3

       

ТЕГИ И ДЕСКРИПТОРЫ САМООПРЕДЕЛЯЕМЫЕ ДАННЫЕ


Одним из эффективных средств совершенствования архитектуры современных ЭВМ является теговая организация памяти, при которой каждое хранящееся в памяти или регистре слово снабжается тегом. Тег определяет тип данных – целое число, ЧПЗ, десятичное число, адрес, строку символов, дескриптор и т.д. В поле тега обычно указывают не только тип, но и длину (формат) и некоторые другие его параметры. Теги формируются компилятором. Формат данных, хранимых в памяти, при этом имеет вид, изображенный на рис. 9.1.

Наличие тегов придает хранящимся в машине данным свойство самоопределяемости. Это принципиальная особенность в функционировании ЭВМ.

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

Например, в IBM-360/370 команда десятичное сложение

самим своим кодом операции определяла, что адресуемые ею операнды являются десятичными числами. Специальные четырехразрядные поля в этой команде задавали число десятичных цифр в 1-м и 2-м операндах. Таким образом, в IBM-360/370 имелось 256 кодов только одной команды десятичное сложение.

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

-       облегчает работу программиста, в том числе при отладке программ;

-       сокращает затраты времени на компиляцию (отпадает необходимость выбора типа команды в зависимости от типа данных);



В качестве примера рассмотрим один из видов дескрипторов – дескриптор данных в машине B6700 фирмы Burroughs (рис. 9.2).



Дескриптор содержит специфический тег ТДс, указывающий, что данное слово является дескриптором определенного вида, группу указателей и два поля A и L/X. Поле A указывает адрес начала массива данных. В зависимости от значения указателя I дескриптор описывает массив данных (I = 0)– и в соответствующее поле помещается длина массива L, или описывает элемент массива (I = 1)– и тогда в поле находится индекс X. Этот индекс указывает смещение элемента относительно начала массива. Указатель P определяет, находится массив в оперативной памяти или ВП, т.е. его можно назвать "Указатель присутствия". В последнем случае (нахождение в ВП) поле A указывает местоположение массива во внешней памяти. Остальные указатели имеют следующий смысл:



D – одинарная или двойная точность представления данных;

T – описывается слово или строка;

R = 1 – данные можно только читать;

S – указывает на непрерывное или фрагментарное расположение массива в памяти;

C – определяет, является ли дескриптор копией другого дескриптора.

Процессоры фирмы Intel, начиная с модели I80386, снабжены средствами, позволяющими реализовать механизм разделения логического адресного пространства памяти на страницы (4 Кбайт) и сегменты разного размера (сегменты программ, данных, системные сегменты и т.д.). Более подробно этот вопрос обсуждается в

п. 9.4. Все сегменты рассматриваются как массивы, и для их описания и адресации используются дескрипторы. Каждая задача может иметь системное и индивидуальное логическое адресное пространство. Эти пространства описываются соответственно глобальной (GDT) и локальной (LDT) таблицами дескрипторов сегментов, каждая из которых может содержать максимум 8192 дескриптора. На рис. 9.3 представлен формат дескрипторов сегмента программ и сегмента данных процессо-

ра I80386.



Назначение полей дескриптора приведено на рис. 9.3, однако необходимо сделать некоторые пояснения:



-       "16-разрядный режим" – это режим полной эмуляции процессора I80286.

-       "Базовый адрес" – 32-битное поле (из трех фрагментов), определяющее положение сегмента в адресном пространстве 4 Гбайт.

-       "Предел" – 20-битное поле (из двух фрагментов), определяющее размер сегмента. В зависимости от значения бита гранулярности G предел вычисляется либо в байтах (G = 0), либо в страницах по 4 Кбайта (G = 1). В первом случае размер сегмента не превышает 1 Мбайт, во втором – может достигать 4 Гбайт.

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



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


Содержание раздела