BR112012021121B1 - aparelho de processamento de dados, e, método de processamento de dados - Google Patents

aparelho de processamento de dados, e, método de processamento de dados Download PDF

Info

Publication number
BR112012021121B1
BR112012021121B1 BR112012021121-8A BR112012021121A BR112012021121B1 BR 112012021121 B1 BR112012021121 B1 BR 112012021121B1 BR 112012021121 A BR112012021121 A BR 112012021121A BR 112012021121 B1 BR112012021121 B1 BR 112012021121B1
Authority
BR
Brazil
Prior art keywords
processing
cache
source
circuitry
workload
Prior art date
Application number
BR112012021121-8A
Other languages
English (en)
Other versions
BR112012021121A2 (pt
Inventor
Peter Richard Greenhalgh
Original Assignee
Arm Limited
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 Arm Limited filed Critical Arm Limited
Publication of BR112012021121A2 publication Critical patent/BR112012021121A2/pt
Publication of BR112012021121B1 publication Critical patent/BR112012021121B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Power Sources (AREA)

Abstract

APARELHO DE PROCESSAMENTO DE DADOS, E, MÉTODO DE PROCESSAMENTO DE DADOS Em resposta a um estímulo de transferência, o desempenho de uma carga de trabalho de processamento é transferido de um conjunto de circuitos de processamento de origem para um conjunto de circuitos de processamento de destino, em preparação para que o conjunto de circuito de processamento de origem seja colocado em uma condição de economia de energia seguindo à transferência. Para reduzir o número de buscas na memória exigido pelo conjunto de circuitos de processamento de destino seguinte à transferência, um cache do conjunto de circuitos de processamento de origem é mantido em um estado energizado por um período de farejamento. Durante o período de farejamento, o conjunto de circuitos de farejamento de cache fareja valores de dados no cache de origem e recupera os valores de dados de farejamento para o conjunto de circuitos de processamento de destino.

Description

CAMPO DA INVENÇÃO
[001] A presente invenção diz respeito a aparelho de processamento de dados e a método para comutação de uma carga de trabalho entre o primeiro e o segundo conjuntos de circuitos de processamento e, em particular, a uma técnica para aumentar o desempenho do processamento da carga de trabalho após a comutação.
FUNDAMENTOS DA INVENÇÃO
[002] Nos modernos sistemas de processamento de dados, a diferença na demanda de desempenho entre tarefas de alta intensidade, tal como operação de jogos, e tarefas de baixa intensidade, tal como reprodução MP3, pode exceder uma razão de 100:1. Para que um único processador seja usado para todas as tarefas, este processador precisará ter alto desempenho, mas um axioma de microarquitetura de processador é que processadores de alto desempenho têm menor eficiência energética que processadores de baixo desempenho. Sabe-se aumentar a eficiência energética no nível do processador usando técnicas, tais como Escalonamento Dinâmico de Voltagem e Frequência (DVFS) ou bloqueio de energia, para prover ao processador uma faixa dos níveis de desempenho e correspondentes características de consumo de energia. Entretanto, no geral, tais técnicas estão se tornando insuficientes para permitir que um único processador assuma as tarefas com tais exigências de desempenho divergentes.
[003] Desta maneira, foi dada consideração ao uso de arquiteturas multinúcleos para prover um sistema energeticamente eficiente para o desempenho de tais diversas tarefas. Embora sistemas com múltiplos núcleos processadores tenham sido usados por algum tempo para aumentar o desempenho pela permissão que os diferentes núcleos operem em paralelo em diferentes tarefas a fim de aumentar rendimento, análise sobre como tais sistemas podem ser usados para aumentar eficiência energética tem sido um desenvolvimento relativamente recente.
[004] O artigo "Towards Better Performance Per Watt in Virtual Environments on Asymmetric Single-ISA Multi-Core Systems" de V Kumar et al, ACM SIGOPS Operating Systems Review, Volume 43, Edição 3 (julho de 2009), discute sistemas multinúcleos da Arquitetura de Conjunto de Instruções Único Assimétrico (ASISA), que consistem em diversos núcleos usando a mesma arquitetura de conjunto de instruções (ISA), mas diferem em recursos, complexidade, consumo de energia e desempenho. No documento, propriedades de cargas de trabalho virtualizadas são estudadas para esmiuçar como estas cargas de trabalho devem ser agendadas nos sistemas ASISA a fim de melhorar o desempenho e o consumo de energia. O documento identifica que certas tarefas são mais aplicáveis a microarquiteturas de alta frequência / desempenho (tipicamente, tarefas de computação intensiva), embora outras sejam mais adequadas a microarquiteturas de frequência / desempenho inferiores e, como um efeito colateral, consumirão menos energia (tipicamente, tarefas com entrada / saída intensiva). Embora tais estudos mostrem como sistemas ASISA podem ser usados para executar diversas tarefas de uma maneira energeticamente eficiente, ainda é necessário prover um mecanismo para agendamento de tarefas individuais nos processadores mais apropriados. Tipicamente, tal gerenciamento de agendamento colocará uma significativa carga no sistema operacional.
[005] O artigo "Single-ISA Heterogeneous Multi-Core Architectures: The Potential for Processor Power Reduction" de R Kumar et al, Procedimentos do 36th International Symposium of Microarchitecture (MICRO-36'03) discute uma arquitetura multinúcleos em que todos os núcleos executam o mesmo conjunto de instruções, mas têm capacidades e níveis de desempenho diferentes. No momento da execução, o software do sistema avalia as exigências de recurso de uma aplicação e escolhe o núcleo que pode melhor satisfazer estas exigências, ainda minimizando o consumo de energia. Da forma discutida na seção 2 deste documento, durante a execução de uma aplicação, o software do sistema operacional tenta corresponder a aplicação com os diferentes núcleos, tentando satisfazer uma função objetiva definida, por exemplo, uma exigência de desempenho em particular. Na seção 2.3, percebe-se que há um custo para comutar núcleos, que necessita de restrição da granularidade da comutação. Então, é discutido um exemplo em particular em que, se o sistema operacional decidir que uma comutação está em ordem, ele energiza o novo núcleo, dispara uma limpeza de cache para salvar todos os dados sujos do cache em uma estrutura de memória compartilhada e, então, sinaliza o novo núcleo para iniciar em um ponto de entrada do sistema operacional pré-definido. Então, o núcleo antigo pode ser desligado, enquanto o novo núcleo recupera dados exigidos a partir da memória. Uma abordagem como esta é descrita na seção 2.3, permitindo que uma aplicação seja comutada entre núcleos pelo sistema operacional. Então, o restante do documento discute como tal comutação pode ser realizada dinamicamente em uma configuração multinúcleos com o objetivo de reduzir o consumo de energia.
[006] Embora o documento exposto discuta o potencial de arquiteturas multinúcleos heterogêneas ISA única para prover reduções no consumo de energia, ele ainda exige que o sistema operacional seja provido com funcionalidade suficiente para habilitar que decisões de agendamento para aplicações individuais sejam tomadas. Neste aspecto, o papel do sistema operacional torna-se mais complexo durante a comutação entre instâncias do processador com diferentes recursos arquiteturais. Neste particular, deve-se notar que os núcleos Alfa EV4 até EV8, considerados no documento, não são completamente compatíveis com ISA, da forma discutida, por exemplo, no quinto parágrafo da seção 2.2.
[007] Adicionalmente, o documento não aborda o problema em que há um significativo sobreprocessamento envolvido na comutação de aplicações entre núcleos, o que pode reduzir significativamente os benefícios a serem alcançados a partir de tal comutação. O sobreprocessamento inclui não somente o tempo tomado para realizar a comutação durante a qual nenhum processador está desempenhando a carga de trabalho transferida, mas, também, a penalidade incorrida por erros do cache após a comutação. Quando o núcleo de destino começar a desempenhar o processamento transferido, todo cache provido no núcleo de destino começa contendo nenhum dado válido, e, então, o núcleo de destino experimenta falhas de cache de início frio. Isto significa que dados precisam ser buscados a partir da memória, o que desacelera o desempenho do processamento e usa uma significativa quantidade de energia. O desempenho e a eficiência energética se restabelecem somente uma vez que o cache de destino foi "aquecido" pelo armazenamento em cache de alguns dos valores de dados armazenados na memória. Embora o documento exposto de R. Kumar et al reconheça o problema de erros do cache de início frio na seção 4.4, Kumar não provê nenhuma solução a este problema. A presente técnica busca aumentar o desempenho do processamento após a comutação para o processador de destino.
SUMÁRIO DA INVENÇÃO
[008] Visualizada a partir de um primeiro aspecto, a presente invenção provê um aparelho de processamento de dados que compreende: primeiro conjunto de circuitos de processamento e segundo conjunto de circuitos de processamento configurados para desempenhar uma carga de trabalho de processamento, de maneira tal que a carga de trabalho de processamento seja desempenhada por um do primeiro conjunto de circuitos de processamento e do segundo conjunto de circuitos de processamento de uma vez; conjunto de circuitos de controle de energia para controlar independentemente o suprimento de energia ao primeiro conjunto de circuitos de processamento e ao segundo conjunto de circuitos de processamento; um controlador de transferência da carga de trabalho, responsivo a um estímulo de transferência, para controlar uma transferência do desempenho da carga de trabalho de processamento de um conjunto de circuitos de processamento de origem para um conjunto de circuitos de processamento de destino antes de o conjunto de circuitos de processamento de origem ser colocado em uma condição de economia de energia pelo conjunto de circuitos de controle de energia, o conjunto de circuitos de processamento de origem sendo um do primeiro e do segundo conjuntos de circuitos de processamento e o conjunto de circuitos de processamento de destino sendo o outro do primeiro e do segundo conjuntos de circuitos de processamento; em que: pelo menos o conjunto de circuitos de processamento de origem tem um cache; o conjunto de circuitos de controle de energia é configurado para manter pelo menos o cache do conjunto de circuitos de processamento de origem em uma condição energizada durante um período de farejamento seguinte ao início do desempenho da carga de trabalho de processamento transferida pelo conjunto de circuitos de processamento de destino; o aparelho de processamento de dados compreende conjunto de circuitos de farejamento de cache configurado durante o período de farejamento para farejar valores de dados no cache do conjunto de circuitos de processamento de origem e para recuperar os valores de dados farejados para o conjunto de circuitos de processamento de destino; e o conjunto de circuitos de controle de energia é configurado para colocar pelo menos o dito cache do conjunto de circuitos de processamento de origem na condição de economia de energia seguinte ao fim do período de farejamento.
[009] O aparelho de processamento de dados da presente invenção tem primeiro e segundo conjuntos de circuitos de processamento e, em qualquer momento durante o processamento, um do primeiro e do segundo conjuntos de circuitos de processamento desempenha uma carga de trabalho de processamento. Quando um estímulo de transferência ocorrer, o desempenho da carga de trabalho de processamento é transferido de um conjunto de circuitos de processamento de origem (qualquer do primeiro e do segundo conjuntos de circuitos de processamento que esteja atualmente desempenhando a carga de trabalho no momento da recepção do estímulo de transferência) para um conjunto de circuitos de processamento de destino (o outro dos primeiro e segundo conjuntos de circuitos de processamento), em preparação para que o conjunto de circuitos de processamento de origem seja colocado em uma condição de economia de energia. Independente de como a própria transferência é alcançada, a presente técnica aumenta o nível de desempenho do conjunto de circuitos de destino depois que a carga de trabalho de processamento tiver sido transferida para o conjunto de circuitos de destino.
[0010] A presente técnica reconhece que, seguinte à transferência, o conjunto de circuitos de processamento de destino pode exigir valores de dados que foram armazenados em um cache do conjunto de circuitos de processamento de origem antes da transferência. Pelo menos o cache do conjunto de circuitos de processamento de origem é mantido em uma condição energizada por um período finito (o período de farejamento) seguinte ao início do desempenho da carga de trabalho de processamento transferida pelo conjunto de circuitos de processamento de destino. O conjunto de circuitos de farejamento de cache fareja os dados no cache de origem durante o período de farejamento e recupera dados em nome do conjunto de circuitos de processamento de destino. Pela manutenção de energia no cache de origem durante o período de farejamento, o conjunto de circuitos de processamento de destino tem acesso aos dados no cache de origem por um período inicial de processamento, assim, evitando a necessidade de buscar os dados a partir da memória. Já que os acessos ao cache de origem são mais rápidos e usam menos energia que os acessos à memória, a presente técnica aumenta o nível de desempenho do conjunto de circuitos de processamento de destino e a eficiência energética do aparelho como um todo, seguinte à transferência da carga de trabalho de processamento.
[0011] A presente técnica também reconhece que o farejamento de dados neste cache de origem é útil somente por um período finito seguinte ao início do desempenho da carga de trabalho de processamento pelo conjunto de circuitos de processamento de destino. Consequentemente, os dados no cache de origem não são mais relevantes ao processamento realizado pelo conjunto de circuitos de processamento de destino. Por exemplo, o conjunto de circuitos de processamento de destino pode iniciar o processamento de uma outra aplicação que não exige os dados provenientes do cache de origem, ou o conjunto de circuitos de processamento de destino pode ter processado os dados, de maneira tal que um valor atualizado, diferente do valor armazenado no cache de origem, esteja sendo usado agora. Portanto, no fim do período de farejamento, o conjunto de circuitos de farejamento de cache interrompe o farejamento dos valores de dados a partir do cache de origem, e o conjunto de circuitos de controle de energia é configurado para colocar pelo menos o cache do conjunto de circuitos de processamento de origem na condição de economia de energia, para economizar energia.
[0012] Em resumo, em vez de desligar o cache de origem imediatamente após a transferência da carga de trabalho de processamento para o conjunto de circuitos de processamento de destino, o cache de origem é mantido em um estado energizado por um período de farejamento durante o qual o conjunto de circuitos de farejamento de cache pode farejar valores de dados no cache de origem e recuperar os valores de dados de farejamento para o conjunto de circuitos de processamento de destino. Pela redução do número de vezes que dados são buscados a partir de uma memória, o nível de desempenho e eficiência energética aumenta.
[0013] Embora, no geral, o presente pedido descreva a presente técnica para o caso em que há dois circuitos de processamento (o primeiro e o segundo conjuntos de circuitos de processamento), o aparelho de processamento de dados pode compreender circuitos de processamento adicionais, e a técnica pode ser aplicada à transferência de uma carga de trabalho de processamento entre quaisquer dois dos circuitos de processamento. Além do mais, cada conjunto de circuitos de processamento pode incluir um único núcleo processador ou uma pluralidade de núcleos processadores.
[0014] A carga de trabalho de processamento pode incluir pelo menos uma aplicação de processamento e pelo menos um sistema operacional para executar a pelo menos uma aplicação de processamento. Pelo tratamento da íntegra da carga de trabalho como uma entidade macroscópica que é realizada somente em um do primeiro e do segundo circuitos de processamento em qualquer momento em particular, a carga de trabalho pode ser prontamente comutada entre os primeiro e segundo circuitos de processamento de uma maneira transparente ao sistema operacional. Uma abordagem como esta aborda os problemas supramencionados que resultam do uso do sistema operacional para gerenciar o agendamento de aplicações em circuitos de processamento em particular.
[0015] O controlador de transferência da carga de trabalho pode ser configurado, durante a transferência, para mascarar a informação de configuração específica do processador predeterminada proveniente do pelo menos um sistema operacional, de maneira tal que a transferência da carga de trabalho seja transparente ao pelo menos um sistema operacional. Isto significa que a configuração do sistema operacional é simplificada em virtude de o sistema operacional não precisar estar ciente das diferenças entre a informação de configuração específica do processador associado com o primeiro conjunto de circuitos de processamento e a informação de configuração específica do processador associado com o segundo conjunto de circuitos de processamento. Já que as diferenças específicas do processador dos primeiro e segundo conjuntos de circuitos de processamento são mascaradas do sistema operacional, então, da perspectiva do sistema operacional (e da perspectiva de todas as aplicações executadas pelo sistema operacional), a carga de trabalho está sendo executada em uma única plataforma de hardware. Se a carga de trabalho estiver sendo executada no primeiro conjunto de circuitos de processamento ou no segundo conjunto de circuitos de processamento, a visão do sistema operacional da plataforma de hardware é a mesma. Isto torna mais fácil configurar o sistema operacional e as aplicações.
[0016] O controlador de transferência da carga de trabalho pode compreender pelo menos software de virtualização que separa logicamente o pelo menos um sistema operacional do primeiro conjunto de circuitos de processamento e do segundo conjunto de circuitos de processamento. O software de virtualização provê um nível de abstração a fim de ocultar a configuração de hardware dos respectivos conjuntos de circuitos de processamento do sistema operacional, de forma que o sistema operacional fique alheio a qual conjunto de circuitos de processamento está desempenhando a carga de trabalho. Assim, a configuração do sistema operacional pode ser simplificada. O software de virtualização pode controlar a alocação da carga de trabalho de processamento tanto para o primeiro conjunto de circuitos de processamento quanto para o segundo conjunto de circuitos de processamento.
[0017] O primeiro conjunto de circuitos de processamento pode ser arquiteturalmente compatível com o segundo conjunto de circuitos de processamento, de maneira tal que uma carga de trabalho de processamento a ser desempenhada pelo aparelho de processamento de dados possa ser desempenhada tanto no primeiro conjunto de circuitos de processamento quanto no segundo conjunto de circuitos de processamento. Isto significa que, a partir de uma perspectiva da aplicação, a única diferença entre a aplicação em execução no primeiro conjunto de circuitos de processamento e a aplicação em execução no segundo conjunto de circuitos de processamento é o nível de desempenho ou de eficiência energética alcançado. Não há necessidade de uma conversão do conjunto de instruções entre o primeiro e o segundo conjuntos de circuitos de processamento. A íntegra da carga de trabalho de processamento que inclui o sistema operacional e as aplicações que são executadas pelo sistema operacional pode ser transferida regressiva e progressivamente entre o primeiro e o segundo conjuntos de circuitos de processamento de uma maneira simples.
[0018] O primeiro conjunto de circuitos de processamento pode ser microarquiteturalmente diferente do segundo conjunto de circuitos de processamento, de maneira tal que o desempenho do primeiro conjunto de circuitos de processamento seja diferente do desempenho do segundo conjunto de circuitos de processamento. No geral, aquele do primeiro e do segundo conjuntos de circuitos de processamento com o nível de desempenho superior consumirá mais energia que o outro do primeiro e do segundo conjuntos de circuitos de processamento. Isto significa que a carga de trabalho pode ser comutada para o conjunto de circuitos de processamento de desempenho superior se processamento de alto desempenho for exigido (por exemplo, quando uma aplicação de jogos estiver sendo realizada). Por outro lado, se processamento de baixo desempenho, tal como reprodução de MP3, estiver sendo realizado, então, a carga de trabalho de processamento pode ser comutada em sua íntegra para o conjunto de circuitos de processamento de desempenho inferior a fim de aumentar a eficiência energética. Assim, pela provisão de circuitos de processamento microarquiteturalmente diferentes, o desempenho da carga de trabalho de processamento pode ser otimizado para desempenho ou consumo de energia, dependendo da natureza da carga de trabalho a ser desempenhada.
[0019] As diferenças microarquiteturais entre os conjuntos de circuitos de processamento podem incluir, por exemplo, diferentes comprimentos de encadeamento de execução ou diferentes recursos de execução. Tipicamente, diferenças no comprimento do encadeamento resultarão em diferenças na frequência operacional que, por sua vez, terão um efeito no desempenho. Similarmente, diferenças nos recursos de execução terão um efeito no rendimento de processamento e, portanto, no desempenho. Por exemplo, um circuito de processamento com mais recursos de execução habilitará que mais informação seja processada em qualquer momento em particular, melhorando o rendimento. Além do mais, ou alternativamente, um circuito de processamento pode ter mais recursos de execução que o outro, por exemplo, mais unidades lógicas aritméticas (ALUs), o que, novamente, aumentará o rendimento. Como um outro exemplo de diferentes recursos de execução, um circuito de processamento com eficiência energética pode ser provido com um simples encadeamento em ordem, enquanto um circuito de processamento de desempenho superior pode ser provido com um encadeamento superescalar fora de ordem. Também, um circuito de processamento de desempenho superior pode ter capacidade de previsão de derivação, que acelera o processamento pela pré-busca de alvos de derivação previstos antes de a derivação ter sido resolvida, enquanto um circuito de processamento com mais eficiência energética pode não ter um previsor de derivação. Tais diferenças microarquiteturais não afetam a capacidade de cada circuito de processamento arquiteturalmente compatível desempenhar a mesma carga de trabalho de processamento, mas resultam em diferentes níveis de desempenho e de consumo de energia quando os respectivos circuitos de processamento estiverem desempenhando a carga de trabalho de processamento.
[0020] A presente técnica pode ser usada quando somente o conjunto de circuitos de processamento de origem tiver um cache. Neste caso, alguns acessos à memória podem ser evitados pelo conjunto de circuitos de processamento de destino usando o conjunto de circuitos de farejamento de cache para farejar o cache de origem durante o período de farejamento. Seguinte ao fim do período de farejamento, todos os dados precisarão ser buscados a partir da memória.
[0021] Entretanto, tipicamente, o conjunto de circuitos de processamento de destino também compreenderá um cache, de maneira tal que tanto o primeiro quanto o segundo conjuntos de circuitos de processamento compreendam um cache. Neste caso, os valores de dados farejados pelo conjunto de circuitos de farejamento de cache e recuperados para o conjunto de circuitos de processamento de destino pelo conjunto de circuitos de farejamento de cache podem ser armazenados no cache do conjunto de circuitos de processamento de destino para acelerar futuras referências aos dados.
[0022] Em uma modalidade, o conjunto de circuitos de controle de energia pode ser configurado para colocar o conjunto de circuitos de processamento de origem, diferente do cache, na condição de economia de energia durante o período de farejamento e para colocar o cache do conjunto de circuitos de processamento de origem na condição de economia de energia seguinte ao fim do período de farejamento. Isto reduz o consumo de energia do aparelho de processamento de dados, já que a maior parte do conjunto de circuitos de processamento de origem pode ser desligada depois que a carga de trabalho tiver sido transferida para o processador de destino. Somente o cache de conjunto de circuitos de processamento de origem permanece energizado durante o período de farejamento, para habilitar o conjunto de circuitos de farejamento de cache a recuperar os valores armazenados no cache de origem para o conjunto de circuitos de processamento de destino.
[0023] Em uma modalidade, quando o cache for parte de uma hierarquia de cache no conjunto de circuitos de processamento de origem, o cache de origem farejado pode ser mantido na condição energizada durante o período de farejamento, enquanto pelo menos um outro cache na hierarquia de cache fica na condição de economia de energia.
[0024] Um exemplo desta situação é quando o cache de origem a ser farejado for um cache inclusivo nível dois que é configurado para armazenar todos os dados armazenados em qualquer(s) cache(s) nível um da hierarquia de cache. Neste caso, o cache nível dois pode ser deixado em um estado energizado durante o período de farejamento para habilitar o farejamento a partir do conjunto de circuitos de farejamento de cache em nome do conjunto de circuitos de processamento de destino, enquanto o(s) cache(s) nível um pode(m) ser desligado(s) juntamente com o resto do conjunto de circuitos de processamento de origem.
[0025] Alternativamente, o conjunto de circuitos de controle de energia pode ser configurado para manter o conjunto de circuitos de processamento de origem na condição energizada durante o período de farejamento e para colocar a íntegra do conjunto de circuitos de processamento de origem, incluindo o cache, na condição de economia de energia seguinte ao fim do período de farejamento. Embora deixar o conjunto de circuitos de processamento de origem energizado durante o período de farejamento aumente o consumo de energia, isto reduz a complexidade do aparelho de processamento de dados, já que o controle de energia independente tanto no cache de origem quanto no restante do conjunto de circuitos de processamento de origem não é exigido.
[0026] Uma situação de exemplo na qual pode ser desejado energizar o cache de origem e o conjunto de circuitos de processamento de origem em conjunto é quando o cache do conjunto de circuitos de processamento de origem a ser farejado pelo conjunto de circuitos de farejamento de cache for um cache nível um. Um cache nível um pode ser muito intimamente integrado em um núcleo processador no conjunto de circuitos de processamento de origem para poder prover controle de energia separado ao cache e ao resto do conjunto de circuitos de processamento de origem. Neste caso, a íntegra do conjunto de circuitos de processamento de origem, incluindo o cache, pode ser deixada energizada durante o período de farejamento e desligada seguinte ao fim do período de farejamento.
[0027] O conjunto de circuitos de processamento de origem pode ser configurado para realizar uma operação de limpeza no cache de origem para regravar todos os dados sujos do cache em uma memória compartilhada seguinte ao fim do período de farejamento e antes de o conjunto de circuitos de controle de energia colocar o cache do conjunto de circuitos de processamento de origem na condição de economia de energia. Pela limpeza do cache de origem antes de o cache ser desligado, garante-se que nenhum dado sujo, cujo valor mais recente ainda não foi regravado na memória, seja perdido.
[0028] Para economizar energia, pode ser útil que o conjunto de circuitos de controle de energia mantenha o conjunto de circuitos de processamento de destino na condição de economia de energia antes da ocorrência do estímulo de transferência. Neste caso, o conjunto de circuitos de controle de energia pode energizar o conjunto de circuitos de processamento de destino em resposta ao estímulo de transferência.
[0029] O conjunto de circuitos de processamento de destino pode ser configurado para invalidar o cache de destino antes de o conjunto de circuitos de processamento de destino iniciar o desempenho da carga de trabalho de processamento transferida. Por exemplo, se o conjunto de circuitos de processamento de destino estava na condição de economia de energia antes da transferência do desempenho da carga de trabalho de processamento, então, na energização do conjunto de circuitos de processamento de destino, o cache de destino pode conter dados errôneos. Pela invalidação do cache de destino antes de o conjunto de circuitos de processamento de destino iniciar o desempenho da carga de trabalho de processamento transferida, erros de processamento podem ser evitados.
[0030] Para melhorar o desempenho do processamento, o conjunto de circuitos de processamento de origem pode ser configurado para continuar desempenhando a carga de trabalho de processamento enquanto o cache do conjunto de circuitos de processamento de destino está sendo invalidado, e o controlador de transferência da carga de trabalho pode ser configurado para transferir o desempenho da carga de trabalho de processamento para o conjunto de circuitos de processamento de destino depois que o cache do conjunto de circuitos de processamento de destino tiver sido invalidado. Pela permissão de que o conjunto de circuitos de processamento de origem continue desempenhando a carga de trabalho de processamento até que o conjunto de circuitos de processamento de destino esteja pronto para iniciar o desempenho da carga de trabalho de processamento, o período de tempo durante o qual nenhum conjunto de circuitos de processamento está desempenhando a carga de trabalho de processamento é reduzido e, então, o nível de desempenho da carga de trabalho de processamento aumenta.
[0031] Em uma modalidade, o período de farejamento pode começar quando o conjunto de circuitos de processamento de destino iniciar o desempenho da carga de trabalho de processamento.
[0032] O período de farejamento pode terminar na ocorrência de qualquer um de um conjunto de eventos de interrupção de farejamento que compreende pelo menos um evento de interrupção de farejamento. Um ou mais eventos de interrupção de farejamento, que indicam que não é mais importante manter o cache de origem no estado energizado, podem disparar o conjunto de circuitos de farejamento de cache a terminar o período de farejamento. Tipicamente, estes eventos indicam que os dados no cache de origem não são mais necessários pelo conjunto de circuitos de processamento de destino.
[0033] O conjunto de circuitos de farejamento de cache pode ser configurado para monitorar se qualquer um do conjunto de eventos de interrupção de farejamento ocorreu. Por exemplo, o conjunto de circuitos de farejamento de cache pode compreender contadores de desempenho para monitorar o processamento do conjunto de circuitos de processamento de destino e os acessos a dados realizados pelo conjunto de circuitos de processamento de destino. Usando os contadores de desempenho, o conjunto de circuitos de farejamento de cache pode analisar se os dados no cache de origem ainda são relevantes ao processamento que é realizado pelo conjunto de circuitos de processamento de destino. Pela configuração do conjunto de circuitos de farejamento de cache, em vez de o conjunto de circuitos de processamento de destino, para monitorar se algum dos eventos de interrupção de farejamento ocorreu, o conjunto de circuitos de processamento de destino pode ser deixado alheio sobre se o cache de origem ainda está sendo farejado. Isto torna a configuração do conjunto de circuitos de processamento de destino mais simples.
[0034] O pelo menos um evento de interrupção de farejamento pode incluir um evento que ocorre quando o percentual de farejamento realizado pelo conjunto de circuitos de farejamento de cache que resulta em um acerto no cache, no cache do conjunto de circuitos de processamento de origem, cair abaixo de um nível limite predeterminado. Se o percentual de acertos no cache, no cache de origem, tornar-se baixo, então, isto indica que muitos dos valores de dados procurados pelo conjunto de circuitos de processamento de destino não estão mais presentes no cache de origem, e, então, os dados no cache de origem não são relevantes ao conjunto de circuitos de processamento de destino. Portanto, eficiência energética pode aumentar pelo término do período de farejamento e desativação do cache de origem uma vez que o percentual de acertos no cache cair abaixo de um nível limite predeterminado.
[0035] O pelo menos um evento de interrupção de farejamento também pode incluir um evento que ocorre quando o conjunto de circuitos de processamento de destino concluir um número predeterminado de transações de processamento de um tipo predeterminado seguinte à transferência da carga de trabalho de processamento. Embora o conjunto de circuitos de processamento de destino possa acessar os dados armazenados no cache de origem por meio do conjunto de circuitos de farejamento de cache, tipicamente, o conjunto de circuitos de processamento de destino não será capaz de atualizar os valores no cache de origem. Pode-se esperar que, depois que um número predeterminado de transações tiverem sido concluídas, o conjunto de circuitos de processamento de destino tenha gerado novos valores para alguns dos dados originalmente armazenados no cache de origem. Já que o conjunto de circuitos de processamento de destino não pode gravar dados no cache de origem, os novos valores de dados serão armazenados na memória e/ou em um cache de destino, o que significa que os valores de dados originais no cache de origem não são mais relevantes ao conjunto de circuitos de processamento de destino. Portanto, a conclusão do número predeterminado de transações de processamento do tipo predeterminado pode indicar que o cache de origem não é mais necessário e, então, pode disparar o fim do período de farejamento. O tipo predeterminado de transações de processamento pode compreender, por exemplo, todas as transações realizadas pelo conjunto de circuitos de processamento de destino ou pode compreender somente transações armazenáveis em cache.
[0036] Um outro tipo de evento de interrupção de farejamento pode ser um evento que ocorre quando um número predeterminado de ciclos de processamento tiver decorrido depois que o conjunto de circuitos de processamento de destino iniciar o desempenho da carga de trabalho de processamento transferida. Da forma supramencionada, tipicamente, o processamento de destino não será capaz de atualizar os valores no cache de origem. Portanto, depois que o conjunto de circuitos de processamento de destino tiver realizado processamento por um certo número de ciclos de processamento, é improvável que os dados usados pelo conjunto de circuitos de processamento de dados (por exemplo, dados armazenados na memória ou em um cache de destino) sejam os mesmos dados ainda armazenados no cache de origem. Isto significa que o número de ciclos de processamento que decorreu desde o início do desempenho da carga de trabalho de processamento pelo conjunto de circuitos de processamento de destino pode ser um indicador de que o cache de origem não é mais útil ao conjunto de circuitos de processamento de destino e pode ser desligado.
[0037] Quando o aparelho compreender uma memória compartilhada, compartilhada entre o primeiro e o segundo conjuntos de circuitos de processamento, o pelo menos um evento de interrupção de farejamento pode incluir um evento que ocorre quando uma região da memória em particular da memória compartilhada for acessada pela primeira vez pelo conjunto de circuitos de processamento de destino depois do início do desempenho da carga de trabalho de processamento transferida. O primeiro acesso a uma região da memória em particular pode indicar, por exemplo, que o conjunto de circuitos de processamento de destino iniciou uma nova aplicação associada com a região da memória em particular, diferente da aplicação que era previamente processada pelo conjunto de circuitos de processamento de destino. Isto pode indicar que os dados no cache de origem, que não são associados com a nova aplicação, não são mais relevantes ao conjunto de circuitos de processamento de destino. Portanto, o primeiro acesso à região da memória em particular pode disparar o fim do período de farejamento.
[0038] Por motivos similares, o evento de interrupção de farejamento também pode incluir um evento que ocorre quando uma região da memória em particular da memória compartilhada, que foi acessada pelo conjunto de circuitos de destino por um período inicial depois do início do desempenho da carga de trabalho de processamento transferida, não é acessada pelo conjunto de circuitos de processamento de destino por um período predeterminado. Quando o conjunto de circuitos de processamento de destino iniciar o processamento de uma aplicação diferente de uma originalmente processada pelo conjunto de circuitos de processamento de origem, então, uma região da memória associada com a aplicação original pode não ser acessada por um período de tempo. Isto pode indicar que os dados no cache de origem não estão mais sendo usados pelo conjunto de circuitos de processamento de destino e, então, pode disparar o fim do período de farejamento.
[0039] Um outro tipo de evento de interrupção de farejamento é um evento que ocorre quando o conjunto de circuitos de processamento de destino gravar em um local de memória predeterminado da memória compartilhada pela primeira vez depois do início do desempenho da carga de trabalho de processamento transferida. Isto permite que o conjunto de circuitos de processamento de destino sinalize ao conjunto de circuitos de farejamento de cache que ele não mais precisa dos dados no cache de origem pela gravação no local de memória predeterminado.
[0040] O conjunto de eventos de interrupção de farejamento pode incluir qualquer um ou uma pluralidade dos supramencionados eventos de interrupção de farejamento, bem como outros tipos de evento de interrupção de farejamento.
[0041] Da forma aqui usada, o termo "memória compartilhada" diz respeito à memória que pode ser diretamente acessada tanto pelo primeiro conjunto de circuitos de processamento quanto pelo segundo conjunto de circuitos de processamento, por exemplo, memória principal acoplada tanto no primeiro quanto no segundo conjuntos de circuitos de processamento por meio de uma interconexão.
[0042] O aparelho pode compreender um controlador de anulação de farejamento, responsivo a uma condição de anulação do farejamento, para anular o farejamento do cache do conjunto de circuitos de processamento de origem pelo conjunto de circuitos de farejamento de cache e para controlar o conjunto de circuitos de controle de energia para colocar o conjunto de circuitos de processamento de origem, incluindo o cache, no estado de economia de energia depois da transferência do desempenho da carga de trabalho de processamento sem esperar pelo fim do período de farejamento. Em certas situações, o farejamento do cache de origem pode não ser útil pra o conjunto de circuitos de processamento de destino. Em tais situações, o controlador de anulação de farejamento pode anular o conjunto de circuitos de farejamento de cache pelo impedimento do farejamento do cache de origem e controle do conjunto de circuitos de controle de energia para colocar o conjunto de circuitos de processamento de origem, incluindo o cache, no estado de economia de energia sem esperar pelo fim do período de farejamento. O controlador de anulação de farejamento pode ser provido, por exemplo, como software embarcado executado no conjunto de circuitos de processamento de origem ou como parte do software de virtualização que mascara a informação específica do hardware do conjunto de circuitos de processamento do sistema operacional.
[0043] Por exemplo, pode-se saber, antes da transferência do desempenho da carga de trabalho de processamento, que os dados no cache de origem não serão exigidos para o processamento prestes a ser realizado pelo conjunto de circuitos de processamento de destino seguinte à transferência. Por exemplo, se o conjunto de circuitos de processamento de origem tiver acabado de terminar o desempenho de uma aplicação de jogos, então, os dados usados pela aplicação de jogos podem não ser úteis para o conjunto de circuitos de processamento de destino depois que ele começar o processamento de uma aplicação diferente. Neste caso, o controlador de anulação de farejamento pode sinalizar ao conjunto de circuitos de farejamento de cache e ao conjunto de circuitos de controle de energia que o farejamento do cache não é necessário.
[0044] O conjunto de circuitos de farejamento de cache pode compreender uma interconexão coerente acoplada no primeiro e no segundo conjuntos de circuitos de processamento. A interconexão coerente tem uma visão tanto do cache de origem quanto de qualquer memória compartilhada presente no aparelho de processamento de dados. O conjunto de circuitos de processamento de destino pode simplesmente solicitar dados a partir da interconexão coerente, e a interconexão coerente pode gerenciar se dados são farejados a partir do cache de origem ou buscados para a memória (dependendo se o período de farejamento já foi concluído ou não e se a solicitação de acesso a dados resulta em um acerto no cache de origem ou não). A interconexão coerente gerencia os acessos a dados, de forma que o conjunto de circuitos de processamento de destino não precise estar ciente do exato local dos dados solicitados. O conjunto de circuitos de processamento de destino pode estar alheio do farejamento de dados a partir do cache de origem. Em algumas modalidades, a interconexão coerente também pode prover um conveniente mecanismo para transferir dados do estado arquitetural do conjunto de circuitos de processamento de origem para o conjunto de circuitos de processamento de destino durante a transferência da carga de trabalho de processamento.
[0045] Visualizado a partir de um outro aspecto, a presente invenção provê um aparelho de processamento de dados que compreende: primeiro dispositivo de processamento para realizar processamento e segundo dispositivo de processamento para realizar processamento, o primeiro dispositivo de processamento e o segundo dispositivo de processamento sendo configurados para desempenhar uma carga de trabalho de processamento, de maneira tal que a carga de trabalho de processamento seja desempenhada por um do primeiro dispositivo de processamento e do segundo dispositivo de processamento de uma vez; dispositivo de controle de energia para controlar independentemente o suprimento de energia ao primeiro dispositivo de processamento e ao segundo dispositivo de processamento; dispositivo de controle de transferência da carga de trabalho para, em resposta a um estímulo de transferência, controlar uma transferência do desempenho da carga de trabalho de processamento de um dispositivo de processamento de origem para um dispositivo de processamento de destino antes de o dispositivo de processamento de origem ser colocado em uma condição de economia de energia pelo dispositivo de controle de energia, o dispositivo de processamento de origem sendo um do primeiro e do segundo dispositivos de processamento e o dispositivo de processamento de destino sendo o outro do primeiro e do segundo dispositivos de processamento; em que: pelo menos o dispositivo de processamento de origem tem um dispositivo de cache para armazenar valores de dados armazenados em cache; o dispositivo de controle de energia é configurado para manter pelo menos o dispositivo de cache do dispositivo de processamento de origem em uma condição energizada durante um período de farejamento seguinte ao início do desempenho da carga de trabalho de processamento transferida pelo dispositivo de processamento de destino; o aparelho de processamento de dados compreende dispositivo de farejamento de cache para farejar valores de dados no dispositivo de cache do dispositivo de processamento de origem durante o período de farejamento e recuperar os valores de dados farejados para o dispositivo de processamento de destino; e o dispositivo de controle de energia é configurado para colocar pelo menos o dito dispositivo de cache do dispositivo de processamento de origem na condição de economia de energia seguinte ao fim do período de farejamento.
[0046] Visualizado a partir de um ainda outro aspecto, a presente invenção provê um método de processamento de dados para um aparelho que compreende primeiro conjunto de circuitos de processamento e segundo conjunto de circuitos de processamento configurados para desempenhar uma carga de trabalho de processamento, de maneira tal que a carga de trabalho de processamento seja desempenhada por um do primeiro conjunto de circuitos de processamento e do segundo conjunto de circuitos de processamento de uma vez; o método compreendendo: desempenhar a carga de trabalho de processamento com um conjunto de circuitos de processamento de origem, o conjunto de circuitos de processamento de origem sendo um do primeiro e do segundo conjuntos de circuitos de processamento e compreendendo um cache, o outro dos primeiro e segundo conjuntos de circuitos de processamento sendo um conjunto de circuitos de processamento de destino; em resposta a um estímulo de transferência, transferir o desempenho da carga de trabalho de processamento do conjunto de circuitos de processamento de origem para o conjunto de circuitos de processamento de destino antes de o conjunto de circuitos de processamento de origem ser colocado em uma condição de economia de energia; manter pelo menos o cache do conjunto de circuitos de processamento de origem em uma condição energizada durante um período de farejamento seguinte ao início do desempenho da carga de trabalho de processamento transferida pelo conjunto de circuitos de processamento de destino; durante o período de farejamento, farejar os valores de dados no cache do conjunto de circuitos de processamento de origem e recuperar os valores de dados farejados para o conjunto de circuitos de processamento de destino; e colocar pelo menos o dito cache do conjunto de circuitos de processamento de origem na condição de economia de energia seguinte ao fim do período de farejamento.
[0047] Visualizado a partir de um aspecto adicional, a presente invenção provê um aparelho de processamento de dados que compreende: primeiro conjunto de circuitos de processamento e segundo conjunto de circuitos de processamento configurados para desempenhar uma carga de trabalho de processamento, de maneira tal que a carga de trabalho de processamento seja desempenhada por um do primeiro conjunto de circuitos de processamento e do segundo conjunto de circuitos de processamento de uma vez; um controlador de transferência da carga de trabalho, responsivo a um estímulo de transferência, para controlar uma transferência do desempenho da carga de trabalho de processamento de um conjunto de circuitos de processamento de origem para um conjunto de circuitos de processamento de destino antes de o conjunto de circuitos de processamento de origem ser colocado em uma condição de economia de energia pelo conjunto de circuitos de controle de energia, o conjunto de circuitos de processamento de origem sendo um do primeiro e do segundo conjuntos de circuitos de processamento e o conjunto de circuitos de processamento de destino sendo o outro do primeiro e do segundo conjuntos de circuitos de processamento; em que: pelo menos o conjunto de circuitos de processamento de destino tem um cache; o conjunto de circuitos de processamento de destino é configurado para invalidar o cache do conjunto de circuitos de processamento de destino antes de o conjunto de circuitos de processamento de destino iniciar o desempenho da carga de trabalho de processamento transferida; o conjunto de circuitos de processamento de origem é configurado para continuar desempenhando a carga de trabalho de processamento enquanto o cache do conjunto de circuitos de processamento de destino está sendo invalidado; e o controlador de transferência da carga de trabalho é configurado para transferir o desempenho da carga de trabalho de processamento para o conjunto de circuitos de processamento de destino depois que o cache do conjunto de circuitos de processamento de destino tiver sido invalidado.
[0048] A presente técnica pode melhorar o desempenho do processamento pela permissão de que o conjunto de circuitos de processamento de origem continue o processamento da carga de trabalho de processamento por um período seguinte à recepção do estímulo de transferência enquanto o cache de um conjunto de circuitos de processamento de destino está sendo invalidado. Pela transferência do desempenho da carga de trabalho de processamento para o conjunto de circuitos de processamento de destino somente depois que o cache do conjunto de circuitos de processamento de destino tiver sido invalidado, o tempo durante o qual nenhum conjunto de circuitos de processamento está desempenhando a carga de trabalho pode ser reduzido. Portanto, a carga de trabalho de processamento é desempenhada de forma mais rápida e mais eficiente.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[0049] A presente invenção será adicionalmente descrita, a título de exemplo somente, em relação às modalidades desta, da forma ilustrada nos desenhos anexos, nos quais: a figura 1 é um diagrama de blocos de um sistema de processamento de dados de acordo com uma modalidade; a figura 2 ilustra esquematicamente a provisão de um controlador de comutação (também aqui referido como um controlador de transferência da carga de trabalho) de acordo com uma modalidade para separar logicamente a carga de trabalho que é desempenhada pelo aparelho de processamento de dados da plataforma de hardware em particular no aparelho de processamento de dados que é usado para desempenhar esta carga de trabalho; a figura 3 é um diagrama que ilustra esquematicamente as etapas realizadas tanto por um processador de origem quanto por um processador de destino em resposta a um estímulo de comutação a fim de transferir a carga de trabalho do processador de origem para o processador de destino de acordo com uma modalidade; a figura 4A ilustra esquematicamente o armazenamento do estado arquitetural atual do conjunto de circuitos de processamento de origem em seu cache associado durante a operação de salvar da figura 3; a figura 4B ilustra esquematicamente o uso da unidade de controle de farejamento para controlar a transferência do estado arquitetural atual do circuito de processamento de origem para o circuito de processamento de destino durante a operação de restaurar da figura 3; a figura 5 ilustra uma estrutura alternativa para prover um mecanismo acelerado para transferir o estado arquitetural atual do conjunto de circuitos de processamento de origem para o conjunto de circuitos de processamento de destino durante a operação de transferência de acordo com uma modalidade; as figuras 6A até 6I ilustram esquematicamente as etapas realizadas para transferir uma carga de trabalho de um circuito de processamento de origem para um circuito de processamento de destino de acordo com uma modalidade; a figura 7 é um gráfico que mostra a variação da eficiência energética com o desempenho, e que ilustra como os vários núcleos processadores ilustrados na figura 1 são usados em vários pontos ao longo desta curva de acordo com uma modalidade; as figuras 8A e 8B ilustram esquematicamente um encadeamento do processador de baixo desempenho e um encadeamento do processador de alto desempenho, respectivamente, da forma utilizada em uma modalidade; e a figura 9 é um gráfico que mostra a variação na energia consumida pelo sistema de processamento de dados à medida que o desempenho de uma carga de trabalho de processamento é comutado entre um circuito de processamento de baixo desempenho e alta eficiência energética e um circuito de processamento de alto desempenho e baixa eficiência energética.
DESCRIÇÃO DAS MODALIDADES
[0050] A figura 1 é um diagrama de blocos que ilustra esquematicamente um sistema de processamento de dados de acordo com uma modalidade. Da forma mostrada na figura 1, o sistema contém duas instâncias de circuito de processamento arquiteturalmente compatíveis (o conjunto de circuitos de processamento 0 10 e o conjunto de circuitos de processamento 1 50), mas com estas diferentes instâncias de circuito de processamento tendo diferentes microarquiteturas. Em particular, o conjunto de circuitos de processamento 10 é arranjado para operar com desempenho superior ao conjunto de circuitos de processamento 50, mas com a contrapartida que o conjunto de circuitos de processamento 10 será menos energeticamente eficiente que o conjunto de circuitos de processamento 50. Exemplos de diferenças microarquiteturais serão descritos com mais detalhes a seguir em relação às figuras 8A e 8B.
[0051] Cada circuito de processamento pode incluir uma única unidade de processamento (também aqui referido como um núcleo processador) ou, alternativamente, pelo menos uma das instâncias de circuito de processamento pode, ela mesma, compreender um agrupamento de unidades de processamento com a mesma microarquitetura.
[0052] No exemplo ilustrado na figura 1, o circuito de processamento 10 inclui dois núcleos processadores 15, 20 que são, ambos, arquitetural e microarquiteturalmente idênticos. Ao contrário, o circuito de processamento 50 contém somente um único núcleo processador 55. Na seguinte descrição, os núcleos processadores 15, 20 serão referidos como núcleos "grandes", enquanto o núcleo processador 55 será referido como um núcleo "pequeno", já que, tipicamente, os núcleos processadores 15, 20 serão mais complexos que o núcleo processador 55 devido a estes núcleos serem desenhados tendo o desempenho em mente, enquanto que, ao contrário, tipicamente, o núcleo processador 55 é significativamente menos complexo devido a ser desenhado tendo a eficiência energética em mente.
[0053] Na figura 1, considera-se que cada um dos núcleos 15, 20, 55 tenha seu próprio cache local nível 1 associado 25, 30, 60, respectivamente, que pode ser arranjado como um cache unificado para armazenar tanto instruções quanto dados para referência pelo núcleo associado, ou pode ser arranjado com uma arquitetura Harvard, provendo dados nível 1 distintos e caches de instrução nível 1. Embora cada um dos núcleos seja mostrado tendo seu próprio cache nível 1 associado, esta não é uma exigência, e, em modalidades alternativas, um ou mais dos núcleos podem ter nenhum cache local.
[0054] Na modalidade mostrada na figura 1, o conjunto de circuitos de processamento 10 também inclui um cache nível 2 35 compartilhado entre o núcleo 15 e o núcleo 20, com uma unidade de controle de farejamento 40 sendo usada para garantir a coerência do cache entre os dois caches nível 1 25, 30 e o cache nível 2 35. Em uma modalidade, o cache nível 2 é arranjado como um cache inclusivo e, portanto, quaisquer dados armazenados em quaisquer dos caches nível 1 25, 30 também ficarão residentes no cache nível 2 35. Como será bem entendido pelos versados na técnica, o propósito da unidade de controle de farejamento 40 é garantir a coerência do cache entre os vários caches, de forma que possa ser garantido que cada um dos núcleos 15, 20 sempre acessará a versão mais atualizada de quaisquer dados quando ele emitir uma solicitação de acesso. Portanto, puramente a título de exemplo, se o núcleo 15 emitir uma solicitação de acesso para dados que não estão residentes no cache nível 1 associado 25, então, a unidade de controle de farejamento 40 intercepta a solicitação propagada a partir do cache nível 1 25, e determina, em relação ao cache nível 1 30 e/ou ao cache nível 2 35, se esta solicitação de acesso pode ser atendida a partir dos conteúdos de um destes outros caches. Somente se os dados não estiverem presentes em nenhum dos caches, a solicitação de acesso é, então, propagada por meio da interconexão 70 à memória principal 80, a memória principal 80 sendo a memória que é compartilhada entre tanto o conjunto de circuitos de processamento 10 quanto o conjunto de circuitos de processamento 50.
[0055] A unidade de controle de farejamento 75 provida na interconexão 70 opera de uma maneira similar à unidade de controle de farejamento 40, mas, nesta instância, busca manter coerência entre a estrutura de cache provida no conjunto de circuitos de processamento 10 e a estrutura de cache provida no conjunto de circuitos de processamento 50. Em exemplos em que o cache nível 2 35 é um cache inclusivo, então, a unidade de controle de farejamento mantém coerência do cache do hardware entre o cache nível 2 35 do conjunto de circuitos de processamento 10 e o cache nível 1 60 do conjunto de circuitos de processamento 50. Entretanto, se o cache nível 2 35 for arranjado como um cache nível 2 exclusivo, então, a unidade de controle de farejamento 75 também farejará os dados mantidos nos caches nível 1 25, 30 a fim de garantir coerência do cache entre os caches do conjunto de circuitos de processamento 10 e o cache 60 do conjunto de circuitos de processamento 50.
[0056] De acordo com uma modalidade, somente um do conjunto de circuitos de processamento 10 e do conjunto de circuitos de processamento 50 estará processando ativamente uma carga de trabalho em qualquer momento. Com os propósitos do presente pedido, a carga de trabalho pode ser considerada compreendendo pelo menos uma aplicação e pelo menos um sistema operacional para executar esta pelo menos uma aplicação, tal como ilustrado esquematicamente pelo número de referência 100 da figura 2. Neste exemplo, duas aplicações 105, 110 estão em execução sob controle do sistema operacional 115 e, coletivamente, as aplicações 105, 110 e o sistema operacional 115 formam a carga de trabalho 100. As aplicações podem ser consideradas existindo em um nível de usuário, enquanto o sistema operacional existe em um nível privilegiado, e, coletivamente, a carga de trabalho formada pelas aplicações e pelo sistema operacional executa em uma plataforma de hardware 125 (representando a vista no nível do hardware). Em qualquer momento, esta plataforma de hardware será provida tanto pelo conjunto de circuitos de processamento 10 quanto pelo conjunto de circuitos de processamento 50.
[0057] Da forma mostrada na figura 1, o conjunto de circuitos de controle de energia 65 é provido para prover seletiva e independentemente energia ao conjunto de circuitos de processamento 10 e ao conjunto de circuitos de processamento 50. Antes de uma transferência da carga de trabalho de um circuito de processamento para o outro, tipicamente, somente um dos circuitos de processamento será completamente energizado, isto é, o circuito de processamento que desempenha atualmente a carga de trabalho (o conjunto de circuitos de processamento de origem), e o outro circuito de processamento (o conjunto de circuitos de processamento de destino), tipicamente, ficará em uma condição de economia de energia. Quando for determinado que a carga de trabalho deve ser transferida de um circuito de processamento para o outro, então, haverá um período de tempo durante a operação de transferência em que ambos os circuitos de processamento ficam no estado energizado, mas, em algum ponto seguinte à operação de transferência, então, o circuito de processamento de origem a partir do qual a carga de trabalho foi transferida será colocado na condição de economia de energia.
[0058] A condição de economia de energia pode tomar uma variedade de formas, dependendo da implementação, e, portanto, por exemplo, pode ser uma de uma condição desligada, de uma condição de retenção de dados parcial / completa, de uma condição adormecida ou de uma condição ociosa. Tais condições serão bem entendidas pelos versados na técnica e, desta maneira, não serão aqui discutidas com mais detalhes.
[0059] O objetivo das modalidades descritas é realizar comutação da carga de trabalho entre os circuitos de processamento, dependendo do nível de desempenho / energia exigido da carga de trabalho. Desta maneira, quando a carga de trabalho envolver a execução de uma ou mais tarefas com desempenho intensivo, tal como a execução de aplicações de jogos, então, a carga de trabalho pode ser executada no circuito de processamento de alto desempenho 10, usando tanto um quanto ambos os núcleos grandes 15, 20. Entretanto, ao contrário, quando a carga de trabalho estiver desempenhando somente tarefas com baixa intensidade de desempenho, tal como reprodução de MP3, então, a íntegra da carga de trabalho pode ser transferida para o circuito de processamento 50, para se beneficiar das eficiências energéticas que podem ser realizadas a partir de utilização do circuito de processamento 50.
[0060] Para fazer melhor uso de tais capacidades de comutação, é necessário prover um mecanismo que permite que a comutação ocorra de uma maneira simples e eficiente, de forma que a ação de transferência da carga de trabalho não consuma energia até um limite em que anulará os benefícios da comutação e, também, para garantir que o processo de comutação seja rápido o suficiente para que ele próprio não degrade o desempenho até algum nível significativo.
[0061] Em uma modalidade, tais benefícios são, pelo menos em parte, alcançados pelo arranjo do conjunto de circuitos de processamento 10 para ser arquiteturalmente compatível com o conjunto de circuitos de processamento 50. Isto garante que a carga de trabalho possa ser migrada de um conjunto de circuitos de processamento para o outro, ainda garantindo a correta operação. No mínimo, tal compatibilidade arquitetural exige que ambos os circuitos de processamento 10 e 50 compartilhem a mesma arquitetura de conjunto de instruções. Entretanto, em uma modalidade, tal compatibilidade arquitetural também acarreta uma exigência de compatibilidade superior para garantir que as duas instâncias de circuito de processamento sejam vistas como idênticas a partir da visão de um programador. Em uma modalidade, isto envolve o uso dos mesmos registros arquiteturais, e de um ou mais registros de uso especial que armazenam dados usados pelo sistema operacional durante a execução de aplicações. Com um nível de compatibilidade arquitetural como este, então, é possível mascarar, a partir do sistema operacional 115, a transferência da carga de trabalho entre circuitos de processamento, de forma que o sistema operacional fique integralmente alheio se a carga de trabalho está sendo executada no conjunto de circuitos de processamento 10 ou no conjunto de circuitos de processamento 50.
[0062] Em uma modalidade, o tratamento da transferência de um circuito de processamento para o outro é gerenciado pelo controlador de comutação 120 mostrado na figura 2 (também referido como um virtualizador e, aqui, em outras circunstâncias, como um controlador de transferência da carga de trabalho). O controlador de comutação pode ser incorporado por uma mistura de hardware, software embarcado e/ou recursos de software, mas, em uma modalidade, inclui software similar, em natureza, ao software hipervisor encontrado em máquinas virtuais para habilitar que aplicações gravadas em um conjunto de instruções nativas sejam executadas em uma plataforma de hardware que adota um diferente conjunto de instruções nativas. Devido à compatibilidade arquitetural entre os dois circuitos de processamento 10, 50, o controlador de comutação 120 pode mascarar a transferência do sistema operacional 115 meramente pelo mascaramento de um ou mais itens da informação de configuração específica do processador predeterminada proveniente do sistema operacional. Por exemplo, a informação de configuração específica do processador pode incluir os conteúdos de um registro de ID do processador CP15 e registro tipo cache CP15.
[0063] Então, em uma modalidade como esta, o controlador de comutação precisa meramente garantir que qualquer estado arquitetural atual mantido pelo circuito de processamento de origem no momento da transferência, e que não é no momento em que a transferência já está iniciada disponível a partir da memória compartilhada 80, torne-se disponível ao circuito de processamento de destino a fim de habilitar que o circuito de destino a ficar em uma posição tome o comando do desempenho da carga de trabalho com sucesso. Usando o exemplo supradescrito, tipicamente, tal estado arquitetural compreenderá os valores atuais armazenados no arquivo de registro arquitetural do conjunto de circuitos de processamento de origem, juntamente com os valores atuais de um ou mais registros de uso especial do conjunto de circuitos de processamento de origem. Devido à compatibilidade arquitetural entre os circuitos de processamento 10, 50, se este estado arquitetural atual puder ser transferido do circuito de processamento de origem para o circuito de processamento de destino, então, o circuito de processamento de destino a ficar em uma posição tomará o comando do desempenho da carga de trabalho a partir do circuito de processamento de origem com sucesso.
[0064] Embora a compatibilidade arquitetural entre os circuitos de processamento 10, 50 facilite a transferência da íntegra da carga de trabalho entre os dois circuitos de processamento, em uma modalidade, os circuitos de processamento 10, 50 são microarquiteturalmente diferentes um do outro, de maneira tal que haja diferentes características de desempenho, e, portanto, características de consumo de energia, associadas com os dois circuitos de processamento. Da forma discutida anteriormente, em uma modalidade, o circuito de processamento 10 é um circuito de processamento de alto desempenho e alto consumo de energia, enquanto o circuito de processamento 50 é um circuito de processamento de desempenho inferior e consumo de energia inferior. Os dois circuitos de processamento podem ser microarquiteturalmente diferentes um do outro em inúmeros aspectos, mas, tipicamente, terão pelo menos um de diferentes comprimentos de encadeamento de execução e/ou diferentes recursos de execução. Tipicamente, diferenças no comprimento do encadeamento resultarão em diferenças na frequência operacional, que, por sua vez, terão um efeito no desempenho. Similarmente, diferenças nos recursos de execução terão um efeito no rendimento e, portanto, no desempenho. Portanto, a título de exemplo, o conjunto de circuitos de processamento 10 pode ter mais recursos de execução e/ou mais recursos de execução, a fim de melhorar o rendimento. Adicionalmente, os encadeamentos nos núcleos processadores 15, 20 podem ser arranjados para realizar processamento superescalar fora de ordem, enquanto o núcleo mais simples 55 no circuito de processamento com eficiência energética 50 pode ser arranjado como um encadeamento em ordem. Uma discussão adicional das diferenças microarquiteturais será provida posteriormente em relação às figuras 8A e 8B.
[0065] A geração de um estímulo de transferência para fazer com que o controlador de comutação 120 instigue uma operação de transferência a transferir a carga de trabalho de um circuito de processamento para um outro pode ser disparada por uma variedade de motivos. Por exemplo, em uma modalidade, aplicações podem ser perfiladas e marcadas como 'grande', 'pequena' ou 'grande / pequena', de acordo com o que, o sistema operacional pode fazer interface com o controlador de comutação para mover a carga de trabalho desta maneira. Portanto, por uma abordagem como esta, a geração do estímulo de transferência pode ser mapeada para combinações de aplicações em particular que são executadas, para garantir que, quando alto desempenho for exigido, a carga de trabalho seja executada no circuito de processamento de alto desempenho 10, enquanto que, quando este desempenho não for exigido, o circuito de processamento com eficiência energética 50 é usado em substituição. Em outras modalidades, algoritmos podem ser executados para determinar dinamicamente quando disparar uma transferência da carga de trabalho de um circuito de processamento para o outro com base em uma ou mais entradas. Por exemplo, os contadores de desempenho do conjunto de circuitos de processamento podem ser configurados para contar eventos sensíveis ao desempenho (por exemplo, o número de instruções executadas ou o número de operações de carregamento - armazenamento). Acoplado com um contador de ciclo ou um sincronizador do sistema, isto permite a identificação de que uma aplicação com computação altamente intensiva está em execução, que pode ser mais bem servida pela comutação para o conjunto de circuitos de processamento de desempenho superior, ou a identificação de um grande número de operações de carregamento - armazenamento que indica uma aplicação com IO intensiva, que pode ser mais bem servida no conjunto de circuitos de processamento energeticamente eficiente, etc.
[0066] Como um exemplo ainda adicional de quando um estímulo de transferência pode ser gerado, o sistema de processamento de dados pode incluir um ou mais sensores térmicos 90 para monitorar a temperatura do sistema de processamento de dados durante a operação. Este pode ser o caso em que modernos circuitos de processamento de alto desempenho, por exemplo, aqueles que executam em frequências de GHz, algumas vezes alcançam, ou excedem, o limite térmico no qual eles foram desenhados para operar. Pelo uso de tais sensores térmicos 90, pode ser detectado quando tais limites térmicos estão sendo alcançados e, sob estas condições, um estímulo de transferência pode ser gerado para disparar uma transferência da carga de trabalho para um circuito de processamento com mais eficiência energética a fim de proporcionar um resfriamento geral do sistema de processamento de dados. Portanto, considerando o exemplo da figura 1 em que o circuito de processamento 10 é um circuito de processamento de alto desempenho e o circuito de processamento 50 é um circuito de processamento de desempenho inferior que consome menos energia, a migração da carga de trabalho do circuito de processamento 10 para o circuito de processamento 50 quando os limites térmicos do dispositivo estiverem sendo alcançados proporcionará um subsequente resfriamento do dispositivo, ainda permitindo que a execução contínua do programa ocorra, apesar de em rendimento inferior.
[0067] Embora, na figura 1, dois circuitos de processamento 10, 50 sejam mostrados, percebe-se que as técnicas das modalidades supradescritas também podem ser aplicadas em sistemas que incorporam mais de dois circuitos de processamento diferentes, permitindo que o sistema de processamento de dados abarque uma maior faixa dos níveis de desempenho / energia. Em tais modalidades, cada um dos diferentes circuitos de processamento será arranjado para ser arquiteturalmente compatível um com o outro para permitir a pronta migração da íntegra da carga de trabalho entre os circuitos de processamento, mas, também, serão microarquiteturalmente diferentes um do outro para permitir que escolhas sejam feitas entre o uso destes circuitos de processamento dependendo dos níveis de desempenho / energia exigidos.
[0068] A figura 3 é um fluxograma que ilustra a sequência de etapas realizadas tanto no processador de origem quanto no processador de destino quando a carga de trabalho for transferida do processador de origem para o processador de destino mediante recepção de um estímulo de transferência. Um estímulo de transferência como este pode ser gerado pelo sistema operacional 115 ou pelo virtualizador 120 por meio de uma interface de software embarcado do sistema, resultando na detecção do estímulo de comutação na etapa 200 pelo processador de origem (que estará executando não somente a carga de trabalho, mas, também, o software virtualizador que faz parte, pelo menos, do controlador de comutação 120). A recepção do estímulo de transferência (também aqui referido como o estímulo de comutação) na etapa 200 fará com que o controlador de energia 65 inicie uma operação de energização e reinício 205 no processador de destino. Seguinte a tais energização e reinício, o processador de destino invalidará seu cache local na etapa 210 e, então, habilitará o farejamento na etapa 215. Neste momento, então, o processador de destino sinalizará ao processador de origem que ele está pronto para que a transferência da carga de trabalho ocorra, este sinal fazendo com que o processador de origem execute uma operação de salvar estado na etapa 225. Esta operação de salvar estado será discutida com mais detalhes a seguir em relação à figura 4A, mas, em uma modalidade, envolve o conjunto de circuitos de processamento de origem armazenar em seu cache local qualquer um de seu estado arquitetural atual que não está disponível a partir da memória compartilhada no momento em que a operação de transferência for iniciada, e que é necessário para que o processador de destino tome o comando do desempenho da carga de trabalho com sucesso.
[0069] Seguinte à operação de salvar estado 225, um sinal do estado de comutação será emitido ao processador de destino 230 que indica ao processador de destino que, agora, ele deve iniciar o farejamento do processador de origem a fim de recuperar o estado arquitetural exigido. Este processo ocorre por meio de uma operação de restauração de estado 230 que será discutida com mais detalhes a seguir em relação à figura 4B, mas que, em uma modalidade, envolve o conjunto de circuitos de processamento de destino iniciar uma sequência de acessos que são interceptados pela unidade de controle de farejamento 75 na interconexão 70, e que faz com que a cópia em cache do estado arquitetural no cache local do processador de origem seja recuperada e retornada ao processador de destino.
[0070] Seguinte à etapa 230, então, o processador de destino fica em uma posição para tomar o controle do processamento da carga de trabalho e, desta maneira, a operação normal começa na etapa 235.
[0071] Em uma modalidade, uma vez que a operação normal começa no processador de destino, o cache do processador de origem pode ser limpo, da forma indicada na etapa 250, a fim de retirar todos os dados sujos para a memória compartilhada 80 e, então, o processador de origem pode ser desligado na etapa 255. Entretanto, em uma modalidade, para aumentar adicionalmente a eficiência do processador de destino, o processador de origem é arranjado para permanecer energizado por um período de tempo referido na figura 3 como o período de farejamento. Durante este tempo, pelo menos um dos caches do circuito de origem permanece energizado, de forma que seus conteúdos possam ser farejados pelo circuito de controle de farejamento 75 em resposta às solicitações de acesso emitidas pelo processador de destino. Seguinte à transferência da íntegra da carga de trabalho usando o processo descrito na figura 3, espera-se que, pelo menos por um período de tempo inicial depois do qual o processador de destino começa a operação da carga de trabalho, alguns dos dados exigidos durante o desempenho da carga de trabalho fiquem residentes no cache do processador de origem. Se o processador de origem tiver retirado seus conteúdos para a memória, e tiver sido desligado, então, o processador de destino, durante estes estágios anteriores, operará de forma relativamente ineficiente, já que haverá muitos erros do cache em seu cache local, e muita procura de dados a partir da memória compartilhada, resultando em um significativo impacto no desempenho enquanto o cache do processador de destino é "aquecido", isto é, preenchido com valores de dados exigidos pelo processador de circuito de destino para realizar as operações especificadas pela carga de trabalho. Entretanto, deixando o cache do processador de origem energizado durante o período de farejamento, o circuito de controle de farejamento 75 será capaz de servir muitas destas solicitações falhas de cache em relação ao cache do circuito de origem, produzindo significativos benefícios de desempenho, se comparado com a recuperação destes dados a partir da memória compartilhada 80.
[0072] Entretanto, espera-se que este benefício de desempenho dure somente uma certa quantidade de tempo após a comutação, depois do que, os conteúdos do cache do processador de origem ficarão caducos. Desta maneira, em algum momento, um evento de interrupção de farejamento será gerado para desabilitar o farejamento na etapa 245, depois do que, o cache do processador de origem será limpo na etapa 250 e, então, o processador de origem será desligado na etapa 255. Uma discussão dos vários cenários sob os quais o evento de interrupção de farejamento pode ser gerado será realizada com mais detalhes a seguir em relação à figura 6G.
[0073] A figura 4A ilustra esquematicamente a operação de salvar realizada na etapa 225 da figura 3 de acordo com uma modalidade. Em particular, em uma modalidade, o estado arquitetural que precisa ser armazenado a partir do conjunto de circuitos de processamento de origem 300 no cache local 330 consiste em conteúdos de um arquivo de registro 310 referenciados por uma unidade lógica aritmética (ALU) 305 durante o desempenho das operações de processamento de dados, juntamente com os conteúdos de vários registros de uso especial 320 que identificam uma variedade de partes de informação exigidas pela carga de trabalho para habilitar que o controle da carga de trabalho seja tomado com sucesso pelo conjunto de circuitos de processamento de destino. Os conteúdos dos registros de uso especial 320 incluirão, por exemplo, um valor de contador do programa que identifica uma instrução atual que é executada, juntamente com várias outras informações. Por exemplo, outros registros de uso especial incluem registros de estado do processador (por exemplo, o CPSR e o SPSR na arquitetura ARM) que mantêm bits de controle para modo do processador, interrupção do mascaramento, estado de execução e indicadores. Outros registros de uso especial incluem controle arquitetural (o registro de controle do sistema CP15 na arquitetura ARM) que mantém bits para alterar extremidade dos dados, ativar ou desativar a MMU, ativar ou desativar dados / caches de instrução, etc. Outros registros de uso especial em CP15 armazenam endereço de exceção e informação de estado.
[0074] Da forma esquematicamente ilustrada na figura 4A, tipicamente, o circuito de processamento de origem 300 também manterá alguma informação de configuração específica do processador 315, mas esta informação não precisa ser salva no cache 330, já que ela não será aplicável no conjunto de circuitos de processamento de destino. Tipicamente, a informação de configuração específica do processador 315 é permanentemente codificada no circuito de processamento de origem 300 usando constantes lógicas, e pode incluir, por exemplo, os conteúdos do registro de ID do processador CP15 (que serão diferentes para cada circuito de processamento) ou os conteúdos do registro tipo cache CP15 (que dependerão da configuração dos caches 25, 30, 60, por exemplo, indicando que os caches têm diferentes comprimentos de linha). Quando o sistema operacional 115 exigir uma parte de informação de configuração específica do processador 315, então, a menos que o processador já esteja no modo hipervisor, ocorre uma armadilha de execução para o modo hipervisor. Em resposta, o virtualizador 120 pode, em uma modalidade, indicar o valor da informação solicitada, mas, em uma outra modalidade, retornará um valor "virtual". No caso do valor de ID do processador, este valor virtual pode ser escolhido para ser o mesmo para processadores tanto "grandes" quanto "pequenos", desse modo, fazendo com que a configuração de hardware real seja oculta do sistema operacional 115 pelo virtualizador 120.
[0075] Da forma esquematicamente ilustrada na figura 4A, durante a operação de salvar, os conteúdos do arquivo de registro 310 e dos registros de uso especial 320 são armazenados pelo conjunto de circuitos de processamento de origem no cache 330 para formar uma cópia em cache 335. Então, esta cópia em cache é marcada como compartilhável, o que permite que o processador de destino fareje este estado por meio da unidade de controle de farejamento 75.
[0076] Então, a operação de restaurar subsequentemente realizada no processador de destino é ilustrada esquematicamente na figura 4B. Em particular, o conjunto de circuitos de processamento de destino 350 (que pode ou não ter seu próprio cache local) emitirá uma solicitação de um item de estado arquitetural em particular, com esta solicitação sendo interceptada pela unidade de controle de farejamento 75. Então, a unidade de controle de farejamento emitirá uma solicitação de farejamento ao cache local do circuito de processamento de origem 330 para determinar se este item de estado arquitetural está presente no cache da origem. Em virtude das etapas tomadas durante a operação de salvar discutida na figura 4A, um acerto será detectado no cache da origem 330, resultando neste estado arquitetural em cache sendo retornado por meio da unidade de controle de farejamento 75 ao circuito de processamento de destino 350. Este processo pode ser repetido iterativamente até que todos os itens de estado arquitetural tenham sido recuperados por meio do farejamento do cache do circuito de processamento de origem. Tipicamente, qualquer informação de configuração específica do processador relevante ao circuito de processamento de destino 350 é permanentemente codificada no circuito de processamento de destino 350 da forma discutida anteriormente. Assim, uma vez que a operação de restaurar tiver sido concluída, então, o conjunto de circuitos de processamento de destino tem toda a informação exigida para habilitar que ele tome o comando do tratamento da carga de trabalho com sucesso.
[0077] Adicionalmente, em uma modalidade, independente se a carga de trabalho 100 está sendo realizada pelo circuito de processamento "grande" 10 ou pelo circuito de processamento "pequeno" 50, o virtualizador 120 provê ao sistema operacional 115 informação de configuração virtual com os mesmos valores, e, então, as diferenças de hardware entre os circuitos de processamento "grande" e "pequeno" 10, 50 são mascaradas do sistema operacional 115 pelo virtualizador 120. Isto significa que o sistema operacional 115 fica alheio de que o desempenho da carga de trabalho 100 foi transferido para uma plataforma de hardware diferente.
[0078] De acordo com as operações de salvar e restaurar descritas em relação às figuras 4A e 4B, as várias instâncias do processador 10, 50 são arranjadas para serem coerentes em relação ao cache do hardware umas com as outras a fim de reduzir a quantidade de tempo, a energia e a complexidade de hardware envolvidas na transferência do estado arquitetural do processador de origem para o processador de destino. A técnica usa o cache local do processador de origem para armazenar todo o estado que deve ser transferido do processador de origem para o processador de destino e que não é disponível a partir da memória compartilhada no momento em que a operação de transferência ocorrer. Em virtude de o estado ser marcado como compartilhável no cache do processador de origem, isto permite que o processador de destino coerente em relação ao cache do hardware fareje este estado durante a operação de transferência. Pelo uso de uma técnica como esta, é possível transferir o estado entre as instâncias do processador sem a necessidade de salvar este estado tanto na memória principal quanto em um elemento de armazenamento mapeado para a local de memória. Portanto, isto produz significativos benefícios de desempenho e de consumo de energia, aumentando a variedade de situações em que seria apropriado comutar a carga de trabalho a fim de buscar realizar benefícios ao consumo de energia.
[0079] Entretanto, embora a técnica de uso da coerência de cache supradescrita proveja um mecanismo acelerado para tornar o estado arquitetural atual disponível ao processador de destino sem roteamento do estado arquitetural atual por meio da memória compartilhada, ela não é a única maneira na qual um mecanismo acelerado como este pode ser implementado. Por exemplo, a figura 5 ilustra um mecanismo alternativo em que um barramento dedicado 380 é provido entre o conjunto de circuitos de processamento de origem 300 e o conjunto de circuitos de processamento de destino 350 a fim de permitir que o estado arquitetural seja transferido durante a operação de transferência. Portanto, em tais modalidades, as operações de salvar e restaurar 225, 230 da figura 3 são substituídas por um mecanismo de transferência alternativo que utiliza o barramento dedicado 380. Embora, tipicamente, uma abordagem como esta tenha um custo de hardware mais alto que o emprego da abordagem da coerência do cache (tipicamente, a abordagem da coerência do cache fazendo uso de hardware já funcionando no sistema de processamento de dados), ela proverá uma maneira ainda mais rápida de realizar a comutação, que pode ser benéfica em certas implementações.
[0080] As figuras 6A até 6I ilustram esquematicamente uma série de etapas que são realizadas a fim de transferir o desempenho de uma carga de trabalho do conjunto de circuitos de processamento de origem 300 para o conjunto de circuitos de processamento de destino 350. O conjunto de circuitos de processamento de origem 300 é qualquer um dos circuitos de processamento 10, 50 que esteja desempenhando a carga de trabalho antes da transferência, com o conjunto de circuitos de processamento de destino sendo o outro dos circuitos de processamento 10, 50.
[0081] A figura 6A mostra o sistema em um estado inicial no qual o conjunto de circuitos de processamento de origem 300 é energizado pelo controlador de energia 65 e está desempenhando a carga de trabalho de processamento 100, enquanto o conjunto de circuitos de processamento de destino 350 fica na condição de economia de energia. Nesta modalidade, a condição de economia de energia é uma condição de energia desativada, mas, da forma supramencionada, outros tipos de condição de economia de energia também podem ser usados. A carga de trabalho 100, incluindo as aplicações 105, 110 e um sistema operacional 115 para executar as aplicações 105, 110, é abstraída da plataforma de hardware do conjunto de circuitos de processamento de origem 300 pelo virtualizador 120. Durante o desempenho da carga de trabalho 100, o conjunto de circuitos de processamento de origem 300 mantém o estado arquitetural 400, que pode compreender, por exemplo, os conteúdos do arquivo de registro 310 e dos registros de uso especial 320, da forma mostrada na figura 4A.
[0082] Na figura 6B, um estímulo de transferência 430 é detectado pelo virtualizador 120. Embora o estímulo de transferência 430 seja mostrado na figura 6B como um evento externo (por exemplo, detecção de descontrole térmico pelo sensor térmico 90), o estímulo de transferência 430 também pode ser um evento disparado pelo próprio virtualizador 120 ou pelo sistema operacional 115 (por exemplo, o sistema operacional 115 pode ser configurado para informar o virtualizador 120 quando um tipo de aplicação em particular deve ser processado). O virtualizador 120 responde ao estímulo de transferência 430 pelo controle do controlador de energia 65 para suprir energia ao conjunto de circuitos de processamento de destino 350, a fim de colocar o conjunto de circuitos de processamento de destino 350 em um estado energizado.
[0083] Na figura 6C, o conjunto de circuitos de processamento de destino 350 inicia a execução do virtualizador 120. O virtualizador 120 controla o conjunto de circuitos de processamento de destino 350 para invalidar seu cache 420, a fim de impedir erros de processamento ocasionados por valores de dados errôneos que podem estar presentes no cache 420 na energização do conjunto de circuitos de processamento de destino 350. Enquanto o cache de destino 420 está sendo invalidado, o conjunto de circuitos de processamento de origem 350 continua a desempenhar a carga de trabalho 100. Quando a invalidação do cache de destino 420 estiver concluída, o virtualizador 120 controla o conjunto de circuitos de processamento de destino 350 para sinalizar ao conjunto de circuitos de processamento de origem 300 que ele está pronto para a transferência da carga de trabalho 100. Pela continuação do processamento da carga de trabalho 100 no conjunto de circuitos de processamento de origem 300 até que o conjunto de circuitos de processamento de destino 350 esteja pronto para a operação de transferência, o impacto no desempenho da transferência pode ser reduzido.
[0084] No próximo estágio, mostrado na figura 6D, o conjunto de circuitos de processamento de origem 300 para de desempenar a carga de trabalho 100. Durante este estágio, nem o conjunto de circuitos de processamento de origem 300 nem o conjunto de circuitos de processamento de destino 350 realizam a carga de trabalho 100. Uma cópia do estado arquitetural 400 é transferida do conjunto de circuitos de processamento de origem 300 para o conjunto de circuitos de processamento de destino 350. Por exemplo, o estado arquitetural 400 pode ser salvo no cache de origem 410 e restaurado no conjunto de circuitos de processamento de destino 350, da forma mostrada nas figuras 4A e 4B, ou pode ser transferido em um barramento dedicado, da forma mostrada na figura 5. O estado arquitetural 400 contém toda a informação de estado exigida para que o conjunto de circuitos de processamento de destino 350 desempenhe a carga de trabalho 100, diferente da informação já presente na memória compartilhada 80.
[0085] Tendo transferido o estado arquitetural 400 ao conjunto de circuitos de processamento de destino 350, o conjunto de circuitos de processamento de origem 300 é colocado no estado de economia de energia pelo conjunto de circuitos de controle de energia 65 (veja a figura 6E), com a exceção de que o cache de origem 410 permanece energizado. Neste ínterim, o conjunto de circuitos de processamento de destino 350 começa a desempenhar a carga de trabalho 100 usando o estado arquitetural transferido 400.
[0086] Quando o conjunto de circuitos de processamento de destino 350 iniciar o processamento da carga de trabalho 100, o período de farejamento começa (veja a figura 6F). Durante o período de farejamento, a unidade de controle de farejamento 75 pode farejar os dados armazenados no cache de origem 410 e recuperar os dados em nome do conjunto de circuitos de processamento de destino 350. Quando o conjunto de circuitos de processamento de destino 350 solicitar dados que não estão presentes no cache de destino 420, o conjunto de circuitos de processamento de destino 350 solicita dados a partir da unidade de controle de farejamento 75. Então, a unidade de controle de farejamento 75 fareja o cache de origem 410 e, se o farejamento resultar em um acerto no cache, então, a unidade de controle de farejamento 75 recupera os dados farejados a partir do cache de origem 410 e os retorna ao conjunto de circuitos de processamento de destino 350, onde os dados farejados podem ser armazenados no cache de destino 420. Por outro lado, se o farejamento resultar em uma falha do cache no cache de origem 410, então, os dados solicitados são buscados a partir da memória compartilhada 80 e retornados ao conjunto de circuitos de processamento de destino 350. Já que os acessos aos dados no cache de origem 410 são mais rápidos e exigem menos energia que os acessos à memória compartilhada 80, o farejamento do cache de origem 410 por um período aumenta o desempenho do processamento e reduz o consumo de energia durante um período inicial seguinte à transferência da carga de trabalho 100 para o conjunto de circuitos de processamento de destino 350.
[0087] Na etapa mostrada na figura 6G, a unidade de controle de farejamento 75 detecta um evento de interrupção de farejamento que indica que não é mais eficiente manter o cache de origem 410 no estado energizado. O evento de interrupção de farejamento dispara o fim do período de farejamento. O evento de interrupção de farejamento pode ser qualquer um de um conjunto de eventos de interrupção de farejamento monitorados pelo conjunto de circuitos de controle de farejamento 75. Por exemplo, o conjunto de eventos de interrupção de farejamento pode incluir qualquer um ou mais dos seguintes eventos: a) quando o percentual ou fração de acertos de farejamento que resultam em um acerto no cache, no cache de origem 410, (isto é uma quantidade proporcional ao número de acertos de farejamento / número de farejamentos totais) cair abaixo de um nível limite predeterminado depois que o conjunto de circuitos de processamento de destino 350 tiver iniciado o desempenho da carga de trabalho 100; b) quando o número de transações, ou o número de transações de um tipo predeterminado (por exemplo, transações armazenáveis em cache), realizadas desde que o conjunto de circuitos de processamento de destino 350 começou a desempenhar a carga de trabalho 100 exceder um limite predeterminado; c) quando o número de ciclos de processamento decorridos desde que o conjunto de circuitos de processamento de destino 350 começou a desempenhar a carga de trabalho 100 exceder um limite predeterminado; d) quando uma região em particular da memória compartilhada 80 for acessada pela primeira vez desde que o conjunto de circuitos de processamento de destino 350 começou a desempenhar a carga de trabalho 100; e) quando uma região em particular da memória compartilhada 80, que foi acessada por um período inicial depois que o conjunto de circuitos de processamento de destino 350 começou a desempenhar a carga de trabalho 100, não for acessada por um número de ciclos predeterminado ou por um período de tempo predeterminado; f) quando o conjunto de circuitos de processamento de destino 350 gravar em um local de memória predeterminado pela primeira vez desde o início do desempenho da carga de trabalho transferida 100.
[0088] Estes eventos de interrupção de farejamento podem ser detectados usando contadores programáveis na interconexão coerente 70 que inclui a unidade de controle de farejamento 75. Outros tipos de evento de interrupção de farejamento também podem ser incluídos no conjunto de eventos de interrupção de farejamento.
[0089] Na detecção de um evento de interrupção de farejamento, a unidade de controle de farejamento 75 envia um sinal de interrupção de farejamento 440 ao processador de origem 300. A unidade de controle de farejamento 75 interrompe o farejamento do cache de origem 410 e, de agora em diante, responde às solicitações de acesso a dados a partir do conjunto de circuitos de processamento de destino 350 pela busca dos dados solicitados a partir da memória compartilhada 80 e retorno dos dados buscados ao conjunto de circuitos de processamento de destino 350, onde os dados buscados podem ser armazenados em cache.
[0090] Na figura 6H, o circuito de controle do cache de origem é responsivo ao sinal de interrupção de farejamento 440 para limpar o cache 410 a fim de salvar na memória compartilhada 80 todos os valores de dados válidos e sujos (isto é, cujo valor armazenado em cache é mais atualizado que o valor correspondente na memória compartilhada 80).
[0091] Na figura 6I, então, o cache de origem 410 é desligado pelo controlador de energia 65, de forma que o conjunto de circuitos de processamento de origem 300 fique integralmente no estado de economia de energia. O conjunto de circuitos de processamento de destino 350 continua a desempenhar a carga de trabalho 100. Do ponto de vista do sistema operacional 115, agora, a situação é a mesma da figura 6A. O sistema operacional 115 não está ciente de que a execução da carga de trabalho foi transferida de um circuito de processamento para um outro circuito de processamento. Quando um outro estímulo de transferência ocorrer, então, as mesmas etapas das figuras 6A até 6I podem ser usadas para recomutar o desempenho da carga de trabalho ao primeiro processador (neste caso, qual dos circuitos de processamento 10, 50 são o "conjunto de circuitos de processamento de origem" e o "conjunto de circuitos de processamento de destino" é o inverso).
[0092] Na modalidade das figuras 6A até 6I, o controle de energia independente no cache 410 e no conjunto de circuitos de processamento de origem 300 está disponível, de forma que o conjunto de circuitos de processamento de origem 300, diferente do cache de origem 410, possa ser desligado uma vez que o conjunto de circuitos de processamento de destino 350 iniciou o desempenho da carga de trabalho (veja a figura 6E), embora somente o cache 410 do conjunto de circuitos de processamento de origem 350 permaneça no estado energizado (veja as figuras 6F até 6H). Então, o cache de origem 410 é desligado na figura 6I. Esta abordagem pode ser útil para economizar energia, especialmente quando o conjunto de circuitos de processamento de origem 300 for o circuito de processamento "grande" 10.
[0093] Entretanto, também é possível continuar a energizar a íntegra do conjunto de circuitos de processamento de origem 300 durante o período de farejamento e, então, colocar o conjunto de circuitos de processamento de origem 300 como um todo no estado de economia de energia da figura 6I, seguinte ao fim do período de farejamento e à limpeza do cache de origem 410. Isto pode ser mais útil no caso em que o cache de origem 410 for muito profundamente embutido no núcleo processador de origem para poder ser energizado independentemente do núcleo processador de origem. Esta abordagem também pode ser mais prática quando o processador de origem for o circuito de processamento "pequeno" 50, cujo consumo de energia é insignificante em comparação com o circuito de processamento "grande" 10, já que, uma vez que o circuito de processamento "grande" 10 iniciou o processamento da carga de trabalho transferida 100, então, a comutação do circuito de processamento "pequeno" 50, diferente do cache 60, para o estado de economia de energia durante o período de farejamento pode ter pequeno efeito no consumo de energia geral do sistema. Isto pode significar que a complexidade de hardware extra da provisão de controle de energia individual ao circuito de processamento "pequeno" 50 e ao cache do núcleo "pequeno" 60 pode não ser justificada.
[0094] Em algumas situações, pode-se saber antes da transferência da carga de trabalho que os dados armazenados no cache de origem 410 não serão necessários pelo conjunto de circuitos de processamento de destino 350 quando ele começar a desempenhar a carga de trabalho 100. Por exemplo, o conjunto de circuitos de processamento de origem 300 pode ter acabado de concluir uma aplicação quando a transferência ocorrer e, portanto, os dados no cache de origem 410 no momento da transferência referem-se à aplicação concluída e não à aplicação a ser realizada pelo conjunto de circuitos de processamento de destino 350 depois da transferência. Em um caso como este, um controlador de anulação de farejamento pode disparar o virtualizador 120 e o conjunto de circuitos de controle de farejamento 75 para anular o farejamento do cache de origem 410 e para controlar o circuito de processamento de origem 300 para limpar e desligar o cache de origem 410 sem esperar por um evento de interrupção de farejamento para sinalizar o fim do período de farejamento. Neste caso, a técnica das figuras 6A até 6I saltará da etapa da figura 6E direto para a etapa da figura 6G, sem a etapa da figura 6F na qual dados são farejados a partir do cache de origem 410. Assim, se souber antecipadamente que os dados no cache de origem 410 não serão úteis para o conjunto de circuitos de processamento de destino 350, pode-se economizar energia pela colocação do cache de origem 410 e do conjunto de circuitos de processamento de origem 300 na condição de economia de energia sem esperar por um evento de interrupção de farejamento. O controlador de anulação de farejamento pode ser parte do virtualizador 120 ou pode ser implementado como software embarcado em execução no conjunto de circuitos de processamento de origem 300. O controlador de anulação de farejamento também pode ser implementado como uma combinação de elementos, por exemplo, o sistema operacional 115 pode informar o virtualizador 120 quando uma aplicação tiver finalizado e, então, o virtualizador 120 pode anular o farejamento do cache de origem 410 se uma transferência ocorrer quando uma aplicação tiver finalizado.
[0095] A figura 7 é um gráfico no qual a linha 600 ilustra como o consumo de energia varia com o desempenho. Por várias partes deste gráfico, o sistema de processamento de dados pode ser arranjado para utilizar diferentes combinações dos núcleos processadores 15, 20, 55 ilustrados na figura 1 a fim de buscar obter a apropriada proporcionalidade entre o desempenho e o consumo de energia. Portanto, a título de exemplo, quando inúmeras tarefas de desempenho muito alto precisarem ser executadas, é possível executar ambos os núcleos grandes 15, 20 do circuito de processamento 10 a fim de alcançar o desempenho desejado. Opcionalmente, técnicas de variação da voltagem de suprimento podem ser usadas para permitir alguma variação no desempenho e no consumo de energia durante a utilização destes dois núcleos.
[0096] Quando as exigências de desempenho caírem até um nível em que o desempenho exigido pode ser alcançado usando somente um dos núcleos grandes, então, as tarefas podem ser migradas para somente um dos núcleos grandes 15, 20, com o outro núcleo sendo desligado ou colocado em alguma outra condição de economia de energia. Novamente, a variação da voltagem de suprimento pode ser usada para permitir alguma variação entre o desempenho e o consumo de energia durante o uso de um único núcleo grande como este. Deve-se notar que a transição dos dois núcleos grandes para um núcleo grande não exigirá a geração de um estímulo de transferência, nem o uso das supradescritas técnicas para transferir carga de trabalho, já que, em todas as instâncias, é o circuito de processamento 10 que está sendo utilizado, e o circuito de processamento 50 ficará em uma condição de economia de energia. Entretanto, da forma indicada pela linha pontilhada 610 da figura 7, quando o desempenho cair até um nível em que o núcleo pequeno pode alcançar o desempenho exigido, então, um estímulo de transferência pode ser gerado para disparar o supradescrito mecanismo para transferir a íntegra da carga de trabalho do circuito de processamento 10 para o circuito de processamento 50, de maneira tal que, então, a íntegra da carga de trabalho seja executada no núcleo pequeno 55, com o circuito de processamento 10 sendo colocado em uma condição de economia de energia. Novamente, a variação da voltagem de suprimento pode ser usada para permitir alguma variação no desempenho e no consumo de energia do núcleo pequeno 55.
[0097] As figuras 8A e 8B ilustram, respectivamente, diferenças microarquiteturais entre um encadeamento do processador de baixo desempenho 800 e um encadeamento do processador de alto desempenho 850 de acordo com uma modalidade. O encadeamento do processador de baixo desempenho 800 da figura 8A será adequado para o núcleo de processamento pequeno 55 da figura 1, enquanto que o encadeamento do processador de alto desempenho 850 da figura 8B será adequado para os núcleos grandes 15, 20.
[0098] O encadeamento do processador de baixo desempenho 800 da figura 8A compreende um estágio de busca 810 para buscar instruções a partir da memória 80, um estágio de decodificação 820 para decodificar as instruções buscadas, um estágio de emissão 830 para emitir instruções para execução e múltiplos encadeamentos de execução, que incluem um encadeamento integral 840, para realizar operações integrais, um encadeamento MAC 842 para realizar operações de acúmulo de multiplicação e um encadeamento SIMD/FPU 844 para realizar operações SIMD (única instrução, múltiplos dados) ou operações de ponto flutuante. No encadeamento do processador de baixo desempenho 800, o estágio de emissão 830 emite uma única instrução de cada vez, e emite as instruções na ordem na qual as instruções são buscadas.
[0099] O encadeamento do processador de alto desempenho 850 da figura 8B compreende um estágio de busca 860 para buscar instruções a partir da memória 80, um estágio de decodificação 870 para decodificar as instruções buscadas, um estágio de renomeação 875 para renomear registros especificados nas instruções decodificadas, um estágio de despacho 880 para despachar instruções para execução e múltiplos encadeamentos de execução, que incluem dois encadeamentos integrais 890, 892, um encadeamento MAC 894 e dois encadeamentos SIMD/FPU 896, 898. No encadeamento do processador de alto desempenho 850, o estágio de despacho 880 é um estágio de emissão paralelo que pode emitir múltiplas instruções a diferentes encadeamentos 890, 892, 894, 896, 898 de uma vez. O estágio de despacho 880 também pode emitir as instruções fora de ordem. Diferente do encadeamento do processador de baixo desempenho 800, os encadeamentos SIMD/FPU 896, 898 têm comprimentos variáveis, o que significa que operações que prosseguem através dos encadeamentos SIMD/FPU 896, 898 podem ser controladas para ignorar certos estágios. Uma vantagem de uma abordagem como esta é que, se cada um de múltiplos encadeamentos de execução tiver diferentes recursos, não há necessidade de aumentar artificialmente o encadeamento mais curto para torná-lo do mesmo comprimento do encadeamento mais longos, mas lógica contrária é exigida para lidar com a natureza fora de ordem dos resultados produzidos pelos diferentes encadeamentos (por exemplo, para recolocar tudo em ordem se uma exceção de processamento ocorrer).
[00100] O estágio de renomeação 875 é provido para mapear especificadores de registro, que são incluídos em instruções de programa, e identificar registros arquiteturais em particular quando visualizados a partir de um ponto de vista do modelo do programador, para registros físicos que são os registros reais da plataforma de hardware. O estágio de renomeação 875 habilita que seja provido pelo microprocessador um maior grupo de registros físicos do que aquele que está presente na visão do modelo do programador do microprocessador. Este maior grupo de registros físicos é útil durante execução fora de ordem em virtude de ele habilitar que riscos, tais como riscos de gravação depois de gravação (WAW), sejam evitados pelo mapeamento do mesmo registro arquitetural especificado em duas ou mais diferentes instruções para dois ou mais diferentes registros físicos, de forma que as diferentes instruções possam ser executadas concorrentemente. Para mais detalhes de técnicas de renomeação de registro, o leitor é referido ao pedido de patente comumente possuído US 2008/114966 e à patente US 7.590.826.
[00101] O encadeamento de baixo desempenho 800 e o encadeamento de alto desempenho 850 são microarquiteturalmente diferentes de inúmeras maneiras. As diferenças microarquiteturais podem incluir: a) os encadeamentos com diferentes estágios. Por exemplo, o encadeamento de alto desempenho 850 tem um estágio de renomeação 875 que não está presente no encadeamento de baixo desempenho 800; b) os estágios de encadeamento com diferentes capacidades. Por exemplo, o estágio de emissão 830 do encadeamento de baixo desempenho 800 é capaz somente de emissão única de instruções, enquanto que o estágio de despacho 880 do encadeamento de alto desempenho 850 pode emitir instruções em paralelo. Emissão em paralelo melhora o rendimento de processamento do encadeamento e, então, melhora o desempenho; c) os estágios de encadeamento com diferentes comprimentos. Por exemplo, o estágio de decodificação 870 do encadeamento de alto desempenho 850 pode incluir três subestágios, enquanto que o estágio de decodificação 820 do encadeamento de baixo desempenho 800 pode incluir somente um único subestágio. Quanto mais longo for um estágio de encadeamento (quanto maior o número de subestágios), maior o número de instruções que podem estar em vigor ao mesmo tempo e, então, maior a frequência operacional na qual o encadeamento pode operar, o que resulta em um nível de desempenho superior; d) um diferente número de encadeamentos de execução (por exemplo, o encadeamento de alto desempenho 850 tem mais encadeamentos de execução que o encadeamento de baixo desempenho 800). Pela provisão de mais encadeamentos de execução, mais instruções podem ser processadas em paralelo e, então, o desempenho melhora; e) provisão de execução em ordem (como no encadeamento 800) ou execução fora de ordem (como no encadeamento 850). Quando instruções puderem ser executadas fora de ordem, então, o desempenho melhora, já que a execução de instruções pode ser dinamicamente agendada para otimizar o desempenho. Por exemplo, no encadeamento de baixo desempenho em ordem 800, uma série de instruções MAC precisará ser executada uma por uma pelo encadeamento MAC 842 antes que uma instrução posterior possa ser executada por um do encadeamento integral 840 e do encadeamento SIMD / de ponto flutuante 844. Ao contrário, no encadeamento de alto desempenho 850, então, as instruções MAC podem ser executadas pelo encadeamento MAC 894, enquanto (sujeita a quaisquer riscos de dados que não podem ser resolvidos por renomeação) uma instrução posterior que usa um diferente encadeamento de execução 890, 892, 896, 898 pode ser executada em paralelo com as instruções MAC. Isto significa que execução fora de ordem pode melhorar o desempenho do processamento.
[00102] Estes e ainda outros exemplos de diferenças microarquiteturais resultam no encadeamento 850 provendo processamento de desempenho superior ao encadeamento 800. Por outro lado, as diferenças microarquiteturais também fazem o encadeamento 850 consumir mais energia que o encadeamento 800. Assim, prover encadeamentos microarquiteturalmente diferentes 800, 850 habilita que o processamento da carga de trabalho seja otimizado tanto para alto desempenho (pelo uso de um circuito de processamento "grande" 10 com o encadeamento de alto desempenho 850) quanto para eficiência energética (pelo uso de um circuito de processamento "pequeno" 50 com o encadeamento de baixo desempenho 800).
[00103] A figura 9 mostra um gráfico que ilustra a variação no consumo de energia do sistema de processamento de dados à medida que o desempenho da carga de trabalho 100 é comutado entre o circuito de processamento grande 10 e o circuito de processamento pequeno 50.
[00104] No ponto A da figura 9, a carga de trabalho 100 está sendo desempenhada no conjunto de circuitos de processamento pequeno 50 e, então, o consumo de energia é baixo. No ponto B, ocorre um estímulo de transferência que indica que o processamento de alta intensidade deve ser desempenhado e, então, o desempenho da carga de trabalho é transferido para o conjunto de circuitos de processamento grande 10. Então, o consumo de energia aumenta e permanece alto no ponto C, enquanto o conjunto de circuitos de processamento grande 10 está desempenhando a carga de trabalho. No ponto D, considera-se que ambos os núcleos grandes estão operando em combinação para processar a carga de trabalho. Entretanto, se as exigências de desempenho caírem até um nível em que a carga de trabalho pode ser tratada somente por um dos núcleos grandes, então, a carga de trabalho é migrada somente para um dos núcleos grandes, e o outro é desligado, da forma indicada pela queda na energia até o nível adjacente ao ponto E. Entretanto, no ponto E, um outro estímulo de transferência ocorre (indicando que um retorno para o processamento de baixa intensidade é desejado) para disparar uma transferência do desempenho da carga de trabalho de volta ao conjunto de circuitos de processamento pequeno 50.
[00105] Quando o conjunto de circuitos de processamento pequeno 50 iniciar o processamento da carga de trabalho de processamento, a maior parte do conjunto de circuitos de processamento grande fica no estado de economia de energia, mas o cache do conjunto de circuitos de processamento grande 10 permanece energizado durante o período de farejamento (ponto F da figura 9) para habilitar que os dados no cache sejam recuperados para o conjunto de circuitos de processamento pequeno 50. Portanto, o cache do conjunto de circuitos de processamento grande 10 faz com que o consumo de energia no ponto F seja mais alto que no ponto A, quando somente o conjunto de circuitos de processamento pequeno 50 foi energizado. No fim do período de farejamento, o cache do conjunto de circuitos de processamento grande 10 é desligado e, no ponto G, o consumo de energia retorna para o baixo nível quando somente o conjunto de circuitos de processamento pequeno 50 estiver ativo.
[00106] Da forma supramencionada, na figura 9 o consumo de energia é mais alto durante o período de farejamento no ponto F que no ponto G, devido ao cache do conjunto de circuitos de processamento grande 10 ser energizado durante o período de farejamento. Embora este aumento no consumo de energia seja indicado somente seguinte à transição grande para pequeno, seguinte à transição pequeno para grande também pode haver um período de farejamento, durante o qual os dados no cache do conjunto de circuitos de processamento pequeno 50 podem ser farejados em nome do conjunto de circuitos de processamento grande 10 pela unidade de controle de farejamento 75. O período de farejamento para a transição pequeno para grande não foi indicado na figura 9 em virtude de a energia consumida por deixar o cache do conjunto de circuitos de processamento pequeno 50 em um estado energizado durante o período de farejamento ser insignificante em comparação com a energia consumida pelo conjunto de circuitos de processamento grande 10 durante o desempenho da carga de trabalho de processamento, e, então, o aumento muito pequeno no consumo de energia devido ao cache do conjunto de circuitos de processamento pequeno 50 ser energizado não é visível no gráfico da figura 9.
[00107] As modalidades supradescritas descrevem um sistema que contém duas ou mais instâncias do processador arquiteturalmente compatíveis com microarquiteturas otimizadas para eficiência energética ou desempenho. O estado arquitetural exigido pelo sistema operacional e por aplicações pode ser comutado entre as instâncias do processador, dependendo do nível de desempenho / energia exigido, a fim de permitir que a íntegra da carga de trabalho seja comutada entre as instâncias do processador. Em uma modalidade, somente uma das instâncias do processador está executando a carga de trabalho em qualquer dado momento, com a outra instância de processamento estando em uma condição de economia de energia ou no processo de entrada / saída da condição de economia de energia.
[00108] Em uma modalidade, as instâncias do processador podem ser arranjadas para serem coerentes em relação ao cache do hardware umas com as outras para reduzir a quantidade de tempo, a energia e a complexidade de hardware envolvidas na comutação do estado arquitetural do processador de origem para o processador de destino. Isto reduz o tempo para realizar a operação de comutação, o que aumenta as oportunidades nas quais as técnicas das modalidades podem ser usadas.
[00109] Tais sistemas podem ser usados em uma variedade de situações em que a eficiência energética é importante tanto para a vida útil da bateria quanto para o gerenciamento térmico, e a dispersão do desempenho é de maneira tal que um processador mais energeticamente eficiente possa ser usado para cargas de trabalho de processamento inferior, enquanto um processador de desempenho superior pode ser usado para cargas de trabalho de processamento superior.
[00110] Em virtude de duas ou mais instâncias de processamento serem arquiteturalmente compatíveis, a partir de uma perspectiva da aplicação, a única diferença entre os dois processadores é o desempenho disponível. Através das técnicas de uma modalidade, todo o estado arquitetural exigido pode ser movido entre os processadores sem precisar envolver o sistema operacional, de maneira tal que, então, fique transparente ao sistema operacional e às aplicações em execução no sistema operacional em relação a qual processador estes sistema operacional e aplicações estão em execução.
[00111] Durante o uso de instâncias do processador arquiteturalmente compatíveis descritas nas modalidades expostas, a quantidade total de estado arquitetural que precisa ser transferida pode caber facilmente em um cache de dados e, já que modernos sistemas de processamento frequentemente implementam coerência de cache, então, pelo armazenamento do estado arquitetural como comutado no cache de dados, o processador de destino pode farejar rapidamente este estado de uma maneira energeticamente eficiente fazendo uso de estruturas de circuito existentes.
[00112] Em uma modalidade descrita, o mecanismo de comutação é usado para garantir que o limite térmico para o sistema de processamento de dados não seja violado. Em particular, quando os limites térmicos estiverem perto de serem alcançados, a íntegra da carga de trabalho pode ser comutada para uma instância do processador mais energeticamente eficiente, permitindo que todo o sistema resfrie enquanto a execução contínua do programa ocorre, apesar de em um rendimento inferior.
[00113] Embora uma modalidade em particular tenha sido aqui descrita, percebe-se que a invenção não é limitada a esta, e que muitas modificações e adições a esta podem ser feitas no escopo da invenção. Por exemplo, várias combinações dos recursos das seguintes reivindicações dependentes podem ser feitas com os recursos das reivindicações independentes sem fugir do escopo da presente invenção.

