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

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

Info

Publication number
KR20060085677A
KR20060085677A KR1020067006856A KR20067006856A KR20060085677A KR 20060085677 A KR20060085677 A KR 20060085677A KR 1020067006856 A KR1020067006856 A KR 1020067006856A KR 20067006856 A KR20067006856 A KR 20067006856A KR 20060085677 A KR20060085677 A KR 20060085677A
Authority
KR
South Korea
Prior art keywords
way
task
data
control
control register
Prior art date
Application number
KR1020067006856A
Other languages
English (en)
Other versions
KR100813370B1 (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 KR20060085677A publication Critical patent/KR20060085677A/ko
Application granted granted Critical
Publication of KR100813370B1 publication Critical patent/KR100813370B1/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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
    • 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

본 발명의 캐시 메모리는 N-웨이·세트·어소시에이티브 방식의 캐시 메모리로서, N개의 웨이 중 하나 이상의 웨이를 나타내는 제어 레지스터와, 제어 레지스트에 나타나는 웨이를 액티브로 하는 제어수단과, 제어 레지스터의 내용을 갱신하는 갱신수단을 구비하고, 상기 제어수단은 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해 적어도 리플레이스를 제한한다.

Description

캐시 메모리 및 그 제어방법{CACHE MEMORY AND CONTROL METHOD THEREOF}
본 발명은, 프로세서의 메모리 액세스를 고속화하기 위한 캐시 메모리 및 그 제어방법에 관한 것이다.
캐시 메모리는, 주기억 장치의 액세스 시간을 단축하여 프로세서의 처리 능력의 향상을 도모하기 위해, 종래부터 널리 이용되고 있다.
예를 들면 일본국 특허 공개공보 평6-266620호 등에 개시된 캐시 메모리는, 메인 메모리의 블록 단위의 데이터를 각 엔트리에 저장하고, 이 엔트리를 통해 멀티 태스크 처리를 행하는 처리 유닛으로부터의 액세스에 대응하는 데이터의 전송제어와 배타제어를 한다. 이 캐시 메모리는, 엔트리에 저장되어 있는 블록을 배타제어의 대상으로서 설정한 처리 유닛의 각 태스크의 식별정보를 등록하는 태스크 식별정보 등록부를 엔트리마다 설치하는 구성으로 하고, 태스크 단위로 엔트리에 저장되어 있는 블록의 배타제어 및 이 배타제어의 설정과 해제를 행하고 있다.
이 캐시 메모리에 의하면, 멀티 태스크 처리에서의 배타제어를 효율 있게 행하여, 태스크 사이에서 공통으로 사용하는 데이터의 모순을 해소하는 것을 도모하고 있다.
그러나, 상기 종래 기술에서의 캐시 메모리에 의하면, 프로세서의 태스크 절 환에 따라 캐시 메모리의 히트율이 실행중이 아닌 다른 태스크에 의한 영향을 받는 문제가 있다.
예를 들면, 태스크 A의 명령열(또는 데이터)이 캐시 메모리에 저장되어 있는 상태에서 태스크 A의 실행으로부터 태스크 B의 실행으로 절환된 경우, 태스크 B의 실행에 의해 캐시 메모리 중의 태스크 A의 명령열(또는 데이터)이 축출되게 된다. 태스크 A의 명령열(또는 데이터)이 캐시 메모리로부터 축출되어 있으면, 다시 태스크 A가 실행되었을 때, 캐시 미스가 발생하는 문제가 있다. 특히, 압축 음성 데이터나 압축 영상 데이터의 디코드/인코드 처리 등의 리얼타임성을 필요로 하는 처리에서는, 상기 태스크 절환에 따른 다른 태스크의 영향에 의해, 태스크 절환 후의 캐시의 리플레이스 처리에 의해 태스크의 할당 시간이 침식되고, 필요한 처리 시간을 확보할 수 없어, 리얼타임성이 손상되거나 혹은 처리시간을 확정할 수 없는 문제가 있다.
본 발명은, 태스크 절환 등에 의한 캐시 메모리의 다른 태스크의 영향을 방지하고, 태스크의 실질적인 처리시간을 용이하게 확보하는 캐시 메모리를 제공하는 것을 목적으로 한다.
상기 목적을 달성하기 위해 본 발명의 캐시 메모리는, N-웨이·세트·어소시에이티브(N-way set associative) 방식의 캐시 메모리로서, N개의 웨이 중 하나 이상의 웨이를 나타내는 제어 레지스터와, 제어 레지스터에 나타나는 웨이를 액티브(active)로 하는 제어수단과, 제어 레지스터의 내용을 갱신하는 갱신수단을 구비한다.
이 구성에 의하면, 캐시 메모리를 구성하는 N-웨이 중, 제어 레지스터에 나타난 웨이만을 액티브로 하고, 또 제어 레지스터의 내용은 갱신 가능하기 때문에, 프로세서가 실행하는 처리에 따라 액티브인 웨이를 동적으로 설정할 수 있다. 태스크와 웨이를 대응 부여하면, 태스크 절환 후에 다른 태스크에 의해 캐시 메모리로부터 필요한 데이터가 축출되는 것이 해소되어, 태스크 절환에 따른 히트율의 다른 태스크로부터의 영향을 방지할 수 있다. 그 결과, 태스크에 필요로 되는 실질적인 처리시간을 용이하게 확보할 수 있다.
여기서, 상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이(인액티브(inactive)인 웨이라 한다)에 대해 적어도 리플레이스를 제한하는 구성으로 해도 된다.
이 구성에 의하면, 인액티브인 웨이에 대해서는, 적어도 리플레이스가 제한된다. 즉, 인액티브인 웨이에 대해 완전히 디세이블(disable)로 해도, 리플레이스만을 디세이블로 해도 된다. 후자의 경우, 캐시 메모리에 대한 읽기(read)/쓰기(write)까지는 제한되지 않기 때문에, 히트율의 저화를 방지하고, 또한 인액티브인 웨이를 유효하게 활용할 수 있다.
여기서, 상기 캐시 메모리는 또, 웨이마다 설치되고, 캐시 데이터의 어드레스를 태그로서 유지하는 태그 유지수단과, 프로세서로부터 출력되는 메모리 액세스 어드레스의 상위 부분인 태그 어드레스와, 태그 유지수단으로부터 출력되는 N개의 태그를 비교함으로써 히트인지 미스 히트인지를 판정하는 N개의 비교수단을 갖고, 상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대응하는 비교수단을 디세이블로 하는 구성으로 해도 된다.
이 구성에 의하면, 인액티브인 웨이에 대응하는 비교수단을 디세이블로 하기 때문에, 비교수단에서의 소비전력을 저감할 수 있다.
여기서, 상기 제어수단은 또, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대응하는 태그 유지수단에 대해, 비교수단으로의 태그 출력을 디세이블로 하는 구성으로 해도 된다.
이 구성에 의하면, 인액티브인 웨이에 대응하는 태그 출력과 비교수단이 디세이블되기 때문에, 태그 유지수단의 소비전력을 저감할 수 있다.
여기서, 상기 제어수단은, 프로세서로부터 메모리 액세스 어드레스가 출력되었을 때, 해당 액세스 어드레스에 대해 비교수단에 최대 2회의 태그 비교를 행하게 하도록 제어하고, 1회째의 태그 비교에서는, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대응하는 비교수단을 디세이블하고, 1회째의 태그 비교에서 미스 히트라 판정된 경우에, 액티브인 웨이 이외의 웨이에 대응하는 비교수단을 디세이블하지 않고 2회째의 태그 비교를 행하게 하는 구성으로 해도 된다.
이 구성에 의하면, 1회째의 태그 비교에서의 히트율이 높을수록 비교수단에서의 소비전력을 저감할 수가 있고, 또, 1회째의 태그 비교에서 미스 히트한 경우에 2회째의 태그 비교를 행하기 때문에, 인액티브인 웨이의 캐시 데이터도 유효하게 활용할 수 있다.
여기서, 상기 제어수단은, 상기 2회째의 태그 비교에서 액티브인 웨이에 대응하는 비교수단을 디세이블하는 구성으로 해도 된다.
이 구성에 의하면, 2회째의 태그 비교에서는 인액티브인 웨이에 대응하는 비교수단만이 태그 비교를 행하기 때문에, 소비전력을 더 저감할 수 있다.
여기서, 상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해, 그 상태의 갱신을 금지하는 구성으로 해도 된다.
이 구성에 의하면, 예를 들면 인액티브인 웨이의 상태를 나타내는 플래그류의 갱신을 금지함으로써, 인액티브인 웨이에 대한 태스크 절환에 의한 영향을 방지할 수 있다.
여기서, 상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해, 그 액세스 순서를 나타내는 정보의 갱신을 금지하는 구성으로 해도 된다.
이 구성에 의하면, 액세스 순서를 나타내는 정보의 갱신을 금지하기 때문에, 갱신수단에 의한 갱신에 의해 인액티브인 웨이가 액티브인 웨이에 할당된 태스크의 캐시 미스시의 리플레이스 순서가 변화하는 일이 없다.
여기서, 상기 캐시 메모리는 또, 상기 갱신수단에 의해 제어 레지스터의 내용이 갱신되었을 때, 웨이에 대한 액세스 순서를 나타내는 정보를 리셋하는 리셋수단을 갖는 구성으로 해도 된다. 또한, 상기 액세스 순서를 나타내는 정보는, 캐시 엔트리마다의 1비트 데이터이고, 상기 캐시 메모리는 또, 리플레이스 가능한 복수 웨이로부터 하나의 웨이를 라운드 로빈(round robin) 방식으로 선택하기 때문에 라운드 위치를 나타내는 데이터를 유지하는 레지스터를 갖고, 상기 리셋수단은, 상기 갱신수단에 의해 제어 레지스터의 내용이 갱신되었을 때, 상기 레지스터를 리셋하도록 구성해도 된다.
이 구성에 의하면, 인액티브인 웨이를 할당한 태스크의 캐시 미스시의 리플레이스 순서로의 영향을 없앨 수 있다.
여기서, 상기 갱신수단은, 액티브로 해야 할 웨이를 지정하는 웨이 데이터로서, 태스크마다의 웨이 데이터를 유지하는 유지수단과, 실행중의 태스크에 대응하는 웨이 데이터를 유지하도록 상기 제어 레지스터를 개서하는 개서수단을 갖는 구성으로 해도 된다.
이 구성에 의하면, 태스크가 절환될 때마다 동적으로 제어 레지스터를 개서하기 때문에, 다른 태스크마다 액티브인 웨이를 대응 부여할 수 있다.
여기서, 상기 유지수단은, 메모리 중에 기억된 태스크마다의 컨텍스트 데이터의 일부로서 상기 웨이 데이터를 유지하고, 상기 개서수단은, 태스크 절환시에 제어 레지스터 중의 현 태스크의 웨이 데이터를 메모리에 퇴피하고, 다음 태스크의 웨이 데이터를 메모리로부터 상기 제어 레지스터로 복귀하는 구성으로 해도 된다.
이 구성에 의하면, 제어 레지스터의 갱신은, OS(Operating System)에 의한 태스크 절환에 의해 캐시 메모리의 하드웨어를 대폭으로 추가하지 않고 간단히 실현할 수 있다.
여기서, 상기 유지수단은 태스크마다의 상기 웨이 데이터를 유지하고, 상기 개서수단은 메모리에 기억된 각 태스크의 어드레스 범위를 기억하는 어드레스 기억수단과, 어드레스 기억수단에 기억된 어드레스 범위와, 프로세서로부터 출력되는 명령 페치 어드레스에 기초하여, 실행중의 태스크를 판별하는 판별수단과, 판별된 실행중의 태스크에 대응하는 웨이 데이터를 상기 유지수단으로부터 선택하는 선택수단과, 선택된 웨이 데이터를 상기 제어 레지스터에 기입하는 기입 수단을 구비하는 구성으로 해도 된다.
이 구성에 의하면, 제어 레지스터의 갱신은, 캐시 메모리 자신이 주체적으로 판단함으로써 행해지기 때문에, 어떠한 프로세서에 대해서도 태스크마다 대응하는 웨이를 액티브로 할 수 있다.
여기서, 상기 유지수단은, 태스크마다의 상기 웨이 데이터를 유지하고, 상기 개서수단은, 프로세서로부터 출력되는 태스크 번호에 따라, 실행중의 태스크에 대응하는 웨이 데이터를 상기 유지수단으로부터 선택하는 선택수단과, 선택된 웨이 데이터를 상기 제어 레지스터에 기입하는 기입 수단을 구비하는 구성으로 해도 된다.
이 구성에 의하면, 프로세서로부터 출력되는 태스크 번호를 이용하기 때문에 하드웨어를 대폭으로 추가하지 않고, 제어 레지스터를 간단히 갱신하고, 태스크마다 대응하는 웨이를 액티브로 할 수 있다.
여기서, 상기 유지수단에 유지되는 웨이 데이터는, OS에 의해 태스크에 할당되도록 구성해도 된다.
이 구성에 의하면, 태스크로의 웨이의 할당을 0S가 행함으로써, 각 태스크로의 웨이의 할당을 최적화하는 것이 용이해진다.
여기서, 상기 캐시 메모리는, 각 웨이에서의 리플레이스 단위를 캐시 엔트리의 라인 사이즈와, 라인 사이즈의 2의 n승 분의 1의 사이즈로 절환 가능하고, 상기 제어 레지스터는 또, 웨이마다의 리플레이스 사이즈를 나타내고, 상기 제어수단은, 제어 레지스터에 나타난 리플레이스 사이즈를 단위로 하여 리플레이스 제어를 행하는 구성으로 해도 된다.
또한, 상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해 적어도 리플레이스를 제한하고, 제어 레지스터에 나타난 액티브인 웨이에 대해 제어 레지스터에 나타난 사이즈를 단위로 리플레이스를 행하는 구성으로 해도 된다.
여기서, 상기 갱신수단은, 액티브로 해야 할 웨이를 지정하는 웨이 데이터으로서 태스크마다의 웨이 데이터와, 태스크마다의 리플레이스 사이즈를 유지하는 유지수단과, 실행중의 태스크에 대응하는 웨이 데이터 및 리플레이스 사이즈를 유지하도록 상기 제어 레지스터를 개서하는 개서수단을 갖는 구성으로 해도 된다.
이 구성에 의하면, 태스크마다 액티브인 웨이를 절환함과 동시에, 리플레이스 단위도 절환할 수 있기 때문에, 태스크의 처리 내용에 따라 미스 히트를 저감할 수 있다.
또한, 본 발명의 캐시 메모리의 제어방법은, N-웨이·세트·어소시에이티브 방식의 캐시 메모리를 제어하는 제어방법으로서, N개의 웨이 중 하나 이상의 웨이를 나타내는 웨이 데이터를 제어 레지스터에 설정하는 단계와, 제어 레지스터에 나타나는 웨이를 액티브로 하는 제어 단계를 갖는다.
여기서, 상기 제어 단계에서는, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해 적어도 리플레이스를 제한하도록 해도 된다.
여기서, 상기 제어방법은 또, 액티브로 해야 할 웨이를 지정하는 웨이 데이터으로서 태스크마다의 웨이 데이터를 유지하는 유지부로부터, 실행중의 태스크에 대응하는 웨이 데이터를 판독하여, 판독한 웨이 데이터를 상기 제어 레지스터에 기입하는 갱신 단계를 갖는 구성으로 해도 된다.
이상 설명한 바와 같이, 본 발명의 캐시 메모리에 의하면, 프로세서가 실행하는 처리마다 액티브인 웨이를 동적으로 설정할 수 있기 때문에, 태스크와 웨이를 대응 부여하면, 태스크 절환 후에 다른 태스크에 의해 캐시 메모리로부터 필요한 데이터가 축출되는 것이 해소되어, 태스크 절환에 따른 히트율의 다른 태스크로부터의 영향을 방지할 수 있다. 그 결과, 태스크에 필요로 되는 실질적인 처리시간을 용이하게 확보할 수 있다.
도 1은, 본 발명의 실시형태 1에서의 프로세서, 캐시 메모리, 메모리를 포함하는 시스템의 개략 구성을 나타내는 블록도이다.
도 2는, 캐시 메모리의 구성예를 나타내는 블록도이다.
도 3은, 웨이·레지스터의 비트 구성을 나타내는 도면이다.
도 4는, 웨이·레지스터와 웨이와의 대응 관계를 나타내는 설명도이다.
도 5는, 제어부에서의 리플레이스 처리를 나타내는 플로우챠트이다.
도 6은, 태스크 절환 처리를 나타내는 플로우챠트이다.
도 7은, 태스크 영역의 컨텍스트에 포함되는 태스크마다의 웨이 데이터를 나 타내는 도면이다.
도 8은, 본 발명의 실시형태 2에서의 캐시 메모리의 구성을 나타내는 블록도이다.
도 9는, 캐시 엔트리의 비트 구성을 나타내는 도면이다.
도 10은, 설정부의 구성을 나타내는 블록도이다.
도 11은, 플래그의 갱신예를 나타내는 설명도이다.
도 12는, 플래그 갱신처리 흐름을 나타내는 도면이다.
도 13은, 리플레이스 처리 흐름을 나타내는 도면이다.
도 14는, 본 발명의 실시형태 3에서의 캐시 메모리의 구성을 나타내는 블록도이다.
도 15는, 캐시 엔트리의 비트 구성을 나타내는 도면이다.
도 16은, 리플레이스 사이즈 레지스터의 비트 구성을 나타내는 도면이다.
도 17은, 12 베이스 플래그의 갱신예를 나타내는 설명도이다.
도 18은, 베이스 리플레이스 처리를 나타내는 플로우챠트이다.
도 19는, 본 발명의 실시형태 4에서의 비교 제어부 및 각 웨이의 요부의 구성을 나타내는 블록도이다.
도 20은, 이네이블 회로의 제어논리를 나타내는 진리값 표이다.
(실시형태 1)
도 1은, 본 발명의 실시형태 1에서의 프로세서(1), 캐시 메모리(3), 메모리 (2)를 포함하는 시스템의 개략 구성을 나타내는 블록도이다. 동 도면과 같이, 본 발명의 캐시 메모리(3)는, 프로세서(1) 및 메모리(2)를 갖는 시스템에 구비된다. 프로세서(1)는, 멀티 태스크 제어를 행하는 프로세서로, 메모리(2) 중의 태스크(1∼4) 등을 절환하여 실행한다. 캐시 메모리(3)는, N-웨이·세트·어소시에이티브 방식의 캐시 메모리로서, 태스크마다 N개의 웨이 중 하나 이상의 웨이를 대응시켜, 해당 태스크 실행 중에 대응하는 웨이를 액티브로 하도록 구성되어 있다. 각 태스크는, 액티브인 웨이에 대해서는, 캐시 메모리로서의 모든 기능을 이용 가능하다. 또한, 각 태스크는, 액티브가 아닌 웨이(인액티브인 웨이라 한다)에 대해서는, 캐시 메모리로서의 모든 기능 중 이용 가능한 기능이 제한되어 있다. 본 실시형태에서는, 인액티브인 웨이는, 리플레이스하는 기능이 제한되고, 그 이외의 읽기(read), 쓰기(write) 등은 제한되어 있지 않은 것으로 한다.
이하에서는, 캐시 메모리(3)의 구체예로서, 8웨이·세트·어소시에이티브 방식의 캐시 메모리에 본 발명을 적용한 경우의 구성에 대해 설명한다.
도 2는, 캐시 메모리(3)의 구성예를 나타내는 블록도이다. 동 도면과 같이, 캐시 메모리(3)는 어드레스 레지스터(20), 디코더(30), 8개의 웨이(31a∼31h)(이하 웨이 0∼7이라 약한다), 8개의 비교기(32a∼32h), 8개의 AND 회로(33a∼33h), OR 회로(34), 셀렉터(35), 셀렉터(36), 디멀티플렉서(37), 제어부(38)를 구비한다.
어드레스 레지스터(20)는, 메모리(2)로의 액세스 어드레스를 유지하는 레지스터이다. 이 액세스 어드레스는 32 비트인 것으로 한다. 동 도면에 도시하는 바와 같이, 액세스 어드레스는 최상위 비트로부터 차례로 21비트의 태그 어드레스, 4비 트의 세트 인덱스(도면 중의 SI), 5비트의 워드 인덱스(도면 중의 WI)를 포함한다.
여기서, 태그 어드레스는 웨이에 맵핑되는 메모리 중의 영역(그 사이즈는 세트수×블록이다.)을 가리킨다. 이 영역의 사이즈는, 태그 어드레스보다 하위의 어드레스 비트(A10∼AO)로 결정되는 사이즈, 즉 2k 바이트이고, 하나의 웨이 사이즈이기도 하다. 세트 인덱스(SI)는 웨이 O∼3에 걸치는 복수 세트의 하나를 가리킨다. 이 세트수는, 세트 인덱스가 4비트이기 때문에 16세트이다. 태그 어드레스 및 세트 인덱스로 특정되는 블록은 리플레이스 단위로, 캐시 메모리에 저장되어 있는 경우는 라인 데이터 또는 라인이라 불린다. 라인 데이터의 사이즈는, 세트 인덱스보다 하위의 어드레스 비트로 결정되는 사이즈, 즉 128 바이트이다. 1 워드를 4 바이트로 하면, 1라인 데이터는 32 워드이다. 워드 인덱스(WI)는, 라인 데이터를 구성하는 복수 워드 중의 1 워드를 가리킨다. 어드레스 레지스터(20) 중의 최하위 2비트(A1, A0)는, 워드 액세스시에는 무시된다.
디코더(30)는, 세트 인덱스의 4비트를 디코드하고, 8개의 웨이(0∼7)의 동순으로 위치하는 캐시 엔트리로 이루어지는 16개의 세트 중의 하나의 세트를 선택한다.
웨이(0~7)는, 같은 구성을 유수하는 8개의 웨이로, 8×2k 바이트의 용량을 갖는다. 웨이 0은, 16개의 캐시 엔트리를 갖는다. 하나의 캐시 엔트리는, 밸리드(Valid) 플래그(V), 21 비트의 태그, 128 바이트의 라인 데이터를 유지한다. 밸리드 플래그(V)는, 그 캐시 엔트리가 유효한지의 여부를 나타낸다. 태그는 21 비트의 태그 어드레스의 카피이다. 라인 데이터는, 태그 어드레스 및 세트 인덱스에 의해 특정되는 블록 중의 128 바이트 데이터의 카피이다. 또한, 웨이 1∼7에 대해서도, 웨이 0과 마찬가지다. 세트 인덱스의 4비트에 의해 디코더(30)를 통해 선택되는 4웨이를 자랑하는 4개의 캐시 엔트리는, 세트라 불린다. 또한, 동 도면에서는 기입이 있었던 것을 나타내는 더티(dirty) 플래그는 생략되어 있다.
비교기 32a는, 어드레스 레지스터(20) 중의 태그 어드레스와, 세트 인덱스에 의해 선택된 세트에 포함되는 4개의 태그 중의 웨이 O의 태그가 일치하는지의 여부를 비교한다. 비교기 32b∼32h에 대해서도, 웨이 31b∼31h에 대응하는 것 이외는 동일하다.
AND 회로 33a는 밸리드 플래그와 비교기 32a의 비교 결과가 일치하는지의 여부를 비교한다. 이 비교 결과를 hO로 한다. 비교 결과 h0가 1인 경우는, 어드레스 레지스터(20) 중의 태그 어드레스 및 세트 인덱스에 대응하는 라인 데이터가 존재하는 것, 즉 웨이 O에서 히트한 것을 의미한다. 비교 결과 hO가 O인 경우는, 미스 히트한 것을 의미한다. AND 회로 33b∼33h에 대해서도, 웨이 31b∼31h에 대응하는 것 이외는 동일하다. 그 비교 결과 h1∼h7는, 웨이 1∼7로 히트했는지 미스했는지를 의미한다.
OR 회로(34)는, 비교 결과 h0∼h3의 OR를 취한다. 이 OR의 결과를 hit로 한다. hit는, 캐시 메모리에 히트했는지의 여부를 나타낸다.
셀렉터(35)는, 선택된 세트에서의 웨이(0∼7)의 라인 데이터 중, 히트한 웨이의 라인 데이터를 선택한다.
셀렉터(36)는, 셀렉터(35)에 의해 선택된 32 워드의 라인 데이터 중, 워드 인덱스에 나타나는 1 워드를 선택한다.
디멀티 플렉서(37)는, 캐시 엔트리에 데이터를 기입할 때, 웨이(0∼7)의 하나에 기입 데이터를 출력한다. 이 기입 데이터는 워드 단위로 된다.
제어부(38)는, 내부에 웨이·레지스터(371)를 갖고, 캐시 메모리(3)의 전체의 제어를 행한다. 웨이·레지스터(371)는, 웨이(0∼7) 중 액티브인 웨이를 나타내는 데이터를 유지하는 레지스터이다. 제어부(38)는 웨이·레지스터(371)에 의해 나타나는 액티브인 웨이에 대해서는, 캐시 메모리로서의 모든 기능을 제한 없이 제어하고, 인액티브인 웨이에 대해서는, 리플레이스하는 기능을 제한한다.
도 3은, 웨이·레지스터(371)의 비트 구성을 나타내는 도면이다. 동 도면과 같이, 웨이·레지스터(371)는 32 비트 레지스터이고, 하위 8 비트에 웨이(0∼7)에 대응하는 W0 플래그∼W7 플래그를 유지한다. 예를 들면, W0 플래그가 1일 때 웨이 0이 액티브인 웨이인 것을 나타내고, O일 때 웨이 O이 인액티브인 웨이인 것을 나타낸다. W1 플래그∼W7 플래그에 대해서도 동일하다. 이하, W0 플래그∼W7 플래그의 집합을 액티브 웨이 데이터라 부른다. 이 웨이·레지스터(371)는, 프로세서(1)로부터 직접 읽고 쓰기 가능하고, 각 태스크의 컨텍스트의 일부를 이룬다. 즉, 태스크마다 액티브 웨이 데이터를 갖고, 태스크 절환에 의해 웨이·레지스터(371)의 내용은 실행중의 태스크에 대응하는 액티브 웨이 데이터에 개서된다.
도 4는, 웨이·레지스터(371)와 웨이와의 대응관계를 나타내는 설명도이다. 동 도면 좌측에서는, 웨이·레지스터(371)에 유지되어 있는 액티브 웨이 데이터가 "00111000"이기 때문에, 웨이 2, 3, 4가 액티브 웨이가 되고, 웨이 0, 1, 5, 6, 7 이 인액티브로 된다. 태스크 절환시에 웨이·레지스터(371)는, 예를 들면 동 도면 우측과 같은 액티브 웨이 데이터로 개서된다. 동 도면 우측에서는, 웨이 5∼7이 액티브로 되고, 웨이 0∼4가 인액티브로 된다.
도 5는, 제어부(38)에서의 리플레이스 처리를 나타내는 플로우챠트이다. 동 도면에서, 제어부(38)는, 미스 히트가 발생했는지의 여부를 판정하고(S51), 미스 히트가 발생했다고 판정된 경우에, 세트 인덱스에 의해 선택된 세트에서의 4개 웨이의 캐시 엔트리 중에서 리플레이스 대상을 하나 선택한다(단계 S52). 이 리플레이스 대상의 선택은 LRU 방식으로 된다.
또, 제어부(38)는 웨이·레지스터(371)를 참조하여, 선택된 웨이가 액티브인지의 여부를 판정하고(S53), 액티브하지 않으면 단계 S52로 되돌아가 다시 다른 웨이의 캐시 엔트리를 선택한다. 제어부(38)는 선택된 액티브인 웨이의 캐시 엔트리를 리플레이스한다(S54).
이와 같이, 제어부(38)는 웨이·레지스터(371)에 나타나는 인액티브인 웨이에 대해서는 리플레이스를 제한하고, 제어부(38)는 액티브인 웨이에 대해서는 리플레이스를 제한하는 일 없이 캐시 메모리로서도 모든 기능을 제어한다. 여기서는, 리플레이스의 제한은 리플레이스의 금지로 하고 있다.
도 6은, 프로세서(1)에서의 태스크 절환 처리를 나타내는 플로우챠트이다. 태스크 절환 처리는 시간의 경과나 이벤트의 발생에 의해 기동된다. 동 도면에서 프로세서(1)는, 현재 실행중의 태스크의 컨텍스트를 메모리(2) 중의 예를 들면 스택 영역으로 퇴피하고(단계 S61), 다음에 실행해야 할 태스크의 컨텍스트를 스택 영역으로부터 복귀시킨다(단계 S62). 여기서, 스택 영역은 도 7에 나타내는 바와 같이, 메모리(2)에 확보되고, 각 태스크의 컨텍스트를 기억하기 위한 영역이다. 각 태스크의 컨텍스트는, 프로세서의 범용 레지스터의 데이터나, 여러 제어 레지스터의 데이터를 포함하고, 더하여, 본 실시형태에서는 웨이·레지스터에 저장되는 액티브 웨이 데이터를 포함한다.
이렇게 하여, 웨이·레지스터(371)는 태스크 절환시에 개서되기 때문에, 항상 실행중의 태스크에 대응하는 액티브 웨이 데이터를 유지하게 된다.
이상 설명한 바와 같이, 본 실시형태에서의 캐시 메모리에 의하면, 프로세서(1)에 실행되는 태스크로부터 보면, 캐시 메모리로의 읽기 및 쓰기에 대해서는 액티브인 웨이에 대해서도 인액티브인 웨이에 대해서도 가능하지만, 미스 히트한 경우에 리플레이스 대상이 되는 웨이에 대해서는 액티브인 웨이로 제한되게 된다.
예를 들면, 도 4에서 동 도면 좌측을 태스크 1 실행시, 우측을 태스크 2 실행시의 액티브 웨이로 한다. 태스크의 실행이 경과함에 따라, 태스크 1의 캐시 데이터는 점차 웨이 2∼3에 저장되어 가고, 태스크 2의 캐시 데이터는 점차 웨이 4∼7에 저장되어 가게 된다. 환언하면, 웨이 2∼3에 저장된 태스크 1의 캐시 데이터는 태스크 2의 실행에 의해 축출되지 않는다(리플레이스되지 않는다). 또한, 웨이 4∼7에 저장된 태스크 2의 캐시 데이터는 태스크 1의 실행에 의해 축출되지 않는다(리플레이스되지 않는다). 그 결과, 태스크 절환에 따라 태스크 1에서는 필요한 캐시 데이터가, 다른 태스크에 의해 리플레이스되고, 다시 태스크 1 실행시에 축출된 데이터를 캐시에 리플레이스하는 것도 해소할 수 있다. 그 결과, 태스크 절환에 따른 리플레이스의 발생을 저감시킬 수 있고, 다른 태스크로부터의 영향을 억제할 수 있다.
<변형예>
또, 본 발명의 캐시 메모리는, 상기의 실시형태의 구성에 한정하는 것이 아니라, 여러 변형이 가능하다. 이하, 몇 개의 변형예에 대해 설명한다.
(1) 복수의 태스크와 복수의 웨이의 대응관계에 대해서는, 하나의 태스크에 독점되는 웨이와, 복수의 태스크에 공용되는 웨이를 혼재시킬 수 있다. 예를 들면, 도 4에서, 웨이 2∼4는 태스크 1이 독점하고, 웨이 5∼7는 태스크 2가 독점하고, 웨이 O, 1은 다른 태스크가 공용하는 것으로 한다. 이 경우, 태스크 1 및 2는 웨이를 독점하기 때문에, 태스크 절환에 의한 캐시 미스를 저감하고, 리얼타임성을 요하는 처리에 적합한다. 태스크 1 및 2 이외의 태스크는, 리얼타임성을 요하지 않는 처리 등에 적합하다.
(2) 상기 실시형태에서는, 제어부(38)는, 액티브인 웨이에 대해서는 캐시 메모리의 모든 기능을 제어하고, 인액티브인 웨이에 대해서는 리플레이스를 금지하고 있는데, 이에 한정되지 않는다.
예를 들면, 제어부(38)는 웨이·레지스터(371)에 나타난 인액티브인 웨이에 대해, 그 상태의 갱신을 금지하는 구성으로 해도 된다. 예를 들면, 웨이의 상태를 나타내는 플래그류의 갱신을 금지함으로써, 인액티브인 웨이에 대한 태스크 절환에 의한 영향을 방지할 수 있다.
또한, 제어부(38)는, 웨이·레지스터(371)에 나타난 인액티브인 웨이에 대 해, 그 액세스 순서를 나타내는 정보의 갱신을 금지하는 구성으로 해도 된다. 이에 의하면, 액세스 순서를 나타내는 정보의 갱신을 금지하기 때문에, 다른 태스크의 실행에 의해 리플레이스 순서가 영향을 받는 일이 없어진다.
혹은, 제어부(38)는, 인액티브인 웨이에 대해 모든 기능을 금지하도록 해도 된다. 이 경우, 인액티브인 웨이의 태그 출력을 금지하도록 출력 이네이블 신호를 디세이블로 하면 된다. 이렇게 하면 인액티브인 웨이의 소비전력을 저감할 수 있다. 또한, 모든 기능을 금지하는 경우에는, 각 태스크가 웨이를 공용하지 않고 독점하도록 태스크와 웨이를 대응 부여하는 것이 바람직하다. 이렇게 하면, 메모리와 캐시 메모리 사이에서 데이터에 모순이 생기는 것을 방지할 수 있다.
또한, 제어부(38)는, 리플레이스의 금지에 더하여 액세스의 순번을 나타내는 LRU용 순서 데이터를 갱신하지 않도록 구성해도 된다.
(3) 웨이·레지스터(371)의 내용이 갱신되었을 때, LRU 방식으로 이용되는 액세스 순서 정보를 리셋하는 구성으로 해도 된다.
(4) 또한, 제어부(38)는 리플레이스의 금지 대신 리플레이스 횟수를 제한하는 구성으로 해도 되고, 웨이 중의 특정한 캐시 엔트리에 대한 리플레이스를 금지하고, 그 외의 캐시 엔트리에에 대해서는 리플레이스를 행하는 구성으로 해도 된다.
(5) 상기 실시형태에서는, 8웨이·세트·어소시에이티브의 캐시 메모리를 예로 설명했는데, 웨이 수는 4웨이이어도 16웨이이어도 몇 개이어도 된다. 또한, 상기 실시형태에서는, 세트수가 16인 예를 설명했지만, 세트수는 몇 개이어도 된다.
(6) 상기 실시형태에서는, 세트·어소시에이티브의 캐시 메모리를 예로 설명하였지만, 풀·어소시에이티브 방식의 캐시 메모리이어도 된다. 풀·어소시에이티브 방식의 경우, 세트가 하나의 케이스라 생각할 수 있다.
(7) 도 4에 나타낸 액티브 웨이 데이터는, OS에 의해 태스크마다 할당되도록 해도 된다. 즉, 0S는 실행 대상의 태스크를 생성할 때, 그 태스크에 대해 액티브로 해야 할 웨이를 할당하고, 할당한 결과로부터 그 태스크의 액티브 웨이 데이터를 생성한다. 또, 0S는, 생성된 액티브 웨이 데이터를 도 7에 도시하는 바와 같이 해당 태스크의 컨텍스트 데이터의 일부로 설정하면 된다.
(8) 복수의 태스크가 메모리 데이터를 공유할 경우, 그들 태스크에는 완전히 같은 웨이를 공유해야 한다. 예를 들면, 태스크 A와 태스크 B가 메모리 데이터를 공유할 경우, 태스크 A에 웨이 5, 6, 7이 할당되어 있으면, OS는 태스크 B에도 웨이 5, 6, 7을 할당하면 된다.
(실시형태 2)
실시형태 1에서는, 웨이·레지스터(371)를 태스크 절환에 의해 개서하는 구성을 설명하였지만, 본 실시형태에서는, 케쉬 메모리에서 태스크를 판별하여 판별 결과에 따라 웨이·레지스터(371)를 개서하는 구성에 대해 설명한다. 더하여, 실시형태 1에서는 리플레이스 알고리즘이 주지의 LRU 방식으로 했지만, 본 실시형태에서는 액세스 순서를 나타내는 데이터 대신 1비트의 플래그를 이용하는 의사적(擬似的)인 LRU 방식을 행하는 구성에 대해 설명한다.
도 8은, 본 발명의 실시형태 2에서의 캐시 메모리의 구성을 나타내는 블록도 이다. 동 도면의 캐시 메모리는 도 2의 구성과 비교하여, 웨이 31a∼31d 대신에 웨이 131a∼131d를 구비하는 점과, 제어부 38 대신에 제어부 138을 구비하는 점이 다르다. 이하, 동일한 점은 설명을 생략하고, 다른 점을 중심으로 설명한다.
웨이 131a는, 웨이 31a에 비해 각 캐시 엔트리 중에 사용 플래그와 뉴 플래그가 추가되어 있는 점이 다르다. 도 9에, 캐시 엔트리의 비트 구성을 나타낸다. 하나의 캐시 엔트리는 밸리드 플래그(V), 21 비트의 태그, 128 바이트의 라인 데이터, 사용 플래그(U), 뉴 플래그(N) 및 더티 플래그(D)를 유지한다. 이 중, 사용 플래그(U)는, 그 캐시 엔트리에 액세스가 있었는지의 여부를 나타내고, 미스 히트에 의한 리플레이스 시에 세트내의 8개의 캐시 엔트리에서의 액세스 순서 대신으로 이용된다. 보다 정확하게는 사용 플래그(U)의 1은 액세스가 있었던 것을, 0은 없는 것을 의미한다. 세트내의 8개의 사용 플래그는, 모두 1이 되면 0으로 리셋되기 때문에, 세트내의 8개의 캐시 엔트리에서의 사용의 유무를 나타내는 상대적인 값이다. 달리 말하면, 사용 플래그(U)는, 액세스된 시기가 오래되었는지 새로운지 2개의 상대적인 상태를 나타낸다. 즉, 사용 플래그(U)가 1인 캐시 엔트리는 사용 플래그가 O인 캐시 엔트리보다도 새롭게 액세스된 것을 의미한다. 또한, 뉴 플래그(N)는, 리플레이스 직후(또는 필 직후)에 초기값으로서 1가 설정되고, 해당 캐시 엔트리로의 액세스가 있을 때에 O으로 리셋된다. 즉, 뉴 플래그(N)의 1은, 해당 캐시 엔트리가 리플레이스(또는 필)되고 나서 한번도 액세스되어 있지 않은 새로운 상태인 것을 의미한다.
제어부 138는 제어부 38에 비해, 설정부(372)가 추가된 점과, 사용 플래그 (U) 및 뉴 플래그(N)의 설정 및 갱신을 행하는 점이 다르다.
설정부(372)는 프로세서(1)에서 실행되고 있는 태스크를 판별하고, 판별한 태스크에 대응하는 액티브 웨이 데이터를 웨이·레지스터(371)에 설정한다.
<설정부의 구성>
도 10은, 설정부(372)의 구성예를 나타내는 블록도이다. 동 도면과 같이, 설정부(372)는, 판별부(100a∼100d)와 액티브 웨이 데이터 유지부(110a∼110d)와 셀렉터(111)를 구비한다.
판별부 100a는, 스타트 어드레스 유지부(101), END 어드레스 유지부(102), 비교기(103, 104), AND 회로(105)를 갖고, 실행중의 태스크가 태스크 1인지를 판별한다.
스타트 어드레스 유지부(101), END 어드레스 유지부(102)는, 프로세서(1)로부터 읽고 쓰기 가능하고, 메모리(2)에 저장된 태스크 1의 스타트 어드레스, END 어드레스를 각각 유지한다. 이 스타트 어드레스 및 END 어드레스는, 프로세서(1)에 의해 미리 기입되고, 동적으로 변경 가능하다.
비교기(103)는, 프로세서(1)로부터 출력되는 명령 페치 어드레스(IF 어드레스)와 스타트 어드레스 유지부(101)로부터 출력되는 스타트 어드레스를 비교하여, 스타트 어드레스보다 IF 어드레스 쪽이 큰 경우에 1을 출력한다.
비교기(104)는, 프로세서(1)로부터 출력되는 IF 어드레스와 END 어드레스 유지부(102)로부터 출력되는 END 어드레스를 비교하여, IF 어드레스보다 END 어드레스 쪽이 큰 경우에 1을 출력한다.
AND 회로(105)는, 비교기(103 및 104)의 비교 결과가 모두 1인 경우, 즉, IF 어드레스가 태스크 1의 명령을 페치하고 있는 경우에, 실행되고 있는 태스크가 태스크 1인 것을 나타낸다.
판별부 100b∼100d에 대해서도 동일하고, 실행중의 태스크가 태스크 2∼3인지를 판별한다.
액티브 웨이 데이터 유지부(110a∼110d)는, 프로세서(1)로부터 읽고 쓰기 가능하고, 판별부(100a∼100d)에 대응하는 태스크의 액티브 웨이 데이터를 유지한다. 이 액티브 웨이 데이터는, 프로세서(1)에 의해 미리 기입되고, 동적으로 변경 가능하다.
셀렉터(111)는, 판별부(100a∼100d)의 판별 결과에 따라, 실행중의 태스크에 대응하는 액티브 웨이 데이터를 선택하고, 웨이·레지스터(371)에 출력한다. 이에 의해, 웨이·레지스터(371)는 실행중의 태스크에 대응하는 액티브 웨이 데이터를 유지한다.
<사용 플래그의 갱신예>
도 11은, 제어부(138)에 의한 사용 플래그(U)의 갱신예를 나타내는 설명도이다. 동 도면에서는, 설명의 편의상 8웨이가 아니라 4웨이의 경우에 대해 설명한다. 동 도면의 상단, 중단, 하단은 웨이 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이 O에서 1로 갱신된다.
또, 동 도면 중단의 상태에서, 메모리 액세스가 세트(N) 내의 웨이 3의 캐시 엔트리에 히트한 경우, 동 도면 하단에 도시하는 바와 같이, (U0∼U3)=(0, 0, 0, 1)로 갱신된다. 즉, 실선으로 도시하는 바와 같이 웨이 3의 사용 플래그 U1이 0으로부터 1로 갱신된다. 더하여, 파선으로 도시하는 바와 같이 웨이 3 이외의 사용 플래그 U0∼U2가 1로부터 0으로 갱신된다. 이에 의해, 웨이 3의 캐시 엔트리가 웨이 0∼2의 각 캐시 엔트리보다 새롭게 액세스된 것을 의미하는 것이 된다.
제어부(138)는, 캐시 미스시에 사용 플래그에 기초하여 리플레이스 대상의 캐시 엔트리를 결정하여 리플레이스를 행한다. 예를 들면, 제어부(138)는 도 11 상단에서는, 웨이 1과 웨이 3의 어느 것인가를 리플레이스 대상으로 결정하고, 도 11 중단에서는 웨이 3을 리플레이스 대상과 결정하고, 도 11 하단에서는 웨이 0∼2의 어느 것인가를 리플레이스 대상과 결정한다.
<사용 플래그, 뉴 플래그의 갱신처리>
도 12는, 제어부(138)에서의 사용 플래그 및 뉴 플래그의 플래그 갱신 처리를 나타내는 플로우챠트이다. 동 도면에서는, 밸리드 플래그가 O(무효)인 캐시 엔트리의 사용 플래그(U)는 0으로 초기화되어 있는 것으로 한다.
동 도면에서, 제어부(138)는 캐시 히트했을 때(단계 S61), 세트 인덱스에 의해 선택된 세트에서의 히트한 웨이의 사용 플래그(U)를 1로 세트하고(단계 S62), 선택된 세트 내의 히트한 웨이의 캐시 엔트리의 뉴 플래그가 1이면 O으로 리셋한다(단계 S171).
또, 제어부(138)는, 그 세트내의 다른 웨이의 사용 플래그(U)를 판독하고(단계 S63), 판독한 사용 플래그(U)가 모두 1인지의 여부를 판정하고(단계 S64), 모두 1이 아니면 종료하고, 모두 1이면 다른 웨이의 모든 사용 플래그(U)를 0으로 리셋한다(단계 S65).
이렇게 하여 제어부(138)는, 도 11에 나타낸 갱신예와 같이, 사용 플래그를 갱신한다. 또한, 뉴 플래그(N)는 캐시 엔트리의 리플레이스 후, 최초로 액세스된 시점에서 리셋된다.
<리플레이스 처리>
도 13은, 제어부(138)에서의 리플레이스 처리 흐름을 나타내는 도면이다. 동 도면에서 제어부(138)는, 메모리 액세스가 미스했을 때(단계 S91), 세트 인덱스에 의해 선택된 세트에서의 8개 웨이의 사용 플래그(U)와, 8개의 뉴 플래그(NO∼N7)를 판독하고(단계 S92), 판독한 8개의 뉴 플래그(NO∼N7)의 전부가 1인지의 여부를 판정하고(단계 S161), 전부가 1인 경우는 단계 S93으로 진행하고, 전부가 1이 아닌(0가 있는) 경우에는, 사용 플래그(U)가 O인 웨이 중, 뉴 플래그(N)가 1인 웨이를 제외한다(단계 S162).
또, 제어부(138)는, 사용 플래그(U)가 0인 웨이를 하나 선택한다(단계 S93). 이때, 사용 플래그(U)가 0으로 되어 있는 웨이가 복수 존재하는 경우는, 제어부(138)는 랜덤하게 하나를 선택하거나 혹은 라운드 로빈 방식으로 하나를 선택한다. 또, 제어부(138)는, 해당 세트에서의 선택된 웨이의 캐시 엔트리를 대상으로 리플레이스하고(단계 S94), 리플레이스 후에 해당 캐시 엔트리의 사용 플래그(U)를 1로, 뉴 플래그를 1로 초기화한다(단계 S95). 또, 이때 밸리드 플래그(V), 더티 플래그(D)는, 각각 1, O으로 초기화된다. 또한, 라운드 로빈 방식으로, 사용 플래그(U)가 0으로 되어 있는 복수 웨이로부터 하나의 웨이를 선택하기 위해, 제어부(138)를 라운드 위치(선택한 웨이의 위치)를 나타내는 데이터를 레지스터에 유지·갱신하고, 사용 플래그(U)가 0으로 되어 있는 웨이 중 다음의 라운드 위치를 선택하면 된다.
이와 같이, 리플레이스 대상은 뉴 플래그가 O이면서 사용 플래그가 O인 캐시 엔트리를 하나 선택함으로써 결정된다. 단, 8개의 뉴 플래그의 전부가 1인 경우에는, 뉴 플래그가 1이면서 사용 플래그(U)가 O인 웨이 중에서 리플레이스 대상을 하나 선택한다. 이 리플레이스 알고리즘은, 종래의 LRU 방식에서의 액세스 순서를 나타내는 데이터 대신 1비트의 사용 플래그를 이용하기 때문에, 의사적인 LRU 방식이라 할 수 있다.
이상 설명한 바와 같이, 본 실시형태에서의 캐시 메모리에 의하면, 설정부(372)를 구비함으로써, 캐시 메모리 자신이 실행중인 태스크를 판별하여, 판별한 태스크에 대응하는 액티브 웨이 데이터를 웨이·레지스터(371)에 설정하고, 태스크마다 액티브인 웨이를 절환할 수 있다. 그 결과, 실시형태 1과 마찬가지로, 태스크 절환에 따른 헛된 리플레이스의 발생을 저감시키는 수 있고, 히트율을 향상시킬 수 있다.
또한, 본 실시형태에서의 캐시 메모리에 의하면, 종래의 LRU 방식에서의 액세스 순서를 나타내는 데이터를 캐시 엔트리마다 설치하는 대신, 1비트의 사용 플래그를 캐시 엔트리마다 설치하고 있다. 이에 의해, 종래의 액세스 순서 데이터를 갱신하는 복잡한 회로를, 사용 플래그를 갱신하는 간단한 플래그 갱신회로(플래그 갱신부(39))로 대치할 수 있다. 또한, 리플레이스부(40)에서, 리플레이스 대상을 사용 플래그가 0인 캐시 엔트리의 하나를 선택함으로써 간단히 결정할 수 있다. 이와 같이, 본 실시형태에서의 캐시 메모리에 의하면, 하드웨어 규모를 크게 저감할 수 있다. 또, 종래의 LRU와 비교해도 거의 동등한 히트율을 얻을 수 있다.
또, 본 실시형태에서의 제어부(138)는, 뉴 플래그가 1인 경우는, 해당 캐시 엔트리를 리플레이스 대상으로부터 제외하고 있다. 이는, 다음의 이유에 의한다. 즉, 사용 플래그(U)는 초기값이 1이지만 다른 웨이의 사용 플래그가 순차 1이 되면, 0으로 리셋된다. 즉, 사용 플래그(U)가 O인 캐시 엔트리이더라도 리플레이스 후에 한번도 액세스되어 있지 않은 경우가 있다. 이렇게 해서 사용 플래그가 0이 된 경우, 리플레이스 후에 한번도 액세스되어 있지 않은 캐시 엔트리가, 캐시 미스의 발생에 의해 다시 리플레이스 대상으로 선택될 가능성이 있다. 그 때문에, 뉴 플래그(N)를 설치함으로써, 리플레이스된 후에 한번도 액세스되어 있지 않은 캐시 엔트리가 리플레이스되는 것을 방지할 수 있다.
<변형예>
또, 본 발명의 캐시 메모리는, 상기의 실시형태의 구성에 한정하는 것이 아니라, 여러 변형이 가능하다. 이하, 몇 개의 변형예에 대해 설명한다.
(1) 실시형태 1에서의 변형예 (1)∼(6)를 본 실시형태에 적용해도 된다.
(2) 프로세서(1)로부터 실행중의 태스크를 나타내는 태스크 번호(혹은 슬레드 번호, 프로세스 번호 등)가 출력되는 경우에는, 상기 판별부(1OOa∼1O0d) 대신 태스크 번호를 유지 및 갱신하는 태스크 번호 유지부를 구비하는 구성으로 해도 된다. 이 경우 셀렉터(111)는, 태스크 번호에 대응하는 액티브 웨이 데이터를 선택하면 된다.
(3) 제어부(138)는, 도 11의 하단에 나타낸 바와 같이 세트내의 다른 웨이의 사용 플래그(U)가 전부 1이면 O으로 하고, 히트한 웨이 자신의 사용 플래그(U)를 1로 갱신하는데, 이 대신 히트한 웨이 자신의 사용 플래그도 0으로 갱신하는 구성으로 해도 된다.
(4) 웨이·레지스터(371)의 내용이 갱신되었을 때, 제어부(138)는, 모든 사용 플래그를 리셋하는 구성으로 해도 된다. 또, 사용 플래그의 리셋과 함께 제어부(138)는, 사용 플래그(U)가 0으로 되어 있는 복수의 웨이로부터 하나를 선택하기 위한 상기 라운드 로빈 방식에서의 라운드 위치를 나타내는 정보를 리셋해도 된다.
(5) 상기 실시형태에서의 뉴 플래그를 갖지 않는 구성으로 해도 된다.
(실시형태 3)
실시형태 1, 2에서는, 캐시 엔트리의 리플레이스 단위가 라인(128 바이트) 단위로 이루어지는 구성을 개시했는데, 본 실시형태에서는, 리플레이스 단위가 태 스크마다 라인 단위와 서브라인(32 바이트) 단위로 절환 가능한 구성에 대해 설명한다.
도 14는, 본 발명의 실시형태 3에서의 캐시 메모리의 구성을 나타내는 블록도이다. 동 도면의 캐시 메모리는, 도 8에 나타낸 구성과 비교하여, 웨이 131a∼131h 대신 웨이 231a∼231h를 구비하는 점과, 셀렉터(233a∼233h)가 추가된 점과, 제어부 138 대신 제어부 238를 구비하는 점이 다르다. 이하, 동일한 점은 설명을 생략하고 다른 점을 중심으로 설명한다.
웨이 231a∼231h는, 도 8의 웨이 131a∼131h에 비해, 캐시 엔트리 내에 밸리드 플래그와 더티 플래그를 1비트씩 유지하는 것이 아니라, 서브라인마다 유지하는 점이 다르다. 도 15에, 캐시 엔트리의 비트 구성을 나타낸다. 동 도면에 나타내는 바와 같이, 동 도면과 같이 하나의 캐시 엔트리는, 밸리드 플래그(V0∼V3), 태그, 라인 데이터, 사용 플래그(U), 뉴 플래그(N), 더티 플래그(DO∼D3)를 유지한다. 사용 플래그(U) 및 뉴 플래그에 대해서는 이미 설명하였기 때문에 생략한다. 라인 데이터(128 바이트)는 4개의 서브라인(32 바이트)으로 이루어진다. 밸리드 플래그(V0∼V3)는, 4개의 서브라인(0∼3)에 대응하고, 대응하는 서브라인이 유효한지의 여부를 나타낸다. 더티 플래그(DO∼D3)는 4개의 서브라인(0∼3)에 대응하고, 대응하는 서브라인에 기입이 있었는지의 여부를 나타낸다. 밸리드 플래그 및 더티 플래그가 서브라인 단위로 설치되어 있는 것은, 리플레이스를 서브라인 단위로도 행하는 것을 가능하게 하기 위함이다. 또한, 라이트 백(write-back)(또는 라이트 스루(write through))도 서브라인 단위로 행하는 것이 가능하다.
셀렉터(233a)는, 웨이(231a)로부터 소스 인덱스(SI)에 의해 선택된 세트에 대응하는 밸리드 플래그(VO∼V3)와, 워드 인덱스(WI)의 상위 2비트가 입력되고, 이 상위 2비트에 지정되는 서브라인에 대응하는 밸리드 플래그를 선택한다. 셀렉터 233b∼233h에 대해서도, 웨이 231b∼231h에 대응하고 있는 점 이외는 동일하다. 이에 의해 셀렉터(233a∼233h)는, 서브라인 단위로 히트했는지의 여부를 판정하는 것을 가능하게 하고 있다.
제어부 238는, 제어부 138에 비해 설정부(372)가 삭제된 점과, RS(리플레이스 사이즈) 레지스터(373)가 추가된 점이 다르다.
설정부(372)가 삭제되어 있는 것은, 웨이·레지스터(371)가 실시형태 1과 동일하게 태스크 절환에서 개서되기 때문이다.
RS 레지스터(373)는, 웨이마다 리플레이스 사이즈를 나타내는 리플레이스 사이즈 데이터를 유지한다. 도 16에 RS 레지스터(373)의 비트 구성예를 나타낸다. 동 도면과 같이 RS 레지스터(373)는, RSO∼RS7으로 이루어지는 리플레이스 사이즈 데이터를 유지한다. RSO∼RS7의 각 비트는, 1일 때 리플레이스 사이즈가 서브라인(32 바이트)인 것을, 0일 때 리플레이스 사이즈가 라인(128 바이트)인 것을 제어부(238)에 지시한다. 이 RS 레지스터(373)는, 웨이·레지스터(371)와 동일하게, 프로세서(1)로부터 읽고 쓰기 가능하고, 컨텍스트의 일부로서 태스크 절환에서 개서된다. 이에 의해, 리플레이스 사이즈를 라인으로 하면 서브라인으로 할지를 웨이마다, 또한 태스크마다 설정하는 것을 가능하게 하고 있다.
도 17은, 제어부(238)에서의 플래그의 갱신처리를 나타내는 플로우챠트다. 동 도면은, 도 12에 나타낸 플로우챠트에 비해, 더티 플래그를 서브라인 단위로 설정하기 위한 단계 S175∼S177가 추가된 점이 다르다. 즉, 제어부(238)는 캐시 메모리로의 기입이 있었을 때(단계 S175), 기입된 서브라인을 판별하고(단계 S176), 판별된 서브라인에 대응하는 더티 플래그를 1로 세트한다(단계 S177). 단계 S175∼S177의 처리는, 예를 들면 제어부(238)에 1입력 4출력의 디멀티플렉서를 웨이마다 구비함으로써 간단히 실현할 수 있다. 이 디멀티플렉서는, 논리 "1"이 입력되고, 4개의 출력을 캐시 엔트리 중의 더티 플래그(D0∼D3)에 대응시켜, 워드 인덱스(WI)의 상위 2비트에 의해 출력처를 제어하도록 구성하면 된다.
이와 같이 하여, 제어부(238)는 서브라인 단위로 설치된 더티 플래그(DO∼D3)를 캐시 라이트에 따라 갱신한다.
도 18은, 제어부(238)에서의 리플레이스 처리를 나타내는 플로우챠트이다. 동 도면은, 도 13에 나타낸 플로우챠트에 비해, 단계 S94 대신 단계 S181∼183을 갖는 점과, 단계 S95 대신 단계 S95a를 갖는 점이 다르다.
제어부(238)는, RS 레지스터(373)로부터 단계 S93에서 선택된 웨이에 대응하는 RS 플래그를 판독하여, 리플레이스 사이즈로서 서브라인과 라인의 어느 것이 지정되어 있는지를 판정하고(단계 S181), 서브라인으로 지정되어 있는 경우에는, 해당 웨이의 서브라인을 리플레이스하고(단계 S182), 라인으로 지정되고 있는 경우에는, 해당 웨이의 라인을 리플레이스한다(단계 S182). 또, 제어부(238)는, 리플레이스된 서브라인 또는 라인에 대응하는 밸리드 플래그 및 더티 플래그를 초기화한다(단계 S95a). 즉, 리플레이스된 서브라인에 대응하는 밸리드 플래그, 더티 플래그를 각각 1, O으로 설정한다. 라인 단위로 리플레이스된 경우에는, 4개의 서브라인에 대응하는 4개의 밸리드 플래그, 더티 플래그를 각각 1, O으로 설정한다.
이상 설명한 것과 같이 본 실시형태에서의 캐시 메모리에 의하면, 실시형태 1 또는 2에 더하여, 리플레이스 단위를 라인과 서브라인으로 웨이마다 및 태스크마다 설정할 수 있기 때문에, 태스크가 필요로 하는 데이터 사이즈에 따라 리플레이스 단위를 절환함으로써, 캐시 미스를 더 저감할 수 있다. 예를 들면, 태스크 1은 오디오 데이터의 디코드/인코드 처리를, 태스크 2가 비디오 데이터의 디코드/인코드 처리를 행하는 것으로 한다. 이 경우, 태스크 1에서는 라인 사이즈를 리플레이스 단위로 하고, 태스크 2에서는 서브라인을 리플레이스 단위로 할 수 있다. 이렇게 하면, 태스크(1, 2)의 캐시 이용 효율을 향상시킬 수 있다. 왜냐하면, 태스크 1은, 시퀀셜 액세스하는 데이터의 길이가 비교적 길고, 태스크 2는 시퀀셜 액세스하는 데이터의 길이가 비교적 짧기 때문이다.
<변형예>
또, 본 발명의 캐시 메모리는, 상기의 실시형태의 구성에 한정하는 것이 아니라, 여러 변형이 가능하다. 이하, 몇 개의 변형예에 대해 설명한다.
(1) 실시형태 2에서의 변형예 (1), (3), (4), (5)를 본 실시형태에 적용해도 된다.
(2) 상기 실시형태에서는, 서브라인의 사이즈를 라인 사이즈의 1/4로 하고 있는데, 1/2, 1/8, 1/16 등 다른 사이즈이어도 된다. 그 경우, 각 캐시 엔트리는 서브라인과 동수의 밸리드 플래그 및 더티 플래그를 각각 유지하면 된다.
(실시형태 4)
실시형태 1∼3에서는, 인액티브인 웨이에 대해 적어도 리플레이스가 제한되는 예를 설명했는데, 본 실시형태에서는, 비교기(32a∼32h) 중 인액티브인 웨이에 대응하는 비교기에서의 비교의 금지와, 인액티브인 웨이에 대응하는 캐시 엔트리로부터의 태그 출력의 금지를 하는 구성에 대해 더 설명한다.
그를 위해, 본 실시형태에서의 캐시 메모리는 도 14에 나타낸 제어부(238) 내부에 비교 제어부(372)를 추가한 구성으로 되어 있다.
도 19는, 비교 제어부(372) 및 웨이(231a∼231h)의 요부의 구성을 나타내는 블록도이다.
동 도면에서, 캐시 어드레스 엔트리(300a∼300h)는, 캐시 메모리 중의 웨이(0∼8)에 포함되어, 각각 세트수와 동수(실시형태에서는 16개)의 태그를 유지한다. 캐시 어드레스 엔트리 300a는 웨이 0에 포함되고, 16개의 태그 유지부(301∼316)와, 16개의 AND 회로(321∼336)를 포함한다. 다른 캐시 어드레스 엔트리 300b∼300h도 동일하다.
AND 회로(321)는, 16개의 세트 중의 세트 0에 대응하고, 세트 인덱스를 디코드하는 디코더(30)에 의해 세트 O이 선택신호(setO)와, 이네이블 신호(EO)와의 AND를 취한다. 그 결과, AND 회로(321)는 선택신호 set0=1이면서 이네이블 신호 E0=1일 때만, 태그 유지부(301)로부터의 태그 출력과, 비교기(32a)를 이네이블로 한다.
비교기(32a∼32h)는, 각각 이네이블 단자(EN)을 갖고, 이네이블 단자의 입력이 1일 때에, 어드레스 레지스터(20) 중의 태그 어드레스와 캐시 어드레스 엔트리 (301)로부터의 태그와의 비교 동작을 행한다.
비교 제어부(372)는, 8개의 웨이에 대응하는 8개의 이네이블 회로(381a∼381h), 횟수 카운터(382)를 구비하고, 비교기(32a∼32h)에서 최대 2회의 태그 비교를 행하게 하도록 제어하고, 1회째의 태그 비교에서는, 웨이·레지스터(371)에 나타난 액티브인 웨이에 대응하는 비교기를 이네이블로 하고, 또한 인액티브 웨이에 대응하는 비교기를 디세이블함으로써, 액티브 웨이의 태그를 비교 대상으로 하고, 또, 1회째의 태그 비교에서 미스 히트라 판정된 경우에, 액티브 웨이에 대응하는 비교기를 디세이블하고, 액티브 웨이에 대응하는 비교기를 이네이블로 함으로써, 인액티브 웨이의 태그를 비교 대상으로 하여 2회째의 태그 비교를 행하게 하도록 구성하고 있다. 또한, 각 비교기의 이네이블/디세이블의 제어와 동시에 웨이(231a∼231h)로부터의 태그 출력도 이네이블/디세이블을 제어하고 있다. 이에 의해 디세이블된 비교기 및 태그 출력에 의한 소비전력의 저감을 도모하고 있다.
이네이블 회로(381a∼381h)는 웨이(231a∼231h)에 대응하고, 웨이·레지스터(371)에 유지되는 액티브 웨이 데이터에 따라, 비교기(32a∼32h) 중, 1회째의 태그 비교에서는 액티브인 웨이에 대응하는 비교기만을 이네이블로 하고, 2회째의 태그 비교에서는 인액티브인 웨이에 대응하는 비교기만을 이네이블로 한다.
즉, 이네이블 회로(381a∼381h)는 이네이블 신호(E0∼E7)를 생성하고, 이 이네이블 신호(E0∼E7)에 의해 캐시 메모리 중의 웨이(0∼8)에 대응하는 8개의 캐시 어드레스 엔트리로부터의 태그 출력과, 8개의 비교기(32a∼32h)를 이네이블/디세이블한다. 예를 들면, 이네이블 회로(381a)는 배타적 논리화 회로에 의해 웨이 0이 액티브인지의 여부를 나타내는 W0비트와, 횟수 카운터(382)의 카운트 값에 따라 이네이블 신호(EO)를 생성한다.
횟수 카운터(382)는, 비교의 횟수를 카운트하는 카운터이고, 0(1회째), 1(2회째)로 카운트 업 한다. 단, 1회째가 히트한 경우에는 카운트 업 하지 않는다.
도 20은, 횟수 카운터(382)의 카운트 값과 액티브 웨이 데이터 Wn(n=O∼7)을 입력으로 하여, 이네이블 신호(En)를 출력으로 하는 이네이블 회로의 제어논리를 나타내는 진리값 표를 나타낸다. 동 도면에서, 예를 들면 웨이 0∼2가 액티브하고 웨이 3∼7이 인액티브인 경우(W0=1), 1회째의 비교에서는, 이네이블 신호 EO∼E2가 1(이네이블)이고 이네이블 신호 E3∼E7이 디세이블이 된다. 이 1회째의 비교에서 히트한 경우에는, 횟수 카운터가 카운트 업 하지 않기 때문에 2회째의 비교는 이루어지지 않는다. 1회째의 비교에서 미스 히트한 경우에는, 횟수 카운터가 카운트 업하기 때문에 2회째의 비교가 이루어진다. 이 경우, 2회째의 비교에서는, 이네이블 신호 EO∼E2가 O(디세이블)이고 이네이블 신호 E3∼E7가 1(이네이블)이 된다.
이상의 구성에 의해, 1회째의 태그 비교에서는, 인액티브인 웨이를 비교 대조로 하지 않기 때문에 비교기에서의 소비전력 및 태그 출력에 의한 소비전력을 저감할 수 있다. 또, 1회째의 태그 비교에서 미스 히트한 경우에는, 인액티브인 웨이만을 비교대상으로서 2회째의 태그 비교를 행하기 때문에, 모든 웨이의 캐시 데이터를 유효하게 활용할 수 있다.
또, 2회째의 비교에서 모든 비교기를 이네이블로 해도 된다. 이 경우, 1회째에서의 히트한 경우에 2회째의 비교가 행해지지 않기 때문에, 소비전력을 저감할 수 있다. 즉, 태스크마다 액티브 웨이가 할당되기 때문에 1회째의 비교에서 높은 히트율을 얻을 수 있다고 생각된다.
또한, 2회째의 비교를 행하지 않는 구성으로 해도 된다. 이 1회째의 비교에서 높은 히트율을 얻을 수 있다고 생각되기 때문에, 소비전력을 저감하는 효과가 있다.
본 발명은, 메모리 액세스를 고속화하기 위한 캐시 메모리 및 그 제어 방법에 적합하며, 예를 들면 온 칩 캐시 메모리, 오프 칩 캐시 메모리, 데이터 캐시 메모리, 명령 캐시 메모리 등에 적합한다.

Claims (23)

  1. N-웨이·세트·어소시에이티브 방식의 캐시 메모리로서,
    N개의 웨이 중 하나 이상의 웨이를 나타내는 제어 레지스터와,
    제어 레지스터에 나타나는 웨이를 액티브로 하는 제어수단과,
    제어 레지스터의 내용을 갱신하는 갱신수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  2. 청구항 1에 있어서 ,
    상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해 적어도 리플레이스를 제한하는 것을 특징으로 하는 캐시 메모리.
  3. 청구항 1에 있어서 ,
    상기 캐시 메모리는 또한,
    웨이마다 설치되고, 캐시 데이터의 어드레스를 태그로서 유지하는 태그 유지수단과,
    프로세서로부터 출력되는 메모리 액세스 어드레스의 상위 부분인 태그 어드레스와, 태그 유지수단으로부터 출력되는 N개의 태그를 비교함으로써 히트인지 미스 히트인지를 판정하는 N개의 비교수단을 갖고,
    상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대 응하는 비교수단을 디세이블로 하는 것을 특징으로 하는 캐시 메모리.
  4. 청구항 3에 있어서,
    상기 제어수단은 또, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대응하는 캐시 어드레스 유지수단에 대해, 비교수단으로의 태그 출력을 디세이블로 하는 것을 특징으로 하는 캐시 메모리.
  5. 청구항 3에 있어서,
    상기 제어수단은, 프로세서로부터 메모리 액세스 어드레스가 출력되었을 때, 해당 액세스 어드레스에 대해, 비교수단에 최대 2회의 태그 비교를 행하게 하도록 제어하고,
    1회째의 태그 비교에서 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대응하는 비교수단을 디세이블하고,
    1회째의 태그 비교에서 미스 히트라 판정된 경우에, 액티브인 웨이 이외의 웨이에 대응하는 비교수단을 디세이블하지 않고 2회째의 태그 비교를 행하게 하는 것을 특징으로 하는 캐시 메모리.
  6. 청구항 5에 있어서,
    상기 제어수단은, 상기 2회째의 태그 비교에서 액티브인 웨이에 대응하는 비교수단을 디세이블하는 것을 특징으로 하는 캐시 메모리.
  7. 청구항 2에 있어서,
    상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해, 그 상태의 갱신을 금지하는 것을 특징으로 하는 캐시 메모리.
  8. 청구항 2에 있어서,
    상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해, 그 액세스 순서를 나타내는 정보의 갱신을 금지하는 것을 특징으로 하는 캐시 메모리.
  9. 청구항 2에 있어서,
    상기 캐시 메모리는,
    상기 갱신수단에 의해 제어 레지스터의 내용이 갱신되었을 때, 웨이에 대한 액세스 순서를 나타내는 정보를 리셋하는 리셋수단을 더 갖는 것을 특징으로 하는 캐시 메모리.
  10. 청구항 9에 있어서,
    상기 액세스 순서를 나타내는 정보는, 캐시 엔트리마다의 1비트 데이터이고,
    상기 캐시 메모리는 또, 리플레이스 가능한 복수 웨이로부터 하나의 웨이를 라운드 로빈 방식으로 선택하기 위해 라운드 위치를 나타내는 데이터를 유지하는 레지스터를 갖고,
    상기 리셋수단은, 상기 갱신수단에 의해 제어 레지스터의 내용이 갱신되었을 때, 상기 레지스터를 리셋하는 것을 특징으로 하는 캐시 메모리.
  11. 청구항 2에 있어서,
    상기 갱신수단은,
    액티브로 해야 할 웨이를 지정하는 웨이 데이터로서, 태스크마다의 웨이 데이터를 유지하는 유지수단과,
    실행중의 태스크에 대응하는 웨이 데이터를 유지하도록 상기 제어 레지스터를 개서하는 개서수단을 갖는 것을 특징으로 하는 캐시 메모리.
  12. 청구항 11에 있어서,
    상기 유지수단은, 메모리 중에 기억된 태스크마다의 컨텍스트 데이터의 일부로서 상기 웨이 데이터를 유지하고,
    상기 개서수단은, 태스크 절환시에, 제어 레지스터 중의 현 태스크의 웨이 데이터를 메모리에 퇴피하고, 다음 태스크의 웨이 데이터를 메모리로부터 상기 제어 레지스터에 복귀시키는 것을 특징으로 하는 캐시 메모리.
  13. 청구항 12에 있어서,
    상기 유지수단은, 태스크마다의 상기 웨이 데이터를 유지하고,
    상기 개서수단은,
    메모리에 기억된 각 태스크의 어드레스 범위를 기억하는 어드레스 기억수단과,
    어드레스 기억수단에 기억된 어드레스 범위와, 프로세서로부터 출력되는 명령 페치 어드레스에 기초하여, 실행중의 태스크를 판별하는 판별수단과,
    판별된 실행중의 태스크에 대응하는 웨이 데이터를 상기 유지수단으로부터 선택하는 선택수단과,
    선택된 웨이 데이터를 상기 제어 레지스터에 기입하는 기입수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  14. 청구항 12에 있어서,
    상기 유지수단은, 태스크마다의 상기 웨이 데이터를 유지하고,
    상기 개서수단은,
    프로세서로부터 출력되는 태스크 번호에 따라, 실행중의 태스크에 대응하는 웨이 데이터를 상기 유지수단으로부터 선택하는 선택수단과,
    선택된 웨이 데이터를 상기 제어 레지스터에 기입하는 기입 수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  15. 청구항 11에 있어서,
    상기 유지수단에 유지되는 웨이 데이터는, 오퍼레이팅 시스템에 의해 태스크 에 할당되는 것을 특징으로 하는 캐시 메모리.
  16. 청구항 1에 있어서,
    상기 캐시 메모리는, 각 웨이에서의 리플레이스 단위를 캐시 엔트리의 라인 사이즈와, 라인 사이즈의 2의 n승 분의 1의 사이즈로 절환 가능하고,
    상기 제어 레지스터는, 웨이마다의 리플레이스 사이즈를 더 나타내고,
    상기 제어수단은, 제어 레지스터에 나타난 리플레이스 사이즈를 단위로 하여 리플레이스 제어를 행하는 것을 특징으로 하는 캐시 메모리.
  17. 청구항 16에 있어서,
    상기 제어수단은, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해 적어도 리플레이스를 제한하고, 제어 레지스터에 나타난 액티브인 웨이에 대해 제어 레지스터에 나타난 사이즈를 단위로 리플레이스를 행하는 것을 특징으로 하는 캐시 메모리.
  18. 청구항 17에 있어서,
    상기 갱신수단은,
    액티브로 해야 할 웨이를 지정하는 웨이 데이터으로서 태스크마다의 웨이 데이터와, 태스크마다의 리플레이스 사이즈를 유지하는 유지수단과,
    실행중의 태스크에 대응하는 웨이 데이터 및 리플레이스 사이즈를 유지하도 록 상기 제어 레지스터를 개서하는 개서수단을 갖는 것을 특징으로 하는 캐시 메모리.
  19. 청구항 1에 있어서,
    상기 캐시 메모리는 또,
    캐시의 단위가 되는 데이터를 유지하는 캐시 엔트리마다, 액세스의 유무를 나타내는 1비트의 액세스 정보를 기억하는 기억수단과,
    액세스 없음을 나타내는 액세스 정보에 대응하는 캐시 엔트리 중에서 리플레이스 대상의 캐시 엔트리를 선택하는 선택수단을 구비하는 것을 특징으로 하는 캐시 메모리.
  20. 청구항 19에 있어서,
    상기 캐시 메모리는,
    리플레이스 가능한 복수 웨이로부터 하나의 웨이를 라운드 로빈 방식으로 선택하기 위한 라운드 위치를 나타내는 데이터를 유지하는 레지스터를 더 갖고,
    상기 갱신수단에 의해 제어 레지스터의 내용이 갱신되었을 때, 웨이에 대한 액세스 순서를 나타내는 정보와, 상기 레지스터를 라운드 위치를 나타내는 데이터를 리셋하는 리셋수단을 갖는 것을 특징으로 하는 캐시 메모리.
  21. N-웨이·세트·어소시에이티브 방식의 캐시 메모리를 제어하는 제어방법으로 서,
    N개의 웨이 중 하나 이상의 웨이를 나타내는 웨이 데이터를 제어 레지스터에 설정하는 단계와,
    제어 레지스터에 나타나는 웨이를 액티브로 하는 제어 단계를 갖는 것을 특징으로 하는 제어방법.
  22. 청구항 21에 있어서,
    상기 제어 단계에서는, 제어 레지스터에 나타난 액티브인 웨이 이외의 웨이에 대해 적어도 리플레이스를 제한하는 것을 특징으로 하는 제어방법.
  23. 청구항 22에 있어서,
    상기 제어방법은,
    액티브로 해야 할 웨이를 지정하는 웨이 데이터로서 태스크마다의 웨이 데이터를 유지하는 유지부로부터 실행중의 태스크에 대응하는 웨이 데이터를 판독하여, 판독한 웨이 데이터를 상기 제어 레지스터에 기입하는 갱신 단계를 더 갖는 것을 특징으로 하는 제어방법.
KR1020067006856A 2003-11-12 2004-09-08 캐시 메모리 및 그 제어방법 KR100813370B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003382570 2003-11-12
JPJP-P-2003-00382570 2003-11-12

Publications (2)

Publication Number Publication Date
KR20060085677A true KR20060085677A (ko) 2006-07-27
KR100813370B1 KR100813370B1 (ko) 2008-03-12

Family

ID=34587259

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067006856A KR100813370B1 (ko) 2003-11-12 2004-09-08 캐시 메모리 및 그 제어방법

Country Status (7)

Country Link
US (1) US7502887B2 (ko)
EP (1) EP1684180A4 (ko)
JP (2) JP4044585B2 (ko)
KR (1) KR100813370B1 (ko)
CN (1) CN1879092B (ko)
TW (1) TW200517835A (ko)
WO (1) WO2005048112A1 (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1686485A4 (en) * 2003-11-18 2008-10-29 Matsushita Electric Ind Co Ltd CACHE MEMORY AND ASSOCIATED CHECK
JP4753549B2 (ja) 2004-05-31 2011-08-24 パナソニック株式会社 キャッシュメモリおよびシステム
US7664970B2 (en) 2005-12-30 2010-02-16 Intel Corporation Method and apparatus for a zero voltage processor sleep state
US20070156992A1 (en) * 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US7966511B2 (en) * 2004-07-27 2011-06-21 Intel Corporation Power management coordination in multi-core processors
US7263577B2 (en) * 2005-03-03 2007-08-28 Qualcomm Incorporated Power saving methods and apparatus to selectively enable comparators in a CAM renaming register file based on known processor state
CN101151599B (zh) * 2005-03-31 2011-08-03 株式会社半导体能源研究所 算术处理装置和使用算术处理装置的电子设备
JPWO2006109421A1 (ja) * 2005-04-08 2008-10-16 松下電器産業株式会社 キャッシュメモリ
JP4090497B2 (ja) 2005-04-08 2008-05-28 松下電器産業株式会社 キャッシュメモリシステム及びその制御方法
US7647514B2 (en) * 2005-08-05 2010-01-12 Fujitsu Limited Reducing power consumption at a cache
US20070083783A1 (en) * 2005-08-05 2007-04-12 Toru Ishihara Reducing power consumption at a cache
TW200821831A (en) * 2005-12-21 2008-05-16 Nxp Bv Schedule based cache/memory power minimization technique
TW200746161A (en) * 2005-12-21 2007-12-16 Nxp Bv Power partitioning memory banks
US7516275B2 (en) * 2006-04-25 2009-04-07 International Business Machines Corporation Pseudo-LRU virtual counter for a locking cache
US8244980B2 (en) * 2006-06-21 2012-08-14 Intel Corporation Shared cache performance
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
US7809980B2 (en) * 2007-12-06 2010-10-05 Jehoda Refaeli Error detector in a cache memory using configurable way redundancy
JP4635063B2 (ja) * 2008-03-11 2011-02-16 株式会社東芝 キャッシュメモリ制御回路及びプロセッサ
JP5040773B2 (ja) 2008-03-31 2012-10-03 富士通株式会社 メモリバッファ割当装置およびプログラム
WO2009122694A1 (ja) * 2008-03-31 2009-10-08 パナソニック株式会社 キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
EP2297637A1 (en) * 2008-07-02 2011-03-23 Nxp B.V. A multiprocessor circuit using run-time task scheduling
JP2010244435A (ja) * 2009-04-08 2010-10-28 Panasonic Corp キャッシュ制御装置及びキャッシュ制御方法
US8645629B2 (en) * 2009-09-16 2014-02-04 Intel Corporation Persistent cacheable high volume manufacturing (HVM) initialization code
JP5650441B2 (ja) * 2010-06-07 2015-01-07 キヤノン株式会社 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
TW201220048A (en) * 2010-11-05 2012-05-16 Realtek Semiconductor Corp for enhancing access efficiency of cache memory
JP2012203560A (ja) * 2011-03-24 2012-10-22 Toshiba Corp キャッシュメモリおよびキャッシュシステム
WO2012169142A1 (en) 2011-06-09 2012-12-13 Semiconductor Energy Laboratory Co., Ltd. Cache memory and method for driving the same
JP6012263B2 (ja) 2011-06-09 2016-10-25 株式会社半導体エネルギー研究所 半導体記憶装置
CN102725741B (zh) * 2011-12-31 2014-11-05 华为技术有限公司 高速缓冲存储器控制方法、装置和***
US9223709B1 (en) * 2012-03-06 2015-12-29 Marvell International Ltd. Thread-aware cache memory management
US9135182B2 (en) 2012-06-01 2015-09-15 Semiconductor Energy Laboratory Co., Ltd. Central processing unit and driving method thereof
US8984227B2 (en) * 2013-04-02 2015-03-17 Apple Inc. Advanced coarse-grained cache power management
US9400544B2 (en) 2013-04-02 2016-07-26 Apple Inc. Advanced fine-grained cache power management
US9396122B2 (en) 2013-04-19 2016-07-19 Apple Inc. Cache allocation scheme optimized for browsing applications
CN104346298B (zh) * 2013-08-06 2018-12-25 北京数码视讯软件技术发展有限公司 基于智能卡的数据处理方法、装置及智能卡
US10073787B2 (en) * 2016-04-18 2018-09-11 Via Alliance Semiconductor Co., Ltd. Dynamic powering of cache memory by ways within multiple set groups based on utilization trends
US10303612B2 (en) * 2016-12-30 2019-05-28 Intel Corporation Power and performance-efficient cache design for a memory encryption engine
US10783083B2 (en) 2018-02-12 2020-09-22 Stmicroelectronics (Beijing) Research & Development Co. Ltd Cache management device, system and method
CN112906332B (zh) * 2021-03-25 2022-08-23 山东高云半导体科技有限公司 Fpga设计的综合实现方法和装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4315312A (en) * 1979-12-19 1982-02-09 Ncr Corporation Cache memory having a variable data block size
JPH04100158A (ja) 1990-08-18 1992-04-02 Pfu Ltd キャッシュ制御方式
JPH04137053A (ja) * 1990-09-28 1992-05-12 Nippon Telegr & Teleph Corp <Ntt> キャッシュメモリへのブロック登録制御方式
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
JP3381079B2 (ja) 1993-03-16 2003-02-24 日本電信電話株式会社 キャッシュメモリを用いた排他制御システム
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
JP3348367B2 (ja) 1995-12-06 2002-11-20 富士通株式会社 多重アクセス方法および多重アクセスキャッシュメモリ装置
KR19990082423A (ko) 1996-02-16 1999-11-25 가나이 쓰도무 멀티포트메모리 및 그것을 액세스하는 데이타처리장치
US6144924A (en) * 1996-05-20 2000-11-07 Crane Nuclear, Inc. Motor condition and performance analyzer
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
EP0856798B1 (en) 1997-01-30 2004-09-29 STMicroelectronics Limited A cache system
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6349363B2 (en) 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
WO2002008911A1 (fr) * 2000-07-24 2002-01-31 Hitachi,Ltd Systeme de traitement de donnees
JP2002116956A (ja) 2000-10-06 2002-04-19 Nec Corp キャッシュ制御方法及びキャッシュ制御システム
JP3900025B2 (ja) 2002-06-24 2007-04-04 日本電気株式会社 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式

Also Published As

Publication number Publication date
CN1879092A (zh) 2006-12-13
CN1879092B (zh) 2010-05-12
JP4044585B2 (ja) 2008-02-06
TW200517835A (en) 2005-06-01
WO2005048112A1 (ja) 2005-05-26
JP4098347B2 (ja) 2008-06-11
US20070136530A1 (en) 2007-06-14
JPWO2005048112A1 (ja) 2007-05-31
EP1684180A1 (en) 2006-07-26
US7502887B2 (en) 2009-03-10
EP1684180A4 (en) 2008-10-29
KR100813370B1 (ko) 2008-03-12
JP2007299423A (ja) 2007-11-15

Similar Documents

Publication Publication Date Title
KR100813370B1 (ko) 캐시 메모리 및 그 제어방법
US7676632B2 (en) Partial cache way locking
US6058456A (en) Software-managed programmable unified/split caching mechanism for instructions and data
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
US5978888A (en) Hardware-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels
US6877067B2 (en) Shared cache memory replacement control method and apparatus
US20090113135A1 (en) Mechanism for data cache replacement based on region policies
US6122708A (en) Data cache for use with streaming data
KR100805974B1 (ko) 스마트 캐시
US6026470A (en) Software-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels
KR100814982B1 (ko) 다수의 채움 모드를 구비한 캐시
US7555610B2 (en) Cache memory and control method thereof
JP4009304B2 (ja) キャッシュメモリおよびキャッシュメモリ制御方法
KR100395768B1 (ko) 멀티 레벨 캐쉬 시스템
US8266379B2 (en) Multithreaded processor with multiple caches
KR101098689B1 (ko) N개의 경로 선택 방법, 집적 회로 및 캐시 제어 회로
US5983322A (en) Hardware-managed programmable congruence class caching mechanism
JPH01125641A (ja) バッファメモリ制御方式
JPH0659977A (ja) 明示的なライン置換え操作が可能なキャッシュメモリとその制御方法
US20080168232A1 (en) Cache Memory and Control Method Thereof
KR100302928B1 (ko) 명령어및데이터에대한하드웨어-관리프로그래머블통합/분할된캐싱메카니즘
US7386671B2 (en) Smart cache
JP2000293437A (ja) キャッシュメモリ装置及びキャッシュメモリ制御方法
JP2009252004A (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
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20110222

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee