KR20110059764A - 액티브 로우를 이용하는 캐시 필터링 - Google Patents

액티브 로우를 이용하는 캐시 필터링 Download PDF

Info

Publication number
KR20110059764A
KR20110059764A KR1020117008533A KR20117008533A KR20110059764A KR 20110059764 A KR20110059764 A KR 20110059764A KR 1020117008533 A KR1020117008533 A KR 1020117008533A KR 20117008533 A KR20117008533 A KR 20117008533A KR 20110059764 A KR20110059764 A KR 20110059764A
Authority
KR
South Korea
Prior art keywords
cache
row
memory
data
miss
Prior art date
Application number
KR1020117008533A
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 모사이드 테크놀로지스 인코퍼레이티드
Publication of KR20110059764A publication Critical patent/KR20110059764A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

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

캐시로부터 덜 빈번하게 사용되는 레퍼런스를 거부하기 위해 액티브 로우를 사용하여 프로세서 캐시에 허용된 레퍼런스의 수를 줄이는 데이터 프로세싱 및 메모리 내에서 사용되는 방법 및 장치에 관한 것이다. 로우 히트 또는 미스를 나타내는 신호를 생성하기 위해 메모리 제어기 내의 비교기가 사용되며, 이들 신호가 하나 이상의 디멀티플렉서에 인가되어 메모리 캐시 위치로 메모리 레퍼런스의 전송을 가능 또는 불가능하게 한다. 캐시는 데이터 및 또는 명령 또는 L1, L2, 데이터 및 명령의 일부 조합을 포함하는 레벨 1(L1) 또는 레벨 2(L2) 캐시가 가능하다.

Description

액티브 로우를 이용하는 캐시 필터링{CACHE FILTERING USING ACTIVE ROWS}
본 발명은 일반적으로 메모리 및 프로세싱에 관한 것이다. 더 구체적으로, 본 발명은 캐시 필터링을 위한 방법 및 장치에 관한 것이다.
컴퓨터 프로세싱 및 특히 메모리 시스템의 기술에서, 프로세서와 메인 메모리 사이의 속도 차이가 커지고 있다. 이 차이는 전체 컴퓨팅 시스템의 성능에 직접 영향을 미친다. 성능 우려를 경감시키기 위해, 컴퓨팅 시스템은 이 속도 차이를 이어주기 위해 의존하는 캐시 메카니즘을 포함한다. 이 속도 차이를 이어주는데 이러한 캐시 메카니즘의 성공 여부는 크기, 블록 크기 및 결합성 등의 파라미터에 따라 변한다. 그러나, 이러한 캐시 메카니즘은 이들 파라미터를 변화시킴으로써 성능을 연속해서 개선시킬 수 없는데, 왜냐하면, 시스템 복잡성, 전력 소비 및 캐시 자체의 동작의 증가로 인해 수확 체감 포인트에 도달하기 때문이다.
현존 캐싱 메카니즘은 캐싱이 효과적이도록 레퍼런스의 공간적 및 시간적 국소성에 의존한다. 그러나, 멀티미디어 애플리케이션 등의 일부 상황은 국소성을 제한하며, 메인 메모리의 성능에 더 의존한다. 또한, C, C++로 작성된 애플리케이션 및 객체 지향 프로그래밍은 이용가능한 메모리 공간에 데이터를 매핑하기 위해 동적으로 할당된 데이터 구조를 사용한다. 이러한 데이터는 메모리에 분산되므로 공간적 국소성이 부족하다. 이들 애플리케이션에서 데이터 요소는 아주 빨리 재사용될 수 없어서, 또한 시간적 국소성이 부족하다. 이들 유형의 컴퓨팅 애플리케이션에서 공간적 및 시간적 국소성의 부족은 종래의 메카니즘을 덜 효과적으로 만든다.
메모리 시스템 내에서, 공간적 및 시간적 국소성이 부족하지만 여러 번 사용되는 레퍼런스는, 캐시에 포착되어 있지만 다시 사용되지 않는 레퍼런스보다, 캐시에서 더 중요하다. 다시 사용되지 않는 캐시 레퍼런스는 다른 빈번하게 사용되는 레퍼런스와 충돌하기 때문에 바람직하지 않다. 뿐만 아니라, 공간적 및 시간적 국소성이 부족하지만 사용 빈도가 풍부한 레퍼런스는 제거되거나 대체되어서는 안된다.
이러한 캐시 메카니즘을 개선하는 것은 일부 애플리케이션에서 존재하지 않는 레퍼런스의 국소성을 활용함으로써 일반적으로 달성된다. 이것은 가장 흔하게는, 캐시의 크기 또는 결합성을 증가시키고, 별도 레벨의 메모리 계층의 제공, 또는 프리-페칭 버퍼의 제공에 의해 캐시에 더 많은 레퍼런스를 유지하기 위해 별도 하드웨어의 추가된 비용에 의해 이루어진다.
따라서, 프로세서 속도와 메인 메모리 속도 사이의 커지는 차이 및 일부 애플리케이션에서 국소성의 부족으로 인해서 캐시 메카니즘은 덜 효과적이 된다. 캐시 제한 및 캐시 미스 패널티(cache miss penalty)의 연속적인 증가를 처리하기 위해, 데이터가 필요하기 전에 메인 메모리로부터 미리 데이터를 페치하도록 하드웨어 및 소프트웨어 프리-페칭 방식이 사용된다. 이러한 프리-페칭 방법은 일부 애플리케이션에서 보여지는 규칙적인 액세스 패턴에 유용하며, 이러한 방법은 현대 및 미래의 프로세서에서 수백 사이클로 연장될 수 있는 매우 긴 캐시 미스 대기를 숨길 수 없다.
선택적 할당을 통해서 일차 메모리 캐시(즉, 레벨 1 또는 L1 캐시)를 더 잘 관리하기 위한 다른 방법이 제안되었다. 이들 선택적 할당 방식은 캐시를 정적으로 분할(partition)하므로 캐시 블록은 그 공간적 및 시간적 국소성에 기초하여 상이한 서브-캐시에 할당된다. 그러나, 이들 방법은 액세스 패턴이 분할에 적합하지 않으면 잘 실행될 수 없는 점에서 문제가 된다.
L1 캐시 성능을 개선시키도록 가장 빈번하게 사용되는 레퍼런스를 더 높은 레벨 캐시에 이동시키기 위해 멀티-레벨 캐시에서 레퍼런스의 사용 빈도를 사용하는 다른 방법이 제안되었다. 그러나, 이 접근 방법은 작은 L1 캐시를 갖는 시스템에 적합하므로 L1 캐시 크기 및 결합성이 증가할 때 덜 효과적으로 된다.
유용한 예상되는 메모리 레퍼런스를 제1 레벨 캐시로 가져오도록 필터로서 제1 레벨 캐시를 사용하는 또 다른 방법이 제안되었다. 그러나, 이 접근 방법은 제한된 성능 개선을 가져오고, 레퍼런스의 유용성을 예측하기 위해 하드웨어 비용을 불리하게 증가시킨다.
그러므로, 현대 메모리 시스템과 컴퓨터 프로세서 사이의 속도 차이를, 비용이 드는 추가적인 하드웨어에 의존하지 않고 큰 메모리 캐시를 취급할 수 있는 비용효과적인 방식으로 이어주는 캐시 메카니즘을 제공하는 것이 바람직하다.
본 발명의 목적은 이전 캐시 메카니즘의 적어도 하나의 단점을 제거 또는 완화시키는 것이다.
이것은, 여러 번 사용되는 소수의 레퍼런스와 1회 이상 사용되지 않는 다수의 레퍼런스가 있는 메모리 레퍼런스의 동작의 분석에 의해 인식되어 왔다. 또한, 2회 이상 사용되는 어드레스의 수는 1회 이상 사용되는 어드레스의 수의 대략 절반인 것으로 밝혀졌다. 이것은 종래의 캐시로 전송되는 어드레스의 절반이 사용되지 않음을 의미한다. 어드레스들은 값비싼 프로세서와 메모리 버스 시간을 사용하여 메인 메모리로부터 캐시로 전송된다. 또한, 캐시에서 사용되지 않는 레퍼런스는 빈번하게 사용되는 레퍼런스와 경쟁하고, 그들을 이동시킨다. 그러므로, 보다 빈번하게 사용되는 레퍼런스를 캐시에 유지하고 덜 빈번하게 사용되는 레퍼런스를 거부하는 것이 유용하다.
일반적으로, 본 발명의 실시예는 DRAM 오픈 로우에 대해 레퍼런스의 동작을 감시함으로써 캐시의 동적 관리를 제공한다. DRAM의 데이터는 프로세서의 프리페칭(pre-fetching) 방식 또는 캐싱에 의해 영향을 받지 않는다. 캐시에 데이터를 가질 때, 오직 제한된 크기의 데이터가 주어진 시간에 캐시로 전송되기 때문에 그 국소성이 변화한다. 캐시의 데이터의 동작을 사용하는 현존 방식은 프로세서에 의해 영향을 받고, 그 범위가 캐시 국소성으로 제한된다. 따라서, 캐시 제한이 캐시 자체로부터 해결될 수 없고, 오히려 캐시의 외부에 주목해야 하는 것이 분명해진다. 본 발명의 실시예는 시스템 복잡성을 증가시키지 않고 캐시 성능을 개선시키기 위한 새로운 접근 방식을 제공한다. 이것은 메인 메모리에서 사용 빈도와 레퍼런스의 동작을 활용함으로써 가능해진다.
본 발명의 실시예는 한번 사용된 어드레스를 거부함으로써, 캐시 충돌과 유용한 블록의 방출을 감소시킨다. 거부된 레퍼런스에 대한 전체 캐시 블록의 전송 시간의 감소로 인해서 미스 패널티(miss panalty)가 또한 감소된다. 본 발명의 실시예는 캐시로부터의 레퍼런스를 거부하면 프로세서 레지스터에 하나의 워드의 전송을 제공한다. 전형적인 멀티 코어 칩에서, 메모리 버스 활용에 대한 요구가 증가하여 시스템 확장성을 제한시킨다. 본 발명의 실시예는 오직 한 번만 사용되는 레퍼런스에 대해서 프로세서로의 긴 캐시 블록의 전송을 제거함으로써 버스 활용성의 감소를 제공된다.
제1 구성에서, 본 발명은 캐시 필터링 방법을 제공하며, 이 방법은, 캐시 미스시, 주어진 메모리 레퍼런스에 대해서 로우 히트/미스(row hit/miss) 신호를 얻는 단계; 및 상기 로우 히트/미스 신호가 로우 미스를 나타낼 때, 상기 로우 히트/미스 신호와 연관된 상기 메모리 레퍼런스를 거부하는 단계를 포함한다.
또 다른 실시예에서, DRAM(Dynamic Random Access Memory) 내의 캐시 필터링 방법이 제공되며, 이 방법은, 메모리 레퍼런스에 대응하는 로우 히트/미스 신호를 생성하는 단계; 및 레벨 1(L1) 및 레벨 2(L2) 캐시 미스가 발생하고, 상기 로우 히트/미스 신호가 로우 미스를 나타내면, 상기 DRAM의 데이터를 액세스하고, 대응하는 로우 래치에서 로우 어드레스를 래칭하는 단계를 포함한다.
또 다른 실시예에서, 본 발명은 데이터 프로세싱용 장치를 제공하며, 이 장치는, 복수의 위치를 갖는 메모리; 상기 메모리에 연결되고, 상기 복수의 위치 중 하나에 관련된 메모리 레퍼런스에 대응하는 로우 히트/미스 신호를 생성하는 적어도 하나의 비교기를 포함하는 메모리 제어기; 상기 메모리 제어기에 동작가능하게 연결되는 디멀티플렉서로서, 메모리 레퍼런스에 관련된 데이터를 라우팅하도록 로우 히트/미스 신호가 상기 디멀티플렉서에 의해 사용되는 디멀티플렉서; 및 상기 데이터에 대응하는 로우를 래칭하는 하나의 로우 래치를 포함한다.
또 다른 실시예에서, SRAM(Static Random Access Memory) 내의 캐시 필터링 방법이 제공되며, 이 방법은, 메모리 레퍼런스에 대응하는 로우 히트/미스 신호를 생성하는 단계; 및 레벨 1(L1) 및 레벨 2(L2) 캐시 미스가 발생되고, 상기 로우 히트/미스 신호가 로우 미스를 나타내면, 랜덤 액세스 모드를 사용하여 상기 SRAM의 데이터를 액세스하고, 상기 데이터에 대응하는 로우를 래칭하는 단계를 포함한다.
본 발명의 다른 구성 및 특징은 첨부 도면과 함께 본 발명의 실시예의 다음의 설명을 고려할 때 본 기술에서 숙련된 자에게 분명해진다.
본 발명의 실시예를 첨부된 도면을 참조하여, 예를 통해, 설명한다.
도 1은 본 발명의 실시예와 함께 사용되는 DRAM(Dynamic Random Access Memory) 및 DRAM내의 로우 래치를 도시하는 블록도이다.
도 2는 본 발명의 실시예를 도시하며, 프로세서, DRAM 및 DRAM 제어기를 포함하는 시스템용 블록도이다.
도 3은 도 2에 나타낸 것같이 DRAM 제어기에 대해 본 발명의 실시예에 따른 블록도이다.
도 4는 로우 신호가 로우 히트를 나타낼 때의 데이터 전송을 도시하는 도면이다.
도 5는 로우 신호가 로우 미스를 나타낼 때의 데이터 전송을 도시하는 도면이다.
도 6는 본 발명의 실시예에 따른 캐시 필터링 방법의 실시예를 도시하는 플로우챠트이다.
도 7은 본 발명의 실시예가 적용가능한 시스템 내에서 주어진 뱅크 내의 다중 액티브 부분 로우를 갖는 시스템의 도시이다.
도 8은 도 7과 유사한 예이며, 시스템은 적응 가능한 영역 변동에 관련된다.
도 9는 명령 및 데이터 캐시에 관해서 본 발명의 또 다른 실시예를 도시하는 블록도이다.
도 10은 L1 데이터 캐시에 관해서 본 발명의 또 다른 실시예를 도시하는 블록도이다.
도 11은 도 10에 따른 캐시 필터링 방법의 실시예를 도시하는 플로우챠트이다.
도 12는 클로즈 페이지 DRAM 정책에 따른 캐시 필터링 방법의 또 다른 실시예를 도시하는 플로우챠트이다.
도 13은 그 어드레스 사용 평균에 대한 벤치마크 트레이스의 그래픽적인 도시이다.
도 14는 본 발명의 실시예에 따른 캐시 필터링을 사용하는 시스템과 비교하여, 종래의 시스템에서 사용되며, 도 13에서 식별된 벤치마크 트레이스에 대해 L1 미스 레이트의 비교의 그래픽적인 도시이다.
도 15는 본 발명의 실시예에 따른 캐시 필터링을 사용하는 시스템과 비교하여, 종래의 시스템에서 사용되며, 도 13에서 식별된 벤치마크 트레이스에 대해 L2 미스 레이트의 비교의 그래픽적인 도시이다.
도 16은 본 발명의 실시예에 따른 캐시 필터링을 사용하는 시스템과 비교하여, 종래의 시스템에서 사용되며, 도 13에서 식별된 벤치마크 트레이스에 대해 DRAM 로우 히트 레이트의 비교의 그래픽적인 도시이다.
도 17은 본 발명의 실시예에 따른 캐시 필터링을 사용하는 시스템과 비교하여, 종래의 시스템에서 사용되며, 도 13에서 식별된 벤치마크 트레이스에 대해 성능의 그래픽적인 도시이다.
도 18은 본 발명의 실시예에 따른 캐시 필터링을 사용하는 시스템과 비교하여, 종래의 시스템에서 사용되며, 상이한 L2 캐시 크기 내에서 평균된 도 13에서 식별된 벤치마크 트레이스에 대해 성능의 비교의 그래픽적인 도시이다.
도 19는 본 발명의 실시예에 따른 캐시 필터링을 사용하는 시스템과 비교하여, 종래의 시스템에서 사용되며, 상이한 수의 뱅크 내에서 평균된 도 13에서 식별된 벤치마크 트레이스에 대해 성능의 비교의 그래픽적인 도시이다.
도 20은 본 발명의 실시예에 따른 캐시 필터링을 사용하는 시스템과 비교하여, 종래의 시스템에서 사용되며, 쌍으로 인터리브된 도 13에서 식별된 벤치마크 트레이스에 대해 성능의 비교의 그래픽적인 도시이다.
본 발명의 실시예는, 예시된 실시예에서, 시스템의 복잡성을 증가시키지 않고 캐시로부터 덜 빈번하게 사용되는 레퍼런스를 거부하기 위해 DRAM(Dynamic Random Access Memory) 액티브 로우를 사용함으로써 성능을 개선시킨 캐시 필터링 방법 및 장치를 제공한다.
본 캐시 필터 방법 및 장치는 DRAM 기반 메모리 시스템을 취하지만, 본 발명의 적어도 일부 실시예의 의도된 범위로부터 벗어나지 않으면 SRAM(Static Random Access Memory) 또는 임의의 다른 유형의 적합한 스토리지를 사용할 수 있는 것으로 이해되어야 한다.
도면을 참조하여 서술된 다음의 예는 본 발명에 따른 일 실시예를 설명하고 도시하기 위한 것이며, 본 발명을 활용하여 종래의 DRAM-기반 메인 메모리 시스템에 대해 구체화된다.
도 1은 DRAM 및 DRAM 제어기 내의 로우 래치에 대한 블록도를 나타낸다. DRAM은 뱅크 0 내지 뱅크 31로 나타낸 32개의 뱅크로 이루어진 멀티 뱅크 시스템을 사용하는 것으로 한다. 각각의 뱅크는 1024 로우(즉, r0 ~ r1023)를 갖고, 각각의 로우는 1024 칼럼(즉, c0 ~ c1023)을 갖는다. 전체 DRAM 스토리지는 32 M 워드이다. 각각의 워드는 전체 DRAM 크기 = 128 MB가 되도록 4바이트가 되게 한다. 프로세서 어드레스(A26 ~ A0)는 128MB 스토리지에서 임의의 바이트에 액세스하기 위해 사용된다.
프로세서 어드레스는 뱅크, 로우, 칼럼 및 바이트 선택에 있어서 단일 위치를 선택하기 위해 사용된다. 뱅크 선택은 32개 뱅크 중에서 하나의 뱅크를 선택하기 위해 사용되는 어드레스 A16 ~ A12에 관련한다. 로우 선택은 1024 로우 중에서 액세스된 뱅크에서 하나의 로우를 선택하기 위해 사용되는 어드레스 A26 ~ A17에 관련한다. 오픈 페이지 정책(open page policy)이 사용되면 각각의 뱅크는 한번에 하나의 로우를 액티브로 유지하는 것이 허용된다. 본 발명의 실시예에 따른 캐시 필터링은, DRAM 제어기의 로우 래치의 각각의 뱅크의 가장 최근에 액세스된 로우를 저장함으로써 클로즈 페이지 정책(closed page policy)을 사용할 수 있는 것에 주의하는 것이 중요하다. 로우 720은 뱅크 0에 액세스되고, 로우 566은 뱅크 31에 액세스되는 것으로 한다. 칼럼 선택은 어드레스 액세스된 로우에서 1024 중에서 하나의 칼럼을 선택하기 위해 사용되는 A11 ~ A2에 관련한다. 바이트 선택은 액세스된 칼럼 및 로우에서 4 바이트 워드 중에서 하나의 바이트를 선택하기 위해 사용되는 어드레스 A1 ~ A0에 관한다.
일반적인 대부분의 캐시 메카니즘에서와 같이, 본 발명의 실시예는 DRAM에서 더 빠른 칼럼 액세스를 실현하기 위해 오픈 페이지(OP) 정책을 사용한다. 하나의 액티브 로우는 각각의 뱅크에 래치되어야 한다. 그러므로 필요한 래치의 수는 32와 같다. 각 래치는 DRAM에서 로우가 액티브될 때마다 10비트의 어드레스(A26 ~ A17)를 저장한다. 이들 래치는 DRAM 제어기에서 구현된다. 이 예에서, 최초 로우 래치는 720인 뱅크0에서 액티브 로우의 어드레스를 저장한다. 최종 로우 래치는 566인 뱅크31에서 액티브 로우의 어드레스를 저장한다. 이들 래치에 대한 이들 입력은 프로세서 어드레스 A26 ~ A17에 모두 접속된다. 각각의 로우 래치는 특정 로우 어드레스를 래치하기 위해 각 DRAM 뱅크에 대응하는 디코딩된 RAS 신호에 의해 클락된다. 임의의 종래의 오픈 페이지 DRAM 설계에서와 같이 로우가 액티브가 될 때, 이들 RAS 신호는 각 래치로 하여금 그 액세스된 로우를 저장하게 하는 클락 신호로서 동작한다.
도 2는 본 발명을 사용하는 시스템에 대한 블록도이다. 도 2를 참조하면, 프로세서(200)는 레벨 1(L1) 캐시(27A, 27B) 및 레벨 2(L2) 캐시(28)를 포함한다. 레벨 2(L2) 캐시(28)는 통합된(unified) 캐시이다. L1 캐시(27A)는 명령 버스(26)를 통한 명령 수신 정보용 부분이고, 캐시(27B)는 데이터 버스(25)를 통한 데이터 수신 정보용 부분이다. 명령 버스(26)는 명령 레지스터(21)와 통신한다. 멀티-뱅크 DRAM(202)은 오픈 페이지 정책으로 사용된다. DRAM 뱅크는 로우 히트 레이트를 증가시키기 위해 인터리브된 페이지이다. DRAM 제어기(201)는 프로세서(200)로부터 메모리 요구(request)를 수신하여, DRAM(202)을 액세스하기 위한 CAS(Column Address Strobe)와 RAS(Row Address Strobe) 신호를 생성한다. DRAM 제어기(201)는 현재 메모리 요구의 로우 어드레스와 래치된 액티브 로우의 어드레스를 비교하여, 일치하면 로우 히트 표시를 제공한다. DRAM(202)에서의 위치에 대한 제1 액세스는 로우 미스 표시를 생성한다. DRAM 제어기(201)는 액세스된 로우를 래치하여 액티브로 유지한다. 동일한 메모리 뱅크에 대한 다음 액세스가 동일한 어드레스에 대한 것이면, 로우 히트가 생성된다.
일반적으로, 본 발명의 실시예들은 DRAM 레퍼런스가 이전에 사용되었는지를 비교기를 통해 결정하기 위해 로우 히트 신호를 사용한다. 로우 비교기 신호가 미스이면 이것은 DRAM에서의 이러한 위치 또는 이 로우에 대한 제1 액세스가, 사용되지 않는 이러한 위치 또는 또 다른 위치로의 인터비닝 액세스로 인해 액티브로 되지 않는다. 로우 비교기 신호가 히트이면, 본 발명의 실시예들은 L1 및 L2 캐시로의 레퍼런스 데이터의 전송을 허용하며, 본 발명의 실시예들은 로우 미스를 생성하는 레퍼런스를 거부함으로써 캐시에서 허용된 레퍼런스의 수를 감소시킨다. 이것은 로우 미스에서, 하나의 워드만이 레지스터 파일(22)로 전송되기 때문에 프로세서로의 데이터의 전송 시간을 감소시킨다. 대조적으로, 종래의 캐시에서 로우 히트와 로우 미스 모두에서 전체 블록이 캐시에 전송된다.
도 3은 도 2에 도시된 특히 DRAM 제어기(201), 프로세서(200) 및 DRAM(202)에 대해서 상기 서술된 비교기 사용을 구체화한 블록도를 나타낸다. 여기서, DRAM 제어기(201)는 뱅크0 로우 래치 31-1 ~ 뱅크31 로우 래치 31-32를 포함하는 로우 래치를 갖는 것으로 도시된다. 상기 서술된 것같이, 액세스된 뱅크의 액티브 로우를 래치하기 위해 로우 래치가 사용된다. 본 발명의 실시예는 또한 현재의 프로세서 액세스가 액티브 로우에 있는지를 판정하도록, 현재의 프로세서 어드레스와 DRAM(202)에서의 액세스된 뱅크에 대해 래치된 로우를 비교하기 위해, 로우 비교기(30-1 ~ 30-32) - 각각의 로우 래치 31-1 ~ 31-32에 대해 하나 -를 사용한다. 현재의 액세스된 뱅크에 대한 비교기의 출력만이 고려된다. 다른 비교기 출력은 뱅크 어드레스 디코더(비도시)로 디스에이블된다. 비교기(30-1 ~ 30-32)는 판정 결과를 나타내는 출력 신호를 제공한다. 비교기 출력 신호에 응답하여, 액세스된 뱅크에서 로우 히트(즉, 프로세서 어드레스 A26 ~ A17과 래치된 로우 사이의 일치)가 있으면, OR 게이트(33)는 ROW HIT/MISS 신호 = 1을 출력한다. 비교기(30-1 ~ 30-32)는 프로세서의 어드레스의 비트(A26 ~ A17)를 액세스된 뱅크에 대해 래치된 로우와 비교한다. 현재 프로세서 로우 어드레스가 래치된 로우와 일치하지 않으면, 비교기(33)는 미스를 나타내는 ROW HIT/MISS =0을 출력한다. DRAM 제어기(201)는 동일한 로우에 대해 다음의 가능한 액세스을 위해, 대응하는 뱅크의 래치에서 현재 액세스된 로우를 래치한다.
DRAM 제어기(201)는 본 발명의 실시예에 따른 캐시 필터링 방법 및 장치에 의해 요구되는 것으로서 프로세서 캐시에 대해 현재 메모리 레퍼런스를 수용할지 또는 거부할지를 판정하기 위해 프로세서(200)에 ROW HIT/MISS 신호를 제공한다. DRAM 제어기(201)는 종래의 시스템에서 액세스되는 DRAM(202)에 대해서 적절한 로우 어드레스, 칼럼 어드레스 및 나머지의 제어 신호(예를 들면, RAS, CAS, ‥ 등)를 생성하기 위해 프로세서 어드레스 및 제어 신호를 사용한다.
또한, 도 2에 대해서, 프로세서(200)는 DRAM 제어기(201)로부터 생성된 ROW HIT/MISS 신호(24)를 검사하고, 데이터를 캐시 또는 레지스터 파일(22)에 라우팅하기 위해 디멀티플렉서(23)를 사용한다. 프로세서(200)는 데이터 전송의 크기를 만족하기 위해 데이터 전송에 필요한 타이밍을 조정한다. 프로세서(200)는, 통상적으로 다중 워드로 구성되는 캐시 블록을 전송하고, 임의의 종래의 시스템에서 데이터가 캐시에 수용되면, 다중 프로세서 버스 사이클을 필요로 한다. DRAM(202)으로부터의 레퍼런스는 덜 빈번하게 사용되기 때문에 거부되면, 프로세서는 본 발명의 실시예에 따라서 레지스터 파일(22)에 하나의 워드를 직접 전송하기 위해 오직 하나의 사이클을 필요로 한다.
도 4는 ROW HIT/MISS 신호가, 종래의 시스템에서와 같이 동일한 버스 타이밍인 히트일 때 데이터 버스(420)를 따라서 프로세서(400)와 DRAM(410) 사이의 데이터 전송의 타이밍을 나타낸다. 프로세서(400)는 L1과 L2 캐시에 DRAM(410)에서의 전체 블록을 전송하는 것이 필요하다. 여기서, L1 캐시(401)는 블록(401a)을 포함하고, L2 캐시(402)는 블록(402a)을 포함한다. DRAM(410)에 나타낸 블록 크기는 32 워드인 것으로 가정하고, 데이터 버스(420)를 따라서 데이터 전송을 완료하기 위해서 32 버스 사이클(430)을 취한다. 레지스터 파일(440)을 도 5를 참조하여 더 상세히 설명한다.
도 5는 ROW HIT/MISS 신호가 미스일 때 데이터 전송기(430a)의 타이밍을 나타내고, 프로세서(400)는 요구된 워드만을 레지스터 파일(440)에 전송하는 것이 필요하다. 워드는 1 버스 사이클을 취한다.
도 6은 본 발명의 실시예에 따른 캐시 필터링 방법의 플로우 챠트를 나타낸다. 일반적으로, 로우 히트 또는 로우 미스로 캐시 미스가 발생한다. L1 및 L2로의 캐시 미스에서, 메모리 레퍼런스가 로우 미스를 생성하면, 본 방법은 랜덤 액세스 모드를 사용하여 DRAM에서 데이터를 액세스하고, 액세스된 로우를 래치한다. 이것은 어드레스의 제1 사용을 나타내고, 이 방법은 데이터만을 레지스터 파일에 전송한다. L1 및 L2로의 캐시 미스에서, 메모리 레퍼런스가 로우 히트를 생성하면, 본 방법은 오픈 페이지 모드를 사용하여 DRAM을 액세스하고, 데이터의 전체 블록을 전송함으로서 L1, L2 캐시를 갱신하고, 로우를 액티브로 유지한다. 동작시, 데이터 액세스는 READ 액세스 또는 WRITE 액세스이다.
도시된 것같이 READ 액세스의 예에서, 이 방법은 L1이 히트인지를 처음에 판정한다. 그렇다면, 데이터는 L1으로부터 판독되고, 블록은 MRU(Most Recently Used)로서 간주된다. 그렇지 않으면, 본 방법은 L2가 히트인지를 판정한다. 그렇다면, 데이터는 L2로부터 판독되고, L1은 갱신되고, L1 및 L2 블록은 MRU가 되고, 블록이 더티하면, 즉, 캐시에서의 블록이 프로세서에 의해 수정되었지만 스토리지에 다시 쓰여지지 않았으면, L1 블록의 WB(Write Back)가 발생한다. L2가 히트라고 판정되지 않으면, 본 방법은 히트가 로우 히트인지를 판정한다. 그렇다면, L2 블록은 더티 L2 블록이 메모리로의 L2 또는 L1의 WB를 발생시키고, 오픈 페이지(OP) 모드를 이용하는 메모리의 판독, L2 및 L2의 갱신, 및 L1 및 L2에서의 블록을 MRU로 하는지를 검사한다. L2 블록이 더티가 아니면, 메모리는 오픈 페이지 모드를 이용하여 판독되고, L1 및 L2가 갱신되고, L1 및 L2 블록이 MRU가 된다. L2가 히트인 것으로 판정되지 않고, 이 방법이 로우 히트가 없는 것으로 판정하면, 메모리는 단일 워드만을 전송하는 랜덤 액세스를 이용하여 메모리가 판독되고, 액세스된 로우가 로우 래치에 래치된다. L1 및 L2는 갱신되지 않는다.
WRITE 액세스의 예에서, 본 방법은 L1이 히트인지를 처음에 판정한다. 그렇다면, 데이터는 L1에 기록되고, 더티 비트가 설정되고, L1에서의 블록이 MRU가 된다. 그렇지 않으면, 본 방법은 L2가 히트인지를 판정한다. 그렇다면, 데이터는 L1 및 L2에 기록되고, L1 및 L2에서의 더티 비트가 설정되고, L1 및 L2 블록이 MRU가 된다. L2가 히트가 아닌 것으로 판정되면, 본 방법은 액세스가 로우 히트인지를 판정한다. 그렇지 않으면, 메모리는 단일 워드만을 전송하는 랜덤 액세스를 이용하는 것으로 기록되고, 액세스된 로우는 로우 래치에 래치되고, L1 및 L2는 기록되지 않는다. 액세스가 로우 히트이고, L1 또는 L2 블록이 더티이면, L2 또는 L1 블록이 메모리에 되기록되고, 메모리는 오픈 페이지 모드를 이용하여 기록되고, L1 및 L2 블록이 기록되고, L1 및 L2 블록이 MRU가 된다. L1 또는 L2 블록이 더티가 아니면, 메모리는 오픈 페이지 모드를 이용하여 기록되고, L1 및 L2 블록이 기록되고, L1 및 L2 블록이 MRU가 된다.
주어진 시스템 용량 및 애플리케이션 필요사항에 기초하여 상이한 시스템에 대해 본 발명이 최적화되도록 본 발명의 또 다른 실시예가 가능하다. 일부 시스템은 2 이상의 레벨의 캐시를 사용할 수 있거나 클로즈 페이지 정책 등의 상이한 DRAM 액세스 정책을 사용할 수 있는 반면, 여전히 다른 애플리케이션은 DRAM의 필터링된 영역의 정적 선택을 가변 선택으로 전환하는 것과 같이 런 타임에서 그 동작을 변화시킬 수 있다. 본 발명의 실시예에 따른 캐시 필터링 방법 및 장치를 이러한 변경된 요구사항에 대해 최적화하고 적합하게 하기 위해, 2가지의 실시예의 변경이 고려된다.
첫 번째, 본 발명의 실시예는 필터링에 대한 DRAM 영역의 선택을 고려하여 변경될 수 있다. 각 DRAM 뱅크에서 빈번하게 사용되는 영역의 수를 증가시키기 위해 변경이 행해진다. 서술된 방법은 각 뱅크 마다 오직 하나의 액티브 로우 또는 영역을 갖는다. 각 로우는 연속적인 어드레스의 선형 어레이이다. 변경에 의해, 각 뱅크의 비연속적인 액세스가, 빈번하게-사용되는 영역으로서 사용될 수 있다. 많은 애플리케이션은 동일한 뱅크에서 액세스되는 하나 이상의 액티브 영역을 가지므로, 그 데이터는 캐시로 전송되는 것이 필요하다.
두 번째, 본 발명의 실시예는 캐시 필터 선택을 고려해 변경될 수 있다. 특히, 실시예들은 덜 빈번하게 사용되는 레퍼런스를 거부하기 위해, 프로세서에서 특정 캐시 레벨 또는 캐시의 조합을 선택할 수 있도록 변경될 수 있다. 예를 들면, 본 방법은 L1 데이터 캐시는 덜 빈번하게 사용되는 액세스를 거부하게 할 수 있고, 다른 레벨은 그것을 수용하게 할 수 있다. 이들 또 다른 실시예의 상세한 설명을 이후 상세하게 설명한다.
본 발명의 또 다른 실시예에 따르면, 다중 액티브 영역 변동이 고려된다. 특히, 이전 서술된 캐시 필터링 방법의 선택도를 개선시키기 위해, 각 뱅크에서 2개의 부분적인 로우가 로우 래치에서 스토리지에 대해 선택된다. 이전 설명된 방법에서, 뱅크당 오직 하나의 로우가 래치되고, 매번 액세스는 동일한 뱅크의 상이한 로우로 진행하고, 이전 래치된 로우는 새로운 것으로 대체되어야 한다. 많은 애플리케이션에서, 동일한 뱅크의 하나 이상의 영역이 액티브일 수 있으므로, 캐시로 전송되어야 한다. 다중 로우 래칭은 캐시가 각 뱅크의 하나 이상의 로우로부터 갱신되는 것을 허용한다. 이것은 덜 빈번하게 사용되는 레퍼런스를 거부하는데 있어서 필터링이 보다 선택적이 되게 하고, 액티브 DRAM 영역으로의 액세스를 거부하는 가능성을 감소시킨다. 본 설명에서, "액티브"는 프로세서가 여전히 이 영역을 방문하여 그 데이터를 액세스하는 것을 의미한다.
도 7은 각 뱅크의 다중 액티브 부분 로우에 대해 래치를 사용하는 시스템을 나타낸다. DRAM 뱅크는 DRAM 제어기의 래치가 하나 이상의 로우 어드레스를 저장하기 위해 오픈 페이지 정책을 사용하는 것을 필요로 하지 않음에 주의한다. DRAM 뱅크로의 각 액세스는 DRAM 제어기에서 대응하는 래치에서 저장될 수 있는 특정 로우 어드레스를 갖는다.
도 7을 여전히 참조하면, 각 뱅크의 래치는 2개의 부분 로우를 저장한다. 각 부분 로우는 전체 로우의 절반이고, 도시된 예에서, 오직 512 칼럼(예를 들면, 상위 r12, 하위 r823)만을 가진다. 각 래치의 크기는, A11을 저장하기 위해 2개의 추가적인 비트를 가지며, 하나의 로우 어드레스를 저장하기 위해 필요한 래치의 크기의 2배이다. 어드레스 A11은 로우의 상위 절반이 선택되는지 하위 절반이 선택되는지를 판정한다. 또한, 뱅크 0 래치는 상위 로우 12와 하위 로우 823을 저장하는 반면, 뱅크 31 래치는 하위 로우 17과 상위 로우 956을 저장한다. 이것은 이들 뱅크의 이들 부분적인 로우로의 임의의 액세스가 캐시에서 허용되는 것을 효과적으로 의미한다.
본 발명의 또 다른 실시예에 따르면, 도 8에 대해서, 적응가능한 영역 변동이 고려된다. 도 8은 적응가능한 영역 변동의 블록도를 나타낸다. 이 실시예에서, 로우 래치의 어드레스는 프로세서로부터의 로우 선택 신호에 기초하여 변경될 수 있으며, 멀티플렉서는 프로세서의 전체 어드레스(A31 ~ A0)를 입력으로 갖는다. 이로 인해 액티브 영역이 뱅크 어레이 내의 임의의 곳에 정의될 수 있다. 예를 들면, 프로세서 선택 신호가 로우 래치에 저장되도록 A11 ~ A2를 선택하면, 임의의 액세스는 A11 ~ A12 어드레스를 갖고, 래치된 A11 ~ A2와 동일한 것이 액티브 어드레스로서 고려된다. 이 영역은 DRAM 뱅크에서 메모리 위치의 수직 어레이이다.
또 다른 예를 설명하기 위해, 프로세서는 멀티플렉서를 통과하고, 래치된 어드레스는 A24 ~ A17 및 A11, A10(10 BITS)라고 가정한다. 여기서, 로우 어드레스의 A26, A25는 칼럼 어드레스 A11, A10으로 대체된다. 프로세서는 A24 ~ A17, A11, A10=0인 어드레스로 잘못 액세스함으로서 이 어드레스를 0으로 초기화하는 것으로 한다. 나머지 어드레스 A26, A25, A9 ~ A2에 대해서 모든 가능한 값을 가짐으로써 얻어지며, 다음 위치가 캐시에 수용된다.
1-ROW#0 CL255...CL0(A26, A25=00)
2-ROW#256 CL255 ~ CL0(A26, A25=01)
3-ROW#512 CL255 ~ ROW#512의 CL0(A26, A25=10)
4-ROW#768 CL255 ~ ROW#768의 CL0(A26, A25=11)
적응가능한 영역 변동은 애플리케이션에 의해 필요한 하나의 수평 어레이(즉, 로우)에서 하나의 수직 어레이(즉, 로우와 다른 하나의 칼럼)까지 DRAM 뱅크에서 임의의 영역을 선택할 수 있다. 도 8의 블록도는 각 래치가 선택 신호에 기초하여 임의의 로우/칼럼 크기 또는 조직을 취할 수 있는 2개 영역을 저장할 수 있는 것을 또한 도시한다. 본 실시예에서 다른 변동은 2개 이상의 영역이 각 뱅크 래치에 저장되는 것을 제공한다. 액티브 영역의 수 및 각 액티브 영역의 크기는, 본 발명의 실시예의 의도된 범위로부터 벗어나지 않고 주어진 애플리케이션 및 시스템 구조에 의존하여 변화할 수 있는 것이 분명하다.
또 다른 변동에 따라서, 본 발명의 또 다른 실시예를 도 9에 있어서 프로세서(900) 내의 명령 및 데이터 캐시에 관해서 설명한다. 도 9는 명령 및 데이터 캐시로부터 덜 빈번하게 사용되는 레퍼런스를 거부하기 위해 사용되는 본 발명의 캐시 필터의 블록도를 도시한다. 여기서, 프로세서(900)는 데이터 캐시에 대해 하나의 디멀티플렉서(93) 및 명령 캐시에 대해 하나의 디멀티플렉서(94)를 사용한다. 명령 캐시로부터 거부된 액세스가 명령 레지스터(91)에 저장되고, 하나의 버스 사이클을 취한다. 이전과 같이, ROW HIT/MISS 신호가 미스일 때, 프로세서(900)는 요구된 워드만을 레지스터 파일(92)에 전송하는 것이 필요하다.
또 다른 변형예에 따라서, 본 발명의 또 다른 실시예를 도 10에 있어서 L1 데이터 캐시에 관해서 설명한다. 도 10은 L1 데이터 캐시만으로부터 덜 빈번하게 사용되는 레퍼런스를 거부하기 위해 사용되는 캐시 필터의 블록도를 도시한다. 여기서, 프로세서(1000)는 DRAM으로부터 L1 데이터 캐시로의 데이터를 거부하거나 수용하기 위해 L1 데이터 캐시에 대해 디멀티플렉서(103)를 사용한다. L1 데이터 캐시로부터의 거부된 액세스는 레지스터 파일(102)에 저장된다. 도 11은 이 변동에 대한 메모리 데이터 액세스의 플로우챠트이다. 도 11은 로우 미스시, 이 방법은 L2 캐시를 데이터의 블록으로 업데이트하고, 데이터가 L1 데이터 캐시에 저장되는 것을 허용하지 않는 점이 도 6에 나타낸 실시예와 다르다.
상기 서술된 모든 다양한 실시예에서, DRAM 액세스 정책은 오픈 페이지 정책이거나 또는 클로즈 페이지 정책일 수 있다. 또한, 각 뱅크에서 선택된 영역의 래칭은 사용되는 DRAM 액세스 모드에 의존하지 않는다.
또 다른 변형에 따라서, 본 발명의 또 다른 실시예를 도 12를 참조하여 클로즈 페이지 DRAM 정책을 사용하는 본 발명의 캐시 필터에 관해 설명한다. 여기서, 도 12는 로우 히트 신호가 DRAM 오픈 페이지가 사용되고 있는 것을 나타내지 않는 것이 도 6에 나타낸 본 발명의 실시예와 다르다. 오히려, 로우 히트 신호는 액세스된 영역의 래치된 어드레스가 액티브이고, 이전에 사용되었던 것을 의미한다. 여기서 CP(Closed Page) 모드가 로우 히트와 로우 미스 조건 모두에서 사용되는 것에 주의한다.
동작시, 본 발명의 실시예는 애플리케이션에서 메모리 어드레스의 사용의 빈도를 분석하기 위해 실제 시스템으로부터 수집된 SPEC2000™ 벤치마크 트레이스를 사용하여 적용된다. SPEC2000™ 벤치마크 트레이스는 최 신세대의 고성능 컴퓨터에 적용될 수 있는 관련된 벤치마크의 표준화된 세트이다. 이러한 트레이스는 SPEC(Standard Performance Evaluation Corporation) 벤치마크 세트를 설정, 유지, 강화하기 위해 형성된 비영리 조합인 SPEC에 의해 설정된다.
트레이스를 활용하여, 각 애플리케이션에서 어드레스의 수가 계수되고, 그 사용 빈도는 1회 이상에서 사용되는 어드레스 또는 2회 이상에서 사용되는 어드레스 사이에서 분할된다. 어드레스의 사용 빈도를 설명하기 위해, 다음 어드레스가, A1, A13, A2, A1, A55, A23, A13, A39, A13, A7, A13, A1, A11, A22, A13, A1, A11, A13, A39, A1로 리스트된 순서대로 액세스되는 것으로 가정한다. 1회 이상 사용되는 어드레스의 수는 9이고, A1, A13, A2, A55, A23, A39, A7, A11, A22이고, 20회 사용된다. 2회 이상 사용되는 어드레스의 수는 4이고, A1, A13, A11, A39이고, 15회 사용된다.
도 13은 10개의 벤치마크에서 어드레스의 평균 수와 그 사용 빈도를 나타낸다. 50만개의 레퍼런스 샘플이 이들 애플리케이션의 각 트레이스에서 선택된다. 샘플의 수는 서치를 단순화하기 위해 선택된다. 50만개의 레퍼런스 이상의 샘플 크기는 통계에 현저한 효과를 가지지 못하는 것으로 발견되었다. SPEC2000™ 벤치마크로부터 다음의 트레이스가 사용된다: gcc, gzip, parser, vortex, perlmk, twolf, apsi, equake, swim 및 mgrid. 도 13에 나타낸 결과로부터, 1) 1회 이상 사용되는 모든 트레이스에 대한 어드레스의 평균수가 27,036이고, 212,390회 사용되고, 각 어드레스에 대한 평균 사용은 7.8이 되도록 어드레스는 매우 높은 사용 빈도를 갖는다. 2) 모든 트레이스에 대해서 2회 이상 사용된 어드레스의 평균수는 13,120이며, 198,474회 사용되었고, 각 어드레스에 대한 평균 사용은 15.12이다.
평가 동작에서, 현대 프로세서 및 DRAM을 사용하는 종래의 시스템이, 적용된 본 발명의 캐시 필터링 방법과 동일한 프로세서 및 DRAM을 사용하는 제2 시스템과 비교된다. 2개의 시스템에 대한 프로세서와 DRAM 파라미터가 표 1에 아래에 표시된다. 현대 컴퓨터 시스템에서 사용되는 전형적인 값을 표시하기 위해 파라미터가 선택된다.
구성 요소
프로세서 속도: 3.3 GHz
L1 명령 캐시: 32 Kbytes, 4-way, 64 바이트 블록, 액세스 타임 = 0.3 ns
L2 데이터 캐시: 32 Kbytes, 4-way, 64 바이트 블록, 액세스 타임 = 0.6 ns
L2 캐시: 통합, 1Mbytes, 8-way, 128 바이트 블록, 액세스 타임 = 3.6 ns
메모리 프로세서 버스: 8 byte 폭, 500 MHz 속도
DRAM: 32-뱅크, 4 Kbyte 로우-버퍼, 페이지 인터리빙, 오픈 페이지 정책
DRAM 타이밍: 오픈-페이지(로우-버퍼 히트)=50 ns, 로우 충돌 = 100 ns
단순한 트레이스-구동 시뮬레이터가, 멀티레벨 캐시 시스템 및 다중 뱅크를 갖는 DRAM을 모델화하기 위해 SPEC2000™ 벤치마크로 사용된다. 상이한 메모리 레벨에서 동작의 유형 및 동작의 비용에 기초하여 각 액세스에 대해서, 시간상으로, 비용을 가산함으로써 각 액세스당 평균 시간을 계산한다. 더 구체적으로, 다수의 뱅크로 이루어진 DRAM은 4 Kbyte 크기의 DRAM 페이지 주위로 인터리브되며, 각 뱅크는 4096 칼럼 위치로 이루어진 특정 로우를 래치한다. 동일한 로우를 매핑하는 임의의 액세스는 로우 히트를 주며 50 ns로 액세스되며, 로우 미스는 100 ns로 액세스된다.
시뮬레이터는 주어진 프로세서 및 DRAM 내에서 본 발명의 실시예의 애플리케이션을 시뮬레이션하기 위해 도 6에 나타낸 방법을 따른다. 그 결과가, 종래의 시스템과 본 발명의 캐시 필터링이 적용된 시스템에 있어서 L1 데이터 캐시의 미스 레이트를 도시하는 도 14에 도시된다.
도 14의 도시로부터, 본 발명의 실시예에 따른 캐시 필터링은 L1 데이터 캐시 미스 레이트를 평균 2% 만큼 개선하는 것을 알 수 있다. 본 발명의 실시예는 최초 시간 액세스가 캐시로 전송되는 것을 방지하지만 L1 미스 레이트를 개선한다. 이것은 다른 블록과 경쟁하여 그들을 축출(eviction)하며 한번 사용된 레퍼런스를 거부하는 본 발명에 의해 보상된다. 본 발명의 실시예는, 대부분의 명령이 높은 국소성을 가지며 소수의 명령이 거부에 적합하다는 가정하에서, 명령 캐시에 적용되지 않는다. 그래서 본 발명의 실시예는 이러한 가정하에서 명령 캐시 성능에 대해 제한된 장점을 갖는다.
도 15는 본 발명의 실시예가 적용된 시스템에 대해 종래의 시스템에 대한 L2캐시의 데이터 미스 레이트를 그래픽적으로 도시한다. 여기서, 본 발명의 캐시 필터링은 최초 사용의 액세스를 거부함으로 인해 L2 데이터 미스 레이트를 평균 17% 정도 증가시키는 것을 나타낸다. 캐시 필터는 DRAM에 대한 레퍼런스의 수에서 표 2에 아래에 도시된 것같이 라이트 백(write back) 동작의 수와 축출 레이트(eviction rate)를 줄이는 것으로부터 얻어진다.
트레이스 종래 캐시 필터
gcc: 503,074 505,755
gzip: 331,642 266,907
parser: 381,286 379,327
vortex: 607,004 603,903
perlmk: 494,767 481,144
twolf: 488,881 516,329
apsi: 398,304 380,816
equake: 373,932 356,196
swim: 540,008 574,946
mgrid: 440,030 487,450
표 2는 종래 캐시 시스템에 대한, 본 발명의 캐시 필터가 적용된 시스템의 DRAM 레퍼런스의 총수를 나타낸다. DRAM 레퍼런스는 라이트 백 동작뿐만 아니라 명령 및 데이터에 대해 L1 및 L2에서 캐시 미스로부터 생성된다. 축출 레이트와 라이트 백 동작의 수를 줄임으로써 L2 미스 레이트에서의 증가를 보상한다. 또한, 종래의 시스템은 L2 미스가 있는 시간 마다 전체의 블록(즉, 128 바이트)을 프로세서에 전송해야 한다. 본 발명의 캐시 필터는 로우 미스시 1워드(즉, 8 바이트)를 프로세서에 전송하고, 로우 히트시 전체 L2 블록만을 전송한다.
본 발명의 캐시 필터가 적용된 시스템에서 DRAM 레퍼런스의 수가 평균적으로 종래 시스템에서 DRAM 레퍼런스의 수와 동일하지만, 종래의 시스템의 L2 캐시 미스 레이트는 본 발명의 실시예가 적용된 캐시의 L2 미스 레이트보다 적다. 본 발명의 실시예가 적용된 캐시에서 한번 사용된 레퍼런스를 거부하는 것으로부터 생성된 모든 캐시 미스는 임의의 블록을 축출하지 않는다. 이것은 본 발명의 캐시 필터에서 라이트백 동작의 수를 감소시키고 L2 미스 레이트에서 차이를 보상한다.
도 16에 대해서, 각 주어진 벤치마크 트레이스에 대한 로우 히트 레이트가 종래의 시스템과 본 발명의 실시예에 따른 캐시 필터를 갖는 시스템 모두에 대해 도시된다. 그 결과는 실시예에 따른 캐시 필터가 로우 히트 레이트를 평균 24%, 50% 까지 개선시키는 것을 나타낸다. 로우 히트 레이트에서 인터셉트 캐시의 효과가 평가되어, 캐시가 DRAM에 대한 액세스를 인터셉트하고, 보다 흩어지게 하여, 로우 히트 레이트를 줄이는 것을 나타낸다. 이것은 더 높은 L2 미스 레이트가 시스템으로 하여금 DRAM을 보다 자주 액세스하게 하여 더 장시간 동안 DRAM 로우를 액티브로 유지하게 개선하는 것을 의미한다.
종래 시스템과 본 발명의 실시예에 따른 캐시 필터를 갖는 시스템 사이의 비교 성능이 도 17을 통해 도시된다. 여기서 성능은 임의의 레벨(즉, L1, L2)에서 액세스당 평균 시간(ns)으로서 정의된다. 벤치마크 트레이스를 통해, 본 발명의 실시예에 따른 캐시 필터는 종래의 시스템과 비교하여 시스템 성능을 44%까지, 평균 22% 개선시켰다. 이 게인은 로우 히트 레이트의 개선뿐 아니라 거부된 블록에 대해 DRAM으로부터 캐시 블록의 전송 시간의 감소에 기여한다.
상이한 L2 캐시 크기에 대한 벤치마크 트레이스에 대해 성능이 또한 평가되고, 이것이 도 18을 통해 도시된다. 여기서, 본 발명의 실시예에 따른 캐시 필터를 갖는 시스템과 비교하여 종래의 시스템에 대해 반복되는 4개의 상이한 캐시 크기(즉, 256KB, 512KB, 1024KB 및 2048 KB)에 대해서 벤치마크 트레이스의 평균 성능이 도시된다. 본 발명의 캐시 필터를 사용하는 시스템의 성능이, 2배 크기의 L2 캐시를 사용하는 종래의 시스템의 성능과 동등한 것을 알 수 있다. 예를 들면, 1 MByte의 L2 캐시 크기를 사용하는 본 발명의 캐시 필터의 평균 성능이 5.21 ns인 반면, 2 MByte의 L2 캐시 크기를 사용하는 종래의 시스템의 평균 성능이 5.19 ns이다. 평균적으로, 본 발명의 캐시 필터는 도시된 상이한 L2 캐시 크기에 대해서 성능을 22% 개선시킨다. 이것은 본 발명의 적어도 몇몇 실시예가 L2 캐시 크기의 증가에 대해서 조정가능한 것임을 나타냄으로써, 더 큰 캐시를 갖는 미래의 기술에 대해 매우 적합하다.
증가된 캐시 크기를 고려하는 것에 추가하여, DRAM 뱅크의 수의 증가에 따른 성능 결과가 도 19에 도시되어 있다. 특히, 도 19는, 본 발명의 증가하는 배수의 DRAM 뱅크(즉, 2, 4, 8, 16 및 32 뱅크)를 사용하여 반복되는 10 트레이스의 평균 성능을 도시한다. 여기서, 뱅크의 수가 2에서 32로 변경될 때 종래의 시스템의 성능이 2.8% 정도 개선되어 뱅크의 수에 대한 매우 적은 의존성을 나타낸다. 대조적으로, 뱅크의 수가 2에서 32로 변경될 때 본 발명의 캐시 필터의 성능은 13.6% 개선되어 뱅크의 수에 대한 비교적 강한 의존성을 나타낸다. 전체적으로, 본 발명의 캐시 필터는 8뱅크를 사용할 때 종래의 시스템과 비교하여 성능을 예를 들면 19.2% 개선시킨다. 특히, 이것은 본 발명의 캐시 필터로부터의 대부분의 이득이 적은 수의 뱅크로 달성될 수 있음을 제안한다.
또한, 다중 스레드를 갖는 병렬 프로그램을 형성하도록 벤치마크 트레이스를 인터리브하는 것에 관해 성능이 고려된다. 특히, 도 20은 각 애플리케이션이 단일 명령 상에서 인터리브되는 2개의 스레드로 이루어지는 5개의 애플리케이션의 평균 성능을 나타낸다. 단순한 트레이스 구동 시뮬레이터를 사용하는 듀얼 코어 프로세서의 효과를 시뮬레이션하기 위해, 각 캐시의 크기 및 연관성(즉, L1 명령, L1 데이터 및 L2)은 2배가 되며, DRAM 구조는 표 1에 기재되어 있는 것으로부터 변하지 않고 남아 있는다. 결과는 본 발명의 캐시 필터가 멀티-스레딩 애플리케이션에 대해 성능이 평균 21.2% 개선되었음을 도시한다. 이러한 개선은 도 18, 19 및 20을 통해 서술되고 도시된 성능 개선과 일치한다.
그래서, 일반적으로, 본 발명의 캐시 필터링은 프로세서와 DRAM 사이의 속도 갭이 커지는 것과 이들 애플리케이션이 시간적 및 공간적 연대가 부족한 것을 나타내는 진보된 프로세서의 유리한 성능 개선을 제공한다. 시스템의 비용 또는 복잡성을 추가하지 않고 이러한 개선이 얻어진다.
본 발명의 상기 서술된 실시예는 예시만을 위한 것이다. 첨부된 청구 범위에 의해서만 규정되는 본 발명의 범위를 벗어나지 않고 본 기술에서 숙련된 자에 의해 대체, 수정, 변경이 특정 실시예에 유효하다.

Claims (20)

  1. 캐시 미스(cache miss)시, 주어진 메모리 레퍼런스에 대해서 로우 히트/미스(row hit/miss) 신호를 얻는 단계;및
    상기 로우 히트/미스 신호가 로우 미스(row miss)를 나타낼 때, 상기 로우 히트/미스 신호와 연관된 상기 메모리 레퍼런스를 거부하는 단계를 포함하는, 캐시 필터링 방법.
  2. 청구항 1에 있어서,
    상기 로우 히트/미스 신호가 로우 히트(row hit)를 나타낼 때, 상기 로우 히트/미스 신호와 연관된 상기 메모리 레퍼런스를 메모리 캐시에 전송하는 단계를 더 포함하는, 캐시 필터링 방법.
  3. 청구항 2에 있어서,
    상기 전송하는 단계는, 레벨 1 캐시와 레벨 2 캐시 모두를 상기 메모리 레퍼런스로 업데이트하는 단계를 포함하는, 캐시 필터링 방법.
  4. 메모리 레퍼런스에 대응하는 로우 히트/미스 신호를 생성하는 단계; 및
    레벨 1(L1) 및 레벨 2(L2) 캐시 미스가 발생하고, 상기 로우 히트/미스 신호가 로우 미스를 나타내면, 랜덤 액세스 모드를 사용하여 DRAM의 데이터를 액세스하고, 상기 데이터에 대응하는 로우를 래칭하는 단계를 포함하는, DRAM(Dynamic Random Access Memory) 내의 캐시 필터링 방법.
  5. 청구항 4에 있어서,
    상기 데이터를 레지스터 파일에만 전송하는 단계를 더 포함하는, DRAM 내의 캐시 필터링 방법.
  6. 청구항 4 또는 5에 있어서,
    L1 및 L2 캐시 미스가 발생하고, 상기 로우 히트/미스 신호가 로우 히트를 나타내면, 오픈 페이지 모드(open page mode)를 사용하여 상기 DRAM의 데이터를 액세스하는 단계;
    L1 및 L2 캐시를 업데이트하는 단계; 및
    상기 데이터에 대응하는 상기 로우를 액티브로 유지하는 단계를 더 포함하는, DRAM 내의 캐시 필터링 방법.
  7. 복수의 로케이션을 갖는 메모리 ;
    상기 메모리에 연결되고, 상기 복수의 로케이션 중 하나에 관련된 메모리 레퍼런스에 대응하는 로우 히트/미스 신호를 생성하는 적어도 하나의 비교기를 포함하는 메모리 제어기;
    상기 메모리 제어기에 동작가능하게 연결되는 적어도 하나의 디멀티플렉서로서, 상기 메모리 레퍼런스에 관련된 데이터를 라우팅하도록 상기 로우 히트/미스 신호가 상기 디멀티플렉서에 의해 사용되는, 적어도 하나의 디멀티플렉서; 및
    상기 데이터에 대응하는 로우를 래칭하는 로우 래치를 포함하는, 데이터 프로세싱용 장치.
  8. 청구항 7에 있어서,
    상기 적어도 하나의 디멀티플렉서는 프로세서의 레벨 1(L1) 및 레벨 2(L2) 캐시 모두에 또한 동작가능하게 연결된, 데이터 프로세싱용 장치.
  9. 청구항 8에 있어서,
    상기 프로세서의 L1 명령 캐시에 동작가능하게 연결된 제2 디멀티플렉서를 더 포함하고, 상기 메모리 레퍼런스에 관련된 명령을 라우팅하도록 상기 제2 디멀티플렉서에 의해 상기 로우 히트/미스 신호가 사용되고, 또 다른 로우 래치가 명령 로우 어드레스에 대응하는 로우를 래치하는, 데이터 프로세싱용 장치.
  10. 청구항 7 내지 9 중 어느 한 항에 있어서,
    상기 메모리는 DRAM(Dynamic Random Access Memory)인, 데이터 프로세싱용 장치.
  11. 청구항 7 내지 9 중 어느 한 항에 있어서,
    상기 메모리는 SRAM(Static Random Access Memory)인, 데이터 프로세싱용 장치.
  12. 청구항 7에 있어서,
    상기 적어도 하나의 디멀티플렉서는 상기 프로세서의 레벨 2(L2) 캐시에 관하지 않고, 프로세서의 레벨 1(L1) 캐시에만 또한 동작가능하게 연결되는, 데이터 프로세싱용 장치.
  13. 청구항 12에 있어서,
    상기 메모리는 DRAM(Dynamic Random Access Memory)인, 데이터 프로세싱용 장치.
  14. 청구항 12에 있어서,
    상기 메모리는 SRAM(Static Random Access Memory)인, 데이터 프로세싱용 장치.
  15. 메모리 레퍼런스에 대응하는 로우 히트/미스 신호를 생성하는 단계; 및
    레벨 1(L1) 및 레벨 2(L2) 캐시 미스가 발생하고, 상기 로우 히트/미스 신호가 로우 미스를 나타내면, 랜덤 액세스 모드를 사용하여 상기 SRAM의 데이터를 액세스하고, 상기 데이터에 대응하는 로우를 래칭하는 단계를 포함하는, SRAM(Static Random Access Memory) 내의 캐시 필터링 방법.
  16. 청구항 15에 있어서,
    상기 데이터를 레지스터 파일에만 전송하는 단계를 더 포함하는, SRAM 내의 캐시 필터링 방법.
  17. 청구항 15 또는 16에 있어서,
    L1 및 L2 캐시 미스가 발생하고, 상기 로우 히트/미스 신호가 로우 히트를 나타내면,
    오픈 페이지 모드를 사용하여 상기 SRAM의 데이터를 액세스하는 단계;
    L1 및 L2 캐시를 업데이트하는 단계; 및
    상기 데이터에 대응하는 상기 로우를 액티브로 유지하는 단계를 더 포함하는, SRAM 내의 캐시 필터링 방법.
  18. 메모리 레퍼런스에 대해서 로우 특정 신호를 얻는 수단;및
    상기 로우 특정 신호가 나타내는 것에 기초하여 상기 로우 특정 신호와 연관된 상기 메모리 레퍼런스를 거부하는 수단을 포함하는, 장치.
  19. 메모리 레퍼런스에 대응하는 로우 히트/미스 신호를 생성하는 수단;
    랜덤 액세스 모드를 사용하여 상기 SRAM의 데이터를 액세스하는 수단; 및
    상기 데이터에 대응하는 상기 로우를 래칭하는 수단을 포함하는, SRAM(Static Random Access Memory)을 포함하는 시스템.
  20. 청구항 19에 있어서,
    상기 액세스하는 수단과 상기 래칭하는 수단은, 다음의 발생시 액세싱 및 래칭을 각각 행하는, SRAM을 포함하는 시스템:
    (i) 레벨 1(L1) 및 레벨 2(L2) 캐시 미스; 및
    (ⅱ) 상기 로우 히트/미스 신호가 로우 미스를 나타냄.
KR1020117008533A 2008-09-16 2009-08-25 액티브 로우를 이용하는 캐시 필터링 KR20110059764A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/211,159 2008-09-16
US12/211,159 US8627009B2 (en) 2008-09-16 2008-09-16 Cache filtering method and apparatus

Publications (1)

Publication Number Publication Date
KR20110059764A true KR20110059764A (ko) 2011-06-03

Family

ID=42008250

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117008533A KR20110059764A (ko) 2008-09-16 2009-08-25 액티브 로우를 이용하는 캐시 필터링

Country Status (6)

Country Link
US (1) US8627009B2 (ko)
EP (1) EP2350832A4 (ko)
JP (1) JP5608654B2 (ko)
KR (1) KR20110059764A (ko)
CN (1) CN102150138A (ko)
WO (1) WO2010031158A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347633B2 (en) 2019-01-18 2022-05-31 SK Hynix Inc. Data storage system and precharge policy setting method therefor

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120151232A1 (en) * 2010-12-12 2012-06-14 Fish Iii Russell Hamilton CPU in Memory Cache Architecture
FR2970794B1 (fr) * 2011-01-21 2013-03-08 Commissariat Energie Atomique Systeme multi-coeurs et procede de coherence de donnees dans un tel systeme
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US20120317376A1 (en) * 2011-06-10 2012-12-13 Advanced Micro Devices, Inc. Row buffer register file
US8868843B2 (en) * 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9251181B2 (en) 2012-06-18 2016-02-02 International Business Machines Corporation Dynamic map template discovery and map creation
US9281054B2 (en) * 2012-11-19 2016-03-08 Nvidia Corporation Technique for optimizing static random-access memory passive power consumption
US9015422B2 (en) * 2013-07-16 2015-04-21 Apple Inc. Access map-pattern match based prefetch unit for a processor
US9529722B1 (en) * 2014-07-31 2016-12-27 Sk Hynix Memory Solutions Inc. Prefetch with localities and performance monitoring
US9971694B1 (en) 2015-06-24 2018-05-15 Apple Inc. Prefetch circuit for a processor with pointer optimization
US9904624B1 (en) 2016-04-07 2018-02-27 Apple Inc. Prefetch throttling in a multi-core system
US10180905B1 (en) 2016-04-07 2019-01-15 Apple Inc. Unified prefetch circuit for multi-level caches
US10157134B2 (en) * 2016-04-11 2018-12-18 International Business Machines Corporation Decreasing the data handoff interval for a reserved cache line based on an early indication of a systemwide coherence response
US10331567B1 (en) 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US11194728B2 (en) * 2019-07-29 2021-12-07 Micron Technology, Inc. Memory-aware pre-fetching and cache bypassing systems and methods

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3136681B2 (ja) * 1990-09-17 2001-02-19 日本電気株式会社 データ処理装置
US5625793A (en) * 1991-04-15 1997-04-29 International Business Machines Corporation Automatic cache bypass for instructions exhibiting poor cache hit ratio
JPH06202952A (ja) * 1993-01-07 1994-07-22 Matsushita Electric Ind Co Ltd キャッシュメモリ装置
US6324685B1 (en) * 1998-03-18 2001-11-27 Becomm Corporation Applet server that provides applets in various forms
JP3564343B2 (ja) * 1999-11-25 2004-09-08 エヌイーシーコンピュータテクノ株式会社 キャッシュバイパス時のデータ転送装置と方法
US6876557B2 (en) * 2001-06-12 2005-04-05 Ibm Corporation Unified SRAM cache system for an embedded DRAM system having a micro-cell architecture
US6804750B2 (en) * 2002-01-22 2004-10-12 Micron Technology, Inc. Technique for reducing memory latency during a memory request
US6769047B2 (en) * 2002-03-21 2004-07-27 Intel Corporation Method and system for maximizing DRAM memory bandwidth through storing memory bank indexes in associated buffers
JP4208541B2 (ja) * 2002-09-30 2009-01-14 キヤノン株式会社 メモリ制御装置
US7325102B1 (en) * 2003-11-17 2008-01-29 Sun Microsystems, Inc. Mechanism and method for cache snoop filtering
US7228388B2 (en) * 2004-11-19 2007-06-05 International Business Machines Corporation Enabling and disabling cache bypass using predicted cache line usage
US7596661B2 (en) * 2005-09-01 2009-09-29 Mediatek Inc. Processing modules with multilevel cache architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347633B2 (en) 2019-01-18 2022-05-31 SK Hynix Inc. Data storage system and precharge policy setting method therefor

