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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 36
- 238000011156 evaluation Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 101100191408 Arabidopsis thaliana PRN2 gene Proteins 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register 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.
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)
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)
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 |
-
2005
- 2005-04-14 US US11/106,803 patent/US7624256B2/en not_active Expired - Fee Related
-
2006
- 2006-04-14 KR KR1020077026476A patent/KR100953856B1/ko active IP Right Grant
- 2006-04-14 CN CN2006800203461A patent/CN101194225B/zh active Active
- 2006-04-14 JP JP2008506733A patent/JP2008537231A/ja not_active Withdrawn
- 2006-04-14 EP EP06750153.6A patent/EP1869547B1/en not_active Not-in-force
- 2006-04-14 BR BRPI0610222-0A patent/BRPI0610222A2/pt not_active IP Right Cessation
- 2006-04-14 WO PCT/US2006/014042 patent/WO2006113420A2/en active Application Filing
- 2006-04-14 TW TW095113507A patent/TWI317906B/zh active
-
2007
- 2007-10-14 IL IL186632A patent/IL186632A/en active IP Right Grant
-
2012
- 2012-04-23 JP JP2012097489A patent/JP2012212433A/ja not_active Withdrawn
-
2015
- 2015-04-09 JP JP2015080190A patent/JP6009608B2/ja active Active
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. |