BR112021016708A2 - Aparelho, método, sistema, e meio de armazenamento legível por computador - Google Patents

Aparelho, método, sistema, e meio de armazenamento legível por computador Download PDF

Info

Publication number
BR112021016708A2
BR112021016708A2 BR112021016708-0A BR112021016708A BR112021016708A2 BR 112021016708 A2 BR112021016708 A2 BR 112021016708A2 BR 112021016708 A BR112021016708 A BR 112021016708A BR 112021016708 A2 BR112021016708 A2 BR 112021016708A2
Authority
BR
Brazil
Prior art keywords
interconnect
tube stage
mesh
signal
processor
Prior art date
Application number
BR112021016708-0A
Other languages
English (en)
Inventor
Tejpal Singh
Yedidya Hilewitz
Ankush Varma
Yen-Cheng Liu
Krishnakanth V.Sistla
Jeffrey Chamberlain
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Publication of BR112021016708A2 publication Critical patent/BR112021016708A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7817Specially adapted for signal processing, e.g. Harvard architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • 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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)
  • Multi Processors (AREA)

Abstract

aparelho, método, sistema, e meio de armazenamento legível por computador. trata-se, em uma modalidade, de um aparelho que inclui uma interconexão para acoplar uma pluralidade de circuitos de processamento. a interconexão pode incluir um circuito de estágio de tubo acoplado entre um primeiro circuito de processamento e um segundo circuito de processamento. esse circuito de estágio de tubo pode incluir: um componente de estágio de tubo que tem uma primeira entrada para receber um sinal por meio da interconexão e uma primeira saída para emitir o sinal; e um circuito de seleção que tem uma primeira entrada para receber o sinal da primeira saída do componente de estágio de tubo e uma segunda entrada para receber o sinal por meio de um caminho de desvio, em que o circuito de seleção é dinamicamente controlável para emitir o sinal recebido da primeira saída do componente de estágio de tubo ou o sinal recebido por meio do caminho de desvio. outras modalidades são descritas e reivindicadas.

Description

“APARELHO, MÉTODO, SISTEMA, E MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR” CAMPO DA TÉCNICA
[001] As modalidades se referem a controle dinâmico de uma interconexão.
ANTECEDENTES DA INVENÇÃO
[002] Processadores modernos são tipicamente formados por núcleos e conjunto de circuitos de processamento adicionais. Várias estruturas de interconexão são usadas para acoplar núcleos e outro conjunto de circuitos. O crescimento da área de conjunto de circuitos de processamento cria desafios de frequência na estrutura de interconexão, em toda a sua faixa de tensão de operação. Há uma lacuna crescente entre as características de operação (por exemplo, tensão e frequência conforme identificado nas curvas de frequência/tensão (F/V)) entre os caminhos de comunicação de interconexão e a lógica da interconexão. Uma curva F/V para caminhos de comunicação de interconexão pode limitar a tensão de operação, forçando assim toda a interconexão a operar em um perfil de potência não ideal, em que essa lacuna aumenta em tensões mais altas. Uma vez que as vias de comunicação de interconexão podem ser um pequeno componente de toda a interconexão, não é ideal deixá-las definir o perfil de potência da interconexão. Com as técnicas atuais em ambientes com restrição de energia, operar uma interconexão em uma tensão artificialmente alta causa perda de desempenho.
BREVE DESCRIÇÃO DOS DESENHOS
[003] A Figura 1 é um diagrama de blocos de uma porção de um sistema de acordo com uma modalidade da presente invenção.
[004] A Figura 2 é um diagrama de blocos de um processador de acordo com uma modalidade da presente invenção.
[005] A Figura 3 é um diagrama de blocos de um processador de múltiplos domínios de acordo com outra modalidade da presente invenção.
[006] A Figura 4 é uma modalidade de um processador que inclui múltiplos núcleos.
[007] A Figura 5 é um diagrama de blocos de uma microarquitetura de um núcleo de processador de acordo com uma modalidade da presente invenção.
[008] A Figura 6 é um diagrama de blocos de uma microarquitetura de um núcleo de processador de acordo com outra modalidade.
[009] A Figura 7 é um diagrama de blocos de uma microarquitetura de um núcleo de processador de acordo com ainda outra modalidade.
[010] A Figura 8 é um diagrama de blocos de uma microarquitetura de um núcleo de processador de acordo com ainda uma modalidade adicional.
[011] A Figura 9 é um diagrama de blocos de um processador de acordo com outra modalidade da presente invenção.
[012] A Figura 10 é um diagrama em blocos de um SoC representativo de acordo com uma modalidade da presente invenção.
[013] A Figura 11 é um diagrama de blocos de outro SoC exemplificativo de acordo com uma modalidade da presente invenção.
[014] A Figura 12 é um diagrama de blocos de um sistema exemplificativo com o qual as modalidades podem ser usadas.
[015] A Figura 13 é um diagrama de blocos de outro sistema exemplificativo com o qual as modalidades podem ser usadas.
[016] A Figura 14 é um diagrama de blocos de um sistema de computador representativo.
[017] A Figura 15 é um diagrama de blocos de um sistema de acordo com uma modalidade da presente invenção.
[018] A Figura 16 é um diagrama de blocos que ilustra um sistema de desenvolvimento de núcleo IP usado para fabricar um circuito integrado para realizar operações de acordo com uma modalidade.
[019] A Figura 17 é um diagrama de blocos de um circuito de estágio de tubo controlável de acordo com uma modalidade da presente invenção.
[020] A Figura 18 é um diagrama de blocos que ilustra o controle dinâmico de latência de ciclo em uma interconexão de acordo com uma modalidade.
[021] As Figuras 19A-19B são diagramas de fluxo de um método de acordo com uma modalidade da presente invenção.
[022] A Figura 20 é um diagrama de fluxo de um método de acordo com outra modalidade da presente invenção.
[023] A Figura 21 é uma ilustração gráfica de curvas de frequência-tensão para um conjunto de circuitos de interconexão de um processador.
DESCRIÇÃO DETALHADA
[024] Em várias modalidades, uma estrutura de interconexão inclui um conjunto de circuitos para configurar dinamicamente latências controláveis na interconexão. Mais especificamente, nas modalidades, um ou mais estágios de tubo podem ser dinamicamente adicionados ou removidos dos caminhos de comunicação da interconexão. Tal atualização dinâmica para estruturas de interconexão pode ocorrer no contexto de um processo de mudança de estado de desempenho. É também possível atualizar dinamicamente a operação de estágio de tubo nesse contexto mesmo que a tensão e/ou frequência não mude. Embora as modalidades no presente documento sejam descritas no contexto de uma interconexão de malha, entende-se que as técnicas são aplicáveis a outras estruturas de interconexão.
[025] Em uma modalidade, para cargas de trabalho sensíveis à latência sem malha de alta frequência, tais estágios de tubo são adicionados, e em baixa frequência os mesmos podem ser dinamicamente removidos sob controle de gerenciamento de energia (PM). Dessa forma, as modalidades permitem que estados de desempenho de caminhos de comunicação de interconexão acompanhem estados de desempenho de lógica da interconexão. Ou seja, as modalidades permitem que uma curva F/V de interconexão acompanhe uma curva F/V de IP de malha coerente escalável (SCF) para paradas de malha e lógica relacionada sem aumentar requisitos de área e energia. Com as modalidades, uma curva F/V de malha é otimizada para não ser um limitador em comparação com uma curva F/V de IP de SCF. Para saltos críticos de latência em um tecido, estágios de tubo adicionais podem ser inseridos, por exemplo, em um ponto predeterminado na curva F/V.
[026] Em uma modalidade, um tecido de malha é uma combinação de tecidos de anel horizontal e vertical. Com essa disposição, há flexibilidade para permanecer no tecido de malha ou curvas F/V de IP em qualquer tensão, o que por sua vez permite uma escolha dinâmica entre a operação de tecido de baixa latência com maior potência ou economia de energia na operação de tecido de alta latência. Além disso, a largura de banda de malha pode ser aumentada em tensão mais baixa com base nas necessidades de carga de trabalho. A economia de energia pode ser alcançada habilitando-se a operação de frequência mais alta na mesma tensão. Habilitando-se uma largura de banda maior em uma malha em uma tensão mais baixa, a eficiência de certas cargas de trabalho como cargas de trabalho de aprendizado de máquina aumenta, em que a largura de banda e a potência da malha são importantes.
[027] Embora as modalidades que se seguem sejam descritas com referência à economia de energia e eficiência energética em circuitos integrados específicos, como em plataformas de computação ou processadores, outras modalidades são aplicáveis a outros tipos de circuitos integrados e dispositivos lógicos.
Técnicas e instruções similares de modalidades descritas no presente documento podem ser aplicadas a outros tipos de circuitos ou dispositivos semicondutores que também podem se beneficiar da melhor eficiência energética e economia de energia.
Por exemplo, as modalidades reveladas não são limitadas a qualquer tipo específico de sistemas de computador.
Ou seja, as modalidades reveladas podem ser usadas em muitos tipos de sistemas diferentes, que variam de computadores servidores (por exemplo, torre, rack, blade, microsservidor e assim por diante), sistemas de comunicação, sistemas de armazenamento, computadores desktop de qualquer configuração, computadores dos tipos laptop, notebook e tablet (incluindo tablets 2:1, phablets e assim por diante) e também podem ser usados em outros dispositivos, como dispositivos portáteis, sistemas em um chip (SoCs) e aplicativos integrados.
Alguns exemplos de dispositivos portáteis incluem telefones celulares, como telefones inteligentes, dispositivos de protocolo de Internet, câmeras digitais, assistentes digitais pessoais (PDAs) e PCs portáteis.
Os aplicativos integrados podem incluir tipicamente um microcontrolador, um processador de sinal digital (DSP), computadores em rede (NetPC), decodificadores de sinais, concentradores de rede, comutadores de rede de longa distância (WAN), dispositivos utilizáveis junto ao corpo ou qualquer outro sistema que possa realizar as funções e operações ensinadas abaixo.
Além disso, as modalidades podem ser implementadas em terminais móveis que têm funcionalidade de voz padrão, como telefones celulares, telefones inteligentes e phablets e/ou em terminais não móveis sem uma capacidade de comunicação de função de voz sem fio padrão, como muitos dispositivos utilizáveis junto ao corpo, computadores dos tipos tablet, notebook e desktop, microsservidores, servidores e assim por diante.
Ademais, os aparelhos, métodos e sistemas descritos no presente documento não se limitam a dispositivos de computação físicos, mas também podem se referir a otimizações de software para eficiência e economia de energia.
Como ficará prontamente evidente na descrição abaixo, as modalidades de métodos, aparelhos e sistemas descritos no presente documento (seja em referência a hardware, firmware, software ou uma combinação dos mesmos) são vitais para uma futura “tecnologia verde”, como para economia de energia e eficiência energética em produtos que abrangem uma grande parte da economia dos EUA.
[028] Com referência agora à Figura 1, é mostrado um diagrama de blocos de uma porção de um sistema de acordo com uma modalidade da presente invenção. Como mostrado na Figura 1, o sistema 100 pode incluir vários componentes, que incluem um processador 110 que, como mostrado, é um processador de múltiplos núcleos. O processador 110 pode ser acoplado a uma fonte de alimentação 150 por meio de um regulador de tensão externo 160, que pode realizar uma primeira conversão de tensão para fornecer uma tensão regulada primária ao processador 110.
[029] Conforme observado, o processador 110 pode ser um processador de matriz única que inclui múltiplos núcleos 120a-120n. Além disso, cada núcleo pode estar associado a um regulador integrado de tensão (IVR) 125a-125n que recebe a tensão regulada primária e gera uma tensão de operação que será fornecida a um ou mais agentes do processador associado ao IVR. Consequentemente, uma implementação de IVR pode ser fornecida para permitir um controle refinado de tensão e, portanto, de energia e desempenho de cada núcleo individual. Desse modo, cada núcleo pode operar em uma tensão e frequência independentes, permitindo grande flexibilidade e proporcionando amplas oportunidades para equilibrar o consumo de energia com o desempenho. Em algumas modalidades, o uso de múltiplos IVRs permite o agrupamento de componentes em planos de energia separados, de modo que a energia seja regulada e fornecida pelo IVR apenas para aqueles componentes no grupo. Durante o gerenciamento de energia, um dado plano de energia de um IVR pode ser desenergizado ou desligado quando o processador é colocado em um certo estado de baixo consumo de energia, enquanto outro plano de energia de outro IVR permanece ativo ou totalmente alimentado.
[030] Ainda com referência à Figura 1, componentes adicionais podem estar presentes dentro do processador, incluindo uma interface de entrada/saída 132, outra interface 134 e um controlador de memória integrado 136. Conforme observado, cada um desses componentes pode ser alimentado por outro regulador integrado de tensão 125x. Em uma modalidade, a interface 132 pode permitir a operação para um Intel®. A interconexão Quick Path Interconnect (QPI), que fornece enlaces ponto a ponto (PtP) em um protocolo coerente de cache que inclui múltiplas camadas, que incluem uma camada física, uma camada de enlace e uma camada de protocolo. Por sua vez, a interface 134 pode se comunicar por meio de um protocolo Peripheral Component Interconnect Express (PCIe™).
[031] Também é mostrada uma unidade de controle de energia (PCU) 138, que pode incluir hardware, software e/ou firmware para realizar operações de gerenciamento de energia em relação ao processador 110. Como visto, a PCU 138 fornece informações de controle para o regulador de tensão externo 160 por meio de uma interface digital para fazer com que o regulador de tensão gere a tensão regulada apropriada. A PCU 138 também fornece informações de controle para IVRs 125 por meio de outra interface digital para controlar a tensão de operação gerada (ou para fazer com que um IVR correspondente seja desativado em um modo de baixa energia). Em várias modalidades, a PCU 138 pode incluir uma variedade de unidades lógicas de gerenciamento de energia para realizar o gerenciamento de energia com base em hardware. Tal gerenciamento de energia pode ser totalmente controlado pelo processador (por exemplo, por vários hardwares de processador, e que pode ser acionado por carga de trabalho e/ou energia, restrições térmicas ou outras restrições do processador) e/ou o gerenciamento de energia pode ser realizado em resposta a fontes externas (como uma plataforma ou fonte de gerenciamento de energia ou software de sistema).
[032] Além disso, embora a Figura 1 mostre uma implementação em que a PCU 138 é um mecanismo de processamento separado (que pode ser implementado como um microcontrolador), entende-se que, em alguns casos, além de ou em vez de um controlador de energia dedicado, cada núcleo pode incluir ou estar associado a um agente de controle de energia para controlar de forma mais autônoma o consumo de energia de forma independente. Em alguns casos, uma arquitetura de gerenciamento de energia hierárquica pode ser fornecida, com a PCU 138 em comunicação com agentes de gerenciamento de energia correspondentes associados a cada um dos núcleos 120. Uma unidade lógica de gerenciamento de energia incluída na PCU 138 pode ser um circuito de controle de atualização de interconexão para controlar dinamicamente o roteamento de uma estrutura de interconexão, como um tecido para controlar dinamicamente a latência, com base pelo menos em parte na tensão de operação, conforme descrito no presente documento.
[033] Embora não seja mostrado para facilidade de ilustração, entende-se que componentes adicionais podem estar presentes dentro do processador 110, como conjunto de circuitos de controle adicional, e outros componentes, como memórias internas, por exemplo, um ou mais níveis de uma hierarquia de memória cache e assim por diante. Além disso, embora mostrado na implementação da Figura 1 com um regulador de tensão integrado, as modalidades não são tão limitadas.
[034] Nota-se que as técnicas de gerenciamento de energia descritas no presente documento podem ser independentes e complementares a um mecanismo de gerenciamento de energia baseado em sistema operacional (OS) (OSPM). De acordo com uma técnica OSPM exemplificativa, um processador pode operar em vários estados ou níveis de desempenho, os chamados estados P, ou seja, de P0 a PN. Em geral, o estado de desempenho de P1 pode corresponder ao estado de desempenho mais alto garantido que pode ser solicitado por um OS. Além desse estado P1, o OS pode solicitar adicionalmente um estado de desempenho mais alto, ou seja, um estado P0. Dessa forma, esse estado P0 pode ser um estado de modo oportunístico ou turbo no qual, quando o orçamento de energia e/ou térmico está disponível, o hardware de processador pode configurar o processador ou pelo menos porções do mesmo para operar em uma frequência mais alta que a garantida. Em muitas implementações, um processador pode incluir múltiplas frequências assim chamadas de bin acima da frequência máxima garantida P1, o que excede uma frequência de pico máxima do processador específico, conforme fundido ou, de outro modo, gravado no processador durante a fabricação. Além disso, de acordo com um mecanismo OSPM, um processador pode operar em vários estados ou níveis de energia. Com relação a estados de energia, um mecanismo OSPM pode especificar diferentes estados de consumo de energia, geralmente denominados de estados C, C0, C1 a estados Cn. Quando um núcleo é ativo, o mesmo é executado em um estado C0, e quando o núcleo está ocioso, o mesmo pode ser colocado em um estado de baixa energia de núcleo, também denominado de estado C diferente de zero no núcleo (por exemplo, estados C1 a C6), em que cada estado C está em um nível de consumo de energia mais baixo (de modo que C6 esteja em um estado mais profundo de baixa energia que o C1 e assim por diante).
[035] Entende-se que muitos tipos diferentes de técnicas de gerenciamento de energia podem ser usados individualmente ou em combinação com diferentes modalidades. Como exemplo representativos, um controlador de energia pode controlar o processador de modo que tenha a energia gerenciada por alguma forma de escalonamento de frequência de tensão dinâmica (DVFS) na qual uma tensão operacional e/ou frequência operacional de um ou mais núcleos ou outra lógica de processador possam ser controlados dinamicamente para reduzir o consumo de energia em determinadas situações. Em um exemplo, o DVFS pode ser realizado com o uso da tecnologia Enhanced Intel SpeedStep™ disponível na Intel Corporation, Santa Clara, Califórnia, para fornecer um desempenho ideal com um nível de consumo de energia mais baixo. Em outro exemplo, o DVFS pode ser realizado com o uso da tecnologia Intel TurboBoost™ para permitir que um ou mais núcleos ou outros mecanismos de computação operem em uma frequência de operação maior do que a garantida com base nas condições (por exemplo, carga de trabalho e disponibilidade).
[036] As modalidades podem ser implementadas em processadores para vários mercados, incluindo processadores de servidor, processadores de desktop, processadores móveis e assim por diante. Agora em referência à Figura 2, é mostrado um diagrama de blocos de um processador, de acordo com uma modalidade da presente invenção. Conforme mostrado na Figura 2, o processador 200 pode ser um processador de múltiplos núcleos que inclui uma pluralidade de núcleos 210a-210n. Em uma modalidade, cada um desses núcleos pode ser de um domínio de potência independente e pode ser configurado para entrar e sair de estados ativos e/ou estados de desempenho máximo com base na carga de trabalho. Os vários núcleos podem ser acoplados por meio de uma interconexão 215 a um agente de sistema 220 que inclui vários componentes. Como visto, o agente de sistema 220 pode incluir um cache compartilhado 230 que pode ser um cache de último nível. Além disso, o agente de sistema pode incluir um controlador de memória integrado 240 para se comunicar com uma memória de sistema (não mostrada na Figura 2), por exemplo, através de um barramento de memória. O agente de sistema 220 também inclui várias interfaces 250 e uma unidade de controle de energia 255, que pode incluir lógica para realizar as técnicas de gerenciamento de energia descritas no presente documento.
Na modalidade mostrada, a unidade de controle de energia 255 inclui um circuito de controle de atualização de interconexão 258, que pode controlar dinamicamente a latência em uma interconexão, como um tecido, por exemplo, a título de inserção ou remoção dinâmica de estágios de tubo, conforme descrito no presente documento.
[037] Além disso, pelas interfaces 250a-250n, uma conexão pode ser feita a vários componentes fora do chip, como dispositivos periféricos, armazenamento em massa e assim por diante. Embora mostrado com essa implementação específica na modalidade da Figura 2, o escopo da presente invenção não é limitado a este respeito.
[038] Com referência agora à Figura 3, é mostrado um diagrama de blocos de um processador de múltiplos domínios de acordo com outra modalidade da presente invenção. Como mostrado na modalidade da Figura 3, o processador 300 inclui múltiplos domínios. De modo específico, um domínio de núcleo 310 pode incluir uma pluralidade de núcleos 3100-310n, um domínio gráfico 320 pode incluir um ou mais mecanismos de gráfico, e um domínio de agente de sistema 350 pode estar presente adicionalmente. Em algumas modalidades, o domínio de agente de sistema 350 pode executar em uma frequência independente em relação ao domínio de núcleo e pode permanecer ligado constantemente para manipular eventos de controle de energia e gerenciamento de energia de modo que os domínios 310 e 320 possam ser controlados para entrar e sair dinamicamente de estados de energia de baixa e alta energia. Cada um dos domínios 310 e 320 pode operar em uma tensão e/ou energia diferente. Verifica-se que embora apenas mostrado com três domínios, entende-se que o escopo da presente invenção não é limitado nesse sentido e domínios adicionais podem estar presentes em outras modalidades. Por exemplo, múltiplos domínios de núcleo podem estar presentes, cada um, incluindo pelo menos um núcleo.
[039] De modo geral, cada núcleo 310 pode incluir adicionalmente caches de baixo nível além de várias unidades de execução e elementos de processamento adicionais. Por sua vez, os vários núcleos podem ser acoplados uns aos outros e a uma memória cache compartilhada formada por uma pluralidade de unidades de um cache de último nível (LLC) 3400-340n. Em várias modalidades, o LLC 340 pode ser compartilhado entre os núcleos e o mecanismo gráfico, bem como vários conjuntos de circuitos de processamento de mídia. Como visto, uma interconexão de anel 330, assim, acopla os núcleos e fornece interconexão entre os núcleos, o domínio gráfico 320 e o conjunto de circuitos de agente de sistema 350. Em uma modalidade, a interconexão 330 pode ser parte do domínio de núcleo. No entanto, em outras modalidades, a interconexão de anel pode ser de seu próprio domínio.
[040] Como visto adicionalmente, o domínio de agente de sistema 350 pode incluir o controlador de exibição 352 que pode fornecer controle e uma interface a um visor associado. Como visto adicionalmente, o domínio de agente de sistema 350 pode incluir uma unidade de controle de energia 355 que pode incluir lógica para realizar as técnicas de gerenciamento de energia descritas no presente documento. Na modalidade mostrada, a unidade de controle de energia 355 inclui um circuito de controle de atualização de interconexão 358, que pode controlar dinamicamente o roteamento de comunicação através de uma interconexão, por exemplo, por meio de imposição ou remoção de estágios de tubo, conforme descrito no presente documento.
[041] Como visto na Figura 3, o processador 300 pode incluir adicionalmente um controlador de memória integrado (IMC) 370 que pode fornecer uma interface a uma memória de sistema, como uma memória dinâmica de acesso aleatório (DRAM). Múltiplas interfaces 3800-380n podem estar presentes para permitir a interconexão entre o processador e outro conjunto de circuitos. Por exemplo, em uma modalidade, pelo menos uma interface de interface de mídia direta (DMI) pode ser fornecida, bem como uma ou mais interfaces PCIe™. Além disso, para fornecer comunicação entre outros agentes, como processadores adicionais ou outro conjunto de circuitos, uma ou mais interfaces QPI também podem ser fornecidas. Embora mostrado nesse alto nível na modalidade da Figura 3, deve ser entendido que o escopo da presente invenção não é limitado a este respeito.
[042] Com referência à Figura 4, uma modalidade de um processador que inclui múltiplos núcleos é ilustrada. O processador 400 inclui qualquer processador ou dispositivo de processamento, como um microprocessador, um processador integrado, um processador de sinal digital (DSP), um processador de rede, um processador portátil, um processador de aplicativo, um coprocessador, um sistema em um chip (SoC) ou outro dispositivo para executar código. O processador 400, em uma modalidade, inclui pelo menos dois núcleos -- núcleos 401 e 402, que podem incluir núcleos assimétricos ou núcleos simétricos (a modalidade ilustrada). Entretanto, o processador 400 pode incluir qualquer número de elementos de processamento que podem ser simétricos ou assimétricos.
[043] Em uma modalidade, um elemento de processamento se refere a hardware ou lógica para suportar um encadeamento de software. Os exemplos de elementos de processamento de hardware incluem: uma unidade de encadeamento, um intervalo de encadeamento, um encadeamento, uma unidade de processo, um contexto, uma unidade de contexto, um processador lógico, um encadeamento de hardware, um núcleo e/ou qualquer outro elemento, que tenha capacidade de reter um estado para um processador, como um estado de execução ou estado de arquitetura. Em outras palavras, um elemento de processamento, em uma modalidade, se refere a qualquer hardware com capacidade de ser independentemente associado ao código, como um encadeamento de software, sistema operacional, aplicativo ou outro código. Um processador físico tipicamente se refere a um circuito integrado, que inclui potencialmente qualquer número de outros elementos de processamento, como núcleos ou encadeamentos de hardware.
[044] Um núcleo muitas vezes se refere à lógica situada em um circuito integrado com capacidade para manter um estado de arquitetura independente, em que cada estado de arquitetura mantido independentemente está associado a pelo menos alguns recursos de execução dedicados. Ao contrário de núcleos, um encadeamento de hardware tipicamente se refere a qualquer lógica situada em um circuito integrado com capacidade para manter um estado de arquitetura independente, em que os estados de arquitetura mantidos independentemente compartilham acesso a recursos de execução. Conforme pode ser visto, quando determinados recursos são compartilhados e outros são dedicados a um estado de arquitetura, a linha entre a nomenclatura de um encadeamento de hardware e núcleo se sobrepõe. Um núcleo e um encadeamento de hardware são vistos ainda muitas vezes por um sistema operacional como processadores lógicos individuais, em que o sistema operacional tem capacidade para programar individualmente operações em cada processador lógico.
[045] O processador físico 400, como ilustrado na Figura 4, inclui dois núcleos, os núcleos 401 e 402. Aqui, os núcleos 401 e 402 são considerados núcleos simétricos, ou seja, núcleos com as mesmas configurações, unidades funcionais e/ou lógica. Em outra modalidade, o núcleo 401 inclui um núcleo de processador fora de ordem, enquanto o núcleo 402 inclui um núcleo de processador em ordem. Entretanto, os núcleos 401 e 402 podem ser selecionados individualmente dentre qualquer tipo de núcleo, como um núcleo nativo, um núcleo gerenciado por software, um núcleo adaptado para executar uma arquitetura de conjunto de instruções nativas (ISA), um núcleo adaptado para executar uma ISA traduzida, um núcleo coprojetado ou outro núcleo conhecido. Além disso, os núcleos 401 e 402 podem ser configurados da mesma forma ou de forma diferente em relação ao suporte de múltiplos encadeamentos. Ou seja, de acordo com as modalidades no presente documento, um, ambos ou nenhum dos núcleos 401, 402 podem ser habilitados para suporte de MT.
[046] Para aprofundar ainda mais a discussão, as unidades funcionais ilustradas no núcleo 401 são descritas em detalhes adicionais abaixo, à medida que as unidades no núcleo 402 operam de maneira similar. Conforme representado, o núcleo 401 inclui dois encadeamentos de hardware 401a e 401b, que podem ser também chamados de intervalos de encadeamento de hardware 401a e 401b. Portanto, as entidades de software, como um sistema operacional, em uma modalidade, visualizam potencialmente o processador 400 como quatro processadores separados, ou seja, quatro processadores lógicos ou elementos de processamento com capacidade para executar quatro encadeamentos de software de maneira simultânea. Conforme mencionado acima, um primeiro encadeamento está associado a registros de estado de arquitetura 401a, um segundo encadeamento está associado a registros de estado de arquitetura 401b, um terceiro encadeamento pode estar associado a registros de estado de arquitetura 402a e um quarto encadeamento pode estar associado a registros de estado de arquitetura 402b. Aqui, cada um dos registros de estado de arquitetura (401a, 401b, 402a e 402b) pode ser chamado de elementos de processamento, intervalos de encadeamento ou unidades de encadeamento, conforme descrito acima. Conforme ilustrado, os registros de estado de arquitetura 401a são replicados em registros de estado de arquitetura 401b, assim, contextos/estados de arquitetura individuais têm capacidade para serem armazenados para o processador lógico 401a e o processador lógico 401b. No núcleo 401, outros recursos menores, como apontadores de instrução e lógica de renomeação no bloco de alocador e renomeador 430, também podem ser replicados para encadeamentos 401a e 401b. Alguns recursos, como armazenamentos temporários de reordenação na unidade de retirada/reordenação 435, ILTB 420, armazenamentos temporários de carregamento/armazenamento e filas podem ser compartilhadas através de partição. Outros recursos, como registros internos de propósito geral, registro (ou registros) de base de tabela de página, cache de dados de baixo nível e TLB de dados 415, unidade (ou unidades) de execução 440 e porções de unidade fora de ordem 435 são compartilhados de maneira potencialmente completa.
[047] O processador 400 muitas vezes inclui outros recursos, que podem ser completamente compartilhados, compartilhados através de partição ou dedicados por/a elementos de processamento. Na Figura 4, é ilustrada uma modalidade de um processador meramente exemplificativo com recursos/unidades lógicas ilustrativas de um processador. Nota-se que um processador pode incluir, ou omitir, qualquer uma dessas unidades funcionais, bem como incluir quaisquer outras unidades funcionais conhecidas, lógica ou firmware não representados. Como ilustrado, o núcleo 401 inclui um núcleo de processador fora de ordem (OOO) representativo e simplificado. Porém, um processador em ordem pode ser utilizado em modalidades diferentes. O núcleo OOO inclui um armazenamento temporário de alvo de ramificação 420 para predizer ramificações a serem executadas/consideradas e um armazenamento temporário de tradução de instrução (I- TLB) 420 para armazenar entradas de tradução de endereço para instruções.
[048] O núcleo 401 inclui, adicionalmente, o módulo de decodificação 425 acoplado à unidade de busca 420 para decodificar elementos buscados. A lógica de busca, em uma modalidade, inclui sequenciadores individuais associados a fendas de encadeamento 401a, 401b, respectivamente. Normalmente, o núcleo 401 é associado a uma primeira ISA, que define/específica instruções executáveis no processador 400. Muitas vezes as instruções de código de máquina que são parte da primeira ISA incluem uma porção da instrução (denominada como um código de operação), que menciona/especifica uma instrução ou operação a ser realizada. A lógica de decodificação 425 inclui conjunto de circuitos que reconhece essas instruções a partir de seus códigos de operação e passa as instruções decodificadas no pipeline para o processamento como definido pela primeira ISA. Por exemplo, os decodificadores 425, em uma modalidade, incluem lógica projetada ou adaptada para reconhecer instruções específicas, como instrução transacional. Como resultado do reconhecimento através dos decodificadores 425, a arquitetura ou núcleo 401 toma ações predefinidas específicas para realizar as tarefas associadas à instrução apropriada. É importante observar que qualquer um dentre as tarefas, blocos, operações e métodos descritos no presente documento pode ser realizado em resposta a uma única ou múltiplas instruções; das quais algumas podem ser instruções novas ou antigas.
[049] Em um exemplo, o bloco de alocador e renomeador 430 inclui um alocador para reservar recursos, como arquivos de registro para armazenar resultados de processamento de instrução. Entretanto, os encadeamentos 401a e 401b têm potencialmente capacidade para execução fora de ordem, em que o bloco de alocador e renomeador 430 também reserva outros recursos, como armazenamentos temporários de reordenação para rastrear resultados de instrução. A unidade 430 também pode incluir um renomeador de registro para renomear registros de referência de programa/instrução para outros registros internos ao processador 400. A unidade de retirada/reordenação 435 inclui componentes, como armazenamentos temporários de reordenação mencionados acima, armazenamentos temporários de carregamento e armazenamentos temporários de armazenamento, para suportar a execução fora de ordem e retirada em ordem posterior de instruções executadas fora de ordem.
[050] O bloco de unidade (ou unidades) de execução e agendador 440, em uma modalidade, inclui uma unidade de agendador para agendar instruções/operação em unidades de execução. Por exemplo, uma instrução de ponto flutuante é programada em uma porta de uma unidade de execução que tem uma unidade de execução de ponto flutuante disponível. Os arquivos de registro associados às unidades de execução também são incluídos para armazenar resultados de processamento de instrução de informações. As unidades de execução exemplificadoras incluem uma unidade de execução de ponto flutuante, uma unidade de execução de número inteiro, uma unidade de execução de salto, uma unidade de execução de carregamento, uma unidade de execução de armazenamento e outras unidades de execução conhecidas.
[051] O cache de dados de nível inferior e o armazenamento temporário de tradução de dados (D-TLB) 450 são acoplados à unidade (ou unidades) de execução 440. O cache de dados deve armazenar elementos recentemente usados/operados, como operandos de dados, que são potencialmente retidos em estados de coerência de memória. O D-TLB deve armazenar traduções de endereço virtual/linear a físico recentes. Como um exemplo específico, um processador pode incluir uma estrutura de tabela de página para romper a memória física em uma pluralidade de páginas virtuais.
[052] No presente contextos, os núcleos 401 e 402 compartilham acesso a cache de nível superior ou mais distante 410, que deve armazenar em cache elementos recentemente buscados. Deve-se observar que nível superior ou avançado se refere a níveis de cache que aumentam ou se afastam da unidade (ou unidades) de execução. Em uma modalidade, cache de nível mais alto 410 é um cache de dados de último nível—último cache na hierarquia de memória no processador 400, como um cache de dados de segundo ou terceiro nível. Entretanto, o cache de nível mais alto 410 não é tão limitado, uma vez que o mesmo pode ser associado a ou incluir um cache de instrução. Um cache de rastreamento — um tipo de cache de instrução — em vez disso pode ser acoplado após o decodificador 425 para armazenar rastreamentos decodificados recentemente.
[053] Na configuração representada, o processador 400 também inclui módulo de interface de barramento 405 e um controlador de energia 460, que pode realizar gerenciamento de energia, de acordo com uma modalidade da presente invenção. Nesse cenário, a interface de barramento 405 deve se comunicar com dispositivos externos ao processador 400, como a memória do sistema e outros componentes.
[054] Um controlador de memória 470 pode fazer interface com outros dispositivos, como uma ou várias memórias. Em um exemplo, a interface de barramento 405 inclui uma interconexão em anel com um controlador de memória para fazer a interface com uma memória e um controlador gráfico para fazer a interface com um processador gráfico. Em um ambiente SoC, ainda mais dispositivos, como uma interface de rede, coprocessadores, memória, processador gráfico e quaisquer outros dispositivos/interface de computador conhecidos podem ser integrados em uma única matriz ou circuito integrado para fornecer fator de forma pequeno com alta funcionalidade e baixo consumo de energia.
[055] Com referência agora à Figura 5, é mostrado um diagrama de blocos de uma microarquitetura de um núcleo de processador, de acordo com uma modalidade da presente invenção. Como mostrado na Figura 5, o núcleo de processador 500 pode ser um processador fora de ordem em pipeline de múltiplos estágios. O núcleo 500 pode operar em várias tensões com base em uma tensão de operação recebida, que pode ser recebida de um regulador de tensão integrado ou regulador de tensão externo.
[056] Como visto na Figura 5, o núcleo 500 inclui unidades de entrada 510, que podem ser usadas para buscar instruções a serem executadas e prepará-las para uso posterior no pipeline do processador. Por exemplo, unidades de entrada 510 podem incluir uma unidade de busca 501, um cache de instrução 503 e um decodificador de instrução 505. Em algumas implantações, as unidades de front-end 510 podem incluir adicionalmente um cache característico, juntamente com o armazenamento de microcódigo assim como um armazenamento de micro-operações. A unidade de busca 501 pode buscar macroinstruções, por exemplo, da memória ou cache de instrução 503, e alimentá-las para o decodificador de instrução 505 para decodificá-las em primitivas, isto é, micro-operações para execução pelo processador.
[057] Acoplado entre as unidades de entrada 510 e unidades de execução 520 está um mecanismo fora de ordem (OOO) 515 que pode ser usado para receber as microinstruções e prepará-las para execução. Mais especificamente, o mecanismo OOO 515 pode incluir vários armazenamentos temporários para reordenar o fluxo de microinstruções e alocar vários recursos necessários para execução, bem como fornecer o restante de registros lógicos em localizações de armazenamento dentro de vários arquivos de registro, como o arquivo de registro 530 e o arquivo de registro estendido 535. O arquivo de registro 530 pode incluir arquivos de registro separados para operações de ponto flutuante e de número inteiro. O arquivo de registro estendido 535 pode fornecer armazenamento para unidades de tamanho vetorial, por exemplo, 256 ou 512 bits por registro. Com a finalidade de configuração, controle e operações adicionais, um conjunto de registros específicos de máquina (MSRs) 538 também podem apresentar e acessíveis a várias lógicas dentro do núcleo 500 (e externas ao núcleo). Nota-se que, com propósitos de suporte de múltiplos encadeamentos, múltiplos conjuntos de registros dentro de vários arquivos de registro podem ser fornecidos de modo que possam ser usados simultaneamente por encadeamentos diferentes. Entretanto, nota-se que as estruturas restantes de núcleo 500, incluindo unidades de front-end 510 e unidades de execução 520, não são replicadas.
[058] Vários recursos podem estar presentes nas unidades de execução 520, incluindo, por exemplo, várias unidades lógicas de números inteiros, ponto flutuante e de múltiplos dados, instrução única (SIMD), entre outro hardware especializado. Por exemplo, tais unidades de execução podem incluir uma ou mais unidades lógicas aritméticas (ALUs) 522 e uma ou mais unidades de execução de vetor 524, entre outras unidades de execução.
[059] Os resultados das unidades de execução podem ser fornecidos para a lógica de retirada, a saber, um armazenamento temporário de reordenamento (ROB) 540. Mais especificamente, o ROB 540 pode incluir várias matrizes e lógica para receber informações associadas às instruções que são executadas. Essas informações são então examinadas pelo ROB 540 para determinar se as instruções podem ser retiradas de forma válida e os dados de resultados comprometidos com o estado arquitetônico do processador, ou se ocorreram uma ou mais exceções que impedem uma retirada adequada das instruções. Naturalmente, o ROB 540 pode manipular outras operações associadas à retirada.
[060] Conforme mostrado na Figura 5, o ROB 540 é acoplado a um cache 550 que, em uma modalidade pode ser um cache de baixo nível (por exemplo, um cache L1) embora o escopo da presente invenção não seja limitada a este respeito. Além disso, as unidades de execução 520 podem ser acopladas diretamente a um cache 550. Do cache 550, a comunicação de dados pode ocorrer com caches de nível superior, memória de sistema e assim por diante. Embora mostrado com esse alto nível na modalidade da Figura 5, deve ser entendido que o escopo da presente invenção não é limitado a este respeito. Por exemplo, embora a implementação da Figura 5 se refira a uma máquina fora de ordem, como de uma arquitetura de conjunto de instruções Intel® x86 (ISA), o escopo da presente invenção não é limitado a este respeito. Ou seja, outras modalidades podem ser implementadas em um processador em ordem, um processador de computação de conjunto de instruções reduzido (RISC), como um processador com base em ARM, ou um processador de outro tipo de ISA que pode emular instruções e operações de um ISA diferente por meio de um mecanismo de emulação e conjunto de circuitos lógicos associados.
[061] Com referência agora à Figura 6, é mostrado um diagrama de blocos de uma microarquitetura de um núcleo de processador de acordo com outra modalidade. Na modalidade da Figura 6, o núcleo 600 pode ser um núcleo de baixa energia de uma microarquitetura diferente, como um Intel®. Processador com base em Atom™ que tem uma profundidade de pipeline relativamente limitada projetada para reduzir o consumo de energia. Como visto, o núcleo 600 inclui um cache de instrução 610 acoplado para fornecer instruções a um decodificador de instrução 615. Um preditor de ramificação 605 pode ser acoplado ao cache de instrução 610. Nota-se que o cache de instrução 610 pode adicionalmente ser acoplado a outro nível de uma memória cache, como um cache L2 (não mostrado para facilidade de ilustração na Figura 6). Por sua vez, o decodificador de instrução 615 fornece instruções decodificadas para uma fila de emissão 620 para armazenamento e entrega a um dado pipeline de execução. Uma ROM de microcódigo 618 é acoplada ao decodificador de instrução 615.
[062] Um pipeline de ponto flutuante 630 inclui um arquivo de registro de ponto flutuante 632 que pode incluir uma pluralidade de registros arquiteturais de um determinado bit, como 128, 256 ou 512 bits. O pipeline 630 inclui um agendador de ponto flutuante 634 para agendar instruções para execução em uma dentre as múltiplas unidades de execução do pipeline. Na modalidade mostrada, tais unidades de execução incluem uma ALU 635, uma unidade aleatória 636 e um adicionador de ponto flutuante 638. Por sua vez, os resultados gerados nessas unidades de execução podem ser fornecidos de volta aos armazenamentos temporários e/ou registros do arquivo de registro 632. Evidentemente, embora mostrado com essas poucas unidades de execução exemplificativas, unidades de execução de ponto flutuante adicionais ou diferentes podem estar presentes em outra modalidade.
[063] Um pipeline de número inteiro 640 também pode ser fornecido. Na modalidade mostrada, o pipeline 640 inclui um arquivo de registro de número inteiro 642 que pode incluir uma pluralidade de registros de arquitetura de um dado bit com como 128 ou 256 bits. O pipeline 640 inclui um agendador de número inteiro 644 para agendar instruções para execução em uma das múltiplas unidades de execução do pipeline. Na modalidade mostrada, tais unidades de execução incluem uma ALU 645, uma unidade de deslocamento 646 e uma unidade de execução de salto 648. Por sua vez, os resultados gerados nessas unidades de execução podem ser fornecidos de volta para armazenamentos temporários e/ou registros do arquivo de registro 642. É natural entender que, embora mostrado com essas poucas unidades de execução exemplificativas, unidades de execução de número inteiro adicionais ou diferentes podem estar presentes em outra modalidade.
[064] Um agendador de execução de memória 650 pode agendar operações de memória para execução em uma unidade de geração de endereço 652, que também é acoplada a um TLB 654. Conforme observado, essas estruturas podem ser acopladas a um cache de dados 660, que podem ser um cache de dados L0 e/ou L1 que, por sua vez, se acopla a níveis adicionais de uma hierarquia de memória de cache, incluindo uma memória de cache L2.
[065] A fim de fornecer suporte para execução fora de ordem, um alocador/renomeador 670 pode ser fornecido, além de um armazenamento temporário de reordenamento 680, que é configurado para reordenar instruções executadas fora de ordem para repouso em ordem. Embora mostrado com essa arquitetura de pipeline específico na ilustração da Figura 6, entende-se que muitas variações e alternativas são possíveis.
[066] Nota-se que em um processador que tem núcleos assimétricos, como de acordo com as microarquiteturas das Figuras 5 e 6, as cargas de trabalho podem ser trocadas dinamicamente entre os núcleos por motivos de gerenciamento de energia, uma vez que esses núcleos, embora tenham diferentes projetos e profundidades de pipeline, podem ser da mesma ISA ou relacionada. Essa troca de núcleo dinâmica pode ser realizada de uma maneira transparente para um aplicativo de usuário (e possivelmente também para o kernel).
[067] Com referência à Figura 7, é mostrado um diagrama de blocos de uma microarquitetura de um núcleo de processador, de acordo com ainda outra modalidade. Como ilustrado na Figura 7, um núcleo 700 pode incluir um pipeline em ordem de múltiplos estágios para executar em níveis de consumo de energia muito baixos. Como um exemplo, o processador 700 pode ter uma microarquitetura de acordo com um projeto ARM Cortex A53 disponível na ARM Holdings, LTD., Sunnyvale, Califórnia. Em uma implementação, pode ser fornecido um pipeline de 8 estágios que é configurado para executar código de 32 e 64 bits. O núcleo 700 inclui uma unidade de busca 710 que é configurado para buscar instruções e fornecer as mesmas a uma unidade de decodificação 715, que pode decodificar as instruções, por exemplo, macroinstruções de um determinado ISA, como um ISA ARMv8. Verifica-se, também, que uma fila 730 pode se acoplar à unidade de decodificação 715 para armazenar instruções decodificadas. As instruções decodificadas são fornecidas a uma lógica de emissão 725, em que as instruções decodificadas podem ser emitidas a uma determinada unidade dentre múltiplas unidades de execução.
[068] Com referência adicional à Figura 7, lógica de emissão 725 pode emitir instruções para uma dentre as múltiplas unidades de execução. Na modalidade mostrada, essas unidades de execução incluem uma unidade de número inteiro 735, uma unidade de multiplicação 740, uma unidade de ponto flutuante/vetorial 750, uma unidade de emissão dupla 760 e uma unidade de carregamento/armazenado 770. Os resultados dessas unidades de execução diferentes podem ser fornecidos a uma unidade de write-back 780. Entende-se que embora uma única unidade de write-back seja mostrada para facilitar a ilustração, em algumas implementações, unidades de write-back separadas podem estar associadas a cada uma dentre as unidades de execução. Além disso, entende-se que embora cada uma das unidades e a lógica mostradas na Figura 7 seja representada em um alto nível, uma implementação específica pode incluir mais estruturas ou diferentes. Um processador projetado com o uso de um ou mais núcleos que têm um pipeline como na Figura 7 pode ser implementando em muitos produtos finais diferentes, que se estendem de dispositivos móveis até sistemas de servidor.
[069] Referindo-se, agora, à Figura 8, é mostrado um diagrama de blocos de uma microarquitetura de um núcleo de processador em conformidade com outra modalidade. Conforme ilustrado na Figura 8, um núcleo 800 pode incluir um pipeline fora de ordem de múltiplas emissões de múltiplos estágios para ser executado em níveis de desempenho muito alto (que podem ocorrer em níveis de consumo de energia maiores que o núcleo 700 da Figura 7). Como exemplo, o processador 800 pode ter uma microarquitetura em conformidade com um modelo ARM Cortex A57. Em uma implementação, pode ser fornecido um pipeline com 15 estágios (ou mais) que é configurado para executar código tanto de 32 bits quanto de 64 bits. Além disso, o pipeline pode fornecer uma operação de amplitude igual a 3 (ou mais) e de 3 emissões (ou mais). O núcleo 800 inclui uma unidade de busca 810 que é configurada para buscar instruções e fornecer as mesmas a decodificador/renomeador/despachante 815, que pode decodificar as instruções, por exemplo, macroinstruções de uma arquitetura de conjunto de instruções de ARMv8, renomear referências dentro das instruções e despachar as instruções (eventualmente) a uma unidade de execução selecionada. As instruções decodificadas podem ser armazenados em uma fila 825. Nota-se que, embora uma única estrutura de fila seja mostrada para facilitar a ilustração na Figura 8, entende-se que filas separadas podem ser fornecidas para cada um dos vários tipos diferentes de unidades de execução.
[070] Além disso, é mostrada na Figura 8 uma lógica de emissão 830 da qual as instruções decodificadas armazenadas na fila 825 podem ser emitidas a uma unidade de execução de seleção. A lógica de emissão 830 pode também ser implementada em uma modalidade específica com uma lógica de emissão separada para cada um dentre os múltiplos tipos diferentes de unidades de execução à qual a lógica de emissão 830 se acopla.
[071] As instruções decodificadas podem ser emitidas a uma determinada unidade dentre múltiplas unidades de execução. Na modalidade mostrada, essas unidades de execução incluem uma ou mais unidades de número inteiro 835, uma unidade de multiplicação 840, uma unidade de ponto flutuante/unidade vetorial 850, uma unidade de ramificação 860 e uma unidade de carregamento/armazenado 870. Em uma modalidade, a unidade de ponto flutuante/unidade vetorial 850 pode ser configurada para manipular SIMD ou dados vetoriais de 128 ou 256 bits. Além disso, a unidade de ponto flutuante/execução de vetor 850 pode realizar operações de ponto flutuante de precisão dobrada IEEE-754. Os resultados dessas unidades de execução diferentes podem ser fornecidos a uma unidade de write-back 880. Nota-se que, em algumas implementações, as unidades de write-back separadas podem estar associadas a cada uma dentre as unidades de execução. Além disso, entende-se que embora cada uma das unidades e a lógica mostradas na Figura 8 seja representada em um alto nível, uma implementação específica pode incluir mais estruturas ou diferentes.
[072] Nota-se que em um processador que tem núcleos assimétricos, como de acordo com as microarquiteturas das Figuras 7 e 8, as cargas de trabalho podem ser trocadas dinamicamente por motivos de gerenciamento de energia, uma vez que esses núcleos, embora tenham diferentes projetos e profundidades de pipeline, podem ser da mesma ISA ou relacionada. Essa troca de núcleo dinâmica pode ser realizada de uma maneira transparente para um aplicativo de usuário (e possivelmente também para o kernel).
[073] Um processador projetado com o uso de um ou mais núcleos que tem pipelines como em qualquer uma ou mais das Figuras 5 a 8 pode ser implementado em muitos produtos finais diferentes, que se estendem de dispositivos móveis a sistemas servidores. Agora em referência à Figura 9, é mostrado um diagrama de blocos de um processador, de acordo com outra modalidade da presente invenção. Na modalidade da Figura 9, o processador 900 pode ser um SoC que inclui múltiplos domínios, em que cada um dos mesmos pode ser controlado para operar em uma tensão de operação e em uma frequência de operação independentes. Como um exemplo ilustrativo específico, o processador 900 pode ser um processador com base em Arquitetura Core™ da Intel® como em um processador i3, i5, i7 ou outro processador disponível da Intel Corporation. No entanto, outros processadores de baixo consumo de energia como os disponíveis a partir de Advanced Micro Devices, Inc. (AMD) de Sunnyvale, Califórnia, EUA, um modelo baseado em ARM junto à ARM Holdings, Ltd. ou licenciados dos mesmos ou um modelo baseado em MIPS a junto à MIPS Technologies, Inc. de Sunnyvale, Califórnia, EUA ou seus licenciados ou adeptos podem, em vez disso, estar presentes em outras modalidades como um processador A7 da Apple, um processador Snapdragon da Qualcomm ou um processador OMAP da Texas Instruments. Tal SoC pode ser usado em um sistema de baixo consumo de energia, como um telefone inteligente, computador tablet, computador phablet, computador Ultrabook™ ou outro dispositivo de computação portátil ou dispositivo conectado.
[074] Na vista de nível alto mostrado na Figura 9, o processador 900 inclui uma pluralidade de unidades de núcleo 9100-910n. Cada unidade de núcleo pode incluir um ou mais núcleos de processadores, uma ou mais memórias de cache e outros conjuntos de circuitos. Cada unidade de núcleo 910 pode suportar um ou mais conjuntos de instruções (por exemplo, um conjunto de instruções x86 (com algumas extensões que tenham sido adicionadas com versões mais novas); um conjunto de instruções MIPS; um conjunto de instruções ARM (com extensões adicionais opcionais como NEON)) ou outro conjunto de instruções ou combinações dos mesmos. Deve ser notado que algumas das unidades de núcleo podem ser recursos heterogêneos (por exemplo, de um projeto diferente). Além disso, cada um dos tais núcleos pode ser acoplado a uma memória cache (não mostrada) que, em uma modalidade, pode ser uma memória de cache de nível compartilhado (L2).
Um armazenamento não volátil 930 pode ser usado para armazenar vários dados de programas e outros. Por exemplo, esse armazenamento pode ser usado para armazenar pelo menos porções de microcódigo, informações de reinicialização como uma BIOS, outro software de sistema ou assim por diante.
[075] Cada unidade de núcleo 910 também pode incluir uma interface como uma unidade de interface de barramento para permitir a interconexão com o conjunto de circuitos adicionais do processador. Em uma modalidade, cada unidade de núcleo 910 se acopla a um tecido coerente que pode atuar como uma interconexão em matriz coerente de cache primária que, por sua vez, se acopla a um controlador de memória 935. Por sua vez, o controlador de memória 935 controla comunicação com uma memória como uma DRAM (não mostrada para facilitar a ilustração na Figura 9).
[076] Além das unidades de núcleo, motores de processamento adicionais estão presentes no processador, incluindo pelo menos uma unidade gráfica 920 que pode incluir uma ou mais unidades de processamento gráfico (GPUs) para realizar processamento gráfico bem como, possivelmente, executar operações de propósito geral no processador gráfico (conhecidas como operação de GPGPU). Adicionalmente, pelo menos um processador de sinal de imagem 925 pode estar presente. O processador de sinal 925 pode ser configurado para processar dados de imagem de entrada recebidos a partir de um ou mais dispositivos de captura, tanto interno ao SoC quanto fora do chip.
[077] Outros aceleradores também podem estar presentes. Na ilustração da Figura 9, um codificador de vídeo 950 pode realizar operações de codificação que incluem codificação e decodificação para informações de vídeo, por exemplo, fornecendo suporte para aceleração de hardware para conteúdo de vídeo de alta definição. Um controlador de exibição 955 pode ser fornecido adicionalmente para acelerar as operações de exibição que incluem fornecer suporte para visores internos e externos de um sistema. Além disso, um processador de segurança 945 pode estar presente para realizar operações de segurança, como operações de inicialização seguras, várias operações de criptografia e assim por diante.
[078] Cada uma das unidades pode ter seu consumo de energia controlado por meio de um gerenciador de energia 940, que pode incluir lógica de controle para realizar várias técnicas de gerenciamento de energia e o controle configurável de MT seletivo descrito no presente documento.
[079] Em algumas modalidades, o SoC 900 pode incluir adicionalmente um tecido não coerente acoplado ao tecido coerente ao qual vários dispositivos periféricos podem se acoplar. Uma ou mais interfaces 960a a 960d permitem a comunicação com um ou mais dispositivos fora de chip. Tal comunicação pode ser por meio de uma variedade de protocolos de comunicação como PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI, dentre outros tipos de protocolos de comunicação. Embora mostrado nesse alto nível na modalidade da Figura 9, deve ser entendido que o escopo da presente invenção não é limitado a este respeito.
[080] Agora em referência à Figura 10, é mostrado um diagrama de blocos de um SoC representativo. Na modalidade mostrada, o SoC 1000 pode ser um SoC de múltiplos núcleos configurado para operação de baixo consumo de energia a ser otimizado para incorporação em um telefone inteligente ou outro dispositivo de baixo consumo de energia, como um computador tablet ou outro dispositivo de computação portátil. Como exemplo, o SoC 1000 pode ser implementado com o uso de núcleos assimétricos ou diferentes tipos de núcleos, como combinações de núcleos de alto consumo de energia e/ou de baixo consumo de energia, por exemplo, núcleos fora de ordem e núcleos em ordem. Em modalidades diferentes, esses núcleos podem ser com base em um projeto de núcleo Intel® Architecture™ ou um projeto de arquitetura ARM. Em ainda outras modalidades, uma mistura de núcleos Intel® e ARM pode ser implementada em um dado SoC.
[081] Conforme visto na Figura 10, o SoC 1000 inclui um primeiro domínio de núcleo 1010 que tem uma pluralidade de primeiros núcleos 10120-10123. Em um exemplo, esses núcleos podem ser núcleos de baixo consumo de energia, como núcleos em ordem. Em uma modalidade, esses primeiros núcleos podem ser implementados como núcleos ARM Cortex A53. Por sua vez, esses núcleos se acoplam a uma memória cache 1015 do domínio principal 1010. Além disso, o SoC 1000 inclui um segundo domínio de núcleo 1020. Na ilustração da Figura 10, o segundo domínio de núcleo 1020 tem uma pluralidade de segundos núcleos 10220-10223. Em um exemplo, esses núcleos podem ser núcleos de consumo de energia superior aos primeiros núcleos 1012. Em uma modalidade, os segundos núcleos podem ser núcleos fora de ordem, que podem ser implementados como núcleos ARM Cortex A57. Por sua vez, esses núcleos se acoplam a uma memória cache 1025 do domínio de núcleo 1020. Nota-se que, embora o exemplo mostrado na Figura 10 inclua 4 núcleos em cada domínio, entende-se que mais ou menos núcleos podem estar presentes em um dado domínio em outros exemplos.
[082] Com referência adicional à Figura 10, um domínio gráfico 1030 também é fornecido, o qual pode incluir uma ou mais unidades de processamento gráfico (GPUs) configuradas para executar de forma independente cargas de trabalho gráficas, por exemplo, fornecidas por um ou mais núcleos de domínios de núcleo 1010 e 1020. Como um exemplo, o domínio de GPU 1030 pode ser usado para fornecer suporte de exibição para uma variedade de tamanhos de tela, além de fornecer operações de renderização de gráficos e exibição.
[083] Como visto, os múltiplos domínios se acoplam a uma interconexão coerente 1040, que em uma modalidade pode ser um tecido de interconexão coerente de cache que, por sua vez, se acopla a um controlador de memória integrado 1050. A interconexão coerente 1040 pode incluir uma memória cache compartilhada, como um cache L3, em alguns exemplos. Em uma modalidade, o controlador de memória 1050 pode ser um controlador de memória direto para fornecer vários canais de comunicação com uma memória fora do chip, como vários canais de uma DRAM (não mostrados para facilidade de ilustração na Figura 10).
[084] Em exemplos diferentes, o número de domínios de núcleo pode variar. Por exemplo, para um SoC de baixo consumo de energia adequado para incorporação em um dispositivo de computação móvel, um número limitado de domínios de núcleo, como mostrado na Figura 10 podem estar presentes. Além disso, em tais SoCs de baixo consumo de energia, o domínio de núcleo 1020 que inclui núcleos de maior consumo de energia pode ter números menores de tais núcleos. Por exemplo, em uma implementação, dois núcleos 1022 podem ser fornecidos para permitir a operação em níveis de consumo de energia reduzidos. Além disso, os diferentes domínios de núcleo também podem ser acoplados a um controlador de interrupção para permitir a troca dinâmica de cargas de trabalho entre os diferentes domínios.
[085] Em ainda outras modalidades, um número de domínios de núcleo maior, bem como lógica IP opcional adicional podem estar presentes, em que um SoC pode ser dimensionado para níveis de desempenho (e potência) mais altos para incorporação em outros dispositivos de computação, como desktops, servidores, sistemas de computação de alto desempenho, estações-base e assim por diante. Como um exemplo, 4 domínios de núcleo, cada um com um dado número de núcleos fora de ordem, podem ser fornecidos. Além disso, além do suporte de GPU opcional (que como exemplo pode assumir a forma de uma GPGPU), um ou mais aceleradores para fornecer suporte de hardware otimizado para funções específicas (por exemplo, serviço da web, processamento de rede, comutação ou assim por diante) também podem ser fornecidos. Além disso, uma interface de entrada/saída pode estar presente para acoplar tais aceleradores a componentes fora do chip.
[086] Agora em referência à Figura 11, é mostrado um diagrama de blocos de outro SoC exemplificativo. Na modalidade da Figura 11, o SoC 1100 pode incluir vários conjuntos de circuitos para permitir alto desempenho para aplicações de multimídia, comunicações e outras funções. Desse modo, o SoC 1100 é adequado para incorporação em uma ampla variedade de dispositivos portáteis e outros, como telefones inteligentes, computadores tablet, TVs inteligentes e assim por diante. No exemplo mostrado, o SoC 1100 inclui um domínio de unidade de processador central (CPU) 1110. Em uma modalidade, uma pluralidade de núcleos de processador individuais pode estar presente no domínio de CPU
1110. Como um exemplo, o domínio de CPU 1110 pode ser um processador quad core que tem 4 núcleos de múltiplos encadeamentos. Esses processadores podem ser processadores homogêneos ou heterogêneos, por exemplo, uma mistura de núcleos de processador de baixo e alto consumo de energia.
[087] Por sua vez, um domínio de GPU 1120 é fornecido para realizar processamento gráfico avançado em uma ou mais GPUs para manipular gráficos e computar APIs. Uma unidade de DSP 1130 pode fornecer um ou mais DSPs de baixo consumo de energia para manipular aplicativos de multimídia de baixo consumo de energia, como reprodução de música, áudio/vídeo e assim por diante, além de cálculos avançados que podem ocorrer durante a execução de instruções de multimídia. Por sua vez, uma unidade de comunicação 1140 pode incluir vários componentes para fornecer conectividade por meio de vários protocolos sem fio, como comunicações celulares (incluindo LTE 3G/4G), protocolos de área local sem fio, como Bluetooth™, IEEE 802.11 e assim por diante.
[088] Além disso, um processador de multimídia 1150 pode ser usado para realizar a captura e reprodução de conteúdo de vídeo e áudio de alta definição, incluindo o processamento de gestos do usuário. Uma unidade de sensor 1160 pode incluir uma pluralidade de sensores e/ou um controlador de sensor para fazer interface com vários sensores fora do chip presentes em uma dada plataforma. Um processador de sinal de imagem 1170 pode ser dotado de um ou mais ISPs separados para realizar o processamento de imagem em relação ao conteúdo capturado de uma ou mais câmeras de uma plataforma, que incluem câmeras estáticas e de vídeo.
[089] Um processador exibição 1180 pode fornecer suporte para conexão a um visor de alta definição de uma dada densidade de pixels, que inclui a capacidade de comunicar conteúdo sem fio para reprodução nesse visor. Além disso, uma unidade de localização 1190 pode incluir um receptor GPS com suporte para múltiplas constelações de GPS para fornecer aplicações de informações de posicionamento altamente precisas obtidas com o uso desse receptor GPS. Entende-se que, embora seja mostrado com esse conjunto específico de componentes no exemplo da Figura 11, muitas variações e alternativas são possíveis.
[090] Agora em referência à Figura 12, é mostrado um diagrama de blocos de um sistema exemplificativo com o qual as modalidades podem ser usadas. Como observado, o sistema 1200 pode ser um telefone inteligente ou outro comunicador sem fio. Um processador de banda-base 1205 é configurado para realizar o processamento de vários sinais em relação a sinais de comunicação a serem transmitidos ou recebidos pelo sistema. Por sua vez, o processador de banda-base 1205 é acoplado a um processador de aplicativo 1210, que pode ser uma CPU principal do sistema para executar um OS e outro software de sistema, além de aplicativos de usuário como aplicativos de multimídia e mídia social muito bem conhecidos. O processador de aplicativo 1210 pode, ainda, ser configurado para realizar uma variedade de outras operações de computação para o dispositivo e pode ser configurado, estatística ou dinamicamente, para suporte de MT seletivo em que um subconjunto de núcleos pode ser seletivamente habilitado para operação de MT, conforme descrito no presente documento.
[091] Por sua vez, o processador de aplicativo 1210 pode se acoplar a uma interface de usuário/visor 1220, por exemplo, um visor de tela sensível ao toque. Adicionalmente, o processador de aplicativo 1210 pode se acoplar a um sistema de memória que inclui uma memória não volátil, a saber, uma memória flash 1230 e uma memória de sistema, a saber, uma memória de acesso aleatório dinâmico (DRAM) 1235. Conforme visto adicionalmente, o processador de aplicativo 1210 se copla adicionalmente a um dispositivo de captura 1240 com um ou mais dispositivos de captura de imagem que podem gravar vídeo e/ou imagens paradas.
[092] Ainda com referência à Figura 12, uma placa de circuito integrado universal (UICC) 1240 que compreende um módulo de identidade de assinante e, possivelmente, um armazenamento seguro e um criptoprocessador também é acoplada ao processador de aplicativo 1210. O sistema 1200 pode incluir adicionalmente um processador de segurança 1250 que pode se acoplar ao processador de aplicativo 1210. Uma pluralidade de sensores 1225 pode se acoplar ao processador de aplicativo 1210 para permitir a entrada de uma variedade de informações detectadas como de um acelerômetro e outras informações de ambiente. Um dispositivo de saída de áudio 1295 pode fornecer uma interface para emitir som, por exemplo, sob a forma de comunicações de voz, reproduzidas ou dados de áudio de fluxo contínuo e assim em diante.
[093] Conforme ilustrado adicionalmente, é fornecida uma interface sem contato de comunicação de campo próximo (NFC) 1260 para se comunicar em um campo próximo de NFC por meio de uma antena NFC 1265. Embora sejam mostradas antenas separadas na Figura 12, deve ser entendido que, em algumas implementações, uma antena ou um conjunto diferente de antenas pode ser fornecido para habilitar várias funcionalidades sem fio.
[094] Um PMIC 1215 se acopla a um processador de aplicativo 1210 para realizar gerenciamento de energia de nível de plataforma. Com essa finalidade, o PMIC 1215 pode emitir solicitações de gerenciamento de energia para que o processador de aplicativo 1210 entre em certos estados de baixo consumo de energia, como desejado. Além disso, com base nas restrições de plataforma, o PMIC 1215 também pode controlar o nível de energia de outros componentes de sistema 1200.
[095] Para permitir que as comunicações sejam transmitidas e recebidas, vários conjuntos de circuitos podem ser acoplados entre o processador de banda-base 1205 e uma antena 1290. De modo específico, um transceptor de radiofrequência (RF) 1270 e um transceptor de rede de área local sem fio (WLAN) 1275 podem estar presentes. Em geral, o transceptor de RF 1270 pode ser usado para receber e transmitir dados sem fio e chamadas de acordo com um dado protocolo de comunicação sem fio como o protocolo de comunicação sem fio 3G ou 4G como de acordo com um protocolo de acesso múltiplo por divisão de código (CDMA), de sistema global para comunicação móvel (GSM), de evolução de longo prazo (LTE) ou outro protocolo. Adicionalmente, um sensor GPS 1280 pode estar presente. Outras comunicações sem fio como recebimento ou transmissão de sinais de rádio, por exemplo, AM/FM e outros sinais também podem ser fornecidos. Além disso, por meio do transceptor WLAN 1275, comunicação sem fio local podem também ser realizados.
[096] Agora em referência à Figura 13, é mostrado outro diagrama de blocos de um sistema exemplificativo com o qual as modalidades podem ser usadas. Na ilustração da Figura 13, o sistema 1300 pode ser um sistema de baixo consumo de energia móvel como um computador tablet, computador tablet 2:1, computador phablet ou outro sistema de computador tablet conversível ou independente. Conforme ilustrado, um SoC 1310 está presente e pode ser configurado para operar como um processador de aplicativo para o dispositivo.
[097] Uma variedade de dispositivos pode se acoplar ao SoC 1310. Na ilustração mostrada, um subsistema de memória inclui uma memória flash 1340 e uma DRAM 1345 acopladas ao SoC 1310. Adicionalmente, um painel sensível ao toque 1320 é acoplado ao SoC 1310 para fornecer capacidade de exibição e entrada de usuário por meio de toque, que inclui a provisão de um teclado virtual em um visor de painel sensível ao toque 1320. Para fornecer conectividade de rede por fio, o SoC 1310 se acopla a uma interface Ethernet
1330. Um concentrador periférico 1325 é acoplado ao SoC 1310 para permitir a interface com vários dispositivos periféricos, que possam ser acoplados ao sistema 1300 por qualquer uma de várias portas ou outros conectores.
[098] Adicionalmente ao conjunto de circuitos de gerenciamento de energia interno e à funcionalidade dentro do SoC 1310, uma PMIC 1380 é acoplada ao SoC 1310 para fornecer um gerenciamento de energia com base em plataforma, por exemplo, com base em se o sistema é alimentado por uma bateria 1390 ou alimentado em CA por meio de um adaptador de CA 1395. Adicionalmente a esse gerenciamento de energia com base em fonte de energia, a PMIC 1380 pode realizar adicionalmente atividade de gerenciamento de energia de plataforma com base em condições ambientais e de uso. Ainda adicionalmente, a PMIC 1380 pode comunicar informações de controle e de situação ao SoC 1310 para causar várias ações de gerenciamento de energia dentro do SoC 1310.
[099] Ainda em referência à Figura 13, para fornecer funcionalidades sem fio, uma unidade de WLAN 1350 é acoplada ao SoC 1310 e, por sua vez, a uma antena 1355. Em várias implementações, a unidade WLAN 1350 pode fornecer comunicação de acordo com um ou mais protocolos sem fio.
[100] Como ilustrado adicionalmente, uma pluralidade de sensores 1360 pode se acoplar ao SoC 1310. Esses sensores podem incluir vários sensores de acelerômetro, ambientais e outros, que incluem sensores de gesto de usuário. Finalmente, um codec de áudio 1365 é acoplado ao SoC 1310 para fornecer uma interface a um dispositivo de saída de áudio 1370. Naturalmente, é compreendido que, embora mostrada com essa implementação específica na Figura 13, muitas variações e alternativas são possíveis.
[101] Agora em referência à Figura 14, é mostrado um diagrama de blocos de um sistema de computador representativo, como notebook, Ultrabook™ ou outro sistema de fator de forma pequeno. Um processador 1410, em uma modalidade, inclui um microprocessador, processador de múltiplos núcleos, processador de múltiplos encadeamentos, um processador de tensão ultrabaixa, um processador embutido ou outro elemento de processamento conhecido. Na implementação ilustrada, o processador 1410 atua como uma unidade de processamento principal e concentrador central para comunicação com muitos dos vários componentes do sistema 1400. Como um exemplo, o processador 1400 é implementado como um SoC.
[102] O processador 1410, em uma modalidade, se comunica com uma memória de sistema 1415. Como um exemplo ilustrativo, a memória de sistema 1415 é implementada por meio de múltiplos dispositivos ou módulos de memória para fornecer uma dada quantidade de memória de sistema.
[103] Para fornecer armazenamento persistente de informações, como dados, aplicativos, um ou mais sistemas operacionais e assim por diante, um armazenamento de massa 1420 também pode se acoplar ao processador 1410. Em várias modalidades, para permitir um design de sistema mais fino e mais leve, bem como para melhorar a capacidade de resposta do sistema, esse armazenamento em massa pode ser implementado através de um SSD ou o armazenamento em massa pode ser implementado principalmente com o uso de uma unidade de disco rígido (HDD) com uma quantidade menor de armazenamento SSD para atuar como um cache SSD para habilitar o armazenamento não volátil do estado de contexto e outras informações durante eventos de desenergização, de modo que uma energização rápida possa ocorrer na reinicialização das atividades do sistema. Também mostrado na Figura 14, um dispositivo flash 1422 pode ser acoplado ao processador 1410, por exemplo, através de uma interface periférica serial (SPI). Este dispositivo flash pode fornecer armazenamento não volátil do software do sistema, que inclui um software básico de entrada/saída (BIOS), bem como outro firmware do sistema.
[104] Vários dispositivos de entrada/saída (I/O) podem estar presentes dentro do sistema 1400. É mostrado de maneira específica na modalidade da Figura 14 um visor 1424 que pode ser um painel de LCD ou de LED de alta definição que fornece adicionalmente uma tela sensível ao toque 1425. Em uma modalidade, o visor 1424 pode ser acoplado ao processador 1410 através de uma interconexão de visor que pode ser implementada como uma interconexão gráfica de alto desempenho. A tela sensível ao toque 1425 pode ser acoplada a um processador 1410 por meio de outra interconexão, que em uma modalidade pode ser uma interconexão I2C. Conforme mostrado na Figura 14, além da tela sensível ao toque 1425, uma entrada de usuário por meio de toque também pode ocorrer por meio de um touchpad 1430 que pode ser configurado dentro do chassi e também pode ser acoplado à mesma I2C que a tela sensível ao toque 1425.
[105] Para computação percentual e outros propósitos, vários sensores podem estar presentes dentro do sistema e podem ser acoplados ao processador 1410 de diferentes maneiras. Certos sensores inerciais e ambientais podem se acoplar ao processador 1410 através de um concentrador de sensor 1440, por exemplo, por meio de uma interconexão I2C. Na modalidade mostrada na Figura 14, esses sensores podem incluir um acelerômetro 1441, um sensor de luz ambiente (ALS) 1442, uma bússola 1443 e um giroscópio 1444. Outros sensores ambientais podem incluir um ou mais sensores térmicos 1446 que em algumas modalidades se acoplam ao processador 1410 por meio de um barramento de gerenciamento de sistema (SMBus).
[106] Também visto na Figura 14, múltiplos dispositivos periféricos podem se acoplar ao processador 1410 por meio de uma interconexão de pinagem reduzida (LPC). Na modalidade mostrada, vários componentes podem ser acoplados através de um controlador embutido 1435. Tais componentes podem incluir um teclado 1436 (por exemplo, acoplado através de uma interface PS2), um ventilador 1437 e um sensor térmico
1439. Em algumas modalidades, o painel sensível ao toque 1430 também pode se acoplar ao EC 1435 por meio de uma interface PS2. Além disso, um processador de segurança, como um módulo de plataforma confiável (TPM) 1438, também pode se acoplar ao processador 1410 por meio dessa interconexão LPC.
[107] O sistema 1400 pode se comunicar com dispositivos externos de várias maneiras, que incluem sem fio. Na modalidade mostrada na Figura 14, vários módulos sem fio, cada um dos quais pode corresponder a um rádio configurado para um protocolo de comunicação sem fio específico, estão presentes. Uma maneira de comunicação sem fio em um alcance curto, como um campo próximo, pode ser por meio de uma unidade NFC 1445 que pode se comunicar, em uma modalidade, com o processador 1410 por meio de um SMBus. Nota-se que, por meio desta unidade NFC 1445, os dispositivos em grande proximidade uns dos outros podem se comunicar.
[108] Como visto na Figura 14, as unidades sem fio adicionais podem incluir outros mecanismos sem fio de curto alcance, que incluem uma unidade WLAN 1450 e uma unidade Bluetooth 1452. Com o uso da unidade WLAN 1450, podem ser realizadas comunicações Wi-Fi™, enquanto por meio da unidade Bluetooth 1452, podem ocorrer as comunicações Bluetooth™ de curto alcance. Essas unidades podem se comunicar com o processador 1410 por meio de um dado enlace.
[109] Além disso, as comunicações de área ampla sem fio, por exemplo, de acordo com um protocolo celular ou outro protocolo de área ampla sem fio, podem ocorrer por meio de uma unidade WWAN 1456 que por sua vez pode se acoplar a um módulo de identidade de assinante (SIM) 1457. Além disso, para permitir o recebimento e uso de informações de localização, um módulo GPS 1455 também pode estar presente. Nota-se que na modalidade mostrada na Figura 14, a unidade WWAN 1456 e um dispositivo de captura integrado, como um módulo de câmera 1454, podem se comunicar através de um dado enlace.
[110] Um módulo de câmera integrado 1454 pode ser incorporado na tampa. Para fornecer entradas e saídas de áudio, um processador de áudio pode ser implementado por meio de um processador de sinal digital (DSP) 1460, que pode se acoplar ao processador
1410 por meio de um enlace de áudio de alta definição (HDA). Da mesma forma, o DSP 1460 pode se comunicar com um codificador/decodificador integrado (CODEC) e amplificador 1462 que, por sua vez, pode se acoplar aos alto-falantes de saída 1463 que podem ser implementados dentro do chassi. Da mesma forma, o amplificador e o CODEC 1462 podem ser acoplados para receber entradas de áudio de um microfone 1465 que em uma modalidade pode ser implementado por meio de microfones de matriz dupla (como uma matriz de microfone digital) para fornecer entradas de áudio de alta qualidade para permitir o controle ativado por voz de várias operações dentro do sistema. Nota-se também que as saídas de áudio podem ser fornecidas a partir do amplificador/CODEC 1462 para um conector de fone de ouvido 1464. Embora mostrado com estes componentes específicos na modalidade da Figura 14, entende-se que o escopo da presente invenção não é limitado a este respeito.
[111] As modalidades podem ser implementadas em muitos tipos de sistemas diferentes. Agora em referência à Figura 15, é mostrado um diagrama de blocos de um sistema de acordo com uma modalidade da presente invenção. Como mostrado na Figura 15, o sistema multiprocessador 1500 é um sistema de interconexão ponto a ponto e inclui um primeiro processador 1570 e um segundo processador 1580 acoplados através de uma interconexão ponto a ponto 1550. Conforme mostrado na Figura 15, cada um dos processadores 1570 e 1580 pode ser processadores de múltiplos núcleos, incluindo primeiro e segundo núcleos de processador (ou seja, núcleos de processador 1574a e 1574b e núcleos de processador 1584a e 1584b), embora potencialmente muitos mais núcleos possam estar presentes nos processadores. Cada um dos processadores pode incluir uma PCU 1575, 1585 para realizar o gerenciamento de energia baseado em processador, e para controlar dinamicamente o roteamento de interconexão por meio de inclusão e remoção de estágios de tubo para controlar latências, com base pelo menos em parte em uma tensão de operação, conforme descrito no presente documento.
[112] Ainda em referência à Figura 15, o primeiro processador 1570 inclui adicionalmente um concentrador de controlador de memória (MCH) 1572 e interfaces ponto-a-ponto (P-P) 1576 e 1578. De modo similar, o segundo processador 1580 inclui um
MCH 1582 e interfaces P-P 1586 e 1588. Como mostrado na Figura 15, os MCHs 1572 e 1582 acoplam os processadores às respectivas memórias, a saber, uma memória 1532 e uma memória 1534, que podem ser porções de memória de sistema (por exemplo, DRAM) ligadas localmente aos respectivos processadores. O primeiro processador 1570 e o segundo processador 1580 podem ser acoplados a um chipset 1590 por meio de interconexões P-P 1562 e 1564, respectivamente. Como mostrado na Figura 15, o chipset 1590 inclui interfaces P-P 1594 e 1598.
[113] Além disso, o chipset 1590 inclui uma interface 1592 para acoplar o chipset 1590 a um mecanismo gráfico de alto desempenho 1538, por uma interconexão P-P 1539. Por sua vez, o chipset 1590 pode ser acoplado a um primeiro barramento 1516 por meio de uma interface 1596. Como mostrado na Figura 15, vários dispositivos de entrada/saída (I/O) 1514 podem ser acoplados ao primeiro barramento 1516, junto com uma ponte de barramento 1518 que acopla o primeiro barramento 1516 a um segundo barramento 1520. Vários dispositivos podem ser acoplados ao segundo barramento 1520 incluindo, por exemplo, um teclado/mouse 1522, dispositivos de comunicação 1526 e a unidade de armazenamento de dados 1528 como uma unidade de disco ou outro dispositivo de armazenamento de massa que pode incluir o código 1530, em uma modalidade. Além disso, um I/O de áudio 1524 pode ser acoplado ao segundo barramento 1520. As modalidades podem ser incorporadas em outros tipos de sistemas, que incluem dispositivos móveis, como um telefone celular inteligente, computador tablet, netbook, Ultrabook™ ou assim por diante.
[114] A Figura 16 é um diagrama de blocos que ilustra um sistema de desenvolvimento de núcleo IP 1600 que pode ser usado para fabricar um circuito integrado para realizar operações de acordo com uma modalidade. O sistema de desenvolvimento de núcleo IP 1600 pode ser usado para gerar projetos modulares e reutilizáveis que podem ser integrados a um projeto maior ou usados para construir um circuito integrado inteiro (por exemplo, um circuito integrado SoC). Uma instalação de projeto 1630 pode gerar uma simulação de software 1610 de um projeto de núcleo IP em uma linguagem de programação de alto nível (por exemplo, C/C++). A simulação de software 1610 pode ser usada para projetar, testar e verificar o comportamento do núcleo IP. Um projeto de nível de transferência de registro (RTL) pode então ser criado ou sintetizado a partir do modelo de simulação. O projeto de RTL 1615 é uma abstração do comportamento do circuito integrado que modela o fluxo de sinais digitais entre os registros de hardware, incluindo a lógica associada realizada com o uso dos sinais digitais modelados. Além de um projeto de RTL 1615, projetos de nível inferior no nível lógico ou nível de transistor também podem ser criados, projetados ou sintetizados. Assim, os detalhes específicos do projeto inicial e simulação podem variar.
[115] O projeto de RTL 1615 ou equivalente pode ser adicionalmente sintetizado pela instalação de projeto em um modelo de hardware 1620, que pode estar em uma linguagem de descrição de hardware (HDL) ou alguma outra representação de dados de projeto físico. O HDL pode ser simulado ou testado adicionalmente para verificar o projeto de núcleo IP. O projeto de núcleo IP pode ser armazenado para entrega a uma instalação de fabricação de terceiros 1665 com o uso de memória não volátil 1640 (por exemplo, disco rígido, memória flash ou qualquer meio de armazenamento não volátil). Alternativamente, o projeto de núcleo IP pode ser transmitido (por exemplo, através da Internet) através de uma conexão com fio 1650 ou conexão sem fio 1660. A instalação de fabricação 1665 pode então fabricar um circuito integrado que tem como base, pelo menos em parte, o projeto de núcleo IP. O circuito integrado fabricado pode ser configurado para realizar operações de acordo com pelo menos uma modalidade descrita no presente documento.
[116] Agora com referência à Figura 17, é mostrado um diagrama de blocos de um circuito de estágio de tubo controlável de acordo com uma modalidade da presente invenção. Conforme mostrado na Figura 17, o circuito de estágio de tubo 1700 pode ser implementado em uma variedade locais dentro de uma interconexão como uma interconexão de malha. Com o circuito de estágio de tubo 1700, o controle dinâmico do comprimento do caminho de interconexão é habilitado. Dessa forma, o controle dinâmico de ciclo de comunicação entre as paradas de malha ou outras interconexões para a interconexão pode ser realizado.
[117] Mais especificamente, conforme mostrado na Figura 17, o circuito de estágio de tubo 1700 inclui uma linha de sinal de entrada 1705 ao longo da qual um sinal é comunicado. Conforme visto, o sinal é fornecido a um estágio de tubo 1710. Em uma modalidade, o estágio de tubo 1710 pode ser implementado como um circuito de trava, por exemplo, uma trava tipo D. Em outros casos, outros estágios de tubo como flip-flops ou outros circuitos sequenciais podem ser usados como componentes de estágio de tubo. Em uma modalidade, o estágio de tubo 1710 pode fornecer uma latência de ciclo único, de modo que um sinal de entrada recebido em uma entrada de estágio de tubo 1710 seja emitido de uma saída do estágio de tubo 1710 por meio de uma primeira linha de sinal de saída 1715 em um determinado ciclo de um relógio em tecido.
[118] Como ilustrado, a linha de sinal de saída 1715 se acopla a uma primeira entrada de um circuito de seleção 1720, que pode ser implementada como um multiplexador, em uma modalidade. Como adicionalmente ilustrado, o sinal diretamente recebido da linha de sinal de entrada 1705 é fornecido por meio de um caminho de desvio 1730 à outra entrada de circuito de seleção 1720.
[119] Com base no controle dinâmico, por exemplo, sob controle de um sinal de controle recebido de um controlador de energia, o circuito de seleção 1720 pode emitir o sinal de entrada por meio de uma segunda linha de sinal de saída 1725, com uma latência de ciclo único (como efetuado usando caminho de desvio 1730) ou uma latência de múltiplos ciclos (efetuada usando o sinal fornecido através de estágio de tubo 1710). Entende-se que, embora mostrado nesse alto nível na modalidade da Figura 17, muitas variações e alternativas são possíveis.
[120] Agora com referência à Figura 18, é mostrado um diagrama de blocos que ilustra o controle dinâmico de latência de ciclo em uma interconexão de acordo com uma modalidade. Conforme mostrado no lado esquerdo da Figura 18, um processador 1800 inclui uma interconexão 1810. Embora para facilidade de ilustração seja mostrada uma interconexão de anel, entende-se que as modalidades são aplicáveis a muitos outros tipos de estruturas de interconexão, incluindo interconexões de malha, estruturas de interconexão torus ou outras 2D ou 3D, ou outros tecidos de conexão.
[121] Com referência ao lado esquerdo da Figura 18, a interconexão 1810 se acopla a uma pluralidade de núcleos 18201-18206. Embora 6 núcleos representativos sejam mostrados para facilidade de ilustração, mais ou menos núcleos podem estar presentes em outras modalidades. Ademais, entende-se de forma mais genérica que a interconexão 1810 se acopla a uma variedade de tipos diferentes de circuitos de processamento incluindo núcleos, processadores gráficos, dispositivos de entrada/saída, outros dispositivos periféricos ou assim por diante. E em muitos casos, a interconexão 1810 pode se acoplar a tais componentes por meio de chamadas paradas de malha que incluem um conjunto de circuitos para habilitar o ingresso e egresso de comunicação ao longo da interconexão 1810. De forma mais genérica então, cada núcleo 1820 ilustra uma interconexão de interconexão 1810 a uma determinada parada de malha.
[122] Como adicionalmente mostrado no lado esquerdo da Figura 18, a interconexão 1810 inclui uma pluralidade de estágios de tubo adicionais 18251-18254. Conforme mostrado, cada estágio de tubo 1825 pode ser adaptado entre núcleos correspondentes 1820 (e, dessa forma, mais particularmente pode estar situado entre paradas de malha separadas ao longo da interconexão 1810). Em uma modalidade, cada estágio de tubo 1825 pode, em geral, assumir a forma de circuito de estágio de tubo 1700 da Figura 17 (e, dessa forma, pode incluir um componente de estágio de tubo, caminho de desvio, multiplexador ou outro circuito de seleção e entrada de controle). Dessa forma, o processador 1800 no lado esquerdo da Figura 18 ilustra um instante em operação dinâmica em que os estágios de tubo 1825 são habilitados para fornecer latência de múltiplos ciclos entre paradas de malha. Como tal, durante a operação nesse estado, a latência de comunicação ao longo da interconexão 1810 pode aumentar como resultado dos atrasos incorridos nos estágios de tubo (em comparação com uma situação em que os estágios de tubo estão inativos). Entretanto, entende-se que a interconexão 1810 nesse caso pode operar em um nível de tensão mais baixo. Dessa forma, maior reserva dinâmica de tensão (e, portanto, reserva dinâmica de energia) pode estar presente e pode ser fornecida de forma dinâmica e flexível para recursos adicionais do processador 1800. Por exemplo, um ou mais núcleos 1820 podem ser controlados para operar em tensões mais altas (e frequências), permitindo desempenho aprimorado (por exemplo, em termos de instruções por ciclo). Essa operação com estágio de tubo ativo 1825 pode prosseguir com base pelo menos em parte na análise de uma carga de trabalho, por exemplo, quando há uma carga de trabalho de computação relativamente alta que ocorre com tráfego mínimo na interconexão 1810.
[123] Adicionalmente com referência ao lado esquerdo da Figura 18, um armazenamento temporário 1830 se acopla à interconexão 1810. O armazenamento temporário 1830 é um armazenamento temporário de dreno/repetição que pode ser implementado como uma fila incluindo uma pluralidade de elementos de armazenamento temporário individuais para armazenar mensagens que realizam a travessia ao longo da interconexão 1810 durante as transições de estado de desempenho, ou seja, quando uma mudança de tensão/frequência dinâmica deve ser feita para a interconexão 1810. Em uma modalidade, o armazenamento temporário 1830 pode ser dependente de várias paradas de malha, e como um exemplo, pode incluir o mesmo número de armazenamentos temporários individuais que as paradas de malha. Por exemplo, se houver 20 paradas de malha em um anel vertical, pode haver uma profundidade de armazenamento temporário de 20. O armazenamento temporário 1830 pode ser implementado como uma estrutura primeiro a entrar, primeiro a sair (FIFO) para receber e armazenar comunicação como mensagens ou outros pacotes que permanecem na interconexão 1810 em um ponto de uma transição de estado de desempenho, cujos detalhes são descritos com mais detalhes abaixo. Dessa forma, o armazenamento temporário 1830 permite que tais mudanças de estado de desempenho ocorram de maneira sem drenar a interconexão 1810 de sua comunicação, reduzindo a latência da própria transição de estado de desempenho, e o tempo para o qual a comunicação está inativa, mantendo uma latência de transição de uma mudança de estado de desempenho sem dreno.
[124] Ainda com referência à Figura 18, no lado direito, é ilustrado o processador 1800′. Mais especificamente, o processador 1800′ é o mesmo processador que o processador 1800, porém é ilustrado em um instante de tempo diferente em que os estágios de tubo adicionais acoplados entre paradas de malha não são habilitados (por exemplo, por meio de sinais de controle adequados para multiplexadores de tais circuitos de estágio de tubo). Com isso, é mostrado que a interconexão 1810 se acople apenas a núcleos 18201-18206. Nesse ponto durante a operação, a interconexão 1810 pode operar com latência de ciclo único. A interconexão 1810 pode operar em níveis de tensão mais altos para permitir a realização dessa latência de ciclo único por meio de remoção dinâmica (por exemplo, desvio) de circuitos de estágio de tubo adaptados entre paradas de malha. Entende-se que, embora mostrado nesse alto nível na modalidade da Figura 18, muitas variações e alternativas são possíveis.
[125] Agora com referência às Figuras 19A-19B, é mostrado um diagrama de fluxo de um método de acordo com uma modalidade da presente invenção. Mais especificamente, o método 1900 ilustrado nas Figuras 19A e 19B é um método para realizar uma mudança dinâmica de estado de desempenho para uma estrutura de tecido com latência reduzida conforme descrito no presente documento. Com isso, o método 1900 pode ser realizado usando um conjunto de circuitos de controle como um controlador de malha ou outro controlador de interconexão, que pode ser implementado como conjunto de circuitos de hardware, firmware, software e/ou combinações dos mesmos.
[126] Como ilustrado, o método 1900 começa recebendo um sinal de tubo de um controlador de energia (bloco 1910). Esse sinal de dreno de tubo pode ser recebido na interconexão em resposta a uma determinação de que uma mudança de estado de desempenho para o tecido deve ocorrer (e/ou quando um processo de inserção ou remoção de estágio de tubo deve ocorrer). Em resposta a esse sinal de dreno, no bloco 1920, a injeção de novas mensagens na interconexão pode ser bloqueada. Para esta finalidade, o controlador de interconexão pode comunicar um sinal de bloqueio às paradas de malha para impedir a injeção de novas mensagens no tecido.
[127] Depois disso, o tecido pode continuar a operar em uma frequência atual para buscar mensagens de dreno do tecido. Para esta finalidade, as mensagens pendentes na interconexão podem realizar a travessia através do tecido de modo que as mesmas possam ser afundadas em paradas de malha de destino (assumindo que existam créditos suficientes em tais paradas de malha para aceitar essas mensagens creditadas). No caso de uma interconexão de anel, a malha pode continuar a operar de acordo com a frequência de relógio atual para uma pluralidade de revoluções, por exemplo, duas revoluções. Dessa forma, nesse caso, essa primeira travessia do tecido para uma interconexão de anel pode ser uma revolução completa no anel (bloco 1930). Ainda com referência à Figura 19A, em uma segunda travessia do tecido, um ou mais intervalos anti-deadlock podem ser compensadas (bloco 1940). Tais intervalos transportam mensagens (por progresso direto de mensagens) que poderia, de outro modo, causar um deadlock em alguma parada de malha ou outra porção do tecido.
[128] Ainda com referência à Figura 19A, a seguir, no bloco 1950, todo o tráfego de devolução (ou seja, mensagens ainda pendentes na interconexão) pode ser drenado para uma fila de drenagem-repetição. Com essa disposição, nota-se que não há drenagem de mensagens do tecido antes de realizar a mudança de estado de desempenho, melhorando a latência de tempo antes de entrar na mudança de estado de desempenho.
[129] Nesse ponto, quando qualquer tráfego restante foi drenado nessa fila, a mudança de estado de desempenho pode ser realizada (bloco 1960). Para esta finalidade, uma ou mais dentre uma tensão de operação e frequência do tecido podem ser atualizadas. Com propósitos de um aumento nos estágios de tubo, essa mudança de estado de desempenho pode servir para reduzir pelo menos a tensão do tecido. E no caso de remoção de tais estágios de tubo, a mudança de estado de desempenho pode se destinar a causar pelo menos um aumento na tensão.
[130] Em qualquer evento, agora com referência à Figura 19B, após essa mudança de estado de desempenho ter sido realizada, a injeção de novas mensagens de paradas de malha no tecido pode ser bloqueada, por exemplo, por um número predeterminado de ciclos de relógio (bloco 1970). Em seguida, no bloco 1980, um ou mais intervalos anti- deadlock podem ser compensados e reinicializados para a configuração de tecido atualizada. Por exemplo, quando estágios de tubo são adicionados no tecido, um ou mais intervalos anti-deadlock adicionais podem ser fornecidos, e de modo similar quando os estágios de tubo são removidos do tecido, um ou mais intervalos anti-deadlock podem ser removidos.
[131] Em seguida, no bloco 1990, o tráfego de devolução pode ser injetado nos intervalos não-anti-deadlock. Esse tráfego de devolução pode ser extraído da fila de drenagem-repetição e inserido na interconexão para permitir que essas mensagens sejam drenadas para as paradas de malha associadas aos seus destinos. Por fim, no bloco 1995, a injeção de novas mensagens no tecido pode ser desbloqueada. Dessa forma, nesse ponto, as paradas de malha estão livres para injetar novas mensagens ou outros pacotes no tecido. Entende-se que com uma modalidade como nas Figuras 19A-19B, as mudanças de estado de desempenho em relação à tensão e/ou frequência de um tecido podem ser realizadas com latência reduzida, melhorando o desempenho. Além disso, a complexidade também pode ser reduzida, visto que a necessidade de drenar totalmente as mensagens do tecido antes dessa mudança de estado de desempenho é evitada, dada a presença da fila de drenagem-repetição. Dessa forma, com o método 1900, o tecido é drenado de todas as mensagens creditadas e as mensagens devolvidas são armazenadas em uma transição de estado de pré-desempenho de fila de drenagem-repetição. Após a transição de estado de desempenho, as mensagens de devolução são reproduzidas da fila de drenagem-repetição para o tecido. Entende-se que, embora mostrado nesse alto nível na modalidade das Figuras 19A-19B, muitas variações e alternativas são possíveis.
[132] Agora em referência à Figura 20, é mostrado um fluxograma de um método de acordo com outra modalidade da presente invenção. Mais especificamente, o método 2000 é um método para determinar quando uma mudança dinâmica para uma estrutura de estágio de tubo de uma interconexão é adequada. Em uma modalidade, o método 2000 pode ser realizado por um controlador de energia como uma PCU. Com isso, o método 2000 pode ser realizado por um conjunto de circuitos de hardware, firmware, software e/ou combinações dos mesmos.
[133] Como ilustrado, o método 2000 começa determinando se uma tensão de operação da interconexão é menor que um primeiro limite (losango 2010). Em uma modalidade, esse primeiro limite pode corresponder a uma tensão de operação relativamente baixa, de modo que a interconexão esteja operando em um nível de baixo desempenho. Com essa situação, a interconexão pode operar com latência aumentada pela inclusão de componentes de estágio de tubo no caminho de comunicação. Para esta finalidade, o controle passa para o bloco 2020 em que os circuitos de estágio de tubo da interconexão podem ser habilitados para inserir componentes de estágio de tubo no caminho de comunicação. Mais especificamente conforme discutido acima, por exemplo, em relação às Figuras 17 e 18, o controlador de energia pode enviar um sinal de controle para multiplexadores ou outro conjunto de circuitos de seleção de circuitos de estágio de tubo para fazer com que os mesmos operem com latência de múltiplos ciclos entre paradas de malha ou outros pontos de conexão de interconexão. Nota-se que com níveis de tensão reduzidos em que a interconexão pode operar com uma latência de múltiplos ciclos, reserva dinâmica de tensão adicional pode estar presente e pode ser distribuída pelo controlador de energia para outros recursos do processador, como núcleos ou outras unidades de processamento que podem tirar vantagem dessa reserva dinâmica.
[134] Ainda com referência à Figura 20, em vez disso, se for determinado que a tensão de interconexão excede esse primeiro nível limite, o controle passa para o losango 2030 para determinar se a tensão é menor que um segundo nível limite. Se for o caso, o controle pode passar para o losango opcional 2040 para determinar se a carga de trabalho de núcleo excede um determinado limite de carga de trabalho. Nota-se que com essa determinação opcional, uma determinação flexível pode ser feita para verificar se deve controlar a interconexão para operação de múltiplos ciclos ou operação de ciclo único. Em situações em que a atividade de núcleo é menor que um limite de carga de trabalho, presumivelmente, a latência adicional incorrida para incluir componentes de estágio de tubo dentro da interconexão não é uma questão e, dessa forma, o controle passa para o bloco 2020 em que a interconexão pode ser controlada para inserir esses componentes de estágio de tubo, permitindo uma tensão de operação reduzida da interconexão, conforme descrito acima.
[135] De outro modo, se for determinado no losango 2040 que a carga de trabalho excede um dado limite de carga de trabalho (ou em situações em que essa determinação não ocorre), o controle passa para o bloco 2050 em que os circuitos de estágio de tubo podem ser controlados para remover componentes de estágio de tubo. Com isso, o controlador de energia pode enviar sinais de controle para os multiplexadores ou outros circuitos de seleção para fazer com que os mesmos passem os sinais recebidos por meio de caminhos de desvio, em vez de sinais recebidos através de um ou mais componentes de estágio de tubo.
[136] Com referência adicional à Figura 20, se for determinado que a tensão de interconexão excede esse segundo nível limite, o controle passa para o losango 2060 para determinar se a tensão é menor que esse terceiro limite mais alto. Se for o caso, o controle passa para o bloco 2050, discutido acima em que a interconexão é controlada de modo que os componentes de estágio de tubo sejam removidos, para reduzir a latência na interconexão.
[137] Ainda com referência à Figura 20, em vez disso, se for determinado que a tensão de interconexão excede esse terceiro limite, o controle passa para o bloco 2070 em que a interconexão pode ser controlada de modo que os componentes de estágio de tubo sejam inseridos na interconexão. Dessa forma, a interconexão pode operar com uma latência de múltiplos ciclos. Entretanto, tal operação está em um nível de tensão mais baixo do que estaria operando se buscasse operar com latência de ciclo único. Entende-se que, embora mostrado nesse alto nível na modalidade da Figura 20, muitas variações e alternativas são possíveis. Por exemplo, pode haver mais ou menos limites e determinações, em outras modalidades.
[138] Em uma modalidade, em alto nível, pode haver dois tipos de transição nas curvas F/V: zonas estáticas em que os estágios do tubo são mantidos estáticos dentro dessas zonas e alterados através dessas zonas; e pelo menos uma zona dinâmica, em que os estágios de tubo podem ser alterados (através de um processo de transição de estado de desempenho) dentro dessa zona.
[139] Agora com referência à Figura 21, é mostrada uma ilustração gráfica de curvas de frequência-tensão para um conjunto de circuitos de interconexão da interconexão. Conforme mostrado, uma primeira curva 2110 é uma curva para um tecido de comunicação, enquanto a curva 2120 é uma curva para paradas de malha e outro conjunto de circuitos de processamento da interconexão. Conforme mostrado, as curvas são divididas em 4 zonas de operação. Na maioria dos pontos de tensão, a lógica IP pode atingir a mesma frequência de operação em tensão mais baixa. Para IP altamente multi-instância, como o IP de SCF, essa redução na tensão na mesma frequência pode realizar uma redução de energia significativa, o que se traduz em melhora do desempenho.
[140] Conforme adicionalmente ilustrado na Figura 21, a operação a partir de uma perspectiva de controle de gerenciamento de energia (PM) é mostrada dividindo-se essas curvas F/V em múltiplas zonas (quatro mostradas nesse caso). Esse zoneamento alinha a faixa de operação F/V de IP de SCF, para cargas de trabalho diferentes. Múltiplos limites Z1- Z4 estão presentes, cada um dos quais pode corresponder a uma das tensões limite diferentes para as quais ocorrem as determinações descritas acima em relação à Figura 20. Para operação de baixa tensão (Z1), o desempenho da carga de trabalho não é sensível à latência de malha e, portanto, o estágio de tubo pode ser adicionado ao tecido para reduzir a tensão e transferir energia para um domínio de núcleo. Quando se opera em um modo de baixa tensão de malha, por exemplo, zona Z1 na Figura 21, a latência de malha não afeta o desempenho e a economia de energia pode melhorar o desempenho (por exemplo, para cargas de trabalho ligadas ao núcleo).
[141] Tanto a potência dinâmica quanto a de vazamento reduzem com a redução da tensão. A energia dinâmica e de vazamento de um circuito como uma função da tensão é da seguinte forma: energia dinâmica = CV2F (V:tensão, F:frequência, C:capacitância); e energia de vazamento = IiV, em que Ii é uma função de tensão (V), e Ii é um vazamento subliminar. Para operação de alta tensão (Z4), se a carga de trabalho for sensível à frequência de malha para baixa latência e houver reserva dinâmica de energia para aumentar a tensão, a operação de frequência mais alta é habilitada. Portanto, nesse cenário acima do limite Z4, a operação ocorre com estágios de tubo mínimos na malha.
[142] As modalidades podem fornecer melhor potência e melhor perfil de largura de banda de tecido de malha sem comprometer a latência. Tais vantagens podem ser percebidas visto que o próprio tecido de malha pode ser uma pequena parte da potência de domínio SCF (visto que sequenciais de caminho de dados de tecido podem ser uma parte extremamente pequena de sequencial/contagem de porta/área de domínio SCF total). Dessa forma, o ancoramento de uma tensão de domínio SCF inteiro para as necessidades de tecido, como é convencional, não é ideal. As modalidades removem essa dependência e economizam energia em voltagem mais alta. Além disso, como o tecido é dominado por RC (em comparação com os domínios de núcleo), o tecido pode operar em tensões mais altas em comparação com o IP SCF para operação de frequência mais alta, conforme descrito abaixo. Em alta tensão, um circuito de seleção pode inserir o componente de estágio de tubo e tornar a não temporização de tecido crítica. Naturalmente que esses valores representativos para as curvas de frequência de tensão e os limites são apenas exemplificativos e muitos valores diferentes são possíveis em outras modalidades.
[143] Os exemplos a seguir pertencem a modalidades adicionais.
[144] Em um exemplo, um aparelho inclui: uma pluralidade de circuitos de processamento, cada um, para executar instruções; e uma interconexão para acoplar a pluralidade de circuitos de processamento. A interconexão compreende: um circuito de estágio de tubo acoplado entre um primeiro circuito de processamento da pluralidade de circuitos de processamento e um segundo circuito de processamento da pluralidade de circuitos de processamento. O circuito de estágio de tubo compreende: um componente de estágio de tubo que tem uma primeira entrada para receber um sinal por meio da interconexão e uma primeira saída para emitir o sinal; e um circuito de seleção que tem uma primeira entrada para receber o sinal da primeira saída do componente de estágio de tubo e uma segunda entrada para receber o sinal por meio de um caminho de desvio, em que o circuito de seleção é dinamicamente controlável, com base em um sinal de controle, para emitir o sinal recebido da primeira saída do componente de estágio de tubo ou o sinal recebido por meio do caminho de desvio.
[145] Em um exemplo, o circuito de seleção se destina a receber o sinal do componente de estágio de tubo atrasado em relação ao sinal recebido por meio do caminho de desvio.
[146] Em um exemplo, a interconexão compreende: uma interconexão de malha que tem uma pluralidade de paradas de malha; e uma pluralidade de circuitos de estágio de tubo interpostos entre pelo menos algumas dentre a pluralidade de paradas de malha.
[147] Em um exemplo, a pluralidade de circuitos de estágio de tubo é interposta entre as pelo menos algumas dentre a pluralidade de paradas de malha acopladas a uma porção vertical da interconexão de malha, e em que uma porção da pluralidade de paradas de malha acoplada a uma porção horizontal da interconexão de malha são acopladas uma à outra sem interposição de circuitos de estágio de tubo.
[148] Em um exemplo, o aparelho compreende adicionalmente um controlador de energia para fornecer o sinal de controle ao circuito de seleção com base pelo menos em parte em uma tensão de operação da interconexão.
[149] Em um exemplo, o controlador de energia se destina a fornecer o sinal de controle para fazer com que o circuito de seleção emita o sinal recebido do componente de estágio de tubo quando a tensão de operação da interconexão é menor que um nível limite.
[150] Em um exemplo, o controlador de energia se destina a fornecer o sinal de controle para fazer com que o circuito de seleção emita o sinal recebido do componente de estágio de tubo adicionalmente com base em uma carga de trabalho de pelo menos um dentre a pluralidade de circuitos de processamento.
[151] Em um exemplo, o aparelho compreende adicionalmente: um controlador de interconexão; e uma fila acoplada à interconexão, em que o controlador de interconexão se destina a fazer com que uma ou mais mensagens pendentes na interconexão sejam armazenadas na fila antes de uma mudança de estado de desempenho para a interconexão.
[152] Em um exemplo, após a mudança de estado de desempenho, o controlador de interconexão se destina a fazer com que a fila emita a uma ou mais mensagens para a interconexão antes de permitir que a pluralidade de circuitos de processamento injete novas mensagens na interconexão.
[153] Em um exemplo, o componente de estágio de tubo se destina a ser dinamicamente inserido em um caminho de comunicação da interconexão quando uma tensão de operação da interconexão excede um nível limite, sendo que o componente de estágio de tubo compreende um circuito sequencial.
[154] Em outro exemplo, um método compreende: receber, em um controlador de uma interconexão de um processador, um sinal de dreno de tubo de um controlador de energia do processador; em resposta ao sinal de dreno de tubo, fazer com que uma ou mais mensagens pendentes na interconexão sejam armazenadas em uma fila acoplada à interconexão; fazer com que uma mudança de estado de desempenho ocorra na interconexão; e, depois disso, fazer com que uma ou mais mensagens pendentes sejam drenadas da fila e injetadas na interconexão.
[155] Em um exemplo, o método compreende adicionalmente: antes da mudança de estado de desempenho, controlar um ou mais circuitos de estágio de tubo para operar em uma configuração de ciclo único; e após a mudança de estado de desempenho, controlar o um ou mais circuitos de estágio de tubo para operar em uma configuração de múltiplos ciclos.
[156] Em um exemplo, o método compreende adicionalmente: controlar o um ou mais circuitos de estágio de tubo para operar na configuração de ciclo único quando uma tensão de operação da interconexão excede um nível limite; e controlar o um ou mais circuitos de estágio de tubo para operar na configuração de múltiplos ciclos quando uma tensão de operação da interconexão é menor que o nível limite.
[157] Em um exemplo, o método compreende adicionalmente realizar a mudança de estado de desempenho para a interconexão sem drenar a interconexão da uma ou mais mensagens pendentes.
[158] Em um exemplo, o método compreende adicionalmente: em resposta ao sinal de dreno de tubo, impedir que um ou mais agentes acoplados à interconexão injetem mensagens na interconexão; e permitir que o um ou mais agentes injetem as mensagens na interconexão após a uma ou mais mensagens serem drenadas da fila.
[159] Em um exemplo, o método compreende adicionalmente: controlar o conjunto de circuitos de caminho de comunicação da interconexão para operar em um primeiro estado de desempenho; e controlar o conjunto de circuitos lógicos da interconexão para operar em um segundo desempenho, o primeiro estado de desempenho mais baixo que o segundo estado de desempenho.
[160] Em outro exemplo, um meio legível por computador inclui instruções para realizar o método de qualquer um dos exemplos acima.
[161] Em outro exemplo, um meio legível por computador inclui dados que devem ser usados por pelo menos uma máquina para fabricar pelo menos um circuito integrado para realizar o método de qualquer um dos exemplos acima.
[162] Em outro exemplo, um aparelho compreende meios para realizar o método de qualquer um dos exemplos acima.
[163] Em outro exemplo, um sistema inclui um sistema em chip e uma memória de sistema acoplada ao sistema em chip. O sistema em chip compreende uma pluralidade de cores cada uma, para executar instruções e uma interconexão de malha para acoplar a pluralidade de cores. A interconexão de malha compreende: uma malha vertical que tem uma pluralidade de paradas de malha acopladas à mesma, em que uma pluralidade de circuitos de estágio de tubo é interposta ao longo da malha vertical, sendo que cada um dentre a pluralidade de circuitos de estágio de tubo compreende: um componente de estágio de tubo que tem uma primeira entrada para receber um sinal da malha vertical e uma primeira saída para emitir o sinal; e um circuito de seleção que tem uma primeira entrada para receber o sinal da primeira saída do componente de estágio de tubo e uma segunda entrada para receber o sinal da malha vertical, em que o circuito de seleção é dinamicamente controlável para emitir o sinal recebido da primeira saída do componente de estágio de tubo ou o sinal recebido da malha vertical; e uma malha horizontal que tem a pluralidade de paradas de malha acoplada à mesma. O sistema em chip inclui adicionalmente um controlador de energia para controlar o circuito de seleção com base pelo menos em parte em uma tensão de operação da interconexão de malha.
[164] Em um exemplo, o sistema compreende adicionalmente uma fila acoplada à interconexão de malha para armazenar uma ou mais mensagens pendentes na interconexão de malha antes de uma mudança de estado de desempenho para a interconexão de malha.
[165] Em um exemplo, o controlador de energia se destina a fazer com que a pluralidade de circuitos de estágio de tubo opere em uma configuração de ciclo único quando a tensão de operação da interconexão de malha excede um nível limite, e fazer com que a pluralidade de circuitos de estágio de tubo opere em uma configuração de múltiplos ciclos quando a tensão de operação da interconexão de malha é menor que o nível limite.
[166] Em um exemplo, o controlador de energia se destina a fazer com que a malha vertical e a malha horizontal operem em um primeiro estado de desempenho, e fazer com que a pluralidade de paradas de malha opere em um segundo desempenho, o primeiro estado de desempenho mais baixo que o segundo estado de desempenho.
[167] Deve ser compreendido que são possíveis várias combinações dos exemplos acima.
[168] Verifica-se que os termos “circuito” e “conjunto de circuitos” são usados de maneira intercambiável no presente documento. Conforme usado no presente documento, esses termos e o termo “lógica” são usados para se referir a isoladamente ou em combinação, junto do conjunto de circuitos, conjunto de circuitos digitais, conjunto de circuitos conectados diretamente, conjunto de circuitos programáveis, conjunto de circuitos de processador, conjunto de circuitos de microcontrolador, conjunto de circuitos de hardware, conjunto de circuitos de máquina de estado e/ou qualquer outro tipo de componente físico de hardware. As modalidades podem ser usadas em muitos tipos diferentes de sistemas. Por exemplo, em uma modalidade, um dispositivo de comunicação pode ser disposto para realizar os vários métodos e técnicas descritas no presente documento. Certamente, o escopo da presente invenção não se limita a um dispositivo de comunicação e, preferencialmente, outras modalidades podem ser direcionadas a outros tipos de aparelho para processar instruções, ou uma ou mais mídias legíveis por máquina que inclui instruções que, em resposta a serem executadas em um dispositivo de comutação, fazem com que o dispositivo execute um ou mais dentre os métodos e técnicas descritos no presente documento.
[169] As modalidades podem ser implementadas em código e podem ser armazenadas em um meio de armazenamento não transitório que tem armazenado no mesmo instruções que podem ser usadas para programar um sistema para realizar as instruções. As modalidades podem também ser implementadas em dados e podem ser armazenadas em um meio de armazenamento não transitório, o qual se usado por pelo menos uma máquina, faz com que pelo menos uma máquina fabrique pelo menos um circuito integrado para realizar uma ou mais operações. Ainda outras modalidades podem ser implementadas em um meio de armazenamento legível por computador, que inclui informações que, quando fabricadas em um SoC ou outro processador, devem configurar o SoC ou outro processador para realizar uma ou mais operações. O meio de armazenamento pode incluir, porém sem limitação, qualquer tipo de disco incluindo disquetes, discos ópticos, unidades de estado sólido (SSDs), memórias de leitura de disco compacto (CD- ROMs), discos compactos regraváveis (CD-RWs), e discos óptico-magnéticos, dispositivos semicondutores como memórias de leitura (ROMs), memórias de acesso aleatório (RAMs) como memórias dinâmicas de acesso aleatório (DRAMs), memórias estáticas de acesso aleatório (SRAMs), memórias de leitura programáveis apagáveis (EPROMs), memórias flash, memórias de leitura programáveis apagáveis eletricamente (EEPROMs), cartões magnéticos ou ópticos ou qualquer outro tipo de mídia adequada para armazenar instruções eletrônicas.
[170] Embora a presente invenção tenha sido descrita com respeito a um número limitado de modalidades, aquelas pessoas versadas na técnica reconhecerão inúmeras modificações e variações de tais modalidades.
Entende-se que as reivindicações anexas cubram todas essas modificações e variações como sendo abrangidas pelo espírito verdadeiro e pelo escopo dessa presente invenção.

Claims (23)

Reivindicações
1. Aparelho caracterizado pelo fato de que compreende: uma pluralidade de circuitos de processamento, cada um, para executar instruções; uma interconexão (215, 358, 330) para acoplar a pluralidade de circuitos de processamento, sendo que a interconexão (215, 358, 330) compreende: um circuito de estágio de tubo (1700) acoplado entre um primeiro circuito de processamento da pluralidade de circuitos de processamento e um segundo circuito de processamento da pluralidade de circuitos de processamento, sendo que o circuito de estágio de tubo (1700) compreende: um componente de estágio de tubo que tem uma primeira entrada para receber um sinal por meio da interconexão (215, 358, 330) e uma primeira saída para emitir o sinal; e um circuito de seleção (1720) que tem uma primeira entrada para receber o sinal da primeira saída do componente de estágio de tubo e uma segunda entrada para receber o sinal por meio de uma trajetória de desvio, em que o circuito de seleção (1720) é dinamicamente controlável, com base em um sinal de controle, para emitir um dentre o sinal recebido da primeira saída do componente de estágio de tubo e o sinal recebido por meio do caminho de desvio (1730); e um controlador de energia (460), em resposta a uma tensão de operação da interconexão (215, 358, 330) que é menor que um nível limite correspondente à interconexão (215, 358, 330) que opera em uma baixa tensão de operação, para fornecer um sinal de controle para fazer com que o circuito de seleção (1720) emita o sinal recebido do componente de estágio de tubo e distribua energia disponível para pelo menos um outro recurso de aparelho.
2. Aparelho, de acordo com a reivindicação 1, caracterizado pelo fato de que o circuito de seleção (1720) se destina a receber o sinal do componente de estágio de tubo atrasado em relação ao sinal recebido por meio do caminho de desvio (1730).
3. Aparelho, de acordo com a reivindicação 2, caracterizado pelo fato de que a interconexão (215, 358, 330) compreende: uma interconexão (215, 358, 330) de malha que tem uma pluralidade de paradas de malha; e uma pluralidade de circuitos de estágio de tubo (1700) interpostos entre pelo menos algumas dentre a pluralidade de paradas de malha.
4. Aparelho, de acordo com a reivindicação 3, caracterizado pelo fato de que a pluralidade de circuitos de estágio de tubo (1700) é interposta entre as pelo menos algumas dentre a pluralidade de paradas de malha acopladas a uma porção vertical da interconexão (215, 358, 330) de malha, e em que uma porção da pluralidade de paradas de malha acopladas a uma porção horizontal da interconexão (215, 358, 330) de malha são acopladas uma à outra sem interposição de circuitos de estágio de tubo (1700).
5. Aparelho, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que o controlador de energia (460) fornece o sinal de controle ao circuito de seleção (1720) com base pelo menos em parte na tensão de operação da interconexão (215, 358, 330).
6. Aparelho, de acordo com a reivindicação 5, caracterizado pelo fato de que o controlador de energia (460) se destina a fornecer o sinal de controle para fazer com que o circuito de seleção (1720) emita o sinal recebido do componente de estágio de tubo adicionalmente com base em uma carga de trabalho de pelo menos um dentre a pluralidade de circuitos de processamento quando a tensão de operação é maior que o nível limite.
7. Aparelho, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que compreende adicionalmente: um controlador de interconexão (215, 358, 330); e uma fila (620, 730, 825) acoplada à interconexão (215, 358, 330), em que o controlador de interconexão (215, 358, 330) se destina a fazer com que uma ou mais mensagens pendentes na interconexão (215, 358, 330) sejam armazenadas na fila (620, 730, 825) antes de uma mudança de estado de desempenho para a interconexão (215, 358, 330).
8. Aparelho, de acordo com a reivindicação 7, caracterizado pelo fato de que após a mudança de estado de desempenho, o controlador de interconexão (215, 358, 330) se destina a fazer com que a fila (620, 730, 825) emita a uma ou mais mensagens para a interconexão (215, 358, 330) antes de permitir que a pluralidade de circuitos de processamento injete novas mensagens na interconexão (215, 358, 330).
9. Aparelho, de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de que o componente de estágio de tubo se destina a ser dinamicamente inserido em um caminho de comunicação da interconexão (215, 358, 330) quando uma tensão de operação da interconexão (215, 358, 330) excede um segundo nível limite, sendo que o componente de estágio de tubo compreende um circuito sequencial.
10. Método caracterizado pelo fato de que compreende:
receber, em um controlador de uma interconexão (215, 358, 330) de um processador (110, 200, 300, 400), um sinal de dreno de tubo a partir de um controlador de energia (460) do processador (110, 200, 300, 400); em resposta ao sinal de dreno de tubo, fazer com que uma ou mais mensagens pendentes na interconexão (215, 358, 330) sejam armazenadas em uma fila (620, 730, 825) acoplada à interconexão (215, 358, 330); fazer com que uma mudança de estado de desempenho ocorra na interconexão (215, 358, 330); depois disso fazer com que a uma ou mais mensagens pendentes sejam drenadas da fila (620, 730, 825) e injetadas na interconexão (215, 358, 330) antes da mudança de estado de desempenho, controlar um ou mais circuitos de estágio de tubo (1700) para operar em uma configuração de ciclo único quando uma tensão de operação da interconexão (215, 358, 330) é menor que um nível limite, sendo que pelo menos um dos circuitos de estágio de tubo (1700) compreende um componente de estágio de tubo; e após a mudança de estado de desempenho, controlar o um ou mais circuitos de estágio de tubo (1700) para operar em uma configuração de múltiplos ciclos quando a tensão de operação da interconexão (215, 358, 330) é maior que o nível limite, em que a operação de um ou mais circuitos de estágio de tubo (1700) na configuração de múltiplos ciclos está em um nível de tensão mais baixo do que a operação do um ou mais circuitos de estágio de tubo (1700) na configuração de ciclo único.
11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que compreende adicionalmente:
controlar o um ou mais circuitos de estágio de tubo (1700) para operar na configuração de ciclo único quando uma tensão de operação da interconexão (215, 358, 330) excede um segundo nível limite; e controlar o um ou mais circuitos de estágio de tubo (1700) para operar na configuração de múltiplos ciclos quando uma tensão de operação da interconexão (215, 358, 330) é menor que o segundo nível limite.
12. Método, de acordo com qualquer uma das reivindicações 10 ou 11, caracterizado pelo fato de que compreende adicionalmente realizar a mudança de estado de desempenho para a interconexão (215, 358, 330) sem drenar a interconexão (215, 358, 330) da uma ou mais mensagens pendentes.
13. Método, de acordo com qualquer uma das reivindicações 10 a 12, caracterizado pelo fato de que compreende adicionalmente: em resposta ao sinal de dreno de tubo, impedir que um ou mais agentes acoplados à interconexão (215, 358, 330) injetem mensagens na interconexão (215, 358, 330); e permitir que o um ou mais agentes injetem as mensagens na interconexão (215, 358, 330) após a uma ou mais mensagens serem drenadas da fila (620, 730, 825).
14. Método, de acordo com qualquer uma das reivindicações 10 a 13, caracterizado pelo fato de que compreende adicionalmente: controlar o conjunto de circuitos de caminho de comunicação da interconexão (215, 358, 330) para operar em um primeiro estado de desempenho; e controlar o conjunto de circuitos lógicos da interconexão (215,
358, 330) para operar em um segundo desempenho, o primeiro estado de desempenho mais baixo que o segundo estado de desempenho.
15. Meio de armazenamento legível por computador caracterizado pelo fato de que inclui instruções legíveis por computador que, quando executadas, implementam um método, conforme definido em qualquer uma das reivindicações 10 a 14.
16. Aparelho caracterizado pelo fato de que compreende meios para realizar um método, conforme definido em qualquer uma das reivindicações 10 a 14.
17. Sistema caracterizado pelo fato de que compreende: um sistema-em-um-chip (1000, 1100, 1310) que compreende: uma pluralidade de núcleos, cada um, para executar instruções; uma interconexão (215, 358, 330) de malha para acoplar a pluralidade de núcleos, sendo que a interconexão (215, 358, 330) de malha compreende: uma malha vertical que tem uma pluralidade de paradas de malha acopladas à mesma, em que uma pluralidade de circuitos de estágio de tubo (1700) é interposta ao longo da malha vertical, sendo que cada um dentre a pluralidade de circuitos de estágio de tubo (1700) compreende: um componente de estágio de tubo que tem uma primeira entrada para receber um sinal da malha vertical e uma primeira saída para emitir o sinal; e um circuito de seleção (1720) que tem uma primeira entrada para receber o sinal da primeira saída do componente de estágio de tubo e uma segunda entrada para receber o sinal da malha vertical, em que o circuito de seleção (1720) é dinamicamente controlável para emitir o sinal recebido da primeira saída do componente de estágio de tubo por meio de uma configuração de múltiplos ciclos ou o sinal recebido da malha vertical por meio de uma configuração de ciclo único; e uma malha horizontal que tem a pluralidade de paradas de malha acoplada à mesma; e um controlador de energia (460) para controlar o circuito de seleção (1720) com base pelo menos em parte em uma tensão de operação da interconexão (215, 358, 330) de malha, em que a operação do componente de estágio de tubo na configuração de múltiplos ciclos está em um nível de tensão mais baixo do que a operação do componente de estágio de tubo na configuração de ciclo único; e uma memória de sistema (1415) acoplada ao sistema em chip.
18. Sistema, de acordo com a reivindicação 17, caracterizado pelo fato de que compreende adicionalmente uma fila (620, 730, 825) acoplada à interconexão (215, 358, 330) de malha para armazenar uma ou mais mensagens pendentes na interconexão (215, 358, 330) de malha antes de uma mudança de estado de desempenho para a interconexão (215, 358, 330) de malha.
19. Sistema, de acordo com qualquer uma das reivindicações 17 a 18, caracterizado pelo fato de que o controlador de energia (460) se destina a fazer com que a pluralidade de circuitos de estágio de tubo (1700) opere em uma configuração de ciclo único quando a tensão de operação da interconexão (215, 358, 330) de malha excede um nível limite, e fazer com que a pluralidade de circuitos de estágio de tubo (1700) opere em uma configuração de múltiplos ciclos quando a tensão de operação da interconexão (215, 358, 330) de malha é menor que o nível limite.
20. Sistema, de acordo com qualquer uma das reivindicações 17 a 19, caracterizado pelo fato de que o controlador de energia (460) se destina a fazer com que a malha vertical e a malha horizontal operem em um primeiro estado de desempenho, e fazer com que a pluralidade de paradas de malha opere em um segundo desempenho, o primeiro estado de desempenho mais baixo que o segundo estado de desempenho.
21. Aparelho caracterizado pelo fato de que compreende: uma pluralidade de meios de processamento, cada um, para executar instruções; e um meio de interconexão (215, 358, 330) para acoplar a pluralidade de meios de processamento, sendo que o meio de interconexão (215, 358, 330) compreende: um meio de estágio de tubo acoplado entre um primeiro meio de processamento da pluralidade de meios de processamento e um segundo meio de processamento da pluralidade de meios de processamento, sendo que o meio de estágio de tubo compreende: um componente de estágio de tubo que tem uma primeira entrada para receber um sinal por meio do meio de interconexão (215, 358, 330) e uma primeira saída para emitir o sinal; e um meio de seleção que tem uma primeira entrada para receber o sinal da primeira saída do componente de estágio de tubo e uma segunda entrada para receber o sinal por meio de um caminho de desvio (1730), em que o meio de seleção é dinamicamente controlável, com base em um sinal de controle, para emitir o sinal recebido da primeira saída do componente de estágio de tubo em uma configuração de múltiplos ciclos ou o sinal recebido por meio do caminho de desvio (1730) em uma configuração de ciclo único, em que a operação do componente de estágio de tubo na configuração de múltiplos ciclos está em um nível de tensão mais baixo do que a operação do componente de estágio de tubo na configuração de ciclo único.
22. Aparelho, de acordo com a reivindicação 21, caracterizado pelo fato de que o meio de seleção se destina a receber o sinal do componente de estágio de tubo atrasado em relação ao sinal recebido por meio do caminho de desvio (1730).
23. Aparelho, de acordo com a reivindicação 22, caracterizado pelo fato de que o meio de interconexão (215, 358, 330) compreende: um meio de interconexão (215, 358, 330) de malha que tem uma pluralidade de paradas de malha; e uma pluralidade de meios de estágio de tubo interpostos entre pelo menos algumas dentre a pluralidade de paradas de malha.
BR112021016708-0A 2019-03-26 2020-03-04 Aparelho, método, sistema, e meio de armazenamento legível por computador BR112021016708A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/364,619 US11256657B2 (en) 2019-03-26 2019-03-26 System, apparatus and method for adaptive interconnect routing
US16/364,619 2019-03-26
PCT/US2020/020927 WO2020197725A1 (en) 2019-03-26 2020-03-04 System, apparatus and method for adaptive interconnect routing

Publications (1)

Publication Number Publication Date
BR112021016708A2 true BR112021016708A2 (pt) 2021-10-13

Family

ID=72607837

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021016708-0A BR112021016708A2 (pt) 2019-03-26 2020-03-04 Aparelho, método, sistema, e meio de armazenamento legível por computador

Country Status (6)

Country Link
US (1) US11256657B2 (pt)
EP (1) EP3948553A4 (pt)
KR (1) KR20210133221A (pt)
CN (1) CN113366458A (pt)
BR (1) BR112021016708A2 (pt)
WO (1) WO2020197725A1 (pt)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117235007B (zh) * 2023-11-13 2024-01-26 中科芯磁科技(珠海)有限责任公司 互连模块控制方法、互连模块及存储介质

Family Cites Families (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163153A (en) 1989-06-12 1992-11-10 Grid Systems Corporation Low-power, standby mode computer
JP3159345B2 (ja) * 1993-07-02 2001-04-23 日本電気株式会社 パイプライン演算処理装置
US5522087A (en) 1994-03-22 1996-05-28 Verifone Inc. System for selectively operating in different modes depending upon receiving signal from a host computer within a time window upon power up
US5590341A (en) 1994-09-30 1996-12-31 Intel Corporation Method and apparatus for reducing power consumption in a computer system using ready delay
US5621250A (en) 1995-07-31 1997-04-15 Ford Motor Company Wake-up interface and method for awakening an automotive electronics module
US5931950A (en) 1997-06-17 1999-08-03 Pc-Tel, Inc. Wake-up-on-ring power conservation for host signal processing communication system
JP3449186B2 (ja) 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US6823516B1 (en) 1999-08-10 2004-11-23 Intel Corporation System and method for dynamically adjusting to CPU performance changes
US7010708B2 (en) 2002-05-15 2006-03-07 Broadcom Corporation Method and apparatus for adaptive CPU power management
US7539885B2 (en) 2000-01-13 2009-05-26 Broadcom Corporation Method and apparatus for adaptive CPU power management
JP2001318742A (ja) 2000-05-08 2001-11-16 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータ読み取り可能な記録媒体
KR100361340B1 (ko) 2000-05-15 2002-12-05 엘지전자 주식회사 씨피유 클럭 제어 방법
US6792392B1 (en) 2000-06-30 2004-09-14 Intel Corporation Method and apparatus for configuring and collecting performance counter data
US6748546B1 (en) 2000-09-26 2004-06-08 Sun Microsystems, Inc. Method and apparatus for reducing power consumption
US7093107B2 (en) 2000-12-29 2006-08-15 Stmicroelectronics, Inc. Bypass circuitry for use in a pipelined processor
US6829713B2 (en) 2000-12-30 2004-12-07 Intel Corporation CPU power management based on utilization with lowest performance mode at the mid-utilization range
US7058824B2 (en) 2001-06-15 2006-06-06 Microsoft Corporation Method and system for using idle threads to adaptively throttle a computer
US20030061383A1 (en) 2001-09-25 2003-03-27 Zilka Anthony M. Predicting processor inactivity for a controlled transition of power states
US7111179B1 (en) 2001-10-11 2006-09-19 In-Hand Electronics, Inc. Method and apparatus for optimizing performance and battery life of electronic devices based on system and application parameters
US6996728B2 (en) 2002-04-26 2006-02-07 Hewlett-Packard Development Company, L.P. Managing power consumption based on utilization statistics
US7051227B2 (en) 2002-09-30 2006-05-23 Intel Corporation Method and apparatus for reducing clock frequency during low workload periods
US6898689B2 (en) 2002-11-15 2005-05-24 Silicon Labs Cp, Inc. Paging scheme for a microcontroller for extending available register space
US7043649B2 (en) 2002-11-20 2006-05-09 Portalplayer, Inc. System clock power management for chips with multiple processing modules
US6971033B2 (en) 2003-01-10 2005-11-29 Broadcom Corporation Method and apparatus for improving bus master performance
JP2006518064A (ja) 2003-01-23 2006-08-03 ユニバーシティー オブ ロチェスター マルチクロックドメインを有するマイクロプロセッサ
JP4061492B2 (ja) 2003-02-10 2008-03-19 ソニー株式会社 情報処理装置および消費電力制御方法
WO2004084065A2 (en) 2003-03-19 2004-09-30 Koninklijke Philips Electronics N.V. Pipelined instruction processor with data bypassing
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7272732B2 (en) 2003-06-30 2007-09-18 Hewlett-Packard Development Company, L.P. Controlling power consumption of at least one computer system
TW200502847A (en) 2003-07-08 2005-01-16 Benq Corp Control device and method for reducing number of interrupts in a processor
US7146514B2 (en) 2003-07-23 2006-12-05 Intel Corporation Determining target operating frequencies for a multiprocessor system
US7272730B1 (en) 2003-07-31 2007-09-18 Hewlett-Packard Development Company, L.P. Application-driven method and apparatus for limiting power consumption in a processor-controlled hardware platform
US7194643B2 (en) 2003-09-29 2007-03-20 Intel Corporation Apparatus and method for an energy efficient clustered micro-architecture
US7770034B2 (en) 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
US20070156992A1 (en) 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US7451333B2 (en) 2004-09-03 2008-11-11 Intel Corporation Coordinating idle state transitions in multi-core processors
US9001801B2 (en) 2004-09-07 2015-04-07 Broadcom Corporation Method and system for low power mode management for complex Bluetooth devices
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7426648B2 (en) 2004-09-30 2008-09-16 Intel Corporation Global and pseudo power state management for multiple processing elements
US7434073B2 (en) 2004-11-29 2008-10-07 Intel Corporation Frequency and voltage scaling architecture
US7502948B2 (en) 2004-12-30 2009-03-10 Intel Corporation Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores
US8041967B2 (en) 2005-02-15 2011-10-18 Hewlett-Packard Development Company, L.P. System and method for controlling power to resources based on historical utilization data
US7454632B2 (en) 2005-06-16 2008-11-18 Intel Corporation Reducing computing system power through idle synchronization
US7430673B2 (en) 2005-06-30 2008-09-30 Intel Corporation Power management system for computing platform
US8301868B2 (en) 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US20070079294A1 (en) 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070106827A1 (en) 2005-11-08 2007-05-10 Boatright Bryan D Centralized interrupt controller
US20070245163A1 (en) 2006-03-03 2007-10-18 Yung-Hsiang Lu Power management in computer operating systems
US7437270B2 (en) 2006-03-30 2008-10-14 Intel Corporation Performance state management
US8086832B2 (en) * 2006-05-19 2011-12-27 International Business Machines Corporation Structure for dynamically adjusting pipelined data paths for improved power management
US7752468B2 (en) 2006-06-06 2010-07-06 Intel Corporation Predict computing platform memory power utilization
US9323311B2 (en) * 2006-06-22 2016-04-26 Broadcom Corporation Method and system for packet based signaling between A Mac and A PHY to manage energy efficient network devices and/or protocols
US7529956B2 (en) 2006-07-17 2009-05-05 Microsoft Corporation Granular reduction in power consumption
US7930564B2 (en) 2006-07-31 2011-04-19 Intel Corporation System and method for controlling processor low power states
JP2008107983A (ja) 2006-10-24 2008-05-08 Nec Electronics Corp キャッシュメモリ
US7730340B2 (en) 2007-02-16 2010-06-01 Intel Corporation Method and apparatus for dynamic voltage and frequency scaling
WO2008117133A1 (en) 2007-03-26 2008-10-02 Freescale Semiconductor, Inc. Anticipation of power on of a mobile device
JP2008257578A (ja) 2007-04-06 2008-10-23 Toshiba Corp 情報処理装置、スケジューラおよび情報処理置のスケジュール制御方法
US7971074B2 (en) 2007-06-28 2011-06-28 Intel Corporation Method, system, and apparatus for a core activity detector to facilitate dynamic power management in a distributed system
US7971043B2 (en) * 2007-11-22 2011-06-28 Andes Technology Corporation Electronic system and method for changing number of operation stages of a pipeline
US8024590B2 (en) 2007-12-10 2011-09-20 Intel Corporation Predicting future power level states for processor cores
US20090150696A1 (en) 2007-12-10 2009-06-11 Justin Song Transitioning a processor package to a low power state
US7966506B2 (en) 2007-12-12 2011-06-21 Intel Corporation Saving power in a computer system
US8442697B2 (en) 2007-12-18 2013-05-14 Packet Digital Method and apparatus for on-demand power management
KR101459140B1 (ko) 2007-12-26 2014-11-07 엘지전자 주식회사 전원관리 제어 장치 및 방법
US7945765B2 (en) * 2008-01-31 2011-05-17 International Business Machines Corporation Method and structure for asynchronous skip-ahead in synchronous pipelines
US8156362B2 (en) 2008-03-11 2012-04-10 Globalfoundries Inc. Hardware monitoring and decision making for transitioning in and out of low-power state
US8954977B2 (en) 2008-12-09 2015-02-10 Intel Corporation Software-based thread remapping for power savings
KR101210274B1 (ko) * 2008-12-19 2012-12-10 한국전자통신연구원 전력 소모 스케일링이 가능한 프로세서
US8700943B2 (en) 2009-12-22 2014-04-15 Intel Corporation Controlling time stamp counter (TSC) offsets for mulitple cores and threads
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US8949637B2 (en) 2011-03-24 2015-02-03 Intel Corporation Obtaining power profile information with low overhead
US8769316B2 (en) 2011-09-06 2014-07-01 Intel Corporation Dynamically allocating a power budget over multiple domains of a processor
US9074947B2 (en) 2011-09-28 2015-07-07 Intel Corporation Estimating temperature of a processor core in a low power state without thermal sensor information
US8914650B2 (en) 2011-09-28 2014-12-16 Intel Corporation Dynamically adjusting power of non-core processor circuitry including buffer circuitry
US8954770B2 (en) 2011-09-28 2015-02-10 Intel Corporation Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin
US8832478B2 (en) 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
US9026815B2 (en) 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor
US9158693B2 (en) 2011-10-31 2015-10-13 Intel Corporation Dynamically controlling cache size to maximize energy efficiency
US8943340B2 (en) 2011-10-31 2015-01-27 Intel Corporation Controlling a turbo mode frequency of a processor
CN104169832B (zh) 2012-03-13 2017-04-19 英特尔公司 提供处理器的能源高效的超频操作
US9436245B2 (en) 2012-03-13 2016-09-06 Intel Corporation Dynamically computing an electrical design point (EDP) for a multicore processor
US9323316B2 (en) 2012-03-13 2016-04-26 Intel Corporation Dynamically controlling interconnect frequency in a processor
US8984313B2 (en) 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US8935578B2 (en) * 2012-09-29 2015-01-13 Intel Corporation Method and apparatus for optimizing power and latency on a link
US9360884B2 (en) * 2013-11-08 2016-06-07 Altera Corporation Clocking for pipelined routing
WO2017203656A1 (ja) * 2016-05-26 2017-11-30 オリンパス株式会社 演算装置、画像処理装置および画像処理方法
US10320386B1 (en) * 2017-12-08 2019-06-11 Xilinx, Inc. Programmable pipeline interface circuit

Also Published As

Publication number Publication date
CN113366458A (zh) 2021-09-07
EP3948553A4 (en) 2022-12-14
KR20210133221A (ko) 2021-11-05
US20200311018A1 (en) 2020-10-01
WO2020197725A1 (en) 2020-10-01
US11256657B2 (en) 2022-02-22
JP2022526224A (ja) 2022-05-24
EP3948553A1 (en) 2022-02-09

Similar Documents

Publication Publication Date Title
US11782492B2 (en) Techniques to enable communication between a processor and voltage regulator
US11435816B2 (en) Processor having accelerated user responsiveness in constrained environment
US9983644B2 (en) Dynamically updating at least one power management operational parameter pertaining to a turbo mode of a processor for increased performance
US11481013B2 (en) Multi-level loops for computer processor control
US10379904B2 (en) Controlling a performance state of a processor using a combination of package and thread hint information
US20170371399A1 (en) Controlling Forced Idle State Operation In A Processor
US20180314289A1 (en) Modifying an operating frequency in a processor
US20160224090A1 (en) Performing context save and restore operations in a processor
EP3340039A1 (en) Processor prefetch throttling based on short streams
US10541687B2 (en) Validating an image for a reconfigurable device
US11593544B2 (en) System, apparatus and method for adaptive operating voltage in a field programmable gate array (FPGA)
WO2020123034A1 (en) System, apparatus and method for dynamic thermal distribution of a system on chip
US11256657B2 (en) System, apparatus and method for adaptive interconnect routing
US11016916B2 (en) Generation of processor interrupts using averaged data
US10235302B2 (en) Invalidating reads for cache utilization in processors
JP7495422B2 (ja) 適応的な相互接続ルーティングのためのシステム、装置及び方法