KR20060063804A - 캐시 메모리 및 캐시 메모리 제어 방법 - Google Patents

캐시 메모리 및 캐시 메모리 제어 방법 Download PDF

Info

Publication number
KR20060063804A
KR20060063804A KR1020057024622A KR20057024622A KR20060063804A KR 20060063804 A KR20060063804 A KR 20060063804A KR 1020057024622 A KR1020057024622 A KR 1020057024622A KR 20057024622 A KR20057024622 A KR 20057024622A KR 20060063804 A KR20060063804 A KR 20060063804A
Authority
KR
South Korea
Prior art keywords
access
cache
cache entry
information indicating
new
Prior art date
Application number
KR1020057024622A
Other languages
English (en)
Inventor
데츠야 다나카
류타 나카니시
도쿠조우 기요하라
히로유키 모리시타
게이시 치카무라
Original Assignee
마쯔시다덴기산교 가부시키가이샤
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 마쯔시다덴기산교 가부시키가이샤 filed Critical 마쯔시다덴기산교 가부시키가이샤
Publication of KR20060063804A publication Critical patent/KR20060063804A/ko

Links

Images

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/12Replacement control
    • 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/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • 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
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • G06F12/124Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU

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)

Abstract

본 발명의 캐시 메모리는, 캐시 엔트리마다, 액세스의 유무를 나타내는 사용 플래그(U)를 기억하는 웨이 0∼웨이 3과, 히트하였을 때 해당 캐시 엔트리에 대응하는 사용 플래그(U)를 액세스 있음으로 갱신하고, 그 때에 세트 내의 다른 모든 사용 플래그가 액세스 있음을 나타내는 경우에는, 세트 내의 다른 모든 사용 플래그를 액세스 없음으로 리셋하고, 액세스 없음을 나타내는 사용 플래그(U)에 대응하는 캐시 엔트리 중에서 리플레이스 대상의 캐시 엔트리를 선택하는 제어부를 구비한다.

Description

캐시 메모리 및 캐시 메모리 제어 방법{Cache Memory and Cache Memory Control Method}
본 발명은, 프로세서의 메모리 액세스를 고속화하기 위한 캐시 메모리 및 그 제어 방법에 관한 것이다.
종래 캐시 메모리의 엔트리를 리플레이스(replace)하기 위한 알고리즘으로서 LRU(Least Recently Used) 방식이나 FIFO(First In First Out) 방식이 잘 알려져 있다.
LRU 방식은, 캐시 엔트리 중 액세스 순서가 가장 오래된 엔트리를 리플레이스 대상으로 결정하는 방법이다. 이 LRU 방식은, 예를 들면, 일본국 특개2000-47942호 공보 등에 개시된 캐시 메모리에 있어서도 채용되고 있는 가장 일반적인 리플레이스 알고리즘이다.
그런데, LRU 방식의 알고리즘으로 리플레이스하기 위해서는, 각 엔트리에 대하여 액세스 순서를 나타내는 데이터를 기억하는 기억부와, 그것을 갱신하는 복잡한 회로가 필요하게 되기 때문에, 하드웨어 규모가 커진다는 문제가 있다.
예를 들면, 풀 어소시에이티브(full associative) 방식의 캐시 메모리로서, (2의 k승)개의 엔트리를 갖는 경우, 액세스 순서를 나타내는 데이터로서 엔트리마 다 k비트를 필요로 한다.
또, N웨이 세트 어소시에이티브의 경우에는, 웨이 수 N=8이면, 액세스 순서를 나타내는 정보로서 (웨이 수=8)×(최저 3비트)×(세트 수)를 필요로 하고, 액세스 순서 데이터를 기억하는 기억부(레지스터 또는 RAM) 및 액세스 순서 데이터를 갱신하는 회로의 규모가 크다는 문제가 있다.
본 발명은, LRU 방식과 동등한 히트율을 얻을 수 있는 리플레이스 제어를 보다 적은 하드웨어 규모로 실현하는 캐시 메모리를 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위하여 본 발명의 캐시 메모리는, 캐시의 단위가 되는 데이터를 유지하는 캐시 엔트리마다, 액세스의 유무를 나타내는 1비트의 액세스 정보를 기억하는 기억 수단과, 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서 리플레이스 대상의 캐시 엔트리를 선택하는 선택 수단을 구비한다.
상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서, 랜덤 또는 라운드 로빈(round-robin) 방식으로 하나의 캐시 엔트리를 선택하는 구성으로 하여도 된다.
이 구성에 의하면, 종래의 LRU 방식에 있어서의 액세스 순서를 나타내는 데이터를 캐시 엔트리마다 기억하는 대신에, 기억 수단은 1비트에서 표현 가능한 액세스 정보를 캐시 엔트리마다 기억하고 있기 때문에, 그 기억 용량을 삭감할 수 있어 하드웨어 규모를 삭감할 수 있다. 또, 선택 수단은, 리플레이스 대상을, 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중 하나를 선택함으로써 간단히 결정하며, 뿐만 아니라, 종래의 LRU와 비교해서도 거의 동등한 히트율을 얻을 수 있다.
여기서, 상기 캐시 메모리는, 또한, 캐시 엔트리에 히트하였을 때 해당 캐시 엔트리에 대응하는 액세스 정보를 액세스 있음으로 갱신하고, 그 때에 다른 모든 캐시 엔트리에 대응하는 액세스 정보가 액세스 있음을 나타내는 경우에는, 다른 모든 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음으로 리셋하는 갱신 수단을 구비하는 구성으로 하여도 된다.
이에 따라, 종래의 액세스 순서 데이터를 갱신하는 복잡한 회로를, 액세스 정보를 갱신하는 간단한 플래그 갱신 회로로 치환할 수 있으므로, 하드웨어 규모를 보다 크게 저감할 수 있다.
여기서, 상기 갱신 수단은, 또한, 상기 리셋에 있어서 상기 히트한 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음으로 리셋하도록 구성하여도 된다.
여기서, 상기 기억 수단은, 또한, 캐시 엔트리마다 캐시 엔트리에 데이터가 격납된 직후의 새로운 상태인지 아닌지를 나타내는 뉴(new) 정보를 기억하고, 상기 갱신 수단은, 또한, 캐시 엔트리에 히트하였을 때 해당 캐시 엔트리에 대응하는 뉴 정보를 새로운 상태가 아닌 것을 나타내도록 리셋하고, 상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하고, 또한 새로운 상태가 아닌 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리 중에서, 리플레이스 대상의 캐시 엔트리를 선택하는 구성으로 하여도 된다.
여기서, 상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하고, 또한 새로운 상태가 아닌 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리가 존재하지 않는 경우에는, 뉴 정보를 무시하고, 리플레이스 대상의 캐시 엔트리를 선택하는 구성으로 하여도 된다.
여기서, 상기 선택 수단은, 액세스 있음을 나타내는 액세스 정보에 대응하고, 또는 새로운 상태인 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리만이 존재하는 경우에는, 뉴 정보를 무시하고, 리플레이스 대상의 캐시 엔트리를 선택하는 구성으로 하여도 된다.
이 구성에 의하면, 리플레이스된 후에 한번도 액세스되지 않은 새로운 상태의 캐시 엔트리가 리플레이스되어 버리는 것을 방지할 수 있다.
또, 본 발명의 캐시 메모리의 제어 방법은, 캐시 메모리의 캐시 엔트리마다, 액세스의 유무를 나타내는 액세스 정보를 기억하는 기억부를 갖는 캐시 메모리의 제어 방법으로서, 캐시 히트(hit) 및 미스(miss)를 검출하는 검출 단계와, 히트한 것이 검출된 캐시 엔트리에 대응하는 액세스 정보를 액세스 있음으로 갱신하는 제1 갱신 단계와, 히트한 것이 검출된 캐시 엔트리 이외의 다른 모든 캐시 엔트리에 대응하는 액세스 정보가 액세스 있음을 나타내는지 아닌지를 판정하는 판정 단계와, 판정 수단의 판정 결과가 긍정인 경우에, 다른 모든 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음을 나타내도록 갱신하는 제2 갱신 단계와, 미스한 것이 검출되었을 때, 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서 리플레이스 대상의 캐시 엔트리를 선택하는 선택 단계를 갖는다.
이상과 같이, 본 발명의 캐시 메모리에 의하면, 하드웨어 규모를 삭감하고, 뿐만 아니라 종래의 LRU 방식에 상당하는 히트율을 실현할 수 있다.
도 1은 본 발명의 실시 형태 1에 있어서의 프로세서, 캐시 메모리, 메모리를 포함하는 개략 구성을 도시한 블록도,
도 2는 캐시 메모리의 구성을 도시한 블록도,
도 3은 캐시 엔트리의 비트 구성을 도시한 설명도,
도 4는 제어부의 구성을 도시한 블록도,
도 5는 플래그의 갱신예를 도시한 설명도,
도 6은 플래그 갱신 처리 플로우를 도시한 도면,
도 7은 플래그 관리부의 입출력 논리를 도시한 진리값표를 도시한 도면,
도 8은 플래그 관리부의 회로예를 도시한 도면,
도 9는 리플레이스 처리 플로우를 도시한 도면,
도 10은 변형예에 있어서의 플래그의 갱신예를 도시한 설명도,
도 11은 변형예에 있어서의 플래그 갱신 처리 플로우를 도시한 도면,
도 12A는 변형예에 있어서의 선택 처리의 다른 예를 도시한 도면,
도 12B는 변형예에 있어서의 선택 처리의 다른 예를 도시한 도면,
도 13은 본 발명의 실시 형태 2에 있어서의 캐시 메모리의 구성을 도시한 블록도,
도 14는 캐시 엔트리의 비트 구성을 도시한 설명도,
도 15는 제어부의 구성을 도시한 블록도,
도 16은 리플레이스 처리 플로우를 도시한 도면,
도 17은 플래그 갱신 처리 플로우를 도시한 도면이다.
(실시 형태 1)
〈전체 구성〉
도 1은 본 발명의 실시 형태 1에 있어서의 프로세서(1), 캐시 메모리(3), 메모리(2)를 포함하는 시스템의 개략 구성을 도시한 블록도이다. 동 도면과 같이, 본 발명의 캐시 메모리(3)는, 프로세서(1) 및 메모리(2)를 갖는 시스템에 구비되고, 리플레이스 알고리즘으로서 LRU 방식을 간략화한 의사적(擬似的)인 LRU 방식을 이용한다. 본 실시 형태에서는, 의사적인 LRU 방식으로서, 캐시 엔트리의 액세스 순서를 나타내는 데이터를 캐시 엔트리마다 1비트만큼으로 표현하고, 해당 비트가 0인 캐시 엔트리 중에서 리플레이스 대상 엔트리 하나를 선택하는 방식을 채용하고 있다.
〈캐시 메모리의 구성〉
이하에서는, 캐시 메모리(3)의 구체예로서, 4웨이·세트·어소시에이티브 방식의 캐시 메모리에 상기 의사(擬似) LRU를 의사 적용한 경우의 구성에 관하여 설명한다.
도 2는 캐시 메모리(3)의 구성예를 도시한 블록도이다. 동 도면과 같이, 캐시 메모리(3)는, 어드레스 레지스터(20), 디코더(30), 4개의 웨이(31a∼31d)(이하 웨이 0∼3이라고 약칭한다), 4개의 비교기(32a∼32d), 4개의 AND 회로(33a∼33d), OR 회로(34), 셀렉터(35), 셀렉터(36), 디멀티플렉서(37), 제어부(38)를 구비한다.
어드레스 레지스터(20)는, 메모리(2)에 대한 액세스 어드레스를 유지하는 레지스터이다. 이 액세스 어드레스는 32 비트인 것으로 한다. 동 도면에 도시한 바와 같이, 액세스 어드레스는, 최상위 비트로부터 차례로, 21비트의 태그 어드레스, 4비트의 세트 인덱스(도면 중의 SI), 5비트의 워드 인덱스(도면 중의 WI)를 포함한다. 여기서, 태그 어드레스는 웨이에 매핑되는 메모리 중의 영역(그 사이즈는 세트 수×블록이다)을 가리킨다. 이 영역의 사이즈는, 태그 어드레스보다 하위의 어드레스 비트(A10∼AO)에서 정해지는 사이즈 즉 2k바이트로, 하나의 웨이의 사이즈이기도 하다. 세트 인덱스(SI)는 웨이 0∼3에 걸친 복수 세트 중 하나를 가리킨다. 이 세트 수는, 세트 인덱스가 4비트이므로 16세트이다. 태그 어드레스 및 세트 인덱스에서 특정되는 블록은, 리플레이스 단위이고, 캐시 메모리에 격납되어 있는 경우는 라인 데이터 또는 라인이라고 불린다. 라인 데이터의 사이즈는, 세트 인덱스보다 하위의 어드레스 비트에서 정해지는 사이즈 즉 128바이트이다. 1워드를 4바이트라고 하면, 1라인 데이터는 32워드이다. 워드 인덱스(WI)는, 라인 데이터를 구성하는 복수 워드 중의 1워드를 가리킨다. 어드레스 레지스터(20) 중의 최하위 2비트(A1, A0)는, 워드 액세스 시에는 무시된다.
디코더(30)는, 세트 인덱스의 4비트를 디코드하고, 4개의 웨이0∼3에 걸친 16세트 중의 하나를 선택한다.
4개의 웨이 0∼3은, 동일한 구성을 유수(有數)하는 4개의 웨이로서, 4×2k바이트의 용량을 갖는다. 웨이 0은, 16개의 캐시 엔트리를 갖는다.
도 3에 하나의 캐시 엔트리에 있어서의 상세한 비트 구성을 도시한다. 동 도면과 같이, 하나의 캐시 엔트리는, 유효 플래그(V), 21비트의 태그, 128바이트의 라인 데이터, 사용 플래그(U) 및 더티(dirty) 플래그(D)를 유지한다. 유효 플래그(V)는, 그 캐시 엔트리가 유효한지 아닌지를 나타낸다. 태그는 21비트의 태그 어드레스의 카피(copy)이다. 라인 데이터는, 태그 어드레스 및 세트 인덱스에 의하여 특정되는 블록 중의 128바이트 데이터의 카피이다. 더티 플래그는, 그 캐시 엔트리에 기록이 있었는지의 여부, 즉 캐시 엔트리 중에 캐시된 데이터가 기록에 의하여 메모리 중의 데이터와 상이하기 때문에 메모리에 덮어쓰는 것이 필요한지 아닌지를 나타낸다. 사용 플래그(U)는, 그 캐시 엔트리에 액세스가 있었는지 아닌지를 나타내고, 미스 히트에 따른 리플레이스에 있어서 세트 내의 4개의 캐시 엔트리에서의 액세스 순서 대신에 이용된다. 보다 정확하게는, 사용 플래그(U)의 1은, 액세스가 있었음을, 0은 없음을 나타낸다. 세트 내의 4개의 사용 플래그는, 모두 1이 되면, 0으로 리셋되기 때문에, 세트 내의 4개의 캐시 엔트리에 있어서의 사용의 유무를 나타내는 상대적인 값이다. 달리 말하면, 사용 플래그(U)는, 액세스된 시기가 오래되었는지 새로운지 두 가지의 상대적인 상태를 나타낸다. 결국, 사용 플래그(U)가 1인 캐시 엔트리는, 사용 플래그가 0인 캐시 엔트리보다 새롭게 액세스된 것을 의미한다.
웨이 1∼3에 대해서도, 웨이 0과 동일하다. 세트 인덱스의 4비트에 의하여 디코더(30)를 통하여 선택되는 4웨이에 걸친 4개의 캐시 엔트리는, 세트라고 불린다.
비교기(32a)는, 어드레스 레지스터(20) 중의 태그 어드레스와, 세트 인덱스에 의하여 선택된 세트에 포함되는 4개의 태그 중의 웨이 0의 태그가 일치하는지 아닌지를 비교한다. 비교기(32b∼32c)에 대해서도, 웨이(31b∼31d)에 대응하는 것 이외에는 동일하다.
AND 회로(33a)는, 유효 플래그와 비교기(32a)의 비교 결과가 일치하는지 아닌지를 비교한다. 이 비교 결과를 h0으로 한다. 비교 결과(h0)가 1인 경우는, 어드레스 레지스터(20) 중의 태그 어드레스 및 세트 인덱스에 대응하는 라인 데이터가 존재하는 것, 즉 웨이 0에서 히트한 것을 의미한다. 비교 결과(h0)가 O인 경우는, 미스 히트한 것을 의미한다. AND 회로(33b∼33d)에 대해서도, 웨이(31b∼31d)에 대응하는 것 이외에는 동일하다. 그 비교 결과(h1∼h3)는, 웨이 1∼3에서 히트하였는지 미스하였는지를 의미한다.
OR 회로(34)는, 비교 결과(h0∼h3)의 OR를 취한다. 이 OR의 결과를 hit로 한다. hit는, 캐시 메모리에 히트하였는지 아닌지를 나타낸다.
셀렉터(35)는, 선택된 세트에 있어서의 웨이 0∼3의 라인 데이터 중, 히트한 웨이의 라인 데이터를 선택한다.
셀렉터(36)는, 셀렉터(35)에 의하여 선택된 32워드의 라인 데이터 중, 워드 인덱스에 나타나는 1워드를 선택한다.
디멀티플렉서(37)는, 캐시 엔트리에 데이터를 기록할 때에, 웨이 0∼3 중 하나에 기록 데이터를 출력한다. 이 기록 데이터는 워드 단위이면 된다.
제어부(38)는, 캐시 메모리(3) 전체의 제어를 행한다. 특히, 사용 플래그 (U)의 갱신이나 리플레이스해야 하는 캐시 엔트리의 결정 등을 행한다.
〈제어부의 구성〉
도 4는, 제어부(38)의 구성을 도시한 블록도이다. 동 도면과 같이, 제어부(38)는, 플래그 갱신부(39)와 리플레이스부(40)를 구비한다.
플래그 갱신부(39)는, 유효 플래그(V), 사용 플래그(U), 더티 플래그(D)의 갱신을 행한다. 이 중 유효 플래그(V), 더티 플래그(D)의 갱신에 대해서는 주지한 바와 같다. 플래그 갱신부(39)는, 캐시 히트 시에 사용 플래그의 갱신 처리를 행한다.
도 5에, 플래그 갱신부(39)에 의한 사용 플래그의 갱신예를 도시한다. 동 도면의 상단(上段), 중단, 하단은, 웨이 O∼3에 걸친 세트 N을 구성하는 4개의 캐시 엔트리를 나타내고 있다. 4개의 캐시 엔트리 우측 단부의 1 또는 0은, 각각 사용 플래그의 값이다. 이 4개의 사용 플래그(U)를 U0∼U3이라고 기입한다.
동 도면 상단에서는 (U0∼U3)=(1, 0, 1, 0)이기 때문에, 웨이 0, 2의 캐시 엔트리는 액세스가 있었음을, 웨이 1, 3의 캐시 엔트리는 액세스가 없음을 의미한다.
이 상태에서, 메모리 액세스가 세트 N 내의 웨이 1의 캐시 엔트리에 히트한 경우, 동 도면 중단에 도시하는 바와 같이, (U0∼U3)=(1, 1, 1, 0)로 갱신된다. 즉, 실선으로 나타내는 바와 같이 웨이 1의 사용 플래그(U1)가 0으로부터 1로 갱신된다.
또한, 동 도면 중단의 상태에서, 메모리 액세스가 세트 N 내의 웨이 3의 캐 시 엔트리에 히트한 경우, 동 도면 하단에 도시하는 바와 같이, (U0∼U3)=(0, 0, 0, 1)으로 갱신된다. 즉, 실선으로 나타내는 바와 같이 웨이 3의 사용 플래그(U1)가 0으로부터 1로 갱신된다. 덧붙여, 파선으로 나타내는 바와 같이 웨이 3 이외의 사용 플래그(U0∼U2)가 1로부터 0으로 갱신된다. 이에 따라, 웨이 3의 캐시 엔트리가, 웨이 0∼2의 각 캐시 엔트리보다 새롭게 액세스된 것을 의미하게 된다.
리플레이스부(40)는, 캐시 미스 시에 사용 플래그에 기초하여 리플레이스 대상의 캐시 엔트리를 결정하여 리플레이스를 행한다. 예를 들면, 리플레이스부(40)는, 도 5 상단에서는, 웨이 1과 웨이 3중 어느 하나를 리플레이스 대상으로 결정하고, 도 5 중단에서는 웨이 3을 리플레이스 대상으로 결정하고, 도 5 하단에서는 웨이 0∼2 중 어느 하나를 리플레이스 대상으로 결정한다.
〈플래그 갱신 처리〉
도 6은, 플래그 갱신부(39)에 있어서의 플래그 갱신 처리를 도시한 플로우 차트이다. 동 도면에서는, 유효 플래그가 O(무효)인 캐시 엔트리의 사용 플래그(U)는 0으로 초기화되어 있는 것으로 한다.
동 도면에서, 플래그 갱신부(39)는, 캐시 히트하였을 때(단계 S61), 세트 인덱스에 의하여 선택된 세트에 있어서의 히트한 웨이의 사용 플래그(U)를 1로 세트하고(단계 S62), 그 세트 내에 있는 다른 웨이의 사용 플래그(U)를 독출하고(단계 S63), 독출한 사용 플래그(U)가 모두 1인지 아닌지를 판정하여(단계 S64), 모두 1이 아니면 종료하고, 모두 1이면 다른 웨이의 모든 사용 플래그(U)를 0으로 리셋한다(단계 S65).
이와 같이 하여 플래그 갱신부(39)는, 도 5에 도시한 갱신예와 같이, 사용 플래그를 갱신할 수 있다.
실제의 플래그 갱신부(39)는 하드웨어에 의하여 구성되기 때문에, 이하 하드웨어 구성에 관하여 설명한다.
도 7은, 플래그 갱신부(39)의 입출력 논리를 나타내는 진리값표를 도시한 도면이다. 동 도면의 입력란에 있어서의 h0∼h3은, 도 2에 나타낸 웨이 0∼웨이 3에서의 히트 신호이다. U0_in∼U3_in은, 세트 인덱스에 의하여 선택된 세트로부터 독출된, 웨이 0∼웨이 3의 사용 플래그의 값(갱신 전의 값)을 나타낸다. 동 도면의 출력란에서의 U0_out∼U3_out은, 세트 인덱스에 덮어써지는 사용 플래그의 값(갱신 후의 값)을 나타낸다. 또, 도면 중의 ○ 표시는 히트한 웨이의 사용 플래그(입력 및 출력)를, □ 표시는 다른 웨이의 사용 플래그(입력)가 모두 1인 경우와, 대응하는 출력값을 나타낸다. 도면 중의 *a∼*d는 다음 식 1∼식 4를 각각 만족시키는 것을 의미한다. 여기서 &는 논리곱을 나타낸다.
(U1_in)&(U2_in)&(U3_in)=0 (식 1)
(U0_in)&(U2_in)&(U3_in)=0 (식 2)
(U0_in)&(U1_in)&(U3_in)=0 (식 3)
(U0_in)&(U1_in)&(U2_in)=0 (식 4)
동 도면에서, No.1∼No.4의 행은, 웨이 0이 히트한 경우(h0=1)를 나타낸다. 이 경우, 히트한 웨이 0의 사용 플래그(UO_in)의 값이 O이든지 1이든지, 사용 플래그(UO_out)는, 1이 된다. 또, 다른 웨이의 사용 플래그(U1_out∼U2_out)는, *a의 경우에는 갱신되지 않지만, □ 표시와 같이 입력 시에 모두 1인 경우에는, 모두 0으로 갱신된다. No. 5∼8, No. 9∼12, No. 13∼16에 대해서도, 히트한 웨이가 1, 2, 3인 점을 제외하고 동일하다.
〈회로예〉
도 8은, 도 7의 입출력 논리를 갖는 플래그 갱신부(39)의 구체적인 회로예를 도시한 도면이다. 동 도면의 플래그 갱신부(39)는, AND 회로(80∼83), AND 회로(84∼87), OR 회로(88), OR 회로(89∼92), 셀렉터(93∼96)를 구비한다.
AND 회로(80∼83)는, 세트 인덱스에 의하여 선택된 세트로부터 독출된, 웨이 0∼웨이 3의 사용 플래그(U0_in∼U3_in) 중, 유효 플래그(V)가 1(유효)인 캐시 엔트리의 사용 플래그(U0_in∼U3_in)의 값을 출력한다.
AND 회로(84∼87) 및 OR 회로(88)는, AND 회로(80∼83)의 출력이 도 7에 도시한 *a∼*d를 만족시키지 않는 경우, 즉 동 도면 중 입력란의 □ 표시의 케이스를 검출한다. 다시 말해서, 히트한 웨이 외의 웨이의 사용 플래그(U_in)가 모두 1인 경우를 검출한다.
OR 회로(89∼92)는, 각각 히트 신호(h0∼h3)와 사용 플래그(U0_in∼U3_in)의 OR를 취한다.
셀렉터(93∼96)는, 상기 □ 표시의 케이스가 검출된 경우에는 1측(상측) 입력을 선택하고, 상기 □ 표시의 케이스가 검출되지 않는 경우에는 0측(하측) 입력을 선택하여, 선택 결과를 UO_out∼U1_out로서 출력한다. 구체적으로는, 상기 □ 표시의 케이스가 검출된 경우에는, 셀렉터(93∼96)의 1측(상측)에 h0∼h3이 입력되 어 있으므로, 히트한 웨이의 사용 플래그(U_out)가 1이 되고, 다른 웨이의 사용 플래그는 0이 된다. 상기 □ 표시의 케이스가 검출되지 않는 경우에는, 셀렉터(93∼96)의 0측의 각각에 h 신호와 사용 플래그(U_in)의 OR가 입력되어 있으므로, 히트한 웨이의 사용 플래그(U_out)가 1이 되고, 다른 웨이의 사용 플래그는 원래의 상태가 된다.
이와 같은 회로에 의하여 도 7의 진리값표를 하드웨어화할 수 있다. 개개의 웨이의 액세스 순서를 도시할 필요 없이, 각 웨이에 1비트의 사용 플래그를 갱신하기만 하면 되므로, 하드웨어 규모를 삭감할 수 있다.
〈리플레이스 처리〉
도 9는, 리플레이스부(40)에 있어서의 리플레이스 처리를 도시한 플로우차트이다. 동 도면에 있어서 리플레이스부(40)는, 메모리 액세스가 미스되었을 때(단계 S91), 세트 인덱스에 의하여 선택된 세트에 있어서의, 4개 웨이의 사용 플래그(U)를 독출하고(단계 S92), 사용 플래그(U)가 0인 웨이를 1개 선택한다(스텝 S93). 이 때, 사용 플래그(U)가 O으로 되어 있는 웨이가 복수 존재하는 경우는, 리플레이스부(40)는 랜덤하게 1개를 선택한다. 또한, 리플레이스부(40)는, 해당 세트에 있어서의 선택된 웨이의 캐시 엔트리를 대상으로 리플레이스하고(단계 S94), 리플레이스 후에 해당 캐시 엔트리의 사용 플래그(U)를 1로 초기화한다(단계 S95). 또한, 이 때 유효 플래그(V), 더티 플래그(D)는, 각각 1, O으로 초기화된다.
또한, 도 9에서는, 4개 유효 플래그(V)가 모두 1(유효)인 것을 전제로 하고 있지만, V=O(무효)인 캐시 엔트리가 존재하는 경우에는 해당 캐시 엔트리를 선택한 다.
이와 같이, 리플레이스 대상은, 사용 플래그가 0인 캐시 엔트리를 1개 선택함으로써 결정된다. 이 리플레이스 알고리즘은, 종래의 LRU 방식에 있어서의 액세스 순서를 나타내는 데이터 대신에 1비트의 사용 플래그를 이용하기 때문에, 의사적인 LRU 방식이라고 할 수 있다.
이상 설명한 바와 같이, 본 실시 형태에 있어서의 캐시 메모리에 의하면, 종래의 LRU 방식에 있어서의 액세스 순서를 나타내는 데이터를 캐시 엔트리마다 설정하는 대신에, 1비트의 사용 플래그를 캐시 엔트리마다 설정하고 있다. 이에 따라, 종래의 액세스 순서 데이터를 갱신하는 복잡한 회로를, 사용 플래그를 갱신하는 간단한 플래그 갱신 회로(플래그 갱신부(39))로 치환할 수 있다. 또, 리플레이스부(40)에 있어서, 리플레이스 대상을, 사용 플래그가 0인 캐시 엔트리 중 1개를 선택함으로써 간단히 결정할 수 있다. 이와 같이, 본 실시 형태에 있어서의 캐시 메모리에 의하면, 하드웨어 규모를 크게 저감할 수 있다. 뿐만 아니라, 종래의 LRU와 비교해서도 거의 동등한 히트율을 얻을 수 있다.
〈변형예〉
또한, 본 발명의 캐시 메모리는, 상기한 실시 형태의 구성에 한정되는 것은 아니며, 여러 가지의 변형이 가능하다. 이하, 변형예 몇 가지에 관하여 설명한다.
(1)플래그 갱신부(39)는, 도 5의 하단에 도시한 바와 같이 세트 내의 다른 웨이의 사용 플래그(U0∼U3)가 모두 1이면 0으로 하고, 히트한 웨이 자신의 사용 플래그를 1로 갱신하지만, 이 대신에, 히트한 웨이 자신의 사용 플래그도 O으로 갱 신하는 구성으로 하여도 된다. 도 10에, 이 경우의 플래그의 갱신예를 도시한다. 도 10은, 도 5와 비교하여, 하단의 웨이 3이 1이 아니라 0으로 되어 있는 점이 상이하다.
도 11은 이 변형예에 있어서의 플래그 갱신 처리를 도시한 플로우차트이다. 동 도면은, 도 6과 비교하여, 단계 S65 대신에 단계 S65a를 갖고 있는 점이 상이하다. 동일한 점은 설명을 생략하고, 다른 점만 설명한다. 단계 S65a에서는, 플래그 갱신부(39)는, 세트 내의 모든 사용 플래그(U0∼U3)를 0으로 리셋한다.
이와 같이, 도 11의 플래그 갱신 처리에 의하면, 세트 내의 모든 사용 플래그(U0∼U3)가 1이 되고자 할 때, 0으로 리셋한다. 도 11에 의해서도, 도 5와 동일한 히트율을 얻을 수 있다.
(2)도 9에 도시한 단계 S93에서, 리플레이스부(40)는, 세트 내에 사용 플래그가 0인 캐시 엔트리가 복수 존재하는 경우에는, 랜덤하게 하나를 선택하고 있지만, 이 대신에, 규칙적으로 선택하여도 된다. 예를 들면, 리플레이스부(40)는, 그 경우에, 웨이의 번호가 작은 쪽(큰 쪽)을 선택하거나, 라운드 로빈 방식으로 선택하여도 된다.
도 12A에, 라운드 로빈 방식으로 선택하는 처리를 도시한다. 동 도면에 있어서 리플레이스부(40)는, 세트 내에 사용 플래그가 0인 캐시 엔트리가 복수 존재하는 경우에, 전회 리플레이스한 웨이의 번호를 판별하고(단계 S121), 사용 플래그가 0인 캐시 엔트리 중, 판별한 번호보다 큰 번호의 웨이의 캐시 엔트리를 선택한다(단계 S122). 여기서, 전회 리플레이스한 번호는, 예를 들면, 캐시 메모리 전체 에서 리플레이스한 웨이의 번호를 유지하는 레지스터를 설치하여 두고, 해당 레지스터를 참조함으로써 판별하면 된다. 이 레지스터는, 웨이의 번호를 유지하는 대신에, 리플레이스한 웨이를 비트 위치에서 나타내도록 하여도 된다. 이 경우의 레지스터의 일례를 도 12B에 도시한다. 동 도면에서는 레지스터 중의 4비트의 필드가 천이(遷移)하는 모습을 도시하고 있다. 이 4비트의 비트 위치는 웨이 0∼웨이 3에 대응한다. 4비트 중의 "1"의 비트는 전회 리플레이스된 웨이를 나타낸다. 단계 S122에서는, 리플레이스부(40)는, 또한 세트 내의 사용 플래그가 O인 캐시 엔트리 중에서, "1"의 비트로부터 오른쪽으로 회전하는 방향의 바로 옆의 비트를 판별하고, 그 비트 위치에 대응하는 웨이의 캐시 엔트리를 선택한다. 동 도면의 예에서는, 웨이 0, 1, 3, 0, 2의 순서로 캐시 엔트리가 선택되어 있다.
또한, 도 12B에서는, 전 세트에서 공통의 레지스터를 도시하고 있지만, 세트마다 개별로 레지스터를 구비하는 것도 가능하다.
(3)상기 실시 형태에서는, 4웨이·세트·어소시에이티브의 캐시 메모리를 예로 설명하였지만, 웨이 수는, 8웨이이어도 16웨이어도 된다. 또, 상기 실시 형태에서는, 세트 수가 16인 예를 설명하였지만, 세트 수는 몇 개이어도 상관없다.
(4)상기 실시 형태에서는, 세트·어소시에이티브의 캐시 메모리를 예로 설명하였지만, 풀·어소시에이티브 방식의 캐시 메모리이어도 된다.
(5)사용 플래그(U)는 1비트가 아니더라도 2비트로 하여도 된다. 예를 들면, 2비트로 한 경우라도 개개의 캐시 엔트리의 액세스 순서를 완전히 나타낼 필요는 없으며, 적어도 오래 되었는지 새로운지의 두 상태를 상대적으로 판별할 수 있으면 되고, 2비트로 표현할 수 있는 3번째의 상태 및 4번째의 상태를 어떻게 정의하여도 상관없다.
(6)도 9에 도시한 단계 S95에서, 리플레이스 직후의 사용 플래그(U)는 1로 초기화되지만, 이 대신에 0으로 초기화하여도 된다. 단, 사용 플래그의 초기값을 0으로 한 경우는, 리플레이스 후에 발생한 캐시 미스에 의하여 재차 리플레이스되어 버릴 가능성이 있다. 이 점에서는, 초기값은 1로 하는 편이 바람직하다고 판단된다.
(실시 형태 2)
도 13은, 본 발명의 실시 형태 2에 있어서의 캐시 메모리의 구성을 도시한 블록도이다. 동 도면의 캐시 메모리는, 도 2의 구성과 비교하여, 웨이(31a∼31d) 대신에 웨이(131a∼131d)를 구비하는 점과, 제어부(38) 대신에 제어부(138)를 구비하는 점이 상이하다. 이하, 동일한 점은 설명을 생략하고, 다른 점을 중심으로 설명한다.
웨이(131a)는, 웨이(31a)와 비교하여, 각 캐시 엔트리 중에 뉴(new) 플래그가 추가되어 있는 점이 상이하다.
도 14에, 웨이(131a) 내의 하나의 캐시 엔트리의 비트 구성을 도시한다. 동 도면과 같이, 뉴 플래그(N)가 추가되어 있는 점만 상이하다. 뉴 플래그(N)는, 리플레이스 직후(또는 필(fill) 직후)에 초기값으로서 1이 설정되고, 해당 캐시 엔트리에 대한 액세스가 있었을 때에 0으로 리셋된다. 즉, 뉴 플래그(N)의 1은, 해당 캐시 엔트리가 리플레이스(또는 필)되고 나서 한번도 액세스 되지 않은, 새로운 상 태인 것을 의미한다.
제어부(138)는, 도 15에 도시하는 바와 같이, 제어부(138)는, 플래그 갱신부(139)와 리플레이스부(140)를 구비하고, 제어부(38)와 비교하여, 뉴 플래그(N)의 설정 및 갱신하는 점과, 리플레이스 시에 뉴 플래그가 1인 캐시 엔트리를 리플레이스 대상에서 제외하는 점이 상이하다.
〈리플레이스 처리〉
도 16은, 리플레이스부(140)에 있어서의 리플레이스 처리를 도시한 플로우차트이다. 동 도면은, 도 9와 비교하여, 단계 S92 대신에 단계 S92a를 갖는 점과, 단계 92a와 93의 사이에 단계 S161 및 S162가 추가된 점과, 단계 S95 대신에 단계 S95a를 갖는 점이 상이하다.
단계 S92a에서 리플레이스부(140)는, 세트 인덱스에 의하여 선택된 세트에 있어서의, 4개 웨이의 사용 플래그(U0∼U3)에 더하여 4개의 뉴 플래그(NO∼N3으로 한다)를 독출한다.
또한, 리플레이스부(140)는, 독출한 4개의 뉴 플래그(NO∼N3)가 모두 1인지 아닌지를 판정하고(단계 S161), 모두가 1인 경우는, 단계 S93으로 진행하고, 모두가 1이 아닌(0이 있는) 경우에는, 사용 플래그(U)가 0인 웨이 중, 뉴 플래그(N)가 1인 웨이를 제외한다(스텝 S162).
또한, 단계 S93에서, 리플레이스부(140)는, 사용 플래그가 0이면서 뉴 플래그가 0인 웨이 중에서 리플레이스 대상을 하나 선택하게 된다. 단, 4개의 뉴 플래그가 모두 1인 경우에는, 사용 플래그(U)가 0인 웨이 중에서 리플레이스 대상을 하 나 선택하고, 4개의 사용 플래그(U)가 모두 1인 경우에는, 뉴 플래그(N)를 무시하여 사용 플래그(U)가 1인 웨이 중에서 리플레이스 대상을 하나 선택하고, 사용 플래그 U=O이면서 뉴 플래그N=O인 웨이가 존재하지 않는 경우에는, 뉴 플래그(N)를 무시하여 사용 플래그 U=O인 웨이 중에서 리플레이스 대상을 하나 선택한다.
또, 단계 S95a에서, 리플레이스부(140)는, 다른 플래그의 초기화와 더불어, 뉴 플래그(N)를 1로 초기화한다.
〈플래그 갱신 처리〉
도 17은, 플래그 갱신부(139)에 있어서의 플래그 갱신 처리를 도시한 플로우차트이다. 동 도면은, 도 6과 비교하여, 단계 S62와 S63 사이에 단계 S171이 추가된 점이 상이하다.
단계 S171에서 플래그 갱신부(139)는, 선택된 세트 내의 히트한 웨이의 캐시 엔트리의 뉴 플래그가 1이면 0으로 리셋한다. 이에 따라, 액세스된 캐시 엔트리는, 뉴 플래그(N)를 O으로 리셋한다.
이상 설명해온 바와 같이, 본 실시 형태에 있어서의 리플레이스부(140)는, 뉴 플래그가 1인 경우는, 해당 캐시 엔트리를 리플레이스 대상에서 제외하고 있다. 이것은, 다음의 이유에 근거한다. 즉, 사용 플래그(U)는 초기값이 1이지만 다른 웨이의 사용 플래그가 순차 1이 되면, 0으로 리셋된다. 즉, 사용 플래그(U)가 0인 캐시 엔트리라 하더라도 한번도 액세스되지 않은 경우가 있다. 이렇게 해서 사용 플래그가 O이 된 경우, 리플레이스 후에 한번도 액세스되지 않은 캐시 엔트리가, 캐시 미스의 발생에 의하여 두 번째 리플레이스 대상으로 선택되어 버릴 가능성이 있다. 그 때문에, 뉴 플래그(N)를 설치함으로써, 리플레이스된 후에 한번도 액세스되지 않은 캐시 엔트리가 리플레이스되어 버리는 것을 방지할 수 있다.
〈변형예〉
(1)실시 형태 1에 있어서의 변형예(1)∼(5)를 본 실시 형태에 적용하여도 된다.
(2)도 16에 도시한 단계 S95a에서, 리플레이스 직후의 사용 플래그(U)는 1로 초기화되지만, 이 대신에 0으로 초기화하여도 된다. 실시 형태 1과 달리 본 실시 형태에서는 뉴 플래그(N)가 설치되었기 때문에, 사용 플래그의 초기값이 1인 경우에서도 O인 경우에서도, 리플레이스 후에 발생한 캐시 미스에 의하여 한번도 액세스되지 않은 상태에서 다시 리플레이스되어 버리는 것을 방지할 수 있다.
(3)상기 각 실시 형태에 있어서의 캐시 메모리는, 프로세서와 더불어 칩에 내장되는 온 칩(on-chip) 캐시, 오프 칩(off-chip) 캐시, 명령 캐시, 데이터 캐시 중 어느 것에 적용하여도 된다.
본 발명은, 메모리 액세스를 고속화하기 위한 캐시 메모리 및 그 제어 방법에 적합하며, 예를 들면, 온 칩 캐시 메모리, 오프 칩 캐시 메모리, 데이터 캐시 메모리, 명령 캐시 메모리 등에 적합하다.

Claims (18)

  1. 캐시의 단위가 되는 데이터를 유지하는 캐시 엔트리마다, 액세스의 유무를 나타내는 1비트의 액세스 정보를 기억하는 기억 수단과,
    액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서 리플레이스(replace) 대상의 캐시 엔트리를 선택하는 선택 수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  2. 제1항에 있어서,
    상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서, 랜덤하게 하나의 캐시 엔트리를 선택하는 것을 특징으로 하는 캐시 메모리.
  3. 제1항에 있어서,
    상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서, 라운드 로빈 방식으로 하나의 캐시 엔트리를 선택하는 것을 특징으로 하는 캐시 메모리.
  4. 제1항에 있어서,
    상기 캐시 메모리는, 또한,
    캐시 엔트리에 히트하였을 때 해당 캐시 엔트리에 대응하는 액세스 정보를 액세스 있음으로 갱신하고, 그 때에 다른 모든 캐시 엔트리에 대응하는 액세스 정보가 액세스 있음을 나타내는 경우에는, 다른 모든 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음으로 리셋하는 갱신 수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  5. 제4항에 있어서,
    상기 갱신 수단은, 또한, 상기 리셋에 있어서 상기 히트한 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음으로 리셋하는 것을 특징으로 하는 캐시 메모리.
  6. 제5항에 있어서,
    상기 기억 수단은, 또한, 캐시 엔트리마다, 메모리로부터 캐시 엔트리에 데이터가 격납된 직후의 새로운 상태인지 아닌지를 나타내는 뉴(new) 정보를 기억하고,
    상기 갱신 수단은, 또한, 캐시 엔트리에 히트하였을 때 해당 캐시 엔트리에 대응하는 뉴 정보를 새로운 상태가 아닌 것을 나타내도록 리셋하고,
    상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서, 새로운 상태가 아닌 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리를 우선하여, 리플레이스 대상의 캐시 엔트리를 선택하는 것을 특징으로 하는 캐시 메모리.
  7. 제6항에 있어서,
    상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하고, 또한 새로운 상태가 아닌 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리가 존재하지 않는 경우에는, 뉴 정보를 무시하고, 리플레이스 대상의 캐시 엔트리를 선택하는 것을 특징으로 하는 캐시 메모리.
  8. 제6항에 있어서,
    상기 선택 수단은, 액세스 있음을 나타내는 액세스 정보에 대응하거나, 또는 새로운 상태인 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리만이 존재하는 경우에는, 뉴 정보를 무시하고, 리플레이스 대상의 캐시 엔트리를 선택하는 것을 특징으로 하는 캐시 메모리.
  9. 제1항에 있어서,
    상기 캐시 메모리는, 세트·어소시에이티브(set associative) 방식이며,
    또한, 캐시 엔트리에 히트하였을 때 해당 캐시 엔트리에 대응하는 액세스 정보를 액세스 있음으로 갱신하고, 그 때에 해당 캐시 엔트리와 동일한 세트 내에서의 다른 모든 캐시 엔트리에 대응하는 액세스 정보가 액세스 있음을 나타내는 경우에는, 상기 동일한 세트 내에서의 다른 모든 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음으로 리셋하는 갱신 수단을 구비하는 것을 특징으로 하는 캐시 메모 리.
  10. 제9항에 있어서,
    상기 갱신 수단은, 또한, 상기 리셋에 있어서 캐시 히트한 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음으로 리셋하는 것을 특징으로 하는 캐시 메모리.
  11. 제10항에 있어서,
    상기 기억 수단은, 또한, 캐시 엔트리마다, 캐시 엔트리에 데이터가 격납된 직후의 새로운 상태인지 아닌지를 나타내는 뉴 정보를 기억하고,
    상기 갱신 수단은, 또한, 캐시 엔트리에 히트하였을 때 해당 캐시 엔트리에 대응하는 뉴 정보를 새로운 상태가 아닌 것을 나타내도록 리셋하고,
    상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하고, 또한 새로운 상태가 아닌 것을 나타내는 뉴 정보에 대응하는 상기 동일 세트 내의 캐시 엔트리 중에서, 리플레이스 대상의 캐시 엔트리를 선택하는 것을 특징으로 하는 캐시 메모리.
  12. 제11항에 있어서,
    상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하고, 또한 새로운 상태가 아닌 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리가 존재하지 않는 경우에는, 뉴 정보를 무시하고, 리플레이스 대상의 캐시 엔트리를 선택하는 것 을 특징으로 하는 캐시 메모리.
  13. 제11항에 있어서,
    상기 선택 수단은, 액세스 있음을 나타내는 액세스 정보에 대응하거나, 또는 새로운 상태인 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리만이 존재하는 경우에는, 뉴 정보를 무시하고, 리플레이스 대상의 캐시 엔트리를 선택하는 것을 특징으로 하는 캐시 메모리.
  14. 제1항에 있어서,
    상기 캐시 메모리는, 또한,
    캐시 엔트리에 히트한 것을 검출하는 수단과,
    히트한 것이 검출된 캐시 엔트리에 대응하는 액세스 정보를 액세스 있음으로 갱신하는 제1 갱신 수단과,
    히트한 것이 검출된 캐시 엔트리 이외의 다른 모든 캐시 엔트리에 대응하는 액세스 정보가 액세스 있음을 나타내는지 아닌지를 판정하는 판정 수단과,
    판정 수단의 판정 결과가 긍정인 경우에, 다른 모든 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음을 나타내도록 갱신하는 제2 갱신 수단을 갖는 것을 특징으로 하는 캐시 메모리.
  15. 제14항에 있어서,
    상기 기억 수단은, 또한, 캐시 엔트리마다, 메모리로부터 캐시 엔트리에 데이터가 격납된 직후의 새로운 상태인지 아닌지를 나타내는 뉴 정보를 기억하고,
    상기 제1 갱신 수단은, 또한, 히트한 것이 검출된 캐시 엔트리에 대응하는 뉴 정보를 새로운 상태가 아닌 것을 나타내도록 리셋하고,
    상기 선택 수단은, 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서, 새로운 상태가 아닌 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리를 우선하여, 리플레이스 대상의 캐시 엔트리를 선택하는 것을 특징으로 하는 캐시 메모리.
  16. 제1항에 있어서,
    상기 캐시 메모리는, 세트·어소시에이티브 방식이며,
    또한, 캐시 엔트리에 히트한 것을 검출하는 수단과,
    히트한 것이 검출된 캐시 엔트리에 대응하는 액세스 정보를 액세스 있음으로 갱신하는 제1 갱신 수단과,
    히트한 것이 검출된 캐시 엔트리와 동일한 세트 내에서의 다른 모든 캐시 엔트리에 대응하는 액세스 정보가 액세스 있음을 나타내는지 아닌지를 판정하는 판정 수단과,
    판정 수단의 판정 결과가 긍정인 경우에, 다른 모든 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음을 나타내도록 갱신하는 제2 갱신 수단을 갖는 것을 특징으로 하는 캐시 메모리.
  17. 제16항에 있어서,
    상기 기억 수단은, 또한, 캐시 엔트리마다, 캐시 엔트리에 데이터가 격납된 직후의 새로운 상태인지 아닌지를 나타내는 뉴 정보를 기억하고,
    상기 제1 갱신 수단은, 또한, 히트한 것이 검출된 캐시 엔트리에 대응하는 뉴 정보를 새로운 상태가 아닌 것을 나타내도록 리셋하고,
    상기 선택 수단은, 상기 동일한 세트 내에서 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서, 새로운 상태가 아닌 것을 나타내는 뉴 정보에 대응하는 캐시 엔트리를 우선하여, 리플레이스 대상의 캐시 엔트리를 선택하는 것을 특징으로 하는 캐시 메모리.
  18. 캐시 메모리의 캐시 엔트리마다, 액세스의 유무를 나타내는 액세스 정보를 기억하는 기억부를 갖는 캐시 메모리의 제어 방법으로서,
    캐시 히트 및 미스를 검출하는 검출 단계와,
    히트한 것이 검출된 캐시 엔트리에 대응하는 1비트의 액세스 정보를 액세스 있음으로 갱신하는 제1 갱신 단계와,
    히트한 것이 검출된 캐시 엔트리 이외의 다른 모든 캐시 엔트리에 대응하는 액세스 정보가 액세스 있음을 나타내는지 아닌지를 판정하는 판정 단계와,
    판정 수단의 판정 결과가 긍정인 경우에, 다른 모든 캐시 엔트리에 대응하는 액세스 정보를 액세스 없음을 나타내도록 갱신하는 제2 갱신 단계와,
    미스한 것이 검출되었을 때, 액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서 리플레이스 대상의 캐시 엔트리를 선택하는 선택 단계를 갖는 것을 특징으로 하는 제어 방법.
KR1020057024622A 2003-09-19 2004-08-23 캐시 메모리 및 캐시 메모리 제어 방법 KR20060063804A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2003-00327032 2003-09-19
JP2003327032 2003-09-19

Publications (1)

Publication Number Publication Date
KR20060063804A true KR20060063804A (ko) 2006-06-12

Family

ID=34372854

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057024622A KR20060063804A (ko) 2003-09-19 2004-08-23 캐시 메모리 및 캐시 메모리 제어 방법

Country Status (7)

Country Link
US (1) US20070028055A1 (ko)
EP (1) EP1667028A4 (ko)
JP (1) JP4009304B2 (ko)
KR (1) KR20060063804A (ko)
CN (1) CN100429632C (ko)
TW (1) TW200525356A (ko)
WO (1) WO2005029336A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100772196B1 (ko) * 2005-12-06 2007-11-01 한국전자통신연구원 Pci 메모리를 이용한 무복사 캐싱 방법 및 그 장치

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953935B2 (en) 2005-04-08 2011-05-31 Panasonic Corporation Cache memory system, and control method therefor
US7516275B2 (en) * 2006-04-25 2009-04-07 International Business Machines Corporation Pseudo-LRU virtual counter for a locking cache
SK287315B6 (sk) 2006-06-02 2010-06-07 Biotika, A. S. Spôsob izolácie polymyxínu B z vyfermentovanej pôdy
SK287293B6 (sk) 2006-06-15 2010-05-07 Biotika, A. S. Spôsob fermentácie polymyxínu B pomocou produkčného mikroorganizmu Bacillus polymyxa
US20080292560A1 (en) * 2007-01-12 2008-11-27 Dov Tamarkin Silicone in glycol pharmaceutical and cosmetic compositions with accommodating agent
US7861041B2 (en) * 2007-09-04 2010-12-28 Advanced Micro Devices, Inc. Second chance replacement mechanism for a highly associative cache memory of a processor
US8214602B2 (en) * 2008-06-23 2012-07-03 Advanced Micro Devices, Inc. Efficient load queue snooping
TW201015319A (en) * 2008-09-17 2010-04-16 Panasonic Corp Cache memory, memory system, data copying method and data rewriting method
TW201017421A (en) * 2008-09-24 2010-05-01 Panasonic Corp Cache memory, memory system and control method therefor
JP6340874B2 (ja) * 2014-03-31 2018-06-13 ブラザー工業株式会社 非吐出ノズル検出装置
CN107992433A (zh) * 2017-12-19 2018-05-04 北京云知声信息技术有限公司 二级缓存检测方法及装置
US10783083B2 (en) * 2018-02-12 2020-09-22 Stmicroelectronics (Beijing) Research & Development Co. Ltd Cache management device, system and method

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4195343A (en) * 1977-12-22 1980-03-25 Honeywell Information Systems Inc. Round robin replacement for a cache store
JPS55157181A (en) * 1979-05-25 1980-12-06 Nec Corp Buffer memory control system
FR2645986B1 (fr) * 1989-04-13 1994-06-17 Bull Sa Procede pour accelerer les acces memoire d'un systeme informatique et systeme pour la mise en oeuvre du procede
JPH04288647A (ja) * 1991-02-27 1992-10-13 Mitsubishi Electric Corp キャッシュメモリにおける置き換え制御装置
US5497477A (en) * 1991-07-08 1996-03-05 Trull; Jeffrey E. System and method for replacing a data entry in a cache memory
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
JP3309425B2 (ja) * 1992-05-22 2002-07-29 松下電器産業株式会社 キャッシュ制御装置
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
US5802568A (en) * 1996-06-06 1998-09-01 Sun Microsystems, Inc. Simplified least-recently-used entry replacement in associative cache memories and translation lookaside buffers
US5809528A (en) * 1996-12-24 1998-09-15 International Business Machines Corporation Method and circuit for a least recently used replacement mechanism and invalidated address handling in a fully associative many-way cache memory
US6032228A (en) * 1997-11-26 2000-02-29 International Business Machines Corporation Flexible cache-coherency mechanism
US6393525B1 (en) * 1999-05-18 2002-05-21 Intel Corporation Least recently used replacement method with protection
US6282617B1 (en) * 1999-10-01 2001-08-28 Sun Microsystems, Inc. Multiple variable cache replacement policy
US20030105929A1 (en) * 2000-04-28 2003-06-05 Ebner Sharon M. Cache status data structure
JP3661614B2 (ja) * 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
JP2003131946A (ja) * 2001-10-19 2003-05-09 Nec Corp キャッシュメモリ制御装置及び方法
US20030084253A1 (en) * 2001-10-31 2003-05-01 Johnson David J.C. Identification of stale entries in a computer cache
US6996678B1 (en) * 2002-07-31 2006-02-07 Cisco Technology, Inc. Method and apparatus for randomized cache entry replacement

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100772196B1 (ko) * 2005-12-06 2007-11-01 한국전자통신연구원 Pci 메모리를 이용한 무복사 캐싱 방법 및 그 장치

Also Published As

Publication number Publication date
JPWO2005029336A1 (ja) 2006-11-30
TW200525356A (en) 2005-08-01
WO2005029336A1 (ja) 2005-03-31
EP1667028A1 (en) 2006-06-07
EP1667028A4 (en) 2008-10-29
JP4009304B2 (ja) 2007-11-14
CN100429632C (zh) 2008-10-29
US20070028055A1 (en) 2007-02-01
CN1853171A (zh) 2006-10-25

Similar Documents

Publication Publication Date Title
JP4098347B2 (ja) キャッシュメモリおよびその制御方法
US4811209A (en) Cache memory with multiple valid bits for each data indication the validity within different contents
US7065613B1 (en) Method for reducing access to main memory using a stack cache
US7844778B2 (en) Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements
US7321954B2 (en) Method for software controllable dynamically lockable cache line replacement system
KR20060063804A (ko) 캐시 메모리 및 캐시 메모리 제어 방법
WO2011049051A1 (ja) キャッシュメモリおよびその制御方法
US7831774B2 (en) Pipelining D states for MRU steerage during MRU-LRU member allocation
CN100517273C (zh) 高速缓冲存储器及其控制方法
JP4009306B2 (ja) キャッシュメモリおよびその制御方法
CN109074313B (zh) 缓存和方法
US6272033B1 (en) Status bits for cache memory
KR100395768B1 (ko) 멀티 레벨 캐쉬 시스템
US20160217079A1 (en) High-Performance Instruction Cache System and Method
EP0997821A1 (en) Cache memory having a freeze function
US7007136B2 (en) Storage device and cache memory device in set associative system
US7039751B2 (en) Programmable cache system
JP4008946B2 (ja) キャッシュメモリ及びその制御方法
JP3078303B2 (ja) キャッシュメモリ制御回路
JPH0659977A (ja) 明示的なライン置換え操作が可能なキャッシュメモリとその制御方法
JPH11328030A (ja) 記憶システム
JPH06139146A (ja) キャッシュメモリ
KR19990068873A (ko) 캐쉬 메모리
KR20020037855A (ko) 캐시 메모리
JPH04262437A (ja) キャッシュメモリにおけるキャッシュデータリプレース装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid