BR112012021102B1 - Aparelho de processamento de dados, metodo para operar um aparelho de processamento de dados - Google Patents

Aparelho de processamento de dados, metodo para operar um aparelho de processamento de dados Download PDF

Info

Publication number
BR112012021102B1
BR112012021102B1 BR112012021102-1A BR112012021102A BR112012021102B1 BR 112012021102 B1 BR112012021102 B1 BR 112012021102B1 BR 112012021102 A BR112012021102 A BR 112012021102A BR 112012021102 B1 BR112012021102 B1 BR 112012021102B1
Authority
BR
Brazil
Prior art keywords
circuit system
processing circuit
processing
workload
source
Prior art date
Application number
BR112012021102-1A
Other languages
English (en)
Other versions
BR112012021102A2 (pt
Inventor
Peter Richard Greenhalgh
Richard Roy Grisenthwaite
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 BR112012021102A2 publication Critical patent/BR112012021102A2/pt
Publication of BR112012021102B1 publication Critical patent/BR112012021102B1/pt

Links

Images

Classifications

    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

APARELHO DE PROCESSAMENTO DE DADOS, MÉTODO PARA OPERAR UM APARELHO DE PROCESSAMENTO DE DADOS São providos um aparelho de processamento de dados e um método para comutação do desempenho de uma carga de trabalho entre dois circuitos de processamento. O aparelho de processamento de dados tem o primeiro sistema de circuitos de processamento que é arquiteturalmente compatível com segundo sistema de circuitos de processamento, mas com o primeiro sistema de circuitos de processamento sendo microarquiteturalmente diferente do segundo sistema de circuitos de processamento. Em qualquer momento, uma carga de trabalho que consiste em pelo menos uma aplicação e pelo menos um sistema operacional para executar esta aplicação é realizada por um do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento. Um controlador de comutação é responsivo a um estímulo de transferência para realizar uma operação de trasferência de passagem para transferir o desempenho da carga de trabalho do sistema de circuitos de processamento de origem para o sistema de circuitos de processamento de destino, com o sistema de circuitos de processamento de origem sendo um do primeiro e do segundo sistemas de circuitos de processamento e o sistema de circuitos de processamento de destino (...).

Description

CAMPO DA INVENÇÃO
[001] A presente invenção diz respeito a um aparelho de processamento de dados e a um método para comutação de uma carga de trabalho entre primeiro e segundo sistemas de circuitos de processamento e, em particular, a uma técnica para realizar tal comutação para aumentar a eficiência energética do aparelho de processamento de dados.
FUNDAMENTOS DA INVENÇÃO
[002]Nos modernos sistemas de processamento de dados, adiferenç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 da 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 tomando insuficientes para permitir um único processador para assumir 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 o rendimento, a análise sobre comotais sistemas podem ser usados para aumentar a eficiência energética foi 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 S IGOPS Operating Systems Review, Volume 43, Edição 3 (julho 2009), discute sistemas multinúcleos da Arquitetura de Conjunto de Instruções Único Assimétrico (ASISA), que consistem em diversos núcleos expondo 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 / desempenhos inferiores e, como um efeito colateral, consumirá 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 e, tipicamente, tal gerenciamento de agendamento colocará uma significativa carga no sistema operacional.
[005] O artigo "Single-ISA Heterogeneous Multi-Core Architectures: The Potential for Process or 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 dosistema 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 toma-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.
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 sistema de circuitos de processamento para realizar operações de processamento de dados; segundo sistema de circuitos de processamento para realizar operações de processamento de dados; o primeiro sistema de circuitos de processamento sendo arquiteturalmente compatível com o segundo sistema de circuitos de processamento, de modo que uma carga de trabalho a ser realizada pelo aparelho de processamento de dados possa ser realizada tanto no primeiro sistema de circuitos de processamento quanto no segundo sistema de circuitos de processamento, a dita carga de trabalho compreendendo pelo menos uma aplicação e pelo menos um sistema operacional para executar a dita pelo menos uma aplicação; o primeiro sistema de circuitos de processamento sendo microarquiteturalmente diferente do segundo sistema de circuitos de processamento, de modo que o desempenho do primeiro sistema de circuitos de processamento seja diferente do desempenho do segundo sistema de circuitos de processamento; o primeiro e o segundo sistemas de circuitos de processamento sendo configurados de modo que a carga de trabalho seja realizada por um do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento em qualquer momento; um controlador de comutação, responsivo a um estímulo de transferência, para realizar uma operação de transferência de passagem para transferir o desempenho da carga de trabalho do sistema de circuitos de processamento de origem para o sistema de circuitos de processamento de destino, o sistema de circuitos de processamento de origem sendo um doprimeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento, e o sistema de circuitos de processamento de destino sendo o outro do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento; o controlador de comutação sendo arranjado, durante a operação de transferência de passagem: (i) para fazer com que o sistema de circuitos de processamento de origem tome seu estado de arquitetura atual disponível ao sistema de circuitos de processamento de destino, o estado de arquitetura atual sendo aquele estado não disponível a partir da memória compartilhada, compartilhada entre o primeiro e o segundo sistemas de circuitos de processamento no momento em que a operação de transferência de passagem for iniciada, e que é necessário para que o sistema de circuitos de processamento de destino assuma o controle do desempenho da carga de trabalho do sistema de circuitos de processamento de origem com sucesso; e (ii) para mascarar a informação de configuração específica do processador predeterminada proveniente do dito pelo menos um sistema operacional, de modo que a transferência da carga de trabalho seja transparente ao dito pelo menos um sistema operacional.
[009] De acordo com a presente invenção, um aparelho de processamento de dados é provido com primeiro e segundo sistemas de circuitos de processamento, que são arquiteturalmente compatíveis um com o outro, mas microarquiteturalmente diferentes.Devido à compatibilidade arquitetural dos primeiro e segundo sistemas de circuitos de processamento, uma carga de trabalho que consiste não somente em uma ou mais aplicações, mas que também inclui pelo menos um sistema operacional para executar estas uma ou mais aplicações, pode ser movida entre o primeiro e o segundo sistemas de circuitos de processamento.Adicionalmente, em virtude de os primeiro e segundo sistemas de circuitos de processamento serem microarquiteturalmente diferentes, as características de desempenho (e, portanto, características de consumo de energia) dos primeiro e segundosistemas de circuitos de processamento diferem.
[0010] De acordo com a presente invenção, em qualquer momento, a carga de trabalho é realizada por um do primeiro e do segundo circuitos de processamento e um controlador de comutação é responsivo a um estímulo de transferência para realizar uma operação de transferência de passagem para transferir o desempenho da carga de trabalho entre os circuitos de processamento. Mediante recepção de um estímulo de transferência, qualquer dos dois circuitos de processamento que esteja realizando atualmente a carga de trabalho é considerado como o sistema de circuitos de processamento de origem, e o outro é considerado como o sistema de circuitos de processamento de destino. O controlador de comutação responsável por realizar a operação de transferência de passagem faz com que o estado de arquitetura atual do sistema de circuitos de processamento de origem tome-se disponível ao sistema de circuitos de processamento de destino e, adicionalmente, mascara informação de configuração específica do processador predeterminada proveniente do pelo menos um sistema operacional que faz parte da carga de trabalho, de modo que a transferência da carga de trabalho seja transparente a este sistema operacional.
[0011] Através do uso da presente invenção, é possível migrar a íntegra de uma carga de trabalho de um sistema de circuitos de processamento para o outro, ainda mascarando esta transferência a partir do sistema operacional, e ainda garantindo que o estado de arquitetura necessário que não está disponível na memória compartilhada no momento em que a operação de transferência de passagem for iniciada tome-se disponível ao sistema de circuitos de processamento de destino, de forma que ele possa tomar o controle do desempenho da carga de trabalho com sucesso.
[0012] 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, atécnica da presente invenção habilita que a carga de trabalho seja prontamente comutada entre os primeiro e segundo circuitos de processamento de uma maneira transparente ao sistema operacional, ainda garantindo que o circuito de processamento de destino tenha toda a informação necessária para habilitar que ele assuma o controle do desempenho da carga de trabalho com sucesso. 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, e descobriu-se que habilita que significativas economias de consumo de energia sejam alcançadas.
[0013] Em uma modalidade, o aparelho de processamento de dados compreende adicionalmente: sistema de circuitos de controle de energia para controlar independentemente a energia provida ao primeiro sistema de circuitos de processamento e ao segundo sistema de circuitos de processamento; em que, antes da ocorrência do estímulo de transferência, o sistema de circuitos de processamento de destino fica em uma condição de economia de energia e, durante a operação de transferência de passagem, o sistema de circuitos de controle de energia faz com que o sistema de circuitos de processamento de destino saia da condição de economia de energia antes de o sistema de circuitos de processamento de destino tomar o controle do desempenho da carga de trabalho. Através do uso de tal sistema de circuitos de controle de energia, é possível reduzir a energia consumida por qualquer sistema de circuitos de processamento que não realiza atualmente a carga de trabalho.
[0014] Em uma modalidade, seguinte à operação de transferência de passagem, o sistema de circuitos de controle de energia faz com que o sistema de circuitos de processamento de origem entre na condição de economia de energia. Isto pode ocorrer imediatamente seguinte à operação de transferência de passagem ou, em modalidades alternativas, o sistema de circuitos deprocessamento de origem pode ser arranjado para somente entrar na condição de economia de energia depois que algum período de tempo predeterminado tiver decorrido, o que pode permitir que dados ainda retidos pelo sistema de circuitos de processamento de origem tomem-se disponíveis ao sistema de circuitos de processamento de destino de uma maneira mais energeticamente eficiente e com desempenho superior.
[0015] Um problema adicional existente na tecnologia anterior, independente da maneira na qual uma comutação entre diferentes circuitos de processamento ocorre, é como transferir de uma maneira rápida e energeticamente eficiente a informação exigida para que esta comutação tenha sucesso. Em particular, o estado de arquitetura atual supramencionado precisa se tomar disponível ao sistema de circuitos de processamento de destino. Uma maneira em que isto pode ser alcançado será gravar todo este estado de arquitetura atual na memória compartilhada como parte da operação de transferência de passagem, de forma que, então, ele possa ser lido a partir da memória compartilhada pelo sistema de circuitos de processamento de destino. Da forma aqui usada, o termo "memória compartilhada" diz respeito à memória que pode ser diretamente acessada tanto pelo primeiro sistema de circuitos de processamento quanto pelo segundo sistema de circuitos de processamento, por exemplo, memória principal acoplada tanto no primeiro quanto no segundo sistemas de circuitos de processamento por meio de uma interconexão.
[0016] Entretanto, um problema que surge durante a gravação de todo o estado de arquitetura atual na memória compartilhada é que um processo como este não somente toma uma quantidade significativa de tempo, mas também consome energia significativa, o que pode afastar dramaticamente os benefícios em potencial que podem ser alcançados pela realização da comutação.
[0017] De acordo com uma modalidade, durante a operação detransferência, o controlador de comutação faz com que o sistema de circuitos de processamento de origem empregue um mecanismo acelerado para tomar seu estado de arquitetura atual disponível ao sistema de circuitos de processamento de destino sem referência pelo sistema de circuitos de processamento de destino à memória compartilhada a fim de obter o estado de arquitetura atual. Portanto, de acordo com tais modalidades, é provido um mecanismo que evita a exigência de que o estado de arquitetura seja roteado por meio da memória compartilhada a fim de que ele tome-se disponível ao sistema de circuitos de processamento de destino. Isto resulta, não somente em uma melhoria de desempenho durante a operação de transferência, mas, também, em uma redução no consumo de energia associado com a operação de transferência.
[0018] Em uma modalidade, pelo menos o sistema de circuitos de origem tem um cache associado, o aparelho de processamento de dados compreende adicionalmente sistema de circuitos de controle de farejamento, e o mecanismo acelerado compreende transferência do estado de arquitetura atual para o sistema de circuitos de processamento de destino através do uso do cache e do sistema de circuitos de controle de farejamento associados do sistema de circuitos de origem.
[0019] De acordo com esta técnica, o cache local do sistema de circuitos de processamento de origem é usado para armazenar o estado de arquitetura atual que deve se tomar disponível ao processador de destino. Então, este estado é marcado como compartilhável, o que permite que o estado seja farejado pelo sistema de circuitos de processamento de destino usando o sistema de circuitos de controle de farejamento. Portanto, em tais modalidades, o primeiro e o segundo sistemas de circuitos de processamento tomam-se coerentes em relação ao cache do hardware um do outro, isto reduzindo a quantidade de tempo, energia e complexidade do hardware envolvido na comutação do sistema de circuitos de processamento de origempara o sistema de circuitos de processamento de destino.
[0020] Em uma modalidade em particular, o mecanismo acelerado é um mecanismo salva e restaura, que faz com que o sistema de circuitos de processamento de origem armazene seu estado de arquitetura atual em seu cache associado, e faz com que o sistema de circuitos de processamento de destino realize uma operação de restaurar por meio da qual o sistema de circuitos de controle de farejamento recupera o estado de arquitetura atual a partir do cache associado do sistema de circuitos de processamento de origem e provê este estado de arquitetura atual recuperado ao sistema de circuitos de processamento de destino. O mecanismo salvar / armazenar provê uma técnica particularmente eficiente para salvar o estado de arquitetura no cache local do sistema de circuitos de origem, e para que, então, o sistema de circuitos de processamento de destino recupere este estado.
[0021] Uma abordagem como esta pode ser usada independente se o sistema de circuitos de processamento de destino tem seu próprio cache local associado ou não. Sempre que uma solicitação de um item do estado de arquitetura for recebida pelo sistema de circuitos de controle de farejamento, tanto diretamente a partir do sistema de circuitos de processamento de destino, quanto a partir de um cache local associado do sistema de circuitos de processamento de destino no evento de um cache não existir, então, ele determinará que o item de estado de arquitetura exigido está armazenado no cache local associado com o sistema de circuitos de origem e recuperará estes dados a partir do cache local do sistema de circuitos de origem para retomar ao sistema de circuitos de processamento de destino (tanto diretamente quanto por meio do cache associado do sistema de circuitos de processamento de destino, se presente).
[0022] Em uma modalidade em particular, o sistema de circuitos de processamento de destino tem um cache associado no qual o estado de arquitetura transferido obtido pelo sistema de circuitos de controle defarejamento é armazenado para referência pelo sistema de circuitos de processamento de destino.
[0023] Entretanto, a abordagem da coerência do cache do hardware supradescrita não é a única técnica que pode ser usada para prover o supramencionado mecanismo acelerado. Por exemplo, em uma modalidade alternativa, o mecanismo acelerado compreende um barramento dedicado entre o sistema de circuitos de processamento de origem e o sistema de circuitos de processamento de destino sobre o qual o sistema de circuitos de processamento de origem provê seu estado de arquitetura atual ao sistema de circuitos de processamento de destino. Embora, tipicamente, uma abordagem como esta tenha um custo de hardware mais alto que o emprego da abordagem da coerência do cache, ela proverá uma maneira ainda mais rápida de realizar a comutação, que pode ser benéfica em certas implementações.
[0024] O controlador de comutação pode tomar uma variedade de formas. Entretanto, em uma modalidade, o controlador de comutação compreende pelo menos software de virtualização que separa logicamente o pelo menos um sistema operacional do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento. Sabe-se usar máquinas virtuais para permitir que aplicações gravadas usando um conjunto em particular de instruções nativas sejam executadas no hardware com um diferente conjunto de instruções nativas. As aplicações são executadas em um ambiente de máquina virtual, em que as instruções das aplicações são nativas em relação à máquina virtual, mas a máquina virtual é implementada por software em execução no hardware com um diferente conjunto de instruções nativas. O software de virtualização provido pelo controlador de comutação da modalidade exposta pode ser visualizado como operando de uma maneira similar a um hipervisor em um ambiente de máquina virtual, já que ele provê separação entre a carga de trabalho e a plataforma de hardware fundamental. No contexto da presente invenção, osoftware de virtualização provê um eficiente mecanismo para transferir a carga de trabalho de um sistema de circuitos de processamento para um outro sistema de circuitos de processamento, ainda mascarando informação de configuração específica do processador proveniente do(s) sistema(s) operacional(is) que forma(m) esta carga de trabalho.
[0025] O estímulo de transferência pode ser gerado por uma variedade de motivos. Entretanto, em uma modalidade, sincronismo do estímulo de transferência é escolhido para aumentar a eficiência energética do aparelho de processamento de dados. Isto pode ser alcançado de uma variedade de maneiras. Por exemplo, os contadores de desempenho do sistema de circuitos de processamento podem ser configurados para contar os 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 sistema de circuitos de processamento de desempenho superior, 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 sistema de circuitos de processamento energeticamente eficiente, etc. Uma abordagem alternativa é para que aplicações sejam perfiladas e marcadas como 'grande', 'pequeno' ou 'grande / pequeno', 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 (aqui, o termo "grande" diz respeito a um sistema de circuitos de processamento de desempenho superior e o termo "pequeno" diz respeito a um sistema de circuitos de processamento mais energeticamente eficiente).
[0026] O estado de arquitetura que é exigido para que o sistema de circuitos de processamento de destino assuma o controle do desempenho da carga de trabalho do sistema de circuitos de processamento de origem comsucesso pode tomar uma variedade de formas. Entretanto, em uma modalidade, o estado de arquitetura compreende pelo menos o valor atual de um ou mais registros de uso especial do sistema de circuitos de processamento de origem, incluindo um valor de contador do programa. Além do valor de contador do programa, várias outras informações podem ser armazenadas nos registros de uso especial. 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 CP 15 na arquitetura ARM) que mantém bits para alterar extremidade dos dados, ativar ou desativar a MMU, ativar ou desativar caches de dados / instrução, etc. Outros registros de uso especial em CP15 armazenam endereço de exceção e informação de estado.
[0027] Em uma modalidade, o estado de arquitetura compreende adicionalmente os valores atuais armazenados em um arquivo de registro de arquitetura do sistema de circuitos de processamento de origem. Como será entendido pelos versados na técnica, o arquivo de registro de arquitetura contém registros que serão referidos pelas instruções executadas enquanto aplicações estão em execução, estes registros mantendo operação de origem para computações, e provendo locais nos quais os resultados destas computações são armazenados.
[0028] Em uma modalidade, pelo menos um do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento compreende uma única unidade de processamento. Adicionalmente, em uma modalidade, pelo menos um do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento compreende um agrupamento de unidades de processamento com a mesma microarquitetura. Em uma modalidade em particular, oprimeiro sistema de circuitos de processamento pode compreender um agrupamento de unidades de processamento com a mesma microarquitetura, enquanto o segundo sistema de circuitos de processamento compreende uma única unidade de processamento (com uma microarquitetura diferente da microarquitetura das unidades de processamento no agrupamento que forma o primeiro sistema de circuitos de processamento).
[0029] A condição de economia de energia na qual o sistema de circuitos de controle de energia pode colocar seletivamente os primeiro e segundo circuitos de processamento pode tomar uma variedade de formas. Em uma modalidade, a condição de economia de energia é uma de: uma condição desligada; uma condição de retenção de dados parcial / completa; uma condição adormecida; ou 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.
[0030] Há inúmeras maneiras nas quais os primeiro e segundo circuitos de processamento podem ser arranjados para serem microarquiteturalmente diferentes. Em uma modalidade, o primeiro sistema de circuitos de processamento e o segundo sistema de circuitos de processamento são microarquiteturalmente diferentes por ter pelo menos um de: 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 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 altemativamente, um circuito de processamento pode ter mais recursos de execução que o outro, por exemplo, mais unidades lógicas aritméticas(ALUs), que, novamente, aumentarão 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.
[0031] Um problema adicional que pode surgir durante o uso de circuitos de processamento de alto desempenho, por exemplo, em execução em frequências de GHz, é que tais processadores estão se aproximando, e algumas vezes excedendo, o limite termal no qual eles foram desenhados para operar. Técnicas conhecidas para buscar abordar estes problemas podem envolver o circuito de processamento ser colocado em uma condição de baixa energia para reduzir a saída de calor, que pode incluir regulação do relógio e/ou redução da voltagem, e, ainda potencialmente, desativar o circuito de processamento completamente por um período de tempo. Entretanto, quando se adota a técnica de modalidades da presente invenção, é possível implementar uma abordagem alternativa para evitar que o limite termal seja excedido. Em particular, em uma modalidade, o sistema de circuitos de processamento de origem tem desempenho superior ao sistema de circuitos de processamento de destino, e o aparelho de processamento de dados compreende adicionalmente sistema de circuitos de monitoramento termal para monitorar uma saída termal do sistema de circuitos de processamento de origem e para disparar o dito estímulo de transferência quando a dita saída termal alcançar um nível predeterminado. De acordo com tais técnicas, a íntegra da carga de trabalho pode ser migrada do sistema de circuitos de processamento de desempenho superior para o sistema de circuitos de processamento de desempenho inferior, depois do que, menos calor será gerado, e permite-se que o sistema de circuitos de processamento de origem resfrie. Portanto, o pacote que contém os dois circuitos de processamento pode resfriar enquanto execução contínua do programa pode ocorrer, apesarde ser em rendimento inferior.
[0032] O aparelho de processamento de dados pode ser arranjado de uma variedade de maneiras.Entretanto, em uma modalidade, o primeiro sistema de circuitos de processamento e o segundo sistema de circuitos de processamento ficam residentes em um único circuito integrado.
[0033] Visualizada a partir de um segundo aspecto, a presente invenção provê um aparelho de processamento de dados que compreende: primeiro meio de processamento para realizar operações de processamento de dados; segundo meio de processamento para realizar operações de processamento de dados; o primeiro meio de processamento sendo arquiteturalmente compatível com o segundo meio de processamento, de modo que uma carga de trabalho a ser realizada pelo aparelho de processamento de dados possa ser realizada tanto no primeiro meio de processamento quanto no segundo meio de processamento, a dita carga de trabalho compreendendo pelo menos uma aplicação e pelo menos um sistema operacional para executar a dita pelo menos uma aplicação; o primeiro meio de processamento sendo microarquiteturalmente diferente do segundo meio de processamento, de modo que o desempenho do primeiro meio de processamento seja diferente do desempenho do segundo meio de processamento; o primeiro e o segundo dispositivos de processamento sendo configurados de modo que a carga de trabalho seja realizada por um do primeiro meio de processamento e do segundo meio de processamento em qualquer momento; um meio de controle de transferência, responsivo a um estímulo de transferência, para realizar uma operação de transferência de passagem para transferir o desempenho da carga de trabalho do meio de processamento de origem para o meio de processamento de destino, o meio de processamento de origem sendo um do primeiro meio de processamento e do segundo meio de processamento, e o meio de processamento de destino sendo o outro do primeiro meio de processamento e do segundo meio deprocessamento; o meio de controle de transferência, durante a operação de transferência de passagem: (i) para fazer com que o meio de processamento de origem tome seu estado de arquitetura atual disponível ao meio de processamento de destino, o estado de arquitetura atual sendo aquele estado não disponível a partir do dispositivo de memória compartilhada, compartilhada entre o primeiro e o segundo dispositivos de processamento no momento em que a operação de transferência de passagem for iniciada, e que é necessário para que o meio de processamento de destino assuma o controle do desempenho da carga de trabalho do meio de processamento de origem com sucesso; e (ii) para mascarar a informação de configuração específica do processador predeterminada proveniente do dito pelo menos um sistema operacional, de modo que a transferência da carga de trabalho seja transparente ao dito pelo menos um sistema operacional.
[0034] Visualizada a partir de um terceiro aspecto, a presente invenção provê um método de operação de um aparelho de processamento de dados com primeiro sistema de circuitos de processamento para realizar operações de processamento de dados e segundo sistema de circuitos de processamento para realizar operações de processamento de dados, o primeiro sistema de circuitos de processamento sendo arquiteturalmente compatível com o segundo sistema de circuitos de processamento, de modo que uma carga de trabalho a ser realizada pelo aparelho de processamento de dados possa ser realizada tanto no primeiro sistema de circuitos de processamento quanto no segundo sistema de circuitos de processamento, a dita carga de trabalho compreendendo pelo menos uma aplicação e pelo menos um sistema operacional para executar a dita pelo menos uma aplicação, e o primeiro sistema de circuitos de processamento sendo microarquiteturalmente diferente do segundo sistema de circuitos de processamento, de modo que o desempenho do primeiro sistema de circuitos de processamento seja diferente do desempenho do segundo sistema de circuitos de processamento, o métodocompreendendo as etapas de: realizar, em qualquer momento, a carga de trabalho em um do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento; realizar, em resposta a um estímulo de transferência, uma operação de transferência de passagem para transferir o desempenho da carga de trabalho do sistema de circuitos de processamento de origem para o sistema de circuitos de processamento de destino, o sistema de circuitos de processamento de origem sendo um do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento, e o sistema de circuitos de processamento de destino sendo o outro do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento; durante a operação de transferência de passagem: (i) fazer com que o sistema de circuitos de processamento de origem tome seu estado de arquitetura atual disponível ao sistema de circuitos de processamento de destino, o estado de arquitetura atual sendo aquele estado não disponível a partir da memória compartilhada, compartilhada entre o primeiro e o segundo sistemas de circuitos de processamento no momento em que a operação de transferência de passagem for iniciada, e que é necessário para que o sistema de circuitos de processamento de destino assuma o controle do desempenho da carga de trabalho do sistema de circuitos de processamento de origem com sucesso; e (ii) mascarar a informação de configuração específica do processador predeterminada proveniente do dito pelo menos um sistema operacional, de modo que a transferência da carga de trabalho seja transparente ao dito pelo menos um sistema operacional.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[0035] 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 deprocessamento 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 é realizada pelo aparelho de processamento de dados da plataforma de hardware em particular no aparelho de processamento de dados que é usado para realizar 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 de arquitetura atual do sistema 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 de arquitetura 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 de arquitetura atual do sistema de circuitos de processamento de origem para o sistema de circuitos de processamento de destino durante a operação de transferência de acordo com uma modalidade; as figuras 6A até 61 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ênciaenergé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, utilizados em uma modalidade; e a figura 9 é um gráfico que mostra a variação na energia consumida pelo sistema de processamento de dados as 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
[0036] 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 sistema de circuitos de processamento 0 10 e o sistema de circuitos de processamento 1 50), mas com estas diferentes instâncias de circuito de processamento tendo diferentes microarquiteturas. Em particular, o sistema de circuitos de processamento 10 é arranjado para operar com desempenho superior ao sistema de circuitos de processamento 50, mas com a contrapartida que o sistema de circuitos de processamento 10 será menos energeticamente eficiente que o sistema 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.
[0037] Cada circuito de processamento pode incluir uma única unidade de processamento (também aqui referido como um núcleo processador) ou, altemativamente, pelo menos uma das instâncias de circuitode processamento pode, ela mesma, compreender um agrupamento de unidades de processamento com a mesma microarquitetura.
[0038] 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.
[0039] 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 distintos nível 1 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.
[0040] Na modalidade mostrada na figura 1, o sistema 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ível2 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 sistema de circuitos de processamento 10 quanto o sistema de circuitos de processamento 50.
[0041] 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 sistema de circuitos de processamento 10 e a estrutura de cache provida no sistema de circuitos de processamento 50. Nos 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 sistema de circuitos de processamento 10 e o cache nível 1 60 do sistema de circuitos de processamento 50. Entretanto, se o cache nível 2 35 for arranjado como um cache nível exclusivo 2, 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 a coerência do cache entre os caches do sistema de circuitos de processamento 10 e o cache 60 do sistema de circuitos de processamento 50.
[0042] De acordo com uma modalidade, somente um do sistema de circuitos de processamento 10 e do sistema de circuitos de processamento 50 estará processamento 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 sistema de circuitos de processamento 10 quanto pelo sistema de circuitos de processamento 50.
[0043] Da forma mostrada na figura 1, o sistema de circuitos de controle de energia 65 é provido para prover seletiva e independentemente energia ao sistema de circuitos de processamento 10 e ao sistema 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 é, tipicamente, o circuito de processamento que desempenha atualmente a carga de trabalho (o sistema de circuitos de processamento de origem) e o outro circuito de processamento (o sistema de circuitos de processamento de destino) ficarão 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ênciaem 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.
[0044] 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, uma condição de retenção de dados parcial / completa, uma condição adormecida ou 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.
[0045] 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 realizando 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.
[0046] 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 neutralizará 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é algumnível significativo.
[0047] Em uma modalidade, tais benefícios são, pelo menos em parte, alcançados pelo arranjo do sistema de circuitos de processamento 10 para ser arquiteturalmente compatível com o sistema de circuitos de processamento 50. Isto garante que a carga de trabalho possa ser migrada de um sistema 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 sistema de circuitos de processamento 10 ou no sistema de circuitos de processamento 50.
[0048] 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, 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 recursos de hardware, software embarcado e/ou software, mas, em uma modalidade, inclui software similar, em natureza, ao software hipervisor encontrado em máquinas virtuais para habilitar aplicações gravadas em um conjunto de instruções nativas a ser executado em uma plataforma dehardware 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 a partir 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 CPI5 e de um registro tipo cache CP15.
[0049] Então, em uma modalidade como esta, o controlador de comutação precisa meramente garantir que qualquer estado de arquitetura 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, tome-se disponível ao circuito de processamento de destino a fim de habilitar que o circuito de destino a ficar em uma posição assuma o controle do desempenho da carga de trabalho com sucesso. Usando o exemplo supradescrito, tipicamente, tal estado de arquitetura compreenderá os valores atuais armazenados no arquivo de registro de arquitetura do sistema de circuitos de processamento de origem, juntamente com os valores atuais de um ou mais registros de uso especial do sistema de circuitos de processamento de origem. Devido à compatibilidade arquitetural entre os circuitos de processamento 10, 50, se este estado de arquitetura 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.
[0050] 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 deprocessamento 10, 50 são microarquiteturalmente diferentes um do outro, de modo 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á 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 sistema 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 do 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.
[0051] 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 de passagem para 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, osistema 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 seja 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 sistema 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 sistema 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 sistema de circuitos de processamento energeticamente eficiente, etc.
[0052] 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 termais 90 para monitorar a temperatura do sistema de processamento de dados durante a operação. Pode haver o caso em que modernos circuitos de processamento de alto desempenho, por exemplo, aqueles em execução em frequências de GHz, algumas vezes alcançam, ou excedem, o limite termal no qual eles foram desenhados para operar. Pelo usode tais sensores termais 90, pode ser detectado quando tais limites termais 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 termais do dispositivo estiverem sendo alcançados proporcionará um subsequente resfriamento do dispositivo, embora ainda permitindo que a execução contínua do programa ocorra, apesar de em rendimento inferior.
[0053] 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.
[0054] 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 reinicio 205 no processador de destino. Seguinte a tal energização e reinicio, 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 sistema de circuitos de processamento de origem que armazena no seu cache local qualquer um de seu estado de arquitetura atual que não está disponível a partir da memória compartilhada no momento em que a operação de transferência de passagem for iniciada, e que é necessário para que o processador de destino assuma o controle do desempenho da carga de trabalho com sucesso.
[0055] 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 de arquitetura 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 sistema de circuitos de processamento dedestino iniciar uma sequência de acessos que são interceptados pela unidade de controle de farejamento 75 na interconexão 70, e que fazem com que a cópia em cache do estado de arquitetura no cache local do processador de origem seja recuperada e retomada ao processador de destino.
[0056] Então, seguinte à etapa 230, o processador de destino fica em uma posição para tomar o controle do processamento da carga de trabalho e, desta maneira, operação normal começa na etapa 235.
[0057] 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 esvaziar 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 que usa 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 quando comparado com a recuperação destes dados a partir da memória compartilhada 80.
[0058] 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.
[0059] 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 de arquitetura que precisa ser armazenado do sistema de circuitos de processamento de origem 300 no cache local 330 consiste nos conteúdos de um arquivo de registro 310 referenciado 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 sistema de circuitos de processamento de destino. Os conteúdos dos registros de uso especial 320 incluirão, por exemplo, um valor de contador doprograma 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 o modo do processador, a interrupção do mascaramento, o estado de execução e indicadores. Outros registros de uso especial incluem controle arquitetural (o registro de controle do sistema CP 15 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 CP 15 armazenam endereço de exceção e informação de estado.
[0060] 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 sistema 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 CP 15 (que será diferente para cada circuito de processamento) ou os conteúdos do registro tipo cache CP 15 (que dependerá 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, retomará 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", dessemodo, fazendo com que a configuração de hardware real seja oculta do sistema operacional 115 pelo virtualizador 120.
[0061] 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 sistema 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 de farejamento este estado por meio da unidade de controle de farejamento 75.
[0062] Então, a operação de restaurar subsequentemente realizada no processador de destino é ilustrada esquematicamente na figura 4B. Em particular, o sistema 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 de arquitetura 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 de arquitetura 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 em que o estado de arquitetura em cache é retomado 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 de arquitetura tenham sido recuperados por meio de 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 foi concluída, então, o sistema de circuitos de processamento de destino tem toda ainformação exigida para habilitar que ele assuma o controle do tratamento da carga de trabalho com sucesso.
[0063] 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 a partir 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.
[0064] 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 uma com a outra, a fim de reduzir a quantidade de tempo, a energia e a complexidade do hardware envolvido na transferência do estado de arquitetura 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 de farejamento 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 seriaapropriado comutar a carga de trabalho a fim de buscar realizar benefícios ao consumo de energia.
[0065] Entretanto, embora a técnica de uso da coerência de cache supradescrita proveja um mecanismo acelerado para tomar o estado de arquitetura atual disponível ao processador de destino sem roteador do estado de arquitetura 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 sistema de circuitos de processamento de origem 300 e o sistema de circuitos de processamento de destino 350 a fim de permitir que o estado de arquitetura seja transferido durante a operação de transferência de passagem. 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 do 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.
[0066] As figuras 6A até 61 ilustram esquematicamente uma série de etapas que são realizadas a fim de transferir o desempenho de uma carga de trabalho do sistema de circuitos de processamento de origem 300 para o sistema de circuitos de processamento de destino 350. O sistema de circuitos de processamento de origem 300 é qualquer um dos circuitos de processamento 10, 50 que está realizando a carga de trabalho antes da transferência, com o sistema de circuitos de processamento de destino sendo o outro dos circuitos de processamento 10, 50.
[0067] A figura 6A mostra o sistema em um estado inicial no qual osistema 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 sistema de circuitos de processamento de destino 350 está 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, que inclui as aplicações 105, 110 e um sistema operacional 115 para executar as aplicações 105, 110, é abstraída da plataforma de hardware do sistema de circuitos de processamento de origem 300 pelo virtualizador 120. Ainda desempenhando a carga de trabalho 100, o sistema de circuitos de processamento de origem 300 mantém o estado de arquitetura 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.
[0068] 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 termal pelo sensor termal 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 sistema de circuitos de processamento de destino 350, a fim de colocar o sistema de circuitos de processamento de destino 350 em um estado energizado.
[0069] Na figura 6C, o sistema de circuitos de processamento de destino 350 inicia a execução do virtualizador 120. O virtualizador 120 controla o sistema de circuitos de processamento de destino 350 parainvalidar 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 sistema de circuitos de processamento de destino 350. Enquanto o cache de destino 420 está sendo invalidado, o sistema de circuitos de processamento de origem 350 continua a realizar a carga de trabalho 100. Quando a invalidação do cache de destino 420 estiver concluída, o virtualizador 120 controla o sistema de circuitos de processamento de destino 350 para sinalizar ao sistema 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 sistema de circuitos de processamento de origem 300 até que o sistema de circuitos de processamento de destino 350 esteja pronto para a operação de transferência de passagem, o impacto no desempenho da transferência pode ser reduzido.
[0070] No próximo estágio, mostrado na figura 6D, o sistema de circuitos de processamento de origem 300 para de desempenar a carga de trabalho 100. Durante este estágio, nem o sistema de circuitos de processamento de origem 300 nem o sistema de circuitos de processamento de destino 350 realizam a carga de trabalho 100. Uma cópia do estado de arquitetura 400 é transferida do sistema de circuitos de processamento de origem 300 para o sistema de circuitos de processamento de destino 350. Por exemplo, o estado de arquitetura 400 pode ser salvo no cache de origem 410 e restaurado no sistema 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 de arquitetura 400 contém toda a informação de estado exigida para que o sistema de circuitos de processamento de destino 350 realize a carga de trabalho 100, diferente da informação já presente na memória compartilhada 80.
[0071] Tendo transferido o estado de arquitetura 400 para o sistema de circuitos de processamento de destino 350, o sistema de circuitos deprocessamento de origem 300 é colocado no estado de economia de energia pelo sistema 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 sistema de circuitos de processamento de destino 350 começa a desempenhar a carga de trabalho 100 usando o estado de arquitetura transferido 400.
[0072] Quando o sistema 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 armazenar os dados do farejamento no cache de origem 410 e recuperar os dados em nome do sistema de circuitos de processamento de destino 350. Quando o sistema de circuitos de processamento de destino 350 solicitar dados que não estão presentes no cache de destino 420, o sistema 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 retoma ao sistema 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 retomados ao sistema 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 o acesso à 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 sistema de circuitos de processamento de destino 350.
[0073] 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 sistema 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 farejamento total) cair abaixo de um nível limite predeterminado depois que o sistema 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 sistema 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 sistema 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 sistema 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 sistema de circuitosde 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 sistema 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.
[0074] 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.
[0075] 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 sistema de circuitos de processamento de destino 350 pela busca dos dados solicitados a partir da memória compartilhada 80 e retomo dos dados buscados ao sistema de circuitos de processamento de destino 350, em que os dados buscados podem ser armazenados em cache.
[0076] 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).
[0077] Na figura 61, então, o cache de origem 410 é desligado pelo controlador de energia 65 de forma que o sistema de circuitos de processamento de origem 300 fique integralmente no estado de economia de energia. O sistema de circuitos de processamento de destino 350 continua adesempenhar 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é 61 podem ser usadas para recomutar o desempenho da carga de trabalho ao primeiro processador (neste caso, quais dos circuitos de processamento 10, 50 são o "sistema de circuitos de processamento de origem" e o "sistema de circuitos de processamento de destino" será o inverso).
[0078] Na modalidade das figuras 6A até 61, controle de energia independente no cache 410 e no sistema de circuitos de processamento de origem 300 está disponível, de forma que o sistema de circuitos de processamento de origem 300, diferente do cache de origem 410, possa ser desligado uma vez que o sistema de circuitos de processamento de destino 350 iniciou o desempenho da carga de trabalho (veja a figura 6E), embora somente o cache 410 do sistema 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 61. Esta abordagem pode ser útil para economizar energia, especialmente quando o sistema de circuitos de processamento de origem 300 for o circuito de processamento "grande" 10.
[0079] Entretanto, também é possível continuar a energizar a íntegra do sistema de circuitos de processamento de origem 300 durante o período de farejamento e, então, colocar o sistema de circuitos de processamento de origem 300, como um todo, no estado de economia de energia da figura 61, 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 com o núcleo processador de origem para poder ser energizado independentemente do núcleo processador de origem. Estaabordagem 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.
[0080] 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 sistema de circuitos de processamento de destino 350 quando ele começar a desempenhar a carga de trabalho 100. Por exemplo, o sistema 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 sistema de circuitos de processamento de destino 350 depois da transferência. Em um caso como este, um controlador de neutralização de farejamento pode disparar o virtualizador 120 e o sistema de circuitos de controle de farejamento 75 para neutralizar 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é 61 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 sistema de circuitos de processamento de destino 350, pode-se economizar energia pela colocação do cache de origem 410 e do sistema 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 neutralização de farejamento pode ser parte do virtualizador 120, ou pode ser implementado como software embarcado em execução no sistema de circuitos de processamento de origem 300. O controlador de neutralizaçã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 neutralizar o farejamento do cache de origem 410 se uma transferência ocorrer quando uma aplicação tiver finalizado.
[0081] A figura 7 é um gráfico no qual a linha 600 ilustra como o consumo de energia varia com o desempenho. Para 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.
[0082] 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 davoltagem 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 modo 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.
[0083] 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.
[0084] 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 umencadeamento 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.
[0085] 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 tomá-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 seuma exceção de processamento ocorrer).
[0086] O estágio de renomeação 875 é provido para mapear especificadores de registro, que são incluídos em instruções de programa, e para 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 dos mesmos registros arquiteturais especificados 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 das 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.
[0087] 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 odesempenho; 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 maior 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, então, no encadeamento de alto desempenho 850, as instruções MAC podem ser executadas pelo encadeamento MAC 894, enquanto (sujeito 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 queexecução fora de ordem pode melhorar o desempenho do processamento.
[0088] Estes e ainda outros exemplos de diferenças microarquiteturais resultam no encadeamento 850 provendo processamento de desempenho superior que o 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).
[0089] 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.
[0090] No ponto A da figura 9, a carga de trabalho 100 está sendo desempenhada no sistema 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 sistema de circuitos de processamento grande 10. Então, o consumo de energia aumenta e permanece alto no ponto C, enquanto o sistema 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, daforma 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 retomo para o processamento de baixa intensidade é desejado) para disparar uma transferência do desempenho da carga de trabalho de volta ao sistema de circuitos de processamento pequeno 50.
[0091] Quando o sistema de circuitos de processamento pequeno 50 iniciar o processamento da carga de trabalho de processamento, a maior parte do sistema de circuitos de processamento grande fica no estado de economia de energia, mas o cache do sistema de circuitos de processamento grande 10 permanece energizado durante o período de farejamento (ponto F na figura 9) para habilitar que os dados no cache sejam recuperados para o sistema de circuitos de processamento pequeno 50. Portanto, o cache do sistema 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 sistema de circuitos de processamento pequeno 50 foi energizado. No fim do período de farejamento, o cache do sistema de circuitos de processamento grande 10 é desligado e, no ponto G, o consumo de energia retoma para o baixo nível quando somente o sistema de circuitos de processamento pequeno 50 estiver ativo.
[0092] Da forma supramencionada, na figura 9, o consumo de energia é mais alto durante o período de farejamento no ponto F do que no ponto G, devido ao cache do sistema 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 sistema de circuitos de processamento pequeno 50 podem ser farejados em nome do sistema de circuitos de processamento grande 10 pela unidade de controle de farejamento 75. O período de farejamento para a transição pequeno paragrande não foi indicado na figura 9 em virtude de a energia consumida por deixar o cache do sistema 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 sistema 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 sistema de circuitos de processamento pequeno 50 ser energizado não é visível no gráfico da figura 9.
[0093] As modalidades supradescritas descrevem um sistema que contém duas ou mais instâncias arquiteturalmente compatíveis do processador com microarquiteturas otimizadas para eficiência energética ou desempenho. O estado de arquitetura 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.
[0094] 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 envolvido na comutação do estado de arquitetura 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 de modalidades podem ser usadas.
[0095] Tais sistemas podem ser usados em uma variedade de situações em que a eficiência energética é importante tanto para vida útil da bateria e/ou gerenciamento termal, e a dispersão do desempenho é de modoque 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.
[0096] 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 de arquitetura exigido pode ser movido entre os processadores sem precisar envolver o sistema operacional, de modo que, então, ele fique transparente ao sistema operacional e às aplicações em execução no sistema operacional em relação a qual processador este sistema operacional e aplicações estão em execução.
[0097] Durante o uso de instâncias do processador arquiteturalmente compatíveis descritas nas modalidades expostas, a quantidade total de estado de arquitetura que precisa ser transferida pode caber facilmente em um cache de dados e, já que os modernos sistemas de processamento frequentemente implementam coerência de cache, então, pelo armazenamento do estado de arquitetura como comutado no cache de dados, o processador de destino pode farejar rapidamente este estado de uma maneira energeticamente eficiente fazendo uso das estruturas de circuito existentes.
[0098] Em uma modalidade descrita, o mecanismo de comutação é usado para garantir que os limites termais para o sistema de processamento de dados não sejam violados. Em particular, quando os limites termais 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.
[0099] Embora uma modalidade em particular tenha sido aquidescrita, 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 (19)

1.Aparelho de processamento de dados, compreendendo: primeiro sistema de circuitos de processamento (10) para realizar operações de processamento de dados; segundo sistema de circuitos de processamento (50) para realizar operações de processamento de dados; o primeiro sistema de circuitos de processamento sendo arquiteturalmente compatível com o segundo sistema de circuitos de processamento, de modo que uma carga de trabalho (100) a ser realizada pelo aparelho de processamento de dados possa ser realizada tanto no primeiro sistema de circuitos de processamento quanto no segundo sistema de circuitos de processamento, a dita carga de trabalho compreendendo pelo menos uma aplicação (105, 110) e pelo menos um sistema operacional (115) para executar a dita pelo menos uma aplicação; os primeiro e segundo sistemas de circuitos de processamento sendo configurados de modo que a carga de trabalho seja realizada por um do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento em qualquer momento; um controlador de comutação (120), responsivo a um estímulo de transferência, para realizar uma operação de transferência de passagem para transferir o desempenho da carga de trabalho do sistema de circuitos de processamento de origem (300) para o sistema de circuitos de processamento de destino (350), o sistema de circuitos de processamento de origem sendo um do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento, e o sistema de circuitos de processamento de destino sendo o outro do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento; caracterizado pelo fato de que o primeiro sistema de circuitos de processamento sendo microarquiteturalmente diferente do segundo sistema de circuitos de processamento, de modo que o desempenho do primeiro sistema de circuitos de processamento seja diferente do desempenho do segundo sistema de circuitos de processamento; e o controlador de comutação que compreende pelo menos software de virtualização que separa logicamente o pelo menos um sistema operacional do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento; e o controlador de comutação sendo arranjado, durante a operação de transferência de passagem: (i)para fazer com que o sistema de circuitos de processamento de origem tome seu estado de arquitetura atual disponível ao sistema de circuitos de processamento de destino, o estado de arquitetura atual sendo aquele estado não disponível a partir da memória compartilhada, compartilhada entre o primeiro e o segundo sistemas de circuitos de processamento no momento em que a operação de transferência de passagem for iniciada, e que é necessário para que o sistema de circuitos de processamento de destino assuma o controle do desempenho da carga de trabalho do sistema de circuitos de processamento de origem com sucesso; e (ii)para aplicar o software de virtualização para mascarar informação de configuração específica do processador predeterminada proveniente do dito pelo menos um sistema operacional de modo que a transferência da carga de trabalho seja transparente ao dito pelo menos um sistema operacional.
2.Aparelho de processamento de dados de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: sistema de circuitos de controle de energia (65) para controlar independentemente a energia provida ao primeiro sistema de circuitos de processamento (10) e ao segundo sistema de circuitos de processamento (50); em que antes da ocorrência do estímulo de transferência o sistema de circuitos de processamento de destino (350) fica em uma condição de economia de energia e durante a operação de transferência de passagem o sistema de circuitos de controle de energia faz com que o sistema de circuitos de processamento de destino saia da condição de economia de energia antes de o sistema de circuitos de processamento de destino tomar o controle do desempenho da carga de trabalho.
3.Aparelho de processamento de dados de acordo com a reivindicação 2, caracterizado pelo fato de que seguindo a operação de transferência de passagem o sistema de circuitos de controle de energia (65) faz com que o sistema de circuitos de processamento de origem (300) entre na condição de economia de energia.
4.Aparelho de processamento de dados de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que durante a operação de transferência o controlador de comutação (120) faz com que o sistema de circuitos de processamento de origem (300) empregue um mecanismo acelerado para tomar seu estado de arquitetura atual disponível ao sistema de circuitos de processamento de destino (350) sem referência pelo sistema de circuitos de processamento de destino à memória compartilhada a fim de obter o estado de arquitetura atual.
5.Aparelho de processamento de dados de acordo com a reivindicação 4, caracterizado pelo fato de que: pelo menos o sistema de circuitos de origem tem um cache associado (330); o aparelho de processamento de dados compreende adicionalmente sistema de circuitos de controle de farejamento (75); e o mecanismo acelerado compreende transferência do estado de arquitetura atual para o sistema de circuitos de processamento de destino (350) através do uso do cache e do sistema de circuitos de controle defarejamento (75) associados do sistema de circuitos de origem.
6.Aparelho de processamento de dados de acordo com a reivindicação 5, caracterizado pelo fato de que o mecanismo acelerado é um mecanismo salva e restaura que faz com que o sistema de circuitos de processamento de origem (300) armazene seu estado de arquitetura atual em seu cache associado (330) e faz com que o sistema de circuitos de processamento de destino (350) realize uma operação de restaurar por meio da qual o sistema de circuitos de controle de farejamento (75) recupera o estado de arquitetura atual a partir do cache associado do sistema de circuitos de processamento de origem e provê este estado de arquitetura atual recuperado ao sistema de circuitos de processamento de destino.
7.Aparelho de processamento de dados de acordo com a reivindicação 5 ou 6, caracterizado pelo fato de que o sistema de circuitos de processamento de destino (350) tem um cache associado (420) no qual o estado de arquitetura transferido obtido pelo sistema de circuitos de controle de farejamento (75) é armazenado para referência pelo sistema de circuitos de processamento de destino.
8.Aparelho de processamento de dados de acordo com qualquer uma das reivindicações 4 até 7, caracterizado pelo fato de que o mecanismo acelerado compreende um barramento dedicado (380) entre o sistema de circuitos de processamento de origem (300) e o sistema de circuitos de processamento de destino (350) sobre o qual o sistema de circuitos de processamento de origem provê seu estado de arquitetura atual ao sistema 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 sincronismo do estímulo de transferência é escolhido para aumentar a eficiência de energia do aparelho de processamento de dados.
10.Aparelho de processamento de dados de acordo comqualquer uma das reivindicações 1 a 9, caracterizado pelo fato de que o dito estado de arquitetura compreende pelo menos o valor atual de um ou mais registros de propósito especial do sistema de circuitos de processamento de origem (300), incluindo um valor de contagem do programa.
11.Aparelho de processamento de dados de acordo com a reivindicação 10, caracterizado pelo fato de que o dito estado de arquitetura compreende adicionalmente os valores atuais armazenados em um arquivo de registro de arquitetura do sistema de circuitos de processamento de origem (300).
12.Aparelho de processamento de dados de acordo com qualquer uma das reivindicações 1 a 11, caracterizado pelo fato de que pelo menos um do primeiro sistema de circuitos de processamento (10) e do segundo sistema de circuitos de processamento (50) compreende uma única unidade de processamento.
13.Aparelho de processamento de dados de acordo com qualquer uma das reivindicações 1 a 12, caracterizado pelo fato de que pelo menos um do primeiro sistema de circuitos de processamento (10) e do segundo sistema de circuitos de processamento (50) compreende um agrupamento de unidades de processamento com a mesma microarquitetura.
14.Aparelho de processamento de dados de acordo com qualquer uma das reivindicações 1 a 13, caracterizado pelo fato de que a dita condição de economia de energia é uma de: uma condição desligada; uma condição de retenção de dados parcial / completa; uma condição adormecida; ou uma condição ociosa.
15.Aparelho de processamento de dados de acordo com qualquer uma das reivindicações 1 a 14, caracterizado pelo fato de que o primeiro sistema de circuitos de processamento (10) e o segundo sistema decircuitos de processamento (50) são microarquiteturalmente diferentes por ter pelo menos um de:diferentes comprimentos de dutos de execução; oudiferentes recursos de execução.
16.Aparelho de processamento de dados de acordo com qualquer uma das reivindicações 1 a 15, caracterizado pelo fato de que o sistema de circuitos de processamento de origem (300) tem desempenho superior ao sistema de circuitos de processamento de destino (350), e o aparelho de processamento de dados compreende adicionalmente: sistema de circuitos de monitoramento termal (90) para monitorar uma saída termal do sistema de circuitos de processamento de origem, e para disparar o dito estímulo de transferência quando a dita saída termal alcançar um nível predeterminado.
17.Aparelho de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 16, caracterizado pelo fato de que o primeiro sistema de circuitos de processamento (10) e o segundo sistema de circuitos de processamento (50) ficam encontram-se em um único circuito integrado.
18.Aparelho de processamento de dados, compreendendo: primeiro meio de processamento (10) para realizar operações de processamento de dados; segundo meio de processamento (50) para realizar operações de processamento de dados; o primeiro meio de processamento sendo arquiteturalmente compatível com o segundo meio de processamento, de modo que uma carga de trabalho (100) a ser realizada pelo aparelho de processamento de dados possa ser realizada tanto no primeiro meio de processamento quanto no segundo meio de processamento, a dita carga de trabalho compreendendo pelo menos uma aplicação (105, 110) e pelo menos um sistema operacional (115)para executar a dita pelo menos uma aplicação; o primeiro e o segundo meio de processamento sendo configurados de modo que a carga de trabalho seja realizada por um do primeiro meio de processamento e do segundo meio de processamento em qualquer momento; um meio de controle de transferência (120), responsivo a um estímulo de transferência, para realizar uma operação de transferência de passagem para transferir o desempenho da carga de trabalho do meio de processamento de origem (300) para o meio de processamento de destino (350), o meio de processamento de origem sendo um do primeiro meio de processamento e do segundo meio de processamento, e o meio de processamento de destino sendo o outro do primeiro meio de processamento e do segundo meio de processamento; caracterizado pelo fato de que: o primeiro meio de processamento sendo microarquiteturalmente diferente do segundo meio de processamento, de modo que o desempenho do primeiro meio de processamento seja diferente do desempenho do segundo meio de processamento; e o meio de controle de transferência que compreende pelo menos software de virtualização que separa logicamente o pelo menos um sistema operacional do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento; e o meio de controle de transferência, durante a operação de transferência de passagem: (i)para fazer com que o meio de processamento de origem tome seu estado de arquitetura atual disponível ao meio de processamento de destino, o estado de arquitetura atual sendo aquele estado não disponível a partir do dispositivo de memória compartilhada entre o primeiro e o segundo meios de processamento no momento em que a operação de transferência depassagem for iniciada, e que é necessário para que o meio de processamento de destino assuma o controle do desempenho da carga de trabalho do meio de processamento de origem com sucesso; e (ii)para aplicar o software de virtualização para mascarar a informação de configuração específica do processador predeterminada proveniente do dito pelo menos um sistema operacional de modo que a transferência da carga de trabalho seja transparente ao dito pelo menos um sistema operacional.
19.Método para operar um aparelho de processamento de dados, o aparelho compreendendo um primeiro sistema de circuitos de processamento (10) para realizar operações de processamento de dados e segundo sistema de circuitos de processamento (50) para realizar operações de processamento de dados, o primeiro sistema de circuitos de processamento sendo arquiteturalmente compatível com o segundo sistema de circuitos de processamento, de modo que uma carga de trabalho (100) a ser realizada pelo aparelho de processamento de dados possa ser realizada tanto no primeiro sistema de circuitos de processamento quanto no segundo sistema de circuitos de processamento, a dita carga de trabalho compreendendo pelo menos uma aplicação (105, 110) e pelo menos um sistema operacional (115) para executar a dita pelo menos uma aplicação, o método compreendendo as etapas de: realizar, em qualquer momento, a carga de trabalho em um do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento; realizar, em resposta a um estímulo de transferência, uma operação de transferência de passagem para transferir o desempenho da carga de trabalho do sistema de circuitos de processamento de origem (300) para o sistema de circuitos de processamento de destino (350), o sistema de circuitos de processamento de origem sendo um do primeiro sistema de circuitos deprocessamento e do segundo sistema de circuitos de processamento, e o sistema de circuitos de processamento de destino sendo o outro do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento; o método caracterizado pelo fato de que o primeiro sistema de circuitos de processamento sendo microarquiteturalmente diferente do segundo sistema de circuitos de processamento, de modo que o desempenho do primeiro sistema de circuitos de processamento seja diferente do desempenho do segundo sistema de circuitos de processamento; a operação de transferência é realizada usando um software de virtualização que separa logicamente o pelo menos um sistema operacional do primeiro sistema de circuitos de processamento e do segundo sistema de circuitos de processamento; e durante a operação de transferência de passagem: (i) fazer com que o sistema de circuitos de processamento de origem tome seu estado de arquitetura atual disponível ao sistema de circuitos de processamento de destino, o estado de arquitetura atual sendo aquele estado não disponível a partir da memória compartilhada entre o primeiro e o segundo sistemas de circuitos de processamento no momento em que a operação de transferência de passagem for iniciada, e que é necessário para que o sistema de circuitos de processamento de destino assuma o controle do desempenho da carga de trabalho do sistema de circuitos de processamento de origem com sucesso; e (ii) mascarar a informação de configuração específica do processador predeterminada proveniente do dito pelo menos um sistema operacional usando software de virtualização, de modo que a transferência da carga de trabalho seja transparente ao dito pelo menos um sistema operacional.
BR112012021102-1A 2010-03-01 2011-02-17 Aparelho de processamento de dados, metodo para operar um aparelho de processamento de dados BR112012021102B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/659,234 US8418187B2 (en) 2010-03-01 2010-03-01 Virtualization software migrating workload between processing circuitries while making architectural states available transparent to operating system
US12/659234 2010-03-01
PCT/GB2011/050317 WO2011107776A1 (en) 2010-03-01 2011-02-17 A data processing apparatus and method for switching a workload between first and second processing circuitry

Publications (2)

Publication Number Publication Date
BR112012021102A2 BR112012021102A2 (pt) 2017-07-11
BR112012021102B1 true BR112012021102B1 (pt) 2020-11-24

Family

ID=44202159

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112012021102-1A BR112012021102B1 (pt) 2010-03-01 2011-02-17 Aparelho de processamento de dados, metodo para operar um aparelho de processamento de dados

Country Status (10)

Country Link
US (1) US8418187B2 (pt)
JP (1) JP5823987B2 (pt)
KR (1) KR101802140B1 (pt)
CN (1) CN102782671B (pt)
BR (1) BR112012021102B1 (pt)
DE (1) DE112011100744T5 (pt)
GB (1) GB2490823B (pt)
IL (1) IL221270A (pt)
RU (1) RU2520411C2 (pt)
WO (1) WO2011107776A1 (pt)

Families Citing this family (36)

* 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
CN103038749B (zh) 2010-07-01 2017-09-15 纽戴纳公司 为了优化群集特定配置的使用而按进程类型在群集之间分割进程
US8782645B2 (en) * 2011-05-11 2014-07-15 Advanced Micro Devices, Inc. Automatic load balancing for heterogeneous cores
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US20130007376A1 (en) * 2011-07-01 2013-01-03 Sailesh Kottapalli Opportunistic snoop broadcast (osb) in directory enabled home snoopy systems
DE112011105590T5 (de) 2011-09-06 2014-07-03 Intel Corp. Energieeffiziente Prozessorarchitektur
GB2537300B (en) * 2011-09-06 2017-10-04 Intel Corp Power efficient processor architecture
US9727388B2 (en) 2011-12-29 2017-08-08 Intel Corporation Migrating threads between asymmetric cores in a multiple core processor
KR101975288B1 (ko) * 2012-06-15 2019-05-07 삼성전자 주식회사 멀티 클러스터 프로세싱 시스템 및 그 구동 방법
US9195285B2 (en) * 2012-12-27 2015-11-24 Intel Corporation Techniques for platform duty cycling
US10162687B2 (en) * 2012-12-28 2018-12-25 Intel Corporation Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets
US9569223B2 (en) * 2013-02-13 2017-02-14 Red Hat Israel, Ltd. Mixed shared/non-shared memory transport for virtual machines
US20140269611A1 (en) * 2013-03-14 2014-09-18 T-Mobile Usa, Inc. Communication Handovers from Networks Using Unlicensed Spectrum to Circuit-Switched Networks
JP6244771B2 (ja) * 2013-09-24 2017-12-13 日本電気株式会社 情報処理システム、処理装置、分散処理方法、及び、プログラム
US20150095614A1 (en) * 2013-09-27 2015-04-02 Bret L. Toll Apparatus and method for efficient migration of architectural state between processor cores
KR20150050135A (ko) * 2013-10-31 2015-05-08 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
US9665372B2 (en) * 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US20150355946A1 (en) * 2014-06-10 2015-12-10 Dan-Chyi Kang “Systems of System” and method for Virtualization and Cloud Computing System
US9870226B2 (en) * 2014-07-03 2018-01-16 The Regents Of The University Of Michigan Control of switching between executed mechanisms
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9582052B2 (en) 2014-10-30 2017-02-28 Qualcomm Incorporated Thermal mitigation of multi-core processor
US9898071B2 (en) * 2014-11-20 2018-02-20 Apple Inc. Processor including multiple dissimilar processor cores
US9958932B2 (en) 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
JP6478762B2 (ja) 2015-03-30 2019-03-06 ルネサスエレクトロニクス株式会社 半導体装置及びその制御方法
US10628214B2 (en) 2015-06-01 2020-04-21 Samsung Electronics Co., Ltd. Method for scheduling entity in multicore processor system
US9928115B2 (en) 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
US10775859B2 (en) * 2016-09-23 2020-09-15 Hewlett Packard Enterprise Development Lp Assignment of core identifier
JP2018101256A (ja) * 2016-12-20 2018-06-28 ルネサスエレクトロニクス株式会社 データ処理システム及びデータ処理方法
US10579575B2 (en) * 2017-02-24 2020-03-03 Dell Products L.P. Systems and methods of management console user interface pluggability
US10628223B2 (en) * 2017-08-22 2020-04-21 Amrita Vishwa Vidyapeetham Optimized allocation of tasks in heterogeneous computing systems
US10491524B2 (en) 2017-11-07 2019-11-26 Advanced Micro Devices, Inc. Load balancing scheme
US11188379B2 (en) 2018-09-21 2021-11-30 International Business Machines Corporation Thermal capacity optimization for maximized single core performance
TWI705377B (zh) * 2019-02-01 2020-09-21 緯創資通股份有限公司 硬體加速方法及硬體加速系統
CN110413098B (zh) * 2019-07-31 2021-11-16 联想(北京)有限公司 一种控制方法及装置

