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

advertisement
Лекция № 5 (Внутренняя организация процессора – 6+2 часов)
Структура микропроцессора
Упрощенно структуру микропроцессора можно представить в следующем виде:
Внутренняя структура микропроцессора.
Основные функции показанных узлов
следующие:
Схема управления выборкой команд выполняет чтение команд из памяти и их
дешифрацию. В первых микропроцессорах было невозможно одновременное
выполнение предыдущей команды и выборка следующей команды, так как процессор
не мог совмещать эти операции. Но уже в 16-разрядных процессорах появляется так
называемый конвейер (очередь) команд, позволяющий выбирать несколько следующих
команд, пока выполняется предыдущая. Два процесса идут параллельно, что ускоряет
работу процессора. Конвейер представляет собой небольшую внутреннюю память
процессора, в которую при малейшей возможности (при освобождении внешней шины)
записывается несколько команд, следующих за исполняемой. Читаются эти команды
процессором в том же порядке, что и записываются в конвейер (это память типа FIFO,
First In — First Out, первый вошел — первый вышел). Правда, если выполняемая
команда предполагает переход не на следующую ячейку памяти, а на удаленную (с
меньшим или большим адресом), конвейер не помогает, и его приходится сбрасывать.
Но такие команды встречаются в программах сравнительно редко.
Развитием идеи конвейера стало использование внутренней кэш-памяти процессора,
которая заполняется командами, пока процессор занят выполнением предыдущих
команд. Чем больше объем кэш-памяти, тем меньше вероятность того, что ее
содержимое придется сбросить при команде перехода. Понятно, что обрабатывать
команды, находящиеся во внутренней памяти, процессор может гораздо быстрее,
чем те, которые расположены во внешней памяти. В кэш-памяти могут храниться и
данные, которые обрабатываются в данный момент, это также ускоряет работу. Для
большего ускорения выборки команд в современных процессорах применяют
совмещение выборки и дешифрации, одновременную дешифрацию нескольких
команд, несколько параллельных конвейеров команд, предсказание команд
переходов и некоторые другие методы.
Арифметико-логическое устройство (или АЛУ, ALU) предназначено для обработки
информации в соответствии с полученной процессором командой. Примерами
обработки могут служить логические операции (типа логического «И», «ИЛИ»,
«Исключающего ИЛИ» и т.д.) то есть побитные операции над операндами, а также
арифметические операции (типа сложения, вычитания, умножения, деления и т.д.).
Над какими кодами производится операция, куда помещается ее результат —
определяется выполняемой командой. Если команда сводится всего лишь к пересылке
данных без их обработки, то АЛУ не участвует в ее выполнении.
Быстродействие АЛУ во многом определяет производительность процессора. Причем
важна не только частота тактового сигнала, которым тактируется АЛУ, но и количество
тактов, необходимое для выполнения той или иной команды. Для повышения
производительности разработчики стремятся довести время выполнения команды до
одного такта, а также обеспечить работу АЛУ на возможно более высокой частоте. Один
из путей решения этой задачи состоит в уменьшении количества выполняемых АЛУ
команд, создание процессоров с уменьшенным набором команд (так называемые 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) генератора тактовых импульсов, частота которых есть тактовая
частота процессора. Такт процессора (такт синхронизации) - квант времени, в
течение которого осуществляется элементарная операция - выборка, сравнение,
пересылка данных. Выполнение короткой команды - арифметика с ФТ, логические
операции, обычно занимает пять тактов:

выборка команды;

расшифровка кода операции (декодирование);

генерация адреса и выборка данных из памяти;

выполнение операции;

запись результата в память.
Процедура, соответствующая такту, реализуется определенной логической цепью
(схемой) процессора, обычно именуемой микропрограммой.
Цикл команды
Цикл выполнения короткой команды может выглядеть следующим образом.
1. В соответствии с содержимым СчАК (адрес очередной команды) УУ извлекает из
ОП очередную команду и помещает ее в РК. Некоторые команды УУ обрабатывает
самостоятельно, без привлечения АЛУ (например, по команде «перейти по адресу
2478» величина 2478 сразу заносится в СчАК, и процессор переходит к выполнению
следующей команды).
Типичная команда содержит:

код операции (КОП), характеризующий тип выполняемого действия;

номера индексного (ИР) и базисного (БР) регистров;

адреса операндов A1, А2 и так далее
2. Осуществляется расшифровка (декодирование) команды.
3. Адреса A1, А2 и пр. помещаются в регистры адреса.
4. Если в команде указаны ИР или БР, то их содержимое используется для
модификации РА - фактически выбираются числа или команды, смещенные в ту или
иную сторону по отношению к адресу, указанному в команде.
5. По значениям РА осуществляется чтение чисел (строк) и помещение их в РЧ.
6. Выполнение операции и помещение результата в PP.
7. Запись результата по одному из адресов (если необходимо).
8. Увеличение содержимого СчАК на единицу (переход к следующей команде).
Очевидно,
что
за
счет
увеличения
числа
регистров
возможно распараллеливание, перекрытие операций. Например, при считывании
команды СчАК можно автоматически увеличить на 1, подготовив выборку следующей
команды. После расшифровки текущей команды РК освобождается и в него может быть
прочитана следующая команда. При выполнении операции возможна расшифровка
следующей команды и так далее Все это является предпосылкой построения так
называемых конвейерных структур (pipeline). Однако все это хорошо только при
последовательном (естественном) порядке выполнения команд. Появление переходов
(особенно по не определенному заранее условию) нарушает эту картину. Поэтому
современные процессоры пытаются предсказывать переходы в программе (branch
prediction).
Системы команд и соответствующие классы процессоров
Основные команды ЭВМ классифицируются вкратце следующим образом: по
функциям (выполняемым операциям), направлению приема-передачи информации,
адресности.
Классы команд
1. Команды обработки данных, в том числе (01 - первый операнд, 02 - второй):
1.1. Короткие операции (один такт).
1.1.1. Логические:
- логическое сложение (для каждого бита 01 и 02 осуществляется операция ИЛИ;
- логическое умножение (для каждого бита О! и 02 осуществляется операция И;
- инверсия (в O1 все единицы заменяются на нули, и наоборот);
- сравнение логическое (если O1 = 02, то некий регистр устанавливается в 1, иначе
- в 0).
1.1.2. Арифметические:
- сложение или вычитание операндов;
- сравнение арифметическое (если O1 > O2, или O1 = O2, или O1 < O2, то некий
регистр устанавливается в 1, иначе - в 0).
1.2. Длинные операции (несколько тактов):
- сложение/вычитание с фиксированной точкой;
- умножение/деление с фиксированной точкой.
2. Операции управления:
- безусловный переход (ветвление, branch);
- условный переход (по условию, результатам вычислений (conditional branch)).
3. Операции обращения к внешним устройствам (требование на запись или
считывание информации).
Естественно, могут существовать и другие операции - десятичная арифметика,
обработкасимвольной информации,
работа
с
числами половинной (полуслово,
например 16 бит) или двойной(двойное слово, например 64 бит) длины.
Кроме того, команды различаются по типу выборки и пересылок данных: регистррегистр; память-регистр (регистр-память); память-память.
Далее, известны одно-, двух- и трехадресные машины (системы команд). Очевидна
связь таких параметров ЦУ, как длина адресного пространства, адресность,
разрядность. Увеличение разрядности позволяет увеличить адресность команды и
длину адреса (то есть объем памяти, доступной данной команде). Увеличение
адресности, в свою очередь, приводит к повышению быстродействия обработки (за
счет снижения числа требуемых команд).
В трехадресной машине, например, сложение двух чисел требует одной команды
(извлечь число по А1, число по А2, сложить и записать результат по A3). В
двухадресной необходимы две команды (первая - извлечь число по А1 и поместить в РЧ
(или сумматор), вторая - извлечь число по А1, сложить с содержимым РЧ и результат
записать по А2). Легко видеть, что одноадресная машина потребует три команды.
Поэтому неудивительно, что основная тенденция в развитии ЦУ ЭВМ состоит в
увеличении разрядности.
Наибольшее применение нашли двухадресные системы команд.
Классы процессоров
В зависимости от набора и порядка выполнения команд процессоры подразделяются
на два основных класса, отражающих также последовательность развития ЭВМ. Ранее
других появились процессоры CISC. Затем с целью повышения быстродействия
процессоров были разработаны процессоры RISC, которые характеризуются
сокращенным набором быстровыполняемых команд. Ряд редко встречающихся команд
процессора CISC выполняется последовательностями команд процессора RISC.
CISC (complex instruction set computer)
CISC (complex instruction set computer) есть традиционная архитектура, в которой
ЦП использует микропрограммы для выполнения исчерпывающего набора команд. В
течение долгих лет производители компьютеров разрабатывали и воплощали в
изделиях все более сложные и полные системы команд. Однако анализ работы
процессоров показал, что примерно 80 % времени выполняется лишь 20 % большого
набора команд. Поэтому была поставлена задача оптимизации выполнения небольшого
по числу, но часто используемых команд.
RISC (Redused Instruction Set Computer)
RISC (Redused Instruction Set Computer) - процессор, функционирующий с
сокращенным набором команд. Так, в процессоре CISC для выполнения одной команды
необходимо в большинстве случаев 10 и более тактов. Что же касается процессоров
RISC, то они близки к тому, чтобы выполнять по одной команде в каждом такте.
Первый процессор RISC был создан корпорацией IBM в 1979 году и имел шифр IBM
801. В настоящее время процессоры RISC получили широкое распространение.
Современные процессоры RISC имеют следующие характеристики:

упрощенный набор команд, имеющих одинаковую длину;

большинство команд выполняются за один такт процессора;

отсутствуют макрокоманды, усложняющие структуру процессора и уменьшающие
скорость его работы;

взаимодействие с оперативной памятью ограничивается операциями пересылки
данных;

уменьшено число способов адресации памяти (не используется косвенная
адресация);

создан конвейер
одновременно;

команд,
позволяющий
обрабатывать
несколько
из
них
используется высокоскоростная память.
Новый подход к архитектуре процессора значительно сократил площадь, требуемую
для него на чипе. Это позволило резко увеличить число регистров. В современном
процессоре RISC уже используется более 100 регистров. В результате процессор на 2030 % реже обращается к оперативной памяти, что также повысило скорость обработки
данных.
Начиная с процессора Pentium, корпорация Intel начала внедрять элементы RISCтехнологий в свои изделия.
Кроме того, известны процессоры MISC (работающие с минимальным набором
длинных команд) и VLIW (с системой команд сверхбольшой разрядности).
Процессор VL1W
Процессор VL1W - процессор, работающий с системой команд сверхбольшой
разрядности.
Идея технологии VLIW (Very large instruction word) заключается в том, что создается
специальный компилятор планирования, который перед выполнением прикладной
программы проводит ее анализ и по множеству ветвей последовательности операций
определяет группу команд, которые могут выполняться параллельно. Каждая такая
группа образует одну сверхдлинную команду. Это позволяет решать две важные
задачи: во-первых, в течение одного такта выполнять группу коротких («обычных»)
команд, во-вторых, упростить структуру процессора. Этим технология VLIW отличается
от суперскалярности. В последнем случае отбор групп одновременно выполняемых
команд происходит непосредственно в ходе выполнения прикладной программы (а не
заранее), что усложняет структуру процессора и замедляет его скорость.
Процессор MISC
Процессор MISC - MISC processor, - работающий с минимальным набором длинных
команд.
Увеличение разрядности процессоров привело к идее укладки нескольких команд в
одно слово (связку, bound) размером 128 бит. Оперируя с одним словом, процессор
получил возможность обрабатывать сразу несколько команд. Это позволило
использовать возросшую производительность компьютера и его возможность
обрабатывать одновременно несколько потоков данных.
Download