Таненбаум Э.- Архитектура компьютера. стр.219

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

Слияние цикла интерпретатора с микропрограммой

В микроархитектуре Mic-1 основной цикл состоит из микрокоманды, которая должна выполняться в начале каждой IJVM-команды. В некоторых случаях допустимо ее перекрытие предыдущей командой. В каком-то смысле эта идея уже получила свое воплощение. Вспомните, что во время цикла Mai ni код следующей операции уже находится в регистре MBR. Этот код операции вызывается либо во время предыдущего основного цикла (если у предыдущей команды не было операндов), либо при выполнении предыдущей команды.

Эту идею можно развивать и дальше. В некоторых случаях основной цикл можно свести к нулю. Это происходит следующим образом. Рассмотрим каждую последовательность микрокоманд, которая завершается переходом к Mai ni. Каждый раз основной цикл может добавляться в конце этой последовательности (а не в начале следующей), при этом межуровневый переход дублируется много раз (но всегда с одним и тем же набором целевых объектов). В некоторых случаях микрокоманда микроархитектуры Mic-1 может сливаться с предыдущими микрокомандами, поскольку эти команды используются не всегда полностью.

В табл. 4.4 приведена последовательность выполнения микрокоманд для команды POP. Основной цикл идет перед каждой командой и после каждой команды, в таблице этот цикл показан только после команды POP. Отметим, что выполнение этой команды занимает 4 цикла: три цикла специальных микрокоманд команды POP и один основной цикл.

Таблица 4.4. Новая микропрограмма для выполнения команды POP

Микрокоманда

Операции

Комментарий

рор1

MAR = SP = SP - 1 ; rd

Считывание второго сверху слова в стеке

рор2

 

Ожидание, пока из памяти считается новое значение TOS

рорЗ

TOS = MDR; goto Maini

Копирование нового слова в регистр TOS

Maini

PC = PC + 1; fetch; goto(MBR)

Регистр MBR содержит код операции; вызов следующего байта; переход

В табл. 4.5 последовательность сокращена до трех команд за счет того, что в цикле рор2 АЛУ не используется. Отметим, что в конце этой последовательности сразу осуществляется переход к коду следующей команды, поэтому требуется всего 3 цикла. Этот небольшой трюк позволяет сократить время выполнения

следующей микрокоманды на один цикл, поэтому, например, последующая команда ШО сокращается с четырех циклов до трех. Это эквивалентно повышению частоты синхронизирующего сигнала с 250 МГц (каждая микрокоманда по 4 не) до 333 МГц (каждая микрокоманда по 3 не).

Таблица 4.5. Усовершенствованная микропрограмма для выполнения команды POP

Микрокоманда

Операции

Комментарий

рор1

MAR = SP = SP - 1 ; rd

Считывание второго сверху слова в стеке

Mainl.pop

PC = PC + 1 ; fetch

Регистр MBR содержит код операции; вызов

   

следующего байта

рорЗ

TOS = MDR; goto(MBR)

Копирование нового слова в регистр TOS;

   

переход к коду операции

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


⇐ Предыдущая страница| |Следующая страница ⇒