Family Cites Families (25)

* 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
JPH09138716A (ja) * 1995-11-14 1997-05-27 Toshiba Corp 電子計算機
GB2318194B (en) * 1996-10-08 2000-12-27 Advanced Risc Mach Ltd Asynchronous data processing apparatus
JP3459056B2 (ja) * 1996-11-08 2003-10-20 株式会社日立製作所 データ転送システム
JP3864509B2 (ja) * 1997-08-19 2007-01-10 株式会社日立製作所 マルチプロセッサシステム
JPH11203254A (ja) * 1998-01-14 1999-07-30 Nec Corp 共有プロセス制御装置及びプログラムを記録した機械読み取り可能な記録媒体
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
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
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
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
JP4982971B2 (ja) * 2004-09-29 2012-07-25 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
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
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
JP4951034B2 (ja) * 2009-06-25 2012-06-13 株式会社日立製作所 計算機システムとその稼働情報管理方法
US9367462B2 (en) * 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors

Also Published As

Publication number Publication date
CN102782671B (zh) 2015-04-22
CN102782671A (zh) 2012-11-14
GB2490823A (en) 2012-11-14
RU2012141606A (ru) 2014-04-10
GB2490823B (en) 2017-04-12
RU2520411C2 (ru) 2014-06-27
BR112012021102A2 (pt) 2017-07-11
US8418187B2 (en) 2013-04-09
KR20130044211A (ko) 2013-05-02
DE112011100744T5 (de) 2013-06-27
JP5823987B2 (ja) 2015-11-25
GB201214368D0 (en) 2012-09-26
IL221270A (en) 2016-07-31
WO2011107776A1 (en) 2011-09-09
JP2013521557A (ja) 2013-06-10
IL221270A0 (en) 2012-10-31
KR101802140B1 (ko) 2017-12-28
US20110213934A1 (en) 2011-09-01

Similar Documents

Publication Publication Date Title
BR112012021102B1 (pt) Aparelho de processamento de dados, metodo para operar um aparelho de processamento de dados
BR112012021121B1 (pt) aparelho de processamento de dados, e, método de processamento de dados
US11755099B2 (en) Dynamic core selection for heterogeneous multi-core systems
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
US20110213935A1 (en) Data processing apparatus and method for switching a workload between first and second processing circuitry
JP5932044B2 (ja) 消費電力を低減する優先度に基づくアプリケーションイベント制御(paec)
US10423216B2 (en) Asymmetric multi-core processor with native switching mechanism
US20140195737A1 (en) Flush Engine
Gutierrez et al. Evaluating private vs. shared last-level caches for energy efficiency in asymmetric multi-cores
Wolff It is Too Hot in Here! a Performance, Energy and Heat Aware Scheduler for Asymmetric Multiprocessing Processors in Embedded Systems
US20170329626A1 (en) Apparatus with at least one resource having thread mode and transaction mode, and method
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.