Аппаратная защита адресов памяти в системах с теговой архитектурой

Более радикальные меры для защиты памяти (и не только) предприняты в системах с теговой архитектурой - МВК "Эльбрус", Burroughs 5000/6700/7700 и др.

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

Адрес в системе с теговой архитектурой представлен специальным адресным словом - дескриптором(descriptor). Кроме тега и собственно адреса начала адресуемого массива в памяти, дескриптор содержит также длинумассива и 4 бита зашиты – от чтения, от записи, от выполненияи от записи адресной информации. Формирование и изменение дескриптора возможно только средствами ОС в привилегированном режиме. Пользовательская программа не может ни сформировать, ни изменить дескриптор и работает со своей областью памяти как с массивом, защищенным тегом и дескриптором, образовывая от него подмассивы и формируя их дескрипторы (такое действие разрешено). Допустимая операция над массивом - индексация a[i],в которой аппаратно проверяется, что индекс iне выходит за границы массива a. Таким образом, обращение в "чужую" область памяти в такой системе принципиально невозможно. Невозможна также адресная арифметика (в стиле C / C++), так как попытка выполнения арифметической операции над словом с тегом дескрипторприводит к немедленному прерыванию.

Кроме дескриптора, имеется также косвенное слово (indirect word)– тегированный адрес для обращения к элементу данных одной командой, непосредственно по адресу (без индексации). Для косвенных слов фактически выполняются те же аппаратные проверки, что и для дескрипторов.

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