Патент на изобретение №2271035

Published by on




РОССИЙСКАЯ ФЕДЕРАЦИЯ



ФЕДЕРАЛЬНАЯ СЛУЖБА
ПО ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ,
ПАТЕНТАМ И ТОВАРНЫМ ЗНАКАМ
(19) RU (11) 2271035 (13) C2
(51) МПК

G06F9/38 (2006.01)

(12) ОПИСАНИЕ ИЗОБРЕТЕНИЯ К ПАТЕНТУ

Статус: по данным на 12.01.2011 – прекратил действие

(21), (22) Заявка: 2002122402/09, 17.01.2001

(24) Дата начала отсчета срока действия патента:

17.01.2001

(30) Конвенционный приоритет:

21.01.2000 US 09/489,130

(43) Дата публикации заявки: 27.02.2004

(45) Опубликовано: 27.02.2006

(56) Список документов, цитированных в отчете о
поиске:
ЕР 0827071 А1, 04.03.1998. RU 2029359 C1, 20.02.1995. US 5961639 А, 05.10.1999. US 5584031 А, 10.12.1996.

(85) Дата перевода заявки PCT на национальную фазу:

21.08.2002

(86) Заявка PCT:

US 01/01392 (17.01.2001)

(87) Публикация PCT:

WO 01/53935 (26.07.2001)

Адрес для переписки:

129010, Москва, ул. Б. Спасская, 25, стр.3, ООО “Юридическая фирма Городисский и Партнеры”, пат.пов. Ю.Д.Кузнецову, рег.№ 595

(72) Автор(ы):

МАРР Дебора Т. (US),
РОДЖЕРС Дион (US)

(73) Патентообладатель(и):

ИНТЕЛ КОРПОРЕЙШН (US)

(54) СПОСОБ И УСТРОЙСТВО ДЛЯ ПРИОСТАНОВКИ РЕЖИМА ВЫПОЛНЕНИЯ В ПРОЦЕССОРЕ

(57) Реферат:

Изобретение относится к области вычислительной техники. Технический результат заключается в уменьшении энергопотребления. Описаны способ и устройство для приостановки выполнения команд в процессоре. В одном варианте команда «пауза» реализуется в виде двух команд или микрокоманд: команды УСТАНОВКА и команды СЧИТЫВАНИЕ. Когда для заданного потока считывается флаг УСТАНОВКА, команда УСТАНОВКА устанавливает Битовый флаг в памяти, указывая этим, что выполнение команд для этого потока приостановлено. Команда УСТАНОВКА помещается в конвейер для выполнения. Однако предотвращается ввод последующей команды СЧИТЫВАНИЕ для этого потока в конвейер до тех пор, пока не будет выполнена и выведена команда УСТАНОВКА (результатом этого является установка в исходное состояние Битового флага). Как только Битовый флаг установлен в исходное состояние, команда СЧИТЫВАНИЕ помещается в конвейер для выполнения. В течение этого времени, когда обработка одного потока приостановлена, выполнение других потоков может продолжаться. 10 н. и 23 з.п. ф-лы, 4 ил.

Область техники, к которой относится изобретение

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

Предшествующий уровень техники

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

При работе тактового генератора исполнительный блок процессорной системы выполняет последовательные команды, которые в ней находятся. Как известно из уровня техники, в исполнительном блоке может быть команда, которая не приводит к значительной эффективности выполнения задач для процессорной системы. Например, в процессорных системах Intel® X86 команда NOP (пустая операция) не вызывает никаких действий исполнительного блока по “командному циклу”. Командный цикл, в том смысле, в котором он используется в настоящем описании, – это установленное число тактовых циклов процессора, которое требуется для выполнения процессором команды. В действительности, команда NOP останавливает процессор на один командный цикл.

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

Другая ограниченность команды NOP заключается в том, что исполнительный блок процессора не в состоянии осуществлять выполнение никакой другой команды. Например, команды, которые должны быть выполнены исполнительным блоком, могут быть разделены на два или более “потоков”. Каждый поток – это совокупность команд для достижения заданной задачи. Таким образом, если один из потоков включает в себя команду NOP, эта команда выполняется исполнительным блоком и останавливает весь процессор (т.е. выполнение другого потока не может происходить во время выполнения команды NOP).

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

