Внутренняя организация процессора кратко

Обновлено: 03.07.2024

Инструмент проще, чем машина. Зачастую инструментом работают руками, а машину приводит в действие паровая сила или животное.

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

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

Два основных компонента процессора

Устройство управления

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

Существует два типа реализации УУ:

  • УУ на жёсткой логике (англ. hardwired control units). Характер работы определяется внутренним электрическим строением — устройством печатной платы или кристалла. Соответственно, модификация такого УУ без физического вмешательства невозможна.
  • УУ с микропрограммным управлением (англ. microprogrammable control units). Может быть запрограммирован для тех или иных целей. Программная часть сохраняется в памяти УУ.

УУ на жёсткой логике быстрее, но УУ с микропрограммным управлением обладает более гибкой функциональностью.

Арифметико-логическое устройство

Это устройство, как ни странно, выполняет все арифметические и логические операции, например сложение, вычитание, логическое ИЛИ и т. п. АЛУ состоит из логических элементов, которые и выполняют эти операции.

Большинство логических элементов имеют два входа и один выход.

Ниже приведена схема полусумматора, у которой два входа и два выхода. A и B здесь являются входами, S — выходом, C — переносом (в старший разряд).

Схема арифметического полусумматора

Хранение информации — регистры и память

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

Регистры

Регистр — минимальная ячейка памяти данных. Регистры состоят из триггеров (англ. latches/flip-flops). Триггеры, в свою очередь, состоят из логических элементов и могут хранить в себе 1 бит информации.

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

По функциональному назначению триггеры делятся на несколько групп:

  • RS-триггер: сохраняет своё состояние при нулевых уровнях на обоих входах и изменяет его при установке единице на одном из входов (Reset/Set — Сброс/Установка).
  • JK-триггер: идентичен RS-триггеру за исключением того, что при подаче единиц сразу на два входа триггер меняет своё состояние на противоположное (счётный режим).
  • T-триггер: меняет своё состояние на противоположное при каждом такте на его единственном входе.
  • D-триггер: запоминает состояние на входе в момент синхронизации. Асинхронные D-триггеры смысла не имеют.

Для хранения промежуточных данных ОЗУ не подходит, т. к. это замедлит работу процессора. Промежуточные данные отсылаются в регистры по шине. В них могут храниться команды, выходные данные и даже адреса ячеек памяти.

Принцип действия RS-триггера

Память (ОЗУ)

ОЗУ (оперативное запоминающее устройство, англ. RAM) — это большая группа этих самых регистров, соединённых вместе. Память у такого хранилища непостоянная и данные оттуда пропадают при отключении питания. ОЗУ принимает адрес ячейки памяти, в которую нужно поместить данные, сами данные и флаг записи/чтения, который приводит в действие триггеры.

Прим. перев. Оперативная память бывает статической и динамической — SRAM и DRAM соответственно. В статической памяти ячейками являются триггеры, а в динамической — конденсаторы. SRAM быстрее, а DRAM дешевле.

Команды (инструкции)

Команды — это фактические действия, которые компьютер должен выполнять. Они бывают нескольких типов:

  • Арифметические: сложение, вычитание, умножение и т. д.
  • Логические: И (логическое умножение/конъюнкция), ИЛИ (логическое суммирование/дизъюнкция), отрицание и т. д.
  • Информационные: move , input , outptut , load и store .
  • Команды перехода: goto , if . goto , call и return .
  • Команда останова: halt .

Прим. перев. На самом деле все арифметические операции в АЛУ могут быть созданы на основе всего двух: сложение и сдвиг. Однако чем больше базовых операций поддерживает АЛУ, тем оно быстрее.

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

В процессоре инструкции реализуются на аппаратном уровне. За один такт одноядерный процессор может выполнить одну элементарную (базовую) инструкцию.

Группу инструкций принято называть набором команд (англ. instruction set).

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

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

Частота нынешних процессоров измеряется в ГГц (Гигагерцы). 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 .

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

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

У процессора есть механизм сохранения инструкций в кэш. Как мы выяснили ранее, за секунду процессор может выполнить миллиарды инструкций. Поэтому если бы каждая инструкция хранилась в ОЗУ, то её изъятие оттуда занимало бы больше времени, чем её обработка. Поэтому для ускорения работы процессор хранит часть инструкций и данных в кэше.

Если данные в кэше и памяти не совпадают, то они помечаются грязными битами (англ. dirty bit).

Поток инструкций

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

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

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

Центральный процессор (ЦП) — устройство, непосредственно предназначенное для выполнения вычислительных операций. Процессор работает под управлением программы, выполняя вычисления или принимая логические решения, необходимые для обработки информации.
Большинство современных центральных процессоров строятся на базе 32-битной архитектуры Intel-совместимых процессоров IA-32 (Intel Architecture), которая является третьим поколением базовой архитектуры x86.

Структура центрального процессора

Функционально центральный процессор можно разделить на две части:

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

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

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

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

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

  • Шина данных – служит для пересылки данных между процессором и оперативным запоминающим устройством (ОЗУ).
  • Шина адреса – используется для передачи сигналов, с помощью которых определяется местоположение ячейки памяти для выполняемых процессором операций чтения/записи и ввода-вывода.
  • Шина управления – служит для пересылки управляющих сигналов. Каждая линия этой шины имеет своё особое назначение, поэтому они могут быть как однонаправленными, так и двунаправленными.
Микропроцессорная память

Микропроцессорная память представляет собой набор регистров, которые условно можно разделить на 4 группы:

  • регистры общего назначения;
  • сегментные регистры;
  • регистр счетчика команд;
  • регистр признаков.

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

Набор регистров общего назначения 32-битной архитектуры центрального процессора включает в себя

  • 4 универсальных регистра: EAX, EBX, ECX, EDX ;
  • 2 индексных регистра: ESI, EDI ;
  • 2 регистра для работы со стеком: ESP, EBP .

Набор регистров центрального процессора

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


Регистр EAX (аккумулятор) – автоматически применяется при операциях умножения, деления и при работе с портами ввода-вывода. Его использование в арифметических, логических и некоторых других операциях позволяет увеличить скорость их выполнения. Используется для записи возвращаемого значения из функции.
Регистр EBX (регистр базы) – может содержать адреса элементов оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных.
Регистр ECX (счетчик) – используется в операциях повторения, например в циклах, в строковых командах и т.д.
Регистр EDX (регистр данных) – является единственным элементом, который может хранить адреса портов ввода-вывода в командах типа IN (получить из порта) и OUT (вывести в порт). Без его помощи невозможно обратиться к портам с адресами в адресном пространстве больше 1 байта. Автоматически применяется также в операциях умножения и деления.

Индексные регистры используются для выполнения косвенной адресации, а также автоматически используются в строковых командах. Каждый 32-разрядный индексный регистр представляет собой логическое объединение, позволяющее отдельно обратиться к своей младшей 16-разрядной части.
Регистр ESI (регистр индекса источника) может содержать адреса элементов в оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных. При выполнении операций со строками в этом регистре содержится смещение строки источника в сегменте данных.
Регистр EDI (регистр индекса приемника) может содержать адреса элементов в оперативной памяти. По умолчанию эти адреса будут представлять собой смещение в сегменте данных. При выполнении операций со строками в этом регистре содержится смещение строки приемника в сегменте данных.


Регистры для работы со стеком используются для хранения вершины стека ( ESP ) и текущего элемента (базы) — EBP . Каждый 32-разрядный регистр для работы со стеком представляет собой логическое объединение, позволяющее отдельно обратиться к своей младшей 16-разрядной части.
Регистр EBP (указатель базы) может содержать адреса элементов в оперативной памяти. Эти адреса будут представлять собой смещение в сегменте стека.
Регистр ESP (указатель стека) используется для записи данных в стек и чтения их из стека. Фактически он содержит смещение в сегменте стека, которое определяет нужное слово памяти. Значения этого регистра автоматически меняются командами для работы со стеком типов push, pop, pushf, popf, call, ret .

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

Регистр CS (регистр сегмента кода) определяет стартовый адрес сегмента, в который помещается код выполняемой программы. Это единственный сегментный регистр, который нельзя загрузить непосредственно. Косвенно загрузить в регистр CS новое значение могут команды вида jxx, call, int, ret, iret .
Регистр DS (регистр сегмента данных) определяет стартовый адрес сегмента, в который помещаются данные для программы. По умолчанию смещения в сегменте данных задаются в регистрах EBX , ESI и EDI .
Регистр SS (регистр сегмента стека) определяет стартовый адрес сегмента, в который помещается стек для программы. По умолчанию смещения для сегмента стека задаются в регистрах ESP и EBP .
Регистры ES, FS, GS (регистры сегментов дополнительных данных) опредляют стартовый адрес сегмента, в который помещаются дополнительные данные для программы. Например, в случае строковых команд, DS определяет сегмент для строки-источника, а ES – сегмент для строки-приемника. За исключением строковых команд, доступ к данным в сегменте ES обычно менее эффективен, чем в сегменте DS .

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

Регистр признаков

Обычно команды выполняются в той последовательности, в которой они расположены в программе. Нарушают эту последовательность только команды переходов (они начинаются с буквы j: jxx ), команды вызова подпрограммы ( call ), обработчиков прерываний ( int ) и возврата ( ret, iret ). Непосредственно содержимое EIP нельзя изменить или прочитать. Косвенно загрузить в регистр EIP новое значение могут только команды jxx, call, int, ret, iret . Регистр EIP является 32-битным. Младшая 16-битная часть регистра счетчика команд имеет имя IP .

Регистр признаков
Регистр признаков EFLAGS включает биты, каждый из которых устанавливается в единичное или в нулевое состояние при определенных условиях. Регистр EFLAGS 32-битный. Младшая 16-битная часть регистра признаков имеет имя FLAGS .

Все биты регистра признаков подразделяются на

  • s — биты состояния ( STATUS );
  • c — биты управления ( CONTROL );
  • x — системные биты ( SYSTEM ).

Регистр признаков

CF – бит переноса: устанавливается в 1, когда арифметическая операция генерирует перенос или выход за разрядную сетку результата. сбрасывается в 0 в противном случае. Этот флаг показывает состояние переполнения для беззнаковых целочисленных арифметических действий. Он также используется в арифметических действиях с повышенной точностью. Может быть установлен командой STC или сброшен командой CLC .

PF – бит четности: устанавливается в 1, если результат последней операции имеет четное число единиц.

AF – бит вспомогательного переноса: устанавливается в 1, если арифметическая операция генерирует перенос из младшей тетрады битов (из 3 бита в 4), сбрасывается в 0 в противном случае. Этот флаг используется в двоично-десятичной арифметике.

ZF – бит нулевого значения: устанавливается в 1, если результат нулевой, сбрасывается в 0 в противном случае.

SF – знаковый бит: устанавливается равным старшему биту результата, который определяет знак в знаковых целочисленных операциях (0 – положительное число, 1 – отрицательное число).

TF – бит пошаговой отладки: устанавливается в 1 для включения режима пошаговой отладки программы, сбрасывается в 0 в противном случае.

IF – бит прерываний: при значении 1 микропроцессор реагирует на внешние аппаратные прерывания по входу INTR. При значении 0 микропроцессор игнорирует внешние прерывания.

DF – бит направления: управляет строковыми командами ( MOVS, CMPS, SCAS, LODS, STOS ). Если DF = 1 (команда STD ), то содержимое индексных регистров ESI, EDI увеличивается, если DF = 0 (команда CLD ), то содержимое индексных регистров ESI, EDI уменьшается.

OF – бит переполнения: устанавливается в 1, если целочисленный результат выходит за пределы разрядной сетки. Тем самым данный бит указывает на потерю старшего бита результата.

IOPL – уровень приоритета: 2-битовое поле, которое отображает уровень приоритета ввода-вывода для выполняемой в данное время программы или задачи. Действительный приоритет задачи может быть меньше или равен IOPL.

NT – флаг вложенной задачи: управляет последовательностью вызванных и прерванных задач. Установлен в 1, если текущая задача связана с предыдущей, сброшен в 0, если текущая задача не связана с другими задачами.

RF — флаг возобновления: используется при обработке прерываний от регистров отладки.

VM — флаг виртуального 8086: признак работы процессора в режиме виртуального 8086: 1 – процессор работает в режиме виртуального 8086, 0 – процессор работает в реальном или защищенном режиме.

AC — флаг контроля выравнивания: предназначен для разрешения контроля выравнивания при обращениях к памяти. Если требуется контролировать выравнивание данных и команд по адресам, кратным 2 или 4, то установка данных битов приведет к тому, что все обращения по некратным адресам будут вызывать исключительную ситуацию.

VIF — флаг виртуального прерывания: при определенных условиях (одно из которых – работа микропроцессора в V-режиме) является аналогом флага IF . Флаг VIF используется совместно с флагом VIP .

VIP — флаг отложенного виртуального прерывания: устанавливается в 1 для индикации отложенного прерывания. Используется совместно с VIF в виртуальном режиме.

ID — флаг поддержки идентификации процессора: используется для отображения поддержки микропроцессором инструкции CPUID .

Структура микропроцессора

Упрощенно структуру микропроцессора можно представить в следующем виде:


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

Основные функции показанных узлов следующие:

Схема управления выборкой команд выполняет чтение команд из памяти и их дешифрацию. В первых микропроцессорах было невозможно одновременное выполнение предыдущей команды и выборка следующей команды, так как процессор не мог совмещать эти операции. Но уже в 16-разрядных процессорах появляется так называемый конвейер (очередь) команд, позволяющий выбирать несколько следующих команд, пока выполняется предыдущая. Два процесса идут параллельно, что ускоряет работу процессора. Конвейер представляет собой небольшую внутреннюю память процессора, в которую при малейшей возможности (при освобождении внешней шины) записывается несколько команд, следующих за исполняемой. Читаются эти команды процессором в том же порядке, что и записываются в конвейер (это память типа FIFO, First In — First Out, первый вошел — первый вышел). Правда, если выполняемая команда предполагает переход не на следующую ячейку памяти, а на удаленную (с меньшим или большим адресом), конвейер не помогает, и его приходится сбрасывать. Но такие команды встречаются в программах сравнительно редко.

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

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

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

Арифметическо-логическое устройство

АЛУ - это устройство предназначенное для арифметической и логической обработки данных. В общем случае выглядит так


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

Рег А хранит первый операнд, В – второй операнд до записи их в оперативную память.

Различают 2 типа операционных блоков: )

1) Параллельный (все разряды обрабатываются одновременно и внутренние переносы реализуются внутренними схемами операционного блока)

2) Последовательный (существуют одноразрядные процессы))

Обобщенная схема операционного блока


ФК – формирователь кода

ФПР – формирователь признака результата

УС – управляющие сигналы

Сумматор выполняет операции арифметического сложения, сложения по модулю, логического сложения, логического умножения

ФПР вырабатывает осведомительные сигналы, передаваемые в УУ: признак знака, признак переполнения, признак нулевого значения.

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

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


По отношению к назначению внутренних регистров существует два основных подхода. Первого придерживается, например, компания Intel, которая каждому регистру отводит строго определенную функцию. С одной стороны, это упрощает организацию процессора и уменьшает время выполнения команды, но с другой — снижает гибкость, а иногда и замедляет работу программы. Например, некоторые арифметические операции и обмен с устройствами ввода/вывода проводятся только через один регистр — аккумулятор, в результате чего при выполнении некоторых процедур может потребоваться несколько дополнительных пересылок между регистрами. Второй подход состоит в том, чтобы все (или почти все) регистры сделать равноправными, как , например, в 16-разрядных процессорах Т-11 фирмы DEC. При этом достигается высокая гибкость, но необходимо усложнение структуры процессора. Существуют и промежуточные решения, в частности, в процессоре MC68000 фирмы Motorola половина регистров использовалась для данных, и они были взаимозаменяемы, а другая половина — для адресов, и они также взаимозаменяемы.

В первую группу входят регистры общего назначения. В процессорах 386 и выше имеются восемь 32-битовых регистров общего назначения EAX, EBX, ECX, EDX, ESI, EDI, EBP, и ESP. Процессоры 386 и выше могут обращаться к 16-битовым половинам 32-битовых регистров. При необходимости возможна работа с половинами регистров, поскольку они разделены на старшую и младшую половину, называемые AH и AL, BH и BL и т.д. Такое разделение регистров имеется во всех процессорах. Значительная часть внутренних операций компьютеров производится с использованием регистров общего назначения.

Следующая группа из шести регистров помогает процессору обращаться к памяти. Они называются сегментными регистрами и каждый из них помогает обращаться к области (или сегменту) памяти. В прежних процессорах размер сегментов составлял 64 Кбайт, а в новых процессорах длина сегмента переменная и варьируется от одного байта до 4 Гбайт.

Регистр CS сегмента кода (программы) показывает, в каком месте памяти находится программа. Регистр DS сегмента данных локализует используемые программой данные. Регистр ES дополнительного сегмента дополняет сегмент данных. Регистр SS сегмента стека определяет стек компьютера. В процессорах 386 и выше имеются еще два сегментных регистра: FS и GS, предназначенных для адресации памяти.

Если сегментные регистры обеспечивают доступ к большим блокам памяти, то последняя группа используется совместно с сегментным регистром для локализации в памяти конкретных байтов. Регистр указателя команды IP определяет ту точку, где выполняется программа. Регистры указателя стека SP иуказателя базы BP помогают следить за информацией в стеке (стек — это область памяти, где хранится информация о текущих действиях компьютера). Регистры индекса источника SI и индекса получателя DI помогают программам пересылать большие блоки данных из одного места в другое.

Регистр признаков (регистр состояния) занимает особое место, хотя он также является внутренним регистром процессора. Содержащаяся в нем информация — это не данные, не адрес, а слово состояния процессора (ССП, PSW — Processor Status Word).

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


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

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

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

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

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

Внутренние регистры любого микропроцессора обязательно выполняют две служебные функции:

определяют адрес в памяти, где находится выполняемая в данный момент команда (функция · счетчика команд или указателя команд);

определяют текущий адрес стека (функция · указателя стека ).

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

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

Генератор тактовых импульсов (internal clock) генерирует последовательность электрических импульсов, частота которых определяет тактовую частоту микропроцессора - электронные часы реального времени, обеспечивающие при необходимости автоматический съем текущего момента времени.

Такт работы процессора - промежуток времени между соседними импульсами (tick of the internal clock) генератора тактовых импульсов, частота которых есть тактовая частота процессора. Такт процессора (такт синхронизации) - квант времени, в течение которого осуществляется элементарная операция - выборка, сравнение, пересылка данных. Выполнение короткой команды - арифметика с ФТ, логические операции, обычно занимает пять тактов:

· расшифровка кода операции (декодирование);

· генерация адреса и выборка данных из памяти;

· запись результата в память.

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

Цикл команды

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

Типичная команда содержит:

· код операции (КОП), характеризующий тип выполняемого действия;

· номера индексного (ИР) и базисного (БР) регистров;

· адреса операндов A1, А2 и так далее

2. Осуществляется расшифровка (декодирование) команды.

3. Адреса A1, А2 и пр. помещаются в регистры адреса.

4. Если в команде указаны ИР или БР, то их содержимое используется для модификации РА - фактически выбираются числа или команды, смещенные в ту или иную сторону по отношению к адресу, указанному в команде.

5. По значениям РА осуществляется чтение чисел (строк) и помещение их в РЧ.

6. Выполнение операции и помещение результата в PP.

7. Запись результата по одному из адресов (если необходимо).

8. Увеличение содержимого СчАК на единицу (переход к следующей команде).

Очевидно, что за счет увеличения числа регистров возможно распараллеливание, перекрытие операций. Например, при считывании команды СчАК можно автоматически увеличить на 1, подготовив выборку следующей команды. После расшифровки текущей команды РК освобождается и в него может быть прочитана следующая команда. При выполнении операции возможна расшифровка следующей команды и так далее Все это является предпосылкой построения так называемых конвейерных структур (pipeline). Однако все это хорошо только при последовательном (естественном) порядке выполнения команд. Появление переходов (особенно по не определенному заранее условию) нарушает эту картину. Поэтому современные процессоры пытаются предсказывать переходы в программе (branch prediction).

Системы команд и соответствующие классы процессоров

Основные команды ЭВМ классифицируются вкратце следующим образом: по функциям (выполняемым операциям), направлению приема-передачи информации, адресности.

Классы команд

1. Команды обработки данных, в том числе (01 - первый операнд, 02 - второй):

1.1. Короткие операции (один такт).

- логическое сложение (для каждого бита 01 и 02 осуществляется операция ИЛИ;

- логическое умножение (для каждого бита 01 и 02 осуществляется операция И;

- инверсия (в O1 все единицы заменяются на нули, и наоборот);

- сравнение логическое (если O1 = 02, то некий регистр устанавливается в 1, иначе - в 0).

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

5. Этапы выполнения цикла :

1.
Процессор
выставляет
число,
в регистре счётчика команд, на шину
отдаёт памяти команду чтения;
хранящееся
адреса, и
2.
Выставленное число является для памяти адресом;
память, получив адрес и команду чтения, выставляет
содержимое, хранящееся по этому адресу, на шину
данных, и сообщает о готовности;

6. Этапы выполнения цикла :

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

7. Этапы выполнения цикла :

5.
Снова выполняется п. 1.
Данный цикл выполняется неизменно, и именно он
называется
процессом (откуда и произошло название устройства).

8. Функции процессора

чтение и дешифрация команд из основной памяти;
2. чтение данных из основной памяти и регистров
адаптеров внешних устройств;
3. прием и обработка запросов и команд от адаптеров
на обслуживание внешних устройств;
1.

9. Функции процессора

обработка данных и их запись в основную память и
регистры адаптеров внешних устройств;
5. выработка управляющих сигналов для всех прочих
узлов и блоков компьютера.
4.

10. Состав процессора:

1. Арифметико-логическое устройство;
2. Устройство управления;
3. Микропроцессорная память;
4. Интерфейсная система микропроцессора.

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

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

13. Функциональная схема АЛУ

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

Регистры
— быстродействующие ячейки
памяти различной длины: регистр 1 имеет
разрядность двойного слова, а регистр 2 —
разрядность слова.

Схемы
управления принимают по
кодовым шинам инструкций управляющие
сигналы от устройства управления и
преобразуют их в сигналы для управления
работой регистров и сумматора АЛУ.

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

19. 2. Устройство управления (УУ)

Устройство управления координирует
взаимодействие различных частей компьютера.
Выполняет следующие основные функции:
функции

20. 2. Устройство управления (УУ)

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

21. 2. Устройство управления (УУ)

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

22. Упрощенная функциональная схема УУ

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

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

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

26. 3. Микропроцессорная память

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

27. 3. Микропроцессорная память

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

Все регистры можно разделить на четыре
группы:
1. универсальные регистры: АХ, ВХ, СХ, DX;
2. сегментные регистры: CS, DS, SS, ES;
3. регистры смещения: IP, SP, BP, SI, DI;
4. регистр флагов: FL.

30. Универсальные регистры

Регистры АХ, ВХ, СХ и DX являются
универсальными (их часто называют
регистрами общего назначения — РОН);

31. Универсальные регистры

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

регистр АХ — регистр-аккумулятор, через его порты
осуществляется ввод-вывод данных в МП, а при
выполнении операций умножения и деления АХ
используется для хранения первого числа,
участвующего в операции (множимого, делимого), и
результата операции (произведения, частного) после
ее завершения;

регистр ВХ часто используется для хранения адреса
базы в сегменте данных и начального адреса поля
памяти при работе с массивами;

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

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

Регистры сегментной адресации CS, DS, SS, ES
используются для хранения начальных адресов
полей памяти (сегментов), отведенных в программах
для хранения:
команд программы (сегмент кода — CS);
данных (сегмент данных — DS);
стековой области памяти (сегмент стека — SS);
дополнительной области памяти данных при
межсегментных пересылках (расширенный сегмент —
ES), поскольку размер сегмента в реальном режиме
работы МП ограничен величиной 64 Кбайт.

37. Регистры смещений

Регистры смещений (внутрисегментной адресации) IP,
SP, BP, SI, DI предназначены для хранения
относительных адресов ячеек памяти внутри
сегментов (смещений относительно начала
сегментов):
регистр IP (Instruction Pointer) - смещение адреса
текущей команды программы;

38. Регистры смещений

регистр SP (Slack Pointer) смещение вершины стека
(текущего адреса стека);
регистр BP (Base Pointer) — смещение начального
адреса поля памяти, непосредственно отведенного
под стек;
регистры SI, DI (Source Index и Destination Index
соответственно) предназначены для хранения
адресов индекса источника и приемника данных при
операциях над строками и им подобных.

39. Регистр флагов

Регистр флагов F содержит условные
одноразрядные признаки-маски, или флаги,
управляющие прохождением программы в
ПК; флаги работают независимо друг от
друга, и лишь для удобства они помещены в
единый регистр.

40. Регистр флагов

Всего в регистре содержится 9 флагов: 6 из них
статусные, они отражают результаты операций,
выполненных в компьютере
(их значения используются, например, при выполнении
команд условной передачи управления — команд
ветвления программы), а 3 других — управляющие,
непосредственно определяют режим исполнения
программы.

Статусные флаги:
• AF (Auxiliary Carry Flag) — флаг логического переноса в
двоично-десятичной арифметике.
Вспомогательный флаг переноса устанавливается в 1, если
арифметическая операция приводит к переносу или заему
четвертого справа бита однобайтового операнда.
Этот флаг используется при арифметических операциях над
двоично-десятичными кодами и кодами ASCII;
• ZF (Zero Flag) — флаг нуля. Устанавливается в 1, если
результат операции равен нулю; если результат не равен
нулю, ZF обнуляется;

Статусные флаги:
• SF (Sign Flag) — флаг знака. Устанавливается в соответствии
со знаком результата после арифметических операций:
положительный результат устанавливает флаг в 0,
отрицательный — в 1;
• OF (Overflow Flag) — флаг переполнения. Устанавливается
в 1 при арифметическом переполнении: если возник
перенос в знаковый разряд при выполнении знаковых
арифметических операций, если частное от деления
слишком велико и переполняет регистр результата и т. д.

Управляющие флаги:
• TF (Trap Flag) — флаг системного прерывания
(трассировки). Единичное состояние этого флага
переводит процессор в режим пошагового выполнения
программы (режим трассировки);
• IF (Interrupt Flag) флаг прерываний. При нулевом
состоянии этого флага прерывания запрещены, при
единичном — разрешены;

46. 4. Интерфейсная система процессора

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

Схема управления шиной и портами
выполняет следующие функции:
формирование адреса порта и
управляющей информации для него
(переключение порта на прием или
передачу и т. д.);
прием управляющей информации от
порта, информации о готовности порта и
его состоянии;
организация сквозного канала в системном
интерфейсе для передачи данных между
портом устройства ввода-вывода и МП.

Все микропроцессоры можно разделить
на группы:
микропроцессоры типа CISC с полным
набором системы команд;
микропроцессоры типа RISC с усеченным
набором системы команд;
микропроцессоры типа VLIW со
сверхбольшим командным словом;
микропроцессоры типа MISC с
минимальным набором системы команд и
весьма высоким быстродействием и др.

Архитектура компьютеров первого поколения - это типичная фон-Неймановская архитектура. Команды и данные представляются в двоичном коде. Выполняемая программа и оперативные данные выполняемой программы хранятся в оперативной памяти (ОЗУ). Постояное запоминающее устройство (ПЗУ) используется для хранения постоянных данных и программ. Так, например, в ПЗУ хранятся служебные программы, обеспечивающие взаимодействие оператора (пользователя) с компьютером при помощи устройств ввода-вывода ( УВВ) и устройства управления (УУ). При вводе и выводе данных в компьютерах первого поколения процессор простаивает. Среди устройств ввода-вывода важное место занимает пульт управления, предназначенный для оператора. Оператор может прервать выполнение программы, внести необходимые изменения, и вновь выполнить программу или перейти к решению другой задачи. Пульт управления связан с процессором при помощи устройства управления, формирующего необходимые управляющие сигналы. Условно структура компьютера первого поколения представлена на рисунке 1.1.

Рис.1.1. Архитектура компьютера первого поколения.

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

Мультиплексный канал обеспечивает обмен с однородными устройствами (терминалами). Обслуживается несколько медленных устройств одновременно.

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

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

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

Процессор занимает центральное место в структуре ЭВМ, так как он осуществляет управление взаимодействием всех устройств, входящих в состав ЭВМ.

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

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

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

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

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

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

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

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

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

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

Местная память выполняется главным образом на быстродействующих полупроводниковых интегральных ЗУ.

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

Рис 1.3 Блок-схема процессора Intel 80286

Устройство управления.

Структура УУ определяется важнейшей характеристикой процессора – адресностью машинных команд. Рассмотрим структуру УУ для двухадресных команд и взаимодействие его элементов в процессе функционирования:

УВв, УВыв, внешняя память, АЛУ


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

Блок выборки из памяти по сигналу считывает из ОЗУ по адресу А, который выбирается из счетчика адреса команд (связь 8), очередную команду (связь 2) и помещает ее на временное хранение в регистр команд (связь 3).

Дешифратор кода операции выбирает код (связь 4) и расшифровывает его. Затем передает информацию блоку формирования управляющих сигналов (связь 10):

· если операция арифметическая, от блока формирования управляющих сигналов поступает сигнал в блок выборки из памяти (связь 5) с командой считать из ОЗУ операнды, расположенные по адресам, указанным в регистрах первого и второго операндов (связь 6), и поместить их в соответствующие регистры АЛУ (о структуре АЛУ см. в п. 9.3). Затем формируется сигнал в АЛУ на выполнение нужной операции (связь 7). Счетчик адреса команд увеличивается на объем команды (связь 9);

· если операция ввода-вывода, блок формирования управляющих сигналов формирует сигнал УВв и УВыв (связь 7). Счетчик адреса увеличивается на объем команды (по связи 9);

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

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

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

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

Регистры, доступные пользователю. Эти регистры позволяют программисту сократить число обращений к основной памяти, оптимизируя использование регистров с помощью машинного языка или ассемблера. В состав языков высокого уровня входят оптимизирующие компиляторы, построенные на алгоритмах, которые, в частности, позволяют определить, какие переменные следует заносить в регистры, а какие — в основную память. Некоторые языки высокого уровня, такие, как С, предоставляют программисту возможность предложить компилятору хранить те или иные данные в регистрах.

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

Основные группы команд МП.

По характеру операций различают следующие группы команд:

A. команда арифметических операций для чисел с ПТ и ФТ.

B. команда десятичной арифметики.

C. команда логических операций.

D. команда передачи кодов.

E. команда операций ввода/вывода.

F. команда управления порядком исполнения команд (передача управления).

G. команда управления режимом работы.

Рассмотрим особенности некоторых групп команд.

Команды передачи управления

Для определения адреса текущей команды МП имеет в своем составе специальный регистр указатель адреса команды или счетчик команд PC, IP.

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

· n команды перехода

· n команды замещения

· n команды смены состояния процессора

· n команды запроса прерывания

1. команды перехода.

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

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

1.1 Команды безусловного перехода


Переход может осуществляться и переход по косвенному адресу

На косвенную адресацию указывает либо КОП, либо специальный бит в поле команды

1.2 Команды условного перехода

Адрес следующей команды зависит от выполнения некоторого условия:


М- код признака ( маска условия )

Команды могут быть с относительной и косвенной адресацией.


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

1.3 Команды вызова подпрограмм

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

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


1.4 команды замещения.

Команда замещения - вместо очередной команды используется замещающая команда, находящаяся по адресу, указанному в команде “выполнить”. Выполнение этой замещающей команды не должно приводить к изменению РС. После исполнения этой команды продолжается естественный ход программы (это не JMP).

Команда “выполнение” - аналог подпрограммы, состоящей из одной команды без сохранения адреса возврата.

Читайте также: