Рисунок 5.4 Файл специальных регистров SF размера (Kx n) |
Рисунок 5.5 Дешифратор адреса AdDec файла регистров SF
Мы не определяем выход Doutфайла специальных регистров, если регистр обновляется и читается одновременно.
Реализация
Рисунок 5.4 изображает пример реализации файла специальных регистров SF размера (Kx n). Мультиплексор перед регистром SF[r] выбирает нужный вход в зависимости от флага специальной записи w[r].
Схема дешифратора адреса AdDecна рисунке 5.5 содержит два k-битных декодера (k = [log K]). Адрес чтения adrдекодируется в биты выбора sl[K- 1 : 0]. Основываясь на этом декодируемом адресе, схема выбора DataSelвыбирает соответствующее значение стандартного выхода данных Dout. Для этой цели, данные Do[r] маскируются битом выбора sl[r]. Замаскированные данные объединяются n-OR-trees в биты разрезанным способом:
Адрес записи adwдекодируется в K битов выбора. Сигналы синхронизации Kрегистров генерируется из этих сигналов согласно уравнению 5.3. Таким образом, стоимость всего файла регистров SF определяется как
CSF(K, n) = K * (Cff(n)+Cmux(n))+CAdDec(K) + n * Cor * Ctree(K) + K * Cand(n)
Рисунок 5.6 Окружение SPRenv конструкции DLX∑
CAdDec(K) = 2*Cdec([logK]) + Cand(K) + Cor(K).
Четкие порты чтения имеют нулевую задержку, тогда как стандартный выход Doutзадерживается дешифратором адреса и схемой выбора:
DSF(Do[r]) = 0;
DSF (Dout) = Ddec ([log K]) + Dand + Dor • Dtree (K).
При доступе по записи, файл специальных регистров имеет задержку доступа DSFw , и сигналы записи wи w[] задерживают сигналы синхронизации на DSF(w;ce):
DSFw = max{Dmux(n), Ddec([log K]) + Dand + Dor } + Dff
dsf(w; ce) = Dand + Dor .
Окружение SPRenv
Ядро окружения специальных регистров SPRenv (рисунок 5.6) – файл специальных регистров размером 6 x 32. Имена этих регистров SPR[5:0] перечислены в таблице 5.3. Окружение управляется сигналами записи SPRwи SPRw[5 : 0], и сигналами JISR, repeat, и sel.
Стандартные порты чтения и записи используются только при специальных командах перемещения movi2s и movs2i и команде rfe. Стандартных выход данных файла регистров равен
Souti = SPR[Sas]i-1 ,
и в случае запроса записи SPRw = 1, файл регистров обновляется как
SPR[Sad]ui := C.4i .
Согласно спецификации раздела 5.2, регистры SPR также должны быть обновлены по команде trap и при переходе на ISR. Эти обновления производятся через шесть четких портов записи файла специальных регистров.
Так как команда trap всегда вызывает прерывание, т.е., trapi = 1 подразумевается JISRi = 1, регистр SPR требует только специальной записи на JISR. Поэтому сигналы записи устанавливаются в
SPRw[r] = JISR.
При JISRрегистр состояния SR очищается. Регистр ECA буферизирует причину маскирования MCA а регистр Edata получает содержимое C.4. При trap, C.4 обеспечивает константу ловушки, а при загрузке или сохранении он предоставляет эффективный адрес памяти:
(Di[0], Di[2], Di[5]) = (0, MCA, C.4).
Выбор входа Di[l] более сложен. Если команда Ii прерывается, новое значение ESR зависит от типа прерывания и от типа Ii
где
Окружение SPRenv выбирает соответствующий вход
где
sel = /\ SPRw /\ ((Sad) = 0).
Согласно определению JISR, если команда Ii прерывается, два исключения PC должны быть установлены в
тогда как при прерывании типа abort, значение исключений PC не имеют значения. Окружение PCenv генерирует значения PCui , DPCui , и
DDPCiu = DPCi-1 ,
которые спускаются вниз по конвейеру вместе с командой Ii . За исключением команды rfe,
DPCiu = PCi-1 ,
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.