KR0146059B1 - 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로 - Google Patents
미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로Info
- Publication number
- KR0146059B1 KR0146059B1 KR1019950008366A KR19950008366A KR0146059B1 KR 0146059 B1 KR0146059 B1 KR 0146059B1 KR 1019950008366 A KR1019950008366 A KR 1019950008366A KR 19950008366 A KR19950008366 A KR 19950008366A KR 0146059 B1 KR0146059 B1 KR 0146059B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- prefetch
- cache
- memory
- instruction
- Prior art date
Links
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
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6022—Using a prefetch buffer or dedicated prefetch cache
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)
- Advance Control (AREA)
Abstract
본 발명에 의한 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로는 복합 선인출 기법과 전진 선인출 기법 등과 같은 명령어 선인출 기법에 있어서, 선인출된 명령어 블록을 저장하고 있는 선인출 버퍼가 명령어 교체 매커니즘에 의해 교체될 때 선인출은 되었으나 씨피유에 의해 참조되지 않은 블록을 버리는 대신 캐쉬 메모리에 저장하는 것이다. 이와 같이 미참조 선인출 대신 캐쉬 메모리에 저장하여 두면 다음 번에 그 블록이 참조될 경우 하위 메모리로부터 다시 인출할 필요 없이 캐쉬 메모리에 저장된 블록을 곧 바로 참조할 수 있게 됨으로써, 캐쉬 접근 실패를 줄이고 메모리 지연 시간을 줄일 뿐만 아니라, 메모리 교통량을 줄일 수 있는 효과가 있다.
Description
제1도는 본 발명에 의한 미참조 선인출 캐쉬를 이용한 명령어 선인출 회로를 나타낸 도면.
제2도는 제1도의 선인출 제어부에서 선인출 부호 블록을 결정하는 회로를 나타낸 도면.
* 도면의 주요부분에 대한 부호의 설명
10 : 씨피유 20 : 하위 메모리
30 : 선인출 버퍼 40 : 디멀티플렉서
50 : 미참조 선인출 캐쉬 60 : 명령어 캐쉬
70 : 선인출 제어부
본 발명은 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로에 관한 것으로, 특히 하위 메모리로부터 선인출은 되었으나 씨피유(CPU: Central Processing Unit)에 의해 참조되지 않은 블록을 온-칩 캐쉬 메모리(On-Chip Cache Memory)인 미참조 선인출 캐쉬(Non-Referenced Prefetch Cache:NRP 캐쉬)에 저장하여 둠으로써 캐쉬 접근 실패(Cache Miss)를 줄이고, 하위 메모리에 대한 접근 지연(Access Latency)을 감소시키며, 아울러 메모리 교통량(Memory Traffic)을 감소시킨 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로에 관한 것이다.
씨피유의 성능(Performance)은 매우 빠른 속도로 발전되고 있는데 비해 메모리의 성능이 발전되는 속도는 이에 미치지 못하고 있는데, 이와 같은 씨피유와 메모리간의 성능 격하(Performance Gap)는 시간이 지남에 따라 더욱 심화되고 있는 실정이다. 따라서, 메모리 계층(Memory Hierarchy)을 효율적으로 구성하는 것이 컴퓨터 시스템의 전체 성능에 더욱 중요한 영향을 미치는 요소로 부각되었다.
현재 대부분의 컴퓨터 시스템에서는 메모리의 효율적인 구성을 위하여 캐쉬 메모리가 사용되고 있다. 캐쉬 메모리는 기본적으로 컴퓨터가 프로그램을 수행할 때 나타나는 참조 집약성(Locality of Reference)을 이용하는 것이다. 일반적으로 컴퓨터 프로그램이 수행될 때 씨피유가 참조하는 하위 메모리의 어드레스는 어느 한정된 시간에서는 하위 메모리의 영역 중에서 한 두 영역을 집중적으로 참조하는데, 이를 공간적 집약성(Spatial Locality)이라 한다. 보통의 프로그램들에서는 몇 개의 루프(Loop)가 실행되는데 소요되는 시간이 전체 프로그램 수행 시간의 대부분을 차지하며, 한 루프 안에서는 똑같은 명령들이 계속 반복되어 수행된다. 또한, 현재 참조되는 명령들이 곧 다시 참조되는 경우가 많은데 이를 시간적 집약성(Temporal Locality)이라 한다. 이러한 집약성을 이용하여, 하위 메모리와 씨피유 사이에 속도가 매우 빠른 소정의 기억 장치를 두고 이 곳에 프로그램에서 자주 사용되는 하위 메모리의 일부 영역을 저장하는 것이 캐쉬 메모리의 원리이다. 그런데, 대부분의 응용프로그램들이 이와 같은 2가지 특성을 모두 가지고 있으므로, 수 킬로 바이트의 작은 캐쉬 메모리가 사용되는 경우에도 씨피유가 하위 메모리를 참조하는 전체 참조의 90% 이상이 캐쉬 메모리에서 처리될 수 있다.
캐쉬 메모리를 사용함에 있어, 씨피유가 참조하고자 하는 명령어 블록이 캐쉬 메모리에 존재하여 씨피유가 그 블록을 참조하게 되는 것을 캐쉬 접근 성공(Cache hit)이라 하고, 그렇지 않은 경우를 캐쉬 접근 성공률(Hit Ratio)이 사용되는데, 이를 식으로 나타내면 다음과 같다.
한편, 캐쉬 접근 실패의 유형을 크게 3가지로 나누면, 초기 접근 실패(Compulsory Miss), 충돌 접근 실패(Conflict Miss), 그리고 용량 접근 실패(Capacity Miss)로 분류된다. 초기 접근 실패는 어떤 블록이 최초로 참조될 때 발생되는 캐쉬 접근 실패이다. 충돌 접근 실패는 캐쉬 메모리 영역에 사상(Mapping)되어 있던 블록이 다른 블록으로 교체(Replacement)된 후 다시 참조될 때 발생되는 접근 실패이다. 용량 접근 실패는 어떤 응용 프로그램을 수행함에 있어 씨피유가 자주 참조하는 페이지(Page)의 집합인 작업 집합(Working Set)이 캐쉬 메모리의 용량보다 큰 경우 발생되는 접근 실패이다.
이러한 종류에 접근 실패는 캐쉬 메모리의 용량이 증가함에 따라 전체 접근 실패에 대한 각각의 비율이 달라진다. 초기 접근 실패는 그 특성상 캐쉬 메모리의 용량과는 거의 상관없이 일정하나, 충돌 접근 실패와 용량 접근 실패는 캐쉬 메모리의 용량이 커지면 감소하는 경향을 보이게 된다. 그런데, VLSI(Very Large Scale Integration)의 발달에 따라 온-칩 캐쉬 메모리 용량이 점차 증가하고 있으므로, 초기 접근 실패가 전체 캐쉬 접근 실패에서 차지하는 비율이 증가하게 되었다. 이러한 상황에서, 현재 대부분의 컴퓨터 시스템이 대용량의 캐쉬 메모리를 주로 사용함에 따라, 상기와 같은 초기 접근 실패를 효과적으로 줄이는 방법의 중요성이 더욱 증가되고 있다.
초기 접근 실패를 줄이는 방법 중 가장 간단한 것은 캐쉬 블록의 크기를 증가시키는 것이다. 캐쉬 블록의 크기를 증가시키면 한 번의 캐쉬 접근 실패 시에 보다 많은 양의 내용이 캐쉬 메모리에 저장되므로 순차적인 메모리 참조의 경우 캐쉬 접근 실패를 줄일 수 있다. 그러나, 이 방법은 한 블록을 하위 메모리로부터 캐쉬 메모리로 인출하는데 소요되는 씨피유 사이클이 증가하고, 메모리 교통량이 증가하며, 캐쉬 접근 실패의 비용이 증가한다는 단점이 있다. 그리고, 캐쉬 블록의 크기가 큰 경우에는 참조되는 부분이 블록의 일부라 한지라도 전체 블록이 교체되어야 하므로 캐쉬 오염(Cache Pollution)이 발생되어 성능의 저하가 초래된다. 또한, 블록의 크기는 메모리 지연(Latency)과 전송률(Transfer Rate)을 반영해서 결정하여야 하므로 선인출 가능의 강화를 위해 캐쉬 블록의 크기를 단순히 증가시킬 수는 없는 문제점이 있다.
이러한 단점을 극복하기 위하여 여러 선인출 기법이 제안되었다. 선인출이란 씨피유가 메모리의 어느 블록에 대한 참조를 하기 이전에, 참조가 예상되는 메모리 블록을 하위 메모리로부터 상위 메모리로 미리 인출하는 것을 말한다. 선인출 기법중 가장 간단한 기법인 순차 선인출(Sequential Prefetching) 기법은 현재 씨피유에 의해 참조되는 블록의 순차적인 다음 블록을 선인출하는 방법이다. 순차 선인출 기법은 응용프로그램에서 메모리 참조가 순차성을 많이 갖는 경우에는 성능의 큰 향상을 얻을 수 있다. 일반적으로, 명령어 참조는 데이터 참조에 비해 보다 큰 지역성을 가지므로 순차 선인출이 비교적 우수한 성능을 보인다. 또한, 이를 수행하기 위한 하드웨어가 복잡하지 않다는 장점을 지닌다. 그러나, 순차 선인출 명령어의 참조가 순차적인 경로를 따르지 않는 경우에는 성능의 향상을 기대할 수 없다. 즉, 조건 분기 명령이나 무조건 분기 명령 등과 같이 메모리 참조가 비순차적인 경로로 진행되는 경우에는 순차 선인출로 얻을 수 있는 이득이 그리 크지 못한 단점이 있다.
목표 선인출(Target Prefetching)은 이전에 어떤 블록에 대한 참조가 수행되었던 경로를 예측 테이블에 저장해 두었다가, 이후에 그 블록에 대한 참조가 수행될 때 예측 테이블에 저장해 둔 정보를 이용하여 선인출한 블록을 결정하는 방법이다. 목표 선인출 기법은 무조건 분기뿐만 아니라 조건 분기 명령도 이전의 수행 경로를 따르는 경향이 많음에 기인한다. 따라서, 이전에 수행되었던 메모리 참조가 순차 블록(Sequential Block)을 참조하였으면 순차 블록을, 비순차 블록(Non-Sequential Block)을 참조하였으면 비순차 블록을 선인출 하게 된다. 즉, 이전의 메모리 참조시에 어떤 블록 A 다음에 블록 B가 참조되었다고 하면, 다음 번 메모리 참조 시에 블록 A가 참조될 때 블록 B를 선인출하는 방법이다. 이와 같이 목표 선인출은 분기 명령의 성질을 이용하므로 순차 선인출에 비해 높은 정확도를 보인다. 그러나, 분기 명령 수행시 메모리 참조가 항상 이전의 경로를 따르는 것은 아니고, 분기 명령에서 메모리 참조가 순차, 비순차 경로를 번갚아 수행되는 경우에는, 목표 선인출에 의한 방법으로 큰 성능의 향상을 기대할 수 없는 단점이 있다.
복합 선인출(Hybrid Prefetching) 방법은 수퍼 컴퓨터등 메모리 대역폭(Bandwidth)의 제한이 비교적 적은 시스템에서 순차 블록과 목표 블록을 모두 선인출하는 방법이다. 그러나 마이크로 프로세서(Microprocessor)를 기반으로 하는 시스템은 메모리 대역폭의 제한 때문에 이전 수행 정보를 이용해서 선인출할 블록의 우선 순위를 정하여 선인출을 수행한다. 이는 기존의 복합 선인출 기법의 변형된 형태로 다음과 같이 수행된다.
만약, 이전의 수행에서 메모리 참조가 순차적인 경로로 수행된 경우에는 현재 블록의 순차 블록(현재 블록의 주소 + 1)이 선인출될 첫 번째 후보 블록으로 결정됨과 아울러 현재 블록에 대한 목표 블록이 선인출될 두 번째 후보 블록으로 결정된다. 반면, 이전의 수행에서 메모리 참조가 비순차적인 경로로 수행된 경우에는 현재 블록에 대한 목표 블록이 선인출될 첫 번째 후보 블록으로 결정됨과 아울러, 현재 블록의 순차 블록(현재 블록의 주소 + 1) 이 선인출될 두 번째 후보 블록으로 결정된다. 상기와 같이 첫 번째 후보 블록과 두 번째 후보 블록이 결정되면, 그 후보 블록들에 대한 선인출 동작이 수행된다. 첫 번째 후보 블록이 온-칩 메모리에 존재하지 않으면, 첫 번째 후보 블록이 하위 메모리로부터 온-칩 메모리로 선인출된 다음 동작이 종료된다. 그러나, 상기 첫 번째 후보 블록이 온-칩 메모리에 존재하면 두 번째 후보 블록이 하위 메모리로부터 온-칩 메모리고 선인출 되고, 상기 첫 번째, 두 번째 후보 블록이 모두 온-칩 메모리에 존재하면 선인출은 수행되지 않는다. 이와 같이, 변형된 복합 선인출 기법은 많은 경우에 순차 블록과 목표 블록을 모두 선인출 하게 된다. 그러나, 변형된 복합 선인출 기법은 기대와는 달리 기존의 복합 선인출 기법이 얻을 수 있는 정도의 성능 향상을 얻지는 못한다. 또한 기존의 복합 선인출 기법은 성능의 큰 향상을 얻을 수는 있으나 데이터 전송률(Data Transfer Rate)을 의미하는 메모리 대역폭에 대한 제한이 비교적 적은 수퍼 컴퓨터등에서만 수행이 가능하다는 단점이 있다.
따라서, 본 발명의 목적은 선인출은 되었으나 씨피유에 의해 참조되지 않은 블록을 온-칩 캐쉬 메모리인 미참조 선인출 캐쉬에 저장하여 둠으로써 제한된 메모리 대역폭을 가지고 있는 마이크로 프로세서를 사용한 시스템에서도 순차 블록과 목표 블록을 모두 선인출 하게 되어 캐쉬 접근 실패를 줄이고, 하위 메모리에 대한 접근 지연을 감소시키며, 아울러 메모리 교통량을 줄이도록 하는 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로를 제공하는 데 있다.
상기의 목적을 달성하기 위하여, 본 발명에 의한 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법은 명령어 선인출 기법에서 선인출 버퍼의 블록이 교체될 때, 선인출은 되었으나 씨피유에 의해 참조되지 않은 블록을 소정의 온-칩 메모리에 저장하여 이후의 메모리 참조에 대비하게 한 것이다.
상기의 목적을 달성하기 위하여, 본 발명에 의한 미참조 선인출 캐쉬를 이용한 명령어 선인출 회로는 메모리 참조등 프로그램의 수행을 위한 각종 제어 신호를 제어 신호를 출력하는 씨피유와, 상기 씨피유의 프로그램 수행에 필요한 명령어 블록을 저장하는 하위 메모리와, 상기 씨피유에 의해 참조되는 명령어 블록의 선인출을 제어하는 선인출 제어부와, 상기 하위 메모리로부터 선인출된 명령어 블록을 일시 저장함과 아울러 저장된 명령어 블록이 상기 씨피유에 의한 참조되었는지에 따른 제어 신호를 출력하는 선인출 버퍼와, 상기 선인출 버퍼에서 출력되는 명령어 블록을 상기 선인출 버퍼의 제어 신호에 따라 씨피유에 의해 참조가 수행된 명령어 블록과 그렇지 않은 블록으로 디멀티플렉싱하는 디멀티플렉서와, 상기 디멀티플렉서에서 출력된 명령어 블록중 상기 시피유에 의해 참조되지 않은 명령어 블록을 저장하는 미참조 선인출 블록 저장부와, 상기 하위 메모리, 디멀티플렉서 및 미참조 선인출 블록저장부에서 출력된 명령어 블록을 저장하는 명령어 캐쉬를 포함하여 구성된다.
본 발명에 의한 미참조 선인출 캐쉬를 이용한 명령어 선인출 회로는, 제1도에 도시된 바와 같이, 명령어를 참조하여 컴퓨터의 각종 제어 동작을 수행하는 씨피유(10)와, 상기 씨피유(10)에 의해 참조될 명령어 블록을 저장하는 하위 메모리(20)와, 상기 하위 메모리(20)로부터 선인출된 블록을 일시 저장하는 온-칩 메모리인 선인출 버퍼(30)와, 상기 선인출 버퍼(30)에서 출력된 블록이 상기 씨피유(10)에 의해 참조되었는가에 따라 디멀티플렉싱하는 디멀티플렉서(40)와, 상기 디멀티플렉서(40)에서 출력되는 블록중 씨피유(10)에 의해 참조되지 않은 블록을 저장하는 온-칩 메모리인 미참조 선인출 캐쉬(50)와, 상기 씨피유(10)에 의해 참조된 명령어 블록이 저장되는 온-칩 메모리인 명령어 캐쉬(60)와, 상기 씨피유(10)의 제어에 따라 선인출 동작을 제어하는 선인출 제어부(70)로 구성된다.
여기서, 상기 하위 메모리(20)는 메모리 계층(Hierarchy)이 단단계 캐쉬 메모리 시스템인 경우에서는 메인 메모리가 되고, 메모리 계층이 다단계 캐쉬 메모리 시스템인 경우에는 하위 단계의 캐쉬 메모리나 또는 메인 메모리가 된다. 또한, 제1도는 씨피유(10), 선인출 버퍼(30), 미참조 선인출 캐쉬(50), 명령어 캐쉬(60), 및 선인출 제어부(70)등이 분리되어 있는 회로를 가정하였으나, 상기 구성 요소들은 하나의 프로세서 칩에 같이 존재할 수도 있다.
상기 선인출 버퍼(30)는 하위 메모리(20)로부터 선인출된 블록을 저장하는 캐쉬 블록 필드(33)와, 상기 캐쉬 블록 필드(33)에 저장되어 있는 블록의 주소를 나타내는 태그 필드(31)와, 상기 캐쉬 블록 필드(33)에 저장된 블록이 상기 씨피유(10)에 의해 참조되었는지를 나타내는 T-비트필드(32)와, 상기 캐쉬 블록 필드(33)에 저장되어 있는 블록의 내용이 유효한지를 나타내는 V-비트 필드(34)로 구성된다.
또한, 상기 선인출 제어부(70)는 선인출할 후보 블록을 결정하고, 그 결정된 후보 블록이 온-칩 메모리에 존재하는지를 검색하며, 상기 결정된 블록이 온-칩 메모리에 존재하지 않으면 상기 하위 메모리(20)로 선인출 요구 명령을 출력하는 동작을 하는데, 이중에서 선인출할 후보 블록을 결정하는 동작을 수행하는 회로는, 제2도에 도시된 바와 같이, 씨피유(10)에 의해 참조되는 현재 블록의 주소를 저장하는 현재 블록 어드레스부(Current Block Address Unit)(72)와, 이전의 메모리 참조 수행에서 현재 블록 다음에 참조된 비순차 블록의 주소를 저장하는 목표 블록 어드레스부(Target Block Address Unit)(73)와, 이전에 수행된 메모리 참조가 순차적이었는지를 나타내는 이전 수행 정보 필드(History Information Field)(74)를 포함하는 예측 테이블(Prediction Table)(71)과, 상기 예측 테이블(71)의 현재 블록 어드레스부(72)에서 출력된 주소에 1이 더해진 주소와 상기 목표 블록 어드레스부(73)에서 출력된 주소를 상기 이전 수행 정보 필드(74)에 저장된 정보에 따라 선택하는 멀티플렉서(75)와, 상기 예측 테이블(71)을 액세스하며 업데이트하는 예측 테이블 제어부(76)로 구성된다.
상기와 같이 구성된 미참조 선인출 블록을 이용한 명령어 선인출 방법 및 그 회로는 여러 가지 선인출 기법에 적용될 수 있는데, 먼저 순차 블록과 목표 블록을 모두 선인출하는 복합 선인출 기법에 적용된 경우를 설명하면 다음과 같다. 본 발명에서는 명령어 캐쉬와 데이터 캐쉬가 분리되어 있는 시스템을 가정하였다. 또한, 본 발명은 직접 사상캐쉬를 가정하였으나 집합 연관 사상, 완전 연관 사상 등이 사용된 경우에도 동일하게 적용된다.
어떤 프로그램이 수행되면 그 프로그램의 수행에 필요한 명령어 블록이 씨피유(10)에 의해 참조된다. 이때, 블록 A 에 대한 참조가 완료되면 새로운 블록이 씨피유(10)에 의해 참조되는데, 새로이 참조되는 블록은 프로그램에 따라 순차 블록이 되거나 또는 비순차 블록이 될 수도 있다.
먼저, 순차 블록 B가 블록 A에 연이어 참조되면 예측 테이블(71)의 갱신이 수행되는데, 예측 테이블 제어부(76)는 상기 블록 A 에 대한 정보가 예측 테이블(71)에 존재하는지를 검색한다. 만약 예측 테이블(71)에 상기 블록 A에 대한 정보가 없으면 예측 테이블(71)은 갱신되지 않는다. 왜냐하면, 해당하는 블록 A에 대한 정보가 예측 테이블(71)에 존재하지 않으면 그 블록 A에 대해 순차적인 다음 번 블록 B 가 묵시적(Default)으로 선인출될 대상이 되기 때문이다. 그러나, 상기 예측 테이블(71)의 검색 결과 블록 A에 대한 정보가 예측 테이블(71)에 존재하면 이전 수행 정보 필드(74)의 상기 블록 A에 해당하는 필드가 순차 경로로 세팅된다.
예측 테이블(71)의 갱신 후 예측 테이블 제어부(76)가 선인출할 후보 블록을 결정하는데, 이는 현재 씨피유(10)에 의해 참조되는 블록인 블록 B에 대해 예측 테이블(71)이 가지고 있는 정보를 이용해서 이루어진다. 이전 수행에서 씨피유(10)가 블록 B 다음에 참조한 경로가 순차적이었으면 멀티플렉서(75)의 선택에 의해 블록 B의 순차 블록(현재 블록 B의 어드레스 + 1)이 첫 번째 선인출될 후보 블록으로 결정되고, 현재 블록 B에 대한 목표 블록, 즉 블록 B에 해당하는 목표 블록 어드레스부(73)에 저장된 블록이 두 번째 선인출된 후보 블록으로 결정된다. 반면에, 이전 수행에서 씨피유(10)가 블록 B 다음에 참조한 경로가 비순차적이었으면 멀티플렉서(75)의 선택에 의해 목표 블록 어드레스부(73)에 저장된 블록이 두 번째 선인출될 후보 블록으로 결정된다. 반면에, 이전 수행에서 씨피유(10)가 블록 B다음에 참조한 경로가 비순차적이었으면 멀티플렉서(75)의 선택에 의해 목표 블록 어드레스부(73)에 저장된 현재 블록 B에 대한 목표 블록이 첫 번째 선인출될 후보 블록으로 결정되고, 현재 블록의 순차 블록이 두 번째 선인출될 후보 블록으로 결정된다.
한편, 상기 블록 A 다음에 비순차적인 블록 C가 씨피유(10)에 의해 참조되면, 예측 테이블(71)의 갱신을 위하여 예측 테이블 제어부(76)가 상기 블록 A에 대한 정보가 예측 테이블(71)에 존재하는지 검색한다. 만약, 상기 블록 A에 대한 정보가 예측 테이블(71)에 존재하지 않으면, 예측 테이블 제어부(76)가 블록 A를 위하여 예측 테이블(71)의 한 엔트리를 할당한 다음 블록 A의 어드레스를 예측 테이블(71)의 현재 블록 어드레스부(72)에 저장하고, 블록 C의 어드레스를 목표 블록 어드레스부(73)에 저장하며, 이전 수행 정보 필드(74)의 해당 필드를 비순차 경로로 세팅한다.
예측 테이블(71)의 갱신 후, 예측 테이블 제어부(70)가 선인출할 후보 블록을 결정하는데, 이는 현재 씨피유(10)에 의해 참조되는 블록이 C 블록이므로 블록 C에 대한 예측 테이블(71)의 정보를 이용하여 이루어진다. 블록 C에 대한 선인출 후보 블록의 결정은 블록 C에 대한 예측 테이블(71)의 이전 수행 정보 필드(74)의 정보 즉, 이전 수행에서 씨피유(10)가 블록 C 다음에 참조한 경로가 순차 경로 였는가, 비순차 경로 였는가에 따라 상기 블록 B에 대한 경우와 마찬가지 방법으로 결정된다.
상기와 같이 예측 테이블(71)의 갱신 및 선인출될 후보 블록이 결정되고 나면 선인출 동작이 수행된다. 후보 블록에 대한 선인출은 우선 첫 번째 선인출 후보 블록에 대해서 수행된다. 이를 위하여 선인출 제어부(70)가 첫 번째 후보 블록이 온-칩 메모리, 즉 명령어 캐쉬(60), 미참조 선인출 캐쉬(50), 그리고 선인출 버퍼(30)에 존재하는 지를 검색한다. 만약, 첫 번째 선인출 후보 블록이 온-칩 메모리에 존재하지 않으면, 선인출 제어부(70)가 첫 번째 선인출 후보 블록을 하위 메모리(10)로부터 선인출 하여 선인출 버퍼(30)에 저장한 다음 선인출 동작을 종료한다. 그러나, 상기 첫 번째 선인출 후부 블록이 온-칩 메모리에 존재하면, 선인출 제어부(70)가 상기와 같은 방법으로 두 번째 선인출 후보 블록에 대한 선인출을 시도한다. 만약, 상기 첫 번째 선인출 후보 블록과 두 번째 선인출 후보 블록이 모두 온-칩 메모리에 존재하면 선인출은 수행되지 않는다.
이상과 같이 선인출 버퍼(30)로 선인출되는 블록이 선인출 버퍼(30)의 용량을 넘게 되면, 선인출 버퍼(30)는 자체적인 블록 교체 매커니즘(Block Replacement)에 의해 기존에 저장되어 있던 블록이 하위 메모리(20)로부터 새로이 선인출된 블록으로 교체된다. 그런데, 선인출 버퍼(30)의 T-비트 필드(32)는 해당 블록이 씨피유(10)에 의해 참조된 것이면 리세트, 참조되지 않은 것이면 세트로 표시되어 있다. 따라서, 선인출 버퍼(30)에서 블록의 교체가 수행될 때, 씨피유(10)에 의해 참조된 블록은 그대로 버려지게 되나 씨피유(10)에 의해 참조되지 않은 블록은 상기 T-비트(32)의 값이 디멀티플렉서(40)의 제어 신호로 인가됨에 따라 미참조 선인출 캐쉬(50)로 이동된다. 그러므로, 선인출 버퍼(30)의 블록교체시, 종래에는 씨피유(10)에 의해 참조되지 않은 미참조 선인출 블록이 버려지는데 반해, 본 발명에서는 상기 미참조 선인출 블록이 버려지지 않고 미참조 선인출 캐쉬(50)에 저장됨으로써, 이후 그 블록이 씨피유(10)의 참조 대상이 될 때에는 하위 메모리(20)로부터 다시 인출될 필요 없이 곧 바로 참조될 수 있게 된다.
본 발명에 의한 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법을 변형된 복함 선인출 기법과 전진 선인출 기법을 혼합한 기법에 적용하면 더욱 우수한 성능의 향상을 도모할 수 있다. 전진 선인출 기법은 씨피유(10)에 의해 현재 참조되고 있는 블록의 d번째 후에 참조될 것으로 예상되는 블록을 선인출하는 기법인데, 여기서 d를 전진 선인출의 정도(Degree of Lookahead Prefetching)라 한다. 예를 들어 전진 선인출의 정도가 2인 전진 선인출 기법에서 씨피유(10)가 블록 D, E, F를 차례로 참조하였다고 하면, 블록 D에 대하여 예측 테이블(71)의 목표 블록 어드레스부(73)에는 블록 E 대신 블록 F의 주소가 저장된다. 전진 선인출 기법에서 이전의 메모리 참조시 씨피유(10)가 순차 블록을 참조한 경우, 현재 블록 G에 대해 선인출하고자 하는 블록은 블록 I(현재 블록의 주소 + 2)이다. 그러나 순차 참조시 블록 H(현재 블록의 주소 + 1)가 온-칩 메모리에 존재하지 되지 않으면 캐쉬 접근 실패가 일어나게 될 것이므로, 비록 선인출하고자 하는 블록은 I 블록(현재 블록의 주소 + 2)이지만 캐쉬 접근 실패를 방지하기 위하여 블록 H(현재 블록의 주소 + 1)가 선인출될 첫 번째 후보 블록으로 결정된다. 선인출될 두 번째 후보 블록은 원래 선인출 하고자 하는 블록, 즉 블록 I가 되며, 선인출될 네 번째 후보 블록은 상기 목표 블록의 직전 블록(목표 블록의 주소 - 1)으로 결정된다.
한편, 전진 선인출 기법에서 이전의 메모리 참조 수행시 씨피유(10)가 비순차 블록을 참조한 경우, 선인출될 첫 번째 후보 블록은 현재 블록에 대한 목표 블록이 되고, 두 번째 후보 블록은 상기 목표 블록의 직전 블록(목표 블록의 주소 -1)으로 결정되는데, 이것은 목표 블록이 참조되기 전에 목표 블록의 직전 블록이 참조될 가능성이 순차 참조의 경우 보다 작기 때문이다. 선인출될 세 번째 후보 블록은 현재 블록의 다음 번 블록(현재 블록의 주소 + 1)이, 네 번째 선인출될 후보 블록은 (현재 블록의 주소 + 2)의 블록으로 결정된다.
이와 같이 선인출될 후보 블록이 결정되고 나면, 첫 번째 후보 블록부터 선인출이 수행되는데, 첫 번째 후보 블록이 온-칩 메모리에 존재하지 않으면 그 블록에 대한 선인출이 수행된 다음 선인출 동작이 완료된다. 그러나 상기 블록이 이미 온-칩 메모리에 존재하면 두 번째 후보 블록에 대한 선인출이 시도되고, 두 번째 후보 블록도 온-칩 메모리에 존재하면 세 번째 후보 블록에 대한 선인출이 시도된다. 세 번째 후보 블록이 또한 온-칩 메모리에 존재하면, 네 번째 후보 블록에 대하여 선인출이 시도되나, 네 번째 후보 블록도 온-칩 메모리에 존재하면, 선인출 동작은 수행되지 않는다.
본 발명이 적용된 전진 선인출 기법에서, 선인출 버퍼(30)로 선인출되는 블록이 선인출 버퍼(30)의 용량을 넘게 되면, 선인출 버퍼(30)는 자체적인 블록 교체 메커니즘에 의해 기존에 저장되어 있던 블록이 하위 메모리(20)로부터 새로이 선인출된 블록으로 교체된다. 그런데 선인출 버퍼(30)의 T-비트 필드(32)는 해당 블록이 씨피유(10)에 이해 참조된 것이면 리세트, 참조되지 않은 것이면 세트로 표시되어 있다. 따라서 선인출 버퍼(30)에서 블록의 교체가 수행될 때, 씨피유(10)에 의해 참조된 블록은 그대로 버려지게 되나 참조되지 않은 블록은 상기 T-비트(32)의 값이 디멀티플렉서(40)의 제어 신호로 인가됨으로써 미참조 선인출 캐쉬(50)로 이동된다. 그러므로, 선인출 버퍼(30)의 블록 교체시 종래에는 버려지던 미참조 선인출 블록이 본 발명에서는 버려지지 않고 미참조 선인출 캐쉬(50)에 저장됨으로써, 이후 그 블록이 씨피유(10)의 참조 대상이 될 때에는 하위 메모리(20)로부터 다시 인출될 필요 없이 곧 바로 씨피유(10)에 의해 참조될 수 있게 된다.
이상에서 상세히 설명한 바와 같이 본 발명에 의한 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법은, 기존의 여러 선인출 기법의 방법에 따라 선인출은 되었으나 씨피유에 의해 참조되지 않은 명령어 블록들이 선인출 버퍼에서 교체될 때 그 블록을 버리는 대신 미참조 선인출 캐쉬라는 온-칩 메모리에 저장하여 둠으로써, 다음 번에 그 블록에 대한 메모리 참조가 있게 되면 하위 메모리로부터 그 블록을 다시 인출할 필요 없이 곧 바로 메모리 참조가 수행될 수 있도록 하였다. 따라서, 본 발명은 하위 메모리로부터의 인출 횟수를 감소시킴으로써, 명령어 참조시 하위 메모리로부터의 인출에 따른 메모리 지연을 감소시켜 동작의 속도를 향상시킬 뿐만 아니라 메모리 교통량을 감소시킨 효과가 있다.
Claims (8)
- 명령어 선인출 기법에서 선인출 버퍼의 블록이 교체될 때, 선인출은 되었으나 씨피유에 의해 참조되지 않은 블록을 소정의 온-칩 메모리에 저장하여 이후의 메모리 참조에 대비하게 한 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법.
- 제1항에 있어서, 상기 명령어 선인출 기법은 복합 선인출 기법임을 특징으로 하는 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법.
- 제1항에 있어서, 상기 명령어 선인출 기법은 전진 선인출 기법임을 특징으로 하는 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법.
- 제1항에 있어서, 상기 명령어 선인출 기법은 복수개의 명령어 선인출 기법이 혼용된 것임을 특징으로 하는 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법.
- 제1항에 있어서, 상기 소정의 온-칩 메모리는 캐쉬 메모리임을 특징으로 하는 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법.
- 메모리 참조등 프로그램의 수행을 위한 각종 제어 신호를 출력하는 씨피유와; 상기 씨피유의 프로그램 수행에 필요한 명령어 블록을 저장하는 하위 메모리와; 상기 씨피유에 의해 참조되는 명령어 블록의 선인출을 제어하는 선인출 제어부와; 상기 하위 메모리로부터 선인출된 명령어 블록을 일시 저장함과 아울러 저장된 명령어 블록이 상기 씨피유에 의한 참조되었는지에 따른 제어 신호를 출력하는 선인출 버퍼와; 상기 선인출 버퍼에서 출력되는 명령어 블록을 상기 선인출 버퍼의 제어 신호에 따라 씨피유에 의해 참조가 수행된 명령어 블록과 그렇지 않은 블록으로 디멀티플렉싱하는 디멀티플렉서와; 상기 디멀티플렉서에서 출력된 명령어 블록중 상기 씨피유에 의해 참조되지 않은 명령어 블록을 저장하는 미참조 선인출 블록 저장부와; 상기 하위 메모리, 디멀티플렉서 및 미참조 선인출 블록 저장부에서 출력된 명령어 블록을 저장하는 명령어 캐쉬를 포함하는 미참조 선인출 캐쉬를 이용한 명령어 선인출 회로.
- 제6항에 있어서, 상기 미참조 선인출 블록 저장부는 캐쉬 메모리임을 특징으로 하는 미참조 선인출 캐쉬를 이용한 명령어 선인출 회로.
- 제6항에 있어서, 상기 선인출 버퍼는 선인출된 명령어 블록을 저장하는 캐쉬 블록 필드와; 상기 캐쉬 블록 필드에 저장된 명령어 블록이 유효한 지를 나타내는 V-비트 필드와; 상기 캐쉬 블록 필드에 저장된 명령어 블록의 주소를 나타내는 태그 필드와; 상기 캐쉬 블록 필드에 저장된 명령어 블록이 상기 씨피유에 의해 참조되었는지를 나타내는 T-비트 필드를 포함하는 미참조 선인출 캐쉬를 이용한 명령어 선인출 회로.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950008366A KR0146059B1 (ko) | 1995-04-11 | 1995-04-11 | 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로 |
JP10511995A JP3628375B2 (ja) | 1995-04-11 | 1995-04-28 | 未参照先取りキャッシュを利用した命令語先取り方法およびその回路 |
US08/522,222 US6272622B1 (en) | 1994-04-11 | 1995-09-01 | Method of and circuit for instruction/data prefetching using non-referenced prefetch cache |
GB9518309A GB2299879B (en) | 1995-04-11 | 1995-09-07 | Method of and circuit for instruction/data prefetching using non-referenced prefetch cache |
FR9510520A FR2733065B1 (fr) | 1995-04-11 | 1995-09-08 | Procede et circuit de lecture anticipee d'instrutions/ donnees utilisant un cache de lecture anticipee non consulte |
DE19533962A DE19533962B4 (de) | 1995-04-11 | 1995-09-13 | Schaltung zum vorauseilenden Holen von Befehlen/Daten mit einem Prefetch-Cache für Befehle/Daten, auf die nicht zugegriffen worden ist |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950008366A KR0146059B1 (ko) | 1995-04-11 | 1995-04-11 | 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960038620A KR960038620A (ko) | 1996-11-21 |
KR0146059B1 true KR0146059B1 (ko) | 1998-09-15 |
Family
ID=19411899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950008366A KR0146059B1 (ko) | 1994-04-11 | 1995-04-11 | 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6272622B1 (ko) |
JP (1) | JP3628375B2 (ko) |
KR (1) | KR0146059B1 (ko) |
DE (1) | DE19533962B4 (ko) |
FR (1) | FR2733065B1 (ko) |
GB (1) | GB2299879B (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19912245B4 (de) * | 1998-03-20 | 2006-12-07 | Matsushita Electric Industrial Co., Ltd., Kadoma | Cache-Speicher-Vorrichtung mit variablem Blockgrößen-Mechanismus |
US6799263B1 (en) * | 1999-10-28 | 2004-09-28 | Hewlett-Packard Development Company, L.P. | Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted |
AU765870B2 (en) * | 2000-06-01 | 2003-10-02 | C.H.O.C.S., Inc. | Systems and methods for cleaning oxygen lines |
US8549226B2 (en) * | 2004-05-14 | 2013-10-01 | Hewlett-Packard Development Company, L.P. | Providing an alternative caching scheme at the storage area network level |
US7395375B2 (en) * | 2004-11-08 | 2008-07-01 | International Business Machines Corporation | Prefetch miss indicator for cache coherence directory misses on external caches |
CN100445944C (zh) * | 2004-12-21 | 2008-12-24 | 三菱电机株式会社 | 控制电路以及控制方法 |
US20060200631A1 (en) * | 2005-03-02 | 2006-09-07 | Mitsubishi Denki Kabushiki Kaisha | Control circuit and control method |
JP2008186233A (ja) * | 2007-01-30 | 2008-08-14 | Toshiba Corp | 命令キャッシュプリフェッチ制御方法及びその装置 |
WO2008093399A1 (ja) | 2007-01-30 | 2008-08-07 | Fujitsu Limited | 情報処理システムおよび情報処理方法 |
US11169925B2 (en) * | 2015-08-25 | 2021-11-09 | Samsung Electronics Co., Ltd. | Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds |
US10719321B2 (en) * | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US9928176B2 (en) * | 2016-07-20 | 2018-03-27 | Advanced Micro Devices, Inc. | Selecting cache transfer policy for prefetched data based on cache test regions |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4439827A (en) * | 1981-12-28 | 1984-03-27 | Raytheon Company | Dual fetch microsequencer |
US5261066A (en) * | 1990-03-27 | 1993-11-09 | Digital Equipment Corporation | Data processing system and method with small fully-associative cache and prefetch buffers |
US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
EP0449540B1 (en) | 1990-03-27 | 2000-05-17 | Digital Equipment Corporation | Memory system and method with prefetch buffer |
DE4306077A1 (ko) | 1992-02-27 | 1993-09-02 | Hewlett Packard Co | |
US5454117A (en) * | 1993-08-25 | 1995-09-26 | Nexgen, Inc. | Configurable branch prediction for a processor performing speculative execution |
DE4330119C1 (de) * | 1993-09-06 | 1994-09-22 | Siemens Ag | Verfahren zum gesteuerten Vorladen von Informationsblöcken in Cacheblockgröße in einen Cachespeicher eines Rechners bei Ablauf eines Programms |
-
1995
- 1995-04-11 KR KR1019950008366A patent/KR0146059B1/ko not_active IP Right Cessation
- 1995-04-28 JP JP10511995A patent/JP3628375B2/ja not_active Expired - Fee Related
- 1995-09-01 US US08/522,222 patent/US6272622B1/en not_active Expired - Lifetime
- 1995-09-07 GB GB9518309A patent/GB2299879B/en not_active Expired - Lifetime
- 1995-09-08 FR FR9510520A patent/FR2733065B1/fr not_active Expired - Lifetime
- 1995-09-13 DE DE19533962A patent/DE19533962B4/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
GB9518309D0 (en) | 1995-11-08 |
FR2733065B1 (fr) | 1997-12-05 |
US6272622B1 (en) | 2001-08-07 |
KR960038620A (ko) | 1996-11-21 |
DE19533962A1 (de) | 1996-10-24 |
GB2299879B (en) | 2000-02-23 |
DE19533962B4 (de) | 2008-06-26 |
FR2733065A1 (fr) | 1996-10-18 |
JPH08292913A (ja) | 1996-11-05 |
JP3628375B2 (ja) | 2005-03-09 |
GB2299879A (en) | 1996-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9141553B2 (en) | High-performance cache system and method | |
JP3739491B2 (ja) | プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御 | |
US6237065B1 (en) | Preemptive replacement strategy for a caching dynamic translator | |
JP3816586B2 (ja) | 先取り命令を生成する方法とシステム | |
US6311260B1 (en) | Method for perfetching structured data | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
US5721864A (en) | Prefetching instructions between caches | |
US20050066153A1 (en) | Method for processing branch operations | |
EP0604139A1 (en) | Computer system including a prefetch cache | |
US20080046657A1 (en) | System and Method to Efficiently Prefetch and Batch Compiler-Assisted Software Cache Accesses | |
US6012134A (en) | High-performance processor with streaming buffer that facilitates prefetching of instructions | |
US11994995B2 (en) | Prefetching operations in storage devices | |
US7447883B2 (en) | Allocation of branch target cache resources in dependence upon program instructions within an instruction queue | |
US6668307B1 (en) | System and method for a software controlled cache | |
JPH1091437A (ja) | 命令とデータの先取りを最適化するためのハードウェア機構 | |
KR0146059B1 (ko) | 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로 | |
WO2005088455A2 (en) | Cache memory prefetcher | |
US9201798B2 (en) | Processor instruction based data prefetching | |
KR100234647B1 (ko) | 인스트럭션 프리페치 방법 및 데이터 처리 시스템 | |
KR20240023151A (ko) | 범위 프리페치 명령어 | |
US9569219B2 (en) | Low-miss-rate and low-miss-penalty cache system and method | |
US8443176B2 (en) | Method, system, and computer program product for reducing cache memory pollution | |
Rau et al. | The effect of instruction fetch strategies upon the performance of pipelined instruction units | |
US20080250211A1 (en) | Cache control method, cache device, and microcomputer | |
EP0296430A2 (en) | Sequential prefetching with deconfirmation |
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: 20130422 Year of fee payment: 16 |
|
FPAY | Annual fee payment |
Payment date: 20140421 Year of fee payment: 17 |
|
EXPY | Expiration of term |