KR100278328B1 - 캐시 미스 버퍼 - Google Patents
캐시 미스 버퍼 Download PDFInfo
- Publication number
- KR100278328B1 KR100278328B1 KR1019930006928A KR930006928A KR100278328B1 KR 100278328 B1 KR100278328 B1 KR 100278328B1 KR 1019930006928 A KR1019930006928 A KR 1019930006928A KR 930006928 A KR930006928 A KR 930006928A KR 100278328 B1 KR100278328 B1 KR 100278328B1
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- data
- array
- fill
- command
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 53
- 230000015654 memory Effects 0.000 claims abstract description 135
- 238000000034 method Methods 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 19
- 239000013078 crystal Substances 0.000 claims 1
- 230000001427 coherent effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 238000003491 array Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 125000000524 functional group Chemical group 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
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
캐시어레이, 캐시태그와 비교기단 및 캐시멀티플렉서는 캐시메모리에 제공된다. 캐시어레이에 대해서 수행된 각 캐시동작, 판독 또는 기입은 클럭사이클의 반주기만에 이루어진다. 캐시태그와 비교기단은 캐시태그어레이, 캐시미스버퍼 및 제어로직으로 구성된다. 캐시태그어레이에 대해서 수행된 각 캐시동작, 판독 또는 기입은 또한 클럭사이클의 반주기동안에 이루어진다. 캐시미스퍼버는 진행중인 캐시필의 현상태와 동일한 캐시미스 서술정보로 구성된다. 제어로직은 태그매치동작을 수행하는 다수의 조합로직으로 구성된다. 태그매치동작을 수행하는 다수의 조합로직으로 구성된다. 표준태그매치동작뿐만 아니라, 제어로직은 또한 캐시미스버퍼에 저장된 어드레스태그에 대한 액세싱어드레스를 조건적으로 태그매치한다. 태그매치동작의 결과에 의존하며, 만약 액세싱어드레스가 현재 캐시필의 메모리블록프레임의 일부분이라면 현 캐시필의 상태에 더욱이 의존하는 제어로직은 적당한 신호를 캐시어레이, 캐시멀티플렉서, 주메모리 및 명령/ 데이타 목적지에 제공한다. 그 결과, 진행중인 현 캐시필의 일부분인 연속적인 명령/ 데이타 요청은 현 캐시필의 완료를 지다릴 필요없이 만족될 수 있으며, 더욱이 캐시미스페널티와 기능단아이들시간을 줄인다.
Description
제1도는 본 발명의 교시를 실현하는 프로세서를 나타낸 기능블록도이다.
제2도는 명령과 데이타 캐시 및 제1도의 프로세서의 메모리 관리장치를 나타내는 기능블록도이다.
제3도는 명령/데이타 캐시 태그 및 제2도의 명령/데이타 캐시의 비교기단을 나타내는 기능블록도이다.
제4도는 제3도의 비교기단과 명령/ 데이타 캐시 태그의 캐시 미스(miss)버퍼를 나타내는 블록도이다.
제5도는 제3도의 비교기단과 명령/데이타 캐시 태그의 제어로직의 논리적 순서를 나타내는 순서도이다.
[발명의 분야]
본 발명은 컴퓨터시스템 및 그 캐시 메모리 분야에 관한 것이다.
더욱 특히, 본 발명은 캐시 미스 버퍼에 관한 것이다.
[기술 배경]
컴퓨터시스템에서 전형적으로 중앙처리장치(CPU) 는 실제 주메모리보다 빠른 속도로 동작한다. 주메모리로부터 데이타 또는 명령을 기다리는 동안 CPU 가 자주 유휴 상태에 있는 것을 막기 위해서 주메모리보다 빠른 속도로 동작할 수 있는 캐시 메모리는 주메모리와 CPU 사이에 데이타 및 명령을 완충하는데 사용된다.
주메모리의 메모리 기억장소에 있는 데이타 및 명령은 블록프레임으로 캐시메모리에 매핑된다. 각각의 블록프레임은 다수의 데이타 및 명령을 저장하는 다수의 메모리 기억장소와 대응하는 다수의 블록오프셋으로 구성된다. 전반적으로 CPU 의 성능을 개선하기 위해서 몇몇 컴퓨터시스템에서는 분리된 캐시메모리, 하나는 데이타용이고 하나는 명령용, 를 적용한다.
그러나 분리된 캐시메모리 사용은 문제를 전부 해결하지 못한다.
캐시 판독 미스가 일어났을때, 즉, CPU 에 의해서 요구된 명령 또는 데이타가 캐시 메모리에 없을때, 캐시메모리는 주메모리로부터 명령 또는 데이타를 검색해야만 한다. 그렇게 하기 위해서, 요구된 데이타 또는 명령으로 구성되는 데이타 또는 명령의 전체블록 프레임은 전형적으로 검색되고, CPU 는 검색이 완료될때까지 유휴상태가 된다. 다른 캐시성능문제 및 개선기술은 제이. 엘. 헤니시와 디. 에이. 패더슨의 컴퓨터구조-정량적 접근 pp. 454-461(모오건 카프만, 1990) 참조해라.
캐시메모리를 교체블록프레임으로 채우는데 걸리는 시간의 양은 블록크기 및 캐시 메모리-주메모리 계층의 전송율에 달려있다. 예를 들어, 메모리액세스는 파이프라인으로 된다고 가정할때 블록크기가 8 워드이고 주메모리속도가 3 클럭사이클당 2 블록 오프셋이라면 캐시메모리를 교체블록프레임으로 채우는데는 11클럭사이클걸린다.
블록프레임크기를 줄이는것 또는 캐시판독미스가 생길때 일부블록을 채우는 것으로는 장래에 캐시판독미스 가능성이 증가하기 때문에 CPU 유휴시간을 본질적으 로 줄일 수 없다.
캐시판독미스가 발생했을때 캐시메모리에 대해 기다리는 CPU 의 유휴시간양을 최소화시키는 다양한 기술이 사용되고 있다. 한 일반적인 형태는 초기에 재시작하는, 즉 요구된 데이타 또는 명령이 수신되자마자 전블록의 기입이 완료되기를 기다림이 없이 CPU 에 보내지는 것이다. 그러므로 CPU 는 나머지 교체블록프레임이 기입되는 동안 실행을 재시작할 수 있다.
초기 재시작기술보다 진보된 것은 먼저 명령 및 데이타를 검색하기 위해서,교체 블록프레임의 요구된 데이타 또는 명령전에 있는 모든 데이타 또는 명령을 스킵(skip)하기 위해서 주메모리에 대한 요청인 무순서의 페치이다. 초기 재시작과 같이 검색된 데이타 또는 명령은 검색되자마자 CPU에 보내진다.
다시, CPU 는 나머지 교체블럭프레임이 검색되는 동안 실행을 다시 계속한다.
요구된 데이타 또는 명령을 검색한후, 주메모리는 요구된 데이타 또는 명령뒤에 있는 데이타 및 명령으로부터 시작하는 교체블럭프레임의 유지된 데이타 및 명령을 계속 검색하고, 블럭프레임의 끝이 도달할때까지 블럭프레임의 처음부터 전에 스킵된 데이타 또는 명령을 검색하기 위해서 순환한다. 그러므로, CPU 는 최초의 데이타 또는 명령이 주메모리로부터 검색되자마자 다시 실행을 계속할 수 있다.
그러나, 종래의 캐시메모리는 같은 클럭사이클에서 판독 및 기입동작을 수행할 수 없었다. 이것은 복잡한 나머지 교체블럭을 채우려고 하는 동안 CPU로부터 다른 요청을 처리하게 한다. 그 결과, CPU 는 전형적으로 데이타 또는 명령이 실행된후 다시 유휴상태에 있게 되고, 남아있는 검색이 완료되기를 기다린다.
CPU 에 의해서 요청된 연속적인 데이타 또는 명령이 캐시메모리 또는 검색되고 있는 남아있는 일부데이타 또는 명령에 이미 있다 하더라도 CPU 는 아이들(idle)하고 기다리게 된다. 만약 CPU 가 나머지교체 블록프레임이 기입되기전에 그 실행을 완료하기 쉽다면, 초기재시작 및 무작위페치의 이점은 제한된다. 이것은 전형적인 명령을 실행하는데 요구되는 클럭사이클수가 작은 컴퓨터시스템, 예를 들어 RISC컴퓨터, 특히 하나이상의 명령이 각 클럭사이클에 실행되는 슈퍼-스캐일러(Super-Scaler) RISC 컴퓨터, 에서 특히 일어나기 쉽다.
오늘날, 몇몇 최신 캐시메모리는 같은 클럭사이클내에서 판독 및 기입동작을 수행할 수 있다. 그 결과 캐시메모리내에 있는 명령 또는 데이타에 대한 연속적인 요청은 클럭사이클의 제 2반주기동안에 만족될 수 있다. 데이타 또는 명령이 캐시 메모리내에 있으며 실제로 부가적인 하드웨어의 투자함이 없이도 클럭사이클의 제 2 반주기동안에 캐시메모리로부터 그들의 독출을 동기화시키는 것이 문제점으로 알려져 있다. 마찬가지로, 주메모리로부터 검색되고 있는 과정의 데이타 또는 명령에 대한 연속적인 요청을 만족하기 위해서는 명령 또는 데이타가 검색될때, 실제로 부가적인 하드웨이 투자함이 없이 그들의 검색과 CPU 로의 직접 전송을 동기화하는 때가 문제점인 것으로 알려져 있다.
그러므로, CPU 아이들시간을 더욱 줄일 수 있는 같은 클럭사이클에서 판독 및 기입 동작이 수행되게 하는 캐시메모리로부터 데이타를 페치하는 새로운 접근법이 제공되어져야 한다. 특히 캐시미스페널티가 줄어드는 것이 바람직하다.
CPU 에 의해서 페치되는 연속데이타가 캐시메모리필(fill) 동안에 캐시메모리필이 완료되기를 기다리는 아이들로 CPU 를 유지함이 없이도 CPU 로 돌아올 수 있다면, 페치되는 데이타가 현재 캐시되는 메모리블록프레임의 일부분이 된다면 이것 또한 바람직하다.
앞으로 설명될 것처럼, 이런 목적 및 바람직한 결과는 종래기술의 단점을 극복하고, CPU 아이들시간을 더욱 줄이는 CPU 에 대한 데이타페치하는 캐시메모리제어기 및 방법을 제공하는 본 발명의 바람직한 결과 및 목적중에 있다.
[발명의 요약]
캐시미스페널티를 더욱 줄이는 명령/ 데이타를 캐싱하는 방법 및 장치가 개시되어 있다. 본 발명에서, 캐시어레이, 캐시태그와 비교기단 및 캐시멀티플렉서는 캐시 메모리에 제공된다. 더욱이 이런 요소들은 캐시미스페널티를 더욱 줄이는 방법으로 실행되는 명령/데이타를 제공하고자 결합된다.
한 실시예에서, 캐시어레이는 주메모리에 저장된 명령/ 데이타 부분집합을 저장하는 다수의 캐시라인을 갖는 다수의 캐시집합으로 구성된다. 캐시어레이에 대해 수행되는 각 캐시동작, 판독 또는 기입은 단지 클럭사이클의 반주기동안에 완료된다. 그러므로 한 클럭사이클동안에 두 캐시동작이 캐시어레이에 대해서 수행될 수 있다.
캐시태그와 비교기단은 캐시태그어레이, 캐시미스버퍼 및 제어로직으로 구성된다. 한 실시예에서, 캐시태그어레이는 다수의 대응캐시집합엔트리로 구성된다. 각각의 캐시집합엔트리는 어드레스태그 및 대응하는 캐시집합의 각 캐시라인에 대한 많은 제어비트로 구성된다. 또한 이런 요소들은 어느 메모리블럭프레임이 현재 저장되었는지, 메모리블럭어레이가 캐시어레이의 어디에 저장되었는지를 나타낸다.
캐시어레이와 유사하게 캐시태그어레이에 대한 각 캐시동작, 판독 또는 기입은 단지 클럭사이클의 반주기동안에 완료된다. 현재 바람직한 형태인 캐시미스버퍼는 작동표시기, 어드레스태그, 인덱스, 많은 유효비트 및 블록값을 저장하는 많은 저장기억장소로 구성된다. 또한 이런 요소들은 진행중인 캐시필의 현상태를 나타낸다.
제어로직은 태크매치동작을 수행하는 다수의 조합로직으로 구성된다. 선택된 캐시 집합엔트리의 어드레스태그에 대해 수행되는 표준태크매치동작뿐만 아니라, 제어로직은 캐시미스버퍼에 저장된 어드레스태그에 대하여 액세스된 어드레스로 태그매치동작을 또한 조건적으로 수행한다. 태그매치동작의 결과에 의존하며 페치된 명령/데이타가 진행중인 현재 캐시필의 메모리블럭프레임의 일부분인 것이 결정된다면 명령/데이타가 선택된 캐시라인에 저장되고 검색되는지에 의존하는 제어로직은 적당한 신호를 캐시어레이, 주메모리 및 명령/데이타 목적지에 제공한다.
그 결과, 진행중인 현캐시필의 메모리블록프레임의 일부분인 명령/데이타를 요청하는 명령/데이타는 현재 캐시필이 완료하기를 기다릴 필요없이 충족될 수 있다. 이것에 의해서 캐시미스페널티 및 기능단의 아이들시간이 감소하게 된다.
본 발명의 목적, 특징 및 이점은 도면을 참조해서 발명의 바람직한 실시예의 상세한 설명을 통해 명확해질 것이다.
[바람직하고 선택적인 실시예의 상세한 설명]
캐시미스페널티를 더욱 줄이는 명령/데이타를 캐싱하는 방법 및 장치가 개시된다. 차후 서술은 설명의 목적으로서 특정수, 요소 및 형상은 본 발명의 완전한 이해를 제공하고자 표현되었다. 그러나 본 발명은 특정한 사항이 없이도 실시될 수 있다는 것은 본 기술의 숙련자에게는 명확할 것이다. 다른 예에서, 잘 알려진 시스템은 본 발명을 명확히 하기 위해서 도식적으로 또는 블록도 형태로 도시되었다.
제 1도에서, 본 발명의 교시를 실현하는 예시의 프로세서를 나타내는 기능블럭도가 도시되었다. 명령캐시(34), 데이타캐시(36), 공유메모리 관리장치(38), 기입버퍼(40) 및 캐시코히어런트(coherent) 버스 인터페이스장치(42)로 구성되는 예시적인 프로세서(10)가 도시되었다. 명령과 데이타캐시(34 및 36)는 공유메모리 관리장치(38)및 캐시코히어런트 버스 인터페이스장치(42)와 결합한다. 데이타캐시(36)는 또한 기입버퍼(40)와 또한 결합한다. 공유메모리 관리장치(38) 및 기입버퍼(40)는 번갈아서 주메모리 (도시되진 않음) 와 결합되는 캐시코히어런트 버스 인터페이스장치(42)와 또한 결합한다. 또한 이런 요소들은 캐시미스페널티, 특히 기능단의 아이들시간을 더욱 줄이기 위한 방법으로 실행을 위한 명령 및 데이타를 제공하고자 서로 돕는다.
공유메모리 관리장치(38), 기입버퍼(40) 및 캐시코히어런트 버스 인터페이스장치(42)는 대부분의 프로세서에서 발견되는 이런 요소들의 넓은 카테고리를 표현하고자 하는 것이다. 이들의 기본기능 및 구성은 널리 알려져 있으므로 더욱 설명하진 않을 것이다. 명령과 데이타캐시(34 및 36)는 제 2도 내지 제 5도를 참조해서 후에 상세히 설명될 것이다.
제 1도를 상세히 살펴보면, 프로세서는 프로그램카운터(12), 명령류(14) 및 명령제어 장치(16)로 더욱이 구성된다. 프로그램카운터(12), 명령큐(14) 및 명령제어장치(16)는 서로 결합된다. 또한, 프로그램카운터(12)는 공유메모리 관리장치(38) 및 명령캐시(34)와 결합되고 더욱이 명령큐(14)는 명령캐시(34)에 또한 결합된다. 또한 그들은 실행명령을 내기 위해서 서로 돕는다.
프로그램카운터(12), 명령큐(14) 및 명령제어장치(16)는 대부분의 프로세서에서 발견되는 이런 요소의 넓은 카테고리를 표현하고자 하는 것이다. 이들의 기본기능 및 구성은 잘 알려져 있으므로 더욱 설명되지는 않을 것이다.
제 1도를 계속 참조하면, 프로세서(10)는 프로그램카운터(12), 명령큐(14) 및 명령제어 장치(16)로 더욱이 구성된다. 프로그램카운터(12), 명령큐(14) 및 명령제어장치(16)는 서로 결합된다. 또한 프로그램카운터(12)는 공유메모리 관리장치(38) 및 명령캐시(34)와 결합되고, 더욱이 명령큐(14)는 명령캐시(34)와 또한 결합한다. 또한 그들은 실행명령을 내기 위해서 서로 돕는다.
프로그램카운터(12), 명령큐(14) 및 명령제어장치(16)는 대부분의 프로세서에서 발견되는 이런 요소들의 넓은 카테고리를 표현하고자 하는 것이다. 이들의 기본기능 및 구성은 잘 알려져 있으므로 더욱 설명되지는 않을 것이다.
계속해서 제 1도를 보면, 프로세서(10)는 정수단 레지스터파일(18), 정수기능단(20), 부동소숫점 명령큐(24), 부동소숫점 제어장치(26), 부동소숫점단 레지스터파일(28), 부동소숫점 기능단(30) 및 멀티플렉서(32)로 더욱이 구성된다. 정수단 레지스터파일(18)은 번갈아 공유메모리 관리장치(38) 및 데이타캐시(36)와 결합되는 정수기능단(20) 및 명령제어장치(16)와 결합된다. 부동소숫점 명령큐(24)는 번갈아 부동소숫점단 레지스터 파일(28)과 결합하는 부동소숫점 명령제어장치(26) 및 명령제어장치(16)와 결합된다.
부동소숫점단 레지스터파일(28)은 부동소숫점단(30) 및 데이타캐시(26)와 직접 결합되고 멀티플렉서를 통해 간접적으로 결합된다. 부동소숫점단은 또한 멀티플렉서(32)를 통해 간접적으로 데이타캐시(36)와 결합된다. 또한 이런 요소들은 정수 및 부동소숫점 결과를 발생시키기 위해서 서로 돕는다.
정수 레지스터파일(18), 정수기능단(20), 부동소숫점 명령큐(24), 부동소숫점 명령제어장치(26), 부동소숫점단 레지스터파일(28), 부동소숫점단(30) 및 멀티플렉서(32)는 대부분의 프로세서에서 발견되는 이런 요소들의 넓은 카테고리를 표현하고자 하는 것이다. 이들의 기본기능 및 구성은 잘 알려져 있으므로, 더욱 설명되지는 않을 것이다.
본 발명을 쉽게 이해하기 위해서 본 발명이 예시적인 프로세서(10)로 서술되어 있지만, 본 발명이 다른 구조의 프로세서로 실시될 수 있다는 것은 이후의 설명으로 부터 명백해질 것이다. 특히, 본 발명은 캐시메모리를 명령 및 데이타캐시로 나눔이 없이 실시될 수 있다.
제 2도를 참조하면, 제 1도의 명령 및 데이타케시, 메모리관리장치를 나타내는 기능 블럭도가 도시되어 있다. 명령캐시어레이(44), 명령캐시태그와 비교기단(46) 및 멀티플렉서(48)로 구성되는 명령캐시(34)가 도시되어 있다. 명령캐시어레이(44) 및 명령 캐시태그와 비교기단(48)은 번갈아 명령큐와 결합되는 프로그램카운터와 멀티플렉서(48)에 결합된다. 명령캐시어레이(44)는 캐시코히어런트 버스 인터페이스장치를 통해 주메모리와 또한 결합되고, 더욱이 명령캐시태그와 비교기단(46)은 멀티플렉서(60)를 통해 메모리관리장치(38)와 또한 결합된다. 더욱이, 이런 요소들은 캐시미스페널티, 특히 기능단아이들시간을 감소시키는 방법으로 명령을 명령큐에 제공하고자 서로 돕는다.
명령캐시어레이(44)는 세트어소시어티브(set associative) 방법으로 주메모리에 저장된 명령의 부분집합을 저장하는 다수의 캐시라인으로 구성된다. 명령캐시어레이(44)는 주메모리로부터 명령을 수신하고, 명령캐시태그로부터 캐시라인 선택신호를 수신하고 입력으로서 비교기단(46)을 수신한다. 이에 반응해서 명령캐시어레이(44)는 선택된 캐시라인에 있는 수신된 명령을 저장한다. 캐시라인의 선택은 어떠한 공지의 방법으로 구현될 수 있다. 비록 본 발명이 세트어소시어티브 매핑을 사용하는 명령캐시어레이로 설명된다 할지라도 본 발명은 다른 매핑기술을 사용하는 명령캐시어레이로 실시될 수 있음을 이해할 수 있을 것이다.
또한, 명령캐시어레이(44)는 입력으로서 프로그램카운터로직으로부터 가상어드레스를 수신한다. 이에 반응하여, 각각의 가상어드레스에 대한 명령캐시어레이(44)는 가상어드레스와 대응하는 캐시라인의 집합에 저장된 명령을 멀티플렉서(48)로 출력한다. 비록 본 발명이 물리어드레스를 이용하는 태크매치동작과 가상어드레스를 이용하는 한 집합의 캐시라인 초기선택으로 설명되고 있다 할지라도, 본 발명이 그런 한 집합의 명령캐시라인의 초기선택이나 태그매치동작을 위해 물리어드레스를 지정함이 없이 실시될 수 있다는 것은 이해할 수 있을 것이다.
명령캐기어레이(44)에 대한 각각의 캐시동작, 판독 또는 기입은 클럭사이클의 반주기만에 완료한다. 그러므로, 두 캐시동작은 한 클럭사이클안에서 명령캐시어레이(44)에 대해 수행될 수 있다. 달리 말하자면, 캐시판독동작은 클럭사이클의 제 1반주기내에서 명령캐시어레이(44)에 대해서 수행되고, 클럭사이클의 제 2반주기에서 캐시기입동작이 수행된다.
명정캐시태그와 비교기단(46)은 프로그램카운터로직으로부터 가상어드레스 및 메모리관리장치로부터 물리어드레스 또는 입력으로서 캐시코히어런트 버스 인터페이트장치로 부터 스누프(snoop)어드레스를 수신한다. 이에 반응해서 각각의 입력집합에 대하여 입력캐시태그와 비교기단(46)은 적당한 신호를 명령큐, 명령캐시 멀티플렉서(48) 및 주메모리에 출력한다. 명령캐시태그와 비교기단(46)은 제 3도 내지 제 5도를 참조해서 후에 보다 상세히 설명될 것이다. 본 발명이 입력으로서 스누프어드레스를 수신하는 명령캐시태그와 비교기단(46)으로 설명된다 할지라도,본 발명이 단일명령캐시메모리 및 스누프어드레스가 없는 컴퓨터시스템을 갖는 컴퓨터시스템에서 실시될 수 있음을 이해할 수 있을 것이다.
데이타캐시어레이(50), 데이타캐시태그와 비교기단(52)은 번갈아 정수와 부동소숫점단 레지스터파일과 결합하고, 정수의 부동소숫점기능단과 결합하는 정수기능단과 멀티플렉서(54)에 결합된다. 데이타캐시어레이(50)는 캐시코히어런트 버스 인터페이스장치를 통해 주메모리와 또한 결합되고, 더욱이 데이타캐시태그와 비교기단(52)은 멀티플렉서(62)를 통해 메모리관리장치(38)와 결합된다. 더욱이, 이런 요소들은 캐시미스페널티 특히, 기능단아이들시간을 줄이는 방법으로 데이타를 정수와 부동소숫점단 레지스터파일 및 정수와 부동소숫점기능단에 제공하고자 서로 돕는다.
명령캐시어레이(44)와 유사하게, 데이타캐시어레이(50)는 세트어스시어티브 방법으로 주메모리에 저장된 데이타부분집합을 저장하는 다수의 캐시라인으로 구성된다.
데이타캐시어레이(50)는 주메모리로부터 데이타 및 데이타캐시태그와 입력으로서 비교기단(52)으로부터 캐시라인 선택신호를 수신한다. 이에 반응해서, 데이타캐시어레이(50)는 선택된 캐시라인의 수신된 데이타를 저장한다. 캐시라인의 선택은 어떤 공지의 방법으로 또한 구현될 수 있다. 유사하게, 본 발명이 세트어스시어티브 매핑을 사용하는 데이타캐시어레이에 대해 설명되고 있다 할지라도, 본 발명이 다른 매핑 기술을 사용하는 데이타캐시어레이로 실시될 수 있다는 것은 이해할 수 있을 것이다.
더욱이, 데이타캐시어레이(50)는 입력으로서 정수기능단으로부터 가상어드레스를 수신한다. 이에 반응해서, 각각의 가상어드레스에 대한 데이타캐시어레이(50)는 가상 어드레스와 대응하는 캐시라인의 집합에 저장된 데이타를 멀티플렉서(54)로 출력한다. 마찬가지로, 본 발명이 가상어드레스를 이용하는 한 집합의 캐시라인의 초기선택과 물리어드레스를 이용하는 태크매치동작으로 설명된다 할지라도, 본 발명이 그런 한 집합의 데이타캐시라인의 초기선택과 태크매치동작을 위해 물리어드레스를 지정함이 없이 실시될 수 있다는 것은 이해될 수 있을 것이다.
명령캐시태그어레이(44)와 유사하게, 데이타캐시어레이(50)에 대한 각 캐시동작, 판독 및 기입은 클럭사이클의 반주기만에 완료된다. 그러므로 두 캐시동작은 한 클럭 사이클안에 데이타캐시어레이(50)에 대해 수행될 수 있다. 달리 말하자면, 캐시 기입동작은 클럭사이클의 제 1반주기동안에 데이타캐시어레이(50)에 대해 수행되고 클럭사이클의 제 2반주기동안에는 캐시판독동작이 수행된다.
데이타캐시태그 및 비교기단(52)은 정수기능단으로부터 가상어드레스 및 메모리관리 장치로부터 물리어드레스 또는 입력으로서 캐시코히어런트 버스 인터페이스장치로부터 스누프어드레스를 수신한다. 이에 반응해서, 각 입력세트에 대한 데이타캐시태그와 비교기단(46)은 적당한 신호를 레지스터파일 또는 기능단, 데이타캐시멀티플렉서(52) 및 주메모리에 출력한다. 데이타캐시태그와 비교기단(5) 은 제 3 내지 5도를 참조해서 후에 더욱 상세히 설명될 것이다. 본 발명이 데이타캐시태그와 입력으로서 스누프어드레스를 수신하는 비교기단(52)으로 설명되고 있다 할지라도, 본 발명이 단일명령 캐시메모리 및 어떤 한 스누프어드레스도 없는 컴퓨터시스템을 갖는 컴퓨터시스템에서 실시될 수 있음을 이해할 수 있을 것이다.
제 2도에는 또한 멀티플렉서(56)와 서로 결합된 완전연관변환색인 버퍼(58)로 구성되는 메모리관리장치(38)가 도시되어 있다. 또한, 멀티플렉서(56)는 프로그램카운터 및 정수기능단과 결합되고, 더욱이 변환색인 버퍼는 멀티플렉서(60 및 62) 각각을 통해서 명령 및 데이타캐시(34 및 36)와 결합된다. 또한 이런 요소들은 가상어드레스를 명령 및 데이타캐시(34 및 36)에 대한 물리어드레스로 변환하고자 서로 돕는다. 멀티플렉서(56) 및 변환색인 버퍼(58)는 대부분의 프로세서에서 발견되는 이런 요소의 넓은 카테고리를 표현하고자 하는 것이다. 그들의 구성 및 기능은 공지이므로 여기서는 더이상 설명되지 않을 것이다.
제 3도를 참조하면, 제 2도의 비교기단 및 명령/ 데이타 캐시태그를 나타내는 기능 블록도가 도시되어 있다. 캐시태그어레이(64), 캐시미스버퍼(66) 및 제어로직(68)으로 구성되는 명령/데이타 캐시태그 및 비교기단(46 또는 52)가 도시되어 있다.
캐시태그어레이(64) 및 캐시미스버퍼(66)는 제어로직(68)에 결합된다.
더욱이, 캐시태그어레이(64)는 가상어드레스 입력원 즉, 프로그램카운터 또는 정수기능단과 결합된다. 제어로직(68)은 캐시코히어런트 버스 인터페이스장치를 통해서 명령/ 데이타 캐시어레이, 명령/ 데이타 캐시 멀티플렉서, 명령/ 데이타 목적지, 물리어드레스원 및 주메모리와 결합된다. 명령/데이타 목적지는 명령큐, 레지스터파일 및 기능단이다. 물리어드레스원은 메모리관리장치 및 다른 명령/데이타 캐시메모리이다.
또한 이런 요소들은 메모리판독신호를 주메모리에 제공하고자, 캐시라인 선택신호를 캐시어레이에 제공하고자, 입력라인 선택신호를 캐시멀티플렉서에 제공하고자 명령/ 데이타 유효신호를 명령/ 데이타 목적지에 제공하고자 서로 돕는다.
명령/ 데이타 캐시태그어레이(64)는 다수의 대응명령/ 데이타 캐시집합엔트리로 구성된다. 각각의 명령/ 데이타 캐시집합엔트리는 어드레스태그 및 대응하는 명령/ 데이타 캐시집합의 각 캐시라인에 대한 많은 수의 제어비트로 구성된다.
명령/ 데이타 캐시어레이와 유사하게, 명령/ 데이타 캐시태그어레이(64)에 대한 각 캐시동작은 또한 클럭사이클의 반주기만에 완료된다. 캐시동작완료클럭율을 제외하고, 명령/ 데이타 캐시태그어레이(64)는 대부분의 프로세서에서 발견되는 태그어레이의 넓은 카테고리를 표현하고자 하는 것이다. 그 구성 및 기본기능은 공지이므로 더이상 설명되지 않을 것이다.
명령/ 데이타 캐시미스버퍼(66)는 다수의 저장기억장소로 구성되어 있다.
명령/ 데이타 캐시미스버퍼(66)는 입력으로서 캐시미스 서술정보를 수신한다.
이에 반응해서, 명령/ 데이타 캐시미스버퍼(66)는 그들을 적당한 저장기억장소에 저장 한다. 또한, 명령/ 데이타 캐시미스버퍼(66)는 입력으로서 판독신호를 수신한다. 이에 반응해서, 명령/ 데이타 캐시미스버퍼(66)는 저장된 적당한 캐시미스정보를 출력한다. 명령/ 데이타 캐시태그어레이(64)와 유사하게, 명령/ 데이타 캐시미스버퍼(66)에 대한 각 판독 또는 기입동작은 클록사이클의 반주기만 걸린다. 캐시미스 서술정보는 제 4도를 참고로 해서 후에 상세히 설명될 것이다. 명령/ 데이타 캐시미스버퍼(66)가 명령/ 데이타 캐시태그 및 비교제어로직과 협동하는 방법은 제 5도를 참고로 해서 더욱 상세히 설명될 것이다.
명령/ 데이타 캐시태그 및 비교제어로직(68)은 다수의 조합로직으로서 구성된다. 명령/ 데이타 캐시태그 및 비교제어로직(68)은 명령/ 데이타 캐시태그어레이로부터 명령/ 데이타 어드레스태그, 명령/ 데이타 캐시미스버퍼로부터 명령/ 데이타 캐시미스 서술정보 및 메모리관리장치로부터 물리어드레스 또는 입력으로서 캐시코히어런트 버스 인터페이스 장치로부터 스누프어드레스를 수신한다.
이에 반응해서, 명령/ 데이타 캐시태그 및 비교제어로직(68)은 태그매치동작을 수행하고, 적당한 신호를 명령/ 데이타 캐시어레이, 명령/ 데이타 캐시멀티플렉서, 주메모리, 명령큐, 레지스터파일 및 기능단에 출력한다. 명령/데이타 캐시태그 및 비교제어로직은 제 5도를 참고로 해서 이하에 상세히 설명될 것이다.
제 4도를 참조하면, 제 3도의 명령/ 데이타 캐시미스버퍼에 저장된 명령/ 데이타 캐시미스 서술정보를 나타내는 블록도가 도시되어 있다. 어드레스태그(70), 인덱스(72), 많은 유효비트(74), 블럭값(76) 및 작동표시기(78)로 구성되는 명령/ 데이타 캐시미스 서술정보가 도시되어 있다. 또한 그들은 캐시필의 현상태를 설명하고자 협동한다.
작동표시기(78)는 만약 캐시필이 진행중이라면 세트된다. 작동표시기(78)가 세트됐을때, 명령/ 데이타 캐시미스버퍼(66)에 저장된 캐시미스 서술정보는 태그매치동작에 포함된다. 어드레스태그(70)는 진행중인 캐시필에 의해서 주메모리로부터 검색되고 있는 메모리블럭프레임과 동일시된다. 인덱스(72)는 메모리블럭프레임이 진행중인 캐시필에 의해서 저장되고 있는 곳에서 명령/ 데이타 캐시세트와 동일시된다.
블럭값(76)은 명령/ 데이타 캐시집합의 어느 캐시라인이 메모리블럭프레임을 진행중인 캐시필에 의해서 저장하는지 나타낸다. 유효비트(74)는 만약 그들의 대응블럭 오프셋이 인덱스(72)와 블럭값(76)에 의해서 동일시되는 명령/ 데이타 캐시세트의 캐시라인에 저장된다면 세트된다.
제 5도를 참고하면, 제 3도의 비교기단 및 명령/ 데이타 캐시태그의 제어로직의 논리순서를 나타내는 순서는 도시되어 있다. 초기에, 제어로직은 명령/ 데이타 캐시태그어레이로부터 동시에 많은 어드레스태그를 판독한다 (블록(82)).
어드레스태그는 가상어드레스에 의해서 인덱스된 명령/ 데이타 캐시집합엔트리로부터 판독된다. 제어로직은 그후 그들의 어드레스태그에 대해서 태그매치동작을 수행한다 ( 블록(84)). 만약 매치가 발견된다면 (캐시히트)(블록(84a)) 제어로직은 입력라인 선택신호가 명령/ 데이타 캐시멀티플렉서에 제공되게 한다 (블록(100)).
더욱이, 제어로직은 명령/ 데이타 유효신호가 명령큐, 한 레지스터파일 또는 한 기능단에 제공되게 한다 (블록(98)).
만약 매치가 이루어진다면 (분기(84b)) 제어로직은 명령/ 데이타 캐시미스버퍼 (블록(86))으로부터 캐시미스 서술정보를 판독한다. 제어로직은 그후 작동표시기가 세트될때 (블록(87)) 를 알기 위해 체크된다. 만약 작동표시기가 세트된다면 (블록(87a)) 제어로직은 진행중인 캐시필의 어드레스태그에 대해서 태그매치동작 (블록(88))을 수행한다.
만약 작동표시기가 세트안되면 (블록(87b)) 또는 부가의 태그매치동작이 일어나지 않는다면 (분기(88b)) (캐시미스), 제어로직은 신호를 판독하게 하고 물리어드레스를 주메모리에 보내게 한다 (블록(94)). 제어로직은 또한 기입되게 하고 캐시라인 선택신호가 명령/ 데이타 캐시어레이에 보내지게 하며, 캐시미스 서술정보를 갱신하며 명령/ 데이타 캐시미스버퍼의 작동표시기를 사용가능하게 한다 (블록(96)).
더욱이, 제어로직은 명령/ 데이타 유효신호가 명령큐, 하나의 레지스터파일 또는 하나의 기능단에 제공되게 한다 (블록(98)).
작동표시기가 세트되고, 부가의 태그매치동작이 성공적이라면 (블록88a)), (캐시미스이지만 명령/ 데이타는 진행중인 캐시필의 메모리블록프레임의 일부분이다), 제어로직은 특정 명령/ 데이타가 주메모리로부터 검색되는지 선택된 캐시라인에 저장되는지 (블록(90)) 결정하기 위해서 유효비트를 검사한다. 만약 명령/데이타가 검색되고 저장된다면 (분기(90a)), 제어로직은 입력선 선택신호가 명령/ 데이타 캐시멀티플렉서에 제공되게 한다 (블록(100)). 더욱이 제어로직은 명령/ 데이타 유효비트가 명령큐, 하나의 레지스터파일 또는 하나의 기능단에 제공되게 한다 (블록(98)).
만약 명령/ 데이타가 검색되지 않고 선택된 캐시라인에 저장되지 않는다면,제어로직은 명령/ 데이타가 주메모리로부터 돌아오는 다음 명령/ 데이타인지 아닌지를 유효비트를 사용해서 더욱이 결정한다 (블록(92)). 만약 명령/ 데이타가 돌아온 다음 명령/ 데이타가 아니라면, 제어로직은 명령/ 데이타가 돌아온 다음 명령/ 데이타가 될때까지 그 결정을 반복한다. 명령/ 데이타가 돌아온 다음 명령/ 데이타가 되는지 결정할때 (블록(92a)), 제어로직은 명령/ 데이타 유효신호가 명령큐, 하나의 레지스터파일, 또는 하나의 기능단에 제공되게 한다 (블록(98)).
제어로직의 논리순서는 태그어레이의 판독과 캐시미스버퍼의 판독 (블록(82,86)), 및 별개의 단계로서 제 1과 제 2태그매치 (블록(84,88))로 설명되고 있다 할지라도, 조작상 태그어레이와 캐시미스버퍼는 함께 판독되고 (블록(82,88)) 제 1과 제 2태그매치는 또한 함께 수행 (블록(84,88))될 수 있다.
본 발명이 현재의 바람직하고 선택적인 실시예로 설명되고 있다 하더라도, 본 기술의 숙련자들은 본 발명이 설명된 실시예에 한정되지 않는다는 것을 인식할 것이다.
본 발명의 방법 및 장치는 첨부된 청구항의 범위 및 의도내에서 변경 및 수정을 통해 실시될 수 있다. 설명은 따라서 본 발명에 대한 제한이 아니라 예시적인 것으로 여겨진다.
Claims (18)
- 컴퓨터시스템에 있어서, (a) 상기 컴퓨터시스템의 주메모리의 다수의 메모리블록프레임을 캐시어레이의 다수의 캐시라인에 저장하는 단계; (b) 상기 캐시된 메모리블록프레임에 대한 다수의 어드레스태그를 상기 캐시라인에 대응하는 캐시태그의 다수의 캐시태그엔트리에 저장하는 단계; (c) 진행중인 캐시필와 메모리블록프레임에 대한 캐시필 서술정보를 캐시미스버퍼에 저장하는 단계; (d) 상기 캐시된 메모리블록프레임과 상기 캐시필 서술정보에 대한 상기 어드레스 태그를 사용하는 명령/ 데이타 요청에 대해서 캐시 히트/ 미스를 결정하는 단계; 및 (e) 적당한 신호를 상기 캐시어레이, 상기 주메모리 및 상기 명령/ 데이타 요청에 따라서 요청된 명령/ 데이타에 대한 목적지에 제공하는 단계를 포함하고, 상기 캐시필이 완료되기를 기다릴 필요없이 만약 상기 요청된 명령/ 데이타가 진행중인 상기 캐시필의 상기 메모리블록프레임의 일부분이라면 상기 명령/ 데이타 요청이 만족되게 하고, 이것에 의해서 캐시미스페널티를 감소시킬수 있는 것을 특징으로 하는 캐시미스 페널티를 더 감소시키는 명령/ 데이타를 캐싱하는 방법.
- 제1항에 있어서, 상기 단계(c) 에 저장된 상기 캐시필 서술정보는 진행중인 상기 캐시필의 상기 메모리블록프레임에 대한 액티브표시기 및 어드레스태그로 구성되며, 상기 단계(d) 는, (d.1) 상기 요청된 명령/ 데이타가 상기 캐시라인에 캐시되었는지 결정하기 위해서 상기 명령/ 데이타요청의 판독어드레스를 상기 메모리블록프레임의 상기 어드레스태그에 매칭시키는 단계; (d.2) 만약 어떤 매칭도 상기 단계(d.1) 에서 이루어지지 않으며 상기 액티브 표시기가 세트된다면, 상기 요청된 명령/ 데이타가 진행중인 상기 캐시필의 상기 메모리블록프레임 일부분인지 아닌지를 결정하기 위해서 상기 판독어드레스를 진행중인 상기 캐시필의 상기 메모리블록프레임의 상기 어드레스태그에 매칭시키는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제2항에 있어서, 상기 단계(c) 에 저장된 상기 캐시필 서술정보는 경과 표시기를 더 포함하고, 상기 단계(d) 는; (d.3) 만약 매칭이 상기 단계(d.2)인 상기 매칭 단계에서 결정되었다면 상기 요청된 명령/ 데이타가 진행중인 상기 캐시필의 상기 경과 표시기를 사용하는 하나와 상기 캐시라인에 저장되고 상기 주메모리로부터 검색되었는지 아닌지를 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제2항에 있어서, 상기 단계(c) 에 저장된 상기 캐시필 서술정보는 경과표시기를 더 포함하며, 상기 단계(d) 는; (d.3) 만약 매칭이 상기 단계(d.2)인 상기 매칭 단계에서 결정되었다면 상기 요청된 명령/데이타가 진행중인 상기 캐시필의 상기 경과표시기를 사용하는 상기 주메모리로부터 돌아오는 다음 명령/ 데이타로 될 수 있는지 아닌지 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 주메모리의 상기 메모리블럭프레임은 세트 어소시어티브 방법으로 상기 단계(a) 에서 상기 캐시라인에 저장되고; 상기 단계(c) 에 저장된 상기 캐시필 서술정보는 더욱이 인덱스와 블록값을 더 포함하고, 상기 인덱스는 진행중인 상기 캐시필의 상기 메모리블록프레임을 저장하는 캐시세트와 일치시키고, 상기 블록값은 진행중인 상기 캐시필의 상기 메모리블록프레임을 저장하는 상기 캐시세트의 캐시라인과 일치시키는 것을 특징으로하는 방법.
- 제1항에 있어서, 상기 캐시어레이와 상기 캐시태그메어레이 대해서 수행된 각 캐시동작은 클럭사이클의 반주기동안에만 이루어지는 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 캐시어레이는 명령캐시어레이이고, 상기 캐시태그어레이는 명령캐시태그어레이이고, 상기 캐시미스버퍼는 명령캐시미스버퍼이고, 및 상기 명령/ 데이타 요청은 명령요청인 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 캐시어레이는 데이타캐시어레이이고, 상기 캐시태그어레이는 데이타캐시태그어레이이고, 상기 캐시미스버퍼는 데이타캐시미스버퍼이고, 및 상기 명령/ 데이타 요청은 데이타요청인 것을 특징으로 하는 방법.
- 컴퓨터시스템에 있어서, (a) 상기 주메모리의 다수의 메모리블록프레임을 저장하는 다수의 캐시라인을 포함하는 상기 컴퓨터시스템의 주메모리와 연결된 캐시어레이; (b) 상기 캐시된 메모리블록프레임에 대한 다수의 어드레스태그를 저장하는 상기 캐시라인과 대응하는 다수의 캐시태그엔트리를 포함하는 캐시태그어레이; (c) 진행중인 캐시필의 메모리블록프레임에 대한 캐시필 서술정보를 저장하는 캐시미스 버퍼; (d) 적당한 신호를 상기 명령/ 데이타 요청에 의해서 요청된 명령/ 데이타에 대한 목적지, 상기 주메모리 및 상기 캐시어레이에 제공하며, 상기 캐시된 메모리블록 프레임과 상기 캐시필 서술정보에 대한 상기 어드레스태그를 사용하는 명령/ 데이타 요청에 대한 캐시히드/ 미스를 결정하는 상기 캐시미스버퍼, 상기 캐시태그어레이, 상기 캐시어레이, 및 상기 주메모리에 연결된 제어로직을 포함하고, 만약 요청된 상기 명령/ 데이타가 진행중인 상기 캐시필의 상기 메모리블록프레임의 일부분이라면, 상기 명령/ 데이타요청은 상기 캐시필이 완료되기를 기다릴 필요없이 만족되어, 캐시미스페널티를 더 감소시키는 것을 특징으로 하는 캐시미스페널티를 더 감소시키는 명령/ 데이타를 캐싱하는 장치.
- 제9항에 있어서, 상기 캐시미스버퍼에 저장된 상기 캐시필 서술정보는 진행중인 상기 캐시필의 상기 메모리블록프레임에 대한 액티브표시기 및 어드레스태그를 포함하고, 상기 제어로직은; (d,1) 상기 요청된 명령/ 데이타가 상기 캐시라인에 캐시되었는지 아닌지를 결정하기 위해서 상기 메모리블록프레임의 상기 어드레스태그에 대해서 상기 명령/ 데이타 요청의 판독어드레스를 매칭시키는 상기 캐시태그어레이에 연결된 제 1매칭로직; 및 (d.2) 만약 상기 제 1매칭로직에 어떤 매치도 발견되지 않고 상기 액티브표시기가 세트된다면, 요청된 상기 명령/ 데이타가 진행중인 상기 캐시필의 상기 메모리블록프레임의 일부분인지 아닌지를 결정하기 위해서 진행중인 상기 캐시필의 상기 메모리블록프레임의 상기 어드레스태그에 대해서 상기 판독어드레스를 매칭시키는 상기 캐시미스버퍼에 연결된 제 2매칭로직을 포함하는 것을 특징으로 하는 장치.
- 제10항에 있어서, 상기 캐시미스버퍼에 저장된 상기 캐시필 서술정보는 경과 표시기를 더 포함하고, 상기 제어로직은; (d.3) 만약 상기 제 2매칭로직에 의해서 매치가 결정된다면 요청된 상기 명령/ 데이타가 진행중인 상기 캐시필의 상기 경과표시기를 사용하는 하나의 상기 캐시라인에 저장되는지를, 그리고 상기 주메모리로부터 검색되는지 아닌지를 결정하는 상기 캐시미스버퍼에 연결되는 결정로직을 더 포함하는 것을 특징으로 하는 방법.
- 제10항에 있어서, 상기 캐시미스버퍼에 저장된 상기 캐시필 서술정보는 경과표시기를 더 포함하고, 상기 제어로직은; (d.3) 만약 상기 제 2매칭로직에 의해서 매치가 결정된다면, 상기 요청된 명령/ 데이타가 진행중인 상기 캐시필의 상기 경과표시기를 사용하는 상기 주메모리로부터 돌아온 다음 명령/ 데이타로 되는지 아닌지를 결정하는 상기 캐시미스버퍼에 연결된 결정로직을 더 포함하는 것을 특징으로 하는 장치.
- 제9항에 있어서, 상기 캐시어레이는 세트어소시어티브 방법으로 상기 캐시라인에 있는 상기 주메모리의 상기 메모리블록프레임을 저장하고, 상기 캐시미스버퍼에 저장된 상기 캐시필 서술정보는 인덱스 및 블록값을 더 포함하고, 상기 인덱스는 진행중인 상기 캐시필의 상기 메모리블록프레임을 저장하는 캐시세트와 일치시키고 상기 블록값은 진행중인 상기 캐시필의 상기 메모리블록프레임을 저장하는 상기 캐시세트의 캐시라인과 일치시키는 것을 특징으로 하는 장치.
- 제9항에 있어서, 상기 캐시어레이 및 상기 캐시태그어레이에 대해서 수행된 각 캐시동작은 클럭사이클의 반주기동안에만 이루어지는 것을 특징으로 하는 장치.
- 제9항에 있어서, 상기 캐시어레이는 명령캐시어레이이고, 상기 캐시태그어레이는 명령캐시태그어레이이고, 상기 캐시미스버퍼는 명령캐시미스버퍼이며, 및 상기 명령/ 데이타 요청은 명령요청인 것을 특징으로 하는 장치.
- 제9항에 있어서, 상기 캐시어레이는 데이타캐시어레이이고, 상기 캐시태그어레이는 데이타캐시태그어레이이고, 상기 캐시미스버퍼는 데이타캐시미스버퍼이며, 및 상기 명령/ 데이타 요청은 데이타요청인 것을 특징으로 하는 장치.
- (a) 최소한 하나의 실행기능단; 주메모리(b); 및 최소한 하나의 실행기능단과 명령 및 데이타를 캐싱하는 상기 주메모리와 연결된 캐시메모리를 포함하고, 상기 캐시메모리는 최소한 하나의 캐시어레이, 최소한 하나의 캐시태그어레이, 최소한 하나의 캐시미스버퍼 및 최소한 하나의 캐시제어로직을 포함하고, 진행중인 상기 캐시필을 기다릴 필요없이 완료하기 위해서 진행중인 캐시필의 메모리블록프레임의 일부분인 명령/ 데이타를 요청하는 명령/ 데이타 요청을 만족시키는 것을 특징으로 하는 컴퓨터시스템.
- 제17항에 있어서, 상기 캐시메모리는; (c.1) 최소한 하나의 기능단과 명령을 캐싱하는 상기 주메모리와 연결되어, 명령캐시어레이 명령캐시태그어레이, 명령캐시미스버퍼 및 명령캐시제어로직을 포함하고, 진행중인 상기 캐시필을 기다릴 필요없이 완료되기 위해서 진행중인 캐시필의 메모리블록프레임의 일부분인 명령을 요청하는 명령요청을 만족시키는 명령캐시메모리; 및 (c.2) 최소한 하나의 기능단과 데이타를 캐싱하는 상기 주메모리에 연결되어, 데이타캐시어레이, 데이타캐시태그어레이, 데이타캐시미스버퍼 및 데이타캐시제어로직을 포함하고, 진행중인 상기 캐시필을 기다릴 필요없이 완료되기 위해서 진행중인 캐시필의 메모리블록프레임의 일부분인 데이타를 요청하는 데이타요청을 만족시키는 데이타캐시메모리를 포함하는 것을 특징으로 하는 컴퓨터시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US875,983 | 1992-04-29 | ||
US07/875,983 US5353426A (en) | 1992-04-29 | 1992-04-29 | Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete |
Publications (2)
Publication Number | Publication Date |
---|---|
KR930022210A KR930022210A (ko) | 1993-11-23 |
KR100278328B1 true KR100278328B1 (ko) | 2001-01-15 |
Family
ID=25366713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019930006928A KR100278328B1 (ko) | 1992-04-29 | 1993-04-24 | 캐시 미스 버퍼 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5353426A (ko) |
JP (1) | JPH06318177A (ko) |
KR (1) | KR100278328B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100456215B1 (ko) * | 2002-11-11 | 2004-11-06 | 주식회사 에이디칩스 | 블럭 버퍼링을 사용하는 캐쉬 메모리 장치 및 그 제어방법 |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6735685B1 (en) | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5551000A (en) * | 1993-03-18 | 1996-08-27 | Sun Microsystems, Inc. | I/O cache with dual tag arrays |
US5712998A (en) * | 1993-07-13 | 1998-01-27 | Intel Corporation | Fast fully associative translation lookaside buffer with the ability to store and manage information pertaining to at least two different page sizes |
US5555392A (en) * | 1993-10-01 | 1996-09-10 | Intel Corporation | Method and apparatus for a line based non-blocking data cache |
US5751986A (en) * | 1994-03-01 | 1998-05-12 | Intel Corporation | Computer system with self-consistent ordering mechanism |
US6021471A (en) * | 1994-11-15 | 2000-02-01 | Advanced Micro Devices, Inc. | Multiple level cache control system with address and data pipelines |
US5566317A (en) * | 1994-06-14 | 1996-10-15 | International Business Machines Corporation | Method and apparatus for computer disk drive management |
US5897654A (en) * | 1995-02-10 | 1999-04-27 | International Business Machines Corporation | Method and system for efficiently fetching from cache during a cache fill operation |
US5687350A (en) * | 1995-02-10 | 1997-11-11 | International Business Machines Corporation | Protocol and system for performing line-fill address during copy-back operation |
US5802588A (en) * | 1995-04-12 | 1998-09-01 | Advanced Micro Devices, Inc. | Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer |
US6076150A (en) * | 1995-08-10 | 2000-06-13 | Lsi Logic Corporation | Cache controller with improved instruction and data forwarding during refill operation |
US5905902A (en) * | 1995-09-28 | 1999-05-18 | Intel Corporation | Programmable state machine employing a cache-like arrangement |
US5751983A (en) * | 1995-10-03 | 1998-05-12 | Abramson; Jeffrey M. | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations |
US6088783A (en) * | 1996-02-16 | 2000-07-11 | Morton; Steven G | DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word |
US6317819B1 (en) | 1996-01-11 | 2001-11-13 | Steven G. Morton | Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction |
US6026476A (en) * | 1996-03-19 | 2000-02-15 | Intel Corporation | Fast fully associative translation lookaside buffer |
US5781916A (en) * | 1996-03-25 | 1998-07-14 | Motorola, Inc. | Cache control circuitry and method therefor |
US5754885A (en) * | 1996-04-04 | 1998-05-19 | International Business Machines Corporation | Apparatus and method for selecting entries from an array |
US5915262A (en) * | 1996-07-22 | 1999-06-22 | Advanced Micro Devices, Inc. | Cache system and method using tagged cache lines for matching cache strategy to I/O application |
US6065100A (en) * | 1996-11-12 | 2000-05-16 | Micro-Design International | Caching apparatus and method for enhancing retrieval of data from an optical storage device |
US5870576A (en) * | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
US6003119A (en) * | 1997-05-09 | 1999-12-14 | International Business Machines Corporation | Memory circuit for reordering selected data in parallel with selection of the data from the memory circuit |
US6085292A (en) * | 1997-06-05 | 2000-07-04 | Digital Equipment Corporation | Apparatus and method for providing non-blocking pipelined cache |
US6308241B1 (en) | 1997-12-22 | 2001-10-23 | U.S. Philips Corporation | On-chip cache file register for minimizing CPU idle cycles during cache refills |
US6122710A (en) * | 1998-02-17 | 2000-09-19 | International Business Machines Corporation | Dynamic word line driver for cache |
US6442647B1 (en) | 1998-08-21 | 2002-08-27 | International Business Machines Corporation | Method and apparatus for utilization of plural commands to improve read response times of data from a disk track |
KR100505633B1 (ko) * | 1999-03-24 | 2005-08-03 | 삼성전자주식회사 | 캐시 메모리의 데이터 독출 장치 및 방법 |
US6658462B1 (en) | 1999-08-26 | 2003-12-02 | International Business Machines Corporation | System, method, and program for balancing cache space requirements with retrieval access time for large documents on the internet |
US6473834B1 (en) | 1999-12-22 | 2002-10-29 | Unisys | Method and apparatus for prevent stalling of cache reads during return of multiple data words |
US6415357B1 (en) | 1999-12-23 | 2002-07-02 | Unisys Corporation | Caching method and apparatus |
US6801209B1 (en) * | 1999-12-30 | 2004-10-05 | Intel Corporation | Method and apparatus for storing data in a block-based memory arrangement |
US6757817B1 (en) * | 2000-05-19 | 2004-06-29 | Intel Corporation | Apparatus having a cache and a loop buffer |
US7203817B2 (en) * | 2001-09-24 | 2007-04-10 | Broadcom Corporation | Power consumption reduction in a pipeline by stalling instruction issue on a load miss |
US7034849B1 (en) | 2001-12-31 | 2006-04-25 | Apple Computer, Inc. | Method and apparatus for image blending |
US6697076B1 (en) * | 2001-12-31 | 2004-02-24 | Apple Computer, Inc. | Method and apparatus for address re-mapping |
US7681013B1 (en) | 2001-12-31 | 2010-03-16 | Apple Inc. | Method for variable length decoding using multiple configurable look-up tables |
US6751707B2 (en) | 2002-05-06 | 2004-06-15 | Sony Computer Entertainment Inc. | Methods and apparatus for controlling a cache memory |
US7752354B2 (en) * | 2005-02-11 | 2010-07-06 | International Business Machines Corporation | Auxiliary mechanism to manage instruction restart and restart coming in a lookahead processor |
US9098296B2 (en) * | 2012-06-17 | 2015-08-04 | Freescale Semiconductor, Inc. | Method for reducing memory latency in processor |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US10606600B2 (en) | 2016-06-03 | 2020-03-31 | International Business Machines Corporation | Fetched data in an ultra-short piped load store unit |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
CN112394887A (zh) * | 2019-08-17 | 2021-02-23 | 森大(深圳)技术有限公司 | Onepass打印数据高效率处理方法、装置、设备及存储介质 |
CN112527390B (zh) * | 2019-08-28 | 2024-03-12 | 武汉杰开科技有限公司 | 数据获取方法、微处理器及具有存储功能的装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4768148A (en) * | 1986-06-27 | 1988-08-30 | Honeywell Bull Inc. | Read in process memory apparatus |
US5253358A (en) * | 1989-05-19 | 1993-10-12 | Compaq Computer Corporation | Cache memory expansion and transparent interconnection |
-
1992
- 1992-04-29 US US07/875,983 patent/US5353426A/en not_active Expired - Lifetime
-
1993
- 1993-04-24 KR KR1019930006928A patent/KR100278328B1/ko not_active IP Right Cessation
- 1993-04-30 JP JP5124787A patent/JPH06318177A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100456215B1 (ko) * | 2002-11-11 | 2004-11-06 | 주식회사 에이디칩스 | 블럭 버퍼링을 사용하는 캐쉬 메모리 장치 및 그 제어방법 |
Also Published As
Publication number | Publication date |
---|---|
KR930022210A (ko) | 1993-11-23 |
US5353426A (en) | 1994-10-04 |
JPH06318177A (ja) | 1994-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100278328B1 (ko) | 캐시 미스 버퍼 | |
KR100274327B1 (ko) | 캐시가 일관된 다중 처리기 컴퓨터 시스템에서 다중 미결동작을 제공하기 위한 장치 및 그 방법 | |
US4583165A (en) | Apparatus and method for controlling storage access in a multilevel storage system | |
US4774654A (en) | Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory | |
US4493026A (en) | Set associative sector cache | |
US5283886A (en) | Multiprocessor cache system having three states for generating invalidating signals upon write accesses | |
US5577227A (en) | Method for decreasing penalty resulting from a cache miss in multi-level cache system | |
JP3875738B2 (ja) | ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置 | |
JP3323212B2 (ja) | データプレフェッチの方法およびその装置 | |
US5423016A (en) | Block buffer for instruction/operand caches | |
EP0019358B1 (en) | Hierarchical data storage system | |
US7594100B2 (en) | Efficient store queue architecture | |
US7237067B2 (en) | Managing a multi-way associative cache | |
JP2005533295A5 (ko) | ||
JPH06236353A (ja) | マルチプロセッサ・コンピュータ・システムのシステム・メモリの並行性を増大する方法およびシステム | |
EP0543487A1 (en) | Method and cache memory controller for fetching data for a CPU that further reduces CPU idle time | |
EP0271187B1 (en) | Split instruction and operand cache management | |
GB2037466A (en) | Computer with cache memory | |
US12038839B2 (en) | Processor and method for designating a demotion target to be demoted from an in-core cache structure to an out-of-core cache structure | |
JP2700147B2 (ja) | 命令キャッシュ・フラッシュ・オン・rei制御 | |
AL SHIPLY | CACHE MEMORY | |
JPS5818710B2 (ja) | 記憶システム | |
JPH0690681B2 (ja) | キャッシュメモリ制御方式 | |
JPH0421044A (ja) | 1チップキャッシュメモリ | |
JPH02259945A (ja) | ストア処理方式 |
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: 20061011 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |