112
Чтобы хранить тестированные указатели в регистрах, размер
целочисленных регистров нужно было увеличить до 65 разрядов. Эта схема
разрабатывалась около года. Но от нее пришлось отказаться и вернутся к тому,
чтобы хранить теги только в памяти. На то были три основные причины. Во-
первых, изменение размера указателя влияло на OS/400 и требовало внесения
в
ее код слишком многих модификаций. Во-вторых, такой подход ограничивал
будущие расширения размера адреса 64 разрядами. В-третьих, и это было
главным, процессоры в режиме активных тегов оказались бы несовместимы с
набором команд PowerPC.
Будущие процессоры, реализующие режим неактивных тегов, где 65-й
разряд игнорируется, были бы полностью совместимы с PowerPC. Поначалу не
собирались реализовывать 32-разрядные команды в режиме активных тегов,
полагая, что этот режим будет использоваться только операционной системой
AS/400, которая имеет дело лишь с 64-разрядными командами. На
предварительном этапе выполнять какое-либо 32-разрядное программное
обеспечение в режиме активных тегов не планировалось.
Затем, когда было решено поддерживать совместимость с набором
команд PowerPC, пришлось избавиться
от 65-го разряда в процессоре, полагая,
что в дальнейшем возможно некое слияние операционных систем IBM.
Поскольку большая часть программного обеспечения будет написана для 32-
разрядного процессора, то и процессоры даже в режиме активных тегов
реализуют 32-разрядный набор команд. Все будущие процессоры Рочестера
при включенном режиме неактивных тегов смогут исполнять любые
приложения и операционные
системы для PowerPC.
Хотя вернулись к 64-разрядным процессорам уже много лет назад, в IBM
по-прежнему иногда говорят о 65-разрядных процессорах, которые никто
никогда не создавал. Просто многим неизвестно, что здесь делает бит тега.
Вероятно, если бы мы назвали его битом защиты указателя в памяти (pointer in
memory protection), то меньше бы людей пребывало в
заблуждении. Увы, тогда
нам пришлось бы все свое время посвятить объяснениям того зачем нам нужен
бит-«рimр» .
9.4. Команды PowerPC AS/400
Архитектура PowerPC определяет привилегированные операции и
команды, используемые не приложениями, а только операционной системой.
Режим активных тегов включает разширения, добавленные для AS/400.
Например, механизм трансляции адреса должен поддерживать и
одноуровневую память с общим
адресным пространством, и обычную память
с отдельным адресным пространством для каждого процесса. С помощью
режима активных тегов мы приказываем процессору обратиться к
одноуровневой памяти. В режиме неактивных тегов процессор использует
обычную трансляцию адреса PowerPC.