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

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

Info

Publication number
KR20060086967A
KR20060086967A KR1020067009494A KR20067009494A KR20060086967A KR 20060086967 A KR20060086967 A KR 20060086967A KR 1020067009494 A KR1020067009494 A KR 1020067009494A KR 20067009494 A KR20067009494 A KR 20067009494A KR 20060086967 A KR20060086967 A KR 20060086967A
Authority
KR
South Korea
Prior art keywords
cache
line
caching
cache entry
address
Prior art date
Application number
KR1020067009494A
Other languages
English (en)
Other versions
KR100826757B1 (ko
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 KR20060086967A publication Critical patent/KR20060086967A/ko
Application granted granted Critical
Publication of KR100826757B1 publication Critical patent/KR100826757B1/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
    • 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

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

본 발명의 캐시 메모리는, 라인 데이터를 유지하는 캐시 엔트리마다, 해당 캐시 엔트리에 이후에 기입이 행하여지는지의 여부를 나타내는 클리닝 플래그(C)를 부여하는 C플래그 설정부(40)와, 기입이 행하여지지 않음을 나타내는 클리닝 플래그(C)가 부여되고, 또한 기입되었음을 나타내는 더티 플래그(D)가 세트되어 있는 캐시 엔트리의 라인 데이터를 메모리에 라이트백하는 클리닝 처리부(39)를 구비한다.

Description

캐시 메모리 및 그 제어 방법{CACHE MEMORY AND CONTROL METHOD THEREOF}
본 발명은, 프로세서의 메모리 액세스를 고속화하기 위한 캐시 메모리 및 그 제어 방법에 관한 것이다.
최근, 캐시 메모리는, 메인 메모리에의 액세스 시간을 단축하여 프로세서의 처리 능력의 향상을 도모하기 위해서 널리 사용되고 있다.
프로세서로부터 캐시 메모리에 데이터가 기입된 경우, 메인 메모리와 캐시 메모리에서 데이터의 일관성을 확보하기 위해서 캐시 메모리로부터 메인 메모리에 라이팅 백(writing back)할 필요가 있다. 이 라이팅 백의 제어 방식에는, 라이트스루 방식 및 라이트백 방식이 있다.
라이트스루 방식에서는, 프로세서로부터 캐시 메모리에 라이트 명령을 실행할 때에 캐시 메모리와 주기억의 양쪽에 기입을 행한다. 이 라이트스루 방식에 의하면, 캐시 메모리에 데이터를 기입할 때마다 라이트백 패널티가 발생하므로, 메모리 라이트에 대하여 메모리 액세스 시간을 단축하는 효과가 희박하다.
한편, 라이트백 방식은, 라이트 명령 실행 시에 캐시 메모리에만 기입을 행하고, 캐시 미스에 의해 더티 라인을 새로운 다른 데이터로 치환하기 직전에 캐시 메모리로부터 메인 메모리에 라이트백한다. 이 라이트백 방식은, 메모리 라이트마 다 라이트백 패널티가 발생하는 것은 아니지만, 메모리 리드 및 메모리 라이트에서 캐시 미스 발생 시에는 로드 패널티에 더하여 라이트백 패널티를 발생시키기 때문에 캐시 미스 시의 패널티가 늘어나게 된다. 여기에서 로드 패널티는, 메인 메모리로부터 캐시 메모리에 새로운 데이터를 로드하는 것에 의한 패널티를 말한다. 라이트백 패널티는, 캐시 메모리로부터 메인 메모리에 데이터를 라이팅 백하는 것에 의한 패널티를 말한다.
이러한 캐시 미스 패널티를 저감하는 종래 기술은, 예를 들어, 특허문헌 1 등에 개시되어 있다.
이 종래 기술에 의하면, 라이트백 방식의 캐시 메모리에서, 캐시 메모리로부터 데이터를 내보내기 위한 메인 메모리에의 통상의 라이팅 백 처리와는 달리, 캐시 메모리의 데이터를 메인 메모리에 라이팅 백하는 것만을 위한 라이팅 백 처리를 행한다. 후자의 처리는, 우선 캐시 메모리 중 1개의 엔트리의 데이터가 더티한지의 여부를 판정하여, 더티한 경우에는 그 데이터를 메인 메모리에 라이팅 백한다. 그리고, 라이팅 백이 정상 종료하고, 또한 캐시 메모리 상의 데이터가 변화하지 않았음을 확인하고, 캐시 상태를 클린으로 한다.
이와 같이 하여 종래 기술에서의 캐시 메모리는, 캐시 메모리로부터 메인 메모리에의 트래픽을 감소시켜, 시스템 전체의 성능 향상을 도모하고 있다.
특허문헌 1 : 일본국 특개평 6-309231호 공보
그러나, 상기 종래 기술에 의하면, 캐시 미스가 발생하기 전에 더티한 엔트리의 데이터를 메모리에 라이트백하여도, 그 라이트백의 직후에 해당 엔트리에 데이터가 기입된 경우에, 오히려 효율이 저하한다는 문제가 있다.
상기 과제를 감안하여 본 발명은, 캐시 미스 시의 라이트백 패널티를 효율적으로 저감하는 캐시 메모리를 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위해서 본 발명의 캐시 메모리는, 라인 데이터를 유지하는 캐시 엔트리마다, 해당 캐시 엔트리에 캐싱을 종료하여도 되는지의 여부를 나타내는 캐싱 종료 속성을 부여하는 부여 수단과, 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성이 부여되고, 또한 기입되었음을 나타내는 더티 플래그가 세트되어 있는 캐시 엔트리를 선택하는 선택 수단과, 선택된 캐시 엔트리의 라인 데이터를 캐시 미스의 발생과 무관계하게 메모리에 라이트백하는 라이트백 수단을 구비한다.
이 구성에 따르면, 캐싱을 종료하여도 되는 캐시 엔트리를, 캐시 미스가 발생하기 전에 라이트백하므로, 캐시 미스 시에는 로드 패널티가 발생할 뿐이며 라이트백 패널티의 발생을 저감할 수 있다. 이에 의해 캐시 메모리의 효율을 향상시켜, 액세스 속도를 향상시킬 수 있다.
여기서, 상기 부여 수단은, 프로세서로부터 지정된 어드레스 범위를 유지하는 유지 수단과, 유지 수단에 유지된 어드레스 범위에 속하는 라인 데이터를 유지하는 캐시 엔트리를 탐색하는 탐색 수단과, 탐색된 캐시 엔트리에, 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성을 설정하는 설정 수단을 구비하는 구성으로 하여도 된다.
여기서, 상기 탐색 수단은, 유지 수단에 유지된 어드레스 범위의 선두 어드레스가 라인 데이터의 도중을 가리키는 경우, 해당 선두 어드레스를, 상기 어드레스 범위에 포함되는 선두의 라인을 가리키는 스타트 라인 어드레스로 변환하는 제1 변환 수단과, 유지 수단에 유지된 어드레스 범위의 말미 어드레스가 라인 데이터의 도중을 가리키는 경우, 해당 말미 어드레스를, 상기 어드레스 범위에 포함되는 말미의 라인을 가리키는 엔드 라인 어드레스로 변환하는 제2 변환 수단과, 상기 스타트 라인 어드레스로부터 엔드 라인 어드레스까지의 각 라인 어드레스에 대응하는 데이터를 유지하는 캐시 엔트리의 존재 여부를 판정하는 판정 수단을 구비한 구성으로 하여도 된다.
이 구성에 의하면, 프로세서는, 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성을 설정해야 하는 어드레스 범위로서, 캐시 메모리의 라인 사이즈나 라인 경계와는 무관계하게 임의의 어드레스를 지정할 수 있다. 바꾸어 말하면, 프로그래머나 컴파일러는, 라인 사이즈 및 라인 경계를 의식할 필요가 없어지므로, 라이트백하기 위한 라인 어드레스를 관리를 하지 않아도 되어, 프로그램의 작성을 용이하게 할 수 있다.
여기서, 상기 캐시 메모리는, 또한, 캐시 미스 발생 시에, 캐싱을 종료하여도 된다는 것을 나타내는 종료 속성이 부가된 캐시 엔트리를 리플레이스 대상으로서 선택하는 선택 수단을 구비하는 구성으로 하여도 된다.
이 구성에 의하면, 액세스 빈도가 낮은 데이터를 유지하는 캐시 엔트리에, 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성을 설정함으로써, 해당 캐시 엔트리는 가장 먼저 리플레이스되므로, 액세스 빈도가 낮은 데이터가 캐시 메모리에 머무르는 것에 의한 캐시 미스의 유발을 저감할 수 있다.
여기서, 상기 부여 수단은, 프로세서에서 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성의 부여와 데이터의 기입을 명령 내용으로 하는 스토어 명령이 실행되었음을 검출하는 명령 검출 수단과, 해당 명령에 의해서 기입이 이루어진 캐시 엔트리에, 해당 캐싱 종료 속성을 설정하는 설정 수단을 구비하는 구성으로 하여도 된다.
이 구성에 의하면, 캐싱 종료 속성의 부여와 데이터를 기입을 명령하는 스토어 명령에 의해, 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료를 간단히 설정할 수 있다.
여기서, 상기 라이트백 수단은, 메모리 버스가 빈 사이클이 되어 있을 때, 캐시 엔트리의 데이터를 메모리에 라이트백하는 구성으로 하여도 된다.
이 구성에 의하면, 빈 사이클을 이용한 효율적인 라이트백을 행할 수 있다.
여기서, 상기 캐시 엔트리는, 1라인을 구성하는 복수의 서브 라인마다 더티 플래그를 가지고, 상기 라이트백 수단은, 선택 수단에서 선택된 캐시 엔트리에 대해서 더티한 서브 라인만을 라이트백하는 구성으로 하여도 된다.
이 구성에 의하면, 더티한 서브 라인만을 라이트백하므로, 라이트백을 효율적으로 행할 수 있다.
또한, 본 발명의 캐시 메모리의 제어 방법에 관해서도 상기와 동일한 수단, 작용을 갖는다.
상기한 바와 같이, 본 발명의 캐시 메모리에 의하면, 이후에 기입이 행하여지지 않을 캐시 엔트리에 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성을 부여하고, 해당 캐시 엔트리를, 캐시 미스의 발생과는 무관계하게, 즉 캐시 미스가 발생하기 전에 라이트백할 수 있다. 그 결과, 캐시 미스 시에는 로드 패널티가 발생할 뿐이며 라이트백 패널티의 발생을 저감할 수 있다. 이에 의해 캐시 메모리의 효율을 향상시켜, 액세스 속도를 향상시킬 수 있다.
프로세서는, 라이트백을 위한 라인 어드레스의 관리를 할 필요가 없고, 캐시 메모리의 라인 사이즈 및 라인 경계와는 무관계하게 임의의 어드레스 범위를 지정할 수 있다.
도 1은 본 발명의 실시형태 1에서의 프로세서, 캐시 메모리, 메모리를 포함하는 시스템의 개략 구성을 도시하는 블록도이다.
도 2는 캐시 메모리의 구성예를 도시하는 블록도이다.
도 3은 캐시 엔트리의 상세한 비트 구성을 도시하는 도면이다.
도 4는 제어부의 구성을 도시하는 블록도이다.
도 5는 C플래그 설정부의 구성예를 도시하는 블록도이다.
도 6a는 스타트 어드레스 레지스터에 스타트 어드레스를 기입하는 명령의 일례를 도시한다.
도 6b는 사이즈 레지스터에 사이즈를 기입하는 명령의 일례를 도시한다.
도 6c는 커맨드 레지스터에 커맨드를 기입하는 명령의 일례를 도시한다.
도 6d는 커맨드의 일례를 도시한다.
도 7은 스타트 얼라이너 및 엔드 얼라이너의 설명도를 도시한다.
도 8은 플래그 고쳐쓰기부에서의 C플래그 설정 처리의 일례를 도시하는 플로우차트이다.
도 9는 클리닝 처리부에서의 클리닝 처리의 일례를 도시하는 플로우차트이다.
도 10은 본 발명의 실시형태 2에서의 캐시 메모리의 구성을 도시하는 블록도이다.
도 11은 캐시 엔트리의 비트 구성을 도시하는 도면이다.
도 12는 제어부의 구성을 도시하는 블록도이다.
도 13은 리플레이스부에 의한 사용 플래그의 갱신예를 도시한다.
도 14a는 위크 플래그가 존재하지 않는 경우에 캐시 엔트리가 리플레이스되는 상태를 도시하는 도면이다.
도 14b는 리플레이스 처리에서의 위크 플래그(W)의 역할을 도시하는 설명도이다.
도 15는 W플래그 설정부에서의 W플래그 설정 처리를 도시하는 플로우차트이다.
도 16은 클리닝 처리부에서의 클리닝 처리를 도시하는 플로우차트이다.
도 17은 리플레이스부에서의 U플래그 갱신 처리를 도시하는 플로우차트이다.
도 18은 리플레이스부에서의 리플레이스 처리를 도시하는 플로우차트이다.
〈도면의 주요부분에 대한 부호의 설명〉
1 : 프로세서 2 : 메모리
3 : 캐시 메모리 20 : 어드레스 레지스터
21 : 메모리 I/F 30 : 디코더
31a∼31d : 웨이 32a∼32d : 비교기
33a∼33d : AND 회로 34 : OR 회로
35 : 셀렉터 36 : 셀렉터
37 : 디멀티플렉서 38 : 제어부
39 : 클리닝 처리부 40 : C플래그 설정부
41 : 리플레이스부 131b∼131d : 웨이
138 : 제어부 139 : 클리닝 처리부
140 : W플래그 설정부 401 : 커맨드 레지스터
402 : 스타트 어드레스 레지스터 403 : 사이즈 레지스터
404 : 가산기 405 : 스타트 얼라이너
406 : 엔드 얼라이너 407 : 플래그 고쳐쓰기부
(실시형태 1)
<전체 구성>
도 1은, 본 발명의 실시형태 1에서의 프로세서(1), 캐시 메모리(3), 메모리(2)를 포함하는 시스템의 개략 구성을 도시하는 블록도이다. 동 도면과 같이, 본 발명의 캐시 메모리(3)는, 프로세서(1) 및 메모리(2)를 가지는 시스템에 구비된다.
캐시 메모리(3)는, 캐시의 단위 데이터(라인 데이터라고 부른다)를 유지하는 캐시 엔트리마다, 해당 캐시 엔트리에 캐싱을 종료하여도 되는지의 여부를 나타내는 캐싱 종료 속성을 유지하고, 캐시 미스의 발생의 유무에 관계없이, 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성을 가지고 또한 프로세서로부터 기입되었음을 나타내는 더티 플래그가 세트되어 있는 캐시 엔트리를 선택하고, 선택된 캐시 엔트리의 데이터를 메모리에 라이트백하도록 구성되어 있다. 여기서, 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성은, 예를 들어, 이후에 기입이 행하여지지 않을 캐시 엔트리나, 이후에 읽고쓰기되지 않을 캐시 엔트리 등에 부여된다.
<캐시 메모리의 구성>
이하, 캐시 메모리(3)의 구체예로서, 4웨이 세트 어소시에이티브 방식의 캐시 메모리에 본 발명을 적용한 경우의 구성에 관해서 설명한다.
도 2는, 캐시 메모리(3)의 구성예를 도시하는 블록도이다. 동 도면과 같이, 캐시 메모리(3)는, 어드레스 레지스터(20), 메모리 I/F(21), 디코더(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)를 포함한다. 여기서, 태그 어드레스는 웨이에 매핑(mapping)되는 메모리 중의 영역(그 사이즈는 세트 수× 블록이다)을 나타낸다. 이 영역의 사이즈는, 태그 어드레스보다도 하위의 어드레스 비트(A10∼A0)로 정해지는 사이즈 즉 2k바이트이고, 1개의 웨이의 사이즈이기도 하다. 세트 인덱스(SI)는 웨이(0∼3)에 걸치는 복수 세트 중 1개를 가리킨다. 이 세트 수는, 세트 인덱스가 4비트이므로 16세트 있다. 태그 어드레스 및 세트 인덱스로 특정되는 캐시 엔트리는, 리플레이스 단위이고, 캐시 메모리에 격납되어 있는 경우에는 라인 데이터 또는 라인이라고 불린다. 라인 데이터의 사이즈는, 세트 인덱스보다도 하위의 어드레스 비트로 정해지는 사이즈 즉 128바이트이다. 1워드를 4바이트라고 하면, 1라인 데이터는 32워드이다. 워드 인덱스(WI)는, 라인 데이터를 구성하는 복수 워드 중의 1워드를 가리킨다. 어드레스 레지스터(20) 중의 최하위 2비트(A1, A0)는, 워드 액세스 시에는 무시된다.
메모리 I/F(21)는, 캐시 메모리(3)로부터 메모리(2)에의 데이터의 라이트백이나, 메모리(2)로부터 캐시 메모리(3)에의 데이터의 로드 등, 캐시 메모리(3)로부터 메모리(2)를 액세스하기 위한 I/F이다.
디코더(30)는, 세트 인덱스의 4비트를 디코드하여, 4개의 웨이(0∼3)에 걸치는 16세트 중의 1개를 선택한다.
4개의 웨이(0∼3)는, 동일한 구성을 가지는 4개의 웨이이고, 4×2k바이트의 용량을 갖는다. 각 웨이는, 16개의 캐시 엔트리를 갖는다.
도 3에 1개의 캐시 엔트리에서의 상세한 비트 구성을 도시한다. 동 도면과 같이, 1개의 캐시 엔트리는, 밸리드 플래그(V0∼V3), 21비트의 태그, 128바이트의 라인 데이터, 캐싱 종료 속성(도면 중의 C플래그), 더티 플래그(D0∼D3)를 갖는다.
태그는 21비트의 태그 어드레스의 카피이다.
라인 데이터는, 태그 어드레스 및 세트 인덱스에 의해 특정되는 블록 중의 128바이트 데이터의 카피이고, 32바이트의 4개의 서브 라인으로 이루어진다.
밸리드 플래그(V0∼V3)는, 4개의 서브 라인에 대응하고, 서브 라인의 유효 여부를 나타낸다.
캐싱 종료 속성(클리닝 플래그(C))은, 캐싱을 종료하여도 되는지의 여부를 나타낸다. 예를 들어, 해당 캐시 엔트리에 이후에 기입이 행하여질지 행하여지지 않을지를 의미한다. C=O는, 이후에 기입이 이루어질 가능성이 있음을 의미한다. C=1은, 이후에 기입이 이루어지지 않음을 의미하고, 더티이면 클리닝(라이트백)하여야 함을 의미한다.
더티 플래그(D0∼D3)는, 4개의 서브 라인에 대응하고, 그 서브 라인에 프로세서로부터 기입이 있었는지의 여부, 즉 서브 라인 중에 캐시된 데이터가 존재하지만 기입에 의해 메모리 중의 데이터와 상이하기 때문에 메모리에 라이팅 백 하는 것이 필요한지의 여부를 나타낸다.
비교기(32a)는, 어드레스 레지스터(20) 중의 태그 어드레스와, 세트 인덱스에 의해 선택된 세트에 포함되는 4개의 태그 중의 웨이(0)의 태그와의 일치 여부를 비교한다. 비교기(32b∼32c)에 관해서도, 웨이(31b∼31d)에 대응하는 것 이외에는 동일하다.
AND 회로(33a)는, 밸리드 플래그와 비교기(32a)의 비교 결과와의 일치 여부를 비교한다. 이 비교 결과를 h0이라고 한다. 비교 결과(h0)가 1인 경우에는, 어드레스 레지스터(20) 중의 태그 어드레스 및 세트 인덱스에 대응하는 라인 데이터가 존재하는 것, 즉 웨이(0)에서 히트하였음을 의미한다. 비교 결과(h0)가 0인 경우에는, 미스 히트하였음을 의미한다. 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) 중 1개에 기입 데이터를 출력한다. 이 기입 데이터는 워드 단위이면 된다.
제어부(38)는, 캐시 메모리(3)의 전체의 제어를 행한다. 특히, C플래그의 설정과 C플래그에 따르는 클리닝(라이트백)을 행한다.
<제어부의 구성>
도 4는, 제어부(38)의 구성을 도시하는 블록도이다. 동 도면과 마찬가지로, 제어부(38)는, 클리닝 처리부(39)와 C플래그 설정부(40)를 포함한다.
클리닝 처리부(39)는, C=1이 설정되어 있는 캐시 엔트리를 탐색하여, 해당 캐시 엔트리가 더티하면 라이트백한다.
C플래그 설정부(40)는, 프로세서(1)로부터의 커맨드에 따라서 클리닝 플래그(C)를 설정한다. 프로세서(1)는, 이제는 기입을 하지 않는 캐시 엔트리에 대하여 클리닝 플래그의 설정을 지시하는 커맨드를 캐시 메모리(3)에 대하여 발행한다.
<C플래그 설정부의 구성>
도 5는, C플래그 설정부(40)의 구성예를 도시하는 블록도이다. 동 도면과 마찬가지로 C플래그 설정부(40)는, 커맨드 레지스터(401), 스타트 어드레스 레지스터(402), 사이즈 레지스터(403), 가산기(404), 스타트 얼라이너(405), 엔드 얼라이너(406), 플래그 고쳐쓰기부(407)를 구비한다.
커맨드 레지스터(401)는, 프로세서(1)로부터 직접 액세스 가능한 레지스터이고, 프로세서(1)에 의해 기입된 C플래그 설정 커맨드를 유지한다. 도 6c에, 커맨드 레지스터(401)에 커맨드를 기입하는 명령의 일례를 도시한다. 이 명령은, 통상의 전송 명령(mov명령)이고, 소스 오퍼랜드로서 커맨드를, 데스티네이션 오퍼랜드로서 커맨드 레지스터(CR)(401)를 지정하고 있다. 도 6d에, 커맨드의 일례를 도시한다. 이 커맨드는, C플래그 설정 커맨드를 나타내는 특정한 코드이다. C플래그 설정 커맨드는, 스타트 어드레스 레지스터(402)에 유지된 스타트 어드레스로부터 사이즈 레지스터(403)에 유지된 사이즈의 어드레스 범위에 대응하는 데이터를 유지하는 캐시 엔트리에 대하여, C플래그를 설정할 것을 지시하는 커맨드이다.
스타트 어드레스 레지스터(402)는, 프로세서(1)로부터 직접 액세스 가능한 레지스터이고, 프로세서(1)에 의해 기입된 스타트 어드레스를 유지한다. 이 스타트 어드레스는 C플래그를 설정해야 하는 어드레스 범위의 개시 위치를 나타낸다. 도 6a에, 스타트 어드레스 레지스터(402)에 스타트 어드레스를 기입하는 명령의 일례를 도시한다. 이 명령도, 도 6c와 마찬가지로 통상의 전송 명령(mov명령)이다.
사이즈 레지스터(403)는, 프로세서(1)로부터 직접 액세스 가능한 레지스터이고, 프로세서(1)에 의해 기입된 사이즈를 유지한다. 이 사이즈는, 스타트 어드레스로부터의 어드레스 범위를 나타낸다. 도 6b에, 사이즈 레지스터(403)에 사이즈를 기입하는 명령의 일례를 도시한다. 이 명령도, 도 6c와 마찬가지로 통상의 전송 명령(mov명령)이다. 또한, 사이즈의 단위는, 바이트 수이어도 되고, 라인 수(캐시 엔트리 수)이어도 되며, 미리 정해진 단위이면 된다.
가산기(404)는, 스타트 어드레스 레지스터(402)에 유지된 스타트 어드레스와 사이즈 레지스터(403)에 유지된 사이즈를 가산한다. 가산 결과는, 어드레스 범위의 종료 위치를 가리키는 엔드 어드레스이다. 가산기(404)는, 사이즈가 바이트 수 지정인 경우에는 바이트 어드레스로서 가산하고, 사이즈가 라인 수 지정인 경우에는 라인 어드레스로서 가산하면 된다.
스타트 얼라이너(405)는, 스타트 어드레스를 라인 경계의 위치에 조정한다. 이 조정에 의해 프로세서(1)는 라인 사이즈 및 라인 경계와는 무관계하게 임의의 어드레스를 스타트 어드레스로서 지정할 수 있다.
엔드 얼라이너(406)는, 엔드 어드레스를 라인 경계의 위치에 조정한다. 이 조정에 의해 프로세서(1)는 라인 사이즈 및 라인 경계와는 무관계하게 임의의 크기를 상기 사이즈로서 지정할 수 있다.
도 7에, 스타트 얼라이너(405) 및 엔드 얼라이너(406)의 설명도를 도시한다. 동 도면에서, 프로세서(1)로부터 지정된 스타트 어드레스는 라인(N)의 도중의 임의의 위치를 가리킨다. 스타트 얼라이너(405)는, 다음 라인(N+1)의 선두를 가리키도록 조정하고, 조정 후의 어드레스를 얼라인 스타트 어드레스로서 출력한다. 얼라인 스타트 어드레스가 가리키는 라인을 스타트 라인이라고 부른다.
또한, 엔드 어드레스는 라인(M)의 도중의 임의의 위치를 가리킨다. 엔드 얼라이너(406)는, 직전의 라인(M-1)의 선두를 가리키도록 조정하고, 조정 후의 어드레스를 얼라인 엔드 어드레스로서 출력한다. 얼라인 엔드 어드레스가 가리키는 라인을 엔드 라인이라고 부른다.
이 경우, 스타트 라인(라인(N+1))부터 엔드 라인(라인(M-1))까지의 각 라인(캐시 엔트리)에 C플래그가 설정되게 된다. 이와 같이, 스타트 얼라이너(405) 및 엔드 얼라이너(406)가 프로세서(1)로부터 지정된 스타트 어드레스로부터 엔드 어드레스까지의 어드레스 범위보다도 내측에 얼라인하고 있는 것은, 라인(N)과 라인(M)의 외측의 부분에는 프로세서(1)로부터 기입이 발생할 가능성이 있기 때문이다.
플래그 고쳐쓰기부(407)는, 얼라인 스타트 어드레스가 가리키는 라인으로부터 얼라인 엔드 어드레스가 가리키는 라인까지(도 7의 예에서는 라인(N+1)부터 라인(M-1)까지), 캐시 메모리(3)에 엔트리되어 있으면 C플래그를 1에 설정한다.
<C플래그 설정 처리>
도 8은, 플래그 고쳐쓰기부(407)에서의 C플래그 설정 처리의 일례를 도시하는 플로우차트이다.
플래그 고쳐쓰기부(407)는, 커맨드 레지스터(401)에 C플래그 설정 커맨드가 유지되어 있는 경우, 스타트 라인으로부터 엔드 라인까지의 각 라인 어드레스를 차례로 출력하면서 루프 1의 처리(S82∼S86)를 행한다. 플래그 고쳐쓰기부(407)는, 각 라인에 대해서 동일한 처리를 행하므로, 여기에서는 1라인분의 처리에 관해서 설명한다.
즉, 플래그 고쳐쓰기부(407)는, 캐시 메모리(3)가 프로세서(1)로부터 액세스되어 있지 않은 동안에, 라인 어드레스를 어드레스 레지스터(20)에 출력하고(S83), 어드레스 레지스터(20)의 태그 어드레스와 캐시 엔트리의 태그를 비교기(32a∼32d)에 비교시켜, 히트 여부를 판정한다(S84). 또한 플래그 고쳐쓰기부(407)는, 히트한 경우에는, 히트한 캐시 엔트리에 대하여 C플래그를 1에 세트하고(S85), 미스 히트한 경우에는, 캐시 메모리에 엔트리되어 있지 않으므로 아무것도 하지 않는다.
이에 의해, 스타트 라인으로부터 엔드 라인까지의 각 라인에 대하여, 캐시 메모리(3)에 엔트리되어 있는 경우에는, C플래그에 1이 설정된다.
<클리닝 처리>
도 9는, 클리닝 처리부(39)에서의 클리닝 처리의 일례를 도시하는 플로우차트이다.
동 도면과 같이, 클리닝 처리부(39)는, 루프 1의 처리(S900∼S913)에서, 세트 인덱스(SI)(0∼15)를 차례로 지정(S901)함으로써, 16개의 모든 세트에 대하여 루프 2의 처리를 행한다. 루프 2의 처리(S900∼S913)에서, 클리닝 처리부(39)는, 세트 내의 웨이(0∼3)의 C플래그를 독출(S903)함으로써, C=1인 캐시 엔트리를 탐색한다(S904). 루프 3의 처리(S905∼910)에서, 클리닝 처리부(39)는, C=1인 캐시 엔트리에 대하여, 서브 라인 단위의 더티 플래그를 독출하고(S906), 더티하면(S907), 그 서브 라인의 데이터를 메모리(2)에 라이팅 백하고(S908), 해당 더티 플래그를 0에 리셋한다(S909). 이 서브 라인 데이터의 라이팅 백에서, 클리닝 처리부(39)는, 루프 4의 처리(S920∼S923)와 같이, 빈 사이클에서(S920), 1워드씩 라이팅 백한다(S922).
이와 같이, 클리닝 처리부(39)는, 모든 캐시 엔트리의 C플래그를 차례로 체크하여, C=1인 캐시 엔트리를 탐색하고, 더티하면 캐시 메모리(3)로부터 메모리(2)에 라이팅 백한다.
이상 설명한 바와 같이, 본 실시형태에서의 캐시 메모리에 의하면, 프로세서(1)로부터 지정된 어드레스 범위에 속하는 캐시 엔트리에 대하여, 캐싱을 종료하여도 되는지의 여부를 나타내는 캐싱 종료 속성(C 플래그)을 부여하고, 더 이상 기입되지 않는 캐시 엔트리를, 캐시 미스가 발생하기 전에 라이트백하므로, 캐시 미스 시에는 로드 패널티가 발생할 뿐이며 라이트백 패널티의 발생을 저감할 수 있다. 이에 의해 캐시 메모리의 효율을 향상시켜, 액세스 속도를 향상시킬 수 있다.
더구나, 프로세서(1)는, 캐싱 종료 속성을 설정해야 하는 어드레스 범위로서, 캐시 메모리의 라인 사이즈나 라인 경계와는 무관계하게 임의의 어드레스를 지정할 수 있다. 이에 의해, 프로그래머나 컴파일러는, 라인 사이즈 및 라인 경계를 의식할 필요가 없어지므로, 클리닝하기 위한 캐시 어드레스 관리를 하지 않아도 되어, 프로그램의 작성을 용이하게 할 수 있다.
또한, 클리닝 처리에서, 서브 라인 단위에 더티한 서브 라인만을 라이트백하므로, 라인 단위로 라이트백하는 경우와 비교하여 라이트백을 고속화할 수 있다.
<변형예>
또, 본 발명의 캐시 메모리는, 상기 실시형태의 구성에 한정되는 것이 아니라, 다양한 변형이 가능하다. 이하, 복수의 변형예에 관하여 설명한다.
(1)도 5에서, C플래그 설정부(40)는, 사이즈 레지스터(403) 및 가산기(404)의 대신에 엔드 어드레스 레지스터를 구비하는 구성으로 하여도 된다. 이 경우, 엔드 어드레스 레지스터는, 프로세서(1)로부터 기입된 엔드 어드레스를 유지한다.
(2) 프로세서(1)가, 캐싱 종료 속성을 부여하면서 데이터를 기입하는 스토어 명령을 실행하고, 제어부(38)는, 또한, 캐싱 종료 속성을 부여하면서 데이터를 기입하는 스토어 명령을 검출하는 명령 검출부와, 해당 스토어 명령에 의한 기입 시에 C=1에 설정하는 플래그 설정부를 구비하는 구성으로 하여도 된다.
(3)도 6a, 6b, 6c에 도시한 각 명령은, 컴파일러에 의해 프로그램 중에 삽입하여도 된다. 그 때, 컴파일러는, 예를 들어 배열 데이터의 기입이나, 압축 동화 데이터를 디코드할 때의 블록 데이터의 기입 등, 더 이상 기입을 하지 않는 프로그램 위치에, 상기 각 명령을 삽입하도록 하면 된다.
(4) 캐시 엔트리에 C플래그를 유지시키지 않는 구성으로 하여도 된다. 바꾸어 말하면, 도 8에 도시한 C플래그 설정 처리와 도 9에 도시한 클리닝 처리를 동시 에 행하는 구성으로 하여도 된다. 이 경우, 도 8에서의 S85에서, C플래그를 캐시 엔트리에 설정하는 대신에, 도 9에서의 루프 3(S905∼S910)을 실행하는 구성으로 하면 된다.
(5)상기 실시형태에서는, 4웨이 세트 어소시에이티브의 캐시 메모리를 예로 설명하였지만, 웨이 수는, 8웨이이어도 되고 16웨이이어도 된다. 또한, 상기 실시형태에서는, 세트 수가 16인 예를 설명하였지만, 세트 수는 몇 개이든 무방하다.
(6)상기 실시형태에서는, 세트 어소시에이티브의 캐시 메모리를 예로 설명하였지만, 풀 어소시에이티브 방식의 캐시 메모리이어도 된다.
(실시형태 2)
실시형태 1에서는, 더 이상 기입을 하는지의 여부를 나타내는 C플래그를 이용하는 구성에 관해서 설명하였다. 본 실시형태에서는, C플래그 대신에, 더 이상 사용하는지 사용하지 않는지(기입 및 독출을 하는지의 여부)를 나타내는 W(위크) 플래그를 이용하는 구성에 관해서 설명한다.
<캐시 메모리의 구성>
도 10은, 본 발명의 실시형태 2에서의 캐시 메모리의 구성을 도시하는 블록도이다. 동 도면의 캐시 메모리는, 도 2의 구성과 비교하여, 웨이(31a∼31d) 대신에 웨이(131a∼131d)를 구비하는 점과, 제어부(38) 대신에 제어부(138)를 구비하는 점이 상이하다. 이하, 같은 점은 설명을 생략하고, 상이한 점을 중심으로 설명한다.
웨이(131a)는, 웨이(31a)와 비교해서, 각 캐시 엔트리 중에, C플래그가 삭제 되어 있는 점과, W플래그 및 U플래그가 추가되어 있는 점이 상이하다. 웨이(131b∼131d)도 동일하다.
도 11에, 캐시 엔트리의 비트 구성을 도시한다. 1개의 캐시 엔트리는, 밸리드 플래그(V0∼V3), 21비트의 태그, 128바이트의 라인 데이터, 위크 플래그(W), 사용 플래그(U) 및 더티 플래그(D0∼D3)를 유지한다.
이 중, 위크 플래그(W)는, 프로세서로부터의 액세스에 관해서는, 더 이상 사용할지 사용하지 않을지를 의미하고, 캐시 메모리에서의 리플레이스 제어에 관해서는, 다른 캐시 엔트리보다도 먼저 내보내도 되는 가장 약한 리플레이스 대상을 의미한다. 이와 같이, 위크 플래그(W)는 2개의 의미를 갖기 때문에, 클리닝 처리와 리플레이스 처리의 2개의 처리에서 참조된다.
사용 플래그(U)는, 그 캐시 엔트리에 액세스가 있었는지의 여부를 나타내고, LRU 방식에서의 미스 히트에 의한 리플레이스 시에 4개의 웨이의 캐시 엔트리간에서의 액세스 순서 데이터 대신에 이용된다. 보다 정확하게는, 사용 플래그(U)의 1은, 액세스가 있었음을, 0은 없음을 의미한다. 단, 1개의 세트 내의 4개 웨이의 사용 플래그가 모두 1이 되면, 0으로 리셋된다. 바꾸어 말하면, 사용 플래그(U)는, 액세스된 시기가 오래되었는가 새로운가의 2개의 상대적인 상태를 나타낸다. 즉, 사용 플래그(U)가 1인 캐시 엔트리는, 사용 플래그가 O인 캐시 엔트리보다도 새로 액세스되었음을 의미한다.
제어부(138)는, 제어부(38)와 비교하여, C플래그가 아닌 W플래그를 설정하는 점과, LRU방식에서의 액세스 순서 정보 대신에 사용 플래그(U)를 이용하는 점이 상 이하다.
<제어부의 구성>
도 12는, 제어부(138)의 구성을 도시하는 블록도이다. 동 도면의 제어부(138)는, 제어부(38)와 비교하여, 클리닝 처리부(39)와 C플래그 설정부(40) 대신에 클리닝 처리부(139)와 W플래그 설정부(140)를 구비하는 점과, 리플레이스부(41)가 추가된 점이 상이하다.
클리닝 처리부(139)는, 클리닝 처리부(39)와 비교하여, C플래그가 아니라 W플래그를 참조하는 점이 상이하다. 그 결과, W=1이고 또한 더티한 캐시 라인을 라이트백한다.
W플래그 설정부(140)는, 프로세서(1)로부터의 커맨드에 따라서 위크 플래그(W)를 설정한다. 프로세서(1)는, 이제는 사용(기입 및 독출)을 하지 않는 캐시 엔트리에 대해서 위크 플래그의 설정을 지시하는 커맨드를 캐시 메모리(3)에 대하여 발행한다. W=1인 캐시 엔트리는, 더티하면 클리닝 처리의 대상이 되고, 또한, 캐시 미스 시에는 가장 먼저 리플레이스 대상이 된다.
리플레이스부(41)는, 사용 플래그(U)를 액세스 순서로 하는 유사적인 LRU 방식에 의해 캐시 미스 시에 리플레이스 처리와, 캐시 메모리가 액세스되었을 때 사용 플래그(U)의 갱신 처리를 행한다. 리플레이스 처리 시에 W=1인 캐시 엔트리는 가장 먼저 리플레이스 대상으로서 선택된다.
<사용 플래그(U)의 설명>
도 13은, 리플레이스부(41)에 의한 사용 플래그의 갱신예를 도시한다. 동 도면의 상단, 중단, 하단은, 웨이(0∼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)의 각 캐시 엔트리보다도 새로 액세스되었음을 의미하게 된다.
리플레이스부(41)는, 캐시 미스 시에 W=1인 캐시 엔트리가 존재하지 않으면, 사용 플래그에 기초하여 리플레이스 대상인 캐시 엔트리를 결정하여 리플레이스를 행한다. 예를 들어, 리플레이스부(41)는, 도 5 상단에서는, 웨이(1)와 웨이(3) 중 어느 하나를 리플레이스 대상으로 결정하고, 도 5 중단에서는 웨이(3)를 리플레이 스 대상으로 결정하며, 도 5 하단에서는 웨이(0∼2) 중 어느 하나를 리플레이스 대상으로 결정한다.
<위크 플래그(W)의 설명>
도 14a는 위크 플래그가 존재하지 않는다고 가정한 경우의 비교예이고, 캐시 엔트리가 리플레이스되는 상태를 도시하는 도면이다. 동 도면에서도, 도 13과 마찬가지로 웨이(0∼3)에 걸치는 세트(N)를 구성하는 4개의 캐시 엔트리를 도시하고 있다. 4개의 캐시 엔트리 우단의 1 또는 0은, 각각 사용 플래그의 값이다. 또한, 데이터(E)만 액세스 빈도가 낮은 데이터를, 데이터(A, B, C, D)는 액세스 빈도가 높은 데이터로 한다.
동 도a의 제1단째의 상태에서, 프로세서(1)가 데이터(E)에 액세스하면, 캐시 미스가 발생한다. 이 캐시 미스에 의해, 예컨대, U=O인 캐시 엔트리 중에서 액세스 빈도가 높은 데이터(C)의 캐시 엔트리가 액세스 빈도가 낮은 데이터(E)로 리플레이스되어, 제2단째의 상태가 된다.
제2단째의 상태에서, 프로세서(1)가 데이터(C)에 액세스하면, 캐시 미스가 발생한다. 이 캐시 미스에 의해, U=0인 캐시 엔트리인 액세스 빈도가 높은 데이터(D)의 캐시 엔트리가 액세스 빈도가 높은 데이터(C)로 리플레이스되어, 제3단째의 상태가 된다.
제3단째의 상태에서, 프로세서(1)가 데이터(D)에 액세스하면, 캐시 미스가 발생한다. 이 캐시 미스에 의해, 예컨대, 액세스 빈도가 높은 데이터(C)의 캐시 엔트리가 액세스 빈도가 높은 데이터(D)로 리플레이스되어, 제3단째의 상태가 된 다.
마찬가지로, 제4단째에서도, 사용 빈도가 낮은 데이터(E)는 리플레이스 대상으로서 선택되지 않고, 캐시 메모리에 남아 있다.
제5단째의 상태에서, 사용 빈도가 낮은 데이터(E)는 가장 오래된 (U=O)이기 때문에, 리플레이스 대상으로서 선택되어, 내보내게 된다.
이와 같이, 유사 LRU 방식에서(통상의 LRU 방식에서도), 액세스 빈도가 낮은 데이터(E)에 의해서, 4웨이인 경우에는 최악의 경우 4회의 캐시 미스를 유발하는 일이 있다.
도 14b는, 리플레이스 처리에서의 위크 플래그(W)의 역할을 도시하는 설명도이다. 동 도b의 제1단째의 상태(동 도a의 제1단째와 동일)에서, 프로세서(1)가 데이터(E)에 액세스하면, 캐시 미스가 발생한다. 이 캐시 미스에 의해, 예컨대, U=0인 캐시 엔트리 중에서 액세스 빈도가 높은 데이터(C)의 캐시 엔트리가 액세스 빈도가 낮은 데이터(E)로 리플레이스된다. 이 때, 프로세서(1)는, 데이터(E)의 캐시 엔트리에 위크 플래그(W)를 1에 설정하는 것으로 한다. 이에 의해, 다음의 캐시 미스 시에 데이터(E)의 캐시 엔트리가 가장 먼저 내보내게 되고, 제2단째의 상태가 된다.
제2단째의 상태에서, 프로세서(1)가 데이터(C)에 액세스하면, 캐시 미스가 발생한다. 이 캐시 미스에 의해, W=1인 캐시 엔트리인 액세스 빈도가 낮은 데이터(E)의 캐시 엔트리가 리플레이스 대상으로서 선택되고, 액세스 빈도가 높은 데이터(C)로 리플레이스되어, 제3단째의 상태가 된다.
이와 같이, 위크 플래그(W)를 설치함으로써, 액세스 빈도가 낮은 데이터에 의한 캐시 미스의 유발을 저감할 수 있다.
<W플래그 설정 처리>
도 15는, W플래그 설정부(140)에서의 W플래그 설정 처리를 도시하는 플로우차트이다. W플래그 설정부(140)의 구성은, 도 5에 도시한 C플래그 설정부와 동일하고, 또한, 프로세서(1)로부터의 W플래그 설정 커맨드도, 도 6a∼도 6d와 동일하다. 단, 프로세서(1)는, 더 이상 사용하지 않는(기입도 독출도 하지 않는) 데이터의 어드레스 범위를, W플래그 설정 커맨드와 함께 지정한다.
도 15는, 도 8과 비교하여, 단계(S85)의 대신에 단계(S185)를 갖는 점이 상이하다. 그 밖에는, 도 8의 C플래그 설정 처리와 동일하므로, 설명을 생략한다.
단계(S185)에서, W플래그 설정부(140)는, S84에 의해서 히트한 캐시 엔트리에 W=1을 설정한다.
<클리닝 처리>
도 16은, 클리닝 처리부(139)에서의 클리닝 처리를 도시하는 플로우차트이다.
동 도면은, 도 9와 비교하여, S903, S904, S911의 대신에 S903a, S904a, S911a를 갖는 점이 상이하다. S903a, S904a, S911a는, 모두 C플래그를 W플래그로 바꾸어 읽는 점만이 상이하고, 그 이외에는 같은 처리 내용이므로 설명을 생략한다.
<U플래그 갱신 처리>
도 17은, 리플레이스부(41)에서의 U플래그 갱신 처리를 도시하는 플로우차트이다. 동 도면에서는, 밸리드 플래그가 0(무효)인 캐시 엔트리의 사용 플래그(U)는 0으로 초기화되어 있는 것으로 한다.
동 도면에서, 리플레이스부(41)는, 캐시 히트하였을 때(단계(S61)), 세트 인덱스에 의해 선택된 세트에서의 히트한 웨이의 사용 플래그(U)를 1에 세트하고(단계(S62)), 그 세트 내의 다른 웨이의 사용 플래그(U)를 독출하고(단계(S63)), 독출한 사용 플래그(U)가 모두 1인지의 여부를 판정하여(단계(S64)), 모두 1이 아니면 종료하고, 모두 1이면 다른 웨이의 모든 사용 플래그(U)를 O으로 리셋한다(단계(S65)).
이와 같이 하여 리플레이스부(41)는, 도 13, 도 14a, 도 14b에 도시한 갱신예와 같이, 사용 플래그(U)를 갱신한다.
<리플레이스 처리>
도 18은, 리플레이스부(41)에서의 리플레이스 처리를 도시하는 플로우차트이다. 동 도면에서 리플레이스부(41)는, 메모리 액세스가 미스하였을 때(단계(S91)), 세트 인덱스에 의해 선택된 세트에서의, 4개 웨이의 사용 플래그(U) 및 위크 플래그(W)를 독출하여(단계(S92)), W=1인 웨이의 존재 여부를 판정한다(단계(S93)). W=1인 웨이가 존재하지 않는다고 판정된 경우, U=0인 웨이를 1개 선택한다(단계(S94)). 이 때, 사용 플래그(U)가 0으로 되어 있는 웨이가 복수 존재하는 경우에는, 리플레이스부(41)는 랜덤하게 1개를 선택한다. 또한, W=1인 웨이가 존재한다고 판정된 경우, U플래그의 값에 관계없이 W=1인 웨이를 1개 선택한다(단계 (S95)). 이 때, 위크 플래그(W)가 1로 되어 있는 웨이가 복수 존재하는 경우에는, 리플레이스부(41)는 랜덤하게 1개를 선택한다.
또한, 리플레이스부(41)는, 해당 세트에서의 선택된 웨이의 캐시 엔트리를 대상으로 리플레이스하고(단계(S96)), 리플레이스 후에 해당 캐시 엔트리의 사용 플래그(U)를 1로, 위크 플래그(W)를 0으로 초기화한다(단계(S97)). 또한, 이때 밸리드 플래그(V), 더티 플래그(D)는, 각각 1, 0으로 초기화된다.
이와 같이, W=1인 웨이가 존재하지 않는 경우, 리플레이스 대상은, 사용 플래그(U)가 O인 캐시 엔트리 중에서 1개 선택된다.
또한, W=1인 웨이가 존재하는 경우, 리플레이스 대상은, 사용 플래그(U)가 0인지 1인지를 불문하고, W=1인 웨이의 캐시 엔트리로부터 1개 선택된다. 이에 의해 도 14a, 14b에 도시한 바와 같이, 액세스 빈도가 낮은 데이터가 캐시 메모리에 남는 것에 의한 캐시 미스의 유발을 저감할 수 있다.
이상 설명한 바와 같이, 본 실시형태에서의 캐시 메모리에 의하면, 위크 플래그(W)=1인 라인을, 프로세서로부터 더 이상 기입이 이루어지지 않는 라인으로 하여, 클리닝함으로써, 캐시 미스 시의 라이트백 패널티를 저감할 수 있다.
또한, 더 이상 사용되지 않는 캐시 엔트리에 W=1이 설정되고, W=1인 캐시 엔트리가 가장 먼저 리플레이스 대상으로서 선택되므로, 액세스 빈도가 낮은 데이터가 캐시 메모리에 남는 것에 의한 캐시 미스의 유발을 저감할 수 있다.
또한, 종래의 LRU 방식에서의 액세스 순서를 나타내는 데이터 대신에 1비트의 사용 플래그를 이용하는 유사 LRU 방식을 채용함으로써, 액세스 순서 데이터로 서 1비트의 플래그이면 되므로, 액세스 순서 데이터의 데이터량이 적고, 또한 갱신이 간단하기 때문에 하드웨어 규모를 줄일 수 있다.
<변형예>
또, 본 발명의 캐시 메모리는, 상기 실시형태의 구성에 한정되는 것이 아니라, 다양한 변형이 가능하다. 이하, 복수의 변형예에 관해서 설명한다.
(1)사용 플래그(U)를 이용하는 유사 LRU의 대신에, 4개의 웨이의 액세스 순서를 나타내는 순서 데이터를 캐시 엔트리마다 유지 및 갱신하여, 종래와 같은 LRU 방식으로 리플레이스 대상을 선택하는 구성으로 하여도 된다. 이 경우에도, W=1인 캐시 엔트리를, 액세스 순서에 관계없이, 가장 먼저 리플레이스 대상으로서 선택하도록 하면 된다.
(2)실시형태 1에 나타낸 C플래그와, 본 실시형태에서의 W플래그 양쪽을 설치하는 구성으로 하여도 된다. 이 경우, C플래그는 클리닝 처리에서 이용하고, W플래그는 리플레이스 대상의 선택에만 이용하도록 하면 된다. 이와 같이 하면, C플래그에 의해서, 독출될 가능성이 있고 또한 더 이상 기입되지 않는 캐시 엔트리는, 클리닝된 후에도 캐시 메모리에 남길 수 있다. 더 이상 독출도 기입도 이루어지지 않는 캐시 엔트리는, 클리닝되고 또한 리플레이스 대상으로서 가장 먼저 선택된다. C플래그와 W플래그의 병용에 의해서, 치밀한 제어를 행할 수 있다.
(3)상기 실시형태에서는, 서브 라인의 사이즈를 라인의 사이즈의 1/4로 하고 있으나, 1/2, 1/8, 1/16 등 다른 사이즈이어도 된다. 그 경우, 각 캐시 엔트리는, 서브 라인과 동일 수의 밸리드 플래그 및 더티 플래그를 각각 유지하면 된다.
본 발명은, 메모리 액세스를 고속화하기 위한 캐시 메모리에 적합하고, 예를 들어, 온칩 캐시 메모리, 오프칩 캐시 메모리, 데이터 캐시 메모리, 명령 캐시 메모리 등에 적합하다.

