Горнец Н.Н., Рощин А.Г. Организация ЭВМ и систем (2006) (1186251), страница 24
Текст из файла (страница 24)
Для учета таких условий в микрокоманде предусматривают поле условия перехода. Оно формирует номер осведомительного сигнала, значение которого анализируется при формировании исполнительного адреса следующей микрокоманды. Обычно, если это поле содержит нуль, то условия не проверяются и адрес следующей микрокоманды определяется только адресной частью текущей микрокоманды. Если это поле содержит единицу, то выполняется условный переход к микрокоманде с адресом Амк — — А + Х, где Х вЂ” указывает на наличие или отсутствие соответствующего осведомительного сигнала. Принудительную адресацию микрокоманд отличает высокое быстродействие и универсальность, но она требует значительной емкости микропрограммной памяти, так как каждая микрокоманда содержит адресную часть.
При естественной адресации адрес следующей микрокоманды всегда на единицу больше адреса текутцей микрокоманды. Пря последовательном характере микропрограммы отпадает необходимость в наличии адресной части в микрокоманде. При естественном порядке следования микрокоманд для вызова очередной михрокоманды из памяти нужен простой счетчик. Но для организа- 130 ции переходов в микропрограмму должны бьггь добавлены специльные микрокоманды условного и безусловного переходов. В последнее время в качестве устройств микропрограммной „амяти все чаще используют флэш-память, допускающую запись новой и изменение хранящейся в ней информации. Этим достигатся возможность «настройки» параметров.
Загружаемая микропрограммная память позволяет расширять или изменять систему команд, что необходимо при изготовлении проблемно-ориентированных или специализированных компьютеров. 5.7. Методы и средства повышения производительности процессоров персональных компьютеров Принципы, на которых строится работа процессора, предполагают строго последовательное выполнение всех операций. Но такой процессор не может обладать большой производительностью из-за последовательного характера выполнения операций, поэтому в современных компьютерах используют множество приемов, призванных повысить производительность компьютеров— от использования средств низкоуровневого параллелизма до построения многопроцессорных и многомашинных систем.
В этом подразделе рассмотрим некоторые наиболее распространенные методы повышения производительности процессоров, находящие применение в персональных компьютерах. К числу этих методов относятся: конвейерная обработка; суперскалярная обработка; переименование регистров; динамическое прогнозирование условных переходов; сопроцессирование. Конвейерная обработка информации. Конвейеризация команд— один из признанных принципов повышения производительности компьютера. Он находит применение не только в персональных компьютерах, но и в ЭВМ общего назначения. Для выполнения любой команды необходимо устройство, осуществляющее действия в соответствии с ее кодом операции. Для ускорения обработки это устройство выполняют в виде нескольких ступеней, или фаз, причем на каждой ступени производится лишь определенная часть обработки команды.
Это так называемый метод конвейерной обраееаки команд: в каждый момент времени на конвейерном процессоре обрабатывается несколько команд, причем все они находятся на разных стадиях обработки. Приход очередного тактового "мпульса приводит к перемещению обрабатываемых команд на следующую ступень конвейера, полностью выполненная команда 131 покидает конвейер, а на освободившуюся первую ступень подает ся новая команда. Конвейер команд состоит из множества ступеней (так конвей ер в одной из последних моделей процессора РепГ)цпз 1У состоит из 31 ступеней, а в процессоре АМ(3 — из 14), однако для наглял ности и простоты изложения мы рассмотрим работу синхронного конвейера, состоящего из пяти ступеней.
Такие конвейеры были характерны для многих процессоров персональных компьютеров недалекого прошлого. Выполнение типичной арифметической команды в пятиступенчатом конвейере можно разделить на пять этапов: 1) выборка команды — код команды заносится в регистр ко манд; 2) декодирование кода операции — формируются управляющие сигналы; 3) выборка операндов (из регистров) — выбираются операнды, участвующие в выполнении операции и передаются в регистры процессора; 4) собственно выполнение операции — выполнение операции в соответствии с ее кодом; 5) запоминание результата — готовый результат заносится в память или регистры.
При последовательном выполнении команд для реализации программы, состоящей из lс команд, потребуется 5х тактов, а если их выполнять в конвейере, то всего (5 + /с) тактов. Таким образом, пятиступенчатый конвейер обеспечивает ускорение при выполнении программы в 5/с/(5 + /с) раз, но это происходит только при его полной загрузке. Любые команды в таком конвейере выполняются за пять тактов, но результаты очередной команды появляются в каждом такте, если не учитывать время загрузки и выполнения команды переходов.
Результат любой команды будет сформирован только на последней пятой ступени конвейера, т.е. через 5Т(здесь Тозначает период между приходом тактовых сигналов) после загрузки команды в конвейер. За это время в конвейер поступит еще четыре команды. Если первая команда является командой перехода, то следующие четыре уже загруженные в конвейер и начавшие выполнение команды могут оказаться ненужными. Команда перехода нарушает линейный порядок следования команд и требует перезагрузки конвейера. Таким образом, команды переходов снижают эффективность обработки, приводя к приостановкам конвейера.
Чем больше команд перехода, тем чаще возникает перезагрузка конвейера и тем меньше производительность. Пустыя — число ступеней командного конвейера, а и — среднее число команд между двумя соседними командами переходоа 132 (средняя длина линейного участка программы). Выполнение этого линейного участка с помощью конвейера команд завершится за время Т„= Т,+ Т„ где Т, — длительность загрузки конвейера; Т, — длительность обработки.
Считая, что длительность загрузки завершается за один такт, а линейный участок программы выполняется в конвейере за л/и тактов, эффективность конвейера (отношение времени выполнения программы в конвейере ко времени последовательного выполнения той же программы Т„в обычном процессоре) можно оценить как Т„/ Т„= (1/л + 1/щ) На каждой ступени такого конвейера выполняемые действия завершаются за разное время, поэтому подготовленные на одной из ступеней результаты для поддержания синхронного принципа работы должны ожидать завершения обработки на другой.
Следовательно, тактовая частота работы конвейера выбирается так, чтобы завершить выполнение действий на самой продолжительной фазе операции. По этой причине, а также из-за необходимости передавать частичные результаты между различными ступенями конвейера его предельное ускорение будет несколько меньше числа фаз. Построив длинный конвейер, состоящий из множества ступеней, можно еще больше увеличить быстродействие процессора. В длинном конвейере сокращается число вентилей на каждой ступени, поскольку она становится проще, и повышается тактовая частота. Каждая команда разбивается на большее число более коротких фаз, что приводит к незначительному увеличению времени ожидания результатов первой команды, но сокращает время ожидания результатов очередной команды.
Однако в таких длинных конвейерах, если приостанавливается выполнение какой-либо команды, то все последующие команды также приостанавливаются; кроме того, не всякую операцию можно разбить на достаточно большое число независимых фаз. Это вызывает возникновение «пустых» фаз, на которых обработка команды не производится, что значительно снижает производительность такого конвейера.
Суперскалярная обработка. Процессор называют скалярным, если одновременно на ступень декодирования может подаваться лишь по одной команде, а в процессоре предусмотрен единственный конвейер команд. Однако попытки увеличить производительность привели к тому, что в современных микропроцессорах обычно имеется несколько (от двух до четырех) конвейеров, что позволяетпроизводить одновременную обработкубольшего числа команд.
Такие процессоры принято называть суперскалярными. 133 В зависимости от числа используемых конвейеров современ ные суперскалярные процессоры бывают двух- и четырехпотоко выми. Эти названия определяет число потоков одновременно об рабатываемых команд. На рис. 5.10 показана структурная схема наиболее простого классического двухпотокового суперскалярного процессора. Команды из кэш-памяти поступают в буферные регистры, откуда передаются на ступень декодирования кода операции.
Дальнейшее выполнение команды происходит на конвейе ре, который в момент декодирования кода операции оказался свободным. В современных процессорах, предназначенных для персональных компьютеров, эти конвейеры обычно неравноценны, поэтому команда для дальнейшего выполнения передается на тот конвейер, который способен ее выполнить. Ни в одном из суперскалярных процессоров одновременно не может обрабатываться максимальное число команд, на которое он рассчитан, из-за возможных «заторов».
Если по какой-либо причине команда в одном из конвейеров не может выполняться, т.е. возникает «затор», то приостанавливается и выполнение команды в другом конвейере, поскольку все команды должны завершать свое выполнение в строго определенном порядке. Это упрощает структуру суперскалярного процессора, но не эффек- 134 Рис. 5.10. Лвухпотоковый суперскалярный процессор ,вно с точки зрения его производительности, так как произво~тельность определяется средним числом команд, обрабатывамых за один такт, а число команд уменьшается из-за простоев конвейера.