Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Лекция №3 Тема: СТРУКТУРА И НАЗНАЧЕНИЕ УПРАВЛЯЮЩЕГО УСТРОЙСТВА ПРОЦЕССОРА ЭВМ1 Управляющие устройства. Назначение. Классификация. Типовая структура Управляющее устройство (УУ), как составная часть процессора ЭВМ, реализует функции управления ходом вычислительного процесса, обеспечивая автоматическое выполнение команд программы. Программа в этом случае представляет собой совокупность команд, выполнение которых в заданной последовательности приводит к решению задачи. Назначение. При выполнении каждой команды УУ осуществляет требуемую организацию работы и синхронизацию всех устройств ЭВМ путем выдачи управляющих сигналов. В процессе выработки управляющих сигналов УУ использует информацию, поступающую от других устройств ЭВМ. Управляющее устройство выполняет специфические функции, которые во многом определяются структурой, назначением и принципами работы конкретного процессора. Вместе с тем среди них можно выделить некоторые функции, характерные для любых типов процессоров: · выработка временного ритма или циклов работы (командный цикл, машинный цикл, машинный такт – рис.1); · управление выборкой команд программы из запоминающего устройства; · управление выборкой данных из запоминающего устройства и записью необходимой информации; · управление выполнением операций в АЛУ; · управление автоматическим вводом данных и выводом результатов; · управление переводом ЭВМ с выполнения одной программы на другую (или внутри программы).
Рис.1. Временная диаграмма: τм – время машинного такта (задается ГТИ); τц – время машинного цикла (этапа выполнения команды); τк – время командного цикла (время выполнения команды)
Классификация. Аналогично АЛУ, управляющие устройства современных ЭВМ, как правило, интегрированы в состав процессора. Соответственно классификация УУ также определяет классификацию процессоров. В общем случае возможна классификация управляющих устройств по специфическим признакам. По принципу организации временной диаграммы (командного цикла) различают синхронные, асинхронные и синхронно-асинхронные УУ. В синхронных УУ командный цикл является постоянным для всех операций и определяется временем выполнения самой длинной команды (рис.2.а). Схемное решение синхронных УУ проще, но быстродействие ниже. В асинхронных УУ командный цикл – переменный. Выполнение очередной команды ki в таких устройствах начинается сразу же после выполнения предыдущей (рис.2.б). Асинхронные УУ являются более быстродействующими, но существенно вырастает сложность их схемных решений. В синхронно-асинхронных УУ объединены достоинства синхронных и асинхронных управляющих устройств, что определило их наибольшее распространение в структурах современных процессоров (рис.2.в). В таких УУ время выполнения отдельных команд может отличаться, но время выполнения отдельного этапа (фазы) команды является постоянным.
a) τк = const
б) τк ≠ const
в) τц = const; τк ≠ const
Рис.2. Временные диаграммы синхронных (а), асинхронных (б), синхронно-асинхронных УУ (в)
В управляющих устройствах реализуются различные способы формирования управляющих сигналов. По этим способам, как определяющим признакам, различают УУ с жесткой структурой или аппаратурной логикой управления (схемное формирование управляющих сигналов) и УУ с микропрограммным управлением или гибкой логикой управления (микропрограммное формирование управляющих сигналов). В зависимости от количества адресов, указываемых в кодах команд, различают одно-, двух-, трех- и четырехадресные управляющие устройства (рис.3).
а)
б) в)
г) д) Рис.3. Структура команд: четырехадресной (а); трехадресной (б); безадресной (в); двухадресной (г); одноадресной (д)
При этом максимальная используемая адресность команд в конкретном УУ допускает использование операций с меньшим количеством адресов, в том числе и безадресных. В общем случае адреса в команде необходимы для указания: ячеек памяти, содержащих два операнда, участвующих в операции; ячейки, в которую помещается результат операции; ячейки, содержащей следующую команду. Наиболее простыми, в смысле аппаратной реализации, являются одноадресные УУ. Однако программы, состоящие из одноадресных команд, оказываются наиболее длинными, требующими большого времени для выполнения. Самые короткие программы могут быть написаны с использованием четырехадресных команд, но здесь существенно вырастает сложность аппаратуры УУ. В современных процессорах применяют, как правило, двух-, одноадресные команды и их модификации. Типовая структура УУ. Структуру управляющего устройства определим исходя из его назначения и указанных выше основных выполняемых им функций (рис.4). Для упрощения изложения примем предположение об использовании в процессоре ЭВМ одноадресных команд.
Рис.4. Упрощенная структура управляющего устройства
Счетчик команд или по принятой терминологии РС (Program Counter) – обязательный функциональный узел любого управляющего устройства ЭВМ, построенной в соответствии с принципом программного управления. Согласно этому принципу соседние команды программы располагаются в ячейках памяти с возрастающими по порядку адресами и выполняются преимущественно в той же очередности, в какой они размещены в памяти ЭВМ. Таким образом, адрес очередной команды может быть получен путем увеличения адреса ячейки памяти, из которой была считана текущая команда, на длину выполняемой команды в байтах – Lк. Реализацию такого режима предназначен выполнять счетчик РС, в котором хранится и модифицируется (при необходимости) адрес очередной команды программы. Перед началом выполнения программы в РС заносится адрес ячейки основной памяти, где хранится команда, которая должна быть выполнена первой. Далее в процессе вычислений содержимое РС увеличивается на длину выполняемой команды и в нем формируется адрес следующей в программе команды. Для случая, когда команда занимает ячейку памяти величиной в байт, содержимое РС после выполнения очередной команды увеличится на единицу – «+1». При необходимости изменения естественного порядка вычислений в РС заносится адрес точки перехода в программе из регистра IR. Регистр команды или Instruction Register (IR) предназначен для приема и хранения в течение всего времени выполнения кода текущей команды программы. Загрузка регистра IR завершает этап выборки команды из основной памяти. Начиная с этого момента, команда становится «видимой» для процессора. Любая команда содержит два поля: поле кода операции и поле адресной части (для одноадресной команды – КОп и Ак соответственно). Указанные поля загружаются и хранятся в определенных местах IR. Если команда занимает несколько последовательных ячеек памяти, то код операции всегда находится в том слове команды, которое извлекается из памяти первым. При этом в коде операции всегда содержится указание о длине команды в байтах – LК. Непосредственное выполнение команды (исполнительный этап или фаза) начинается только после занесения в IR полного ее кода. Указатель стека или Stack Pointer (SP) – это регистр, где хранится адрес вершины стека. На практике стек обычно реализуется в виде участка основной памяти, расположенной, как правило, в области наибольших адресов. Заполнение стека происходит в сторону уменьшения адресов, при этом вершина стека – это ячейка, куда была произведена последняя во времени запись. Для хранения адреса этой ячейки и предназначен регистр SP. При выполнении операции push (занесение в стек) содержимое SP предварительно уменьшается на единицу – «-1», после чего используется в качестве адреса, по которому производится очередная запись. Считывание из стека – операция pop – происходит из ячейки, на которую указывает текущий адрес в SP, после чего содержимое указателя стека увеличивается на единицу – «+1», а считанное слово считается удаленным из стека. Регистр адреса памяти или Memory Adress Register (MAR) предназначен для хранения адреса ячейки основной памяти вплоть до завершения операции (чтения или записи) с этой ячейкой. При чтении из памяти команды, загрузка адреса в MAR выполняется из РС или SP. Если в MAR адрес загружается из IR, то считанное из основной памяти содержимое ячейки является операндом, который через регистр MDR пересылается в АЛУ. Регистр данных памяти или Memory Data Register (MDR) предназначен для приема данных, считываемых или записываемых в память. Одной из важных функций этого регистра является возможность компенсации разницы в быстродействии устройств памяти и устройств, выступающих в качестве источников и потребителей данных (операндов и команд). Считанная из основной памяти по заданному в MAR адресу команда через MDR заносится в IR. Дешифратор команд и формирователь управляющих сигналов является центральным узлом управляющего устройства. Дешифратор кода операции, входящий в его состав, преобразует КОп в форму, необходимую для работы микропрограммного автомата (МПА). МПА формирует последовательность управляющих сигналов. При этом способ формирования управляющих сигналов определяется организацией МПА. Исходной информацией для МПА служат: декодированный КОп; состояние признаков (регистр флагов FLAGS в АЛУ), характеризующих результат предшествующих вычислений; некоторые другие сигналы. 2. Команды процессоров. Кодирование команд
Команды процессоров. Все возможные действия, выполняемые в ЭВМ под управлением и при непосредственном участии процессора, могут быть сведены к основным видам: · пересылка данных между устройствами памяти и регистрами процессора; · арифметические и логические операции над данными; · управление последовательностью выполнения программ и команд; · операции ввода-вывода; · управление работой периферийных устройств. Преобразование данных, а, следовательно, в конечном итоге, решение задачи выполняется автоматически путем программного управления. Программа же, как отмечалось ранее, представляет собой совокупность команд, выполняемых в заданной последовательности. Следовательно, необходимо определить понятие команды или операции. Команда представляет собой код, определяющий тип выполняемой операции и данные, участвующие в операции. Команда содержит также в явной или неявной форме информацию об адресе, по которому размещается результат операции, а также об адресе следующей команды. В команде, как правило, содержатся не сами данные или операнды, а информация об адресах ячеек устройств памяти или регистров, в которых они находятся. Формат команды в общем случае можно представить состоящим из нескольких частей или полей, имеющих определенное функциональное назначение. Чаще всего выделяют операционную и адресную части команд, при этом они, что особенно характерно для адресной части, могут состоять из нескольких полей. Операционная часть команды определяет тип выполняемой операции и обычно обозначается КОп. Адресная часть команды указывает адреса (адрес) операндов, участвующих в операции, а иногда адреса для размещения результата и следующей команды. Адресная часть или адресный код обычно обозначают АК. Таким образом, под форматом команды будем понимать ее структуру с указанием номеров разрядов (бит), задающих границы отдельных полей команды (рис.5).
23 … 16 15 … 8 7 … 0
Рис.5. Формат трехбайтовой двухадресной команды
В ранних моделях ЭВМ формат команд определялся размером машинного слова. По мере появления и разработки дополнительных средств модификации адресной части команды оказалось возможным разработать и использовать команды с переменной длиной, в том числе с переменной длиной отдельных ее полей. Кодирование команд процессоров. В современных ЭВМ значительно выросло число выполняемых операций или команд и значительно увеличилась емкость адресуемой основной памяти. Действительно, число двоичных разрядов, выделяемых под код операции должно быть таким, чтобы можно было представить все выполняемые машинные операции, определяемые системой команд. Если в ЭВМ выполняется М различных операций, то число разрядов nКОп в коде операции должно быть nКоп ≥ log2 M (1) Например, при М = 250 наименьшее число разрядов в коде операции должно быть равно восьми (nКОп = 8). С другой стороны, если ОП содержит N адресуемых ячеек памяти (байт), то для представления только одного адреса (адреса первого операнда) необходимо иметь адресное поле ≥ log2N (2) Например, при N = 256 Мбайт, = 28. Вместе с тем, в целях упрощения аппаратуры и повышения быстродействия ЭВМ длина формата команды должна быть согласована с длиной обрабатываемых машинных слов (операндов), чтобы для операндов и команд можно было эффективно использовать одни и те же устройства памяти и аппаратные средства обработки данных. Формат команды должен быть по возможности короче, укладываться в машинное слово или полуслово. Указанные обстоятельства привели к необходимости разработки и применения методов уменьшения формата команды. Прежде всего, здесь следует отметить методы, основанные на совершенствовании аппаратуры процессора и, как следствие, на разработке и применении специальных способов адресации команд и данных. Итак, становится понятным, для того, чтобы процессор мог выполнить команду, ее необходимо закодировать в компактном двоичном формате. Именно в таком виде команды можно называть машинными командами. Рассмотрим в качестве примера особенности кодирования команд для процессоров архитектуры RISC (Reduced Instruction Set Computer – компьютер с сокращенным набором команд) и архитектуры CISC (Complex Instruction Set Computer – компьютер с полным набором команд). Примером архитектуры RISC является система команд процессора ARM (Advanced RISC Machines). Компания ARM занимается разработкой процессоров для сравнительно недорогих и не самых мощных встраиваемых систем (мобильные телефоны, коммуникационные модемы, системы управления автомобилями, карманные компьютеры и т.п.). В архитектуре процессоров ARM память адресуется побайтно, с помощью 32-х разрядных адресов, а регистры процессора имеют длину 32 разряда. Доступ к памяти выполняется только с применением команд чтения и записи. Все арифметические и логические команды оперируют лишь данными, находящимися в регистрах процессора. Такая схема наиболее характерна для архитектуры RISC. Регистры процессора, предназначенные для использования программами, представлены на рис.6. Всего имеется шестнадцать 32-х разрядных регистров с именами от R0 до R15. Регистры от R0 до R14 являются регистрами общего назначения (РОН), R15 – регистром счетчиком команд (РС). В РОН могут храниться как адреса памяти, так и данные (операнды). В регистре текущего состояния программы CPSR (Current Program Status Register), обычно называемом просто регистром состояния, содержатся флаги (признаки) кодов условий: N(negative) – устанавливается в 1, если результат отрицательный, в противном случае – в 0; Z(zero) – устанавливается в 1, если результат равен 0, в противном случае – в 0; V(overflow) – устанавливается в 1, если в результате арифметической операции произошло переполнение, в противном случае – в 0; C(carry) – устанавливается в 1, если в ходе выполнения операции был выполнен перенос 1 из знакового разряда, в противном случае – в 0, флаги запрещения прерываний и биты состояния процессора. Помимо регистров, указанных выше, существует 15 дополнительных РОН, называемых запасными (banked). Они дублируют некоторые из основных РОН и используются, когда процессор переключается в режим супервизора или передает управление программе обработки прерываний. Каждая команда в архитектуре ARM кодируется 32-разрядным словом. Кодировка команд унифицирована. Типовой формат команды показан на рис.7. В команде задается код условного выполнения («Условие»), КОп, два или три регистра (кодами указываемыми в полях − Rn, Rd, Rm) и некоторая другая информация. Если регистр Rm не используется, поле «Другая информация» расширяется до 0-го бита (b0). Например, посредством команды Load операнд пересылается из памяти в регистр РОН, указанный в 4-разрядном поле Rd. Исполнительный адрес операнда в памяти определяется путем прибавления или вычитания (определяется КОп) к содержимому или из содержимого регистра Rd величины смещения, которая должна быть задана в поле с b11 по b0. Если операнд имеет длину 1 байт, то он записывается в младший байт регистра Rd, а старшие разряды этого регистра заполняются нулями.
Рис.6. Регистры процессора ARM
Рис.7. Формат команды процессора ARM
Отличительной возможностью процессоров ARM является то, что все его команды большей частью выполняются условно, с учетом заданного в команде «условия». Команда действительно выполняется лишь в том случае, если флаги текущего состояния удовлетворяют условию, заданному в разрядах b31-28. В противном случае процессор переходит к выполнению следующей команды. Один из разрядов указывает, что команда будет выполняться всегда. Основным методом адресации операндов в памяти является формирование исполнительного адреса операнда путем добавления к значению адреса, заданного в базовом регистре Rn, значения смещения со знаком. Смещение либо непосредственно задается в 12-ти младших разрядах команды (b11-0), либо содержится в третьем регистре − Rm, указанном в четырех младших разрядах команды, b3-0. Знак (направление) смещения задается в поле КОп. Таким образом, для рассмотренной в качестве примера команды загрузки Load (мнемоническое обозначение LDR) возможны три варианта выполнения: а) LDR Rd, [Rn, # смещение] смещение (число со знаком) задано в режиме непосредственной адресации. Эта команда выполняет операцию Rd ← [ [Rn] + смещение]; б) LDR Rd, [Rn, Rm] смещение – задано в режиме базовой (относительной) адресации Rd ← [ [Rn] + [Rm] ]; в) LDR Rd, [Rn] в команде определено нулевое смещение и, следовательно, операция выполняется как Rd ← [ [Rn] ], используя при этом режим косвенной адресации. Примером архитектуры CISC является система команд процессоров IA-32 Pentium. Все процессоры корпорации Intel имеют общее название Intel Architecture (IA). Мы же кратко остановимся на рассмотрении процессоров, которые работают с 32-разрядными адресами памяти и 32-разрядными данными и носят имя Pentium. Процессоры данного типа имеют ряд: Pentium (1993 г.), Pentium PRO (1995 г.), Pentium II (1997 г.), Pentium III (1999 г.) и Pentium IV (2000 г.). Набор команд процессоров IA-32 очень большой, причем последние члены ряда Pentium поддерживают специализированные команды для управления мультимедийной графической информацией и обработки векторных данных. В архитектуре процессоров IA-32 память адресуется побайтно, при помощи 32-разрядных адресов, а команды работают с операндами размером 8 и 32 разряда. В терминологии Intel эти размеры определяют байт и двойное слово. Регистры процессора IA-32 показаны на рис.8. Обычно восемь 32-разрядных регистров R0-R7 являются РОН и используются для хранения данных или операндов и адресов. Регистры FP0-FP7 имеют размер в 64 разряда и дополнительное поле расширения, с учетом которого их размер может составлять 80 бит. Эти регистры предназначены для размещения в них чисел в формате с плавающей запятой.
Рис.8. Регистры процессоров IA-32
Архитектура IA-32 основана на модели памяти, в которой ее различные области, называемые сегментами, имеют разное назначение. Сегмент кода (CS) содержит адреса команд программы, сегмент стека (SS) – стек процессора. Четыре сегмента данных предназначены для хранения адресов операндов. Другими словами, в шести сегментных регистрах хранятся значения чисел (селекторов), используемых для идентификации указанных сегментов в адресном пространстве памяти. 32-разрядные адреса в архитектуре IA-32 часто применяются для доступа к тем областям памяти, в которых размещается сама программа, стек процессора и области данных. Регистр указатель (счетчик) команд IP (PC) задает адрес следующей выполняемой команды программы. Регистр состояния EFLAGS, аналогичен по назначению регистру CPSR процессора ARM. В этом регистре хранятся флаги кодов условий – CF, ZF, SF, OF (CF – carry – перенос, ZF – zero –нуль, SF – sign – знак, OF – overflow – переполнение), а также биты режима выполнения программы (IOPL, OF, IF), связанные с операциями ввода-вывода и прерываниями. Общий формат машинных команд процессоров IA-32 показан на рис. 9.
Рис.9. Формат команды IA-32
Команды имеют переменную длину – от 1 до 12 байт и могут включать до четырех полей. Команды длиной в 1 байт содержат только обязательное поле КОп. Как правило, длина этого поля составляет 1 байт, иногда – 2 байта. Информация о режиме адресации содержится в одном или двух байтах. В тех командах, где для формирования исполнительного адреса операнда используется только один регистр, поле режима адресации имеет длину 1 байт. Второй байт нужен для кодирования базовой и индексной адресации, а также адресации, называемой базовой индексной со смещением. Если для вычисления исполнительного адреса операнда требуется указать смещение, то его значение записывается в один или два байта соответствующего поля формата команды. Если один из операндов задается непосредственно, он помещается в последнем поле команды. Другой операнд должен находится в регистре процессора. Для ряда простых (коротких) команд длиной в один или два байта код используемого регистра задается прямо в КОп. Однако для большинства команд и режимов адресации регистры задаются в поле режима адресации. Во многих системах команд в тех случаях, когда таковые имеют переменную длину, в начале двоичного представления команды должна быть задана ее длина. Связано это с тем, что последовательные команды располагаются в памяти друг за другом, без указания границ между ними. Указанное обстоятельство является существенным фактором, который необходимо учитывать при обсуждении вопроса организации выборки команд программы из памяти.
Контрольные вопросы 1. По каким основным признакам выполняется классификация УУ? 2. Охарактеризуйте основные функции УУ. 3. Назовите структуру типового УУ и охарактеризуйте назначение его основных узлов. 4. Определите понятие команды, формата команды, а также назначение отдельных ее полей. 5. Поясните особенности кодирования команд архитектуры RISC. 6. Поясните особенности кодирования команд архитектуры CISC на примере IA-32.
Дата добавления: 2014-10-17; просмотров: 1360; Нарушение авторских прав Мы поможем в написании ваших работ! |