Berezka7km.ru

Березка 7км
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Счетчик команд IP (instruction pointer

Счетчик команд IP (instruction pointer

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

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

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

. Примеры адресации

Адрес команды в сегменте кодаимеет вид:[CS]:[ смещение]

Линейный или физический адрес вычисляется по формуле

(CS) * 16 + смещение

16-разрядный регистр, содержит смещение текущей команды относительно регистра CS

Адрес операнда из сегмента данных имеет вид: [DS]:[смещение]

Адрес операнда из дополнительного сегмента данных:[ES]:[смещение]

Линейные или физические адреса вычисляются по формулам:

(DS) * 16 + смещение

(ES) * 16 + смещение

Адресация сегмента стека

В программе всегда только один сегмент стека

Стек — это область памяти, в которой можно сохранять значения и из которой они могут затем извлекаться по дисциплине "последний пришел- первый ушел" (LIFO). То есть последнее сохраненное в стеке значение будет первым значением, которое вы получите при чтении из стека. Классической аналогией стека является стопка тарелок. Поскольку тарелки можно класть только сверху стопки (и брать также), то первая положенная тарелка будет последней, которую вы сможете взять.

Доступ к элементам стека происходит с помощью двух регистров SP и BP

Регистр SP (stack pointer) — 16 разрядный регистр, называется также указателем текущей вершины стека. Регистр SP в начале работы программы имеет значение объема стека( максимальное значение). При каждом занесении данных в стек регистр SP автоматически уменьшается на 2 (длина слова). Текущая вершина стека имеет адрес [SS]:[ SP]; действительный адрес вычисляется по формуле [ss]*16+[sp]. Как и в случае стопки тарелок, вершина стека — это то место, в котором в стеке сохраняется последнее помещенное туда значение. Действие, состоящее в занесении значений в стек, называют также "заталкиванием" (pushing) в стек. В самом деле, инструкция PUSH используется для занесения значений в стек. Аналогично, действие, состоящее в извлечении (выборке) значений из стека, называют также "выталкиванием" (popping) из стека (для этого используется инструкция POP).

При выталкивании слова из стека регистр SP увеличивается на 2 .

Регистр ВР — basa pointer служит для косвенной адресации и доступа к содержимому стека без разрушения стека (выталкивания данных из стека). Регистр SP копируется в регистр BP, адрес [SS] [BP+2] обеспечит доступ к содержимому стека, расположенному на 2 байта дальше вершины стека.

Индексные регистры

Регистр SI (Source Index). Этот 16-разрядный регистр является индексом источника, обычно он используется в паре [DS]:[SI] для выполнения операций над цепочками символов или строк.

РегистрDI (Destination Index ). Этот 16-разрядный регистр является индексом назначения или приемника, обычно он используется в паре [ES]:[DI] также для строковых операций..

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

Регистры SI и DI не могут использоваться одновременно при формировании одного адреса.

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

Девять из 16 битов регистра флагов являются активными. Флаг – это бит, принимающий значение 1, если он установлен, и , если он сброшен. За битами регистра флагов закреплены соответствующие имена.

Регистр флагов Flags
Биты
OFDFIFTFSFZFAFPFCF

Таблица Назначение битов регистра флагов.

ФлагНазначение
Флаги условий
CF (Carry Flag)Флаг переноса. Содержит признак переноса единицы в старший разряд или заема единицы из этого разряда после арифметических операций, а также последний бит при операции сдвига.
PF(Parity Flag)Флаг чётности. Он устанавливается в 1, если в младшем байте результата очередной команды содержится чётное число единичных битов.
AF( Auxiliary Flag)Флаг вспомогательного переноса. Фиксирует особенности операций над двоично-десятичными числами.
ZF(Zero Flag)Флаг нуля. Он устанавливается в 1, если результат последней команды равен 0.
SF(Signim Flag)Флаг знака. Отражает старший бит результата выполнения команды.
OF(Overflow Flag)Флаг переполнения
Флаги состояний
IF( Interrupt flag)Флаг прерывания. Если IF=1, прерывания разрешаются, а иначе блокируются.
TF(Trap/Trace flag)Флаг трассировки. Обеспечивает возможность пошагового выполнения программы. Например, программа отладчик устанавливает данный флаг так, что возможно пошаговое выполнение каждой команды для проверки изменения содержимого регистров и памяти.
DF(Direction Flag)Флаг направления. Устанавливает направление обработки цепочек символов в памяти машины.

Регистр флагов не считывается и не модифицируется непосредственно.

ЛЕКЦИЯ №1 Язык Ассемблера МП 8080. Основные операторы.

Алфавит языка ассемблера составляют следующие символы:

§ Все латинские буквы от а до z , A..Z ( большие и малые не различаются0

§ Спец. знаки : @ , $, _ , &.

Лексемы – минимальная неделимая единица языка, цепочка символов. Имена, используемые со знаками _. @, $ .Ключевые слова. Константы

Имена — это названия сегментов и переменных, метки команд.

Ключевые слова – это директивы языка, названия регистров, мнемокоды машинных команд, операции в выражениях:

Shr, shl , type , dup и др.

Length , size , offset , и др.

Константы – это числа и строки.

Числовые константы могут быть заданы в 2-, 10-, 16-системах исчисления. Тип константы указывается с помощью символа — концом числа за последней цифрой.

Пример: Константа 10

двоичная система исчисления — 1010В

десятичная система исчисления — 10

шестнадцатеричная система исчисления — 0AH

В 16-ной системе исчисления константу начинают с нуля(). Количество цифр в константе ограничивается форматом данных, где используется эта константа.

Читайте так же:
Книга плата по счетчику

MOV AH , 11111111B

MOV BX , 0C5H ; C516=110001012

Символьные константы это цепочка любых символов, заключенная в кавычки: `ТЕКСТ `;”ТЕКСТ”. Количество символов в цепочке также зависит от формата данных, где она используется :

MOV AH , `A` ; константа длиной в байт

MOV AX , `AA` ; константа длиной в слово

Структура оператора

Каждый оператор занимает одну строку.

Операторы могут быть трех видов: комментарий, директива и машинная команда.

комментарий — ; не транслируется.

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

[имя ] директива [ параметры ]

DSEG SEGMENT PARA ; директива начала сегмента

Оператормашинная команда

[метка:] мнемокод [операнды ]

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

Оператор машинной команды порождает одну машинную команду. Длина команды от 1 + до 6 байт (зависит от вида операции, (кода команды) и от способа адресации оперативной памяти).

Директивы языка Ассемблера

Директивы сегментации программы.

Сегменты программы должны описываться с помощью директивы SEGMENT, указывающей имя сегмента, используемое для ссылок в программе, границу выравнивания (байт, слово, параграф, страница), тип комбинации его с другими сегментами, класс сегмента, определяющий порядок следования сегмента в памятиДиректива SEGMENT открывает сегмент. Любой код или данные, следующие за ней, будут помещаться в указанный сегмент до тех пор, пока не встретится директива ENDS, закрывающая сегмент.

имя SEGMENT [ атрибуты ]

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

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

Во время трансляции Turbo Assembler рассматривает атрибуты, указанные в директиве SEGMENT, слева направо.

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

Внутренние регистры: Управляющие регистры

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

Доступ к управляющим регистрам возможен с помощью команд: MOV CR, SMSW, LMSW, CLTS. Формат управляющих регистров представлен на рис. 1.8.

Рис. 1.8. Формат управляющих регистров

Регистр CR0

Первые 16 бит регистра CR0 называются словом состояния машины (MSW). Слово состояния машины впервые появилось в процессоре Intel286. В более поздних процессорах оно является лишь частью управляющего регистра CR0 и сохранено для совместимости. Биты NE, WP, AM, NW, CD были введены в регистр CR0 начиная с процессоров Intel486.

PE (Разрешение защиты, бит 0: Intel286 …)

Бит PE (Protection Enable) предназначен для переключения режимов работы процессора — режима реальной адресации и защищенного режима. При сброшенном PE процессор работает в режиме реальной адресации, при установленном — в защищенном режиме (включая режим V86).

Бит PE можно установить загрузкой слова состояния машины MSW с помощью команды LMSW или всего регистра CR0 командой MOV CR.

Сбросить PE можно только загрузкой CR0 командой MOV CR. В целях прямой совместимости с Intel286 бит PE не может быть сброшен командой LMSW.

MP (Слежение за сопроцессором, бит 1: Intel286 …)

В процессорах Intel286 и Intel386 используется совместно с битом TS для определения — будет ли команда WAIT генерировать особую ситуацию #NM (сопроцессор отсутствует); ловушка генерируется при установленных MP и TS. При запуске программ процессоров Intel286 и Intel386 на процессорах со встроенным сопроцессором (Intel486DX, Pentium, …) бит MP должен быть установлен; в случае процессора Intel486SX (нет встроенного сопроцессора) бит MP должен быть сброшен.

EM (Эмуляция сопроцессора, бит 2: Intel286 …)

Установка этого бита вызывает генерацию особой ситуации #NM (сопроцессор отсутствует) всеми кодами команд сопроцессора. Значение EM не влияет на выполнение команды WAIT.

TS (Задача переключена, бит 3: Intel286 …)

Процессор устанавливает флаг TS при каждом переключении задач и анализирует его при поступлении команд сопроцессора, команд MMX/3DNow! и SIMD. Это делается для исключения исполнения этих команд над данными, перекочевавшими из другой задачи. Команда CLTS очищает этот бит.

ET (Тип сопроцессора, бит 4: Intel386, Intel486SX)

При ET = 1, используется 32-битный протокол Intel387. При ET = 0, используется 16-битный протокол Intel287. При необходимости может быть сброшен или установлен загрузкой CR0. В целях прямой совместимости с Intel286 не изменяется командой LMSW. В процессорах современных модификаций (Pentium …) данный бит считается зарезервированным (ET = 1).

NE (Ошибка сопроцессора, бит 5: Intel486 …)

Бит предназначен для управления режимом реагирования на ошибки сопроцессора. Если NE установлен, действует внутренний механизм, обеспечивающий генерацию ошибки сопроцессора #MF сразу по поступлении очередной команды FPU/MMX/3DNow! вслед за командой, вызвавшей незамаскированное исключение (с помощью регистра управления сопроцессора CW можно замаскировать все исключения).

Если NE сброшен, реакция на исключительния FPU происходит в так называемом стиле MS-DOS, который предполагает обработку ошибок сопроцессора через вызов внешнего прерывания. В этом режиме задействуются специальные выводы FERR# и IGNNE# (вывод FERR# аналогичен выводу ERROR# сопроцессоров Intel287 и Intel387 и обычно подключается к внешнему программируемому контроллеру прерываний).

Механизмы реакции различных моделей процессоров и сопроцессоров на возникновение исключительных ситуаций сопроцессора обладают некоторыми специфическими особенностями, варьирующимися от модели к модели. Подробное описание всех этих особенностей приведено в Intel 64 and IA-32 Architectures Developer’s Manual: Vol. 1

WP (Защита записи, бит 16: Intel486 …)

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

Читайте так же:
Программа для счетчика шагов

AM (Маска выравнивания, бит 18: Intel486 …)

Этот бит позволяет осуществлять контроль выравнивания, если он установлен. Если бит AM сброшен, контроль выравнивания запрещен. Контроль выравнивания осуществляется, только если установлены бит AM, флаг AC и CPL = 3 (режим пользователя). При этом генерируется особая ситуация контроля выравнивания (#AC), если происходит обращение к невыровненному операнду, например, к слову по нечетному адресу или к двойному слову по адресу не кратному четырем.

NW (Запрет сквозной записи, бит 29: Intel486 …)

Предназначен для управления встроенным КЭШ. Если этот бит сброшен, то сквозная запись (write-through) и циклы недействительности КЭШ разрешены. Если бит установлен, то сквозная запись и циклы недействительности запрещены. При NW = 1 бит CR3.PWT и биты PWT в таблицах страничных преобразований игнорируются.

CD (Разрешение работы КЭШ, бит 30: Intel486 …)

Если CD = 0, работа внутреннего КЭШ (L1 и L2) разрешена, иначе — запрещена. Если работа внутреннего КЭШ запрещена, но он содержит некоторое количество достоверных данных, то при обращении к памяти данные поступают из КЭШ при попадании или извне при промахе. Во время записи ситуация аналогичная, т.е. когда записываются данные попадающие в КЭШ, то они сперва записываются в КЭШ, а затем методом обратной записи (Write-back) — в память (соответстующие ячейки КЭШ после этого считаются недействительными), а если нет попадания в КЭШ, то запись производится непосредственно во внешнюю память. Для предотвращения использования КЭШ, когда CD = 1, необходимо определить его как недействительный. Биты CR3.PCD и CR3.PWT, а также аналогичные биты PCD и PWT в элементах таблиц страничных преобразований при отключенном КЭШ игнорируются.

PG (Включение страничного механизма, бит 31: Intel386 …)

Если PG = 1, то страничный механизм включен, иначе — выключен. Бит PG может использоваться только в защищенном режиме работы процессора (CR0.PE = 1). Попытка установить этот бит в реальном режиме адресации приводит к генерации ошибки общей защиты (#GP).

Регистр CR2

Если включен механизм страничной адресации (CR0.PG = 1), и генерируется особая ситуация 14 (Страничная ошибка), то регистр CR2 будет содержать полный 32-разрядный линейный адрес, поступление которого в блок страничной адресации вызвало эту ошибку.

Регистр CR3

При включенном страничном механизме регистр CR3 (а именно, 20 его старших бит) содержит 20 старших бит физического адреса каталога страниц (младшие 12 бит 32-разрядного адреса каталога страниц принимаются равными 0). Иногда CR3 называют регистром базы каталога страниц (PDBR). Начиная с процессора Intel486 используется еще два бита этого регистра (PWT, PCD), которые управляют кэшированием страниц. В процессорах начиная с Pentium, которые поддерживают расширения физического адреса (управляются битом CR4.PAE), в режиме расширенного физического адреса 27 старших бит регистра CR3 содержат адрес таблицы указателей на каталоги страниц (27 его старших бит, а младшие 5 бит принимаются равными 0).

PWT (Сквозная запись страниц, бит 3: Intel486 …)

Бит используется для управления кэшированием текущего каталога страниц. При PWT = 1, для текущего каталога обновление реализуется методом сквозной записи (write-through), при PWT = 0 — методом обратной записи (write-back). Программы также могут управлять кэшированием таблиц страниц и отдельных страниц посредством специальных битов PCD, PWT в элементах таблиц страничных преобразований.

PCD (Запрещение кэширования страниц, бит 4: Intel486 …)

Бит используется для управления кэшированием текущего каталога страниц. PCD = 1 запрещает кэширование. Программы также могут управлять кэшированием таблиц страниц и отдельных страниц посредством специальных битов PCD, PWT в элементах таблиц страничных преобразований.

Регистр CR4

Регистр CR4 впервые был введен в микропроцессоре Pentium, он обеспечивает включение/выключение поддержки самых разнообразных режимов и дополнительных возможностей процессора. Разные модификации процессоров поддерживают разные наборы возможностей. Поэтому перед программированием любых битов этого регистра, необходимо с помощью команды CPUID проверить наличие поддержки требуемого режима в конкретной модификации процессора. В случае, если какой-либо из режимов не поддерживается, то соответствующий бит регистра CR4 считается зарезервированным и изменение его значения недопустимо (вызывает непредсказуемый результат).

VME (Расширения виртуального-8086 режима, бит 0: Pentium …)

Установка в 1 этого бита включает поддержку флагов виртуальных прерываний EFLAGS.VIF и EFLAGS.VIP в режиме V86.

PVI (Виртуальные прерывания защищенного режима, бит 1: Pentium …)

Установка в 1 этого бита включает поддержку флагов виртуальных прерываний EFLAGS.VIF и EFLAGS.VIP в защищенном режиме. Использование виртуальных прерываний в защищенном режиме позволяет выполнять программы, предназначенные для уровня привилегий 0, на уровне привилегий 3.

TSD (Ограничение маркера времени, бит 2: Pentium …)

Установка TSD в 1 разрешает выполнение привилегированной команды RDTSC (Read from time stamp counter) только на уровне привилегий 0. Сброс TSD разрешает указанную команду на всех уровнях привилегий.

DE (Расширение отладки, бит 3: Pentium …)

Установка DE = 1 разрешает точки останова по вводу/выводу. Помимо этого, при включенном расширении отладки (DE = 1) регистры DR4, DR5 определены как зарезервированные и попытка обращения к ним приведет к генерации ошибки «неопределенный код операции» (#UD). При отключенном расширении отладки (DE = 0) и в процессорах Intel386 и Intel486 регистры DR4, DR5 отображаются на регистры DR6, DR7.

PSE (Расширение размера страниц, бит 4: Pentium …)

PSE = 1 разрешает использование страниц расширенного размера (4Мб или 2Мб в зависимости от текущей разрядности физического адреса).

PAE (Расширение физического адреса, бит 5: Pentium Pro …)

PAE = 1 разрешает использование расширенной 36-битной (вместо стандартной 32-битной) физической адресации. При этом логический адрес остается 32-битным, все изменения касаются только работы страничного механизма. Существует еще одно расширение физического адреса для процессоров Pentium Pro и выше. Это расширение (т.н. PSE-36) позволяет использовать 4Мб страницы в режиме 36-битной адресации. Однако каких-либо управляющих битов для PSE-36 не предусмотрено, а его наличие определяется командой CPUID. Подробную информацию о режимах адресации смотрите в главе 2.

Читайте так же:
Почему крутит счетчик при выключенных приборах

MCE (Расширение контроля машины, бит 6: Pentium …)

MCE = 1 разрешает расширенный контроль работы процессора и включает поддержку прерывания 18 (Контроль машины).

PGE (Разрешение глобальных страниц, бит 7: Pentium Pro …)

PGE = 1 разрешает использование глобальных страниц, которые помечены специальным битом в таблице или каталоге страниц (бит G). Глобальные страницы предназначены для использования в системных процедурах, к которым часто происходят обращения, причем из разных пользовательских задач (например, для процедур ядра ОС). Если страница помечена как глобальная, то при переключении задач или записи в CR3 не происходит автоматического вычеркивания данных об этой странице из TLB. Операционная система сама должна следить за действительностью информации о глобальных страницах в TLB и по мере надобности корректировать ее программно. При PGE = 0 поддержка глобальных страниц отключена.

PCE (Разрешение счетчика производительности, бит 8: Pentium Pro …)

Данный флаг предназначен для разрешения мониторинга производительности в пользовательских программах, выполняющихся на уровне привилегий большем 0. Установка PCE = 1 разрешает выполнение команды RDPMC (Read Performance-Monitoring Counters) на всех уровнях привилегий. Сброс PCE разрешает указанную команду только на уровне привилегий 0.

OSFXSR (Использование команд быстрого сохранения/восстановления, бит 9: Pentium II …)

Данный флаг устанавливается операционной системой в 1 для индикации того, что она использует команды расширенного быстрого сохранения/восстановления состояния FPU/MMX/SIMD (FXSAVE/FXRSTOR) при переключении контекста.

OSXMMEXCPT (Разрешение особой ситуации SIMD: Pentium III …)

Бит OSXMMEXCPT управляет режимом реакции процессора на исключения SIMD. Когда OSXMMEXCPT = 0, при возникновении исключения SIMD генерируется особая ситуация ««неопределенный код операции» (#UD), а прерывание 19 (#XM) считается зарезервированным. Если же OSXMMEXCPT = 1, то все незамаскированные исключения SIMD вызывают генерацию особой ситуации #XM.

Счетчик команд

Программный счетчик ( PC ), обычно называемый указатель команд ( IP — ) в Intel x86 и Itanium микропроцессоров , а также иногда называемый регистр адреса инструкции ( IAR ), [1] счетчика команд , [2] или только часть секвенсор инструкции , [3] — регистр процессора, который указывает, где находится компьютер в своей программной последовательности. [nb 1]

Обычно ПК получает приращение после выборки инструкции и сохраняет адрес памяти (« указывает на») следующей инструкции, которая должна быть выполнена. [4] [nb 2]

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

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

СОДЕРЖАНИЕ

  • 1 Аппаратная реализация
  • 2 Последствия для машинной архитектуры
  • 3 Последствия в высокоуровневом программировании
  • 4 Символ
  • 5 См. Также
  • 6 Примечания
  • 7 ссылки

Аппаратная реализация [ править ]

В простом центральном процессоре (ЦП) ПК представляет собой цифровой счетчик (который является источником термина «программный счетчик»), который может быть одним из нескольких аппаратных регистров . Цикл команд [6] начинается с выборки , при которой ЦП помещает значение ПК на адресную шину, чтобы отправить его в память. Память отвечает, отправляя содержимое этой ячейки памяти по шине данных . (Это компьютерная модель с хранимой программой , в которой одно пространство памяти содержит как исполняемые инструкции, так и обычные данные. [7] ) После выборки ЦП переходит к выполнению, предпринимая некоторые действия в зависимости от полученного содержимого памяти. В какой-то момент в этом цикле ПК будет модифицирован так, что следующая выполняемая инструкция будет другой (обычно с приращением, так что следующая инструкция начинается с адреса памяти, следующего сразу за последней ячейкой памяти текущей инструкции) .

Как и другие регистры процессора, ПК может представлять собой набор двоичных защелок, каждая из которых представляет один бит значения ПК. [8] Количество бит (ширина ПК) относится к архитектуре процессора. Например, «32-битный» ЦП может использовать 32 бита для адресации 2 32 единиц памяти. На некоторых процессорах ширина программного счетчика зависит от адресуемой памяти; например, у некоторых контроллеров AVR есть ПК, который завершает работу после 12 бит. [9]

Если ПК является двоичным счетчиком, он может увеличиваться при подаче импульса на его вход COUNT UP, или CPU может вычислить какое-то другое значение и загрузить его в ПК с помощью импульса на его вход LOAD. [10]

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

Последствия в архитектуре машины [ править ]

Использование ПК, который обычно имеет приращение, предполагает, что компьютер выполняет обычно линейную последовательность инструкций. Такой ПК занимает центральное место в архитектуре фон Неймана . Таким образом, программисты пишут последовательный поток управления даже для алгоритмов, которые не обязательно должны быть последовательными. Получившееся в результате « узкое место фон Неймана » привело к исследованиям в области параллельных вычислений [11], в том числе моделей потоков данных , не относящихся к фон Нейману , без использования ПК; например, вместо того, чтобы указывать последовательные шаги, высокоуровневый программист может указать желаемую функцию, а низкоуровневый программист может указать это, используя комбинаторную логику .

Это исследование также привело к способам ускорения работы обычных ЦП на базе ПК, в том числе:

  • Конвейерная обработка , при которой различное оборудование в ЦП одновременно выполняет разные фазы нескольких инструкций.
  • Архитектура с очень длинным командным словом (VLIW), в которой одна инструкция может достигать нескольких эффектов.
  • Методы для прогнозирования внеочередного исполнения и подготовить последующие инструкции для выполнения вне обычной последовательности.

Последствия в высокоуровневом программировании [ править ]

Современные языки программирования высокого уровня по-прежнему следуют модели последовательного выполнения, и, действительно, общий способ выявления ошибок программирования — это «выполнение процедуры», в которой палец программиста идентифицирует точку выполнения, как это сделал бы ПК. Язык высокого уровня — это, по сути, машинный язык виртуальной машины [12], слишком сложный для создания аппаратного обеспечения, но вместо этого эмулируемый или интерпретируемый программным обеспечением.

Читайте так же:
Как устанавливать счетчик для метрики

Однако новые модели программирования выходят за рамки программирования с последовательным выполнением:

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

Символ [ править ]

Поставщики используют разные символы для обозначения счетчика программ в программах на ассемблере . В то время как использование символа «$» распространено в документации по процессорам Intel , Zilog , Texas Instruments , Toshiba , NEC , Siemens и AMD , Motorola , Rockwell Semiconductor , Microchip Technology и Hitachi вместо этого используют символ «*» [9], тогда как SGS-Thomson Microelectronics использует «ПК». [9]

Функциональная схема центрального процессора

Функциональная схема центрального процессора (управляющего и арифметического устройства УАУ) приведена на рис. 4.1. В состав УАУ входят три основных функциональ­ных устройства:

· центральное устройство управления,

· местное устройство управления,

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

ЦУУ состоит из следующих функциональных узлов:

· счетчика команд и переключателя "квадратов" команд ПЗУ (СКП),

· схемы адреса ПЗУ,

· схемы модификации адреса,

· схемы хранения адреса,

· индексного регистра ИР,

· схемы управления ПЗУ,

· схемы управления ОЗУ,

· схемы управления ВЗУ,

· схемы приёма сигналов непрограммируемого прерывания вычислений
ПНПВ.

ЦУУ обеспечивает естественную выборку команд из ПЗУ.

В счетчике команд и переключателе "квадратов" команд ПЗУ (СКП) формируется адрес команды путем прибавления по ИО единицы младшего разряда к содержимому счетчика, либо посылкой в СКП числа с выхода схемы хранения адреса. Для согласования быстродействия ЦУУ и ПЗУ адрес команды из СКП на схему адреса ПЗУ передается по двум каналам.

В ЦВМ-Орбита 20 "память" команд и констант единая, поэтому обращение к ПЗУ за командой и константой происходит по одному и тому же каналу. Схема адреса ПЗУ осуществляет коммутацию адресов команды и константы.

Управляет коммутацией признак памяти, записанный в 9-ом разряде команды. Сформированный адрес поступает из схемы адреса ПЗУ. Адрес операнда в схему адреса ПЗУ подается также по двум каналам: адрес ячейки внутри "квадрата" ПЗУ (AM) поступает с выхода схемы модифи­кация адреса, адрес номера "квадрата" ПЗУ с выхода ИР.

Схема модификации адреса предназначена для приёма команды из ПЗУ, ОЗУ или УВВ и дальнейшей модификации адресной части команды, если признак модификация в команде равен единице. Изменение адресной части произво­дится на величину модификатора команд МК, хранящегося в индексном регистре. С выхода схемы модификации адреса адрес операнда поступает в ВЗУ.

Рис. 4.1 Функциональная схема центрального процессора

Схема хранения адреса предназначена для запоминания адреса при многократном обращения к ОЗУ или ПЗУ. Адрес операнда из схемы хранения адреса поступает ОЗУ.

Номер ОЗУ, к которому производится обращение за числом, хранятся в 15-ом разряде счетчика команд. Таким образом, в ЦВМ-Орбита 20 принята относительная адресация.

Индексный регистр ИР предназначен для хранения информации, необходимой для модификации и формирования адреса операнда. ИР содержит модификатор адресной части команды МК и переключатель "квадратов" чисел ПЧ. Кроме того, в нем производится запоминание признака условного перехода w. Изменение кода в ИР производится программным путем при выполнении операций посылки в ИР из Сб.ЗУ, схемы хранения адреса илиPH.

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

Схема управления ОЗУ предназначена для формирования сигналов управления работой ОЗУ, участвующего в выполне­нии операции. Номер ОЗУ записан в 15-ом разряде СКП. Изменение номера ОЗУ производится программно.

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

Управление схемой осуществляется разрядами переключателя "квадратов" чисел.

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

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

Местное устройство управления состоит из следующих устройств:

· предварительный регистр команд;

· исполнительный регистр команд;

· дешифратор кода операций ДКОП,

· схема преобразования кода,

· распределительное устройство РУ.

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

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

Предварительный регистр команд ПРК предназначен для приема кода операции команды, выбранной из определенного устройства (ПЗУ, ОЗУ или УВВ)и запоминания этой информации до момента дешифрации.

Читайте так же:
Счетчик меркурий 233 art 010

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

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

— управление выполнением операций в ЦУУ,

— управление выполнением операций в арифметическом устройстве,

— управление вводом из УВВ, выводом в УВВ и выводом в ЦВМ рез.

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

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

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

Так как в одноадресной ЦВУ в команде можно указать адрес только одного операнда, то для выполнения двух операндных операций в арифметическом устройстве необходимо иметь буферную память (РН, РА). Кроме того, в арифметическое устройство входят операционные устройства преобразования информации (ЧЗ, схема множимого S, D и т.д.) и необходимые устройства коммутации (Сб. ЗУ, Сб. "число в УВВ", Сб. " число в ОЗУ " и т.д.).

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

Арифметическое устройство разделяется на:

— собственно арифметическое устройство, реализующее все арифметические, логические и битовые операции, кроме опера­ций умножения, деления, сдвигов;

— множительно-делительное устройство, реализующее операции умножения, деления и сдвига.

Собственно арифметическое устройство состоит из сле­дующих функциональных узлов:

— сборки чисел запоминающих устройств сб.ЗУ,

— сборки чисел в УВВ,

— сборки чисел в ОЗУ,

— схемы w (признак условного перехода),

— схемы j ( признак переполнения разрядной сетки),

— сумматора арифметического устройства Ч3,

Сборка чисел запоминающих устройств Сб. ЗУ предназна­чена для приема и коммутации исходной числовой информации из различных устройств ПЗУ, ОЗУ и ВЗУ.

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

Сборка чисел в УВВ предназначена для выдачи информации в УВВ в соответствии с алгоритмом выполнения операций вывода.

Сборка чисел в ОЗУ предназначена для выдачи информации в ОЗУ из регистров ЦУУ, СКП и ИР, регистров арифметического устройства РН и РА, регистров устройства ввода- вывода, схемы j и ЦВМ рез. в соответствии с алгоритмом выполнения операций запоминания.

Схема w предназначена для формирования признака условного перехода в соответствии с законом, принятым в системе команд, или в соответствии с результатом выполнения битовых операций и операции БРП. Хранение признака w осуществляется в ИР.

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

Запоминание признака jпроизводится в 12-ом разряде ячейки ОЗУ при выполнении операции.

Сборка Ч1 предназначена для формирования первого операнда при выполнении операций. Первый операнд поступает на Сб.Ч1 из устройств памяти через Сб.ЗУ или из УВВ.

Сборка Ч2предназначена для формирования второго операнда при выполнении операций. Второй операнд поступает из внутренней памяти арифметического устройства (РН, РА).

Сумматор арифметического устройства (Ч3) предназначен для преобразования исходной числовой информация, поступаю­щей со сборок Ч1и Ч2в соответствии с алгоритмами опе­раций пересылок арифметических, логических и битовых. Результат операций, полученный на Ч3, запоминается в регист­рах РН и РА.

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

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

Множительно-делительное устройство состоит из следующих узлов:

— схемы передачи множимого на сумматоры,

— сумматора множительно-делительного устройства,

— вычитателя множительно-делительного устройства D,

— схемы выработки разрядов частного.

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

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

Схема множимого предназначена для образования кодов, кратных одному (М), двум (2М ) и трем множимым (3М).

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

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

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

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

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector