KR20090072933A - 섹터 기능이 있는 캐시 메모리 - Google Patents

섹터 기능이 있는 캐시 메모리 Download PDF

Info

Publication number
KR20090072933A
KR20090072933A KR1020080089181A KR20080089181A KR20090072933A KR 20090072933 A KR20090072933 A KR 20090072933A KR 1020080089181 A KR1020080089181 A KR 1020080089181A KR 20080089181 A KR20080089181 A KR 20080089181A KR 20090072933 A KR20090072933 A KR 20090072933A
Authority
KR
South Korea
Prior art keywords
sector
way
cache
information
access request
Prior art date
Application number
KR1020080089181A
Other languages
English (en)
Other versions
KR100971481B1 (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 KR20090072933A publication Critical patent/KR20090072933A/ko
Application granted granted Critical
Publication of KR100971481B1 publication Critical patent/KR100971481B1/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
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control

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

본 발명은, 하드웨어·소프트웨어의 변경 비용이 작고, 성능 오버헤드도 작으며, 로크에 의한 시스템 정지의 우려도 없고, 또한 로컬 메모리적인 기능과 최약 웨이 방식을 동시에 실현할 수 있는, 프로그램으로부터 치환 제어를 행할 수 있는 캐시 메모리를 실현한다.
메모리 액세스 요구(308)에 의해 특정되는 캐시 블록의 각 캐시 웨이에 대응시켜 섹터 ID를 기억하는 섹터 ID RAM(203)을 추가하는 것과, 401, 303∼307 등의 단순한 판정 회로에 의해, 메모리 액세스 요구(308)에 1비트 정도의 섹터 ID를 지정하는 것만으로, 어떤 캐시 블록을 치환할 것인지를 제어할 수 있다. 이에 따라, 적은 하드웨어 비용으로 캐시 메모리 상에 로컬 메모리 기능(고속 메모리 영역)이나 최약 웨이 방식과 동등한 기능을 실현할 수 있고, 프로그램을 최적화하여, 프로그램의 실효 속도를 향상하는 것이 가능해진다.

Description

섹터 기능이 있는 캐시 메모리{CACHE MEMORY HAVING SECTOR FUNCTION}
본 발명은, 고성능 프로세서, 고성능 컴퓨팅의 분야에서의 프로그램의 고속 실행을 목적으로 한 캐시 기술에 관한 것이다.
최근의 프로세서의 동작 주파수의 향상에 의해, 상대적으로 메모리 액세스 지연 시간이 길게 되어, 이것이 시스템 전체의 성능을 좌우하는 것에 이르고 있다. 다수의 프로세서는, 메모리 액세스 지연 시간을 은폐할 목적으로, 캐시 메모리라고 부르는 소용량의 고속 메모리를 탑재하고 있다.
도 14에, 현재 가장 보급되어 있는 세트 어소시어티브 방식(set associative)의 캐시 메모리의 동작 개요를 도시한다.
캐시 메모리(1401)는 복수의 세트로 구성되어 있고, 각 세트는, 예컨대 #1∼#4의 복수의 캐시 웨이(이후, 단순히「웨이」라고 약칭하는 경우도 있음)(1402)로 나누어 관리되고 있다. 즉, 도 14의 예는, 4웨이의 세트 어소시어티브 방식의 캐시 메모리를 나타내고 있다.
또한, 각 캐시 웨이(1402)는 #1∼#n의 복수의 캐시 블록(이후, 단순히「블록」이라고 약칭하는 경우도 있음)(1403)로 구성되어 있다. 예컨대, n=1024이다.
각 캐시 블록(1403)은 유효 여부를 나타내는 유효 플래그, 태그, 및 데이터로 구성되어 있다. 데이터 사이즈는, 예컨대 유효 플래그가 1비트, 태그가 15비트, 데이터가 128비트이다.
캐시 메모리(1401)의 사이즈는, 예컨대 「캐시 블록의 사이즈×캐시 블록수×캐시 웨이수 = 128바이트×1024블록×4웨이」로 계산되어, 예컨대, 512 킬로바이트의 사이즈를 갖는다.
한편, 프로그램에 의해 지정되는 메모리 액세스를 위한 어드레스(1405)는 32비트로 지정되어, 하위 7비트가 캐시 블록 내 오프셋, 10비트가 인덱스, 상위 15비트가 태그로서 사용된다.
이상의 구성에 의해, 어드레스(1405)에 대한 데이터 판독이 지정되면, 어드레스(1405) 내의 10비트의 인덱스에 의해, #1∼#n의 블록 번호 중의 하나가 지정된다. 그 번호를 #i로 한다.
그 결과, #1∼#4의 각 캐시 웨이(1402)로부터, 지정된 블록 번호(#i)에 대응하는 각 캐시 블록(1403)(#i)이 판독되어, 각각 #1∼#4의 비교기(1404)에 입력된다.
#1∼#4의 비교기(1404)는 판독된 각 캐시 블록(1403)(#i) 내의 태그값으로 지정된 어드레스(1405) 내의 태그값과의 일치/불일치를 검출한다. 이 결과, #1∼#4 중 일치가 검출된 비교기(1404)에서 판독되는 캐시 블록(1403)(#i)이 캐시 히트한 것이 되어, 그 블록의 데이터가 판독된다. 이에 따라, 주기억 메모리로부터의 판독보다도 고속인 데이터 판독이 실현된다.
어떤 비교기(1404)에서도 일치가 검출되지 않거나, 또는 일치가 검출되더라도 유효 플래그가 무효를 나타내고 있다면, 캐시 히트로는 되지 않고, 주기억 메모리 상의 어드레스(1405)로부터 데이터가 판독된다.
한편, 어드레스(1405)에 대한 데이터 기록이 지정되면, 판독의 경우와 동일하게, 어드레스(1405) 내의 10비트의 인덱스에 의해, #1∼#n의 블록 번호 중의 하나(#i)가 지정된다.
다음으로, 도 15에 나타내는 바와 같은 치환 웨이 선택 회로(1501)가, #1∼#4의 각 캐시 웨이(1402)의 지정된 블록 번호(#i)에 대응하는 4개의 캐시 블록(1403)(#i) 중, 미사용(태그가 미지정된) 블록, 또는 유효 플래그가 무효를 나타내는 블록, 모든 블록이 사용 중인 경우에는 소정의 알고리즘에 의해 결정된 웨이의 블록을 선택하여, 도 15에 나타내는 바와 같은 4비트값의 선택 신호를 출력한다. 이 4비트값은 #1∼#4의 4개의 웨이 중 하나를 선택하기 위한 데이터이다. 4비트 중 값 1이 설정되어 있는 비트 위치에 대응하는 웨이가 선택된다. 이와 같이 하여 치환 웨이 선택 회로(1501)에서 출력되는 선택 신호에 기초하여, 지정된 블록 번호(#i)에 대해 선택할 수 있는 4개의 #1∼#4의 4개의 웨이 중 하나가 선택된, 그 캐시 블록(1403)에 데이터가 기록된다.
모든 블록이 사용 중인 경우에, #1∼#4의 4개의 캐시 웨이(1402) 중 어느 것을 선택할지는, 예컨대 LRU(Least Recently Used) 알고리즘에 의해 결정된다. 이 알고리즘에서는, 사용되고 나서 가장 긴 시간이 경과한 캐시 웨이의 캐시 블록 데이터가 선택되고, 그 데이터가 치환[추출(追出)]된다.
전술한 동작 설명으로부터 이해되는 바와 같이, 기록되는 데이터의 사이즈가 큰 경우에, 복수의 데이터에 있어서 어드레스(1405)의 인덱스 값이 일치하여, 이들의 데이터에서 캐시 경합이 발생할 가능성이 있다. 이러한 경우에도, 세트 어소시어티브 방식의 캐시 메모리에서는, 인덱스에 의해 #1∼#n 중 동일한 캐시 블록(1403)이 지정되었다고 하더라도, 복수의 웨이에서 캐시 블록을 선택할 수 있기 때문에, 예컨대 도 14의 4웨이 구성의 캐시 메모리(1401)에서는, 동일한 인덱스를 갖는 최대 4개까지의 데이터에 대응할 수 있다.
이상과 같은 구성을 갖는 일반적인 캐시 메모리에 있어서, 프로그래머는 특정한 데이터는 캐시 메모리에 남겨 두고 고속 액세스가 가능하게 하기 위해, 명시적인 데이터의 배치를 지정할 수 없다. 이 때문에, 의도하지 않는 데이터의 추출(치환)에 의해, 처리 성능이 열화된다는 문제점이 있었다.
이 문제를 해결하기 위해 종래에, 로컬 메모리나 스크래치 패드, 혹은 캐시 라인(웨이) 로크 등의 수법이 제안되어 있다.
특허 문헌 1에 기재한 종래 기술은, (1) 통상의 캐시 메모리 영역과 (2) 스크래치 패드(또는 로컬 메모리) 영역으로 분할하여 사용할 수 있는 캐시 메모리에 대해 개시하고 있다.
특허 문헌 2에 기재한 종래 기술도 또한, 캐시 메모리 영역을 통상의 캐시 메모리 영역과 로컬 메모리 영역으로 분할하여 이용하는 것을 개시하고 있다. 이 종래 기술에서는, 캐시 메모리 영역과 로컬 메모리 영역의 각각에 대해, 메인 메모리의 어드레스 공간을 개별로 부여하여, 메모리 액세스 시에 어느 쪽의 영역에의 액세스인지를 구별함으로써 데이터의 일관성을 유지하고 있다.
상기와 같이 캐시 메모리 영역을 분할하지 않고, 캐시 메모리 상에서의 특정한 캐시 라인 혹은 캐시 웨이를 로크함으로써, 대상 데이터가 항상 캐시 메모리 상에 계속 존재하도록 할 수 있는 종래 기술도 제안되어 있다.
또한, 주로 스트림 데이터에의 액세스에 의한 데이터의 의도하지 않은 추출을 막는 종래 기술로서, 최약 웨이 방식(weakest way method)이 있다. 이 방식은, 메모리 액세스 명령에 의해 데이터를 캐시 메모리에 전송할 때에, 동일 인덱스 내에서 최초에 추출해야 하는 데이터인 것을 지시할 수 있다. 이에 따라, 스트림 데이터와 같이 한번 밖에 사용하지 않는 데이터가 가장 먼저 추출되도록 할 수 있다.
[특허 문헌 1] 일본 특허 공개 평10-187533호 공보
[특허 문헌 2] 일본 특허 공개 평4-175946호 공보
[특허 문헌 3] 일본 특허 공개 제2003-296191호 공보
그러나, 특허 문헌 1에 기재한 종래 기술에서는, 스크래치 패드 영역에 대한 특별한 명령(메인 메모리로부터 데이터를 판독하기 위한 로드 명령 및 메인 메모리 에 데이터를 재기록하기 위한 라이트백 명령)이 필요하게 된다. 또한, 캐시 영역, 스크래치 패드 영역, 메인 메모리와의 사이에서 데이터의 일관성을 유지하기 위한 제어가 필요하게 되는 문제도 있다.
특허 문헌 2에 기재한 종래 기술에서는, 영역 판정 회로가 필요하게 되는 문제가 있다. 또한, 메모리 공간을 제어할 필요가 생기기 때문에 오퍼레이팅 시스템에 의한 관리도 필요하게 된다.
또한, 특허 문헌 1 및 2 모두, 프로그램 실행 중에 영역 사이즈를 변경한다고 하는 조작에는, 큰 성능 오버헤드도 수반한다고 하는 문제점을 갖고 있었다.
또한, 캐시 라인 혹은 캐시 웨이를 로크하는 종래 기술에서는, 프로그래머가 로크를 해제하기 위한 조작(언로크 조작이라고 부름)을 실행하는 것을 잊거나, 잘못하여 모든 캐시 영역을 로크하여 버린 경우 등에, 캐시 시스템이 정상적으로 동작하지 않게 되어, 최종적으로는 시스템이 정지한다고 하는 문제가 용이하게 발생할 수 있다. 그리고, 언로크하기 위한 전용 하드웨어 기구가 필요하게 되고, 추가 하드웨어 비용이 크다고 하는 문제점을 갖고 있었다.
또한, 최약 웨이 방식의 종래 기술은 로컬 메모리 기능에 관한 종래 기술과 동시에 실장할 수 없다고 하는 문제점을 갖고 있었다.
본 발명의 과제는 하드웨어 및 소프트웨어의 변경 비용이 작고, 성능 오버헤드도 작으며, 로크 상태에 의한 시스템 정지의 우려도 없고, 또한 로컬 메모리적인 기능과 최약 웨이 방식을 동시에 실현할 수 있는 캐시 메모리를 실현하는 것이다.
본 발명은, 각 세트가 2개 이상의 캐시 웨이로 구성되어 세트 어소시어티브 방식에 기초하여 동작하고, 캐시 미스(cache miss)의 발생 시에 결정된 치환 웨이에 대응하는 캐시 웨이의 캐시 블록의 데이터를 치환하는 캐시 동작을 행하는 캐시 메모리를 전제로 한다.
본 발명의 제1 형태는, 이하의 구성을 갖는다.
섹터 ID 정보 기억부[예컨대 도 2의 섹터 ID RAM(203)]는 메모리 액세스 요구에 의해 특정되는 캐시 블록의 각 캐시 웨이에 대응시켜, 그 각 캐시 웨이의 치환 상태를 제어하기 위해 정의되어 2개 이상의 논리값을 취할 수 있는 섹터 ID 정보를 기억한다. 이 섹터 ID 정보는 예컨대 2개의 논리값 또는 3개 이상의 논리값을 취할 수 있다.
치환 웨이 후보 결정부[예컨대 도 3의 치환 웨이 선택 가능 마스크 생성 회로(303)]는 캐시 미스의 발생 시에, 메모리 액세스 요구에 부가된 섹터 ID 정보와, 메모리 액세스 요구에 의해 특정되는 캐시 블록의 각 캐시 웨이에 대응하여 섹터 ID 정보 기억부에 기억되어 있는 섹터 ID 정보에 기초하여, 치환 웨이의 후보인 치환 웨이 후보를 결정한다.
치환 웨이 선택부[예컨대 치환 웨이 선택 회로(304)]는 치환 웨이 후보로부 터 치환 웨이를 선택하여 출력한다.
섹터 ID 정보 갱신부[예컨대 도 3의 셀렉터(307)]는 메모리 액세스 요구에 의해 특정되는 캐시 블록의 치환 웨이에 의해 지정되는 캐시 웨이에 대응하여 섹터 ID 정보 기억부에 기억되어 있는 섹터 ID 정보를, 메모리 액세스 요구에 부가된 섹터 ID 정보에 의해 갱신한다.
본 발명의 제2 형태는, 전술한 본 발명의 제1 형태에 부가하여, 이하의 구성을 더 갖는다.
최대 웨이수 지정부[예컨대 도 4의 레지스터(402∼405)]는 섹터 ID 정보의 각 논리값마다 할당할 수 있는 캐시 웨이의 최대값을 최대 웨이수로서 지정한다.
비교부[예컨대 도 4의 치환 섹터 ID 결정 회로(401)]는 캐시 미스의 발생 시에, 메모리 액세스 요구에 의해 특정되는 캐시 블록의 각 캐시 웨이에 대응하여 섹터 ID 정보 기억부에 기억되어 있는 섹터 ID 정보 중, 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보를 갖는 캐시 웨이의 수와, 최대 웨이수 지정부에서 지정되는 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보의 최대 웨이수를 비교한다.
그리고, 전술한 치환 웨이 후보 결정부[예컨대 도 4의 치환 웨이 선택 가능 마스크 생성 회로(303)]는 캐시 미스의 발생 시에, 그 비교부에 의한 비교 결과에 따라, 메모리 액세스 요구에 의해 특정되는 캐시 블록의 각 캐시 웨이에 대응하여 섹터 ID 정보 기억부에 기억되어 있는 섹터 ID 정보 중, 메모리 액세스 요구에 부가된 섹터 ID 정보 이외의 섹터 ID 정보가 기억되어 있는 캐시 웨이군이나, 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보가 기억되어 있는 캐시 웨이군 중 어느 하나의 군을 치환 웨이 후보로서 결정한다.
본 발명의 제3 형태는, 전술한 본 발명의 제2 형태에 부가하여, 이하의 구성을 더 갖는다.
즉, 최대 웨이수 지정부[예컨대 도 4의 레지스터(402∼405)]는 섹터 ID 정보의 각 논리값마다의 최대 웨이수의 합계수가 캐시 메모리에서의 캐시 웨이수보다도 커지도록, 섹터 ID 정보의 각 논리값마다의 최대 웨이수를 설정할 수 있다.
본 발명의 제4 형태는, 전술한 본 발명의 제1 형태에 부가하여, 이하의 구성을 더 갖는 치환 웨이 후보 결정부[예컨대 도 10의 치환 웨이 선택 가능 마스크 생성 회로(303)]는 캐시 미스의 발생 시에, 사용자에 의해 지정된 섹터 ID 정보의 소정값[예컨대 도 10의 고정값(1001)]에 대해서, 비교부에 의한 비교 결과는 판정하지 않고, 메모리 액세스 요구에 의해 특정되는 캐시 블록의 각 캐시 웨이에 대응하여 섹터 ID 정보 기억부에 기억되어 있는 섹터 ID 정보 중, 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보가 기억되어 있는 캐시 웨이군을 치환 웨이 후보로서 결정한다.
본 발명의 제5 형태는 전술한 본 발명의 제1∼제4 형태 중 어느 하나에 부가하여, 이하의 구성을 더 갖는다.
전술한 섹터 ID 정보 갱신부는, 메모리 액세스 요구에 의해 캐시 히트가 발생했을 때에, 메모리 액세스 요구에 의해 특정되는 캐시 블록의 치환 웨이에 의해 지정되는 캐시 웨이에 대응하여 섹터 ID 정보 기억부에 기억되어 있는 섹터 ID 정 보를, 메모리 액세스 요구에 부가된 섹터 ID 정보에 의해 갱신한다(예컨대 도 7의 701의 구성).
본 발명에 따르면, 메모리 액세스 요구에 의해 특정되는 캐시 블록의 각 캐시 웨이에 대응시켜 섹터 ID 정보를 부가하는 것과 단순한 판정 처리를 이용하는 것에 의해, 적은 하드웨어 비용으로 캐시 메모리 상에 로컬 메모리 기능(고속 메모리 영역)이나 최약 웨이 방식과 동등한 기능을 실현할 수 있어, 이것을 이용함으로써 프로그램을 최적화하여, 프로그램의 실효 속도를 향상하는 것이 가능해진다.
본 발명에 있어서의 하드웨어 비용에 대해서는, 주로 최대 웨이수를 기억하는 레지스터(3비트 정도), 비교·마스크 회로의 추가, 각 캐시 블록에 대응하여 섹터 ID 정보를 기억하는 섹터 ID RAM을 추가하는 것으로 충분하고, 오퍼레이팅 시스템에 대해 어떤 변경도 필요 없기 때문에, 변경 비용(하드웨어 및 소프트웨어)이 작다고 하는 특징이 있다.
또한, 본 발명에서는, 성능에 영향을 주는 처리는, 현재의 웨이수와 최대 웨이수를 비교하여, 그 결과에 기초하여 웨이의 마스크 처리를 행하는 정도이기 때문에, 회로가 복잡하여 성능에 악영향을 미치는 일은 거의 없다.
또한, 본 발명에서는, 최대 웨이수와 현재의 웨이수를 비교한 결과에 기초하여, 반드시 자(自)섹터 ID 정보 또는 타(他)섹터 ID 정보 중 어느 한쪽의 웨이가 치환 대상으로서 선택되기 때문에, 로크 방식과 같이 모든 웨이가 로크되어, 그 결과, 치환 대상 웨이가 존재하지 않는다고 하는 상황은 결코 발생하지 않으며, 시스 템이 정지하는 일은 없다.
부가하여, 본 발명에서는, 각 섹터 ID 정보 값에 대해 독립적으로 최대 웨이수를 설정할 수 있고, 또한 각 섹터 ID 정보 값의 최대 웨이수의 합계치가 현재 캐시 메모리에 장비되어 있는 캐시 웨이수의 최대값을 넘어도 좋다고 하는 조건을 허용함으로써, 각 섹터 ID 정보에 할당된 캐시 웨이를 오버랩하여 설정할 수 있다. 이에 따라, 최약 웨이 방식과 동등한 기능을 실현하는 것이 가능해진다.
이하, 도면을 참조하면서, 본 발명을 실시하기 위한 최량의 형태를 상세하게 설명한다.
도 1은 본 발명의 실시형태에 의한 캐시 메모리의 기능 구성도이다. 또한, 도 1의 구성은 일례이고, 본 발명은 도 1의 구성에 한정되지 않는다.
본 실시형태에 의한 캐시 메모리는, 도 14의 경우와 동일하게, 4웨이의 세트 어소시어티브 방식의 캐시 메모리로서 실현된다.
캐시 메모리(101)는 #1∼#4의 복수의 캐시 웨이(102)로 나누어 관리되고, 각 캐시 웨이(102)는 #1∼#n의 복수의 캐시 블록(103)으로 구성되어 있다. 예컨대, n=1024이다.
도 1의 실시형태에 있어서, 각 캐시 블록(103)은 일반적인 유효 플래그(1비트, 이것은 없는 경우도 있음), 태그(15비트), 데이터(128바이트)에 부가하여, 섹터 ID를 갖는 것이 큰 특징이다. 이 섹터 ID는 1비트 또는 2비트로 구성된다. 1비트인 경우, 섹터 ID 값은 0이나 1 중 어느 하나의 값을 취한다. 2비트인 경우, 섹 터 ID는 0∼2의 3가지 또는 0∼3의 4가지의 값을 취한다.
캐시 메모리(101)의 사이즈는, 「캐시 블록의 사이즈×캐시 블록수×캐시 웨이수 = 128바이트×1024블록×4웨이」로 계산되고, 예컨대, 512 킬로바이트의 사이즈를 갖는다.
한편, 프로그램에 의해 지정되는 메모리 액세스를 위한 어드레스(105)는 32비트로 지정되어, 하위 7비트가 캐시 블록 내 오프셋, 10비트가 인덱스, 상위 15비트가 태그로서 사용된다.
이상의 구성에 의해, 어드레스(105)에 대한 데이터의 액세스(판독 또는 기록)가 지정되면, 어드레스(105) 내의 10비트의 인덱스에 의해, #1∼#n의 블록 번호 중 하나가 지정된다. 지정된 블록의 번호를 #i로 한다.
그 결과, #1∼#4의 각 캐시 웨이(102)로부터, 지정된 블록 번호(#i)에 대응하는 각 캐시 블록(103)(#i)이 판독되고, 각각 #1∼#4의 비교기(104)에 입력된다.
#1∼#4의 비교기(104)는 판독된 각 캐시 블록(103)(#i) 내의 태그값과, 지정된 어드레스(105) 내의 태그값의 일치/불일치를 검출한다. 이 결과, #1∼#4 중 태그값의 일치가 검출된 비교기(104)에서 판독되는 캐시 블록(103)(#i)이 캐시 히트한 것이 되고, 그 블록에 대해 데이터가 판독된다.
어떤 비교기(104)에서도 태그값의 일치가 검출되지 않았고, 또는 태그값의 일치가 검출되었더라도 유효 플래그가 무효를 나타내고 있다면, 캐시 히트로는 되지 않고, 주기억 메모리 상의 어드레스(105)가 액세스된다. 본 실시형태는, 특히 이 캐시 미스시의 캐시 메모리(101)의 치환 수법에 특징이 있다.
도 2는 캐시 메모리에 관한 도 1의 기능 구성에 대응하는 하드웨어 구성을 도시한 도면이다.
도 1의 각 캐시 블록(103)을 구성하는 데이터, 태그 및 섹터 ID는, 각각 데이터 RAM(201), 태그 RAM(202) 및 섹터 ID RAM(203)의 3영역으로 분할되어 기억된다. 데이터 RAM(201), 태그 RAM(202) 및 섹터 ID RAM(203)는 각각 4개의 영역으로 분할되고, 각 RAM의 각 영역은 각각, 도 1의 #1∼#4의 캐시 웨이(102)를 구성한다. 또한, 유효 플래그는 태그 RAM(202)에 태그값이 기억되어 있는지의 여부로 대용되지만, 별도 유효 플래그용 RAM이 설치되어도 좋다.
어드레스(105)에 대한 데이터 액세스가 지정되면, 어드레스(105) 내의 10비트의 인덱스에 의해, 태그 RAM(202)에서의 #1∼#n의 블록 번호 중 하나(#i)가 지정된다.
그 결과, 태그 RAM(202) 내의 #1∼#4의 각 캐시 웨이(102)로부터, 지정된 블록 번호(#i)에 대응하는 각 캐시 블록(103)(#i)의 태그값이 판독되어, 각각 #1∼#4의 비교기(104)에 입력된다.
#1∼#4의 비교기(104)는 태그 RAM(202)로부터 판독된 각 캐시 블록(103)(#i)의 태그값이라고 지정된 어드레스(105) 내의 태그값과의 일치/불일치를 검출한다. 그리고, 캐시 히트가 발생한 경우, 4개의 비교기(104)에서는, 태그값의 일치가 검출된 비교기(104)의 출력만이 1이 되는, 4비트의 히트웨이 신호가 출력된다.
캐시 히트가 발생한 경우로서 메모리 액세스 요구가 판독 요구인 경우에는, 데이터 RAM(201)에 있어서, 어드레스(105) 내의 10비트의 인덱스에 의해 지정되는 블록 번호(#i)로부터, #1∼#4의 각 캐시 웨이(102)에 대응하는 4개의 캐시 블록(103)(#i)의 데이터값이 셀렉터(204)에 판독된다. 그리고, 4개의 비교기(104)에서 출력되는 히트웨이 신호에 의해, 태그값의 일치가 검출된 비교기(104)에 대응하는 어느 하나의 캐시 웨이에 대응하는 캐시 블록(103)(#i)의 데이터값이 선택되어 출력된다.
캐시 히트가 발생한 경우로서 메모리 액세스 요구가 기록 요구인 경우에는, 데이터 RAM(201)에 있어서, 어드레스(105) 내의 10비트의 인덱스에 의해 지정되는 블록 번호(#i)에 있어서의, #1∼#4의 각 캐시 웨이(102)에 대응하는 4개의 캐시 블록(103)(#i) 중, 히트웨이 신호에 의해 지시되는 캐시 웨이의 블록에, 메모리 액세스 요구에 의해 지정되는 데이터가 기록된다.
셀렉터(205)의 동작에 대해서는 후술한다.
제1 실시형태
제1 실시형태의 구성 및 동작에 대해 설명한다.
이후의 설명에서는, 사용자 프로그램에 기초하는 메모리 액세스 요구에 대해서만 설명하지만, 하드웨어에 의한 메모리 액세스 요구에 대해서도 동일하게 동작한다.
또한, 제1 실시형태에서는, 섹터 ID가 1비트인 경우에 대해 설명한다.
도 3은 메모리 액세스 요구(308)에 대해 도 1 또는 도 2의 구성을 갖는 캐시 메모리(101)에서 캐시 미스가 발생했을 때에, 인덱스에 의해 지정된 블록 번호에 대응하는 #1∼#4의 4개의 캐시 웨이(102)의 캐시 블록(103)의 데이터 중, 어떤 웨 이가 치환되어야 하는지를 결정하는, 치환 웨이 제어 회로의 구성도이다.
또한, 캐시 미스가 발생하였는지는, 도 1 또는 도 2에 나타내는 모든 비교기(104)에서 태그값의 일치가 검출되지 않은 상태, 즉, #1∼#4의 모든 비교기(104)의 출력이 액티브가 아닌 경우로서 검출할 수 있다. 도 3에 있어서, 우선, 메모리 액세스 요구(308)에는, 캐시 메모리(101)에서의 데이터의 치환 상태를 제어하기 위한 1비트의 섹터 ID(302)가 부가된다.
치환 웨이 선택 가능 마스크 생성 회로(303)에는, 도 2에 나타내는 섹터 ID RAM(203) 내의, 메모리 액세스 요구(308)의 어드레스(105) 내의 인덱스에 의해 지정된 블록 번호로부터, #1∼#4의 캐시 웨이(102)(도 2 참조)에 대응하는 4비트의 섹터 ID(301)와, 메모리 액세스 요구(308)에 부가되는 1비트의 섹터 ID(302)가 입력된다.
그리고, 치환 웨이 선택 가능 마스크 생성 회로(303)는 배타적 OR 회로(XOR)(303-1)와 인버터(INV)(303-2)로 구성되고, 메모리 액세스 요구(308)로부터의 1비트의 섹터 ID(302)와, 섹터 ID RAM(203)로부터의 4비트의 섹터 ID(301)의 각 비트와의 사이에서 배타적 NOR 연산을 실행한다.
이에 따라, 메모리 액세스 요구(308)에 부가되는 섹터 ID(302)의 비트값(도 3의 예에서는 「0」)과 동일한 섹터 ID의 비트값을 갖는 비트 위치만이 값 1이 되는, 치환 웨이 후보(309)가 출력된다. 예컨대, 도 2의 섹터 ID RAM(203)으로부터 4비트의 섹터 ID(301)로서 「0001」이 판독되는 경우에는, 그 중의 값「0」 부분이 일치하여 「1」, 값 「1」 부분이 불일치하여 「O」이 되어, 4비트로 이루어지는 치환 웨이 후보(309)로서 「1110」이 출력된다. 이 치환 웨이 후보(309)는 값 1을 갖는 비트 위치에 대응하는 캐시 웨이(102)가 메모리 액세스 요구(308)에 의해 치환되어야 하는 웨이인 것을 지시하고 있다.
그리고, 치환 웨이 선택 회로(304)는 치환 웨이 후보(309)에 있어서 값이 1인 비트 위치에 대응하는 웨이 중의 어느 하나를, LRU 알고리즘 등에 따라 선택하여, 선택된 웨이에 대응하는 비트 위치만이 1이 되는 4비트로 이루어지는 치환 웨이(310)(도 3의 예에서는「1000」)를 출력한다.
치환 웨이(310)는 셀렉터(305, 306 및 307)에 입력되어, 각 셀렉터는 치환 웨이(310)의 4비트의 데이터 중 값이 1이 되는 비트 위치에 대응하는 웨이를 선택한다.
즉, 셀렉터(305, 306, 307)는 각각 입력되는 메모리 액세스 요구(308)에 대응하는 데이터, 태그 및 섹터 ID를, 각각 데이터 RAM(201), 태그 RAM(202) 및 섹터 ID RAM(203) 내의, 치환 웨이(310)의 4비트의 데이터 중 값이 1이 되는 비트 위치에 대응하는 웨이에 출력한다.
또한, 메모리 액세스 요구(308) 내의 인덱스가 데이터 RAM(201), 태그 RAM(202) 및 섹터 ID RAM(203)의 블록 번호를 지정한다.
이에 따라, 데이터 RAM(201), 태그 RAM(202) 및 섹터 ID RAM(203)에 있어서, 지정된 블록 번호의 선택된 웨이의 캐시 블록(103)(어둡게 표시한 부분)에 데이터, 태그 및 섹터 ID가 기록된다.
또한, 데이터 RAM(201)에 기록되는 데이터는, 메모리 액세스 요구(308)가 판 독 요구인 경우에는, 도시하지 않는 주기억 메모리 상의 대응하는 어드레스(105)로부터 판독된 데이터이고, 메모리 액세스 요구(308)가 기록 요구인 경우에는, 메모리 액세스 요구(308)로 지정되어 있는 기록 데이터이다.
이상과 같이 하여, 제1 실시형태에서는, 캐시 미스 시에, 메모리 액세스 요구(308)에 부가되는 섹터 ID가 0일 때에는 섹터 ID RAM(203) 내의 섹터 ID가 0인 캐시 웨이를, 메모리 액세스 요구(308)에 부가되는 섹터 ID가 1일 때에는 섹터 ID RAM(203) 내의 섹터 ID가 1인 캐시 웨이를 선택하고, 데이터 RAM(201) 내의 인덱스에 의해 지정된 블록 번호의 상기 선택된 캐시 웨이의 캐시 블록(103)의 데이터가 메모리 액세스 요구(308)에 대응하는 데이터에 의해 치환된다.
전술한 기능에 의해, 사용자는 우선, 캐시 메모리(101)로부터 추출하고 싶지 않은 데이터(즉, 고속 메모리 액세스를 요구하는 데이터)에 대한 메모리 액세스 요구(308)에 대해서는, 그 메모리 액세스 요구(308)에 예컨대 섹터 ID=1(0이어도 좋음)을 지정하여 메모리 액세스를 행한다. 그 후, 사용자는, 캐시 메모리(101)로부터 곧 추출되어도 좋은 데이터에 대한 메모리 액세스 요구(308)를 실행하는 경우에는, 그 메모리 액세스 요구(308)에 예컨대 섹터 ID=0(1이어도 좋음)을 지정하여 메모리 액세스를 행한다. 이에 따라, 섹터 ID=0이 부가되어 실행된 메모리 액세스 요구(308)의 데이터에 대해서는, 캐시 미스 시에 캐시 메모리(101) 상에서 섹터 ID=0이 기억된 캐시 웨이에서만 치환이 발생하고, 최초에 섹터 ID=1과 함께 캐시 메모리(101)에 기록된 데이터는 치환되지 않고 추출되지 않는다.
이와 같이 하여, 제1 실시형태의 기능에 의해, 어떤 데이터를 추출할 것인지 를, 메모리 액세스 요구(308)에 부가된 섹터 ID에 의해 제어할 수 있게 된다. 이 메모리 액세스 요구(308)는 사용자가 프로그램에 의해 지정하는 액세스 명령이어도 좋고, 또는 시스템의 특정 하드웨어가 캐시 메모리(101)에 대해 자동적으로 발행하는 요구이어도 좋다.
제2 실시형태
도 4는 제2 실시형태의 구성도이다.
도 4의 구성에 있어서, 도 3의 구성과 동일한 번호가 붙여진 부분은 제1 실시형태의 경우와 동일한 기능을 갖는다.
도 4의 구성에 있어서 도 3의 구성과 다른 부분은, 메모리 액세스 요구(308)에 부가되는 섹터 ID(302)가 그대로 치환 웨이 선택 가능 마스크 생성 회로(303)에 입력되지 않고, 섹터 ID(302)가 치환 섹터 ID 결정 회로(401)에 의해 판정되어 치환 섹터 ID(406)로 변환되고 나서 치환 웨이 선택 가능 마스크 생성 회로(303)에 입력되는 점이다.
치환 섹터 ID 결정 회로(401)에는, 하기의 4개의 레지스터가 접속된다.
·섹터 0용 최대 웨이수 레지스터(402)
·섹터 1용 최대 웨이수 레지스터(403)
·현재 섹터 0의 웨이수 레지스터(404)
·현재 섹터 1의 웨이수 레지스터(405)
섹터 0용 최대 웨이수 레지스터(402) 및 섹터 1용 최대 웨이수 레지스터(403)에는, 각 캐시 블록(103)에 있어서, 섹터 ID로서 각각 값 0 및 값 1을 설정 할 수 있는 최대 웨이수가 설정된다. 이들의 레지스터값은 프로그램으로부터 설정될 수 있다.
다음으로, 현재 섹터 0의 웨이수 레지스터(404) 및 현재 섹터 1의 웨이수 레지스터(405)에는, 메모리 액세스 요구(308)의 어드레스(105) 내의 인덱스에 의해 어떤 블록 번호가 지정된 시점에서, 섹터 ID RAM(203)으로부터 판독되는 4비트의 섹터 ID(301)에 값 0이 설정되어 있는 비트수(웨이수)와, 값 1이 설정되어 있는 비트수(웨이수)가 카운트되어 설정된다.
이상의 4개의 레지스터(402∼405)는 예컨대 도 5에 나타낸 바와 같이, 각각 3비트로 구성되어 있고, 0으로부터 4(최대 웨이수)까지의 값을 취한다.
도 4에 있어서, 치환 섹터 ID 결정 회로(401)에서는, 메모리 액세스 요구(308)에 섹터 ID=0이 지정되어 있는 경우에는, 셀렉터(401-1)가 섹터 0용 최대 웨이수 레지스터(402)의 출력을, 셀렉터(401-2)가 현재 섹터 0의 웨이수 레지스터(404)의 출력을 각각 선택하여, 이들을 비교기(401-3)에 입력한다. 반대로, 메모리 액세스 요구(308)에 섹터 ID=1이 지정되어 있는 경우에는, 셀렉터(401-1)가 섹터 1용 최대 웨이수 레지스터(403)의 출력을, 셀렉터(401-2)가 현재 섹터 1의 웨이수 레지스터(405)의 출력을 각각 선택하여, 이들을 비교기(401-3)에 입력한다.
이 결과, 비교기(401-3)는 메모리 액세스 요구(308)에서 지정된 섹터 ID 값에 관해, 최대 웨이수와 현재 웨이수를 비교한다. 여기서, 최대 웨이수는, 어느 웨이까지 상기 섹터 ID의 웨이수가 증가하여도 좋은지의 상한을 부여하는 정보이다.
도 4의 예에서는, 메모리 액세스 요구(308)에 부가되는 섹터 ID의 값이 1이 기 때문에, 비교기(401-3)는 섹터 1용 최대 웨이수 레지스터(403)에 설정되어 있는 섹터 ID=1의 최대 웨이수와, 현재 섹터 1의 웨이수 레지스터(405)에 설정되어 있는 기록 블록에서의 현재의 섹터 ID=1의 웨이수를 비교한다.
비교기(401-3)에서의 비교 결과, 지정된 섹터 ID에 관해 「현재 웨이수 < 최대 웨이수」인 경우에는, 아직 지정된 섹터 ID 값을 갖는 웨이수를 늘려도 좋은 것을 의미한다. 이 때문에, 셀렉터(401-5)는 지정된 섹터 ID와는 반대의 값을 갖는 섹터 ID가 설정되어 있는 웨이에 대한 치환을 지시하기 위한 치환 섹터 ID(406)를 출력한다. 즉, 셀렉터(401-5)는 메모리 액세스 요구(308)에 부가되는 섹터 ID(302)를 인버터(401-4)에서 반전시킨 값을 선택하여, 그것을 치환 섹터 ID(406)로서 출력한다.
한편, 비교기(401-3)에서의 비교 결과, 지정된 섹터 ID에 관해 「현재 웨이수 ≥ 최대 웨이수」인 경우에는, 지정된 섹터 ID 값을 갖는 웨이수는 더 이상 늘릴 수 없기 때문에, 셀렉터(401-5)는 지정된 섹터 ID 값이 설정되어 있는 웨이 중에서의 치환을 지시하기 위한 치환 섹터 ID(406)를 출력한다. 즉, 셀렉터(401-5)는 메모리 액세스 요구(308)에 부가되는 섹터 ID(302)를 그대로 선택하여, 그것을 치환 섹터 ID(406)로서 출력한다.
도 4의 예에서는, 비교기(401-3)에서의 섹터 ID=1에 관한 비교의 결과, 지정된 섹터 ID=1에 대한 「현재 웨이수 < 최대 웨이수」인 경우에는, 아직 섹터 ID=1의 웨이수를 늘려도 좋은 것을 의미하기 때문에, 셀렉터(401-5)는 메모리 액세스 요구(308)에 부가되는 섹터 ID=1을 인버터(401-4)에서 반전시킨 값 0을 선택하여, 그것을 치환 섹터 ID(406)로서 출력한다.
전술한 치환 섹터 ID(406)는 치환 웨이 선택 가능 마스크 생성 회로(303)에 입력된다.
치환 웨이 선택 가능 마스크 생성 회로(303)와 치환 웨이 선택 회로(304)의 동작은 도 3에 나타낸 제1 실시형태의 경우와 동일하다.
즉, 도 4에 있어서, 치환 웨이 선택 가능 마스크 생성 회로(303)는 섹터 ID RAM(203)으로부터 판독되는 4비트의 섹터 ID(301)의 각 비트값(도 4의 예에서는 「0001」)과, 상기 치환 섹터 ID(406)의 비트값 0와의 배타적 NOR 연산을 실행함으로써, 치환 섹터 ID(406)의 비트 값 0과 동일한 섹터 ID=0을 갖는 비트 위치만이 값 1이 되는, 4비트로 이루어지는 치환 웨이 후보(309)(도 4의 예에서는「1110」)를 출력한다.
그리고, 치환 웨이 선택 회로(304)는 치환 웨이 후보(309)에 있어서, 값이 1인 비트 위치에 대응하는 웨이 중의 어느 하나를, LRU 알고리즘 등에 따라 선택하여, 선택된 웨이에 대응하는 비트 위치가 1이 되는 4비트로 이루어지는 치환 웨이(310)(도 4의 예에서는「1000」)를 출력한다.
이 치환 웨이(310)는 도 3과 동일한 셀렉터(305, 306 및 307)에 입력되어, 각 셀렉터가 치환 웨이(310)의 4비트의 데이터 중 값이 1이 되는 비트 위치에 대응하는 웨이를 선택한다.
이 결과, 제1 실시형태의 경우와 동일하게 하여, 도 3에서 설명한 바와 같이, 데이터 RAM(201), 태그 RAM(202) 및 섹터 ID RAM(203)에 있어서, 메모리 액세 스 요구(308) 중의 어드레스 내의 인덱스에 의해 지정된 블록 번호(#i)의, 셀렉터(305, 306 및 307)에서 선택된 웨이의 캐시 블록(103)(어둡게 표시된 부분)에, 데이터, 태그 및 섹터 ID가 기록된다.
상기 기록 타이밍에, 도 4의 예에서는, 섹터 ID RAM(203)에서의 지정 블록 번호(#i)의 4비트의 섹터 ID가 「0001」에서「1001」로 갱신된다. 즉, 지금까지 섹터 ID=0이었던 캐시 웨이의 캐시 블록이 치환되어, 섹터 ID=1이 된다.
도 6은 도 4의 구성에 있어서, 도 6에 나타내는 (1)∼(7)의 7회의 메모리 액세스 요구(308)가 발생하고, 이 모든 요구에 의해 캐시 미스가 발생하여 치환이 발생한 경우의 동작예를 나타낸 도면이다.
도면에서 4개의 사각형은, 캐시 메모리(101)의 데이터 RAM(201)에 있어서, 어떤 블록 번호에서의 #1∼#4의 각 웨이를 나타내고 있다. 사각형은, 섹터 ID=0일 때에는 백색, 섹터 ID=1일 때에는 어둡게 표시되어 있다. 사각형 내의 수치는, 액세스 이력을 나타내고, 수치가 클수록 신(최근 액세스됨) 웨이인 것을 나타낸다.
도 6에서는, (1)∼(7)의 각 메모리 액세스 요구(308)에 있어서, 「Sec.0」및「Sec.1」은 각각 각 메모리 액세스 요구(308)에 부가되는 섹터 ID의 값이 O 및 1인 경우를 나타내고 있다. 또한, 「Sec.O」 및 「Sec.1」의 우측 옆의 숫자는 각 메모리 액세스 요구(308) 발생 시의 최대 웨이(WAY)수를 나타내고 있다.
메모리 액세스 요구(308)가 발생할 때마다, 현재의 웨이수와 최대 웨이수가 비교되어 치환 웨이가 선택된다.
예컨대, 최초의 (1)의 메모리 액세스 요구가 발생했을 때에는, 요구에 의해 지정된 섹터 ID=0, 최대 웨이수=4이다. 이 때, 섹터 ID=0의 현재의 웨이수는 그 직전의 상태(도 6의 최상단의 상태)를 보면 3이고, 요구에 의해 지정된 최대 웨이수=4보다도 작다. 따라서, 다른 섹터 ID=1의 웨이(회색으로 칠해진 웨이)를 섹터 ID=0에 치환하는 것을 지시하는 치환 섹터 ID=「1」이 치환 섹터 ID 결정 회로에서 출력된다. 이 결과, 치환 섹터 ID와 현재의 섹터 ID의 상태 「0100」와의 배타적 NOR 연산에 의해, 치환 웨이 후보로서 「0100」이 치환 웨이 선택 가능 마스크 생성 회로에서 출력되고, 치환 웨이도 「0100」이 되어, 섹터 ID 값이 1인 웨이에서 치환이 발생한다.
2번째의 (2)의 메모리 액세스 요구(308)가 발생했을 때에는, 요구에 의해 지정된 섹터 ID=0, 최대 웨이수=3이다. 한편, (2)의 직전[=(1)]의 상태는 섹터 ID=0의 현재의 웨이수=4이고, 요구에 의해 지정되는 최대 웨이수보다도 크다. 따라서, 섹터 ID=0을 치환하는 것을 지시하는 치환 섹터 ID=「0」가 치환 섹터 ID 결정 회로에서 출력된다. 이 결과, 치환 섹터 ID와 (1)의 섹터 ID의 상태 「0000」와의 배타적 NOR 연산에 의해, 치환 웨이 후보로서 「1111」가 치환 웨이 선택 가능 마스크 생성 회로에서 출력되고, 또한, 치환 웨이 선택 회로에서의 LRU 판정에 의해, 섹터 ID=0인 4개의 웨이 중 가장 오래된 웨이를 치환하는 것을 지시하는 치환 웨이=「0001」가 치환 웨이 선택 회로에서 출력되어, 값이 1인 웨이에서 치환이 발생한다.
3번째의 (3)의 메모리 액세스 요구(308)가 발생했을 때에는, 요구에 의해 지정된 섹터 ID=1, 최대 웨이수=2이다. 한편, (3)의 직전[=(2)]의 상태는 섹터 ID=1 의 현재의 웨이수=0이고, 요구에 의해 지정된 최대 웨이수보다도 작다. 따라서, 다른 섹터 ID=0의 웨이를 치환하는 것을 지시하는 치환 섹터 ID=「0」이 치환 섹터 ID 결정 회로에서 출력되고, 이 결과, 현재[=(2))의 섹터 ID의 상태 「0000」라는 배타적 NOR 연산에 의해, 치환 웨이 후보로서 「1111」가 치환 웨이 선택 가능 마스크 생성 회로에서 출력되고, 또한, 치환 웨이 선택 회로에서의 LRU 판정에 의해, 섹터 ID=0인 4개의 웨이 중 가장 오래된 웨이를 치환하는 것을 지시하는 치환 웨이=「0010」이 치환 웨이 선택 회로에서 출력되어, 값이 1인 웨이에서 치환이 발생한다.
4번째의 (4)의 메모리 액세스 요구(308)가 발생했을 때에는, 요구에 의해 지정된 섹터 ID=1, 최대 웨이수=2이고, (4)의 직전[=(3)]의 상태는 섹터 ID=1인 현재의 웨이수=1이며, 최대 웨이수보다도 작다. 따라서, 다른 섹터 ID=0인 웨이를 치환하는 것을 지시하는 치환 섹터 ID=「0」이 치환 섹터 ID 결정 회로에서 출력되고, 이 결과, 현재[=(3)] 섹터 ID의 상태「0010」와의 배타적 NOR 연산에 의해, 치환 웨이 후보로서「1101」이 치환 웨이 선택 가능 마스크 생성 회로에서 출력되고, 또한, 치환 웨이 선택 회로에서의 LRU 판정에 의해, 섹터 ID=0인 3개의 웨이 중 가장 오래된 웨이를 치환하는 것을 지시하는 치환 웨이=「1000」이 치환 웨이 선택 회로에서 출력되어, 값이 1인 웨이에서 치환이 발생한다.
5번째의 (5)의 메모리 액세스 요구(308)가 발생했을 때에는, 요구에 의해 지정된 섹터 ID=1, 최대 웨이수=2이고, (5)의 직전[=(4)]의 상태는 섹터 ID=1의 현재의 웨이수=2이며, 최대 웨이수 이상이(동등하게) 된다. 따라서, 동일한 섹터 ID=1 의 웨이를 재이용하여 치환하는 것을 지시하는 치환 섹터 ID=「1」이 치환 섹터 ID 결정 회로에서 출력되어, 이 결과, 현재[=(4)]의 섹터 ID의 상태 「1010」과의 배타적 NOR 연산에 의해, 치환 웨이 후보로서「1010」이 치환 웨이 선택 가능 마스크 생성 회로에서 출력되고, 또한, 치환 웨이 선택 회로에서의 LRU 판정에 의해, 섹터 ID=1인 2개의 웨이 중 오래된 쪽의 웨이를 치환하는 것을 지시하는 치환 웨이= 「0010」이 치환 웨이 선택 회로에서 출력되어, 값이 1인 웨이에서 치환이 발생한다.
이하, 6번째의 (6) 및 7번째의 (7)의 메모리 액세스 요구(308)가 발생한 경우도 동일하게, 요구에 의해 지정된 섹터 ID=1, 최대 웨이수=2이고, 각각의 직전의 상태는 섹터 ID=1인 현재 웨이수=2이며, 최대 웨이수 이상이(동등하게) 된다. 따라서, 동일한 섹터 ID=1의 웨이가 재이용되어 치환된다.
이상과 같이 하여, 제2 실시형태에서는, 사용자가 설정할 수 있는 각 섹터 ID의 최대 웨이수에 따라, 캐시 메모리(101)에 대한 치환 동작을 제어할 수 있다.
제3 실시형태
다음으로, 도 1 및 도 2의 구성에 기초하는 제3 실시형태의 구성 및 동작에 대해 설명한다. 도 7은 메모리 액세스 요구(308)에 대해 도 1 또는 도 2의 구성을 갖는 캐시 메모리(101)에서 캐시 히트가 발생했을 때의, 히트웨이 제어 회로에 대한 실시형태의 구성도이다.
도 7의 히트웨이 갱신 회로(701)는 예컨대 도 2의 셀렉터(205) 내에 설치되고, 도 2에 나타내는 4개의 비교기(104)에서 출력되는 4비트의 히트웨이 신호(702)가 입력한다. 이 히트웨이 신호(702)에서는, #1∼#4의 캐시 웨이(102)(도 1 또는 도 2 참조) 중, 캐시 히트가 발생한 캐시 웨이에 대응하는 비트값만 1로 되어 있다.
히트웨이 갱신 회로(701)는 메모리 액세스 요구(308) 내의 어드레스(105)의 인덱스에 의해 지정되는 섹터 ID RAM(203) 내의 블록 번호로부터 판독된 4비트의 현섹터 ID 정보(703)에 있어서, 히트웨이 신호(702)의 비트값이 1이 되는 캐시 웨이에 대응하는 섹터 ID 값을, 메모리 액세스 요구(308)에 부가되는 섹터 ID(704)의 값으로 갱신하여, 그 결과 얻어지는 신(新)섹터 ID(705)를, 섹터 ID RAM(203) 내의, 상기 블록 번호에 대응하는 위치에 재기록한다.
이와 같이 하여, 캐시 히트가 발생한 캐시 블록(103)의 섹터 ID 값은 항상 메모리 액세스 요구(308)에 의해 지정된 섹터 ID 값에 일치하여, 처리 모순이 발생하지 않도록 제어된다.
도 8은 도 7의 구성에 있어서, 도 8에 나타내는 (1)∼(5)의 5회의 메모리 액세스 요구(308)가 발생하고, (1)∼(4)의 메모리 액세스 요구(308)에서는 캐시 미스가 발생하여 치환이 발생하며, 최후의 (5)의 메모리 액세스 요구(308)에서는 캐시 히트가 발생한 경우의 동작예를 나타낸 도면이다.
도 8의 (1)∼(4)의 메모리 액세스 요구(308)에 대응하는 동작은, 도 6의 (1)∼(4)의 메모리 액세스 요구(308)에 대응하는 것과 동일하다.
도 8에 있어서, 5번째의 (5)의 메모리 액세스 요구(308)가 발생했을 때에는, 요구에 의해 지정된 섹터 ID=1, 최대 웨이수=2이고, (5)의 직전[=(4)]의 상태는 섹터 ID=1인 현재의 웨이수=2이지만, 여기서, (4)에서 우단의 섹터 ID=0인 캐시 웨이 에서 캐시 히트가 발생했다고 한 경우에는, 제2 실시형태에서 설명한 최대 웨이수에 대한 참조·제어는 행해지지 않고, 캐시 히트가 발생한 캐시 웨이의 섹터 ID 값은 섹터 ID=0로부터, 메모리 액세스 요구(308)에 의해 지정된 섹터 ID=1로 갱신된다.
제4 실시형태
다음으로, 제4 실시형태에 대해 설명한다.
제4 실시형태의 구성은, 도 4에 나타내는 본 발명의 제2 실시형태의 구성과 기본적으로는 동일하다. 단, 「섹터 0용 최대 웨이수 + 섹터 1용 최대 웨이수 > 캐시 메모리의 총웨이수」라는 조건을 허용함으로써, 섹터 ID=0의 영역과 섹터 ID=1의 영역을 중첩(오버랩)할 수 있다. 이에 따라, 어떤 섹터 ID에 할당된 영역 중에서,
·다른쪽의 섹터 ID의 요구에 의해, 추출되기 쉬운 웨이
·추출되기 어려운, 혹은 추출되지 않는 웨이
를 구별하는 것이 가능하다.
구체적으로는, 도 4의 섹터 0용 최대 웨이수 레지스터(402)와 섹터 1용 최대 웨이수 레지스터(403)에 설정되는 최대 웨이수를, 상기 조건을 허용하도록 설정할 수 있다.
제4 실시형태의 동작을 도 9를 참조하여 설명한다.
도 9에서는, 제4 실시형태에 있어서 최약 웨이 방식을 실현하는 동작예에 대해 설명한다.
최약 웨이 방식이란, 캐시 블록의 치환이 필요할 때에, 의도한 캐시 블록이 반드시 최초에 추출되도록 제어하는 방식이다.
도 9에 있어서, 섹터 0용 최대 웨이수 레지스터(402)에는 4가 설정되고, 섹터 1용 최대 웨이수 레지스터(403)에는 1이 설정된다. 도 1 또는 도 2의 구성의 캐시 메모리(101)의 최대 웨이수는 4이기 때문에, 도 9의 901에 나타내는 캐시 웨이의 상태와 같이, 1 웨이가 오버랩되어 공용되는 상태가 된다.
사용자는 예컨대, 반드시 최초에 데이터가 추출되는 웨이(이것을「최약 웨이」라고 부름)에 관한 메모리 액세스 요구(308)에 대해서는, 예컨대 섹터 ID=1을 설정하고, 그 섹터 ID 값의 최대 웨이수 레지스터에 설정되는 최대값으로서는 작은 값을 설정한다. 또한, 그 섹터 ID 값 이외의 섹터 ID 값의 최대 웨이수 레지스터에 설정되는 최대값으로서는 전술한 바와 같이 오버랩할 수 있는 큰 값을 설정한다.
도 9의 예에서는, 섹터 ID=1이 최약 웨이의 섹터 ID이다.
도 9의 (1)의 상태는, 어떤 블록 번호의 4개의 웨이 중, 3개의 웨이의 캐시 블록에는 섹터 ID=0[도면에는「섹터 0」이라고 표기되어 있음]의 데이터가 기억되고, 하나의 웨이의 캐시 블록에는 섹터 ID=1[도면에는「섹터 1」이라고 표기되어 있음]의 데이터가 기억되어 있다.
이 상태에서, 도 9의 (2)에 도시된 바와 같이, 상기 블록 번호에 대해, 섹터 ID=0이 부가된 메모리 액세스 요구(308)가 발생하면, 그 블록 번호에서의 섹터 ID=0인 웨이수(=3)는 아직 그 최대수=4에 달하고 있지 않기 때문에, 전술한 제2 실시형태에서 설명한 도 4의 치환 섹터 ID 결정 회로(401)의 동작에 기초하여, 섹터 ID=1이 기억되어 있는 웨이의 캐시 블록이 치환되어(추출되어), 모두 섹터 ID=0의 웨이가 된다.
다음으로, 도 9의 (3)에 나타낸 바와 같이, 상기 블록 번호에 대해, 섹터 ID=1이 부가된 메모리 액세스 요구(308)가 발생하면, 그 블록 번호에의 섹터 ID=1인 웨이수(=O)는 아직 그 최대수=1에 달하고 있지 않기 때문에, 상기와 동일하게 하여, 섹터 ID=0이 기억되어 있는 4 웨이의 캐시 블록 중 하나가 치환되어(추출되어), 하나만 섹터 ID=1의 웨이가 된다.
도시하지 않지만, 이 후, 섹터 ID=1이 부가된 메모리 액세스 요구(308)가 발생하여도, 상기 섹터 ID=1이 기억된 1 웨이의 캐시 블록이 잇달아 치환될 뿐이고, 섹터 ID=1이 기억된 웨이는 1 웨이 이상으로는 증가하지 않는다. 한편, 섹터 ID=0이 부가된 메모리 액세스 요구(308)가 발생하면, 상기 섹터 ID=1이 기억된 캐시 블록은 섹터 ID=0의 메모리 액세스 요구(308)로 곧 치환되어 추출되어 버린다.
이상과 같이 하여, 제4 실시형태에 의해, 소위 최약 웨이 방식과 동등한 기능을 실현하는 것이 가능해진다.
제5 실시형태
도 10은 제2 실시형태에서 나타낸 치환 웨이 제어 회로의 한층 더한 개량 형태에 관한 제5 실시형태의 구성도이다.
도 10의 구성에 있어서, 도 3의 구성 또는 도 4의 구성과 동일한 번호가 부가된 부분은 제1 또는 제2 실시형태의 경우와 동일한 기능을 갖는다.
도 10의 구성이 도 4의 구성과 다른 점은, 치환 섹터 ID 결정 회로(401)에 대해 메모리 액세스 요구(308)에 부가되는 섹터 ID(302)의 값에 따라, 치환 섹터 ID 결정 회로(401)의 출력(406) 혹은 고정값(1001) 중 어느 하나를 선택하여, 치환 섹터 ID(1003)로서 출력하는 셀렉터(1002)가 더 추가된 점이다.
이 추가된 기능에 의해, 예컨대, 고정값(1001)이 값 O이 된 경우에 있어서, 섹터 ID=1이 지정된 경우에는, 최대 웨이수에 기초하여 섹터 ID=0 또는 섹터 ID=1 중 어느 하나의 캐시 웨이를 치환할지가 치환 섹터 ID 결정 회로(401)에 의해 결정되고, 셀렉터(1002)에 의해 그 결과가 치환 섹터 ID(406)로서 출력된다. 이에 비해, 섹터 ID=0이 지정된 경우에는, 셀렉터(1002)에 의해, 반드시 섹터 ID=0(자섹터 ID와 동일한 값)이 치환 대상이 되는 기능이 실현된다.
사용자는, 예컨대 처음에는 고정값(1001)을 설정하지 않고 제2 실시형태의 동작을 행하여, 그 후의 어떠한 타이밍에서도, 프로그램으로부터 고정값(1001)=「O」을 설정함으로써, 그 이후는 섹터 ID=1인 캐시 블록은 최대 웨이수와의 관련에 의해 섹터 ID=0가 기억된 캐시 블록의 데이터를 치환하여 늘릴 수 있지만, 섹터 ID=0인 캐시 블록에 대해서는 섹터 ID=1이 기억된 캐시 블록의 데이터를 치환하여 늘려질 수 없는 제어 상황을 생성할 수 있다.
이와 같이 하여, 섹터 ID=1의 영역은 섹터 ID=1이 부가된 메모리 액세스 요구(308)로 필요에 따라 증가시킬 수 있지만, 섹터 ID=0의 영역은, 일단 섹터 ID=1의 영역으로 치환되어 버리면, 섹터 ID=0의 메모리 액세스 요구(308)에 의해서도 증가시킬 수 없도록 설정할 수 있다.
제6 실시형태
다음으로, 제6 실시형태에 대해 설명한다.
도 11은 도 1 또는 도 2의 캐시 메모리(101)의 구성에 있어서, 섹터 ID가 1비트가 아닌 2비트로 구성되고, 0∼3의 3치를 취하는 경우의, 도 4에 나타내는 치환 섹터 ID 결정 회로(401)에 상당하는 구성예를 나타낸 도면이다.
제6 실시형태에서는, 하기의 6개의 레지스터가 접속된다.
·섹터 0용 최대 웨이수 레지스터(1101)
·섹터 1용 최대 웨이수 레지스터(1102)
·섹터 2용 최대 웨이수 레지스터(1103)
·현재 섹터 0의 웨이수 레지스터(1104)
·현재 섹터 1의 웨이수 레지스터(1105)
·현재 섹터 2의 웨이수 레지스터(1106)
섹터 0용 최대 웨이수 레지스터(1101), 섹터 1용 최대 웨이수 레지스터(1102) 및 섹터 2용 최대 웨이수 레지스터(1103)에는, 각 캐시 블록에 있어서, 섹터 ID로서 각각 값 0, 값 1 및 값 2를 설정할 수 있는 최대 웨이수가 설정된다. 이들의 레지스터값은 프로그램으로부터 설정 가능하다.
다음으로, 현재 섹터 0의 웨이수 레지스터(1104), 현재 섹터 1의 웨이수 레지스터(1105) 및 현재 섹터 2의 웨이수 레지스터(1106)에는, 메모리 액세스 요구의 어드레스 내의 인덱스에 의해 어떤 블록 번호가 지정되었을 때에, 섹터 ID RAM(203)(도 2 참조)으로부터 판독되는 섹터 ID 값 0이 설정되어 있는 비트수(웨이수)와, 섹터 ID 값 1이 설정되어 있는 비트수(웨이수)와, 섹터 ID 값 2가 설정되어 있는 비트수(웨이수)가 각각 카운트되어 설정된다.
이상의 6개의 레지스터(1101∼1106)는 예컨대 도 12에 나타낸 바와 같이, 각각 3비트로 구성되어 있고, 0으로부터 4(최대 웨이수)까지의 값을 취한다.
도 11에 있어서, 메모리 액세스 요구에 섹터 ID=0이 지정되어 있는 경우에, 셀렉터(1108)는 섹터 0용 최대 웨이수 레지스터(1101)의 출력을, 셀렉터(1109)는 현재 섹터 0의 웨이수 레지스터(1104)의 출력을 각각 선택하고, 이들을 비교기(1110)에 입력한다. 또한, 메모리 액세스 요구에 섹터 ID=1이 지정되어 있는 경우에, 셀렉터(1108)는 섹터 1용 최대 웨이수 레지스터(1102)의 출력을, 셀렉터(1109)는 현재 섹터 1의 웨이수 레지스터(1105)의 출력을 각각 선택하고, 이들을 비교기(1110)에 입력한다. 또한, 메모리 액세스 요구에 섹터 ID=2가 지정되어 있는 경우에, 셀렉터(1108)는 섹터 2용 최대 웨이수 레지스터(1103)의 출력을, 셀렉터(1109)는 현재 섹터 2의 웨이수 레지스터(1106)의 출력을 각각 선택하고, 이들을 비교기(1110)에 입력한다.
이 결과, 비교기(1110)의 동작은, 메모리 액세스 요구에 의해 지정된 섹터 ID 값에 관해, 최대 웨이수와 현재 웨이수를 비교한다. 현재 웨이수가 최대 웨이수보다도 작으면, 메모리 액세스 요구에 부가되는 섹터 ID(1107)와 동일한 섹터 ID를 선택시키는 것을 지시하는 예컨대 값 0의 자/타 선택 신호(1111)를 출력하고, 현재의 웨이수가 최대 웨이수 이상인 경우에는, 메모리 액세스 요구에 부가되는 섹터 ID(1107) 이외의 섹터 ID를 선택시키는 것을 지시하는 예컨대 값 1의 자/타 선택 신호(1111)를 출력한다.
도 13은 제6 실시형태에 있어서, 도 3 또는 도 4의 치환 웨이 선택 가능 마스크 생성 회로(303) 및 치환 웨이 선택 회로(304)에 상당하는 구성예를 도시한 도면이다.
동일 섹터 ID 마스크 생성 회로(1303)는 메모리 액세스 요구에 부가되는 섹터 ID(1303)와, 섹터 ID RAM(203)의 상기 블록 번호로부터 판독된 섹터 ID 정보(1302)의 각 섹터 ID 값을 비교하여, 일치=1/불일치=0의 마스크 비트열(4비트)을 생성한다.
셀렉터(1304)는 도 11에 도시되는 비교기(1110)가 출력하는 자/타 선택 신호(1111)가 자섹터 ID를 선택하는 것을 지시하는(예컨대 값 0) 경우에는, 동일 섹터 ID 마스크 생성 회로(1303)가 출력하는 4비트의 마스크 비트열을 그대로 선택하여 출력한다. 또한, 자/타 선택 신호(1111)가 타섹터 ID를 선택하는 것을 지시하는(예컨대 값 1) 경우에는, 동일 섹터 ID 마스크 생성 회로(1303)가 출력하는 4비트의 마스크 비트열을 인버터(1305)로 비트마다 반전시켜 얻어지는 4비트의 비트열을 선택하여 출력한다.
LRU 선택 회로(1306)는 LRU 알고리즘에 따라, 입력되는 4비트의 비트열의 값 1 중 어느 하나를 선택하여, 치환 웨이(1307)로서 출력한다. 이것은 도 4의 치환 웨이(310)에 대응하는 신호이고, 캐시 메모리(101) 상의 대응 블록 번호에 있어서 치환되어야 하는 캐시 웨이를 지정한다.
이상 설명한 제6 실시형태에 의해, 캐시 메모리(101)에 대한 치환 제어를, 사용자가 프로그램에 의해 보다 다단계로 제어하는 것이 가능해진다.
실시형태에 대한 보충
이상 설명한 실시형태에서는, 메모리 액세스 요구는, 사용자 프로그램에 의해 발행되는 것을 전제로서 설명했지만, 캐시 라이트백 방식의 시스템이나 복수 프로세서에 대응하여 복수 캐시 메모리를 갖는 것과 같은 시스템에 있어서, 하드웨어가 캐시 메모리에 대해 자동적으로 발행하는 메모리 액세스 요구에 대해서도, 완전히 동일한 기능을 실현할 수 있다.
이상의 실시형태에 관해, 이하의 부기를 더 개시한다.
(부기 1)
각 세트가 2개 이상의 캐시 웨이로 구성되어 세트 어소시어티브 방식에 기초하여 동작하고, 캐시 미스의 발생 시에 결정된 치환 웨이에 대응하는 상기 캐시 웨이의 캐시 블록의 데이터를 치환하는 캐시 동작을 행하는 캐시 메모리에 있어서,
메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응시켜, 상기 각 캐시 웨이의 치환 상태를 제어하기 위해 정의되어 2개 이상의 논리값을 취할 수 있는 섹터 ID 정보를 기억하는 섹터 ID 정보 기억 수단과,
상기 캐시 미스의 발생 시에, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 섹터 ID 정보에 기초하여, 상기 치환 웨이의 후보인 치환 웨이 후보를 결정하는 치환 웨이 후보 결정 수단과,
상기 치환 웨이 후보로부터 상기 치환 웨이를 선택하여 출력하는 치환 웨이 선택 수단과,
상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 치환 웨이에 의해 지정되는 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 상기 섹터 ID 정보를, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보에 의해 갱신하는 섹터 ID 정보 갱신 수단
을 포함하는 것을 특징으로 하는 섹터 기능이 있는 캐시 메모리.
(부기 2)
상기 섹터 ID 정보의 각 논리값마다 할당할 수 있는 캐시 웨이의 최대값을 최대 웨이수로서 지정하는 최대 웨이수 지정 수단과,
상기 캐시 미스의 발생 시에, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 섹터 ID 정보 중, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보를 갖는 캐시 웨이의 수와, 상기 최대 웨이수 지정 수단에 의해 지정되는 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보의 최대 웨이수를 비교하는 비교 수단
을 더 포함하고,
치환 웨이 후보 결정 수단은, 상기 캐시 미스의 발생 시에, 상기 비교 수단에 의한 비교 결과에 따라, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 섹터 ID 정보 중, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보 이외의 섹터 ID 정보가 기억되어 있는 캐시 웨이군이나, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보가 기억되어 있는 상기 캐시 웨이군 중 어느 하나의 군을, 상기 치환 웨이 후보로서 결정하는 것을 특징으로 하는 부기 1에 기재한 섹터 기능이 있는 캐시 메모리.
(부기 3)
상기 최대 웨이수 지정 수단은, 상기 섹터 ID 정보의 각 논리값마다의 최대 웨이수의 합계수가 상기 캐시 메모리에서의 상기 캐시 웨이수보다도 커지도록, 상기 섹터 ID 정보의 각 논리값마다의 최대 웨이수를 설정할 수 있는 것을 특징으로 하는 부기 2에 기재한 섹터 기능이 있는 캐시 메모리.
(부기 4)
상기 치환 웨이 후보 결정 수단은, 상기 캐시 미스의 발생 시에, 사용자에 의해 지정된 섹터 ID 정보의 소정값에 대해서는, 상기 비교 수단에 의한 비교 결과는 판정하지 않고, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 섹터 ID 정보 중, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보가 기억되어 있는 상기 캐시 웨이군을 상기 치환 웨이 후보로서 결정하는 것을 특징으로 하는 부기 2에 기재한 섹터 기능이 있는 캐시 메모리.
(부기 5)
상기 섹터 ID 정보 갱신 수단은, 상기 메모리 액세스 요구에 의해 캐시 히트가 발생했을 때에, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상 기 치환 웨이에 의해 지정되는 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 상기 섹터 ID 정보를 상기 메모리 액세스 요구에 부가된 섹터 ID 정보에 의해 갱신하는 것을 특징으로 하는 부기 1 내지 4 중 어느 하나에 기재한 섹터 기능이 있는 캐시 메모리.
(부기 6)
상기 섹터 ID 정보는 2개의 논리값을 취할 수 있는 것을 특징으로 하는 부기 1 내지 5 중 어느 하나에 기재한 섹터 기능이 있는 캐시 메모리.
(부기 7)
상기 섹터 ID 정보는 3개 이상의 논리값을 취할 수 있는 것을 특징으로 하는 하는 부기 1 내지 5 중 어느 하나에 기재한 섹터 기능이 있는 캐시 메모리.
도 1은 본 발명의 실시형태의 캐시 메모리의 기능 구성도.
도 2는 본 발명의 실시형태의 캐시 메모리의 하드웨어 구성도.
도 3은 치환 웨이 제어 회로에 관한 제1 실시형태의 구성도.
도 4는 치환 웨이 제어 회로의 개량 형태에 관한 제2 실시형태의 구성도.
도 5는 제2 실시형태에 있어서의 레지스터의 구성도.
도 6은 제2 실시형태의 동작예를 도시하는 도면.
도 7은 히트웨이 제어 회로에 관한 제3 실시형태의 구성도.
도 8은 제3 실시형태의 동작예를 도시하는 도면.
도 9는 제4 실시형태의 동작 설명도.
도 10은 치환 웨이 제어 회로의 한층 더한 개량 형태에 대한 제5 실시형태의 구성도.
도 11은 제6 실시형태의 구성도(제1 도).
도 12는 제6 실시형태에 있어서의 레지스터의 구성도.
도 13은 제6 실시형태의 구성도(제2 도).
도 14는 세트 어소시어티브 방식의 캐시 메모리의 동작 개요를 도시한 도면.
도 15는 치환 웨이 선택 회로의 설명도.
<도면의 주요 부분에 대한 부호의 설명>
101, 1401: 캐시 메모리 102, 1402: 캐시 웨이
103, 1403: 캐시 블록 104, 1404: 비교기
105, 1405: 어드레스 201: 데이터 RAM
202: 태그 RAM 203: 섹터 ID RAM
204, 205, 305, 306, 307, 401-1, 401-2, 401-5, 1002, 1304: 셀렉터
301: 섹터 ID RAM(203)으로부터 판독되는 섹터 ID
302, 704: 요구에 부가되는 섹터 ID
303: 치환 웨이 선택 가능 마스크 생성 회로
303-1: 배타적 OR 회로(XOR) 303-2, 401-4, 1305: 인버터(INV)
304, 1501: 치환 웨이 선택 회로 308: 메모리 액세스 요구
309: 치환 웨이 후보 310, 1307: 치환 웨이
401: 치환 섹터 ID 결정 회로 401-3: 비교기
402, 1101: 섹터 0용 최대 웨이수 레지스터
403, 1102: 섹터 1용 최대 웨이수 레지스터
404, 1104: 현재 섹터 0의 웨이수 레지스터
405, 1105: 현재 섹터 1의 웨이수 레지스터
406, 1003: 치환 섹터 ID 701: 히트 웨이 갱신 회로
702: 히트 웨이 신호 703: 현섹터 ID 정보
705: 신(新)섹터 ID 정보 1001: 고정값
1103: 섹터 2용 최대 웨이수 레지스터
1106: 현재 섹터 2의 웨이수 레지스터
1301: 치환될 섹터 ID 1302: 섹터 ID 정보
1303: 동일 섹터 ID 마스크 생성 회로
1306: LRU 선택 회로

Claims (7)

  1. 각 세트가 2개 이상의 캐시 웨이로 구성되며 세트 어소시어티브 방식(set associative)에 기초하여 동작하고, 캐시 미스의 발생 시에 결정된 치환 웨이에 대응하는 상기 캐시 웨이의 캐시 블록의 데이터를 치환하는 캐시 동작을 행하는 캐시 메모리에 있어서,
    메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응시켜, 상기 각 캐시 웨이의 치환 상태를 제어하기 위해 정의되어 2개 이상의 논리값을 취할 수 있는 섹터 ID 정보를 기억하는 섹터 ID 정보 기억 수단과,
    상기 캐시 미스의 발생 시에, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 섹터 ID 정보에 기초하여, 상기 치환 웨이의 후보인 치환 웨이 후보를 결정하는 치환 웨이 후보 결정 수단과,
    상기 치환 웨이 후보로부터 상기 치환 웨이를 선택하여 출력하는 치환 웨이선택 수단과,
    상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 치환 웨이에 의해 지정되는 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 상기 섹터 ID 정보를 상기 메모리 액세스 요구에 부가된 섹터 ID 정보에 의해 갱신하는 섹터 ID 정보 갱신 수단
    을 포함하는 것을 특징으로 하는 섹터 기능이 있는 캐시 메모리.
  2. 제1항에 있어서,
    상기 섹터 ID 정보의 각 논리값마다 할당할 수 있는 캐시 웨이의 최대값을 최대 웨이수로서 지정하는 최대 웨이수 지정 수단과,
    상기 캐시 미스의 발생 시에, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 섹터 ID 정보 중, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보를 갖는 캐시 웨이의 수와, 상기 최대 웨이수 지정 수단에 의해 지정되는 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보의 최대 웨이수를 비교하는 비교 수단
    을 더 포함하고,
    상기 치환 웨이 후보 결정 수단은, 상기 캐시 미스의 발생 시에, 상기 비교 수단에 의한 비교 결과에 따라, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 섹터 ID 정보 중, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보 이외의 섹터 ID 정보가 기억되어 있는 캐시 웨이군이나, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보가 기억되어 있는 캐시 웨이군 중 어느 하나의 군을 상기 치환 웨이 후보로서 결정하는 것을 특징으로 하는 섹터 기능이 있는 캐시 메모리.
  3. 제2항에 있어서, 상기 최대 웨이수 지정 수단은, 상기 섹터 ID 정보의 각 논리값마다의 최대 웨이수의 합계수가 상기 캐시 메모리에서의 상기 캐시 웨이수보다도 커지도록 상기 섹터 ID 정보의 각 논리값마다의 최대 웨이수를 설정할 수 있는 것을 특징으로 하는 섹터 기능이 있는 캐시 메모리.
  4. 제2항에 있어서, 상기 치환 웨이 후보 결정 수단은, 상기 캐시 미스의 발생 시에, 사용자에 의해 지정된 섹터 ID 정보의 소정값에 대해서는, 상기 비교 수단에 의한 비교 결과는 판정하지 않고, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 각 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 섹터 ID 정보 중, 상기 메모리 액세스 요구에 부가된 섹터 ID 정보와 동일한 섹터 ID 정보가 기억되어 있는 상기 캐시 웨이군을 상기 치환 웨이 후보로서 결정하는 것을 특징으로 하는 섹터 기능이 있는 캐시 메모리.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 섹터 ID 정보 갱신 수단은, 상기 메모리 액세스 요구에 의해 캐시 히트가 발생했을 때에, 상기 메모리 액세스 요구에 의해 특정되는 상기 캐시 블록의 상기 치환 웨이에 의해 지정되는 캐시 웨이에 대응하여 상기 섹터 ID 정보 기억 수단에 기억되어 있는 상기 섹터 ID 정보를 상기 메모리 액세스 요구에 부가된 섹터 ID 정보에 의해 갱신하는 것을 특징으로 하는 섹터 기능이 있는 캐시 메모리.
  6. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 섹터 ID 정보는 2개의 논리값을 취할 수 있는 것을 특징으로 하는 섹터 기능이 있는 캐시 메모리.
  7. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 섹터 ID 정보는 3개 이상의 논리값을 취할 수 있는 것을 특징으로 하는 섹터 기능이 있는 캐시 메모리.
KR1020080089181A 2007-12-28 2008-09-10 섹터 기능이 있는 캐시 메모리 KR100971481B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2007341423A JP5217432B2 (ja) 2007-12-28 2007-12-28 セクタ機能付きキャッシュメモリ
JPJP-P-2007-00341423 2007-12-28

Publications (2)

Publication Number Publication Date
KR20090072933A true KR20090072933A (ko) 2009-07-02
KR100971481B1 KR100971481B1 (ko) 2010-07-21

Family

ID=40396952

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080089181A KR100971481B1 (ko) 2007-12-28 2008-09-10 섹터 기능이 있는 캐시 메모리

Country Status (5)

Country Link
US (1) US8583872B2 (ko)
EP (1) EP2075705B1 (ko)
JP (1) JP5217432B2 (ko)
KR (1) KR100971481B1 (ko)
CN (1) CN101470670B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101414035B1 (ko) * 2010-04-21 2014-07-01 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 저장 효율적인 섹터형 캐시

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
JP5413001B2 (ja) * 2009-07-09 2014-02-12 富士通株式会社 キャッシュメモリ
US8392658B2 (en) * 2009-07-10 2013-03-05 Apple Inc. Cache implementing multiple replacement policies
JP5609092B2 (ja) * 2009-12-09 2014-10-22 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP5557313B2 (ja) * 2010-03-05 2014-07-23 エヌイーシーコンピュータテクノ株式会社 キャッシュメモリ制御システム、その制御方法及び制御プログラム
JP6012263B2 (ja) * 2011-06-09 2016-10-25 株式会社半導体エネルギー研究所 半導体記憶装置
JP5565425B2 (ja) 2012-02-29 2014-08-06 富士通株式会社 演算装置、情報処理装置および演算方法
KR101789190B1 (ko) 2012-03-06 2017-11-20 한국전자통신연구원 스크래치 패드 메모리 구조를 이용한 캐시 및 이를 포함하는 프로세서
JP6149595B2 (ja) 2013-08-13 2017-06-21 富士通株式会社 キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
US9524242B2 (en) 2014-01-28 2016-12-20 Stmicroelectronics International N.V. Cache memory system with simultaneous read-write in single cycle
JP6248808B2 (ja) 2014-05-22 2017-12-20 富士通株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム
EP3230874B1 (en) * 2014-12-14 2021-04-28 VIA Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
US9811468B2 (en) * 2014-12-14 2017-11-07 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
EP3066572B1 (en) * 2014-12-14 2020-02-19 VIA Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
WO2016097805A1 (en) 2014-12-14 2016-06-23 Via Alliance Semicoductor Co., Ltd. Cache memory budgeted by ways on memory access type
EP3055775B1 (en) * 2014-12-14 2019-08-21 VIA Alliance Semiconductor Co., Ltd. Cache replacement policy that considers memory access type
KR102438552B1 (ko) 2015-02-04 2022-09-01 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작방법
CN104932990B (zh) * 2015-06-03 2018-05-11 华为技术有限公司 一种高速缓冲存储器中数据块的替换方法和装置
CN109614349B (zh) * 2018-12-11 2023-04-11 杭州阿姆科技有限公司 一种基于绑定机制的缓存管理方法
US11188465B1 (en) * 2020-09-02 2021-11-30 Shenzhen GOODIX Technology Co., Ltd. Cache memory replacement policy

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5133061A (en) 1987-10-29 1992-07-21 International Business Machines Corporation Mechanism for improving the randomization of cache accesses utilizing abit-matrix multiplication permutation of cache addresses
JPH0469751A (ja) * 1990-07-10 1992-03-04 Matsushita Electric Ind Co Ltd キャッシュ装置
JPH04175946A (ja) 1990-11-09 1992-06-23 Hitachi Ltd マルチプロセッサ・データ処理システムおよびそれに用いられるキャッシュ装置
US5966734A (en) 1996-10-18 1999-10-12 Samsung Electronics Co., Ltd. Resizable and relocatable memory scratch pad as a cache slice
JP3331592B2 (ja) * 1998-05-22 2002-10-07 日本電気株式会社 キャッシュメモリ
US6434668B1 (en) 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to store information in particular regions of the cache according to information-type
US6553457B1 (en) 2000-04-19 2003-04-22 Western Digital Technologies, Inc. Tag memory disk cache architecture
US6681295B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Fast lane prefetching
US6678792B2 (en) 2001-06-22 2004-01-13 Koninklijke Philips Electronics N.V. Fast and accurate cache way selection
US6789167B2 (en) 2002-03-06 2004-09-07 Hewlett-Packard Development Company, L.P. Method and apparatus for multi-core processor integrated circuit having functional elements configurable as core elements and as system device elements
US6990557B2 (en) 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
JP2004110240A (ja) * 2002-09-17 2004-04-08 Mitsubishi Electric Corp キャッシュメモリ装置
US6851030B2 (en) * 2002-10-16 2005-02-01 International Business Machines Corporation System and method for dynamically allocating associative resources
JP4753549B2 (ja) * 2004-05-31 2011-08-24 パナソニック株式会社 キャッシュメモリおよびシステム
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7284094B2 (en) * 2005-02-09 2007-10-16 International Business Machines Corporation Mechanism and apparatus allowing an N-way set associative cache, implementing a hybrid pseudo-LRU replacement algorithm, to have N L1 miss fetch requests simultaneously inflight regardless of their congruence class
US7610448B2 (en) * 2006-12-27 2009-10-27 Intel Corporation Obscuring memory access patterns

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101414035B1 (ko) * 2010-04-21 2014-07-01 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 저장 효율적인 섹터형 캐시
US8874849B2 (en) 2010-04-21 2014-10-28 Empire Technology Development Llc Sectored cache with a tag structure capable of tracking sectors of data stored for a particular cache way

Also Published As

Publication number Publication date
JP5217432B2 (ja) 2013-06-19
US8583872B2 (en) 2013-11-12
EP2075705A1 (en) 2009-07-01
KR100971481B1 (ko) 2010-07-21
EP2075705B1 (en) 2014-12-03
CN101470670A (zh) 2009-07-01
US20090172289A1 (en) 2009-07-02
JP2009163450A (ja) 2009-07-23
CN101470670B (zh) 2011-12-14

Similar Documents

Publication Publication Date Title
KR100971481B1 (ko) 섹터 기능이 있는 캐시 메모리
JP4098347B2 (ja) キャッシュメモリおよびその制御方法
KR100382395B1 (ko) 컴퓨터메모리에정보를기억하는방법및장치
US6438655B1 (en) Method and memory cache for cache locking on bank-by-bank basis
US7321954B2 (en) Method for software controllable dynamically lockable cache line replacement system
KR102546238B1 (ko) 다중 테이블 분기 타겟 버퍼
KR20000069836A (ko) 로킹을 사용한 캐시 대체방법
US20110167224A1 (en) Cache memory, memory system, data copying method, and data rewriting method
US10423534B2 (en) Cache memory
US11288209B2 (en) Controlling cache entry replacement based on usefulness of cache entry
JP3812258B2 (ja) キャッシュ記憶装置
JP4008947B2 (ja) キャッシュメモリ及びその制御方法
JP4009306B2 (ja) キャッシュメモリおよびその制御方法
US7219197B2 (en) Cache memory, processor and cache control method
US20030033484A1 (en) Method for reducing false hits in a non-tagged, n-way cache
US20070028055A1 (en) Cache memory and cache memory control method
JP3890910B2 (ja) 命令の実行結果予測装置
US8108611B2 (en) Cache memory system
JP3813393B2 (ja) キャッシュメモリの制御方法及び情報処理装置
US5636365A (en) Hierarchical buffer memories for selectively controlling data coherence including coherence control request means
JP5224959B2 (ja) キャッシュシステム
JPH0659977A (ja) 明示的なライン置換え操作が可能なキャッシュメモリとその制御方法
US20210149813A1 (en) Data write system and method
JP2001005725A (ja) キャッシュ記憶装置
JPH10207767A (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: 20130621

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140626

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee