BRPI0608556A2 - redução de potência por desligamento de partes de um arquivo de registrador empilhado - Google Patents

redução de potência por desligamento de partes de um arquivo de registrador empilhado Download PDF

Info

Publication number
BRPI0608556A2
BRPI0608556A2 BRPI0608556-3A BRPI0608556A BRPI0608556A2 BR PI0608556 A2 BRPI0608556 A2 BR PI0608556A2 BR PI0608556 A BRPI0608556 A BR PI0608556A BR PI0608556 A2 BRPI0608556 A2 BR PI0608556A2
Authority
BR
Brazil
Prior art keywords
registers
register
group
groups
stack
Prior art date
Application number
BRPI0608556-3A
Other languages
English (en)
Inventor
Bohuslav Rychlik
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0608556A2 publication Critical patent/BRPI0608556A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Power Sources (AREA)

Abstract

REDUçãO DE POTêNCIA POR DESLIGAMENTO DE PARTES DE UM ARQUIVO DE REGISTRADOR EMPILHADO. Muitas arquiteturas de processador incluem registradores na forma de um arquivo de registrador empilhado, para conter os dados usados durante a execuçao das operações de processamento. Como aqui ensinado, os registradores físicos formando as pilhas são organizados em bancos. Um ou mais dos bancos é ativado e desativado, conforme necessário para atender às demandas das alocações de registradores.

Description

"REDUÇÃO DE POTÊNCIA POR DESLIGAMENTO DE PARTES DE UM ARQUIVO DE REGI STRADOR EMPILHADO"
CAMPO TÉCNICO
A presente invenção refere-se às técnicas para seletivamente desligar partes de um conj unto de registradores, tais como grupos de registradores formando um arquivo de registrador empilhado de um processador, tal como um microprocessador, ou compilador, ou semelhante.
FUNDAMENTOS
Um arquivo de registrador é uma estrutura de armazenamento de alta velocidade que é usada para armazenar informação temporariamente. Os processadores incluem tipicamente um ou mais arquivos de registradores, para manter dados ou instruções relativamente próximas ao núcleo do processador. Os arquivos de registradores freqüentementeservem como uma fonte principal de dados para uso pelos recursos de execução de um processador, e os processadores de alto desempenho freqüentemente incluem grandes arquivos de registradores, para tirar proveito de sua baixa latênciade acesso.
Técnicas de gerenciamento de registradores alocam registradores aos processos, preenchem os registradores a partir de meios de armazenamento mais lentos, e posteriormente esvaziam os registradores para outros meios de armazenamento quando os registradores são realocados para outros procedimentos ou funções. Por exemplo, os dados a partir dos registradores usados por uma primeira função podem ser transferidos para outro armazenamento, enquanto a primeira função está ociosa, se uma segunda função ativa exigir mais registradores do que estão atualmente disponíveis. Quando o controle é retornado para a primeira função, os registradores podem ser realocados, embora elestipicamente não sejam os mesmos registradores usados pela função durante atividade anterior. Para restaurar atividade para a função, os dados armazenados são carregados nos registradores recentemente' alocados a partir do armazenamento. Para obter elevado rendimento de processamento de instrução/ciclo (IPC), os processadores modernos, tais como os microprocessadores e compiladores de paralelização, renomeação dos registradores, utilização dos registradores e passagem dos parâmetros de função, eficientes, são considerações.
Muitos dispositivos e aplicações que utilizam microprocessadores ou compiladores ou semelhantes têm baixas exigências de potência. Comumente o arquivo de registro nos processadores é o principal consumidor de potência devido ao seu grande número de portas e alta velocidade. Em alguns processadores, isso é exacerbado pelo grande número de registradores. Além disso, à medida que encolhe a tecnologia de transistor, potência de fuga -presente mesmo em partes não acessadas do arquivo de registrador - se torna mais significativa. Comumente os processadores proporcionam potência a todos os registradores em conjuntos, todo o tempo. Freqüentemente, as partes não utilizadas do arquivo de registrador deliberadamente não são desligadas porque esses registradores contêm valores que poderiam ser usados a qualquer momento, e seriam perdidos se os registradores fossem desligados.
Existe uma necessidade contínua de se proj etar processadores que exijam menos potência, por exemplo, para aplicação em dispositivos portáteis/de mão ou outras aplicações que têm fontes de potência limitadas ou restritas- Em apoio a essa necessidade geral, há uma necessidade específica de técnicas para reduzir a potênciaconsumida pelos grupos de registradores de um processador, tal como o arquivo de registrador empilhado.
SUMÁRIO
Para reduzir o consumo de energia, uma parte selecionada de um conjunto de registradores é desligada quando não está em uso. Técnicas especificas são reveladas para selecionar registradores que são ativados e registradores que não são ativados, de modo a prover economia de potência e ainda assim manter o desempenho desejado do processador que inclui o conjunto de registradores.
Portanto, um aspecto dos ensinamentos aqui revelado se refere a um método de controle de potência para operar os registradores de um arquivo de registrador empilhado em um processador. 0 método requer receber informação com relação às alocações dos registradores no arquivo de registrador empilhado. 0 arquivo de registrador empilhado é dividido em uma pluralidade de grupos de registradores- 0 método envolve ativar e desativar seletivamente a operação dos grupos de registradores dentro do arquivo de registrador empilhado, em correspondência ao número de exigências de registradores indicadas pelas alocações recebidas.
Os presentes ensinamentos abrangem uma variedade de algoritmos para controlar a ativação e a desativação de um ou mais grupos no arquivo de registrador empilhado. Dois exemplos especificos são discutidos em detalhe. Em um primeiro exemplo, o algoritmo de controle de potência mantém um primeiro grupo de registradores ativos e mantém os registradores de um segundo grupo ociosos, em resposta a uma alocação de um número de registradores menor do que ou igual a um limite tendo uma relação predeterminada com o número de registradores formando o primeiro grupo. Emresposta a uma alocação de um número de registradores maior do que o limite, o algoritmo de controle mantém o primeiro grupo de registradores ativo e ativa o segundo grupo de registradores.
Em um segundo exemplo do algoritmo de controle, cada alocação de registradores indica um ponteiro de topo da pilha e um ponto de salvamento/restauração, respectivo. Em resposta a cada alocação, esse algoritmo opera qualquer grupo do arquivo de registrador empilhado tendo pelo menos um registrador em uma faixa a partir do ponto de salvamento/restauração respectivo até o ponteiro de topo da pilha, respectivo. Contudo, qualquer grupo do arquivo de registrador empilhado não tendo pelo menos um registrador nessa faixa está ocioso.
Outros aspectos dos ensinamentos aqui revelados se referem aos sistemas de registradores empilhados para uso em processadores. Em tal aspecto, a pilha de registradores inclui um primeiro grupo de registradores compreendendo um primeiro número de registradores, e um segundo grupo de registradores compreendendo um segundo número de registradores. São providos meios para seletivamente ativar e desativar pelo menos um dos grupos de registradores, em resposta às alocações e desalocações de registradores para processar as operações do processador. A ativação e a desativação ajustam dinamicamente o número dos grupos que são ativos como uma função dos números de registradores alocados.
Em outro aspecto, um sistema de registradores empilhados para uso em um processador inclui uma pilha de registradores, compreendendo grupos de registradores, onde cada grupo de registradores inclui um ou mais dos registradores. Esse sistema também inclui um controlador, o qual é responsivo à informação relacionada às alocações deregistradores dentro da pilha, para seletivamente controlar o status LIGADO/DESLIGADO de um ou mais dos grupos de registradores. 0 controlador é responsivo ao número de registradores alocados dentro da pilha, para aumentar o número de grupos que estão LIGADOS para satisfazer pelo menos uma alocação aumentando o número de registradores. 0 controlador também diminui o número de grupos que estão LIGADOS em resposta a pelo menos uma alocação de um número diminuído de registradores.
Os objetivos, as vantagens e as características inovadoras, adicionais, serão apresentados em parte na descrição a seguir, e em parte se tornarão evidentes àqueles versados na técnica por exame do que se segue e dos desenhos anexos ou podem ser aprendidos por produção ou operação dos exemplos. Os objetivos e vantagens dos presentes ensinamentos podem ser realizados e obtidos pela prática ou pelo uso das metodologias, instrumentalidades e combinações particularmente assinaladas nas reivindicações anexas.
BREVE DESCRIÇÃO DOS DESENHOS
As figuras de desenho ilustram uma ou mais implementações de acordo com os presentes ensinamentos, apenas como exemplo, e não como limitações. Nas figuras, numerais de referência semelhantes referem-se aos mesmos elementos ou elementos similares.
A Figura 1 é um diagrama lógico, útil na explicação do controle seletivo de ativação de grupos, formados a partir de um arquivo de registrador empilhado.
A Figura 2 é um diagrama funcional de blocos de uma parte de um processador, incluindo os grupos e o controle de potência de um arquivo de registrador empilhado e certos elementos que interagem com aquele controle, para implementar um primeiro exemplo de um algoritmo de controlede potência que utiliza ordenamento fixo para ativar e desativar os grupos do arquivo de registrador empilhado.
A Figura 3 é uma primeira ilustração gráfica de um circuito de porta para ativar e desativar um grupo de registradores por controle do sinal de relógio, em reposta ao controle de potência.
A Figura 4 é uma segunda ilustração gráfica de um circuito de porta para ativar e desativar um grupo de registradores por controle da potência, em reposta ao controle de potência.
As Figuras 5-7 são diagramas do arquivo de registrador e controle de potência da Figura 2 em três estados diferentes, durante operação de acordo com o primeiro algoritmo de controle de potência.
A Figura 8 é um diagrama funcional de blocos de uma parte de um processador, incluindo os grupos e controle de potência de um arquivo de registrador empilhado e certos elementos que interagem com aquele controle, para implementar um segundo exemplo de um algoritmo de controle de potência que utiliza um esquema de ordenamento variável para ativar e desativar os grupos do arquivo de registrador empilhado.
As Figuras 9-11 são diagramas do arquivo de registrador e controle de potência da Figura 8, em três estados diferentes, durante operação de acordo com o segundo algoritmo de controle de potência.
A Figura 12A é um diagrama lógico útil na explicação da operação geral do arquivo de registrador empilhado com um Mecanismo de salvamento de registrador (SER) e Armazenamento Auxiliar.
A Figura 12B é um diagrama lógico útil na explicação da operação geral de um exemplo de reinicio ciclico de alocação de registradores nos arquivos de registradores empilhados.DESCRIÇÃO DETALHADA
Na descrição detalhada seguinte, vários detalhes específicos são apresentados por intermédio de exemplos para prover um entendimento completo dos ensinamentos relevantes. Contudo, deve ser evidente para aqueles versados na técnica que os presentes ensinamentos podem ser praticados sem tais detalhes. Em outras instâncias, métodos, procedimentos, componentes e conjunto de circuitos conhecidos foram descritos em um nivel relativamente alto, sem detalhe, para evitar obscurecer desnecessariamente os aspectos dos presentes ensinamentos.
Para reduzir o consumo de energia, uma parte selecionada de um conjunto ou pilha de registradores é desligada quando não está em uso, com base em análise de instruções e/ou ponteiros relacionados às alocações de registradores que serão necessários para operações especificas. As técnicas aqui discutidas tiram proveito de diversas observações. Em primeiro lugar, as instruções com relação à alocação de registradores em pelo menos alguns processadores proporcionam conhecimento antecipado do número de registradores necessários naquele momento. A maioria das funções não requer todos os registradores disponíveis. Portanto, o consumo de energia pela pilha de registradores pode ser economizado por desligamento de partes do arquivo de registrador. Para considerar como os registradores são alocados e usados e como o processamento é controlado para ativar e desativar os grupos pode ser útil em primeiro lugar revisar certos aspectos gerais das operações de um arquivo de registrador empilhado.
Com um arquivo de registrador empilhado, o compilador gerencia o mapeamento dos nomes de registradores virtuais para nomes de registradores físicos por alocação e desalocação de registradores em uma pilha teoricamenteinfinita utilizando instruções ALLOC. A função básica da função ALLOC é de garantir que o número de registradores fisicos solicitados pelo compilador para o quadro de pilha atual esteja disponível e ajustar o deslocamento de mapeamento de registradores armazenados no registrador de Base de Pilha de Registradores (RSB). Durante execução, RSB é adicionado aos nomes de registradores virtuais especificados pelo compilador para ajudar a gerar os nomes de registradores fisicos atuais usados por todas as 10 instruções de acesso de registrador.
O exemplo a seguir demonstra a operação simplificada da instrução ALLOC:
Conjunto simplificado:
;;Rx = registrador virtual x
;; PRx = registrador fisico x
;; Suponha RSB = 0; 0 registradores locais
ALLOC 0,2 ;; Solicitar 2 registradores locais (RSB =0)
;; Topo-da-pilha = 2 (aponta para PR1) MOVR0=l ;;PR0 = 1
ADD R1=R0,3 ;; PR1 = PRO + 3 (PR1 = 4)
CALL f ;; chamada de funçâof(x)
ALLOC 1,2 ;; Solicitar 1 registrador de entrada, 2
registradores locais
;; RSB = (local anterior — entrada solicitada) = (2-1) = 1
;; Topo-da-pilha = 4
(aponta para PR3) M0VR1=5
;;PR2 = 5
MUL R2=R0,R1
;; PR3=PR1 *PR2 (PR3 = 20)
;;MOVR3=7 ;; Ilegal Não pode acessar além do Topodapilha.
Apenas entrada + local =1+2=3 registradores alocados
Uma característica desse modelo geral é que a 35 instrução ALLOC indica ao processador exatamente o númerode registradores que o compilador está usando em cada função, e o compilador nunca deve gerar instruções que acessam registradores além daqueles explicitamente alocados. Deve ser observado que algumas arquiteturas 40 efetivamente especificam certos registradores para serem globais sem remapeamento e outros registradores a seremremapeados utilizando o mecanismo descrito acima. Contudo, para simplicidade esse documento supõe que todos os registradores são remapeados.
Durante operação, para manter a ilusão de uma pilha infinita de registradores, a alocação dos registradores além do número de registradores fisicos implementados reinicia ciclicamente para o registrador fisico empilhado 0. Em tal caso um Mecanismo de Salvamento de Registrador (RSE) pode automaticamente salvar e restaurar os dados a partir dos registradores e para os registradores conforme necessário para um Armazenamento Auxiliar e a partir de um Armazenamento Auxiliar mantido na memória. Em tal operação, o ponto de salvar/restaurar também retorna conforme necessário através da pilha de registradores físicos (vide Figura 12A e Figura 12B). Desse modo, o arquivo de pilha de registradores atua como um armazenador circular contendo os quadros mais recentes de dados de registrador. 0 RSE desloca os dados para o Armazenamento Auxiliar mantido na memória (operações de "descarregar") quando não necessários por uma alocação atual, e o RSE retorna os dados a partir do armazenamento auxiliar (operações de >xpreencher") aos registradores alocados quando necessário. O RSE descarrega a partir dos registradores e preenche os registradores fora do grupo ou quadro que atualmente está ativo na pilha.
Com referência à Figura 1, para facilitar economia de potência, os exemplos efetivamente particionam o arquivo de registrador fisico em grupos com controle de potência individual. No exemplo, a pilha de registradores 11 inclui 128 registradores de instrução PRO a PR127. Cada grupo inclui um ou mais registradores. No exemplo, uma vez que a maior parte do processamento requer 30 registradores ou menos, é conveniente dividir a pilha 11 de 128registradores em quatro grupos de 32 registradores cada. No exemplo, o Grupo 0 (13) agora inclui os registradores PRO a PR31; o Grupo 1 (15) agora inclui os registradores PR32 a PR66. Por sua vez, o Grupo 2 (17) agora inclui os registradores PR64 a PR95; e o Grupo 3 (19) agora inclui os
registradores PR96 a PR127. Aqueles versados na técnica reconhecerão que outros números ou grupos ou outros números de registradores em cada grupo podem ser usados, por exemplo, o número de registradores, em cada grupo, nãoprecisa ser igual. No exemplo, cada um dos grupos pode ser separadamente ativado e desativado, para combinar dinamicamente o número de grupos que estão ativos, e desse modo o número de registradores ativos, com o número que muda de exigências de registrador. A desativação dos grupos não necessários economiza potência.
Para implementar o controle de ligar-desligar dos grupos, o processador incluirá um controle de potência 121, associado aos grupos do arquivo de registrador empilhado. 0 controle 21 é responsivo à informação de alocação comrelação ao número de registradores necessários. Em alguns processadores, por exemplo, o ALLOC e outras instruções proporcionam indicações com relação à utilização do registrador, as quais o controle de potência 21 utiliza criteriosamente para LIGAR/DESLIGAR os grupos conforme necessário e para ajustar os vários ponteiros de manutenção de pilha.
O controle de potência seletivamente ativa e desativa os grupos da pilha de registradores divididos, utilizando um algoritmo apropriado. Em um exemplo, o algoritmo utiliza ordenamento fixo dos grupos quando eles são LIGADOS e DESLIGADOS, para reduzir a freqüência de ativação/desativação de grupo. O algoritmo de ordenamento fixo comumente mantém o primeiro grupo LIGADO e LIGA osgrupos adicionais à medida que a alocação dos registradores atinge ou passa dos limites relacionados aos números de registradores correspondendo aos limites dos grupos. Os grupos são desativados em ordem inversa à medida que diminuem as alocações de registradores.
Em outro exemplo, o algoritmo utiliza ordenamento variável dos grupos à medida que eles são LIGADOS e DESLIGADOS, para minimizar o número de grupos que estão simultaneamente ativos e desse modo aumentar a economia de consumo de energia. Quando o processador prove ponteiros para o topo da pilha (TOS) dos registradores alocados e ponto de salvamento/restauração RSE (base da pilha alocada), o algoritmo ativa e desativa os grupos quando os ponteiros se deslocam através dos grupos. Os grupos tendo um ou mais registradores na faixa a partir de um ponteiro para o outro (ou entre valores de deslocamento associados) são ativos. Os grupos sem registrador naquela faixa estão ociosos. Quando o ponteiro de topo da pilha se aproxima e entra em um novo grupo, o controle ativa o grupo. Quando o ponto de salvamento/restauração sai de um grupo, esse grupo pode ser desativado.
A Figura 2 é um diagrama funcional de blocos de uma parte de um processador, implementando o controle de potência, utilizando o algoritmo de ordenamento fixo. Elementos do processador são mostrados os quais estão envolvidos nas operações de registrador e controle de potência dos grupos de registradores. Aqueles versados na técnica reconhecerão que o processador inclui tipicamente muitos outros elementos que não são mostrados por conveniência. Evidentemente, alguns desses elementos podem fornecer dados ou utilizar dados a partir dos registradores na pilha, embora eles não participem diretamente no algoritmo de controle de LIGAR/DESLIGAR exemplar.Para os propósitos desse primeiro exemplo, supõe-se outra vez que a pilha de registradores fisicos 25 inclui 128 registradores PRO a PR127 e é dividida em quatro grupos com o propósito de controle de potência. Outra vez, o Grupo 0 (27) inclui registradores PRO a PR31; e o Grupo 1 (29) inclui os registradores PR32 a PR63. Por sua vez, o Grupo 3 (31) inclui registradores PR64 a PR95; e o grupo 3 (33) agora inclui os registradores PR96 a PR127.
Embora conexões e outros elementos não sejam mostrados por conveniência, os registradores individuais na pilha 25 recebem os dados a partir dos elementos do processador e/ou armazenamento separado, e fornecem os dados aos outros elementos do processador e/ou armazenamento separado. Por exemplo, os registradores podem ser inicialmente carregados com dados a partir da memória, que pode residir no chip de processador ou em um chip separado. Os registradores fornecem os dados para os elementos de processamento de núcleo para processamento e recebem os resultados de armazenamento. Os dados são transmitidos para/a partir do Armazenamento Auxiliar quando os registradores são temporariamente alocados, e os dados podem ser transferidos de volta para a memória quando a operação especifica é concluída. Em geral, as operações dos registradores no arquivo de pilha de registradores fisicos 25 são idênticas àquelas dos arquivos de pilha de registradores conhecidos e não serão discutidas aqui em detalhe, exceto quando tais operações afetarem ou forem influenciadas pelo algoritmo(s) de controle de potência dos presentes ensinamentos.
O status ativo dos grupos 27-37 da pilha 25 pode ser controlado em resposta aos sinais de seleção a partir do controle de potência 37, em qualquer uma das várias formas conhecidas. Para fins de discussão geral, a Figura 2mostra um sinal (SRD) necessário para acionamento de registrador, e circuitos de porta genéricos para acoplar o sinal SRD aos grupos em resposta aos sinais de controle de potência de grupo a partir do controle de potência 37. Por exemplo, a porta 41 fornece seletivamente o sinal de acionamento de registrador SRD ao Grupo 0 (27) em resposta a um sinal de controle de potência a partir do controle 37, e a porta 43 fornece seletivamente o sinal de acionamento de registrador SRD ao Grupo 1 (29) em resposta a outro sinal de controle de potência a partir do controle 37. Similarmente, a porta 45 fornece seletivamente o sinal de acionamento de registrador SRD ao Grupo 2 (31) em resposta a um sinal de controle de potência a partir do controle 37, e a porta 47 fornece seletivamente o sinal de acionamento de registrador SRD ao Grupo 3 (33) em resposta a outro sinal de controle de potência a partir do controle 37. As portas podem ser portas lógicas, chaves, combinações das mesmas, ou qualquer outro circuito configurado para fornecer o tipo apropriado de sinal aos grupos de registradores em resposta aos sinais de seleção apropriados a partir do controle 37.
Como observado, algumas técnicas diferentes podem ser usadas para controlar o status LIGADO-DESLIGADO dos grupos de registradores. Para garantir entendimento pleno, pode ser útil considerar dois exemplos.
Em um primeiro exemplo, os grupos são seletivamente ativados/desativados por controle de se o sinal de relógio necessário é ou não fornecido a cada grupo. A Figura 3 mostra tal controle quando aplicado aos circuitos lógicos 27. No exemplo, a porta 41 é uma porta E. O sinal de relógio (CLK) é aplicado a uma entrada da porta E 41, e o sinal de controle LIGADO/DESLIGADO é aplicado à outra entrada a partir do controlador de potência 37.Quando o sinal de controle está LIGADO, a porta 41 aplica o sinal de relógio (CLK) , que permite que a lógica do grupo de registradores 27 receba os dados de ENTRADA e forneça dados de SAÍDA, da forma normal. Quando o sinal de controle está DESLIGADO, a porta 41 bloqueia o sinal de relógio (CLK) . Nesse caso, a lógica do grupo de registradores 27 não realizará um ciclo e, portanto, ela consome menos potência. Controle similar pode ser usado nos outros grupos.
Em outro exemplo, a potência para cada grupo é ligada e desligada. Isso pode ser implementado por controle da conexão à voltagem de fornecimento ou por conexão seletiva à terra, como mostrado no exemplo da Figura 4. 0 controle direto de potência tem a vantagem de eliminar a corrente de fuga dos grupos de registradores ociosos. No exemplo da Figura 4, dois transistores servem como a porta 43 para seletivamente conectar o conjunto de circuitos CMOS do grupo 29 à terra. Quando o controle 37 aplica um sinal de estado Ligado a porta prove a conexão de terra. 0 conjunto de circuitos do grupo 29 consome potência, entre voltagem de fornecimento (V) e terra (GND), e o grupo opera como descrito aqui. Quando o controle de potência 37 desliga a porta 43, a porta desconecta o conjunto de circuitos do grupo 29 a partir da terra, a potência é interrompida, e o grupo 29 é desativado. Controle de potência similar pode ser usado para outros grupos.
Aqueles versados na técnica reconhecerão que outras técnicas podem ser usadas para controlar os estados LIGADO/DESLIGADO dos grupos de registradores. Além disso, um determinado processador pode implementar uma combinação de diferentes técnicas nos diferentes grupos formando o arquivo de registrador empilhado 25.
Retornando à Figura 2, o controle de potência 27é uma máquina de estado finita. A máquina de estado pode ser implementada como um processador programável, mas também pode ser formada de circuitos e/ou blocos lógicos para gerar as saídas desejadas em resposta às entradas específicas, quer dizer, de modo a implementar o algoritmo de controle específico. Nos exemplos (por exemplo, Figuras 2 e 8), a máquina de estado implementa um único algoritmo de controle, embora alguns parâmetros do algoritmo possam ser definidos pelo processador. Aqueles versados na técnica reconhecerão que o controle pode ser projetado paraimplementar dois ou mais algoritmos seletivamente, em resposta a uma entrada de controle ou seleção a partir do processador ou de um usuário. Também pode ser possível desabilitar o algoritmo de controle de potência e operarcom todos os registradores LIGADOS, ou, por exemplo, em um modo "de alto desempenho" temporário.
Ao implementar o controle de potência, a máquina de estado do controle 37 é responsiva à determinada informação de entrada, para seletivamente produzir os sinais para ativar os grupos 27-33 do arquivo de pilha deregistradores 25, de acordo com o algoritmo de controle de potência específico. Nesse exemplo, a máquina de estado do controle 37 é responsiva aos sinais a partir de vários elementos do processador que interagem com ou utilizam apilha 25. Conexões com o controle de potência 37 são mostradas, uma vez que elas se referem à ativação/desativação dos grupos de registradores, embora as conexões normais de outros elementos do processador para/a partir da pilha 25 sejam omitidas a partir desse desenho para facilidade de ilustração.
No exemplo, o controle de potência 37 é responsivo ao elemento de controle de processador de alto nível 51. O controle de processador 51 pode usar diversosregistradores de controle, sejam controlados por software ou controlados internamente, para mudar as regulagens de potência, preferências, limites, etc. usados pelo controle de potência 37.
0 controle de potência 37 também é responsivo aos vários sinais a partir do elemento de controle de arquivo de registrador 53. 0 controle de arquivo de registrador 53 é o elemento que normalmente controlada a alocação e operação dos registradores do arquivo de registrador empilhado 25, por exemplo, por atribuição/reatribuiçãodaqueles registradores para as funções usadas pelos diversos processos. O controle 53 utiliza um módulo correspondendo ao número de registradores ativos, para ajustar o ponto de topo da pilha (TOS) do arquivo, para identificar o registrador de Base de Pilha de Registradores (RSB), e para gerar quaisquer outros ponteiros usados para reinicio ciclico e/ou outro gerenciamento do arquivo de registrador empilhado. Em uma pilha de registradores padrão 128, por exemplo, o controle 53 operaria no módulo 128; e o controle 53 utiliza aquele módulo para controlar a pilha 25quando todos os quatro grupos 27-33 estão ativos. Contudo, o controle de arquivo de registrador 53 ajusta a contagem de módulo, em 32, 64 ou 96, quando apenas um, dois ou três dos grupos estão ativos. Portanto, o controle de potência37 prove um sinal B0n.rsc para o controle de arquivo de registrador 53, indicando o número de grupos ligados, e o controle de arquivo de registrador 53 ajusta sua lógica de contagem interna para usar o número de módulo correspondente, em seus processos de configuração de ponteiro e semelhante.
A instrução ALLOC é uma instrução explicita (chamada) para alocar um número de registradores a um determinado processo. Uma desalocação é um retorno ouresposta indicando essencialmente uma recuperação dos registradores a partir do processo quando não mais necessários. Essas instruções, portanto, definem o número de registradores que são necessários em determinado momento. 0 controle de arquivo de registrador 53 prove o controle de potência 37 com essa informação sobre o número de registradores alocados e desalocados, para uso na ativação e desativação dos grupos no arquivo de registrador empilhado. 0 controle de arquivo de registrador 53 também prove o ponteiro TOS e certos valores numéricos A e D como discutido abaixo.
0 mecanismo de salvamento de registrador (RSE) 55 salva automaticamente e restaura os dados a partir dos registradores e para os registradores no arquivo de pilha 25 conforme necessário para um Armazenamento Auxiliar mantido na memória (vide Figuras 12A e 12B) . Em geral, a operação do RSE 55 é idêntica em um processador normal. Contudo, como o controle de arquivo de registrador 53, o RSE conta em um número de módulo correspondendo ao número de registradores ativos, nesse caso para ajustar a posição do Ponto de Salvamento/Restauração do Mecanismo de Salvamento de Registrador (RSEP). Portanto, o controle de potência 37 fornece um sinal Bqn.rse ao RSE 55, indicando o número de grupos ligados, e o RSE 55 ajusta de acordo às suas operações. Os sinais Bqn.rsc e Bon.rse são similares, mas podem não ser exatamente idênticos em todas as instâncias.
Na implementação ilustrada do algoritmo de ordenamento fixo, cada grupo 27-33 está sob controle individual, de modo que ele pode ser ativado e desativado independentemente dos outros grupos compondo a pilha 25. O processador então pode operar em um modo de baixa potência, com relação à potência consumida pelos registradores físicos da pilha ou arquivo 25, por ativação dos gruposapenas quando necessário e desligando os grupos não necessários.
O exemplo da Figura 2 utiliza uma técnica de ordenamento fixa. A pilha 25 freqüentemente funciona apenas com um grupo 27 de registradores ligados, e o controle 37 apenas liga os grupos de registradores adicionais se mais do que um grupo de registradores for necessário por uma única alocação.
Pode ser útil considerar o exemplo de algoritmo de ordenamento fixo de certa forma em mais detalhe, utilizando as definições a seguir:
• Admitamos R como o número de registradores em cada grupo;
• Admitamos B o número de grupos totais, numerados de 0 a B-l;
o Portanto, há um total de B*R registradores empilhados;
• Admitamos B__On como o número de grupos ligados;
• Admitamos A como sendo o número de registradores solicitados para alocação;
• Admitamos D como sendo o número de registradores solicitados para desalocação;
• Admitamos TOS como sendo a posição do topo da pilha de registradores;
• Admitamos RSEP como sendo a posição do Ponto de Salvamento/Restauração do Mecanismo de Salvamento de Registrador
Na nomenclatura usada para o presente exemplo, B x R seria 96, o número total de registradores disponíveis para reinicio ciclico fisico no arquivo de registrador empilhado. A arquitetura do presente exemplo especifica narealidade os registradores R0-R31 como globais sem remapeamento, e apenas os registradores R32-R127 são remapeados e podem estar sujeitos ao algoritmo de controle de potência. Para discussão aqui, supõe-se que todos os 128 registradores podem ser remapeados (B x R 128) e submetidos ao controle de potência.
No exemplo de ordenamento fixo, os grupos são sempre ligados e em ordem estritamente crescente: em primeiro lugar Grupo 0, então Grupo 1, etc., até Grupo B-l. No exemplo de quatros grupos, isso significa que Grupo 0 (27) é ligado em primeiro lugar (virtualmente sempre LIGADO); Grupo 1 (29) é ligado a seguir; Grupo 2 (31) é ligado a seguir; e Grupo 3 (33) é ligado por último (LIGADO apenas quando forem necessários mais do que 96 registradores). Inversamente, os grupos são sempre desligados em ordem estritamente decrescente: em primeiro lugar Grupo B-l, então Grupo B-2, etc, até Grupo 1. No exemplo de quatro grupos, isso significa que o Grupo 3 (33) é desligado em primeiro lugar; o Grupo 2 (31) é desligado em seguida; então Grupo 1 (29) é desligado em seguida. O Grupo 0 (27) tipicamente permanece LIGADO, durante operação de consumo minimo de potência do processador. Nesse primeiro modo, grupos adicionais são ligados apenas quando A ^ B_0n * R. Os grupos são desligados apenas quando TOS > RSEP.
Um algoritmo exemplar para esse modo de operação pode ser como a seguir:
1. Começar apenas com o Grupo 0 (27) ligado (registradores R).
2. Em uma solicitação de alocação de registrador (devido à instrução ALLOC):
a. Se (A < B_0n * R) utilizar os grupos de registradores atualmente ligados como um arquivo deregistrador de reinicio ciclico de tamanho B_0n * R. Isso significa que toda a aritmética para o RSB, TOS, e RSEP segue aritmética de módulo-(B_On * R) .
b. Se (A > B_On * R) , então
i . Admitamos B__On_previous=B_On ;
ii. Enquanto (A ^ B_On * R) , ligar outro grupo (B_On++);
iii. Incrementar (TOS += A)mod(B_On*R);
iv. Enquanto (RSEP > TOS), usar aritmética de módulo-((B_On - 1) * R, o valor antigo) com o ponto RSET até ele retornar para o registro fisico 0. Isso garante que os registradores atualmente alocados entre POS e PRO sejam corretamente salvos.
v. Seguir para Etapa 2.
3. Em uma desalocação de registrador (devido a um retorno de chamada, etc.):
a. Se (Ponto de Salvãmente/Restauração de (TOS - D) módulo (B_On * R)>RSE0,
i. Enquanto ( (TOS-D) desligar outro grupo (B_On * R)<(B_on - 1 * R) ) ,
ii. Decrementar (TOS-D)mod(B_On * R); iii• Seguir para Etapa 2.
Bqn corresponde ao RSE. N__STACKED_PHYS, que representa o número de registradores empilhados, tipicamente 96. Contudo, utilizando a implementação da Figura 2, esse valor varia dependendo do número de grupos que são ativos.
O valor RSB corresponde a RSE.BOF (RSE parte inferior da fila). O valor TOS corresponde a RSE.BOF + CFM.sol. O valor RSEP então corresponde a RSE.LoadReg, oqual é o número de registrador físico um maior do que o próximo registrador a ser carregado no módulo correspondendo ao número de registradores fisicos empilhados.
As Figuras 5-7 ilustram vários estados exemplares na operação da pilha de acordo com esse primeiro algoritmo de ordenamento exemplar. No estado mostrado na Figura 5, a alocação atual utiliza menos do que 32 registradores. 0 Ponto de Salvamento/Restauração RSE (RSEP) está abaixo do registrador PRO, quer dizer na parte inferior da pilha de registradores fisicos 25. 0 ponteiro de topo da pilha (TOS) indica um dos registradores mais altos no Grupo 0 (27) . 0 RSE realiza operações de descarregar e preencher nos registradores acima do ponto de topo da pilha, com reinicio cíclico ao Ponto de Salvamento/Restauração RSE, nesse caso, abaixo do registrador PRO. Os registradores ativos alocados são aqueles na faixa a partir de PRO até o registrador abaixo do ponteiro POS. Nesse estado, o controle de potência 37 prove o sinal LIGADO para ativar apenas um grupo, Grupo 0 (27). 0 controle de potência 37 prove sinais DESLIGADO aos outros grupos 29-33, de modo que esses grupos são ociosos. Embora operando com menos do que 32 registradores alocados ou com o número igual a 32 registradores alocados, o sistema permanecerá em um estado similar àquele da Figura 5, exceto que o Ponto de Salvamento/Restauração TOS e RSE se deslocarão, para facilitar as operações de descarregar e preencher através do RSE. Reinicio cíclico desses ponteiros permanecerá dentro do Grupo 0. Ao fazer isso, as operações de contagem do controlador 53 e RSE 55 usadas para mover esses ponteiros utilizarão um módulo de contagem vinculado a 32, o número de registradores no Grupo ativo 0 (27).
O estado especifico mostrado na Figura 5 éfavorável para transição até um estado utilizando registradores em dois grupos, quando mais do que 32 registradores são necessários. Contudo, se o processamento no Grupo 0 tiver um ponteiro de topo da pilha (TOS) que esteja fisicamente abaixo do ponto de salvamento/restauração devido ao reinicio cíclico dentro do Grupo 0, o processador precisa retardar a ativação do próximo grupo, Grupo 1, até que o ponto de salvamento/restauração tenha reiniciado ciclicamente e esteja fisicamente abaixo outra vez do ponteiro TOS (até TOS>RSEP) antes de ativar o próximo grupo mais alto. Esse retardo garante que os dados nos registradores no Grupo 0 que estão fisicamente acima do ponto de salvamento/restauração antes da transição não sejam perdidos devido a uma alocação prematura para um processo exigindo mais registradores.
No exemplo ilustrado na Figura 6, a alocação atual utiliza mais do que 32, porém menos do que 64 registradores. Nesse exemplo, o controle de potência 37 proporciona sinais LIGADO para ativar ambos: o Grupo 0 (27) e o Grupo 1 (29) . O controle de potência 37 prove sinais DESLIGADO para os outros dois grupos 31 e 33, de modo que esses grupos são ociosos. A Figura 6 mostra tal estado onde o Ponto de Salvamento/Restauração RSE está no registrador PRO, quer dizer na parte inferior da pilha de registradores físicos 25. O ponteiro de topo da pilha (TOS) identifica um dos registradores mais altos no Grupo 1 (29) . Os registradores ativos alocados são aqueles na faixa a partir de PRO até o registrador abaixo do ponteiro TOS. Registradores ativos não alocados no Grupo 1 (29) são aqueles entre o ponto TOS e o Ponto de Salvamento/Restauração RSE, o qual está atualmente abaixo do registrador PRO. O RSE realiza operações de descarregare preencher nos registradores acima do ponto de topo da pilha no Grupo 1, com reinicio ciclico para o Ponto de Salvamento/Restauração RSE, o qual nesse exemplo está abaixo do registrador PRO.
0 processamento de reinicio ciclico pelo mecanismo RSE é substancialmente similar àquele ao se utilizar a pilha de registradores completa 128, exceto que a contagem de reinicio ciclico é limitada aos 64 registradores dos grupos ativos 0 e 1. Tal processamento leva a um estado tal como aquele mostrado na Figura 7. Lá, a alocação atual utiliza mais do que 32, porém menos do que 64 registradores. 0 controle de potência 37 ainda prove sinais de LIGADO para ativar tanto o Grupo 0 (27) como o Grupo 1 (29) ; e o controle de potência 37 ainda prove sinais DESLIGADO para os outros dois Grupos 31 e 33, de modo que esses grupos são ociosos. Contudo, nesse estado, o Ponto de Salvamento/Restauração RSE está em um registrador no Grupo 1, quer dizer em ou acima de PR32. 0 processamento reiniciou ciclicamente para os registradores do Grupo 0, de modo que o ponteiro de topo da pilha (TOS) identifica um dos registradores no Grupo 0, tal como registrador PRO.
Evidentemente, o algoritmo de ordenamento suporta transições similares utilizando três grupos de registradores e utilizando todos os quatro grupos de registradores. Como foi o caso quando apenas um grupo estava ativo, os ponteiros devem mudar a partir do estado de reinicio ciclico (como na Figura 7) para um estado onde TOS>RSEP (como na Figura 6), antes do controle 37 ativar o próximo grupo de registradores para satisfazer uma alocação aumentada adicional. Por exemplo, se houver uma necessidade de mudar para um estado ativo de 3 ou 4 grupos, a partir de um estado tal como aquele mostrado na Figura 7, é necessário permitir que o processamento RSE desloque para oPonto de Salvamento/Restauração ascendentemente através do Grupo 1 (29) e outra vez reinicie ciclicamente para um ponto no registrador Grupo 0 (27), como o estado mostrado na Figura 6, para garantir que os dados nos registradores na faixa a partir do Ponto de Salvamento/Restauração RSE anterior (mostrado na Figura 7) até o registrador PR63 no Grupo 1 (29) do topo tenham sido salvos no Armazenamento Auxiliar, na memória. A exigência para TOS>RSEP similarmente se aplica à transição a partir de 3 grupos até 4 grupos. Com limitações similares também é possível transicionar diretamente para números maiores de grupos ativos, por exemplo, de 1 grupo para 3 ou 4, ou de 2 grupos para 4 grupos.
Cada transição descendente para um número menor de grupos ativos também deve esperar pelo estado adequado dos ponteiros. Especificamente, o ponto de
salvamento/restauração na base da pilha ativa de registradores deve ter reiniciado ciclicamente e estar dentro do grupo(s) que permanecerá ativo. 0 ponteiro de topo da pilha deve estar acima do ponto de salvamento/restauração e estar localizado ou poder ser seguramente deslocado para um ponto no grupo(s) que permanecerá ativo.
Quando a alocação cruza o limite entre os grupos, a partir do Grupo 0 para o Grupo 1 em nosso exemplo, o número maior de grupos permanece ativo até que a alocação de registradores atinge a um estado que permite a transição de volta para um número inferior de grupos ativos. Em nosso exemplo, tal estado de alocação nova permitiria a transição de volta a partir do Grupo 1 estando ativo para um estado no qual apenas o Grupo 0 está ativo.
Por exemplo, se desalocação de registradores para um número abaixo de 32 estiver pendente quando o Ponto deSalvamento/Restauração RSE e o ponto de topo da pilha estiverem localizados como mostrado na Figura 7, é necessário continuar o processamento pelo RSE até que o ponto de topo da pilha e o Ponto de Salvamento/Restauração 5 RSE estejam ambos de volta dentro do Grupo 0, então o controle de potência 37 pode desligar o outro grupo, Grupo 1, para retornar ao estado inferior como mostrado na Figura 5.
O compilador pode variar suas alocações de registradores. Para modelos destinados a otimizar odesempenho, o compilador pode alocar mais registradores para aumentar o desempenho. Contudo, com a função de controle de potência, isso aumentará as ocasiões onde mais grupos são ligados e reduzirá a economia de potência. Uma alocação de registrador menos agressiva, seja em outro modelo de processador ou quando um processador está compilando em um modo de potência inferior, alocaria um número menor de registradores à custa do desempenho. Tais operações, contudo, aumentariam as vantagens obtidas pelo controle de potência do grupo de registradores.
No exemplo, os números de registradores nos grupos definem limites para determinar quando ligar e desligar os grupos para substancialmente combinar as alocações de registradores. Na discussão acima, esses limites combinaram com os números de registradores nos grupos e desse modo corresponderam aos limites dos grupos. Em uma variação para o algoritmo acima, os acionadores ou limites para ligar ou desligar os grupos podem ser variados com deslocamentos adicionais de limites (isto é, verificar A + T ^ B_On * R), para começar a ligar os grupos antes do tempo e para retardar o desligamento dos mesmos. Isso pode ser particularmente útil para mascarar o tempo de ligar/desligar.No exemplo discutido acima, o Grupo 0 (27) está sempre LIGADO. Aqueles versados na técnica reconhecerão que para tal implementação controle de porta do estado operacional do grupo pelo controle de potência 37 é desnecessário. Portanto, seria possivel limitar o controle para ativação de desativação do status operacional de outros grupos, embora a metodologia ou algoritmo para controlar os outros grupos operariam essencialmente conforme descrito acima. Em uma implementação particularmente simples, a pilha pode ser dividida em apenas dois grupos, com um grupo LIGADO durante todo o tempo, e o outro grupo controlado LIGADO/DESLIGADO de acordo com o algoritmo de ordenamento fixado.
Por divisão do arquivo de registrador empilhado em grupos e controlando a ativação dos grupos, o processador requer potência para um número menor de registradores a maior parte do tempo.
Diversos algoritmos de controle de potência podem ser usados para ativar e desativar os grupos. 0 exemplo acima usou um exemplo de ordenamento fixo. Uma característica especifica do algoritmo fixo descrito no exemplo acima é que ele liga /desliga os grupos de forma razoavelmente infrequente. Novos grupos são apenas ligados quando uma função requer uma alocação simultânea de registradores que é maior do que o número dos registradores já ligados. Similarmente, os grupos são desligados apenas quando condições especificas são encontradas. Isso se torna adequado para limitar a freqüência na qual os grupos são ligados/desligados. Considere agora um exemplo utilizando ordenamento variável da operação de ligar/desligar dos grupos de registradores,
Como será visto a partir da discussão seguinte, com o algoritmo de ordenamento variável não é necessáriomodificar a contagem de módulo do controle de registrador e RSE devido aos loops de alocação de registrador através da pilha inteira, de uma maneira análoga àquela em uma pilha completamente ativa (por exemplo, como nas Figuras 12A e 12B) . 0 segundo algoritmo exemplar liga/desliga partes do arquivo de registrador mais freqüentemente, contudo, isso resulta em um ajuste potencialmente mais estreito dos registradores que são ligados em relação aos registradores que na realidade são necessários no momento. Em vez de ligar e desligar os grupos de registradores em uma ordem fixa, predeterminada, o ordenamento implementado pelo segundo algoritmo é completamente dependente do comportamento de código do processador.
A Figura 8 é um diagrama funcional de blocos de uma parte de um processador, implementando o controle de potência, utilizando o algoritmo de ordenamento variável. Elementos do processador são mostrados os quais são envolvidos nas operações do registrador e controle de potência dos grupos de registradores. Aqueles versados na técnica reconhecerão que o processador inclui tipicamente muitos outros elementos que não são mostrados por conveniência. Evidentemente, alguns desses elementos podem fornecer dados aos registradores ou utilizar dados a partir dos registradores na pilha, embora eles não participem diretamente no algoritmo de controle exemplar de LIGAR/DESLIGAR.
Para os propósitos desse segundo exemplo, supõe-se outra vez que a pilha de registradores físicos 125 inclua 128 registradores PRO a PR127 e é dividida em quatro grupos para fins de controle de potência. Para fins de discussão, todos os registradores são submetidos a reinicio cíclico, e todos os grupos são submetidos ao controle de potência. Outra vez, o Grupo 0 (127) inclui osregistradores PRO a PR31; e o Grupo 1 (129) inclui os registradores PR32 a PR63. Por sua vez, o Grupo 2 (131) inclui os registradores PR64 a PR95; e o Grupo 3 (133) inclui os registradores PR96 a PR127.
Embora conexões e outros elementos não sejam mostrados por conveniência, os registradores individuais na pilha 125 recebem dados a partir de outros elementos e fornecem os dados aos outros elementos do processador e/ou armazenamento separado. Por exemplo, os registradores podem ser inicialmente carregados com dados a partir da memória, a qual reside no chip de processador ou em um chip separado. Os registradores fornecem esses dados aos elementos de processamento de núcleo para processar e receber e armazenar os resultados. Os dados são transferidos para/a partir do Armazenamento Auxiliar quando os registradores são temporariamente alocados, e os dados podem ser transferidos de volta para a memória quando uma operação especifica é concluída. Em geral, as operações dos registradores no arquivo de pilha de registradores fisicos 125 são idênticas àquelas dos arquivos de pilha de registradores conhecidos e não serão discutidas aqui em detalhe, exceto onde tais operações afetam ou são influenciadas pelo algoritmo(s) de controle de potência dos presentes ensinamentos.
O status ativo dos grupos 127-133 da pilha 125 pode ser controlado em resposta aos sinais de seleção a partir do controle de potência 137, em qualquer uma de uma variedade de formas conhecidas. Para finalidade de discussão geral, a Figura 8 mostra um sinal (SRD) necessário para acionamento de registrador, e circuitos de porta genéricos para acoplar o sinal SRD aos grupos em resposta aos sinais de controle de potência do grupo a partir do controle de potência 137. Por exemplo, 141fornece seletivamente o sinal de acionamento de registrador Srd ao Grupo 0 (127) em resposta a um sinal de controle de potência a partir do controle 137, e a porta 143 fornece seletivamente o sinal de acionamento de registrador SRD ao Grupo 1 (129) em resposta a outro sinal de controle de potência a partir do controle 137. Similarmente, a porta 145 fornece seletivamente o sinal de acionamento de registrador SRD ao Grupo 2 (131) em resposta a um sinal de controle de potência a partir do controle 137, e a porta 147 fornece seletivamente o sinal de acionamento de registrador SRD ao Grupo 3 (133) em resposta a outro sinal de controle de potência a partir do controle 137.
As portas podem ser portas lógicas, chaves, combinações das mesmas, ou qualquer outro circuito configurado para fornecer o tipo apropriado de sinal aos grupos de registradores em resposta aos sinais de seleção apropriados a partir do controlador 137. Como o exemplo anterior, a ativação efetiva dos grupos de registradores individuais pode utilizar conexão de porta de relógio (como na Figura 3), conjunto de circuito para conexão de porta da voltagem de fornecimento de potência (como na Figura 4), conjunto de circuito para conexão de porta a terra, ou outros meios.
Como no exemplo anterior, o controle de potência 137 é uma máquina de estado finito, embora a máquina de estado 137 seja responsiva a um conjunto diferente de entradas e controle a ativação e desativação de grupos de acordo com o algoritmo de ordenamento variável. A máquina de estado 137 produz seletivamente os sinais para as portas 141-147 para ativar os grupos 127-133 do arquivo de pilha de registradores 25, de acordo com aquele algoritmo de controle de potência. Outra vez, a máquina de estado do controle 137 é responsiva aos sinais a partir de várioselementos do processador que interagem com a pilha 125 ou utilizam a mesma. Conexões com o controle de potência 137 são mostradas, quando elas se relacionam à ativação/desativação dos grupos de registradores, embora as conexões normais de outros elementos de processador à pilha 125/a partir da pilha 125 sejam omitidas nesse desenho para facilidade de ilustração.
No segundo exemplo, o controle de potência 137 é responsivo ao elemento de controle de processador de alto nivel 151. O controle de processador 151 pode usar diversos registradores de controle, seja controlado por software ou controlado internamente, para mudar as configurações de potência, preferências, limites, etc. usados pelo controle de potência 137.
O controle de potência 137 também é responsivo aos vários sinais a partir do elemento de controle de arquivo de registrador 153. Outra vez, o controle de arquivo de registrador 153 é o elemento que normalmente controla a alocação e operação dos registradores do arquivo de registrador empilhado 125, por exemplo, por nomeação/renomeação desses registradores para funções usadas pelos diversos processos. O controle 153 utiliza um módulo correspondendo ao número de registradores ativos, para definir o ponto, de topo da pilha (TOS) do arquivo, para identificar o registrador de Base de Pilha de Registradores (RSB), e para gerar quaisquer outros ponteiros usados para reinicio ciclico e/ou outro gerenciamento do arquivo de registrador empilhado. Nesse exemplo, o controle 153 continua a usar o módulo 128, como se todos os 128 registradores estivessem continuamente ativos.
A instrução ALLOC é uma instrução explicita (chamada) para alocar um número de registradores a umdeterminado processo. A desalocação é um retorno ou resposta indicando essencialmente uma recuperação dos registradores a partir do processo quando não mais são necessários. Essas instruções, portanto, definem o número de registradores necessários em qualquer momento determinado. 0 controle de arquivo de registrador 53 prove o controle de potência 37 com essa informação sobre o número de registradores alocados e desalocados, para uso na ativação e desativação dos grupos no arquivo de registrador empilhado. 0 controle de arquivo de registrador 53 também prove o ponteiro TOS e certos valores numéricos A e D como discutido abaixo.
0 mecanismo de salvamento de registrador (RSE) 155 salva e restaura automaticamente os dados a partir dos registradores e para os registradores no arquivo de pilha 125 conforme necessário para um Armazenamento Auxiliar mantido na memória (não mostrada). A operação do RSE 155 é substancialmente idêntica como nas operações representadas pelas Figuras 12A e 12B. Para definir a posição do Ponto de Salvamento/Restauração dos Mecanismos de Salvamento de Registro (RSEP) , o RSE 155 conta em um número de módulo correspondendo ao número de registradores ativos, o qual nesse caso é 128, essencialmente como em um processador onde todos os registradores são ativados durante todo o tempo.
Cada grupo 127-133 está sob controle de potência individual, de modo que ele pode ser ligado/desligado independentemente dos outros grupos compondo a pilha 125. 0 processador pode então operar em um modo de baixa potência, com relação à potência consumida pelos registradores físicos da pilha ou arquivo 125 por ativação dos grupos com registradores em uma faixa entre TOS e RSEP e desativando os outros grupos.O exemplo da Figura 8 utiliza um algoritmo de ordenamento que coincide dinamicamente o número de grupos simultaneamente ativos com a alocação de registrador. Nesse modo, o número de grupos acionados é determinado apenas pelo tamanho do quadro de pilha atual (ou número definido de quadros) e provavelmente os grupos serão ligados/desligados mais freqüentemente porque a posição do topo da pilha do registrador determina quais grupos estão ativados.
Pode ser útil considerar o exemplo de algoritmo de ordenamento fixo de certa forma em mais detalhe, utilizando as seguintes definições:
• Admitamos R como sendo o número de registradores em cada Grupo;
• Admitamos B como o número de grupos totais, numerados de 0 a B-l ;
o Portanto, há um total de B*R registradores empilhados;
• Admitamos TOS como sendo a posição do topo da pilha de registradores;
• Consideremos RSB como sendo a posição da base do quadro atual;
• Admitamos RSEP como sendo a posição do Ponto de Salvamento/Restauração de Mecanismo de Salvãmente de Registrador;
• Diz-se que um ponteiro aponta para o Grupo X sempre que ele apontar para um registrador no Grupo X
• Admitamos o Grupo (ponteiro) como sendo o número do grupo para o qual aponta o ponteiro
• Admitamos (X,Z) como sendo os grupos entre Xe Z. Diz-se que um grupo Y está entre os grupos X e Z se por incremento de X com aritmética de módulo B, atingimos Y antes de Z.
Observar que podemos usar o sinal de colchetes para indicar inclusive: (X,Z] significa grupos entre X e Z, incluindo Z. Nesse ordenamento variável esses grupos de modo não são ligados/desligados em qualquer ordem rigorosa, mas grupos ligados estão sempre adjacentes (diz-se que o Grupo B-l está adjacente ao Grupo 0). Os grupos são ligados/desligados sempre que TOS ou RSEP cruza um limite de grupo. Os limites correspondem aos limites de grupo, embora como discutido posteriormente, os pontos de acionamento podem estar deslocados de certo modo a partir dos limites associados aos números de registradores nos grupos. Reinicio ciclico de TOS, RSB, e RSEP apenas ocorre a partir do Grupo N-l para Grupo 0 (Grupo 3 para Grupo 0 em nosso exemplo N=4); isso significa que aritmética de módulo B*R é sempre usada para incrementar/decrementar os valores de ponteiro TOS, RSB, e RSEP.
O algoritmo para esse modo de operação é como a seguir.
1. Começar com um grupo I arbitrário ligado. Certificar que o RSB, RSEP, e TOS apontam para o grupo I.
2. Sempre que TOS estiver para ser incrementado (devido às alocações) para apontar a partir de um grupo I para um grupo J, ligar quaisquer grupos não ligados entre I e J (incluindo J) . (Ligar grupos em (I,J].)
3. Sempre que TOS estiver para ser decrementado (devido às desalocações) apontar a partir de um grupo J para um grupo I, e J != I, e Grupo (RSEP)!= J, desliga os grupos entre I e J (incluindo J). (Desligar grupos em (I,J].)
4. Sempre que RSEP estiver para ser incrementado (devido a economias de registrador) apontar a partir de um grupo I para um grupo J, e I != J, e Grupo TOS) != I, desliga os grupos I e J (incluindo I). (Desligar grupos [I,J).)
5. Sempre que RSEP estiver para ser decrementado (devido a restaurações de registrador) apontar a partir do grupo J para um grupo I, ligar quaisquer grupos não ligados entre I e J (incluindo I). (Ligar os grupos [I,J).)
6. Salvar agressivamente o registrador para o Armazenamento Auxiliar no segundo plano para minimizar o número de grupos que devem ser ligados.
Esse método trabalha transparentemente com qualquer número de grupos e registradores/grupo.
As Figuras 9-11 ilustram vários estados exemplares na operação da pilha de acordo com esse segundo algoritmo de ordenamento. A Figura 9, por exemplo, ilustra um estado no qual o algoritmo está operando com apenas um grupo ligado. Observar que o Grupo 0 (127) não precisa estar ligado para que o Grupo 1 (129) ou qualquer dos grupos superiores esteja ligado. A alocação de corrente utiliza menos do que 32 registradores. No estado ilustrado, os registradores alocados estão no Grupo 1 (129), mas estados similares são possíveis com todos os registradores alocados dentro de um dos outros três grupos de registradores. No estado ilustrado, o Ponto de Salvamento/Restauração RSE (RSEP) está em ou acima do registrador PR32, e ponteiro de topo da pilha (TOS) identifica um dos registradores superiores no Grupo 1 (27),nesse caso PR63. Nesse estado, o controle de potência 137 prove e/ou mantém o sinal LIGADO para ativar ou habilitar apenas um grupo, Grupo 1 (127), e prove sinais DESLIGADO para os outros grupos 127, 131 e 133. Os registradores ativos ou alocados estão na região entre o Ponto de Salvamento/Restauração RSE (RSEP) e o ponteiro de topo da pilha (TOS), presentemente com nenhum reinicio cíclico. 0 RSE realiza operações de descarregar e preencher abaixo do Ponto de Salvamento/Restauração RSE.
Essencialmente, o número do registrador no limite serve como um ponto de acionamento ou limite. Quando o ponteiro TOS atinge ou excede o limite, o controle de potência 137 ativa o próximo grupo. Quando o ponteiro RSEP passa do limite, o controle de potência pode desativar o grupo inferior. Em algumas implementações, os limites podem estar deslocados dos limites efetivos.
Supondo um primeiro estado ativo de grupo único, tal como aquele mostrado na Figura 9, uma transição para o estado ativo de dois grupos ocorre quando o ponteiro de topo da pilha cruza o próximo limite de grupo superior, digamos o limite entre o registrador PR63 no Grupo 1 (129) e o registrador PR64 no Grupo 2 (131) nos exemplos das Figuras 9 e 10. A Figura 10 ilustra um estado no qual o algoritmo está operando com dois grupos ligados. No exemplo, o Ponto de Salvamento/Restauração RSE está ainda em ou acima do registrador PR32. Contudo, o ponteiro de topo da pilha (TOS) se deslocou para cima e cruzou o limite de grupo para os registradores no Grupo 2 (131) o Grupo 2 e Grupo 1 têm ambos um ou mais registradores na faixa alocada a partir de RSEP para TOS. Os outros grupos não.
Antecipadamente à transição para esse estado, o controle de potência 137 aplicou o sinal LIGADO para ativar o grupo 2 (131), enquanto mantendo o Grupo 1 (129) LIGADO.O controle de potência 137 continua para prover sinais DESLIGADO para os outros dois grupos 127 e 133, nesse exemplo de estado, de modo que aqueles grupos estão ociosos. Técnicas similares são usadas para ligar grupos adicionais quando o topo da pilha se desloca para cima e reinicia ciclicamente para os registradores na base da pilha (no Grupo 0) . Os grupos de registradores são desligados de uma forma análoga, quando o Ponto de Salvamento/Restauração RSE se desloca para cima através da pilha e reinicia ciclicamente para a base da pilha.
No exemplo, a transição foi de um grupo ativo para 2 e de volta para 1. Transições similares ocorrem quando a alocação de registradores e ponteiros associados se desloca e quando um número maior de grupos é ativado para suportar alocações de números maiores de registradores, quer dizer transições para e a partir de estados utilizando três grupos ativos de registradores e para e a partir de estados utilizando todos os quatro grupos de registradores.
A Figura 11 ilustra um estado ativo de dois grupos, contudo, nesse estado o algoritmo está operando dois grupos ligados e um topo da pilha reiniciado. O Ponto de Salvamento/Restauração RSE (RSEP) identifica um registrador acima e PR96 no Grupo 3 (133), e o ponteiro de topo da pilha (TOS) identifica um registrador acima e PRO no Grupo 0 (127). Nesse estado, o controle de potência 137 aplicou o sinal LIGADO para ativar o Grupo 0 (127), enquanto mantendo o Grupo 3 (133) LIGADO. O controle de potência 137 prove sinais DESLIGADO para os outros dois grupos 129 e 131, nesse exemplo de estado, de modo que aqueles grupos estão ociosos.
Em uma variação para o algoritmo de ordenamento variável, os acionadores para ligar ou desligar os grupospodem ser variados com deslocamentos adicionais de limite para começar a ligar os grupos antecipadamente e retardar os seus desligamentos. Por exemplo, TOS + T pode ser verificado em vez de TOS para determinar se liga os grupos durante alocação de registrador; e limites similares podem ser usados para os outros acionadores. Isso pode ser particularmente útil para mascarar o tempo de ligação/desligamento dos grupos.
Além disso, os limites usados para acionar a ativação/desativação de grupo e a agressividade do mecanismo RSE podem ser variados em tempo de execução em resposta a diversos fatores, tal como consumo de energia e calor, desempenho do processador e freqüência da ativação/desativação dos grupos. Isso pode ser útil para sintonizar a freqüência das ativações de grupo conforme desej ado.
Como o primeiro exemplo, o ordenamento variável do controle de potência dos grupos de registradores permite que o processador ligue um número menor de registradores a maior parte do tempo.
Uma característica especifica do algoritmo de ordenamento variável é que ele liga/desliga os grupos de forma razoavelmente freqüente em uma tentativa de combinar tão proximamente quanto possível o número de registradoresligados com a utilização dos registradores atuais. Isso se torna adequado quando a ligação/desligamento não significa custos significativos e quando é importante minimizar o número de grupos ligados. Isso também não altera a aritmética usada para ajustar os ponteiros usados para gerenciar a pilha de registradores.
Embora o precedente tenha descrito o que é considerado como o melhor modo e/ou outros exemplos; é entendido que diversas modificações podem ser feitas nomesmo, e que a matéria aqui revelada pode ser implementada de diversas formas e exemplos, e que os ensinamentos podem ser empregados em diversas aplicações, somente algumas das quais foram descritas aqui. Pretende-se por intermédio das reivindicações a seguir reivindicar quaisquer e todas as aplicações, modificações e variações que estejam abrangidas pelo verdadeiro escopo dos presentes ensinamentos.

Claims (25)

1. Sistema de registradores empilhados para uso em um processador, o sistema compreendendo:uma pilha de registradores, compreendendo uma pluralidade de grupos de. registradores, cada grupo de registradores compreendendo pelo menos um dos registradores;um controlador, responsivo à informação relacionada às alocações de registradores dentro da pilha, para seletivamente controlar o status LIGADO/DESLIGADO de um ou mais dos grupos de registradores,em que o controlador é responsivo ao número de registradores alocados dentro da pilha, para aumentar o número de grupos que estão LIGADOS para satisfazer pelo menos uma alocação aumentando o número de registradores, e para diminuir o número de grupos que estão LIGADOS em resposta a pelo menos uma alocação de um número diminuído de registradores.
2. Sistema, de acordo com a reivindicação 1, compreendendo ainda circuitos para conectar seletivamente os grupos a um terminal de fornecimento de potência e desconectar seletivamente os grupos a partir do terminal de fornecimento de potência, em resposta ao controlador, para controlar quando cada um dos grupos de registradores está LIGADO e quando cada um dos grupos de registradores está DESLIGADO.
3. Sistema, de acordo com a reivindicação 1, compreendendo ainda circuitos de porta para seletivamente fornecer um sinal de relógio de sistema aos grupos, em resposta ao controlador para controlar quando cada um dos grupos de registradores está LIGADO.
4. Sistema, de acordo com a reivindicação 1, em que:um primeiro dos grupos compreende um número de registradores;apenas o primeiro grupo está LIGADO, para todas as alocações que requerem um número de registradores menor do que ou igual a um limite tendo uma relação predeterminada com o número de registradores no primeiro grupo; eo controlador LIGA um próximo grupo sucessivo dos grupos, em resposta a uma alocação aumentando o número de registradores para um número de registradores maior do que o limite.
5. Sistema, de acordo com a reivindicação 4, em que quando o próximo grupo sucessivo dos grupos tiver sido LIGADO, o controlador DESLIGA o próximo grupo sucessivo dos grupos em resposta a uma alocação subseqüente diminuindo o número de registradores para um número de registradores menor do que ou igual a outro limite tendo uma relação predeterminada com o número de registradores no primeiro grupo.
6. Sistema, de acordo com a reivindicação 5, em que pelo menos um dos limites é igual ao número de registradores no primeiro grupo.
7. Sistema, de acordo com a reivindicação 5, em que pelo menos um dos limites tem um deslocamento predeterminado a partir do número de registradores no primeiro grupo.
8. Sistema, de acordo com a reivindicação 1, em que a alocação de registradores indica um ponto de topo da pilha dentro da pilha de registradores, e o controlador seqüencialmente LIGA os grupos de registradores quando o ponto de topo da pilha se move sucessivamente para os grupos.
9. Sistema, de acordo com a reivindicação 7, emque a operação do processador utilizando os registradores identifica um ponto de salvamento/restauração, e o controlador seqüencialmente DESLIGA os grupos de registradores quando o ponto de salvamento/restauração se move sucessivamente para fora dos grupos.
10. Sistema, de acordo com a reivindicação 1, em que pelo menos um dos grupos compreende pelo menos 32 registradores.
11. Sistema, de acordo com a reivindicação 1, em que a pilha de registradores compreende pelo menos quatro dos grupos de registradores, e cada um dos quatro grupos de registradores compreende pelo menos 32 registradores.
12. Sistema de registradores empilhados para uso em um processador, o sistema compreendendo:uma pilha de registradores, compreendendo:um primeiro grupo de registradores compreendendo um primeiro número de registradores, eum segundo grupo de registradores compreendendo um segundo número de registradores;meio para ativar e desativar seletivamente pelo menos um entre o primeiro e o segundo grupo de registradores em resposta às alocações e desalocações de registradores para processar operações do processador, para ajustar dinamicamente o número dos grupos que estão ativos como uma função dos números de registradores alocados.
13. Sistema, de acordo com a reivindicação 12, em que o meio:mantém apenas o primeiro grupo ativo em resposta a qualquer alocação exigindo um número de registradores menor ou igual a um limite tendo uma relação predeterminada com o primeiro número de registradores; ehabilita o segundo grupo de modo que ambos, o primeiro grupo, e o segundo grupo, estej am ativos, parasatisfazer qualquer alocação exigindo um número de registradores maior do que o limite.
14. Sistema, de acordo com a reivindicação 13, compreendendo ainda um terceiro grupo de registradores compreendendo um terceiro número de registradores, em que:ambos, o primeiro grupo, e o segundo grupo, estão ativos, mas não o terceiro grupo de registradores, para satisfazer qualquer alocação exigindo um número de registradores maior do que o limite e menos do que ou igual a outro limite tendo uma relação predeterminada com o segundo número de registradores; eo primeiro, segundo e terceiro grupos são ativos, para satisfazer qualquer alocação exigindo um número de registradores maior do que o outro limite.
15. Sistema, de acordo com a reivindicação 12, em que:a alocação dos registradores indica um ponto de topo da pilha dentro da pilha de registradores; eo meio ativa seqüencialmente o primeiro e o segundo grupos de registradores quando o ponto de topo da pilha se move sucessivamente para os grupos.
16. Sistema, de acordo com a reivindicação 15, em que:a operação do processador utilizando os registradores identifica um ponto de salvamento/restauração para operação de descarregamento de um mecanismo de salvamento de registrador, eo meio desativa seqüencialmente o primeiro e o segundo grupo de registradores quando o ponto de salvamento/restauração se move sucessivamente para fora dos grupos.
17. Sistema, de acordo com a reivindicação 12, em que os meios compreendem um controlador de potênciaimplementado como uma máquina de estado finito.
18. Método de controle de potência para operar registradores de um arquivo de registrador empilhado em um processador, o método compreendendo:receber informação com relação às alocações de registradores no arquivo de registrador empilhado;em resposta a uma alocação de um número de registradores menor ou igual a um limite tendo uma relação predeterminada com um número de registradores formando um primeiro grupo no arquivo de registrador empilhado, manter ativo o primeiro grupo de registradores e manter ociosos os registradores formando um segundo grupo no arquivo de registrador empilhado; eem resposta a uma alocação de um número de registradores maior do que o limite, manter o primeiro grupo de registradores ativo e ativar o segundo grupo de registradores.
19. Método, de acordo com a reivindicação 18, compreendendo ainda, em resposta a uma alocação de um número de registradores menor ou igual a outro limite tendo uma relação predeterminada com o número de registradores formando o primeiro grupo recebido quando o segundo grupo está ativo, manter ativo o primeiro grupo de registradores e desativar o segundo grupo de registradores.
20. Método, de acordo com a reivindicação 19, em que pelo menos um dos limites é igual ao número de registradores formando o primeiro grupo.
21. Método, de acordo com a reivindicação 19, em que pelo menos um dos limites é deslocado a partir do número de registradores formando o primeiro grupo.
22. Método de controle de potência para operar os registradores de um arquivo de registrador empilhado em um processador, o método compreendendo:receber informação com relação às alocações de registradores no arquivo de registrador empilhado, incluindo um ponteiro de topo da pilha respectivo e um ponto de salvamento/restauração respectivo; eem resposta a cada alocação:operar qualquer grupo do arquivo de registrador empilhado tendo pelo menos um registrador em uma faixa a partir do ponto de salvamento/restauração respectivo até o ponteiro de topo da pilha respectivo;enquanto que qualquer grupo do arquivo de registrador empilhado não tendo pelo menos um registrador na faixa a partir do ponto de salvamento/restauração respectivo até o ponteiro de topo da pilha respectivo está ocioso.
23. Método, de acordo com a reivindicação 22, em que cada grupo do arquivo de registrador empilhado não tendo pelo menos um registrador na faixa a partir do ponto de salvamento/restauração, respectivo, até o ponteiro de topo da pilha respectivo é mantido ocioso por desabilitação da potência ao mesmo ou desconectando do mesmo um sinal de relógio de processador.
24. Método, de acordo com a reivindicação 22, em que:cada um dos grupos é seletivamente LIGADO em seqüência, quando as alocações deslocam os ponteiros de topo da pilha respectivos através dos grupos do arquivo de registrador empilhado; ecada um dos grupos é seletivamente DESLIGADO em seqüência, quando as alocações deslocam os pontos de salvamento/restauração respectivos através dos grupos do arquivo de registrador empilhado.
25. Método de controle de potência para operar registradores de um arquivo de registrador empilhado em umprocessador, o método compreendendo:receber informação com relação às alocações dos registradores no arquivo de registrador empilhado;seletivamente ativar e desativar a operação de um ou mais de uma pluralidade de grupos de registradores dentro do arquivo de registrador empilhado em correspondência ao número de exigências de registradores as alocações recebidas.
BRPI0608556-3A 2005-02-25 2006-02-24 redução de potência por desligamento de partes de um arquivo de registrador empilhado BRPI0608556A2 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/066,958 US7647481B2 (en) 2005-02-25 2005-02-25 Reducing power by shutting down portions of a stacked register file
PCT/US2006/006653 WO2006091846A2 (en) 2005-02-25 2006-02-24 Reducing power by shutting down portions of a stacked register file

Publications (1)

Publication Number Publication Date
BRPI0608556A2 true BRPI0608556A2 (pt) 2010-01-12

Family

ID=36695178

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0608556-3A BRPI0608556A2 (pt) 2005-02-25 2006-02-24 redução de potência por desligamento de partes de um arquivo de registrador empilhado

Country Status (9)

Country Link
US (1) US7647481B2 (pt)
EP (1) EP1851618A2 (pt)
JP (1) JP4801100B2 (pt)
KR (1) KR100976107B1 (pt)
CN (1) CN101160559B (pt)
BR (1) BRPI0608556A2 (pt)
IL (1) IL185426A0 (pt)
TW (1) TW200707178A (pt)
WO (1) WO2006091846A2 (pt)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1465069B1 (en) * 2003-04-01 2017-01-25 Sap Se Method and computer system for activation of source files
US7634621B1 (en) * 2004-07-13 2009-12-15 Nvidia Corporation Register file allocation
TW200746161A (en) * 2005-12-21 2007-12-16 Nxp Bv Power partitioning memory banks
US8429634B2 (en) * 2006-07-26 2013-04-23 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device, memory circuit, and machine language program generation device, and method for operating semiconductor device and memory circuit
US20080072015A1 (en) * 2006-09-18 2008-03-20 Julier Michael A Demand-based processing resource allocation
US20080109670A1 (en) * 2006-11-06 2008-05-08 Reino Johansson Power control for memories
US7900018B2 (en) * 2006-12-05 2011-03-01 Electronics And Telecommunications Research Institute Embedded system and page relocation method therefor
US8407715B2 (en) * 2007-04-30 2013-03-26 National Tsing Hua University Live range sensitive context switch procedure comprising a plurality of register sets associated with usage frequencies and live set information of tasks
US8082387B2 (en) 2007-10-29 2011-12-20 Micron Technology, Inc. Methods, systems, and devices for management of a memory system
US7509511B1 (en) 2008-05-06 2009-03-24 International Business Machines Corporation Reducing register file leakage current within a processor
DE102009019891B3 (de) * 2009-05-04 2010-11-25 Texas Instruments Deutschland Gmbh Mikrocontroller- oder Mikroprozessoreinheit und Verfahren zum Betreiben derselben
JP4830164B2 (ja) * 2009-07-07 2011-12-07 エヌイーシーコンピュータテクノ株式会社 情報処理装置及びベクトル型情報処理装置
US9367462B2 (en) * 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors
JP5505195B2 (ja) * 2010-08-20 2014-05-28 富士通株式会社 メモリの制御装置、及び制御方法
US9298460B2 (en) 2011-11-29 2016-03-29 International Business Machines Corporation Register management in an extended processor architecture
US9021280B1 (en) * 2013-03-12 2015-04-28 Pmc-Sierra Us, Inc. Power saving for FIFO buffer without performance degradation
US9256433B2 (en) * 2013-03-15 2016-02-09 Intel Corporation Systems and methods for move elimination with bypass multiple instantiation table
KR20140126190A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법
US10339624B2 (en) 2014-12-22 2019-07-02 Intel Corporation Reversed polish notation processing elements
US10372500B1 (en) 2016-02-17 2019-08-06 Apple Inc. Register allocation system
MA44821A (fr) * 2016-02-27 2019-01-02 Kinzinger Automation Gmbh Procédé d'allocation d'une pile de registres virtuels dans une machine à pile
US10403351B1 (en) 2018-02-22 2019-09-03 Advanced Micro Devices, Inc. Save and restore scoreboard
US20230068637A1 (en) * 2021-09-01 2023-03-02 International Business Machines Corporation Routing instruction results to a register block of a subdivided register file based on register block utilization rate

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0676691A3 (en) * 1994-04-06 1996-12-11 Hewlett Packard Co Device for saving and restoring registers in a digital computer.
US5834961A (en) * 1996-12-27 1998-11-10 Pacific Communication Sciences, Inc. Gated-clock registers for low-power circuitry
US6263401B1 (en) * 1997-09-30 2001-07-17 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for transferring data between a register stack and a memory resource
US6345354B1 (en) * 1999-04-29 2002-02-05 Mips Technologies, Inc. Register file access
US6845445B2 (en) * 2000-05-12 2005-01-18 Pts Corporation Methods and apparatus for power control in a scalable array of processor elements
CN1146796C (zh) * 2000-07-18 2004-04-21 多思资讯(集团)有限公司 堆栈式寄存器堆及其控制方法
JP2004102799A (ja) * 2002-09-11 2004-04-02 Nec Electronics Corp レジスタファイル及びレジスタファイルの設計方法
AU2003283680A1 (en) 2002-12-04 2004-06-23 Koninklijke Philips Electronics N.V. Software-based control of microprocessor power dissipation
CN1720494A (zh) * 2002-12-04 2006-01-11 皇家飞利浦电子股份有限公司 减少微处理器的功率消耗的寄存器堆选通方法
JP2004334296A (ja) * 2003-04-30 2004-11-25 Kyushu Inst Of Technology 電力制御装置
US7231509B2 (en) * 2005-01-13 2007-06-12 International Business Machines Corporation Extended register bank allocation based on status mask bits set by allocation instruction for respective code block

Also Published As

Publication number Publication date
WO2006091846A3 (en) 2007-06-14
EP1851618A2 (en) 2007-11-07
KR20070107784A (ko) 2007-11-07
TW200707178A (en) 2007-02-16
JP2008539472A (ja) 2008-11-13
CN101160559B (zh) 2011-06-29
KR100976107B1 (ko) 2010-08-16
CN101160559A (zh) 2008-04-09
IL185426A0 (en) 2008-01-06
WO2006091846A2 (en) 2006-08-31
JP4801100B2 (ja) 2011-10-26
US20060195707A1 (en) 2006-08-31
US7647481B2 (en) 2010-01-12

Similar Documents

Publication Publication Date Title
BRPI0608556A2 (pt) redução de potência por desligamento de partes de um arquivo de registrador empilhado
KR100435976B1 (ko) 데이타처리장치
KR100496429B1 (ko) 저전력 프로세서의 동적 전력 제어 방법 및 장치
US7389403B1 (en) Adaptive computing ensemble microprocessor architecture
JP3505018B2 (ja) 半導体集積回路
US9063730B2 (en) Performing variation-aware profiling and dynamic core allocation for a many-core processor
US20080313482A1 (en) Power Partitioning Memory Banks
CA2630594C (en) Expansion of a stacked register file using shadow registers
US20130205104A1 (en) Finite State Machine for System Management
US20070136508A1 (en) System Support Storage and Computer System
CN104205000A (zh) 基于电路的动态电容控制功率门电路
US20060225139A1 (en) Semiconductor integrated circuit
Lynch et al. Processor choice for wireless sensor networks
US11755096B2 (en) Method and apparatus for selectable high performance or low power processor system
CN104425014A (zh) 序列式nand型闪存、闪存装置及其操作方法
JP2004038642A (ja) マルチプロセッサ
CN109375543A (zh) Dvs电压管理装置、系统及方法、存储介质、计算机设备
CN109582367A (zh) 一种带有流水线时分复用调度器的处理器结构
Vara Rodríguez et al. Sistemas para determinar la posición y orientación de herramientas quirúrgicas en operaciones de cirugía laparoscópica
JP2008059455A (ja) マルチプロセッサ
US20120151227A1 (en) Apparatus and method for adaptive back bias control of an integrated circuit
US9698797B1 (en) Hierarchical feedback-controlled oscillator techniques
Six et al. 8-bit AVR Microcontroller with 32K Bytes In-System Programmable Flash
Sultan et al. Robotic System for Cleaning Photovoltaic Panels
Park et al. Maximizing the filter rate of L0 compiler-managed instruction stores by pinning

Legal Events

Date Code Title Description
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 6A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2161 DE 05/06/2012.