KR100190351B1 - 2-레벨 캐시 메모리의 방해 감소장치 및 방법 - Google Patents

2-레벨 캐시 메모리의 방해 감소장치 및 방법 Download PDF

Info

Publication number
KR100190351B1
KR100190351B1 KR1019900021312A KR900021312A KR100190351B1 KR 100190351 B1 KR100190351 B1 KR 100190351B1 KR 1019900021312 A KR1019900021312 A KR 1019900021312A KR 900021312 A KR900021312 A KR 900021312A KR 100190351 B1 KR100190351 B1 KR 100190351B1
Authority
KR
South Korea
Prior art keywords
cache
cache memory
address
memory
data
Prior art date
Application number
KR1019900021312A
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 피셔, 아더 더블유.
Application granted granted Critical
Publication of KR100190351B1 publication Critical patent/KR100190351B1/ko

Links

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/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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies

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

멀티프로세서 컴퓨터 시스템에서, 다수의 프로세서는 공유 메모리 버스에 의해 메인 메모리에 접속되고, 그리고 프로세서의 하나 이상은 2-레벨 직접 맵 캐시 메모리를 갖는다. 어떤 하나의 프로세서가 어드레스 공간의 공유 부분의 데이타를 갱신할 때, 캐시 검사요구 신호가 공유 데이타 버스에 전달되고, 그것은 필요한 경우 모든 캐시 메모리가 그들의 내용을 갱신하게 한다. 두 캐시는 직접 맵화되기 때문에 제1의 캐시에 기억된 각각의 데이타 라인은 또한 제2의 캐시의 블록들 중 하나에 기억된다. 각각의 캐시는 지정된 어드레스 위치가 언제 그것의 라인들 또는 블록들 중 하나에 기억되어 있는가를 결정하기 위한 제어로직을 갖는다. 캐시 검사가 실행될 때 제1의 레벨 캐시에 대한 의사 액세스를 피하기 위해 제2의 캐시는 상기 제1의 캐시 어레이의 각각의 라인에 대한 포인터를 기억하는 특별한 테이블을 갖는다. 이 포인터는 제1의 캐시의 상응하는 라인에 기억되는 것과 동일한 데이타를 기억하는 제2의 캐시의 블록을 나타낸다. 제2의 캐시의 제어로직이 캐시검사를 위한 지정된 어드레스가 제2의 캐시에 위치되어 있다는 것을 나타낼 때 조사회로는 지정된 어드레스에 상응하는 특별한 테이블의 포인터를 지정된 어드레스의 비트의 서브세트와 비교한다. 만일 상기 두개가 일치한다면, 그때 지정된 어드레스는 제1의 캐시에 위치되고, 그리고 제1의 캐시는 갱신된다.

Description

2-레벨 캐시 메모리의 방해 감소장치 및 방법
제1도는 다수의 프로세서가 2 레벨 캐시를 갖는 멀티프로세서 컴퓨터 시스템의 블록 다이아그램.
제2도는 2 레벨 캐시의 제1의 바람직한 실시예의 블록 다이아그램.
제3a 및 3b도는 본 발명의 2 바람직한 실시예에 대한 어드레스 비트의 배치를 나타내는 도면.
제3c도는 바람직한 실시예의 공유 메모리 버스의 구성요소를 나타내는 도면.
제4도는 2 레벨 캐시의 제2의 바람직한 실시예의 블록 다이아그램.
* 도면의 주요부분에 대한 부호의 설명
100 : 멀티프로세서 시스템 112 : 메모리 버스
200 : 로컬(local)버스 220 : 고속 메모리 어레이
230 : 고속 태그 메모리 240 : 중속 메모리 어레이
250 : 태그 메모리 280 : 인터페이스
290 : 버스 버퍼 302 : 고속 메모리 어레이
304 : 유효플래그 305 : 엔트리
306 : 포인터 310 : 비교기
본 발명은 일반적으로 캐시 코히어런스를 요구하는 멀티프로세서 시스템에 캐시 메모리를 이용하는 것에 관한 것이고, 특별하게는 2 레벨 캐시 메모리를 이용할 때 멀티프로세서 시스템에서 캐시 코히어런스를 유지하기 위한 시스템 및 방법에 관한 것이다.
몇몇 멀티프로세서 시스템에서, 시스템의 프로세서는 공유 메모리를 갖는바, 이것은 다수의 프로세서의 어드레스 공간(space)이 겹쳐진다는 것을 의미한다. 만일 프로세서들이 캐시 메모리를 이용한다면, 특별한 메모리 블록의 다수의 카피(copy)가 상이안 프로세서의 캐시에 동시에 존재할 수 있게 된다. 캐시 코히어런스를 유지한다는것은 데이타가 하나의 프로세서에 의해 공유 어드레스 공간의 지정된 위치에 기입될 때 마다 시스템은 그 동일한 메모리 위치가 어떤 다른 프로세서의 캐시에 기억되어 그 캐시를 갱신할 것인지 플래그(flag)할 것인지를 결정하는 것을 의미한다. 예컨대, 문헌(Thacher, Stewart 및 Satterthwaite, Jr., Firefly : A Multiprocessor Workstation, IEEE Transactions on Computer, 권 37, No. 8, 페이지 909-920 (8월 1988); 그리고, Thacker, Charles P., Cache Strategies for Shared-Memory Multiprocessors, New Frontiers in Computer Architecture Conference Proceedings, Citicorp/TTI (3월 1986))을 참고할 수 있으며, 또한 상기 언급된 문헌의 내용이 본 명세서에 참고로 삽입된다.
본 발명은 좀 더 상세하게 2-레벨 캐시를 이용하는 시스템에 관한 것이다. CPU(중앙처리장치)의 속도가 증가할수록 컴퓨터는 더욱 더 2-레벨 캐시를 이용하고 있다. 2-레벨 캐시에서 제1 레벨 캐시는 작지만 매우 빠르고 CPU의 메모리 참조의 대부분을 CPU 속도로 공급하도록 설계되었다. 고성능의 CPU에서 CPU와 메인 메모리간의 속도 불균형이 매우 크기 때문에(때로는 100 : 1 정도), 크지만 다소 느린 제2 레벨 캐시가 제1의 레벨 캐시와 메인 메모리 시스템 사이에 배치된다. 제1 레벨 캐시는 제2 레벨 캐시의 정보의 서브세트(subset)를 포함한다.
제1도는 멀티프로세서 시스템(100)의 기본구성을 나타낸다. 이 시스템(100)은 다수의 CPU(102, 104, 106)와 입/출력 프로세서(108)를 갖고, 이들 모두는 크지만 다소 느린 메인 메모리(110)에 공유 메모리 버스(112)에 의해 연결된다. 각각의 CPU는 작지만 매우 빠른 제1 레벨 캐시(120)와 이 제1 레벨 캐시(122)보다 크지만 다소 느린 제2 레벨 캐시를 갖는다.
소위 10 수법(rule of 10)을 이용하면, 제1 레벨 캐시(120)는 통상 제2의 캐시(122)보다 약 10배 정도 빠르고, 크기는 제2의 캐시(122)의 약 1/10정도이다. 유사하게, 제2 레벨 캐시(122)는 통상 메인 메모리(110)보다 약 10배정도 빠르고, 크기는 메인 메모리(110)의 1/10정도이다. 물론, 이 비율은 단지 근사치이다. 캐시와 메인 메모리는 2의 누능과 동일한 크기를 갖기 때문에(예컨대, 캐시는 16K 또는 64K 바이트, 그리고 메인 메모리는 128Meg), 캐시 및 메인 메모리 크기의 실제 비율은 보통(4, 8, 16 또는 32와 같은) 2의 인수들일 것이다. 예컨대, 1 레벨 캐시(120)는 16K 바이트의 크기와 10 나노초의 액세스 속도를 가질 것이고, 제2 레벨 캐시는 256K 바이트의 크기와 100 나노초의 액세스 시간을 가질 것이고, 그리고 메인 메모리는 4,096K 바이트의 크기와 500 나노초의 액세스 시간을 가질 것이다.
CPU(104)와 그것의 캐시(120, 122)를 생각해보자, 시스템의 어딘가 다른 곳(예컨대, 입/출력 프로세서(108))에서의 사건에 의해 제2 레벨 캐시(122)의 엔트리가 무효로 되거나 새로운 데이타로 갱신되는 경우, 이 엔트리가 또한 제1 레벨 캐시(120)에 기억되어 있는가의 여부를 결정할 필요가 있다. 제1 레벨 캐시(120)는 제2 레벨 캐시(122)보다 매우 작기 때문에, 제1 레벨 캐시(120)에는 정보가 존재하지 않는 것이 보통이다. 아울러, 데이타 엔트리의 존부를 결정하기 위한 제1 레벨 캐시의 액세스는 CPU(140)에 의한 액세스에 지장을 주며 전체 시스템 성능을 감소시킨다.
본 발명은 제2 레벨 캐시의 제어 로직으로 하여금 데이타가 제1 레벨 캐시에 존재하는지의 여부를 결정하게 하여 제1 레벨 캐시에 대한 쓸데없는 액세스를 피할 수 있게 한다.
본 발명은 멀티프로세서 컴퓨터 시스템의 프로세서를 위한 2-레벨 캐시 메모리이다. 다수의 프로세서는 공유 메모리 버스에 의해 메인 메모리에 접속되고, 이 프로세서들 중 하나 이상은 2 레벨 직접 맵(directed map) 캐시 메모리를 갖는다. 아울러, 컴퓨터 시스템의 어드레스 공간의 적어도 일부는 이 프로세서들에 의해 공유된다. 어떤 하나의 프로세서가 상기 어드레스 공간의 공유된 부분에서 데이타를 갱신할 때, 상응하는 신호들은 공유 데이타 버스에 전달되고, 이것은 필요하다면 모든 캐시 메모리가 그들의 내용을 갱신하게 한다.
2-레벨 캐시 메모리는 작지만 매우 빠른 제1 레벨 캐시와 제1 레벨 캐시보다는 느리지만 메인 메모리보다는 훨씬 빠른 큰 제2의 캐시를 포함한다. 이 2 캐시는 직접 맵화되고, 제1의 캐시에 기억되는 각각의 데이타 라인은 또한 제2의 캐시의 블록들 중 하나에 기억된다. 그리고, 각각의 캐시는 지정된 어드레스(즉, 메모리 위치)가 그것의 라인 또는 블록들 중 하나에 언제 기억되는지를 결정하기 위한 제어 로직을 갖는다.
본 발명의 목적은 만일 갱신된 위치가 사실상 제1의 캐시에 기억되어 있지 않다면 제1의 캐시에 대한 불필요한 코히어런스 체킹 액세스는 프로세서에 의한 액세스를 방해하고 사스템의 성능을 감소시키기 때문에 캐시 코히어런스 검사를 위한 제1 레벨 캐시를 액세스하는 것을 피하는 데 있다.
캐시 검사가 실행될 때 제1 레벨 캐시에 대한 의사 액세스를 피하기 위해, 본 발명은 캐시 검사에 의해 갱신되고 있는 지정된 위치가 제1의 캐시에 위치되어 있는지의 여부를 결정하기 위한 부가적 하드웨어를 갖는 제2의 캐시를 제공한다. 특별하게, 제2의 캐시는 제1의 캐시의 각각의 라인에 대한 포인터를 기억하는 특별한 테이블(즉, 메모리 어레이)을 함한다. 이 포인터는 상응하는 제1의 캐시의 라인에 기억된 것과 동일한 데이타를 기억하고 있는 제2의 캐시의 블록을 나타낸다.
제2의 캐시의 제어로직이 지정된 어드레스가 제2의 캐시에 위치되어 있다는 것을 나타낼 때, 제2의 캐시 메모리의 조사 회로는 지정된 어드레스의 미리 정해진 부분을 지정된 어드레스에 상응하는 특별한 테이블의 포인터들과 비교한다. 만일 2개가 합치되면, 지정된 어드레스는 제1의 캐시에 위치되고, 그리고, 제1의 캐시는 갱신된다.
제1도에는 다수의 프로세서가 2-레벨 캐시를 갖는 멀티프로세서 컴퓨터 시스템이 도시되어 있다. 2-레벨 캐시를 갖는 동기는 다음과 같다. 단일 레벨 캐시를 통해 메모리에 연결되는 CPU에 의해 이루어지는 메모리 참조를 위한 효과적인 (즉, 평균적인) 액세스 시간 Tacc는
Tacc =(Tcache1* h1)+Tmemory * (1-h1)
이다. 여기서, Tcache1은 캐시의 액세스 시간이고, Tmemory는 메인 메모리의 액세스 시간이고, 그리고 h1은 액세스가 캐시에 포함하는 (또는 적중하는) 시간의 분수이다. h1은 때로는 적중률이라고도 불린다. CPU가 2-레벨 캐시를 통해 메모리에 연결되는 경우에는, CPU에 의해 이루어지는 메모리 참조를 위한 효과적인 (즉, 평균적인) 액세스 시간 Tacc는
Tcc =(Tcache1* h1+(1-h1)(Tcache2* h2+Tmemory * (1-h2))
이다. 여기서, Tcache1은 제1의 (고속) 캐시의 액세스 시간이고, Tcache2 제2의 보다 느린 캐시의 액세스 시간이고, Tmemory는 메인 메모리의 액세스 시간이고, h1는 제1의 캐시의 적중률이고 그리고 h2는 제2의 캐시의 적중률이다.
Tcache1는 통상 CPU 사이클의 1배 또는 2배인 반면, Tmemory는 빠른 CPU를 갖는 시스템의 몇백배의 사이클일 수 있다. 전체적인 시스템을 설계하는 목표는 캐시의 실질적 및 경제적 이행을 제공하는 한편 Tacc를 최소화하기 위한 것이다. 고성능 시스템에서, 이것은 제1 레벨이 제2 레벨 캐시보다 훨씬 더 적은 2-레벨 캐시를 제공함으로써 실행될 수 있다. 제1의 캐시의 작은 사이즈는 제1의 캐시의 적중률(h1)로 하여금 0.8 정도로 작게 되게 할 것이고, 제2 캐시의 적중률(h2)은 1.0에 매우 가까와질 것이다. 제1 레벨 캐시는 빠르고 값이 싸질 수 있도록 작아야만 하고, 제2 레벨 캐시는 작은 캐시의 실수가 메인 메모리 액세스의 큰 시간 결점을 좀처럼 초래하지 않도록 커야만 한다.
멀티프로세서 시스템에서, 또는 입/출력 장치가 메인 메모리에 데이타를 기록할 수 있는 시스템에서, 캐시 코히어런스를 유지하는 것은 실행된 각각의 메모리 갱신이 그 캐시에 저장된 데이타에 영향을 미칠지의 여부를 각각의 시스템의 캐시가 결정할 수 있을 것을 요구한다. 예컨대, 제1도에서, 메모리 위치가 프로세서(102), (104), (106) 또는 (108) 중 어느 것에 의해 갱신될 때마다, 메모리 버스(112)는 갱신되고 있는 데이타의 어드레스(즉, 위치)를 나타내는 신호를 운반하고, 이것은 나머지 프로세서의 캐시들이 현재 지정된 위치에 데이타를 기억하고 있는지를 그들이 결정하게 된다. 다시말해, 각각의 프로세서의 캐시들은 메모리 버스(112)를 감시하고, 캐시 코히어런스를 유지하기 위해 필요할 때면 그들의 내용을 갱신한다.
2-레벨 캐시 시스템에서, 제2 레벨 캐시는 CPU(104)와 메모리 버스(112)에 의해 공유되는 자원으로 간주될 수 있다. CPU(104)는 제2의 레벨 캐시(122)를 이용해 제1 레벨 캐시(120)에서 발견되지 않는 메모리 위치에 대한 메모리 참조를 만족시키고, 그리고 메모리 버스(112)는 캐시 코히어런스를 유지하기 위해 제2 레벨 캐시(122)를 이용한다. 따라서, 메모리 버스(122)와 CPU(104)는 제2 레벨 캐시(122)의 이용을 서로 경쟁한다. 바람직한 실시예에서, 메모리 버스(112)의 타이밍 요건은 제2 레벨 캐시(122)를 액세스하려고 할 때 메모리 버스(112)가 CPU(104)보다 절대적인 우위를 가질 것은 요구한다.
아울러, 2-레벨 캐시가 이용되는 고성능 컴퓨터 시스템 타입에서, 제1 레벨 캐시(120)는 흔히 CPU(104)의 일부로서 제조된다는 것에 주의해야 한다. 즉, CPU(104)와 제1 레벨 캐시(120)는 신호 지연을 최소화하기 위해 그리고 제1 레벨 캐시(120)가 하나의 CPU 사이클에서 CPU(104)에 의해 액세스 될 수 있도록 동일한 실리콘 다이상에서 형성된다.
각각의 제2 레벨 캐시(122)의 관점에서, 메모리 기입동작에 관련된 메모리 버스(112)상의 신호는 만일 지정된 위치가 현재 캐시에 기억되어 있다면 캐시 갱신요구-즉, 캐시(122)의 내용을 갱신 또는 무효로 하기 위한 요구로서 판단될 수 있다. 그러한 요구로 인해 캐시의 데이타가 갱신될 것인가 또는 무효로 될 것인가에 대한 것은 디자인 선택의 문제이다. 본 발명의 목적으로, 우리는 기억된 데이타를 교체하거나 그것을 무효로 한다는 것을 나타내는 캐시의 내용을 갱신한다라는 용어를 이용할 것이다. 왜냐하면, 어느 한 경우에 캐시의 내용은 지정된 위치가 캐시에서 기억되어 있다면 변화되기 때문이다.
예컨대, 바람직한 실시예에서 이용되는 캐시 갱신 프로토콜은 다음과 같이 작용한다. 어떤 프로세서에 의해 메모리 위치가 갱신될 때마다, 그 갱신된 위치의 어드레스는 공유 메모리 버스(122)에 전송된다. 각각의 제2 레벨 캐시들은 전송된 어드레스를 그들의 태그 메모리와 비교하여 지정된 위치가 캐시에서 기억되어 있는가를 결정한다. 만일 그렇다면, 전체 데이타의 블록이 그 캐시에 로딩되어 제2 레벨 캐시는 유효한 데이타를 포함하게 된다. 아울러, 만일 그 위치가 제1 레벨 캐시에 기억되어 있다면, 제1 레벨 캐시의 상응하는 라인(들)은 무효한 것으로 표시된다. 다음, CPU가 무효한 것으로 표시된 라인의 위치를 액세스하려고 할 때, 그 라인은 제2 레벨 캐시로부터 제1 레벨 캐시로 로딜될 것이다.
본 발명의 다른 실시예에서, 상응하는 메모리 위치가 갱신될 때마다 제2 레벨 캐시의 블록을 단순히 무효로 하는 것이 바람직할 수 있다. 바람직한 실시예에서, 사용되는 메모리 버스가 매우 넓기 때문에 캐시의 블록을 갱신하는 것은 비교적 쉽다. 캐시 갱신 프로토콜에 대한 더 많은 정보를 알기 위해, 상기 참고로 인용된 공유 메모리 프로세서에 대한 캐시 전략(Cache Strategies for Shared-Memory Processors)을 참조할 수 있다.
캐시 갱신 요구는 2-레벨 캐시 배열에서 제2 레벨 캐시에만 요구하는 것이 바람직하다. 이것은 갱신되는 위치가 통상 작은 제1 레벨 캐시에 있지 않을 것이기 때문이다. 결과적으로, 만일 제1 레벨 캐시의 내용이 모든 캐시 갱신 요구에 대해 검사된다면, 그것의 내용이 갱신될 필요가 있는가를 결정하기 위해 제1 레벨 캐시를 액세스하는 과정에서 행해지는 작업의 대부분은 낭비될 것이다. 가장 중요하게도, 이러한 제1 레벨 캐시에 대한 의사 액세스는 CPU에 의한 메모리 요구를 방해하고, 따라서, 시스템 성능이 불필요하게 감소된다.
의사 제1 레벨 액세스를 피하기 위해, 본 발명은 제1 레벨 캐시를 실질적으로 참조함이 없이 지정된 위치가 제1 레벨 캐시에 존재하는지의 여부를 결정키 위해 제2 레벨 캐시의 제어 로직에 메카니즘을 제공한다.
본 발명에서, 제1 및 제2 레벨 캐시 둘다는 직접 맵화된다. 이것은 메인 메모리의 특별한 어드레스에 기억되는 데이타가 캐시의 하나의 위치에만 기억될 수 있다는 것을 의미한다.
캐시 어레이, 태그 및 로직
제2도를 참조하면, 각각의 CPU는 어드레스 버스(202), 데이타 버스(204) 및 제어 버스(206)를 포함하는 로컬 버스(200)를 갖는다. 어드레스 버스(202)는 일조의 2진 어드레스 신호를 운반한다. 편의상, 어드레스 비트는 ABCDE로 표시되는 5개의 서브세트로 분류된다. 여기서, A는 가장 중요한 비트를 나타내고, B는 하나 이상의 그 다음 중요한 비트를 나타내고, 그런 식으로 해서 E는 최후로 중요한 비트를 나타낸다. 각 어드레스의 비트를 5 부분으로 나누는 이유는 다음의 논으로부터 명백하게 될 것이다.
직접맵은 다음과 같이 작용한다. 제1 레벨 캐시(120)을 참조하면, 캐시는 일조의 B, 블록을 포함하고 약 10 나노초의 액세스 시간을 갖는 고속 메모리 어레이(220)를 포함한다. 제1 레벨 캐시(120)의 블록들은 제2 레벨 캐시(122)의 블록들과 쉽게 구별할 목적으로, 여기서 제1 레벨 캐시(120)의 블록들을 라인이라 하고, 제2 레벨 캐시(122)의 블록들을 블록이라 하는 것에 주의해야 한다.
어레이(220)의 각각의 라인(222)은 일반적으로 그의 누승(즉, 2X, 여기서 X는 정의정수이다)과 동등한 세트 사이즈를 갖는다. 아울러, 각각의 라인(222)에 대한 하나의 태그(232)를 저장하는 고속 태그 메모리(230)가 있다. 어레이(220)의 라인의 위치와 함께 각각의 라인의 태그(232)는 라인(222)의 메인 메모리의 위치를 확인한다. 또한, 각각의 태그(232)는 때로는 유효플래그로 불리는 상태플래그를 포함하고, 이것은 상응하는 라인에 기억되는 데이타가 유효한가를 나타낸다. 이것은 아래에서 좀 더 구체적으로 설명된다.
제2 및 3a도를 참조하면, 메인 메모리의 어드레스 공간은 어드레스 비트 ABCDE로 표시되고, 여기서 E는 제1 레벨 캐시의 라인(222)의 각각의 바이트 또는 워드의 어드레스 또는 위치를 지정하는데 필요한 비트의 세트이다. 비트 CD는 인덱스로서 어레이(220, 230)에 작용하고 액세스되는 어레이(220)의 라인(222)의 위치를 확인한다. 특정한 라인에 대한 태그(232)는 메모리의 특별한 블록의 값 AB를 기억한다. 따라서, 캐시의 라인(232)의 위치는(상응하는 태그로부터) AB와 (라인의 인덱스값) CD에 의해 확인된다.
몇몇 2-레벨 캐시에서, 제2의 캐시(122)는 제1의 캐시(120)보다 더 큰 블록을 갖고, 또한 제1의 캐시(120)보다 더 많은 블록을 가질 것이다. 제2의 캐시(122)의 기본구조는 일조의 B2 블록을 포함하고 약 100나노초의 액세스 시간을 갖는 중속 메모리 어레이(240)를 포함한다. B2는 통상 B 보다 적어도 2배 정도 큰 2의 누승과 동일하다. 어레이(240)의 각각의 블록(242)는 일반적으로 2의 누승과 동일한 정해진 크기(즉, 예정된 수의 바이트 또는 워드)를 갖는다. 아울러, 각각의 블록(242)에 대해 하나의 태그(252)를 저장하는 태그 메모리(250)가 있다. 각각의 블록의 태그(252)는 어레이(240)의 블록의 위치와 함께 블록(242)의 메인 메모리의 위치를 확인한다.
전과 같이, 메인 메모리의 어드레스 공간은 어드레스 비트 ABCDE에 의해 표시된다. 이 제2의 캐시에서, 어드레스 비트 DE는 블록(242)의 각각의 바이트 또는 워드의 어드레스 또는 위치를 지정하는데 필요한 비트의 세트이다. 제2의 캐시(122)의 블록(242)은 제1의 캐시의 블록(222)보다 더 크고, 그러므로 시스템은 비트 DE로 표시되는 바와 같이 각각의 제2의 캐시 블록에 기억된 데이타의 번지를 지정하기 위해 더 많은 어드레스 비트를 요구한다는 것에 주의해야 한다. 비트 BC는 인덱스로서 어레이(240, 250)에 이용되고 어레이(240)의 블록의 위치를 확인한다. 특별한 블록에 대한 태그(252)는 특별한 메모리 블록의 값 A를 저장한다. 따라서, 캐시의 블록(252)의 위치는 (상응하는 태그로부터) A와 (블록의 인덱스값) BC에 의해 확인된다.
이러한 번지지정 및 캐시구성을 좀 더 명백히 하기 위해, 특정한 예가 제시된다. 메인 메모리는 26 어드레스 비트(A25-40)를 요구하는 64 메가 바이트의 데이타를 기억한다. 제1의 캐시는 각각 16 바이트를 기억하는 1024 라인을 갖는 16K 바이트 메모리이다. 제2의 캐시는 각각 64 바이트를 기억하는 2048 블록을 갖는 128K 바이트 메모리이다. 제3a도를 참조하면, 시스템의 어드레스 비트는 A25, A24 ‥‥‥ A0으로 부호가 붙여져 있고, A25는 가장 중요한 비트이고, A0는 최후로 중요한 비트이다. 어드레스 비트의 ABCDE 표현은 다음과 같을 것이다 : A은 어드레스 비트 A25-A17을 나타내고, B는 어드레스 비트 A16-A14를 타나내고, C는 어드레스 비트 A13-A6을 나타내고, D는 어드레스 비트 A5-A4를 나타내고, 그리고 E는 어드레스 비트 A3-A0를 나타낸다.
본 발명에서, 제1의 캐시(120)는 제2의 캐시(122)에 저장되는 데이타의 서브세트를 포함한다. 따라서, 제1의 캐시(120)에 저장되는 모든 데이타는 제2의 캐시(122)에서 발견될 수 있다.
캐시(120, 122)의 정상동작은 다음과 같이 작용한다. CPU(140)가 메모리 액세스틀 실행할 때, 액세스되는 어드레스는 어드레스 버스(202)에 주장(assertion)되고, 그리고 판독/기입 제어신호는 제어버스(206)에 주장된다. 기입동작동안, 데이타는 또한 데이타 버스(204)에 주장된다. 주장된 어드레스를 ABCDE로 표시하면, 전술한 바와 같이, 제1의 캐시(120)의 제어로직(260)은 태그 어레이(230)에 인덱스하기 위해 CD 어드레스 비트를 이용한다. 비교기(262)는 인덱스된 태그(232)의 값을 어드레스 비트 AB와 비교한다. 이 비교가 실행되는 동안, 캐시 어레이(220)는 어드레스 비트 CDE를 이용해 액세스 된다. 만일 비교기(262)가 태그(232)와 AB가 동일하다는 것을 결정하면, 그때 버퍼(264)가 인에이블 되어 캐시 어레이(220)의 번지정된 위치와 데이타 버스(204)간의 데이타의 흐름을 허여한다. 즉, 판독동작동안 캐시의 번지지정된 위치는 버스(204)에 주장되고, 그리고 기입동작동안 버스(204)상의 데이타는 지정된 위치에서 캐시에 기입된다.
만일 제1의 캐시(120)의 비교기(262)가 히트(hit)를 발견치 못하면, 제2의 캐시(122)는 메모리 요구를 만족시키기 위해 노력한다. 특별하게, 제2의 캐시의 제어로직(270)은 태그 어레이(250)에 인덱스하기 위해 BC 어드레스 비트를 이용한다. 비교기(272)는 인덱스 된 태그(252)의 값을 어드레스 비트 A와 비교한다. 이 비교가 실행되는 동안, 캐시 어레이(240)는 어드레스 비트 BCDE를 이용하여 액세스 된다. 만일 비교기(272)가 태그(252)와 A가 동일하다는 것을 결정하면, 그때 버퍼(274)는 인에이블되어 캐시 어레이(240)의 번지 지정된 위치와 데이타 버스(204)사이의 데이타의 흐름을 허여한다.
또한, 2 캐시(120, 122)의 데이타는 일치되어야 하기 때문에, 데이타가 제1의 캐시(120)에 기입될 때 제1의 캐시의 로직(266)은 제2의 캐시의 버퍼(274)를 인에이블하고, 동일한 데이타가 제2의 캐시에 저장된다.
만일 제2의 캐시(122)의 비교기(272)가 히트를 발견하지 못하면, 제2의 캐시는 액세스 요구를 그것의 공유버스 인터페이스(280)에 전달하고, 그때 인터페이스(280)는 CPU의 요구를 만족시키기 위해 지정된 데이타를 메인 메모리로부터 인출한다. 좀 더 상세하게, 인터페이스(280)는 메인 메모리로부터 어드레스 비트 ABC에 해당하는 전체 데이타 블록을 인출하고, 이 데이타를 어드레스 비트 BC의 값에 해당하는 제2의 캐시 어레이(240)의 블록(242)에 로딩한다. 이것은 제2 레벨 캐시가 CPU의 요구를 만족시키게 한다. 동시에, 어드레스 비트 CD의 값에 상응하는 제1 레벨 캐시의 라인(222)에 대한 태그 엔트리(232)는 무효한 것으로 표시된다.
캐시 코히어런스
다음에, 시스템에서 하나의 프로세서가 다른 프로세서에 의해 공유되는 데이타를 갱신할 때 무엇이 일어나는가를 고려해 보자. 제2의 캐시의 태그 어레이(250)는 각각의 블록(242)에 대한 2 상태플래그 : 블록(242)이 유효플래그를 포함하는지의 여부를 나타내는 유효플래그, 그리고 동일한 데이타 블록이 시스템의 어떤 다른 프로세서의 캐시에 기억될 수 있는지의 여부를 나타내는 공유플래그를 포함한다. 이러한 상태플러그를 갱신하기 위한 정확한 매카니즘은 본 발명에 관련된 것은 아니지만, 공유 메모리 버스(112)의 구조는 제2 레벨 캐시의 동작에 영향을 미친다.
입/출력 프로세서가 메모리에 데이타를 기입하거나, CPU가 어쩌면 다른 캐시에 기억되어 있는 것처럼 표시되는 캐시 블록에 새로운 데이타를 기입할 때, 입/출력 프로세서 또는 제2 레벨 캐시는 기입명령과 공유 메모리 버스(112)상에 일조의 어드레스 신호를 주장한다. 제3c도를 참조하면, 바람직한 실시예에서, 버스(112)는 어드레스 신호 및 판독/기입 명령의 전달에도 이용되는 64 비트 2진 데이타 버스(113), 공유신호라인(114), 더티(dirty)신호라인(115), 3 클록라인(116), 중재(arbitration)버스(117), 2 패리티라인(118) 그리고 에러교정 코드전달을 위한 14 바이너리(2진)라인(119)을 포함한다. 데이타 버스(113) 및 공유라인(114)의 이용만이 본 발명에 관련된다. 중재버스(117)는 버스를 이용하기 위한 동시 요구를 중재하는데 이용된다. 클록라인(116)은 버스(112)를 통한 데이타 전달의 타이밍을 제어하는데 이용되고, 그리고 패러티 및 에러 교정 코드라인(118, 119)은 표준 패러티 및 에러교정 코드신호를 전달하는데 이용된다.
64 바이너리 데이타/어드레스 라인(113)은 시간 다중화되어 어드레스 및 명령신호는 제1의 시간주기동안 전달되고, 그리고 데이타는 동일 라인을 통해 늦은 시간주기동안 전달된다. 제2 레벨 캐시에 대한 CPU 액세스가 실수를 일으켰을 때, 제2 레벨 캐시는 버스(112)에 판독명령과 지정된 어드레스를 전달한다. 통상, 그 다음 요구되는 데이타 블록이 메인 메모리(110)에 의해 버스상에 전달된다. 그러나, 나머지 제2 레벨 캐시들 중 어느 것이라도 지정된 어드레스에 대한 좀 더 많은 갱신 데이타를 포함한다면, 그 제2 레벨 캐시는 더티라인(115)상에 인에이블 신호를 주장하고, 이 경우에 그 제2 레벨 캐시는 메인 메모리를 대신해서 요구되는 데이타를 보낸다.
제2의 캐시(122)가 라인(113)상의 기입명령을 검출할 때마다, 그것은 전달된 어드레스를 제2 레벨 태그 어레이(250)의 상응하는 태그(252)와 비교한다. 만일 일치되어 있다면, 제2 레벨 캐시(122)는 공유라인(114)상에 인에이블 신호를 주장하고, 그것에 의해 제2 레벨 캐시는 제2 레벨 캐시의 내용이 갱신될 수 있도륵 새로운 갱신된 데이타의 오너(owner)가 버스를 통해 그것을 전달하기를 바란다는 것을 표시한다. 기입명령을 발생시켰던 시스템 요소는 공유신호를 검출하고 그리고 버스(112)를 통해 데이타 블록을 전달함으로써 반응한다.
제2도에 도시된 시스템에서 보아, 공유메모리 버스(112)상의 기록명령이 캐시로직(270)에 의해 검출될 때, 제2의 캐시(122)의 로직(276)은 버스 버퍼(290)를 디스에이블하고, 이것은 제2의 캐시(122)가 캐시 검사동작을 실행하는 동안 제1의 캐시(120)로부터 데이타를 인출하기 위해 CPU로 하여금 로컬버스(200)를 이용하게 한다. 버스버퍼(290)는 2 로컬버스(200, 200-1)가 하나로 작용하도록 인에이블 되고, 그리고 캐시 검사동안만 디스에이블 된다.
로직회로(276)는 버스 버퍼(290)와 캐시 어레이 액세스회로(272, 272)의 상태를 지배하는 상태 머신이다. 로직회로(276)는 또한 CPU가 캐시들 중 어느 하나의 캐시에 저장되어 있지 않는 메모리 위치를 참조할 때 제1 및 제2의 레벨 캐시에 새로운 데이타 블록을 로딩하는 처리를 제어한다.
제2의 캐시가 캐시검사동작을 실행할 때, 로컬 어드레스 및 제어라인(202-1, 206-1)상의 신호는 CPU(104)대신 공유버스 인터페이스(280)에 의해 주장된다. 로직(276)은 기입명령(즉, 캐시검사요구)이 공유버스 인터페이스(280)로부터 라인(278)상에 수신된 때 비교기(272)를 인에이블 한다는 것에 주의해야 한다. 만일 지정된 어드레스가 제2의 캐시 어레이(240)에 위치되면, 제2 레벨 캐시 로직(270)은 인터페이스(280)를 통해 버스(112)의 공유라인(114)상에 인에이블 신호를 주장하고, 이것은 새로운 데이타 블록으로 하여금 캐시 어레이(240)에 저장되게 한다.
우리는 이제 캐시검사에 관련되는 지정된 어드레스가 제1 레벨 캐시 어레이(220)에 위치티는 경우에만 제1 레벨 캐시(120)를 액세스하는 본 발명에 의해 번지 지정되는 문제에 이르렀다. 이 목적으로 본 발명은 특정한 회로(300)를 제공한다. 회로(300)는 데이타 테이블을 저장하는 고속 메모리 어레이(302)를 포함한다. 어레이(302)는 제1의 캐시의 상응하는 블록(222)이 유효 데이타를 포함하는지의 여부를 나타내는 유효플래그(304)를 포함하는 제1 레벨 캐시(120)의 각각의 블록(222)에 대한 엔트리(305)와, 제1의 캐시의 블록(222)이 결과로서 발생했던 제2의 캐시 어레이(240)의 블록(242)에 대한 포인터(306)를 포함한다. 특히, 포인터(306)는 상기 언급된 어드레스 비트의 분할을 이용하는 B 어드레스 비트와 같다.
더욱이 어레이(302)는 상기 포인터(306)들의 K가 동시에 액세스되도록 K 평행 서브테이블(302-1 - 302-K)로 구성된다. 거기서, K는 제1 레벨 캐시 라인 사이즈에 대한 제2 레벨 캐시 블록 사이즈의 사이즈들의 비이다. 예컨대, 만일 제2 레벨 캐시(122)의 블록(242)이 제1 레벨 캐시(120)의 라인(222)보다 2배 더 크다면, K는 2와 같다. 제2도에 도시된 바와 같이, 동시에 액세스 되는 모든 엔트리(302)는 평행한 서브 테이블에서 동일한 위치에 있다. 이 엔트리(302)는 C 어드레스 비트에 의해 인덱싱 된다(즉, C 어드레스 비트의 각각의 가능한 값에 대해 K 엔트리가 존재한다).
제3a도를 참조로 위에서 언급된 캐시 블록 및 라인 사이즈를 이용하면, K는 4와 같아질 것인 바, 그것은 제2 레벨 캐시의 블록들이 제1 레벨 캐시의 라인보다 4배 더 크기 때문이다.
새로운 데이타가 제2 레벨 캐시의 블록에 저장되어야 하는지를 결정키 위해 제2 레벨 캐시가 캐시검사를 실행할 때, 제2 레벨 캐시의 로직(300)은 제1 레벨 캐시도 갱산될 필요가 있는지를 동시에 결정한다. 만일 회로(300)가 제1 레벨 캐시는 갱산될 필요가 있다는 것을 결정하면, 버스버퍼(290)는 인에이블 될 것이고, 제1의 캐시 어레이(220)는 갱신된다. 다시 말해, 회로(300)가 제1 레벨 캐시는 갱신될 필요가 있다는 것을 결정하면, 제1의 캐시의 상응하는 라인이 무효한 것으로 표시되든가, 또는 어드레스 버스상의 어드레스 신호에 의해 결정되는 바와 같이 제1의 캐시 어레이(220)의 적당한 블록에 갱신 데이타가 로딩되든가 할 것이다. 만일 회로(300)가 제1의 캐시는 갱신될 필요가 없다고 결정하면, 버퍼(200)는 캐시검사가 완료될 때까지 디스에이블 상태로 남는다.
회로(300)는 다음과 같이 작용한다. 우선, 제2의 캐시의 어드레스 비교기(272)의 출력이 로직회로(276)로 보내진다는 것에 주의해야 한다. 만일 요구되는 어드레스가 제2 레벨 캐시에 없다면, 그때 그것은 제1 레벨 캐시에도 있을 수 없고, 더 이상의 작용이 필요치 않으며, 따라서 회로(300)에 의해 발생되는 출력신호는 무시된다. 히트가 제2의 캐시에서 발견될 때만 로직회로(276)는 회로(300)에 의해 발생되는 신호를 이용한다.
C 어드레스 비트에 의해 지정되는 어레이(302)의 전체 엔트리(305)는 액세스 된다. 이 K 엔트리의 각각의 포인터(306)는 비교기(310)에 의해 N 어드레스 비트와 비교되고, 비교기(310)는 또한 상응하는 엔트리의 유효플래그(304)를 검사한다. 모든 비교기(310)로부더의 결과가 OR 게이트(312)로 결합되고, OR 게이트(310)는 제1 레벨 캐시에 갱신이 필요한 적어도 하나의 라인이 있는 경우에만 인에이블 신호를 발생시킬 것이다. OR 게이트(312)로부터의 출력은 로직회로(276)로 보내지고, 그 다음 이 로직회로(276)는 제1 레벨 캐시가 갱신될 필요가 있을 경우 버스 버퍼(290)를 인에이블 한다.
회로(300)가 작용하는 이유는 다음과 같다. 만일 제2 레벨 캐시가 제1의 캐시보다 J배 더 크다면, 어떤 일정한 제1 레벨 캐시 블록에 대한 데이타는 제2 레벨 캐시의 J가 상이한 블록들 중 어느 것에라도 저장될 수 있다. 예컨대, 제3a도를 참조하면, 다음의 어드레스가
부분 : A B C D E
어드레스 : 000011110 XXX 100011111 11 11101
버스 라인 : AAAAAAA AAA AAAAAAA AA AAAA
222221111 111 111111111 11 11111
543210987 654 323109876 54 32310
제1 레벨 캐시에 기억되어 있는 경우, 그것이 기억되어 있는 제1 레벨 캐시블록(222)의 인덱스 값은 10001111111(즉, CD 어드레스 비트)이고, 그리고 그것이 기억되어 있는 제2 레벨 캐시블록(242)의 인덱스 값은 XXX100011111(즉, BC 어드레스 비트)이다. 어레이(302)에 기억되어 있는 상응하는 포인터(306)는 XXX(즉, B 어드레스 비트)의 값을 갖는다. 따라서, 8개의 가능한 XXX의 값이 있기 때문에, 제2 레벨 캐시에는 이 어드레스가 위치될 8개의 가능한 블록이 있다.
이 문제를 반대되는 시각에서 보면, 제2 레벨 캐시의 블록들이 제1 레벨 캐시의 라인 사이즈의 K배인 경우, 제1레벨 캐시(120)의 K만큼이나 많은 라인의 데이타가 제2 레벨 캐시의 어떤 하나의 블록에 기억될 수 있다. K는 2N과 같고, N은 D 어드레스 비트의 수라는 것에 주의해야 한다. 따라서, 어떤 일정한 C 어드레스 비트 값을 위해 제1 레벨 캐시에는 갱신되는 제2 레벨 캐시 블록으로 맵화될 수 있는 K 라인이 있고, 그러므로 어레이(302)에는 제1 레벨 캐시의 어떤 라인이 갱산될 필요가 있는지를 결정키 위해 검사되어야 할 K 포인터가 있다.
속도의 이유때문에, 바람직한 실시예에서 갱신된 제2 레벨 캐시 블록에 상응하는 어레이(302)의 모든 엔트리는 동시에 검사되고, 비교기(310)의 수가 K, K는 제1의 캐시의 라인 사이즈 대 제2의 캐시의 블록 사이즈의 비와 같을 것을 요구한다. 만일 K가 크다면(예컨대, 16보다 더 크다면), 어레이의 K 엔트리는 예컨대 그 엔트리의 배치(batch)를 연속적으로 검사함으로써 연속적으로 검사될 수 있다.
어레이(302)에 기억된 테이블은 그것이 제2 레벨 캐시로부터 재로딩 되게 하는 부재(miss)로 인해서든가 또는 컴퓨터 시스템의 다른 부분으로부터 수신되는 무효 또 갱신신호에 의해서든가 제1 레벨 캐시변화의 내용으로 갱신된다. 이러한 갱신은 제1 레벨 캐시(120)를 재로딩하는데 필요한 작업과 관련해 제2 레벨 캐시 로직(270)에 의해 행해질 수 있고, 그러므로 캐시의 성능을 손상시키지 않는다. 게다가, 어레이(302)에 기억되는 정보가 제1 레벨 캐시의 태그 어레이(230)에 기억되는 정보의 서브세트이기 때문에, 어레이(302)에 기억될 값을 계산하는데 어떠한 여분의 작업도 필요없게 된다.
제3b 및 4도를 참조하면, 제1 레벨 캐시의 라인 사이즈가 제2 레벨 캐시의 블록 사이즈와 같은 사스템용 2-레벨 캐시가 도시되어 있다. 즉, 상기 언급한 바와 같이 K는 1과 같다. 또한, D어드레스 비트가 없다. 왜냐하면, D 어드레스 비트는 2 캐시 레벨간의 블록 사이즈의 차를 나타내기 때문이다. 이 제2의 바람직한 실시예에서, 라인 및 블록 사이즈는 64 바이트와 같고, 제1의 캐시는 16 킬로바이트이 사이즈를 갖고, 제2의 캐시는 128 킬로바이트의 사이즈를 갖는다. 여기서 흥미있는 것은 64 비트의 넓은 메모리 버스(112)(제3c도에 도시됨)를 이용하면 전체 데이타 블록을 제2 레벨 캐시에 로딩하는데 단지 4 데이타 전송 사이클이 걸린다는 것이다.
이 실시예에서, 회로(300-2)는 제1의 실시예의 회로(300)보다 다소 더 간단하다. 왜냐하면, 제1의 캐시가 갱신될 필요가 있는지를 결정하기 위해 단지 하나의 어레이(302) 엔트리(305)만이 검사될 필요가 있기 때문이다. 따라서, 단지 하나의 비교기(310)가 필요하고 OR 게이트(312)는 필요없다(제2도 참조). 그 밖의 모든 점에서, 본 발명의 이 실시예의 동작은 위에서 논의된 바와 같이 제2도에 도시된 실시예와 동일하다.
본 발명이 몇가지 특정한 실시예를 참고로 설명되었지만, 그 설명은 본 발명의 예로서 본 발명을 한정하고자 한 것은 아니다. 여러가지 변경이 본 발명의 정신 및 범위로부터 벗어남이 없이 당업자에 의해 가능할 것이다.

Claims (4)

  1. 다수의 프로세서 및 공유 버스에 의해 상기 프로세서에 접속되며 소정 어드레스 공간내의 지정된 어드레스에 데이타를 기억하는 메인 메모리를 가진 컴퓨터 시스템의 제1 프로세서에 대한 캐시 코히어런스 논리를 가진 2-레벨 캐시 메모리에 있어서, 상기 2-레벨 캐시 메모리는, 데이타 라인을 기억하며, 로컬 버스에 의해 상기 제1 프로세서에 접속되며, 상기 어드레스 공간 부분이 각각의 상기 라인에 기억되는 것을 나타내는 어드레스 데이타를 기억하기 위한 제2 태그 어레이를 포함하는 제1 직접 맵 캐시 메모리 및 데이타의 블록을 기억하며, 상기 제1 직접 맵 캐시 메모리에 접속되며, 버스 버퍼에 의해 상기 로컬 버스에 접속되며, 상기 어드레스 공간 부분이 각각의 상기 블록에 기억되는 것을 나타내는 어드레스 데이타를 기억하기 위한 제2 태그 어레이를 포함하는 제2 직접 맵 캐시 메모리를 포함하며, 상기 제1 직접 맵 캐시 메모리에 기억된 각각의 데이타 라인은 상기 제2 직접 맵 캐시 메모리의 상기 블록중의 하나에 기억되며, 상기 제2 직접 맵 캐시 메모리는 갱신된 데이타가 상기 다수의 프로세서 중의 다른 하나에 의해 상기 어드레스 공간의 지정된 어드레스에 기록되는 것을 나타내는 상기 공유 버스상의 메모리 기록 신호에 응답하며, 상기 공유 버스 및 상기 제2 태그 어레이에 접속된 캐시 코히어런스 논리를 포함하며, 상기 캐시 코히어런스 논리는,
    (1) 상기 제1 캐시 메모리가 상기 지정된 어드레스에 대한 데이타를 기억하는지의 여부를 상기 캐시 코히어런스 논리가 결정하는 동안 상기 프로세서가 상기 제1 캐시 메모리를 계속해서 액세스 하도록 상기 제2 레벨 캐시 메모리의 상기 캐시 코히어런스 논리가 상기 공유 버스상의 상기 메모리 기록 신호에 응답하는 동안 상기 버스 버퍼를 일시적으로 디스에이블(disable)하기 위한 수단,
    (2) 상기 제1 레벨 캐시 메모리의 각각의 상기 라인에 기억된 상기 어드레스 공간의 부분을 나타내는 데이타를 기억하기 위한 테이블 수단,
    (3) 상기 지정된 어드레스를 상기 제2 태그 어레이와 비교하여, 매칭될 때 상기 제2 레벨 직접 맵 캐시 메모리의 대응 블록을 갱신하기 위한 제2 캐시 코히어런스 수단 및
    (4) 상기 지정된 어드레스를 상기 테이블 수단의 상기 데이타와 비교하여, 매칭이 발견되거나 상기 제2 캐시 코히어런스 수단이 매칭을 발견할 때 상기 버퍼를 인에이블하며, 상기 지정된 어드레스에 대응하는 상기 제1 직접 맵 캐시 메모리의 라인을 갱신하기 위해 명령하는 상기 제1 레벨 캐시에 신호를 전송하기 위한 제1 캐시 코히어런스 수단을 포함하는 것을 특징으로 하는 2-레벨 캐시 메모리.
  2. 제1항에 있어서, 상기 다수의 프로세서는 상기 어드레스 공간의 지정된 어드레스에 기억된 데이타를 갱신할 때 상기 공유 버스에 어드레스 및 명령 신호를 전송하기 위한 수단을 포함하며, 상기 제2 직접 맵 캐시 메모리는 상기 공유 버스상의 어드레스 및 명령 신호를 감시하기 위한 버스감시 회로소자를 포함하며, 상기 제2 캐시 코히어런스 수단은 다른 프로세서가 상기 제2 직접 맵 캐시 메모리의 상기 블록 중의 하나에 기억된 데이타를 갱신하는 것을 상기 공유 버스상의 상기 감시된 어드레스 및 명령 신호가 나타낼 때 인에이블 된 액세스 신호를 발생시키기 위한 수단을 포함하며, 상기 제1 캐시 코히어런스 수단은 다른 프로세서가 상기 제1 직접 맵 캐시 메모리의 상기 라인 중의 하나에 기억된 데이타를 갱신하는 것을 상기 감시된 어드레스 및 명령 신호가 나타낼 때 인에이블된 제1 캐시 룩업 신호를 발생시키기 위한 수단을 포함하며, 상기 제1 직접 맵 캐시 메모리는 상기 제1 직접 맵 캐시 메모리에 기억된 데이타를 갱신하는 상기 인에이블 된 제1 캐시 룩업 신호에 응답하는 수단을 포함하는 것을 특징으로 하는 2-레벨 캐시 메모리.
  3. 다수의 프로세서 및 공유 버스에 의해 상기 프로세서에 접속되며 소정 어드레스 공간내의 지정된 어드레스에 데이타를 기억하는 메인 메모리를 가진 컴퓨터 시스템의 제1 프로세서에 대한 2-레벨 캐시 메모리를 동작시키기 위한 캐시 코히어런스 방법에 있어서, 상기 방법은, 로컬 버스에 의해 상기 제1 프로세서에 접속된 제1 직접 맵 캐시 메모리에 데이타의 라인을 기억하며, 상기 어드레스 공간 부분이 상기 라인에 기억되는 것을 나타내는 각각의 상기 라인에 대한 라인 태그를 상기 제1 직접 맵 캐시 메모리에 연관된 제1 태그 어레이에 기억하기 위한 단계, 상기 제1 직접 맵 캐시 메모리에 접속되며 버스 버퍼에 의해 상기 로컬 버스에 접속된 제2 직접 맵 캐시 메모리에 데이타의 블록을 기억하며, 상기 어드레스 공간 부분이 상기 블록에 기억되는 것을 나타내는 각각의 상기 블록에 대한 블록 태그를 상기 제2 직접 맵 캐시 메모리에 연관된 제2 태그 어레이에 기억하는 단계, 상기 라인에 기억된 것과 동일한 데이타를 기억하는, 상기 제2 직접 맵 캐시 메모리의 블록을 나타내는 상기 제1 직접 맵 캐시 메모리의 각각의 상기 라인에 대한 포인터 값을 상기 제2 직접 맵 캐시 메모리에 연관된 테이블 메모리에 기억하는 단계, 상기 공유 버스상의 메모리 기록 신호를 검출하여, 상기 프로세서가 상기 제1 직접 맵 캐시 메모리를 계속해서 액세스 할 수 있도록 상기 버스 버퍼를 일시적으로 디스에이블 함으로써 응답하는 단계, 상기 지정된 어드레스를 상기 제2 태그 어레이의 블록 태그와 비교하여 매칭될 때, 상기 제2 레벨 직접 맵 캐시 메모리의 대응 블록을 갱신하는 단계 및 상기 지정된 어드레스의 소정 부분을 상기 테이블 메모리의 상기 포인터 값 중의 대응하는 하나와 비교하여, 매칭이 발견되거나 상기 제1 비교 단계가 매칭을 발견할 때, 상기 버스 버퍼를 인에이블하며 상기 지정된 어드레스에 대응하는 상기 제1 레벨 직접 맵 캐시 메모리의 라인을 갱신하기 위해 명령하는 상기 제1 레벨 캐시에 신호를 전송하는 단계를 포함하며, 상기 제1 직접 맵 캐시 메모리에 기억된 각각의 데이타 라인은 상기 제2 직접 맵 캐시 메모리에서 상기 블록 중의 하나에 기억되는 것을 특징으로 하는 2-레벨 캐시 메모리를 동작하는 캐시 코히어런스 방법.
  4. 제3항에 있어서, 상기 다수의 프로세서는 상기 어드레스 공간의 지정된 어드레스에 기억된 데이타를 갱신할 때 상기 공유 버스상의 어드레스 및 명령신호를 전송하며, 상기 공유 버스상의 어드레스 및 명령 신호를 감시하는 단계, 다른 프로세서가 상기 제2 직접 맵 캐시 메모리의 상기 블록 중의 하나에 기억된 갱신 데이타를 가지는 것을 상기 공유 버스상의 상기 감시된 어드레스 및 명령신호가 나타낼 때 상기 제2 직접 맵 캐시 메모리를 갱신하기 위한 인에이블 된 제2 캐시 액세스 신호를 발생시키는 단계, 상기 감시된 어드레스 신호의 소정 부분을 상기 포인터 값 중의 대응하는 하나와 비교하여, 상기 비교가 매칭되며 상기 발생 단계가 인에이블 된 제2 캐시 액세스 신호를 발생시킬 때 인에이블 된 제1 캐시 룩업 신호를 발생시키는 단계 및 상기 인에이블 된 제1 캐시 룩업 신호에 응답하여 상기 제1 직접 맵 캐시 메모리에 기억된 데이타를 갱신시키는 단계를 포함하는 2-레벨 캐시 메모리를 동작하기 위한 캐시 코히어런스 방법.
KR1019900021312A 1989-12-22 1990-12-21 2-레벨 캐시 메모리의 방해 감소장치 및 방법 KR100190351B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US7454922 1989-12-22
US07/454,922 US5136700A (en) 1989-12-22 1989-12-22 Apparatus and method for reducing interference in two-level cache memories

Publications (1)

Publication Number Publication Date
KR100190351B1 true KR100190351B1 (ko) 1999-06-01

Family

ID=23806623

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900021312A KR100190351B1 (ko) 1989-12-22 1990-12-21 2-레벨 캐시 메모리의 방해 감소장치 및 방법

Country Status (5)

Country Link
US (1) US5136700A (ko)
EP (1) EP0434250B1 (ko)
JP (1) JPH0797354B2 (ko)
KR (1) KR100190351B1 (ko)
DE (1) DE69031978T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100344065B1 (ko) * 2000-02-15 2002-07-24 전주식 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
JPH03240127A (ja) * 1990-02-17 1991-10-25 Hitachi Maxell Ltd プログラム制御システム
JPH05108484A (ja) * 1990-06-07 1993-04-30 Intel Corp キヤツシユメモリ
CA2044689A1 (en) * 1990-06-15 1991-12-16 Roger E. Tipley Multilevel inclusion in multilevel cache hierarchies
JP2708943B2 (ja) * 1990-08-08 1998-02-04 三菱電機株式会社 キャッシュメモリ制御装置
GB2256512B (en) * 1991-06-04 1995-03-15 Intel Corp Second level cache controller unit and system
EP0533373A3 (en) * 1991-09-18 1993-04-21 Ncr International Inc. Computer system having cache memory
US5386540A (en) * 1991-09-18 1995-01-31 Ncr Corporation Method and apparatus for transferring data within a computer using a burst sequence which includes modified bytes and a minimum number of unmodified bytes
US5649154A (en) * 1992-02-27 1997-07-15 Hewlett-Packard Company Cache memory system having secondary cache integrated with primary cache for use with VLSI circuits
US5457793A (en) * 1992-03-30 1995-10-10 International Business Machines Corporation Software cache management of a shared electronic store in a supplex
US5319766A (en) * 1992-04-24 1994-06-07 Digital Equipment Corporation Duplicate tag store for a processor having primary and backup cache memories in a multiprocessor computer system
EP0568231B1 (en) * 1992-04-29 1999-03-10 Sun Microsystems, Inc. Methods and apparatus for providing multiple outstanding operations in a cache consistent multiple processor computer system
JPH05324468A (ja) * 1992-05-21 1993-12-07 Fujitsu Ltd 階層化キャッシュメモリ
JPH05342101A (ja) * 1992-06-12 1993-12-24 Fujitsu Ltd 階層キャッシュ・メモリ
US5522058A (en) * 1992-08-11 1996-05-28 Kabushiki Kaisha Toshiba Distributed shared-memory multiprocessor system with reduced traffic on shared bus
US5355471A (en) * 1992-08-14 1994-10-11 Pyramid Technology Corporation Multiprocessor cache coherency tester that exercises the coherency logic exhaustively and also detects errors in a processor using an automatic CPU sort
US5511226A (en) * 1992-08-25 1996-04-23 Intel Corporation System for generating snoop addresses and conditionally generating source addresses whenever there is no snoop hit, the source addresses lagging behind the corresponding snoop addresses
US5509135A (en) * 1992-09-25 1996-04-16 Digital Equipment Corporation Multi-index multi-way set-associative cache
EP0608622A1 (en) * 1993-01-29 1994-08-03 International Business Machines Corporation Multiprocessor system with multilevel caches
US5689679A (en) * 1993-04-28 1997-11-18 Digital Equipment Corporation Memory system and method for selective multi-level caching using a cache level code
US5640531A (en) * 1993-06-22 1997-06-17 Unisys Corporation Enhanced computer operational system using auxiliary mini-cache for enhancement to general cache
FR2707776B1 (fr) 1993-07-15 1995-08-18 Bull Sa Procédé de gestion de mémoires d'un système informatique, système informatique mémoire et support d'enregistrement mettant en Óoeuvre le procédé.
FR2707774B1 (fr) * 1993-07-15 1995-08-18 Bull Sa Procédé de gestion cohérente des échanges entre des niveaux d'une hiérarchie de mémoires à au moins trois niveaux.
FR2707777B1 (fr) * 1993-07-15 1995-08-18 Bull Sa Ensemble informatique à mémoire partagée.
FR2707778B1 (fr) * 1993-07-15 1995-08-18 Bull Sa NÓoeud de processeurs.
JPH0784881A (ja) * 1993-09-13 1995-03-31 Mitsubishi Electric Corp キャッシュメモリ
US5809525A (en) * 1993-09-17 1998-09-15 International Business Machines Corporation Multi-level computer cache system providing plural cache controllers associated with memory address ranges and having cache directories
JP2566733B2 (ja) * 1993-12-09 1996-12-25 コナミ株式会社 Lanシステムのデータ相互伝送方法
US5572704A (en) * 1993-12-15 1996-11-05 Silicon Graphics, Inc. System and method for controlling split-level caches in a multi-processor system including data loss and deadlock prevention schemes
US6088768A (en) * 1993-12-28 2000-07-11 International Business Machines Corporation Method and system for maintaining cache coherence in a multiprocessor-multicache environment having unordered communication
US5832534A (en) * 1994-01-04 1998-11-03 Intel Corporation Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
US6049851A (en) * 1994-02-14 2000-04-11 Hewlett-Packard Company Method and apparatus for checking cache coherency in a computer architecture
US5561779A (en) * 1994-05-04 1996-10-01 Compaq Computer Corporation Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system
US5692152A (en) * 1994-06-29 1997-11-25 Exponential Technology, Inc. Master-slave cache system with de-coupled data and tag pipelines and loop-back
US5551001A (en) * 1994-06-29 1996-08-27 Exponential Technology, Inc. Master-slave cache system for instruction and data cache memories
US5644752A (en) * 1994-06-29 1997-07-01 Exponential Technology, Inc. Combined store queue for a master-slave cache system
US5577227A (en) * 1994-08-04 1996-11-19 Finnell; James S. Method for decreasing penalty resulting from a cache miss in multi-level cache system
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
US5640534A (en) * 1994-10-05 1997-06-17 International Business Machines Corporation Method and system for concurrent access in a data cache array utilizing multiple match line selection paths
US6047357A (en) * 1995-01-27 2000-04-04 Digital Equipment Corporation High speed method for maintaining cache coherency in a multi-level, set associative cache hierarchy
US5740400A (en) * 1995-06-05 1998-04-14 Advanced Micro Devices Inc. Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
US5850534A (en) * 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US5758119A (en) * 1995-08-23 1998-05-26 International Business Machines Corp. System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
US5740399A (en) * 1995-08-23 1998-04-14 International Business Machines Corporation Modified L1/L2 cache inclusion for aggressive prefetch
US6223260B1 (en) * 1996-01-25 2001-04-24 Unisys Corporation Multi-bus data processing system in which all data words in high level cache memories have any one of four states and all data words in low level cache memories have any one of three states
US6070233A (en) * 1996-01-26 2000-05-30 Unisys Corporation Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in higher level cache
US5802563A (en) * 1996-07-01 1998-09-01 Sun Microsystems, Inc. Efficient storage of data in computer system with multiple cache levels
US6065097A (en) * 1996-08-29 2000-05-16 Sun Microsystems, Inc. Apparatus and method for sharing a unified memory bus between external cache memory and primary memory
US5752261A (en) * 1996-11-07 1998-05-12 Ncr Corporation Method and apparatus for detecting thrashing in a cache memory
US6202125B1 (en) 1996-11-25 2001-03-13 Intel Corporation Processor-cache protocol using simple commands to implement a range of cache configurations
US6021261A (en) * 1996-12-05 2000-02-01 International Business Machines Corporation Method and system for testing a multiprocessor data processing system utilizing a plurality of event tracers
US6122711A (en) * 1997-01-07 2000-09-19 Unisys Corporation Method of and apparatus for store-in second level cache flush
US5987577A (en) * 1997-04-24 1999-11-16 International Business Machines Dual word enable method and apparatus for memory arrays
US6209072B1 (en) 1997-05-06 2001-03-27 Intel Corporation Source synchronous interface between master and slave using a deskew latch
US6000015A (en) * 1997-09-16 1999-12-07 Unisys Corporation Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in a higher level cache
US6122709A (en) * 1997-12-19 2000-09-19 Sun Microsystems, Inc. Cache with reduced tag information storage
KR100272165B1 (ko) * 1998-05-20 2000-11-15 윤종용 캐쉬 메모리 시스템 및 그의 운영 방법
US7013305B2 (en) 2001-10-01 2006-03-14 International Business Machines Corporation Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange
US7024519B2 (en) 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
US7412569B2 (en) * 2003-04-10 2008-08-12 Intel Corporation System and method to track changes in memory
US8019945B2 (en) * 2008-01-31 2011-09-13 Oracle International Corporation System and method for transactional cache
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2344094A1 (fr) * 1976-03-10 1977-10-07 Cii Systeme de gestion coherente des echanges entre deux niveaux contigus d'une hierarchie de memoires
US4464712A (en) * 1981-07-06 1984-08-07 International Business Machines Corporation Second level cache replacement method and apparatus
US4442487A (en) * 1981-12-31 1984-04-10 International Business Machines Corporation Three level memory hierarchy using write and share flags
US4807110A (en) * 1984-04-06 1989-02-21 International Business Machines Corporation Prefetching system for a cache having a second directory for sequentially accessed blocks
US4823259A (en) * 1984-06-29 1989-04-18 International Business Machines Corporation High speed buffer store arrangement for quick wide transfer of data
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US4797814A (en) * 1986-05-01 1989-01-10 International Business Machines Corporation Variable address mode cache
FR2609195A1 (fr) * 1986-12-31 1988-07-01 Thomson Csf Procede de gestion d'antememoires associees a des processeurs dans une architecture multiprocesseur a bus unique et systeme de traitement de donnees fonctionnant suivant ce procede
US4831622A (en) * 1987-12-22 1989-05-16 Honeywell Bull Inc. Apparatus for forcing a reload from main memory upon cache memory error
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100344065B1 (ko) * 2000-02-15 2002-07-24 전주식 다단계 캐시 구조의 공유 메모리 다중 프로세서 장치

Also Published As

Publication number Publication date
JPH0797354B2 (ja) 1995-10-18
EP0434250A2 (en) 1991-06-26
JPH05127992A (ja) 1993-05-25
US5136700A (en) 1992-08-04
DE69031978T2 (de) 1998-07-09
DE69031978D1 (de) 1998-02-26
EP0434250B1 (en) 1998-01-21
EP0434250A3 (en) 1992-01-08

Similar Documents

Publication Publication Date Title
KR100190351B1 (ko) 2-레벨 캐시 메모리의 방해 감소장치 및 방법
US4768148A (en) Read in process memory apparatus
US5586294A (en) Method for increased performance from a memory stream buffer by eliminating read-modify-write streams from history buffer
US5146603A (en) Copy-back cache system having a plurality of context tags and setting all the context tags to a predetermined value for flushing operation thereof
US5740400A (en) Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
US5388247A (en) History buffer control to reduce unnecessary allocations in a memory stream buffer
US5056002A (en) Cache memory for use with multiprocessor systems
EP0232526B1 (en) Paged virtual cache system
US5499355A (en) Prefetching into a cache to minimize main memory access time and cache size in a computer system
US6282617B1 (en) Multiple variable cache replacement policy
US6047357A (en) High speed method for maintaining cache coherency in a multi-level, set associative cache hierarchy
US5371870A (en) Stream buffer memory having a multiple-entry address history buffer for detecting sequential reads to initiate prefetching
US5450564A (en) Method and apparatus for cache memory access with separate fetch and store queues
US5590337A (en) Processor interface chip for dual-microprocessor processor system
US5070502A (en) Defect tolerant set associative cache
EP0407119B1 (en) Apparatus and method for reading, writing and refreshing memory with direct virtual or physical access
US5751990A (en) Abridged virtual address cache directory
JPH0253813B2 (ko)
US6243791B1 (en) Method and architecture for data coherency in set-associative caches including heterogeneous cache sets having different characteristics
US5850534A (en) Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US4631660A (en) Addressing system for an associative cache memory
US4831622A (en) Apparatus for forcing a reload from main memory upon cache memory error
US5269009A (en) Processor system with improved memory transfer means
US5590310A (en) Method and structure for data integrity in a multiple level cache system
US5737564A (en) Cache memory system having multiple caches with each cache mapped to a different area of main memory to avoid memory contention and to lessen the number of cache snoops

Legal Events

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

Payment date: 20050117

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee