BR102013010877A2 - Gerenciamento de conteúdo de preditor de dependência de carregamento-armazenamento - Google Patents
Gerenciamento de conteúdo de preditor de dependência de carregamento-armazenamento Download PDFInfo
- Publication number
- BR102013010877A2 BR102013010877A2 BRBR102013010877-4A BR102013010877A BR102013010877A2 BR 102013010877 A2 BR102013010877 A2 BR 102013010877A2 BR 102013010877 A BR102013010877 A BR 102013010877A BR 102013010877 A2 BR102013010877 A2 BR 102013010877A2
- Authority
- BR
- Brazil
- Prior art keywords
- load
- store
- dependency
- given
- predictor
- Prior art date
Links
- 238000003860 storage Methods 0.000 claims abstract description 123
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000001419 dependent effect Effects 0.000 claims abstract description 19
- 230000004044 response Effects 0.000 claims description 18
- 238000001514 detection method Methods 0.000 claims description 3
- 238000006467 substitution reaction Methods 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 51
- 238000013507 mapping Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000012549 training Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000005465 channeling Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 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
-
- 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/3834—Maintaining memory consistency
-
- 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/3842—Speculative instruction execution
-
- 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/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Gerenciamento de conteúdo de preditor de dependência de carregamento-armazenamento. A presente invenção refere-se a métodos e aparelhos para gerenciar dependências de carregamento-armazenamento em um processador fora de ordem. Um preditor de dependência de carregamento-armazenamento pode incluir uma tabela para armazenar entradas de pares de carregamento-armazenamento, que se perceberam dependentes, e proceder a uma execução fora de ordem. Cada entrada na tabela inclui um contador, para indicar uma força da predição de dependência. Se o contador estiver acima de um limite, uma dependência será aplicada ao par de carregamento-armazenamento. Se o contador estiver abaixo de limite, a dependência não será aplicada ao par de carregamento-armazenamento. Quando um armazenamento é enviado, a tabela é pesquisada, e quaisquer entradas correspondentes na tabela serão armadas. Se um carregamento for enviado, correspondendo a uma entrada armada, quando o contador se encontra acima do limite, então o carregamento deve aguardar sua emissão até o correspondente armazenamento ser emitido.
Description
Relatório Descritivo da Patente de Invenção para "GERENCIAMENTO DE CONTEÚDO DE PREDITOR DE DEPENDÊNCIA DE CARREGAMENTO-ARMAZENAMENTO".
Campo da Invenção A presente invenção refere-se geralmente a processadores e, em particular, a métodos e mecanismos para gerenciar dependências de carregamento-armazenamento em processadores.
Descrição de Técnica Relacionada Processadores superescalares tentam conseguir alto desempe- \ nho emitindo e executando múltiplas instruções por ciclo de relógio e empregando a frequência de relógio mais alta possível consistente com o projeto. Um modo de aumentar o número de instruções executadas por ciclo de relógio é realizando uma execução fora de ordem. Em uma execução fora de ordem, as instruções podem ser executadas em uma ordem diferente daquela especificada na sequência de programa (ou ordem de programa).
Alguns processadores podem ser tão agressivos quanto possível para programar instruções foram de ordem e/ou especulativamente em uma tentativa de maximizar o ganho de desempenho realizado. Por exemplo, pode ser desejável programar operações de carregamento de memória antes de operações de armazenamento de memória mais antigas, uma vez que as operações d de carregamento e memória mais tipicamente têm instruções dependentes. No entanto, em alguns casos, uma operação de carregamento de memória pode depender de uma operação de armazenamento de memória mais antiga (e.g, a operação de armazenamento de memória atualiza pelo menos um byte acessado pela operação de carregamento de memória). Em tais casos, a operação de carregamento de memória será incorretamente executada, se executada antes da operação de armazenamento de memória. Se uma operação de carregamento de memória for executada antes de uma operação de armazenamento de memória mais antiga dependente, o processador pode precisar ser descarregado e redirecionado, que degrada o desempenho do processador.
Uma operação será mais antiga que outra operação, se a opera- ção for anterior à outra operação na ordem do programa. Uma operação será mais recente que outra operação, se subsequente à outra operação na ordem do programa. Similarmente, operações podem ser indicadas como sendo anteriores ou subsequentes a outras operações, ou consideradas o-perações prévias, operações precedentes, operações subsequentes etc.. Tais referências podem se referir à ordem de programa das operações. A-demais, "operação de carregamento de memória" ou "operação de carregamento" se refere à transferência de dados de uma memória ou cachê para um processador, e a "operação de armazenamento de memória" ou "operação de armazenamento" se refere à transferência de dados de um processador para uma memória ou cachê. As operações de carregamento e operações de armazenamento podem ser denominadas, de modo mais sucinto, como "carregamento" e "armazenamento", respectivamente.
Conquanto as dependências entre carregamentos e armazenamentos sejam dinâmicas, mecanismos para impedir esses eventos tipicamente têm uma natureza estática. Por conseguinte, em um esforço para impedir uma violação fora de ordem para um par armazenamento-carregamento, o processador é mais provavelmente sobre-compensado e não programado agressivamente fora-de-ordem. Nesse caso, o processador força instruções em uma ordem desnecessária Se uma dependência deixa de ser requerida, mas, não obstante, ainda sendo forçada, então o paralelismo de nível de memória é reduzido, e a eficiência do processador diminuída.
Sumário Sistemas, aparelhos, processadores, e métodos para predizer dependências de carregamento/ armazenamento são contemplados. Um processador pode incluir pelo menos uma unidade de envio, um preditor de dependência de carregamento-armazenamento, e uma estação de reserva. Quando uma violação de ordenamento entre um carregamento mais recente e um armazenamento dependente mais antigo for detectada, isso constitui um evento de treinamento para o preditor de dependência de carregamento-armazenamento. Depois de o par de carregamento- armazenamento ter sido treinado, o preditor pode acrescentar dependência ao carregamento na próxima vez que o carregamento passa através da unidade de envio. Essa dependência adicionada indica que o carregamento não deve ser programado fora da estação de reserva até o armazenamento tiver sido programado.
Em uma modalidade, uma tabela de preditor pode ser usada para armazenar pares de carregamento armazenamento descobertas dependentes. Quando um carregamento mais recente emite antes de um armazenamento mais antigo que compartilha uma dependência de endereço, uma entrada pode ser alocada na tabela de preditor, e, em uma modalidade, a entrada pode ser associada com pelo menos uma porção de um contador de programa de armazenamento (PC de Program Counter) para o armazenamento e pelo menos uma porção de um valor PC de armazenamento para o carregamento dependente. Cada entrada na tabela de preditor também pode incluir um campo de contador, e o campo de contador pode representar a força da predição de dependência de dado para aquele particular par de car-regamento-armazenamento. O campo de contador permite que as dependências preditas sejam desligadas quando ficam antigos ou perdem a validade. O valor do campo de contador também pode afetar a política de substituição para a tabela de preditor. Um apontador de substituição pode estar constantemente escaneando as entradas do preditor e buscando entradas com valores de contador baixos. Em uma modalidade, cada vez que a tabela de preditor é acessada, o apontador de substituição pode avançar. Quando o apontador de substituição encontra uma entrada com valor de contador igual a zero, então o apontador pode parar nessa entrada. Quando uma nova entrada é alocada para um novo par de carregamento-armazenamento dependente, então, a entrada existente com o contador i-gual a zero indicada pelo apontador pode ser usada para a nova entrada.
Esses e outros aspectos e vantagens serão aparentes àqueles versados na técnica, em vista das descrições detalhadas que se seguem das soluções apresentadas nesta.
Breve Descrição dos Desenhos As vantagens acima e outras vantagens mais dos métodos e mecanismos serão mais bem entendidas com referência à descrição que se segue, em conexão com os desenhos anexos, nos quais: A FIG 1 ilustra uma modalidade de uma porção de circuito integrado; A FIG 2 é um diagrama de blocos que ilustra uma modalidade de núcleo de processador; A FIG 3 é um diagrama de blocos ilustrando uma modalidade de unidade de mapeamento/ envio e estação de reserva; A FIG 4 ilustra uma modalidade de tabela de preditor de dependência de carregamento-armazenamento; A FIG 5 é um diagrama de blocos que ilustra uma modalidade da representação de valores de contador usados em uma tabela de preditor de dependência de carregamento-armazenamento; A FIG 6 é um diagrama de fluxo generalizado ilustrando uma modalidade de um método para processar uma operação de carregamento; A FIG 7 é um diagrama de blocos generalizado ilustrando uma modalidade de um método para ajustar um indicador de força de predição de dependência de carregamento-armazenamento; A FIG 8 é um diagrama de fluxo generalizado ilustrando uma modalidade de um método para substituir entradas em uma tabela de preditor de dependência de carregamento-armazenamento; A FIG 9 é um diagrama de blocos de uma modalidade de um sistema; A FIG 10 é um diagrama de blocos de uma modalidade de uma mídia legível por computador.
Descrição Detalhada das Modalidades Nas descrições que se seguem, numerosos detalhes específicos serão estabelecidos para prover um entendimento completo dos métodos e mecanismos apresentados nesta. No entanto, aqueles versados na técnica deverão reconhecer que várias modalidades poderão ser praticadas sem tais detalhes específicos. Em alguns casos, estruturas, componentes, sinais, instruções de programa de computador, e técnicas bem conhecidas, não serão mostradas para não obscurecer as soluções descritas nesta. Deverá ser a-preciado que, para simplicidade e clareza de ilustração, os elementos mostrados nas figuras não estão necessariamente desenhados em escala. Por exemplo, as dimensões de alguns dos elementos podem ser mostradas e-xageradas em relação a outros elementos.
Essa especificação inclui referências a "uma modalidade". O surgimento do termo "em uma modalidade" em diferentes contextos não necessariamente se refere à mesma modalidade. Aspectos, estruturas, ou características particulares podem ser combinados de qualquer modo adequado consistente com a especificação. Ademais, como usado ao longo da especificação, a palavra "pode" é usada em sentido permissivo (i.e. significando "ter potencial para") ao invés de obrigatório (significando "deve"). Similarmente, as palavras "inclui", "incluindo", "incluem" significam "incluindo, mas não se limitando".
Terminologia: Os parágrafos abaixo provêem definições e/ou contextos para termos encontrados na especificação (incluindo reivindicações anexas). "Compreendendo": Esse termo é um termo aberto. Como usado nas reivindicações anexas, esse termo não exclui estruturas ou etapas adicionais. Com respeito a uma reivindicação que declara "Um processador compreendendo um preditor de dependência de carregamento-armazenamento", tal reivindicação não exclui que o processador possa incluir componentes adicionais (por exemplo, cachê, unidade de busca, unidade de execução). "Configurado para": Várias unidades, circuitos, e outros componentes podem ser descritos ou reivindicados como configurados para realizar uma tarefa ou um número de tarefas. Em tais contextos, "Configurado para" é usado para conotar uma estrutura indicando que unidades/ circuitos/ componentes incluem uma estrutura (por exemplo, circuitagem) que reaíiza uma tarefa ou um número de tarefas durante a operação. Assim, pode se dizer que a unidade/ circuito/ componente está configurada para realizar a tarefa, mesmo quando a unidade/ circuito/ componente não esteja correntemente operacional (não sob esta égide). As unidades/ circuitos/ componentes usadas com "configurado para" incluem, por exemplo, circuitos, memória armazenando instruções de programa executáveis para implementar uma operação, etc.. Declarar que uma unidade/ circuito/ componente "é configurada" para executar uma ou mais tarefas, expressamente intenciona não invocar 35 USC §112, sexto parágrafo, para aquela unidade/ circuito/ componente. Adicionalmente, o termo "configurado para" pode incluir uma estrutura genérica (por exemplo, uma circuitagem genérica) operada por software ou firmware (por exemplo, um FPGA ou processador de propósito geral que e-xecute o software) para operar de modo que seja capaz de realizar a(s) tarefa (s) em questão. O termo "configurado para" também pode incluir adaptar um processo da fabricação (por exemplo, uma facilidade de fabricação de semicondutor) para fabricar dispositivos (por exemplo, circuitos integrados adaptados para implementar ou realizar uma ou mais tarefas. "Baseado em": Como usado nesta, esse termo é usado para descrever um ou mais fatores que afetam uma determinação. Esse termo não exclui fatores adicionais que possam afetar uma determinação. Ou seja, uma determinação pode se basear somente nesses fatores ou pelo menos em parte nesses fatores. Com respeito à frase "determinar A com base em B”, conquanto B possa ser um fator que afeta a determinação de A, tal frase não exclui que a determinação de A também possa se basear em C. Em outros casos, pode se determinar A com base somente em B.
Referindo-se agora à FIG 1, um diagrama de blocos ilustrando uma modalidade de uma porção de um circuito integrado é mostrado. Na modalidade ilustrada, IC 10 inclui complexo de processador 12, controlador de memória 22, e circuitos de interface de física de memória (PHYs) 24, 26. Deve ser notado que IC 10 também pode incluir muitos outros componentes não mostrados na FIG 1. Em várias modalidades, IC 10 também pode ser chamado Sistema em Chip (SoC de "System on Chip"), Circuito Integrado de Aplicação Especifica (ASIC de Application Specific Integrated Circuit) ou um aparelho. O complexo de processador 12 pode incluir unidades de processamento central (CPUs) 14, 16, cachê nível dois (L2) 18, e unidade de interface de barramento (BIU) 20. Em outras modalidades, o complexo de processador 12 pode incluir outros números de CPUs. As CPUs 14, 16 também são chamadas processadores ou núcleos. As CPUs 14, 16 podem ser acopladas ao cachê L2 18. O cachê L2 18 pode ser acoplado ao BIU 20, que pode ser acoplado ao controlador de memória 22. Outras modalidades podem incluir níveis adicionais de cachê (por exemplo, cachê nível três (L3)). Deve ser notado que o complexo de processador 12 pode incluir outros componentes não mostrados na FIG 1.
As CPUs 14, 16 incluem uma circuitagem para executar instruções definidas em uma arquitetura de conjunto de instrução. Especificamente, um ou mais programas compreendendo instruções podem ser executadas pelas CPUs 14, 16. Qualquer arquitetura de conjunto de instrução e-xemplar pode ser implementada em várias modalidades. Por exemplo, em uma modalidade, arquitetura de conjunto de instrução PowerPC® pode ser implementada. Outras arquiteturas de conjunto de instrução exemplares podem incluir conjunto de instrução ARM®, conjunto de instrução MIPS®, conjunto de instrução SPARC™, conjunto de instrução x86 (ou IA-32), conjunto de instrução IA-64, etc..
Em várias modalidades, as CPUs 14, 16 podem executar instruções fora de ordem, que, em alguns casos, provocam violações de ordenamento. Por exemplo, no caso de instruções de carregamento-armazenamento, violações de ordenamento podem ocorrer quando da execução de um carregamento mais recente antes de armazenamentos mais antigos, sobrepondo endereços físicos. Para evitar ou impedir a repetição desse tipo de violação de ordenamento, várias técnicas podem ser empregadas para impedir que um carregamento mais recente seja executado antes de um armazenamento mais antigo do qual depende. Em uma modalidade, cada uma das CPUs 14, 16 pode incluir um preditor de dependência de carregamento-armazenamento para manter registro de pares de carrega- mento-armazenamento para os quais se prevê ou se espera que sejam dependentes, e também tendam a ser executados fora-de-ordem. Em uma modalidade, pares de carregamento-armazenamento dependentes podem ser gravados em uma tabela.
Algumas vezes o preditor pode treinar em um par de carregamento-armazenamento, mas a dependência pode ser um caso excepcional. Isso ocorre porque a dependência entre instruções de carregamento e armazenamento pode se basear em endereço, e os endereços da instrução de carregamento e armazenamento podem mudar ao longo do tempo. Em outras palavras, as dependências carregamento-armazenamento podem ser dinâmicas. Algumas das entradas na tabela podem não ser precisas depois de um tempo, e a aplicação de dependências para entradas imprecisas pode fazer que o processador desnecessariamente atrase operações de carregamento sem qualquer benefício.
Para impedir que entradas obsoletas se acumulem na tabela, e que dependências sejam aplicadas a pares de carregamento-armazenamento que correspondam a entradas antigas, cada entrada da tabela pode incluir um indicador que representa a força da predição de dependência. O indicador pode determinar se uma dependência é aplicada para um dado par de carregamento-armazenamento. O indicador também pode afetar a política de substituição com respeito a entradas de tabela, de modo que entradas com valores de indicador baixos possam ser substituídas quando uma nova entrada é alocada na tabela.
Cada uma das CPUs 14, 16 também pode incluir um cachê nível um L1 (não mostrado) e cada cachê L1 pode ser acoplado ao cachê L2 18. Em uma modalidade, o cachê L2 18 pode ser configurado para armazenar instruções e dados para acesso de baixa latência pelas CPUs 14, 16. O cachê L2 18 pode compreender qualquer capacidade e modalidade (por exemplo, mapeado direto, ajustado associativo). O cachê L2 pode ser acoplado ao controlador de memória 22 via BIU 20. O BIU 20 também pode incluir várias outras estruturas lógicas para acoplar CPUs 14, 16 e cachê L2 18 a vários outros dispositivos e blocos. O controlador de memória 22 pode incluir qualquer número de portas de memória e uma circuitagem configurada para interfacear a memória. Por exemplo, o controlador de memória 22 pode ser configurado para interfacear a memória de acesso randômico dinâmico (DRAM), tal como DRAM síncrono (SDRAM) SDRAM de taxa de dados dupla (DDR), SDRAM DDR2, DRAM Rambus (RDRAM), etc.. O controlador de memória 22 também pode ser acoplado a circuitos de interface física de memória (PHYs) 24, 26. Memórias PHYs 24, 26 são representativas de qualquer número de memórias PHYs que pode ser acoplado ao controlador de memória 22. As memórias PHYs 24, 26 podem ser configuradas para interfacear dispositivos de memória (não mostrados).
Deve ser notado que outras modalidades podem incluir outras combinações de componentes incluindo subconjuntos ou super-conjuntos dos componentes mostrados na FIG 1, e/ou outros componentes. Conquanto um caso de um dado componente possa ser mostrado na FIG 1, outras modalidades podem incluir duas ou mais situações do componente dado. Similarmente, ao longo dessa descrição detalhada, duas ou mais situações de um dado componente podem ser incluídas mesmo se apenas uma delas for mostrada, e/ou modalidades incluindo apenas uma situação podem ser usadas, mesmo se múltiplas situações forem mostradas.
Dirigindo-se agora à FIG 2, uma modalidade de um núcleo de processador é mostrada. O núcleo 30 é um exemplo de um núcleo de processador e o núcleo 30 pode ser usado em um complexo de processador, tal como complexo de processador 12 da FIG 1. Em uma modalidade, cada uma das CPUs 14, 16 da FIG 1 pode incluir o componente e funcionalidade do núcleo 30. O núcleo 30 pode ser incluir uma unidade de busca e decodifi-cação (FED) 32, unidade de mapeamento e envio 36, unidade de gerenciamento de memória (MMU) 40, unidade de interface de núcleo (CIF) 42, unidades de execução 44, e unidade de carregamento-armazenamento (LSU) 46. Deve ser notado que o núcleo 30 pode incluir outros componentes e interfaces não mostrados na FIG 2. A unidade FED 32 pode incluir uma circuitagem configurada pa- ra ler instruções da memória e colocá-las em um cachê de instrução nível um L1 34. O cachê de instrução L1 34 pode ser uma memória cachê para armazenar instruções a serem executadas pelo núcleo 30. O cachê de instrução L1 34 pode ter qualquer capacidade e construção (por exemplo, mapeado direto, ajustado associativo, totalmente associativo, etc.). Ademais, o cachê de instrução L1 34 pode ter qualquer tamanho de canalização (pipeli-ne). A unidade FED 32 também pode incluir um hardware de predição de ramificação configurado para predizer instruções de ramificação e baixar a trajetória predita. A unidade FED 32 também pode ser redirecionada (por exemplo, via erro de predição, exceção, interrupção, fluxo, etc.). A unidade FED 32 também pode ser configurada para decodificar as instruções em operações de instrução (ops). Geralmente, uma operação de instrução pode ser uma operação que o hardware incluído nas unidades de execução 44 e LSU 46 é capaz de executar. Cada instrução pode se converter em uma ou mais operações de instrução, que, quando executadas, provê o desempenho das operações definido para aquela instrução, de acordo com a arquitetura de conjunto de instrução. A unidade FED 32 pode ser configurada para decodificar múltiplas instruções em paralelo.
Em algumas modalidades, cada instrução pode se decodificar em uma única operação de instrução. A unidade FED 32 pode ser configurada para identificar o tipo de instrução, operados de fonte, etc., e cada instrução decodificada pode compreender a instrução junto com algumas das informações de decodificação. Em outras modalidades, nas quais cada instrução se converte em uma única op, cada op pode simplesmente ser a correspondente instrução ou uma porção da mesma (por exemplo, o(s) cam-po(s) de código de op da instrução. Em algumas modalidades, a unidade FED 32 pode incluir qualquer combinação de circuitagem e/ou micro-código para gerar ops para instruções. Por exemplo, gerações de op relativamente simples (por exemplo, uma ou duas ops per instrução) podem ser manuseadas no hardware, enquanto gerações de op mais extensas (por exemplo, mais que três ops per instrução) podem ser manuseadas em micro-código. Em outras modalidades, a funcionalidade incluída na unidade FED 32 pode ser dividida em duas ou mais unidades separadas, tal como unidade de busca e/ou outras unidades.
Ops decodificadas podem ser providas para unidade de mapeamento/ envio 36. A unidade de mapeamento/ envio 36 pode ser configurada para mapear ops e registros de arquitetura para registros físicos do núcleo 30. A unidade de mapeamento e envio 36 pode implementar renomeação de registro para mapear endereços de registro de fonte a partir das ops para números de operando de fonte identificando os registros de fonte renomeada. A unidade de mapeamento e envio 36 também pode ser configurada para enviar ops para estações de reserva nas unidades de execução 44 e LSU 46. A unidade de mapeamento e envio 36 pode incluir preditor de dependência de carregamento-armazenamento (LSD) 37 e buffer de reordenamento (ROB) 38. Antes de serem enviadas, as ops podem ser escritas para o ROB 38. O ROB 38 pode ser configurado para sustar ops até as ops serem providas em uma ordem. A cada op pode ser designado um índice ROB (RNUM) que corresponde a uma entrada específica no ROB 38. Os RNUMs podem ser usados para acompanhar as operações em andamento no núcleo 30. A unidade de mapeamento e envio 36 também pode incluir outros componentes (por exemplo, arranjo de mapeador, unidade de envio, buffer de envio) não mostrados na FIG 2. Ademais, em outras modalidades, a funcionalidade incluída na unidade de mapeamento e envio 36 pode ser dividida em duas ou mais unidades separadas, tal como uma unidade de mapeamento, unidade de envio e/ou outras unidades O preditor LSD 37 pode ser configurado para treinar e predizer pares de instrução de carregamento-armazenamento, cuja emissão é provável de ser fora-de-ordem. O preditor LSD 37 pode incluir uma tabela com entradas para pares de carregamento-armazenamento treinados, e cada entrada pode incluir informações identificando instruções de carregamento e armazenamento e força da predição. Em uma modalidade, um evento de treinamento pode ser uma violação de ordenamento disparado pela execução de um carregamento mais recente antes de um armazenamento mais antigo com endereços físicos sobrepostos. Em uma modalidade, a ta- bela pode ser uma estrutura inteiramente associativa de 256 entradas. Em outras modalidades, a tabela pode ter outros números de entradas. Em várias modalidades, a tabela pode ser uma memória de conteúdo endereçável (CAM) para vários campos da tabela.
Quando houver uma violação de ordenamento entre operações de carregamento e armazenamento dependentes, o núcleo 30 pode ser redirecionado e ressincronizado. Várias ações corretivas podem ser tomadas em consequência do redirecionamento. Nesse ponto, o treinamento pode ser realizado para o par de carregamento-armazenamento que provocou o res-sicronismo. Uma entrada para esse particular par pode ser alocada no predi-tor LSD 37, e a força da predição pode ser colocada em um nível elevado. Então, em um passo seguinte através da canalização do núcleo 30, quando o armazenamento do par de carregamento-armazenamento é enviado da unidade 36, o preditor LSD 37 pode ser investigado com respeito ao armazenamento. A entrada correspondente pode ser encontrada e armada. Quando o carregamento a partir do par de carregamento-armazenamento é enviado da unidade 36, uma pesquisa do preditor LSD 37 pode ser feita para o carregamento, e o carregamento deve corresponder na entrada armada. Então, o carregamento pode ser enviado para uma estação de reserva com uma dependência, fazendo o carregamento aguardar no armazenamento antes de ser emitido a partir da estação de reserva. O preditor LSD 37 pode ser configurado para limpar a tabela, se o armazenamento que armou uma entrada foi descarregado da canalização de instrução antes de o armazenamento ser emitido. Por exemplo, pode haver um cenário no qual há necessidade de desarmar uma entrada armada de preditor LSD 37, tal como quando há uma falha. Uma operação de carregamento pode ser dependente e aguardar uma operação de armazenamento já descarregada, e isso pode terminar bloqueando o núcleo 30. Nesse caso, quando uma operação de armazenamento é descarregada do núcleo 30, a tabela de preditor LSD 37 pode ser investigada com respeito a quaisquer entradas armadas, que correspondam ao armazenamento descarregado. Quaisquer entradas encontradas para armazenamento descarregado podem ser desarmadas. Em uma modalidade, cada entrada de preditor LSD 37 pode incluir um RNUM de armazenamento para identificar o armazenamento específico do par de carregamento armazenamento.
Unidades de execução 44 podem incluir qualquer número e tipo de unidades de execução (por exemplo, ponto flutuante, vetor). Cada uma das unidades de execução 44 também pode incluir uma ou mais estações de reserva (não mostradas). O CIF 42 pode ser acoplado à LSU 46, unidade FED 32, MMU 40, e cachê L2 (não mostradas). O CIF 42 pode ser configurado para gerenciar a interface entre o núcleo 30 e o cachê L2. O MMU 40 pode ser configurado para realizar funções de gerenciamento de memória e translação de endereço. A LSU 46 pode incluir cachê de dados L2 48, estações de reserva 50 e 52, e fila de armazenamento 54 e fila de carregamento 56. Operações de carregamento-armazenamento podem ser enviadas da unidade de mapeamento/ envio 36 para estações de reserva 50, 52. Outras modalidades podem incluir outros números de estações de reserva. Operações podem ser emitidas a partir das estações de reserva 50 e 52 fora-de-ordem. A fila de armazenamento 54 pode armazenar dados que correspondem a operações de armazenamento, e a fila de carregamento 56 pode armazenar dados associados a operações de carregamento. A LSU 46 também pode ser acoplada ao cachê L2 via CIF 42. Deve ser notado que a LSU 46 também pode incluir outros componentes (por exemplo, arquivo de registro, unidade de pré-busca, buffer de conversão paralelo (trasnslation lookaside buffer)) não mostrados na FIG 2.
Uma violação de ordem de carregamento-armazenamento pode ser detectada pelo LSU 46 no instante em que se emite o armazenamento mais antigo. Em uma modalidade, o endereço de armazenamento do armazenamento mais antigo pode ser comparado a todos carregamentos mais recentes na fila de carregamento 56. Se uma correspondência for detectada, então a operação de carregamento já pode ter sido completada com um dado incorreto. Isso pode vir a ser corrigido no futuro, sinalizando um redirecio-namento de volta para a unidade de mapeamento/ envio 36 usando RNUMs das operações de carregamento e armazenamento. A unidade de mapeamento/ envio 36 pode descarregar as instruções a partir da canalização do núcleo 30 e redirecionar o lado da frente (front-end) do núcleo de volta para o endereço de instrução do carregamento, e pode voltar a buscar a instrução de carregamento. Para impedir futuros redirecionamentos, a unidade de mapeamento/ envio 36 pode predizer e gravar dependências de carregamento e armazenamento no preditor LSD 37, e comunicar as dependências preditas às estações de reserva 50, 52.
Em um caso típico, quando um armazenamento é enviado, o armazenamento pode investigar o preditor LSD 37, e, então, se uma correspondência for encontrada para o armazenamento, então a entrada de correspondência na tabela pode ser armada (i.e. ativada), e o RNUM do armazenamento pode ser escrito para a entrada. Subsequentemente, o carregamento pode ser enviado e a pesquisa de carregamentos na tabela pode ser feita. Em uma modalidade, os valores de identificação usados na pesquisa no preditor LSD 37 podem ser pelo menos uma porção de valores PC de carregamento e armazenamento. Em outra modalidade, os valores de identificação usados na pesquisa e armazenados nas entradas podem ser valores errados, derivados de pelo menos uma porção de valores de PC e pelo menos uma porção dos valores de registro de arquitetura, e pelo menos uma porção de valores micro-op. Outras possibilidades de identificadores que podem ser usadas são possíveis e contempladas.
Em várias modalidades, o carregamento pode corresponder em qualquer número de entradas no preditor LSD 37. Em uma modalidade, para ocorrer uma correspondência, a entrada precisa ser armada. Se o carregamento corresponder em uma entrada armada, então a dependência com o RNUM do armazenamento pode ser criada ligando o RNUM do armazenamento armado ao carregamento. O carregamento pode ser marcado como aguardando aquele particular RNUM de armazenamento a ser emitido a partir da estação de reserva. Nas estações de reserva pode haver um campo de dependência para carregamento, e o carregamento pode ser marcado como dependente em um dado armazenamento a ser emitido a partir de uma das estações de reserva 50, 52. Assim, nesse caso, o carregamento pode ser marcado como aguardando um RNUM de armazenamento específico e o carregamento pode emitir um ciclo depois de o armazenamento específico ser emitido.
Se o carregamento corresponder a múltiplas entradas de armazenamento, tal caso pode ser chamado de muiticorrespondência. Nesse caso, o carregamento pode aguardar até todos os armazenamentos mais antigos serem emitidos. Por exemplo, em uma modalidade, um bit pode ser a-justado de modo que o carregamento aguarde a emissão de todos os armazenamentos mais antigos antes de o carregamento ser emitido. Isso força a emissão de todos os armazenamentos mais antigos a partir das estações de reserva 50, 52 antes do carregamento. Em uma modalidade, cada uma das estações de reserva 50, 52 pode disponibilizar o armazenamento mais antigo que contenha. Uma vez o carregamento se tornando mais antigo que ambos os armazenamentos, então o carregamento pode ser emitido.
Cada estação de reserva 50, 52 pode incluir um selecionador que é configurado para emitir quaisquer operações válidas. Quando um armazenamento ê válido, e sendo selecionado e emitido, uma marcação pode ser transmitida, e, então, o carregamento dependente desse armazenamento corresponderá àquela marcação. Isso marca o carregamento como elegí-vel para emissão a partir das estações de reserva. Em outras palavras, o armazenamento produz uma marcação consumida pelo carregamento. Em uma modalidade, a marcação pode ser o RNUM do armazenamento. Em uma modalidade, o RNUM é um valor de 9 bits, embora, em outras modalidades, o tamanho do RNUM pode variar. Um carregamento com dependência pode ter uma fonte extra armazenada com o carregamento nas estações de reserva, que pode ser o RNUM do armazenamento a partir da mesma entrada no preditor LSD 37.
Quando um carregamento corresponde a uma entrada no preditor LSD 37 e a entrada está armada, isso significa que há um armazenamento válido que o carregamento precisa aguardar. A entrada também pode incluir um indicador para a força da predição. Em uma modalidade, o indicador pode ser um contador, e, se o valor do contador estiver acima de um limite, então a entrada pode ser considerada com uma predição forte, i.e. altamente provável, e a dependência carregamento-armazenamento pode ser estabelecida. O valor do limite varia de modalidade a modalidade. Se o carregamento corresponder em uma entrada armada, e o indicador for fraco, indicando a não utilização da predição, então a dependência pode não ser estabelecida para o carregamento. Se a dependência do carregamento-armazenamento for estabelecida, então o carregamento pode selecionar o RNUM do armazenamento, de modo que RNUM é lido fora da entrada e passa ao longo das estações de reserva com o carregamento, quando o carregamento for enviado. O carregamento também pode ser marcado como dependente na estação de reserva.
Em uma modalidade, um armazenamento emitido a partir de uma estação de reserva faz uma marcação ser transmitida apenas se armazenamento for marcado como um produtor válido. Quando um armazenamento pesquisa preditor LSD 37 e não se encontra uma correspondência, então o armazenamento não será estabelecido como produtor válido. Se o armazenamento encontra uma entrada válida no preditor LSD 37 e o indicador de força de predição indica que o preditor de dependência de carregamento-armazenamento está acima de um limite (i.e. a predição está ativada) então a entrada pode ser armada. Em uma modalidade, se o indicador de força de predição estiver abaixo de um limite, então o armazenamento não arma a entrada, mesmo que o armazenamento corresponda com aquela entrada do armazenamento. Em algumas modalidades, a entrada é armada quando o armazenamento encontra uma correspondência, a despeito do valor do indicador de força de predição. O armazenamento pode corresponder em múltiplas entradas, e múltiplas entradas podem ser armadas para um único armazenamento.
Quando um carregamento corresponde a uma entrada armada do preditor LSD 37, o carregamento é marcado como dependente, e o carregamento pode aguardar a emissão a partir da estação de reserva até o correspondente carregamento ser emitido a partir da estação de reserva.
Então, depois de estabelecida a emissão do carregamento com dependência, pode se determinar de onde o carregamento recebe seus dados. Dependendo de onde o carregamento recebe os dados, o indicador de força de predição na entrada correspondente do preditor LSD 37 pode ser aumentado, diminuído, ou mantido.
Por exemplo, se os dados de carregamento foram encaminhados a partir da fila de armazenamento 54, então a predição a partir do preditor LSD 37 pode ser considerada boa. Nesse caso, os dados a partir do armazenamento ainda não são providos para o cachê 48, e, então, é vantajoso que o carregamento aguarde o armazenamento. Se os dados de carregamento para essa operação de carregamento ainda se encontrarem na fila de armazenamento 54, isso pode indicar que há realmente uma dependência entre carregamento e armazenamento. Em outras palavras, os dados precisam ser encaminhados da fila de armazenamento 54 para o carregamento dependente.
Se houver falta em uma fila de armazenamento 54 de dados de carregamento, então a dependência deixa de ser válida. É possível que haja dependência anterior, mas, então, o endereço do carregamento ou armazenamento mudou e carregamento e armazenamento deixam de corresponder. Nesse caso, se os dados de armazenamento forem recuperados do cachê 48, então os dados podem ter sido armazenados no cachê 48 por um longo período. Portanto, a determinação de se os dados de armazenamento foram encaminhados da fila de armazenamento 54 ou cachê 48 pode indicar se a predição foi precisa (ou não). Ademais, o indicador de força de predição armazenado na entrada correspondente do preditor LSD 37 pode ser atualizado com base nessa determinação. Se a precisão for precisa, e os dados de carregamento encaminhados a partir da fila de armazenamento 54, então o indicador de força de predição pode ser aumentado. Se os dados de carregamento vierem do cachê 48, o indicador de força de predição pode ser diminuído. Em outras modalidades, podem ser usadas outras técnicas para determinar se a predição de dependência é precisa.
Deve ser entendido que a distribuição de funcionalidade ilustra- da na FIG 2 não é a única microarquitetura possível que pode ser usada para um núcleo de processador. Outros núcleos de processador podem incluir outros componentes, omitir um ou mais dos componentes mostrados, e/ou incluir um arranjo diferente de funcionalidade dentre os componentes.
Referindo-se agora à FIG 3, um diagrama de blocos de uma modalidade de unidade de mapeamento/ envio e estação de reserva são mostrados. Em uma modalidade, a unidade de mapeamento/ envio 60 pode incluir um mapeador de registro 62, buffer de reordenamento (ROB) 64, pre-ditor de dependência de carregamento-armazenamento (LSD) 66, e unidade de envio 68. O mapeador de registro 62 e preditor LSD 66 são acoplados para receber ops de uma unidade decodificadora (não mostrada). O preditor LSD 66 é acoplado para receber PCs da unidade decodificadora e acoplado para receber sinais de Redirecionamento e Atualização de Contagem da u-nidade de carregamento-armazenamento (não mostrada). O preditor LSD 66 também é acoplado a um apontador de substituição que pesquisa o preditor LSD 66 com respeito a entradas que podem ser descartadas quando uma nova entrada é alocada. O mapeador de registro 62 pode ser configurado para mapear registros de arquitetura com respeito a registros físicos e prover endereços de registros físicos para unidade de envio 68. A unidade de envio 68 pode ser configurada para enviar operações para as estações de reserva 70A a 70N. A unidade de envio 68 pode ser configurada para manter uma lista grátis de entradas da estação de reserva nas estações de reserva 70A a 70N e pode geralmente designar as entradas às ops para equilibrar o carregamento entre as estações de reserva 70A a 70N. O preditor LSD 66 pode ser configurado para verificar armazenamentos e carregamentos nas operações e comparar os PCs de quaisquer armazenamento e carregamento detectados para os PCs de armazenamento e carregamentos que causaram previamente violações de ordenamento e alocaram entradas na tabela de treinamento. Se um PC corresponde a um dado armazenamento, o preditor LSD 66 pode ser configurado para armar a correspondente entrada na tabela de treinamento. Em uma modalidade, o preditor LSD 66 pode verificar a força do indicador de predição antes de armar a entrada. Se o indicador estiver acima de limite, então a entrada pode ser armada, ou, ao invés, se o indicador estiver abaixo do limite, então a entrada pode não ser armada. Adicionalmente, o preditor LSD 66 pode ser configurado para capturar o RNUM designado para armazenamento, como identificador do armazenamento.
Quando se detecta um carregamento que corresponde à entrada armada, e a força do indicador de predição da entrada armada se encontra acima do limite, o preditor LSD 66 pode ser configurado para usar o identificador de armazenamento para gerar uma dependência para o carregamento no armazenamento, impedindo a emissão do carregamento pela estação de reserva 70 até depois da emissão do armazenamento. Em uma modalidade, o preditor LSD 66 pode ser configurado para encaminhar o RNUM do armazenamento a uma dada estação de reserva 70 junto com um indicador indicando o carregamento tem uma dependência. Adicionalmente, se houver múltiplas correspondências para o carregamento, então o preditor LSD 66 pode encaminhar um indicador de multicorrespondência a uma dada estação de reserva 70. Em outras modalidades, o preditor LSD 66 pode ser configurado para encaminhar múltiplos RNUM de armazenamento no caso de multicorrespondência para a estação de reserva 70, e a estação de reserva 70 pode ser configurada para armazenar mais que um RNUM de armazenamento per carregamento. Outras modalidades poderão indicar dependências de armazenamento de outras maneiras.
As estações de reserva 70A a 70N são representativas de qualquer número de estações de reserva, que pode ser usado como parte de unidades de carregamento/ armazenamento (não mostrada) e/ou unidades de execução (não mostradas). Cada estação de reserva 70A a 70N pode ser configurada para armazenar operações até que as operações sejam executadas por uma correspondente unidade funcional. Um exemplo de entrada na estação de reserva 70A de acordo com uma modalidade está mostrado na FIG 3. Cada uma das estações de reserva 70A a 70N pode incluir vários números de entrada, dependendo da modalidade. Cada entrada pode incluir um indicador de dependência, indicador de multicorrespondência, RNUM de armazenamento de uma dependência, um indicador de carregamento/ armazenamento (L/S) para indicar se a operação é um carregamento ou armazenamento, e PC de uma operação. Em outras modalidades, a entrada pode incluir outros campos (i.e. registro de fonte, registro de destino, ope-randos de fonte) e/ou omitir um ou mais dos campos mostrados na FIG 3. Ademais, outros tipos de entrada (por exemplo, ponto flutuante) podem ser formatados de modo diferente. O preditor LSD 66 pode ser configurado para indicar os pares de carregamento/ armazenamento que provocam violações de ordenamento com base na indicação de redirecionamento. A indicação de redirecionamen-to pode incluir PCs de carregamento e armazenamento ou outros indicadores de carregamento e armazenamento. O preditor LSD 66, assim, pode ser treinado por armazenamentos e carregamentos que provocam violações de ordenamento, para impedir tais eventos no futuro, quando a mesma sequência é reutilizada e re-executada no processador. O mapeador de registro 62 pode incluir uma memória com uma entrada para cada registro lógico. A entrada de cada registro lógico no mapeador de registro 62 pode armazenar o RNUM da operação mais recente para atualizar o registro lógico. Um status adicional pode ser armazenado nas entradas de mapa de renomeação da mesma forma. Por exemplo, um bit pode indicar se a op mais recente foi executada (ou não). Em tal modalidade, mapeador de registro 62 pode receber sinais de uma dada estação de reserva 70, identificando as ops emitidas, que pode impedir que o mapeador 62 atualize o bit. Um bit indicando se a op mais recente foi retirada ou não, também pode ser incluído.
Deve ser notado que todas as conexões das unidades mostradas na FIG 3 estão ilustradas, e a unidade de mapeamento/ envio 60 inclui uma circuitagem adicional implementando operações (não mostrada). Por exemplo, o mapeador de registro 62 e ROB 64 podem receber indicações de redirecionamento para ajustar seu mapeamento para levar em conta as ops sendo descarregadas. Adicionalmente, o mapeador de registro 62 e ROB 64 podem receber uma indicação e retirar ops para ajustar seus estados à retirada (por exemplo, liberando entradas para designar novas operações, atualizar arquitetura, renomear estado, etc ). Essas operações são auxiliares à operação do preditor LSD 66 e, por conseguinte, não serão descritas em mais detalhes aqui.
Deve ser notado que conquanto PCs e RNUMs sejam usados como identificadores de armazenamentos e PCs como identificadores de carregamentos, outras modalidades podem usar quaisquer identificadores que identifiquem instruções em andamento no processador de modo único (por exemplo, qualquer tipo de marcação ou número sequencial).
Dirigindo-se agora à FIG 4, uma modalidade da tabela de preditor de dependência de carregamento-armazenamento é mostrada. A tabela 90 pode incluir vários números de entradas dependendo da modalidade. Cada entrada pode corresponder a um par de carregamento-armazenamento do qual previu-se ter endereços sobrepostos e número fora de ordem. Uma entrada pode ser locada na tabela 90 em resposta a detecção de uma violação de ordenamento. Ocorrendo a violação de ordenamento, uma fila de armazenamento pode descarregar o processador incluindo o carregamento que causou a violação, de volta para a unidade de busca e a tabela 90 pode ser treinada nessa violação, de modo que uma entrada desse par de carregamento-armazenamento específico seja adicionada à tabela 90. Tipicamente, o armazenamento descarregado que disparou o redirecionamento já terá sido emitido, assim, quando se volta a pesquisar e decodificar o carregamento descarregado, a entrada na tabela 90 não será armada, e o carregamento pode ser emitido normalmente. Em futuras execuções do armazenamento naquele PC, o armazenamento arma a correspondente entrada na tabela 90 e impede a emissão do carregamento até a emissão do armazenamento. A tabela 90 pode ser configurada para permitir múltiplos acessos e atualizações simultâneas por múltiplas ops. Ademais, conquanto a tabela 90 seja ilustrada como sendo uma tabela integrada, os diferentes campos, também podem ser tabelas separadas que correspondem a memórias sepa- radas com entradas de tabela associadas. Por exemplo, os PCs de carregamento podem ser uma tabela separada, os PCs de armazenamento podem ser uma tabela separada, e uma entrada de PC de carregamento pode corresponder a uma entrada de PC de armazenamento, para a qual uma violação de ordenamento de carregamento-armazenamento específica foi detectada e treinada.
Cada entrada pode incluir um indicador válido 92, que pode indicar se a entrada é uma entrada válida, e se a entrada deve ser usada para aplicar uma dependência entre carregamento e armazenamento indicada pela entrada. Em uma modalidade, o indicador válido 92 pode ser liberado na reconfiguração. Um indicador válido 92 também pode afetar a política de substituição, de modo que entradas inválidas possam ser as primeiras entradas que são substituídas quando novas entradas são alocadas. Em algumas modalidades, o indicador válido 92 não pode ser incluído nas entradas da tabela 90. Ao invés, nessas modalidades, o valor do campo de contador 102 pode ser usado para indicar se a entrada é válida. Outras modalidades podem excluir campo de contador 102 na tabela e usar apenas o indicador válido 92.
Cada entrada também pode incluir um valor PC de armazenamento 94 para determinar a operação de armazenamento específica. Em algumas modalidades, o valor PC de armazenamento pode ser combinado com registros de arquitetura e/ou desativado. Quando um armazenamento é enviado, os PCs de armazenamento da tabela 90 podem ser pesquisados com respeito ao PC do armazenamento enviado. A tabela 90 pode ser um CAM para o campo PC de armazenamento, onde cada entrada na memória inclui uma circuitagem para comparação. O campo PC de armazenamento também pode ser um conjunto de registros e comparadores que são operados como CAM. Se um armazenamento enviado corresponde em qualquer entrada, então essas entradas podem ajustar o bit armado 98. O RNUM do armazenamento também pode ser escrito no campo RNUM de armazenamento 96 da entrada. Quando um armazenamento é emitido de uma estação de reserva, então o bit armado 98 pode ser liberado de quaisquer entradas da tabela 90, previamente armadas por aquele armazenamento particular.
Quando um carregamento é enviado, o valor PC de carregamento 100 de cada entrada da tabela 90 pode ser pesquisado com respeito ao PC do carregamento enviado. A tabela 90 pode ser um CAM para o campo PC de carregamento. Se um carregamento enviado corresponde em qualquer entrada armada, então uma dependência pode ser estabelecida e aplicada para aquele carregamento específico. Se o carregamento corresponder a uma entrada desarmada, então a dependência não será estabelecida em razão de o correspondente armazenamento não ter sido enviado ou já ter sido emitido, e, portanto, a violação de ordenamento não deve ocorrer. Se o carregamento corresponder em múltiplas entradas armadas, então o carregamento pode aguardar até todos os armazenamentos mais antigos terem sido emitidos antes do próprio carregamento ser emitido. Se o carregamento corresponde em uma única entrada armada, então o RNUM do armazenamento pode ser escrito na estação de reserva com o carregamento. Também pode haver um bit de dependência ajustado para o carregamento na estação de reserva, para indicar que o carregamento tem uma dependência válida.
Cada entrada pode incluir um campo de contador 102. O valor do contador 102 pode indicar a força da predição para aquele particular par de carregamento-armazenamento na entrada. Em uma modalidade, o contador pode ser um contador de dois bits encima-embaixo. Em outra modalidade, o contador pode usar outros números de bits. Ademais, o contador 102 pode ser configurado de modo a saturar em seus valores máximo e mínimo.
Quando o armazenamento corresponde em uma entrada, o valor de contador 102 pode ser verificado antes de armar a entrada. Se o valor de contador 102 estiver abaixo de um limite, então a entrada pode não ser armada. Se o valor de contador 102 estiver acima do limite, então a entrada pode ser armada. Em algumas modalidades, a entrada pode ser armada sem verificar o valor de contador 102. Quando o carregamento corresponde em uma entrada, o valor de contador 102 também pode ser verificado. So- mente se o valor de contador 102 estiver acima do limite, que a dependência pode ser aplicada. O valor do limite pode variar, dependendo da modalidade, e ser ajustado de acordo com as condições específicas da operação.
Em outra modalidade, contadores expirados podem ser usados com entradas da tabela 90. Cada entrada pode incluir um contador expirado, e o contador expirado pode ser ajustado em um valor inicial, quando a entrada é primeiramente alocada. Um contador de intervalo também pode ser usado para contar um intervalo programável, e quando o contador de intervalo expirar, cada contador expirado na tabela 90 pode ser decrementado. O contador de intervalo, então, pode iniciar e contar um intervalo programável. Cada vez que o intervalo expira, cada contador expirado na tabela 90 pode ser decrementado. Cada vez que uma entrada é acessada/ armada por um par de carregamento-armazenamento, o contador expirado pode ser incrementado de uma quantidade fixa. Se uma entrada na tabela 90 deixa de ser usada, então eventualmente seu contador expirado vai a zero, onde a entrada pode ser substituída com uma nova entrada.
Em outras modalidades, a tabela 90 pode incluir campos adicionais e/ou omitir um ou mais campos mostrados na FIG 4. Ademais, a tabela 90 pode ser formatada de modo diferente em outras modalidades.
Referindo-se agora à FIG 5, uma modalidade da representação de valores de contador correspondentes em entradas de par de carregamento-armazenamento em uma tabela de preditor é mostrada. Essa designação de valores de contador é representada por um contador de dois bits na tabela 110. Em outras modalidades, outros números de bits podem ser usados pelo contador.
Em uma modalidade, um valor de contador de "11" ou três pode representar "fortemente habilitado". Para uma entrada com esse valor de contador, uma dependência para o par de carregamento-armazenamento pode ser aplicada. Um valor de contador de "10" ou Dois pode representar "fracamente habilitado". Se uma entrada for "fracamente habilitada", então a dependência também será aprovada. Um valor de contador "01" ou Um pode representar "fracamente habilitado". Se uma entrada for "fracamente habili- tada", então a dependência não será aplicada para o correspondente par de carregamento-armazenamento. Um valor de contador de "00" ou zero pode representar ''fortemente habilitado". Em algumas modalidades, "fortemente habilitado" também pode indicar que a entrada é inválida. O limite na modalidade mostrada na FIG 5 se encontra entre Dois e Um. Em outras modalidades, o limite pode assumir outros valores.
Em uma modalidade, quando primeiro uma entrada fica alocada, por default, o contador para a nova entrada pode ser ajustada em "fracamente habilitado". Quando o contador está "fracamente desabilitado" (contador = 1), então o par de carregamento-armazenamento que corresponde com a entrada não pode ter uma dependência estabelecida. Ao invés, o carregamento pode ser emitido sem dependência. Em outras modalidades, outros tamanhos de contadores podem ser usados e os valores de contador podem ter diferentes representações.
Dirigindo-se agora à FIG 6, uma modalidade de um método para processar uma operação de carregamento é mostrada. Para propósito de discussão, as etapas nessa modalidade são mostradas em ordem sequencial. Deve ser notado que, em várias modalidades do método, um ou mais dos elementos descritos podem ser realizados concomitantemente, em ordem diferente daquela mostrada. Outros elementos adicionais também podem ser realizados, como desejado. Adicionalmente, as seções do fluxograma podem ser realizadas em paralelo para processar simultaneamente múltiplas operações de carregamento.
Em uma operação, uma operação de carregamento pode ser recebida por uma unidade de mapeamento/ envio (bloco 120). A operação de carregamento pode ser ter sido decodificada em um estágio anterior de uma canalização de processador. A tabela de preditor de dependência de carregamento-armazenamento pode ser pesquisada com respeito a entradas com o mesmo PC, como operação de carregamento (bloco 122). Depois de realizar a pesquisa, pode se determinar quantas correspondências foram encontradas (bloco condicional 124). Se nenhuma correspondência for encontrada (bloco condicional 124), então o carregamento pode ser enviado a uma estação de reserva sem dependência (bloco 126). O carregamento pode corresponder a entradas não armadas, mas essas correspondências não armadas não constituem correspondências reais e requerem uma dependência para serem aplicadas. Similarmente, se houver uma correspondência de carregamentos em uma entrada armada, mas o contador de indicador de predição se encontrar abaixo de um limite, então isso não constitui uma correspondência real, e, portanto, uma dependência não será aplicada. Em algumas modalidades, o contador não precisa ser comparado contra o limite para o carregamento, se o armazenamento já tiver verificado o contador antes de armar a entrada.
Se o carregamento não tiver uma dependência que precise ser aplicada, então isso pode ser indicado em uma variedade de modos. Por exemplo, em uma modalidade, um bit de dependência pode ser liberado para indicar que o carregamento não tem dependência. Depois do bloco 126, o selecionador pode selecionar o carregamento a ser emitido a partir da estação de reserva a qualquer instante, sem aguardar a emissão de qualquer outra operação (bloco 132).
Se uma única correspondência com entrada armada for encontrada, então o carregamento pode ser enviado para uma estação de reserva com dependência (bloco 128). O RNUM do correspondente armazenamento pode ser escrito na entrada de estação de reserva com o carregamento. Em uma modalidade, para uma entrada ser considerada uma correspondência, o campo de contador da entrada pode precisar estar acima de um limite. Por exemplo, se o carregamento corresponder a uma entrada armada, mas o campo de contador para entrada se encontrar abaixo de um limite (i.e."fracamente habilitado" ou "fortemente desabilitado"), então isso pode não constituir correspondência real. Após o bloco 128, o carregamento pode aguardar emissão até o correspondente armazenamento, do qual depende, ser emitido (bloco 134).
Se múltiplas correspondências com entradas armadas forem encontradas para o carregamento (bloco condicional 124), então o carregamento pode ser enviado para a estação de reserva com um indicador de multicorrespondência ajustado (bloco 130). Então, o carregamento pode a-guardar sua emissão a partir da estação de reserva, até todos os armazenamentos mais antigos serem emitidos (bloco 136). A unidade de carrega-mento-armazenamento pode incluir múltiplas estações de reserva, e cada estação de reserva pode ser configurada para acompanhar o armazenamento mais antigo dentre suas entradas. Quando o carregamento com múltiplas correspondências for enviada, o armazenamento mais antigo em cada estação de reserva pode ser gravado e depois de o armazenamento mais antigo de cada estação de reserva ser emitido então o carregamento pode ser emitido um ciclo mais tarde.
Dirigindo-se agora à FIG 7, uma modalidade de um método para ajustar um indicador de força de predição de dependência carregamento-armazenamento é mostrada. Para propósito de discussão, as etapas nessa modalidade são mostradas em ordem sequencial. Deve ser notado que, em várias modalidades do método descrito abaixo, um ou mais dos elementos descritos podem ser realizados concomitantemente em ordem diferente daquela mostrada ou omitidos inteiramente. Outros elementos adicionais também podem ser realizados, como desejado.
Um carregamento com dependência pode ser emitido de uma estação de reserva (bloco 140). O carregamento pode ter sua emissão atrasada até depois da emissão do correspondente armazenamento do par de carregamento-armazenamento. O correspondente armazenamento pode ser emitido a partir da mesma estação de reserva ou de uma estação de reserva diferente. Depois de o carregamento ter sido emitido da estação de reserva e executado, pode se determinar de onde os dados do carregamento são obtidos (bloco 142).
Se os dados de carregamento estiverem em uma fila de carregamento (bloco condicional 144), então a predição de dependência para esse particular par de carregamento-armazenamento pode ser considerado boa, e o contador da correspondente entrada no preditor de dependência de carregamento-armazenamento pode ser incrementado (bloco 146). Se houver uma falta na fila de armazenamento para os dados de carregamento (bloco condicional 144), então uma dependência no armazenamento não pode ser garantida para o carregamento (i.e. a predição de dependência deixa de ser válida) e o contador da correspondente entrada no preditor de dependência de carregamento-armazenamento pode ser decrementado (bloco 148). Esse método pode ser realizado em paralelo para uma pluralidade de diferentes carregamentos com dependências.
Dirigindo-se agora à FIG 8, uma modalidade de um método para substituir entradas em uma tabela de preditor de dependência de carregamento-armazenamento é mostrada. Para propósito de discussão, as etapas nessa modalidade são mostradas em ordem sequencial. Deve ser notado que, em várias modalidades do método descrito abaixo, um ou mais dos e-lementos descritos podem ser executados concomitantemente em uma ordem diferente daquela mostrada, ou omitidos inteiramente. Outros elementos também podem ser realizados, como desejado.
Um apontador pode apontar um grupo de entradas adjacentes na tabela de preditor de dependência de carregamento-armazenamento e os valores de contador do grupo de entradas adjacentes podem ser analisados (bloco 160). Em uma modalidade, o grupo pode incluir quatro entradas. Em outras modalidades, o grupo pode incluir outros números de entradas. Então, a entrada com o valor de contador mais baixo pode ser selecionado (bloco 162). Se mais que uma entrada tiver o valor de contador mais baixo, então o apontador pode selecionar randomicamente qualquer entrada, ou diferenciar as entradas com valor de contador mais baixo usando outro valor ou medida.
Se uma nova entrada precisa ser alocada nesse ponto para um par de carregamento-armazenamento recém treinado com uma dependência (bloco 164), então a entrada selecionada com o valor de contador mais baixo no grupo pode ser descartado e a nova entrada alocada em seu lugar (bloco 166). Deve ser notado que um novo par de carregamento-armazenamento pode ser alocado, em resposta a um redirecionamento, e o descarte sendo sinalizado, e que o redirecionamento pode ocorrer em qualquer ponto. Por conseguinte, o bloco condicional 164 pode ser localizado em outros locais no fluxograma da FIG 8. Depois de a nova entrada ser alocada, o apontador passa para o próximo grupo de entradas (bloco 172). Se uma nova entrada não precisar ser alocada nesse instante (bloco condicional 164), então pode se determinar se o valor de contador mais baixo se encontra em zero (bloco condicional 168).
Se o valor de contador for zero (bloco condicional 168), então o apontador pode se manter em sua posição corrente e aguardar que a entrada seja alocada (bloco 170). Se o valor de contador mais baixo não for zero (bloco condicional 168) então o apontador pode se mover para o próximo grupo de entradas no preditor (bloco 172). Em uma modalidade, o apontador pode aguardar para se mover para o próximo grupo de entradas até o carregamento ou armazenamento acessar o preditor de dependência de car-regamento-armazenamento. Em outra modalidade, o apontador pode se mover para o próximo grupo de entradas no próximo ciclo de relógio. Depois do bloco 172, o método pode voltar para o bloco 160, para analisar as entradas no grupo. O método ilustrado na FIG 8 é uma implementação possível de uma política de substituição, e, em outras modalidades, outras políticas de substituição (por exemplo, usadas menos recentemente) podem ser usadas.
Referindo-se a seguir à FIG 9, um diagrama de blocos de uma modalidade de um subsistema 180 é mostrado. Como mostrado, o sistema 180 pode representar um chip, circuitagem, componentes, etc. de um computador de mesa 190, Notebook 200, computador tablet 210, celular 220, ou similares. Na modalidade ilustrada, o sistema 180 inclui pelo menos um caso de IC 10 (da FIG 1) acoplado a uma memória externa 182. O IC 10 é acoplado a um ou mais periféricos 184 e memória externa 182. Uma fonte de energia 186 também é provida para suprir voltagem ao IC 10, assim como uma ou mais voltagens de alimentação à memória 182 e/ou periféricos 184. Em várias modalidades, a fonte 186 é uma bateria (i.e. uma bateria recarregável em um telefone inteligente (smartphone), notebook, ou computador tablet). Em algumas modalidades, mais que um tipo de IC10 pode ser incluído (e também mais que uma memória externa 182). A memória 182 pode ser qualquer tipo de memória, tal como memória de acesso randômico dinâmico (DRAM), DRAM síncrono (SDRAM), SDRAM de taxa de dados dupla (DDR, DDR2, DDR3, etc.) (incluindo versões móveis de SDRAMs, tal como mDDR3, etc. e/ou versões de baixa potência de SDRAMs tal como LPDDR2 etc.), DRAM Rambus (RDRAM) RAM estático (SRAM) etc.. Um ou mais dispositivos de memória podem ser acoplados a uma placa de circuito para formar módulos de memória, tal como módulos de memória lineares simples (SIMMs), módulos de memória lineares dual (DIMMs) etc.. Alternativamente, os dispositivos podem ser montados com IC 88 na modalidade chip-em-chip, modalidade pa-cote-em-pacote, ou modalidade de módulo multi-chip.
Os periféricos 184 podem incluir qualquer circuitagem desejada dependendo do tipo do sistema 180. Por exemplo, em uma modalidade, periféricos 184 podem incluir dispositivos para vários tipos de comunicação sem-fio, tal como wi-fi, Bluetooh, celular, sistema de posicionamento global GPS, etc.. Os periféricos 184 também podem incluir um armazenamento adicional incluindo memória RAM, memória de estado sólido, ou memória em disco. Os periféricos 184 podem incluir dispositivos de interface, tal como tela de vídeo, incluindo telas de vídeo sensível ao toque ou telas multi-toque, teclados, ou outros dispositivos de entrada, microfones, falantes, etc..
Referindo-se agora à FIG 10, uma modalidade de um diagrama de blocos de uma mídia legível por computador 230 incluindo uma ou mais estruturas de dados representativas de circuitagem incluída em IC 10 (da FIG 1) é mostrada. Falando de modo geral, a mídia legível por computador 230 pode incluir qualquer mídia de armazenamento não transitória, tal como mídia magnética e ótica, por exemplo, Disco CD-ROM ou DVD-ROM, mídia de memória volátil ou não volátil, tal como RAM (por exemplo, SDRAM, RDRAM, SRAM, etc.) ROM, etc., assim como mídia acessível via mídia ou sinais de transmissão, tais como sinais elétricos, eletro-magnéticos ou digitais, via mídia de comunicação, tal como uma rede e/ou uplink sem-fio.
Geralmente, a(s) estrutura(s) de dados da circuitagem na mídia legível por computador 230 pode(m) ser líquida(s) por um programa e usa-da(s) diretamente ou indiretamente para produzir um hardware compreendendo a circuitagem. Por exemplo, a(s) estrutura(s) de dados pode(m) incluir uma ou mais descrições de nível de comportamento ou descrições de nível de transferência de dados (RTL) da funcionalidade de hardware em uma linguagem de projeto de alto nível (HDL), tal como Verilog ou VHDL. A descrição (ou descrições) pode (ou podem) ser lida(s) por uma ferramenta de síntese, que sintetiza a descrição de modo a produzir uma ou mais listas de rede (netlist), compreendendo listas de portas a partir de uma biblioteca de síntese. As listas de rede compreendem um conjunto de portas que também representam a funcionalidade do hardware compreendendo a circuitagem. A(s) lista(s) de rede então pode(m) ser colocada(s) e enviada(s) para produzir um ou mais conjuntos de dados, descrevendo as formas geométricas a serem aplicadas às máscaras. As máscaras, então, podem ser usadas em várias etapas de fabricação de semicondutor para fabricar um circuito de semicondutor que corresponda à circuitagem. Alternativamente, a(s) estrutura(s) de dados na mídia legível por computador 230, então, po-de(m) ser a(s) lista(s) de rede (com ou sem a biblioteca de síntese) ou conjunto^) de dados, como desejado. Em ainda outra alternativa, as estruturas de dados podem compreender o resultado de um programa esquemático ou lista(s) de rede ou conjunto(s) de dados derivados do mesmo.
Conquanto uma mídia legível por computador 230 inclua representação de IC 10, outras modalidades podem incluir representação de qualquer porção ou combinação de porções de IC10 (por exemplo,, preditor LSD 37, LSU-46).
Deve se enfatizar que as modalidades acima descritas são apenas exemplos não limitantes de implementações. Numerosas variações e modificações serão aparentes àqueles versados na técnica, uma vez a especificação acima tendo sido inteiramente apreciada. Pretende-se que as reivindicações a seguir sejam interpretadas englobando todas tais variações e modificações.
Claims (20)
1. Preditor de dependência de carregamento-armazenamento configurado para: predizer operações de carregamento que são dependentes de operações de armazenamento mais antigas; e estabelecer uma dependência para um dado par de carregamento-armazenamento, se a força correspondente de indicador de previsão estiver acima de um limite.
2. Preditor de dependência de carregamento-armazenamento, como declarado na reivindicação 1, em que o preditor de dependência de carregamento-armazenamento compreende uma tabela com entradas que correspondem a pares de carregamento-armazenamento que provocaram uma violação de ordenamento anterior, em que cada entrada na tabela compreende uma força do indicador de predição.
3. Preditor de dependência de carregamento-armazenamento, de acordo com a reivindicação 2, em que cada contador é usado para classificar a correspondente entrada na tabela para substituição, quando um novo par de carregamento-armazenamento é detectado.
4. Preditor de dependência de carregamento-armazenamento, de acordo com a reivindicação 2, em que, em resposta à detecção de um envio de uma dada operação de armazenamento, o preditor de dependência de carregamento-armazenamento é configurado para pesquisar na tabela uma dada entrada correspondente referente à dada operação de armazenamento e arme a entrada correspondente, se a entrada correspondente for encontrada.
5. Preditor de dependência de carregamento-armazenamento, de acordo com a reivindicação 2, em que, em resposta à detecção de um envio de uma dada operação de armazenamento, o preditor de dependência de carregamento-armazenamento é configurado para pesquisar na tabela uma dada operação de armazenamento, e arme a entrada correspondente se a entrada correspondente for encontrada e um valor de contador da entrada correspondente estiver acima de um limite.
6. Preditor de dependência de carregamento-armazenamento, de acordo com a reivindicação 5, em que a dada operação de armazenamento é identificada usando pelo meros uma porção de um contador de programa (PV).
7. Preditor de dependência de carregamento-armazenamento, de acordo com a reivindicação 4, em que, em resposta à detecção do envio de uma dada operação de carregamento, o preditor de dependência de carregamento-armazenamento é configurado para pesquisar na tabela uma dada operação de carregamento e se uma entrada correspondente armada for encontrada e um valor de contador da entrada correspondente armada estiver acima de um limite, então a dada operação de carregamento é enviada com uma dependência em que o envio da dada operação de carregamento com dependência provoca a emissão da correspondente operação de armazenamento antes da dada operação de carregamento.
8. Processador, compreendendo: - um buffer de reordenamento (ROB); - uma ou mais estações de reserva; e - um preditor de dependência de carregamento-armazenamento, em que o preditor de dependência de carregamento-armazenamento é configurado para: predizer quando a operação de carregamento depende de uma operação de armazenamento mais antiga; designar a força da predição para cada par de carregamento-armazenamento com uma dependência predita; e aplicar uma ordem de execução para um dado par de carregamento-armazenamento em resposta à detecção que a força associada de predição se encontra acima de um limite.
9. Processador, de acordo com a reivindicação 8, em que o preditor de dependência de carregamento-armazenamento é adicionalmente configurado para manter uma tabela com entradas para cada par de carregamento-armazenamento predito, em que cada entrada compreende um i-dentificador de carregamento (ID), um ID de armazenamento, um bit arma- do, e um contador, em que o contador é usado para indicar uma força de predição de um respectivo par de carregamento-armazenamento.
10. Processador, de acordo com a reivindicação 9, em que a entrada adicionalmente compreende um número de entrada de armazenamento ROB (RNUM).
11. Processador, de acordo com a reivindicação 10, em que o preditor de dependência de carregamento-armazenamento é adicionalmente configurado para: - pesquisar na tabela uma correspondência para uma dada operação de carregamento em resposta à detecção de uma dada operação de carregamento; - ajustar o bit armado de uma entrada correspondente da dada operação de armazenamento em resposta ao encontro de uma correspondência, e determinar que o correspondente contador está acima de um limite; e - armazenar o RNUM da dada operação de armazenamento na entrada correspondente.
12. Processador, de acordo com a reivindicação 11, em que o preditor de dependência de carregamento-armazenamento é adicionalmente configurado para: - pesquisar na tabela uma correspondência para uma dada operação de carregamento em resposta à detecção de uma dada operação de carregamento; - estabelecer uma dependência da dada operação de carregamento para a dada operação de armazenamento em resposta ao encontro de uma correspondência, e determinar que um correspondente contador se encontra acima de um limite.
13. Processador, de acordo com a reivindicação 12, em que estabelecer dependência da dada operação de carregamento na dada operação de armazenamento compreende enviar a dada operação de carregamento a uma dada estação de reserva com indicador de dependência e RNUM da dada operação de armazenamento.
14. Processador, de acordo com a reivindicação 9, em que o preditor de dependência de carregamento-armazenamento é adicionalmente configurado para substituir entradas da tabela com base em valores do contador.
15. Método compreendendo: - enviar uma operação de armazenamento; - pesquisar um preditor de dependência de carregamento-armazenamento para a operação de armazenamento; e - armar uma entrada do preditor de dependência de carregamento-armazenamento em resposta a encontrar a entrada que corresponde à operação de armazenamento e determinar que a força de indicador de pre-dição da entrada se encontra acima de um limite.
16. Método de acordo com a reivindicação 15, adicionalmente compreendendo: - enviar uma operação de carregamento; - pesquisar o preditor de dependência de carregamento-armazenamento para a operação de carregamento; e - estabelecer uma dependência para a operação de carregamento em resposta ao encontro de múltiplas entradas armadas, que correspondem à operação de carregamento.
17. Método, de acordo com a reivindicação 15, adicionalmente compreendendo estabelecer uma dependência de multicorrespondência para a operação de carregamento em resposta ao encontro de múltiplas entradas armadas.
18. Método, de acordo com a reivindicação 16, adicionalmente compreendendo: - emitir a operação de carregamento a partir de estação de reserva, depois da operação de armazenamento emitir, em resposta ao estabelecimento de uma dependência para a operação de carregamento; - determinar se o dado para a operação de carregamento é recuperado a partir da fila de armazenamento; - incrementar a força do indicador de predição para a entrada em resposta a determinação que o dado para a operação de recuperação foi recuperado da fila de armazenamento; e - decrementar a força do indicador de predição para a entrada em resposta à determinação que o dado para a operação de carregamento foi recuperado de um cachê.
19. Método, de acordo com a reivindicação 17, adicionalmente compreendendo identificar a operação de armazenamento mais antiga em cada estação de reserva, em resposta ao estabelecimento de uma dependência multi-correspondência para operação de carregamento.
20. Método, de acordo com a reivindicação 19, adicionalmente compreendendo aguardar até o armazenamento mais antigo em cada estação de reserva ser emitido antes da operação de carregamento, em resposta ao estabelecimento de uma dependência multicorrespondência para a operação de carregamento.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/464,647 | 2012-05-04 | ||
US13/464,647 US9128725B2 (en) | 2012-05-04 | 2012-05-04 | Load-store dependency predictor content management |
Publications (2)
Publication Number | Publication Date |
---|---|
BR102013010877A2 true BR102013010877A2 (pt) | 2015-06-30 |
BR102013010877B1 BR102013010877B1 (pt) | 2021-07-06 |
Family
ID=48190741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR102013010877-4A BR102013010877B1 (pt) | 2012-05-04 | 2013-05-02 | processador e método de gerenciamento de conteúdo de preditor de dependência de carregamento-armazenamento |
Country Status (8)
Country | Link |
---|---|
US (1) | US9128725B2 (pt) |
EP (1) | EP2660716B1 (pt) |
JP (2) | JP2013239166A (pt) |
KR (2) | KR20130124221A (pt) |
CN (1) | CN103455309B (pt) |
BR (1) | BR102013010877B1 (pt) |
TW (2) | TWI529617B (pt) |
WO (1) | WO2013165754A1 (pt) |
Families Citing this family (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013100783A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Method and system for control signalling in a data path module |
US9128725B2 (en) * | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
US8880829B2 (en) * | 2012-11-19 | 2014-11-04 | Qualcomm Innovation Center, Inc. | Method and apparatus for efficient, low-latency, streaming memory copies |
US10467010B2 (en) * | 2013-03-15 | 2019-11-05 | Intel Corporation | Method and apparatus for nearest potential store tagging |
US9116817B2 (en) * | 2013-05-09 | 2015-08-25 | Apple Inc. | Pointer chasing prediction |
US9619750B2 (en) | 2013-06-29 | 2017-04-11 | Intel Corporation | Method and apparatus for store dependence prediction |
US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
US9286073B2 (en) * | 2014-01-07 | 2016-03-15 | Samsung Electronics Co., Ltd. | Read-after-write hazard predictor employing confidence and sampling |
US11093401B2 (en) * | 2014-03-11 | 2021-08-17 | Ampere Computing Llc | Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
US10209995B2 (en) * | 2014-10-24 | 2019-02-19 | International Business Machines Corporation | Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
WO2016097790A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor |
US9804845B2 (en) * | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
WO2016097800A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
WO2016097786A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on page walks in out-of-order processor |
JP6286065B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 |
US10089112B2 (en) * | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10146540B2 (en) * | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
WO2016097797A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
WO2016097802A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on long load cycles in an out-order processor |
EP3049956B1 (en) * | 2014-12-14 | 2018-10-10 | VIA Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
WO2016097815A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
WO2016097792A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude load replays dependent on write combining memory space access in out-of-order processor |
US10133579B2 (en) | 2014-12-14 | 2018-11-20 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
KR101820221B1 (ko) | 2014-12-14 | 2018-02-28 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 프로그래머블 로드 리플레이 억제 메커니즘 |
US10108430B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
US10175984B2 (en) * | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
WO2016097814A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude shared ram-dependent load replays in out-of-order processor |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
WO2016097811A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on fuse array access in out-of-order processor |
US10635446B2 (en) * | 2015-09-24 | 2020-04-28 | Qualcomm Incorporated | Reconfiguring execution pipelines of out-of-order (OOO) computer processors based on phase training and prediction |
CN105117202B (zh) * | 2015-09-25 | 2018-11-27 | 上海兆芯集成电路有限公司 | 具有融合保留站结构的微处理器 |
US9606805B1 (en) | 2015-10-19 | 2017-03-28 | International Business Machines Corporation | Accuracy of operand store compare prediction using confidence counter |
US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
US20170286114A1 (en) * | 2016-04-02 | 2017-10-05 | Intel Corporation | Processors, methods, and systems to allocate load and store buffers based on instruction type |
US11106467B2 (en) | 2016-04-28 | 2021-08-31 | Microsoft Technology Licensing, Llc | Incremental scheduler for out-of-order block ISA processors |
US10740107B2 (en) * | 2016-06-01 | 2020-08-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing load-hit-store handling |
US10067762B2 (en) * | 2016-07-01 | 2018-09-04 | Intel Corporation | Apparatuses, methods, and systems for memory disambiguation |
WO2018034682A1 (en) | 2016-08-13 | 2018-02-22 | Intel Corporation | Apparatuses, methods, and systems for neural networks |
US11048506B2 (en) * | 2016-08-19 | 2021-06-29 | Advanced Micro Devices, Inc. | Tracking stores and loads by bypassing load store units |
CN106406822B (zh) * | 2016-09-18 | 2019-02-15 | 上海兆芯集成电路有限公司 | 具有改进的别名队列和存储冲突检测的处理器 |
US10684859B2 (en) * | 2016-09-19 | 2020-06-16 | Qualcomm Incorporated | Providing memory dependence prediction in block-atomic dataflow architectures |
US20180081806A1 (en) * | 2016-09-22 | 2018-03-22 | Qualcomm Incorporated | Memory violation prediction |
US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
CA3069363A1 (en) | 2017-07-11 | 2019-01-17 | Pfizer Inc. | Immunogenic compositions comprising cea muc1 and tert |
US10725782B2 (en) * | 2017-09-12 | 2020-07-28 | Qualcomm Incorporated | Providing variable interpretation of usefulness indicators for memory tables in processor-based systems |
US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
US10380063B2 (en) | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
US10387311B2 (en) | 2018-01-11 | 2019-08-20 | International Business Machines Corporation | Cache directory that determines current state of a translation in a microprocessor core cache |
US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
CN108920191B (zh) * | 2018-06-05 | 2020-11-20 | 上海兆芯集成电路有限公司 | 处理器电路及其操作方法 |
US11099846B2 (en) * | 2018-06-20 | 2021-08-24 | Advanced Micro Devices, Inc. | Apparatus and method for resynchronization prediction with variable upgrade and downgrade capability |
US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
US11113055B2 (en) | 2019-03-19 | 2021-09-07 | International Business Machines Corporation | Store instruction to store instruction dependency |
US11243774B2 (en) | 2019-03-20 | 2022-02-08 | International Business Machines Corporation | Dynamic selection of OSC hazard avoidance mechanism |
US10929142B2 (en) | 2019-03-20 | 2021-02-23 | International Business Machines Corporation | Making precise operand-store-compare predictions to avoid false dependencies |
US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
US11392410B2 (en) * | 2020-04-08 | 2022-07-19 | Microsoft Technology Licensing, Llc | Operand pool instruction reservation clustering in a scheduler circuit in a processor |
US11474821B1 (en) | 2021-05-12 | 2022-10-18 | International Business Machines Corporation | Processor dependency-aware instruction execution |
KR20230063791A (ko) * | 2021-11-02 | 2023-05-09 | 리벨리온 주식회사 | 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법 |
Family Cites Families (94)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4594660A (en) | 1982-10-13 | 1986-06-10 | Honeywell Information Systems Inc. | Collector |
US4521851A (en) | 1982-10-13 | 1985-06-04 | Honeywell Information Systems Inc. | Central processor |
US4860199A (en) | 1987-07-31 | 1989-08-22 | Prime Computer, Inc. | Hashing indexer for branch cache |
US5487156A (en) | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
US5276825A (en) | 1991-03-12 | 1994-01-04 | Chips & Technologies, Inc. | Apparatus for quickly determining actual jump addresses by assuming each instruction of a plurality of fetched instructions is a jump instruction |
US5488729A (en) | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
US5440752A (en) | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
JPH0820949B2 (ja) | 1991-11-26 | 1996-03-04 | 松下電器産業株式会社 | 情報処理装置 |
DE4237417C2 (de) | 1992-03-25 | 1997-01-30 | Hewlett Packard Co | Datenverarbeitungssystem |
JP3199465B2 (ja) | 1992-07-22 | 2001-08-20 | 株式会社日立製作所 | 情報処理装置 |
WO1994008287A1 (en) | 1992-09-29 | 1994-04-14 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5619662A (en) | 1992-11-12 | 1997-04-08 | Digital Equipment Corporation | Memory reference tagging |
US5467473A (en) | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
GB2281442B (en) | 1993-08-24 | 1997-06-11 | News Distribution Limited | Manufacture of wound capacitors |
US5471598A (en) | 1993-10-18 | 1995-11-28 | Cyrix Corporation | Data dependency detection and handling in a microprocessor with write buffer |
DE69429612T2 (de) | 1993-10-18 | 2002-09-12 | Via Cyrix Inc | Schreibpuffer für einen superskalaren Mikroprozessor mit Pipeline |
US5878245A (en) | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
DE69429061T2 (de) | 1993-10-29 | 2002-07-18 | Advanced Micro Devices Inc | Superskalarmikroprozessoren |
US5588126A (en) | 1993-12-30 | 1996-12-24 | Intel Corporation | Methods and apparatus for fordwarding buffered store data on an out-of-order execution computer system |
US5465336A (en) | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
US6216200B1 (en) | 1994-10-14 | 2001-04-10 | Mips Technologies, Inc. | Address queue |
US5666506A (en) | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5625789A (en) | 1994-10-24 | 1997-04-29 | International Business Machines Corporation | Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle |
US5784586A (en) | 1995-02-14 | 1998-07-21 | Fujitsu Limited | Addressing method for executing load instructions out of order with respect to store instructions |
US5887152A (en) | 1995-04-12 | 1999-03-23 | Advanced Micro Devices, Inc. | Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions |
US5802588A (en) | 1995-04-12 | 1998-09-01 | Advanced Micro Devices, Inc. | Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer |
US5832297A (en) | 1995-04-12 | 1998-11-03 | Advanced Micro Devices, Inc. | Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations |
US5625835A (en) | 1995-05-10 | 1997-04-29 | International Business Machines Corporation | Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor |
US5761712A (en) | 1995-06-07 | 1998-06-02 | Advanced Micro Devices | Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array |
US5717883A (en) | 1995-06-28 | 1998-02-10 | Digital Equipment Corporation | Method and apparatus for parallel execution of computer programs using information providing for reconstruction of a logical sequential program |
US5652859A (en) | 1995-08-17 | 1997-07-29 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues |
US5710902A (en) | 1995-09-06 | 1998-01-20 | Intel Corporation | Instruction dependency chain indentifier |
US5751983A (en) | 1995-10-03 | 1998-05-12 | Abramson; Jeffrey M. | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations |
US5835747A (en) | 1996-01-26 | 1998-11-10 | Advanced Micro Devices, Inc. | Hierarchical scan logic for out-of-order load/store execution control |
US5799165A (en) | 1996-01-26 | 1998-08-25 | Advanced Micro Devices, Inc. | Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay |
US5754812A (en) | 1995-10-06 | 1998-05-19 | Advanced Micro Devices, Inc. | Out-of-order load/store execution control |
US5781790A (en) | 1995-12-29 | 1998-07-14 | Intel Corporation | Method and apparatus for performing floating point to integer transfers and vice versa |
US5822559A (en) | 1996-01-02 | 1998-10-13 | Advanced Micro Devices, Inc. | Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions |
US5742791A (en) | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
US5748978A (en) | 1996-05-17 | 1998-05-05 | Advanced Micro Devices, Inc. | Byte queue divided into multiple subqueues for optimizing instruction selection logic |
US5781752A (en) | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
US6016540A (en) | 1997-01-08 | 2000-01-18 | Intel Corporation | Method and apparatus for scheduling instructions in waves |
US5923862A (en) | 1997-01-28 | 1999-07-13 | Samsung Electronics Co., Ltd. | Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions |
US5768555A (en) | 1997-02-20 | 1998-06-16 | Advanced Micro Devices, Inc. | Reorder buffer employing last in buffer and last in line bits |
US5996068A (en) | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US6021485A (en) | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US5850533A (en) | 1997-06-25 | 1998-12-15 | Sun Microsystems, Inc. | Method for enforcing true dependencies in an out-of-order processor |
US6108770A (en) * | 1998-06-24 | 2000-08-22 | Digital Equipment Corporation | Method and apparatus for predicting memory dependence using store sets |
US6212623B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Universal dependency vector/queue entry |
US6122727A (en) | 1998-08-24 | 2000-09-19 | Advanced Micro Devices, Inc. | Symmetrical instructions queue for high clock frequency scheduling |
US6212622B1 (en) | 1998-08-24 | 2001-04-03 | Advanced Micro Devices, Inc. | Mechanism for load block on store address generation |
US6141747A (en) | 1998-09-22 | 2000-10-31 | Advanced Micro Devices, Inc. | System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word |
US6658554B1 (en) | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
US6393536B1 (en) | 1999-05-18 | 2002-05-21 | Advanced Micro Devices, Inc. | Load/store unit employing last-in-buffer indication for rapid load-hit-store |
US6266744B1 (en) | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6728867B1 (en) | 1999-05-21 | 2004-04-27 | Intel Corporation | Method for comparing returned first load data at memory address regardless of conflicting with first load and any instruction executed between first load and check-point |
US6625723B1 (en) | 1999-07-07 | 2003-09-23 | Intel Corporation | Unified renaming scheme for load and store instructions |
US6481251B1 (en) | 1999-10-25 | 2002-11-19 | Advanced Micro Devices, Inc. | Store queue number assignment and tracking |
US6523109B1 (en) | 1999-10-25 | 2003-02-18 | Advanced Micro Devices, Inc. | Store queue multimatch detection |
US6658559B1 (en) | 1999-12-31 | 2003-12-02 | Intel Corporation | Method and apparatus for advancing load operations |
US6542984B1 (en) | 2000-01-03 | 2003-04-01 | Advanced Micro Devices, Inc. | Scheduler capable of issuing and reissuing dependency chains |
US6651161B1 (en) | 2000-01-03 | 2003-11-18 | Advanced Micro Devices, Inc. | Store load forward predictor untraining |
US6502185B1 (en) | 2000-01-03 | 2002-12-31 | Advanced Micro Devices, Inc. | Pipeline elements which verify predecode information |
US6694424B1 (en) * | 2000-01-03 | 2004-02-17 | Advanced Micro Devices, Inc. | Store load forward predictor training |
US6622237B1 (en) | 2000-01-03 | 2003-09-16 | Advanced Micro Devices, Inc. | Store to load forward predictor training using delta tag |
US6678807B2 (en) | 2000-12-21 | 2004-01-13 | Intel Corporation | System and method for multiple store buffer forwarding in a system with a restrictive memory model |
US6571318B1 (en) | 2001-03-02 | 2003-05-27 | Advanced Micro Devices, Inc. | Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism |
JP3729087B2 (ja) * | 2001-05-23 | 2005-12-21 | 日本電気株式会社 | マルチプロセッサシステム、データ依存投機実行制御装置およびその方法 |
US20030065909A1 (en) | 2001-09-28 | 2003-04-03 | Jourdan Stephan J. | Deferral of dependent loads until after execution of colliding stores |
US20030126409A1 (en) | 2001-12-28 | 2003-07-03 | Toni Juan | Store sets poison propagation |
US6918030B2 (en) | 2002-01-10 | 2005-07-12 | International Business Machines Corporation | Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures |
US7062617B2 (en) | 2002-03-26 | 2006-06-13 | Intel Corporation | Method and apparatus for satisfying load operations |
US7181598B2 (en) | 2002-05-17 | 2007-02-20 | Intel Corporation | Prediction of load-store dependencies in a processing agent |
US7590830B2 (en) * | 2004-05-28 | 2009-09-15 | Sun Microsystems, Inc. | Method and structure for concurrent branch prediction in a processor |
US7415597B2 (en) * | 2004-09-08 | 2008-08-19 | Advanced Micro Devices, Inc. | Processor with dependence mechanism to predict whether a load is dependent on older store |
US7506105B2 (en) | 2005-05-02 | 2009-03-17 | Freescale Semiconductor, Inc. | Prefetching using hashed program counter |
US7376817B2 (en) | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
US7590825B2 (en) | 2006-03-07 | 2009-09-15 | Intel Corporation | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts |
JP2007293814A (ja) * | 2006-03-28 | 2007-11-08 | Handotai Rikougaku Kenkyu Center:Kk | プロセッサ装置とその処理方法 |
US7461238B2 (en) | 2006-06-07 | 2008-12-02 | International Business Machines Corporation | Simple load and store disambiguation and scheduling at predecode |
GB2445965B (en) * | 2007-01-26 | 2011-05-04 | Advanced Risc Mach Ltd | Entry replacement within a data store |
US20080209190A1 (en) | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Parallel prediction of multiple branches |
US8200992B2 (en) | 2007-09-24 | 2012-06-12 | Cognitive Electronics, Inc. | Parallel processing computer systems with reduced power consumption and methods for providing the same |
US8151084B2 (en) | 2008-01-23 | 2012-04-03 | Oracle America, Inc. | Using address and non-address information for improved index generation for cache memories |
US8566565B2 (en) | 2008-07-10 | 2013-10-22 | Via Technologies, Inc. | Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications |
US8285947B2 (en) | 2009-02-06 | 2012-10-09 | Apple Inc. | Store hit load predictor |
US7975132B2 (en) | 2009-03-04 | 2011-07-05 | Via Technologies, Inc. | Apparatus and method for fast correct resolution of call and return instructions using multiple call/return stacks in the presence of speculative conditional instruction execution in a pipelined microprocessor |
US8099566B2 (en) | 2009-05-15 | 2012-01-17 | Oracle America, Inc. | Load/store ordering in a threaded out-of-order processor |
US20100325395A1 (en) | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
US8768313B2 (en) | 2009-08-17 | 2014-07-01 | Digimarc Corporation | Methods and systems for image or audio recognition processing |
US8635428B2 (en) | 2009-12-09 | 2014-01-21 | Oracle America, Inc. | Preventing duplicate entries in a non-blocking TLB structure that supports multiple page sizes |
US8521992B2 (en) | 2009-12-22 | 2013-08-27 | International Business Machines Corporation | Predicting and avoiding operand-store-compare hazards in out-of-order microprocessors |
US9128725B2 (en) * | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
-
2012
- 2012-05-04 US US13/464,647 patent/US9128725B2/en active Active
-
2013
- 2013-04-23 WO PCT/US2013/037809 patent/WO2013165754A1/en active Application Filing
- 2013-04-25 EP EP13165284.4A patent/EP2660716B1/en active Active
- 2013-05-02 BR BR102013010877-4A patent/BR102013010877B1/pt active IP Right Grant
- 2013-05-02 JP JP2013096795A patent/JP2013239166A/ja active Pending
- 2013-05-03 CN CN201310323392.0A patent/CN103455309B/zh active Active
- 2013-05-03 KR KR1020130049975A patent/KR20130124221A/ko not_active Application Discontinuation
- 2013-05-03 TW TW104113982A patent/TWI529617B/zh active
- 2013-05-03 TW TW102115961A patent/TW201403463A/zh unknown
-
2015
- 2015-06-09 KR KR1020150081361A patent/KR101555166B1/ko active IP Right Grant
- 2015-08-17 JP JP2015160285A patent/JP5965041B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
TW201403463A (zh) | 2014-01-16 |
US9128725B2 (en) | 2015-09-08 |
EP2660716B1 (en) | 2016-11-02 |
CN103455309A (zh) | 2013-12-18 |
US20130298127A1 (en) | 2013-11-07 |
JP5965041B2 (ja) | 2016-08-03 |
TWI529617B (zh) | 2016-04-11 |
CN103455309B (zh) | 2016-12-28 |
JP2013239166A (ja) | 2013-11-28 |
BR102013010877B1 (pt) | 2021-07-06 |
JP2015232902A (ja) | 2015-12-24 |
EP2660716A1 (en) | 2013-11-06 |
KR101555166B1 (ko) | 2015-09-22 |
KR20130124221A (ko) | 2013-11-13 |
WO2013165754A1 (en) | 2013-11-07 |
KR20150075067A (ko) | 2015-07-02 |
TW201531939A (zh) | 2015-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR102013010877A2 (pt) | Gerenciamento de conteúdo de preditor de dependência de carregamento-armazenamento | |
US9710268B2 (en) | Reducing latency for pointer chasing loads | |
TWI552069B (zh) | 載入-儲存相依性預測器、用於在載入-儲存相依性預測器中處理操作的處理器與方法 | |
US9582276B2 (en) | Processor and method for implementing barrier operation using speculative and architectural color values | |
JP5799465B2 (ja) | ループバッファ学習 | |
US9448936B2 (en) | Concurrent store and load operations | |
US10387324B2 (en) | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution | |
KR101496009B1 (ko) | 루프 버퍼 패킹 | |
US10437595B1 (en) | Load/store dependency predictor optimization for replayed loads | |
BR102013014996A2 (pt) | Carregamento de ciclo zero | |
US8856447B2 (en) | Converting memory accesses near barriers into prefetches | |
BR102012024721A2 (pt) | Regulação de emissão de instruções de processador | |
US9292294B2 (en) | Detection of memory address aliasing and violations of data dependency relationships | |
BRPI0805218A2 (pt) | esquema de omissão de trava por hardware hìbrida de retirada prévia-posterior |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B03A | Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette] | ||
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B06A | Notification to applicant to reply to the report for non-patentability or inadequacy of the application [chapter 6.1 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 02/05/2013, OBSERVADAS AS CONDICOES LEGAIS. |