BRPI0920782B1 - aparelho, método e sistema para executar fusão eficiente de instruções - Google Patents

aparelho, método e sistema para executar fusão eficiente de instruções Download PDF

Info

Publication number
BRPI0920782B1
BRPI0920782B1 BRPI0920782A BRPI0920782A BRPI0920782B1 BR PI0920782 B1 BRPI0920782 B1 BR PI0920782B1 BR PI0920782 A BRPI0920782 A BR PI0920782A BR PI0920782 A BRPI0920782 A BR PI0920782A BR PI0920782 B1 BRPI0920782 B1 BR PI0920782B1
Authority
BR
Brazil
Prior art keywords
instruction
fuse
stored
instructions
logic
Prior art date
Application number
BRPI0920782A
Other languages
English (en)
Inventor
Ouziel Ido
Rappoport Lihu
Raghuvanshi Pankaj
Valentine Robert
Gabor Ron
Original Assignee
Intel Corp
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=42063260&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=BRPI0920782(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Intel Corp filed Critical Intel Corp
Publication of BRPI0920782A2 publication Critical patent/BRPI0920782A2/pt
Publication of BRPI0920782B1 publication Critical patent/BRPI0920782B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

aparelho, método e sistema para executar fusão eficiente de instruções. a presente invenção refere-se a uma técnica para propiciar a fusão de instruções eficiente dentro de um sistema de computação. em uma modalidade, uma lógica de processamento retarda o processamento de uma segunda instrução, por um período de tempo limite, se uma primeira instrução dentro de uma fila de instruções for fusível com a segunda instrução.

Description

(54) Tftulo: APARELHO, MÉTODO E SISTEMA PARA EXECUTAR FUSÃO EFICIENTE DE INSTRUÇÕES (51) Int.CL: G06F 9/06; G06F 9/22; G06F 9/30.
(30) Prioridade Unionista: 30/10/2008 US 12/290,395.
(73) Titular(es): INTEL CORPORATION.
(72) Inventor(es): IDO OUZIEL; LIHU RAPPOPORT; ROBERT VALENTINE; RON GABOR; PANKAJ RAGHUVANSHI.
(86) Pedido PCT: PCT US2009062219 de 27/10/2009 (87) Publicação PCT: WO 2010/056511 de 20/05/2010 (85) Data do Início da Fase Nacional: 01/04/2011 (57) Resumo: APARELHO, MÉTODO E SISTEMA PARA EXECUTAR FUSÃO EFICIENTE DE INSTRUÇÕES. A presente invenção refere-se a uma técnica para propiciar a fusão de instruções eficiente dentro de um sistema de computação. Em uma modalidade, uma lógica de processamento retarda o processamento de uma segunda instrução, por um período de tempo limite, se uma primeira instrução dentro de uma fila de instruções for fusível com a segunda instrução.
1/12
Relatório Descritivo da Patente de Invenção para APARELHO, MÉTODO E SISTEMA PARA EXECUTAR FUSÃO EFICIENTE DE INSTRUÇÕES.
CAMPO DA INVENÇÃO [001] A presente invenção refere-se, ao campo de processamento de informações e, mais especificamente, ao campo de fusão de instruções em sistemas de computação e microprocessadores.
ANTECEDENTES [002] A fusão de instruções é um processo que combina duas instruções em uma única instrução, que resulta em uma sequência de operações (ou de micro-operações, uop) dentro de um processador. As instruções armazenadas em uma fila de instruções (IQ) de processador podem ser fundidas após serem lidas da IQ e antes de serem enviadas para decodificadores de instruções, ou após serem decodificadas pelos decodificadores de instruções. Tipicamente, a fusão de instruções, que ocorre antes da instrução ser decodificada, é referida como uma macrofusão, enquanto que a fusão de instruções, que ocorre após a instrução ser decodificada (em uops, por exemplo), é referida como uma microfusão. Um exemplo de macrofusão é a combinação de uma instrução de comparação (CMP) ou uma instrução de teste (TEST) (CMP/TEST) com uma instrução de pulo condicional (JCC). Os pares de instruções CMP/TEST e JCC podem ocorrer regularmente em programas no fim de loops, por exemplo, quando é feita uma comparação, e, com base no resultado de uma comparação, uma ramificação é adotada ou não. Uma vez que a macrofusão pode aumentar efetivamente a taxa de rendimento de instruções, pode ser desejável o maior número possível de oportunidades para a fusão de instruções.
[003] Para que as oportunidades de fusão de instruções sejam
Petição 870200012331, de 27/01/2020, pág. 6/26
2/12 encontradas em algumas microarquiteturas de processadores da técnica anterior, ambas as instruções CMP/TEST e JCC podem precisar residir concorrentemente na IQ, de modo que possam ser fundidas quando as instruções são lidas da IQ. No entanto, se houver uma instrução CMP/TEST fusível na IQ e nenhuma outra instrução tiver sido escrita na IQ (isto é, a instrução CMP/TEST é a última instrução na IQ), a instrução CMP/TEST pode ser lida da IQ e enviada para o decodificador sem ser fundida, mesmo se a instrução seguinte na ordem do programa for uma instrução JCC. Um exemplo no qual uma oportunidade de fusão perdida pode ocorrer é se a CMP/TEST e a JCC têm a oportunidade de ir através de um limite de armazenamento (por exemplo, um limite de 16 bytes), fazendo com que a CMP/TEST seja escrita na IQ em um ciclo e a JCC seja escrita no ciclo seguinte. Nesse caso, se não houver condições de parada, a JCC vai ser escrita na IQ ao mesmo tempo, ou após a CMP/TEST ter sido lida da IQ, portanto, uma oportunidade de fusão vai ser perdida, resultando em múltiplas leituras desnecessárias da IQ, uma menor taxa de rendimento de instruções e um consumo de energia excessivo. BREVE DESCRIÇÃO DOS DESENHOS [004] As modalidades da invenção são mostradas por meio de exemplo, e não por meio de limitação, nas figuras dos desenhos em anexo, e nos quais os números de referência similares se referem a elementos similares, em que:
[005] a figura 1 mostra um diagrama de blocos de um microprocessador, no qual pelo menos uma modalidade da invenção pode ser usada;
[006] a figura 2 mostra um diagrama de blocos de um sistema de computação de barramento compartilhado, no qual pelo menos uma modalidade da invenção pode ser usada;
[007] a figura 3 mostra um diagrama de blocos de um sistema de
Petição 870200012331, de 27/01/2020, pág. 7/26
3/12 computação de interligação ponto a ponto, na pelo menos uma modalidade da invenção pode ser usada;
[008] a figura 4 mostra um diagrama de blocos de uma máquina de estado, que pode ser usada para implementar pelo menos uma modalidade da invenção;
[009] a figura 5 é um fluxograma de operações, que pode ser usado para conduzir pelo menos uma modalidade da invenção; e [0010] a figura 6 é um fluxograma de operações, que pode ser usado para conduzir pelo menos uma modalidade.
DESCRIÇÃO DETALHADA [0011] As modalidades da invenção podem ser usadas para aperfeiçoar a taxa de rendimento de instruções em um processador, e/ou reduzir o consumo de energia do processador. Em uma modalidade, o que seriam de outro modo oportunidades perdidas para a fusão de instruções passam a ser, por conseguinte, possibilidades de fusão de instruções. Em uma modalidade, o que seriam oportunidades de fusão de instruções perdidas, verificou-se que por retardo de leitura de uma última instrução, de uma fila de instruções (IQ), ou a distribuição da última instrução lida da IQ para uma fase de decodificação para um número limite de ciclos, de modo que as instruções fusíveis subsequentes podem ser buscadas e armazenadas na IQ (ou pelo menos identificadas sem que sejam necessariamente armazenadas na IQ), e subsequentemente fundidas com a última instrução fusível. Em uma modalidade, o retardo da leitura ou da distribuição de uma primeira instrução fusível, por um número limite de ciclos, pode aperfeiçoar o desempenho do processador, uma vez que ao fazer isso, pode-se evitar que duas outras instruções fusíveis sejam decodificadas e processadas separadamente, em vez de como uma única instrução.
[0012] A seleção do número limite de ciclos de espera pode
Petição 870200012331, de 27/01/2020, pág. 8/26
4/12 depender da microarquitetura na qual uma modalidade particular é usada. Por exemplo, em uma modalidade, o número limite de ciclos pode ser dois, enquanto que, em outras modalidades, o número limite de ciclos pode ser igual ou inferior a dois. Em uma modalidade, o número limite de ciclos de espera proporciona o período de tempo máximo para esperar que uma instrução fusível subsequente seja armazenada na IQ, enquanto mantendo uma vantagem de latência / desempenho global na espera para a instrução fusível subsequente durante o processamento de instruções fusíveis, como instruções separadas. Em outras modalidades, quando a energia é mais crítica, por exemplo, o número limite de ciclos de espera pode ser mais alto, para garantir que uma energia extra não seja usada para processar duas instruções fusíveis separadamente, mesmo se o número limite de ciclos de espera poder provocar uma diminuição (ainda que temporária) na taxa de rendimento de instruções.
[0013] A figura 1 mostra um microprocessador, no qual pelo menos uma modalidade da invenção pode ser usada. Em particular, a figura 1 mostra o microprocessador 100, tendo um ou mais núcleos de processador 105 e 110, ambos tendo associados com eles um cache local 107 e 113, respectivamente. Também é mostrada na figura 1 uma memória de cache compartilhado 115, que pode armazenar versões de pelo menos algumas das informações armazenadas em ambos os caches locais 107 e 113. Em algumas modalidades, o microprocessador 100 pode incluir também outra lógica, não mostrada na figura 1, tal como um controlador de memória integrado, um controlador gráfico integrado, bem como uma outra lógica para executar outras funções dentro de um sistema de computação, tal como um controle I/O. Em uma modalidade, cada microprocessador em um sistema de processadores múltiplos, ou cada núcleo de processador em um sistema de processadores múltiplos, pode incluir
Petição 870200012331, de 27/01/2020, pág. 9/26
5/12 ou, de outro modo, estar associado com a lógica 119, para propiciar técnicas de comunicação ininterruptas, de acordo com pelo menos uma modalidade. A lógica pode incluir circuitos, software ou ambos, para propiciar a fusão mais eficiente de instruções do que em algumas implementações da técnica anterior.
[0014] Em uma modalidade, a lógica 119 pode incluir uma lógica para reduzir a probabilidade de perder oportunidades de fusão de instruções. Em uma modalidade, a lógica 119 retarda a leitura de uma primeira instrução (por exemplo, CMP) da IQ, quando não há instrução subsequente armazenada na instrução, ou outra estrutura de armazenamento de instruções buscada. Em uma modalidade, a lógica 119 provoca a leitura ou distribuição de uma primeira instrução fusível, para um número limite de ciclos (por exemplo, dois ciclos), antes da leitura da IQ ou da distribuição da primeira instrução fusível a um decodificador, ou outra lógica de processamento, de modo que se houver uma segunda instrução fusível, que possa ser fundida com a primeira instrução, não ainda armazenada na IQ (devido, por exemplo, às duas instruções fusíveis sendo armazenadas em uma memória ou cache, em diferentes limites de armazenamento), a oportunidade de fundir as duas instruções fusíveis pode não ser perdida. Em algumas modalidades, o limiar pode ser fixado, enquanto que em outras modalidades, o limiar pode ser variável, modificável por um usuário, ou de acordo com um algoritmo independente de usuário. Em uma modalidade, a primeira instrução fusível é uma instrução CMP e a segunda instrução fusível é uma instrução JCC. Em outras modalidades, uma ou ambas das primeira e segunda instruções pode não ser uma instrução CMP ou JCC, mas quaisquer instruções fusíveis. Além do mais, as modalidades da invenção podem ser aplicadas na fusão de mais de duas instruções.
[0015] A figura 2 mostra, por exemplo, um sistema de computação
Petição 870200012331, de 27/01/2020, pág. 10/26
6/12 de barramento lateral frontal (FSB), no qual uma modalidade da presente invenção pode ser usada. Qualquer processador 201, 205, 210 ou 215 pode ter acesso a informações de qualquer memória cache de nível um (L1) local 220, 225, 230, 235, 240, 245, 250, 255 dentro ou de outro modo associado com um dos núcleos do processador 223, 227, 233, 237, 243, 253, 257. Além do mais, qualquer processador 201, 205, 210 ou 215 pode ter acesso a informações de caches de nível dois (L2) compartilhados 203, 207, 213, 217 ou da memória do sistema 260, pelo conjunto de circuitos integrados 265. Um ou mais dos processadores na figura 2 podem incluir ou, de outro modo, estarem associados com, a lógica 219, para propiciar eficiência aperfeiçoada de fusão de instruções, de acordo com pelo menos uma modalidade.
[0016] Além do sistema de computação FSB, mostrado na figura
2, outras configurações de sistema podem ser usadas em conjunto com várias modalidades da invenção, incluindo sistemas de interligação ponto a ponto (P2P) e sistemas de interligação em anel. O sistema P2P da figura 3 pode, por exemplo, incluir vários processadores, dos quais apenas dois processadores 370, 380 são, por exemplo, mostrados. Os processadores 370, 380 podem ambos incluir um círculo central de controlador de memória local (MCH) 372, 382, para conexão com a memória 32, 34. Os processadores 370, 380 podem trocar dados por meio de uma interface ponto a ponto (PtP) 350, usando os circuitos de interface PtP 378, 388. Os processadores podem ambos trocar dados com um conjunto de circuitos integrados 390 por meio de interfaces PtP individuais 352, 354, usando os circuitos de interface ponto a ponto 376, 394, 386, 398. O conjunto de circuitos integrados 390 também pode trocar dados com um circuito gráfico de alto desempenho 338 por meio de uma interface gráfica de alto desempenho 339. As modalidades da invenção podem ser
Petição 870200012331, de 27/01/2020, pág. 11/26
7/12 localizadas dentro de qualquer processador, que tenha um número qualquer de núcleos de processamento, ou dentro de cada um dos agentes de barramento PtP da figura 3. Em uma modalidade, qualquer núcleo de processador pode incluir, ou, de outra forma, estar associado com, uma memória de cache local (não mostrada). Além do mais, um cache compartilhado (não mostrado) pode ser incluído em qualquer um dos dois processadores, ainda conectado com os processadores pela interligação p2p, de modo que as informações de cache local de um ou mais os processadores possam ser armazenadas no cache compartilhado, se um processador for colocado em um modo de baixa energia. Um ou mais dos processadores ou núcleos na figura 3 podem incluir ou, de outro modo, estar associados com, a lógica 319, para propiciar uma eficiência aperfeiçoada de fusão de instruções, de acordo com pelo menos uma modalidade.
[0017] Em pelo menos uma modalidade, uma segunda instrução fusível pode não ser armazenada em uma IQ, antes que ocorra alguma operação intermediária (ocorrendo entre uma primeira e uma segunda instruções fusíveis), tal como uma operação clara IQ, ocasionando uma oportunidade perdida para fundir as duas, de outro modo, instruções fusíveis. Em uma modalidade, na qual um cache (ou um armazenamento temporário) armazena as sequências relacionadas de instruções decodificadas (após terem sido lidas da IQ e decodificadas) ou uops (por exemplo, armazenamento temporário de corrente decodificada ou DSB, cache traço ou TC), que vão ser escalonadas (talvez em vários tempos) para execução pelo processador, uma primeira uop fusível (por exemplo, CMP) pode ser armazenada no cache, sem uma segunda uop fusível (por exemplo, JCC) dentro da mesma faixa endereçável (por exemplo, o mesmo modo de cache). Isso pode ocorrer, por exemplo, quando a JCC está
Petição 870200012331, de 27/01/2020, pág. 12/26
8/12 atravessando uma linha de cache (devido a uma perda de cache) ou atravessando um limite de página (devido à perda de armazenamento temporário implantado em memória de tradução), em cujo caso o cache pode armazenar a CMP, sem a JCC. Subsequentemente, se o encadeamento de núcleos do processador for limpo (devido a um sinal limpo sendo garantido, por exemplo), após a CMP ter sido armazenada, mas antes que a JCC seja armazenada no cache, o cache armazena apenas a CMP em um dos seus modos sem a JCC. [0018] Nas verificações subsequentes no armazenamento em linha de cache da CMP, o cache pode interpretar a JCC perdida como um acesso perdido, e a JCC pode ser marcada como o ponto de acréscimo para a operação de preenchimento de cache seguinte. Esse ponto de acréscimo pode, no entanto, não ser encontrado, uma vez que as CMP + JCC podem ser lidas como fundidas da IQ. Portanto, a JCC solicitada pode não ser igual a qualquer uop a ser preenchida, oriunda da IQ, e, desse modo, o cache não vai ser capaz de preencher a JCC perdida, mas pode fica em falta continuamente na linha na qual as CMP + JCC fundidas são esperadas. Além do mais, em uma modalidade, na qual uma fila de pedidos de preenchimento pendentes (PFRQ) é usada para armazenar pedidos de preenchimento de cache de uops, uma entrada, que tenha sido reservada para um preenchimento de instruções fundidas particulares, pode não ser desalojada (uma vez que o preenchimento de instruções fusíveis particulares nunca ocorre), e pode se manter inútil até a próxima operação limpa. Em uma modalidade, um travamento de entrada PFRQ pode ocorrer toda vez que a entrada de instrução fusível perdida for acessada, e pode, portanto, impedir quaisquer preenchimentos subsequentes no mesmo local.
[0019] Para impedir um travamento incorreto ou indesejável da entrada PFRQ, uma máquina de estado, em uma modalidade, pode
Petição 870200012331, de 27/01/2020, pág. 13/26
9/12 ser usada para monitorar as uops senso lidas da IQ, para detectar casos, nos quais uma região, que tenha uma entrada PFRQ correspondente (por exemplo, uma região marcada para um preenchimento), foi completamente perdida, devido, por exemplo, à última uop da entrada ter sido atingida, sem detecção do ponto de partida de preenchimento. Em uma modalidade, a máquina de estado pode fazer com que a entrada PFRQ seja desalojada, quando essa condição for satisfeita. Em outras modalidades, um travamento de entrada PFRQ indesejável pode ser evitado por não criação, dentro de um cache, de uma instrução fusível, que possa ser lida da IQ, sem ambas as instruções fusíveis presentes. Por exemplo, se uma CMP for seguida por uma instrução não JCC, uma entrada de instrução fusível pode ser criada no cache, mas apenas se a CMP for lida apenas da IQ (por exemplo, após o tempo de espera limite passar), é a entrada de instrução fusível não preenchida no cache. Em outras modalidades, o número de vezes em que a máquina de estado tenha detectado uma região de preenchimento, que tenha sido pulada, pode ser contado, uma operação de limpeza ou invalidação de cache pode ser conduzida, após uma contagem limite das vezes em que a região de preenchimento foi pulada. A região de preenchimento pode ser então removida do cache, e a instrução fusível ser depois repreenchida. [0020] A figura 4 mostra uma máquina de estado, de acordo com uma modalidade, que pode ser usada para evitar que condições de travamento de entrada PFRQ indesejado, devido a uma instrução fusível perdida na IQ. No estado 401, no qual as instruções na IQ não estão em uma região marcada para preenchimento, um sinal de início de região de preenchimento, indicando que a IQ está prestes a processar uma instrução, que é mapeada a uma região de preenchimento (uma instrução da região de preenchimento para a produção de número único do cache), mas não inicia no apontador de
Petição 870200012331, de 27/01/2020, pág. 14/26
10/12 instruções linear, salvo na PFRQ (borda) 405, isso pode fazer com que a máquina de estado se movimente para o estado 410. Se a instrução seguinte na IQ (que vai ser logo decodificada) termina em uma região de preenchimento (por exemplo, termina em uma linha como transformada em número único pelo cache, ou é uma ramificação adotada), então a máquina de estado faz com que o desalojamento 415 da entrada PFRQ correspondente, e a máquina de estado retorna para o estado 401. Se, no entanto, o apontador de preenchimento for igual à borda da região da região de preenchimento 430, enquanto no estado 401 ou no estado 410, a máquina de estado entra no estado 420, no qual o acesso está dentro da região de preenchimento, e, após o preenchimento, o ponto de partida. Do estado 420, uma última uop, na indicação de região de preenchimento, vai retornar 425 a máquina de estado para o estado 401, sem desalojamento da entrada PFRQ correspondente. A máquina de estado da figura 4 pode ser implementada em lógica de hardware, software, ou alguma combinação deles. Em outras modalidades, outras máquinas de estado ou lógicas podem ser usadas.
[0021] A figura 5 mostra um fluxograma de operações, que pode ser usado em conjunto com pelo menos uma modalidade da invenção. Na operação 501, determina-se se a instrução atualmente sendo acessada na IQ é fusível com qualquer instrução subsequente. Se não, então na operação 505, a instrução seguinte é acessada da IQ, a contagem de retardo é restaurada. Sendo assim, então na operação 510, um contador de retardo é incrementado, e, na operação 515, determina-se se o limiar de contagem de retardo é atingido. Se não for, então na operação 520, nenhuma fusão de instruções da instrução atualmente sendo acessada é conduzida. Se for isso, então a instrução seguinte é acessada da IQ, e a contagem de retardo é restaurada na operação 505. Em outras modalidades, outras
Petição 870200012331, de 27/01/2020, pág. 15/26
11/12 operações podem ser conduzidas para aperfeiçoar a eficiência de fusão de instruções.
[0022] A figura 6 mostra um fluxograma de operações, que podem ser conduzidas em conjunto com pelo menos uma modalidade. Para executar uma modalidade nos processadores, tendo vários circuitos decodificadores, pode ser útil garantir que a primeira instrução fusível seja decodificada em um circuito decodificador particular, que é capaz de decodificar a instrução fusível. Na figura 6, determina-se se uma instrução particular pode ser uma primeira de um par fundido de instruções, na operação 601. Se não, então as instruções fusíveis são descarregadas na operação 605. Sendo assim, então determina-se de a primeira instrução fusível é seguida por uma instrução válida na IQ, na operação 610. Sendo assim, então as instruções fusíveis são descarregadas na operação 610. Se não, então, na operação 615, determina-se se a primeira instrução fusível vai ser descarregada a um decodificador, capaz de suportar a instrução fusível. Em uma modalidade, o decodificador-0 é capaz de decodificar as instruções fusíveis. Se a primeira instrução fusível não for descarregada para o decodificador-0, então, na operação 620, a primeira instrução fusível é movimentada, ou explodida, a um decodificador diferente, até que corresponda ao decodificador-0. Na operação 625, um contador é ajustado a um valor limite, N, e, na operação 630, se a instrução for seguida por uma instrução válida ou o contador for zero, então as instruções fusíveis são descarregadas na operação 635. De outro modo, na operação 640, o contador é decrementado e a instrução inválida é explodida. Em outras modalidades, o contador pode incrementar a um valor final. Em outras modalidades, outras operações, além de uma operação de explosão pode limpar a instrução inválida.
[0023] Um ou mais aspectos de pelo menos uma modalidade
Petição 870200012331, de 27/01/2020, pág. 16/26
12/12 podem ser implementados pelos dados representativos armazenados em um meio legível por máquina, que representa várias lógicas dentro do processador, que, quando lidas por uma máquina, faz com que a máquina fabrique lógica para conduzir as técnicas descritas no presente relatório descritivo. Essas representações, conhecidas como núcleos IP, podem ser armazenadas em um meio (fita) legível por máquina, tangível e supridas a vários clientes ou instalações de manufatura, para serem carregadas nas máquinas de fabricação que produzem, de fato, a lógica ou processador.
[0024] Desse modo, um método e um aparelho para direcionar os acessos à região de memória microarquitetônica foram descritos. Deve-se entender que a descrição acima é intencionada para ser ilustrativa e não restritiva. Muitas outras modalidades vão ficar evidentes para aqueles versados na técnica, mediante leitura e entendimento da descrição acima. O âmbito da invenção deve ser, portanto, determinado com referência às reivindicações em anexo, juntamente com o âmbito integral de equivalências às quais essas reivindicações são associadas.
Petição 870200012331, de 27/01/2020, pág. 17/26
1/2

Claims (8)

  1. REIVINDICAÇÕES
    1. Aparelho, caracterizado pelo fato de que compreende:
    uma fila de instruções (IQ); e uma lógica (119) para retardar processamento de uma primeira instrução fusível, por um período limite de tempo, de modo que uma segunda instrução fusível, fusível com a primeira instrução fusível, possa ser fundida com a primeira instrução fusível, se a segunda instrução fusível for armazenada dentro da IQ, dentro do período limite de tempo, em que a lógica (119) inclui um contador para ser incrementado uma vez para cada ciclo, após a primeira instrução fusível ser armazenada na IQ, e essa ser a última instrução na IQ, até que um número limite de ciclos, correspondente ao período de tempo limite ser atingido.
  2. 2. Aparelho de acordo com a reivindicação 1, caracterizado pelo fato de que as primeira e segunda instruções fusíveis são armazenadas por um limite de busca, antes de serem armazenadas na IQ.
  3. 3. Aparelho de acordo com a reivindicação 1, caracterizado pelo fato de que a lógica (119) é retardar o processamento da primeira instrução fusível, apenas se a primeira instrução fusível for a última instrução armazenada na IQ.
  4. 4. Método, caracterizado pelo fato de que compreende:
    determinar se a instrução acessada no momento, dentro de uma fila de instruções (IQ), é fusível com qualquer instrução subsequente a ser armazenada na IQ;
    acessar uma instrução seguinte da IQ e restaurar o contador de retardo, se for determinado que a instrução atualmente acessada não for fusível com qualquer instrução subsequente a ser armazenada na IQ; e incrementar o contador de retardo, se for determinado que a dita instrução atualmente acessada for fusível e se a dita instrução
    Petição 870190088070, de 06/09/2019, pág. 17/22
    2/2 atualmente acessada for a última instrução na IQ.
  5. 5. Método de acordo com a reivindicação 4, caracterizado pelo fato de que compreende ainda fundir a instrução atualmente acessada com a instrução subsequente, se instrução acessada atualmente e a dita instrução subsequente forem fusíveis e o contador de retardo não tiver atingido um valor limite.
  6. 6. Método de acordo com a reivindicação 5, caracterizado pelo fato de que compreende ainda processar a instrução atualmente acessada separadamente da instrução subsequente, se instrução acessada atualmente e a dita instrução subsequente não forem fusíveis.
  7. 7. Método de acordo com a reivindicação 5, caracterizado pelo fato de que compreende ainda processar a instrução atualmente acessada separadamente da instrução subsequente, se o contador de retardo tiver atingido um valor limite.
  8. 8. Sistema, caracterizado pelo fato de que compreende:
    um armazenamento para armazenar uma primeira e uma segunda instruções fusíveis dentro de um primeiro e um segundo limites de acesso, respectivamente;
    um processador tendo uma lógica de busca, para buscar as primeira e segunda instruções fusíveis em uma fila de instruções (IQ);
    uma lógica de retardo para retardar a leitura da primeira instrução fusível da IQ, por um número limite de ciclos; e uma lógica de fusão de instruções para fundir as primeira e segunda instruções fusíveis, se a segunda instrução fusível for armazenada na IQ, após a primeira instrução fusível, e antes que o número limite de ciclos tenha sido atingido, em que a primeira instrução fusível é uma instrução dentre uma instrução de comparação ou teste (CMP/TEST) e a segunda instrução fusível é uma instrução de pulo condicional (JCC).
    Petição 870190088070, de 06/09/2019, pág. 18/22
    1/4
    Figure BRPI0920782B1_C0001
BRPI0920782A 2008-10-30 2009-10-27 aparelho, método e sistema para executar fusão eficiente de instruções BRPI0920782B1 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/290,395 US9690591B2 (en) 2008-10-30 2008-10-30 System and method for fusing instructions queued during a time window defined by a delay counter
PCT/US2009/062219 WO2010056511A2 (en) 2008-10-30 2009-10-27 Technique for promoting efficient instruction fusion

Publications (2)

Publication Number Publication Date
BRPI0920782A2 BRPI0920782A2 (pt) 2015-12-22
BRPI0920782B1 true BRPI0920782B1 (pt) 2020-04-22

Family

ID=42063260

Family Applications (2)

Application Number Title Priority Date Filing Date
BRPI0920782A BRPI0920782B1 (pt) 2008-10-30 2009-10-27 aparelho, método e sistema para executar fusão eficiente de instruções
BRPI0904287-3A BRPI0904287A2 (pt) 2008-10-30 2009-10-30 técnica para promover a fusão de instrução eficiente

Family Applications After (1)

Application Number Title Priority Date Filing Date
BRPI0904287-3A BRPI0904287A2 (pt) 2008-10-30 2009-10-30 técnica para promover a fusão de instrução eficiente

Country Status (8)

Country Link
US (4) US9690591B2 (pt)
JP (2) JP2012507794A (pt)
KR (1) KR101258762B1 (pt)
CN (2) CN101901128B (pt)
BR (2) BRPI0920782B1 (pt)
DE (1) DE102009051388A1 (pt)
TW (1) TWI455023B (pt)
WO (1) WO2010056511A2 (pt)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8090931B2 (en) * 2008-09-18 2012-01-03 Via Technologies, Inc. Microprocessor with fused store address/store data microinstruction
US9690591B2 (en) * 2008-10-30 2017-06-27 Intel Corporation System and method for fusing instructions queued during a time window defined by a delay counter
JP5491071B2 (ja) * 2009-05-20 2014-05-14 エヌイーシーコンピュータテクノ株式会社 命令融合演算装置および命令融合演算方法
US9223578B2 (en) * 2009-09-25 2015-12-29 Nvidia Corporation Coalescing memory barrier operations across multiple parallel threads
US8856496B2 (en) 2010-04-27 2014-10-07 Via Technologies, Inc. Microprocessor that fuses load-alu-store and JCC macroinstructions
US8843729B2 (en) 2010-04-27 2014-09-23 Via Technologies, Inc. Microprocessor that fuses MOV/ALU instructions
US20130081001A1 (en) * 2011-09-23 2013-03-28 Microsoft Corporation Immediate delay tracker tool
US9672037B2 (en) * 2013-01-23 2017-06-06 Apple Inc. Arithmetic branch fusion
US9886277B2 (en) * 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
US9483266B2 (en) * 2013-03-15 2016-11-01 Intel Corporation Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources
US9329848B2 (en) * 2013-03-27 2016-05-03 Intel Corporation Mechanism for facilitating dynamic and efficient fusion of computing instructions in software programs
US9792121B2 (en) 2013-05-21 2017-10-17 Via Technologies, Inc. Microprocessor that fuses if-then instructions
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
US9372695B2 (en) * 2013-06-28 2016-06-21 Globalfoundries Inc. Optimization of instruction groups across group boundaries
US10503513B2 (en) * 2013-10-23 2019-12-10 Nvidia Corporation Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type
WO2016042353A1 (en) * 2014-09-18 2016-03-24 Via Alliance Semiconductor Co., Ltd. Cache management request fusing
US20160179542A1 (en) * 2014-12-23 2016-06-23 Patrick P. Lai Instruction and logic to perform a fused single cycle increment-compare-jump
US10579389B2 (en) * 2015-11-02 2020-03-03 Arm Limited Fusion of instructions by delaying handling of a partial subset of a fusible group of instructions
US10387988B2 (en) 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10387147B2 (en) * 2017-08-02 2019-08-20 International Business Machines Corporation Managing an issue queue for fused instructions and paired instructions in a microprocessor
US11256509B2 (en) 2017-12-07 2022-02-22 International Business Machines Corporation Instruction fusion after register rename
US11157280B2 (en) 2017-12-07 2021-10-26 International Business Machines Corporation Dynamic fusion based on operand size
US11416252B2 (en) * 2017-12-27 2022-08-16 Arm Limited Program instruction fusion
US11194722B2 (en) * 2018-03-15 2021-12-07 Intel Corporation Apparatus and method for improved cache utilization and efficiency on a many core processor
US10929136B2 (en) 2018-04-11 2021-02-23 Futurewei Technologies, Inc. Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors
US20200042322A1 (en) * 2018-08-03 2020-02-06 Futurewei Technologies, Inc. System and method for store instruction fusion in a microprocessor
US11151267B2 (en) 2019-02-25 2021-10-19 International Business Machines Corporation Move data and set storage key based on key function control
US10831480B2 (en) * 2019-02-25 2020-11-10 International Business Machines Corporation Move data and set storage key instruction
US10831496B2 (en) 2019-02-28 2020-11-10 International Business Machines Corporation Method to execute successive dependent instructions from an instruction stream in a processor
US11216278B2 (en) * 2019-08-12 2022-01-04 Advanced New Technologies Co., Ltd. Multi-thread processing
KR102339882B1 (ko) 2020-01-24 2021-12-14 정종범 역압대응이 가능한 티 모션 진자식 게이트밸브
US11249757B1 (en) 2020-08-14 2022-02-15 International Business Machines Corporation Handling and fusing load instructions in a processor
CN112363762B (zh) * 2020-11-13 2023-01-06 苏州浪潮智能科技有限公司 一种融合命令处理方法、系统、设备以及介质
US12405799B2 (en) * 2020-11-19 2025-09-02 Arm Limited Register rename stage fusing of instructions
LU500061B1 (en) * 2021-04-20 2022-10-20 Microsoft Technology Licensing Llc Processor support for using cache way- locking to simultaneously record plural execution contexts into independent execution traces
US12008369B1 (en) 2021-08-31 2024-06-11 Apple Inc. Load instruction fusion
US12217060B1 (en) 2022-09-23 2025-02-04 Apple Inc. Instruction fusion
US12288066B1 (en) 2022-09-23 2025-04-29 Apple Inc. Operation fusion for instructions bridging execution unit types
US12487829B2 (en) * 2023-02-03 2025-12-02 SiFive, Inc. Macro-op fusion for pipelined architectures
US12379931B2 (en) * 2023-10-19 2025-08-05 Ampere Computing Llc Mechanism for instruction fusion
US20260003624A1 (en) * 2024-06-26 2026-01-01 Advanced Micro Devices, Inc. Multi-instruction fusion

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834171B2 (ja) * 1989-02-06 1998-12-09 株式会社日立製作所 コンパイル方法
US5392228A (en) * 1993-12-06 1995-02-21 Motorola, Inc. Result normalizer and method of operation
US5860154A (en) * 1994-08-02 1999-01-12 Intel Corporation Method and apparatus for calculating effective memory addresses
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
JP3113792B2 (ja) * 1995-04-27 2000-12-04 松下電器産業株式会社 最適化装置
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US6041403A (en) * 1996-09-27 2000-03-21 Intel Corporation Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US5860107A (en) 1996-10-07 1999-01-12 International Business Machines Corporation Processor and method for store gathering through merged store operations
US5957997A (en) * 1997-04-25 1999-09-28 International Business Machines Corporation Efficient floating point normalization mechanism
US5903761A (en) * 1997-10-31 1999-05-11 Preemptive Solutions, Inc. Method of reducing the number of instructions in a program code sequence
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6247113B1 (en) * 1998-05-27 2001-06-12 Arm Limited Coprocessor opcode division by data type
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6018799A (en) * 1998-07-22 2000-01-25 Sun Microsystems, Inc. Method, apparatus and computer program product for optimizing registers in a stack using a register allocator
US6742110B2 (en) * 1998-10-06 2004-05-25 Texas Instruments Incorporated Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution
TW477936B (en) * 1998-12-29 2002-03-01 Ind Tech Res Inst Instruction folding method and device used in a stack machine
US6338136B1 (en) * 1999-05-18 2002-01-08 Ip-First, Llc Pairing of load-ALU-store with conditional branch
US6647489B1 (en) 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
US20030023960A1 (en) 2001-07-25 2003-01-30 Shoab Khan Microprocessor instruction format using combination opcodes and destination prefixes
US6675376B2 (en) * 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
US6832307B2 (en) 2001-07-19 2004-12-14 Stmicroelectronics, Inc. Instruction fetch buffer stack fold decoder for generating foldable instruction status information
US6587929B2 (en) * 2001-07-31 2003-07-01 Ip-First, L.L.C. Apparatus and method for performing write-combining in a pipelined microprocessor using tags
US6889318B1 (en) * 2001-08-07 2005-05-03 Lsi Logic Corporation Instruction fusion for digital signal processor
US6718440B2 (en) 2001-09-28 2004-04-06 Intel Corporation Memory access latency hiding with hint buffer
US7051190B2 (en) * 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
US6920546B2 (en) * 2002-08-13 2005-07-19 Intel Corporation Fusion of processor micro-operations
US7653906B2 (en) * 2002-10-23 2010-01-26 Intel Corporation Apparatus and method for reducing power consumption on simultaneous multi-threading systems
US20040128485A1 (en) * 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
US7024544B2 (en) 2003-06-24 2006-04-04 Via-Cyrix, Inc. Apparatus and method for accessing registers in a processor
US7355601B2 (en) 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
KR101076815B1 (ko) 2004-05-29 2011-10-25 삼성전자주식회사 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템
US8082430B2 (en) * 2005-08-09 2011-12-20 Intel Corporation Representing a plurality of instructions with a fewer number of micro-operations
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7676513B2 (en) 2006-01-06 2010-03-09 Microsoft Corporation Scheduling of index merges
US7958181B2 (en) * 2006-09-21 2011-06-07 Intel Corporation Method and apparatus for performing logical compare operations
US7917568B2 (en) 2007-04-10 2011-03-29 Via Technologies, Inc. X87 fused multiply-add instruction
US9690591B2 (en) * 2008-10-30 2017-06-27 Intel Corporation System and method for fusing instructions queued during a time window defined by a delay counter

Also Published As

Publication number Publication date
CN101901128B (zh) 2016-04-27
JP2012507794A (ja) 2012-03-29
US10649783B2 (en) 2020-05-12
WO2010056511A2 (en) 2010-05-20
KR20110050715A (ko) 2011-05-16
JP2015072707A (ja) 2015-04-16
US9690591B2 (en) 2017-06-27
US20160246600A1 (en) 2016-08-25
US20170003965A1 (en) 2017-01-05
CN103870243A (zh) 2014-06-18
US20160378487A1 (en) 2016-12-29
BRPI0904287A2 (pt) 2011-02-01
CN103870243B (zh) 2018-02-02
CN101901128A (zh) 2010-12-01
BRPI0920782A2 (pt) 2015-12-22
TWI455023B (zh) 2014-10-01
JP5902285B2 (ja) 2016-04-13
US20100115248A1 (en) 2010-05-06
KR101258762B1 (ko) 2013-04-29
WO2010056511A3 (en) 2010-07-08
TW201032129A (en) 2010-09-01
DE102009051388A1 (de) 2010-05-06

Similar Documents

Publication Publication Date Title
BRPI0920782B1 (pt) aparelho, método e sistema para executar fusão eficiente de instruções
JP2012507794A5 (pt)
TWI470425B (zh) 硬體及軟體系統用之將程式自動分解為多重平行緒之系統,裝置及方法
Pelley et al. Memory persistency
US6609193B1 (en) Method and apparatus for multi-thread pipelined instruction decoder
CN104714836B (zh) 用于聚结内存事务的方法和系统
CN104714848B (zh) 利用用于聚结内存事务的指示的方法和系统
TWI514267B (zh) 用於多股亂序處理器中之指令排程的方法及裝置與系統
CN103176943B (zh) 用于功率优化的多处理器同步的方法
BR112019010679A2 (pt) sistemas, métodos e aparelhos para computação heterogênea
BRPI1005259A2 (pt) vetores simd sincronizadores
CN102103482B (zh) 自适应优化的比较-交换操作
Vera et al. Selective replication: A lightweight technique for soft errors
Koh et al. Tolerating process variations in large, set-associative caches: The buddy cache
Ansari et al. Necromancer: Enhancing system throughput by animating dead cores
Wen et al. Heterogeneous cache hierarchy management for integrated cpu-gpu architecture
KR20130096313A (ko) 하드웨어 및 소프트웨어 시스템이 자동으로 프로그램을 복수의 병렬 스레드들로 분해하는 시스템들, 장치들, 및 방법들
Yoneki et al. Scale-up graph processing: a storage-centric view
Chen et al. Making it practical and effective: fast and precise may-happen-in-parallel analysis
Yetim et al. Parallel streaming computation on error-prone processors
Naz Techniques to Improve Cache Utilization for a Better Computing Performance
Ananthramu et al. Improving speculative loop parallelization via selective squash and speculation reuse
Wang et al. Design tradeoffs in speculative Transactional memory architecture
Dundas et al. THE UNIVERSITY OF MICHICAN

Legal Events

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

Free format text: REFERENTE AS 5A E 6A ANUIDADES.

B08H Application fees: decision cancelled [chapter 8.8 patent gazette]

Free format text: REFERENTE AO DESPACHO 8.6 NA RPI 2376 DE 19/07/2016

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06T Formal requirements before examination [chapter 6.20 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

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