KR20040038548A - 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법 - Google Patents
높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법 Download PDFInfo
- Publication number
- KR20040038548A KR20040038548A KR1020020067547A KR20020067547A KR20040038548A KR 20040038548 A KR20040038548 A KR 20040038548A KR 1020020067547 A KR1020020067547 A KR 1020020067547A KR 20020067547 A KR20020067547 A KR 20020067547A KR 20040038548 A KR20040038548 A KR 20040038548A
- Authority
- KR
- South Korea
- Prior art keywords
- cache memory
- data
- address
- line
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 11
- 230000004044 response Effects 0.000 claims description 9
- 230000000295 complement effect Effects 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing 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/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
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터 캐슁 방법이 개시된다. 본 발명에 따른 캐쉬 메모리 시스템은 외부의 프로세서에서 필요로 하는 데이터를 외부의 메인 메모리로부터 읽어들여 저장하고, 프로세서로부터 요구하는 데이터의 히트가 발생되면 해당 데이터를 프로세서로 제공하는 메인 캐쉬 메모리, 메인 캐쉬 메모리에서 미스가 발생되어 라인 필 동작이 수행되면서 발생되는 희생 라인들 중, 이전 라인과 비연속적인 어드레스를 갖는 라인 데이터를 저장하고, 프로세서로부터 요구하는 데이터의 히트가 발생되면 해당 데이터를 프로세서로 제공하는 빅팀 캐쉬 메모리부 및 빅팀 캐쉬 메모리부에서 히트된 라인 데이터 다음의 연속 어드레스를 갖는 라인들을 메인 메모리로부터 프리페치하고, 또한 메인 캐쉬 메모리 및 빅팀 캐쉬 메모리 모두에서 미스가 발생될 경우 메인 메모리로부터 해당 데이터를 프리페치하고, 프리페치된 데이터를 프로세서로 제공하는 프리패치 버퍼를 포함하는 것을 특징으로 하며, 빅팀 캐쉬 메모리에 메인 캐쉬 메모리에서 라인 필 동작에 의해 희생되는 데이터 중, 이전 어드레스와 비연속적인 어드레스를 갖는 하나의 라인 데이터만을 저장하므로, 빅팀 캐쉬 메모리의 크기를 줄일 수 있으며, 타이밍 지연 또한 최소화하면서 히트율을 높일 수 있다.
Description
본 발명은 캐쉬 메모리 시스템에 관한 것으로, 특히, 프리페치 스킴(prefetch scheme)을 이용하는 캐쉬 메모리 시스템에서 비순차적인 어드레스의 액세스 발생시에도 히트율을 높일 수 있는 캐쉬 메모리 시스템 및 그의 데이터 캐슁 방법에 관한 것이다.
일반적으로, DSP(digital signal processing)의 인스트럭션 캐쉬와 같이 순차적인 데이터 액세스가 주로 일어나는 메모리 시스템에서는 메인 캐쉬를 직접 사상 캐쉬(direct mapped cache)로 사용하고, 프리페치를 사용하여 순차적인 데이터 액세스에 대해서는 미스(miss)를 줄이는 방법을 사용한다. 한편, 비순차적인 데이터 액세스에 의해 발생하는 미스에 대해서는 라인 필(line fill)에 의해 희생된 라인을 빅팀(victim) 캐쉬라는 별도의 캐쉬 메모리에 저장한다. 즉, 희생된 라인은 다시 사용될 가능성이 높은 데이터이며, 이를 빅팀 캐쉬에 저장함으로써 히트율을 높일 수 있다. 그러나, 빅팀 캐쉬에 라인 필에 의해 희생된 모든 라인을 저장함으로써 빅팀 캐쉬 메모리의 크기가 커지며 풀 어소시에이션(full association)으로 저장되는 경우 면적 및 시간 지연에 의해 캐쉬의 성능이 저하된다는 문제점이 발생한다.
본 발명이 이루고자 하는 기술적 과제는 프리페치 스킴(prefetch scheme)을 이용하는 캐쉬 메모리 시스템에서 빅팀 캐쉬 메모리의 크기를 최소화하면서 비순차적인 액세스 발생시에도 히트율을 높일 수 있는 캐쉬 메모리 시스템을 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는 상기 캐쉬 메모리 시스템에서 수행되는 데이터 캐슁 방법을 제공하는 데 있다.
도 1에는 프로세서의 인스트럭션 페치의 일 예를 설명하기 위한 타이밍도이다.
도 2는 본 발명에 따른 캐쉬 메모리 시스템의 일실시예를 개략적으로 나타내는 블록도이다.
도 3은 도 2에 도시된 점프 비트 발생부의 일실시예를 개략적으로 나타내는 블록도이다. ,
상기 과제를 이루기 위해, 본 발명에 따른 캐쉬 메모리 시스템은 외부의 프로세서에서 필요로 하는 데이터를 외부의 메인 메모리로부터 읽어들여 저장하고, 프로세서로부터 요구하는 데이터의 히트가 발생되면 해당 데이터를 프로세서로 제공하는 메인 캐쉬 메모리, 메인 캐쉬 메모리에서 미스가 발생되어 라인 필 동작이 수행되면서 발생되는 희생 라인들 중, 이전 라인과 비연속적인 어드레스를 갖는 라인 데이터를 저장하고, 프로세서로부터 요구하는 데이터의 히트가 발생되면 해당 데이터를 프로세서로 제공하는 빅팀 캐쉬 메모리부 및 빅팀 캐쉬 메모리부에서 히트된 라인 데이터 다음의 연속 어드레스를 갖는 라인들을 메인 메모리로부터 프리페치하고, 또한 메인 캐쉬 메모리 및 빅팀 캐쉬 메모리 모두에서 미스가 발생될 경우 메인 메모리로부터 해당 데이터를 프리페치하고, 프리페치된 데이터를 프로세서로 제공하는 프리패치 버퍼를 포함하는 것이 바람직하다.
상기 다른 과제를 이루기 위해, 메인 캐쉬 메모리, 메인 캐쉬 메모리에서 희생된 라인 데이터를 저장하는 빅팀 캐쉬 메모리 및 메인 캐쉬 메모리 및 빅팀 캐쉬 메모리에서 미스가 발생되면 외부의 메인 메모리로부터 해당 데이터를 프리페치하는 프리페치 버퍼를 구비하는 캐쉬 메모리 시스템에서, 히트율을 높이는 본 발명에 따른 데이터 캐슁 방법은 메인 캐쉬 메모리에 저장된 라인 데이터 각각에 연속 데이터인가의 여부를 나타내는 점프 비트를 부여하는 (a)단계, 메인 캐쉬 메모리에서 히트가 발생되면 해당 데이터를 외부의 프로세서로 제공하는 (b)단계, 메인 캐쉬 메모리에서 미스가 발생되면, 빅팀 캐쉬 메모리에서 히트가 발생되었는가를 판단하는 (c)단계, (c)단계에서 빅팀 캐쉬 메모리에서 히트가 발생되면, 해당 라인 데이터를 프로세서로 제공하면서 메인 캐쉬 메모리로 라인 필하고, 라인 필 동작에 의해 메인 캐쉬 메모리에서 희생되는 라인은 점프 비트에 따라 빅팀 캐쉬 메모리에 저장하는 (d)단계, 빅팀 캐쉬 메모리에서 히트가 발생된 데이터에 연속되는 어드레스의 라인 데이터를 프리페치 버퍼를 통해 메인 메모리로부터 프리페치하여 프로세서로 제공하면서 메인 캐쉬 메모리에 라인 필하고, 라인 필 동작에 의해 메인 캐쉬 메모리에서 희생되는 라인은 점프 비트에 따라 빅팀 캐쉬 메모리에 저장하는 (e)단계 및 (c)단계에서 빅팀 캐쉬 메모리에서도 미스가 발생되면 해당 데이터를 프리페치 버퍼를 통해 메인 메모리로부터 프리페치하여 프로세서로 제공하면서 메인 캐쉬 메모리에 라인 필하고, 라인 필 동작에 의해 메인 캐쉬 메모리에서 희생되는 라인은 점프 비트에 따라 빅팀 캐쉬 메모리에 저장하는 (f)단계를 포함하는 것이 바람직하다.
이하, 본 발명에 따른 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터 캐슁 방법을 첨부한 도면들을 참조하여 다음과 같이 설명한다.
CPU나 DSP와 같은 프로세서에서 페치(fetch)하는 인스트럭션은 브랜치(branch)나 인터럽트(interrupt) 발생 등이 일어나지 않는 한 연속적으로 변한다. 따라서, 페치되는 인스트럭션의 경우 연속적인 그룹들로 나눌 수 있다.
도 1에는 프로세서의 인스트럭션 페치의 일 예를 나타내는 도면으로, 도 1(a)는 프로세서의 동작 클럭신호(CLK)를 나타내고, 도 1(b)는 프로세서가 페치할 어드레스를 나타낸다.
도 1을 참조하면, 프로세서는 연속적인 어드레스 00021, 00022, 00023, 00024, 00025의 인스트럭션을 페치하다가 00026에서 콜(call)이 발생하여 어드레스가 0038a로 건너뜀을 보인다. 프로세서는 0038a에서 0038f까지 다시 연속적인 어드레스의 인스트럭션을 페치하다 리턴(return)이 발생하는 동작을 생각해 볼 수 있다. 도 1에 보인 바와 같이, 어드레스 00026에서 0038a로의 비연속적인 어드레스의 발생은 인스트럭션 캐쉬의 경우 인터럽트 발생, 펑션 콜, 리턴, 브랜치 등의 원인으로 발생할 수 있다.
한편, 도 1에서 연속적인 어드레스 00021~00026까지 제1그룹으로 생각하고, 또 콜된 연속적인 어드레스 0038a~0038f까지를 제2그룹으로 분류할 수 있다. 또한, 프로세서가 페치하는 데이터를 어드레스에 따라 비연속적 데이터와 연속적 데이터로 구분할 수 있다. 즉, 각 그룹의 첫 번째 어드레스의 데이터를 비연속적 데이터로, 그리고, 그룹의 나머지 어드레스에 대한 데이터를 연속적 데이터로 각각 구분할 수 있다. 연속적으로 어드레스가 변하는 경우 다음 어드레스가 예측이 가능하므로, 프리페치를 통해 예측된 다음 어드레스에 대한 데이터를 가져온다면 히트될 것이다. 이 때, 프리페치를 사용하는 캐쉬 시스템의 경우, 프리페치의 밴드폭이 프로세서의 페치 밴드폭보다 커야 프리페치 히트가 발생된다. 즉, 프리페치의 밴드폭이 프로세서의 페치 밴드 폭보다 크다는 것은, 프로세서의 데이터 페치 전에 이미 프리페치 버퍼에 데이터가 프리페치되어 있다는 것이며, 그래야 데이터 히트가 될 수 있다. 이처럼 프리페치를 사용하는 캐쉬 시스템에서, 프리페치의 밴드 폭이 프로세서의 페치 밴드 폭보다 크다면, 미스가 발생하는 원인은 비연속적으로 어드레스가 변하는 경우이다. 즉, 전술된 제1그룹의 어드레스 00026에서 제2그룹의 0038a로 넘어가는 경우와 같이 비연속적인 데이터 액세스는 프리페치가 예측할 수 없고 따라서, 캐쉬에 데이터가 이미 존재하지 않는 한 미스가 발생하게 된다. 이러한 경우, 0038a와 같이 그룹의 첫 번째 어드레스의 데이터를 특정 메모리 공간 예컨대, 빅팀캐쉬 메모리에 따로 저장해 두고, 프리페치를 이용한다면 비연속적인 데이터 액세스에 의해 미스율을 줄일 수 있게 된다.
도 2는 본 발명에 따른 캐쉬 메모리 시스템의 일실시예를 개략적으로 나타내는 블록도이다. 본 발명의 일실시예에 따른 캐쉬 메모리 시스템은 메인 캐쉬 메모리(10), 빅팀 캐쉬 메모리부(70), 프리페치 버퍼(50) 및 먹스(60)를 포함하여 구성된다.
도 2를 참조하여, 메인 캐쉬 메모리(10)는 프로세서에서 필요로 하는 데이터가 메인 메모리(미도시)로부터 로드되어 저장되며, 메인 캐쉬 메모리(10)에서 히트가 발생되면 해당 데이터를 먹스(60)로 전송한다. 한편, 메인 캐쉬 메모리(10)에 데이터가 저장될 때는 어드레스 정보를 나타내는 태그와 프로세서의 연산에 필요한 데이터로 구분되어 저장되며 또한, 연속 어드레스에 대한 데이터인가 그렇지 못한 어드레스에 대한 데이터인가를 표시하는 점프 비트(JB:jumped bit)가 함께 저장된다. 이하, 설명의 편의를 위해, 연속 어드레스에 대한 데이터는 점프 비트(JB)를 0으로 표시하고, 불연속 어드레스에 대한 데이터는 점프 비트(JB)를 1로 표시한다. 예컨대, 도 1(b)에 도시된 바와 같은 어드레스의 데이터가 메인 캐쉬 메모리(10)에 저장된다면, 어드레스 0038a는 이전 어드레스 00026과 불연속이므로, 어드레스 0038a의 점프 비트(JB)는 1이 되며, 나머지 어드레스들 00021~00026 및 0038b~0038f는 이전 어드레스와 연속적인 어드레스를 가지므로 점프비트(JB)가 0으로 표시된다. 한편, 최초에 메인 캐쉬 메모리(10)에 데이터가 저장될 때, 점프 비트는 모두 0으로 초기화되며, 점프 비트는 메인 캐쉬 메모리(10)에 라인 필이 이루어지는 과정에서 빅팀 캐쉬 메모리부(70)의 점프 비트 발생부(20)에 의해 생성된다.
빅팀 캐쉬 메모리부(70)는 메인 캐쉬 메모리(10)에서 미스가 발생되어 라인 필 동작이 수행되면서 발생되는 희생 라인들 중, 이전 라인과 비연속적인 어드레스를 갖는 라인 데이터를 저장한다. 그리고, 빅팀 캐쉬 메모리부(70)에서 프로세서로부터 요구되는 데이터의 히트가 발생되면 해당 데이터를 먹스(60)로 제공한다. 구체적으로, 빅팀 캐쉬 메모리부(70)는 점프 비트 발생부(20), 점프 비트 검사부(30) 및 빅팀 캐쉬 메모리(40)를 포함하여 구성된다.
점프 비트 발생부(20)는 프로세서에서 액세스하고자 하는 데이터의 현재 라인 어드레스와 이전 라인 어드레스를 비교하여 같거나 1의 차이가 나면 점프 비트(JB)를 0으로 설정하고, 2이상의 차이가 나면 점프 비트(JB)를 1로 설정한다. 점프 비트 발생부(20)에 대해서는 도 3을 참조하여 구체적으로 설명될 것이다.
점프 비트 검사부(30)는 메인 캐쉬 메모리(10)에 라인 필이 일어날 경우, 메인 캐쉬 메모리(10)의 점프 비트(JB)를 검사하여 라인 필 동작시 희생되는 라인을 빅팀 캐쉬 메모리(40)에 저장할 것인가를 결정한다. 구체적으로, 점프 비트 검사부(30)는 희생되는 라인의 점프 비트(JB)가 1이면 불연속 데이터로 판단하여 빅팀 캐쉬 메모리(40)에 저장하고, 희생되는 라인의 점프 비트(JB)가 0이면 연속 데이터로 판단하여 빅팀 캐쉬 메모리(40)에 저장하지 않는다. 희생되는 라인이 연속 데이터라는 것은 이전의 어드레스와 연속 어드레스를 가지므로, 희생되더라도 추후 재 액세스시 어드레스 예측이 가능하며, 프리페치 버퍼(50)에 의해 메인 메모리(미도시)로부터 프리페치될 수 있다. 반면, 희생되는 라인이 불연속 데이터라는 것은 이전의 어드레스와 불연속 어드레스를 가지므로, 희생되면 추후 재 액세스시 프리페치 버퍼(50)에 예측되기 힘들며, 따라서 빅팀 캐쉬 메모리(40)에 저장한다.
빅팀 캐쉬 메모리(40)는 점프 비트 검사부(30)에서 검사 결과, 희생되는 라인들 중 점프 비트(JB)가 1인 라인의 점프 비트, 태그 및 데이터를 저장한다. 그리고, 메인 캐쉬 메모리(10)에서 미스가 발생되고, 빅팀 캐쉬 메모리(40)에서 히트가 발생되면 이를 히트가 발생된 데이터를 먹스(60)로 전송함과 동시에 메인 캐쉬 메모리(10)로 라인 필한다. 한편, 빅팀 캐쉬 메모리(40)에 의해 메인 캐쉬 메모리(10)에 라인 필이 일어날 때, 메인 캐쉬 메모리(10)에서 희생되는 라인 데이터의 점프 비트(JB)가 1이면 희생되는 라인 데이터는 빅팀 캐쉬 메모리(40)에 저장된다.
계속해서, 프리페치 버퍼(50)는 메인 캐쉬 메모리(10)에서 미스가 나고 빅팀 캐쉬 메모리(40)에서 히트가 발생되면, 빅팀 캐쉬 메모리(40)에서 히트가 발생된 라인 데이터에 연속되는 어드레스의 데이터를 메인 메모리(미도시)로부터 프리페치하여 먹스(60)로 전송함과 동시에 메인 캐쉬 메모리(10)로 라인 필한다. 또한, 프리페치 버퍼(50)는 메인 캐쉬 메모리(10) 및 빅팀 캐쉬 메모리(40) 모두에서 미스가 발생되면 프로세서가 필요로 하는 데이터를 메인 메모리(미도시)로부터 프리 페치하여 먹스(60)로 전송함과 동시에 메인 캐쉬 메모리(10)로 라인 필한다. 이처럼, 프리페치 버퍼(50)에 의해 메인 캐쉬 메모리(10)에 라인 필이 일어날 때, 메인 캐쉬 메모리(10)에서 희생되는 라인 데이터 중 점프 비트(JB)가 1인 라인 데이터는빅팀 캐쉬 메모리(40)에 저장된다.
먹스(60)는 선택신호(SEL)에 응답하여 메인 캐쉬 메모리(10), 빅팀 캐쉬 메모리(40) 또는 프리페치 버퍼(50)에서 전송되는 데이터를 선택 출력한다. 선택신호(SEL)는 히트가 발생된 메모리에 응답하여 제어되는 신호로, 메인 캐쉬 메모리(10)에서 히트가 발생되면, 먹스(60)는 선택신호(SEL)에 응답하여 메인 캐쉬 메모리(10)에서 전송되는 데이터를 프로세서로 전송한다. 또한, 빅팀 캐쉬 메모리(40)에서 히트가 발생되면, 먹스(60)는 선택신호(SEL)에 응답하여 첫 번째 라인은 빅팀 캐쉬 메모리(40)에서 전송되는 데이터를 프로세서로 전송하다가 다음 라인부터는 프리페치 버퍼(50)에서 전송되는 데이터를 프로세서로 전송한다. 또한, 메인 캐쉬 메모리(10) 및 빅팀 캐쉬 메모리(40) 모두에서 미스가 발생되면, 먹스(60)는 선택신호(SEL)에 응답하여 프리페치 버퍼(50)에서 전송되는 데이터를 프로세서로 전송한다.
도 2에 도시된 캐쉬 메모리 장치에서 수행되는 동작을 상황별로 설명하면, 먼저, 메인 캐쉬 메모리(10)에서 히트가 발생되면, 메인 캐쉬 메모리(10)는 해당 데이터를 먹스(60)로 전송하며, 이 때, 빅팀 캐쉬 메모리(40)에서는 아무런 동작을 하지 않는다.
한편, 메인 캐쉬 메모리(10)에서 미스가 발생되고, 빅팀 캐쉬 메모리(40)에서 히트가 발생되면, 빅팀 캐쉬 메모리(40)에 저장된 라인 데이터가 먹스(60)로 전송됨과 동시에 메인 캐쉬 메모리(10)로 라인 필이 이루어진다. 이 때, 빅팀 캐쉬 메모리(40)에 저장된 라인은 메인 캐쉬 메모리(10)에서 희생된 데이터 중에서 이전어드레스와 비연속적인 어드레스를 갖는 첫 번째 라인 데이터만 저장되어 있으며, 다음에 액세스될 연속적인 어드레스의 라인 데이터는 프리페치 버퍼(50)를 통해 메인 메모리(미도시)로부터 프리페치된다. 프리페치 버퍼(50)로부터 프리페치된 데이터는 먹스(60)로 전송됨과 동시에 메인 캐쉬 메모리(10)에 라인 필된다.
또한, 메인 캐쉬 메모리(10) 및 빅팀 캐쉬 메모리(40)에서 모두 미스가 발생되면, 프리페치 버퍼(50)는 메인 메모리(미도시)로부터 미스가 발생된 데이터를 프리페치하여 먹스(60)로 전송함과 동시에 메인 캐쉬 메모리(10)에 라인 필을 수행한다.
이상에서 설명된 바와 같이, 본 발명에 따른 캐쉬 메모리 시스템은 메인 캐쉬 메모리(10)에서 라인 필 동작에 의해 희생되는 데이터 중, 이전 어드레스와 비연속적인 어드레스를 갖는 하나의 라인 데이터만을 빅팀 캐쉬 메모리에 저장하며, 이 후 연속적 어드레스를 갖는 라인 데이터는 프리페치 버퍼(50)를 이용하여 메인 메모리(미도시)로부터 프리페치한다. 결국, 빅팀 캐쉬 메모리(40)에는 메인 캐쉬 메모리(10)에서 라인 필 동작에 의해 희생되는 데이터 중, 이전 어드레스와 비연속적인 어드레스를 갖는 하나의 라인 데이터만을 빅팀 캐쉬 메모리(40)에 저장하므로, 빅팀 캐쉬 메모리(40)의 크기를 줄일 수 있으며, 타이밍 지연 또한 최소화하면서 히트율을 높일 수 있다.
이상에서 설명된 본 발명에 따른 캐쉬 메모리는 직접 사상 캐쉬뿐만 아니라 다른 알고리듬을 가지는 캐쉬의 경우에도 유효하게 적용할 수 있으며, 또한 인스트럭션 캐쉬 또는 데이터 캐쉬에 대해서도 동일하게 적용할 수 있다.
도 3은 도 2에 도시된 점프 비트 발생부(20)의 일실시예를 개략적으로 나타내는 블록도로서, 플립플롭부(100) 및 비교부(110)를 포함하여 구성된다.
도 3을 참조하여, 플립플롭부(100)는 클럭신호(CLK)에 응답하여 프로세서에서 액세스하고자 하는 현재 라인 어드레스를 래치하고, 클럭신호(CLK)에 응답하여 래치하고 있는 라인 어드레스를 이전의 라인 어드레스로서 출력한다.
비교부(110)는 프로세서에서 액세스하고자 하는 현재 라인 어드레스와 플립플롭부(100)에서 출력되는 이전 라인 어드레스를 비교하여, 그 차이가 0 또는 1이면 점프 비트(JB)를 0으로 설정하고, 그 차이가 2 이상이면 점프 비트(JB)를 1로 설정한다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플라피디스크, 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상 도면과 명세서에서 최적 실시예들이 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
상술한 바와 같이, 본 발명에 따른 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터 캐슁 방법에 따르면, 빅팀 캐쉬 메모리에 메인 캐쉬 메모리에서 라인 필 동작에 의해 희생되는 데이터 중, 이전 어드레스와 비연속적인 어드레스를 갖는 하나의 라인 데이터만을 저장하므로, 빅팀 캐쉬 메모리의 크기를 줄일 수 있으며, 타이밍 지연 또한 최소화하면서 히트율을 높일 수 있다.
Claims (10)
- 외부의 프로세서에서 필요로 하는 데이터를 외부의 메인 메모리로부터 읽어들여 저장하고, 상기 프로세서로부터 요구하는 데이터의 히트가 발생되면 해당 데이터를 상기 프로세서로 제공하는 메인 캐쉬 메모리;상기 메인 캐쉬 메모리에서 미스가 발생되어 라인 필 동작이 수행되면서 발생되는 희생 라인들 중, 이전 라인과 비연속적인 어드레스를 갖는 라인 데이터를 저장하고, 상기 프로세서로부터 요구하는 데이터의 히트가 발생되면 해당 데이터를 상기 프로세서로 제공하는 빅팀 캐쉬 메모리부; 및상기 빅팀 캐쉬 메모리부에서 히트된 라인 데이터 다음의 연속 어드레스를갖는 라인들을 상기 메인 메모리로부터 프리페치하고, 또한 상기 메인 캐쉬 메모리 및 상기 빅팀 캐쉬 메모리 모두에서 미스가 발생될 경우 상기 메인 메모리로부터 해당 데이터를 프리페치하고, 프리페치된 데이터를 상기 프로세서로 제공하는 프리패치 버퍼를 포함하는 것을 특징으로 하는 높은 히트율을 갖는 캐쉬 메모리 시스템.
- 제1항에 있어서, 상기 메인 캐쉬 메모리는어드레스 정보를 나타내는 태그;상기 프로세서의 연산에 필요한 데이터; 및연속 어드레스에 대한 데이터인가 비연속 어드레스에 대한 데이터인가를 표시하는 점프 비트를 포함하는 것을 특징으로 하는 높은 히트율을 갖는 캐쉬 메모리 시스템.
- 제2항에 있어서, 상기 빅티 캐쉬 메모리부는상기 프로세서에서 액세스하고자 하는 데이터의 현재 라인 어드레스와 이전 라인 어드레스를 비교하여 연속 어드레스를 가지면 제1논리레벨로, 비연속 어드레스를 가지면 상기 제1논리레벨과 상보적인 제2논리레벨로 상기 점프 비트를 설정하는 점프 비트 발생부;상기 메인 캐쉬 메모리에 라인 필이 일어날 경우, 상기 점프 비트를 검사하여 상기 점프 비트가 상기 제2논리레벨이면 희생되는 라인을 상기 빅팀 캐쉬 메모리에 저장하도록 제어하는 점프 비트 검사부; 및상기 점프 비트 검사부의 제어에 따라 상기 메인 캐쉬 메모리에서 희생되는 라인의 점프 비트, 태그 및 데이터를 저장하고, 상기 프로세서로부터 요구하는 데이터의 히트가 발생되면 해당 데이터를 상기 프로세서로 제공하는 빅팀 캐쉬 메모리를 포함하는 것을 특징으로 하는 높은 히트율을 갖는 캐쉬 메모리 시스템.
- 제3항에 있어서, 상기 점프 비트 발생부는상기 프로세서의 동작 클럭신호에 응답하여 프로세서에서 액세스하고자 하는 현재 라인 어드레스를 래치하고, 상기 클럭신호에 응답하여 래치하고 있는 라인 어드레스를 이전의 라인 어드레스로서 출력하는 플립플롭부; 및상기 프로세서에서 액세스하고자 하는 현재 라인 어드레스와 상기 플립플롭부에서 출력되는 이전 라인 어드레스를 비교하여, 연속 어드레스를 가지면 제1논리레벨로, 비연속 어드레스를 가지면 상기 제2논리레벨로 상기 점프 비트를 설정하는 비교부를 포함하는 것을 특징으로 하는 높은 히트율을 갖는 캐쉬 메모리 시스템.
- 제3항 또는 제4항에 있어서, 상기 현재 라인 어드레스와 상기 이전 라인 어드레스의 차가 0 또는 1이면 연속 어드레스인 것으로 판단하고, 그 차가 2 이상이면 비연속 어드레스인 것으로 판단하는 것을 특징으로 하는 높은 히트율을 갖는 캐쉬 메모리 시스템.
- 제1항에 있어서, 상기 빅팀 캐쉬 메모리부는 상기 프로세서로부터 요구하는 데이터의 히트가 발생되면 해당 데이터를 상기 프로세서로 제공하면서 상기 메인 캐쉬 메모리로 라인 필하는 것을 특징으로 하는 높은 히트율을 갖는 캐쉬 메모리 시스템.
- 제1항에 있어서, 상기 프리페치 버퍼는 상기 메인 메모리로부터 프리페치한 데이터를 상기 프로세서로 제공하면서 상기 메인 캐쉬 메모리로 라인 필하는 것을 특징으로 하는 높은 히트율을 갖는 캐쉬 메모리 시스템.
- 메인 캐쉬 메모리, 상기 메인 캐쉬 메모리에서 희생된 라인 데이터를 저장하는 빅팀 캐쉬 메모리 및 상기 메인 캐쉬 메모리 및 상기 빅팀 캐쉬 메모리에서 미스가 발생되면 외부의 메인 메모리로부터 해당 데이터를 프리페치하는 프리페치 버퍼를 구비하는 캐쉬 메모리 시스템에서, 히트율을 높이는 데이터 캐슁 방법에 있어서,(a)상기 메인 캐쉬 메모리에 저장된 라인 데이터 각각에 연속 데이터인가의 여부를 나타내는 점프 비트를 부여하는 단계;(b)상기 메인 캐쉬 메모리에서 히트가 발생되면 해당 데이터를 외부의 프로세서로 제공하는 단계;(c)상기 메인 캐쉬 메모리에서 미스가 발생되면, 상기 빅팀 캐쉬 메모리에서 히트가 발생되었는가를 판단하는 단계;(d)상기 (c)단계에서 상기 빅팀 캐쉬 메모리에서 히트가 발생되면, 해당 라인 데이터를 상기 프로세서로 제공하면서 상기 메인 캐쉬 메모리로 라인 필하고, 상기 라인 필 동작에 의해 상기 메인 캐쉬 메모리에서 희생되는 라인은 점프 비트에 따라 상기 빅팀 캐쉬 메모리에 저장하는 단계;(e)상기 빅팀 캐쉬 메모리에서 히트가 발생된 데이터에 연속되는 어드레스의 라인 데이터를 상기 프리페치 버퍼를 통해 상기 메인 메모리로부터 프리페치하여 상기 프로세서로 제공하면서 상기 메인 캐쉬 메모리에 라인 필하고, 상기 라인 필 동작에 의해 상기 메인 캐쉬 메모리에서 희생되는 라인은 점프 비트에 따라 상기 빅팀 캐쉬 메모리에 저장하는 단계; 및(f)상기 (c)단계에서 상기 빅팀 캐쉬 메모리에서도 미스가 발생되면 해당 데이터를 상기 프리페치 버퍼를 통해 상기 메인 메모리로부터 프리페치하여 상기 프로세서로 제공하면서 상기 메인 캐쉬 메모리에 라인 필하고, 상기 라인 필 동작에 의해 상기 메인 캐쉬 메모리에서 희생되는 라인은 점프 비트에 따라 상기 빅팀 캐쉬 메모리에 저장하는 단계를 포함하는 것을 특징으로 하는 히트율을 높이는 데이터 캐싱 방법.
- 제8항에 있어서, 상기 (a)단계는 상기 프로세서에서 액세스하고자 하는 현재 라인 어드레스와 이전에 액세스한 이전 라인 어드레스를 비교하여, 연속 어드레스를 가지면 제1논리레벨로, 비연속 어드레스를 가지면 상기 제1논리레벨과 상보적인 제2논리레벨로 상기 점프 비트를 설정하는 것을 특징으로 하는 히트율을 높이는 데이터 캐슁 방법.
- 제9항에 있어서, 상기 현재 라인 어드레스와 상기 이전 라인 어드레스의 차가 0 또는 1이면 연속 어드레스인 것으로 판단하고, 그 차가 2 이상이면 비연속 어드레스인 것으로 판단하는 것을 특징으로 하는 히트율을 높이는 데이터 캐슁 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020020067547A KR20040038548A (ko) | 2002-11-01 | 2002-11-01 | 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020020067547A KR20040038548A (ko) | 2002-11-01 | 2002-11-01 | 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20040038548A true KR20040038548A (ko) | 2004-05-08 |
Family
ID=37336751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020020067547A KR20040038548A (ko) | 2002-11-01 | 2002-11-01 | 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20040038548A (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100976433B1 (ko) * | 2008-03-21 | 2010-08-18 | 후지쯔 가부시끼가이샤 | 정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법 |
WO2014178683A1 (ko) * | 2013-05-03 | 2014-11-06 | 삼성전자 주식회사 | 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법 |
US9880940B2 (en) | 2013-03-11 | 2018-01-30 | Samsung Electronics Co., Ltd. | System-on-chip and method of operating the same |
-
2002
- 2002-11-01 KR KR1020020067547A patent/KR20040038548A/ko not_active Application Discontinuation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100976433B1 (ko) * | 2008-03-21 | 2010-08-18 | 후지쯔 가부시끼가이샤 | 정보 처리 장치, 프로그램을 기록한 기록 매체, 및 명령열 생성 방법 |
US9880940B2 (en) | 2013-03-11 | 2018-01-30 | Samsung Electronics Co., Ltd. | System-on-chip and method of operating the same |
WO2014178683A1 (ko) * | 2013-05-03 | 2014-11-06 | 삼성전자 주식회사 | 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법 |
US9886384B2 (en) | 2013-05-03 | 2018-02-06 | Samsung Electronics Co., Ltd. | Cache control device for prefetching using pattern analysis processor and prefetch instruction and prefetching method using cache control device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11074190B2 (en) | Slot/sub-slot prefetch architecture for multiple memory requestors | |
US8527707B2 (en) | High-performance cache system and method | |
JP3516963B2 (ja) | メモリアクセス制御装置 | |
US6219760B1 (en) | Cache including a prefetch way for storing cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line | |
US5499355A (en) | Prefetching into a cache to minimize main memory access time and cache size in a computer system | |
Hsu et al. | Prefetching in supercomputer instruction caches | |
JP3739491B2 (ja) | プリフェッチ命令を用いるハーバードアーキテクチャキャッシュメモリの調和したソフトウェア制御 | |
US8683136B2 (en) | Apparatus and method for improving data prefetching efficiency using history based prefetching | |
US7246204B2 (en) | Pre-fetch control device, data processing apparatus and pre-fetch control method | |
US6718441B2 (en) | Method to prefetch data from system memory using a bus interface unit | |
US8060701B2 (en) | Apparatus and methods for low-complexity instruction prefetch system | |
US7047362B2 (en) | Cache system and method for controlling the cache system comprising direct-mapped cache and fully-associative buffer | |
JPH09128294A (ja) | 先取り命令を生成する方法とシステム | |
US7836259B1 (en) | Prefetch unit for use with a cache memory subsystem of a cache memory hierarchy | |
US6915415B2 (en) | Method and apparatus for mapping software prefetch instructions to hardware prefetch logic | |
US20020194430A1 (en) | Cache memory and microprocessor using the same | |
US6938126B2 (en) | Cache-line reuse-buffer | |
KR100348099B1 (ko) | 단일의캐쉬액세스파이프단을이용하여파이프라인저장명령을실행하기위한장치및방법과,파이프라인프로세서및,컴퓨터시스템 | |
CN108132893A (zh) | 一种支持流水的常量Cache | |
JP3590427B2 (ja) | 先行読出機能付命令キャッシュメモリ | |
US6823430B2 (en) | Directoryless L0 cache for stall reduction | |
US5765190A (en) | Cache memory in a data processing system | |
US6516388B1 (en) | Method and apparatus for reducing cache pollution | |
KR20040038548A (ko) | 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법 | |
JPH1055276A (ja) | 多重レベル分岐予測方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |