В различных архитектурах типы данных определяются программой, иначе говоря, типы данных определяются кодом операции, что приводит к необходимости использовать разные команды для обработки различных типов данных. Каждый тип данных предусматривает наличие специального подмножества команд.
Принцип теговой архитектуры заключается в самоопределение данных, то есть каждая ячейка памяти имеет специальное дополнительное поле (тег), которое служит для описания атрибутов его содержимого. Это позволяет получить инвариантность команд к типам используемых данных. Сокращается число и длина команд. Определение типа данных откладывается на момент выборки этих данных, а не на момент выборки команды. Вполне может быть, что возникают исключительные ситуации, связанные с несоответствием типов командам, как правило, это является ошибкой программирования.
Расширенный принцип тегирования.
Заключается в задании не только типа хранимых данных, но и длины операнда, занятости ячейки и т.д. Используются дополнительные флаги:
1. Бит занятости. Определяет, свободна ячейка или занята.
2. Бит захвата. Необходимость выполнения прерывания при доступе к ячейке.
3. Биты защиты – определяет, какие обращения допустимы к этой «порции» данных (только чтение, только запись, чтение/запись).
4. Длина данных.
Преимущества механизма тегирования
1. Компактная система команд.
2. Строгий контроль типов.
3. Более простые компиляторы. Меньший объем кода.
4. Уменьшение интенсивности пересылки основная память – процессор, т.к. уменьшается код программы, загружающий интерфейс на 50%, а увеличивается объем читаемых данных, загружающий интерфейс на 30%.
Недостатки теговой организации:
1. Строгий контроль типов снижает выразительные способности языка.
2. Уменьшается быстродействие процессора за счет откладывания привязки атрибутов данных на этап выполнения команды. В момент дешифрации команды сразу определяются типы данных, здесь же в момент дешифрации команды типы данных не определяются и поэтому то время, которое связано с подгрузкой операнда могло быть использовано для определения типов данных, что и происходит. Т.е. сокращено время дешифрации команды, но доступ к памяти медленный и снижается быстродействие процессора.
3. Дополнительные расходы основной памяти в области данных для хранения полей тега.