Сущность изобретения

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

Краткое описание чертежей

Фиг.1 – блок-схема части процессора, реализующего вариант настоящего изобретения.

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

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

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

Подробное описание

Обратимся к фиг.1, на которой показан пример части процессорной системы 10, реализующей вариант настоящего изобретения. В этом варианте процессор представляет собой многопоточный процессор, в котором режим выполнения теоретически поделен между двумя или более логическими процессорами. Используемый здесь термин “поток” означает последовательность кодов команд. Например, в применении к видеотелефону обращение к процессору может осуществляться для выполнения кода, чтобы обрабатывать данные видеоизображения, а также аудиоданные. Могут существовать раздельные последовательности кодов, выполнение которых осуществляется так, чтобы обрабатывать каждый из этих типов данных. Следовательно, первый поток может включать в себя команды для обработки данных видеоизображения, а второй поток может включать команды для обработки аудиоданных. В этом примере имеется один исполнительный блок (нестандартный исполнительный блок 31), который может выполнять одну команду в текущий момент времени. Однако процессорная система 10 может быть рассмотрена как два логических процессора, первый логический процессор, выполняющий команды из первого потока (Поток 0), и второй логический процессор, выполняющий команды из второго потока (Поток 1).

В этом варианте процессорной системы 10 команды выбираются с помощью блока 11 выборки и подаются в очередь 13, где запоминаются как часть очереди потока 0 или очереди потока 1. Специалистам в данной области техники понятно, что очереди, используемые в процессорной системе 10, могут быть использованы для запоминания более чем двух потоков. Команды из двух потоков подаются в мультиплексор (MUX) 15, а управляющая логическая схема 17 используется для управления, какие команды – из потока 0 или потока 1, подавать в блок 21 декодирования. Блок 21 декодирования может преобразовывать команду в две или более микрокоманды и подавать эти команды в очередь 23. Выходные данные очереди 23 подаются в MUX (мультиплексор), который подает команду из потока 0 или потока 1 в блок 27 переименования/назначения на основе на работе управляющей логической схемы 26. Блок 27 переименования/назначения, в свою очередь, подает команды в очередь 28. MUX 29 выбирает между очередью потока 0 и очередью потока 1 на основе работы логической схемы 30 управления планирования, которая также получает входные данные такие же, как и MUX 29. Данные с выхода MUX 29 подаются в исполнительный блок 31, который выполняет команду. Затем эта команда помещается в очередь 33. Выходные данные очереди 33 подаются в MUX 34, который посылает команду из потока 0 и потока 1 в блок 36 вывода на основе работы управляющей логической схемы 35.

Согласно первому варианту настоящего изобретения команда «пауза» (приостановки) используется для приостановки обработки команд из потока. В примере, показанном на фиг.1, команда «пауза» извлекается с помощью блока 11 выборки и запоминается в очереди потока 0. Выходные данные очереди потока 0 подаются через MUX 15 в блок 21 декодирования, который декодирует команду «пауза» в две микрокоманды: команда УСТАНОВКА и команда СЧИТЫВАНИЕ. В блоке 21 декодирования команда УСТАНОВКА приводит к тому, что в памяти запоминается какое-то значение (например, битовый флаг 19), указывая, что команда УСТАНОВКА принята из конкретного потока (в этом примере для потока 0). Затем команда УСТАНОВКА подается в «конвейер», который в этом варианте осуществления включает в себя блок 27 переименования/назначения и исполнительный блок 31 и соответствующие им очереди. Исполнительный блок 31 не производит никаких действий при команде УСТАНОВКА (т.е. рассматривает ее как известную команду NOP). Как только команда УСТАНОВКА «выводится» с помощью блока 26 вывода, флаг 19 «сбрасывается» (возвращается в исходное состояние).

Команда СЧИТЫВАНИЕ в блоке 21 декодирования не вводится в конвейер до тех пор, пока флаг 19 не будет сброшен. Таким образом, если имеются команды из потока 1 в очереди 13, то эти команды могут быть декодированы блоком 21 декодирования и помещены в конвейер. Следовательно, в зависимости от числа команд потока 1 в очередях 23, 28 и 33 будет изменяться продолжительность приостановки выполнения потока 0 (т.е. чем больше число команд потока 1 в конвейере, тем больше времени потребуется для того, чтобы команда УСТАНОВКА достигла блока 36 вывода). Как только флаг 19 сброшен, команда СЧИТЫВАНИЕ передается в очередь 23 и в конечном счете передается в исполнительный блок 31. При команде УСТАНОВКА исполнительный блок не совершает никаких действий так же, как при команде NOP. В этом варианте настоящего изобретения блок 21 декодирования чередует декодирование команд из потока 0 и потока 1. Например, после команды УСТАНОВКА для потока 0 блок декодирования переключается между декодированием команд из потока 1 и проверкой значения флага 19, пока он не возвратится в исходное состояние.

На фиг.2 показан пример работы блока 21 декодирования в этом варианте. После декодирования в блоке 40 определяется команда из следующего потока. В блоке 41 принятия решения определяется, является ли эта команда командой УСТАНОВКА. Если это так, тогда управление переходит к блоку 43, где устанавливается в памяти битовый флаг. В блоке 47 команда УСТАНОВКА помещается в конвейер для исполнительного блока. Затем управление возвращается в блок 40, чтобы определить следующую команду из следующего потока. Если эта команда не является командой УСТАНОВКА, тогда управление переходит к блоку 45 принятия решения, чтобы определить, является ли эта команда командой СЧИТЫВАНИЕ. Если это так, тогда управление переходит к блоку 49 принятия решения, чтобы определить, установлен ли в памяти соответствующий битовый флаг. Если битовый флаг в памяти установлен, тогда управление переходит к блоку 51, где предотвращается ввод команды в конвейер (таким образом, временно блокируется выполнение команд из этого конкретного потока). Затем управление переходит к блоку 40, чтобы определить следующую команду из следующего потока. Если битовый флаг не установлен (блок 49 принятия решения), тогда управление переходит к блоку 53, где эта команда (в этом случае команда СЧИТЫВАНИЕ) помещается в конвейер для исполнения. Как изложено выше, в этом варианте битовый флаг возвращается в исходное состояние, когда команда УСТАНОВКА выводится. Управление затем возвращается к блоку 40, чтобы определить следующую команду из следующего потока. Аналогичным образом, если команда является либо командой УСТАНОВКА, либо командой СЧИТЫВАНИЕ, она помещается в конвейер для выполнения обычным образом.

Как видно из вышеизложенного, команда УСТАНОВКА работает так, чтобы происходила пауза в режиме выполнения для этого потока, пока эта команда не будет выведена. Это происходит потому, что последующая команда СЧИТЫВАНИЕ не помещается в конвейер до тех пор, пока команда УСТАНОВКА не будет выведена, эффективно блокируя выполнение последующих команд из этого потока. Во время паузы для одного потока выполнение обработки команд из этого потока предотвращается (например, загрузка в конвейер, пересылка в исполнительный блок и т.д.), в то время как команды из другого потока могут быть обработаны для выполнения. Когда выполнение потока приостановлено, то может быть уменьшено полное потребление энергии этой процессорной системой.

Согласно другому варианту настоящего изобретения команда пауза реализуется с помощью таймера или счетчика. Как показано на фиг.3, флаг 19 в памяти, показанный на фиг.1, заменяется счетчиком 39. Как и в первом примере, когда блок 21 декодирования определяет, что следующая команда из первого потока – эта команда «пауза» (приостановка) (т.е. команда, имеющая конкретный двоичный формат), тогда в счетчик 39 загружается заданное значение. В этом примере счетчик 39 ведет счет от этого заданного значения до нуля. Когда счетчик 39 выполняет счет до нуля, команды из второго потока (например, потока 1) декодируются и загружаются в конвейер. В этом примере блок 21 декодирования переключается между проверкой значения счетчика 39 (вместо декодирования команд из потока 0) и декодированием команд из потока 1. Как только счетчик закончил счет (например, значение достигло нуля), следующая команда из этого потока может быть загружена в конвейер. В качестве второго примера, команда «пауза» будет включать в себя операнд (т.е. значение, которое должно быть загружено в таймер). Таким образом, это позволяет загрузить с помощью блока 21 декодирования в счетчик 30 значение операнда, так что продолжительность команды «пауза» может быть установлена.

Пример работы процессорной системы, показанной на фиг.3, представлен на фиг.4. Блок 60 принятия решения определяет, достиг ли счетчик заданного значения для текущего потока. Если никакого счетчика не установлено, или его значение достигло заданного значения (например нуля), тогда управление переходит к блоку 61, чтобы определить следующую команду для текущего потока. Если эта команда является командой «пауза» (блок 63 принятия решения), тогда управление переходит к блоку 65 принятия решения, чтобы определить, относится ли операнд к этой команде «пауза». Если операнд относится к команде «пауза», тогда управление переходит к блоку 67, чтобы загрузить это значение в счетчик (управление тогда переходит к блоку 73, чтобы произвести переход к следующему потоку). Если операнд не относится к команде «пауза», тогда управление переходит к блоку 71 для загрузки заданного значения в счетчик (и опять управление затем переходит к блоку 73 для перехода к следующему потоку). Если в блоке 63 принятия решения установлено, что команда не является командой «пауза», тогда управление переходит к блоку 69, чтобы загрузить команду в конвейер.

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

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

Формула изобретения

1. Способ приостановки выполнения команд в потоке, выполняемых в процессоре, заключающийся в том, что

определяют, является ли команда для первого потока командой приостановки выполнения команд;

предотвращают обработку команд первого потока для выполнения в течение временного интервала, если упомянутая команда первого потока декодирована как команда приостановки выполнения команд, в то время как команды из второго потока могут обрабатываться для выполнения, и

возобновляют выполнение первого потока в ответ на вывод из обработки команды первого потока.

2. Способ по п.1, который дополнительно содержит этап декодирования команды первого потока в первую микрокоманду и вторую микрокоманду.

3. Способ по п.2, в котором первая микрокоманда приводит к тому, что для первого потока в памяти сохраняется значение, указывающее, что первая микрокоманда декодирована.

4. Способ по п.3, в котором дополнительно обрабатывают упомянутую вторую микрокоманду для выполнения, когда значение, сохраненное в памяти, сбрасывается.

5. Способ по п.4, в котором значение, сохраненное в памяти, сбрасывается, когда первая микрокоманда выводится из обработки.

6. Способ приостановки выполнения команд в потоке, выполняемых в процессоре, заключающийся в том, что

определяют, является ли команда для первого потока командой приостановки выполнения команд;

инициализируют счетчик после декодирования упомянутой команды приостановки выполнения команд и

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

7. Способ по п.6, в котором команда первого потока включает в себя операнд, а этап инициализации счетчика включает в себя загрузку счетчика упомянутым операндом.

8. Способ по п.6, в котором дополнительно возобновляют обработку для выполнения команд упомянутого первого потока после того, как счетчик достигнет упомянутого заранее заданного значения.

9. Способ приостановки выполнения команд в потоке, выполняемых в процессоре, заключающийся в том, что

принимают команду приостановки из первого потока в блок декодирования в процессорной системе;

предотвращают обработку команд первого потока для выполнения в течение временного интервала, в то время как команды из второго потока могут обрабатываться для выполнения, и

возобновляют обработку упомянутого первого потока для выполнения в ответ на вывод из обработки упомянутой команды приостановки.

10. Способ по п.9, в котором выполнение программного кода приводит к приему команды приостановки в блок декодирования.

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

12. Устройство по п.11, в котором команда первого потока содержит первую микрокоманду и вторую микрокоманду.

13. Устройство по п.12, дополнительно содержащее память, причем первая микрокоманда вызывает сохранение в памяти значения для первого потока.

14. Устройство по п.13, в котором блок декодирования обрабатывает вторую микрокоманду для выполнения после обнаружения, что значение, сохраненное в памяти, сброшено.

15. Устройство по п.14, дополнительно содержащее блок вывода из обработки, связанный с блоком декодирования, при этом блок вывода из обработки вызывает сброс значения, сохраненного в памяти, когда первая микрокоманда выводится из обработки с помощью блока вывода из обработки.

16. Устройство приостановки выполнения команд в потоке, содержащее