Claims (8)

  1. 라인 데이터를 유지하는 캐시 엔트리마다, 해당 캐시 엔트리에 캐싱을 종료하여도 되는지의 여부를 나타내는 캐싱 종료 속성을 부여하는 부여 수단과,
    캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성이 부여되고, 또한 기입되었음을 나타내는 더티 플래그가 세트되어 있는 캐시 엔트리를 선택하는 선택 수단과,
    선택된 캐시 엔트리의 라인 데이터를 캐시 미스의 발생과 무관계하게 메모리에 라이트백하는 라이트백 수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  2. 청구항 1에 있어서, 상기 부여 수단은,
    프로세서로부터 지정된 어드레스 범위를 유지하는 유지 수단과,
    상기 유지 수단에 유지된 어드레스 범위에 속하는 라인 데이터를 유지하는 캐시 엔트리를 탐색하는 탐색 수단과,
    탐색된 캐시 엔트리에, 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성을 설정하는 설정 수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  3. 청구항 2에 있어서, 상기 탐색 수단은,
    상기 유지 수단에 유지된 어드레스 범위의 선두 어드레스가 라인 데이터의 도중을 가리키는 경우, 해당 선두 어드레스를, 상기 어드레스 범위에 포함되는 선 두의 라인을 가리키는 스타트 라인 어드레스로 변환하는 제1 변환 수단과,
    상기 유지 수단에 유지된 어드레스 범위의 말미 어드레스가 라인 데이터의 도중을 가리키는 경우, 해당 말미 어드레스를, 상기 어드레스 범위에 포함되는 말미의 라인을 가리키는 엔드 라인 어드레스로 변환하는 제2 변환 수단과,
    상기 스타트 라인 어드레스로부터 상기 엔드 라인 어드레스까지의 각 라인 어드레스에 대응하는 데이터를 유지하는 캐시 엔트리의 존재 여부를 판정하는 판정 수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  4. 청구항 2에 있어서, 상기 캐시 메모리는, 캐시 미스 발생 시에, 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성이 부가된 캐시 엔트리를 리플레이스 대상으로서 선택하는 리플레이스 수단을 더 구비하는 것을 특징으로 하는 캐시 메모리.
  5. 청구항 1에 있어서, 상기 부여 수단은,
    프로세서에서 캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성의 부여와 데이터의 기입을 명령 내용으로 하는 스토어 명령이 실행되었음을 검출하는 명령 검출 수단과,
    검출된 해당 명령에 의해서 기입이 이루어진 캐시 엔트리에, 캐싱 종료 속성을 설정하는 설정 수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  6. 청구항 1에 있어서, 상기 라이트백 수단은, 메모리 버스가 빈 사이클이 되어 있을 때, 캐시 엔트리의 데이터를 메모리에 라이트백하는 것을 특징으로 하는 캐시 메모리.
  7. 청구항 1에 있어서, 상기 캐시 엔트리는, 1라인을 구성하는 복수의 서브 라인마다 더티 플래그를 가지고,
    상기 라이트백 수단은, 선택 수단에서 선택된 캐시 엔트리에 대해서 더티한 서브 라인만을 라이트백하는 것을 특징으로 하는 캐시 메모리.
  8. 캐시 메모리의 제어 방법으로서,
    라인 데이터를 유지하는 캐시 엔트리마다, 캐싱을 종료하여도 되는지의 여부를 나타내는 캐싱 종료 속성을 부여하는 부여 단계와,
    캐싱을 종료하여도 된다는 것을 나타내는 캐싱 종료 속성이 부여되고, 또한 기입되었음을 나타내는 더티 플래그가 세트되어 있는 캐시 엔트리를 선택하는 선택 단계와,
    선택된 캐시 엔트리의 라인 데이터를 캐시 미스의 발생과 무관계하게 메모리에 라이트백하는 라이트백 단계를 갖는 것을 특징으로 하는 제어 방법.
KR1020067009494A 2003-11-18 2004-11-02 캐시 메모리 및 그 제어 방법 KR100826757B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2003-00387350 2003-11-18
JP2003387350 2003-11-18

Publications (2)

Publication Number Publication Date
KR20060086967A true KR20060086967A (ko) 2006-08-01
KR100826757B1 KR100826757B1 (ko) 2008-04-30

Family

ID=34616157

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067009494A KR100826757B1 (ko) 2003-11-18 2004-11-02 캐시 메모리 및 그 제어 방법

Country Status (7)

Country Link
US (1) US7555610B2 (ko)
EP (1) EP1686484A4 (ko)
JP (1) JP4009306B2 (ko)
KR (1) KR100826757B1 (ko)
CN (1) CN100545819C (ko)
TW (1) TW200530817A (ko)
WO (1) WO2005050454A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602006011292D1 (de) 2005-04-08 2010-02-04 Panasonic Corp Cache-speichersystem und steuerverfahren dafür
US7949834B2 (en) * 2007-01-24 2011-05-24 Qualcomm Incorporated Method and apparatus for setting cache policies in a processor
JP5527477B2 (ja) * 2011-03-22 2014-06-18 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法
CN102662634B (zh) * 2012-03-21 2014-10-29 杭州中天微系统有限公司 非阻塞发射和执行的存储器访问执行装置
US9342461B2 (en) 2012-11-28 2016-05-17 Qualcomm Incorporated Cache memory system and method using dynamically allocated dirty mask space
CN107577614B (zh) * 2013-06-29 2020-10-16 华为技术有限公司 数据写入方法及内存系统
KR102362239B1 (ko) 2015-12-30 2022-02-14 삼성전자주식회사 디램 캐시를 포함하는 메모리 시스템 및 그것의 캐시 관리 방법
WO2017142562A1 (en) * 2016-02-19 2017-08-24 Hewlett Packard Enterprise Development Lp Deferred write back based on age time
CN108255744A (zh) * 2017-12-06 2018-07-06 中国航空工业集团公司西安航空计算技术研究所 一种全相联指令Cache
JP7139719B2 (ja) 2018-06-26 2022-09-21 富士通株式会社 情報処理装置、演算処理装置及び情報処理装置の制御方法
KR20200127793A (ko) * 2019-05-03 2020-11-11 에스케이하이닉스 주식회사 메모리 장치의 캐시 시스템 및 캐시 시스템의 데이터 캐싱 방법
CN110889147B (zh) * 2019-11-14 2022-02-08 中国人民解放军国防科技大学 一种利用填充缓存抵御Cache边信道攻击的方法
US20230032137A1 (en) * 2021-08-02 2023-02-02 Red Hat, Inc. Efficient dirty page expiration
CN117271394A (zh) * 2023-11-21 2023-12-22 中电科申泰信息科技有限公司 一种基于地址存储和搜索的cache读缺失处理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6116348A (ja) 1984-07-03 1986-01-24 Mitsubishi Electric Corp バツフア・メモリ装置
JPH0816885B2 (ja) 1993-04-27 1996-02-21 工業技術院長 キャッシュメモリ制御方法
JPH0869417A (ja) 1994-08-29 1996-03-12 Sanyo Electric Co Ltd 計算機システム
US5754888A (en) 1996-01-18 1998-05-19 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations System for destaging data during idle time by transferring to destage buffer, marking segment blank , reodering data in buffer, and transferring to beginning of segment
US5802572A (en) 1996-03-15 1998-09-01 International Business Machines Corporation Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache
KR100280285B1 (ko) * 1996-08-19 2001-02-01 윤종용 멀티미디어 신호에 적합한 멀티미디어 프로세서
GB9704542D0 (en) 1997-03-05 1997-04-23 Sgs Thomson Microelectronics A cache coherency mechanism
US6092159A (en) 1998-05-05 2000-07-18 Lsi Logic Corporation Implementation of configurable on-chip fast memory using the data cache RAM
JP2001005725A (ja) 1999-06-21 2001-01-12 Hitachi Ltd キャッシュ記憶装置
GB2368150B (en) 2000-10-17 2005-03-30 Advanced Risc Mach Ltd Management of caches in a data processing apparatus
JP2003223360A (ja) 2002-01-29 2003-08-08 Hitachi Ltd キャッシュメモリシステムおよびマイクロプロセッサ

Also Published As

Publication number Publication date
WO2005050454A1 (ja) 2005-06-02
CN1882923A (zh) 2006-12-20
US7555610B2 (en) 2009-06-30
TW200530817A (en) 2005-09-16
CN100545819C (zh) 2009-09-30
KR100826757B1 (ko) 2008-04-30
JP4009306B2 (ja) 2007-11-14
EP1686484A4 (en) 2008-10-15
EP1686484A1 (en) 2006-08-02
JPWO2005050454A1 (ja) 2007-12-06
US20070083718A1 (en) 2007-04-12

Similar Documents

Publication Publication Date Title
JP4098347B2 (ja) キャッシュメモリおよびその制御方法
EP1729220A1 (en) Cache memory and control method thereof
KR100826757B1 (ko) 캐시 메모리 및 그 제어 방법
JP4920378B2 (ja) 情報処理装置およびデータ検索方法
KR20210019584A (ko) 다중 테이블 분기 타겟 버퍼
KR100837479B1 (ko) 캐시 메모리 및 그 제어 방법
JPWO2011049051A1 (ja) キャッシュメモリおよびその制御方法
CN109074313B (zh) 缓存和方法
US20060265551A1 (en) Handling of cache accesses in a data processing apparatus
US7219197B2 (en) Cache memory, processor and cache control method
JP4009304B2 (ja) キャッシュメモリおよびキャッシュメモリ制御方法
US20110179227A1 (en) Cache memory and method for cache entry replacement based on modified access order
US20110283041A1 (en) Cache memory and control method thereof
US7007136B2 (en) Storage device and cache memory device in set associative system
CN116830092A (zh) 用于跟踪存储器区域的内容的修改的技术
JP2010191754A (ja) キャッシュ記憶装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110318

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee