Регистры и триггеры микропроцессора

регистры и триггеры микропроцессора

You: тема разговора - регистры, триггеры и защёлки

Losh@dka: регистры причины исключения и EPC являются частью Сопроцессора 0 – той частью процессора MIPS, которая выполняет системные функции. Сопроцессор 0 может содержать до 32 регистров специального назначения, включая регистры причины исключения и EPC. Обработчик исключения может использовать команду mfc0 (прочитать из Сопроцессора 0), чтобы скопировать эти регистры специального назначения в один из регистров общего назначения в регистровом файле; внутри Сопроцессора 0 регистр причины исключения расположен под номером 13, а EPC – под номером 14. Для того чтобы обрабатывать исключения, мы должны добавить регистры причины исключения и EPC в тракт данных и расширить мультиплексор PCSrc так, чтобы можно было выбирать еще и адрес обработчика исключений, как показано на Рис. :-]

Пример кода. ФУНКЦИЯ, СОХРАНЯЮЩАЯ ОБЕРЕГАЕМЫЕ РЕГИСТРЫ НА СТЕКЕ. Код на языке ассемблера MIPS:

addi $sp, $sp, −4 # make space on stack to store one register

sw $s0, 0($sp) # save $s0 on stack

add $t0, $a0, $a1 # $t0 = f + g

add $t1, $a2, $a3 # $t1 = h + i

sub $s0, $t0, $t1 # result = (f + g) − (h + i)

add $v0, $s0, $0 # put return value in $v0

lw $s0, 0($sp) # restore $s0 from stack

addi $sp, $sp, 4 # deallocate stack space

jr $ra # return to caller

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

You: как регистр и его схема реализуется на логических вентилях и транзисторах?

Losh@dka: Общая форма инвертирующего логического вентиля. Транзисторы n-МОП хорошо передают 0, поэтому схема, понижающая логический уровень (pull-down network), составленная из таких транзисторов, помещается между выходным контактом и землей GND для передачи 0 на выход. Транзисторы p-МОП хорошо передают 1, поэтому схема, повышающая логический уровень (pull-up network), составленная из таких транзисторов, помещается между выходным контактом и напряжением питания VDD для передачи 1 на выход. Понижающая и повышающая схемы могут состоять из транзисторов, соединенных как параллельно, так и последовательно. Причем при параллельном соединении транзисторов вся схема включена, если включен хотя бы один из транзисторов.

При использовании псевдо n-МОП-логики (pseudo-nMOS logic), или просто псевдо-логики, медленный стек из p-МОП-транзисторов заменяют одним «слабым» p-МОП-транзистором, который всегда находится во включенном состоянии. Такой транзистор часто называют слабым подтягивающим транзистором (weak pull-up). Физические параметры p-МОП-транзистора подбираются таким образом, что этот транзистор до высокого логического уровня (1) выход Y «подтягивает слабо» – то есть только в том случае, когда все n-МОП-транзисторы выключены. Но если при этом хотя бы один из n-МОП-транзисторов включается, то он, превосходя по мощности слабый подтягивающий транзистор, «перетягивает» выход Y настолько близко к напряжению земли GND, что на выходе получается логический 0.

You: логическая схема регистра

Losh@dka: Операнд - назначение обозначен как D (регистр или ячейка памяти), а операнд - источник обозначен как S (регистр, непосредственный операнд или ячейка памяти). Некоторые инструкции x86

ADD/SUB Сложение/вычитание D = D + S / D = D − S

ADDC Сложение с переносом D = D + S + CF

INC/DEC Увеличение/уменьшение D = D + 1 / D = D − 1

CMP Сравнение Установить флаги по результатам D – S

NEG Инверсия D = −D

AND/OR/XOR Логическое «И/ИЛИ/ИСКЛЮЧАЮЩЕЕ ИЛИ» D = D операция S

NOT Логическое НЕ D = D¯

IMUL/MUL Знаковое/беззнаковое умножение EDX:EAX = EAX ×D

IDIV/DIV Знаковое/беззнаковое деление EDX:EAX/D EAX = частное; EDX = остаток

SAR/SHR Арифметический/логический сдвиг вправо D = D >>> S / D = D >> S

SAL/SHL Сдвиг влево D = D << S

ROR/ROL Циклический сдвиг вправо/влево Циклически сдвинуть D на S разрядов

RCR/RCL Циклический сдвиг вправо/влево через бит переноса Циклически сдвинуть CF и D на S разрядов

BT Проверка бита CF = D[S] (бит номер S из D)

BTR/BTS Проверить бит и сбросить/установить его CF = D[S]; D[S] = 0 / 1

TEST Установить флаги по результатам проверки бит Установить флаги по результатам D И S

MOV Скопировать операнд D = S

PUSH Поместить на стек ESP = ESP −4; Mem[ESP] = S

POP Прочитать из стека D = MEM[ESP]; ESP = ESP + 4

CLC, STC Сбросить/установить флаг переноса CF = 0 / 1

JMP Безусловный переход Переход по относительному адресу: EIP = EIP + S Переход по абсолютному адресу: EIP = S

Jcc Ветвление (условный переход) Если установлен флаг, то EIP = EIP + S

LOOP Проверка условия цикла ECX = ECX – 1 Если ECX ≠ 0, то EIP = EIP + imm

CALL Вызов функции ESP = ESP – 4; MEM[ESP] = EIP; EIP = S

RET Возврат из функции EIP = MEM[ESP]; ESP = ESP + 4

Обратите внимание, что некоторые команды всегда производят действия только с определенными регистрами. Например, умножение двух 32-битных чисел всегда использует в качестве одного из источников EAX и всегда записывает 64-битный результат в EDX и EAX.

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

You: схема триггера

Losh@dka: D-триггер также известен как MS-триггер, master-slave-триггер и как триггер, синхронизируемый фронтом. Треугольник в обозначении указывает на то, что вход синхронизируется фронтом. У многих триггеров выход Q¯ отсутствует, и их обычно используют, когда Q¯ не нужен. Пример 3. 1 КОЛИЧЕСТВО ТРАНЗИСТОРОВ В ТРИГГЕРЕ Сколько транзисторов содержится в D-триггере, описанном в этой главе? Решение: в элементе ИЛИ-НЕ или И-НЕ используется по 4 транзистора.

Триггер с функцией сброса. В триггере с функцией сброса добавляется еще один вход, называемый RESET (сброс). Когда на RESET подан 0, сбрасываемый триггер ведет себя как обычный D-триггер. Когда на RESET подана 1, такой триггер игнорирует вход D и сбрасывает выход в 0. Триггеры с функцией сброса полезны, когда мы хотим ускорить установление определенного состояния. ;-{

Синхронно сбрасываемый триггер: (a) схема, (b,c) обозначения На Рис. 3. 11 (а) показано, как построить синхронно сбрасываемый триггер из обычного D-триггера и элемента И. Когда на RESET поступает логический нуль, элемент И подает 0 на вход триггера. Когда на RESET поступает логическая единица, элемент И пропускает сигнал D на вход триггера.

You: регистр состоит из триггеров?

Losh@dka: τ – временная константа, которая показывает, насколько быстро триггер выходит из метастабильного состояния; она связана с задержкой в перекрестно соединенных вентилях триггера. Таким образом, если вход бистабильного устройства, такого как триггер, изменяется в течении апертурного времени, его выход может некоторое время находиться в метастабильном состоянии, прежде чем перейти в стабильное состояние 0 или 1. Время перехода в стабильное состояние не ограничено, потому что для любого конечного времени t вероятность того, что триггер все еще находится в метастабильном состоянии, не равна нулю. Однако, эта вероятность экспоненциально падает с ростом t. Следовательно, если подождать достаточно долго, намного больше, чем tpcq, то с весьма высокой вероятностью можно ожидать того, что триггер достигнет корректного логического состояния.

Если устройство управления получает неопределенную команду (команду, которую неизвестно как выполнять), то оно переходит в состояние S12, сохраняет счетчик команд в регистр EPC, записывает 0x28 в регистр причины исключения и выполняет безусловный переход к обработчику исключения. Аналогично, при обнаружении арифметического переполнения в командах add или sub, устройство управления переходит в состояние S13, сохраняет счетчик команд в регистр EPC, записывает 0x30 в регистр причины исключения и передает управление обработчику исключения. Обратите внимание, что когда случается исключение, то выполнение команды прерывается, а в регистровый файл ничего не пишется. Когда процессор дешифровал очередную команду и понял, что это mfc0, он переходит в состояние S14 и записывает соответствующий регистр Сопроцессора 0 в регистровый файл. :-)

You: а что такое защёлка?

Losh@dka: Это называется конфликтом чтения после записи (read after write, RAW). Команда add записывает результат в $s0 в первой части пятого такта, однако команда and читает $s0 на третьем такте, то есть получает неверное значение. Команда or читает $s0 на четвертом такте, и тоже получает неверное значение. Команда sub читает $s0 во второй половине пятого такта, то есть наконец-то получает корректное значение, которое было записано в регистр в первой половине пятого такта. Все последующие команды также прочитают корректное значение из $s0. :-E

В данном случае под временем выполнения команды имеется в виду число тактов, через которое может быть запущена на выполнение следующая команда. Если команда выполняется за один такт, то следующая за ней команда может быть запущена уже на следующем такте). Команды загрузки данных выполняются за один такт, если нет конфликтов, и за два такта, если конвейер должен быть приостановлен для разрешения конфликта, так что их CPI = (0,6)(1) + (0,4)(2) = 1,4. Команды условного перехода выполняются за один такт, если переход предсказан корректно, и за два такта в противно случае, так что их CPI = (0,75)(1) + (0,25)(2) = 1,25. У команд безусловного перехода CPI всегда равен двум. ;-}

You: ясно, регистры и схемы команд срабатывают по переднему фронту тактового импульса и строятся на триггерах

Losh@dka: Временная спецификация синхронной последовательностной схемы. После перехода 0→1 тактового сигнала (переднего фронта тактового импульса) выход (или выходы) схемы могут начать изменяться не ранее, чем через время tccq (задержка реакции clock-to-Q, contamination delay clock-to-Q3), и должны принять стационарное значение не позднее чем через время tpcq (задержка распространения clk-to-Q, (propagation delay clock-to-Q). Эти величины представляют собой наименьшую и наибольшую задержки схемы, соответственно. Для того, чтобы фиксация была выполнена корректно, информационный вход (или входы) схемы должен быть стабильным в течение некоторого времени предустановки (setup time) tsetup перед передним фронтом тактового сигнала и не должны изменяться в течение времени удержания (hold time) thold после переднего фронта тактового сигнала. Сумма времен предустановки и удержания называется апертурным временем схемы, это общее время, в течение которого информационный входной сигнал должен быть стабилен для его фиксации на выходе. Динамическая дисциплина требует, чтобы входы синхронной последовательностной схемы были стабильны в течение времени предустановки до и времени удержания после фронта тактового импульса. :-{

Мы часто будем использовать термины «текущее состояние» и «следующее состояние» для того, чтобы различать состояние системы в настоящем от состояния системы, в которое она перейдет по фронту следующего тактового импульса. Функциональное описание определяет следующее состояние и значение каждого выхода для каждой возможной комбинации текущих состояний и входных сигналов. Временная спецификация состоит из верхней границы tpcq и нижней границы tccq длительности временного промежутка от переднего фронта тактового импульса до момента изменения выходного сигнала, а также из времен предустановки и удержания tsetup и thold, которые определяет промежуток времени до и после поступления фронта тактового импульса, в течение которого значения на входах не должны изменяться. tpcq это задержка распространения тракта вход тактового сигнала – выхода Q (до полного установления нового значения) последовательностной логической схемы. tccq – это задержка реакции тракта вход тактового сигнала – выхода Q. ;-E

конвертор PDF в MP3 для своих аудио-книг для телефона и компьютера

Bot Диктор преобразует txt и pdf файлы в речь своей аудио-книги для телефона и компьютера. Кликни картинку, чтобы узнать больше!