KR101190403B1 - 캐쉬 섹터 할당 - Google Patents

캐쉬 섹터 할당 Download PDF

Info

Publication number
KR101190403B1
KR101190403B1 KR1020107003131A KR20107003131A KR101190403B1 KR 101190403 B1 KR101190403 B1 KR 101190403B1 KR 1020107003131 A KR1020107003131 A KR 1020107003131A KR 20107003131 A KR20107003131 A KR 20107003131A KR 101190403 B1 KR101190403 B1 KR 101190403B1
Authority
KR
South Korea
Prior art keywords
cache
slice
slices
level
address
Prior art date
Application number
KR1020107003131A
Other languages
English (en)
Other versions
KR20100040317A (ko
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 KR20100040317A publication Critical patent/KR20100040317A/ko
Application granted granted Critical
Publication of KR101190403B1 publication Critical patent/KR101190403B1/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing

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

섹터-슬라이스 할당(sector-to-slice allocation) 및 하위 캐쉬 어드레싱(lower cache addressing) 방식을 재구성함으로써 섹터형이면서 슬라이스형인 하위 캐쉬를 갖는 캐쉬 서브시스템에서 배선 혼잡(wiring congestion), 필요한 실면적(real estate), 및 액세스 대기시간을 감소시키는 방법 및 컴퓨터 시스템이 개시된다. 이러한 할당에 의해, 비인접 주소들(discontiguous addresses)을 갖는 섹터들이 동일한 슬라이스 내에 배치되고, 캐쉬 슬라이스 내의 어드레싱가능한 섹터들의 이러한 재할당에 기초하여 2개 레벨의 하위 캐쉬 간의 배선-감소 방식(reduced-wiring scheme)이 가능하다. 또한, 섹터 및 슬라이스를 식별하기 위해 이전에 할당된 주소 필드들이 주소 태그 내에서 서로의 위치와 관련하여 스위칭되도록 하위 캐쉬 유효 주소 태그가 재구성된다. 이러한 주소 비트의 재할당은 표시된 섹터에 기초한 직접 슬라이스 어드레싱(direct slice addressing)을 가능하게 한다.

Description

캐쉬 섹터 할당{CACHE SECTOR ALLOCATION}
본 발명은 일반적으로 데이터 처리 시스템에 관한 것으로서, 보다 구체적으로는 데이터 처리 시스템 내의 캐쉬 메커니즘에 관한 것이다. 더욱 상세하게는, 본 발명은 다중-섹터형 캐쉬(multi-sectored cache)의 캐쉬 슬라이스들(cache slices) 내에서의 캐쉬 섹터 할당(cache sector allocation)에 관한 것이다.
종래의 멀티프로세서 데이터 처리 시스템은 다수의 처리 유닛, 시스템 메모리, 및 처리 유닛들과 메모리 사이에 결합된 하나 이상의 레벨의 캐쉬 메모리를 포함할 수 있다. 캐쉬는 다양한 대기시간으로 데이터 처리 시스템의 전체 메모리의 일부분을 저장하는 데 이용되는 임시 저장 시설이다. 다양한 캐쉬들이 처리 유닛들과 관련하여 여러 레벨로 정의된 캐쉬 계층구조로 구성되어 있다. 캐쉬 계층구조의 다양한 레벨들에서, 캐쉬의 크기와 액세스 대기시간 간의 트레이드오프가 이루어진다. 당업자라면 이용가능한 구현 기술들에 따른 다양한 캐쉬 계층구조 레벨들의 액세스 대기시간 및 크기 특성을 최적화시켜, 최적의 시스템 성능에 이르게 하는 다중-레벨 캐쉬 계층구조의 개념에 대해 잘 알 것이다.
계층구조의 주어진 레벨에서, 캐쉬는 통상적으로 캐쉬 디렉토리 어레이(cache directory array), 캐쉬 데이터 어레이(cache data array), 및 캐쉬를 업데이트 및 관리하는 데 필요한 기능 논리 유닛들(functional logic units)을 비롯한 다수의 구성요소들을 포함하고 있다. 캐쉬의 캐쉬 데이터 어레이 부분은 메인 메모리의 일부분의 사본을 저장하는 데 이용되는 일련의 데이터 저장 요소이다. 캐쉬 데이터 어레이는 일련의 소위 "캐쉬 블록(cache block)"으로 나누어져 있다. 이들 캐쉬 블록은 데이터 처리 시스템 내의 메인 메모리의 인접한 부분들의 사본을 보유하는 데 이용되는 저장 영역이다. 이들 블록은 통상적으로 크기가 128 바이트 정도이며, 2의 멱승(power)의 크기이다.
이하의 설명에서는, 128 바이트의 캐쉬 블록 크기가 가정된다. 당업자라면 본 발명을 기타 캐쉬 블록 크기들을 갖는 데이터 처리 시스템들에 적용할 수 있을 것이다. 게다가, 캐쉬 블록들로 복사되는 메모리의 일부분들이 정렬(align)되어 있기도 하다. 즉, 캐쉬 블록에 매핑되는 인접한 메모리 부분의 시작 주소가 캐쉬 블록 크기의 정수배이다.
통상적으로, 캐쉬의 데이터 어레이 부분은 MxN 행렬의 캐쉬 블록들로서 구성되어 있다. 이 행렬의 각각의 행은 "합동 클래스(congruence class)"라고 하며, 합동 클래스의 수는 통상적으로 2의 멱승이다. 주어진 합동 클래스 내에, 메인 메모리의 인접한 부분들의 사본을 보유하는 N개의 블록이 제공되어 있다. 합동 클래스 내에 N개의 블록을 갖는 캐쉬를 N-way 세트 연상 캐쉬(N-way set associative cache)라고 한다.
메인 메모리에서의 각각의 위치는, 캐쉬 블록에 의해, 캐쉬 내의 특정의 합동 클래스 내에 존재하도록 매핑된다. 메인 메모리 주소의 하위 비트(low order bit)(128 바이트 캐쉬 라인의 경우 7 비트)는 캐쉬 라인(cache line) 내의 어느 바이트가 액세스되고 있는지를 나타내며 합동 클래스에 대한 캐쉬 블록의 매핑에 영향을 미치지 않는다. 메인 메모리 주소의 그 다음 상위 log2(M) 비트는 "합동 클래스 주소(congruence class address)"라고 한다. 이들 주소 비트는 캐쉬의 M개의 행으로 인덱싱하는 데 사용된다. 메모리의 캐쉬 블록 크기의 정렬된 부분이 어드레싱된 합동 클래스 내의 N개의 블록(엔트리) 중 어느 블록에라도 존재할 수 있다. 주소 내의 나머지 상위 비트는 "태그(tag)"라고 하며, 합동 클래스 내에 할당될 수 있는 메인 메모리의 서로 다른 블록들을 구분하는 데 사용된다.
이제 도 1a를 참조하면, 메인 메모리 장소(main memory location)가 64 비트 주소 및 128 바이트 캐쉬 라인의 4096개 합동 클래스를 갖는 캐쉬를 갖는 시스템의 경우 캐쉬 내에서 어디에 매핑될 수 있는지를 결정하기 위해 메인 메모리 주소를 구성하고 있는 비트들이 어떻게 해석되는지가 나타내어져 있다. 필드(103) 내의 하위 7 비트(비트 57 내지 비트 63)는 이 주소에 대응하는 캐쉬 라인 내의 바이트를 나타낸다. 이 필드가 캐쉬 라인 내의 바이트를 어드레싱하기 때문에, 캐쉬 블록이 그 캐쉬 내에서 어디에 존재할 수 있는지를 결정할 때 이 필드는 무시된다.
합동 클래스 주소 필드(102) 내의 그 다음 12 비트(비트 45 내지 비트 56)는 이 메모리 주소가 매핑되는 캐쉬 내의 합동 클래스를 나타낸다. 이 주소를 갖는 캐쉬 블록이 어드레싱된 합동 클래스 내의 N개의 블록 중 어느 블록에라도 존재할 수 있다. 마지막으로, 필드(101) 내의 나머지 주소 비트(비트 0 내지 비트 44)는 메모리 블록의 "태그"라고 한다.
메인 메모리의 어느 부분이 캐쉬에 존재하는지를 기록하기 위해, 캐쉬는 M x N 엔트리 캐쉬 디렉토리 어레이를 포함하고 있다. 이 캐쉬 디렉토리 어레이 내의 각각의 엔트리는 M x N 캐쉬 데이터 어레이 내의 한 엔트리에 직접 대응하고, 메인 메모리의 어느 부분이 캐쉬 데이터 어레이의 대응하는 엔트리에 매핑되는지 및 그 엔트리에서의 캐쉬 라인의 상태를 나타낸다.
이제 도 1b를 참조하면, 캐쉬 디렉토리 엔트리가 나타내어져 있다. 태그 필드(104)는 캐쉬 내의 이 엔트리에 매핑되는 메인 메모리의 블록의 주소의 태그 부분으로 이루어져 있다. 상태 필드(105)는 이 엔트리에 매핑되는 캐쉬 블록의 상태를 포함한다. 도시된 실시예에서, 최대 16개의 가능한 캐쉬 상태를 제공하기 위해 4 비트가 사용된다. 이들 상태 중 하나는 라인이 "무효(invalid)"라는 것을 나타낸다. 무효 상태의 존재 시에, 이 디렉토리 엔트리에 대한 태그 필드 내의 값이 무시되는데, 그 이유는 캐쉬 내의 이 엔트리가 활성이 아니기 때문이다(이러한 조건이 필요한 이유는 메모리의 대응하는 부분이 캐쉬 엔트리 내에 실제로 들어가 있는지 여부에 상관없이 어떤 값이 태그 필드에 항상 존재하기 때문이다).
특정의 주소가 캐쉬 내에 존재하는지를 판정하기 위해, 그 주소의 태그 부분이 그 주소와 연관된 합동 클래스 내의 N개의 태그 엔트리(태그 필드(104))와 비교되어, 상태 필드(105)에 의해 무효로 표시되어 있는 엔트리들을 무시한다. 유효한 매칭 엔트리가 발견되는 경우, 그 라인은 캐쉬에 존재한다. 메인 메모리의 일부분이 캐쉬 블록 내에 설치될 때, 비무효 상태(non-invalid state)를 나타내기 위해 그 블록에 대한 디렉토리 엔트리가 업데이트되고, 메모리 블록 주소의 태그 부분이 태그 필드(104) 내에 배치된다. 블록이 캐쉬로부터 할당-해제(de-allocate)될 때, 상태 필드(105)가 무효로 설정되고, (코히런스를 위해 필요한 경우) 캐쉬 데이터가 메인 메모리 또는 다른 캐쉬에 다시 기입될 수 있다.
이제 도 1c를 참조하면, 이상의 설명에 따른 캐쉬가 나타내어져 있다. 캐쉬(110)는 캐쉬 데이터 어레이(120), 캐쉬 디렉토리 어레이(130), 및 캐쉬 제어 논리(cache control logic)(126b)로 이루어져 있다. 캐쉬 데이터 어레이(120)는 캐쉬 구성원들(124)로 이루어진 합동 클래스들(122)로 이루어져 있다. 캐쉬 디렉토리 어레이(130)는 상기한 바와 같은 캐쉬 데이터 어레이(120)와 유사하게 구성되어 있다.
이상에서는 캐쉬 디렉토리 어레이, 캐쉬 데이터 어레이, 및 캐쉬에 대한 업데이트를 관리하는 일련의 제어 논리로 이루어져 있는 하나의 캐쉬 구조를 사용하여 메인 메모리 전체를 매핑할 수 있는 하나의 캐쉬 구조에 대해 기술하였다. 그러나, 병렬성(parallelism)을 향상시키기 위해, 캐쉬가 종종 "슬라이스형(sliced)"이다. 슬라이스형 캐쉬(sliced cache)에서, 각각의 슬라이스는 캐쉬 데이터 어레이, 캐쉬 디렉토리 어레이, 및 제어 논리를 포함한다. 통상적으로, S개의 슬라이스를 갖는 슬라이스형 캐쉬에서, 각각의 슬라이스는 전체 메모리의 1/S를 책임진다. 슬라이스의 수는 종종 2의 멱승이며, 이하에서 이러한 것으로 가정된다.
이제 도 2a를 참조하면, 2개의 슬라이스(212a, 212b)로 이루어진 슬라이스형 캐쉬(210)가 나타내어져 있다. 슬라이스별 캐쉬 데이터 어레이(222a 또는 222b)는 주어진 캐쉬 슬라이스에 매핑되는 메모리 영역들을 보유하는 데 사용된다. 슬라이스별 캐쉬 디렉토리(230a 또는 230b)는 각각의 캐쉬 슬라이스 내에 매핑되는 메모리 부분들을 추적하는 데 사용된다. 마지막으로, 슬라이스별 제어 논리(226a 및 226b)는 주어진 캐쉬 슬라이스에 대한 보류중인 코히런스 동작들을 관리한다. 2개 이상의 캐쉬 슬라이스를 가짐으로써, 도 1c의 캐쉬 구조와 같은 일체형 캐쉬 구조(monolithic cache structure) 내에서 가능하게 되는 것보다 더 많은 수의 보류중인 동작들에 대응할 수 있다.
시스템 메모리 공간 전체를 캐쉬 슬라이스들에 배분함으로써 도 2a에 도시된 것과 같은 슬라이스형 캐쉬를 효율적으로 관리하기 위해 부가의 어드레싱 수단이 통상적으로 제공된다. 상세하게는, 시스템 메모리 공간 전체의 1/2이 캐쉬(210) 내의 각각의 슬라이스에 의해 캐싱된다. 이제 도 2b를 참조하면, 메인 메모리 장소(main memory location)가, 64 비트 주소 및 128 바이트 캐쉬 라인의 4096개 합동 클래스를 갖는 캐쉬를 갖는 시스템의 경우, 캐쉬(210) 내에서 어디에 매핑될 수 있는지를 결정하기 위해 메인 메모리 주소를 구성하는 비트들이 어떻게 해석되는지가 나타내어져 있다. 필드(203) 내의 하위 7 비트(비트 57 내지 비트 63)는 이 주소에 대응하는 캐쉬 라인 내의 바이트를 나타낸다. 이 필드가 캐쉬 라인 내의 바이트를 어드레싱하기 때문에, 캐쉬 블록이 그 캐쉬 내에서 어디에 존재할 수 있는지를 결정할 때 이 필드는 무시된다.
그 다음 필드인 SS 필드(214)는 슬라이스 셀렉터(slice selector) 필드이다. 이 필드는 주어진 캐쉬 블록 메모리 주소를 어느 슬라이스에 할당할지를 결정하는 데 사용된다. SS 필드가 '0'의 값을 갖는 경우, 캐쉬 블록 메모리 주소가 슬라이스(212a)에 할당된다. 마찬가지로, SS 필드가 '1'의 값을 갖는 경우, 캐쉬 블록 메모리 주소가 슬라이스(212b)에 할당된다. SS 필드에 기초한 이러한 매핑은 '00'의 16진수 값으로 끝나는 캐쉬 블록 주소가 슬라이스(212a)에 매핑되게 하고 '80'의 16진수 값으로 끝나는 캐쉬 블록 주소가 슬라이스(212b)에 매핑되게 하는 효과를 갖는다. 3개 이상의 슬라이스를 갖는 캐쉬의 경우, 부가의 비트가 SS 필드에 포함되고(4개의 슬라이스의 경우에 2 비트), 시스템 메모리를 각각의 슬라이스에 매핑되는 서로 다른 서브셋에 매핑시킨다(사용되는 슬라이스의 개수가 2의 멱승이 아닌 경우, 주어진 캐쉬 블록 주소를 매핑할 슬라이스를 선택하기 위해 몇 비트 간에 해싱 함수가 통상적으로 사용된다). 주어진 캐쉬 슬라이스에 대해, 합동 클래스 주소 필드(202) 및 태그 필드(201)가 상기한 합동 클래스 필드(102) 및 태그 필드(101)와 동일한 기능을 수행한다.
상기한 캐싱 구조에서, 캐쉬 데이터 어레이 내의 각각의 엔트리에 대해 하나의 디렉토리 엔트리가 이용된다. 캐쉬 디렉토리 어레이는 회로 자원의 상당 부분을 필요로 하며, 가능한 경우 이러한 자원 요구사항을 줄이는 것이 유리하다. 이를 위해, 소위 "섹터형 캐쉬(sectored cache)"가 종종 이용된다. 섹터형 캐쉬에서, 2개 이상의 인접한 캐쉬 라인 크기의 메모리 블록의 상태를 추적하기 위해 하나의 디렉토리 엔트리가 이용된다. 2-섹터 캐쉬에서, 하나의 디렉토리 엔트리가 2개의 인접한 시스템 메모리 블록의 상태를 추적하게 된다.
이제 도 3a를 참조하면, 2-섹터 캐쉬에 대한 디렉토리 엔트리가 나타내어져 있다. 디렉토리 엔트리는 태그 필드(304) 및 디렉토리 엔트리와 연관된 각각의 캐쉬 라인의 코히런스 상태에 대응하는 2개의 섹터 상태 필드(305a, 305b)로 이루어져 있다.
이제 도 3b를 참조하면, 메인 메모리 장소(main memory location)가 64 비트 주소 및 2-섹터형 캐쉬(two sectored cache)를 이용하는 128 바이트 캐쉬 라인의 4096개 합동 클래스를 갖는 캐쉬를 갖는 시스템의 경우 캐쉬 내에서 어디에 매핑될 수 있는지를 결정하기 위해 메인 메모리 주소를 구성하고 있는 비트들이 어떻게 해석되는지가 나타내어져 있다. 필드(303) 내의 하위 7 비트(비트 57 내지 비트 63)는 이 주소에 대응하는 캐쉬 라인 내의 바이트를 나타낸다. 이 필드가 캐쉬 라인 내의 바이트를 어드레싱하기 때문에, 캐쉬 블록이 그 캐쉬 내에서 어디에 존재할 수 있는지를 결정할 때 이 필드는 무시된다.
주소 내에서의 그 다음 비트인 T 필드(308)는 주어진 디렉토리 엔트리에 매핑되는 섹터들 중에서 선택을 하는 데 사용된다. 이 하위 비트를 이용함으로써, 시스템 메모리의 인접한 캐쉬 블록 영역들이 주어진 디렉토리 엔트리에 할당된다. 이 경우에, 16진수 주소 00 및 80으로 끝나는 주소가 주어진 디렉토리 엔트리의 섹터들에 매핑된다.
합동 클래스 주소 필드(302) 내의 그 다음 12 비트(비트 44 내지 비트 55)는 이 메모리 주소가 매핑되는 캐쉬 내의 합동 클래스를 나타낸다. 이 주소를 갖는 캐쉬 블록이 어드레싱된 합동 클래스 내의 N 쌍의 캐쉬 블록 중 어느 블록에라도 존재할 수 있다. 마지막으로, 태그 필드(301) 내의 나머지 주소 비트(비트 0 내지 비트 43)는 메모리 블록의 "태그"라고 하며, 고유의 인접한 캐쉬 블록쌍(unique contiguous cache block pair)을 식별한다. 태그 필드(301)는 도 1a의 태그 필드(101)보다 1비트 더 적게 포함하는데, 그 이유는 2-섹터 캐쉬 내의 디렉토리 엔트리가 하나의 캐쉬 블록 엔트리 대신에 2-캐쉬 블록 크기의 시스템 메모리 영역을 매핑하는 기능을 하기 때문이다.
섹터형 캐쉬는 캐쉬의 효율성을 희생시켜 디렉토리의 크기를 감소시키는 수단을 제공한다. 다양한 디렉토리 엔트리의 양 섹터가 동시에 사용 중이 아닌 경우, 캐쉬에 포함될 있는 유효 메모리량이 감소된다. 액세스 패턴이 메인 메모리 내의 블록을 하나 걸러서만 터치하는 극단적인 경우, 캐싱될 수 있는 유효 메모리량이 절반으로 줄어든다. 실제로, 캐쉬를 섹터화하는 것으로 인한 효율성 손실(efficiency loss)이 이것보다 상당히 더 적다. 비섹터형 캐쉬(non-sectored cache)와 거의 동등한 영역의 섹터형 캐쉬가 (특히 대용량 하위-레벨 캐쉬의 경우) 성능이 더 나은 경우가 종종 있다.
본 발명의 다양한 양태들이 첨부된 청구항들에 정의되어 있으며, 이들에 대해 이제부터 언급한다.
양호한 실시예들은 섹터-슬라이스 할당(sector-to-slice allocation) 및 하위 캐쉬 어드레싱(lower cache addressing) 방식을 재구성함으로써 섹터형이면서 슬라이스형인 하위 캐쉬를 갖는 캐쉬 서브시스템에서 배선 혼잡(wiring congestion), 필요한 실면적(real estate), 및 액세스 대기시간을 감소시키는 방법 및 컴퓨터 시스템을 제공한다. 이러한 할당에 의해, 비인접 주소들(discontiguous addresses)을 갖는 섹터들이 동일한 슬라이스 내에 배치되고, 캐쉬 슬라이스 내의 어드레싱가능한 섹터들의 이러한 재할당에 기초하여 2개 레벨의 하위 캐쉬 간의 배선-감소 방식(reduced-wiring scheme)이 가능하다. 또한, 섹터 및 슬라이스를 식별하기 위해 이전에 할당된 주소 필드들이 주소 태그 내에서 서로의 위치와 관련하여 스위칭되도록 하위 캐쉬 유효 주소 태그가 재구성된다. 이러한 주소 비트의 재할당은 표시된 섹터에 기초한 직접 슬라이스 어드레싱(direct slice addressing)을 가능하게 한다.
본 발명의 이상의 특징 및 이점은 물론 추가의 특징 및 이점이 이하의 상세한 설명으로부터 명백하게 될 것이다.
본 발명 그 자체는 물론 본 발명의 양호한 사용 형태 및 이점이 첨부 도면과 관련하여 기술되어 있는, 예시적인 실시예에 대한 이하의 상세한 설명을 참조하면 가장 잘 이해될 것이다.
도 1a 및 도 1b는 각각 종래 기술에 따른 캐쉬 유효 주소 및 캐쉬 디렉토리 엔트리의 일례를 나타낸 도면이다.
도 1c는 종래 기술에 따른 캐쉬의 내부 구성요소들을 나타낸 블록도이다.
도 2a는 종래 기술에 따른, 2개의 슬라이스로 나누어진 캐쉬의 내부 구성요소들을 나타낸 블록도이다.
도 2b는 도 2a의 캐쉬 등 슬라이스형 캐쉬 내의 엔트리를 어드레싱하는 데 이용되는 종래 기술의 캐쉬 유효 주소를 나타낸 도면이다.
도 3a 및 도 3b는 각각 종래 기술에 따른 2-way 섹터형 캐쉬(two-way sectored cache)에 대한 캐쉬 디렉토리 엔트리 및 캐쉬 유효 주소의 일례를 나타낸 도면이다.
도 4는 본 발명의 특징들이 유익하게 구현될 수 있는 다중 레벨 캐쉬를 갖는 데이터 처리 시스템을 나타낸 블록도이다.
도 5a는 종래 기술에 따른, 인접 섹터 어드레싱(contiguous sector addressing)을 사용하여 슬라이스형이면서 2-way 섹터형인 하위 레벨 캐쉬를 지원하는 종래의 캐쉬간 데이터 버스 배선 구성(inter-cache data bus wiring configuration)을 갖는 캐쉬 서브시스템을 나타낸 블록도이다.
도 5b 및 도 5c는 각각 종래 기술에 따른, 도 5a의 캐쉬 서브시스템에 의해 예시된 L2-L3 캐쉬 구성(L2-to-L3 cache configuration)에 대한 L2 캐쉬 유효 주소 및 L3 캐쉬 유효 주소의 일례를 나타낸 도면이다.
도 6a는 본 발명의 일 실시예에 따른, 비인접 섹터 어드레싱(discontiguous sector addressing)을 사용하여 슬라이스형이면서 2-way 섹터형인 하위 레벨 캐쉬를 지원하는 감소된 캐쉬간 데이터 버스 배선(inter-cache data bus wiring)을 갖는 캐쉬 서브시스템을 나타낸 블록도이다.
도 6b는 본 발명의 일 실시예에 따른, 도 6a의 캐쉬 서브시스템에 의해 예시된 L3 캐쉬 구성에 대한 L3 캐쉬 유효 주소의 일례를 나타낸 도면이다.
도 7a는 종래 기술에 따른, 인접 섹터 어드레싱(contiguous sector addressing)을 사용하여 슬라이스형의 4-way 섹터형 하위 레벨 캐쉬를 지원하는 종래의 캐쉬간 데이터 버스 배선 구성(inter-cache data bus wiring configuration)을 갖는 캐쉬 서브시스템을 나타낸 블록도이다.
도 7b는 본 발명의 일 실시예에 따른, 비인접 섹터 어드레싱(discontiguous sector addressing)을 사용하여 슬라이스형이면서 4-way 섹터형인 하위 레벨 캐쉬를 지원하는 감소된 캐쉬간 데이터 버스 배선(inter-cache data bus wiring)을 갖는 캐쉬 서브시스템을 나타낸 블록도이다.
도 7c는 본 발명의 일 실시예에 따른, 도 7b의 캐쉬 서브시스템에 의해 예시된 L3 캐쉬 구성에 대한 L3 캐쉬 유효 주소의 일례를 나타낸 도면이다.
도 8a는 본 발명의 일 실시예에 따른, 둘다가 비인접 섹터 어드레싱(discontiguous sector addressing)을 사용하는, 슬라이스형이면서 2-way 섹터형인 제1 하위 레벨 캐쉬 및 슬라이스형이면서 4-way 섹터형인 제2 하위 레벨 캐쉬 간의 연결을 지원하는 감소된 캐쉬간 데이터 버스 배선(inter-cache data bus wiring)을 갖는 캐쉬 서브시스템을 나타낸 블록도이다.
도 8b 및 도 8c는 각각 본 발명의 일 실시예에 따른, 도 8a의 캐쉬 서브시스템에 의해 예시된 L2-L3 캐쉬 구성(L2-to-L3 cache configuration)에 대한 L2 캐쉬 유효 주소 및 L3 캐쉬 유효 주소의 일례를 나타낸 도면이다.
양호한 실시예들은 섹터-슬라이스 할당(sector-to-slice allocation) 및 하위 캐쉬 어드레싱(lower cache addressing) 방식을 재구성함으로써 섹터형이면서 슬라이스형인 하위 캐쉬를 갖는 캐쉬 서브시스템에서 배선 혼잡(wiring congestion), 필요한 실면적(real estate), 및 액세스 대기시간(access latency)을 감소시키는 방법 및 컴퓨터 시스템을 제공한다. 이러한 할당 방식에 의해, 비인접 주소들(discontiguous addresses)을 갖는 섹터들이 동일한 슬라이스 내에 배치되고, 캐쉬 슬라이스 내의 어드레싱가능한 섹터들의 재할당에 기초하여 2개 레벨의 하위 캐쉬 간의 배선-감소 방식(reduced-wiring scheme)이 가능하다. 또한, 섹터 및 슬라이스를 식별하기 위해 이전에 할당된 주소 필드들이 주소 태그 내에서 서로의 위치와 관련하여 스위칭되도록 하위 캐쉬 유효 주소 태그가 재구성된다. 이러한 주소 비트의 재할당은 표시된 섹터에 기초한 직접 슬라이스 어드레싱(direct slice addressing)을 가능하게 한다. 예를 들어, 00Hex로 끝나는 모든 주소가 제1 슬라이스로 보내지는 반면, 80Hex로 끝나는 모든 주소가 제2 슬라이스로 보내진다. 본 명세서에 기술되고 예시된 특징들이 시스템의 캐쉬 계층구조의 임의의 2개의 레벨에 적용될 수 있다.
도면들에 대한 설명에서, 유사한 구성요소에는 이전 도면(들)에서의 것과 유사한 이름 및 참조 번호가 붙여져 있다. 나중의 도면이 다른 상황에서 또는 다른 기능으로 구성요소를 이용하는 경우, 그 구성요소에는 도면 번호를 나타내는 다른 선두 번호가 붙여져 있다(예를 들어, 도 4에 대해서는 4xx이고 도 6에 대해서는 6xx). 구성요소들에 할당되는 특정의 번호는 단지 설명에 도움을 주기 위해 제공된 것에 불과하고 본 발명에 대한 어떤 제한(구조적 또는 기능적 제한)을 암시하기 위한 것이 아니다.
이제부터 첨부 도면을 참조하면, 특히 도 4를 참조하면, 본 발명의 특징들이 유익하게 구현될 수 있는, 다중-레벨 캐쉬 계층구조를 갖는 멀티프로세서 데이터 처리 시스템(DPS)(400)의 상위 레벨 블록도가 예시되어 있다. 도시된 바와 같이, 데이터 처리 시스템(400)은 다수의 처리 유닛(칩)(401A, 401B)을 포함하며, 그 각각이 시스템 상호연결부(system interconnect)(440)에 결합되어 있다. 하나 이상의 버스 또는 교차점 스위치(cross-point switch)를 포함할 수 있는 시스템 상호연결부(440)는 처리 유닛(401A, 401B) 상의 구성요소들과 시스템 상호연결부(440)에 결합된 기타 스누퍼들(snoopers)(예를 들어, 메모리(430)) 간에 트랜잭션을 전달하는 통로로서 기능한다.
각각의 처리 유닛(401A, 401B)은 집적 회로이고, 하나 이상의 프로세서를 포함할 수 있으며, 그 중 CPU0(405A) 및 CPU1(405B)가 예시되어 있다. 프로그램 명령어를 실행하는 데 이용되는 레지스터, 명령어 흐름 논리(instruction flow logic) 및 실행 유닛(이들 중 어느 것도 구체적으로 도시되어 있지 않음) 이외에, 프로세서 유닛(401A, 401B) 각각은 연관된 레벨 1(L1) 캐쉬(역시 구체적으로 도시되어 있지 않음)를 포함하며, 이 레벨 1 캐쉬는 연관된 프로세서(CPU: 405A, 405B)에 의해 액세스될 가능성이 있는 명령어 및 데이터를 일시적으로 저장한다. L1 캐쉬는 명령어 및 데이터 둘다(이후부터는 둘다를 간단히 데이터라고 함)를 저장하는 통합 캐쉬(unified cache)일 수 있거나, 대안으로서, L1 캐쉬가 2개로 분리된 명령어 캐쉬 및 데이터 캐쉬로서 구현될 수 있다.
도 4에 도시된 바와 같이, 데이터 처리 시스템(400)은 또한 상호연결부(440)에 결합된 시스템 메모리(430)를 포함하고 있다. 메모리(430)는 메모리 계층구조에서 최하위 레벨의 휘발성 데이터 저장장치를 형성하며, 메모리 계층 구조는 레벨 2(L2) 캐쉬(420A/420B) 및 공유된 L3 캐쉬(425)를 비롯한 하나 이상의 하위 레벨의 캐쉬 메모리를 포함한다. 제어 버스(421A/421B)는 L2 캐쉬(420A/420B)와 공유된 L3 캐쉬(425) 간에 명령 및 데이터를 전달하는 역할을 한다. L2 캐쉬(420a/420b) 및 공유된 L3 캐쉬(425)는 시스템 메모리(430)로부터 프로세서(405A/405B)로의 데이터를 저장하는 데 이용된다. 본 발명의 특징들이 캐쉬 계층구조의 임의의 2개의 레벨에 적용될 수 있지만, 본 명세서에서의 추가의 설명은 상호연결부(421A/421B)에 의해 구현되는 L2 캐쉬(420A/420B)와 공유된 L3 캐쉬(425) 간의 데이터 전송 및 연관된 배선과 어드레싱에 대해 언급한다.
당업자라면 또한 데이터 처리 시스템(400)이 부가의 상호연결부들에 대한 브리지, I/O 장치, 비휘발성 저장장치, 및 네트워크 또는 부착된 장치들과의 연결을 위한 포트 등의 많은 부가의 구성요소들을 포함할 수 있다는 것을 잘 알 것이다. 이러한 부가의 구성요소들이 본 발명을 이해하는 데 필요한 것은 아니기 때문에, 이들 구성요소가 도 4에 도시되어 있지 않거나 혹은 본 명세서에서 더 설명되어 있지 않다.
이제 도 5a를 참조하면, 종래 기술의 캐쉬 계층구조 구현이 나타내어져 있다. 이 실시예에서, CPU(405A, 405B)는 각자의 L2 캐쉬(420A, 420B)에 연결되어 있다. 각각의 L2 캐쉬(420A/420B)는 캐쉬 라인 크기가 128 바이트인 2-슬라이스, 비섹터형 캐쉬(two slice, non-sectored cache)이다. L2 캐쉬(420A/420B)의 제1 슬라이스(120A)는 16진수 '00'으로 끝나는 시작 주소를 갖는 캐쉬 라인 크기의 메모리 블록들(예를 들어, 캐쉬 라인 주소의 비트 56이 '0'인 128 바이트 캐쉬 라인 블록들)을 매핑하는 데 사용된다. 유사하게, L2 캐쉬(420A/420B)의 제2 슬라이스(120B)는 16진수 '80'으로 끝나는 시작 주소를 갖는 캐쉬 라인 크기의 메모리 블록들(예를 들어, 비트 56이 '1'임)을 매핑하는 데 사용된다. 이와 같이, 도 2a 및 도 2b와 관련하여 상기한 바와 같이, 멀티프로세서 데이터 처리 시스템의 메인 메모리는 L2 캐쉬(420A/420B)의 2개의 슬라이스에 걸쳐 배정된다.
유사하게, L3 캐쉬(525)는 2-슬라이스 캐쉬[슬라이스(525A, 525B)]이지만, 이 캐쉬 슬라이스가 또한 2-way 섹터형(two-way sectored)이다. 캐쉬 계층구조의 대용량 하위 레벨에 대해 섹터형 캐쉬를 사용하는 것이 보통이다. 대용량 캐쉬는 섹터형 캐쉬로 구성됨으로써 더 많은 상응하는 실리콘 면적의 절감을 제공한다. 종래 기술의 구성에서는, 도 3a 및 도 3b와 관련하여 상기한 바와 같이, 캐쉬 엔트리 내의 서로 다른 섹터들에 할당된 캐쉬 블록 크기의 메모리 영역들이 메모리 내의 인접한 블록들에 매핑된다. 따라서, 도시된 실시예에서, 16진수 '00' 및 '80'으로 끝나는 시작 캐쉬 블록 주소들이 슬라이스(525A) 내의 엔트리들에 매핑된다. 유사한 방식으로, '100' 및 '180'으로 끝나는 시작 캐쉬 블록 주소들이 캐시 슬라이스(525B) 내의 엔트리들에 매핑된다.
도 5b에 도시된 구성에서, 각각의 L2 캐쉬 슬라이스는 상호연결부(421A, 421B) 내의 버스(521)에 의해 각각의 L3 캐쉬 슬라이스에 연결되어야만 한다. 이것은, 캐쉬 라인 주소의 주소 비트 55가 '0'(주소가 '000'으로 끝남) 또는 '1'(주소가 '100'으로 끝남)일 때, 16진수 '00'으로 끝나는 캐쉬 라인이 L3 슬라이스(525A) 또는 L3 슬라이스(525B) 중 어느 하나에서 각각 발견될 수 있다는 사실로 인한 것이다. 이러한 구성은 일련의 연결(버스 및/또는 배선(521))을 구현하는 것을 복잡하고 어렵게 만든다.
이제 도 5b 및 도 5c를 참조하면, 메인 메모리 주소를 구성하는 비트들이 도 5a의 L2 캐쉬 및 L3 캐쉬 둘다에 의해 어떻게 해석되는지가 나타내어져 있다. 주소 매핑(584)은 L2 캐쉬(420A/420B)에 의해 이용되는 주소 매핑을 나타낸 것이다. 이 매핑에서, 비트 56(필드(583))은 캐쉬 슬라이스들(120A/120B) 중에서 선택을 하는 데 이용된다. 주소 매핑(585)은 L3 캐쉬(525)에 의해 이용되는 주소 매핑을 나타낸 것이다. 종래 기술의 구현에 따르면, 비트 56(필드(580))은 주어진 캐쉬 엔트리 내의 주소들 중에서 선택을 하는 데 이용된다. 이러한 할당은 주어진 캐쉬 엔트리 내의 섹터들과 연관된 메모리 영역들을 인접해 있게 한다. 이어서, 비트 55(필드(581))은 캐쉬 슬라이스들 중에서 선택을 하는 데 이용된다.
이제 도 6a를 참조하면, L2 캐쉬와 L3 캐쉬 간의 배선 혼잡을 감소시키기 위해 본 발명에서 이용되는 대안의 어드레싱 방식이 나타내어져 있다. 양호한 실시예의 메커니즘에서, L3 캐쉬 슬라이스들 내의 섹터들은 비인접 주소들에 할당된다. 상세하게는, L3 슬라이스(625A)는 16진수 주소 '00' 및 '100'으로 끝나는 주소를 할당받는다. 유사하게, L3 슬라이스(625B)는 16진수 주소 '80' 및 '180'으로 끝나는 주소를 할당받는다. 이와 같이, L2 캐쉬 슬라이스(120A 또는 120B)는, 종래 기술의 구현에서 2개의 슬라이스인 것과 달리, 하나의 L3 슬라이스하고 통신하기만 하면 된다. 예를 들어, L2 캐쉬 슬라이스(120A)와 연관된 주소들은 L3 캐쉬 슬라이스(625A)에만 존재할 수 있다. '00'Hex로 끝나는 주소들은 '000' 또는 '100' 중 어느 하나로 끝나야만 한다. 마찬가지로 추론하면, L2 캐쉬 슬라이스(120B)가 L3 캐쉬 슬라이스(625B)에만 연결될 수 있다. 이러한 어드레싱 방식은 상호연결부(421A, 421B)를 구현하는 데 필요한 버스 및/또는 배선(621)의 수를 감소시킨다.
이제 도 6b를 참조하면, 메인 메모리 주소를 구성하는 비트들이 도 6a의 L3 캐쉬에 의해 어떻게 해석되는지가 나타내어져 있다(L2 캐쉬 매핑이 도 5b에서 이용되는 것과 동일하다). 주소 매핑(690)은 L3 캐쉬(625)에 의해 이용되는 주소 매핑을 나타낸 것이다. 이 매핑에서, 비트 56(필드(592))은 L3 캐쉬(625) 내의 슬라이스를 선택하는 데 이용된다. 비트 56을 슬라이스들의 선택에 할당함으로써, 비인접 캐쉬 라인들이 주어진 캐쉬 슬라이스 내에 할당된다. 이어서, 비트 55(필드(591))는 어느 주소들이 섹터형 캐쉬 라인 엔트리들 내의 주어진 엔트리들에 매핑되는지를 제어하는 데 이용된다. 이러한 캐쉬 어드레싱 메커니즘은 L2 캐쉬(420A/420B)와 L3 캐쉬(625) 간의 아주 간단화된 상호연결을 가능하게 한다.
도 6a 및 도 6b에 도시된 기법들은 훨씬 더 많은 수의 섹터들을 갖는 하위 레벨 캐쉬들을 다루기 위해 확장될 수 있다. 이제 도 7a를 참조하면, 2-슬라이스, 4-way 섹터형 L3 캐쉬(725)를 갖는 데이터 처리 시스템(715)이 나타내어져 있다. 데이터 처리 시스템(715)은 도 5a에서 요구되는 것과 동일한 "임의의 캐쉬 슬라이스"와 "임의의 캐쉬 슬라이스" 간의 상호연결부(버스 및/또는 배선(521))를 포함하고 있다. 이제 도 7b를 참조하면, L3 캐쉬(725)가 본 발명의 개시 내용에 따라 구성되고 비인접 주소들을 L3 캐쉬 슬라이스들(725A, 725B)에 할당하는 개선된 데이터 처리 시스템이 나타내어져 있다. 상세하게는, L3 캐쉬 슬라이스(725A)는 비트 56이 0의 값인 경우 오름차순 주소들을 갖는 캐쉬 라인들을 포함하고, L3 캐쉬 슬라이스(725B)는 비트 56이 1의 값인 경우 오름차순 주소들을 갖는 캐쉬 라인들을 포함한다. 이와 같이 주소들을 할당함으로써, 캐쉬 배선 혼잡이 감소될 수 있다.
이제 도 7c를 참조하면, 메인 메모리 주소를 구성하는 비트들이 도 7b의 L3 캐쉬에 의해 어떻게 해석되는지가 나타내어져 있다(L2 캐쉬 매핑이 도 5b에서 이용되는 것과 동일하다). 주소 매핑(790)은 L3 캐쉬(725)에 의해 이용되는 주소 매핑을 나타낸 것이다. 이 매핑에서, 비트 56(필드(792))은 L3 캐쉬(725) 내의 슬라이스를 선택하는 데 이용된다. 비트 56을 슬라이스들의 선택에 할당함으로써, 비인접 캐쉬 라인들이 주어진 캐쉬 슬라이스 내에 할당된다. 이어서, 비트 54 및 55(필드(791))는 어느 주소들이 섹터형 캐쉬 라인 엔트리들 내의 주어진 엔트리들에 매핑되는지를 제어하는 데 이용된다. 이러한 캐쉬 어드레싱 메커니즘은 L2 캐쉬(720a/720b)와 L3 캐쉬(725) 간의 아주 간단화된 상호연결(버스 및/또는 배선(721))을 가능하게 한다.
본 발명의 개시 내용은 또한 상위 레벨 캐쉬 및 하위 레벨 캐쉬 둘다가 섹터형이면서 슬라이스형일 때 배선 혼잡을 감소시키기 위해 적용될 수 있다. 예를 들어, 도 8a의 캐쉬 구성은 L2 캐쉬(820A/820B)가 2-way 섹터형이면서 2-way 슬라이스형이고 L3 캐쉬(825)가 4-way 슬라이스형[슬라이스들(825A, 825B, 826A, 826B)]이면서 2-way 섹터형인 캐쉬 계층구조(815)에 적용되는 본 발명의 개시 내용을 나타낸 것이다. 이 구조에서, 각각의 L2 캐쉬 슬라이스(821A/821B)는 4개의 L3 캐쉬 슬라이스[슬라이스(825A, 825B, 826A, 826B)] 모두 대신에 L3 캐쉬 슬라이스 중 단지 2개에만 연결되어야 한다.
도 8b 및 도 8c는 도 8a의 캐쉬 구성에 대한 L2 및 L3 주소 매핑을 나타낸 것이다. L2 캐쉬 매핑(884)은 비트 56(필드(883))을 슬라이스 셀렉터(slice selector)로서 이용하고, 비트 55(필드(882))를 주어진 섹터형 캐쉬 엔트리 내의 섹터 주소를 결정하는 데 이용한다. 유사하게, L3 주소 매핑(885)은 비트 55 및 56(필드(892))을 슬라이스 셀렉터(slice selector)로서 이용하고, 비트 53 및 54(필드(891))를 주어진 섹터형 캐쉬 엔트리 내의 섹터 주소를 결정하는 데 이용한다.
이상에서 설명한 실시예들에서, 본 발명은 적어도 하나의 프로세서를 갖는 데이터 처리 시스템 및 개선된 메모리 서브시스템을 제공하며, 상기 메모리 서브시스템은 제1 프로세서에 통신 연결되어 있으며, 2개 이상의 캐쉬 슬라이스를 갖는 제1 레벨 캐쉬, 및 제1 레벨 캐쉬에 통신 연결되어 있는 제2 레벨 캐쉬를 포함하며, 제2 레벨 캐쉬는 적어도 2-way 섹터형인 2개 이상의 제2 캐쉬 슬라이스를 갖는다. 상기 2개 이상의 제2 캐쉬 슬라이스 내의 섹터 주소들은, 제1 섹터가 2개 이상의 제2 캐쉬 슬라이스 중 첫 번째 것에 할당되고 제1 섹터에 인접한 제2 섹터가 2개 이상의 제2 캐쉬 슬라이스 중 두 번째 것에 할당되도록, 비인접 방식으로 할당된다.
상호연결부는 제1 레벨 캐쉬와 제2 레벨 캐쉬 간의 데이터 교환을 가능하게 하기 위해 제1 레벨 캐쉬를 제2 레벨 캐쉬에 연결시킨다. 상호연결부는 (1) 제1 레벨 캐쉬의 제1 슬라이스를 제2 레벨 캐쉬 내의 대응하는 제1 슬라이스에 통신 연결시키는 제1 데이터 버스, 및 (2) 제1 레벨 캐쉬의 제2 슬라이스를 제2 레벨 캐쉬 내의 대응하는 제2 슬라이스에 통신 연결시키는 제2 데이터 버스를 포함한다.
일 실시예에서, 데이터 처리 시스템 및/또는 개선된 메모리 서브시스템은 제1 레벨 캐쉬와 유사하게 구성되어 있고 제2 레벨 캐쉬를 제1 레벨 캐쉬와 공유하는 그 다음의 제1 레벨 캐쉬를 포함한다. 이러한 그 다음의 제1 레벨 캐쉬에 의해, 상호연결부는 (1) 그 다음의 제1 레벨 캐쉬의 제1 슬라이스를 제2 레벨 캐쉬 내의 대응하는 제1 슬라이스에 통신 연결시키는 제3 데이터 버스, 및 (2) 그 다음의 제1 레벨 캐쉬의 제2 슬라이스를 제2 레벨 캐쉬 내의 대응하는 제2 슬라이스에 통신 연결시키는 제4 데이터 버스를 더 포함한다. 제1 레벨 캐쉬 및 그 다음의 제1 레벨 캐쉬 둘다는 각자의 제1 슬라이스로부터 제2 레벨 캐쉬 내의 대응하는 제1 슬라이스로 또한 제2 레벨 캐쉬 내의 대응하는 제1 슬라이스로부터 각자의 제1 슬라이스로 데이터를 소싱(source)하고, 제1 레벨 캐쉬 둘다는 각자의 제2 슬라이스로부터 제2 레벨 캐쉬 내의 대응하는 제2 슬라이스로 또한 제2 레벨 캐쉬 내의 대응하는 제2 슬라이스로부터 각자의 제2 슬라이스로 데이터를 소싱한다.
이러한 새로운 할당 방식을 지원하기 위해, 데이터 처리 시스템 및/또는 개선된 메모리 서브시스템은 캐쉬-라인 주소 비트 할당 논리를 포함하는 제2 레벨 캐쉬 어드레싱 프로토콜을 포함하며, 이 캐쉬-라인 주소 비트 할당 논리는, (1) 하나 이상의 섹터 비트의 할당을 캐쉬 라인에 대한 주소 태그 내의 하나 이상의 슬라이스 셀렉터 비트와 교환하는 기능 - 여기서 슬라이스 셀렉터 비트들은 대응하는 데이터 라인이 제2 레벨 캐쉬 내에 할당되어야 하는 슬라이스를 나타내는 데 이용되고, 섹터 비트들은 캐쉬 라인 데이터가 할당되는 특정의 섹터를 나타냄 -, (2) 하나 이상의 슬라이스 셀렉터 비트 내의 제1 값을 갖는 제1 데이터를 하나 이상의 슬라이스 비트에 의해 나타내어진 제2 레벨 캐쉬 내의 제1 슬라이스에 자동으로 할당하는 기능, 및 (3) 하나 이상의 슬라이스 셀렉터 비트 내의 제2 값을 갖는 제2 데이터를 하나 이상의 슬라이스 셀렉터 비트에 의해 나타내어진 제2 레벨 캐쉬 내의 제2 슬라이스에 자동으로 할당하는 기능을 완수한다.
일 실시예에서, 자동으로 할당하는 기능은, 캐쉬 라인 주소 내의 슬라이스 셀렉터 비트의 값을 검사하는 것과, 캐쉬 라인 주소의 주소 부분이 0 비트 값으로 끝날 때, 캐쉬 라인을 제2 레벨 캐쉬 내의 제1 슬라이스에 할당하는 것을 포함한다. 또한, 캐쉬 라인 주소의 주소 부분이 1 비트 값으로 끝날 때, 캐쉬 라인을 제2 레벨 캐쉬 내의 제2 슬라이스에 할당하는 것을 포함한다. 이들 기능에 의해, 캐쉬 라인 주소의 주소 부분의 종료 비트(end bit)가 슬라이스 셀렉터 비트에 대응한다.
비인접 주소를 섹터형 캐쉬 엔트리 내의 섹터들에 할당함으로써, 본 발명은 캐쉬간 배선 및 혼잡의 감소를 달성한다. 섹터 엔트리들을 오름차순 인접 주소들을 갖는 캐쉬 블록 크기의 메모리 영역들에 할당한 종래 기술의 메커니즘과 달리, 이와 같이 비인접 주소들을 갖는 섹터들을 할당하는 것에 의해 계층구조의 주어진 레벨에 있는 주어진 캐쉬 슬라이스가 가능한 한 적은 수의 다른 슬라이스들에 부착될 수 있게 된다.
슬라이스별로 섹터를 할당하는 상기 방법은 물리적 장치 상에서의 캐쉬간 배선의 감소를 가능하게 하며, 따라서 온칩 및 오프칩에서 더 작은 실면적의 사용을 가능하게 하면서도 L3 캐쉬의 크기를 증가시키고 대기시간을 감소시킨다. 따라서, 본 발명은 캐쉬 기술에서 아주 요망되는 개발을 제공한다.
본 발명이 양호한 실시예와 관련하여 구체적으로 도시되고 기술되었지만, 당업자라면 본 발명의 사상 및 범위를 벗어나지 않고 형태 및 세부에서의 다양한 변경이 본 발명에 행해질 수 있다는 것을 잘 알 것이다.
불명료함을 회피하기 위해, 본 명세서에서 상세한 설명 및 청구항들에 걸쳐 사용되는 용어 "~을 포함하는"은 "~만으로 이루어지는 "을 의미하는 것으로 해석되어서는 안 된다.

Claims (10)

  1. 데이터 처리 시스템에서,
    적어도 하나의 프로세서;
    상기 적어도 하나의 프로세서와 통신가능하게 연결되고, 주소 계층구조에 기초하여 2개 이상의 캐쉬 슬라이스로 나뉘어져 있는 제1 레벨 캐쉬; 및
    상기 제1 레벨 캐쉬에 통신가능하게 연결되는 제2 레벨 캐쉬;를 포함하고,
    상기 제2 레벨 캐쉬는 2개 이상의 제2 캐쉬 슬라이스들로 나뉘고, 상기 2개 이상의 제2 캐쉬 슬라이스들 각각은 적어도 2-way 섹터형이고, 상기 2개 이상의 제2 캐쉬 슬라이스들 각각 내의 섹터들은, 제1 섹터가 상기 2개 이상의 제2 캐쉬 슬라이스 중 첫 번째 제2 캐쉬 슬라이스에 할당되고 상기 제1 섹터에 인접한 제2 섹터가 상기 2개 이상의 제2 캐쉬 슬라이스 중 두 번째 제2 캐쉬 슬라이스에 할당되도록 상기 주소 계층구조에 따라 인접하지 않은 방식으로 할당되고,
    상기 제2 레벨 캐쉬는 캐쉬-라인 주소 비트 할당 로직을 포함하는 제2 레벨 캐쉬 어드레싱 프로토콜을 포함하고,
    상기 캐쉬-라인 주소 비트 할당 로직은,
    캐쉬 라인에 대한 주소 태그 내의 하나 이상의 캐쉬 슬라이스 셀렉터 비트에 대해 하나 이상의 섹터 비트의 위치를 교환하고, 상기 캐쉬 슬라이스 셀렉터 비트는 대응하는 데이터 라인이 상기 제2 레벨 캐쉬 내에 할당되어야 하는 캐쉬 슬라이스를 나타내는데 이용되고, 상기 섹터 비트는 캐쉬 라인 데이터가 할당되는 특정한 섹터를 나타내는 것인,
    데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 제1 레벨 캐쉬와 상기 제2 레벨 캐쉬 간의 데이터 교환을 가능하게 하기 위해 상기 제1 레벨 캐쉬를 상기 제2 레벨 캐쉬에 연결시키는 상호연결부
    를 더 포함하고,
    상기 상호연결부는 (a) 상기 제1 레벨 캐쉬의 제1 캐쉬 슬라이스를 상기 제2 레벨 캐쉬 내의 대응하는 제1 캐쉬 슬라이스에 통신 연결시키는 제1 데이터 버스, 및 (b) 상기 제1 레벨 캐쉬의 제2 캐쉬 슬라이스를 상기 제2 레벨 캐쉬 내의 대응하는 제2 캐쉬 슬라이스에 통신 연결시키는 제2 데이터 버스를 포함하며,
    상기 제1 레벨 캐쉬 내의 제1 섹터의 데이터가 상기 제2 레벨 캐쉬 내의 상기 제2 캐쉬 슬라이스들 중 첫 번째 제2 캐쉬 슬라이스에만 할당되는 반면, 상기 제1 레벨 캐쉬 내의 제2 섹터의 데이터가 상기 제2 레벨 캐쉬 내의 상기 제2 캐쉬 슬라이스들 중 두 번째 제2 캐쉬 슬라이스에만 할당되는 데이터 처리 시스템.
  3. 제2항에 있어서,
    상기 제1 레벨 캐쉬와 유사하게 구성되어 있고 상기 제2 레벨 캐쉬를 상기 제1 레벨 캐쉬와 공유하는 그 다음의 제1 레벨 캐쉬
    를 더 포함하며,
    상기 상호연결부가 (a) 상기 그 다음의 제1 레벨 캐쉬의 제1 캐쉬 슬라이스를 상기 제2 캐쉬 슬라이스들 중 첫 번째 제2 캐쉬 슬라이스에 통신 연결시키는 제3 데이터 버스, 및 (b) 상기 그 다음의 제1 레벨 캐쉬의 제2 캐쉬 슬라이스를 상기 제2 캐쉬 슬라이스들 중 두 번째 제2 캐쉬 슬라이스에 통신 연결시키는 제4 데이터 버스를 더 포함하고,
    상기 제1 레벨 캐쉬 및 상기 그 다음의 제1 레벨 캐쉬 양쪽 모두가 각자의 제1 캐쉬 슬라이스들로부터 상기 제2 캐쉬 슬라이스들 중 상기 첫 번째 제2 캐쉬 슬라이스로, 또한 상기 제2 캐쉬 슬라이스들 중 상기 첫 번째 제2 캐쉬 슬라이스로부터 각자의 제1 캐쉬 슬라이스들로 데이터를 소싱(sourcing)하며, 상기 제1 레벨 캐쉬들 양쪽 모두가 각자의 제2 캐쉬 슬라이스들로부터 상기 제2 캐쉬 슬라이스들 중 상기 두 번째 제2 캐쉬 슬라이스로, 또한 상기 제2 캐쉬 슬라이스들 중 상기 두 번째 제2 캐쉬 슬라이스로부터 각자의 제2 캐쉬 슬라이스들로 데이터를 소싱하는,
    데이터 처리 시스템.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제2 레벨 캐쉬 어드레싱 프로토콜은,
    상기 하나 이상의 캐쉬 슬라이스 셀렉터 비트 내의 제1 값을 갖는 제1 데이터를, 상기 하나 이상의 캐쉬 슬라이스 비트에 의해 나타내어진 상기 제2 레벨 캐쉬 내의 제1 캐쉬 슬라이스에 자동으로 할당하는 기능; 및
    상기 하나 이상의 캐쉬 슬라이스 셀렉터 비트 내의 제2 값을 갖는 제2 데이터를, 상기 하나 이상의 캐쉬 슬라이스 셀렉터 비트에 의해 나타내어진 상기 제2 레벨 캐쉬 내의 제2 캐쉬 슬라이스에 자동으로 할당하는 기능;을 수행하는 로직을 더 포함하는,
    데이터 처리 시스템.
  5. 제4항에 있어서, 상기 자동으로 할당하는 기능은,
    상기 캐쉬 라인 주소 내의 상기 캐쉬 슬라이스 셀렉터 비트(들)의 값을 검사하는 기능;
    상기 캐쉬 라인 주소의 메모리 주소 부분이 0 비트 값으로 끝날 때, 상기 캐쉬 라인을 상기 제2 레벨 캐쉬 내의 상기 캐쉬 제1 슬라이스에 할당하는 기능; 및
    상기 캐쉬 라인 주소의 메모리 주소 부분이 1 비트 값으로 끝날 때, 상기 캐쉬 라인을 상기 제2 레벨 캐쉬 내의 상기 제2 캐쉬 슬라이스에 할당하는 기능
    을 포함하며,
    캐쉬 라인 주소 내의 복수의 비트가 상기 캐쉬 라인의 상기 메모리 주소 부분을 나타내는 데 이용되고, 상기 복수의 비트 중 마지막 하나 이상의 비트가 상기 캐쉬 슬라이스 셀렉터 비트(들)에 대응하는,
    데이터 처리 시스템.
  6. 메모리 서브시스템으로서,
    적어도 하나의 제1 프로세서에 통신가능하게 연결되어 있고, 주소 계층구조에 기초하여 2개 이상의 캐쉬 슬라이스들로 나뉘어져 있는 제1 레벨 캐쉬; 및
    상기 제1 레벨 캐쉬에 통신가능하게 연결되어 있는 제2 레벨 캐쉬;를 포함하고,
    상기 제2 레벨 캐쉬는 2개 이상의 제2 캐쉬 슬라이스들로 나뉘고, 상기 2개 이상의 제2 캐쉬 슬라이스들 각각은 적어도 2-way 섹터형이고,
    상기 2개 이상의 제2 캐쉬 슬라이스 내의 섹터들은, 제1 섹터가 상기 2개 이상의 제2 캐쉬 슬라이스 중 첫 번째 제2 캐쉬 슬라이스에 할당되고 상기 제1 섹터에 인접한 제2 섹터가 상기 2개 이상의 제2 캐쉬 슬라이스 중 두 번째 제2 캐쉬 슬라이스에 할당되도록 상기 주소 계층구조에 따라 인접하지 않은 방식으로 할당되고,
    상기 제2 레벨 캐쉬는 캐쉬-라인 주소 비트 할당 로직을 포함하는 제2 레벨 캐쉬 어드레싱 프로토콜을 포함하고,
    상기 캐쉬-라인 주소 비트 할당 로직은,
    캐쉬 라인에 대한 주소 태그 내의 하나 이상의 캐쉬 슬라이스 셀렉터 비트에 대해 하나 이상의 섹터 비트의 위치를 교환하고, 상기 캐쉬 슬라이스 셀렉터 비트는 대응하는 데이터 라인이 상기 제2 레벨 캐쉬 내에 할당되어야 하는 캐쉬 슬라이스를 나타내는데 이용되고, 상기 섹터 비트는 캐쉬 라인 데이터가 할당되는 특정한 섹터를 나타내는 것인,
    메모리 서브시스템.
  7. 데이터를 2개 이상의 슬라이스를 갖는 N-way 섹터형 하위 레벨 캐쉬에 할당하는 방법으로서,
    캐쉬 라인에 대한 주소 태그 내의 하나 이상의 캐쉬 슬라이스 셀렉터 비트에 대한 하나 이상의 섹터 비트의 위치를 교환하는 단계 - 상기 캐쉬 슬라이스 셀렉터 비트들은 대응하는 데이터 라인이 제2 레벨 캐쉬 내에 할당되어야 하는 캐쉬 슬라이스를 나타내는 데 이용되고, 상기 섹터 비트들은 주소 계층구조에 기초하여 상기 캐쉬 라인 데이터가 할당되는 특정의 섹터를 나타냄 -;
    상기 하나 이상의 캐쉬 슬라이스 셀렉터 비트 내의 제1 값을 갖는 제1 데이터를, 상기 하나 이상의 캐쉬 슬라이스 셀렉터 비트에 의해 표시되는 상기 제2 레벨 캐쉬 내의 제1 캐쉬 슬라이스에 자동으로 할당하는 단계; 및
    상기 하나 이상의 캐쉬 슬라이스 셀렉터 비트 내의 제2 값을 갖는 제2 데이터를, 상기 하나 이상의 캐쉬 슬라이스 셀렉터 비트에 의해 나타내어진 상기 제2 레벨 캐쉬 내의 제2 캐쉬 슬라이스에 자동으로 할당하는 단계;를 포함하고,
    서로 다른 순차적으로 어드레싱되는 섹터들에 할당되는 데이터가, 상기 주소 계층구조에 따라, 상기 하위 레벨 캐쉬 내의 서로 다른 캐쉬 슬라이스들에 인접하지 않은 방식으로 할당되고,
    상기 제2 레벨 캐쉬는 상기 제1 레벨 캐쉬에 통신가능하게 연결되고,
    상기 제2 레벨 캐쉬는 2개 이상의 제2 캐쉬 슬라이스들로 나뉘고, 상기 2개 이상의 제2 캐쉬 슬라이스들 각각은 적어도 2-way 섹터형이고,
    상기 2개 이상의 제2 캐쉬 슬라이스 내의 섹터들은, 제1 섹터가 상기 2개 이상의 제2 캐쉬 슬라이스 중 첫 번째 제2 캐쉬 슬라이스에 할당되고 상기 제1 섹터에 인접한 제2 섹터가 상기 2개 이상의 제2 캐쉬 슬라이스 중 두 번째 제2 캐쉬 슬라이스에 할당되도록 상기 주소 계층구조에 따라 인접하지 않은 방식으로 할당되고,
    상기 제1 레벨 캐쉬는 적어도 하나의 프로세서에 통신가능하게 연결되고, 주소 계층구조에 기반하여 2개 이상의 캐쉬 슬라이스들로 나뉘어져 있는 것인,
    데이터를 2개 이상의 슬라이스를 갖는 N-way 섹터형 하위 레벨 캐쉬에 할당하는 방법.
  8. 제7항에 있어서, 상기 자동으로 할당하는 단계는,
    상기 캐쉬 라인 주소 내의 상기 캐쉬 슬라이스 셀렉터 비트(들)의 값을 검사하는 단계;
    상기 캐쉬 라인 주소의 메모리 주소 부분이 0 비트 값으로 끝날 때, 상기 캐쉬 라인을 상기 제2 레벨 캐쉬 내의 상기 제1 캐쉬 슬라이스에 할당하는 단계; 및
    상기 캐쉬 라인 주소의 메모리 주소 부분이 1 비트 값으로 끝날 때, 상기 캐쉬 라인을 상기 제2 레벨 캐쉬 내의 상기 제2 캐쉬 슬라이스에 할당하는 단계
    를 포함하며,
    캐쉬 라인 주소 내의 복수의 비트가 상기 캐쉬 라인의 상기 메모리 주소 부분을 나타내는 데 이용되고, 상기 복수의 비트 중 마지막 하나 이상의 비트가 상기 슬라이스 셀렉터 비트(들)에 대응하는,
    데이터를 2개 이상의 슬라이스를 갖는 N-way 섹터형 하위 레벨 캐쉬에 할당하는 방법.
  9. 제7항 또는 제8항에 있어서,
    상기 제2 레벨 캐쉬가 N-way 섹터형이고, 여기서 N은 2의 멱승이며,
    상기 할당하는 단계가, 2개의 인접 섹터가 동일한 캐쉬 슬라이스에 할당되지 않도록, 각각의 인접 섹터 쌍이 상기 2개 이상의 캐쉬 슬라이스에 걸쳐 할당되게 상기 캐쉬 라인들을 섹터들에 할당하는,
    데이터를 2개 이상의 슬라이스를 갖는 N-way 섹터형 하위 레벨 캐쉬에 할당하는 방법.
  10. 제7항 또는 제8항에 있어서,
    캐쉬 라인 주소 내의 복수의 비트가 상기 캐쉬 라인의 메모리 주소 부분을 나타내는 데 이용되고, 상기 복수의 비트 중 마지막 하나 이상의 비트가 상기 슬라이스 셀렉터 비트(들)에 대응하며,
    상기 마지막 하나 이상의 비트가 00Hex 및 80Hex로 끝나는 메모리 주소에 대응하고,
    상기 할당하는 단계가,
    상기 캐쉬 라인 주소의 상기 캐쉬 슬라이스 셀렉터 비트의 값을 검사하는 단계;
    상기 캐쉬 라인 주소의 상기 메모리 주소 부분이 00Hex로 끝날 때, 상기 캐쉬 라인 데이터를 상기 제1 캐쉬 슬라이스에 배치하는 단계; 및
    상기 캐쉬 라인 주소의 상기 메모리 주소 부분이 80Hex로 끝날 때, 상기 캐쉬 라인 데이터를 상기 제2 캐쉬 슬라이스에 배치하는 단계
    를 포함하는,
    데이터를 2개 이상의 슬라이스를 갖는 N-way 섹터형 하위 레벨 캐쉬에 할당하는 방법.
KR1020107003131A 2007-08-16 2008-07-29 캐쉬 섹터 할당 KR101190403B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/839,663 US8433851B2 (en) 2007-08-16 2007-08-16 Reducing wiring congestion in a cache subsystem utilizing sectored caches with discontiguous addressing
US11/839,663 2007-08-16
PCT/EP2008/059902 WO2009021835A1 (en) 2007-08-16 2008-07-29 Cache sector allocation

Publications (2)

Publication Number Publication Date
KR20100040317A KR20100040317A (ko) 2010-04-19
KR101190403B1 true KR101190403B1 (ko) 2012-10-12

Family

ID=39748508

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107003131A KR101190403B1 (ko) 2007-08-16 2008-07-29 캐쉬 섹터 할당

Country Status (7)

Country Link
US (1) US8433851B2 (ko)
EP (1) EP2179361B1 (ko)
JP (1) JP5241838B2 (ko)
KR (1) KR101190403B1 (ko)
CN (1) CN101784994B (ko)
AT (1) ATE544115T1 (ko)
WO (1) WO2009021835A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
US9842005B2 (en) * 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US8645404B2 (en) * 2011-10-21 2014-02-04 International Business Machines Corporation Memory pattern searching via displaced-read memory addressing
US8954672B2 (en) * 2012-03-12 2015-02-10 Advanced Micro Devices, Inc. System and method for cache organization in row-based memories
KR101858159B1 (ko) 2012-05-08 2018-06-28 삼성전자주식회사 멀티-cpu 시스템과 이를 포함하는 컴퓨팅 시스템
US8862828B2 (en) * 2012-06-28 2014-10-14 Intel Corporation Sub-numa clustering
US10073779B2 (en) 2012-12-28 2018-09-11 Intel Corporation Processors having virtually clustered cores and cache slices
KR20150130510A (ko) 2013-03-15 2015-11-23 소프트 머신즈, 인크. 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US20140337583A1 (en) * 2013-05-07 2014-11-13 Lsi Corporation Intelligent cache window management for storage systems
US10013352B2 (en) * 2014-09-26 2018-07-03 Intel Corporation Partner-aware virtual microsectoring for sectored cache architectures
US9690706B2 (en) 2015-03-25 2017-06-27 Intel Corporation Changing cache ownership in clustered multiprocessor
US9971700B2 (en) * 2015-11-06 2018-05-15 Advanced Micro Devices, Inc. Cache with address space mapping to slice subsets
KR20170056782A (ko) * 2015-11-13 2017-05-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US9832277B2 (en) * 2015-11-13 2017-11-28 Western Digital Technologies, Inc. Systems and methods for adaptive partitioning in distributed cache memories
CN105550979A (zh) * 2015-12-11 2016-05-04 中国航空工业集团公司西安航空计算技术研究所 一种高数据通量纹理Cache层次结构
US20210191777A1 (en) * 2018-06-21 2021-06-24 Telefonaktiebolaget Lm Ericsson (Publ) Memory Allocation in a Hierarchical Memory System
JP7435814B2 (ja) 2020-10-09 2024-02-21 日本電気株式会社 時相論理式生成装置、時相論理式生成方法及びプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005041047A2 (en) * 2003-10-22 2005-05-06 Intel Corporation Method and apparatus for efficient ordered stores over an interconnection network
US20070043911A1 (en) * 2005-08-17 2007-02-22 Sun Microsystems, Inc. Multiple independent coherence planes for maintaining coherency

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
US5553259A (en) * 1993-07-16 1996-09-03 Unisys Corporation Apparatus and method for synchronizing the simultaneous loading of cache program word addresses in dual slice registers
US6301647B1 (en) * 1997-12-17 2001-10-09 Via-Cyrix, Inc. Real mode translation look-aside buffer and method of operation
US6332179B1 (en) 1999-08-19 2001-12-18 International Business Machines Corporation Allocation for back-to-back misses in a directory based cache
JP3770380B2 (ja) * 2000-09-19 2006-04-26 シャープ株式会社 液晶表示装置
US7055003B2 (en) * 2003-04-25 2006-05-30 International Business Machines Corporation Data cache scrub mechanism for large L2/L3 data cache structures
ITMI20031640A1 (it) 2003-08-08 2005-02-09 Mipharm S P A Base per gel bioadesivi.
US7490200B2 (en) 2005-02-10 2009-02-10 International Business Machines Corporation L2 cache controller with slice directory and unified cache structure
US7308537B2 (en) * 2005-02-10 2007-12-11 International Business Machines Corporation Half-good mode for large L2 cache array topology with different latency domains

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005041047A2 (en) * 2003-10-22 2005-05-06 Intel Corporation Method and apparatus for efficient ordered stores over an interconnection network
US20070043911A1 (en) * 2005-08-17 2007-02-22 Sun Microsystems, Inc. Multiple independent coherence planes for maintaining coherency

Also Published As

Publication number Publication date
US20090049248A1 (en) 2009-02-19
CN101784994A (zh) 2010-07-21
ATE544115T1 (de) 2012-02-15
CN101784994B (zh) 2013-02-13
JP2010537265A (ja) 2010-12-02
EP2179361A1 (en) 2010-04-28
WO2009021835A1 (en) 2009-02-19
JP5241838B2 (ja) 2013-07-17
US8433851B2 (en) 2013-04-30
KR20100040317A (ko) 2010-04-19
EP2179361B1 (en) 2012-02-01

Similar Documents

Publication Publication Date Title
KR101190403B1 (ko) 캐쉬 섹터 할당
US11741012B2 (en) Stacked memory device system interconnect directory-based cache coherence methodology
US10073778B1 (en) Caching in multicore and multiprocessor architectures
US8412907B1 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation
US9152569B2 (en) Non-uniform cache architecture (NUCA)
US6408362B1 (en) Data processing system, cache, and method that select a castout victim in response to the latencies of memory copies of cached data
US6877067B2 (en) Shared cache memory replacement control method and apparatus
US8230179B2 (en) Administering non-cacheable memory load instructions
JP4447580B2 (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
US20160253123A1 (en) NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System
KR102157354B1 (ko) 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법
US20070073974A1 (en) Eviction algorithm for inclusive lower level cache based upon state of higher level cache
US20080040549A1 (en) Direct Deposit Using Locking Cache
JP2006134324A5 (ko)
KR20040032745A (ko) 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템
US7721047B2 (en) System, method and computer program product for application-level cache-mapping awareness and reallocation requests
CN115408307A (zh) 用于存储一致性数据和非一致性数据的高速缓存
US20120210070A1 (en) Non-blocking data move design

Legal Events

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

Payment date: 20150925

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160928

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170927

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee