RU2503987C2 - Энергосберегающее планирование потоков и динамическое использование процессоров - Google Patents

Энергосберегающее планирование потоков и динамическое использование процессоров Download PDF

Info

Publication number
RU2503987C2
RU2503987C2 RU2010139638/08A RU2010139638A RU2503987C2 RU 2503987 C2 RU2503987 C2 RU 2503987C2 RU 2010139638/08 A RU2010139638/08 A RU 2010139638/08A RU 2010139638 A RU2010139638 A RU 2010139638A RU 2503987 C2 RU2503987 C2 RU 2503987C2
Authority
RU
Russia
Prior art keywords
core
cores
power
kernel
processors
Prior art date
Application number
RU2010139638/08A
Other languages
English (en)
Other versions
RU2010139638A (ru
Inventor
Аллен МАРШАЛЛ
Иминь ДЭН
Николас С. ДЖАДЖ
Арун У. КИШАН
Эндрю Дж. РИТЦ
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 RU2010139638A publication Critical patent/RU2010139638A/ru
Application granted granted Critical
Publication of RU2503987C2 publication Critical patent/RU2503987C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)

Abstract

Изобретение относится к средствам обеспечения энергосберегающего планирования потоков и динамического использования процессоров. Технический результат заключается в уменьшении потребления электроэнергии. Определяют, какие ядра из упомянутого множества ядер активно выполняют работу. Создают маску приостановки ядер с использованием битового значения для представления приостановленного или работающего состояния ядра. Определяют маски привязки потока к процессору, представляющие одно или более ядер, которым назначена обработка потока. Обеспечивают, по меньшей мере, часть плана производительности и энергосбережения для ядер путем объединения инвертированной маски приостановки ядер и масок привязки потока к процессору, используя оператор "И", чтобы создать набор доступных процессоров. Вычисляют, какие ядра обозначаются как приостановленные или работающие, на основе, по меньшей мере частично, набора доступных процессоров. Приостанавливают по меньшей мере одно из ядер, активно выполняющих работу, на основе, по меньшей мере частично, политики мощности, указывающей, что это по меньшей мере одно из ядер, активно выполняющих работу, обозначено как приостановленное ядро. 3 н. и 15 з.п. ф-лы, 8 ил.

Description

Уровень техники
Управление энергопотреблением в компьютерной системе является важным для увеличения эксплуатационной возможности батареи и уменьшения общего энергопотребления, что может быть выгодным как с финансовой точки зрения, так и с экологической точки зрения. Даже для немобильных компьютеров уменьшение потребностей в электроэнергии полезно для сохранения важных глобальных ресурсов и продления работы при расчете на систему резервного батарейного питания, например, во время отключения энергоснабжения.
Хотя большинство компонентов вычислительной системы используют энергию во время работы системы, процессор использует непропорциональную долю энергии системы. Многие компьютерные системы, включая потребительские системы, включают в себя несколько процессоров и/или процессоры с несколькими ядрами. Несколько процессоров дают компьютерам возможность выполнять растущие уровни обработки параллельно, однако дополнительные процессоры также могут увеличивать энергопотребление. Большинство современных процессоров имеют состояния простоя с очень низкой мощностью, которые могут применяться к каждому ядру в многоядерной системе и которые могут управляться операционной системой. К тому же частота процессора может масштабироваться на основе ядра или группы ядер, чтобы уменьшить использование энергии системой.
Сущность изобретения
Это краткое изложение сущности изобретения предоставляется, чтобы представить упрощенные идеи обеспечения энергосберегающего планирования потоков и динамического использования процессоров, которое дополнительно описывается ниже в подробном описании. Это краткое изложение сущности изобретения не предназначено ни для определения существенных признаков заявленного изобретения, ни для использования в установлении объема заявленного изобретения.
Раскрываются типовые методики и устройства для обеспечения энергосберегающего планирования потоков и динамического использования процессоров. В соответствии с одним или несколькими вариантами осуществления, многоядерная система контролируется для определения активности ядер. Извлекается политика мощности для запуска плана производительности и энергосбережения для ядер. Одно или несколько ядер в многоядерной системе приостанавливаются (помещаются в заданное системой состояние малой мощности) на основе политики мощности и активности ядер. Когда одно или несколько ядер приостанавливаются ("паркуются"), работающие ядра остаются обрабатывать всю оставшуюся активность системы. В некоторых вариантах осуществления политика мощности может быть изменена для включения в нее дополнительных факторов, влияющих на энергосбережение или производительность системы. По меньшей мере в одном другом варианте осуществления многоядерная система может динамически регулировать состояние питания у одного или нескольких работающих ядер в дополнение к приостановке одного или нескольких ядер.
Краткое описание чертежей
Подробное описание изобретения описывается со ссылкой на прилагаемые чертежи. На фигурах крайняя левая цифра (цифры) в номере ссылки определяет фигуру, в которой номер ссылки появляется первый раз. Одинаковый номер ссылки на разных фигурах ссылается на аналогичные или идентичные элементы.
Фиг.1 - иллюстративная система, которая может использоваться для реализации по меньшей мере одного варианта осуществления энергосберегающего планирования потоков и динамического использования процессоров.
Фиг.2 показывает блок-схему алгоритма по меньшей мере одного варианта осуществления процесса создания маски приостановки ядер и реализации маски с помощью планировщика потоков, чтобы разрешить распределение работы процессорам.
Фиг.3А и 3В показывают иллюстративные использования ядер в соответствии по меньшей мере с одним вариантом осуществления раскрытия изобретения. Точнее говоря, фиг.3В показывает пояснительную модификацию использований ядер в ответ на использование ядра в пояснительной системе, которое показано на фиг.3А.
Фиг.4 показывает блок-схему алгоритма по меньшей мере одного варианта осуществления пояснительного процесса оценивания планирования потоков и динамического использования процессоров и определения измененной конфигурации для процессоров.
Фиг.5 показывает блок-схему алгоритма по меньшей мере одного варианта осуществления пояснительного процесса обеспечения энергосберегающего планирования потоков и динамического использования процессоров.
Фиг.6 показывает другую блок-схему алгоритма по меньшей мере одного варианта осуществления пояснительного процесса обеспечения энергосберегающего планирования потоков и динамического использования процессоров, дополнительно включающего учет простоя доменов.
Фиг.7 показывает иллюстративную блок-схему алгоритма по меньшей мере одного варианта осуществления предоставления дополнительных настроек для энергосберегающего планирования потоков и динамического использования процессоров.
Подробное описание
Процессоры могут задействовать состояния простоя с низкой мощностью, включающие состояние простоя, которое не потребляет энергии (ноль ватт). Операционная система может вводить один или несколько процессоров (или просто "ядер") в состояние простоя (то есть состояние ожидания процессора), когда отсутствует полезная работа для выполнения. Максимизация времени, проведенного в этих состояниях малой мощности, может увеличить энергетическую эффективность системы и/или увеличить производительность батареи. В дополнение к этим состояниям простоя процессора процессоры также могут предоставлять средства управления для масштабирования частоты процессора либо отдельно, либо в сочетании с одновременным понижением напряжения на ядре процессора. Эти средства управления вместе могут называться функциями управления питанием процессора (PPM).
Процессоры могут способствовать выполнению миллиардов исполнений в секунду. Обладая такой высокой способностью для исполнения машинных команд, процессоры могут иметь значительное колебание в рабочей нагрузке за короткие периоды времени. Например, такие короткие периоды, как задержка между нажатиями клавиш машинистки, могут дать возможность PPM мгновенно уменьшить мощность процессора или даже войти в короткое состояние ожидания. Хотя доля секунды в мощности может показаться незначительной, за длительные периоды времени совокупное энергосбережение может быть значительным.
Поэтому PPM может снизить потребности в энергии путем перевода неиспользуемых процессоров в состояние малой мощности или состояние ожидания ("приостановленное" состояние), когда процессоры не имеют достаточной рабочей нагрузки, чтобы обосновать состояния с большей мощностью. Приостановленные ядра могут помещаться в состояние простоя процессора (C-состояние в интерфейсе ACPI), использующего минимальное количество энергии или вообще никакой энергии. Активная работа, которая должна выполняться в системе, будет уплотнена по времени на работающих процессорах.
Соответственно, методики и устройства для содействия обеспечению энергосберегающего планирования потоков и динамического использования процессоров раскрываются в этом документе в различных разделах, которые следуют ниже.
Пояснительное окружение
Фиг.1 - пояснительная система 100, которая может использоваться для реализации по меньшей мере одного варианта осуществления энергосберегающего планирования потоков и динамического использования процессоров. Система 100 включает в себя вычислительное устройство 102. Например, вычислительное устройство в числе других возможных вычислительных устройств может быть мобильным компьютером 102(1), настольным компьютером 102(2) и/или сервером 102(N). В самой базовой конфигурации вычислительное устройство 102 обычно включает в себя один или несколько процессоров 104 ("процессоры"). Например, процессоры 104 могут быть по меньшей мере одним из нескольких независимых процессоров, сконфигурированных параллельно или последовательно, и многоядерным модулем обработки, отдельно или в различных сочетаниях. Многоядерный процессор может содержать два или более процессора ("ядра"), заключенных в одну микросхему или интегральную схему. Термины "процессор", "ядро" и "логический процессор" могут использоваться взаимозаменяемо во всем этом раскрытии изобретения, пока специально не указано иное со ссылкой на конкретный элемент.
К тому же вычислительное устройство 102 включает в себя системную память 106. В зависимости от точной конфигурации и типа вычислительного устройства системная память 106 может быть энергозависимой (например, RAM) энергонезависимой (например ROM, флэш-память и т.д.) или каким-нибудь сочетанием из двух типов. Системная память 106 обычно содержит в себе операционную систему 108, один или несколько программных модулей 110 и может включать в себя программные данные 112.
Операционная система 108 может включать в себя диспетчер 114 питания ядра, который несет ответственность за управление использованием функций управления питанием процессора (PPM). Диспетчер 114 питания ядра может регулировать производительность (например, скорость) процессоров 104, используя состояние производительности (p-состояние) или состояние линейной регулировки (t-состояние). Например, диспетчер 114 питания ядра может уравновешивать энергопотребление процессоров 104 с текущей рабочей нагрузкой, чтобы сберегать энергию, когда это возможно. Дополнительно или в качестве альтернативы диспетчер 114 питания ядра может разрешить процессорам 104 обеспечивать максимальную производительность обработки в ответ на потребность в рабочей нагрузке. Дополнительно диспетчер 114 питания ядра может переводить один или несколько процессоров 104 в состояние ожидания с малой мощностью, когда никакие активные потоки не готовы к выполнению, например потоки программного модуля 110.
Операционная система 108 может предоставлять модули для организации очередей, планирования, приоритизации и диспетчеризации единиц работы (потоков) по всем доступным процессорам 104 в системе 100, которые могут быть представлены как коллекция модулей, называемая вместе планировщиком 116 потоков ядра. Когда активный поток готов к выполнению, планировщик 116 ядра с помощью одного или нескольких модулей распределяет поток любому доступному ядру для обработки.
Вообще говоря, диспетчер 114 питания ядра и планировщик 116 ядра имеют конкурирующие интересы в управлении и работе процессоров 104. Диспетчер питания ядра конфигурируется для минимизации энергопотребления процессоров 104, и поэтому пытается снизить частоту и/или состояние питания у одного или нескольких процессоров 104. Наоборот, планировщик 116 ядра конфигурируется для максимизации производительности обработки и соответственно способствует распределению работы всем процессорам 104.
Вычислительное устройство 102 может обладать дополнительными признаками или функциональными возможностями. Например, вычислительное устройство 102 также может включать в себя дополнительные устройства хранения данных (съемные и/или несъемные), такие как, например, магнитные диски, оптические диски или лента. Такое дополнительное хранилище иллюстрируется на фиг.1 с помощью съемного запоминающего устройства 118 и несъемного запоминающего устройства 120. Компьютерные носители информации могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Системная память 106, съемное запоминающее устройство 118 и несъемное запоминающее устройство 120 и являются примерами компьютерных носителей информации. Таким образом, компьютерные носители информации включают в себя, но не ограничиваются, RAM, ROM, EEPROM, флэш-память или другую технологию памяти, компакт-диск, универсальные цифровые диски (DVD) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, накопитель на магнитных дисках или другие магнитные запоминающие устройства или любой другой носитель, который может использоваться для хранения нужной информации и к которому можно обращаться с помощью вычислительного устройства 102. Любые такие компьютерные носители информации могут быть частью вычислительного устройства 102.
Вычислительное устройство 102 также может иметь одно или несколько устройств 122 ввода, таких как клавиатура, мышь, перо, устройство речевого ввода, устройство сенсорного ввода и т.д. Одно или несколько устройств 124 вывода, таких как дисплей, динамики, принтер и т.д., также могут включаться либо непосредственно, либо через соединение с вычислительным устройством 102.
Вычислительное устройство 100 также может включать в себя соединение 126 связи, которое позволяет устройству обмениваться данными с другими вычислительными устройствами, например по сети. Соединение 126 связи является одним примером средств связи. Средства связи, как правило, могут реализовываться с помощью машиночитаемых команд, структур данных или программных модулей. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или несколько своих характеристик, установленных или измененных таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, средства связи включают в себя проводные средства, такие как проводная сеть или прямое проводное соединение, и беспроводные средства, такие как акустические, радиочастотные, инфракрасные и другие беспроводные средства. Машиночитаемые носители могут быть любыми доступными носителями, к которым можно обращаться с помощью вычислительного устройства 102. В качестве примера, а не ограничения, машиночитаемые носители могут содержать "компьютерные носители информации" и "средства связи".
Различные модули и методики могут быть описаны в этом документе в общем контексте исполняемых компьютером команд, например программных модулей, выполняемых одним или несколькими компьютерами или иными устройствами. Как правило, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и так далее для выполнения конкретных задач или реализации конкретных абстрактных типов данных. Эти программные модули и т.п. могут выполняться в виде машинного кода или могут загружаться и выполняться, например на виртуальной машине или в другой среде выполнения программы с оперативной компиляцией. Как правило, функциональные возможности программных модулей могут быть объединены или распределены по желанию в различных вариантах осуществления. Реализация этих модулей и методик может храниться или передаваться посредством какого-нибудь вида машиночитаемых носителей.
Конфигурация иллюстративного процессора
Фиг.2 показывает блок-схему алгоритма по меньшей мере одного варианта осуществления процесса 200 создания маски приостановки ядер и реализации маски с помощью планировщика потоков, чтобы разрешить распределение работы процессорам. Процесс 200 иллюстрируется в виде набора этапов в логической блок-схеме, которая представляет последовательность операций, которые могут быть реализованы в аппаратных средствах, программном обеспечении или их сочетании. Применительно к программному обеспечению этапы представляют собой исполняемые компьютером команды, которые при выполнении одним или несколькими процессорами выполняют перечисленные операции. Как правило, исполняемые компьютером команды могут включать в себя процедуры, программы, объекты, компоненты, структуры данных и т.п., которые выполняют конкретные функции или реализуют конкретные абстрактные типы данных. Порядок, в котором описываются операции, не предназначен для толкования в качестве ограничения, и любое количество описанных этапов может объединяться в любом порядке и/или параллельно для реализации процесса. Другие процессы, описанные во всем этом раскрытии изобретения в дополнение к процессу 200, следует интерпретировать соответствующим образом. Для целей обсуждения процесс 200 описывается со ссылкой на систему 100 из фиг.1.
Как показано на фиг.2, в системной памяти создается маска приостановки ядер на этапе 202. Например, диспетчер 114 питания ядра, который находится в операционной системе 108, может создать маску приостановки ядер на этапе 202. Пояснительная маска 204 приостановки ядер ("битовая маска" или просто "маска") может предоставлять ячейку, представляющую соответствующее ядро. Как показано на фиг.2, пояснительная система включает в себя восемь ядер, однако может использоваться больше или меньше ядер. Битовая маска 204 включает в себя двоичное значение в каждой ячейке, где "1" представляет приостановленное ядро, а "0" представляет работающее ядро. Приостановленное ядро является ядром, которое помещается в состояние ожидания с малой мощностью. В некоторых вариантах осуществления приостановленное ядро не имеет энергопотребления, соответственно использует ноль ватт. В некоторых вариантах осуществления ядра обладают зависимостями, например совместно используемой аппаратной схемой. Если оба ядра можно ввести в состояние малой мощности, зависимости также могут быть неявно введены в состояние малой мощности. Таким образом, может выбираться маска приостановки ядер, которая будет максимизировать энергосбережение по сравнению с другими масками. Например, выключение всех ядер в однопроцессорном разъеме могло бы сэкономить больше энергии, чем выключение половины ядер в двухпроцессорных разъемах. Битовая маска 204 включает в себя четыре приостановленных ядра, пронумерованных (справа налево, от нуля до семи): 3, 5, 6 и 7. Из этого следует, что ядра 0, 1, 2 и 4 являются работающими ядрами.
В соответствии с одним или несколькими вариантами осуществления, битовую маску 204 можно инвертировать на этапе 206, чтобы создать инвертированную битовую маску 208. Например, диспетчер 114 питания ядра может создать инвертированную битовую маску 208. Инвертированная битовая маска включает в себя инвертированное двоичное значение для каждой ячейки (то есть ядра). Соответственно ядра, обозначенные "1", могут быть предпочтительными для обработки данных, тогда как ядра, обозначенные "0", не могут быть предпочтительными для обработки потоков приложений.
На этапе 210 определяется план приложений, например с помощью планировщика 116 ядра. Например, вычислительное устройство 102 может выполнять один или несколько программных модулей 110. Некоторые из программных модулей 110 могут включать в себя однопоточные программы, тогда как другие программные модули могут включать в себя многопоточные модули. Как правило, планировщик 116 ядра назначает каждый поток доступному ядру на основе некоторого количества факторов, таких как приоритет, доступность ядра, привязка (ограничения планирования) и другие факторы. Когда потоки численно превосходят доступные ядра, тогда планировщик 116 ядра чередует потоки или иным образом планирует потоки, чтобы обеспечивать, что потоки в конечном счете развиваются (то есть выполняются процессором). Процессоры 104 могут чередовать потоки на одном ядре много раз в секунду, соответственно предоставляя возможности планировщику 116 ядра эффективно назначать потоки доступным ядрам.
Хотя многие программные модули не распределяют потоки определенными процессорами, некоторые сложные программные модули могут требовать, чтобы поток выполнялся определенным процессором, что называется заданием привязки потока к процессору. Маски 212 привязки потоков программных модулей представляют собой ядра, запрошенные для обработки потоков, что определяется программными модулями 110. Например, первый программный модуль может иметь первую маску 212(1) привязки, которая указывает, что потоки должны планироваться планировщиком 116 ядра на ядра 0 и 1. Вторая маска 212(2) привязки, ассоциированная со вторым программным модулем, может указывать, что потоки могут назначаться на ядра 2 и 3, тогда как другой программный модуль может включать в себя маску 212(P) привязки, указывающую, что потоки могут назначаться на любое из доступных ядер (все ядра показаны выбранными). Следует отметить, что маска 212(P) привязки является особым случаем, в котором она практически не включает в себя ограничений для распределения потоков по ядрам.
В некоторых вариантах осуществления на этапе 214 маски 212 привязки программных модулей объединяются, по одной за раз, с инвертированной битовой маской 208, используя оператор 216 "И" для определения набора подходящих процессоров для набора 218 доступных процессоров. На этапе 220 первая маска 212(1) привязки используется для создания первого набора 218(1) доступных процессоров. Процесс 200 может включать в себя итеративный процесс из операций 210, 214 и 220 для каждого программного модуля (то есть для каждого сочетания инвертированной битовой маски 208 и маски 212 привязки). Таким образом, вторая маска 212(2) привязки используется для создания второго набора 218(2) доступных процессоров во время второй итерации операций 210, 214 и 220, и так далее.
Как обсуждалось выше, двоичные значения для каждого ядра (например, ядра 0, …, ядра 7) используются для определения набора 218 доступных процессоров для планирования потоков. Оператор 216 "И" возвращает двоичное значение "1" ядра, где оба операнда (то есть объединенные двоичные значения для ядра) включают в себя "1", представляющую поток, связанный с определенным ядром. Например, когда первая маска 212(1) привязки объединяется с инвертированной битовой маской 208, оба ядра 0 и 1 являются активными ядрами и вернут двоичное значение ядра "1", тогда как оставшиеся ядра 2-7 включают в себя двоичное значение ядра "0", как пояснительно показано в первом наборе 218(1) доступных процессоров.
Вторая маска 212(2) привязки включает в себя значение ядра "1" у ядра 3, тогда как инвертированная битовая маска 208 указывает, что ядро 3 приостановлено. Планировщик 116 ядра может выбрать переопределение инвертированной битовой маски, чтобы обеспечить вторую маску 212(2) привязки, которая представлена во втором наборе 218(2) доступных процессоров, где ядро 3 включает в себя значение ядра "1", вследствие этого перенося работу на ядро, обозначенное как приостановленное в инвертированной битовой маске 208 (которое может быть работающим впоследствии). В некоторых вариантах осуществления поток может планироваться с использованием любого количества эвристических правил. Оптимальное ядро в привязке потока может использоваться наряду с игнорированием инвертированной битовой маски 208. Если оптимальное ядро приостановлено, то нейтрализация может включать в себя выбор процессора в том же узле NUMA (доступ к неоднородной памяти), что и предпочтительное ядро. Планировщик рассматривает инвертированную маску приостановки ядер в качестве рекомендации предпочтительных расположений для выполнения потока, но он выберет среди жесткого ограничения (жесткое соответствие) того, что он считает наиболее производительным вариантом.
Там, где все ядра обозначены как доступные, например в маске 212(P) привязки, двоичное значение может игнорироваться, потому что указывается, что программный модуль позволяет потокам выполняться любым ядром. Маска 212(P) привязки может включать в себя запланированные ядра на любых ядрах, указанных инвертированной битовой маской 208, например ядра 0, 1, 2 и 4, как представлено набором 218(P) доступных процессоров с помощью значений ядер, показывающих "1/0" (либо "1", или "0", тогда как по меньшей мере одно ядро должно иметь значение ядра "1", чтобы разрешить планирование работы в маске 212(P) привязки). В некоторых вариантах осуществления набор 218(P) доступных процессоров может выбирать ядра, которые являются работающими и простаивают при определении распределения работы доступным ядрам. В идеале, перенос работы может распределить работу ядрам 0, 1, 2 и 3, соответственно оставляя ядро 4 неиспользуемым и, по возможности, приостановленным в последующем действии. Другие соображения, которые обсуждаются ниже, могут определять, каким ядрам распределяется работа в ответ на маску 212(P) привязки, чтобы создать предпочтительное расположение. Например, предпочтительное расположение может основываться на таких факторах, как необязательная эффективность обращения к памяти.
Операции 210, 214 и 220 могут использоваться для планирования потоков, как описано выше со ссылкой на фиг.2. К тому же в процессе 200 может выполняться другая работа с помощью операций 210, 214 и 220, например отложенный вызов процедуры (DPC), таймеры, прерывания обработки или другая работа процессора.
В соответствии с одним или несколькими вариантами осуществления, фиг.2 иллюстрирует примерное использование 222 ядер в течение временного интервала. Например, сочетание ядер, которые активны в наборе 218 доступных процессоров, может привести к использованию 222 ядер в течение заданного интервала контроля времени, например 100 миллисекунд без ограничений. Ядро 4 в использовании 222 ядер может указываться или не указываться как используемое в зависимости от того, запланирована ли работа на ядро 4 в наборе 218(P) доступных процессоров, как обсуждалось выше. С точки зрения диспетчера 114 питания ядра, использование 222 ядер в идеале будет включать в себя значение ядра "0" для ядра 4, соответственно минимизируя количество работающих ядер и приводя к сокращению энергопотребления. Независимо от использования 222 ядер, для следующего временного интервала может создаваться новая маска приостановки ядер, которая может использовать информацию из использования 222 ядер, чтобы определить новую маску приостановки ядер. В некоторых случаях ядро 3 может не потребоваться, потому что ядро 2 может иметь достаточную загрузку обработки, чтобы соответствовать второй маске 212(2) привязки, и по-прежнему является работающим ядром.
Фиг.3А и 3В показывают пояснительные использования ядер в соответствии по меньшей мере с одним вариантом осуществления раскрытия изобретения. Точнее говоря, фиг.3В показывает пояснительную модификацию использований ядер в ответ на использование ядра в пояснительной системе, которое показано на фиг.3А.
В соответствии с одним или несколькими вариантам осуществления, фиг.3А показывает систему 300, включающую некоторое количество ядер 302, 304, 306 и 308, хотя больше или меньше ядер может включаться в альтернативных вариантах осуществления системы 300. Диспетчер 114 питания ядра может управлять ядрами с использованием политики мощности. Политика мощности может определять количество активных ядер и влиять на то, как диспетчер 114 питания ядра может вычислять набор доступных ядер. Политика мощности может использоваться для ограничения количества доступных ядер или для разрешения диспетчеру 114 питания ядра масштабировать количество доступных ядер. Количество ядер, поддерживаемых платформой, может меняться у разных систем, соответственно необходима гибкая схема, чтобы позволить диспетчеру питания ядра задавать количество ядер, не зная заранее, сколько ядер доступно. Поэтому в некоторых вариантах осуществления количество ядер для использования может выражаться в виде доли от максимального использования ядра. Соответственно, реализация ядер может потребовать округления доли до следующего доступного числа, которое представляет количество ядер. Например, доля использования ядер может вычисляться как 60 процентов. Если система включает в себя четыре ядра, то доля может округляться до 75%, и три ядра могут быть работающими, в то время как одно ядро приостановлено.
Каждое ядро включает в себя использование 310 ядра ("используемость ядра"), которое представляет рабочую нагрузку этого ядра, выраженную в виде доли рабочего времени ядра в общем времени, независимо от состояния производительности ядра. Например, ядро 0 302 может иметь используемость ядра в 80%, указывающую, что ядро выполняет на 20% меньше работы, чем максимальная возможность рабочей нагрузки у ядра "0". Соответственно, используемость ядра в 100% представляет ядро, работающее с максимальной производительностью, тогда как ядро, имеющее используемость ядра в 0%, представляет неиспользуемое ядро. В некоторых вариантах осуществления диспетчер 114 питания ядра может контролировать используемость 310 ядра.
К тому же каждое ядро может включать в себя состояние 312 производительности (p-состояние в усовершенствованном интерфейсе конфигурирования и управления энергопитанием (ACPI)). p-состояние 312 является настройкой частоты и напряжения ядра и управляется диспетчером 114 питания ядра. p-состояние 312 аналогично дроссельному регулированию в двигателе. p-состояние 312 в 100% представляет состояние максимальной производительности ядра, тогда как p-состояние в 50% представляет ядро на половине максимальной частоты с соответствующим пониженным уровнем напряжения ядра. Следует отметить, что фактическое энергопотребление ядра может не совпадать или быть пропорциональным p-состоянию 312. Например, удвоение p-состояния 312 у ядра может не удвоить энергопотребление ядра из-за других факторов, например утечки мощности ядра, базового энергопотребления ядра и/или других факторов. В некоторых вариантах осуществления диспетчер 114 питания ядра может определять и/или управлять p-состоянием 312, например путем обращения к политике мощности.
Каждое ядро включает в себя выходное значение 314 использования ("выходная используемость"), которое представляет рабочую нагрузку ядра относительно общей возможности рабочей нагрузки. Например, выходная используемость 314 может иметь размах 0-10000, где 0 представляет отсутствие использования, а 10000 представляет максимальное использование. Выходная используемость 314 может вычисляться путем умножения используемости 310 ядра и p-состояния 312. Например, ядро 0 302 включает в себя используемость ядра в 80% и p-состояние в 80%, поэтому выходная используемость равна 6400. В некоторых вариантах осуществления выходная используемость 314 используется диспетчером 114 питания ядра для принятия решений по приостановке ядра и/или определения настроек p-состояния 312, например со ссылкой на политику мощности.
В некоторых вариантах осуществления система 300 может включать в себя блок 316 ядер, например первый блок 316(1) ядер и второй блок 316(2) ядер, однако в системе 300 может быть реализовано больше или меньше блоков ядер. Блок 316 ядер может представлять собой платформу, имеющую несколько ядер с единой схемой, например двухъядерный или многоядерный процессор. Каждый блок 316 ядер может включать в себя уникальные характеристики энергопотребления. Например, ядро может включать в себя энергопотребление активного уровня, утечку ядра или другие рассеивания мощности, которые возникают, когда одно из ядер в блоке является работающим. Например, если оба ядра в первом блоке 316(1) ядер являются работающими и обладают выходной используемостью в 10000, то объединенное энергопотребление может быть 2x ватт. Если ядро 0 302 в первом блоке 316(1) ядер впоследствии приостанавливается (например, выходное использование равно 0), а ядро 1 304 остается без изменений, то объединенное энергопотребление может быть больше, чем x ватт из-за факторов, ассоциированных с блоком 316 ядер, например утечки мощности, активного энергопотребления и/или других факторов. Когда ядро 1 впоследствии приостанавливается, результирующее энергопотребление может быть равно 0 ватт. Поэтому может быть выгодным приостановить ядра так, чтобы полные блоки ядер стали приостановленными до того, как другие ядра впоследствии будут приостановлены, соответственно максимизируя энергосбережение.
Как показано на фиг.3А, пояснительная реализация системы 300 включает в себя приостанавливаемое ядро 3 308, в то время как другие ядра являются работающими (то есть активными). Хотя ядро 3 включает в себя p-состояние в 100%, это может не указывать, что энергия подается к ядру 3. Иначе говоря, диспетчер 114 питания ядра может приостановить ядро, оставляя при этом p-состояние на уровне, превышающем 0%.
В примерном сценарии использования диспетчер 114 питания ядра может вычислить выходную мощность системы 300, чтобы определить общую используемость системы в 12600 (то есть 6400+3200+3000=12600) из максимальной общей используемости системы в 30000 (то есть 3 работающих ядра×10000=30000). Числа использования, приведенные выше, предназначены быть поясняющими по сути вычислений, которые могут выполняться с использованием общей используемости системы, и соответственно не ограничивают раскрытие изобретения.
Фиг.3В показывает пояснительную модификацию использования ядер в измененной системе 318 в ответ на общее использование системы, которое показано на фиг.3А. Измененная система 318 включает в себя изменение в приостановленном/работающем состоянии у ядер 302, 304, 306 и 308. Как отмечалось выше, со ссылкой на систему 300, общая используемость системы вычислялась равной 12600 в примере. Поэтому диспетчер 114 питания ядра может приостановить дополнительное ядро без уменьшения возможности системы соответствовать текущим потребностям рабочей нагрузки, потому что общая используемость системы меньше максимальной возможности использования у двух ядер (то есть 12600<20000). В соответствии с некоторыми вариантами осуществления диспетчер 114 питания ядра может выбрать ядро для приостановки, возможно на основе политики мощности или других факторов, что может быть полностью прозрачно для пользователя системы. Прозрачность для пользователя включает в себя отсутствие воспринимаемого пользователем влияния на производительность системы или приложения, за исключением принципиальной цели, состоящей в лучшем КПД. Любые изменения, необходимые для реализации приостановки ядер, могут ограничиваться внутренними компонентами операционной системы очень низкого уровня, и соответственно не может быть поведенческого или пробного изменения для конечных пользователей, ассоциированного с приостановкой ядер.
Когда приостанавливается второе ядро, максимальная общая используемость системы у измененной системы упадет до 20000 (2 ядра×10000). Диспетчер 114 питания ядра может приостановить любое из ядер, которые были активны в предыдущем состоянии (как показано на фиг.3А). Как обсуждалось выше, может быть выгодным приостановить ядро 2 306, чтобы полностью приостановить второй блок 316(2) ядер, что приводит к приостановленному блоку 320 ядер. Соответственно, приостановленный блок 320 ядер может увеличить энергосбережение по сравнению с приостановкой ядра 0 302 или ядра 1 304 вместо ядра 2 306.
Чтобы обеспечить прозрачное изменение для любых пользователей системы 318, выходная используемость приостановленного ядра (ядро 2) должна поглощаться или перераспределяться оставшимся работающим ядрам (то есть ядру 0 и ядру 1). Из фиг.3А выходная используемость ядра 2 была равна 3000. Поэтому в одном случае работающие ядра могут в равной степени разделить нагрузку с помощью того, что каждое ядро имеет измененную выходную используемость 322, которая предполагает дополнительную выходную используемость по 1500 для каждого ядра. В некоторых случаях могут использоваться другие разделения общей используемости приостановленного ядра при распределении используемости работающим ядрам. Например, работающее ядро может работать близко к возможности (общая используемость около 10000, что является максимальной используемостью). В таком случае ядра с большей пропускной способностью могут поглотить больше общей используемости приостановленного ядра.
В одном или нескольких вариантах осуществления диспетчер 114 питания ядра может регулировать используемость 310 ядра у ядра 0 302 и ядра 1 304 до 79% и 47% соответственно. К тому же диспетчер 114 питания ядра может увеличить p-состояние 312 до 100% для обоих работающих ядер. Поэтому общая используемость системы у измененной системы 318 остается равной общей используемости системы у системы 300 на 12600.
Измененная система 318 иллюстрирует одно возможное изменение приостановленного/работающего состояния, используемости 310 ядра и/или p-состояния 312, чтобы обеспечить изменение ядра, которое прозрачно для пользователей, приводя при этом к сниженному энергопотреблению для измененной системы 318. Однако в системе 318 могут быть сделаны многие другие изменения, которые приводят к сниженному энергопотреблению и которые прозрачны для пользователей. Например, используемость 310 ядра у ядра 1 304 может быть увеличена до 94%, тогда как p-состояние уменьшено до 50%, приводя к общей используемости в 4700. Стратегия изменения может определяться политикой мощности, которая может учитывать конкурирующие интересы диспетчера 114 питания ядра и планировщика 116 ядра.
В политике мощности могут быть реализованы другие соображения, которые могут оказывать влияние на измененную систему 318. Например, потоки, которые не чувствительны ко времени (например, фоновые потоки), могут обладать меньшим влиянием на решение по приостановке ядер, при этом сохраняя изменения прозрачными для пользователей. Точнее говоря, с помощью включения распределения среднего времени выполнения по приоритетам потоков, выполненных на данном ядре, диспетчер 114 питания ядра может масштабировать вычисленное использование ядра таким образом, что низкоприоритетные потоки и рабочие нагрузки не учитываются так же, как высокоприоритетные потоки и рабочие нагрузки.
Фиг.4 показывает блок-схему алгоритма по меньшей мере одного варианта осуществления пояснительного процесса 400 оценивания планирования потоков и динамического использования процессоров и определения измененной конфигурации для процессоров. Процесс 400 может быть реализован диспетчером 114 питания ядра в дополнение к другим модулям в операционной системе 108 и/или находящимся в системной памяти 106.
В соответствии с одним или несколькими вариантами осуществления, диспетчер 114 питания ядра оценивает период времени для контроля выходной используемости 314 (среди прочих факторов, включающих используемость 310 ядра, p-состояние 312 и т.д.). Может выбираться период времени, который равен или длиннее временного интервала, доступного для обработки каждого потока. На заданной частоте диспетчер 114 питания ядра может начать контроль ядер.
На этапе 404 диспетчер 114 питания ядра может вычислить общее использование системы и максимальное общее использование системы. Диспетчер 114 питания ядра может оценить политику мощности на этапе 406 для определения, как регулировать использование ядер, чтобы уравновесить потребности энергосбережения у диспетчера 114 питания ядра и потребности доступности ядер (производительности обработки) у планировщика 116 ядра. На этапе 408 другие факторы могут использоваться для определения, регулировать ли использование ядер, и если да, то как регулировать использование для достижения целей системы, например прозрачного изменения для пользователей, удовлетворения тепловых требований и/или удовлетворения других ограничений.
На этапе 410 диспетчер 114 питания ядра может вычислить новые конфигурации для ядер. Например, диспетчер питания ядра может вычислить новую битовую маску 202, которая показана на фиг.2. В одном или нескольких вариантах осуществления на этапе 410 битовая маска может регулироваться для создания набора 218 доступных процессоров. На этапе 412 диспетчер 114 питания ядра может реализовать конфигурации с этапа 410. В некоторых вариантах осуществления процесс 400 может повторяться для создания динамического распределения ядер, например путем повторения с заранее установленной частотой. В качестве альтернативы процесс 400 может создать статическое распределение ядер в течение заданного периода времени.
Иллюстративное функционирование
Фиг.5 показывает блок-схему алгоритма по меньшей мере одного варианта осуществления пояснительного процесса 500 обеспечения энергосберегающего планирования потоков и динамического использования процессоров. Процесс 500 следует толковать аналогично процессу 200 из фиг.2 в отношении упорядочения и реализации процесса. Например, порядок, в котором описываются операции в процессе 500, не предназначен для толкования в качестве ограничения, и любое количество описанных этапов может объединяться в любом порядке и/или параллельно для реализации процесса. Для целей обсуждения процесс 500 описывается со ссылкой на систему 100 из фиг.1.
В соответствии с одним или несколькими вариантами осуществления, периодическая оценочная процедура "TimeCheck" может начинаться на этапе 502. Например, отложенный вызов процедуры (DPC) может начинаться на этапе 502. В некоторых вариантах осуществления вводится конечный автомат на каждом ядре посредством DPC, работающий на фиксированной периодической частоте, сконфигурированной с помощью параметра "TimeCheck" в политике мощности для значения времени, например 100 мс, 50 мс или другого значения времени. На этапе 504 диспетчер 114 питания ядра может собрать показатели для ядер. Например, DPC ставится в очередь на каждое активное в настоящее время ядро, чтобы снять показатели для активных ядер. Показатели могут включать в себя использование ядра, распределение приоритета потоков, среднее время ожидания для готовых потоков для каждого ядра и/или показатели успеха и сбоя для пребывания в состоянии простоя, среди других возможных показателей.
На этапе 506 диспетчер 114 питания ядра может вычислить битовую маску, например маску 204 приостановки ядер. Например, новое значение может вычисляться для целевого количества активных ядер на основе пороговых величин использования, политики мощности и/или любых отношений зависимости. На этапе 508 активный набор может обновляться, например путем реализации частей процесса 200, определяемого диспетчером 114 питания ядра, чтобы создать набор 218 доступных процессоров.
На этапе 510 активный набор может быть реализован операционной системой 108. Диспетчер 114 питания ядра на этапе 512 может определить, добавлены ли ядра (работающие). Если ядра являются работающими, то на этапе 514 планировщик 116 ядра может быть уведомлен и может начать использование работающих ядер для планирования потоков. Эти работающие ядра могут быть либо целью удаленного планирования потоков (то есть от другого процессора), либо могут заранее решить выбирать потоки от других процессоров. В некоторых вариантах осуществления потоки могут перераспределяться для выполнения на работающих ядрах, посредством этого уменьшая рабочую нагрузку с других работающих ядер.
На этапе 516 предполагаемое выходное использование ядра может вычисляться диспетчером 114 питания ядра и может включать в себя работающие ядра с этапа 506. Таким образом, новое значение для количества активных ядер, определенное на этапе 506, используется для вычисления предполагаемого использования процессора. На этапе 518 диспетчер 114 питания ядра может вычислить новое значение для p-состояния. В некоторых вариантах осуществления DPC назначается на каждое ядро, чтобы обновить целевое p-состояние. В примере, если предполагаемое использование увеличивается, то значение p-состояния также может увеличиваться, если никакие ядра не работают на этапе 512. Однако если ядра являются работающими на этапе 512, то p-состояние может увеличиваться или уменьшаться для уравновешивания потребностей энергосбережения у диспетчера 114 питания ядра с потребностями обработки у планировщика 116 ядра.
На этапе 520 диспетчер 114 питания ядра определяет, следует ли изменять текущие значения p-состояния и/или t-состояния (состояние линейной регулировки), на основе результатов вычисления на этапе 518. Если на этапе 520 изменяются p-состояние и/или t-состояние, то диспетчер 114 питания ядра может поставить в очередь переходные DPC на соответствующие ядра на этапе 522. Таким образом, запланированные планировщиком 116 ядра потоки могут назначаться ядрам, работающим в новом p-состоянии и/или t-состоянии, как реализовано на этапе 520.
На этапе 524 диспетчер 114 питания ядра определяет, приостановлены ли ядра на этапе 506. Например, предполагаемое выходное использование ядра с этапа 516 может быть меньше текущего использования. Если ядра приостановлены на этапе 524, то диспетчер 114 питания ядра может уведомить планировщика 116 ядра на этапе 526, чтобы прекратить планирование потоков на недавно приостановленные ядра. Для любых ядер, добавленных или удаленных из маски активных ядер, планируется DPC для этого ядра. Как описано со ссылкой на фиг.3А и 3В, работа с приостановленного ядра может перераспределяться одному или нескольким работающим ядрам. В некоторых вариантах осуществления недавно приостановленные ядра могут быть введены в самое глубокое C-состояние, которое доступно. В конечном счете на этапе 528 процесс 500 может повторяться.
Фиг.6 показывает другую блок-схему алгоритма по меньшей мере одного варианта осуществления пояснительного процесса 600 обеспечения энергосберегающего планирования потоков и динамического использования процессоров, дополнительно включающего учет простоя доменов. Процесс 600 включает в себя многие из подпроцессов, которые описаны на фиг.5, и поэтому те подпроцессы из фиг.5 не будут описываться снова.
На этапе 602 диспетчер 114 питания ядра может определить, задействован ли учет простоя доменов. Если учет простоя доменов задействован, то на этапе 604 владелец домена снимает показатели для домена (например, блока 316 ядер или всех ядер).
В некоторых вариантах осуществления учет простоя доменов может инициировать другое решение на этапе 606. Если задействован учет простоя доменов, то диспетчер 114 питания ядра может вычислить целевое p-состояние домена на этапе 608. В конечном счете на этапе 610 процесс 600 может повторяться.
Фиг.7 показывает блок-схему алгоритма по меньшей мере одного варианта осуществления процесса 700 предоставления дополнительных настроек политики мощности и других входных данных для энергосберегающего планирования потоков и динамического использования процессоров. В некоторых вариантах осуществления приостановка ядер может быть реализована в виде расширения к существующему конечному автомату, который вычисляет целевое состояние, которое нужно использовать для состояний производительности процессора. Точное количество ядер, которое должно использоваться в любое заданное время, будет определяться на основе некоторого количества факторов, которые описаны ниже со ссылкой на процесс 700.
В соответствии с одним или несколькими вариантами осуществления, текущая политика мощности может использоваться для задания количества ядер для использования на этапе 702. На этапе 704 может задаваться минимальное или максимальное количество ядер. Диспетчер 114 питания ядра может вычислить количество активных ядер, необходимое для выполнения заданной рабочей нагрузки энергосберегающим способом. В некоторых случаях запуск минимального количества ядер может быть выгодным для энергосбережения и помогает диспетчеру 114 питания ядра. Наоборот, запуск максимального количества ядер может обеспечивать наивысший уровень производительности, соответственно помогая планировщику 116 ядра.
На этапе 706 дополнительные параметры политики мощности для приостановки ядер могут быть реализованы диспетчером 114 питания ядра с использованием одного или нескольких подпроцессов 706(1), …, 706(4). На этапе 706(1) может регулироваться необходимый интервал времени для приостановки и/или возобновления работы ядер. Например, частота приостановки и/или возобновления работы ядер может управляться путем изменения интервала. В некоторых вариантах осуществления ядра могут приостанавливаться в первом интервале и возобновлять работу во втором интервале. Например, политика, способствующая энергосбережению, может приостанавливать ядра каждые 100 мс, но может возобновлять работу ядер каждые 500 мс.
На этапе 706(2) диспетчер 114 питания ядра может реализовать политику увеличения и/или уменьшения. Например, первый вариант политики может единовременно приостанавливать только установленное количество ядер, например одно ядро единовременно. Второй вариант политики может приостанавливать или возобновлять работу ядер для достижения идеального использования ядра, соответственно единовременно приостанавливая и/или возобновляя работу нескольких ядер. Третья политика может ударяться из одной крайности в другую (либо приостанавливать как можно больше, либо возобновлять как можно больше).
На этапе 706 (3) необходимая пороговая величина использования может быть увеличена или уменьшена на основе занятости процессоров. Например, процессор может не подвергаться изменению в приостановленном или работающем состоянии, пока процессор (или другие процессоры) не включит состояние занятости для заданного периода времени. Это может уменьшить переключение процессора между приостановленным и работающим состоянием в быстрой последовательности.
В конечном счете, на этапе 706(4) может быть реализована политика для масштабирования работающих ядер. Например, диспетчер 114 питания ядра может вычислить идеальное состояние производительности целевого процессора на основе количества ядер процессора в активном наборе в настоящее время. Чтобы обеспечить наилучший компромисс между энергосбережением, производительностью и реакцией на определенные рабочие нагрузки, диспетчер 114 питания ядра может преимущественно запустить меньшее количество процессоров в состоянии с большей производительностью, или наоборот, запустить большее количество ядер в состоянии с меньшей производительностью.
На этапе 708 эвристические правила ядра и/или системы могут быть реализованы диспетчером 114 питания ядра с использованием одного или нескольких подпроцессов 708(1) и 708(2). На этапе 708(1) диспетчер 114 питания ядра может вычислить необходимое количество активных ядер и оптимальное состояние производительности у ядер при активном использовании на основе успешного использования глубоких состояний простоя процессора (состояний ожидания). Это может позволить диспетчеру питания ядра обнаружить, когда более глубокие состояния простоя не используются эффективно в наборе активных (работающих) ядер. Чтобы сберегать энергию и по-прежнему обеспечивать производительность, может быть выгодным помещать больше ядер в приостановленное состояние и увеличивать состояние производительности у оставшихся активных ядер, чтобы гарантировать, что работа выполняется эффективно.
На этапе 708(2) среднее время ожидания может использоваться для потоков, готовых для распределения (назначения) ядру. Например, диспетчер 114 питания ядра может вычислить необходимое количество ядер процессора, используя распределение среднего времени ожидания для потоков в состоянии готовности, что позволяет диспетчеру питания ядра масштабировать количество используемых ядер, чтобы уменьшить задержку перед тем, как потоки в состоянии готовности могут выполняться, соответственно увеличивая производительность и реакцию. В примере, когда нужно выполнить большое количество потоков, может быть выгодным восстановить работу ядер наряду с уменьшением p-состояния ядер, так как каждое ядро единовременно может обрабатывать только один поток. Таким образом, в некоторых случаях большая доступность ядер даст возможность обработки большего количества потоков.
На этапе 710 зависимости состояния простоя могут использоваться диспетчером 114 питания ядра для настройки реализации приостановки ядер. Когда диспетчер 114 питания ядра выбирает, какие определенные ядра следует приостановить или вернуть к работе, он сначала изучит отношения зависимости состояния простоя у ядер, чтобы определить, какие ядра могли бы совместно использовать ресурсы энергии или тактирования, и выберет приостановку или возобновление ядер наиболее энергоэффективным способом на основе совместно используемых средств управления.
На этапе 712 отношения состояния производительности и регулировки могут учитываться при определении того, следует ли приостановить или возобновить работу одного или нескольких ядер. Ядра, которые совместно используют состояние производительности или элементы регулирования, могут приостанавливаться или возобновляться вместе, чтобы реализовать более высокие КПД.
На этапе 714 могут рассматриваться отношения комплектов (блоков) ядер, например зависимости, описанные на фиг.3А и 3В касательно используемостей блока ядер, а точнее говоря, приостановка блока ядер перед приостановкой другого ядра в новом блоке ядер. В конечном счете, на этапе 716 локальность памяти может использоваться диспетчером 114 питания ядра при реализации соображений приостановки ядер. Например, два или более ядра могут иметь связи по комплекту, например ядра, совместно использующие физический корпус процессора, имеющий группу блоков совместно используемой памяти (например, узел NUMA (доступ к неоднородной памяти)). Группа блоков совместно используемой памяти может позволить ядрам иметь сокращенное время обращения к памяти по сравнению с ядрами, которые совместно не используют группу блоков совместно используемой памяти.
Заключение
Вышеописанные методики, системы и устройства имеют отношение к обеспечению энергосберегающего планирования потоков и динамического использования процессоров. Несмотря на то что методики, системы и устройства описаны на языке, характерном для структурных признаков и/или методологических действий, необходимо понимать, что прилагаемая формула не обязательно ограничивается описанными характерными признаками или действиями. Точнее, характерные признаки и действия раскрываются в качестве типовых форм реализации таких методик и устройств.

Claims (18)

1. Способ уравновешивания производительности и энергосбережения вычислительного устройства, имеющего множество ядер, содержащий этапы, на которых:
определяют, какие ядра из упомянутого множества ядер активно выполняют работу;
определяют политику мощности, чтобы запустить план производительности и энергосбережения для упомянутого множества ядер, при этом при определении политики мощности:
создают маску приостановки ядер с использованием битового значения для представления приостановленного или работающего состояния ядра,
определяют маски привязки потока к процессору, представляющие одно или более ядер, которым назначена обработка потока;
обеспечивают, по меньшей мере, часть плана производительности и энергосбережения для ядер путем объединения инвертированной маски приостановки ядер и масок привязки потока к процессору, используя оператор "И", чтобы создать набор доступных процессоров, и
вычисляют, какие ядра обозначаются как приостановленные или работающие, на основе, по меньшей мере частично, набора доступных процессоров; и
приостанавливают по меньшей мере одно из ядер, активно выполняющих работу, на основе, по меньшей мере частично, политики мощности, указывающей, что это по меньшей мере одно из ядер, активно выполняющих работу, обозначено как приостановленное ядро.
2. Способ по п.1, в котором определение политики мощности совершается динамически в виде итеративного процесса.
3. Способ по п.1, дополнительно содержащий этап, на котором масштабируют по меньшей мере одно из упомянутого множества ядер на основе политики мощности.
4. Способ по п.3, в котором при масштабировании по меньшей мере одного из упомянутого множества ядер регулируют по меньшей мере одно из используемости ядра и состояния питания (p-состояния) ядра, чтобы повысить энергосбережение.
5. Способ по п.1, в котором при приостановке по меньшей мере одного из упомянутого множества ядер:
определяют, включает ли в себя работающий блок ядер приостановленное ядро; и
если определено, что работающий блок ядер имеет приостановленное ядро, приостанавливают по меньшей мере одно работающее ядро в работающем блоке ядер.
6. Способ по п.1, дополнительно содержащий этап, на котором изменяют политику мощности с использованием эвристических правил ядра и системы.
7. Способ по п.1, дополнительно содержащий этап, на котором изменяют политику мощности с использованием взаимоотношений между ядрами в виде зависимостей состояния простоя процессора.
8. Машиночитаемый носитель информации, содержащий машиноисполняемые команды, которыми при их исполнении процессором выполняются действия, в соответствии с которыми:
контролируют активность ядер в многоядерной системе;
получают политику мощности для многоядерной системы, причем политика мощности уравновешивает энергосбережение и производительность обработки для каждого ядра в многоядерной системе;
приостанавливают по меньшей мере одно ядро в ответ на активность ядер на основе политики мощности;
изменяют контролируемую активность ядер для создания измененной активности ядер;
возобновляют работу по меньшей мере одного ядра в ответ на измененную активность ядер на основе политики мощности; и
переназначают по меньшей мере один поток этому по меньшей мере одному работающему ядру.
9. Машиночитаемый носитель информации по п.8, в котором при приостановке ядра снижают состояние питания ядра до состояния простоя процессора с минимальной мощностью (C-состояние).
10. Машиночитаемый носитель информации по п.8, дополнительно содержащий регулировку состояния питания по меньшей мере одного работающего ядра в многоядерной системе.
11. Машиночитаемый носитель информации по п.8, в котором приостановка по меньшей мере одного ядра в ответ на активность ядер запускается динамически с заранее установленной частотой.
12. Машиночитаемый носитель информации по п.8, в котором контроль активности ядер в многоядерной системе совершается в течение заранее установленного периода времени, при этом приостановка по меньшей мере одного ядра в ответ на активность ядер совершается динамически в ответ на возможность энергосбережения, обнаруженную посредством контролируемой активности ядер.
13. Машиночитаемый носитель информации по п.8, в котором при приостановке по меньшей мере одного ядра в ответ на активность ядер переносят работу на работающее ядро, что разрешено маской привязки, ассоциированной с планом работы программ.
14. Машиночитаемый носитель информации по п.8, в котором при возобновлении работы по меньшей мере одного ядра возобновляют работу ядра в блоке ядер, который включает в себя по меньшей мере одно другое работающее ядро, причем этот блок ядер имеет некоторый уровень рассеивания мощности, когда какие-либо из ядер в данном блоке ядер являются работающими.
15. Система с множеством логических процессоров, выполненная с возможностью уравновешивания ее производительности и энергосбережения, содержащая:
множество процессоров, причем это множество процессоров включает в себя по меньшей мере один блок ядер, имеющий несколько ядер; и
контроллер, соединенный с множеством процессоров, при этом контроллер предназначен для:
реализации плана производительности,
реализации политики энергосбережения, которая включает в себя маску приостановки ядер, причем маска приостановки ядер объединяется с планами работы программных модулей для определения результирующего набора процессоров, на который нужно планировать работу; и
уравновешивания плана производительности и политики энергосбережения путем приостановки одного или более из упомянутого множества процессоров и создания приоритизации приостановки ядер для работающего ядра в блоке ядер, имеющем по меньшей мере одно приостановленное ядро.
16. Система по п.15, в которой контроллер принимает команды от диспетчера питания ядра, находящегося в системной памяти, чтобы реализовать политику энергосбережения.
17. Система по п.15, дополнительно реализующая регулирование состояния питания (р-состояния) по меньшей мере одного работающего ядра.
18. Система по п.15, в которой политика энергосбережения ограничивает количество используемых ядер, что выражается как процентная доля от максимального использования ядер.
RU2010139638/08A 2008-03-28 2009-02-16 Энергосберегающее планирование потоков и динамическое использование процессоров RU2503987C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/057,716 2008-03-28
US12/057,716 US8010822B2 (en) 2008-03-28 2008-03-28 Power-aware thread scheduling and dynamic use of processors
PCT/US2009/034209 WO2009120427A1 (en) 2008-03-28 2009-02-16 Power-aware thread scheduling and dynamic use of processors

Publications (2)

Publication Number Publication Date
RU2010139638A RU2010139638A (ru) 2012-04-10
RU2503987C2 true RU2503987C2 (ru) 2014-01-10

Family

ID=41114264

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2010139638/08A RU2503987C2 (ru) 2008-03-28 2009-02-16 Энергосберегающее планирование потоков и динамическое использование процессоров

Country Status (9)

Country Link
US (2) US8010822B2 (ru)
EP (1) EP2257861B1 (ru)
JP (1) JP5075274B2 (ru)
KR (2) KR20100138954A (ru)
CN (1) CN101981529B (ru)
BR (1) BRPI0907774B1 (ru)
RU (1) RU2503987C2 (ru)
TW (1) TWI464570B (ru)
WO (1) WO2009120427A1 (ru)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2666249C2 (ru) * 2014-03-27 2018-09-06 Интернэшнл Бизнес Машинз Корпорейшн Диспетчеризация множественных потоков в компьютере
RU2703188C1 (ru) * 2017-10-05 2019-10-15 НФВаре, Инц Способ распределения нагрузки в многоядерной системе

Families Citing this family (135)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074110B2 (en) * 2006-02-28 2011-12-06 Intel Corporation Enhancing reliability of a many-core processor
GB0614515D0 (en) 2006-07-21 2006-08-30 Ibm An apparatus for managing power-consumption
US8112648B2 (en) * 2008-03-11 2012-02-07 Globalfoundries Inc. Enhanced control of CPU parking and thread rescheduling for maximizing the benefits of low-power state
US8010822B2 (en) 2008-03-28 2011-08-30 Microsoft Corporation Power-aware thread scheduling and dynamic use of processors
US20090320031A1 (en) * 2008-06-19 2009-12-24 Song Justin J Power state-aware thread scheduling mechanism
US8296773B2 (en) * 2008-06-30 2012-10-23 International Business Machines Corporation Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance
US20100058086A1 (en) * 2008-08-28 2010-03-04 Industry Academic Cooperation Foundation, Hallym University Energy-efficient multi-core processor
US8321874B2 (en) * 2008-09-30 2012-11-27 Microsoft Corporation Intelligent context migration for user mode scheduling
US8473964B2 (en) 2008-09-30 2013-06-25 Microsoft Corporation Transparent user mode scheduling on traditional threading systems
US8209554B2 (en) * 2009-02-23 2012-06-26 International Business Machines Corporation Applying power management on a partition basis in a multipartitioned computer system
CN105254858A (zh) 2009-03-03 2016-01-20 可口可乐公司 生物基聚对苯二甲酸乙二酯包装及制备其的方法
US8689017B2 (en) * 2009-03-12 2014-04-01 Cisco Technology, Inc. Server power manager and method for dynamically managing server power consumption
US8271818B2 (en) * 2009-04-30 2012-09-18 Hewlett-Packard Development Company, L.P. Managing under-utilized resources in a computer
US8239699B2 (en) * 2009-06-26 2012-08-07 Intel Corporation Method and apparatus for performing energy-efficient network packet processing in a multi processor core system
US8683476B2 (en) * 2009-06-30 2014-03-25 Oracle America, Inc. Method and system for event-based management of hardware resources using a power state of the hardware resources
US9146755B2 (en) * 2009-07-08 2015-09-29 Kaseya Limited System and method for transporting platform independent power configuration parameters
US8428930B2 (en) * 2009-09-18 2013-04-23 International Business Machines Corporation Page mapped spatially aware emulation of a computer instruction set
US8543857B2 (en) * 2009-09-26 2013-09-24 Intel Corporation Method and apparatus for low power operation of multi-core processors
US8578384B2 (en) * 2009-10-28 2013-11-05 Freescale Semiconductor, Inc. Method and apparatus for activating system components
KR101648978B1 (ko) * 2009-11-05 2016-08-18 삼성전자주식회사 저전력 멀티코어 시스템에서의 전력 제어 방법 및 장치
US9098274B2 (en) 2009-12-03 2015-08-04 Intel Corporation Methods and apparatuses to improve turbo performance for events handling
US8850404B2 (en) * 2009-12-23 2014-09-30 Intel Corporation Relational modeling for performance analysis of multi-core processors using virtual tasks
US8572622B2 (en) * 2009-12-30 2013-10-29 International Business Machines Corporation Reducing queue synchronization of multiple work items in a system with high memory latency between processing nodes
WO2011117669A1 (en) 2010-03-22 2011-09-29 Freescale Semiconductor, Inc. Integrated circuit device, signal processing system, electronic device and method therefor
US8335935B2 (en) * 2010-03-29 2012-12-18 Intel Corporation Power management based on automatic workload detection
US8607083B2 (en) * 2010-04-01 2013-12-10 Intel Corporation Method and apparatus for interrupt power management
US9804874B2 (en) 2011-04-20 2017-10-31 Microsoft Technology Licensing, Llc Consolidation of idle virtual machines on idle logical processors
US8381004B2 (en) 2010-05-26 2013-02-19 International Business Machines Corporation Optimizing energy consumption and application performance in a multi-core multi-threaded processor system
US8736619B2 (en) 2010-07-20 2014-05-27 Advanced Micro Devices, Inc. Method and system for load optimization for power
US9311102B2 (en) * 2010-07-13 2016-04-12 Advanced Micro Devices, Inc. Dynamic control of SIMDs
CN103080899B (zh) * 2010-07-13 2016-07-06 超威半导体公司 图形处理器中simd单元的动态启用和禁用
US8631253B2 (en) * 2010-08-17 2014-01-14 Red Hat Israel, Ltd. Manager and host-based integrated power saving policy in virtualization systems
US8484498B2 (en) * 2010-08-26 2013-07-09 Advanced Micro Devices Method and apparatus for demand-based control of processing node performance
US8677361B2 (en) 2010-09-30 2014-03-18 International Business Machines Corporation Scheduling threads based on an actual power consumption and a predicted new power consumption
US8656408B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporations Scheduling threads in a processor based on instruction type power consumption
US9335805B2 (en) * 2010-11-25 2016-05-10 Freescale Semiconductor, Inc. Method and apparatus for managing power in a multi-core processor
US20120137289A1 (en) * 2010-11-30 2012-05-31 International Business Machines Corporation Protecting high priority workloads in a virtualized datacenter
US9069555B2 (en) * 2011-03-21 2015-06-30 Intel Corporation Managing power consumption in a multi-core processor
US8924752B1 (en) 2011-04-20 2014-12-30 Apple Inc. Power management for a graphics processing unit or other circuit
US20120284729A1 (en) * 2011-05-03 2012-11-08 Microsoft Corporation Processor state-based thread scheduling
US9086883B2 (en) 2011-06-10 2015-07-21 Qualcomm Incorporated System and apparatus for consolidated dynamic frequency/voltage control
KR101812583B1 (ko) 2011-07-21 2018-01-30 삼성전자주식회사 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체
KR102082241B1 (ko) 2011-09-06 2020-02-27 인텔 코포레이션 전력 효율적 프로세서 아키텍처
US9128769B2 (en) 2011-10-13 2015-09-08 Cavium, Inc. Processor with dedicated virtual functions and dynamic assignment of functional resources
US9129060B2 (en) * 2011-10-13 2015-09-08 Cavium, Inc. QoS based dynamic execution engine selection
US10114679B2 (en) * 2011-10-26 2018-10-30 Microsoft Technology Licensing, Llc Logical CPU division usage heat map representation
CN102945162B (zh) * 2011-10-26 2016-12-21 微软技术许可有限责任公司 用于设备实现逻辑cpu划分的使用热度图表示的方法和装置
TWI493332B (zh) * 2011-11-29 2015-07-21 Intel Corp 用於電力管理的方法與設備及其平台與電腦可讀取媒體
US8862909B2 (en) 2011-12-02 2014-10-14 Advanced Micro Devices, Inc. System and method for determining a power estimate for an I/O controller based on monitored activity levels and adjusting power limit of processing units by comparing the power estimate with an assigned power limit for the I/O controller
US8924758B2 (en) 2011-12-13 2014-12-30 Advanced Micro Devices, Inc. Method for SOC performance and power optimization
US8881145B2 (en) * 2011-12-15 2014-11-04 Industrial Technology Research Institute System and method for generating application-level dependencies in one or more virtual machines
US8856566B1 (en) 2011-12-15 2014-10-07 Apple Inc. Power management scheme that accumulates additional off time for device when no work is available and permits additional power consumption by device when awakened
US9372524B2 (en) 2011-12-15 2016-06-21 Intel Corporation Dynamically modifying a power/performance tradeoff based on processor utilization
US9436512B2 (en) * 2011-12-22 2016-09-06 Board Of Supervisors Of Louisana State University And Agricultural And Mechanical College Energy efficient job scheduling in heterogeneous chip multiprocessors based on dynamic program behavior using prim model
US9137848B2 (en) * 2012-01-31 2015-09-15 Lg Electronics Inc. Mobile terminal, controlling method thereof and recording medium thereof
KR101899811B1 (ko) * 2012-04-04 2018-09-20 엘지전자 주식회사 이동 단말기 및 그 제어 방법, 이를 위한 기록 매체
KR101621776B1 (ko) 2012-02-02 2016-05-17 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 멀티코어 프로세서에서의 서비스 품질 타깃
US9110777B2 (en) * 2012-02-14 2015-08-18 International Business Machines Corporation Reducing performance degradation in backup semiconductor chips
JP5554358B2 (ja) 2012-03-23 2014-07-23 株式会社東芝 マルチプロセッサシステムおよび電力制御方法
JP5853817B2 (ja) * 2012-03-28 2016-02-09 富士通株式会社 情報処理装置、制御方法及び制御プログラム
US8726255B2 (en) 2012-05-01 2014-05-13 Concurix Corporation Recompiling with generic to specific replacement
US8650538B2 (en) 2012-05-01 2014-02-11 Concurix Corporation Meta garbage collection for functional code
US9035956B1 (en) 2012-05-08 2015-05-19 Apple Inc. Graphics power control with efficient power usage during stop
US9390461B1 (en) 2012-05-08 2016-07-12 Apple Inc. Graphics hardware mode controls
US9176563B2 (en) * 2012-05-14 2015-11-03 Broadcom Corporation Leakage variation aware power management for multicore processors
CN102707996A (zh) * 2012-05-15 2012-10-03 江苏中科梦兰电子科技有限公司 一种异构多核处理器上的任务调度方法
US9250665B2 (en) 2012-06-07 2016-02-02 Apple Inc. GPU with dynamic performance adjustment
CN102779075B (zh) * 2012-06-28 2014-12-24 华为技术有限公司 一种在多处理器核***中进行调度的方法、装置及***
US8904204B2 (en) 2012-06-29 2014-12-02 International Business Machines Corporation Managing computing resources through aggregated core management
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US8793669B2 (en) 2012-07-17 2014-07-29 Concurix Corporation Pattern extraction from executable code in message passing environments
EP2880531B1 (en) 2012-08-02 2017-11-08 Siemens Corporation Pipelining for cyclic control systems
US8943252B2 (en) 2012-08-16 2015-01-27 Microsoft Corporation Latency sensitive software interrupt and thread scheduling
US20140089699A1 (en) * 2012-09-27 2014-03-27 Advanced Micro Devices Power management system and method for a processor
US10585801B2 (en) * 2012-11-26 2020-03-10 Advanced Micro Devices, Inc. Prefetch kernels on a graphics processing unit
US9182807B2 (en) * 2012-12-31 2015-11-10 Hewlett-Packard Development Company, L.P. Systems and methods for predictive power management in a computing center
JP6042217B2 (ja) * 2013-01-28 2016-12-14 ルネサスエレクトロニクス株式会社 半導体装置、電子装置、及び半導体装置の制御方法
EP2778915A1 (de) * 2013-03-13 2014-09-17 Siemens Aktiengesellschaft Verfahren zum Betrieb einer Industriesteuerung und Industriesteuerung
US9727345B2 (en) * 2013-03-15 2017-08-08 Intel Corporation Method for booting a heterogeneous system and presenting a symmetric core view
CN105210038B (zh) * 2013-05-15 2018-10-30 英派尔科技开发有限公司 核亲和性位掩码变换
US9629020B2 (en) * 2013-05-28 2017-04-18 Rivada Networks, Llc Methods and systems for data context and management via dynamic spectrum controller and dynamic spectrum policy controller
KR102110812B1 (ko) * 2013-05-30 2020-05-14 삼성전자 주식회사 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
US9195291B2 (en) 2013-06-21 2015-11-24 Apple Inc. Digital power estimator to control processor power consumption
US9304573B2 (en) 2013-06-21 2016-04-05 Apple Inc. Dynamic voltage and frequency management based on active processors
US20160170474A1 (en) * 2013-08-02 2016-06-16 Nec Corporation Power-saving control system, control device, control method, and control program for server equipped with non-volatile memory
US9495001B2 (en) 2013-08-21 2016-11-15 Intel Corporation Forcing core low power states in a processor
US20150081400A1 (en) * 2013-09-19 2015-03-19 Infosys Limited Watching ARM
US9927866B2 (en) 2013-11-21 2018-03-27 Qualcomm Incorporated Method and system for optimizing a core voltage level and enhancing frequency performance of individual subcomponents for reducing power consumption within a PCD
US9541985B2 (en) 2013-12-12 2017-01-10 International Business Machines Corporation Energy efficient optimization in multicore processors under quality of service (QoS)/performance constraints
JP5946068B2 (ja) * 2013-12-17 2016-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 演算コア上で複数の演算処理単位が稼働可能なコンピュータ・システムにおける応答性能を評価する計算方法、計算装置、コンピュータ・システムおよびプログラム
KR102205836B1 (ko) 2014-01-29 2021-01-21 삼성전자 주식회사 태스크 스케줄링 방법 및 장치
US9652298B2 (en) 2014-01-29 2017-05-16 Vmware, Inc. Power-aware scheduling
US9189273B2 (en) 2014-02-28 2015-11-17 Lenovo Enterprise Solutions PTE. LTD. Performance-aware job scheduling under power constraints
US9606605B2 (en) 2014-03-07 2017-03-28 Apple Inc. Dynamic voltage margin recovery
US9354943B2 (en) * 2014-03-19 2016-05-31 International Business Machines Corporation Power management for multi-core processing systems
US20150355942A1 (en) * 2014-06-04 2015-12-10 Texas Instruments Incorporated Energy-efficient real-time task scheduler
US10162683B2 (en) * 2014-06-05 2018-12-25 International Business Machines Corporation Weighted stealing of resources
US10082858B2 (en) * 2014-06-23 2018-09-25 Mellanox Technologies, Ltd. Peripheral device assistance in reducing CPU power consumption
US9395797B2 (en) 2014-07-02 2016-07-19 Freescale Semiconductor, Inc. Microcontroller with multiple power modes
US9785481B2 (en) * 2014-07-24 2017-10-10 Qualcomm Innovation Center, Inc. Power aware task scheduling on multi-processor systems
US10324513B2 (en) 2014-08-31 2019-06-18 Mellanox Technologies, Ltd. Control of peripheral device data exchange based on CPU power state
US9424092B2 (en) * 2014-09-26 2016-08-23 Microsoft Technology Licensing, Llc Heterogeneous thread scheduling
US9489242B2 (en) * 2014-09-30 2016-11-08 Telefonaktiebolaget L M Ericsson (Publ) Algorithm for faster convergence through affinity override
US9190989B1 (en) 2014-10-07 2015-11-17 Freescale Semiconductor, Inc. Integrated circuit power management
US9891699B2 (en) * 2014-12-18 2018-02-13 Vmware, Inc. System and method for performing distributed power management without power cycling hosts
US9588811B2 (en) * 2015-01-06 2017-03-07 Mediatek Inc. Method and apparatus for analysis of thread latency
US9652027B2 (en) * 2015-04-01 2017-05-16 Microsoft Technology Licensing, Llc Thread scheduling based on performance state and idle state of processing units
US20160314024A1 (en) * 2015-04-24 2016-10-27 Mediatek Inc. Clearance mode in a multicore processor system
US9760160B2 (en) 2015-05-27 2017-09-12 Intel Corporation Controlling performance states of processing engines of a processor
US10558500B2 (en) 2015-07-27 2020-02-11 Hewlett Packard Enterprise Development Lp Scheduling heterogenous processors
US9710041B2 (en) * 2015-07-29 2017-07-18 Intel Corporation Masking a power state of a core of a processor
US10073718B2 (en) 2016-01-15 2018-09-11 Intel Corporation Systems, methods and devices for determining work placement on processor cores
US10146287B2 (en) * 2016-04-01 2018-12-04 Intel Corporation Processor power monitoring and control with dynamic load balancing
US10133341B2 (en) * 2016-06-06 2018-11-20 Arm Limited Delegating component power control
CN106201726A (zh) * 2016-07-26 2016-12-07 张升泽 多内核芯片线程分配方法及***
US10379904B2 (en) 2016-08-31 2019-08-13 Intel Corporation Controlling a performance state of a processor using a combination of package and thread hint information
US10503238B2 (en) 2016-11-01 2019-12-10 Microsoft Technology Licensing, Llc Thread importance based processor core parking and frequency selection
US10372494B2 (en) 2016-11-04 2019-08-06 Microsoft Technology Licensing, Llc Thread importance based processor core partitioning
KR20180098904A (ko) * 2017-02-27 2018-09-05 삼성전자주식회사 컴퓨팅 장치 및 컴퓨팅 장치에 포함된 복수의 코어들에 전력을 할당하는 방법
CN107239348B (zh) * 2017-06-23 2020-05-15 厦门美图移动科技有限公司 一种多核处理器调度方法、装置及移动终端
US20190146567A1 (en) * 2017-11-10 2019-05-16 Advanced Micro Devices, Inc. Processor throttling based on accumulated combined current measurements
EP3779690A4 (en) 2018-04-20 2021-05-12 Guangdong Oppo Mobile Telecommunications Corp., Ltd. PROCESSOR CORE PLANNING METHOD AND DEVICE, TERMINAL DEVICE AND STORAGE MEDIUM
US10721172B2 (en) 2018-07-06 2020-07-21 Marvell Asia Pte, Ltd. Limiting backpressure with bad actors
US20200034190A1 (en) * 2018-07-24 2020-01-30 Vmware, Inc. Live migration of virtual machines between heterogeneous virtualized computing environments
US10915356B2 (en) * 2018-08-30 2021-02-09 Intel Corporation Technology to augment thread scheduling with temporal characteristics
US10997029B2 (en) * 2019-03-07 2021-05-04 International Business Machines Corporation Core repair with failure analysis and recovery probe
US11409560B2 (en) * 2019-03-28 2022-08-09 Intel Corporation System, apparatus and method for power license control of a processor
CN112241197A (zh) * 2019-07-17 2021-01-19 马维尔亚洲私人有限公司 针对高速激活管理集成电路中的功率
US11766975B2 (en) * 2019-07-17 2023-09-26 Marvell Asia Pte, Ltd. Managing power in an integrated circuit for high-speed activation
US10948957B1 (en) 2019-09-26 2021-03-16 Apple Inc. Adaptive on-chip digital power estimator
US11782755B2 (en) * 2019-12-02 2023-10-10 Intel Corporation Methods, systems, articles of manufacture, and apparatus to optimize thread scheduling
US11301298B2 (en) 2020-03-28 2022-04-12 Intel Corporation Apparatus and method for dynamic control of microprocessor configuration
US11880306B2 (en) 2021-06-09 2024-01-23 Ampere Computing Llc Apparatus, system, and method for configuring a configurable combined private and shared cache
US11947454B2 (en) * 2021-06-09 2024-04-02 Ampere Computing Llc Apparatuses, systems, and methods for controlling cache allocations in a configurable combined private and shared cache in a processor-based system
US12007896B2 (en) 2021-06-09 2024-06-11 Ampere Computing Llc Apparatuses, systems, and methods for configuring combined private and shared cache levels in a processor-based system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2171490C2 (ru) * 1994-12-23 2001-07-27 Интел Корпорейшн Многопроцессорная компьютерная система с когерентной кэш с уменьшенным энергопотреблением
US20050050373A1 (en) * 2001-12-06 2005-03-03 Doron Orenstien Distribution of processing activity in a multiple core microprocessor
US6901522B2 (en) * 2001-06-07 2005-05-31 Intel Corporation System and method for reducing power consumption in multiprocessor system
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185589A (ja) * 1996-01-05 1997-07-15 Toshiba Corp 情報処理システムと情報処理システムの省電力方法
JP2000112585A (ja) 1998-10-02 2000-04-21 Toshiba Corp システムlsi及びパワーマネジメント方法
US7137117B2 (en) 2000-06-02 2006-11-14 Microsoft Corporation Dynamically variable idle time thread scheduling
US7174467B1 (en) 2001-07-18 2007-02-06 Advanced Micro Devices, Inc. Message based power management in a multi-processor system
US7318164B2 (en) * 2001-12-13 2008-01-08 International Business Machines Corporation Conserving energy in a data processing system by selectively powering down processors
US20050050310A1 (en) * 2003-07-15 2005-03-03 Bailey Daniel W. Method, system, and apparatus for improving multi-core processor performance
US7111182B2 (en) 2003-08-29 2006-09-19 Texas Instruments Incorporated Thread scheduling mechanisms for processor resource power management
KR100673690B1 (ko) * 2004-01-13 2007-01-24 엘지전자 주식회사 복수의 코어가 구비된 프로세서의 전원 제어방법
US7315952B2 (en) * 2004-06-02 2008-01-01 Intel Corporation Power state coordination between devices sharing power-managed resources
US7676655B2 (en) 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7788670B2 (en) 2004-10-26 2010-08-31 Intel Corporation Performance-based workload scheduling in multi-core architectures
US7526661B2 (en) 2004-12-02 2009-04-28 Intel Corporation Performance state-based thread management
US20060123422A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Processor packing in an SMP server to conserve energy
US7502948B2 (en) 2004-12-30 2009-03-10 Intel Corporation Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores
US20060212677A1 (en) 2005-03-15 2006-09-21 Intel Corporation Multicore processor having active and inactive execution cores
JP4555140B2 (ja) * 2005-04-22 2010-09-29 株式会社日立製作所 複合型計算機装置およびその管理方法
US20070204268A1 (en) 2006-02-27 2007-08-30 Red. Hat, Inc. Methods and systems for scheduling processes in a multi-core processor environment
US7574613B2 (en) 2006-03-14 2009-08-11 Microsoft Corporation Scaling idle detection metric for power management on computing device
US7490256B2 (en) 2006-04-04 2009-02-10 Microsoft Corporation Identifying a target processor idle state
US7752468B2 (en) * 2006-06-06 2010-07-06 Intel Corporation Predict computing platform memory power utilization
US7992151B2 (en) * 2006-11-30 2011-08-02 Intel Corporation Methods and apparatuses for core allocations
US7900069B2 (en) * 2007-03-29 2011-03-01 Intel Corporation Dynamic power reduction
JP4834625B2 (ja) * 2007-07-31 2011-12-14 株式会社東芝 電源管理装置及び電源管理方法
US7966506B2 (en) * 2007-12-12 2011-06-21 Intel Corporation Saving power in a computer system
US7962770B2 (en) * 2007-12-19 2011-06-14 International Business Machines Corporation Dynamic processor reconfiguration for low power without reducing performance based on workload execution characteristics
US8010822B2 (en) 2008-03-28 2011-08-30 Microsoft Corporation Power-aware thread scheduling and dynamic use of processors

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2171490C2 (ru) * 1994-12-23 2001-07-27 Интел Корпорейшн Многопроцессорная компьютерная система с когерентной кэш с уменьшенным энергопотреблением
US6901522B2 (en) * 2001-06-07 2005-05-31 Intel Corporation System and method for reducing power consumption in multiprocessor system
US20050050373A1 (en) * 2001-12-06 2005-03-03 Doron Orenstien Distribution of processing activity in a multiple core microprocessor
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2666249C2 (ru) * 2014-03-27 2018-09-06 Интернэшнл Бизнес Машинз Корпорейшн Диспетчеризация множественных потоков в компьютере
RU2703188C1 (ru) * 2017-10-05 2019-10-15 НФВаре, Инц Способ распределения нагрузки в многоядерной системе

Also Published As

Publication number Publication date
KR20100138954A (ko) 2010-12-31
US20090249094A1 (en) 2009-10-01
CN101981529A (zh) 2011-02-23
US9003215B2 (en) 2015-04-07
TW200941209A (en) 2009-10-01
BRPI0907774B1 (pt) 2020-06-02
JP2011515776A (ja) 2011-05-19
RU2010139638A (ru) 2012-04-10
JP5075274B2 (ja) 2012-11-21
EP2257861A4 (en) 2017-10-25
EP2257861A1 (en) 2010-12-08
KR101629155B1 (ko) 2016-06-21
CN101981529B (zh) 2013-09-11
EP2257861B1 (en) 2022-08-03
TWI464570B (zh) 2014-12-11
US20110307730A1 (en) 2011-12-15
KR20160005367A (ko) 2016-01-14
WO2009120427A1 (en) 2009-10-01
US8010822B2 (en) 2011-08-30
BRPI0907774A2 (pt) 2015-07-14

Similar Documents

Publication Publication Date Title
RU2503987C2 (ru) Энергосберегающее планирование потоков и динамическое использование процессоров
US11579934B2 (en) Scheduler for amp architecture with closed loop performance and thermal controller
US8190939B2 (en) Reducing power consumption of computing devices by forecasting computing performance needs
US7730340B2 (en) Method and apparatus for dynamic voltage and frequency scaling
ul Islam et al. Hybrid DVFS scheduling for real-time systems based on reinforcement learning
Seo et al. Energy efficient scheduling of real-time tasks on multicore processors
KR101476568B1 (ko) 코어 마다의 전압 및 주파수 제어 제공
KR101411756B1 (ko) 동적 전력 관리를 위한 도메인 특정 언어, 컴파일러 및 jit
JP5763168B2 (ja) プロセッサパフォーマンスマネジメントシステムからの処理のマスキングによる電源消費の低減
Gu et al. Energy efficient scheduling of servers with multi-sleep modes for cloud data center
JP6668355B2 (ja) 動的時間的電力ステアリングのためのシステム及び方法
JP2009521056A (ja) パフォーマンス解析に基づくシステムレベルの電力管理
CN110832434B (zh) 用于处理器的频率调控的方法和***
Zeng et al. Practical energy-aware scheduling for real-time multiprocessor systems
CN108574600B (zh) 云计算服务器的功耗和资源竞争协同控制的服务质量保障方法
Alqudah et al. Energy reduction through memory aware real-time scheduling on virtual machine in multi-cores server
Islam et al. Learning based power management for periodic real-time tasks
Lee et al. Power-efficient Big. LITTLE core assignment scheme for task graph based real-time smartphone applications
Manzak et al. Low Power Design for DVFS Capable Software
Gong et al. QOS‐Aware Power Management in Data Centers

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20150526