Организация оперативной памяти ЭВМ "Электроника 79". Часть 2.

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


Форматы регистров системы памяти

При возникновении ошибок паритета возможны два действия процессора: прекращение выполнения текущей операции и вызов прерывания (адрес вектора 114) или выполнения команды до конца, а затем прерывание с тем же адресом вектора. Первое действие обычно называют отказом, второе — прерыванием. При считывании данных из ОЗУ в кэш-память (считывание осуществляется блоками по два слова) отказ возникает, если ошибка в требуемом слове, а прерывание, если ошибка в другом слове. Любая ошибка паритета, обнаруженная при передаче данных или адресов в Канал, вызывает прерывание программы, а ошибка паритета адреса при обращении к ОЗУ — только отказ. Прерывание программы производится также при обнаружении ошибки паритета данных или адресов в цикле обращения процессора или Канала к кэш-памяти.

При обработке прерывания возможно принять некоторые меры по исключению ошибок паритета. Так, если половина или вся кэш-память не работает, то можно ее отключить, установив соответствующие разряды в регистре системы памяти. При этом операции будут выполняться медленнее, но результат будет правильным. Аналогично можно исключить и часть неработающего ОЗУ с помощью диспетчера памяти. Если данные, извлекаемые из кэш-памяти, имеют неправильный паритет, то их можно взять из ОЗУ. Контроллеры внешней памяти проверяют и вырабатывают паритет для данных, передаваемых в основную память, а также имеют возможность обработки ошибок адреса. При этом они не запрашивают прерывания центрального процессора.

Регистр ошибок памяти (адрес 117777744) указывает на тип ошибки и место ее возникновения. Регистры адреса ошибки (адрес 17777740) хранят информацию о типе проводимой операции: ввод, ввод — пауза — вывод, вывод или вывод байта (разряды 14, 15 старшего регистра адреса ошибок) и 22-разрядный адрес первой ошибки.

Регистр управления системой памяти (адрес 17777746) позволяет процессору нормально работать при неисправностях кэш-памяти и частично ОЗУ. При установленных разрядах 02, 05 или 03, 04 будет работать половина кэш-памяти и быстродействие системы памяти несколько снизится. Если же не работает вся кэш-память, то устанавливаются разряды 02 и 03 и все обращения будут производиться к ОЗУ, минуя кэш-память, при этом быстродействие значительно снижается. Установка разрядов 00 и 01 запрещает возникновение прерывания по ошибкам паритета в Канале и исправимым ошибкам, а также обеспечивает правильные результаты за счет увеличения количества циклов обращения к памяти.

Регистр отладки (адрес 17777750) позволяет произвести проверку и отладку ОЗУ, кэш-памяти, включая разряды паритета. Регистр «есть/нет» (адрес 17777752) следит за последними шестью обращениями центрального процессора. Все регистры, за исключением регистров управления и отладки, предназначены только для чтения и восстанавливаются по канальному сигналу «Сброс».

После формирования 22-разрядного адреса центральный процессор по четырем старшим разрядам адреса определяет, к чему идет обращение — к адресному пространству Канала или к ОЗУ. Если все четыре разряда (с 18 по 21) являются единицами (от 17000000 до 17777777), тогда младшие 18 разрядов используются для адресации к регистрам устройств Канала или процессора. В противном случае адрес сравнивается с содержимым регистра верхней границы системы (адрес 17777762). При превышениях адреса границ реально установленной памяти происходит прерывание. Это позволяет не организовывать фиксацию ошибок по тайм-ауту при обращении к несуществующей оперативной памяти. Если же обращение к памяти производится через преобразователь адресов Канала, то ошибка обращения к несуществующей памяти фиксируется по тайм-ауту.

Кроме перечисленных регистров центральный процессор имеет регистр идентификации системы (адрес 17777764), который отображает конфигурацию системы.