блок декодирования для определения, является ли команда для первого потока командой приостановки выполнения команд;

счетчик, связанный с блоком декодирования, причем счетчик инициализируется, если команда для первого потока декодирована как команда приостановки выполнения команд, при этом блок декодирования предотвращает обработку команд первого потока для выполнения, до тех пор пока счетчик не достигнет заранее заданного значения; при этом

команды для второго потока могут обрабатываться для выполнения, в то время как предотвращается обработка команд первого потока для выполнения, и блок декодирования возобновляет обработку команд первого потока по команде первого потока.

17. Устройство по п.16, в котором команда первого потока включает в себя операнд, который загружается в счетчик.

18. Устройство по п.16, в котором блок декодирования может продолжать работать, в то время как предотвращается обработка первого потока.

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

20. Устройство по п.19, в котором выполнение программного кода в процессоре вызывает прием в блоке декодирования команды первого потока.

21. Процессор, содержащий блок декодирования для приема команды из первого потока и для обеспечения откладывания процесса обработки процессором команд из первого потока в течение временного интервала в ответ на декодирование команды первого потока, при этом блок декодирования выполнен с возможностью обрабатывать команды из второго потока в течение этого временного интервала, и блок декодирования обеспечивает возобновление обработки команд из первого потока в ответ на вывод из обработки команды первого потока.

22. Процессор по п.21, в котором блок декодирования обеспечивает выполнение команд из второго потока в течение упомянутого временного интервала.

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

24. Процессор по п.23, в котором блок декодирования обеспечивает предотвращение выполнения команд из первого потока путем предотвращения отправки других команд из упомянутого первого потока, до тех пор пока команда первого потока не будет выведена из обработки.

25. Процессор по п.21, в котором указанный временной интервал является заранее заданным временным интервалом.

26. Способ приостановки выполнения команд в потоке, выполняемых в процессоре, заключающийся в том, что

принимают команды для первого потока;

декодируют первую команду из первого потока во вторую команду и третью команду;

устанавливают флаг для указания наличия второй команды;

отправляют вторую команду в конвейер;

удерживают третью команду от ввода в конвейер, если флаг установлен, при этом приостанавливается обработка первого потока;

выполняют вторую команду;

возвращают флаг в исходное состояние после вывода из обработки второй команды и

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

27. Способ по п.26, в котором дополнительно обрабатывают команды второго потока, когда первый поток приостановлен.

28. Способ приостановки выполнения команд в потоке, выполняемых в процессоре, заключающийся в том, что

декодируют команду из первого потока во вторую команду и третью команду;

удерживают третью команду от ввода в конвейер команд, до тех пор пока не будет выведена из обработки вторая команда;

выполняют вторую команду и

освобождают третью команду с целью ввода в конвейер команд.

29. Способ по п.28, в котором дополнительно

откладывают обработку команд из первого потока, следующих за упомянутой командой из первого потока;

обрабатывают команды из второго потока, когда первый поток отложен, и

возобновляют обработку команд из первого потока в ответ на вывод из обработки третьей команды.

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

31. Способ приостановки выполнения команд в потоке, выполняемых в процессоре, заключающийся в том, что

загружают счетчик первым значением в ответ на декодирование команды первого потока;

приостанавливают обработку первого потока, при этом приостанавливается ввод в конвейер команд, следующих за упомянутой командой первого потока, до тех пор, пока счетчик не досчитает до заранее заданного значения;

обрабатывают второй поток, пока первый поток приостановлен, и

возобновляют обработку первого потока после того, как счетчик досчитает до заранее заданного значения.

32. Способ по п.31, в котором упомянутая команда первого потока включает в себя операнд, причем операнд загружается в счетчик в качестве упомянутого первого значения.

33. Способ по п.31, в котором упомянутое первое значение соответствует заранее заданному временному интервалу.

РИСУНКИ


MM4A – Досрочное прекращение действия патента СССР или патента Российской Федерации на изобретение из-за неуплаты в установленный срок пошлины за поддержание патента в силе

Дата прекращения действия патента: 18.01.2007

Извещение опубликовано: 20.11.2009 БИ: 32/2009


Categories: BD_2271000-2271999