Claims (13)

1. Aparelho de processamento de dados, compreendendo: primeiro conjunto de circuitos de processamento (10) e segundo conjunto de circuitos de processamento (50), onde ambos aqueles circuitos são configurados para desempenhar uma carga de trabalho de processamento (100) de maneira tal que a carga de trabalho de processamento seja desempenhada por um dentre o primeiro conjunto de circuitos de processamento e o segundo conjunto de circuitos de processamento de uma vez; conjunto de circuitos de controle de energia (65) para controlar independentemente o suprimento de energia ao primeiro conjunto de circuitos de processamento e ao segundo conjunto de circuitos de processamento; um controlador de transferência da carga de trabalho configurado para ser responsivo a um estímulo de transferência para iniciar uma transferência de desempenho da carga de trabalho de processamento a partir de um conjunto de circuitos de processamento de origem para um conjunto de circuitos de processamento de destino antes de o conjunto de circuitos de processamento de origem ser colocado numa condição de economia de energia pelo conjunto de circuitos de controle de energia, o conjunto de circuitos de processamento de origem sendo um dentre o primeiro e o segundo conjuntos de circuitos de processamento e o conjunto de circuitos de processamento de destino sendo o outro dentre o primeiro e o segundo conjuntos de circuitos de processamento; caracterizado pelo fato de que: pelo menos o conjunto de circuitos de processamento de origem tem um cache (25); o conjunto de circuitos de controle de energia é configurado, seguindo a dita transferência, para manter pelo menos o cache do conjunto de circuitos de processamento de origem numa condição energizada durante um período de farejamento seguindo o início de desempenho da carga de trabalho de processamento transferida pelo conjunto de circuitos de processamento de destino; o aparelho de processamento de dados compreende conjunto de circuitos de farejamento de cache (75) configurado durante o período de farejamento para farejar valores de dados no cache do conjunto de circuitos de processamento de origem e para recuperar os valores de dados farejados para o conjunto de circuitos de processamento de destino; e o conjunto de circuitos de controle de energia é configurado para colocar pelo menos o cache do conjunto de circuitos de processamento de origem na condição de economia de energia seguindo o fim do período de farejamento, em que o referido conjunto de circuitos de controle de energia é configurado para colocar o conjunto de circuitos de processamento de origem, diferente do cache, na condição de economia de energia durante o período de farejamento, e para colocar o cache do conjunto de circuitos de processamento de origem na condição de economia de energia seguindo o fim do período de farejamento, e em que o cache do conjunto de circuitos de processamento de origem é parte de uma hierarquia de cache dentro do conjunto de circuitos de processamento de origem, e, durante aquele período de farejamento, o cache é mantido no estado energizado, enquanto que pelo menos um outro cache em tal hierarquia de cache fica na condição de economia de energia.
2. Aparelho de processamento de dados, de acordo com a reivindicação 1, caracterizado pelo fato de a carga de trabalho de processamento incluir pelo menos uma aplicação de processamento e pelo menos um sistema operacional para executar aquela pelo menos uma aplicação de processamento.
3. Aparelho de processamento de dados, de acordo com a reivindicação 2, caracterizado pelo fato de que o controlador de transferência da carga de trabalho é configurado durante a transferência para mascarar informação de configuração específica de processador predeterminado proveniente de dito pelo menos um sistema operacional, tal que a transferência da carga de trabalho seja transparente ao dito pelo menos um sistema operacional.
4. Aparelho de processamento de dados, de acordo com a reivindicação 3, caracterizado pelo fato de que o controlador de transferência da carga de trabalho compreende pelo menos software de virtualização que separa logicamente aquele pelo menos um sistema operacional do primeiro conjunto de circuitos de processamento e do segundo conjunto de circuitos de processamento.
5. Aparelho de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o primeiro conjunto de circuitos de processamento (10) é arquiteturalmente compatível com o segundo conjunto de circuitos de processamento (50), tal que uma carga de trabalho de processamento a ser desempenhada pelo aparelho de processamento de dados possa ser desempenhada ou no primeiro conjunto de circuitos de processamento (10) ou no segundo conjunto de circuitos de processamento (50).
6. Aparelho de processamento de dados, de acordo com a reivindicação 5, caracterizado pelo fato de que o primeiro conjunto de circuitos de processamento é microarquiteturalmente diferente do segundo conjunto de circuitos de processamento, tal que desempenho daquele primeiro conjunto de circuitos de processamento seja diferente de um desempenho daquele segundo conjunto de circuitos de processamento.
7. Aparelho de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que o conjunto de circuitos de processamento de destino também compreende um cache.
8. Aparelho de processamento de dados, de acordo com a reivindicação 7, caracterizado pelo fato de que os valores de dados farejados recuperados para o conjunto de circuitos de processamento de destino pelo conjunto de circuitos de farejamento de cache são armazenados no cache do conjunto de circuitos de processamento de destino.
9. Aparelho de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de que o conjunto de circuitos de controle de energia é configurado para manter o conjunto de circuitos de processamento de origem na condição energizada durante o referido período de farejamento e para colocar o conjunto de circuitos de processamento de origem, incluindo o cache, na condição de economia de energia seguindo o fim daquele período de farejamento.
10. Aparelho de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que o conjunto de circuitos de processamento de origem é configurado para realizar uma operação de limpeza no cache do conjunto de circuitos de processamento de origem para gravar de novo todos os dados sujos do cache numa memória compartilhada seguindo o fim do período de farejamento e antes do conjunto de circuitos de controle de energia colocar o cache do conjunto de circuitos de processamento de origem na condição de economia de energia.
11. Aparelho de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 10, caracterizado pelo fato de o conjunto de circuitos de processamento de destino estar na condição de economia de energia antes da ocorrência do estímulo de transferência e o conjunto de circuitos de controle de energia ser configurado para colocar o conjunto de circuitos de processamento de destino na condição energizada em resposta ao estímulo de transferência.
12. Aparelho de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 13, caracterizado pelo fato de o período de farejamento terminar na ocorrência de qualquer um de um conjunto de eventos de interrupção de farejamento que inclui pelo menos um evento de interrupção de farejamento.
13. Método de processamento de dados para um aparelho, o qual compreende primeiro conjunto de circuitos de processamento (10) e segundo conjunto de circuitos de processamento (50) configurados para desempenhar uma carga de trabalho de processamento (100), tal que a carga de trabalho de processamento seja desempenhada por um dentre o primeiro conjunto de circuitos de processamento e o segundo conjunto de circuitos de processamento de uma vez, método esse sendo caracterizado pelo fato de que compreende as etapas de: desempenhar a carga de trabalho de processamento (100) com um conjunto de circuitos de processamento de origem, o conjunto de circuitos de processamento de origem sendo um dentre o primeiro e o segundo conjuntos de circuitos de processamento e compreendendo um cache, o outro dos primeiro e segundo conjuntos de circuitos de processamento sendo um conjunto de circuitos de processamento de destino; em resposta a um estímulo de transferência, transferir desempenho da carga de trabalho de processamento do conjunto de circuitos de processamento de origem para o conjunto de circuitos de processamento de destino antes de tal conjunto de circuitos de processamento de origem ser colocado numa condição de economia de energia; seguindo a etapa de transferência, manter pelo menos o cache do conjunto de circuitos de processamento de origem numa condição energizada durante um período de farejamento seguindo o início de desempenho da carga de trabalho de processamento transferida pelo conjunto de circuitos de processamento de destino; durante período de farejamento, farejar valores de dados no cache do conjunto de circuitos de processamento de origem e recuperar os valores de dados farejados para o conjunto de circuitos de processamento de destino; e colocar pelo menos o referido cache do conjunto de circuitos de processamento de origem na condição de economia de energia seguindo o fim do período de farejamento, onde o conjunto de circuitos de processamento de origem, diferente do cache, é colocado na condição de economia de energia durante o período de farejamento, e o cache do conjunto de circuitos de processamento de origem é colocado na condição de economia de energia seguindo o fim do período de farejamento, sendo o cache do conjunto de circuitos de processamento de origem parte de uma hierarquia de cache dentro do conjunto de circuitos de processamento de origem, e, durante tal período de farejamento, o cache é mantido no estado energizado, enquanto que pelo menos um outro cache na hierarquia de cache fica na condição de economia de energia.
BR112012021121-8A 2010-03-01 2011-02-17 aparelho de processamento de dados, e, método de processamento de dados BR112012021121B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/659,230 US8533505B2 (en) 2010-03-01 2010-03-01 Data processing apparatus and method for transferring workload between source and destination processing circuitry
US12/659,230 2010-03-01
PCT/GB2011/050315 WO2011107775A1 (en) 2010-03-01 2011-02-17 Data processing apparatus and method for transferring workload between source and destination processing circuitry

Publications (2)

Publication Number Publication Date
BR112012021121A2 BR112012021121A2 (pt) 2017-07-18
BR112012021121B1 true BR112012021121B1 (pt) 2020-12-01

Family

ID=44209944

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112012021121-8A BR112012021121B1 (pt) 2010-03-01 2011-02-17 aparelho de processamento de dados, e, método de processamento de dados

Country Status (10)

Country Link
US (2) US8533505B2 (pt)
JP (1) JP5702407B2 (pt)
KR (1) KR101740225B1 (pt)
CN (1) CN102804103B (pt)
BR (1) BR112012021121B1 (pt)
DE (1) DE112011100743B4 (pt)
GB (1) GB2490825B (pt)
IL (1) IL221269A (pt)
RU (2) RU2711336C2 (pt)
WO (1) WO2011107775A1 (pt)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533505B2 (en) 2010-03-01 2013-09-10 Arm Limited Data processing apparatus and method for transferring workload between source and destination processing circuitry
US9010641B2 (en) * 2010-12-07 2015-04-21 Hand Held Products, Inc. Multiple platform support system and method
DE112012006377B4 (de) * 2012-05-17 2022-02-24 Intel Corporation Energieverbrauch und Leistung von Computersystemen steuern
WO2014021995A1 (en) * 2012-07-31 2014-02-06 Empire Technology Development, Llc Thread migration across cores of a multi-core processor
US9000805B2 (en) * 2013-01-29 2015-04-07 Broadcom Corporation Resonant inductor coupling clock distribution
EP3014464A4 (en) * 2013-06-28 2017-03-15 Intel Corporation Techniques to aggregate compute, memory and input/output resources across devices
JP2015035073A (ja) * 2013-08-08 2015-02-19 ルネサスエレクトロニクス株式会社 半導体装置及び半導体装置の制御方法
JP6366717B2 (ja) * 2013-09-27 2018-08-01 インテル・コーポレーション 複数のデバイスにわたる複数のメモリリソースを構成するための技術
US9965279B2 (en) 2013-11-29 2018-05-08 The Regents Of The University Of Michigan Recording performance metrics to predict future execution of large instruction sequences on either high or low performance execution circuitry
US9561232B2 (en) 2014-02-18 2017-02-07 Demerx, Inc. Low dose noribogaine for treating nicotine addiction and preventing relapse of nicotine use
US9244747B2 (en) 2014-03-13 2016-01-26 Qualcomm Incorporated System and method for providing dynamic clock and voltage scaling (DCVS) aware interprocessor communication
US9591978B2 (en) 2014-03-13 2017-03-14 Demerx, Inc. Methods and compositions for pre-screening patients for treatment with noribogaine
US20150379678A1 (en) * 2014-06-25 2015-12-31 Doa'a M. Al-otoom Techniques to Compose Memory Resources Across Devices and Reduce Transitional Latency
US9870226B2 (en) * 2014-07-03 2018-01-16 The Regents Of The University Of Michigan Control of switching between executed mechanisms
US9547592B2 (en) 2014-07-29 2017-01-17 International Business Machines Corporation Cache mobility
CN105550140B (zh) * 2014-11-03 2018-11-09 联想(北京)有限公司 一种电子设备及数据处理方法
US9891964B2 (en) * 2014-11-19 2018-02-13 International Business Machines Corporation Network traffic processing
US9958932B2 (en) 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US9898071B2 (en) 2014-11-20 2018-02-20 Apple Inc. Processor including multiple dissimilar processor cores
EP3845275A1 (en) 2014-11-26 2021-07-07 DemeRx, Inc. Methods and compositions for potentiating the action of opioid analgesics using iboga alkaloids
CN104375963B (zh) 2014-11-28 2019-03-15 上海兆芯集成电路有限公司 基于缓存一致性的控制系统和方法
CN104407995B (zh) * 2014-11-28 2018-10-09 上海兆芯集成电路有限公司 基于缓存一致性的控制系统和方法
US9891699B2 (en) * 2014-12-18 2018-02-13 Vmware, Inc. System and method for performing distributed power management without power cycling hosts
US9697124B2 (en) * 2015-01-13 2017-07-04 Qualcomm Incorporated Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
GB2536202B (en) * 2015-03-02 2021-07-28 Advanced Risc Mach Ltd Cache dormant indication
JP6478762B2 (ja) 2015-03-30 2019-03-06 ルネサスエレクトロニクス株式会社 半導体装置及びその制御方法
US10055259B2 (en) * 2015-05-26 2018-08-21 Mediatek Inc. Method for performing processor resource allocation in an electronic device, and associated apparatus
WO2016195274A1 (en) * 2015-06-01 2016-12-08 Samsung Electronics Co., Ltd. Method for scheduling entity in multi-core processor system
US9928115B2 (en) 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
CN105302498A (zh) * 2015-11-24 2016-02-03 浪潮(北京)电子信息产业有限公司 一种存储冗余系统与方法
US10310858B2 (en) * 2016-03-08 2019-06-04 The Regents Of The University Of Michigan Controlling transition between using first and second processing circuitry
RU2652460C1 (ru) * 2017-06-23 2018-04-26 Федеральное государственное бюджетное образовательное учреждение высшего образования "Вятский государственный университет" Способ организации выполнения операции умножения двух чисел в модулярно-индексном формате представления с плавающей точкой на универсальных многоядерных процессорах
US10482016B2 (en) 2017-08-23 2019-11-19 Qualcomm Incorporated Providing private cache allocation for power-collapsed processor cores in processor-based systems
US11119830B2 (en) * 2017-12-18 2021-09-14 International Business Machines Corporation Thread migration and shared cache fencing based on processor core temperature
WO2019153187A1 (en) 2018-02-08 2019-08-15 Alibaba Group Holding Limited Hybrid system-on-chip for power and performance prediction and control
EP3553666B1 (en) * 2018-04-12 2023-05-31 ARM Limited Cache control in presence of speculative read operations
US11106261B2 (en) 2018-11-02 2021-08-31 Nvidia Corporation Optimal operating point estimator for hardware operating under a shared power/thermal constraint
TWI697778B (zh) * 2019-06-17 2020-07-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
US11531550B2 (en) 2020-11-05 2022-12-20 Cadence Design Systems, Inc. Program thread selection between a plurality of execution pipelines
US20240176739A1 (en) * 2022-11-30 2024-05-30 Stratus Technologies Ireland Ltd. Fault tolerant systems and methods using shared memory configurations

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3309A (en) * 1843-10-18 Weaver s loom for working any number of heddles
US288748A (en) * 1883-11-20 John watson
US5530932A (en) * 1994-12-23 1996-06-25 Intel Corporation Cache coherent multiprocessing computer system with reduced power operating features
JPH09138716A (ja) 1995-11-14 1997-05-27 Toshiba Corp 電子計算機
JP3864509B2 (ja) * 1997-08-19 2007-01-10 株式会社日立製作所 マルチプロセッサシステム
JPH11203254A (ja) 1998-01-14 1999-07-30 Nec Corp 共有プロセス制御装置及びプログラムを記録した機械読み取り可能な記録媒体
JP2000347758A (ja) * 1999-06-03 2000-12-15 Nec Kofu Ltd 情報処理装置
US6501999B1 (en) 1999-12-22 2002-12-31 Intel Corporation Multi-processor mobile computer system having one processor integrated with a chipset
US6631474B1 (en) 1999-12-31 2003-10-07 Intel Corporation System to coordinate switching between first and second processors and to coordinate cache coherency between first and second processors during switching
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US6725354B1 (en) 2000-06-15 2004-04-20 International Business Machines Corporation Shared execution unit in a dual core processor
JP2002215597A (ja) 2001-01-15 2002-08-02 Mitsubishi Electric Corp マルチプロセッサ装置
US7100060B2 (en) 2002-06-26 2006-08-29 Intel Corporation Techniques for utilization of asymmetric secondary processing resources
US7487502B2 (en) 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US20040225840A1 (en) 2003-05-09 2004-11-11 O'connor Dennis M. Apparatus and method to provide multithreaded computer processing
US20050132239A1 (en) 2003-12-16 2005-06-16 Athas William C. Almost-symmetric multiprocessor that supports high-performance and energy-efficient execution
US20060064606A1 (en) 2004-09-21 2006-03-23 International Business Machines Corporation A method and apparatus for controlling power consumption in an integrated circuit
US7275124B2 (en) * 2005-02-24 2007-09-25 International Business Machines Corporation Method and system for controlling forwarding or terminating of a request at a bus interface based on buffer availability
US7461275B2 (en) 2005-09-30 2008-12-02 Intel Corporation Dynamic core swapping
US20080263324A1 (en) 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US7624253B2 (en) 2006-10-25 2009-11-24 Arm Limited Determining register availability for register renaming
US7590826B2 (en) 2006-11-06 2009-09-15 Arm Limited Speculative data value usage
US8489862B2 (en) * 2007-06-12 2013-07-16 Panasonic Corporation Multiprocessor control apparatus for controlling a plurality of processors sharing a memory and an internal bus and multiprocessor control method and multiprocessor control circuit for performing the same
US8527709B2 (en) * 2007-07-20 2013-09-03 Intel Corporation Technique for preserving cached information during a low power mode
US7996663B2 (en) 2007-12-27 2011-08-09 Intel Corporation Saving and restoring architectural state for processor cores
US20110213947A1 (en) 2008-06-11 2011-09-01 John George Mathieson System and Method for Power Optimization
US8725953B2 (en) * 2009-01-21 2014-05-13 Arm Limited Local cache power control within a multiprocessor system
US8566628B2 (en) * 2009-05-06 2013-10-22 Advanced Micro Devices, Inc. North-bridge to south-bridge protocol for placing processor in low power state
US9367462B2 (en) 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors
US8418187B2 (en) 2010-03-01 2013-04-09 Arm Limited Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
US8533505B2 (en) 2010-03-01 2013-09-10 Arm Limited Data processing apparatus and method for transferring workload between source and destination processing circuitry
US20110213935A1 (en) 2010-03-01 2011-09-01 Arm Limited Data processing apparatus and method for switching a workload between first and second processing circuitry
US8751833B2 (en) 2010-04-30 2014-06-10 Arm Limited Data processing system

Also Published As

Publication number Publication date
GB2490825A (en) 2012-11-14
RU2550535C2 (ru) 2015-05-10
GB2490825B (en) 2016-06-08
US20110213993A1 (en) 2011-09-01
KR20130012120A (ko) 2013-02-01
IL221269A0 (en) 2012-10-31
CN102804103A (zh) 2012-11-28
BR112012021121A2 (pt) 2017-07-18
CN102804103B (zh) 2015-08-12
JP5702407B2 (ja) 2015-04-15
KR101740225B1 (ko) 2017-05-26
US20130311725A1 (en) 2013-11-21
JP2013521556A (ja) 2013-06-10
US9286222B2 (en) 2016-03-15
DE112011100743T5 (de) 2013-06-06
IL221269A (en) 2017-02-28
DE112011100743B4 (de) 2014-07-10
WO2011107775A1 (en) 2011-09-09
RU2711336C2 (ru) 2020-01-16
RU2015107993A3 (pt) 2018-09-27
GB201214397D0 (en) 2012-09-26
RU2012141563A (ru) 2014-04-10
US8533505B2 (en) 2013-09-10
RU2015107993A (ru) 2015-06-27

Similar Documents

Publication Publication Date Title
BR112012021121B1 (pt) aparelho de processamento de dados, e, método de processamento de dados
US8418187B2 (en) Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
US20110213935A1 (en) Data processing apparatus and method for switching a workload between first and second processing circuitry
US9817644B2 (en) Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
US20190332158A1 (en) Dynamic core selection for heterogeneous multi-core systems
US8099556B2 (en) Cache miss detection in a data processing apparatus
JP4376692B2 (ja) 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US20120079245A1 (en) Dynamic optimization for conditional commit
US11249657B2 (en) Non-volatile storage circuitry accessible as primary storage for processing circuitry
Gutierrez et al. Evaluating private vs. shared last-level caches for energy efficiency in asymmetric multi-cores
Renau et al. Speculative Multithreading Does not (Necessarily) Waste Energy Draft paper submitted for publication. November 6, 2003. Please keep confidential

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 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: 20 (VINTE) ANOS CONTADOS A PARTIR DE 17/02/2011, OBSERVADAS AS CONDICOES LEGAIS.