BRPI0610222A2 - sistema e método em que instruções condicionais fornecem incondicionalmente saìda - Google Patents

sistema e método em que instruções condicionais fornecem incondicionalmente saìda Download PDF

Info

Publication number
BRPI0610222A2
BRPI0610222A2 BRPI0610222-0A BRPI0610222A BRPI0610222A2 BR PI0610222 A2 BRPI0610222 A2 BR PI0610222A2 BR PI0610222 A BRPI0610222 A BR PI0610222A BR PI0610222 A2 BRPI0610222 A2 BR PI0610222A2
Authority
BR
Brazil
Prior art keywords
condition
register
target
value
result
Prior art date
Application number
BRPI0610222-0A
Other languages
English (en)
Inventor
Thomas Andrew Sartorius
James Norris Dieffenderfer
Jeffrey Todd Bridges
Kenneth Alan Dockser
Michael Scott Mcilvaine
Rodney Wayne Smith
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0610222A2 publication Critical patent/BRPI0610222A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Landscapes

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

Abstract

Uma instrução condicional, arquitetada para receber um ou mais operandos como entradas, para emitir para um alvo o resultado de uma operação realizada sobre os operandos se uma condição for satisfeita e para não fornecer uma emissão se a condição não for satisfeita, é executada de forma a que ela forneça incondicionalmente uma saída para o alvo. A instrução condicional obtém o valor anterior do alvo (isto é, o valor produzido pela instrução mais recente que precedeu a instrução condicional que atualizou o alvo). A condição é avaliada. Se a condição for satisfeita, é realizada uma operação e o resultado da operação é emitido para o alvo. Se a condição não for satisfeita o valor anterior é emitido para o alvo. As instruções subseqúentes podem se basear no alvo como uma fonte de operandos (seja escrito em um registrador ou encaminhado para a instrução), antes da avaliação da condição.

Description

"SISTEMA E MÉTODO EM QUE INSTRUÇÕES CONDICIONAIS FORNECEMINCONDICIONALMENTE SAÍDA"
FUNDAMENTOS
A presente invenção está de um modo geralrelacionada ao campo de processadores e em particular a umsistema e um método de execução de instruções condicionaisarquitetadas para não fornecer uma saida se uma condiçãonão for satisfeita.
Os microprocessadores realizam tarefas decomputação em uma ampla variedade de aplicativos. Uma metaem comum no projeto de microprocessadores é a de desempenhoaperfeiçoado, permitindo uma operação mais rápida e/oufuncionalidade maior através da evolução do software.
Vários processadores modernos empregam uma arquiteturaencadeada, onde instruções seqüenciais, cada uma possuindomúltiplas etapas de execução, são sobrepostas na execução.Para maior rendimento de instruções, estas devem fluircontinuamente através do encadeamento. Qualquer situaçãoque leve as instruções a parar no encadeamento, afetaprejudicialmente a capacidade de processamento deinstruções e, portanto, o desempenho do processador.
As instruções operam sobre dados obtidos a partirda, e escrevem seus resultados na, memória. Osprocessadores modernos utilizam uma estrutura de memóriahierárquica, compreendendo, no nivel superior, algunselementos de memória rápidos e custosos, tais comoregistradores. A hierarquia de memória compreende,portanto, tecnologias de memória sucessivamente maislentas, porém menos custosas, em niveis inferiores, taiscomo memórias cache (SRAM), memória principal de estadosólido (DRAM) e discos (midias magnéticas ou ópticas),respectivamente. Para aplicações tais como dispositivoseletrônicos portáteis, a DRAM constitui amiúde o nivel maisbaixo da hierarquia de memória.Várias arquiteturas de conjunto de instruções(ISA) de processador incluem um conjunto de registradoresde propósitos gerais (GPRs), os quais são registradoresarquitetados usados para passagem de dados entre instruçõese de e para a memória. As instruções que efetuam operaçõeslógicas e aritméticas sobre dados lêem seus operandos de, eescrevem seus resultados em, GPRS especificados. De formasimilar, as instruções de acesso à memória lêem dados aserem escritos na memória a partir de GPRS e escrevem dadoslidos a partir da memória em GPRS. Um compilador designaidentificadores GPR de fonte e alvo para cada instrução eordena as instruções de tal forma que sejam calculados osresultados apropriados. Isto é, as instruções são dispostasou organizadas em uma "ordem de programa" que garanteresultados corretos por orientar às instruções maisprecoces a armazenar resultados em GPRS especificados, eorientar às instruções posteriores a lerem tais GPRS para aobtenção de operandos para processamento adicional.
No entanto, vários processadores executaminstruções "fora de ordem", isto é, em uma ordem diferenteda ordem das instruções do programa. Um exemplo de um casoem que a execução fora de ordem surge em projetossuperescalares, em que duas ou mais instruções podem serexecutadas em paralelo, em diferentes encadeamentos deexecução. Caso uma instrução pare em um encadeamento, asinstruções seguintes podem ser despachadas para umencadeamento livre para execução imediata. A execução forade ordem não fica limitada a esquemas superescalares e podeocorrer em esquemas de única emissão ("single-issue"). Emqualquer dos casos, a execução fora de ordem apresentacertos problemas.
Instruções independentes podem ser executadas sempreocupação com a ordem original do programa. No entanto,várias instruções apresentam uma dependência de outrasinstruções, o que é conhecido como "riscos". Os riscos dedados surgem quando a reordenação de instruções (tais comoaquela causada por uma emissão de instrução fora de ordem)iria modificar a ordem de acesso ao operando envolvido nadependência. Os riscos de dados preocupantes podem serclassificados em três tipos. Consideremos duas instruções,i e j, com i ocorrendo antes de j na ordem do programa.
Um tipo de risco de dados consiste de um risco deLer após Escrever (RaW). Tal ocorre quando i escreve umregistrador alvo que é uma fonte de operandos para j. Casoj tente ler o registrador antes que i o escreva, j recuperainapropriadamente um valor antigo. Um risco de Escreverapós Escrever (WaW) ocorre quando ambas as instruções i e jescrevem o mesmo registrador alvo e j tenta escrever seualvo antes que ele seja escrito por i. Em tal caso, osescritos são realizados na ordem incorreta, deixando ovalor escrito por i no registrador em lugar do valorescrito por j. Um risco de Escrever após Ler (WaR) ocorrequando j escreve um registrador alvo que é uma fonte deoperandos para i antes que i leia o registrador. Isto levaia recuperar incorretamente o novo valor, escrito por j,em lugar do valor correto, escrito por uma instruçãoanterior. Note-se que o caso de Ler após Ler (RaR) nãoconstitui um risco de dados; as leituras podem serrealizadas em qualquer ordem.
Como exemplo, considere-se o seguinte fragmentode código representativo:
AND r2, rlO, AND lógico do conteúdo de rlO ao conteúdo derl2 rl2, colocar o resultado em r2
ST r2, mem Armazenar o conteúdo de r2 na localização dememória mem
ADD r2, r5, Somar os conteúdos de r5 e r6, colocar somar6 em r2
A operação ST apresenta uma dependência RaW daAND. Tal risco de dados requer que tais instruções sejamexecutadas na ordem do programa. Adicionalmente, a ADDapresenta uma dependência WaR da ST. Semanticamente, a ADDnão pode escrever seus resultados em r2 até ST tercompletado sua leitura de r2. Caso contrário, a ST iráescrever o resultado da ADD na memória, quando ela deveriaescrever o resultado da AND. Os riscos de dados WaR e WaWsão dependências de nome e não dependências verdadeiras dedados, uma vez que nenhum dado é passado de uma instruçãopara a próxima (a única dependência é a de que umainstrução não corrompa o conteúdo de um registrador que aoutra instrução irá ler ou que tenha escrito) . Asdependências de nome podem ser resolvidas/solucionadas poruma técnica conhecida como renomeação de registrador.
Em um sistema de renomeação de registradores, umgrande conjunto de registradores fisicos, cada um possuindoum número de registrador fisico (PRN), é gerenciado pordesignação dinâmica de números de registradores lógicos(LRNs) para os registradores fisicos. Os LRNs podemconsistir, por exemplo, dos identificadores GPR lógicos(rO, rl, r2,...). De preferência, o número de registradoresfisicos é maior do que o número de LRNs, ou GPRsarquitetados. Uma tabela de renomeação (RT) mantém omapeamento dinâmico entre LRNs e PRNs.
Logo no inicio do encadeamento (por exemplo,em, ou após, um estágio de decodificação) , sãoinspecionadas as caracteristicas de acesso a umregistrador de uma instrução e os LRNs (por exemplo,identificadores GPR) associados à instrução sãotraduzidos para PRNs através da RT. Para instruções queescrevam um registrador, um novo mapeamento LRN para PRNé entrado à RT, mapeando o LRN para um PRN não utilizado,de tal forma que o escrito seja orientado para umregistrador fisico associado (isto é, o LRN é"renomeado"). As instruções que lêem um registradortraduzem seu LRN para um PRN através de uma consulta àRT. 0 PRN permanece associado à instrução de leitura deregistrador por toda a sua duração através doencadeamento.
As instruções de escrever registrador não"corrompem" valores anteriores escritos no mesmo LRN; aescrever é orientada para um PRN novo, não usado (uma vezque o LRN é renomeado para um novo PRN). As instruções quese seguem à instrução de escrever na ordem do programaserão orientadas para o mesmo PRN, para a obtenção do valorescrito. As instruções que precedem a instrução de escreverna ordem do programa foram mapeadas pelo RT para umregistrador fisico diferente (antes da operação derenomeação) e continuarão a acessar tal registrador fisico.
Dessa forma, as instruções que escrevem um dado LRN podemser executadas antes de instruções que leram um valoranterior proveniente do LRN (WaR) ou escrevem um resultadoanterior no LRN (WaR). Dessa forma, são evitados os riscosde nome WaR e WaR.
Para permitir que o processador se recupere deuma exceção, de uma ramificação mal prevista ou similar,são colocadas restrições sobre a disponibilidade (pararenomeação adicional) de registradores físicos em que sãoescritos dados. Como exemplo, um LRN pode ser renomeadopara PRNi e o resultado de uma primeira instrução escritono LRN e, portanto, no PRNi. Uma segunda instrução podeadicionalmente escrever dados no LRN, o qual foi renomeadoPRN2 e, portanto, PRN2 armazena o resultado da segundainstrução. Em tal caso, PRNi não fica livre para que outroLRN seja renomeado para ele até que a segunda instrução secomprometa (o que significa que ela e todas as instruções afrente dela foram checadas quanto a exceções e estãoasseguradas quanto ao completar de sua execução). Alémdisso, todas as instruções entre a primeira e a segundainstrução que façam referência ao LRN (isto é, todas asinstruções que leiam PRNi) devem ter completado uma leiturade PRNi, ou estejam garantidas, de outra forma, deeventualmente receber tal valor. Somente então PRNi podeser liberado e tornado disponível para que outro LRN sejarenomeado para ele.
Voltando ao fragmento de código exemplar acima,quando a instrução AND é decodificada e sua escrita em LRNr2 detectada, o LRN r2 é designado no RT para umregistrador fisico, digamos o PRN x. 0 resultado da AND é,portanto escrito no registrador fisico x. Quando ainstrução ST é decodificada, sua leitura a partir de LRN r2é detectada e o RT é acessado. LRN r2 é mapeado para PRN x,de forma que a instrução ST irá ler o registrador fisico x(obtendo dessa forma o resultado escrito pela AND). Quandoa instrução ADD é decodificada e sua escrita em LRN r2detectada, o LRN r2 é re-designado ou "renomeado" para umregistrador fisico diferente, digamos PRN y. As instruçõessubseqüentes que lerem LRN r2 serão orientadas pelo RT parao registrador fisico y. Note-se que a ADD pode serexecutada antes da ST; a ST irá recuperar o resultadocorreto a partir de PRN x, sendo, portanto solucionado orisco WaR.
Um problema com um sistema de renomeação deregistrador tem origem na execução de instruçõescondicionais. As instruções condicionais são instruções queestão arquitetadas para realizar uma operação aritmética oulógica e para escrever o resultado somente se uma condiçãofor satisfeita. Até que a condição seja avaliada (ou quenormalmente ocorre já profundamente no encadeamento), nãopode ser determinado se uma instrução condicional iráescrever em um registrador. Se a condição não forsatisfeita, a instrução condicional é, efetivamente, umaNOP ou uma instrução de não operação, a qual não alteraqualquer GPR. Devido à incerteza sobre se uma instruçãocondicional irá escrever ou não um registrador, asinstruções subseqüentes não podem avaliar se existe umadependência da instrução condicional até que a condiçãoseja avaliada. Como exemplo, considere-se o seguintefragmento de código:
CMP rl, rl2 Comparar conteúdos de rl e r2 (ajustarcódigo ou flag de modo a refletir oresultado da comparação)
AND r2, rlO, AND lógico do conteúdo de rlO ao conteúdo derl2 rl2, colocar o resultado em r2
SUBEQ r2, r7, Caso a comparação anterior foi igual,r8 subtrair o conteúdo de r8 do de r7 e colocar
o resultado em r2. Caso contrário, r2 não émodificado
ST r2, mera Armazenar o conteúdo de r2 na localizaçãomem da memória
ADD r2, r5, r6 Somar os conteúdos de r5 e r6, colocar somaem r2
Neste exemplo, a ST não pode avaliar se elapossui um risco de dados com relação à SUBEQ ou não até quea condição de EQ seja avaliada. Isto é, o ST não podedeterminar se r2 será escrito pela instrução AND ou SUBEQ.Semanticamente, e realmente em um processador que sempreemite instruções na ordem do programa, tanto a AND como aSUBEQ são sempre executadas e a SUBEQ pode ou não atualizaro valor do registrador r2; a ST não se "importa" e irásimplesmente armazenar o conteúdo de r2. No entanto, em umesquema fora de ordem, o processador deve determinar se adependência de ST é da AND ou da SUBEQ.
Em particular, em um sistema de renomeação deregistrador, o processador deve parar o encadeamento cedo,no estágio de renomeação de registrador, até que a condiçãoEQ seja avaliada e possa ser determinado se a SUBEQ irárealmente escrever r2. Uma vez que a condição é avaliadaprofundamente no encadeamento, isto implica em uma paradade encadeamento indesejável. Alternativamente, a RT poderenomear r2 de forma especulativa para um novo PRN para ainstrução SUBEQ. Em tal caso, a RT deve possuir ummecanismo para desfazer a renomeação, isto é, pararestaurar o mapeamento do LRN r2 para o PRN previamentenomeado, caso a condição EQ não seja satisfeita. Isto énecessário uma vez que, se a condição não for satisfeita, aSUBEQ não irá realmente escrever o novo PRN e a RT serádeixada mapeando LRN r2 para um registrador fisico contendodados indefinidos. Tais circuitos adicionais aumentam acomplexidade e o consumo de energia na RT.
Um tipo de instrução conhecido pelos versados natécnica, cuja saida depende de uma avaliação de condição,consiste de uma seleção condicional. Uma instrução deseleção condicional é definida pela estrutura do conjuntode instruções para sempre (isto é, incondicionalmente)escrever um resultado. Somente o valor escrito, e não seuma saida é escrita, depende da avaliação de condição. Comoexemplo, uma instrução ADD de seleção condicional, ADDSEQr2, r3, r4, r5, pode somar os conteúdos de r4 e r5 ecolocar o resultado em r2, caso a condição EQ sejasatisfeita. Caso a condição EQ não seja satisfeita, ainstrução posiciona os conteúdos de r3 em r2. Note-se quetal instrução possui, de forma arquitetônica e semântica,uma entrada explicita para o resultado alternativo (nesteexemplo uma leitura de r3). A saida então seleciona entre oresultado de uma operação ou o resultado alternativo,dependendo da avaliação da condição.
Uma instrução condicional é distinta de umaseleção condicional. Tal como é aqui utilizada, a expressão"instrução condicional" consiste de uma instrução que éarquitetada para escrever o resultado de uma operação em umalvo se uma condição for satisfeita e para não escrever oalvo se a condição não for satisfeita. Isto é, caso acondição falhe, a instrução condicional efetivamente seconverte para uma NOP e não escreve qualquer registrador ouencaminha qualquer resultado em um ambiente deencaminhamento de operando. É precisamente tal incertezasobre se uma instrução condicional irá ou não fornecer umasaida que força o processador a parar o encadeamento noestágio de renomeação de registrador (o qual de um modogeral ocorre logo cedo no encadeamento) até que a condiçãoseja avaliada (o que normalmente ocorre mais tarde noencadeamento). Somente quando é conhecido se a instruçãocondicional é ou não uma NOP de fato é que as dependênciasde dados das instruções seguintes podem ser solucionadas.Tal tipo de instrução condicional é comum nos ISAs dosprocessadores modernos.
SUMÁRIO
Uma instrução condicional arquitetada parareceber um ou mais operandos como entradas, para emitir(output) para um alvo o resultado de uma operação realizadasobre os operandos se uma condição for satisfeita, e paranão fornecer uma saida, caso a condição não for satisfeita,é executada de forma a que ela forneça incondicionalmenteuma saida para o alvo. A instrução condicional obtém ovalor anterior do alvo (isto é, o valor produzido pelainstrução mais recente precedente à instrução condicionalque atualizou tal alvo). A condição é avaliada. Se acondição for satisfeita, o resultado de uma operaçãorealizada sobre os operandos é emitida para o alvo. Se acondição não for satisfeita, o valor anterior é emitidopara o alvo. As instruções subseqüentes podem se basear noalvo como uma fonte de operandos (sejam escritos em umregistrador ou encaminhados para a instrução), antes daavaliação da condição.
Uma modalidade está relacionada a um método deexecutar uma instrução condicional em um processador emencadeado, sendo a instrução condicional arquitetada parareceber um ou mais operandos como entradas, para emitirpara um alvo o resultado de uma operação realizada sobre osoperandos se uma condição for satisfeita e não fornecer umasaida se a condição não for satisfeita. Um ou mais valoresde operandos e um valor anterior do alvo são recebidos euma condição é avaliada. Se a condição for satisfeita, érealizada uma operação sobre os valores de operandos paragerar um valor resultado e emitir o resultado para o alvo.Se a condição não for satisfeita, é emitido o valor do alvoanterior para o alvo.
Outra modalidade está relacionada a um método deexecutar uma instrução condicional arquitetada paraescrever o resultado de uma operação em um registradorlógico alvo se uma condição for satisfeita e não escreverqualquer registrador se a condição não for satisfeita, emum processador encadeado empregando um sistema derenomeação de registrador mapeando dinamicamenteregistradores lógicos para físicos. É lido um primeirovalor a partir de um primeiro registrador fisico associadoao registrador lógico alvo. O registrador lógico alvo érenomeado para um segundo registrador fisico. Uma condiçãoé avaliada. Se a condição for satisfeita, é realizada umaoperação para gerar um valor resultado e escrever o valorresultado no segundo registrador fisico. Se a condição nãofor satisfeita, é escrito o primeiro valor no segundoregistrador fisico.
Outra modalidade está relacionada a um métodopara executar uma instrução condicional arquitetada paraescrever o resultado de uma operação em um registradorlógico alvo se uma condição for satisfeita e não escreverqualquer registrador se a condição não for satisfeita. Ométodo compreende ler um valor anterior a partir de umprimeiro registrador fisico associado ao registrador lógicoalvo.
Outra modalidade está relacionada a um métodopara executar uma instrução condicional arquitetada paraescrever o resultado de uma operação em um registradorlógico alvo se uma condição for satisfeita e não escreverqualquer registrador se a condição não for satisfeita. 0método compreende escrever incondicionalmente um valor noregistrador lógico alvo.
Outra modalidade está relacionada a umprocessador que compreende uma pluralidade de registradoresfisicos e uma tabela de renomeação que opera para associardinamicamente identificadores de registradores lógicos comos registradores fisicos. 0 processador inclui também umencadeamento de execução de instruções que opera paraexecutar instruções fora de ordem de programa. 0encadeamento opera adicionalmente para designarincondicionalmente um registrador fisico como o alvo parauma instrução condicional e como uma fonte de operandospara uma instrução possuindo uma dependência decontingência da instrução condicional, antes da avaliaçãoda condição. A instrução condicional é arquitetada paraescrever o resultado de uma operação em um alvo se umacondição for satisfeita e para não escrever o alvo se acondição não for satisfeita.
BREVE DESCRIÇÃO DOS DESENHOS
A Figura 1 é um diagrama de blocos funcional deum processador.
A Figura 2 é um fluxograma que apresenta ummétodo para a execução de uma instrução condicional.
A Figura 3 é um diagrama de blocos funcionalrepresentando a determinação de saida de uma instruçãocondicional.
DESCRIÇÃO DETALHADA
A Figura 1 apresenta um diagrama de blocosfuncional de um processador 10. O processador 10 executainstruções em um encadeamento de execução de instruções 12de acordo com uma lógica de controle 14. O encadeamento 12pode ser um esquema superescalar, com múltiplas cadeiasparalelas, tais como 12a e 12b. As cadeias 12a e 12bincluem vários registradores ou latches 16, organizados emestágios de cadeia, e uma ou mais unidades lógicasaritméticas (ALU) 18. Um arquivo de renomeação deregistrador (RRF) 20 fornece uma grande pluralidade deregistradores físicos, acima do número de registradores definalidades gerais arquitetados (GPR). Os registradores noRRF 20 compreendem o topo da hierarquia de memória doprocessador e servem como a fonte principal de operandos ealvo de destino para instruções. Associada ao RRF 20encontra-se uma tabela de renomeação (RT) 21 que associadinamicamente os identificadores GPR com os registradoresfísicos no RRF 20.
As cadeias 12a e 12b recuperam instruções apartir de um cache de instruções (I-Cache) 22, com osendereçamentos de memória e permissões gerenciados por umBuffer de previsão de tradução do lado de instruções (ITLB)24. Os dados são acessados a partir de um cache de dados(D-Cache) 26, com os endereçamentos de memória e permissõesgerenciados por um buffer de previsão de tradução (TLB) 28.
Em várias modalidades, o ITLB pode incluir uma cópia departe do TLB. Alternativamente, o ITLB e o TLB podem estarintegrados. De forma similar, em várias modalidades doprocessador 10, o I-cache 22 e o D-cache 26 podem estarintegrados, ou unidos. As perdas no I-cache 22 e/ou no D-cache 26 causam um acesso à memória principal (externa aochip) 32 sob o controle de uma interface de memória 30.
O processador 10 pode incluir uma interface deentrada ou entrada/saida (I/O) 34 que controla o acesso avários dispositivos periféricos 36. Os versados na técnicanotarão que são possíveis muitas variações do processador10. Como exemplo, o processador 10 pode incluir um cache desegundo nivel (L2) para um ou ambos dentre os caches I e D.
Além disso, um ou mais dos blocos funcionais apresentadosno processador 10 podem ser omitidos de uma modalidadeparticular.De acordo com uma ou mais modalidades, aincerteza sobre se uma instrução condicional irá escreverou não um registrador, incerteza esta que não é solucionadaaté que a condição seja avaliada, não dá origem a umaparada no encadeamento. A incerteza é eliminada pelainstrução condicional escrever sempre (isto é,incondicionalmente) seu registrador alvo. 0 valor escritono registrador alvo depende da avaliação da condição. Ainstrução condicional lê o valor anterior de seu próprioalvo (isto é, o valor produzido pela instrução mais recenteprecedendo a instrução condicional que atualizou aquelealvo) e, quando da avaliação da condição, escreve ou talvalor anterior (se a condição não for satisfeita) ou oresultado de uma operação (se a condição for satisfeita) noalvo. Dessa forma, as instruções que se seguem a instruçãocondicional ficam asseguradas sobre a fonte de seusoperandos, o alvo da instrução condicional, sem ter queaguardar que a condição seja avaliada. Em particular, umsistema de renomeação de registradores pode renomear um LRNalvo de uma instrução condicional para um PRN com base noPRN contendo o valor correto que se segue à avaliação dacondição (ou o resultado da operação condicional ou oresultado de uma instrução ou acesso à memória anteriores).
Uma modalidade de um método de executar umainstrução condicional está representada em forma defluxograma na Figura 2. A instrução condicional entra com ovalor anterior de seu alvo (no bloco 40). Isso podecompreender ler o LRN alvo (por exemplo, um identificadorGPR) designado para a instrução, o que, caso seja empregadarenomeação de registrador, eqüivale à leitura do PRN para oqual a RT mapeia o LRN quando a instrução condicional édecodificada. Alternativamente, em uma operação deencaminhamento de operando, a entrada do valor anterior doalvo pode compreender a obtenção direta da saida de umainstrução anterior. Em qualquer dos casos, o valor anterioré o resultado de uma instrução ou operação de acesso àmemória anteriores. A instrução condicional lê o valoranterior devido ao método da invenção de executar ainstrução; ela não é um operando arquitetado para ainstrução condicional. Apesar de a leitura do valoranterior do alvo estar representada como a primeira etapano método da Figura 2, isto não é obrigatoriamentenecessário. 0 valor anterior do alvo pode ser lido emqualquer momento antes de uma renomeação do identificadorlógico do alvo, ou mesmo após a renomeação, caso o valoranterior seja encaminhado para a instrução condicional (talcomo a partir de uma operação de acesso à memória ousimilar).
A condição relevante para a instrução condicionalé avaliada (no bloco 42) . Isso pode ocorrer profundamenteno encadeamento, tal como em um estágio de execução. Portal razão, as instruções condicionais da técnica anteriorcausavam paradas de encadeamento no estágio de renomeaçãode registradores, uma vez que não se podia avaliar se ainstrução iria ou não gerar alguma saida até a avaliação dacondição. Alternativamente, se um registrador fosserenomeado em antecipação a um valor ser nele escrito pelainstrução condicional, a operação de renomeação deveria serdesfeita se a condição não fosse satisfeita e a escrita nãoocorresse.
Se a condição for satisfeita, um ou maisoperandos são servem de entrada à instrução condicional (nobloco 44). Isso pode compreender uma leitura de GPRs ou umaoperação de encaminhamento de operando. Os versados natécnica notarão que a etapa de entrada de operando podepreceder a avaliação da condição; se a condição não forsatisfeita, os operandos são simplesmente descartados. Umaoperação aritmética ou lógica é realizada nos operandos (nobloco 46) para a geração de um resultado e o resultado éemitido (no bloco 48). A saida pode ser através de escritaem um LRN (isto é, um PRN associado ao LRN através da RT)ou encaminhamento do resultado diretamente para outrainstrução.
Se a condição não for satisfeita (no bloco 42), ainstrução condicional emite o valor anterior que foi umaentrada a partir de seu alvo (no bloco 50) (novamente, oupor escrever um LRN alvo ou por encaminhamento deregistrador), dessa forma fornecendo positivamente o valoranterior no caso de uma condição não satisfeita. Namodalidade apresentada na Figura 2, os operandos não sãolidos se a condição não for satisfeita, nem a operação érealizada. Em outras modalidades, a leitura dos operandos,e mesmo o desempenho da operação, pode ser feita antes daavaliação da condição com os operandos e, se gerado, oresultado sendo meramente descartado se a condição não forsatisfeita. Note-se que independentemente da avaliação dacondição, a instrução condicional fornece uma saida (nosblocos 48, 50) . Isto contrasta com os métodos da técnicaanterior de execução de instruções condicionais, queexecutam as instruções tal como arquitetadas - isto é,fornecendo uma saida somente se uma condição for satisfeitae não fornecendo qualquer saida (escrever registrador ouencaminhamento de operando) se a condição não forsatisfeita.
A seleção de saida, de acordo com uma modalidade,está esquematicamente representada na Figura 3, usando-se ofragmento de código representativo acima, em particular ainstrução SUBEQ r2, r7, r8. O valor anterior de LRN r2 élido a partir de PRN x, após o mapeamento RT 21. Esse valor(ou pelo menos o identificador do PRN) é mantido pelainstrução condicional à medida que ela prossegue peloencadeamento. O sistema de renomeação de registradores podeatualizar a RT 21 antes da avaliação da condição,renomeando o LRN r2 para um novo registrador fisico, PRN y.
Os operandos são lidos a partir de r7 e r8 e uma operaçãode subtração é realizada em uma ALU 18. A condição éavaliada e o resultado da avaliação determina se o valoranterior ou o resultado da operação é escrito no LRN r2alvo da instrução condicional (renomeado para PRN y) . Osversados na técnica notarão que a Figura 3 é meramenterepresentativa. Em outra modalidade, a leitura de r7 e r8 ea operação de subtração podem ser realizadas somente se acondição for satisfeita.
Dado que a execução da instrução condicional deacordo com uma ou mais modalidades forneceincondicionalmente uma saida, seja o resultado de umaoperação ou o valor anterior de seu alvo, dependendo daavaliação da condição, em muitos casos o encadeamento nãonecessita ser parado para aguardar a avaliação de condição.
Como exemplo, uma RT 21 pode renomear o LRN alvo dainstrução condicional para um registrador fisico disponívelno RRF 20 sem aguardar a avaliação da condição. Asinstruções subseqüentes que lêem tal LRN ficam asseguradasda obtenção de um resultado apropriado proveniente doregistrador fisico escrito pela instrução condicional. Talregistrador fisico irá conter ou o resultado de umaoperação, (se a condição for satisfeita), ou o valor apartir do PRN que foi previamente associado ao LRN, antesda renomeação do registrador (se a condição não forsatisfeita). Dessa forma, o encadeamento não necessita serparado no estágio de renomeação de registrador paraaguardar a avaliação da condição.
Em uma modalidade, o encaminhamento de operandosé simplificado pela permissão de que um controlador deencadeamento 14 determine a fonte de operando(s) de umainstrução, quando um ou mais de tais operandos possa serfornecido diretamente por uma instrução condicional, antesda avaliação da condição. Como é bem conhecido pelosversados na técnica, o encaminhamento de operandos é umatécnica pela qual a saida de uma instrução é diretamenteencaminhada para outra instrução, sem requerer um escritode registrador pela primeira instrução e uma leitura deregistrador pela segunda. Na técnica anterior, instruçõesque se seguem a uma instrução condicional é incapaz deavaliar se seus operandos serão encaminhados pela instruçãocondicional (se a condição for satisfeita), ou umainstrução anterior (se a condição não for satisfeita e ainstrução condicional não produza qualquer saida) e,portanto, deve aguardar a avaliação da condição paradeterminar sua fonte de operandos. Através do fornecimentoincondicional de uma saida, o método de execução deinstrução condicional da presente modalidade elimina talincerteza e permite que uma decisão seja tomada quanto àfonte de operandos antes da avaliação da condição. Emparticular, o controlador de encadeamento 14 pode designarconfiavelmente a instrução condicional como uma fonte deoperandos para uma instrução a seguir antes da avaliação dacondição, uma vez que o método de execução de instruçãocondicional irá encaminhar incondicionalmente uma saida.
Tal saida pode ser um valor anterior encaminhado para ainstrução condicional por uma instrução anterior (se acondição não for satisfeita) ou o resultado de uma operação(se o resultado for satisfeito).
Apesar de a presente invenção ter sido aquidescrita com relação a recursos, características, aspectose modalidades específicos da mesma, ficará claro quediversas variações, modificações e outras modalidades sãopossíveis dentro do amplo escopo da presente invenção e,assim sendo, todas as variações, modificações e modalidadesdevem ser consideradas como inseridas no escopo dainvenção. As presentes modalidades devem, portanto serconsideradas, em todos os aspectos, como ilustrativas e nãorestritivas, e se tenciona que todas as mudanças que seinsiram no alcance de significado e de equivalência dasreivindicações anexas estejam aqui englobadas.

Claims (23)

1. Método para executar uma instrução condicionalem um processador encadeado, a instrução condicionalarquitetada para receber um ou mais operandos comoentradas, para emitir para um alvo o resultado de umaoperação realizada nos operandos se uma condição ésatisfeita e para não fornecer uma saida se a condição nãoé satisfeita, compreendendo:receber um ou mais valores de operandos;receber um valor anterior do alvo;avaliar uma condição;se a condição é satisfeita, realizar uma operaçãonos valores de operando para gerar um valor resultado eemitir o resultado para o alvo; ese a condição não é satisfeita, emitir o valoralvo anterior para o alvo.
2. Método, de acordo com a reivindicação 1, emque receber um valor anterior do alvo compreende ler ovalor anterior a partir de um primeiro registrador.
3. Método, de acordo com a reivindicação 2, emque emitir o resultado ou o valor anterior do alvocompreende escrever o respectivo valor em um segundoregistrador.
4. Método, de acordo com a reivindicação 3, emque os primeiro e segundo registradores são registradoresfisicos em um sistema de renomeação de registrador, e emque um registrador lógico é incondicionalmente renomeado apartir do primeiro registrador para o segundo registradorantes da avaliação da condição.
5. Método, de acordo com a reivindicação 4, emque uma instrução subseqüente à instrução condicional éincondicionalmente orientada ao segundo registrador parauma busca de operando antes de avaliação da condição.
6. Método, de acordo com a reivindicação 1, emque o valor anterior do alvo é a saída de uma instruçãopreviamente executada.
7. Método, de acordo com a reivindicação 1, emque emitir o valor resultado ou o valor anterior do alvocompreende encaminhar o respectivo valor para uma instruçãosubseqüente.
8. Método, de acordo com a reivindicação 7, emque a instrução condicional é incondicionalmenteselecionada como a fonte de um operando para a instruçãosubseqüente antes da avaliação da condição.
9. Método para executar uma instrução condicionalarquitetada para escrever o resultado de uma operação em umregistrador lógico alvo se uma condição é satisfeita e paranão escrever em nenhum registrador se a condição não ésatisfeita, em um processador encadeado empregar um sistemade renomeação de registrador mapeando dinamicamenteregistradores lógicos em físicos, compreendendo:ler um primeiro valor a partir de um primeiroregistrador físico associado com o registrador lógico alvo;renomear o registrador lógico alvo para umsegundo registrador físico;avaliar uma condição;se a condição é satisfeita, realizar uma operaçãopara gerar um valor resultado e escrever o valor resultadono segundo registrador físico; ese a condição não é satisfeita, escrever oprimeiro valor no segundo registrador físico.
10. Método, de acordo com a reivindicação 9,compreendendo adicionalmente designar o segundo registradorfísico como uma fonte de operandos para uma instruçãosubseqüente à instrução condicional, antes de avaliação dacondição.
11. Método para executar uma instruçãocondicional arquitetada para escrever o resultado de umaoperação em um registrador lógico alvo se uma condição ésatisfeita e não escrever em nenhum registrador se acondição não é satisfeita, compreendendo:ler um valor anterior a partir de um primeiroregistrador fisico associado com o registrador lógico alvo.
12. Método, de acordo com a reivindicação 11,compreendendo adicionalmente renomear o registrador lógicoalvo para um segundo registrador fisico.
13. Método, de acordo com a reivindicação 12,compreendendo adicionalmente:avaliar uma condição;se a condição é satisfeita, realizar uma operaçãopara gerar um resultado, e escrever o resultado no segundoregistrador fisico; ese a condição não é satisfeita, escrever o valoranterior no segundo registrador fisico.
14. Método para executar uma instruçãocondicional arquitetada para escrever o resultado de umaoperação em um registrador lógico alvo se uma condição ésatisfeita e para não escrever em nenhum registrador se acondição não é satisfeita, compreendendo:escrever incondicionalmente um valor noregistrador lógico alvo.
15. Método, de acordo com a reivindicação 14, emque escrever um valor no registrador lógico alvo compreendeescrever um valor em um segundo registrador fisicoassociado com o registrador lógico alvo.
16. Método, de acordo com a reivindicação 14,compreendendo adicionalmente ler um valor anterior a partirde um registrador fisico previamente associado com oregistrador lógico alvo, e renomear o registrador lógicoalvo a partir do primeiro para o segundo registradorfisico.
17. Método, de acordo com a reivindicação 16, emque os dados escritos incondicionalmente são o resultado deuma operação realizada pela instrução condicional se umacondição é satisfeita, ou o valor anterior se a condiçãonão é satisfeita.
18. Método, de acordo com a reivindicação 17,compreendendo adicionalmente designar incondicionalmente osegundo registrador fisico como uma fonte de operandos parauma instrução seguindo a instrução condicional, antes daavaliação de condição.
19. Processador, compreendendo:uma pluralidade de registradores fisicos;uma tabela de renomeação operativa para associardinamicamente identificadores de registradores lógicos comos registradores fisicos;um encadeamento de execução de instruçõesoperável para executar instruções fora de ordem deprograma, e operativo para designar incondicionalmente umidentificador de registrador lógico como o alvo para umainstrução condicional e como uma fonte de operandos parauma instrução possuindo uma dependência contingente nainstrução condicional, antes de avaliação da condição, ainstrução condicional sendo arquitetada para escrever oresultado de uma operação em um alvo se uma condição ésatisfeita e para não escrever no alvo se a condição não ésatisfeita.
20. Processador, de acordo com a reivindicação-19, em que a instrução condicional é operativa para ler umvalor anterior a partir de um primeiro registrador fisicoassociado com o identificador de registrador lógico.
21. Processador, de acordo com a reivindicação-20, em que a tabela de renomeação é operativa para renomearo identificador de registrador lógico a partir do primeiroregistrador fisico para um segundo registrador fisico.
22. Processador, de acordo com a reivindicação-20, em que a instrução condicional é operativa pararealizar uma operação e escrever um resultado no segundoregistrador fisico se a condição é satisfeita, ou paraescrever o valor anterior no segundo registrador fisico sea condição não é satisfeita.
23. Processador, de acordo com a reivindicação-22, em que uma instrução seguindo a instrução condicional éincondicionalmente designada para o registrador fisico comouma fonte de operandos antes da avaliação de condição.
BRPI0610222-0A 2005-04-14 2006-04-14 sistema e método em que instruções condicionais fornecem incondicionalmente saìda BRPI0610222A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/106,803 US7624256B2 (en) 2005-04-14 2005-04-14 System and method wherein conditional instructions unconditionally provide output
US11/106,803 2005-04-14
PCT/US2006/014042 WO2006113420A2 (en) 2005-04-14 2006-04-14 System and method wherein conditional instructions unconditionally provide output

Publications (1)

Publication Number Publication Date
BRPI0610222A2 true BRPI0610222A2 (pt) 2010-06-08

Family

ID=37016156

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0610222-0A BRPI0610222A2 (pt) 2005-04-14 2006-04-14 sistema e método em que instruções condicionais fornecem incondicionalmente saìda

Country Status (9)

Country Link
US (1) US7624256B2 (pt)
EP (1) EP1869547B1 (pt)
JP (3) JP2008537231A (pt)
KR (1) KR100953856B1 (pt)
CN (1) CN101194225B (pt)
BR (1) BRPI0610222A2 (pt)
IL (1) IL186632A (pt)
TW (1) TWI317906B (pt)
WO (1) WO2006113420A2 (pt)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output
US8078846B2 (en) * 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
CN101324838A (zh) * 2008-07-31 2008-12-17 华为技术有限公司 一种指令执行方法和装置
US8140780B2 (en) * 2008-12-31 2012-03-20 Micron Technology, Inc. Systems, methods, and devices for configuring a device
JP5072889B2 (ja) * 2009-03-16 2012-11-14 株式会社東芝 事前条件生成装置および事後条件生成装置、ならびにこれらの方法
GB2480285A (en) * 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
GB2484654B (en) * 2010-10-12 2013-10-09 Advanced Risc Mach Ltd Conditional selection of data elements
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9032189B2 (en) * 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US8924695B2 (en) * 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
JP6422381B2 (ja) * 2015-03-18 2018-11-14 ルネサスエレクトロニクス株式会社 プロセッサ、プログラムコード変換装置及びソフトウェア
JP7081922B2 (ja) * 2017-12-28 2022-06-07 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置及びゲームを実行するための方法
CN111209039B (zh) * 2018-11-21 2022-08-02 展讯通信(上海)有限公司 指令处理方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2933027B2 (ja) * 1996-08-30 1999-08-09 日本電気株式会社 複数命令並列発行/実行管理装置
US6009512A (en) * 1997-10-27 1999-12-28 Advanced Micro Devices, Inc. Mechanism for forwarding operands based on predicated instructions
US6170052B1 (en) * 1997-12-31 2001-01-02 Intel Corporation Method and apparatus for implementing predicated sequences in a processor with renaming
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
US20020073301A1 (en) * 2000-12-07 2002-06-13 International Business Machines Corporation Hardware for use with compiler generated branch information
US20020112148A1 (en) * 2000-12-15 2002-08-15 Perry Wang System and method for executing predicated code out of order
US6883089B2 (en) * 2000-12-30 2005-04-19 Intel Corporation Method and apparatus for processing a predicated instruction using limited predicate slip
US20050066151A1 (en) 2003-09-19 2005-03-24 Sailesh Kottapalli Method and apparatus for handling predicated instructions in an out-of-order processor
US7624256B2 (en) * 2005-04-14 2009-11-24 Qualcomm Incorporated System and method wherein conditional instructions unconditionally provide output

Also Published As

Publication number Publication date
TWI317906B (en) 2009-12-01
KR20070121842A (ko) 2007-12-27
EP1869547A2 (en) 2007-12-26
JP6009608B2 (ja) 2016-10-19
US7624256B2 (en) 2009-11-24
IL186632A (en) 2012-04-30
TW200705266A (en) 2007-02-01
JP2008537231A (ja) 2008-09-11
JP2012212433A (ja) 2012-11-01
KR100953856B1 (ko) 2010-04-20
WO2006113420A2 (en) 2006-10-26
CN101194225A (zh) 2008-06-04
WO2006113420A3 (en) 2006-12-21
IL186632A0 (en) 2008-01-20
CN101194225B (zh) 2013-10-23
EP1869547B1 (en) 2016-09-21
US20060236078A1 (en) 2006-10-19
JP2015164048A (ja) 2015-09-10

Similar Documents

Publication Publication Date Title
BRPI0610222A2 (pt) sistema e método em que instruções condicionais fornecem incondicionalmente saìda
US7263600B2 (en) System and method for validating a memory file that links speculative results of load operations to register values
US7028166B2 (en) System and method for linking speculative results of load operations to register values
US5517657A (en) Segment register file read and write pipeline
US6845442B1 (en) System and method of using speculative operand sources in order to speculatively bypass load-store operations
US7415597B2 (en) Processor with dependence mechanism to predict whether a load is dependent on older store
CN108196884B (zh) 利用生成重命名的计算机信息处理器
US20130339671A1 (en) Zero cycle load
CN104951281A (zh) 用于实现动态无序处理器流水线的方法和装置
Chaudhry et al. Simultaneous speculative threading: A novel pipeline architecture implemented in sun's rock processor
US7165167B2 (en) Load store unit with replay mechanism
TWI659357B (zh) 在處理器管線中管理指令順序
US7363470B2 (en) System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
BRPI0806737B1 (pt) Uso de sistema de renomeação de registrador para encaminhar resultados intermediários entre instruções constituintes de uma instrução expandida
US10545765B2 (en) Multi-level history buffer for transaction memory in a microprocessor
US11507379B2 (en) Managing load and store instructions for memory barrier handling
US7937569B1 (en) System and method for scheduling operations using speculative data operands
US7222226B1 (en) System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation
US7266673B2 (en) Speculation pointers to identify data-speculative operations in microprocessor
US6157995A (en) Circuit and method for reducing data dependencies between instructions
US7373484B1 (en) Controlling writes to non-renamed register space in an out-of-order execution microprocessor
US20220413860A1 (en) System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction
Dutta-Roy Instructional Level Parallelism
HULUVALLAY ISSUE QUEUE OPTIMISATION OF OUT-OF-ORDER SUPERSCALAR PROCESSOR
Nunez Development and evaluation of a simultaneous multithreading processor simulator

Legal Events

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

Free format text: REFERENTE A 9A ANUIDADE.

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

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2307 DE 24/03/2015.