Also Published As

Publication number Publication date
EP2350832A4 (en) 2014-04-09
CN102150138A (zh) 2011-08-10
EP2350832A1 (en) 2011-08-03
JP5608654B2 (ja) 2014-10-15
US8627009B2 (en) 2014-01-07
JP2012503224A (ja) 2012-02-02
US20100070709A1 (en) 2010-03-18
WO2010031158A1 (en) 2010-03-25

Similar Documents

Publication Publication Date Title
KR20110059764A (ko) 액티브 로우를 이용하는 캐시 필터링
US10133678B2 (en) Method and apparatus for memory management
US7571285B2 (en) Data classification in shared cache of multiple-core processor
US7991956B2 (en) Providing application-level information for use in cache management
US10007614B2 (en) Method and apparatus for determining metric for selective caching
US8464009B2 (en) Method for memory interleave support with a ceiling mask
US20140181402A1 (en) Selective cache memory write-back and replacement policies
US9378153B2 (en) Early write-back of modified data in a cache memory
US9292447B2 (en) Data cache prefetch controller
US7577793B2 (en) Patrol snooping for higher level cache eviction candidate identification
US20040123043A1 (en) High performance memory device-state aware chipset prefetcher
Khan et al. Improving cache performance using read-write partitioning
Young et al. Accord: Enabling associativity for gigascale dram caches by coordinating way-install and way-prediction
US11768779B2 (en) Cache management based on access type priority
Gaur et al. Base-victim compression: An opportunistic cache compression architecture
KR101503865B1 (ko) 마이크로코드 에뮬레이션 메모리의 캐싱
El-Nacouzi et al. A dual grain hit-miss detector for large die-stacked DRAM caches
US20020062423A1 (en) Spatial footprint prediction
Tian et al. An effectiveness-based adaptive cache replacement policy
US7970998B2 (en) Parallel caches operating in exclusive address ranges
Li et al. Buffer filter: a last-level cache management policy for CPU-GPGPU heterogeneous system
Mekhiel Cache Filter Method Based on DRAM Access Frequency to Improve System Performance
Armejach et al. Tidy cache: Improving data placement in die-stacked DRAM caches
CN114691541B (zh) 一种基于动态访问的dram-nvm混合内存预测器
JP2010033317A (ja) キャッシュシステム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application