Система обработки и способ ее функционирования

Реферат

 

Изобретение относится к системам обработки информации. Техническим результатом является снижение отрицательного влияния на выполнение команд в запрограммированной последовательности. Система содержит исполнительную схему процессора, включающую в себя один или несколько исполнительных блоков и блок упорядочивания последовательности. Способ описывает работу данного устройства. 2 с. и 13 з.п. ф-лы, 16 ил.

Область техники Изобретение относится к системам обработки информации, в частности к системе обработки и способу ее функционирования.

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

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

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

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

Краткое описание чертежей Пример исполнения настоящего изобретения и его преимущества поясняются в нижеследующем описании и со ссылками на иллюстрирующие его чертежи, на которых представлено следующее: Фиг. 1 - блок-схема процессора для обработки информации в соответствии с предпочтительным вариантом осуществления; Фиг. 2 - блок-схема исполнительного блока с фиксированной запятой, используемого в процессоре по фиг. 1; Фиг. 3 - блок-схема блока упорядочивания последовательности, используемого в процессоре по фиг. 1; Фиг. 4 - концептуальная иллюстрация буфера переупорядочения блока упорядочивания последовательности по фиг. 3; Фиг. 5a-b - иллюстрации различных стадий команд, обрабатываемых процессором по фиг. 1; Фиг. 6 - концептуальная иллюстрация буфера переупорядочения, используемого в процессоре по фиг. 1.

Фиг. 7 - иллюстрация различных стадий четырех команд по фиг. 6; Фиг. 8a-d - концептуальная иллюстрация буферов переименования, используемого в процессоре по фиг. 1; Фиг. 9 - иллюстрация различных стадий четырех команд в ситуации без использования существенных признаков предпочтительного варианта осуществления; Фиг. 10a-d - концептуальные иллюстрации буферов переименования процессора по фиг. 9; Фиг. 11 - блок-схема альтернативного варианта осуществления буферов переименования процессора по фиг. 1; Фиг. 12a-c - концептуальные иллюстрации буфера переупорядочения процессора по фиг. 1; Фиг. 13 - иллюстрация различных стадий пяти команд, показанных на фиг. 12a-c; Фиг. 14a-g - концептуальные иллюстрации буферов переименования процессора по фиг. 1; Фиг. 15 - иллюстрация различных стадий пяти команд, показанных на фиг. 12a-c, в ситуации без использования существенных признаков предпочтительного варианта осуществления; Фиг. 16a-h - концептуальные иллюстрации буферов переименования процессора по фиг. 1 для различных циклов обработки команды, проиллюстрированных на фиг. 15.

Детальное описание Пример осуществления настоящего изобретения и его преимущества поясняются с помощью фиг. 1-16h, где одинаковые номера используются для обозначения одинаковых и соответствующих элементов прилагаемых чертежей.

На фиг. 1 представлена блок-схема процессора 10 системы для обработки информации в соответствии с предпочтительным вариантом осуществления. В предпочтительном варианте процессор 10 выполнен в виде единой интегральной схемы суперскалярного микропроцессора. Соответственно, как описывается далее, процессор 10 содержит различные блоки, регистры, буферы, память и другие элементы, каждый из которых формируется в составе интегральной схемы. Кроме этого, в предпочтительном варианте осуществления процессор 10 работает в соответствии со способом обработки с использованием сокращенного набора команд (RISC). Как показано на фиг. 1, системная шина 11 связана с блоком интерфейса 12 шины процессора 10. Блок интерфейса 12 шины управляет передачей информации между процессором 10 и системной шиной 11.

Блок интерфейса 12 шины связан с быстродействующей памятью (кэшем) команд 14 и с кэшем данных 16 процессора 10. Кэш команд 14 выдает команды на блок упорядочивания 18 последовательности. В ответ на такие команды от кэша команд 14 блок упорядочивания 18 избирательно выдает команды на другие схемы исполнения команд процессора 10.

Кроме блока упорядочивания 18 в предпочтительном варианте осуществления исполнительная схема процессора 10 содержит блоки многократного выполнения, а именно блок ветвления 20, блок фиксированной запятой A (FXUA) 22, блок фиксированной запятой B (FXUB) 24, комплексный блок с фиксированной запятой (CFXU) 26, блок загрузки/хранения (LSU) 28 и блок плавающей запятой (FPU) 30. FXUA 22, FХUB 24, CFXU 26 и LSU 28 вводят информацию их исходного операнда из регистров архитектуры общего назначения (GPR) 32 и из буферов переименования 34 с фиксированной запятой. Более того, FXUA 22 и FXUB 24 вводят "разряд переноса" из регистра бита переноса (CA) 42. FXUA 22, FXUB 24, CFXU 26 и LSU 28 выдают результаты (информацию операнда назначения) их операций для хранения на выбранных входах буфером 34 переименования с фиксированной запятой. Кроме этого, CFXU 26 вводит и выводит информацию исходного операнда и операнда назначения в регистры 40 специального назначения (SPR) и из них.

FPU 30 вводит информацию своего исходного операнда из архитектурных регистров с плавающей запятой (FPR) 36 и из буферов переименования с плавающей запятой 38. FPU 30 выдает результаты (информацию операнда назначения) своей операции для хранения на выбранных входах буферов переименования с плавающей запятой 38.

В ответ на команду загрузки LSU 28 вводит информацию из кэша данных 16 и копирует эту информацию в один из выбранных буферов переименования 34 и 38. Если такая информация не хранится в кэше данных 16, то кэш данных 16 вводит (посредством BIU 12 и системной шины 11) такую информацию из системной памяти 39, связанной с системной шиной 11. Более того, кэш данных 16 имеет возможность выдавать (посредством BIU 12 и системной шины 11) информацию из кэша данных 16 в системную память 39, связанную с системной шиной 11. В ответ на команду Store LSU 28 вводит информацию из одного из выбранных GPR 32 и FPR 36 и копирует эту информацию в кэш данных 16.

Блок упорядочивания 18 последовательности вводит и выводит информацию от GPR 32 и FPR 36 и соответственно выводит ее из этих блоков. Блок ветвления 20 вводит из блока упорядочивания 18 команды и сигналы, указывающие текущее состояние процессора 10. В ответ на такие команды и сигналы блок ветвления 20 выдает (на блок упорядочивания 18 последовательности) сигналы, указывающие соответствующие адреса памяти, в которых хранится последовательность команд для выполнения процессором 10. В ответ на такие сигналы от блока ветвления 20 блок упорядочивания 18 последовательности вводит указанную последовательность команд из кэша команд 14. Если одна или более последовательностей команд не сохранились в кэше команд 14, то кэш команд 14 вводит (посредством BIU 12 и системной шины 11) такие команды из системной памяти 39, связанной с системной шиной 11.

В ответ на команды, введенные из кэша команд 14, блок упорядочивания 18 последовательности избирательно пересылает команды на один из выбранных блоков 20, 22, 24, 26, 28 и 30. Каждый исполнительный блок выполняет одну или более команду из конкретного класса команд. Например, FXUA 22 и FXUB 24 выполняют первый класс математических операций с фиксированной запятой для операндов, таких как сложение, вычитание, операцию AND, операцию OR, операцию XOR. CFXU 26 выполняет второй класс операций с фиксированной запятой для исходных операндов, таких как умножение и деление с фиксированной запятой. FPU 30 выполняет действия с плавающей запятой с исходными операндами, такие как умножение и деление с плавающей запятой.

После запоминания информации в одном из буферов переименования 34 такая информация связывается с ячейкой памяти (например, с одним из регистров GPR 32 или CA 42) в соответствии с командной, для которой назначается выбранный буфер переименования. Информация, хранимая в одном из буферов переименования 34, копируется в связанный с ней один из GPR 32 (или в регистр CA 42) в ответ на сигналы от блока упорядочивания последовательности 18. Как описывается ниже, в соответствии с фиг. 6-10 блок упорядочивания 18 последовательности направляет такую скопированную информацию, хранимую в одном из выбранных буферов переименования 34, в ответ на "завершение" команды, которая сформировала эту информацию. Такое копирование называется "обратной записью".

После запоминания информации в одном из выбранных буферов переименования 38 такая информация связывается с одним из FPR 36. Информация, сохраненная в одном из выбранных буферов переименования 38, копируется в связанный с ней один из FPR 36 в ответ на сигналы от блока упорядочивания 18, который управляет таким копированием информации, запоминаемой в одном из выбранных буферов 38 в ответ на "завершение" команды, которая сформировала эту информацию.

Высокая производительность процессора 10 достигается путем обработки множества команд одновременно в различных исполнительных блоках 20, 22, 24, 26, 28 и 30. Соответственно каждая команда обрабатывается как последовательность стадий, каждая из которых выполняется параллельно с выполнением стадий других команд. Такой способ называется "конвейерной обработкой". В соответствии с важным аспектом предпочтительного выполнения команда обычно обрабатывается как шесть стадий, а именно выборка, декодирование, передача, выполнение, завершение и обратная запись.

На стадии выборки блок упорядочивания 18 избирательно вводит (из кэша команд 14) одну или более команд из одного или более адреса памяти, по которому хранится последовательность команд, рассматриваемых далее в связи с блоком ветвления 20 и блоком упорядочивания 18.

На стадии декодирования блок упорядочивания 18 декодирует до четырех выбранных команд.

На стадии диспетчеризации блок упорядочивания 18 избирательно направляет до четырех декодированных команд на один из выбранных (в ответ на декодирование на стадии декодирования) исполнительных блоков 20, 22, 24, 26, 28 и 30 после резервирования элементов буфера переименования для каждого результата выполнения переданной команды (информация операнда назначения). На этапе диспетчеризации информация операнда передается на выбранные исполнительные блоки для направляемых команд. Процессор 10 направляет команды в порядке, соответствующем запрограммированной последовательности.

На стадии выполнения исполнительные блоки выполняют переданные им команды и выдают результаты (информацию операнда назначения) их работы для сохранения в выбранных элементах буферов переименования 34 и 38 в соответствии с описываемым далее. Таким образом, процессор 10 имеет возможность выполнять команды вне очереди по отношению к их запрограммированной последовательности.

На стадии завершения блок упорядочивания 18 указывает, что команда "завершена" в соответствии с описанным далее со ссылками на фиг. 3-4. Процессор 10 "завершает" выполнение команд в соответствии с их запрограммированной последовательностью.

На стадии обратной записи блок упорядочивания 18 управляет копированием информации из буферов переименования 34 и 38 в GPR 32 и FPR 36 соответственно. Блок упорядочивания 18 управляет таким копированием информации, запоминаемой в выбранном буфере переименования в соответствии с описанным далее со ссылками на фиг. 6-10. Аналогично, в состоянии обратной записи конкретной команды процессор 10 обновляет свои состояния конфигурации в ответ на конкретную команду. Процессор 10 обрабатывает соответствующие стадии "обратной записи" команд в соответствии с их запрограммированной последовательностью. В соответствии с тем, что описывается далее со ссылками на фиг. 6-10, предпочтительно, чтобы процессор 10 в определенных ситуациях совмещал стадии завершения команд и стадии обратной записи.

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

На фиг. 2 представлена блок-схема FXUA (исполнительного блока с фиксированной запятой) 22 процессора 10. FXUA 22 содержит устройства резервирования, обозначенные как 50a и 50b. Аналогично, каждый блок ветвления 20, FXUB 24, CFXU 26, LSU 28 и FPU 30 имеет соответствующие устройства резервирования. Для ясности, далее описывается работа только FXUA 22 и его устройства резервирования в качестве примера работы других блоков и их соответствующих устройств резервирования.

Каждое устройство резервирования 50a-b имеет возможность сохранять информацию для соответствующих команд, переданных от блока упорядочивания 18 последовательности для выполнения в FXUA 22. Каждое устройство резервирования содержит соответствующее поле регистра назначения, поле операнда A, поле операнда B и поле кода операции. Более того, в соответствии с важным аспектом предпочтительного выполнения каждое устройство резервирования далее содержит соответствующее поле разрешения выполнения (EOK).

В своем поле регистра назначения устройство резервирования указывает по меньшей мере один регистр назначения (как определено блоком упорядочивания 18) для соответствующей команды устройства резервирования. Аналогично, в своих соответствующих полях операнда A и операнда B устройство резервирования запоминает информацию об исходном операнде (от GPR 32, от буферов переименования 34, FXUB 24, CFXU 26 или LSU 28) для соответствующей команды устройства резервирования. Устройство резервирования в своем поле операции хранит код операции (в соответствии с тем, что определено блоком упорядочивания 18), указывающий операцию, которая должна быть выполнена FXUA 22 над информацией исходного операнда в ответ на соответствующую команду устройства резервирования.

В ответ на сигналы от логики управления 56 исполнительная логика 54 вводит информацию исходного операнда из полей операндов A и B устройства резервирования и выполняет операцию (указанную запомненным кодом операции устройства резервирования) над ними. Информация, полученная в результате выполнения такой операции, выдается от исполнительной логики 54 на буферы переименования 34, FXUB 24, CFXU 26 и LSU 28. Такая информация сохраняется в одном из выбранных буферов переименования 34. В ответ на указание регистра назначения выходной информацией мультиплексора 58 запомненная информация назначается (в выбранном буфере переименования) одному из GPR 32.

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

Что касается первой ситуации (когда команда теоретически не должна выполняться), процессор 10 обычно выполняет команды умозрительно так, чтобы команды выполнялись вне очереди относительно их запрограммированной последовательности в потоке команд. Соответственно, не обязательно, чтобы результаты выполнения команд (информация операнда назначения) были доступны в соответствии с запрограммированной последовательностью этих команд. Однако процессор 10 записывает результаты выполнения команд обратно в регистры конфигурации (например, GPR 32 и FPR 36) в порядке, соответствующем запрограммированной последовательности команд. Для этой цели процессор 10 имеет буферы переименования 34 и 38 для промежуточного хранения результатов выполнения команд до подходящего момента (т.е. до окончания выполнения всех предыдущих команд без условий исключения) для записи временно хранимых результатов обратно в архитектурные регистры.

Тем не менее, в качестве примера в предпочтительном выполнении некоторые команды действуют на SPR 40 (фиг. 1), причем результаты выполнения команды записываются непосредственно в SPR 40 без временного хранения в буферах переименования. Примером такой команды является команда Move To, в соответствии с которой CFXU 26 перемещает информацию в один из SPR 40 от одного из GPR 32. Как показано на фиг. 1, CFXU 26 связан с SPR 40. Команда Move To немедленно обновляет один из SPR 40 после выполнения. В качестве другого примера результат выполнения команды Store непосредственно записывается в ячейку памяти в кэш данных 16 без временного хранения в буферах переименования.

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

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

В предпочтительном исполнении большинство команд в качестве исходных операндов определяют один или более GPR 32 и FPR 36. Соответственно, в предпочтительном исполнении устройства резервирования включают цепь для продвижения информации от исполнительных блоков.

Несмотря на это, в предпочтительном исполнении устройства резервирования не содержат схем для продвижения информации от исходных операндов других типов, таких как регистр CA 42 или SPR 40. Это происходит по той причине, что размер и цена таких схем не соответствуют частоте команд, которые определяют такие непродвинутые исходные операнды. Вместо этого процессор 10 предпочтительного исполнения задерживает выполнение последовательно выполняемой команды, определяющей по меньшей мере один непродвинутый исходный операнд, до завершения выполнения всех предыдущих команд. В ответ на завершение выполнения всех предыдущих команд эти ненаправленные исходные операнды считываются из одного из определенных архитектурных регистров (например, SPR 40). Примерами таких команд являются (1) расширенная арифметическая операция, которая считывает регистр CA 42, и (2) команда Move From, которая перемещает информацию от одного из SPR 40 в один из GPR 32.

Наконец, процессор 10 задерживает выполнение команды последовательного выполнения, по меньшей мере, до завершения всех предыдущих команд в двух ситуациях. В первой ситуации команда не должна выполняться теоретически. Во второй ситуации команда определяет по меньшей мере один исходный операнд, для которого процессор 10 не включает схемы для продвижения. Предпочтительно, чтобы такие ситуации обрабатывались блоком упорядочивания 18, определяющим информацию EOK, которая должна храниться в устройстве резервирования.

Если команда должна выполняться последовательно, то блок упорядочивания 18 очищает бит EOK (информации EOK, которая хранится в поле EOK устройства резервирования) и устанавливает его в состояние логического "0" во время передачи команды на FXUA 22. После установки бита EOK в состояние логического "0" блок упорядочивания 18 последовательности предотвращает выполнение команды FXUA 22, даже если эта команда готова к выполнению. Соответственно FXUA 22 выполняет такие последовательно выполняемые команды только в ответ на выдачу блоком упорядочивания 18 сигнала по линии 60 в соответствии с тем, что описано далее.

