Для чего предназначен регистр

Содержание

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

В микропроцессоре 8086 было восемь 16-разрядных регистров общего назначения. Все они могли выступать в качестве операндов основных арифметико — логических инструкций, но только четыре годились для целей адресации. Кроме того, каждый регистр имел свои специфические функции:

  • AX — аккумулятор. Использовался для хранения операндов в командах умножения и деления, ввода-вывода, в некоторых командах обработки строк и других операциях;
  • BX — регистр базы. Используется для хранения адреса или части адреса операнда, находящегося в памяти;
  • CX — счётчик. Содержит количество повторений строковых операций, циклов и сдвигов;
  • DX — регистр данных. Используется для косвенной адресации портов ввода-вывода, а также как «расширитель» аккумулятора в операциях удвоенной разрядности;
  • SI — регистр адреса источника. Используется в строковых операциях, а также в качестве индексного регистра при обращении к операндам в памяти;
  • DI — регистр адреса приёмника. Используется в строковых операциях, а также в качестве индексного регистра при обращении к операндам в памяти;
  • BP — указатель кадра стека. Используется для адресации операндов, расположенных в стеке;
  • SP — указатель стека. Используется при выполнении операций со стеком, но не для явной адресации операндов в стеке.

Первые четыре регистра могут делиться на две однобайтовых части каждый: AH, BH, CH и DH для старших байтов и AL, BL, CL и DL для младших байтов.

В микропроцессоре 80386 разрядность регистров была удвоена и составила 32 бита. Обновлённые регистры не заменили, а дополнили уже имеющиеся: 32-разрядные версии получили имена EAX, EBX, ECX, EDX, ESI, EDI, EBP и ESP, а их младшие слова сохранили прежние обозначения, причём у первых четырёх регистров сохранилась возможность раздельного обращения к двум младшим байтам (AH, AL и так далее). С помощью префикса изменения размера операнда возможно выполнение 32-разрядных операций в реальном режиме и режиме виртуального процессора 8086.

Другим важным новшеством процессора 80386 стало уменьшение «дискриминации» между регистрами: теперь компоненты 32-разрядных адресов можно хранить в любом регистре. Появилась также возможность масштабирования — использования содержимого регистра в качестве индекса, при вычислении адреса автоматически умножаемого на 2, 4 или 8. Однако при работе в реальном режиме и режиме виртуального процессора 8086 для адресации по-прежнему используются только BX, BP, SI и DI, отсутствует и возможность масштабирования.

Появление 64-разрядных микропроцессоров (технология EM64T/AMD64) повлекло серьёзные изменения в наборе регистров общего назначения. Суть изменений сводится к следующему:

Регистры

  • регистров стало 16 вместо восьми, а их разрядность удвоилась и составила 64 бита;
  • новые регистры, а также старшие половины ранее существовавших регистров доступны только в 64-разрядном режиме;
  • по умоланию регистры считаются 32-разрядными (используются младшие половины 64-разрядных регистров) и носят имена EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, R8D–R15D. Для доступа к новым регистрам R8D–R15D в коде команды должен присутствовать специальный префикс, в документации фирмы Intel обозначаемый REX;
  • 64-разрядные регистры носят следующие имена: RAX, RBX, RCX, RDX, RSI, RDI, RBP, RSP, R8–R15. Для доступа к ним в код команды включается префикс REX;
  • возможен доступ к младшим словам любого из 16 регистров, обозначаемых в этом случае AX, BX, CX, DX, SI, DI, BP, SP, R8W-R15W. Если требуется обратиться к новым регистрам R8W–R15W, в коде команды используется префикс REX;
  • возможен доступ к младшим байтам любого из 16 регистров, для чего используются обозначения AL, BL, CL, DL, SIL, DIL, BPL, SPL, R8L–R15L. Для доступа к новым однобайтовым регистрам — SIL, DIL, BPL, SPL, R8L–R15L — используется префикс REX;
  • доступ к старшим байтам младших слов регистров возможен только для ранее существовавших регистров AH, BH, CH и DH. Чтобы обратиться к ним, префикс REX должен отсутствовать. Таким образом, невозможно одновременно обратиться к одному из указанных четырёх регистров и к любому из новых регистров независимо от разрядности;
  • при работе в 64-разрядном режиме 32-разрядные арифметико-логические операции, чьим приёмником является регистр общего назначения, обнуляют его старшие 32 бита, а 8- и 16-разрядные операции не изменяют старшие разряды, явно не затрагиваемые операцией. Однако если результат 8- или 16-разрядной операции используется для вычисления 64-разрядного адреса, происходит распространение знака результата на старшие разряды до получения полной 64-разрядной величины;
  • при переключении из 64-разрядного режима в режим совместимости или обратно содержимое старших 32 битов регистров RAX, RBX, RCX, RDX, RSI, RDI, RBP и RSP не сохраняется. Содержимое регистров R8–R15 в аналогичной ситуации сохраняется;
  • если происходит переключение в какой-либо из унаследованных режимов, за исключением режима управления системой, содержимое новых регистров, а также старших половин ранее существовавших регистров автоматически не сохраняется (код режима управления системой не может к ним обратиться, а значит, и изменить, поэтому нужда в сохранении отсутствует).

2. Регистры

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

Регистр представляет собой совокупность определен­ным образом соединенных триггерных ячеек с устройством управления входными и выходными сигналами. Число используемых в регистре триггеров определяет его раз­рядность. Каждый триггер регистра может иметь прямой и инверсный выходы, что позволяет снять записанный в нем код в прямом или инверсном виде.

Важнейшим признаком классификации регистров является способ ввода — вывода информации и характер представления вводимой и выводимой информации.

По способу ввода и вывода (приема и передачи) ин­формации регистры подразделяются на параллельные, последовательные и параллельно-последовательные.

По характеру представления вводимой и выводимой информации регистры делят на однофазные и парафазные. В однофазных регистрах информация вводится в прямом или обратном (инверсном) кодах, а в парафазном — одновременно в прямом и обратном. Вывод инфор­мации из регистров обоих типов может осуществляться как в прямом, так и в обратном кодах.

Регистры можно классифицировать также по числу тактов управления при записи и по виду выполняемых операций над словами.

По числу тактов управления регистры подразделяются на однотактные, двухтактные и многотактные. Число так­тов определяется типом используемых в регистре триг­геров.

По виду выполняемых операций над словами раз­личают регистры для приема, передачи и сдвига инфор­мации.

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

На рис. 13.1, а приведена схема четырехразрядного параллельного однофазного регистра на RS-триггерах.

Рис. 13.1. Схемы однофазного (а) и парафазного (6) параллельных регистров

Управление приемом (записью) и выдачей (считыванием) информации осуществляется соответственно элементами И1 и И2, ИЗ. Входы a1, а2, a3 и а4 соответствуют разрядам записываемого слова (числа).

Перед записью все триггеры регистра устанавливают в нулевое состояние подачей импульса Уст. 0 на входы R. Запись информации a1. а4 в регистр осуществляется при поступлении импульса записи на шину Зап. При этом на выходах элементов И1 образуются сигналы установки триггеров в состояние 1 только в тех разрядах, в которых аi = 1. Остальные триггеры остаются в нулевом состоянии. Записанный в регистр код выдается в прямом (через эле­менты И2) или инверсном (через элементы ИЗ) виде при поступлении на входы ЛЭ И2 или ЛЭ ИЗ соответственно импульсов ВП или ВИ. Информация о записанном коде сохраняется в регистре до прихода следующего импульса Уст. 0.

Н едостаток рассмотренного параллельного регистра заключается в том, что требуется время для его обнуления перед записью новой информации. Это снижает быстро­действие регистра. Для увеличения быстродействия при­меняют парафазную запись информации. Парафазный регистр можно получить из однофазного, преобразовав устройство управления записью (рис. 13.1, б). Записы­ваемое слово представляется в прямом (а1а2а3а4) и ин­версном (а1а2а3а4) кодах и подается на входы элементов И1 и И2 соответственно. Запись в регистр производится при поступлении сигналов записи на шину Зап. При этом на входы S триггеров поступают прямые, а на входы R — инверсные значения разрядов записываемого слова, которые устанавливают триггеры в нужные состояния независимо от исходных состояний. Выдача информации осуществляется так же, как и в однофазном.

Рис. 13.2. Схема устройства управления записью двухкапналынго регистра

Рис. 13.3. Схема двухканалыюго n-разрядного регистра

Регистр, показанный на рис. 13.1, а, служит для записи, хранения и передачи одного слова A (а1а2а3а4) и является одноканальным. Путем изменения устройства управления его можно преобразовать в многоканальный. На рис. 13.2 показано устройство управления записью в регистр двух слов А (а1а2а3а4) и В (а1а2а3а4). Разряды слова А подаются по первому каналу через элементы И1, а слова В — по второму каналу через элементы И2. Запись по каналу А производится импульсом Зап. А, а по каналу В — импульсом Зап. В. При поступлении импульса записи на вход устройства управления значения разрядов числа А или В передаются через элементы И1 или И2 на входы ЛЭ ИЛИ, а с выходов элементов ИЛИ посту­пают на входы S триггеров соответствующих разрядов регистра. Считывание информации осуществляется так же, как и в одноканальном регистре.

Д ля построения регистров широко применяются D-триггеры, позволяющие уменьшать количество элементов. На рис. 13.3 приведена схема п-разрядного параллельного двухканального однофазного регистра (схема управления процессом считывания не приведена), выполненного на однофазных D-триггерах. Импульс Ту, поданный на вход Уст. 0, устанавливает в нуль все разряды регистра. Запись числа A (а1 . ап) производится тактовым импуль­сом Та, поданным на вход Зап. А. При этом на выходах элементов И2 устанавливаются уровни а1 . ап, которые через элементы ИЛИ передаются на выходы соответствую­щих D-триггеров.

Аналогичным образом производится запись числа В (b1 . bп) при подаче тактового импульса на вход Зап. В.

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

Сдвиг кода записанного числа в регистре применяется при выполнении операций умножения и деления. Так, например, сдвиг кода 0100 (числа 4) на один разряд влево дает код 1000 (число 8), что соответствует умно­жению на 2 1 =2. Сдвиг этого же кода 0100 на один раз­ряд вправо дает код 0010 (число 2), что равносильно де­лению на 2 1 = 2.

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

Последовательный регистр состоит из последовательно соединенных триггеров. Под действием тактовых импуль­сов состояние каждого триггера передается последующему, что равносильно сдвигу кода. В зависимости от числа последовательностей тактовых импульсов, осущест­вляющих сдвиг кода, сдвигающие регистры бывают однотактными, двух-, трех- и четырехтактными (в общем слу­чае многотактными).

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

Рис. 13.4. Схема последовательного регистра на синхронных RS-триггерах

Триггеры Т1, Т2, . Тn образуют основной регистр, а триггеры Т ’ 1, Т ’ 2, . Т ’ n — дополнительный. Синхрони­зирующие импульсы С подаются одновременно на все разряды основного регистра и через ЛЭ НЕ на все раз­ряды дополнительного регистра.

Запись информации (числа А) осуществляется после­довательным парафазным кодом, поступающим на вход первого триггера основного регистра. Перед записью триг­геры основного и дополнительного регистров устанавли­ваются в нулевое состояние подачей на синхронизирую­щий вход п импульсов при действии на прямом инфор­мационном входе нулевого сигнала. При этом первый синхронизирующий импульс С1 устанавливает в нулевое состояние триггер Т1. Поскольку запись информации на триггеры дополнительного регистра при этом запрещена, не изменяются и состояния остальных триггеров (кроме первого) основного регистра. После окончания действия синхронизирующего импульса С1 логический 0 с выхода Т1 переписывается в дополнительный триггер Т ’ 1.

Второй синхронизирующий импульс C2 подтверждает нулевое состояние триггера Т1 и разрешает запись логи­ческого 0 с дополнительного триггера Т ’ 1 в триггер второго разряда Т2. После окончания действия импульса С2 логи­ческий 0 с триггера Т2 переписывается в триггер Т ’ 2. Третий синхронизирующий импульс С3 устанавливает в нулевое состояние триггер Т3, которое передается триг­геру Т ’ 3 по окончании действия синхронизирующего им­пульса С3, и т. д.

А налогичным образом осуществляется запись в регистр числа А. Разница состоит лишь в том, что состояние триггера Т1 будет определяться значениями сигналов А и А на его входе во время действия синхронизирующих импульсов С. Записанный в регистр код может быть сдви­нут вправо на один или несколько разрядов подачей со­ответствующего числа импульсов на вход С.

На рис. 13.5 показана схема последовательного сдви­гающего регистра на двухступенчатых синхронных D-триггерах, имеющего три разряда.

Рис. 13.5. Схема трехразрядного последовательного регистра на D-триггерах

Запись информации в ре­гистр осуществляется последовательным однофазным ко­дом, разряды которого поступают на вход первого триг­гера к моментам появления синхронизирующих импульсов на входе С. Этими же импульсами осуществляется и сдвиг записанного кода вправо. Во время действия синхрони­зирующего импульса на первые ступени второго и третьего триггеров переписываются значения состояния первого и второго D-триггеров, а на первую ступень первого D-триггера — значение информации, действующей на его входе. В паузах между синхронизирующими импульсами проис­ходит изменение состояний вторых ступеней триггеров.

П араллельно-последовательные регистры. Параллель­но-последовательный регистр на D-триггерах (рис. 13.6) позволяет осуществлять преобразование параллельного кода в последовательный и наоборот. Двухступенчатые D-триггеры имеют инверсные входы S и R для асинхрон­ной установки нуля (входы R) и для записи n-разрядного числа A (a1, a2, . аn) в регистр параллельным кодом (входы S). Параллельная запись числа во все разряды регистра осуществляется импульсом С2 = 1. При этом

Рис. 13.6. Схема параллельно-последовательного регистра на D-триггерах

н а выходах ЛЭ И образуются значения a1, a2, . аn, которые поступают на асинхронные входы S D-триггеров регистра и устанавливают их в состояния a1, a2, . аn. Преобразование параллельного кода в последовательный осуществляется подачей серии импульсов на вход С1. Первый импульс на входе С1 устанавливает каждый триг­гер в состояние, в котором находился до этого каждый предыдущий триггер. Если D = 0, то первый триггер после первого импульса на входе С1 установится в нулевое состояние. Происходит, таким образом, сдвиг записан­ного кода на один разряд вправо. Второй импульс на входе С1 вызывает сдвиг числа вправо еще на один разряд, а в состоянии логического нуля окажутся уже первый и второй разряды и т. д. Импульсами, поступающими на вход С1, записанный в регистр код как бы выталкивается поразрядно, а освобождающиеся разряды устанавлива­ются в нулевое состояние.

В данный регистр можно осуществить запись числа последовательным кодом. Последовательный код записы­ваемого числа подается на вход D и импульсами, посту­пающими на вход С1, «проталкивается» в регистр. Через выходы Q1, Q2, . Qn число, записанное в регистр последо­вательным кодом, может быть считано прямым парал­лельным кодом.

Реверсивные регистры. Регистры, которые позволяют осуществлять сдвиг записанного в них кода вправо или влево, называют реверсивными (рис. 13.7).

Реверсивный регистр отличается от сдвигающего (рис. 13.5) наличием перед каждой ячейкой устройства управления, выполненного на трех двухвходовых элементах И — НЕ.

Рис. 13.7. Фрагмент схемы реверсивного регистра сдвига

Для сдвига вправо необходимо одновре­менно с поступлением синхронизирующего импульса на вход С подать импульс на шину Вправо. При этом на входы D каждого последующего триггера поступает ин­формация с выхода триггера предыдущего разряда (че­рез ЛЭ И2 и ИЗ), которая будет переписана во вторую ступень каждого принимающего триггера после окончания действия импульса на входе С. Для сдвига последова­тельного кода влево одновременно с синхронизирующим импульсом С подается импульс на шину Влево. В этом случае на D-вход первой ступени каждого триггера посту­пает информация о состоянии последующего триггера (через ЛЭ И1 и ИЗ), которая переписывается во вторую ступень после окончания синхронизирующего импульса.

Для чего предназначен регистр

Архитектура МП (Лекция)

ПЛАН ЛЕКЦИИ

1. Внутреннее построение микропроцессора

2. Арифметико-логическое устройство (АЛУ)

5. Счетчик команд (Program Counter (РС) — программный счётчик)

6. Регистр адреса памяти (регистр адреса)

7. Регистр команд

8. Регистр состояния

9. Буферные регистры АЛУ

10. Регистры общего назначения (РОН)

11. Указатель стека (Stack Pointer — (SP))

12. Схема управления

1. Внутреннее построение микропроцессора

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

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

С точки зрения пользователя-программиста под архитектурой МП в общем случае понимают совокупность следующих компонентов и характеристик:

1) разрядность адресов и данных;

2) состав и назначение программно-доступных регистров;

3) формат и система команд;

4) режим адресации памяти;

5) способы машинного представления данных разного типа;

6) структура адресного пространства;

7) способы адресации внешних устройств и средств выполнения операций ввода-вывода;

8) классы прерываний, особенности инициирования и обработки прерываний.

Какими бы ни были рассматриваемые МП, касающаяся их информация содержит много общего. Типовая документация содержит информацию о структуре ИС, схеме выводов ИС и назначение каждого из них. Схематизируется архитектура МП, описываются его основные свойства. Одновременно даются временные диаграммы и состав команд МП.

Структурная схема МП даёт наглядное представление о его архитектуре и позволяет рассмотреть работу МП по выполнению двух основных функций: обработке и манипулированию данными.

Использование структурной схемы МП существенно облегчает понимание того, как МП решает поставленные задачи. Рассмотрим структурную схему, представленную на рисунке 1. Изображённый 8-разрядный МП приведен в качестве типичного примера и не является какой-либо конкретной моделью, выпускаемой промышленностью.

Структурная схема МП даёт наглядное представление о его архитектуре и позволяет рассмотреть работу МП по выполнению двух основных функций: обработке и манипулированию данными.

Рис. 1. Структурная схема 8-разрядного МП

Использование структурной схемы МП существенно облегчает понимание того, как МП решает поставленные задачи. Рассмотрим структурную схему представленную на рис. 1

МП состоит из трёх основных блоков: АЛУ, нескольких регистров и устройства управления. Для передачи данных между этими блоками МП используется внутренняя шина данных. Поясним назначение отдельных элементов структурной схемы.

2. Арифметико-логическое устройство (АЛУ)

АЛУ выполняет обработку данных. Типичными операциями, выполняемыми АЛУ являются сложение, инвертирование, сдвиг, а также операции инкремента и декремента. АЛУ содержит два входных порта и один выходной порт. Оба входных порта снабжены буферами, роль которых выполняют регистры временного хранения данных – буферные регистры. В конечном итоге АЛУ выполняет все арифметические и логические операции. Каждый порт соединён со своим буферным регистром, способным хранить для АЛУ одно слово данных. АЛУ принимает данные или с внутренней шины данных МП, или из специального регистра, именуемого аккумулятором. Единственный выходной порт АЛУ пересылает слово данных в аккумулятор. АЛУ оперирует одним или двумя словами в зависимости от вида выполняемой операции.

Схема десятичной коррекции позволяет производить операции десятичной арифметики. Точнее, позволяет выполнять обработку данных, представленных в двоично-десятичной системе счисления.

Регистры являются важной составной частью любого МП. Количество и назначение регистров в МП зависит от его архитектуры. Однако все МП имеют шесть основных регистров: состояния, буферные, команд, адреса памяти, счетчик команд и аккумулятор. Остальные регистры предназначены для упрощения работы программиста. В процессе ознакомления с каждым из основных регистров следует обращать внимание на то, какое влияние оказывает именно этот регистр на данные, проходящие через МП. Некоторые основные регистры не используются в качестве средства программирования. Это объясняется не их физическим отсутствием, а тем, что программисту не предоставляются средства изменения содержимого этих регистров. Понимание влияния каждого основного регистра на поток данных в МП позволяет получить правильное представление о его функционировании.

Аккумулятор – главный регистр МП при различных манипуляциях с данными. Для выполнения любой операции над данными прежде всего их необходимо поместить в аккумулятор. Данные поступают в него с внутренней шины данных МП. В свою очередь аккумулятор может посылать данные на эту шину. На пути прохождения данных из аккумулятора в АЛУ находится буфер аккумулятора. Большинство арифметических и логических операций осуществляется путём использования АЛУ и аккумулятора. Любая из таких операций над двумя словами данных предполагает размещение одного из них в аккумуляторе, а другого в памяти или в каком-либо регистре. Результат операции АЛУ размещается в аккумуляторе. При этом исходное содержимое аккумулятора теряется.

Количество разрядов аккумулятора соответствует разрядности шины данных МП, т.е. 8 бит. Некоторые МП имеют аккумуляторы двойной длины или группу аккумуляторов.

5. Счетчик команд ( Program Counter (РС) — программный счётчик)

Для корректного выполнения программы её команды должны поступать в строго определённом порядке. Счетчик команд следит за тем, какая команда выполняется, а какая подлежит выполнению следующей. Счетчик команд содержит адрес ячейки памяти следующей для выполнения команды. Для МП адресующихся к памяти объёмом 64 кбайта число разрядов счетчика команд равно 16. Счетчик команд (РС) соединён с внутренней шинной данных МП. Теоретически этот регистр может получать данные об адресах программы из любого блока МП, подключенного к внутренней шине. Однако в действительности данные поступают в счетчик команд из памяти ЭВМ.

Для правильного понимания излагаемого отметим следующее. После извлечения команды из памяти МП автоматически даёт приращение содержимому счетчика команд. Это приращение СК получает как раз в тот момент, когда МП начинает выполнять команду, только что извлеченную из памяти. С этого момента СК указывает, какой будет следующая команда. СК содержит адрес следующей выполняемой команды на протяжении всего времени выполнения текущей команды. Перед выполнением программы СК загружается адресом ячейки памяти, содержащей первую команду программы.

6. Регистр адреса памяти (регистр адреса)

При каждом обращении к памяти ЭВМ регистр адреса памяти указывает (содержит) адрес ячейки памяти, которая подлежит использованию МП. Регистр адреса памяти содержит двоичное число – адрес области памяти. Выход этого регистра называется адресной шиной.

В течение выборки команды из памяти регистр адреса памяти и счетчик команд имеют одинаковое содержимое, то есть регистр адреса памяти указывает местоположение команды извлекаемой из памяти. После декодирования команды счетчик команд получает приращение, а регистр адреса памяти приращения не получает. При выполнении команды содержимое регистра адреса памяти зависит от выполняемой команды. Если МП должен произвести ещё одно обращение к памяти, то регистр адреса памяти подлежит вторичному использованию при обработке команды. Для некоторых команд адресация к памяти не требуется. При обработки таких команд регистр адреса памяти используется только один раз — в течении подцикла выборки команды из памяти. Регистр адреса памяти располагает количеством разрядов, достаточным для адресации любой области памяти ЭВМ. Для памяти 64 кбт-16 разрядов.

7. Регистр команд

В ходе извлечения команды из памяти её первый байт (КОП) передаётся в 8-разрядный регистр команд. Содержимое регистра доступно тогда дешифратору команд. Регистр команд предназначен исключительно для хранения текущей выполняемой команды. Эта функция реализуется МП с начала цикла выборка-выполнение, называемый также машинным циклом. Регистр команд соединён с внутренней шиной данных, однако он может только принимать данные – посылать данные на шину он не может.

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

8. Регистр состояния

Наличием регистра состояния подлинная ЭВМ отличается от калькулятора. Данный регистр предназначен для хранения результатов некоторых проверок состояния аккумулятора, осуществляемых в процессе выполнения программы. Регистр состояния содержит пять одноразрядных индикаторов, содержимое этих индикаторов используется условными ветвлениями программ.

На рис. 2 показаны разряды регистра состояния. Этот регистр ещё называют регистром признаков.

Бит CY указывает, что последняя выполненная операция сопровождалась переносом или заёмом. Значение разряда переноса устанавливается равным 1, если в результате сложения двух чисел имеет место перенос из 8-го разряда результата. Отрицательный перенос фиксируется в бите CY при вычитании большего числа из меньшего.

Бит нулевого результата Z принимает единичное значение, если после окончания операции во всех разрядах результата обнаружены двоичные нули. В противном случае бит Z содержит нуль.

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

Бит четности Р поверяет число единиц в аккумуляторе. Если это число четное то в бите P устанавливается 1, если число нечетное – бит Р сбрасывается в 0.

Бит вспомогательного переноса АС показывает перенос из третьего разряда аккумулятора в четвёртый. Работает аналогично индикатору CY . Значение этого бита используют команды десятичной арифметики.

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

9. Буферные регистры АЛУ

Буферные регистры предназначены для временного хранения одного слова данных. Один из этих регистров называется буфером аккумулятора АЛУ. В оба буферных регистра данные поступают с внутренней шины данных МП. В буфер аккумулятора данные могут поступать и с выхода аккумулятора. Необходимость в таких регистрах вызвана отсутствием в АЛУ своего запоминающего устройства. В состав АЛУ включены только комбинационные схемы и поэтому при поступлении исходных данных на входы АЛУ немедленно появляется результат на его выходе. Результат помещается в аккумулятор. Комбинационные операции – операции, при которых информационные сигналы на выходах операционного блока представляют собой некоторую функцию входных сигналов и существуют до тех пор, пока поданы на входы операционного блока входные сигналы.

Работа АЛУ без регистров временного хранения данных невозможна. Когда в арифметической или логической операций АЛУ участвуют два слова данных, одно из них из аккумулятора. Результат подобной операции помещается в аккумулятор. Буфер аккумулятора позволяет избежать ситуации, при которой вход и выход АЛУ одновременно подсоединены к одной и той же точке схемы. Буферные регистры недоступны для программирования.

10. Регистры общего назначения (РОН)

В некоторых МП РОН служат в качестве запоминающих устройств, это позволяет повысить быстродействие микро-ЭВМ за счет сокращения пересылок кодов между МП и памятью. В некоторых МП функциональные возможности этих регистров не уступают возможностям аккумулятора. Последнее достигается в том случае, если АЛУ может помещать в них данные.

Регистры общего назначения BC , DE , HL могут быть использованы как шесть 8-разрядных или три 16-разрядные пары регистров в зависимости от текущей выполняемой команды. Выборка команд длиной 2 и 3 байт производится с участием регистров W и Z . Первый байт команды заносится в регистр команд, второй — в регистр W , а третий — в регистр Z . Регистры W и Z программно недоступные. Пара HL обычно используется для указания адреса. Остальные РОН являются регистрами хранения данных. В нашем случае АЛУ не помещает данные в РОН, поэтому они не обладают возможностями аккумулятора. РОН представляет собой сверхоперативную память МП.

11. Указатель стека ( Stack Pointer — ( SP ))

Указатель стека ( SP ) представляет 16-разрядный регистр, который содержит адрес последнего помещенного в стек байта. Указатель стека декрементируется при каждом помещении в стек и инкрементируется при каждом извлечении из него.

Стек – это область памяти, специально выделяемая для временного хранения данных программы. Отличительной особенностью стека является особая организация обращения к нему со стороны МП. Запись и чтение данных в стеке осуществляется в соответствии с принципом LIFO ( Last In First Out ) – «последним пришел, первым ушел». Таким образом, информация в стеке размещается в строгой последовательности – ячейка памяти, заполненная последней, считывается первой, а ячейка памяти заполненная первой извлекается последней. В ячейки стека информация заносится последовательно и извлекается в порядке обратном порядку занесения. Таким образом, стек функционирует как память с последовательным доступом. По мере записи данных в стек он растёт в сторону младших адресов. Эта особенность заложена в алгоритм команд работы со стеком. Концептуальная схема организации стека показана на рисунке.

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

Стек выполняется на некоторой выделенной области ОЗУ. В этом случае стек представляет память с последовательным доступом. Обращение и адресация к стеку производится через регистр указателя стека.

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

Вершиной стека называется адрес его последней загруженной ячейки памяти. Таким образом, указатель стека всегда содержит адрес его вершины. Начало стека в ОЗУ (его дно) определяется программистом путём записи в регистр SP адреса первой ячейки памяти стека. Вершина стека подвижна и её расположение определяется объёмом данных, загруженных в стек. Стек не имеет ограничений, за исключением тех, которые обусловлены наличием других программ в ОЗУ.

12. Схема управления

Схема управления состоит из дешифратора команд и устройства управления и синхронизации. Одна из главных функций схемы управления – декодирование команды. Для этого служит дешифратор команд. Он декодирует команду, находящуюся в регистре команд и выдаёт сигналы, необходимые для выполнения команды, в устройство управления. Основу устройства управления МП составляют программируемые логические матрицы (ПЛМ). Дешифратор анализирует отдельные биты команды и передаёт код операции в устройство управления. Устройство управления получает сигналы от дешифратора команд для определения природы выполняемой команды. Устройство управления получает также информацию от регистра состояния в случае условного перехода. Сигналы управления и синхронизации передаются во все блоки МП для координации выполнения команд и управления внешними устройствами (ОЗУ, ПЗУ, УВВ).

Устройство управления связано с генератором тактовых импульсов, синхронизирующим во времени работу МП. Принимаемые тактовые сигналы схемой управления преобразуются в многофазные синхросигналы. В качестве ГТИ используют кварцевый генератор – внешний или внутренний, встроенный в МП.

Что такое регистр?

Регистр это устройство, выполненное на триггерах для выполнения ряда действий с двоичными числами. Для тех, кто не знает, что такое триггер, рекомендуем познакомиться с простейшим RS-триггером.

Наиболее простая функция регистров — это запоминание числа и его длительное хранение. Эти устройства так и называются – регистры хранения. Вот простейший пример.

На входы D0 – D2 подаётся число, которое необходимо сохранить. Как только на входе С появляется импульс синхронизации, число записывается в триггер, изменяя их состояние. На рисунке показан трёхразрядный регистр хранения. При подаче на входы числа 1112 оно же появится на прямых выходах триггеров (Q0 — Q2). На инверсных выходах (Q0 — Q2) будет, естественно 0002. Сигналом R (Reset) или сброс, триггеры устанавливаются в нулевое состояние.

Обычно используются регистры, состоящие из 4, 8, или 16 триггеров. Изображение четырёхразрядного регистра на принципиальных схемах может быть таким.

На рисунке не показаны инверсные выхода триггеров и сигнал R. Регистры всегда обозначаются латинскими буквами RG. Если регистр сдвигающий, то под обозначением рисуется стрелка направленная влево, вправо или двойная.

Сдвигающие регистры или регистры сдвига.

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

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

Рассмотрим четырёхразрядный регистр сдвига, преобразующий последовательный двоичный код в параллельный. Применение последовательного кода оправдано тем, что по одной линии можно передавать огромные массивы информации. Таким примером может служить универсальная последовательная шина — USB порт любого устройства. Число триггеров в данном регистре может быть любым. Достаточно соединить прямой выход Q3 с D входом следующего триггера и так далее до достижения необходимой разрядности.

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

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

Допустим это уровни 01102. Тогда это двоичное число можно отобразить, подключив к выходам триггеров светодиоды. Так рассмотренный регистр изображается на принципиальной схеме.

Видно, что на условном изображении присутствует стрелка — указатель того, что это сдвиговый регистр.

Рассмотрим, как работает четырёх разрядный универсальный регистр сдвига К155ИР1 (аналог — SN7495N). Вот его внутреннее устройство.

Регистр содержит четыре D-триггера, которые соединены между собой с помощью дополнительных логических элементов И – ИЛИ, которые позволяют реализовать различные функции. На схеме:

  • V2 – вход управления. С его помощью выбирается режим работы регистра.
  • Q1 – Q4 выходы триггеров с которых снимается параллельный код.
  • V1 – вход для подачи последовательного кода.
  • C1, C2 – тактовые синхроимпульсы.
  • D1 – D4 – входы для записи параллельного кода.

Алгоритм работы регистра следующий. Если на вход V2 подать низкий потенциал, тактовые импульсы на C1, а на вход V1 подавать информационные биты, то регистр осуществляет сдвиг вправо. После приёма четырёх разрядов на выходах триггеров Q1 – Q4 мы получаем параллельный код. Таким образом осуществляется преобразование последовательного кода в параллельный.

Для обратного преобразования параллельный код записывается по входам D1 – D4, с подачей на вход V2 высокого потенциала и тактовых импульсов на вход С2. Затем подавая на вход V2 низкий потенциал, а тактовые импульсы на вход С1 мы сдвигаем записанный код, а с выхода последнего триггера снимается последовательный код.

По своей структуре это один из самых простых регистров сдвига.

Регистры сдвига в цифровой технике могут послужить основой, на которой собираются узлы с интересными свойствами. Это, например, кольцевые счётчики, которые называются счётчики Джонсона. Такой счётчик имеет количество состояний вдвое большее, чем число составляющих его триггеров. Например, если кольцевой счётчик состоит из трёх триггеров, то он будет иметь шесть устойчивых состояний. На вход счётчика ничего не подаётся кроме синхроимпульсов. В первоначальном состоянии все триггеры «сброшены», то есть на прямых выходах триггеров логические нули, а вот на входе D первого триггера с инверсного выхода третьего триггера находится логическая единица. Начнём подавать тактовые импульсы и процесс пошёл.

На таблице истинности хорошо видно, как изменяется двоичный код при поступлении шести тактовых импульсов.

N Q2 Q1 Q0
1001
2011
3111
4110
5100
6000

Теперь вы знаете, что такое регистр и как он может использоваться на практике. Основа любого регистра — это триггер. Число триггеров в регистре определяет его разрядность. Те, кто увлекается микроконтроллерами знает, что важнейший элемент любого микроконтроллера, будь то PIC, AVR, STM или MSP, это регистр.

Тактирование процессора

Быстродействие компьютера определяется тактовой частотой его процессора. Тактовая частота — количество тактов (соответственно и исполняемых команд) за секунду.

Частота нынешних процессоров измеряется в ГГц (Гигагерцы). 1 ГГц = 10⁹ Гц — миллиард операций в секунду.

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

Выполнение инструкций

Инструкции хранятся в ОЗУ в последовательном порядке. Для гипотетического процессора инструкция состоит из кода операции и адреса памяти/регистра. Внутри управляющего устройства есть два регистра инструкций, в которые загружается код команды и адрес текущей исполняемой команды. Ещё в процессоре есть дополнительные регистры, которые хранят в себе последние 4 бита выполненных инструкций.

Ниже рассмотрен пример набора команд, который суммирует два числа:

  1. LOAD_A 8 . Это команда сохраняет в ОЗУ данные, скажем, . Первые 4 бита — код операции. Именно он определяет инструкцию. Эти данные помещаются в регистры инструкций УУ. Команда декодируется в инструкцию load_A — поместить данные 1000 (последние 4 бита команды) в регистр A .
  2. LOAD_B 2 . Ситуация, аналогичная прошлой. Здесь помещается число 2 ( 0010 ) в регистр B .
  3. ADD B A . Команда суммирует два числа (точнее прибавляет значение регистра B в регистр A ). УУ сообщает АЛУ, что нужно выполнить операцию суммирования и поместить результат обратно в регистр A .
  4. STORE_A 23 . Сохраняем значение регистра A в ячейку памяти с адресом 23 .

Вот такие операции нужны, чтобы сложить два числа.

Поделись лекцией и получи промокод на скидку 30% на платформе Автор24

Заполни поля и прикрепи лекцию. Мы вышлем промокод со скидкой тебе на почту

Твоя лекция отправлена! Жди скидку на почте. Есть еще материалы? Загрузи прямо сейчас
Загрузить еще лекции

Тебе могут подойти лекции

Регистры

Регистры

Регистр и счетчики

Машинно-ориентированные языки (микропроцессор 8088)

Системное программирование.

Автор(ы) Фельдман С. К.

Микропроцессорные системы управления

Автор(ы) А.Н. Компанейц

Системное программирование

Основные инструкции языка ассемблера

Аппаратное обеспечение современного компьютера. Архитектура современного компьютера

Организация ЭВМ и периферийные устройства

Автор(ы) Гузик В. Ф., Каляев В. А., Костюк А. И.
Смотреть все 55 лекций

  • Высшая математика
  • Электроника, электротехника, радиотехника
  • Программирование
  • Информационные технологии
  • Информатика
  • Физика
  • Архитектура и строительство
  • Теория вероятностей
  • Метрология
  • Машиностроение
  • Теплоэнергетика и теплотехника
  • Автоматизация технологических процессов
  • Автоматика и управление
  • Гидравлика
  • Транспортные средства
  • Металлургия
  • Сопротивление материалов
  • Технологические машины и оборудование
  • Информационная безопасность
  • Материаловедение

Попробуй бесплатный инструмент для оформления работы по ГОСТу «ДокСтандарт»

Загрузи учебную работу и получи отформатированную версию всего через 30 секунд

Для чего предназначен регистр

Справочная система по языку Assembler

Доставка цветов в Москве доставкацветов.рф. Смотрите sigarety-mira.biz американские сигареты

Программная модель микропроцессора

