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

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

Info

Publication number
KR20060130120A
KR20060130120A KR1020067014612A KR20067014612A KR20060130120A KR 20060130120 A KR20060130120 A KR 20060130120A KR 1020067014612 A KR1020067014612 A KR 1020067014612A KR 20067014612 A KR20067014612 A KR 20067014612A KR 20060130120 A KR20060130120 A KR 20060130120A
Authority
KR
South Korea
Prior art keywords
address
condition
line
cache
memory
Prior art date
Application number
KR1020067014612A
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 KR20060130120A publication Critical patent/KR20060130120A/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

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

본 발명의 캐시 메모리는, 프로세서로부터 출력되는 메모리 액세스의 진행 상황에 기초해 다음에 프리페치해야 할 라인 어드레스를 예측하는 예측 처리부(39)를 갖고, 예측 처리부(39)는, 메모리로부터 캐시 메모리에 예측된 라인 어드레스의 데이터를 프리페치하는 프리페치부(414)와, 메모리로부터 캐시 메모리에 데이터를 로딩하지 않고, 예측된 라인 어드레스를 태그로서 캐시 엔트리에 설정하여, 유효 플래그를 유효하게 하는 터치부(415)를 구비한다.

Description

캐시 메모리 및 그 제어 방법{CACHE MEMORY AND CONTROL METHOD THEREOF}
본 발명은, 프로세서의 메모리 액세스를 고속화하기 위한 캐시 메모리 및 그 제어 방법에 관한 것이다.
최근의 마이크로프로세서에서는, 예를 들면 SRAM(Static Random Access Memory) 등으로 이루어지는 소용량이며 고속인 캐시 메모리를 마이크로프로세서의 내부, 또는 그 근방에 배치하여, 데이터의 일부를 캐시 메모리에 기억함으로써, 마이크로프로세서의 메모리 액세스를 고속화시키고 있다.
캐시의 효율 향상(히트율 향상, 캐시 미스(miss) 지연의 저감)을 위해서, 캐시 미스가 발생하기 전에, 가까운 미래에 사용할 데이터를 미리 캐시에 채워넣는 기술로서 프리로딩(또는 프리페치(pre-fetch))이 있다(예를 들면, 특허 문헌 1).
종래의 프리페치 기술에서는, 프리페치 명령에 의해 지정한 어드레스를 포함하는 라인을 캐시에 로딩하고 있다. 이에 의해, 캐시 미스의 저감을 도모하고 있다.
(특허 문헌 1) : 일본특개평 7-295882호 공보
그러나, 상기 종래 기술에 의하면, 예를 들면 소프트웨어에 의해, 루프의 외측에서 일괄적으로 프리페치를 행한 경우, 루프에서 필요한 데이터 영역을 미리 전부 캐시 상에 확보하게 되므로, 캐시의 용량이 작은 경우에는, 그 이외의 필요한 데이터가 캐시로부터 추방되어, 캐시 미스가 발생한다. 또, 데이터의 캐싱 종료, 무효화 등을 루프의 외측에서 일괄적으로 행하는 경우는, 루프를 빠져나올 때까지 이들 동작에 의한 캐시의 개방이 행해지지 않기 때문에, 캐시의 용량이 부족하여 캐시 미스가 발생한다.
또, 루프 중에 소프트웨어에 의해 캐시 조작을 행하는 명령을 삽입한 경우, 캐시 조작을 행하는 어드레스를 루프 중에서 소프트웨어에 의해 관리할 필요가 있다. 즉, 캐시 조작을 행하는 명령을 루프 중에 기술할 필요가 있으므로, 성능의 열화가 발생한다.
또한, 메모리로의 액세스의 상황을 하드웨어에 의해 감시하여, 하드웨어에 의해 자동적으로 캐시 조작을 하는 경우, 정확한 예측을 행할 수 없으면 쓸데없는 전송이 발생하거나, 또는 소프트웨어로부터의 정확한 정보가 없으면 캐시 상의 데이터와 외부 메모리 상의 데이터의 정합성을 취할 수 없으므로, 하드웨어의 예측에 의해 이들 조작을 행하는 것은 곤란하다.
본 발명의 목적은, 프로세서로부터 미리 설정된 정보를 기초로, 하드웨어가 프로세서의 프로그램 동작의 상황을 감시하여, 동기를 취하면서 적절한 타이밍으로 캐시에 대해 조작을 행하는 캐시 메모리 시스템을 제공하는 것에 있다.
상기 목적을 달성하기 위해서 본 발명의 캐시 메모리 시스템은, 프로세서의 상태에 관한 조건을 생성하는 조건 생성 수단과, 현재의 프로세서의 상태가 상기 조건을 만족하는지 여부를 판정하는 판정 수단과, 조작 대상이 되는 어드레스를 생성하는 어드레스 생성 수단과, 상기 판정 수단이 조건을 만족한다고 판정했을 때 상기 어드레스 생성 수단에 의해 생성된 어드레스를 사용해 캐시를 조작하는 조작 수단을 구비한다.
여기서, 상기 조건 생성 수단은, 상기 판정 수단이 조건을 만족한다고 판정한 경우에 새로운 조건을 생성하도록 해도 된다.
이 구성에 의하면, 프로세서의 동작 상태가 조건을 만족하게 되었을 때 캐시를 조작하기 때문에, 프로세서의 동작의 진행 상황에 동기하여 캐시 메모리를 조작할 수 있다. 또 소프트웨어적으로 실현하지 않기 때문에 프로세서에 부하를 가하지 않고 캐시 메모리를 효율적으로 성능 열화의 초래 없이 동작시킬 수 있다.
여기서, 상기 조건 생성 수단은, 프로세서 내의 특정 레지스터의 값에 관한 조건을 생성하도록 해도 된다. 상기 특정 레지스터는 프로그램 카운터여도 된다.
이 구성에 의하면, 메모리 액세스 어드레스나, 프로그램 패치 어드레스를 상기 조건으로 해서, 프로세서의 상태를 감시할 수 있다.
여기서, 상기 조건 생성 수단은, 특정 어드레스 범위 내로의 메모리 액세스 및 특정 어드레스 범위 밖으로의 메모리 액세스 중 어느 하나를 상기 조건으로서 생성하도록 해도 된다.
또, 상기 조건 생성 수단은, 프로세서가 특정 명령을 실행하는 것을 상기 조건으로서 생성하도록 해도 된다.
여기서, 상기 조건 생성 수단은, 현재의 조건에 특정한 연산을 실시함으로써 상기 새로운 조건을 생성하도록 해도 된다.
또, 상기 조건 생성 수단은 메모리 액세스 어드레스를 조건으로서 생성하고, 상기 판정 수단이 조건을 만족한다고 판정한 경우에 현재의 조건에 상수를 가산함으로써 상기 새로운 조건을 생성하도록 해도 된다.
여기서, 상기 상수는, 프로세서에 의해 실행되는 포스트 인크리먼트가 포함된 로드/스토어 명령에서의 인크리먼트값 또는 디크리먼트값, 및 프로세서에 의해 실행되는 2회의 로드/스토어 명령에서의 어드레스의 차분값 중 어느 하나인 것으로 해도 된다.
여기서, 상기 조건 생성 수단은 복수의 조건을 생성하고, 상기 판정 수단은, 복수의 조건의 전부를 만족하는지 여부를 판정하도록 해도 된다.
또, 상기 조건 생성 수단은 복수의 조건을 생성하고, 상기 판정 수단은, 복수의 조건 중 어느 하나를 만족하는지 여부를 판정하도록 해도 된다.
여기서, 상기 조작 수단은, 상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과, 격납되어 있지 않다고 판정된 경우에, 캐시 메모리 중의 라인을 선택하는 선택 수단과, 상기 선택된 라인이 유효하고 더티하면 라이트백을 행하는 라이트백 수단과, 상기 어드레스에 대응하는 데이터를 메모리로부터 라이트백 후의 선택된 라인에 전송하는 전송 수단과, 상기 어드레스를 태그로서 상기 선택된 라인에 등록하는 등록 수단을 구비하도록 구성해도 된다.
이 구성에 의하면, 캐시 메모리의 프리페치를, 프로세서의 동작 상황을 감시하여 동기를 취하면서 적절한 타이밍으로 행할 수 있다.
여기서, 상기 조작 수단은, 상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과, 격납되어 있지 않다고 판정된 경우에, 캐시 메모리 중의 라인을 선택하는 선택 수단과, 선택된 라인이 유효하고 더티하면 라이트백을 행하는 라이트백 수단과, 메모리로부터 선택된 라인에 데이터를 전송하지 않고, 상기 생성한 어드레스를 태그로서 선택된 라인에 등록하는 등록 수단을 구비하는 구성으로 해도 된다.
이 구성에 의하면, 캐시 메모리의 라인에 데이터를 전송하지 않고 확보하는 것(터치라고 부른다)을, 프로세서의 동작 상황을 감시하여 동기를 취하면서 적절한 타이밍으로 행할 수 있다.
여기서, 상기 조작 수단은, 상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과, 격납되어 있다고 판정된 경우에, 캐시 메모리 중의 격납처의 라인을 선택하는 선택 수단과, 선택된 라인이 유효하고 더티하면 라이트백을 행하는 라이트백 수단을 구비하는 구성으로 해도 된다.
이 구성에 의하면, 캐시 메모리의 라인 데이터의 라이트백(캐싱 종료)을, 프로세서의 동작 상황을 감시하여 동기를 취하면서 적절한 타이밍으로 행할 수 있다.
여기서, 상기 조작 수단은, 상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과, 격납되어 있다고 판정된 경우에, 캐시 메모리 중의 격납처의 라인을 선택하는 선택 수단과, 선택된 라인을 무효화하는 무효화 수단을 구비하는 구성으로 해도 된다.
이 구성에 의하면, 캐시 메모리의 라인의 무효화를, 프로세서의 동작 상황을 감시하여 동기를 취하면서 적절한 타이밍으로 행할 수 있다.
여기서, 상기 조작 수단은, 상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과, 격납되어 있다고 판정된 경우에, 캐시 메모리 중의 격납처의 라인을 선택하는 선택 수단과, 라인의 액세스 순서를 나타내는 순서 정보에 대해, 선택된 라인의 액세스 순서를 변경하는 변경 수단을 구비하는 구성으로 해도 된다.
이 구성에 의하면, 캐시 메모리의 라인의 액세스 순서 정보를, 프로세서의 동작 상황을 감시하여 동기를 취하면서 적절한 타이밍으로 행할 수 있다. 이에 의해 소위 LRU에 의한 캐시의 리플레이스 순서를 빠르게 하거나 느리게 하거나 할 수 있다.
여기서, 상기 조건 생성 수단에 의해 상기 조건으로서 메모리 어드레스를 생성하고, 상기 조작 수단은, 상기 조건 생성 수단에 의해 생성된 메모리 어드레스가 라인의 도중을 가리키는 경우에, 당해 라인의 선두, 다음 라인의 선두 및 앞 라인의 선두 중 어느 하나를 가리키도록 조정함으로써 어드레스를 생성하는 조정 수단을 더 구비하는 구성으로 해도 된다.
이 구성에 의하면, 프로세서가 어드레스 오름차순으로 액세스하는 경우나, 어드레스 내림차순으로 액세스하는 경우도, 다음에 필요한 라인의 어드레스를 적절하게 산출할 수 있다.
또, 본 발명의 캐시 메모리의 제어 방법에 대해서도 상기와 동일한 수단, 작용을 갖는다.
본 발명의 캐시 메모리에 의하면, 프로세서의 동작의 진행 상황에 동기하여 캐시 메모리를 조작할 수 있다. 또 소프트웨어적으로 실현하지 않기 때문에 프로세서에 부하를 가하지 않고 캐시 메모리를 효율적으로 성능 열화의 초래 없이 동작시킬 수 있다.
예를 들면, 프로세서가 포스트 인크리먼트가 포함된 로딩 명령에 의해 시퀀셜하게 메모리 액세스하는 경우에는, 효율적으로 프리페치할 수 있다. 또, 프로세서가 포스트 인크리먼트가 포함된 스토어 명령에 의해 시퀀셜하게 데이터를 기록하는 경우에는, 메모리로부터 캐시 메모리에 데이터를 로딩하는 패널티를 삭제할 수 있어, 더욱 효율적으로 캐시 엔트리를 터치(확보)할 수 있다.
또, 프로세서가 포스트 인크리먼트가 포함된 스토어 명령에 의해 시퀀셜하게 데이터를 기록하는 경우에, 프로세서의 스토어 명령의 진행 상황에 따라, 스토어가 완료한 라인을 예측하여, 예측한 라인에 캐싱 종료 속성이나 무효화 속성을 설정하므로, 프로세서에서는, 캐시 메모리의 라인 사이즈나 라인 경계를 인식하지 않아도, 라이트백해야 할 라인을 캐시 메모리에서 예측하여, 효율적으로 클리닝(라이트백)이나, 캐시 엔트리의 개방(무효화)을 행할 수 있다.
또한, 프로세서가 포스트 인크리먼트가 포함된 로딩 명령에 의해 시퀀셜하게 데이터를 독출하는 경우에, 독출이 완료된 라인 데이터를 유지하는 캐시 엔트리에 리플레이스 속성이 설정되어, 맨 먼저 리플레이스 대상으로서 선택되기 때문에, 액세스 빈도가 낮은 데이터가 캐시 메모리에 남는 것에 의한 캐시 미스의 유발을 저감할 수 있다.
(발명의 효과)
본 발명의 캐시 메모리에 의하면, 프로세서의 동작의 진행 상황에 동기하여 캐시 메모리를 조작할 수 있다. 또 소프트웨어적으로 실현하지 않기 때문에 프로세서에 부하를 가하지 않고 캐시 메모리를 효율적으로 성능 열화의 초래 없이 동작시킬 수 있다. 또, 메모리 액세스 어드레스나, 프로그램 패치 어드레스를 상기 조건으로 해서, 프로세서의 상태를 감시할 수 있다.
예를 들면, 캐시 메모리의 라인에 데이터를 전송하지 않고 확보하는 것(터치라고 부른다)을, 프로세서의 동작 상황을 감시하여 동기를 취하면서 적절한 타이밍으로 행할 수 있다.
또, 캐시 메모리의 라인 데이터의 라이트백(캐싱 종료)을, 프로세서의 동작 상황을 감시하여 동기를 취하면서 적절한 타이밍으로 행할 수 있다. 캐시 메모리의 라인의 무효화를, 프로세서의 동작 상황을 감시하여 동기를 취하면서 적절한 타이밍으로 행할 수 있다.
또한, 캐시 메모리의 라인의 액세스 순서 정보를, 프로세서의 동작 상황을 감시하여 동기를 취하면서 적절한 타이밍으로 행할 수 있다. 이에 의해 소위 LRU에 의한 캐시의 리플레이스 순서를 빠르게 하거나 느리게 하거나 할 수 있다.
또, 프로세서가 어드레스 오름차순으로 액세스하는 경우나, 어드레스 내림차순으로 액세스하는 경우도, 다음에 필요한 라인의 어드레스를 적절하게 산출할 수 있다.
도 1은, 본 발명의 실시형태 1에 있어서의 프로세서, 캐시 메모리, 메모리를 포함하는 시스템의 개략적 구성을 도시한 블록도이다.
도 2는, 캐시 메모리의 구성예를 도시한 블록도이다.
도 3은, 예측 처리부의 구성예를 도시한 블록도이다.
도 4(a)는, 스타트 어드레스 레지스터에 스타트 어드레스를 기록하는 명령의 일례를 도시하고, 도 4(b)는, 사이즈 레지스터에 사이즈를 기록하는 명령의 일례를 도시하고, 도 4(c)는, 커맨드 레지스터에 커맨드를 기록하는 명령의 일례를 도시하고, 도 4(d)는, 커맨드의 일례를 도시한다.
도 5는, 스타트 얼라이너 및 엔드 얼라이너의 설명도이다.
도 6(a)는, 프리페치부에 의한 예측 프리페치의 설명도, 도 6(b)는, 터치부에 의한 예측 터치의 설명도이다.
도 7은, 프리페치부에서의 예측 프리패치 처리의 일례를 도시한 흐름도이다.
도 8은, 터치부에서의 예측 터치 처리의 일례를 도시한 흐름도이다.
도 9는, 본 발명의 실시형태 2에 있어서의 캐시 메모리의 구성을 도시한 블록도이다.
도 10은, 캐시 엔트리의 비트 구성을 도시한다.
도 11은, 제어부에 의한 사용 플래그의 갱신예를 도시한다.
도 12(a)는, 위크 플래그가 존재하지 않는 경우에 캐시 엔트리가 리플레이스되는 모양을 도시한 도면, 도 12(b)는, 리플레이스 처리에 있어서의 위크 플래그 W의 역할을 도시한 설명도이다.
도 13은, 예측 처리부의 구성을 도시한 블록도이다.
도 14(a)는, C 설정부에 의한 C 플래그 설정 처리의 설명도, 도 14(b)는, W 설정부에 의한 W 플래그 설정 처리의 설명도이다.
도 15는, C 플래그 설정부에서의 C 플래그 설정 처리의 일례를 도시한 흐름도이다.
도 16은, W 플래그 설정부에서의 W 플래그 설정 처리의 일례를 도시한 흐름도이다.
도 17은, 제어부에서의 클리닝 처리의 일례를 도시한 흐름도이다.
도 18은, 제어부에서의 U 플래그 갱신 처리를 도시한 흐름도이다.
도 19는, 제어부에서의 리플레이스 처리를 도시한 흐름도이다.
〈부호의 설명〉
1…프로세서 2…메모리
3…캐시 메모리 20…어드레스 레지스터
21…메모리 I/F 30…디코더
31a∼31d…웨이 32a∼32d…비교기
33a∼33d…AND 회로 34…OR 회로
35…셀렉터 36…셀렉터
37…디멀티플렉서 38…제어부
39…예측 처리부 131a…웨이
131a∼131d…웨이 131b∼131d…웨이
138…제어부 139…예측 처리부
401…커맨드 레지스터 402…스타트 어드레스 레지스터
403…사이즈 레지스터 404…가산기
405a, 405b…스타트 얼라이너 406a, 406b…엔드 얼라이너
407…액세스 어드레스 레지스터 408…예측값 레지스터
409…상수 레지스터 410…셀렉터
411…가산기 412…비교기
413…실행부 413a…실행부
414…프리페치부 415…터치부
416…C 설정부 417…W 설정부
(실시형태 1)
<전체 구성>
도 1은, 본 발명의 실시형태 1에 있어서의 프로세서(1), 캐시 메모리(3), 메모리(2)를 포함하는 시스템의 개략적 구성을 도시한 블록도이다. 동 도면처럼, 본 발명의 캐시 메모리(3)는, 프로세서(1) 및 메모리(2)를 갖는 시스템에 구비된다.
캐시 메모리(3)는, 프로세서(1)로부터 지정된 조건에 따라서, 예측 프리페치를 행하도록 구성되어 있다. 예측 프리페치란, 프로세서(1)에 의한 메모리 액세스의 진행 상황에 기초해 다음에 프리페치해야 할 라인 어드레스를 예측하여, 예측한 라인 어드레스의 데이터를 캐시 메모리에 프리페치하는 것을 말한다. 또, 프로세서(1)로부터 지정되는 조건이라고 하는 것은, 어드레스 범위, 시퀀셜 액세스하는 경우의 어드레스의 인크리먼트값 또는 디크리먼트값, 또는 액세스 방향(어드레스 오름차순 또는 내림차순) 등이다. 예측 프리페치는, 프로세서가 시퀀셜하게 메모리 액세스하는 경우에 적합하다.
이에 추가해, 캐시 메모리(3)는, 프로세서(1)로부터 지정된 조건에 따라서, 예측 터치를 행하도록 구성되어 있다. 예측 터치란, 프로세서(1)에 의한 메모리 액세스의 진행 상황에 기초해 다음에 터치해야 할 라인 어드레스를 예측하여, 예측한 라인 어드레스의 데이터를 로딩하지 않고 세트 캐시 엔트리에 유효 플래그와 태그를 설정함으로써 확보하는 것을 말한다. 예측 터치는, 배열 데이터 등의 연산 결과를 메모리에 순차적으로 격납하는 경우 등에 적합하다.
<캐시 메모리의 구성>
이하, 캐시 메모리(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)를 포함한다. 여기서, 태그 어드레스는 웨이에 매핑되는 메모리 중의 영역(그 사이즈는 세트 수×블록이다)을 가리킨다. 이 영역의 사이즈는, 태그 어드레스보다도 하위의 어드레스 비트(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개의 캐시 엔트리를 갖는다. 1개의 캐시 엔트리는, 유효 플래그 V, 21비트의 태그, 128바이트의 라인 데이터, 더티 플래그 D를 갖는다. 태그는 21비트의 태그 어드레스의 카피이다. 라인 데이터는, 태그 어드레스 및 세트 인덱스에 의해 특정되는 블록 중의 128바이트 데이터의 카피이다. 유효 플래그 V는, 당해 캐시 엔트리의 데이터가 유효한지 여부를 나타낸다. 더티 플래그 D는, 당해 캐시 엔트리에 프로세서로부터 기록이 있었는지 여부, 즉 서브 라인 중에 캐시된 데이터가 존재하지만 기록에 의해 메모리 중의 데이터와 다르기 때문에 메모리에 재기록(write-back)하는 것이 필요한지 여부를 나타낸다.
비교기(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)는, 예측 처리부(39)를 포함하고, 캐시 메모리(3)의 전체의 제어를 행한다. 예측 처리부(39)는, 주로 프리페치의 제어를 행한다.
<예측 처리부의 구성>
도 3은, 예측 처리부(39)의 구성예를 도시한 블록도이다. 동 도면처럼 예측 처리부(39)는, 커맨드 레지스터(401), 스타트 어드레스 레지스터(402), 사이즈 레지스터(403), 가산기(404), 스타트 얼라이너(405a, 405b), 엔드 얼라이너(406a, 406b), 액세스 어드레스 레지스터(407), 예측값 레지스터(408), 상수 레지스터 (409), 셀렉터(410), 가산기(411), 비교기(412), 실행부(413)를 구비한다.
커맨드 레지스터(401)는, 프로세서(1)로부터 직접 액세스 가능한 레지스터이고, 프로세서(1)에 의해 기록된 커맨드를 유지한다. 도 4(c)에, 커맨드 레지스터(401)에 커맨드를 기록하는 명령의 일례를 도시한다. 이 명령은, 통상의 전송 명령(mov 명령)이고, 소스 오퍼랜드로서 커맨드를, 데스티네이션 오퍼랜드로서 커맨드 레지스터(CR)(401)를 지정하고 있다. 도 4(d)에, 커맨드 포맷의 일례를 도시한다. 이 커맨드 포맷은, 커맨드 내용과 상수로 이루어진다. 여기서, 커맨드 내용은, 예측 프리페치 커맨드와, 예측 터치 커맨드 중 어느 하나를 표시한다. 상수는, 프로세서(1)가, 시퀀셜하게 메모리 액세스하는 경우의 메모리 액세스 어드레스의 인크리먼트값 또는 디크리먼트값을 표시하고, 예를 들면 +4, +8, -4, -8 등이다. 또한, 커맨드 중의 상수 대신에, 액세스 방향(어드레스 오름차순인지 어드레스 내림차순인지)과 절대값(연속 액세스하는 경우의 어드레스의 차분)을 포함하도록 해도 된다.
스타트 어드레스 레지스터(402)는, 프로세서(1)로부터 직접 액세스 가능한 레지스터이고, 프로세서(1)에 의해 기록된 스타트 어드레스를 유지한다. 이 스타트 어드레스는 C 플래그(캐싱을 종료해도 되는지 여부를 나타내는 클리닝 플래그)를 설정해야 할 어드레스 범위의 개시 위치를 나타낸다. 도 4(a)에, 스타트 어드레스 레지스터(402)에 스타트 어드레스를 기록하는 명령의 일례를 도시한다. 이 명령도, 도 4(c)와 동일하게 통상의 전송 명령(mov 명령)이다.
사이즈 레지스터(403)는, 프로세서(1)로부터 직접 액세스 가능한 레지스터이 고, 프로세서(1)에 의해 기록된 사이즈를 유지한다. 이 사이즈는, 스타트 어드레스로부터의 어드레스 범위를 나타낸다. 도 4(b)에, 사이즈 레지스터(403)에 사이즈를 기록하는 명령의 일례를 도시한다. 이 명령도, 도 4(c)와 동일하게 통상의 전송 명령(mov 명령)이다. 또한, 사이즈의 단위는 바이트 수여도 되고, 라인 수(캐시 엔트리 수)여도 되며, 미리 정해진 단위이면 된다.
가산기(404)는, 스타트 어드레스 레지스터(402)에 유지된 스타트 어드레스와 사이즈 레지스터(403)에 유지된 사이즈를 가산한다. 가산 결과는, 어드레스 범위의 종료 위치를 가리키는 엔드 어드레스이다. 가산기(404)는, 사이즈가 바이트 수 지정인 경우는 바이트 어드레스로서 가산하고, 사이즈가 라인 수 지정인 경우는 라인 어드레스로서 가산하면 된다.
스타트 얼라이너(405a, 405b)는, 스타트 어드레스를 라인 경계의 위치로 조정한다. 스타트 얼라이너(405a)는 엔드 어드레스의 방향으로, 405b는 엔드 어드레스와는 반대의 방향으로 조정한다. 이 조정에 의해 프로세서(1)는 라인 사이즈 및 라인 경계와는 무관하게 임의의 어드레스를 스타트 어드레스로서 지정할 수 있다.
엔드 얼라이너(406a, 406b)는, 엔드 어드레스를 라인 경계의 위치로 조정한다. 엔드 얼라이너(4065a)는 스타트 어드레스의 방향으로, 406b는 스타트 어드레스와는 반대 방향으로 조정한다. 이 조정에 의해 프로세서(1)는 라인 사이즈 및 라인 경계와는 무관하게 임의의 크기를 상기 사이즈로서 지정할 수 있다.
도 5에, 스타트 얼라이너(405a, 405b) 및 엔드 얼라이너(406a, 406b)의 설명도를 도시한다. 동 도면에 있어서, 프로세서(1)로부터 지정된 스타트 어드레스 는 라인 N의 도중의 임의의 위치를 가리킨다. 스타트 얼라이너(405a)는, 다음 라인 (N+1)의 선두를 가리키도록 조정하고, 조정 후의 어드레스를 얼라인 스타트 어드레스 a로서 출력한다. 스타트 얼라이너(405b)는, 스타트 어드레스의 데이터를 포함하는 라인 N의 선두를 가리키도록 조정하고, 조정 후의 어드레스를 얼라인 스타트 어드레스 b로서 출력한다. 얼라인 스타트 어드레스가 가리키는 라인을 스타트 라인이라고 부른다.
또, 엔드 어드레스는 라인 M의 도중의 임의의 위치를 가리킨다. 엔드 얼라이너(406a)는, 직전의 라인 (M-1)의 선두를 가리키도록 조정하고, 조정 후의 어드레스를 얼라인 엔드 어드레스 a로서 출력한다. 엔드 얼라이너(406b)는, 엔드 어드레스의 데이터를 포함하는 라인 M의 선두를 가리키도록 조정하고, 조정 후의 어드레스를 얼라인 엔드 어드레스 b로서 출력한다. 얼라인 엔드 어드레스가 가리키는 라인을 엔드 라인이라고 부른다.
동 도면처럼, 스타트 얼라이너(405a) 및 엔드 얼라이너(406a)는 라인 단위로 내측 얼라인을 행한다. 스타트 얼라이너(405b) 및 엔드 얼라이너(406b)는 라인 단위로 외측 얼라인을 행한다. 또, 라인 단위의 외측 얼라인 후, 또한 서브 라인 단위의 외측 얼라인과 내측 얼라인이 가능하다.
액세스 어드레스 레지스터(407)는, 프로세서(1)로부터의 메모리 액세스 어드레스를 유지한다.
예측값 레지스터(408)는, 초기값으로서, 액세스 어드레스 레지스터(407)의 메모리 액세스 어드레스와 상수 레지스터(409)의 상수를 가산한 값을 예측값으로서 유지하고, 이후, 프로세서(1)가 메모리 액세스를 실행했을 때, 액세스 어드레스 레지스터(407)의 메모리 액세스 어드레스와 예측값이 일치하고 있으면, 예측값과 상수 레지스터(409)의 상수를 가산한 값을 새로운 예측값으로서 갱신하고, 일치하고 있지 않으면 새로운 초기값으로 갱신한다.
상수 레지스터(409)는, 프로세서(1)에 의한 메모리 액세스 어드레스의 인크리먼트값 또는 디크리먼트값을 유지한다. 이 인크리먼트값(또는 디크리먼트값)은, 프로세서(1)가 메모리를 시퀀셜하게 액세스하는 경우의 포스트 인크리먼트가 포함된 로드/스토어 명령의 인크리먼트값(또는 디크리먼트값)이고, 예를 들면 도 4(d)에 도시한 커맨드중의 상수로서 지정된다.
셀렉터(410)는, 액세스 어드레스 레지스터(407)의 메모리 액세스 어드레스와 예측값 레지스터(408)의 예측값이 일치하고 있으면, 예측값 레지스터(408)를 선택하고, 일치하고 있지 않으면 액세스 어드레스 레지스터(407)를 선택한다.
가산기(411)는, 셀렉터(410)에 선택된 예측값 또는 메모리 액세스 어드레스와, 상수 레지스터(409)의 상수를 가산한다. 가산 후의 값은, 새로운 예측값 또는 새로운 초기값으로서 예측값 레지스터(408)에 유지된다.
비교기(412)는, 액세스 어드레스 레지스터(407)의 메모리 액세스 어드레스와 예측값 레지스터(408)의 예측값이 일치하는지 여부를 판정한다.
실행부(413)는, 프리페치부(414)와 터치부(415)를 구비한다.
프리페치부(414)는, 프로세서의 로딩 명령의 진행 상황에 따라 다음에 로딩될 라인을 추정하여, 추정한 라인을 프리페치하는 예측 프리페치를 행한다.
터치부(415)는, 프로세서의 스토어 명령의 진행 상황에 따라 다음에 스토어될 라인을 추정하여, 추정한 라인을 유지하기 위한 캐시 엔트리를, 메모리로부터 데이터를 로딩하지 않고 확보한다(V=1의 설정과 태그의 설정을 행한다).
<예측 프리 패치>
도 6(a)는, 프리페치부(414)에 의한 예측 프리페치의 설명도이다. 동 도면(a)에 있어서, 라인 N, N+1, …, N+n은 어드레스가 연속하는 라인을 나타낸다. 스타트 어드레스 레지스터(402) 및 사이즈 레지스터(403)에 의해 정해지는 스타트 라인, 엔드 라인은, 각각 라인 N+1, 라인 N+n인 것으로 한다. 또, LD(1), LD(2), …는, 로딩 명령에 의한 액세스 위치를 나타내고 있다.
프리페치부(414)는, 최초의 로딩 명령 LD(1)의 실행시에, 그 메모리 액세스 어드레스에 상수를 가산한 값을 초기값으로서 예측값 레지스터(408)에 유지시킨다. 2회째의 로딩 명령 LD(2)의 실행시에, 그 메모리 액세스 어드레스와 예측값 레지스터(408)의 예측값이 일치한 경우, 프리페치부(414)는, 포스트 인크리먼트가 포함된 로딩 명령에 의한 시퀀셜 액세스인 것으로 추정하여, 다음 라인 N+1을 프리페치한다. 만약에 다음 라인이 캐시 메모리에 격납되어 있는 경우는, 아무것도 하지 않는다.
프로세서(1)에 의해 포스트 인크리먼트가 포함된 로딩 명령에 의해 시퀀셜 액세스가 이루어진 경우, 예측값은 메모리 액세스마다 일치해 가게 된다.
이렇게 해서, 예측값 레지스터(408)의 예측값이 라인 N부터 라인 N+1의 어드레스에까지 갱신되어, 메모리 액세스 어드레스와 일치했을 때, 프리페치부(414)는 라인 N+2를 프리페치한다. 프리페치부(414)는, 이 예측 프리페치를 스타트 라인부터 엔드 라인까지 실행하여, 엔드 라인의 프리페치가 완료하면 예측 프리페치를 종료한다.
<예측 터치>
도 6(b)는, 터치부(415)에 의한 예측 터치의 설명도이다. 도 6(a)와 비교하여, 프로세서(1)가 스토어 명령에 의해 시퀀셜하게 액세스하는 경우에, 그 메모리 액세스 어드레스와 예측값 레지스터(408)의 예측값이 일치한 경우에, 포스트 인크리먼트가 포함된 스토어 명령에 의한 시퀀셜 액세스로 추정하여, 다음 라인 N+1에 대응하는 캐시 엔트리를 확보하는 점이 다르다. 즉, 프리페치 대신에, 캐시 엔트리에 메모리 데이터를 로딩하지 않고 태그 및 유효 플래그를 1로 설정하는 점이 다르다. 이 이외에는 예측 프리페치와 동일하므로 설명을 생략한다.
<예측 프리페치 처리>
도 7은, 프리페치부(414)에 있어서의 예측 프리페치 처리의 일례를 도시한 흐름도이다.
동 도면에 있어서, 프리페치부(414)는, 커맨드 레지스터(401)에 예측 프리페치 커맨드가 유지되어 있어(S41), 프로세서가 로딩 명령을 실행했을 때(S42), 당해 메모리 액세스 어드레스와 상수를 가산한 값을 초기값으로서 예측값 레지스터(408)에 설정한다(S43). 이 최초의 로딩 명령의 메모리 액세스 어드레스와 예측값 레지스터의 예측값은 당연히 일치하지 않는다. 예측값 레지스터(408)는 클리어되어 있거나 랜덤한 값을 유지하고 있기 때문이다.
또, 프로세서가 로딩 명령을 실행하고(S44), 또한 메모리 액세스 어드레스와 예측값 레지스터의 예측값이 일치하는 경우에는(S45), 프리페치부(414)는 다음 라인의 라인 어드레스를 산출하여(S46), 산출한 라인 어드레스가 스타트 라인부터 엔드 라인까지의 어드레스 범위에 속해 있고(S47), 다음 라인이 캐시 메모리에 엔트리되어 있지 않으면(S48), 다음 라인을 프리페치한다(S49).
이 프리페치에 있어서, 프리페치부(414)는, LRU 방식으로 리플레이스 대상의 웨이를 선택하여(S401), 당해 웨이의 캐시 엔트리가 더티하면 라이트백하고(S402, S403), 다음 라인의 데이터를 당해 캐시 엔트리에 리필(프리페치)한다(S404).
또한, 프리페치부(414)는, 프리페치한 라인이 엔드 라인이면(S50), 예측 프리페치 처리를 종료한다.
또, 상기 S45에 있어서, 메모리 액세스 어드레스와 예측값 레지스터의 예측값이 일치하지 않는 경우에는, 메모리 액세스 어드레스에 상수를 가산한 값이 새로운 예측값으로서 예측값 레지스터(408)에 설정된다. 또, 일치하지 않는 경우는, 아무것도 하지 않는다(메모리 액세스 대기 상태).
이렇게 프리페치부(414)는, 예측 프리페치에 있어서, 프로세서의 로딩 명령의 진행 상황에 따라 다음 라인을 추정하여, 추정한 라인을 프리페치하기 때문에, 프로세서(1)에서는, 캐시 메모리의 라인 사이즈나 라인 경계를 인식할 필요가 없고, 즉 프리페치용의 어드레스를 프로세서(1)로 관리할 필요가 없다. 캐시 메모리에서 추정에 기초해 효율적으로 프리페치를 행할 수 있다.
<예측 터치 처리>
도 8은, 터치부(415)에 있어서의 예측 터치 처리의 일례를 도시한 흐름도이다. 동 도면은, 도 7의 예측 프리페치 처리와 비교해, S41, S42, S44, S49, S404의 각 단계 대신에 S41a, S42a, S44a, S49a, S404a를 갖는 점이 다르다. 이 이외는 같기 때문에 다른 점에 관해 설명한다.
터치부(415)는, S41a에서, 예측 터치 커맨드가 커맨드 레지스터(401)에 유지되어 있는지를 판정하여, S42a, S44a에서 스토어 명령이 실행되었는지 여부를 판정한다. 또, 터치부(415)는, S49a에서 프리페치하는 대신에 터치한다. 즉, S404a에서, 리플레이스 대상의 캐시 엔트리 메모리 데이터를 로딩하지 않고 태그 및 유효 플래그를 1로 설정한다.
이렇게 터치부(415)는, 프로세서의 스토어 명령의 진행 상황에 따라 다음 라인을 추정하여, 추정한 라인을 터치(확보)하므로, 프로세서(1)에서는, 캐시 메모리의 라인 사이즈나 라인 경계를 인식할 필요가 없고, 즉 프리페치용의 어드레스를 프로세서(1)로 관리할 필요가 없다. 캐시 메모리에서 추정에 기초해 효율적으로 캐시 엔트리를 터치할 수 있다.
<변형예>
또한, 본 발명의 캐시 메모리는, 상기 실시형태의 구성에 한정되는 것은 아니며, 여러가지 변형이 가능하다. 이하, 몇가지 변형예에 관해 설명한다.
(1) 상수 레지스터(409), 커맨드에 의해 설정되는 구성을 나타냈는데, (a) 디폴트로서 인크리먼트값 또는 디크리먼트값을 유지하고, (b)복수회의 로드/스토어 명령에 있어서의 2개의 메모리 액세스 어드레스의 차분을 산출하여, 인크리먼트값 또는 디크리먼트값으로서 유지하고, (c)프로세서에 의해 지정된 어드레스 방향(어드레스 오름차순인지 어드레스 내림차순인지)에 따라 상기 (b)를 산출하여 유지하는 구성으로 해도 된다.
(2) 프리페치부(414)에 있어서, 다음 라인의 그 다음 라인 등 복수 라인을 프리페치하도록 해도 된다. 마찬가지로 터치부(415)도, 복수 라인을 터치하도록 해도 된다.
(3) 프리페치부(414)는, 비교기(412)에서 복수 회 일치한 경우에 프리페치를 개시하도록 해도 된다. 터치부(415)도 동일하다.
(4) 상기 실시형태에서는, 4웨이·세트·어소시에이티브의 캐시 메모리를 예로 설명했으나, 웨이 수는 몇 개이든 상관없다. 또, 상기 실시형태에서는, 세트 수가 16인 예를 설명했으나, 세트 수는 몇 개이든 상관없다.
(5) 상기 실시형태에서는, 세트·어소시에이티브의 캐시 메모리를 예로 설명했으나, 풀·어소시에이티브 방식이나 다이렉트 맵 방식의 캐시 메모리여도 된다.
(6) 상기 실시형태에서는, 서브 라인의 사이즈를 라인 사이즈의 1/4로 하고 있으나, 1/2, 1/8, 1/16 등 다른 사이즈여도 된다. 그 경우, 각 캐시 엔트리는, 서브 라인과 동일 수의 유효 플래그 및 더티 플래그를 각각 유지하면 된다.
(7) 상기 실시형태에 있어서의 사이즈 레지스터(403)는, 사이즈를 유지하는 대신에 프리페치해야 할 회수를 유지하는 구성으로 해도 된다. 이 경우에는, 예측 처리부(39)는 실제로 프리페치한 회수를 카운트하여, 카운트값이 프리페치해야 할 회수에 달했을 때, 프리페치를 정지하는 구성으로 하면 된다. 이렇게 프리페치 회 수를 카운트함으로써, 프로세서에 있어서의 프로그램 진행 상태를 감시할 수 있다.
(실시형태 2)
제1 실시형태에서는, 설명한 예측 프리페치 및 예측 터치에서는 금후 액세스할 것인 라인을 추정하는 경우의 구성을 설명했다. 본 실시형태에서는, 이미 액세스했을 것인 라인을 추정하여 예측 클리닝(라이트백)이나 예측 위크화(액세스 순위의 최약화(最弱化)나 예측 무효화도 행하는 구성에 관해 설명한다.
<캐시 메모리의 구성>
도 9는, 본 발명의 실시형태 2에 있어서의 캐시 메모리의 구성을 도시한 블록도이다. 동 도면의 캐시 메모리는, 도 2에 도시한 구성과 비교해, 웨이(31a∼31d) 대신에 웨이(131a∼131d)를 구비하는 점과, 제어부(38) 대신에 제어부(138)를 구비하는 점이 다르다. 이하, 같은 점은 설명을 생략하고, 다른 점을 중심으로 설명한다.
웨이(131a)는, 웨이(31a)와 비교해, 각 캐시 엔트리 중에, C 플래그, W 플래그 및 U 플래그가 추가되어 있는 점과, 라인 단위의 유효 플래그 V 대신에 서브 라인마다의 유효 플래그 V0∼V3을 갖는 점과, 라인 단위의 더티 플래그 D 대신에 서브 라인마다의 더티 플래그 D0∼D3를 갖는 점이 다르다. 웨이(131b∼131d)도 동일하다.
도 10에, 캐시 엔트리의 비트 구성을 도시한다. 1개의 캐시 엔트리는, 유효 플래그 V0∼V3, 21비트의 태그, 128바이트의 라인 데이터, 위크 플래그 W, 사용 플래그 U 및 더티 플래그 D0∼D3를 유지한다.
태그는 21비트의 태그 어드레스의 카피이다.
라인 데이터는, 태그 어드레스 및 세트 인덱스에 의해 특정되는 블록 중의 128바이트 데이터의 카피이며, 32바이트의 4개의 서브 라인으로 이루어진다.
유효 플래그 V0∼V3는, 4개의 서브 라인에 대응하여, 서브 라인이 유효한지 여부를 나타낸다.
C 플래그(클리닝 플래그)는, 캐싱을 종료해도 되는지 여부를 나타내는 캐싱 종료 속성을 나타낸다. C=0은, 이후에 기록이 이루어질 가능성이 있는 것을 의미한다. C=1은, 이후에 기록이 이루어지지 않는 것을 의미하며, 더티하면 클리닝(라이트백)에 의해 캐싱을 종료해야 하는 것을 의미한다.
위크 플래그 W는, 프로세서로부터의 액세스에 관해서는, 그 이상 사용할지 여부를 나타내고, 캐시 메모리에 있어서의 리플레이스 제어에 관해서는, 다른 캐시 엔트리보다도 먼저 추방해도 되는 최약의 리플레이스 대상인 것을 나타낸다.
사용 플래그 U는, 그 캐시 엔트리에 액세스가 있었는지 여부를 나타내고, LRU 방식에 있어서의 캐시 엔트리 간의 액세스 순서 데이터 대신에 사용된다. 보다 정확하게는, 사용 플래그 U의 1은, 액세스가 있었던 것을, 0은 없는 것을 의미한다. 단, 1개의 세트 내의 4개 웨이의 사용 플래그가 모두 1이 되면, 0으로 리셋된다. 달리 말하면, 사용 플래그 U는, 액세스된 시기가 오래되었는지 새로운지 2개의 상대적인 상태를 나타낸다. 즉, 사용 플래그 U가 1인 캐시 엔트리는, 사용 플래그가 0인 캐시 엔트리보다도 새롭게 액세스된 것을 의미한다.
더티 플래그 D0∼D3는, 4개의 서브 라인에 대응하여, 그 서브 라인에 프로세 서로부터 기록이 있었는지 여부, 즉 서브 라인 중에 캐시된 데이터가 존재하지만 기록에 의해 메모리 중의 데이터와 다르기 때문에 메모리에 재기록하는 것이 필요한지 여부를 나타낸다.
제어부(138)는, 제어부(38)와 비교해, 예측 처리부(39) 대신에 예측 처리부(139)를 갖는 점이 다르고, 예측에 의해 C 플래그를 설정하는 점과, 예측에 의해 W 플래그를 설정하는 점과, LRU 방식에 있어서의 액세스 순서 정보 대신에 사용 플래그 U를 사용하는 점이 다르다.
<사용 플래그 U의 설명>
도 11은, 제어부(138)에 의한 사용 플래그의 갱신예를 도시한다. 동 도면의 상단, 중단, 하단은, 웨이 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의 각 캐시 엔트리보다도 새롭게 액세스된 것을 의미하게 된다.
제어부(138)는, 캐시 미스시에 W=1인 캐시 엔트리가 존재하지 않으면, 사용 플래그에 기초해 리플레이스 대상의 캐시 엔트리를 결정하고 리플레이스를 행한다. 예를 들면, 제어부(138)는, 도 5의 상단에서는, 웨이 1과 웨이 3 중 어느 하나를 리플레이스 대상으로 결정하고, 도 5의 중단에서는 웨이 3을 리플레이스 대상으로 결정하고, 도 5의 하단에서는 웨이 0∼2 중 어느 하나를 리플레이스 대상으로 결정한다.
<위크 플래그 W의 설명>
도 12(a)는 위크 플래그가 존재하지 않는다고 가정한 경우의 비교예이며, 캐시 엔트리가 리플레이스되는 모양을 도시한 도면이다. 동 도면에 있어서도, 도 11과 동일하게 웨이 0∼3에 걸친 세트 N을 구성하는 4개의 캐시 엔트리를 나타내고 있다. 4개의 캐시 엔트리 우단의 1 또는 0은 각각 사용 플래그의 값이다. 또, 데이터 E만 액세스 빈도가 낮은 데이터로 하고, 데이터 A, B, C, D는 액세스 빈도가 높은 데이터로 한다.
동 도면 (a)의 제1단째의 상태에서, 프로세서(1)가 데이터 E에 액세스하면 캐시 미스가 발생한다. 이 캐시 미스에 의해, 예를 들면 U=0인 캐시 엔트리 중에서 액세스 빈도가 높은 데이터 C의 캐시 엔트리가 액세스 빈도가 낮은 데이터 E로 리플레이스되어, 제2단째의 상태가 된다.
제2단째의 상태에서, 프로세서(1)가 데이터 C에 액세스하면, 캐시 미스가 발생한다. 이 캐시 미스에 의해, U=0인 캐시 엔트리인 액세스 빈도가 높은 데이터 D의 캐시 엔트리가 액세스 빈도가 높은 데이터 C로 리플레이스되어, 제3단째의 상태가 된다.
제3단째의 상태에서, 프로세서(1)가 데이터 D에 액세스하면, 캐시 미스가 발생한다. 이 캐시 미스에 의해, 예를 들면 액세스 빈도가 높은 데이터 C의 캐시 엔트리가 액세스 빈도가 높은 데이터 D로 리플레이스되어, 제3단째의 상태가 된다.
마찬가지로, 제4단째에서도, 사용 빈도가 낮은 데이터 E는 리플레이스 대상으로서 선택되지 않고, 캐시 메모리에 남아 있다.
제5단째의 상태에서, 사용 빈도가 낮은 데이터 E는 가장 오래된 (U=0)이므로, 리플레이스 대상으로서 선택되어 추방된다.
이렇게, 유사 LRU 방식에 있어서(통상의 LRU 방식에 있어서도), 액세스 빈도가 낮은 데이터 E에 의해, 4웨이의 경우는 최악 4회의 캐시 미스를 유발하는 경우가 있다.
도 12(b)는, 리플레이스 처리에 있어서의 위크 플래그 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를 설치함으로써, 액세스 빈도가 낮은 데이터에 의한 캐시 미스의 유발을 저감할 수 있다.
<예측 처리부의 구성>
도 13은, 예측 처리부(139)의 구성을 도시한 블록도이다. 동 도면의 예측 처리부(139)는, 도 3에 도시한 예측 처리부(39)와 비교해, 실행부(413) 대신에 실행부(413a)를 구비하는 점이 다르다. 실행부(413a)는, 실행부(413)와 비교해, C 설정부(416), W 설정부(417)가 추가되어 있다.
C 설정부(416)는, 프로세서의 스토어 명령의 진행 상황에 따라 스토어가 완료한 직전의 라인을 추정하여, 추정한 라인의 C 플래그를 1로 설정한다.
W 설정부(417)는, 프로세서의 스토어 명령의 진행 상황에 따라 스토어가 완료한 직전의 라인을 추정하여, 추정한 라인의 W 플래그를 1로 설정한다.
<C 플래그 설정 처리의 설명도>
도 14(a)는, C 설정부(416)에 의한 C 플래그 설정 처리의 설명도이다. 동 도면 (a)에 있어서, 라인 N, N+1, …, N+n, 스타트 라인, 엔드 라인은, 도 6(a)와 동일하다.
C 설정부(416)는, 프로세서(1)가 시퀀셜하게 라인 N, N+1, …에 대해 데이터를 스토어해 가는 경우에, 예를 들면 라인 N+1에 대해 스토어 명령 ST(1), ST(2)가 실행되고, ST(2)의 메모리 액세스 어드레스와 예측값이 일치한 경우에, 라인 N에 대한 시퀀셜 액세스에 의한 스토어가 완료한 것으로 추정하여, 라인 N의 C 플래그를 1로 설정한다. C 플래그가 1로 설정된 라인 N은, 캐시 미스의 발생을 기다리지 않고 클리닝 처리에 의해 라이트백된다.
마찬가지로 라인 N+2로의 스토어 명령 실행 중에 예측값을 일치한 경우, 라인 N+1에 대한 시퀀셜 액세스에 의한 스토어가 완료한 것으로 추정하여, 라인 N+1의 C 플래그를 1로 설정한다.
이렇게, C 설정부(416)는, C 플래그의 설정을 스타트 라인부터 엔드 라인까지의 범위 내에서 실행한다.
<W 플래그 설정 처리의 설명도>
도 14(b)는, W 설정부(417)에 의한 W 플래그 설정 처리의 설명도이다. 동 도면 (a)와 비교해, C 플래그 대신에 W 플래그를 설정하는 점만이 다르고, 그 이외는 같기 때문에 설명을 생략한다.
W 플래그가 1로 설정된 라인은, 캐시 미스의 발생시에 맨 먼저 리플레이스 대상으로서 선택되어, 캐시 메모리로부터 추방된다.
<C 플래그 설정 처리 흐름>
도 15는, C 설정부(416)에 있어서의 C 플래그 설정 처리의 일례를 도시한 흐름도이다.
동 도면에 있어서, C 설정부(416)는, 커맨드 레지스터(401)에 C 플래그 설정 커맨드가 유지되어 있어(S41b), 프로세서가 스토어 명령을 실행했을 때(S42b), 당해 메모리 액세스 어드레스와 상수를 가산한 값을 초기값으로서 예측값 레지스터(408)에 설정한다(S43). 이 최초의 스토어 명령의 메모리 액세스 어드레스와 예측값 레지스터의 예측값은 당연히 일치하지 않는다. 예측값 레지스터(408)는 클리어되어 있거나 랜덤한 값을 유지하고 있기 때문이다.
또, 프로세서가 스토어 명령을 실행하고(S44b), 또한 메모리 액세스 어드레스와 예측값 레지스터의 예측값이 일치하는 경우에는(S45), C 설정부(416)는 직전의 라인의 라인 어드레스를 산출하여(S46b), 산출한 라인 어드레스가 스타트 라인부터 엔드 라인까지의 어드레스 범위에 속해 있고(S47), 직전의 라인이 캐시 메모리에 엔트리되어 있으면(S48b), 직전 라인의 C 플래그를 1로 설정한다(S49b).
또한, C 설정부(416)는, 직전의 라인이 엔드 라인이면(S50), C 플래그 설정 처리를 종료한다.
이렇게, C 설정부(416)는, 프로세서의 스토어 명령의 진행 상황에 따라, 스토어가 완료한 직전의 라인을 추정하여, 추정한 라인의 C 플래그를 1로 설정하기 때문에, 프로세서(1)에서는, 캐시 메모리의 라인 사이즈나 라인 경계를 인식할 필요가 없고, 즉 클리닝해도 되는 라인을 라인 어드레스로서 프로세서(1)로 관리할 필요가 없다. 캐시 메모리에서 추정에 기초해 효율적으로 클리닝을 행할 수 있다.
<W 플래그 설정 처리 흐름>
도 16은, W 설정부(417)에서의 W 플래그 설정 처리의 일례를 도시한 흐름도이다. 동 도면의 흐름은 도 15의 C 플래그 설정 처리와 비교해, C 플래그 대신에 W 플래그를 설정하는 점만이 다르고, 그 이외는 같기 때문에 설명을 생략한다.
이렇게, W 설정부(417)는, 프로세서의 스토어 명령의 진행 상황에 따라, 스토어가 완료한 직전의 라인을 추정하여, 추정한 라인의 W 플래그를 1로 설정하기 때문에, 캐시 메모리에 있어서 추정에 기초해 스토어가 완료한 직전의 라인을 효율적으로 리플레이스 대상으로 할 수 있다. 그 때, 프로세서(1)에서는, 캐시 메모리의 라인 사이즈나 라인 경계를 인식할 필요가 없고, 즉 리플레이스해도 되는 라인을 라인 어드레스로서 프로세서(1)로 관리할 필요가 없다.
<클리닝 처리>
도 17은, 제어부(138)에 있어서의 클리닝 처리의 일례를 도시한 흐름도이다.
동 도면처럼, 제어부(138)는, 루프 1의 처리(S900∼S913)에 있어서, 세트 인덱스(SI) 0∼15를 차례로 지정함(S901)으로써, 16개의 모든 세트에 대해 루프 2의 처리를 행한다. 루프 2의 처리(S900∼S913)에 있어서, 제어부(138)는, 세트 내의 웨이 0∼3의 C 플래그를 독출함(S903)으로써, C=1인 캐시 엔트리를 탐색한다(S904). 루프 3의 처리(S905∼910)에 있어서, 제어부(138)는, C=1인 캐시 엔트리에 대해, 서브 라인 단위의 더티 플래그를 독출하여(S906), 더티하면(S907), 그 서브 라인의 데이터를 메모리(2)에 재기록하고(S908), 당해 더티 플래그를 0으로 리셋한다(S909). 이 서브 라인 데이터의 재기록에 있어서, 제어부(138)는, 루프 4의 처리(S920∼S923)처럼, 빈 사이클에 있어서(S920) 1워드씩 재기록한다(S922).
이렇게, 제어부(138)는, 모든 캐시 엔트리의 C 플래그를 차례로 체크해서, C=1인 캐시 엔트리를 탐색하여, 더티이면 캐시 메모리(3)로부터 메모리(2)로 되돌린다.
이렇게, 클리닝 처리에서는, 그 이상 기록되지 않는 것을 나타내는 C 플래그를 갖는 캐시 엔트리를, 캐시 미스가 발생하기 전에 라이트백하기 때문에, 캐시 미스시에는 로딩 패널티가 발생할 뿐, 라이트백 페널티의 발생을 저감할 수 있다. 이에 의해 캐시 메모리의 효율을 향상시켜, 액세스 속도를 향상시킬 수 있다.
<U 플래그 갱신 처리>
도 18은, 제어부(138)에 있어서의 U 플래그 갱신 처리를 도시한 흐름도이다.
동 도면에서는, 유효 플래그가 0(무효)인 캐시 엔트리의 사용 플래그 U는 0으로 초기화되어 있는 것으로 한다.
동 도면에 있어서, 제어부(138)는, 캐시 히트했을 때(단계 S61), 세트 인덱스에 의해 선택된 세트에 있어서의 히트한 웨이의 사용 플래그 U를 1로 세트하고(단계 S62), 그 세트 내의 다른 웨이의 사용 플래그 U를 독출하여(단계 S63), 독출한 사용 플래그 U가 모두 1인지 여부를 판정하여(단계 S64), 모두 1이 아니면 종료하고, 모두 1이면 다른 웨이의 모든 사용 플래그 U를 0으로 리셋한다(단계 S65).
이렇게 해서 제어부(138)는, 도 11, 도 12(a), (b)에 도시한 갱신예처럼, 사용 플래그 U를 갱신한다.
<리플레이스 처리>
도 19는, 제어부(138)에 있어서의 리플레이스 처리를 도시한 흐름도이다. 동 도면에 있어서 제어부(138)는, 메모리 액세스가 미스했을 때(단계 S91), 세트 인덱스에 의해 선택된 세트에 있어서의, 4개 웨이의 사용 플래그 U 및 위크 플래그 W를 독출하여(단계 S92), W=1인 웨이가 존재하는지 여부를 판정한다(단계 S93). W=1인 웨이가 존재하지 않는다고 판정된 경우, U=0인 웨이를 1개 선택한다(단계 S94). 이 때, 사용 플래그 U가 0으로 되어 있는 웨이가 복수 존재하는 경우는, 제어부(138)는 랜덤하게 1개를 선택한다. 또, W=1인 웨이가 존재한다고 판정된 경우, U 플래그의 값에 관계없이 W=1인 웨이를 1개 선택한다(단계 S95). 이 때, 위크 플래그 W가 1로 되어 있는 웨이가 복수 존재하는 경우는, 제어부(138)는 랜덤하게 1개를 선택한다.
또한, 제어부(138)은, 당해 세트에 있어서의 선택된 웨이의 캐시 엔트리를 대상으로 리플레이스하여(단계 S96), 리플레이스 후에 당해 캐시 엔트리의 사용 플래그 U를 1로, 위크 플래그 W를 0으로 초기화한다(단계 S97). 또한, 이 때 유효 플래그 V, 더티 플래그 D는 각각 1, 0으로 초기화된다.
이렇게, W=1인 웨이가 존재하지 않는 경우, 리플레이스 대상은, 사용 플래그 U가 0인 캐시 엔트리 중에서 1개 선택된다.
또, W=1인 웨이가 존재하는 경우, 리플레이스 대상은, 사용 플래그 U가 0이인지 1인지를 막론하고, W=1인 웨이의 캐시 엔트리로부터 1개 선택된다. 이에 의해 도 14(a), (b)에 도시한 바와 같이, 액세스 빈도가 낮은 데이터가 캐시 메모리 에 남는 것에 의한 캐시 미스의 유발을 저감할 수 있다.
이상 설명한 바와 같이, 본 실시형태에 있어서의 캐시 메모리에 의하면, 프로세서(1)에 의한 스토어 명령의 진행 상태부터, 스토어가 완료하여 라인을 추정하여, 추정한 라인에 대해 C 플래그 또는 W 플래그를 설정하기 때문에, 스토어가 완료한 직전의 라인을 효율적으로 리플레이스 대상을 지정할 수 있다. 그 때, 프로세서(1)에 의해 캐시 메모리의 라인 경계나 라인 사이즈를 관리할 필요가 없어, 캐시 관리를 위한 부하를 작게 할 수 있다.
또, 위크 플래그 W=1이고 또한 더티 플래그=1인 라인을, 프로세서로부터 그 이상 기록이 이루어지지 않는 라인으로 해서, 클리닝함으로써, 캐시 미스시의 라이트백 패널티를 저감할 수 있다.
또, 그 이상 사용되지 않는 캐시 엔트리에 W=1이 설정되고, W=1인 캐시 엔트리가 맨 먼저 리플레이스 대상으로서 선택되기 때문에, 액세스 빈도가 낮은 데이터가 캐시 메모리에 남는 것에 의한 캐시 미스의 유발을 저감할 수 있다.
또, 종래의 LRU 방식에 있어서의 액세스 순서를 나타내는 데이터 대신에 1비트의 사용 플래그를 사용하는 유사 LRU 방식을 채용함으로써, 액세스 순서 데이터로서 1 비트의 플래그이면 되므로, 액세스 순서 데이터의 데이터량이 적고 갱신이 간단하므로 하드웨어 규모를 작게 할 수 있다.
<변형예>
(1) 도 4(a), (b), (c)에 도시한 각 명령은, 컴파일러에 의해 프로그램 중에 삽입해도 된다. 그 때, 컴파일러는, 예를 들면 배열 데이터의 기록이나, 압축 동 화상 데이터를 디코드할 때의 블록 데이터의 기록 등, 그 이상 기록을 하지 않는 프로그램 위치에, 상기 각 명령을 삽입하도록 하면 된다.
(2) 상기 클리닝 처리에 있어서 무효화 처리를 행하는 구성으로 해도 된다. 즉, 도 17에 도시한 흐름도에 있어서, S907에서 더티하지 않다고 판정된 경우, 또한, 당해 캐시 엔트리를 무효화(V 플래그를 리셋)하는 단계를 추가해도 된다. 또한, 클리닝 처리에 있어서의 라이트백 후에 무효화하는 단계를 추가해도 된다.
본 발명은, 메모리 액세스를 고속화하기 위한 캐시 메모리에 적합하며, 예를 들면 온칩 캐시 메모리, 오프칩 캐시 메모리, 데이터 캐시 메모리, 명령 캐시 메모리 등에 적합하다.

Claims (18)

  1. 프로세서의 상태에 관한 조건을 생성하는 조건 생성 수단과,
    현재의 프로세서의 상태가 상기 조건을 만족하는지 여부를 판정하는 판정 수단과,
    조작 대상이 되는 어드레스를 생성하는 어드레스 생성 수단과,
    상기 판정 수단이 조건을 만족한다고 판정했을 때 상기 어드레스 생성 수단에 의해 생성된 어드레스를 사용해 캐시를 조작하는 조작 수단을 구비하는 것을 특징으로 하는 캐시 메모리 시스템.
  2. 청구항 1에 있어서,
    상기 조건 생성 수단은, 상기 판정 수단이 조건을 만족한다고 판정한 경우에 새로운 조건을 생성하는 것을 특징으로 하는 캐시 메모리 시스템.
  3. 청구항 2에 있어서,
    상기 조건 생성 수단은, 프로세서 내의 특정 레지스터의 값에 관한 조건을 생성하는 것을 특징으로 하는 캐시 메모리 시스템.
  4. 청구항 3에 있어서,
    상기 특정 레지스터는 프로그램 카운터인 것을 특징으로 하는 캐시 메모리 시스템.
  5. 청구항 2에 있어서,
    상기 조건 생성 수단은, 특정 어드레스 범위 내로의 메모리 액세스 및 특정 어드레스 범위 밖으로의 메모리 액세스 중 어느 하나를 상기 조건으로서 생성하는 것을 특징으로 하는 캐시 메모리 시스템.
  6. 청구항 1에 있어서,
    상기 조건 생성 수단은, 프로세서가 특정 명령을 실행하는 것을 상기 조건으로서 생성하는 것을 특징으로 하는 캐시 메모리 시스템.
  7. 청구항 2에 있어서,
    상기 조건 생성 수단은, 현재의 조건에 특정한 연산을 실시함으로써 상기 새로운 조건을 생성하는 것을 특징으로 하는 캐시 메모리 시스템.
  8. 청구항 7에 있어서,
    상기 조건 생성 수단은 메모리 액세스 어드레스를 조건으로서 생성하고,
    상기 판정 수단이 조건을 만족한다고 판정한 경우에 현재의 조건에 상수를 가산함으로써 상기 새로운 조건을 생성하는 것을 특징으로 하는 캐시 메모리 시스템.
  9. 청구항 8에 있어서,
    상기 상수는, 프로세서에 의해 실행되는 포스트 인크리먼트가 포함된 로드/스토어 명령에서의 인크리먼트값 또는 디크리먼트값, 및 프로세서에 의해 실행되는 2회의 로드/스토어 명령에서의 어드레스의 차분값 중 어느 하나인 것을 특징으로 하는 캐시 메모리 시스템.
  10. 청구항 1에 있어서,
    상기 조건 생성 수단은 복수의 조건을 생성하고,
    상기 판정 수단은, 복수의 조건의 전부를 만족하는지 여부를 판정하는 것을 특징으로 하는 캐시 메모리 시스템.
  11. 청구항 1에 있어서,
    상기 조건 생성 수단은 복수의 조건을 생성하고,
    상기 판정 수단은, 복수의 조건 중 어느 하나를 만족하는지 여부를 판정하는 것을 특징으로 하는 캐시 메모리 시스템.
  12. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 조작 수단은,
    상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단 에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과,
    격납되어 있지 않다고 판정된 경우에, 캐시 메모리 중의 라인을 선택하는 선택 수단과,
    상기 선택된 라인이 유효하고 더티하면 라이트백을 행하는 라이트백 수단과,
    상기 어드레스에 대응하는 데이터를 메모리로부터 라이트백 후의 선택된 라인에 전송하는 전송 수단과,
    상기 어드레스를 태그로서 상기 선택된 라인에 등록하는 등록 수단을 구비하는 것을 특징으로 하는 캐시 메모리 시스템.
  13. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 조작 수단은,
    상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과,
    격납되어 있지 않다고 판정된 경우에, 캐시 메모리 중의 라인을 선택하는 선택 수단과,
    선택된 라인이 유효하고 더티하면 라이트백을 행하는 라이트백 수단과,
    메모리로부터 선택된 라인에 데이터를 전송하지 않고, 상기 생성한 어드레스를 태그로서 선택된 라인에 등록하는 등록 수단을 구비하는 것을 특징으로 하는 캐 시 메모리 시스템.
  14. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 조작 수단은,
    상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과,
    격납되어 있다고 판정된 경우에, 캐시 메모리 중의 격납처의 라인을 선택하는 선택 수단과,
    선택된 라인이 유효하고 더티하면 라이트백을 행하는 라이트백 수단을 구비하는 것을 특징으로 하는 캐시 메모리 시스템.
  15. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 조작 수단은,
    상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과,
    격납되어 있다고 판정된 경우에, 캐시 메모리 중의 격납처의 라인을 선택하는 선택 수단과,
    선택된 라인을 무효화하는 무효화 수단을 구비하는 것을 특징으로 하는 캐시 메모리 시스템.
  16. 청구항 1 내지 3 중 어느 한 항에 있어서,
    상기 조작 수단은,
    상기 판정 수단이 조건을 만족한다고 판정했을 때, 상기 어드레스 생성 수단에 의해 생성된 어드레스에 대응하는 데이터가 캐시에 격납되어 있는지 여부를 판정하는 데이터 판정 수단과,
    격납되어 있다고 판정된 경우에, 캐시 메모리 중의 격납처의 라인을 선택하는 선택 수단과,
    라인의 액세스 순서를 나타내는 순서 정보에 대해, 선택된 라인의 액세스 순서를 변경하는 변경 수단을 구비하는 것을 특징으로 하는 캐시 메모리 시스템.
  17. 청구항 12 내지 16 중 어느 한 항에 있어서,
    상기 조건 생성 수단에 의해 상기 조건으로서 메모리 어드레스를 생성하고,
    상기 조작 수단은,
    상기 조건 생성 수단에 의해 생성된 메모리 어드레스가 라인의 도중을 가리키는 경우에, 당해 라인의 선두, 다음 라인의 선두 및 앞 라인의 선두 중 어느 하나를 가리키도록 조정함으로써 어드레스를 생성하는 조정 수단을 더 구비하는 것을 특징으로 하는 캐시 시스템.
  18. 캐시 메모리의 제어 방법으로서,
    프로세서의 상태에 관한 조건을 생성하는 조건 생성 단계와,
    현재의 프로세서의 상태가 상기 조건을 만족하는지 여부를 판정하는 판정 단계와,
    조작 대상이 되는 어드레스를 생성하는 어드레스 생성 단계와,
    상기 판정 단계에서 조건을 만족한다고 판정했을 때 상기 어드레스 생성 단계에서 생성된 어드레스를 사용해 캐시를 조작하는 조작 단계를 갖는 것을 특징으로 하는 제어 방법.
KR1020067014612A 2004-03-24 2005-03-16 캐시 메모리 및 그 제어 방법 KR20060130120A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2004-00086174 2004-03-24
JP2004086174 2004-03-24

Publications (1)

Publication Number Publication Date
KR20060130120A true KR20060130120A (ko) 2006-12-18

Family

ID=34993892

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067014612A KR20060130120A (ko) 2004-03-24 2005-03-16 캐시 메모리 및 그 제어 방법

Country Status (7)

Country Link
US (1) US20070186048A1 (ko)
EP (1) EP1729220A4 (ko)
JP (1) JP4045296B2 (ko)
KR (1) KR20060130120A (ko)
CN (1) CN100517274C (ko)
TW (1) TW200604808A (ko)
WO (1) WO2005091146A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100976433B1 (ko) * 2008-03-21 2010-08-18 후지쯔 가부시끼가이샤 정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법

Families Citing this family (22)

* 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
KR100737741B1 (ko) * 2006-01-05 2007-07-10 주식회사 텔레칩스 다차원 데이터 선인출 캐쉬를 이용한 메모리 장치 및 그제어 방법
US7908236B2 (en) * 2006-07-20 2011-03-15 International Business Machines Corporation Using multiple data structures to manage data in cache
US9208095B2 (en) 2006-12-15 2015-12-08 Microchip Technology Incorporated Configurable cache for a microprocessor
CN101558390B (zh) * 2006-12-15 2014-06-18 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器
US7966457B2 (en) 2006-12-15 2011-06-21 Microchip Technology Incorporated Configurable cache for a microprocessor
US7877537B2 (en) 2006-12-15 2011-01-25 Microchip Technology Incorporated Configurable cache for a microprocessor
US20100077151A1 (en) * 2007-01-25 2010-03-25 Nxp, B.V. Hardware triggered data cache line pre-allocation
CN102067091A (zh) * 2008-06-17 2011-05-18 Nxp股份有限公司 具有混合软硬件控制的高速缓存管理的多处理器系统
TW201015319A (en) * 2008-09-17 2010-04-16 Panasonic Corp Cache memory, memory system, data copying method and data rewriting method
US8161246B2 (en) * 2009-03-30 2012-04-17 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US8234464B2 (en) * 2009-11-05 2012-07-31 International Business Machines Corporation Hybrid storage data migration by selective data removal
KR101970712B1 (ko) 2012-08-23 2019-04-22 삼성전자주식회사 단말기의 데이터 이동장치 및 방법
US9892049B2 (en) 2012-10-31 2018-02-13 Renesas Electronics Corporation Semiconductor device and method for prefetching to cache memory
US9558122B2 (en) * 2014-05-29 2017-01-31 Apple Inc. Cache reclamation using prioritized record removal
US10514920B2 (en) * 2014-10-20 2019-12-24 Via Technologies, Inc. Dynamically updating hardware prefetch trait to exclusive or shared at program detection
US9971693B2 (en) * 2015-05-13 2018-05-15 Ampere Computing Llc Prefetch tag for eviction promotion
US10846004B2 (en) * 2018-05-03 2020-11-24 Mediatek Inc. Memory management system and memory management method for dynamic memory management by monitoring whether memory is accessed and predicting when memory is to be accessed
US11226741B2 (en) * 2018-10-31 2022-01-18 EMC IP Holding Company LLC I/O behavior prediction based on long-term pattern recognition
US11762777B2 (en) * 2021-03-31 2023-09-19 Advanced Micro Devices, Inc. Method and apparatus for a dram cache tag prefetcher
CN114116528B (zh) * 2021-11-22 2022-11-11 深圳大学 一种内存访问地址预测方法、装置、存储介质及电子设备
CN116708579B (zh) * 2023-08-04 2024-01-12 浪潮电子信息产业股份有限公司 数据访问方法、装置、电子设备及计算机可读存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5119453A (en) * 1974-08-08 1976-02-16 Fujitsu Ltd Patsufua memoriseigyohoshiki
JPS6045855A (ja) * 1983-08-22 1985-03-12 Fujitsu Ltd 磁気ディスク装置の順次アクセス検出方法
JPS6116348A (ja) * 1984-07-03 1986-01-24 Mitsubishi Electric Corp バツフア・メモリ装置
JPH0452741A (ja) * 1990-06-14 1992-02-20 Toshiba Corp キャッシュメモリ装置
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
JPH0784879A (ja) * 1993-09-09 1995-03-31 Toshiba Corp キャッシュメモリ装置
JP3175675B2 (ja) * 1997-12-04 2001-06-11 日本電気株式会社 プリフェッチ制御装置
US6401192B1 (en) * 1998-10-05 2002-06-04 International Business Machines Corporation Apparatus for software initiated prefetch and method therefor
US6401193B1 (en) * 1998-10-26 2002-06-04 Infineon Technologies North America Corp. Dynamic data prefetching based on program counter and addressing mode
JP3969009B2 (ja) * 2001-03-29 2007-08-29 株式会社日立製作所 ハードウェアプリフェッチシステム
JP2003223360A (ja) * 2002-01-29 2003-08-08 Hitachi Ltd キャッシュメモリシステムおよびマイクロプロセッサ
JP4067887B2 (ja) * 2002-06-28 2008-03-26 富士通株式会社 プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100976433B1 (ko) * 2008-03-21 2010-08-18 후지쯔 가부시끼가이샤 정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법

Also Published As

Publication number Publication date
TW200604808A (en) 2006-02-01
CN100517274C (zh) 2009-07-22
CN1934543A (zh) 2007-03-21
US20070186048A1 (en) 2007-08-09
EP1729220A4 (en) 2008-12-17
EP1729220A1 (en) 2006-12-06
JPWO2005091146A1 (ja) 2008-02-07
JP4045296B2 (ja) 2008-02-13
WO2005091146A1 (ja) 2005-09-29

Similar Documents

Publication Publication Date Title
KR20060130120A (ko) 캐시 메모리 및 그 제어 방법
US8041897B2 (en) Cache management within a data processing apparatus
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US9311246B2 (en) Cache memory system
US9582282B2 (en) Prefetching using a prefetch lookup table identifying previously accessed cache lines
US20100217937A1 (en) Data processing apparatus and method
US20180300258A1 (en) Access rank aware cache replacement policy
EP2017738A1 (en) Hierarchical cache tag architecture
EP1149342A1 (en) Method and apparatus for managing temporal and non-temporal data in a single cache structure
KR20070093452A (ko) 캐시 메모리 시스템 및 그 제어 방법
US20210182214A1 (en) Prefetch level demotion
US7711904B2 (en) System, method and computer program product for executing a cache replacement algorithm
KR100826757B1 (ko) 캐시 메모리 및 그 제어 방법
US11036639B2 (en) Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays
JPWO2005066796A1 (ja) キャッシュメモリ及びその制御方法
US11010306B2 (en) Apparatus and method for managing a cache hierarchy
JPH1055276A (ja) 多重レベル分岐予測方法および装置
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
CN114450668A (zh) 电路和方法
JP4008946B2 (ja) キャッシュメモリ及びその制御方法
US11455253B2 (en) Set indexing for first-level and second-level set-associative cache
CN115391239A (zh) 一种基于局域算法的高速缓存动态数据预取方法、系统、设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E90F Notification of reason for final refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
E801 Decision on dismissal of amendment
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20081229

Effective date: 20100722