[go: up one dir, main page]

BRPI0907774B1 - Programação de encadeamento ciente de energia e uso dinâmico de processadores - Google Patents

Programação de encadeamento ciente de energia e uso dinâmico de processadores Download PDF

Info

Publication number
BRPI0907774B1
BRPI0907774B1 BRPI0907774-0A BRPI0907774A BRPI0907774B1 BR PI0907774 B1 BRPI0907774 B1 BR PI0907774B1 BR PI0907774 A BRPI0907774 A BR PI0907774A BR PI0907774 B1 BRPI0907774 B1 BR PI0907774B1
Authority
BR
Brazil
Prior art keywords
core
energy
cores
parked
processors
Prior art date
Application number
BRPI0907774-0A
Other languages
English (en)
Inventor
Allen Marshall
Yimin Deng
Nicholas S. Judge
Nicholas S Judge
Arun U. Kishan
Arun U Kishan
Andrew J. Ritz
Andrew J Ritz
Original Assignee
Microsoft Technology Licensing, Llc
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 Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BRPI0907774A2 publication Critical patent/BRPI0907774A2/pt
Publication of BRPI0907774B1 publication Critical patent/BRPI0907774B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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

"programação de encadeamento ciente de energia e uso dinâmico de processadores" técnicas e aparelhos para a provisão de uma programação de encadeamento cien- 5 te de energia e uso dinâmico de processadores são apresentados. em alguns aspectos, um sistema múltiplos núcleos é monitorado no sentido de determinar a atividade do núcleo. a atividade de núcleo pode ser comparada a uma diretiva de energia que equilibra o plano de economia de energia com um plano de desempenho. um ou mais dentre os núcleos pode ser estacionado em resposta à comparação no sentido de reduzir o consumo de energia por 1 o meio do sistema múltiplos núcleos. em outros aspectos, a programação ciente de energia pode ser realizada durante um intervalo predeterminado para dinamicamente estacionar ou não estacionar núcleos. outros aspectos incluem o ajuste do estado de potência dos núcleos não estacionados em resposta à comparação da atividade de núcleo e a diretiva de energia.

Description

“PROGRAMAÇÃO DE ENCADEAMENTO CIENTE DE ENERGIA E USO DINÂMICO DE PROCESSADORES”
FUNDAMENTOS
O gerenciamento do consumo de energia em um sistema de computador é importante para ampliar a capacidade operacional de uma bateria e reduzir o consumo geral de energia, o que pode benéfico tanto física como ambientalmente. Mesmo para os computadores não móveis, a redução da energia requisitada é benéfica no sentido de economizar recursos globais importantes e prolongar a operação, quando depender de um sistema de backup de bateria, como durante uma interrupção de energia elétrica.
Embora a maioria dos componentes de um sistema de computador use energia durante a operação do sistema, o processador utiliza uma parte desproporcional da energia do sistema. Muitos sistemas de computador, incluindo os sistemas baseados no consumidor, incluem múltiplos processadores e/ou processadores com múltiplos núcleos. Múltiplos processadores permitem aos computadores a execução de níveis crescentes de trabalho em paralelo, no entanto processadores adicionais podem também aumentar o consumo de energia. A maioria dos processadores modernos se caracteriza por estados muito baixos de consumo de energia ociosa, que podem ser aplicados por um núcleo em um sistema de múltiplos núcleos, e que podem ser controlados por um sistema operacional. Além disso, a frequência do processador pode ser escalada em uma base por núcleo ou por grupo de núcleos a fim de reduzir o uso de energia por parte do sistema.
SUMÁRIO
O presente sumário é provido no sentido de introduzir conceitos simplificados de provisão de uma programação de encadeamento ciente de energia e de um uso dinâmico de processadores, o que será descrito abaixo na seção Descrição Detalhada. Este sumário não se destina a identificar as características essenciais da matéria reivindicada, nem é destinada a ser utilizada na determinação do âmbito da matéria reivindicada.
Técnicas e aparelhos exemplares para a provisão de uma programação de encadeamento ciente de energia e do uso dinâmico de processadores são apresentados. De acordo com uma ou mais modalidades, um sistema de múltiplos núcleos é monitorado no sentido de determinar a atividade do núcleo. As diretivas de energia são recuperadas para dar início a um plano de economia de desempenho e energia para os núcleos. Um ou mais dos núcleos do sistema de múltiplos núcleos são estacionados (colocados em um baixo estado de energia especificado pelo sistema) com base na diretiva de energia e na atividade do núcleo. Quando um ou mais núcleos são estacionados, os núcleos não estacionados são deixados para lidar com todas as demais atividades do sistema. Em algumas modalidades, as diretivas de energia podem ser modificadas de modo a incluir fatores adicionais que influenciam a economia de energia ou o desempenho do sistema. Em pelo menos uma outra modalidade, o sistema de múltiplos núcleos pode ajustar dinamicamente um estado de potência de um ou mais núcleos não estacionados além de estacionar um ou mais núcleos.
BREVE DESCRIÇÃO DOS DESENHOS
A descrição detalhada é descrita com referência às figuras em anexo. Nas figuras, o dígito mais à esquerda de um número de referência identifica a figura na qual o número de referência aparece pela primeira vez. O mesmo número de referência em diferentes figuras se refere a itens similares ou idênticos.
A Figura 1 é um sistema ilustrativo que pode ser utilizado para implementar pelo menos uma modalidade de programação de encadeamento ciente de energia e uso dinâmico de processadores.
A Figura 2 mostra um fluxograma de pelo menos uma modalidade de um processo de criação de uma máscara de estacionamento de núcleo e a implementação da máscara com um programador de encadeamento de modo a permitir a alocação de trabalho aos processadores.
As Figuras 3A e 3B mostram utilizações ilustrativas de núcleo de acordo com pelo menos uma modalidade da presente invenção. Mais especificamente, a Figura 3B mostra uma revisão ilustrativa das utilizações de núcleo em resposta a uma utilização ilustrativa de núcleo de sistema, como mostrado na Figura 3A.
A Figura 4 mostra um fluxograma de pelo menos uma modalidade de um processo ilustrativo de avaliação de uma programação de encadeamento e uso dinâmico de processadores e de determinação de uma configuração revisada para os processadores.
A Figura 5 mostra um fluxograma de pelo menos uma modalidade de um processo ilustrativo da provisão de uma programação de encadeamento ciente de energia e uso dinâmico de processadores.
A Figura 6 mostra um outro fluxograma de pelo menos uma modalidade de um processo ilustrativo de provisão de uma programação de encadeamento ciente de energia e uso dinâmico de processadores, incluindo ainda a contagem de domínios ociosos.
A Figura 7 mostra um fluxograma ilustrativo de pelo menos uma modalidade de definições para uma programação de encadeamento ciente de energia e uso dinâmico de processadores.
DESCRIÇÃO DETALHADA
Os processadores podem permitir estados de energia ociosa de baixa potência, incluindo um estado ocioso que não consome energia (zero watt). Um sistema operacional pode direcionar um ou mais processadores (ou simplesmente núcleos) para um estado de energia ociosa (ou seja, um estado de suspensão do processador) quando não há um trabalho útil a realizar. A maximização do tempo despendido nestes estados de baixa potência pode aumentar a eficiência energética do sistema e/ou ampliar o desempenho da bateria.
Além desses estados de energia ociosa do processador, os processadores podem também prover controles para o ajuste da frequência do processador, isoladamente ou em conjunto com uma redução simultânea na voltagem do núcleo do processador. Estes controles podem ser referidos coletivamente como um recurso de gerenciamento de energia do processador (PPM).
Os processadores podem facilitar a execução de milhares de execuções por segundo. Embora tenha uma capacidade tão grande para a execução de instruções de computador, os processadores podem ter uma variação considerável na carga de trabalho em períodos curtos de tempo. Por exemplo, períodos tão curtos como um atraso entre as teclas digitadas por um datilografo podem permitir que o gerenciamento PPM reduza a potência do processador momentaneamente ou mesmo entre em um breve estado de suspensão. Embora uma fração de segundo de energia possa parecer negociável, por períodos mais longos de tempo, a economia de energia cumulativa poderá ser significativa.
Portanto, o gerenciamento PPM pode reduzir as demandas de energia ao direcionar processadores não utilizados para um estado de baixa potência ou um estado de suspensão (estado estacionado), quando os processadores não possuem uma carga de trabalho suficiente para justificar estados mais elevados de energia. Os núcleos estacionados podem ser colocados em um estado de energia ociosa de processador (estado C ACPI), utilizando uma quantidade mínima de energia ou nenhuma energia sequer. O trabalho ativo a ser feito no sistema será de um tempo multiplexado nos processadores não estacionados.
Por conseguinte, são aqui apresentadas, nas diversas seções que se seguem, técnicas e aparelhos para facilitar a provisão de uma programação de encadeamento ciente de energia e uso dinâmico de processadores.
Ambiente Ilustrativo
A Figura 1 é um sistema ilustrativo 100 que pode ser usado para implementar pelo menos uma modalidade de programação de encadeamento ciente de energia e uso dinâmico de processadores. O sistema 100 inclui um dispositivo computacional 102. Por exemplo, o dispositivo computacional pode ser um computador móvel 102(1), um computador de mesa 102(2), e/ou um servidor 102(N), entre outros dispositivos computacionais possíveis. Em uma configuração muito básica, o dispositivo computacional 102 tipicamente inclui um ou mais processadores (processadores) 104. Por exemplo, os processadores 104 podem ser pelo menos um dentre vários processadores independentes configurados em paralelo ou em série ou uma unidade de processamento de múltiplos núcleos, isoladamente ou em combinações diversas. Um processador de múltiplos núcleos pode ter dois ou mais processadores (núcleos) incluídos no mesmo chip ou circuito integrado. Os termos processador, núcleo, e processador lógico podem ser usados indiscriminadamente em todo o presente documento, salvo se especificamente indicado em contrário, com referência a um elemento em particular.
Além disso, o dispositivo computacional 102 inclui uma memória de sistema 106. Dependendo da configuração exata e tipo de dispositivo computacional, a memória de sistema 106 pode ser volátil (como a memória RAM), não volátil (como a memória ROM, a memória flash, etc.), ou uma combinação de ambas. A memória de sistema 106 inclui tipicamente um sistema operacional 108, um ou mais módulos de programa 110, e pode incluir dados de programa 112.
O sistema operacional 108 pode incluir um gerenciador de energia do kernel 114, que é responsável pelo direcionamento do uso dos recursos de gerenciamento de energia de processador (PPM). O gerenciador de energia do kernel 114 pode ajustar o desempenho (por exemplo, a velocidade) dos processadores 104 utilizando um estado de desempenho (estado p) ou um estado de aceleração linear (estado t). Por exemplo, o gerenciador de energia do kernel 114 pode equilibrar o consumo de energia dos processadores 104 com a carga de trabalho corrente a fim de economizar energia quando possível. Adicionalmente ou de maneira alternativa, o gerenciador de energia do kernel 114 pode permitir que os processadores 104 provenham uma capacidade máxima de processamento em resposta a uma demanda de carga de trabalho. Além disso, o gerenciador de energia do kernel 114 pode direcionar um ou mais dos processadores 104 para um estado de suspensão de baixa potência quando nenhum encadeamento ativo está pronto para ser executado, como os encadeamentos do módulo de programa 110.
O sistema operacional 108 pode prover módulos para unidades de trabalho (encadeamentos) de enfileiramento, programação, priorização, e expedição em todos os processadores disponíveis 104 no sistema 100, o que pode ser representado como uma coleção de módulos referidos coletivamente como um programador de encadeamento do kernel 116. Quando um encadeamento ativo está pronto para ser executado, o programador do kernel 116, por um ou mais módulos, despacha o encadeamento para qualquer núcleo disponível para processamento.
De um modo geral, o gerenciador de energia do kernel 114 e o programador do kernel 116 têm interesses conflitantes no controle e operação dos processadores 104. O gerenciador de energia do kernel é configurado para minimizar o consumo de energia dos processadores 104, e, portanto, tenta reduzir a frequência e/ou o estado de potência de um ou mais dos processadores 104. Por outro lado, o programador do kernel 116 é configurado para maximizar a velocidade de processamento e, assim, favorecer o trabalho de distribuição para todos os processadores 104.
O dispositivo computacional 102 pode ter recursos adicionais ou outras funcionalidades. Por exemplo, o dispositivo computacional 102 pode também incluir outros dispositivos de armazenamento de dados (removíveis e/ou não removíveis), como, por exemplo, discos magnéticos, discos óticos, ou fita. Este armazenamento adicional é ilustrado na Figura 1 por meio de um armazenador removível 118 e de um armazenador não removível 120. Os meios de armazenamento de computador podem incluir meios voláteis ou não voláteis, removíveis ou não removíveis implementados em qualquer método ou tecnologia para o armazenamento de informação, tais como instruções legíveis em computador, estruturas de dados, módulos de programa, ou outros dados. A memória de sistema 106, o armazenador removível 118 e o armazenador não removível 120 são exemplos de meios de armazenamento de computador. Portanto, os meios de armazenamento de computador incluem, mas não se limitam a, memória RAM, memória ROM, memória EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos digitais versáteis (DVD) ou outro armazenador ótico, fitas cassetes magnéticas, fita magnética, armazenador de disco magnético ou outros dispositivos de armazenamento magnético, ou qualquer outro meio que possa ser usado para armazenar as informações desejadas e que podem ser acessadas pelo dispositivo computacional 102. Quaisquer destes meios de armazenamento de computador podem fazer parte do dispositivo computacional 102.
O dispositivo computacional 102 pode ter também um ou mais dispositivos de entrada 122, como um teclado, um mouse, uma caneta ótica, um dispositivo de entrada de voz, um dispositivo de entrada de toque, etc. Um ou mais dispositivos de saída 124, como um monitor, alto-falantes, uma impressora, etc. também podem ser incluídos diretamente ou através de uma conexão com o dispositivo computacional 102.
O dispositivo computacional 100 pode também incluir uma conexão de comunicação 126 que permite que o dispositivo se comunique com outros dispositivos computacionais, como, por exemplo, por uma rede. A conexão de comunicação 126 é um exemplo de meios de comunicação. Os meios de comunicação podem ser normalmente incorporados por meio de instruções legíveis em computador, estruturas de dados, ou módulos de programa. O termo sinal de dados modulado significa um sinal de que tem uma ou mais de suas características definidas ou alteradas de modo a codificar informações do sinal. A título de exemplo, e não de limitação, os meios de comunicação incluem meios físicos, tais como uma rede física ou uma conexão direta por fio, e meios de comunicação sem fio, tais como meios acústicos, RF (radiofrequência), infravermelhos ou outros meios comunicação sem fio. Os dados legíveis em computador podem ser qualquer tipo de mídia disponível que possa ser acessada pelo dispositivo computacional 102. A título de exemplo, e não de limitação, os meios legíveis em computador podem incluir a mídia de armazenamento de computador e os meios de comunicação.
Vários módulos e técnicas podem ser aqui descritas no contexto geral das instruções executáveis em computador, tais como os módulos de programa, executados por um ou mais computadores ou outros dispositivos. De modo geral, os módulos de programa in cluem rotinas, programas, objetos, componentes, estruturas de dados, etc. para a execução de tarefas específicas ou para implementar tipos de dados abstratos específicos. Estes módulos de programa ou coisa do gênero podem ser executados como um código nativo, ou podem ser baixados e executados, por exemplo, em uma máquina virtual ou em outro ambiente de execução de compilação just-in-time. Normalmente, a funcionalidade dos módulos de programa pode ser combinada ou distribuída como desejado em várias modalidades. Uma implementação desses módulos e técnicas pode ser armazenada ou transmitida através de algum tipo de meio legível em computador.
Configuração Ilustrativa de Processador
A Figura 2 mostra um fluxograma de pelo menos uma modalidade de um processo 200 de criação de uma máscara de estacionamento de núcleo e de implementação da máscara com o programador de encadeamento a fim de permitir a alocação de trabalho aos processadores. O processo 200 é ilustrado como uma coleção de blocos em um gráfico de fluxo lógico, que representam uma sequência de operações que podem ser implementadas em um hardware, software, ou em uma combinação dos mesmos. No contexto de um software, os blocos representam as instruções executáveis em computador que, quando executadas por um ou mais processadores, realizam as operações citadas. Geralmente, as instruções executáveis em computador incluem rotinas, programas, objetos, componentes, estruturas de dados ou coisa do gênero, que executam funções específicas ou implementam tipos de dados abstratos específicos. A ordem na qual as operações são descritas não se destina a ser interpretada como uma limitação, e qualquer número dentre os blocos descritos pode ser combinado em qualquer ordem e/ou em paralelo de modo a implementar o processo. Outros processos descritos através no presente documento, além do processo 200, serão interpretados em conformidade. Para fins de apresentação, o processo 200 é descrito com referência ao sistema 100 da Figura 1.
Como mostrado na Figura 2, a máscara de estacionamento de núcleo é criada na memória de sistema na etapa 202. Por exemplo, o gerenciador de energia do kernel 114 pode criar a máscara de estacionamento de núcleo da etapa 202, que reside no sistema operacional 108. Uma máscara de estacionamento de núcleo ilustrativa (máscara de bits, ou simplesmente máscara) 204 pode prover uma célula representando um núcleo correspondente. Como mostrado na Figura 2, o sistema ilustrativo inclui oito núcleos, no entanto, mais ou menos núcleos podem ser usados. A máscara de bits 204 inclui um valor de bit em cada célula, sendo que 1 representa um núcleo estacionado e 0 representa um núcleo não estacionado. Um núcleo estacionado é um núcleo que é colocado em um estado de suspensão de baixa potência. Em algumas modalidades, um núcleo estacionado não tem consumo de energia, portanto, usa zero watts. Em algumas modalidades, os núcleos têm dependências, tais como um circuito de hardware compartilhado. Quando ambos os núcleos podem ser colocados em um estado de baixa potência, as dependências também podem ser implicitamente colocadas em um estado de baixa potência. Assim, uma máscara de estacionamento de núcleo pode ser selecionada, o que irá maximizar a economia de energia em comparação com outra máscara. Por exemplo, ao se desligar todos os núcleos de um único soquete de processador, será possível economizar mais energia do que ao se desligar a metade dos núcleos em dois soquetes de processador. A máscara de bits 204 inclui quatro núcleos estacionados, numerados (da direita para a esquerda, de zero a sete): 3, 5, 6 e 7. Deste modo, conclui-se que os núcleos 0, 1, 2 e 4 são não núcleos estacionados.
Em conformidade com uma ou mais modalidades, a máscara de bits 204 pode ser invertida na etapa 206 de modo a criar a máscara de bits invertida 208. Por exemplo, o gerenciador de energia do kernel 114 pode criar a máscara de bits invertida 208. A máscara de bits invertida inclui um valor de bit invertido para cada célula (ou seja, o núcleo). Por conseguinte, os núcleos designados com o número 1 podem ser preferidos para processar dados, enquanto os núcleos designados com o número 0 não podem ser preferidos para processar encadeamentos de aplicação.
Na etapa 210, uma programação de aplicação é determinada, tal como pelo programador do kernel 116. Por exemplo, o dispositivo computacional 102 pode executar um ou mais módulos de programa 110. Alguns dos módulos de programa 110 podem incluir programas encadeados únicos, enquanto outros módulos de programa podem incluir módulos multi-encadeados. Normalmente, o programador do kernel 116 programa cada encadeamento para um núcleo disponível, com base em uma série de fatores, tais como prioridade, disponibilidade de núcleo, afinidade (limitações de programação), além de outros fatores. Quando os encadeamentos superam o número de núcleos disponíveis, neste caso, o programador do kernel 116 alterna encadeamentos ou, de outra forma, programa encadeamentos no sentido de garantir que os encadeamentos eventualmente progridem (ou seja, são executados pelo processador). Os processadores 104 podem alternar encadeamentos em um único núcleo muitas vezes por segundo, proporcionando, assim, oportunidades para o programador do kernel 116 efetivamente programar encadeamentos para núcleos disponíveis.
Embora muitos módulos de programa não atribuam encadeamentos a processadores específicos, alguns módulos de programa complexos podem requerer que um encadeamento seja executado por um processador específico, referido como definição da afinidade do processador de encadeamentos. Máscaras de afinidade de encadeamento de módulos de programa 212 representam os núcleos requeridos para o processamento dos encadeamentos, conforme determinado pelos módulos de programa 110. Por exemplo, um primeiro módulo de programa pode ter uma primeira máscara de afinidade 212(1) que indica que os encadeamentos devem ser programados pelo programador do kernel 116 nos núcleos 0 e 1.
Uma segunda máscara de afinidade 212(2) associada a um segundo módulo de programa pode indicar que os encadeamentos podem ser programados nos núcleos 2 e 3, enquanto outro módulo de programa pode incluir uma máscara de afinidade 212(P) indicando que os encadeamentos podem ser programados em qualquer um dos núcleos disponíveis (todos os núcleos são mostrados conforme selecionados). Deve-se notar que a máscara de afinidade 212(P) é um caso especial no sentido de que a mesma efetivamente não inclui nenhuma limitação para a alocação de encadeamentos nos núcleos.
Em algumas modalidades, as máscaras de afinidade de módulo de programa 212 são combinadas, uma de cada vez, com a máscara de bits invertida 208 usando um operador AND 216 no sentido de determinar o conjunto de processadores elegíveis para um conjunto de processadores disponíveis 218. Na etapa 220, a primeira máscara de afinidade 212(1) é usada para criar um primeiro conjunto de processadores disponíveis 218(1). O processo 200 pode incluir um processo iterative de operações 210, 214 e 220 para cada módulo de programa (ou seja, para cada combinação de máscara de bits invertida 208 e máscara de afinidade 212). Sendo assim, a segunda máscara de afinidade 212(2) é usada para criar um segundo conjunto de processadores disponíveis 218(2) durante uma segunda iteração das operações 210, 214 e 220, e assim por diante.
Conforme acima apresentado, os valores de bits para cada núcleo (por exemplo, o núcleo 0, ..., o núcleo 7) são usados para determinar o conjunto de processadores disponíveis 218 para os encadeamentos de programação. O operador AND 216 retorna um valor de bit de núcleo de 1, no qual ambos os operandos (isto é, os valores de bit combinados para um núcleo) incluem o número 1 representando um encadeamento afinizado a um núcleo específico. Por exemplo, quando a primeira máscara de afinidade 212(1) é combinada com a máscara de bits invertida 208, ambos os núcleos 0 e 1 são núcleos ativos e retornarão um valor de bit de núcleo 1, enquanto os demais núcleos 2 a 7 irão incluir um valor de bit de núcleo 0, conforme ilustrativamente mostrado no primeiro conjunto de processadores disponíveis 218(1).
A segunda máscara de afinidade 212(2) inclui um valor de núcleo 1 no núcleo 3, enquanto a máscara de bits invertida 208 indica que o núcleo 3 está estacionado. O programador do kernel 116 pode optar por substituir a máscara de bits invertida a fim de acomodar a segunda máscara de afinidade 212(2), que é representada no segundo conjunto de processadores disponíveis 218(2), no qual o núcleo 3 inclui um valor de núcleo de 1, portanto, deslocando o trabalho para um núcleo designado como estacionado na máscara de bits invertida 208(o qual pode ser em seguida não estacionado). Em algumas modalidades, o encadeamento pode ser programado usando qualquer número de heurísticas. Um núcleo ótimo na afinidade de encadeamentos pode ser utilizado, ignorando a máscara de bits invertida 208. Quando o núcleo ótimo está estacionado, um sistema fallback de restauração de dados poderá incluir a seleção de um processador no mesmo nó de acesso NUMA (acesso de memória não uniforme) como o núcleo preferido. O programador trata a máscara invertida de estacionamento de núcleo como uma sugestão de locais preferidos para executar o encadeamento, porém o programador irá escolher dentre a limitação rígida (a afinidade rígida) o que ele acredita ser a opção realizável.
Quando todos os núcleos são designados como disponíveis, tal como a máscara de afinidade 212(P), o valor de bit poderá ser ignorado, uma vez que o módulo de programa é indicado no sentido de permitir que os encadeamentos sejam executados por qualquer núcleo. A máscara de afinidade 212(P) pode incluir núcleos programados em qualquer um dentre os núcleos indicados pela máscara de bits invertida 208, tais como os núcleos 0, 1, 2 e 4, conforme representado pelo conjunto de processadores disponíveis 218(P), por meio dos valores de núcleo mostrando 1/0 (ou 1 ou 0, quando pelo menos um núcleo deve ter um valor de núcleo de 1 de modo a permitir a programação do trabalho da máscara de afinidade 212(P)). Em algumas modalidades, o conjunto de processadores disponíveis 218(P) pode selecionar núcleos que não estão estacionados ou ociosos ao determinar uma alocação de trabalho para os núcleos disponíveis. De maneira ideal, o deslocamento de trabalho poderá alocar trabalho aos núcleos 0, 1, 2 e 3, deixando, então, o núcleo 4 sem uso e, possivelmente, estacionado em uma ação subsequente. Outras considerações, tais como apresentadas a seguir, poderão determinar quais núcleos são alocados para trabalho em resposta à máscara de afinidade de 212(P) no sentido de criar uma posição preferida. Por exemplo, uma posição preferida pode se basear em fatores tais como o desempenho de acesso de memória opcional.
As operações 210, 214 e 220 podem ser usadas para programar encadeamentos, conforme descrito acima, com referência à Figura. 2. Além disso, outros trabalhos podem ser realizados no processo 200 por meio das operações 210, 214 e 220, tais como uma chamada de procedimento deferidas (DPC), temporizadores, interrupções de processamento, ou outro trabalho do processador.
De acordo com uma ou mais modalidades, a Figura 2 ilustra um exemplo de uso núcleo 222 para uma fatia de tempo. Por exemplo, uma combinação dos núcleos que estão ativos dentre o conjunto de processadores disponíveis 218 poderá resultar no uso de núcleo 222 durante um determinado intervalo de verificação de tempo, como, por exemplo, sem limitação, 100 milissegundos. O núcleo 4 no uso de núcleo 222 poderá ou não ser indicado como usado, dependendo se o trabalho está programado para o núcleo 4 do conjunto de processadores disponíveis 218(P), conforme acima apresentado. Do ponto de vista do gerenciador de energia do kernel 114, o uso de núcleo 222 irá, de preferência, incluir um valor de núcleo de 0 para o núcleo 4, minimizando, assim, o número de núcleos não estacionados e resultando em uma redução do consumo de energia. Independentemente do uso de núcleo 222, uma nova máscara de estacionamento de núcleo poderá ser criada para a fatia de tempo seguinte, que poderá utilizar as informações do uso de núcleo 222 a fim de determinar a nova máscara de estacionamento de núcleo. Em alguns casos, o núcleo 3 poderá não ser necessário, uma vez que o núcleo 2 poderá ter uma utilização de processamento suficiente para atender a segunda máscara de afinidade 212(2) e, mesmo ainda, ser um núcleo não estacionado.
As Figuras 3A e 3B mostram utilizações de núcleo ilustrativas de acordo com pelo menos uma modalidade da presente invenção. Mais especificamente, a Figura 3B mostra uma revisão ilustrativa das utilizações de núcleo em resposta a uma utilização de núcleo de sistema ilustrativa, conforme mostrado na Figura 3A.
Em conformidade com uma ou mais modalidades, a Figura 3A mostra um sistema 300, incluindo um número de núcleos 302, 304, 306 e 308, embora mais ou menos núcleos possam ser incluídos nas modalidades alternativas do sistema 300. O gerenciador de energia do kernel 114 pode controlar os núcleos usando uma diretiva de energia. A diretiva de energia pode determinar o número de núcleos ativos, e influenciar como o gerenciador de energia do kernel 114 poderá calcular o conjunto de núcleos disponíveis. A diretiva de energia pode ser usada para limitar o número de núcleos disponíveis, ou permitir que o gerenciador de energia do kernel 114 ajuste o número de núcleos disponíveis. O número de núcleos suportados por uma plataforma pode variar entre diferentes sistemas, deste modo, um esquema flexível se torna necessário no sentido de permitir que o número de núcleos seja especificado pelo gerenciador de energia do kernel sem saber de antemão quantos núcleos se encontram disponíveis. Portanto, em algumas modalidades, o número de núcleos a ser utilizado pode ser expresso como um percentual de utilização máxima de núcleo. Por conseguinte, uma implementação dos núcleos pode requerer o arredondamento do percentual para o próximo número disponível que representa o número de núcleos. Por exemplo, o percentual de uso de núcleo pode ser calculado como 60 por cento. Quando o sistema inclui quatro núcleos, o percentual pode ser arredondado para 75 % e três núcleos não serão estacionados enquanto um núcleo estiver estacionado.
Cada núcleo inclui uma utilização de núcleo (utilidade de núcleo) 310 que representa a carga de trabalho daquele núcleo, expresso como o percentual de um tempo de execução de núcleo fora do tempo total, independente do estado de desempenho do núcleo. Por exemplo, o núcleo 0 302 pode ter uma utilidade de núcleo de 80 %, indicando que o núcleo está fazendo 20 % menos trabalho do que a capacidade máxima de carga de trabalho do núcleo 0. Por conseguinte, uma utilidade de núcleo de 100 % representa um núcleo trabalhando a uma capacidade máxima, enquanto um núcleo tendo uma utilidade de núcleo de 0 % representa um núcleo não utilizado. Em algumas modalidades, o gerenciador de energia do kernel 114 pode monitorar a utilidade de núcleo 310.
Além disso, cada núcleo pode incluir um estado de desempenho (estado p de configuração avançada e interface de potência (ACPI)) 312. O estado p 312 é uma freqüência de núcleo e definição de tensão e é controlado pelo gerenciador de energia do kernel 114. O estado p 312 é semelhante a um controle de acelerador de um motor. Um estado p 312 de 100 % representa um estado de desempenho máximo de um núcleo, enquanto um estado p de 50 % representa um núcleo na metade da freqüência máxima com um nível de tensão de núcleo reduzido correspondente. Deve-se notar que o consumo de energia real de um núcleo pode não coincidir ou não ser proporcional ao estado p 312. Por exemplo, a duplicação do estado p 312 de um núcleo poderá não dobrar o consumo de energia do núcleo em função de outros fatores, tais como a fuga de energia do núcleo, o consumo de energia da base do núcleo, e/ou outros fatores. Em algumas modalidades, o gerenciador de energia do kernel 114 pode determinar e/ou controlar o estado p 312, tal como fazendo referência às diretivas de energia.
Cada núcleo inclui um valor de utilização de saída (utilidade de saída) 314, que representa a carga de trabalho do núcleo com relação à capacidade total de carga de trabalho. Por exemplo, a utilidade de saída 314 pode ter uma escala de 0 a 10,000, na qual 0 representa nenhuma utilização e 10.000 representa uma utilização máxima. A utilidade de saída 314 pode ser calculada ao se multiplicar a utilidade de núcleo 310 e o estado p 312. Por exemplo, o núcleo 0 302 inclui uma utilidade de núcleo de 80 % e um estado p de 80 %, portanto, a utilidade de saída é de 6,400. Em algumas modalidades, a utilidade de saída 314 é usada pelo gerenciador de energia do kernel 114 a fim de determinar decisões de estacionamento de núcleo e/ou determinar definições de estado p 312, como, por exemplo, com referência às diretivas de energia.
Em algumas modalidades, o sistema 300 pode incluir um bloco de núcleos 316, tal como um primeiro bloco de núcleos 316(1) e um segundo bloco de núcleos 316(2), no entanto mais ou menos blocos de núcleos podem ser implementados no sistema 300. O bloco de núcleos 316 pode representar uma plataforma tendo múltiplos núcleos com um único circuito, tal como um processador de núcleo duplo ou um processador de múltiplos núcleos. Cada bloco de núcleos 316 pode incluir características únicas de consumo de energia. Por exemplo, um núcleo pode incluir um consumo de energia de nível ativo, uma fuga de núcleo, ou outras dissipações de energia que ocorrem quando um dos núcleos do bloco não está estacionado. Por exemplo, quando ambos os núcleos do primeiro bloco de núcleos 316(1) não estão estacionados e têm uma utilidade de saída de 10,000, o consumo de energia combinado pode ser de 2x watts. Quando o núcleo 0 302 do primeiro bloco de núcleos 316(1) é estacionado em seguida (por exemplo, a utilização de saída é 0) e o núcleo 1 304 permanece inalterado, o consumo de energia combinado poderá ser maior que x watts em função de fatores associados ao bloco de núcleos 316, tais como fuga de energia, consumo de energia ativo, e/ou outros fatores. Quando o núcleo 1 é estacionado em seguida, o consumo de energia resultante poderá ser 0 watts. Deste modo, pode ser vantajoso estacionar núcleos de tal modo que todos os blocos de núcleo sejam estacionados antes que outros núcleos sejam estacionados em seguida, maximizando, assim, a economia de energia.
Conforme mostrado na Figura 3A, uma implementação ilustrativa do sistema 300 inclui o núcleo de 3 308 sendo estacionado enquanto os demais núcleos não são estacionados (ou seja, ativos). Embora o núcleo 3 inclua um estado p de 100 %, isso não poderá indicar que a energia seja fornecida para o núcleo 3. Dito de outra forma, o gerenciador de energia do kernel 114 pode estacionar um núcleo, deixando um estado p a um nível superior a 0 %.
Em um cenário de utilização exemplar, o gerenciador de energia do kernel 114 pode calcular a saída do sistema 300 de modo a determinar uma utilidade total de sistema de 12.600 (ou seja, 6400 + 3200 + 3000 = 12600) de uma utilidade máxima total de sistema de 30.000 (ou seja, 3 núcleos não estacionados x 10.000 = 30.000). Os números de utilização acima referidos se destinam a ser explicativos na natureza dos cálculos que podem ser feitos usando a utilidade total de sistema e, portanto, não são limitantes à presente invenção.
A Figura 3B mostra uma revisão ilustrativa das utilizações de núcleo em um sistema revisado 318 em resposta à utilização total do sistema, como mostrado na Figura 3A. O sistema revisado 318 inclui uma revisão na condição estacionada / não estacionada dos núcleos 302, 304, 306 e 308. Como mencionado acima, com referência ao sistema 300, a utilidade total do sistema foi calculada em 12,600 em um exemplo. Portanto, o gerenciador de energia do kernel 114 pode estacionar um núcleo adicional, sem reduzir a capacidade de o sistema atender às demandas correntes de carga de trabalho, uma vez que a utilidade total de sistema é inferior à capacidade máxima de utilização de dois núcleos (ou seja, 12.600 < 20.000). De acordo com algumas modalidades, o gerenciador de energia do kernel 114 pode selecionar um núcleo para estacionar, talvez com base na diretiva de energia ou em outros fatores, que podem ser completamente transparentes a um usuário do sistema. A transparência ao usuário não inclui qualquer sistema perceptível ao usuário ou impacto de desempenho do aplicativo, com exceção de seu objetivo básico de uma melhor eficiência da energia. Quaisquer alterações necessárias para implementar um estacionamento de núcleo podem ser limitadas aos componentes internos do sistema operacional de nível muito baixo, e, portanto, não poderá haver nenhuma mudança comportamental ou de experiência para os usuários finais associados ao estacionamento de núcleos.
Quando um segundo núcleo é estacionado, a utilidade total máxima do sistema do sistema revisado cairá a 20,000 (2 núcleos x 10,000). O gerenciador de energia do kernel 114 pode estacionar qualquer um dos núcleos que estiver ativo no estado anterior (conforme mostrado na Figura 3A). Conforme acima descrito, pode ser vantajoso estacionar o núcleo 2
306 de modo a estacionar completamente o segundo bloco de núcleos 316(2), resultando em um bloco de núcleos estacionado 320. Por conseguinte, o bloco de núcleos estacionado 320 pode aumentar a economia de energia em comparação com o estacionamento do núcleo 0 302 ou do núcleo 1 304 ao invés do núcleo 2 306.
A fim de acomodar uma mudança transparente a qualquer usuário do sistema 318, a utilidade de saída do núcleo estacionado (núcleo 2) deve ser absorvida ou novamente alocada aos demais núcleos não estacionados (ou seja, o núcleo 0 e o núcleo 1). A partir da Figura 3A, a utilidade de saída do núcleo 2 foi de 3,000. Portando, em um caso, os núcleos não estacionados podem também compartilhar a carga ao fazer com que cada núcleo tenha uma utilidade de saída 322 modificada que assume uma utilidade de saída adicional de 1,500 para cada núcleo. Em alguns casos, outras divisões de uma utilidade total do núcleo estacionado podem ser usadas ao alocar utilidade aos núcleos não estacionados. Por exemplo, um núcleo não estacionado pode ser executado próximo à capacidade (utilidade total próxima a 10,000, que vem a ser a utilidade máxima). Neste caso, os núcleos com uma largura de banda maior poderão absorver mais da utilidade total do núcleo estacionado.
Em uma ou mais modalidades, o gerenciador de energia do kernel 114 pode ajustar a utilidade de núcleo 310 do núcleo 0 302 e do núcleo 1 304 a 79 % e 47 %, respectivamente. Além disso, o gerenciador de energia do kernel 114 pode aumentar o estado p 312 para 100 % para ambos os núcleos não estacionados. Sendo assim, a utilidade total de sistema do sistema revisado 318 permanece igual à utilidade total de sistema do sistema 300 a 12,600.
O sistema revisado 318 ilustra uma revisão possível do status estacionado / não estacionado, da utilidade de núcleo 310, e/ou do estado p 312 no sentido de acomodar uma revisão de núcleo que seja transparente aos usuários, ao mesmo tempo resultando em um consumo de energia reduzido para o sistema revisado 318. No entanto, muitas outras revisões podem ser feitas no sistema 318 que resultam no consumo de energia reduzido e que são transparentes aos usuários. Por exemplo, a utilidade do núcleo 310 do núcleo 1 304 pode ser aumentada para 94 %, enquanto o estado p é reduzido para 50 %, resultando em uma utilidade total de 4700. A estratégia de revisão pode ser determinada pela diretiva de energia que pode levar em conta os interesses conflitantes do gerenciador de energia do kernel 114 e do programador do kernel 116.
Outras considerações podem ser implementadas no âmbito da diretiva de energia que podem afetar o sistema revisado 318. Por exemplo, os encadeamentos que não são sensíveis ao tempo (por exemplo, as linhas de fundo) podem ter menos impacto sobre a decisão de estacionamento de núcleo, ao mesmo tempo mantendo as mudanças transparentes aos usuários. Mais especificamente, ao incluir a distribuição de tempos de execução médios através das prioridades de encadeamento executadas em um determinado núcleo, o gerenciador de energia do kernel 114 pode ajustar a utilização calculada de um núcleo de tal modo que os encadeamentos de baixa prioridade e as cargas de trabalho não cheguem a uma contagem tão alta quanto os encadeamentos de alta prioridade e cargas de trabalho.
A Figura 4 mostra um fluxograma de pelo menos uma modalidade de um processo ilustrativo 400 de avaliação de programação de encadeamento e uso dinâmico de processadores e de determinação de uma configuração revisada para os processadores. O processo 400 pode ser implementado pelo gerenciador de energia do kernel 114, além de outros módulos no sistema operacional 108 e/ou residentes na memória de sistema 106.
Em conformidade com uma ou mais modalidades, o gerenciador de energia do kernel 114 avalia um período de tempo para o monitoramento da utilidade de saída 314 (entre outros fatores, incluindo a utilidade de núcleo 310, o estado p 312, etc.) O período de tempo pode ser selecionado igual a, ou maior que, uma fatia de tempo disponível para o processamento de cada encadeamento. Em uma determinada frequência, o gerenciador de energia do kernel 114 pode dar início ao monitoramento dos núcleos.
Na etapa 404, o gerenciador de energia do kernel 114 pode calcular a utilização total do sistema e a utilização máxima total do sistema. O gerenciador de energia do kernel 114 pode revisar a diretiva de energia na etapa 406 de modo a determinar como ajustar o uso de núcleo para equilibrar as necessidades de economia de energia do gerenciador de energia do kernel 114 e as necessidades de disponibilidade de núcleo (desempenho de processamento) do programador do kernel 116. Na etapa 408, outros fatores podem ser usados no sentido de determinar se é conveniente ajustar o uso do núcleo, e em caso afirmativo, como ajustar o uso de modo a atingir as metas do sistema, tais como uma mudança transparente aos usuários, acomodar requisitos de temperatura e/ou acomodar outras limitações.
Na etapa 410, o gerenciador de energia do kernel 114 pode calcular novas configurações para os núcleos. Por exemplo, o gerenciador de energia do kernel pode calcular uma nova máscara de bits 202, conforme mostrado na Figura 2. Em uma ou mais modalidades, a máscara de bits pode ser ajustada de modo a criar o conjunto de processadores disponíveis 218 na etapa 410. Na etapa 412, o gerenciador de energia do kernel 114 pode implementar as configurações da etapa 410. Em algumas modalidades, o processo 400 pode se repetir de modo a criar uma alocação dinâmica de núcleo, como por meio da repetição a uma frequência predeterminada. De maneira alternativa, o processo 400 pode criar uma alocação estática de núcleo por um dado período de tempo.
Operação Ilustrativa
A Figura 5 mostra um fluxograma de pelo menos uma modalidade de um processo ilustrativo 500 de provisão de uma programação de encadeamento ciente de energia e uso dinâmico de processadores. O processo 500 será construído de maneira similar ao processo 200 da Figura 2 com relação à ordenação e implementação do processo. Por exemplo, a ordem na qual as operações do processo 500 são descritas não é concebida como uma limitação, e qualquer número de blocos descritos pode ser combinado em qualquer ordem e/ou em paralelo a fim de implementar o processo. Para fins de apresentação, o processo 500 é descrito com referência ao sistema 100 da Figura 1.
De acordo com uma ou mais modalidades, a rotina de avaliação periódica TimeCheck pode se iniciar na etapa 502. Por exemplo, uma chamada de procedimento deferida (DPC) pode se iniciar na etapa 502. Em algumas modalidades, uma máquina de estado é entrada em cada núcleo através da chamada DPC que é executada a uma taxa periódica fixa configurada por um parâmetro de diretiva de energia TimeCheck em um valor de tempo, como, por exemplo, 100 min, 50 min, ou outro valor de tempo. Na etapa 504, o gerenciador de energia do kernel 114 pode juntar métricas para os núcleos. Por exemplo, a chamada DPC é enfileirada para cada núcleo correntemente ativo a fim de quebrar métricas para os núcleos ativos. As métricas podem incluir a utilização do núcleo, a distribuição de prioridades de encadeamento, um tempo médio de espera para encadeamentos prontos para cada núcleo, e/ou métricas de sucesso e métricas de falha para residência de estado ocioso, entre outras métricas possíveis.
Na etapa 506, o gerenciador de energia do kernel 114 pode calcular a máscara de bits, tal como a máscara de estacionamento de núcleo 204. Por exemplo, um valor novo pode ser calculado para o número alvo de núcleos ativos com base nos limites de utilização, na diretiva de energia, e/ou em quaisquer relacionamentos de dependência. Na etapa 508, um conjunto ativo pode ser atualizado, como, por exemplo, ao implementar porções do processo 200 governadas pelo gerenciador de energia do kernel 114 para criar o conjunto de processadores disponíveis 218.
Na etapa 510, o conjunto ativo pode ser implementado pelo sistema operacional 108. O gerenciador de energia do kernel 114 pode determinar se núcleos foram adicionados (não estacionados) na etapa 512. Quando núcleos não são estacionados, o programador do kernel 116 pode ser notificado na etapa 514 e pode começar usando os núcleos não estacionados para programar encadeamentos. Estes núcleos não estacionados podem ainda ser o destino de uma programação de encadeamento remota (ou seja, a partir de um processador diferente), ou podem ser escolhidos proativamente a fim de selecionar encadeamentos a partir de outros processadores. Em algumas modalidades, os encadeamentos podem ser reatribuídos para serem executados nos núcleos não estacionados, desta forma reduzindo a carga de trabalho de outros núcleos não estacionados.
Na etapa 516, a utilização de saída de núcleo esperada pode ser calculada pelo gerenciador de energia do kernel 114 e pode incluir núcleos não estacionados a partir da etapa 506. Sendo assim, um novo valor para o número de núcleos ativos determinados na etapa 506 é usado para calcular a utilização de processador esperada. Na etapa 518, o gerencia dor de energia do kernel 114 pode calcular um valor novo para o estado p. Em algumas modalidades, a chamada DPC é programada em cada núcleo a fim de atualizar o seu estado p alvo. Em um exemplo, quando a utilização esperada aumenta, o valor do estado p pode também aumentar caso nenhum núcleo não esteja estacionado na etapa 512. No entanto, quando núcleos não são estacionados na etapa 512, o estado p pode aumentar ou diminuir no sentido de equilibrar as necessidades de economia de energia do gerenciador de energia do kernel 114 com as necessidades de processamento do programador do kernel 116.
Na etapa 520, o gerenciador de energia do kernel 114 determina se os valores correntes do estado p e/ou do estado t (estado de aceleração linear) devem ser revisados com base nos resultados do cálculo na etapa 518. Quando o estado p e/ou o estado t são modificados na etapa 520, o gerenciador de energia do kernel 114 poderá enfileirar as chamadas DPC de transição aos núcleos afetados na etapa 522. Deste modo, os encadeamentos programados pelo programador do kernel 116 podem ser programados para os núcleos executados no novo estado p e/ou estado t conforme implementados na etapa 520.
Na etapa 524, o gerenciador de energia do kernel 114 determina se núcleos foram estacionados na etapa 506. Por exemplo, a utilização de saída de núcleo esperada da etapa 516 pode ser menor que a utilização corrente. Quando núcleos são estacionados na etapa 524, o gerenciador de energia do kernel 114 pode notificar o programador do kernel 116 na etapa 526 no sentido de terminar a programação de encadeamentos para os núcleos recém estacionados. Para qualquer núcleo adicionado ou removido à máscara de núcleo ativa, uma chamada DPC é programada para aquele núcleo. Conforme descrito com referência às Figuras 3A e 3B, o trabalho de um núcleo estacionado pode ser realocado para um ou mais núcleos não estacionados. Em algumas modalidades, os núcleos recém estacionados podem ser colocados no estado c mais fundo que se encontrar disponível. Finalmente, na etapa 528 o processo 500 pode ser repetido.
A Figura 6 mostra outro fluxograma de pelo menos uma modalidade de um processo ilustrativo 600 de provisão de uma programação de encadeamento ciente de energia e uso dinâmico de processadores, incluindo ainda uma contagem de domínio ocioso. O processo 600 inclui a maior parte dos sub-processos descritos na Figura 5, e, deste modo, estes sub-processos da Figura 5 não serão novamente descritos.
Na etapa 602, o gerenciador de energia do kernel 114 pode determine se a contagem de domínio ocioso está habilitada. Quando a contagem de domínio ocioso é habilitada, um domínio mestre quebra a métrica para o domínio (por exemplo, o bloco de núcleos 316 ou todos os núcleos) na etapa 604.
Em algumas modalidades, a contagem de domínio ocioso pode iniciar outra decisão na etapa 606. Quando a contagem de domínio ocioso é habilitada, o gerenciador de energia do kernel 114 poderá calcular o estado p do domínio destino na etapa 608. Finalmente, na etapa 610, o processo 600 pode se repetir.
A Figura 7 mostra um fluxograma de pelo menos uma modalidade de um processo 700 de provisão de definições adicionais de diretiva de energia e outras entradas para a programação de encadeamento ciente de energia e uso dinâmico de processadores. Em algumas modalidades, o estacionamento de núcleo pode ser implementado como um aperfeiçoamento à máquina de estado existente que calcula o estado alvo a ser usado para os estados de desempenho de um processador. O número correto de núcleos a ser usado a qualquer momento dado será determinado com base em diversos fatores conforme descritos a seguir com referência ao processo 700.
De acordo com uma ou mais modalidades, a diretiva de energia corrente pode ser usada para definir o número de núcleos a ser utilizado na etapa 702. Na etapa 704, o número mínimo e máximo de núcleos pode ser definido. O gerenciador de energia do kernel 114 pode calcular o número de núcleos ativos requeridos para completar uma dada carga de trabalho com pouco gasto de energia. Em algumas instâncias, a execução do número mínimo de núcleos pode ser benéfica à economia de energia e beneficiar o gerenciador de energia do kernel 114. Em contrapartida, a execução do número máximo de núcleos pode prover o mais alto nível de desempenho, beneficiando, assim, o programador do kernel 116.
Na etapa 706, outros parâmetros de diretiva de energia para o estacionamento de núcleo podem ser implementados pelo gerenciador de energia do kernel 114, usando um ou mais dentre os sub-processos 706(1), ..., 706(4). Na etapa 706(1), o intervalo de tempo requerido para o estacionamento e/ou não estacionamento de núcleos poderá ser ajustado. Por exemplo, a frequência de estacionamento e/ou não estacionamento de núcleos poderá ser manipulada por meio da mudança de um intervalo. Em algumas modalidades, núcleos podem ser estacionados em um primeiro intervalo e não estacionados em um segundo intervalo. Por exemplo, uma diretiva que favorece a economia de energia pode estacionar núcleos de uma forma tão frequente quanto a cada 100 min, mas só poderá não estacionar núcleos a cada 500 min.
Na etapa 706(2), o gerenciador de energia do kernel 114 pode implementar uma diretiva de aumento e/ou de diminuição. Por exemplo, uma primeira opção de diretiva só poderá estacionar um número definido de núcleos por vez, por exemplo, um núcleo por vez. Uma segunda opção de diretiva poderá estacionar ou não estacionar núcleos de modo a obter uma utilização de núcleo ideal, deste modo o estacionamento e/ou não estacionamento de múltiplos núcleos por vez. Uma terceira diretiva poderá ir de um extremo ao outro (ou estacionar tanto quanto possível ou não estacionar tanto quanto possível).
Na etapa 706(3), o limite de utilização requerido pode ser aumentado ou diminuído com base na ocupação dos processadores. Por exemplo, um processador poderá não se submeter a uma alteração em um status de estacionado ou não estacionado até que o pro cessador (ou outros processadores) inclua um estado de atividade para um dado período de tempo. Isto poderá reduzir o salto de um processador entre um estado estacionado e não estacionado em uma rápida sucessão.
Finalmente, na etapa 706(4), a diretiva para o ajuste de núcleos não estacionados poderá ser implementada. Por exemplo, o gerenciador de energia do kernel 114 pode calcular o estado alvo ideal de desempenho de processador com base no número de núcleos de processador no conjunto correntemente ativo. A fim de prover as melhores trocas entre economia de energia, desempenho, e agilidade de resposta às cargas de trabalho específicas, o gerenciador de energia do kernel 114 poderá, com vantagem, executar um número menor de processadores em um estado superior de desempenho, ou em contrapartida, executar um número maior de núcleos em um estado de desempenho inferior.
Na etapa 708, uma heurística de núcleo e ou sistema poderá ser implementada pelo gerenciador de energia do kernel 114, utilizando um ou mais dentre os sub-processos 708(1) e 708(2). Na etapa 708(1), o gerenciador de energia do kernel 114 pode calcular o número de núcleos ativos requeridos e o estado de desempenho ótimo dos núcleos em uso ativo com base no uso bem sucedido de estados profundos de energia ociosa do processador (estados de suspensão). Isto poderá permitir ao gerenciador de energia do kernel detectar quando os estados mais profundos de ociosidade não estão sendo eficientemente usados através do conjunto de núcleos ativos (não estacionados). A fim de economizar energia e ainda prover desempenho, pode ser benéfico colocar mais núcleos no estado estacionado, e aumentar o estado de desempenho dos demais núcleos ativos a fim de garantir que o trabalho é executado com eficiência.
Na etapa 708(2), um tempo médio de espera pode ser usado para os encadeamentos prontos para serem alocados (atribuídos) para um núcleo. Por exemplo, o gerenciador de energia do kernel 114 pode calcular o número de núcleos de processador requerido mediante o uso da distribuição de tempos médios de espera para os encadeamentos no estado pronto, o que permite ao gerenciador de energia do kernel ajustar o número de núcleos em uso a fim de reduzir a latência antes de os encadeamentos no estado pronto poderem ser executados, aumentando, assim, o desempenho e a agilidade de resposta. Em um exemplo, quando um grande número de encadeamentos precisa ser executado, pode ser vantajoso não estacionar núcleos e ao mesmo tempo reduzir o estado p dos núcleos, uma vez que cada núcleo só poderá processar um encadeamento por vez. Sendo assim, uma disponibilidade maior de núcleo possibilitará o processamento de um grande número de encadeamentos em algumas instâncias.
Na etapa 710, as dependências de estado ocioso podem ser usadas pelo gerenciador de energia do kernel 114 a fim de ajustar uma implementação de estacionamento de núcleo. Quando o gerenciador de energia do kernel 114 seleciona quais núcleos específicos devem ser estacionados ou não estacionados, o mesmo primeiramente irá examinar os relacionamentos de dependência de estado ocioso dos núcleos a fim de determinar quais núcleos devem compartilhar recursos de energia ou de relógio, e escolher entre estacionar ou não estacionar núcleos de uma maneira mais eficiente em termos de energia com base nos controles compartilhados.
Na etapa 712, os relacionamentos de estado desempenho e aceleração podem ser considerados ao determinar entre estacionar ou não estacionar um ou mais núcleos. Os núcleos que compartilham um estado de desempenho ou controles de aceleração podem ser estacionados ou não estacionados juntos de modo a produzir maiores eficiências de energia.
Na etapa 714, relacionamentos de pacote de núcleos (bloco) podem ser considerados, tais como as dependências descritas nas Figuras 3A e 3B com relação às eficiências de um bloco de núcleos, e mais especificamente ao estacionamento de um bloco de núcleos antes de estacionar um outro núcleo em um novo bloco de núcleos. Finalmente, na etapa 716, uma localidade de memória poderá ser usada pelo gerenciador de energia do kernel 114 ao implementar considerações de estacionamento de núcleos. Por exemplo, dois ou mais núcleos podem ter relacionamentos de pacote, tais como os núcleos que compartilham um pacote físico de processador tendo um banco de memória compartilhado (por exemplo, um nó de acesso NUMA (acesso de memória não uniforme)). O banco de memória compartilhado pode permitir aos núcleos ter um tempo de acesso de memória reduzido em comparação como os núcleos que não compartilham o banco de memória compartilhado.
Conclusão
Os sistemas, técnicas e aparelhos acima descritos dizem respeito à provisão de uma programação de encadeamento ciente de energia e ao uso dinâmico de processadores. Embora as técnicas, sistemas e aparelhos tenham sido descritos em uma linguagem específica a aspectos estruturais e/ou etapas de método, deve-se entender que as reivindicações em apenso não necessariamente se limitam aos aspectos específicos ou etapas descritas. Ao contrário, os aspectos específicos e etapas são apresentados como formas exemplares de implementação de tais técnicas e aparelhos.

Claims (18)

1. Método para equilibrar o desempenho e economia de energia de um dispositivo computacional tendo vários núcleos caracterizado pelo fato de que compreende:
determinar quais núcleos (202,204) dos múltiplos núcleos estão processando ativamente o trabalho;
determinar uma diretiva de energia (201,214,406) para iniciar um plano de desempenho e economia de energia para os múltiplos núcleos, em que determinar a diretiva de energia (201,214,406) compreende:
criar uma máscara de estacionamento de núcleo (202) utilizando um valor de bit para representar um status estacionado ou não estacionado de um núcleo;
determinar as máscaras de afinidade do processador de encadeamento (210) que representam um ou mais núcleos nos quais um encadeamento é designado para ser processado;
proporcionar pelo menos uma parte do plano de desempenho e economia de energia para os núcleos ao combinar uma inversão da máscara de estacionamento principal e as máscaras de afinidade do processador de encadeamento (214) usando um operador “E” para criar um conjunto de processadores disponíveis (220); e calcular quais núcleos são designados como estacionados ou não estacionados com base, pelo menos em parte, no conjunto de processadores disponíveis (220); e estacionar pelo menos um dos núcleos processando ativamente o trabalho com base, pelo menos em parte, na diretiva de energia (201,214,406) ao indicando que um dos núcleos que ativamente processam o trabalho é designado como um núcleo estacionado.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar uma diretiva de energia (201,214,406) ocorre dinamicamente como um processo iterativo.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende escalonar pelo menos um dos múltiplos núcleos com base na diretiva de energia.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que escalonar pelo menos um dos múltiplos núcleos inclui ajustar pelo menos um dentre uma utilidade de núcleo ou o estado de energia (estado p) de um núcleo para aumentar a economia de energia (512).
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o estacionamento de pelo menos um dos múltiplos núcleos inclui:
Petição 870190067378, de 17/07/2019, pág. 4/9 determinar se um bloco de núcleo não estacionado inclui um núcleo estacionado; e se o bloco de núcleo não estacionado tendo o núcleo estacionado for determinado, estacionar pelo menos um núcleo não estacionado no bloco de núcleo não estacionado.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende modificar a diretiva de energia usando heurísticas de núcleo e sistema (708).
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende modificar a diretiva de energia usando relações de dependência de estado ocioso do processador de núcleos (710,714,718).
8. Meio de armazenamento legíveis por computador tendo um método caracterizado pelo fato de que compreende:
monitorar (402) a atividade de núcleo em um sistema de múltiplos núcleos;
recuperar (406) uma diretiva de energia para o sistema de múltiplos núcleos, a diretiva de energia equilibrando a economia de energia e o desempenho de processamento de cada núcleo do sistema de múltiplos núcleos;
estacionar (412) pelo menos um núcleo em resposta à atividade de núcleo com base na diretiva de energia;
revisar (508) a atividade de núcleo monitorada para criar uma atividade de núcleo revisada;
desestacionar (512) pelo menos um núcleo em resposta à atividade de núcleo revisada com base na diretiva de energia; e reatribuir (514) pelo menos um encadeamento a pelo menos um núcleo não estacionado.
9. Meio de armazenamento, de acordo com a reivindicação 8, caracterizado pelo fato de que estacionar um núcleo inclui reduzir (524) o estado de energia do núcleo a um estado de energia ociosa do processador de energia mínima (estado C).
10. Meio de armazenamento, de acordo com a reivindicação 8, caracterizado pelo fato de que ainda compreende ajustar (520) o estado de energia de pelo menos um núcleo não estacionado no sistema de múltiplos núcleos.
11. Meio de armazenamento, de acordo com a reivindicação 8, caracterizado pelo fato de que estacionar pelo menos um núcleo em resposta à atividade do núcleo é iniciado dinamicamente a uma frequência predeterminada (502,504).
12. Meio de armazenamento, de acordo com a reivindicação 8, caracterizado pelo fato de que monitorar a atividade de núcleo em um sistema de múltiplos núcleos ocorre durante um período de tempo predeterminado (402) e em que estacio
Petição 870190067378, de 17/07/2019, pág. 5/9 nar pelo menos um núcleo em resposta à atividade de núcleo ocorre dinamicamente em resposta a oportunidade de economia de energia detectada pela atividade de núcleo monitorada.
13. Meio de armazenamento, de acordo com a reivindicação 8, caracterizado pelo fato de que estacionar pelo menos um núcleo em resposta à atividade de núcleo inclui mudar (712,714) o trabalho para um núcleo não estacionado, conforme permitido por uma máscara de afinidade associada a uma programação.
14. Meio de armazenamento, de acordo com a reivindicação 8, caracterizado pelo fato de que desestacionar pelo menos um núcleo compreende desestacionar um núcleo em um bloco de núcleo que inclui pelo menos um outro núcleo não estacionado, em que o bloco de núcleo tem um nível de dissipação de energia quando qualquer dos núcleos no bloco de núcleo não são estacionados.
15. Sistema de múltiplos processadores lógicos caracterizado pelo fato de que compreende:
uma pluralidade de processadores (104), em que a pluralidade de processadores inclui pelo menos um bloco de núcleo tendo múltiplos núcleos(300); e um controlador (106) acoplado à pluralidade de processadores (104), o controlador configurado para:
implementar uma programação de desempenho;
implementar uma diretiva de economia de energia que inclui uma máscara de estacionamento de núcleo (202), a máscara de estacionamento de núcleo combinada com as programações do módulo do programa para determinar um conjunto resultante de processadores nos quais programar o trabalho (116,220); e equilibrar a programação de desempenho e a diretiva de economia de energia ao estacionar um ou mais da pluralidade de processadores e criar (318,714) uma priorização de estacionamento de núcleo para um núcleo não estacionado em um bloco de núcleo que tenha pelo menos um núcleo estacionado.
16. Sistema, de acordo com a reivindicação 15, caracterizado pelo fato de que o controlador recebe instruções de um gerenciador de energia do kernel (114) que reside na memória do sistema para implementar a diretiva de economia de energia.
17. Sistema, de acordo com a reivindicação 15, caracterizado pelo fato de que ainda compreende ajustar o estado p de pelo menos um núcleo não estacionado.
18. Sistema, de acordo com a reivindicação 15, caracterizado pelo fato de que a diretiva de economia de energia restringe o número de núcleos a serem expressamente usados como uma porcentagem da utilização máxima do núcleo.
BRPI0907774-0A 2008-03-28 2009-02-16 Programação de encadeamento ciente de energia e uso dinâmico de processadores BRPI0907774B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/057,716 US8010822B2 (en) 2008-03-28 2008-03-28 Power-aware thread scheduling and dynamic use of processors
US12/057.716 2008-03-28
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
BRPI0907774A2 BRPI0907774A2 (pt) 2015-07-14
BRPI0907774B1 true BRPI0907774B1 (pt) 2020-06-02

Family

ID=41114264

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0907774-0A BRPI0907774B1 (pt) 2008-03-28 2009-02-16 Programação de encadeamento ciente de energia e uso dinâmico de processadores

Country Status (9)

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

Families Citing this family (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4653841B2 (ja) * 2006-02-28 2011-03-16 インテル・コーポレーション 多数コアプロセッサの信頼性強化
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
JP5784510B2 (ja) 2009-03-03 2015-09-24 ザ コカ・コーラ カンパニーThe Coca‐Cola Company バイオベースポリエチレンテレフタレートパッケージング及びその製造方法
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
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单元的动态启用和禁用
US8736619B2 (en) 2010-07-20 2014-05-27 Advanced Micro Devices, Inc. Method and system for load optimization for power
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
US8656408B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporations Scheduling threads in a processor based on instruction type power consumption
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
WO2012069881A1 (en) * 2010-11-25 2012-05-31 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 삼성전자주식회사 태스크 할당 장치, 태스크 할당 방법 및 컴퓨터로 읽을 수 있는 저장 매체
DE112011105590T5 (de) 2011-09-06 2014-07-03 Intel Corp. Energieeffiziente Prozessorarchitektur
US9129060B2 (en) 2011-10-13 2015-09-08 Cavium, Inc. QoS based dynamic execution engine selection
US9128769B2 (en) 2011-10-13 2015-09-08 Cavium, Inc. Processor with dedicated virtual functions and dynamic assignment of functional resources
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
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
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
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 富士通株式会社 情報処理装置、制御方法及び制御プログラム
US8650538B2 (en) 2012-05-01 2014-02-11 Concurix Corporation Meta garbage collection for functional code
US8726255B2 (en) 2012-05-01 2014-05-13 Concurix Corporation Recompiling with generic to specific replacement
US9390461B1 (en) 2012-05-08 2016-07-12 Apple Inc. Graphics hardware mode controls
US9035956B1 (en) 2012-05-08 2015-05-19 Apple Inc. Graphics power control with efficient power usage during stop
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
CN104641352B (zh) * 2012-08-02 2018-06-29 西门子公司 用于周期控制系统的流水线操作
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
WO2014185906A1 (en) * 2013-05-15 2014-11-20 Empire Technology Development, Llc Core affinity bitmask translation
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 삼성전자 주식회사 멀티 코어 시스템 및 멀티 코어 시스템의 작업 스케줄링 방법
US9304573B2 (en) 2013-06-21 2016-04-05 Apple Inc. Dynamic voltage and frequency management based on active processors
US9195291B2 (en) 2013-06-21 2015-11-24 Apple Inc. Digital power estimator to control processor power consumption
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
US9195493B2 (en) * 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
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
KR102814792B1 (ko) * 2017-02-27 2025-05-29 삼성전자주식회사 컴퓨팅 장치 및 컴퓨팅 장치에 포함된 복수의 코어들에 전력을 할당하는 방법
CN107239348B (zh) * 2017-06-23 2020-05-15 厦门美图移动科技有限公司 一种多核处理器调度方法、装置及移动终端
RU2703188C1 (ru) * 2017-10-05 2019-10-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
CN112241197B (zh) * 2019-07-17 2025-04-18 马维尔亚洲私人有限公司 针对高速激活管理集成电路中的功率
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
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
WO2022261229A1 (en) * 2021-06-09 2022-12-15 Ampere Computing Llc Apparatus and method for controlling allocations in a shared cache of a numa system
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
CN114265677A (zh) * 2021-12-15 2022-04-01 西安统信软件技术有限公司 一种用于负载均衡的调度方法、装置与计算设备
WO2025052497A1 (ja) * 2023-09-04 2025-03-13 日本電信電話株式会社 割込処理制御装置、割込処理制御方法、および、割込処理制御プログラム

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530932A (en) * 1994-12-23 1996-06-25 Intel Corporation Cache coherent multiprocessing computer system with reduced power operating features
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
US6901522B2 (en) * 2001-06-07 2005-05-31 Intel Corporation System and method for reducing power consumption in multiprocessor system
US7174467B1 (en) * 2001-07-18 2007-02-06 Advanced Micro Devices, Inc. Message based power management in a multi-processor system
US6804632B2 (en) * 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US7318164B2 (en) * 2001-12-13 2008-01-08 International Business Machines Corporation Conserving energy in a data processing system by selectively powering down processors
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
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
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
US7788670B2 (en) * 2004-10-26 2010-08-31 Intel Corporation Performance-based workload scheduling in multi-core architectures
US20060123422A1 (en) 2004-12-02 2006-06-08 International Business Machines Corporation Processor packing in an SMP server to conserve energy
US7526661B2 (en) * 2004-12-02 2009-04-28 Intel Corporation Performance state-based thread management
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

Also Published As

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

Similar Documents

Publication Publication Date Title
BRPI0907774B1 (pt) Programação de encadeamento ciente de energia e uso dinâmico de processadores
JP5564564B2 (ja) 計算ユニットの性能を性能感度に従い不均等に変化させる方法及び装置
JP5433837B2 (ja) 仮想計算機システム、仮想計算機の制御方法及びプログラム
ES2701739T3 (es) Reasignación de hilos basada en software para el ahorro de energía
US8140876B2 (en) Reducing power consumption of components based on criticality of running tasks independent of scheduling priority in multitask computer
US20090320031A1 (en) Power state-aware thread scheduling mechanism
US20060005082A1 (en) Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
EP3649536A1 (en) Core frequency management using effective utilization for power-efficient performance
CN107003686A (zh) 用于动态时域功率操控的系统和方法
US10768684B2 (en) Reducing power by vacating subsets of CPUs and memory
US12001844B2 (en) Performance scaling for binary translation
Gholkar On the Management of Power Constraints for High Performance Systems
CN119668792A (zh) 动态功率感知工作负载调度器

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B15K Others concerning applications: alteration of classification

Free format text: AS CLASSIFICACOES ANTERIORES ERAM: G06F 1/26 , G06F 9/46 , G06F 1/32 , G06F 12/00

Ipc: G06F 1/3203 (2019.01), G06F 1/3287 (2019.01), G06F

B06T Formal requirements before examination [chapter 6.20 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 02/06/2020, OBSERVADAS AS CONDICOES LEGAIS.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 16A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2822 DE 04-02-2025 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.