На современном компьютерном рынке наблюдается большое разнообразие различных типов компьютеров. Поэтому возможно предположить возникновение у потребителя вопроса — как оценить возможности конкретного типа (или модели) компьютера и его отличительные особенности от компьютеров других типов (моделей). Рассмотрения для этого одной лишь только структурной схемы компьютера недостаточно, так как она принципиально мало чем различается у разных машин: у всех компьютеров есть оперативная память, процессор, внешние устройства.
Различными являются способы, средства и используемые ресурсы, с помощью которых компьютер функционирует как единый механизм. Чтобы собрать воедино все понятия, характеризующие компьютер с точки зрения его функциональных программно-управляемых свойств, существует специальный термин — архитектура ЭВМ .
Впервые понятие архитектура ЭВМ стало упоминаться с появлением машин 3-го поколения для их сравнительной оценки.

  • 16 пользовательских регистров;
  • 16 системных регистров.

Пользовательские регистры

  • восемь 32-битных регистров, которые могут использоваться программистами для хранения данных и адресов (их еще называют регистрами общего назначения (РОН)):
  • eax/ax/ah/al ;
  • ebx/bx/bh/bl ;
  • edx/dx/dh/dl ;
  • ecx/cx/ch/cl ;
  • ebp/bp ;
  • esi/si ;
  • edi/di ;
  • esp/sp .
  • регистр флагов eflags/flags ;
  • регистр указателя команды eip/ip .

Рис. 1. Пользовательские регистры микропроцессоров i486 и Pentium

Почему многие из этих регистров приведены с наклонной разделительной чертой?
Нет, это не разные регистры — это части одного большого 32-разрядного регистра. Их можно использовать в программе как отдельные объекты.
Так сделано для обеспечения работоспособности программ, написанных для младших 16-разрядных моделей микропроцессоров фирмы Intel, начиная с i8086.
Микропроцессоры i486 и Pentium имеют в основном 32-разрядные регистры. Их количество, за исключением сегментных регистров, такое же, как и у i8086, но размерность больше, что и отражено в их обозначениях — они имеют
приставку e ( E xtended ).

Разберемся подробнее с составом и назначением пользовательских регистров.

Регистры общего назначения

Все регистры этой группы позволяют обращаться к своим
“младшим” частям (см. рис. 1).
Рассматривая этот рисунок, заметьте, что использовать для самостоятельной адресации можно только младшие 16 и 8-битные части этих регистров. Старшие 16 бит этих регистров как самостоятельные объекты недоступны. Это сделано, как мы отметили выше, для совместимости с младшими 16-разрядными моделями микропроцессоров фирмы Intel.

  • eax/ax/ah/al (Accumulator register) — аккумулятор .
    Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;
  • ebx/bx/bh/bl (Base register) — базовый регистр.
    Применяется для хранения базового адреса некоторого объекта в памяти;
  • ecx/cx/ch/cl (Count register) — регистр-счетчик .
    Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды.
    К примеру, команда организации цикла loop кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра ecx/cx ;
  • edx/dx/dh/dl (Data register) — регистр данных .
    Так же, как и регистр eax/ax/ah/al , он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.
  • esi/si (Source Index register) — индекс источника .
    Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике;
  • edi/di (Destination Index register) — индекс приемника (получателя).
    Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике.
  • esp/sp (Stack Pointer register) — регистр указателя стека .
    Содержит указатель вершины стека в текущем сегменте стека.
  • ebp/bp (Base Pointer register) — регистр указателя базы кадра стека .
    Предназначен для организации произвольного доступа к данным внутри стека.

Сегментные регистры

В программной модели микропроцессора имеется шесть сегментных регистров: cs, ss, ds, es, gs, fs .
Их существование обусловлено спецификой организации и использования оперативной памяти микропроцессорами Intel. Она заключается в том, что микропроцессор аппаратно поддерживает структурную организацию программы в виде трех частей, называемых сегментами . Соответственно, такая организация памяти называется сегментной .

  1. Сегмент кода . Содержит команды программы.
    Для доступа к этому сегменту служит регистр cs (code segment register) — сегментный регистр кода . Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть эти команды загружаются в конвейер микропроцессора).
  2. Сегмент данных . Содержит обрабатываемые программой данные.
    Для доступа к этому сегменту служит регистр ds (data segment register) — сегментный регистр данных , который хранит адрес сегмента данных текущей программы.
  3. Сегмент стека . Этот сегмент представляет собой область памяти, называемую стеком .
    Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым . Для доступа к этому сегменту служит регистр ss (stack segment register) — сегментный регистр стека , содержащий адрес сегмента стека.
  4. Дополнительный сегмент данных .
    Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в сегментном регистре ds .
    Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в сегментном регистре ds , при использовании дополнительных сегментов данных их адреса требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде.
    Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs, fs (extension data segment registers).

Регистры состояния и управления

  • регистр флагов eflags/flags ;
  • регистр указателя команды eip/ip .

eflags/flags (flag register) — регистр флагов . Разрядность eflags/flags — 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру flags для i8086. На рис. 2 показано содержимое регистра eflags .

Рис. 2. Содержимое регистра eflags

  • 8 флагов состояния . Эти флаги могут изменяться после выполнения машинных команд.
    Флаги состояния регистра eflags отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм. В табл. 1 приведены флаги состояния и указано их назначение;
  • 1 флаг управления . Обозначается df (Directory Flag).
    Он находится в 10-м бите регистра eflags и используется цепочечными командами. Значение флага df определяет направление поэлементной обработки в этих операциях: от начала строки к концу ( df = 0) либо наоборот, от конца строки к ее началу ( df = 1).
    Для работы с флагом df существуют специальные команды: cld (снять флаг df ) и std (установить флаг df ).
    Применение этих команд позволяет привести флаг df в соответствие с алгоритмом и обеспечить автоматическое увеличение или уменьшение счетчиков при выполнении операций со строками;
  • 5 системных флагов , управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086.
    Прикладным программам не рекомендуется модифицировать без необходимости эти флаги, так как в большинстве случаев это приведет к прерыванию работы программы. В табл. 2 перечислены системные флаги, их назначение.
Таблица 1. Флаги состояния
Таблица 2. Системные флаги

eip/ip (Instraction Pointer register) — регистр -указатель команд .
Регистр eip/ip имеет разрядность 32/16 бит и содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра cs в текущем сегменте команд. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра eip/ip .

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

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

  • четыре регистра управления;
  • четыре регистра системных адресов;
  • восемь регистров отладки.

Регистры управления

В группу регистров управления входят 4 регистра:
cr0, cr1, cr2, cr3 .

Эти регистры предназначены для общего управления системой.
Регистры управления доступны только программам с уровнем привилегий 0.

Хотя микропроцессор имеет четыре регистра управления, доступными являются только три из них — исключается cr1 , функции которого пока не определены (он зарезервирован для будущего использования).

  • pe (Protect Enable), бит 0 — разрешение защищенного режима работы .
    Состояние этого флага показывает, в каком из двух режимов — реальном (pe=0) или защищенном (pe=1) — работает микропроцессор в данный момент времени.
  • mp (Math Present), бит 1 — наличие сопроцессора . Всегда 1.
  • ts (Task Switched), бит 3 — переключение задач .
    Процессор автоматически устанавливает этот бит при переключении на выполнение другой задачи.
  • am (Aligment Mask), бит 18 — маска выравнивания .
    Этот бит разрешает (am = 1) или запрещает (am = 0) контроль выравнивания.
  • cd (Cache Disable), бит 30, — запрещение кэш-памяти .
    С помощью этого бита можно запретить (cd = 1) или разрешить (cd = 0) использование внутренней кэш-памяти (кэш-памяти первого уровня).
  • pg (PaGing), бит 31, — разрешение (pg = 1) или запрещение (pg = 0) страничного преобразования .
    Флаг используется при страничной модели организации памяти.

Регистр cr2 используется при страничной организации оперативной памяти для регистрации ситуации, когда текущая команда обратилась по адресу, содержащемуся в странице памяти, отсутствующей в данный момент времени в памяти.
В такой ситуации в микропроцессоре возникает исключительная ситуация с номером 14, и линейный 32-битный адрес команды, вызвавшей это исключение, записывается в регистр cr2 . Имея эту информацию, обработчик исключения 14 определяет нужную страницу, осуществляет ее подкачку в память и возобновляет нормальную работу программы;

Регистр cr3 также используется при страничной организации памяти.
Это так называемый регистр каталога страниц первого уровня . Он содержит 20-битный физический базовый адрес каталога страниц текущей задачи. Этот каталог содержит 1024 32-битных дескриптора, каждый из которых содержит адрес таблицы страниц второго уровня. В свою очередь каждая из таблиц страниц второго уровня содержит 1024 32-битных дескриптора, адресующих страничные кадры в памяти. Размер страничного кадра — 4 Кбайт.

Регистры системных адресов

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

  • глобальное — общее для всех задач;
  • локальное — отдельное для каждой задачи.
  • регистра таблицы глобальных дескрипторов gdtr (Global Descriptor Table Register) имеющего размер 48 бит и содержащего 32-битовый (биты 16—47) базовый адрес глобальной дескрипторной таблицы GDT и 16-битовое (биты 0—15) значение предела, представляющее собой размер в байтах таблицы GDT;
  • регистра таблицы локальных дескрипторов ldtr (Local Descriptor Table Register) имеющего размер 16 бит и содержащего так называемый селектор дескриптора локальной дескрипторной таблицы LDT. Этот селектор является указателем в таблице GDT, который и описывает сегмент, содержащий локальную дескрипторную таблицу LDT;
  • регистра таблицы дескрипторов прерываний idtr (Interrupt Descriptor Table Register) имеющего размер 48 бит и содержащего 32-битовый (биты 16–47) базовый адрес дескрипторной таблицы прерываний IDT и 16-битовое (биты 0—15) значение предела, представляющее собой размер в байтах таблицы IDT;
  • 16-битового регистра задачи tr (Task Register), который подобно регистру ldtr, содержит селектор, то есть указатель на дескриптор в таблице GDT. Этот дескриптор описывает текущий сегмент состояния задачи (TSS — Task Segment Status). Этот сегмент создается для каждой задачи в системе, имеет жестко регламентированную структуру и содержит контекст (текущее состояние) задачи. Основное назначение сегментов TSS — сохранять текущее состояние задачи в момент переключения на другую задачу.

Регистры отладки

Это очень интересная группа регистров, предназначенных для аппаратной отладки. Средства аппаратной отладки впервые появились в микропроцессоре i486. Аппаратно микропроцессор содержит восемь регистров отладки, но реально из них используются только 6.

Регистры dr0, dr1, dr2, dr3 имеют разрядность 32 бит и предназначены для задания линейных адресов четырех точек прерывания. Используемый при этом механизм следующий: любой формируемый текущей программой адрес сравнивается с адресами в регистрах dr0. dr3 , и при совпадении генерируется исключение отладки с номером 1.

Регистр dr6 называется регистром состояния отладки. Биты этого регистра устанавливаются в соответствии с причинами, которые вызвали возникновение последнего исключения с номером 1.

  • b0 — если этот бит установлен в 1, то последнее исключение (прерывание) возникло в результате достижения контрольной точки, определенной в регистре dr0 ;
  • b1 — аналогично b0 , но для контрольной точки в регистре dr1 ;
  • b2 — аналогично b0 , но для контрольной точки в регистре dr2 ;
  • b3 — аналогично b0 , но для контрольной точки в регистре dr3 ;
  • bd (бит 13) — служит для защиты регистров отладки;
  • bs (бит 14) — устанавливается в 1, если исключение 1 было вызвано состоянием флага tf = 1 в регистре eflags ;
  • bt (бит 15) устанавливается в 1, если исключение 1 было вызвано переключением на задачу с установленным битом ловушки в TSS t = 1.
  • место регистрации контрольной точки — только в текущей задаче или в любой задаче. Эти биты занимают младшие восемь бит регистра dr7 (по два бита на каждую контрольную точку (фактически точку прерывания), задаваемую регистрами dr0, dr1, dr2, dr3 соответственно).
    Первый бит из каждой пары — это так называемое локальное разрешение; его установка говорит о том, что точка прерывания действует если она находится в пределах адресного пространства текущей задачи.
    Второй бит в каждой паре определяет глобальное разрешение, которое говорит о том, что данная контрольная точка действует в пределах адресных пространств всех задач, находящихся в системе;
  • тип доступа , по которому инициируется прерывание: только при выборке команды, при записи или при записи/чтении данных. Биты, определяющие подобную природу возникновения прерывания, локализуются в старшей части данного регистра.

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

Оцените статью
TutShema
Добавить комментарий