BRPI0806865A2 - Equipamento e métodos para reduzir eliminações em uma hierarquia de cache multinível - Google Patents

Equipamento e métodos para reduzir eliminações em uma hierarquia de cache multinível Download PDF

Info

Publication number
BRPI0806865A2
BRPI0806865A2 BRPI0806865-8A BRPI0806865A BRPI0806865A2 BR PI0806865 A2 BRPI0806865 A2 BR PI0806865A2 BR PI0806865 A BRPI0806865 A BR PI0806865A BR PI0806865 A2 BRPI0806865 A2 BR PI0806865A2
Authority
BR
Brazil
Prior art keywords
cache
level
line
allocation
level cache
Prior art date
Application number
BRPI0806865-8A
Other languages
English (en)
Inventor
Thomas Philip Speier
James Norris Dieffenderfer
Thomas Andrew Sartorius
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0806865A2 publication Critical patent/BRPI0806865A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

"EQUIPAMENTO E MÉTODOS PARA REDUZIR ELIMINAÇÕES EM UMA HIERARQUIA DE CACHE MULTINÍVEL"
CAMPO DA INVENÇÃO
A presente revelação refere-se, em geral, ao 5 campo da memória cache e, mais especificamente, aos sistemas de memória com instrução, dados, e caches vitima(victim).
FUNDAMENTOS
Muitos produtos portáveis, tais como telefones celulares, computadores laptop, assistentes de dados pessoal (PDAs) ou similares, utilizam programas de execução do processador, tais como programas de multimídia e de comunicação. O sistema de processamento para tais produtos inclui um complexo de memória e de processador para o armazenamento de dados e de instruções. Uma memória principal de grande capacidade geralmente possui tempos lentos de acesso se comparados ao tempo de ciclo de um processador. Como conseqüência, o complexo de memória é convencionalmente organizado em uma hierarquia baseada na capacidade e desempenho das memórias cache, com a cache de maior desempenho e de menor capacidade localizada próxima ao computador. Por exemplo, uma cache de instrução de nível
1 e uma cache de dados de nível 1 deveriam geralmente ser anexadas diretamente ao processador. Simultaneamente, uma 25 cache unificada de nível 2 é conectada às caches de dados e de instrução de nivel I (LI) . Além disso, um memória de sistema está conectada à cache indefinida de nível 2 (L2). A cache de instrução de nível 1 geralmente opera na velocidade do processador e a cache unificada de nível 2 30 opera mais lentamente do que a cache de nível 1, mas possui um tempo de acesso mais veloz do que o da memória de sistema. As organizações de memória alternativas estão cheias, por exemplo, de hierarquias de memória que possuem uma cache de nível 3 em adição a uma cache Ll e L2. Outra organização de memória pode utilizar somente uma cache de nível 1 e uma memória de sistema.
5 Uma organização de memória pode ser composta de
uma hierarquia de caches que operam coma caches inclusivas, caches estritamente inclusivas, caches exclusivas, ou uma combinação desses tipos de cache. Por meio de definição aqui, quaisquer dois níveis s de cache que são exclusivos 10 um ao outro não podem conter a mesma linha de cache. Quaisquer dois níveis s de cache que são inclusivos uns dos outros podem conter a mesma linha de cache. Quaisquer dois níveis s de cache que são estritamente inclusivos uns dos outros pretendem que a maior cache, usualmente uma cache de 15 nível mais alto , deve conter todas as linhas que estão na cache menor, usualmente uma cache de nível mais baixo. Em três ou mais organizações de memória cache com muitos níveis, quaisquer dois ou mais níveis de cache s podem operar como um tipo de cache, tal como exclusivo, e o nível 20 de cache remanescente s pode operar como um dos tipos alternativos de cache, tal como inclusivo.
Uma cache de instrução é geralmente construída para fornecer suporte a uma pluralidade de instruções localizadas em um único endereço na cache de instrução. Uma 25 cache de dados é geralmente construída para fornecer suporte a uma pluralidade de unidades de dados localizada em um único endereço na cache de dados, onde uma unidade de dados pode ser uma quantidade variável de bytes dependendo do processador. Essa pluralidade de instruções ou unidades 30 de dados é chamada geralmente de linha de cache ou, simplesmente, linha. Por exemplo, um processador busca uma instrução ou uma unidade de dados de uma cache Ll e, se a instrução ou unidade de dados estiver presente na cache, ocorre uma "solicitação" e a instrução ou unidade de dados é fornecida ao processador. Se a instrução ou unidade de dados não estiver presente na cache LI, ocorre um "perda". Uma perda pode ocorrer em uma instrução ou em um acesso de unidade de dados em qualquer lugar em uma linha de cache. Quando uma perda ocorre, uma linha na cache é substituída por uma nova linha contendo a instrução perdida. Uma política de substituição é utilizada para determinar a linha de cache a ser substituída. Por exemplo, a seleção ou vitimização de uma linha de cache que foi menos usada representa uma política menos utilizada recentemente (LRU). A linha de cache selecionada para ser substituída é a linha de cache vítima.
Uma linha de cache pode também ter a ela associada uma quantidade de bits de status, tal como um bit válido e um bit modificado (dirty). O bit válido indica que as instruções ou dados residem na linha de cache. O bit modificado indica se ocorreu uma modificação na linha de cache. Em uma cache de reescrita, o bit modificado indica que quando uma linha de cache está para ser substituída, as modificações precisam ser reescritas para o próximo nível de memória mais alto na hierarquia do sistema de memória.
Uma cache vítima pode ser um buffer (armazenador) separado, conectado a uma cache, tal como uma cache de nível 1, ou integrado em um cache adjacente de nível mais alto . As linhas de cache vítimas podem ser alocadas na cache vítima sob a hipótese de que uma linha vítima pode ser necessária por relativamente pouco tempo depois de ser removida, e que o acesso da linha vítima, quando necessário, a partir de uma cache vítima, é mais rápido do que quando a linha vítima é acessada a partir de um nível mais alto da hierarquia de memória. Com uma cache vítima integrada em uma cache adjacente de nível mais alto ocorre uma eliminação quando uma linha é deslocada a partir da cache de nivel mais baixo e é alocada na cache de nível mais alto e, assim, armazenando em cache as vítimas de cache de nível mais baixo. A cache de nível mais baixo 5 envia todas as linhas deslocadas, tanto as modificadas como as não-modifiçadas, ao cache de nível mais alto. Em alguns casos, a linha vítima pode já existir na cache vítima e, reescrevendo as linhas já existentes, desperdiça-se energia e reduz-se a largura de banda para a cache vítima.
SUMÁRIO
A presente revelação reconhece que reduzir os requisitos de energia em um sistema de memória é importante para os aplicativos portáteis e, em geral, para reduzir a necessidade de energia nos sistemas de processamento. Para 15 tais fins, uma modalidade da invenção endereça um método de controle para reduzir a alocação das linhas de cache deslocadas. Uma linha é selecionada para ser deslocada em uma cache de nível mais baixo. A informação associada à linha selecionada é identificada, a qual indica que a linha 20 selecionada está presente em uma cache de nível mais alto. Uma alocação da linha selecionada na cache de nível mais alto é evitada baseada na informação identificada. Evitar uma alocação da linha selecionada economiza uma energia que poderia estar associada à alocação.
Uma outra modalidade da invenção endereça um
método para reduzir eliminações. Em resposta a uma perda em uma cache de nível X, a informação de alocação é salva na cache de nível X em um endereço de uma linha de cache associada à perda. A informação de alocação indica se a 30 linha de cache foi alocada em uma cache de nível X+l. Uma linha é selecionada para ser substituída na cache de nível X. A eliminação da linha selecionada a partir da cache de nível X para a cache de nível X+l é evitada em resposta à informação de alocação da linha selecionada indicando que a linha de cache foi alocada na cache de nível X+l.
Uma outra modalidade da invenção endereça um sistema de memória dotado de uma pluralidade de níveis de 5 cache. Uma cache de nível mais baixo é configurada para armazenar uma pluralidade de primeiras linhas de cache, cada uma com um bit de alocação. 0 bit de alocação associado a uma linha de cache dentro da pluralidade de primeiras linhas de cache indica se uma linha de cache
dentro da pluralidade de primeiras linhas de cache foi alocada em uma cache de nível mais alto. Um circuito de eliminação lógico é configurado para determinar se uma primeira linha de cache selecionada para o deslocamento a partir da pluralidade das primeiras linhas de cache é uma 15 linha de cachê que é redundante em relação a uma linha de cache na cache de nível mais alto com base no bit de alocação associado à primeira linha de cache selecionada. A eliminação da primeira linha de cache selecionada para a cache de nível mais alto é evitar em resposta ao bit de 20 alocação da primeira linha de cache selecionada.
Entende-se que outras modalidades da presente invenção serão prontamente evidentes àqueles versados na técnica a partir da descrição detalhada que segue, em que várias modalidades da invenção são mostradas e descritas a 25 título de ilustração. Como se perceberá, a invenção admite outras e diferentes modalidades e seus vários detalhes admitem modificação em vários outros aspectos, tudo sem se separar da presente invenção. Portanto, os desenhos e a descrição detalhada devem ser considerados como 30 ilustrativos por natureza, e não restritivos.
BREVE DESCRIÇÃO DOS DESENHOS
A Figura 1 ilustra um sistema de comunicação sem
fio; A Figura 2 é um diagrama de bloco funcional de um processador e de um complexo de memória exemplificativos em que as eliminações são reduzidas; e
A Figura 3 é um fluxograma que ilustra um 5 processo para a redução de eliminações.
DESCRIÇÃO DETALHADA
A descrição detalhada mostrada abaixo, em conexão com os desenhos anexados, de destina a ser uma descrição das várias modalidades exemplificativas da presente invenção, e não se destina a representar as únicas modalidades em que a presente invenção pode ser exercida. A descrição detalhada inclui detalhes específicos para fins de fornecer uma compreensão aprofundada da presente invenção. Contudo, será aparente para aqueles versados na técnica que a presente invenção pode ser exercida sem esses detalhes específicos. Em alguns casos, as estruturas bem conhecidas e os componentes são mostrados sob a forma de diagrama de bloco a fim de impedir obscurecer os conceitos da presente invenção. A Figura 1 ilustra um sistema de comunicação sem
fio 100 exemplificativo em que uma modalidade da invenção pode ser vantajosamente empregada. Para fins de ilustração, a Figura 1 mostra três unidades remotas 120, 130, e 150 e duas estações base 140. Será reconhecido que o sistema 25 comum de comunicação sem fios pode ter muito mais unidades remotas e estações base. As unidades remotas 120, 130, e 150 incluem componentes de hardware, componentes de software, ou ambos como representado pelos componentes 125A, 125C, e 125B, respectivamente, que foram adaptados 30 para incluir a invenção como discutido mais adiante. A Figura 1 mostra sinais de link seqüencial 180 a partir das estações base 140 para as unidades remotas 120, 130, e 150 e sinais de link reverso 190 a partir das unidades remotas 120, 130, e 150 para as estações base 140.
Na Figura 1, a unidade remota 120 é mostrada como um telefone celular, a unidade remota 130 é mostrada como um computador portátil, e a unidade remota 150 é mostrada como uma unidade remota de localização fixa em um sistema de Ioop local sem fio. A título de exemplo, as unidades remotas podem ser, alternativamente, celulares, paginadores, transceptores manuais, unidades de sistemas de comunicação pessoal de mão (PCS), unidades de dados portáteis tais como assistentes pessoais de dados, ou unidades de dados de localização fixa tais como equipamento de leitura do medidor. Ainda que a Figura 1 ilustre as unidades remotas de acordo com as instruções da revelação, a revelação não está limitada a essas unidades exemplificadoras ilustradas. As modalidades da invenção podem ser adequadamente empregadas em qualquer dispositivo dotado de um processador com pelo menos dois níveis de uma hierarquia de memória, tal como uma cache de nível 1 e uma cache de nível 2.
A Figura 2 é um diagrama de bloco funcional de um complexo de memória e de um processador exemplificativos 200 em que as eliminações são reduzidos. Um complexo de memória e um processador exemplificativos 200 incluem um 25 processador 202, uma cache de nível 1 (cachê LI) 203 compreendendo uma matriz de linha de cache Ll 204 e uma unidade de controle de cache Ll 206, uma cache inclusiva de nível 2 (cache L2) 208, e uma memória de sistema 210. A unidade de controle de cache Ll 206 inclui um circuito 30 lógico de eliminação 212 e uma memória endereçável de conteúdo de nível I (CAM LI) 214 para uma correspondência do endereço, como pode ser utilizado em vários tipos de caches, tais como, uma cache associativa de ajuste ou uma cache associativa completa. Dispositivos periféricos, que podem ser conectados ao complexo do processador, não são mostrados para a clareza da discussão. 0 processador e complexo de memória exemplificativos 200 podem ser 5 adequadamente empregados em várias modalidades da invenção em componentes 125A-C para executar o código do programa que é armazenado nas caches 203 e 208 e na memória de sistema 210.
A matriz da linha de cache Ll 204 pode incluir uma pluralidade de linhas, tais como as linhas de cache 215-217. Em uma modalidade, a cache Ll 203 é uma cache de dados com cada linha composta de uma pluralidade de unidades de dados. Em outra modalidade, a cache Ll 203 é uma cache de instrução com cada linha composta de uma pluralidade de instruções. Em mais uma modalidade, a cache Ll 203 é uma cache unificada com cada linha composta de uma pluralidade de instruções ou unidades de dados. Por exemplo, cada linha é composta de uma pluralidade de elementos (U0, Ul,..., U7) 218-225, respectivamente, apropriada para a modalidade de cache instanciada. Estão associados a cada linha um endereço 226, um bit modificado (D) 228, e um bit de eliminação de substituição por força (FRC) 230, como será discutido em maiores detalhes em seguida. As linha de caches 215-217 residem na matriz de linha de cache Ll 204 nos endereços de linha 231-233, respectivamente. A unidade de controle de cache Ll 206 contém uma lógica de controle de endereço responsiva a um endereço de instrução ou endereço de dados(I/DA) 234 recebido através da interface I/DA 235 para acessar as linhas de cache. A I/DA 234 pode ser composta de um endereço 236, um campo de endereço de linha 238, um campo de instrução/dados "U" 240, e um campo de byte "B" 242. De modo a buscar uma instrução ou uma unidade de dados no processador e no complexo de memória exemplificativos 200, o processador 202 gera um endereço de instrução/dados (I/DA) 234 da instrução/dados desejada para 5 ser buscada e enviar o endereço de busca à unidade de controle de cache Ll 206. Baseado na I/DA 234 recebida, a unidade de controle de cache Ll 206 efetua uma verificação para ver se a instrução ou dados estão presentes na matriz de linha de cache Ll 204. Essa verificação é completada, 10 por exemplo, através do uso de uma lógica de comparação que verifica a existência de um endereço correspondente 244 associado à linha 215 que foi selecionado pela I/DA 234.
Se a instrução ou dados estiver presente, ocorre uma coincidência ou uma solicitação e a unidade de controle 15 de cache Ll 206 indica que a instrução ou os dados está presente na cache Ll 203. Se a instrução ou os dados não estiver presente, nenhuma coincidência ou perda será encontrada e a unidade de controle de cache Ll 206 fornecerá uma indicação de perda de que a instrução ou os 20 dados não estão presentes na cache Ll 203. Se a instrução ou os dados estiver presente, a instrução ou os dados no endereço de busca de instrução/dados será selecionada a partir da matriz de linha de cache Ll 204. A instrução ou dados é então enviada em um barramento externo de 25 instrução/dados 246 para o processador 202. Se a instrução/dados não estiver presente na cache, a informação de perda será fornecida à cache L2 208 por meio de um sinal de perda 248 indicando a ocorrência de uma perda. Após a detecção de uma perda na cache Ll 203, é feita uma 30 tentativa de buscar a instrução/dados desejada a partir da cache L2 208. Se a instrução/dados desejada estiver presente na cache L2 208, ela será fornecida em uma interface de barramento de memória 250. Se a instrução/dados desejada não estiver presente na cache L2 208, ela será buscada a partir da memória de sistema 210.
Um sinal de eliminação de substituição por força (FRC) 254 a partir da cache L2 208 é enviado à cache mais baixa de Ll 203 juntamente com a instrução/dados desejada enviada na interface de barramento de memória 250. O sinal FRC 254 indica se a instrução/dados suprida foi ou não obtida devido a uma solicitação na cache L2 de nível superior 208. Por exemplo, o sinal FRC 254 em um estado "0" indica que a instrução/dados desejada foi suprida a partir da cache L2 208. 0 sinal FRC 254 em um estado "1" indica que a instrução/dados desejada foi suprida a partir de um outro nível de memória, acima da cache L2 208, bem como a partir da memória de sistema 210. 0 sinal FRC 254 é armazenado na cache Ll 203, por exemplo, como bits de FRC 256-258 juntamente com um endereço associado à linha de cache apropriada, tal como as linhas 215-217. Quando a linha requisitada for uma perda na cache L2 208 e na cache Ll 203, a cache Ll 203 será suprida pro meio do próximo nível de memória, acima da cache L2 208, enquanto que a cache L2 208 não irá alocar a linha no tèmpo de perda.
Quando uma cache de nível mais baixo tiver de deslocar uma linha, a linha poderá ser alocada no próximo nível de cache em resposta à informação armazenada com a linha na cache de nível mais baixo. Por exemplo, quando uma cache de nível mais baixo, tal como a cache Ll 203, selecionar uma linha para ser deslocada, tal como uma linha de cache 215, com uma indicação modificada, como indicado pelo bit modificada 259 em um estado "1", o circuito lógico de eliminação 212 cria uma determinação de que a linha de cache 215 deve ser alocada para o próximo nível da hierarquia de memória. Se uma linha de cache que não estiver modificada for selecionada para ser deslocada, tal como a linha de cache 216 com o bit modificado 260 em um estado "0", e estiver associada ao bit de FRC 256 ajustado como ativo, por exemplo, a um estado "1", a linha de cache 216 estará também alocada ao próximo nível da hierarquia de 5 memória. O bit de FRC 256 é ajustado como ativo em resposta a uma indicação de sinal FRC 254 fornecida através do próximo nível da hierarquia de memória, que a linha não foi encontrada em seu diretório. Se uma linha de cache que for selecionada para ser substituída não estiver modificada, 10 tal como a linha de cache 217 com seu bit modificado 261 em um estado "0", e estiver associada ao bit de FRC 258 ajustado como inativo, por exemplo, a um estado "0", a linha de cache 217 a linha de cache não será alocada ao próximo nível da hierarquia de memória. Uma eliminação não 15 é requisitado devido ao fato de a linha não ser modificada, e do bit de FRC 258 indicar através de seu estado inativo que essa linha de cache 217 está presente no próximo nível da hierarquia de memória. Em resumo, a cache de nível mais alto aloca uma linha de cache em resposta a uma linha de 20 cache deslocada em um nível mais baixo, quando o bit modificado está ajustado, ou quando o bit FRC está ajustado. Através dessa utilização do bit de FRC, eliminações redundantes são suprimidas economizando portanto energia e ciclos de acesso, através do impedimento 25 de acessos desnecessários para os níveis superiores da hierarquia de memória.
A Figura 3 é um diagrama de fluxo que ilustra um processo 300 para a redução de eliminações. No processo 300, um nível de memória é indicado por meio de índices 30 (X), (X+l), ou (X+2), onde, por exemplo, com X=I, um LI, um L2, e um L3, um nível de memória pode ser indicado. Além disso, as descrições dos blocos de processo 300 incluem números de referência para elementos funcionais na Figura 2.
0 processo 300 começa com um processador, tal como o processador 202, que busca uma instrução ou uma 5 unidade de dados no bloco 302. No bloco de decisão 304 é determinado se a instrução/dados requisitada puder ser localizada em uma cache de L(X), tal como a cache Ll 203. Se a instrução/dados puder ser localizada, a instrução/dados requisitada será buscada a partir da cache 10 de L(X) no bloco 306, e a instrução/dados será enviada de volta para o processador no bloco 308.
Se a instrução/dados não puder ser localizada na cache de L(X), uma indicação de perda será gerada, e no bloco de decisão 310 será determinado se a instrução/dados 15 requisitada poderá ser localizada em uma cache de L(X+l), tal como a cache L2 208. Se a instrução/dados puder ser localizada, a instrução/dados requisitada será buscada a partir da cache de L(X+1) no bloco 316. No bloco 318, o bit de eliminação de substituição por força (FRC), tal como o 20 bit de FRC 258, é ajustado para um estado "0" em uma linha de endereço, tal como associado à linha de cache 217 da cache Ll 203 a fim de que a cache Ll 203 evite o envio dessa instrução/dados à cache L2 208. O processo 300 então segue para o bloco de decisão 320.
De volta ao bloco 310, se a instrução/dados não
puder ser localizada na cache de L (X+l), uma indicação de perda será gerada. No bloco 312, a instrução/dados requisitada será buscada a partir de um nivel da hierarquia de memória que é maior ou igual ao nível L(X+2), tal como, 30 uma cache de L3 ou a memória de sistema 210 do processador e do complexo de memória 200. No bloco 314, o bit de FRC, por exemplo, o bit de FRC 256 é ajustado para um estado "1", e é armazenado com o endereço associado à linha selecionada, tal como a linha de cache 216.
No bloco de decisão 320 determina-se se uma linha deve ser substituída na cache de L(X), tal como a cache Ll 203. Se for determinado que uma linha deve ser substituída na cache de L (X), é também determinado no bloco de decisão 322 se a linha selecionada, uma linha vítima, está modificada, tal como indicada pelo bit modificado 259 em um estado "I". Se a linha vítima selecionada estiver modificada, ela será alocada no bloco 324 na cache de L (X+l), tal como a cache L2 208. Se a linha vítima selecionada não estiver modificada, tal como indicado pelos bits modificados 260 e 261, o bit de FRC será verificado para determinar se ele estará ajustado como ativo no bloco de decisão 326. Se no bloco de decisão 326 for determinado que o bit de FRC está ativo, tal como é o caso para o bit de FRC bit 256, a linha vítima será alocada no bloco 324 na cache de L(X+l), tal como a cache L2 208.
Se for determinado no bloco de decisão 320 que uma linha não deve ser substituída ou se no bloco de decisão 326 for determinado que o bit de FRC está inativo, tal como em um estado "0", como é o caso para o bit de FRC 258, a instrução/dados requisitada será alocada no bloco 328 na cache de L(X), tal como na cache Ll 203. A instrução/dados requisitada é também devolvida no bloco 330 ao processador requisitado, tal como o processador 202. Dessa maneira, uma eliminação redundante para a cache de L(X+l) é evitado, e com isso ocorre uma economia de energia e o aperfeiçoamento da largura de banda de acesso de cache na hierarquia de memória.
Os vários blocos lógicos ilustrativos, módulos, circuitos, elementos, e/ou componentes descritos em conexão com as modalidades reveladas aqui podem ser implementados ou realizados com um processador para fins gerais, um processador de sinal digital (DSP), um circuito integrado específico de aplicação (ASIC), uma matriz de porta programável em campo (FPGA) ou outros componentes lógicos 5 programáveis, porta discreta ou lógica transistor, componentes discretos de hardware, ou qualquer de suas combinações designadas para realizarem as funções descritas aqui. Um processador para fim geral pode ser um microprocessador mas, alternativamente, o processador pode 10 ser qualquer processador convencional, controlador, micro controlador, ou máquina de estado. Um processador pode também ser implementado como uma combinação de componentes de computação, por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um 15 ou mais microprocessadores em conjunção com um núcleo DSP, ou qualquer outro tipo de configuração apropriada para uma aplicação desejada.
Os métodos descritos em conexão com as modalidades reveladas aqui podem ser incorporadas diretamente em hardware, em um módulo de software executado por um processador, ou em uma combinação dos dois. Um módulo de software pode residir na memória RAM, memória flash, memória ROM, memória EPROM, memória EEPROM, registros, disco rígido, um disco removível, um CD-ROM, ou qualquer outra forma ou meio de armazenamento conhecido na técnica. Um meio de armazenamento pode ser acoplado ao processador de modo que o processador possa Ier informações a partir do, e escrever informações para o meio de armazenamento. Alternativamente, o meio de armazenamento pode ser integrado ao processador.
Enquanto a invenção é revelada nos contexto das modalidades ilustrativas para as caches de instrução, caches de dados, e outros tipos de caches, será reconhecido que uma ampla variedade de implementações pode se empregada por pessoas versadas na técnica, coerentes com discussão acima e com as reivindicações que seguem abaixo.

Claims (20)

1. Um método de rastreamento para reduzir alocação das linhas de cache deslocadas, o método de rastreamento compreendendo: selecionar uma linha a ser deslocada em uma cache de nível mais baixo; identificar informação associada à linha selecionada a qual indica que a linha selecionada está presente em uma cache de nível mais alto; e evitar uma alocação da linha selecionada na cache de nível mais alto com base na informação identificada.
2. 0 método de rastreamento, de acordo com a reivindicação 1, compreendendo adicionalmente: salvar, em resposta a uma perda na cache de nível mais baixo, informação de alocação com um endereço de uma linha de cache alocada na cache de nível mais baixo devido a uma perda, a informação de alocação indicando se a linha de cache foi alocada na cache de nível mais alto.
3. 0 método de rastreamento, de acordo com a reivindicação 1, compreendendo adicionalmente: identificar a linha selecionada como sendo modificada; e alocar a linha selecionada na cache de nível mais alto.
4. 0 método de rastreamento, de acordo com a reivindicação 1, compreendendo adicionalmente: determinar que a informação identificada associada à linha selecionada significa que a linha selecionada não está presente na cache de nível mais alto; e alocar a linha selecionada na cache de nível mais alto.
5. O método de rastreamento, de acordo com a reivindicação 1, compreendendo adicionalmente: identificar a linha selecionada como não sendo modificada.
6. 0 método de rastreamento, de acordo com a reivindicação 2, compreendendo adicionalmente: buscar uma unidade de dados a partir da cache de nível mais alto; e ajustar a indicação da alocação para um estado que significa que a unidade de dados está presente na cache de nível mais alto.
7. O método de rastreamento, de acordo com a reivindicação 2, compreendendo adicionalmente: buscar uma unidade de dados a partir de um nível da hierarquia de memória acima da cache de nível mais alto; e ajustar a indicação da alocação para um estado que significa que a unidade de dados não está presente na cache de nível mais alto.
8.0 método de rastreamento, de acordo com a reivindicação 1, em que a cache de nível mais alto opera como uma cache vítima.
9. Um método para reduzir as eliminações, o método compreendendo: salvar em uma cache de nível X, em resposta a uma perda na cache de nível X, informação de alocação em um endereço de uma linha de cache associada à perda, a informação de alocação indicando se a linha de cache foi alocada em uma cache de nível X+l; selecionar uma linha a ser deslocada na cache de nível X; e evitar uma eliminação da linha selecionada a partir da cache de nível X para a cache de nível X+l em resposta à informação de alocação da linha selecionada indicando que a linha de cache foi alocada na cache de nivel X+l.
10. O método, de acordo com a reivindicação 9, compreendendo adicionalmente: identificar a linha selecionada como sendo modificada; e alocar a linha selecionada na cache de nível X+l.
11. O método, de acordo com a reivindicação 9, compreendendo adicionalmente: determinar que a informação de alocação associada à linha selecionada indique que a linha selecionada não está presente na cache de nível X+l; e alocar a linha selecionada na cache de nível X+l.
12. O método, de acordo com a reivindicação 9, compreendendo adicionalmente: identificar a linha selecionada como não sendo modificada.
13. O método, de acordo com a reivindicação 9, compreendendo adicionalmente: buscar uma unidade de dados a partir da cache de nível X+l; e ajustar a informação de alocação para um estado que significa que a unidade de dados está presente na cache de nível X+l.
14. 0 método, de acordo com a reivindicação 9, compreendendo adicionalmente: buscar uma unidade de dados a partir de um nível da hierarquia de memória acima da cache de nível X+l; e ajustar a informação de alocação para um estado que significa que a unidade de dados não está presente na cache de nível X+l.
15. o método, de acordo com a reivindicação 9, em que a cache de nivel X é uma cache de instrução de nível X.
16. Um sistema de memória que possui uma pluralidade de níveis de cache compreendendo: uma cache de nível mais baixo configurada para armazenar uma pluralidade de primeiras linhas de cache, cada uma com um bit de alocação, sendo que cada bit de alocação indica se a primeira linha de cache associada ao bit de alocação foi alocada em uma cache de nível mais alto; e um circuito lógico de eliminação configurado para determinar se uma primeira linha de cache selecionada para deslocamento a partir da pluralidade de primeiras linhas de cache é uma linha de cache que é redundante em relação a uma linha de cache na cache de nível mais alto com base no bit de alocação associado à primeira linha de cache selecionada, e para impedir uma eliminação da primeira linha de cache selecionada para a cache de nível mais alto em resposta ao bit de alocação da primeira linha de cache selecionada.
17. 0 sistema de memória, de acordo com a reivindicação 16, em que a cache de nível mais alto compreende: uma pluralidade de segundas linhas de cache; e um circuito lógico, em resposta a uma perda na cache de nível mais baixo, configurado para gerar um sinal de alocação baseado em se a linha de cache associada à perda foi alocada na cache de nível mais alto, no sinal de alocação comunicado à cache de nível mais baixo para o armazenamento como o bit de alocação na linha de cache associada à perda.
18. 0 sistema de memória, de acordo com a reivindicação 17, em que o circuito lógico de eliminação adicionalmente compreende ajustar o bit de alocação para o estado do sinal de alocação.
19. 0 sistema de memória, de acordo com a reivindicação 16, em que a cache de nivel mais baixo é uma cache de dados.
20. 0 sistema de memória, de acordo com a reivindicação 17, em que a cache de nível mais alto é uma cache unificada.
BRPI0806865-8A 2007-01-31 2008-01-30 Equipamento e métodos para reduzir eliminações em uma hierarquia de cache multinível BRPI0806865A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/669,245 2007-01-31
US11/669,245 US8078803B2 (en) 2008-01-30 2008-01-30 Apparatus and methods to reduce castouts in a multi-level cache hierarchy
PCT/US2008/052507 WO2008095025A1 (en) 2007-01-31 2008-01-30 Apparatus and methods to reduce castouts in a multi-level cache hierarchy

Publications (1)

Publication Number Publication Date
BRPI0806865A2 true BRPI0806865A2 (pt) 2014-04-29

Family

ID=39512778

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0806865-8A BRPI0806865A2 (pt) 2007-01-31 2008-01-30 Equipamento e métodos para reduzir eliminações em uma hierarquia de cache multinível

Country Status (10)

Country Link
US (2) US8078803B2 (pt)
EP (2) EP2118754B1 (pt)
JP (4) JP2010518487A (pt)
KR (1) KR101165132B1 (pt)
CN (2) CN101595462B (pt)
BR (1) BRPI0806865A2 (pt)
CA (1) CA2675046C (pt)
MX (1) MX2009008092A (pt)
RU (1) RU2438165C2 (pt)
WO (1) WO2008095025A1 (pt)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078803B2 (en) 2008-01-30 2011-12-13 Qualcomm Incorporated Apparatus and methods to reduce castouts in a multi-level cache hierarchy
JP2010113593A (ja) 2008-11-07 2010-05-20 Sony Corp 情報処理装置、情報処理方法及び情報処理プログラム
JP5136652B2 (ja) * 2008-11-10 2013-02-06 富士通株式会社 情報処理装置及びメモリ制御装置
US20110202727A1 (en) * 2010-02-18 2011-08-18 Qualcomm Incorporated Apparatus and Methods to Reduce Duplicate Line Fills in a Victim Cache
US9201794B2 (en) 2011-05-20 2015-12-01 International Business Machines Corporation Dynamic hierarchical memory cache awareness within a storage system
US9021206B2 (en) 2011-08-25 2015-04-28 International Business Machines Corporation Use of cache statistics to ration cache hierarchy access
KR101862785B1 (ko) * 2011-10-17 2018-07-06 삼성전자주식회사 타일 기반 렌더링을 위한 캐쉬 메모리 시스템 및 캐슁 방법
CN105453046B (zh) 2013-01-17 2020-02-14 索尼电脑娱乐公司 信息处理设备和文件管理方法
US10127154B2 (en) 2013-03-20 2018-11-13 Hewlett Packard Enterprise Development Lp Caching data in a memory system having memory nodes at different hierarchical levels
US9854052B2 (en) * 2013-09-27 2017-12-26 Sap Se Business object attachments and expiring URLs
JP2015088146A (ja) * 2013-11-01 2015-05-07 株式会社ソニー・コンピュータエンタテインメント 情報処理装置
JP2015176245A (ja) 2014-03-13 2015-10-05 株式会社東芝 情報処理装置及びデータ構造
CN104932989B (zh) * 2014-03-21 2020-05-19 三星电子株式会社 数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入
US10216640B2 (en) 2014-03-21 2019-02-26 Samsung Electronics Co., Ltd. Opportunistic cache injection of data into lower latency levels of the cache hierarchy
JP2016057763A (ja) 2014-09-08 2016-04-21 株式会社東芝 キャッシュ装置、及びプロセッサ
US9684602B2 (en) 2015-03-11 2017-06-20 Kabushiki Kaisha Toshiba Memory access control device, cache memory and semiconductor device
KR101697515B1 (ko) * 2015-12-15 2017-01-18 전남대학교산학협력단 캐시 라인의 태그 거리 상관관계를 이용한 캐시 교체 방법 및 임베디드 시스템
EP3572946B1 (en) * 2017-03-08 2022-12-07 Huawei Technologies Co., Ltd. Cache replacement method, device, and system
JP7139719B2 (ja) * 2018-06-26 2022-09-21 富士通株式会社 情報処理装置、演算処理装置及び情報処理装置の制御方法
US11782919B2 (en) * 2021-08-19 2023-10-10 International Business Machines Corporation Using metadata presence information to determine when to access a higher-level metadata table

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5564035A (en) * 1994-03-23 1996-10-08 Intel Corporation Exclusive and/or partially inclusive extension cache system and method to minimize swapping therein
US5737751A (en) 1996-03-26 1998-04-07 Intellectual Business Machines Corporation Cache memory management system having reduced reloads to a second level cache for enhanced memory performance in a data processing system
US5787478A (en) * 1997-03-05 1998-07-28 International Business Machines Corporation Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US6374330B1 (en) 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state
US6202129B1 (en) 1998-03-31 2001-03-13 Intel Corporation Shared cache structure for temporal and non-temporal information using indicative bits
TW451132B (en) * 1998-12-15 2001-08-21 Nippon Electric Co System and method for cache processing
US6564301B1 (en) * 1999-07-06 2003-05-13 Arm Limited Management of caches in a data processing apparatus
US6282615B1 (en) * 1999-11-09 2001-08-28 International Business Machines Corporation Multiprocessor system bus with a data-less castout mechanism
US7024519B2 (en) * 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
US6941421B2 (en) * 2002-10-29 2005-09-06 International Business Machines Corporation Zero delay data cache effective address generation
JP2006155080A (ja) * 2004-11-26 2006-06-15 Fujitsu Ltd メモリ制御装置およびメモリ制御方法
US20060155934A1 (en) * 2005-01-11 2006-07-13 Ramakrishnan Rajamony System and method for reducing unnecessary cache operations
US7330941B2 (en) 2005-03-23 2008-02-12 Qualcomm Incorporated Global modified indicator to reduce power consumption on cache miss
DE102005015116A1 (de) 2005-04-01 2006-10-05 Webasto Ag Kraftfahrzeugheizung
US8078803B2 (en) 2008-01-30 2011-12-13 Qualcomm Incorporated Apparatus and methods to reduce castouts in a multi-level cache hierarchy
US20110202727A1 (en) 2010-02-18 2011-08-18 Qualcomm Incorporated Apparatus and Methods to Reduce Duplicate Line Fills in a Victim Cache

Also Published As

Publication number Publication date
US8386716B2 (en) 2013-02-26
KR101165132B1 (ko) 2012-07-12
JP2017033584A (ja) 2017-02-09
MX2009008092A (es) 2009-08-12
CA2675046C (en) 2013-07-30
KR20090115799A (ko) 2009-11-06
EP2118754B1 (en) 2013-07-03
CN102693187A (zh) 2012-09-26
US8078803B2 (en) 2011-12-13
JP6392286B2 (ja) 2018-09-19
EP2118754A1 (en) 2009-11-18
JP2015111435A (ja) 2015-06-18
US20080183967A1 (en) 2008-07-31
WO2008095025A1 (en) 2008-08-07
JP2010518487A (ja) 2010-05-27
RU2009132554A (ru) 2011-03-10
CN102693187B (zh) 2016-03-30
JP2013069322A (ja) 2013-04-18
RU2438165C2 (ru) 2011-12-27
JP6009589B2 (ja) 2016-10-19
CN101595462A (zh) 2009-12-02
EP2527987A1 (en) 2012-11-28
CA2675046A1 (en) 2008-08-07
CN101595462B (zh) 2012-04-25
US20120059995A1 (en) 2012-03-08

Similar Documents

Publication Publication Date Title
BRPI0806865A2 (pt) Equipamento e métodos para reduzir eliminações em uma hierarquia de cache multinível
US10564853B2 (en) System and method for locality detection to identify read or write streams in a memory device
US9256527B2 (en) Logical to physical address mapping in storage systems comprising solid state memory devices
US8930625B2 (en) Weighted history allocation predictor algorithm in a hybrid cache
CN109983536B (zh) 响应标签匹配命令的存储电路
TWI483109B (zh) 半導體儲存裝置
US7055003B2 (en) Data cache scrub mechanism for large L2/L3 data cache structures
US7360015B2 (en) Preventing storage of streaming accesses in a cache
US7596662B2 (en) Selective storage of data in levels of a cache memory
US6625695B2 (en) Cache line replacement policy enhancement to avoid memory page thrashing
US7193923B2 (en) Semiconductor memory device and access method and memory control system for same
JP5090047B2 (ja) ロックされたキャッシュ内のセットの置換を管理するための方法、コンピュータ・プログラム、キャッシング・システムおよびプロセッサ
US20080086599A1 (en) Method to retain critical data in a cache in order to increase application performance
US7809889B2 (en) High performance multilevel cache hierarchy
JP2008502069A (ja) メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法
US10120806B2 (en) Multi-level system memory with near memory scrubbing based on predicted far memory idle time
US20080263282A1 (en) System for Caching Data
US11188467B2 (en) Multi-level system memory with near memory capable of storing compressed cache lines
US20120124291A1 (en) Secondary Cache Memory With A Counter For Determining Whether to Replace Cached Data
US20110202727A1 (en) Apparatus and Methods to Reduce Duplicate Line Fills in a Victim Cache
US7055002B2 (en) Integrated purge store mechanism to flush L2/L3 cache structure for improved reliabity and serviceability
US11656979B2 (en) Data tiering in heterogeneous memory system

Legal Events

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

Free format text: REFERENTE A 7A ANUIDADE.

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

Free format text: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2291 DE 02/12/2014.