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 PDF

Info

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
Application number
BRBR102013010877-4A
Other languages
English (en)
Other versions
BR102013010877B1 (pt
Inventor
Stephan G Meier
John Mylius
Gerard R Williams Iii
Suparn Vats
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of BR102013010877A2 publication Critical patent/BR102013010877A2/pt
Publication of BR102013010877B1 publication Critical patent/BR102013010877B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative 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.
BR102013010877-4A 2012-05-04 2013-05-02 processador e método de gerenciamento de conteúdo de preditor de dependência de carregamento-armazenamento BR102013010877B1 (pt)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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.