RU2271035C2 - Способ и устройство для приостановки режима выполнения в процессоре - Google Patents

Способ и устройство для приостановки режима выполнения в процессоре Download PDF

Info

Publication number
RU2271035C2
RU2271035C2 RU2002122402/09A RU2002122402A RU2271035C2 RU 2271035 C2 RU2271035 C2 RU 2271035C2 RU 2002122402/09 A RU2002122402/09 A RU 2002122402/09A RU 2002122402 A RU2002122402 A RU 2002122402A RU 2271035 C2 RU2271035 C2 RU 2271035C2
Authority
RU
Russia
Prior art keywords
command
stream
processing
instructions
execution
Prior art date
Application number
RU2002122402/09A
Other languages
English (en)
Other versions
RU2002122402A (ru
Inventor
Дебора Т. МАРР (US)
Дебора Т. МАРР
Дион РОДЖЕРС (US)
Дион РОДЖЕРС
Original Assignee
Интел Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интел Корпорейшн filed Critical Интел Корпорейшн
Publication of RU2002122402A publication Critical patent/RU2002122402A/ru
Application granted granted Critical
Publication of RU2271035C2 publication Critical patent/RU2271035C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

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

Description

Область техники, к которой относится изобретение
Настоящее изобретение относится к способу и устройству для приостановки режима выполнения в процессоре или подобном устройстве. Более конкретно, вариант настоящего изобретения относится к управлению приостановкой выполнения одного из множества потоков так, чтобы дать предпочтение другому потоку из множества потоков или для экономии энергии.
Предшествующий уровень техники
Как известно из уровня техники, процессор включает в себя разнообразные подмодули, каждый из которых предназначен для выполнения определенных задач. В одном из известных процессоров к этим подмодулям относятся следующие подмодули: кэш-память для хранения команд, блок выборки команд для выборки соответствующих команд из кэш-памяти для хранения команд; декодирующие логические схемы, которые декодируют команды в окончательный или промежуточный формат, логические схемы выполнения микроопераций, которые преобразуют промежуточные команды в окончательный формат для выполнения; и исполнительный блок, который выполняет команды в окончательном формате (в некоторых примерах из декодирующих логических схем или в других случаях из логических схем выполнения микроопераций).
При работе тактового генератора исполнительный блок процессорной системы выполняет последовательные команды, которые в ней находятся. Как известно из уровня техники, в исполнительном блоке может быть команда, которая не приводит к значительной эффективности выполнения задач для процессорной системы. Например, в процессорных системах 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 может осуществлять и другие шаги для дальнейшего понижения полного энергопотребления, если это требуется.
Несмотря на то что описаны и проиллюстрированы несколько конкретных вариантов изобретения, понятно, что модификации и видоизменения настоящего изобретения охватываются вышеизложенными положениями, и они находятся в объеме прилагаемой формулы, не выходя за рамки сущности и предполагаемого объема изобретения.

Claims (33)

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, в котором упомянутое первое значение соответствует заранее заданному временному интервалу.
RU2002122402/09A 2000-01-21 2001-01-17 Способ и устройство для приостановки режима выполнения в процессоре RU2271035C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/489,130 2000-01-21
US09/489,130 US6671795B1 (en) 2000-01-21 2000-01-21 Method and apparatus for pausing execution in a processor or the like

Publications (2)

Publication Number Publication Date
RU2002122402A RU2002122402A (ru) 2004-02-27
RU2271035C2 true RU2271035C2 (ru) 2006-02-27

Family

ID=23942534

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2002122402/09A RU2271035C2 (ru) 2000-01-21 2001-01-17 Способ и устройство для приостановки режима выполнения в процессоре

Country Status (7)

Country Link
US (2) US6671795B1 (ru)
EP (2) EP1522917B1 (ru)
CN (2) CN102346689B (ru)
AU (1) AU2001229506A1 (ru)
DE (2) DE60143230D1 (ru)
RU (1) RU2271035C2 (ru)
WO (1) WO2001053935A1 (ru)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566568B2 (en) 2006-08-16 2013-10-22 Qualcomm Incorporated Method and apparatus for executing processor instructions based on a dynamically alterable delay
RU2550535C2 (ru) * 2010-03-01 2015-05-10 Арм Лимитед Устройство обработки данных и способ переноса рабочей нагрузки между исходной и целевой компоновкой схем обработки
RU2630745C2 (ru) * 2013-06-28 2017-09-12 Интел Корпорейшн Пары инструкций установления очерёдности исполнения инструкций, процессоры, способы и системы

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US20020184290A1 (en) * 2001-05-31 2002-12-05 International Business Machines Corporation Run queue optimization with hardware multithreading for affinity
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US7805220B2 (en) 2003-03-14 2010-09-28 Sharper Image Acquisition Llc Robot vacuum with internal mapping system
US7376954B2 (en) 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US9032404B2 (en) 2003-08-28 2015-05-12 Mips Technologies, Inc. Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7870553B2 (en) 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7418585B2 (en) 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7711931B2 (en) 2003-08-28 2010-05-04 Mips Technologies, Inc. Synchronized storage providing multiple synchronization semantics
EP1658563B1 (en) 2003-08-28 2013-06-05 MIPS Technologies, Inc. Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US7594089B2 (en) 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
US7373536B2 (en) * 2004-08-04 2008-05-13 Kabushiki Kaisha Toshiba Fine granularity halt instruction
US7203100B2 (en) 2004-11-01 2007-04-10 Sun Mircosystems, Inc. Efficient implementation of a read scheme for multi-threaded register file
US20060136919A1 (en) * 2004-12-17 2006-06-22 Sun Microsystems, Inc. System and method for controlling thread suspension in a multithreaded processor
US7577762B1 (en) * 2005-02-01 2009-08-18 Nvidia Corporation Cooperative scheduling for multiple consumers
US7840845B2 (en) * 2005-02-18 2010-11-23 Intel Corporation Method and system for setting a breakpoint
US7266674B2 (en) * 2005-02-24 2007-09-04 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline
US7882381B2 (en) * 2006-06-29 2011-02-01 Intel Corporation Managing wasted active power in processors based on loop iterations and number of instructions executed since last loop
US8032737B2 (en) * 2006-08-14 2011-10-04 Marvell World Trade Ltd. Methods and apparatus for handling switching among threads within a multithread processor
US8230203B2 (en) * 2007-03-30 2012-07-24 Intel Corporation Detecting spin loops in a virtual machine environment
US8639062B2 (en) * 2007-10-09 2014-01-28 Bank Of America Corporation Ensuring image integrity using document characteristics
US8502819B1 (en) 2007-12-17 2013-08-06 Nvidia Corporation System and method for performing ray tracing node traversal in image rendering
US8289324B1 (en) 2007-12-17 2012-10-16 Nvidia Corporation System, method, and computer program product for spatial hierarchy traversal
US8458438B2 (en) * 2008-02-26 2013-06-04 International Business Machines Corporation System, method and computer program product for providing quiesce filtering for shared memory
US8032716B2 (en) * 2008-02-26 2011-10-04 International Business Machines Corporation System, method and computer program product for providing a new quiesce state
US8380907B2 (en) * 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US8140834B2 (en) 2008-02-26 2012-03-20 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US8527715B2 (en) * 2008-02-26 2013-09-03 International Business Machines Corporation Providing a shared memory translation facility
JP4897851B2 (ja) * 2009-05-14 2012-03-14 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ・システム及びコンピュータ・システムの制御方法
US8555036B1 (en) 2010-05-17 2013-10-08 Nvidia Corporation System and method for performing predicated selection of an output register
US8564589B1 (en) 2010-05-17 2013-10-22 Nvidia Corporation System and method for accelerated ray-box intersection testing
CN104011703B (zh) 2011-12-22 2017-04-12 英特尔公司 用于指定应用线程性能状态的指令的指令处理装置及相关方法
US9396020B2 (en) 2012-03-30 2016-07-19 Intel Corporation Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator
US9218288B2 (en) * 2012-06-15 2015-12-22 International Business Machines Corporation Monitoring a value in storage without repeated storage access
CN104298552B (zh) * 2013-07-15 2018-06-19 华为技术有限公司 多线程处理器的线程取指调度方法、系统和多线程处理器
GB2519103B (en) * 2013-10-09 2020-05-06 Advanced Risc Mach Ltd Decoding a complex program instruction corresponding to multiple micro-operations
US9396032B2 (en) * 2014-03-27 2016-07-19 Intel Corporation Priority based context preemption
US9778949B2 (en) * 2014-05-05 2017-10-03 Google Inc. Thread waiting in a multithreaded processor architecture
US10467011B2 (en) * 2014-07-21 2019-11-05 Intel Corporation Thread pause processors, methods, systems, and instructions
KR102476357B1 (ko) 2015-08-06 2022-12-09 삼성전자주식회사 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
GB2544994A (en) 2015-12-02 2017-06-07 Swarm64 As Data processing
US10437778B2 (en) 2016-02-08 2019-10-08 Bank Of America Corporation Archive validation system with data purge triggering
US10437880B2 (en) 2016-02-08 2019-10-08 Bank Of America Corporation Archive validation system with data purge triggering
US10460296B2 (en) 2016-02-08 2019-10-29 Bank Of America Corporation System for processing data using parameters associated with the data for auto-processing
US9823958B2 (en) 2016-02-08 2017-11-21 Bank Of America Corporation System for processing data using different processing channels based on source error probability
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US10067869B2 (en) 2016-02-12 2018-09-04 Bank Of America Corporation System for distributed data processing with automatic caching at various system levels
US9952942B2 (en) 2016-02-12 2018-04-24 Bank Of America Corporation System for distributed data processing with auto-recovery
CN108255516A (zh) * 2016-12-29 2018-07-06 展讯通信(上海)有限公司 顺序同步多线程处理器及其指令执行控制方法、装置
GB2563384B (en) 2017-06-07 2019-12-25 Advanced Risc Mach Ltd Programmable instruction buffering
GB2563589B (en) * 2017-06-16 2019-06-12 Imagination Tech Ltd Scheduling tasks
GB2563587B (en) 2017-06-16 2021-01-06 Imagination Tech Ltd Scheduling tasks
US10860618B2 (en) 2017-09-25 2020-12-08 Splunk Inc. Low-latency streaming analytics
CN109697084B (zh) * 2017-10-22 2021-04-09 刘欣 一个用于时分复用流水线处理器的快速访问存储器结构
US10997180B2 (en) 2018-01-31 2021-05-04 Splunk Inc. Dynamic query processor for streaming and batch queries
US10936585B1 (en) 2018-10-31 2021-03-02 Splunk Inc. Unified data processing across streaming and indexed data sets
US11238048B1 (en) 2019-07-16 2022-02-01 Splunk Inc. Guided creation interface for streaming data processing pipelines
US11614923B2 (en) 2020-04-30 2023-03-28 Splunk Inc. Dual textual/graphical programming interfaces for streaming data processing pipelines
US11636116B2 (en) 2021-01-29 2023-04-25 Splunk Inc. User interface for customizing data streams
US11687487B1 (en) * 2021-03-11 2023-06-27 Splunk Inc. Text files updates to an active processing pipeline
US11663219B1 (en) 2021-04-23 2023-05-30 Splunk Inc. Determining a set of parameter values for a processing pipeline

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59111526A (ja) 1982-12-16 1984-06-27 Fujitsu Ltd 信号処理方式
US4881194A (en) 1987-11-16 1989-11-14 Intel Corporation Stored-program controller for equalizing conditional branch delays
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5357617A (en) 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
JP2866241B2 (ja) * 1992-01-30 1999-03-08 株式会社東芝 コンピュータシステムおよびスケジューリング方法
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
JP3678759B2 (ja) 1992-07-21 2005-08-03 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込を発生するための装置および割込を発生するための方法
US5584031A (en) 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
US5546037A (en) 1993-11-15 1996-08-13 Cirrus Logic, Inc. NAPNOP circuit for conserving power in computer systems
US5632032A (en) * 1994-02-07 1997-05-20 International Business Machines Corporation Cross address space thread control in a multithreaded environment
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
SE9404294D0 (sv) * 1994-12-09 1994-12-09 Ellemtel Utvecklings Ab sätt och anordning vid telekommunikation
JPH08320797A (ja) 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
EP0847551B1 (en) 1995-08-31 2012-12-05 Intel Corporation A set of instructions for operating on packed data
US5933627A (en) 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
KR100500002B1 (ko) 1996-08-27 2005-09-08 마츠시타 덴끼 산교 가부시키가이샤 복수의명령흐름을독립적으로처리하고,명령흐름단위로처리성능을유연하게제어하는멀티스레드프로세서
US5961639A (en) 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US5872963A (en) * 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US5784616A (en) * 1997-05-02 1998-07-21 Microsoft Corporation Apparatus and methods for optimally using available computer resources for task execution during idle-time for future task instances exhibiting incremental value with computation
US5935705A (en) * 1997-10-15 1999-08-10 National Science Council Of Republic Of China Crystalline Six Cy Nz with a direct optical band gap of 3.8 eV
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6496925B1 (en) 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6671795B1 (en) 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US6687838B2 (en) 2000-12-07 2004-02-03 Intel Corporation Low-power processor hint, such as from a PAUSE instruction

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566568B2 (en) 2006-08-16 2013-10-22 Qualcomm Incorporated Method and apparatus for executing processor instructions based on a dynamically alterable delay
RU2550535C2 (ru) * 2010-03-01 2015-05-10 Арм Лимитед Устройство обработки данных и способ переноса рабочей нагрузки между исходной и целевой компоновкой схем обработки
RU2711336C2 (ru) * 2010-03-01 2020-01-16 Арм Лимитед Устройство обработки данных и способ переноса рабочей нагрузки между исходной и целевой компоновкой схем обработки
RU2630745C2 (ru) * 2013-06-28 2017-09-12 Интел Корпорейшн Пары инструкций установления очерёдности исполнения инструкций, процессоры, способы и системы

Also Published As

Publication number Publication date
US7451296B2 (en) 2008-11-11
EP1522917B1 (en) 2010-10-06
CN1426553A (zh) 2003-06-25
RU2002122402A (ru) 2004-02-27
WO2001053935A1 (en) 2001-07-26
US20040117604A1 (en) 2004-06-17
AU2001229506A1 (en) 2001-07-31
DE60109748T2 (de) 2006-02-09
CN1426553B (zh) 2011-11-09
DE60109748D1 (de) 2005-05-04
CN102346689B (zh) 2013-10-16
DE60143230D1 (de) 2010-11-18
EP1522917A2 (en) 2005-04-13
EP1256054A1 (en) 2002-11-13
EP1522917A3 (en) 2007-11-28
US6671795B1 (en) 2003-12-30
EP1256054B1 (en) 2005-03-30
CN102346689A (zh) 2012-02-08

Similar Documents

Publication Publication Date Title
RU2271035C2 (ru) Способ и устройство для приостановки режима выполнения в процессоре
US7877583B2 (en) Method and apparatus for assigning thread priority in a processor or the like
US6928647B2 (en) Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
CN100524205C (zh) 用于解决多线程处理器中指令饥饿的方法及设备
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US20120023502A1 (en) Establishing thread priority in a processor or the like
JP2006503385A5 (ru)
JPH083791B2 (ja) データプロセッサ制御装置
JP2748822B2 (ja) 情報処理装置
US4893233A (en) Method and apparatus for dynamically controlling each stage of a multi-stage pipelined data unit
EP0777877B1 (en) Processing system, processor, memory storing instruction stream and compiler
US5687381A (en) Microprocessor including an interrupt polling unit configured to poll external devices for interrupts using interrupt acknowledge bus transactions
US20050149931A1 (en) Multithread processor architecture for triggered thread switching without any cycle time loss, and without any switching program command
US7373536B2 (en) Fine granularity halt instruction
US20050160254A1 (en) Multithread processor architecture for triggered thread switching without any clock cycle loss, without any switching program instruction, and without extending the program instruction format
JPH04326425A (ja) ループ処理制御方式

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20070118

TK4A Correction to the publication in the bulletin (patent)

Free format text: AMENDMENT TO CHAPTER -MM4A- IN JOURNAL: 32-2009

NF4A Reinstatement of patent

Effective date: 20110620

MM4A The patent is invalid due to non-payment of fees

Effective date: 20180118