В отличие от вышесказанного, если команда не должна выполняться последовательно, то блок упорядочивания 18 последовательности устанавливает бит EOK в состояние логической "1" во время передачи команды на FXUA 22. Посредством установки бита EOK в состояние логической "1" блок упорядочивания 18 позволяет FXUA 22 выполнять команду, как только информация исходного операнда команды будет правильной и доступной.

На фиг. 3 представлена блок-схема блока упорядочивания 18 последовательности. Как указывалось ранее, на стадии выборки блок упорядочивания 18 выполняет избирательный ввод команд количеством до четырех из кэша команды 14 и сохраняет такие команды в буфере команд 70. На стадии декодирования логика декодирования 72 вводит и декодирует до четырех выбранных команд из буфера команд 70. На стадии диспетчеризации логика диспетчеризации 74 избирательно передает до четырех декодированных команд на выбранный (в ответ на выполнение декодирования на стадии декодирования) один из исполнительных блоков 20, 22, 24, 26, 28 и 30.

На фиг. 4 представлена концептуальная иллюстрация буфера переупорядочения 76 блока упорядочивания 18 последовательности предпочтительного исполнения. Как показано на фиг. 4, буфер переупорядочения 76 имеет шестнадцать входов, соответственно обозначаемых номерами буферов 0-15. Каждый вход имеет пять основных полей, а именно поле "типа команды", поле "количества назначений GPR", поле "количества назначений FPR", поле "завершение" и поле "исключение". Кроме того, поле "типа команды" имеет подполе "исполнительного блока" и подполе "EOK".

Согласно фиг. 3 после того, как логика диспетчеризации 74 передаст команду на исполнительный блок, блок упорядочивания 18 назначает переданную команду соответствующему входу в буфере переупорядочения 76 переданным командам по принципу "первым пришел - первым обслужен" и циклическим образом так, что блок упорядочивания 18 назначает вход 0, за которым следуют последовательно входы 1-15, а затем вновь вход 0. После назначения соответствующему входу переданной команды в буфере переупорядочения 76 логика диспетчеризации 74 выдает информацию, соответствующую переданной команде для хранения в различных полях и подполях назначенного входа буфера переупорядочения 76.

Например, для входа 0 (фиг. 4) буфер переупорядочения 76 указывает, что команда была передана на FXUA 22. Более того, вход 0 указывает, что переданная команда выполняется последовательно так, что EOK = 0 и процессор 10 должен задержать выполнение переданной команды по меньшей мере до тех пор, пока не завершится выполнение всех предыдущих команд. Кроме этого, для входа 1 буфер переупорядочения 76 указывает, что последующая команда должна выполняться последовательно так, что EOK = 0.

В соответствии с другими важными аспектами предпочтительного исполнения вход 0 далее указывает, что переданная команда имеет один GPR регистр назначения (такой, как "количество назначений GPR" = 1), имеет регистры нулевого назначения FPR (такие, как "количество назначений FPR" = 0), еще не завершена (так, что "завершение" = 0) и еще не вызывала исключение (так, что "исключение" = 0).

Исполнительный блок выполняет переданную команду, блок выполнения преобразует вход, назначенный команде в буфере переупорядочения 76. Более конкретно, в ответ на завершение выполнения переданной команды исполнительный блок изменяет поле "завершение" входа (так, чтобы "завершение" = 1). Если исполнительный блок встретит исключение во время выполнения переданной команды, то исполнительный блок изменяет поле "исключение" входа (так, чтобы "исключение" = 1).

Согласно фиг. 3 входы буфера переупорядочения 76 считываются логикой завершения 80 и логикой исключения 82 блока упорядочивания 18 последовательности. Более того, в соответствии с одним из важных аспектов предпочтительного исполнения входы буфера переупорядочения 76 считываются логикой последовательного исполнения 84 блока упорядочивания 18. В ответ на поля "исключения" буфера переупорядочения 76 логика исключения 82 обрабатывает исключительные ситуации, которые встретились во время выполнения переданных команд.

В ответ на поля "завершение" и поля "исключения" буфера переупорядочения 76 логика завершения 80 выдает сигналы логике диспетчеризации 74, логике последовательного выполнения 84, а также буферу переупорядочения 76. Посредством этих сигналов логика завершения 80 указывает "завершение" команд в соответствии с их запрограммированной последовательностью. Логика завершения 80 указывает "завершение" команды, если она удовлетворяет следующим условиям: Условие 1 - исполнительный блок (которому была передана команда) заканчивает выполнение команды (так что "завершение" = 1 для назначенных команде входов в буфере переупорядочения 76); Условие 2 - не возникло никаких исключительных ситуаций в связи с каким-либо состоянием обработки команды (так что "исключение" = 0 для входов, назначенных команде в буфере переупорядочения 76); а также Условие 3 - любая ранее переданная команда удовлетворяет условиям 1 и 2.

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

В соответствии с важным аспектом предпочтительного выполнения, в ответ на сигналы от логики завершения 80, логика последовательного выполнения 84 избирательно выдает сигналы на FXUA 22 по линии 60. Если связанный с переданной на FXUA 22 командой бит EOK (в поле "типа команды" входа, назначенного команде в буфере переупорядочения 76) установлен в состояние логического "0", то логика последовательного выполнения 84 выдает сигнал по линии 60 в ответ на "завершение" всех команд, предшествующих переданной команде. FXUA 22 выполняет такую переданную команду только в ответ на передачу логикой последовательного выполнения 84 сигнала по линии 60. После передачи логикой последовательного выполнения 84 сигнала по линии 60 такой переданной командой (для которой назначенные бит EOK установлен в состояние логического "0") будет самая старая команда, ожидающая выполнения в устройстве резервирования 50a-b FXUA 22, так как команды "завершаются" в соответствии с их запрограммированной последовательностью.

Аналогично, логика последовательного выполнения 84 избирательно выдает сигналы на исполнительные блоки 20, 24, 26, 28 и 30 по линиям 86, 88, 90, 92 и 94, соответствующим образом связанных с ней.

На фиг. 5a-b проиллюстрированы различные стадии команд. Согласно фиг. 5a выполнение (цикл 6) последовательно выполняемой команды INST n+1 (например, команды Move To или команды Move From) задерживается до завершения выполнения всех предыдущих команда (например, до цикла 5 предыдущей команды INST n). Тем не менее, предпочтительно, что процессор 10 не задерживает диспетчеризацию (цикл 3) или выполнение (цикл 4) команды INST n+2, которой предшествует команда последовательного выполнения INST n+1. Таким образом, процессор 10 обеспечивает непрерывную диспетчеризацию команд (таких, как INST n+2), которым предшествует последовательно выполняемая команда (такая, как INST n+1). Кроме этого, исполнительный блок процессора 10 имеет возможность подавать команды вне очереди от устройства резервирования исполнительных блоков на свою исполнительную логику (например, исполнительную логику 54 по фиг. 2), даже если самая старая команда, ожидающая выполнения в устройстве резервирования исполнительного блока, выполняется последовательно.

Процессор 10 в предпочтительном варианте выполнения достигает более высокой производительности, чем в альтернативных случаях. Как показано на фиг. 5b, в соответствии с одним из таких альтернативных способов передача (цикл 8) команды INST i+2 задерживается в ответ на декодирование (цикл 2) команды INST i+1, которая выполняется последовательно. В соответствии с таким альтернативным способом команда передачи команды INST i+2 выполняется только после "завершения" всех ранее переданных команд (например, после цикла 7 выполнения предыдущей последовательно выполняемой команды INST i+1). Узким местом такого альтернативного способа является то, что выполнение задерживается для любой команды (такой, как INST i+2), которой предшествует последовательно выполняемая команда (такая, как INST i+1).

Как указывалось ранее, процессор 10 обеспечивает непрерывную диспетчеризацию команд, которым предшествует последовательно выполняемая команда. Команда Move From является последовательно выполняемой командой и поэтому обеспечивает преимущества от использования способа преобразования в последовательную форму выполнения в варианте предпочтительного осуществления. Кроме того, в соответствии с другим важным аспектом предпочтительного варианта осуществления процессор 10 содержит схемы для вывода результатов (информации операнда назначения) команды Move From для хранения в выбранном буфере переименования перед обратной записью информации операнда назначения в один из GPR 32.

Процессор 10 поддерживает такое переименование независимо от того, является ли регистр назначения команды Move From одним из GPR 32. Таким образом, процессор 10 использует схемы продвижения своих устройств резервирования совместно со схемой поиска буферов переименования для корректного согласования информации операнда назначения (команды Move From) с исходным регистром команды, переданной после команды Move From. Соответственно, другие команды, которым предшествует команда Move From, могут передаваться в любое время после передачи команды Move From. Без использования такой схемы для команды Move From другие команды, которым предшествует команда Move From, не будут передаваться до "завершения" команды Move From, так как для выполнения других команд (в качестве информации их исходного операнда) может потребоваться информация операнда назначения команды Move From.

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

В основном, в ответ на такое выявление выборки команды или исключения, связанного с декодированием, блок упорядочивания 18 передает команду, обусловленную IFDRE, на устройство резервирования исполнительного блока, но одновременно устанавливает бит EOK в состояние логического "0", как указано ранее со ссылкой на фиг. 2-4. Кроме того, блок упорядочивания 18 запоминает указатель условия IFDRE посредством установки "исключение" = 1 (одновременно "завершение" = 0) для входа, назначенного для команды, вызывающей IFDRE в буфере переупорядочения 76. Такой указатель определяет команду как команду, обусловившую IFDRE.

Как указывалось ранее со ссылкой на фиг. 2-4, путем установки бита EOK в логическое состояние "0" блок упорядочивания 18 предотвращает выполнение исполнительным блоком переданной команды, даже если эта команда готова к выполнению. Соответственно, исполнительный блок выполняет такую команду только в ответ на сигнал от блока упорядочивания 18, переданный по одной из соответствующим образом подключенной линии 60, 86, 88, 90, 92 и 94, как указывалось ранее со ссылкой на фиг. 2-4.

В ответ на завершение всех команд, предшествующих команде, обусловившей IFDRE, блок упорядочивания 18 обрабатывает выборку или исключение, связанное с декодированием, вместо того, чтобы передавать сигнал на исполнительный блок посредством одной из соответствующих линий 60, 86, 88, 90, 92 и 94. Таким образом, команда, обусловившая IFDRE, никогда не будет выполнена исполнительным блоком. Блок упорядочивания 18 определяет команду как обусловившую IFDRE в ответ на "исключение" = 1 и "завершение" = 0 для входа, связанного с командой, обусловившей IFDRE, в буфере переупорядочения 76.

Таким образом, процессор 10 упорядочивает и ускоряет передачу команды посредством логики диспетчеризации 74 (фиг. 3), что ускоряет работу критической схемы в суперскалярном процессоре. Соответственно, процессор 10 предпочтительного варианта осуществления достигает более высокой производительности по сравнению с альтернативными вариантами. В соответствии с одним из таких альтернативных способов процессор никогда не передает команду, обусловившую IFDRE. Такой альтернативный способ приводит к сложной и медленной передаче, так как для каждой команды процессору необходимо определить выборку каждой команды и условие исключения, связанное с декодированием, перед определением, куда необходимо передавать команду. Например, в соответствии с таким альтернативным способом процессор определяет, куда необходимо передать n-ую команду в ответ на определение, имела ли n-ая команда или какая-либо более предшествующая (n-1)-ая команда выборку или связанное с декодированием условие исключения.

В отличие от этого в предпочтительном выполнении логика диспетчеризации 74 (фиг. 3) работает независимо от выборки или условий исключения, связанных с декодированием. Даже после принятия решения о промежуточной передаче команды на исполнительный блок для исполнения блок упорядочивания 18 определяет, существует ли условие IFDRE для данной команды. Если блок упорядочивания 18 определит, что условие IFDRE существует для данной команды, то блок упорядочивания 18 выдаст указатель условия IFDRE для запрещения выполнения команды исполнительным блоком. Кроме того, предусматривается выдача на один или несколько выбранных исполнительных блоков исполнительной схемы процессора дополнительного указания начать выполнение переданной последовательно выполняемой команды упомянутыми исполнительными блоками в ответ на завершение выполнения упомянутой команды из конкретного класса команд. Более конкретно, в ответ на определение блоком упорядочивания 18 существования условия IFDRE для данной команды блок упорядочивания 18 выдает так