распознавание ошибки с сохранением состояния процессора и восстановление на последующем этапе.
MC68020 извещается об ошибке по обращению к памяти либо как об ошибке адреса (диагностируется внутренней логикой), либо как об ошибке шины (диагностируется внешней логикой, как правило, устройством управления памятью или подсистемой памяти). Состояние процессора сохраняется в стеке, как это описано в разделе 6.3.3
Ошибка шины, и может быть позднее восстановлено командой RTE, как это описано в разделе 6.3.11 Возврат из исключения. Действиями, выполняемыми процессором после возврата, можно до некоторой степени управлять путем манипулирования данными в стековом окне исключения по ошибке шины, как это описано ниже.
MC68020 может столкнуться с ошибками либо в потоке команд, либо зафиксировать при доступе к данным. Ошибки доступа к данным фиксируются по завершении цикла шины. Фиксация ошибок в потоке команд откладывается до того момента, пока процессор не попытается (если попытается вообще) использовать информацию, которая не была получена в результате того, что цикл шины был отвергнут. Ошибка адреса может возникнуть только в потоке команд и фиксируется до попытки выполнения цикла.
6.4.1 Специальное слово состояния
Существует несколько специальных регистров, сохраняемых в составе стекового окна исключения по ошибке шины, в числе которых есть внутреннее специальное слово состояния (см. Рис. 6-2). Это слово размещается со смещением $A в окнах обоих форматов, длинного и короткого ( см. 6.5.5 Короткое стековое окно ошибки шины и 6.5.6 Длинное стековое окно ошибки шины).
Рис. 6-2. Специальное слово состояния (SSW)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
----T---T---T---T---T---T---T---T---T---T-----T---T--------¬
¦ FC¦ FB¦ RC¦ RB¦ 0 ¦ 0 ¦ 0 ¦ DF¦ RM¦ RW¦ SIZ ¦ 0 ¦ FC2-FC0¦
L---+---+---+---+---+---+---+---+---+---+-----+---+--------FC - ошибка на ступени C конвейера команд
FB - ошибка на ступени B конвейера команд
RC - флаг повтора для ступени C конвейера команд
RB - флаг повтора для ступени B конвейера команд
DF - флаг ошибки/повтора для цикла данных (*)
RM - чтение-модификация-запись в цикле данных
RW - чтение/запись в цикле данных: 1=чтение, 0=запись
SIZ - код размера для цикла данных
FC0-FC2- адресное пространство для цикла данных
(*) 1= повторить ошибочный цикл шины , или выполнить отложенную предвыборку
0= не повторять цикл шины
Специальное слово состояния (SSW) определяет, имела ли место ошибка в потоке команд, в потоке данных или в них обоих. Имеется по два бита состояния для ступеней B и C конвейера. Флаги повтора (RB и RC) сигнализируют, что процессор должен повторить цикл шины для соответствующих ступеней во время выполнения команды RTE. Это может происходить либо из-за отложенной предвыборки, либо из-за сбоя, случившегося во время предвыборки. Биты ошибки (FB и FC) сигнализируют, что процессор попытался воспользоваться ступенью (B или C) и обнаружил, что во время предвыборки для этой ступени произошла ошибка шины. Биты ошибки являются сугубо выходными и могут быть использованы для определения причины исключения по ошибке шины в процедуре его обслуживания; при восстановлении состояния процессора по команде RTE
они игнорируются. Биты повтора указывают, корректны ли элементы конвейера команд и могут быть использованы процедурой обслуживания при корректировке конвейера, обусловленной ошибкой (адреса или шины). Биты RB и RC используются процессором во время выполнения команды RTE при организации циклов шины для каждой из ступеней; если при считывании стекового окна командой RTE
окажется установленным в единицу хотя бы один из битов повтора, то процессор повторит ранее отвергнутые циклы шины (или отложенную предвыборку осуществит в первый раз). Если бит повтора сброшен, то предполагается, что для соответствующей ступени нет отложенной предвыборки и что образ ступени при необходимости восстановлен или восполнен программно. При записи SSW в стековое окно во время обработки исключения биты RB и/или RC будут установлены в единицу, если установлены в единицу соответствующие биты ошибки, либо если предвыборка для этой ступени находится в состоянии ожидания. Таким образом, по умолчанию (иначе говоря, если процедура обслуживания не изменит биты RB и/или
RC) процессор должен будет выполнить соответствующие циклы шины. Адресное пространство для ошибок в потоке команд не указывается явно, а является программным пространством уровня привилегированности, указанного в сохраненном регистре состояния.
Если произошло исключение по ошибке адреса, то биты ошибки, записываемые в стековое окно, не будут установлены в единицу, поскольку, как сказано выше, они устанавливаются только в случае ошибки шины. В этом случае для определения причины сбоя надо использовать биты повтора. В зависимости от состояния конвейера, в единицу будут установлены либо оба бита RB и RC, либо только бит RB. Если желательно восстановить конвейер и продолжить выполнение приостановленных команд, то следует программным путем поместить корректные данные потока команд в образы ступеней C и/или B (в зависимости от состояния битов повтора); после этого биты повтора должны быть сброшены).
Если бит DF в SSW установлен в единицу, то имела место ошибка при выборке данных. Если бит DF окажется установленным при считывании процессором стекового окна, то ошибочный цикл чтения данных будет повторен; в противном случае считается, что ошибки данных не было или что ошибка была исправлена программным путем. SSW содержит также иную информацию, относящуюся к выборке данных, в том числе признаки чтения/записи, чтения-модификациизаписи, размера операнда. Ошибки потоков данных и команд могут находиться в состоянии ожидания обслуживания одновременно, поэтому процедура обслуживания должна уметь обрабатывать любые комбинации битов FC, FB, RC, RB и DF.
6.4.2 Отработка циклов шины
Существует два метода отработки ошибочных циклов шины. Первый состоит в программной эмуляции цикла, а второй - в повторении процессором цикла после устранения причины ошибки.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.