KR20160085194A - 분할된 캐시의 캐시 재배치 방법 및 그것을 수행하는 메모리 컨트롤러 - Google Patents

분할된 캐시의 캐시 재배치 방법 및 그것을 수행하는 메모리 컨트롤러 Download PDF

Info

Publication number
KR20160085194A
KR20160085194A KR1020150088931A KR20150088931A KR20160085194A KR 20160085194 A KR20160085194 A KR 20160085194A KR 1020150088931 A KR1020150088931 A KR 1020150088931A KR 20150088931 A KR20150088931 A KR 20150088931A KR 20160085194 A KR20160085194 A KR 20160085194A
Authority
KR
South Korea
Prior art keywords
cache
partition
lru
entry
partitions
Prior art date
Application number
KR1020150088931A
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
Priority claimed from US14/591,322 external-priority patent/US20150193355A1/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20160085194A publication Critical patent/KR20160085194A/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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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

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

본 발명에 따른 복수의 파티션들로 분할된 캐시의 캐시 재배치 방법은, 상기 복수의 파티션들 중 선택 파티션으로 제 1 캐시 엔트리를 할당하기 위해 리퀘스터로부터 요청을 수신하는 단계, 상기 선택 파티션에서 캐시 엔트리들 중 가장 최근에 사용된(least recently used, 이하 LRU) 캐시 엔트리를 결정하는 단계, 상기 선택 파티션에서 상기 제 1 캐시 엔트리를 할당하는 단계, 그리고 상기 선택 파티션 내에서 다음 LRU 캐시 엔트리를 설정하는 단계를 포함한다.

Description

분할된 캐시의 캐시 재배치 방법 및 그것을 수행하는 메모리 컨트롤러{CACHE REPLACEMENT METHOD OF PARTITIONED CACHE AND MEMORY CONTROLLER PERFORMING THE SAME}
본 발명은 집적 회로의 캐시 설계에 관한 것으로, 좀 더 구체적으로는 새로운 엔트리(entry)를 분할된 캐시에 쓰는 경우에 분할된 캐시의 재배치 방법 및 그것을 수행하는 메모리 컨트롤러에 관한 것이다.
캐시는 일반적으로 각각의 캐시 인덱스 어드레스로 표시되는 복수의 캐시 엔트리(entry)들(즉, 웨이(way)들)로 구성된다. 캐시로 새로운 라인이 할당되고 새로운 라인 대응하는 인덱스에서 모든 웨이(way)들이 유효한 경우, 유효한 웨이(way)들 중 하나는 재배치되기 위해 반드시 선택되어야 한다.
일반적인 캐시들은 각각의 웨이(way)가 얼마나 자주 또는 얼마나 최근에 액세스되었는지 여부에 기초하여 재배치 방법을 최적화하기 위한 서로 다른 방법들을 사용한다. 얼마나 최근에 라인이 액세스되었는지에 대한 표시를 이용하는 것은 재배치를 위해 선택될 라인들을 허용한다. 선택될 라인들은 최근에 액세스되지 않은 것이다. 하지만, 일반적인 캐시 재배치 정책들은 캐시 분할을 제공하거나 지원하지 않는다.
캐시 분할은, 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU) 및 네트워크 인터페이스 등과 같이 캐시로 액세스 요청을 하는, 다수의 리퀘스터(requester)들 공유될 수 있는 캐시 리소스(resource)들을 허용한다. 예를 들면, CPU는 캐시의 모든 웨이(way)들로 액세스하도록 할당될 수 있다. 반면에, GPU는 캐시의 오염을 피하기 위해 캐시의 하나의 파티션만 액세스하도록 제한될 수 있다. 또한, 네트워크 인터페이스는 캐시의 부분 또는 부분의 부분만 액세스하도록 제한될 수 있다. 네트워크 인터페이스에 할당된 캐시의 부분 또는 부분의 부분은 GPU에 할당된 캐시의 부분과 분리될 수 있다. 따라서, 면적이나 복잡성의 증가 없이 유연한 분할 스킴(scheme)을 지원하는 캐시 재배치 메커니즘은 요구된다.
본 발명의 목적은 면적이나 복잡성의 증가 없이 유연한 분할 스킴(scheme)을 지원하는 캐시 재배치 방법 및 그것을 수행하는 메모리 컨트롤러를 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 복수의 파티션들로 분할된 캐시의 캐시 재배치 방법은, 상기 복수의 파티션들 중 선택 파티션으로 제 1 캐시 엔트리를 할당하기 위해 리퀘스터로부터 요청을 수신하는 단계, 상기 선택 파티션에서 캐시 엔트리들 중 가장 최근에 사용된(least recently used, 이하 LRU) 캐시 엔트리를 결정하는 단계, 상기 선택 파티션에서 상기 제 1 캐시 엔트리를 할당하는 단계, 그리고 상기 선택 파티션 내에서 다음 LRU 캐시 엔트리를 설정하는 단계를 포함한다.
실시 예로서, 상기 다음 LRU 캐시 엔트리를 설정하는 단계는 상기 선택 파티션 내에서 상기 분할된 캐시의 LRU 비트들을 반전시키는 단계를 포함한다.
실시 예로서, 상기 선택 파티션은 상기 복수의 파티션들 중에서 상기 선택 파티션을 표시하는 비트 마스크에 의해 설정된다.
실시 예로서, 상기 선택 파티션은 상기 복수의 파티션들 중 적어도 두 파티션들을 포함하고, 상기 비트 마스크는 상기 적어도 두 파티션들을 표시한다.
실시 예로서, 상기 선택 파티션은 제 1 파티션을 포함하며, 상기 복수의 파티션들은 제 2 파티션을 포함하고, 상기 제 1 파티션은 상기 2 파티션으로부터 분리된다.
실시 예로서, 상기 선택 파티션은 제 1 파티션을 포함하며, 상기 복수의 파티션들은 제 2 파티션을 포함하고, 상기 제 1 파티션 내의 캐시 엔트리들은 상기 제 2 파티션의 캐시 엔트리들에 포함된다.
실시 예로서, 상기 선택 파티션은 제 1 파티션을 포함하며, 상기 복수의 파티션들은 제 2 파티션을 포함하고, 상기 제 1 파티션의 크기는 상기 제 2 파티션의 크기와 서로 다르다.
상기 목적을 달성하기 위한 본 발명에 따른 복수의 파티션들로 분할된 캐시에서 캐시 재배치 방법을 수행하는 메모리 컨트롤러는, 상기 복수의 파티션들 중 선택 파티션으로 제 1 캐시 엔트리를 할당하기 위해 리퀘스터로부터 요청을 수신하고, 상기 선택 파티션에서 캐시 엔트리들 중 가장 최근에 사용된(least recently used, 이하 LRU) 캐시 엔트리를 결정하고, 상기 선택 파티션에서 상기 제 1 캐시 엔트리를 할당하고, 그리고 상기 선택 파티션 내에서 다음 LRU 캐시 엔트리를 설정하는 프로세싱 모듈을 포함한다.
실시 예로서, 상기 프로세싱 모듈은 상기 선택 파티션 내의 LRU 비트들을 반전시키는 것에 의해 상기 다음 LRU 캐시 엔트리를 설정한다.
실시 예로서, 상기 선택 파티션은 상기 복수의 파티션들 중에서 상기 선택 파티션을 표시하는 비트 마스크에 의해 설정된다.
이상의 실시 예에 따르면, 본 발명은 면적이나 복잡성의 증가 없이 유연한 분할 스킴(scheme)을 지원하는 캐시 재배치 방법 및 그것을 수행하는 메모리 컨트롤러를 제공할 수 있다.
도 1은 16웨이(way) 캐시를 예시적으로 보여주는 도면이다.
도 2a는 캐시에 엔트리(entry)를 할당하기 전의 캐시를 보여주는 도면이다.
도 2b는 캐시에서 엔트리(entry)의 할당이 수행된 이후의 캐시를 보여주는 도면이다.
도 3은 의사-LRU 재배치 정책(pseudo-LRU replacement policy)이 적용된 분할된 캐시를 예시적으로 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 의사-LRU 재배치 메커니즘을 위한 분할된 캐시를 보여주는 도면이다.
도 5는 본 발명의 다른 실시 예에 따른 의사-LRU 재배치 메커니즘을 위한 분할된 캐시를 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른 의사-LRU 재배치 정책에 따른 분할된 캐시를 관리하는 방법을 보여주는 순서도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 가진다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 16웨이(way) 캐시를 예시적으로 보여주는 도면이다. 일부 캐시 어플리케이션(cache application)에서, 둘 이상의 서로 다른 리퀘스터(requestor)들 사이에서는 캐시를 분할하는 것이 유리할 수 있다. 서로 다른 리퀘스터(requestor)들 사이에서 다양하게 분할된 캐시에 대한 접근의 제한으로 인해, 하나의 리퀘스터(requestor)가 새로운 할당들을 포함하는 캐시를 지배할 수 있고, 따라서 다른 리퀘스터(requestor)에 의해 요구되는 많은 캐시 라인들을 재배치하는 정도에 한계가 있을 수 있다.
예를 들면, 리퀘스터(requestor)들은 중앙 처리 장치(central processing unit, 이하 CPU), 그래픽 처리 장치(graphics processing unit, 이하 GPU), 디스플레이 컨트롤러들, 비디오 인코더 및 디코더, 그리고 네트워킹 인터페이스(networking interface)들을 포함할 수 있다. 각 리퀘스터(requestor)는 서로 다른 레이턴시(latency), 대역폭, 및 시간적 지역 특성(temporal locality characteristics)을 가지고 있기 때문에, 캐시 재배치는 서로 다른 리퀘스터(requestor)들 또는 리퀘스터(requestor)들의 그룹들 사이에서 캐시를 분할하는 것에 의해 최적화될 수 있다.
이하에서 설명되는 실시 예들에 따르면, 캐시를 분할하는 것은 각 리퀘스터(requestor) 또는 리퀘스터(requestor) 그룹에 할당될 수 있는 웨이(way)들의 집합과 같은 서로 다른 파티션(partition)들로 캐시의 연관성이 쪼개지도록 할 수 있다.
도 1에 도시된 16-웨이(way) 캐시는 본 발명의 설명을 위해 예시적으로 사용된다. 캐시(100)는 트리(tree) 기반의 계층을 형성한다. LruOct 비트(110), LruQuad 비트들(120, 125), LruPair 비트들(130, 135, 140, 145), 및 LruWay 비트들(150, 155, 160, 165, 170, 175, 180, 185)은 3 레벨 트리 기반의 리스트 리센틀리 유즈드(least recently used, 이하 LRU) 선택 계층을 형성한다. LRU 선택 계층은, 엔트리(entry) 0부터 엔트리(entry) 15까지가 가장 최근에 사용되었는지 및 재배치할 수 있는지 여부를 보여준다. 캐시(100)는, 예를 들어 L2 캐시와 같이, 복수의 리퀘스터(requestor)들에 의해 액세스되는 시스템에서 캐시의 마지막 레벨일 것이다. 복수의 리퀘스터(requestor)들은, 복수의 CPU들, 복수의 CPU 코어들, 시스템 온 칩(system-on-chip, SoC) 상에서 동작하는 CPU 클러스터들, 또는 CPU들 또는 CPU 코어들의 그룹들과 같은 것을 말한다.
재배치하기 위한 웨이(way) [15:0](즉, 캐시 엔트리(entry))를 결정하기 위해, 비트들(110, 185)은 캐시(100)에서 검사될 수 있다. LruOct 비트(110)는 재배치 웨이(way)가 상위 8 웨이(way)인지 또는 하위 8 웨이(way)인지를 보여준다(Oct). LruOct 비트(110)에 의해 지시된 8 웨이(way)들에 대응하는 LruQuad 비트(120, 125)는 재배치 웨이(way)가 상위 4 웨이(way)인지 또는 하위 4 웨이(way)인지를 보여준다(Quad). LruQuad 비트(120, 125)에 의해 지시된 4 웨이(way)들에 대응하는 LruPair 비트(130-145)는 재배치 웨이(way)가 상위 2 웨이(way)인지 또는 하위 2 웨이(way)인지를 보여준다(Pair). 마지막으로, LruPair 비트(130-145)에 의해 지시된 4 웨이(way)들에 대응하는 LruWay 비트(150-185)는 재배치 웨이(way)가 상위 웨이(way)인지 또는 하위 웨이(way)인지를 보여준다.
단순한 캐시 재배치 정책은 랜덤 재배치이다. 랜덤 재배치는 저장 비트들을 요구하지 않는다. 하지만, 랜덤 재배치는 재배치 웨이(way)의 선택을 최적화하려고 시도하지 않는다.
스펙트럼(spectrum)의 반대편 끝에서, 목록 방식(list approach)이 사용될 수 있다. 목록 방식에서, 목록의 한 쪽 끝으로 향하는 LRU 웨이(way) 및 목록의 다른 쪽 끝으로 향하는 모스트 리센틀리 유즈드(Most Recently Used, 이하 MRU) 웨이(way)와 함께, 16 웨이(way)들 모두로 향하는 포인터(pointer)들의 목록은 유지될 수 있다. 각 캐시 액세스는 오더(order)된 목록(또는 추가된 엔트리(entry))으로부터 액세스된 엔트리(entry)는 제거하도록, 그리고 목록에서 MRU 엔트리(entry)의 위치에 액세스된 엔트리(entry)를 위치시키는 목록을 조종할 수 있다. 새로운 캐시 할당이 요구될 때, LRU 엔트리(entry)는 재배치를 위해 선택될 수 있다. 따라서, 이러한 방법은 많은 비트들을 요구하지만 정확하다(즉, 16 캐시 엔트리(entry) x 4 비트 = 64 비트).
의사-LRU 알고리즘(pseudo-LRU algorithm)은 LRU 웨이(way)를 대략적으로 추적할 수 있다. 반면에 의사-LRU 알고리즘(pseudo-LRU algorithm)은 전체 목록 메커니즘(full list mechanism)에 비하여 더 적은 비트들을 사용할 수 있다(즉, 16 웨이(way)를 위하여 15 비트를 사용). 따라서 의사-LRU 메커니즘(pseudo-LRU mechanism)은 공간 활용에 더더욱 효과적이다. 그러므로 그러한 구조는 분할된 캐시에 더욱 적합하다. 이하에서 좀 더 자세히 설명된다.
아래의 표 1은 의사-LRU 재배치 메커니즘(pseudo-LRU replacement mechanism)를 보여준다.
Group Name Description
Way selects LruWay[0] Indicates whether way[1](1) or way[0](0) is the LRU
LruWay[1] Indicates whether way[3](1) or way[2](0) is the LRU
LruWay[2] Indicates whether way[5](1) or way[4](0) is the LRU
LruWay[3] Indicates whether way[7](1) or way[6](0) is the LRU
LruWay[4] Indicates whether way[9](1) or way[8](0) is the LRU
LruWay[5] Indicates whether way[11](1) or way[10](0) is the LRU
LruWay[6] Indicates whether way[13](1) or way[12](0) is the LRU
LruWay[7] Indicates whether way[15](1) or way[14](0) is the LRU
Pair selects LruPair[0] Indicates whether the way[3:2](1) or way[1:0](0) pair is the LRU
LruPair[1] Indicates whether the way[7:6](1) or way[5:4](0) pair is the LRU
LruPair[2] Indicates whether the way[11:10](1) or way[9:8](0) pair is the LRU
LruPair[3] Indicates whether the way[15:14](1) or way[13:12](0) pair is the LRU
Quad selects LruQuad[0] Indicates whether the way[7:4](1) or way[3:0](0) quad is the LRU
LruQuad[1] Indicates whether the way[15:12](1) or way[11:8](0) quad is the LRU
Oct select LruOct Indicates whether the way[15:8](1) or way[7:0](0) oct is the LRU
도 2a 및 도 2b는 의사-LRU 재배치 메커니즘(pseudo-LRU replacement mechanism)를 보여준다. 도 2a 및 도 2b에 도시된 캐시(200)는 도 1에서 설명된 캐시(100)과 유사하다. 그러므로 자세한 설명은 생략한다. 도 2a는 캐시에 엔트리(entry)를 할당하기 전의 캐시(200)를 보여준다. 도 2a에서, LRU 엔트리(entry)는 LruOct 비트(210), LruQuad 비트(225), LruPair 비트(240), 및 LruWay 비트(275)에 의해 표시된 엔트리(entry) 5이다.
유효 웨이(way)가 재배치되거나 어떤 웨이(way)가 업데이트된 경우(즉, 캐시 히트(hit)인 경우), LRU는 트리에서 반대편 Way, Pair, Quad, 및 Oct 비트들을 향하도록 적절한 LRU 비트들을 조절하여 업데이트된다. 이것은 다음 재배치로서 다른 웨이(way)가 선택되는 것을 확실하게 해주며, 궁극적으로 계속적인 할당이 발생하면 16 웨이(way)들 모두 차례로 선택될 수 있도록 할 수 있다.
따라서, 도 2b는 캐시에서 엔트리(entry)의 할당이 수행된 이후의 캐시(200)를 보여준다. 도 2b에서, 이전에 도 2a에서 엔트리(entry) 5로 설정되었던 비트들은 반전되고, 이제 LRU 엔트리(entry)는 엔트리(entry) 8이다. 엔트리(entry) 8은 LruOct 비트(210), LruQuad 비트(220), LruPair 비트(235), 및 LruWay 비트(265)로 표시된다.
캐시가 분할되는 경우에, LRU 트리에서 LRU 비트 변형(즉, 반전)을 하도록 거리를 조절하여, 이상에서 설명된 의사-LRU 스킴(scheme)(pseudo-LRU scheme)은 변형될 수 있다. 그리고 의사-LRU 스킴(scheme)(pseudo-LRU scheme)은 캐시의 경계 분할에 기초하여 재배치 웨이(way)를 선택할 수 있다.
예를 들면, 캐시는 16 웨이(way)로 가정하고, 각각 4 웨이(way)들을 포함하는 4개의 사분면(quadrant)들로 분할될 수 있다. 의사-LRU 스킴(scheme)(pseudo-LRU scheme)은 쉽게 8개의 2웨이(way) 파티션(partition)들, 또는 16개의 1웨이(way) 파티션(partition)들로 확장될 수 있다.
리퀘스터(requestor) 소스(즉, CPU, GPU, 네트워킹 등), 어드레스, 요청 타입, 또는 리퀘스터(requestor)가 할당되도록 허락된 캐시의 사분면(quadrant)이나 사분면(quadrant)들을 결정하기 위한 임의의 다른 적절한 메커니즘에 기초하여 캐시 액세스를 위해 들어오는 요청은 디코딩될 수 있다.
본 발명에 따른 캐시 구조는 서로 다른 트래픽 소스들(즉, 리퀘스터(requestor)들) 사이에서 분할될 수 있다. 따라서, 본 발명에 따른 캐시 구조 실시 예들은 적절하게 캐시 분할을 지원하는 일반적인 캐시 재배치 방법들을 확장한다.
결과적으로, 본 발명에 따른 캐시 재배치 메커니즘들은 지원되는 분할 단위/옵션의 측면에서 유연하고, 요구되는 비트 수의 측면에서 공간 효율적이다. 반면에 본 발명에 따른 캐시 재배치 메커니즘들은 각 파티션(partition)에서 재배치 웨이(way)들에 대한 좋은 예측 특성을 제공한다.
본 발명에 기재된 스킴(scheme)들에서, 어느 하나의 파티션(partition)에서 어느 하나의 리퀘스터(requestor)에 의해 할당된 캐시 라인(cache line)들은 다른 파티션(partition)에 속한 다른 리퀘스터(requestor)로부터의 요청에 의해 맞을 수 있기 때문에(즉, 어드레스 매치(address match)), 요청들은 캐시 히트(hit) 또는 캐시 미스(miss)를 결정하기 위해 캐시 룩업(cache lookup)하는 동안 캐시의 모든 파티션(partition)들을 액세스한다. 그러나, 어느 하나의 리퀘스터(requestor) 또는 리퀘스터(requestor) 그룹으로부터의 할당들은 다른 리퀘스터(requestor) 또는 리퀘스터(requestor) 그룹에 의해 할당된 라인(line)들로 대체되지 않도록 구성되는 허여된 파티션(partition)들에 의해서, 캐시 할당을 일으키는 요청들은 캐시 파티션(partition)들의 집합에 제한될 수 있다.
각 새로운 할당은, 새로운 요청이 할당되도록 허락된 캐시의 파티션(partition)을 알려주는 ReqAlloc 할당 신호를 동반하여 캐시에 액세스한다. ReqAlloc 할당 신호의 비트들이 설정되지 않으면, 할당은 발생하지 않는다. 따라서, CPU는 전체 캐시를 액세스하도록 허락될 수 있다. 이와 같이, ReqAlloc 할당 신호의 모든 비트들은 설정될 수 있다. 반면에, 캐시에 제한된 액세스를 가지는 리퀘스터(requestor)들을 위해서는 ReqAlloc 할당 신호의 모든 비트들보다 더 적은 비트들이 설정될 수 있다.
실시 예에 따르면, ReqAlloc 할당 신호의 비트들은 16 웨이(way) 캐시를 위해 아래와 같이 정의된다. 비트 0은 0 웨이(way) 내지 3 웨이(way)로 할당될 수 있다. 비트 1은 4 웨이(way) 내지 7 웨이(way)로 할당될 수 있다. 비트 2는 8 웨이(way) 내지 11 웨이(way)로 할당될 수 있다. 비트 3은 12 웨이(way) 내지 15 웨이(way)로 할당될 수 있다. 위와 같이, 모든 ReqAlloc 할당 신호의 비트들을 설정하는 요청은 전체 캐시의 어느 엔트리(entry)로도 할당될 수 있다.
ReqAlloc 할당 신호의 할당 비트들의 집합을 설정하는 것은 캐시 할당을 제한한다. 또한, ReqAlloc 할당 신호의 할당 비트들의 집합을 설정하는 것은 다른 리퀘스터(requestor)들을 위해 다른 영역들로 캐시를 분할하거나 특정한 리퀘스터(requestor)들에 할당할 수 있는 캐시의 총량을 제한할 수 있다. 따라서, 캐시 오염(cache pollution)은 제한될 수 있다. ReqAlloc 할당 신호가 캐시 분할을 위해 사용된 경우, 별도의 ReqAllocWay 신호는 또한 캐시 오염(cache pollution)을 제한하기 위해 파티션(partition) 내의 할당을 제한하도록 선택적으로 더 사용될 수 있다. 이러한 스킴(scheme)은 캐시 파티션 옵션(cache partition option)들의 유연한 세트를 지원한다.
도 3은 의사-LRU 재배치 정책(pseudo-LRU replacement policy)이 적용된 분할된 캐시를 예시적으로 보여준다. 도 3에 도시된 캐시(300)은 도 1에서 설명된 캐시(100)와 유사하다. 그러나, 도 3의 캐시(300)는 도 1의 캐시(100)와 달리 동일한 4개의 파티션(partition)들로 분할된다.
도 3의 음영 표시에 따르면, 제 1 파티션(partition)은 캐시 엔트리(entry) 12 내지 캐시 엔트리(entry) 15를 포함한다. 캐시 엔트리(entry) 12 내지 캐시 엔트리(entry) 15는 LruPair[3] 비트(330), LruWay[7] 비트(350), 및 LruWay[6] 비트(355)로 표시될 수 있다. 제 2 파티션(partition)은 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11을 포함한다. 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11은 LruPair[2] 비트(335), LruWay[5] 비트(360), 및 LruWay[4] 비트(365)로 표시될 수 있다. 제 3 파티션(partition)은 캐시 엔트리(entry) 4 내지 캐시 엔트리(entry) 7을 포함한다. 캐시 엔트리(entry) 4 내지 캐시 엔트리(entry) 7은 LruPair[1] 비트(340), LruWay[3] 비트(370), 및 LruWay[2] 비트(375)로 표시될 수 있다. 제 4 파티션(partition)은 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3을 포함한다. 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3은 LruPair[0] 비트(345), LruWay[1] 비트(380), 및 LruWay[0] 비트(385)로 표시될 수 있다. 나머지 비트들, 즉, LruOct 비트(310) 및 LruQuad[0:1] 비트들은 파티션(partition)을 구별하기 위해서는 필요하지 않다.
캐시 파티션(partition)들로의 캐시 할당 요청들은 ReqAlloc 할당 신호에 의해 표시될 수 있다. 예를 들면, ‘0001’ 로 ReqAlloc 할당 신호를 설정한 할당 요청은 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3을 액세스하고, 파티션(partition) 내에서 비트들(345, 380, 385)을 업데이트하는 것에 의해 요청된 파티션(partition)에서 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3으로부터 오직 LRU 엔트리(entry)만 업데이트하는 요청일 수 있다. 유사하게, ‘0010’ 로 ReqAlloc 할당 신호를 설정한 할당 요청은 캐시 엔트리(entry) 4 내지 캐시 엔트리(entry) 7을 액세스하고, 파티션(partition) 내에서 비트들(340, 370, 375)을 업데이트하는 것에 의해 요청된 파티션(partition)에서 캐시 엔트리(entry) 4 내지 캐시 엔트리(entry) 7로부터 오직 LRU 엔트리(entry)만 업데이트하는 요청일 수 있다. ‘0100’ 로 ReqAlloc 할당 신호를 설정한 할당 요청은 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11을 액세스하고, 파티션(partition) 내에서 비트들(335, 360, 365)을 업데이트하는 것에 의해 요청된 파티션(partition)에서 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11로부터 오직 LRU 엔트리(entry)만 업데이트하는 요청일 수 있다. ‘1000’ 로 ReqAlloc 할당 신호를 설정한 할당 요청은 캐시 엔트리(entry) 12 내지 캐시 엔트리(entry) 15를 액세스하고, 파티션(partition) 내에서 비트들(330, 350, 355)을 업데이트하는 것에 의해 요청된 파티션(partition)에서 캐시 엔트리(entry) 12 내지 캐시 엔트리(entry) 15로부터 오직 LRU 엔트리(entry)만 업데이트하는 요청일 수 있다.
이상에서 설명한 바와 같이, LRU 비트들은 그 비트들의 반전에 의한 의사-LRU에 따라 업데이트될 수 있다. 그러나, 본 발명의 실시 예에 따르면, 모든 비트가 반전되는 것과 대비하여, 오직 업데이트된 파티션(partition) 내의 비트들만 반전된다.
또한, ReqAlloc 할당 신호는 하나 이상의 파티션(partition)들을 표시할 수 있다. 예를 들면, ‘1111’ 로 ReqAlloc 할당 신호를 설정한 할당 요청은 모든 캐시 엔트리(entry)들(즉, 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 15)을 액세스하고, 모든 캐시 엔트리(entry)들로부터 LRU 업데이트를 수행할 수 있다. ‘0101’ 로 ReqAlloc 할당 신호를 설정한 할당 요청은 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3, 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11을 액세스하고, 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3, 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11로부터 LRU 업데이트를 수행할 수 있다.
ReqAlloc 할당 신호와 캐시의 파티션(partition)들 사이의 대응관계는 단지 예시적인 것이다. 이러한 대응관계가 다르게 구현될 수 있음은 이 분야의 통상의 지식을 가진 사람에게 쉽게 이해될 것이다. 또한, ReqAlloc 할당 신호와 캐시의 파티션(partition)들 사이의 대응관계에서, 대응관계는 각각의 리퀘스터(requestor)에 대하여 설정된다. 리퀘스터(requestor)와 캐시 파티션(partition)들의 관계는 설정 파일 또는 설정 레지스터에 저장될 수 있다. 따라서, 리퀘스터(requestor)들은 캐시 파티션(partition)들에 지정될 수 있고, 특별히 지정된 캐시 파티션에 할당을 요청하기 위해 설정 파일 또는 설정 레지스터를 읽을 수 있다.
도 3에 도시된 바와 같이, 파티션(partition)들은 분리될 수 있다. 예를 들면, 4개의 파티션(partition)들 각각은 서로 다른 사분면(quadrant)으로 할당될 수 있다. 대신에, 파티션(partition)들은 서로 다른 크기를 가질 수 있다. 예를 들면, 3개의 분리된 파티션(partition)들은 캐시의 2개의 사분면(quadrant)들을 포함하는 하나의 파티션(partition) 및 각각 캐시의 하나의 사분면(quadrant)을 포함하는 다른 2개의 파티션(partition)들로 구성될 수 있다.
추가적으로, 파티션(partition)들은 중첩될 수 있다. 예를 들면, CPU는 4개의 파티션(partition)들 모두로 할당할 수 있다. 반면에 GPU는 CPU로 할당된 파티션(partition)들 중에서 2개의 파티션(partition)들로 할당할 수 있다. 또한, 네트워크 장치 및 비디오 인코딩 장치는 CPU로 할당된 파티션(partition)들 중에서 각각 하나의 파티션(partition)으로 할당할 수 있다. 하지만, 다른 입출력 장치들로부터 분리될 수 있다.
또한, 파티션(partition)들은 동일한 크기를 가질 수 있다. 도 3의 실시 예에 따르면, 캐시는 사분면(quadrant)들로 분할된다. 하지만, 캐시는 동일한 2개의 절반들, 8개의 파티션(partition)들, 또는 개별적인 16개의 웨이(way)들로 분할될 수 있다. 대신에, 이하의 설명과 같이, 캐시는 비 동일한 파티션(partition)들로 분할될 수 있다.
캐시의 분할에 관계없이, 리퀘스터(requestor)는 특정한 파티션(partition)에 지정될 수 있다. 하지만, 리퀘스터(requestor)는 또한 파티션(partition)의 부분에만 제한될 수 있다.
ReqAlloc 할당 신호의 집합을 사용하는 것은 의사-LRU 스킴(scheme)을 제한한다. 선택된 캐시 웨이(way) 사분면(quadrant) 또는 사분면(quadrant)들을 위한 LRU 비트들은 오직 유효한 라인(line)의 재배치에만 사용된다. 따라서, 캐시 재배치에 있어서, 오직 선택된 사분면(quadrant) 또는 사분면(quadrant)들에 대응하는 LRU 트리(tree)의 부분만 업데이트된다. 이것은 의사-LRU 스킴(scheme)으로 하여금 분할을 위해 요구되는 추가적인 캐시 어레이 비트들을 사용하지 않게 한다. LRU 재배치 업데이트들 및 LRU 비트들의 검사는 리퀘스터(requestor)가 액세스하는 파티션(partition) 사분면(quadrant)에 기초하여 제한된다. 리퀘스터(requestor)가 할당될 수 있는 파티션(partition)들에 기초하여 검사되거나 업데이트되는 LRU 트리에서, ReqAlloc 할당 신호의 비트들은 LRU 비트들을 결정하기 위한 마스크 역할을 한다. 그러므로, LRU 웨이(way) 선택(way select), 페어 선택(pair select), 쿼드 선택(quad select), 및 옥트 선택(oct select)은 대응하는 하나 이상의 ReqAlloc 할당 신호의 비트들이 설정되기 위한 사분면(quadrant)들만을 위해 업데이트되고 검사된다.
유효 웨이(way)들의 재배치와는 반대로, 모든 무효 웨이(way)들은 어느 ReqAlloc 할당 신호의 비트가 설정될 때까지 할당 가능 상태일 수 있다. 할당을 위한 무효 웨이(way)들의 재배치는 선택된 사분면(quadrant)으로 제한되지 않는다.
또한, ReqAllocWay 비트의 사용은 LRU 스킴(scheme)의 할당들을 제한한다. 만약 단일 웨이(way)로 제한되면, LRU 트리의 업데이트는 수행되지 않는다. 이것은 새롭게 할당된 라인(line)에 LRU를 남기도록 초래한다. 따라서, 다음에 그 라인(line)에서 재배치가 이루어지도록 한다. 만약 2개의 웨이(way)들로 제한되면, 대응하는 LruWay 비트는 업데이트된다. 하지만, 다른 LRU 비트들은 LRU 트리 상에서 변경되지 않는다. ReqAlloc 할당 신호의 비트들에 있어서, ReqAllocWay 비트의 사용은 무효 웨이(way)들을 재배치하지 않는다.
이상에서 사분면(quadrant)으로 분할된 16 웨이(way) 캐시가 예시적으로 설명되었다. 하지만, 파티션(partition) 방법은 다른 연관 관계들 또는 다른 단위의 캐시 디자인들을 커버하도록 확장될 수 있다.
도 4는 본 발명의 실시 예에 따른 의사-LRU 재배치 메커니즘을 위한 분할된 캐시를 보여주는 도면이다. 이상에서 설명된 바와 같이, 캐시는 서로 다른 크기들을 가질 수 있다. 도 4에 도시된 바와 같이, 캐시는 3개의 분리된 파티션(partition)들을 포함하도록 분할될 수 있다.
제 1 파티션(partition)은 캐시의 2개의 사분면(quadrant)들을 포함하고, 다른 두 파티션(partition)들은 각각 캐시의 하나의 사분면(quadrant)을 포함한다. 특히, 도 4에 도시된 음영 부분에 의하면, 제 1 파티션(partition)은 캐시 엔트리(entry) 12 내지 캐시 엔트리(entry) 15를 포함한다. 캐시 엔트리(entry) 12 내지 캐시 엔트리(entry) 15는 LruPair[3] 비트(430), LruWay[7] 비트(450), 및 LruWay[6] 비트(455)에 의해 표시될 수 있다. 제 2 파티션(partition)은 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11을 포함한다. 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11은 LruPair[2] 비트(435), LruWay[5] 비트(460), 및 LruWay[4] 비트(465)에 의해 표시될 수 있다. 제 3 파티션(partition)은 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 7을 포함한다. 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 7은 LruQuad[0] 비트(425), LruPair[1:0] 비트들(440, 445), 및 LruWay[3:0] 비트들(470-485)에 의해 표시될 수 있다. 나머지 비트들, 즉, LruOct 비트(410) 및 LruQuad[1] 비트(420)는 파티션(partition)들을 구별하기 위해 필요하지 않다.
캐시 파티션(partition)들로의 캐시 할당 요청들은 ReqAlloc 할당 신호에 의해 표시될 수 있다. 예를 들면, ReqAlloc 할당 신호를 ‘0011’로 설정한 할당 요청은 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 7을 액세스하고, 파티션(partition)에 포함된 비트들(425, 440, 445, 470-485)의 업데이트에 의해 요청된 파티션(partition)에서 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 7로부터 오직 LRU 엔트리(entry)만 업데이트하는 요청일 수 있다. 유사하게, ReqAlloc 할당 신호를 ‘0100’ 로 설정한 할당 요청은 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11을 액세스하고, 파티션(partition)에 포함된 비트들(435, 460, 465)의 업데이트에 의해 요청된 파티션(partition)에서 캐시 엔트리(entry) 8 내지 캐시 엔트리(entry) 11로부터 오직 LRU 엔트리(entry)만 업데이트하는 요청일 수 있다. ReqAlloc 할당 신호를 ‘1000’ 로 설정한 할당 요청은 캐시 엔트리(entry) 12 내지 캐시 엔트리(entry) 15를 액세스하고, 파티션(partition)에 포함된 비트들(430, 450, 455)의 업데이트에 의해 요청된 파티션(partition)에서 캐시 엔트리(entry) 12 내지 캐시 엔트리(entry) 15로부터 오직 LRU 엔트리(entry)만 업데이트하는 요청일 수 있다.
이상에서 설명된 바와 같이, LRU 비트들은 비트들의 반전에 의한 의사-LRU에 따라 업데이트될 수 있다. 그러나, 본 발명의 실시 예에 따르면, 오직 업데이트된 파티션(partition) 내의 비트들만 반전된다.
도 5는 본 발명의 다른 실시 예에 따른 의사-LRU 재배치 메커니즘을 위한 분할된 캐시를 보여주는 도면이다. 이상에서 설명된 바와 같이, 캐시 파티션(partition)들은 중첩될 수 있다. 도 5에 도시된 바에 따르면, 캐시는 2개의 중첩 파티션(partition)들을 포함하도록 분할될 수 있다.
제 1 파티션(partition)은 캐시의 모든 사분면(quadrant)들을 포함하고, 다른 파티션(partition)은 단지 캐시의 하나의 사분면(quadrant)만 포함한다. 특히, 도 5에 도시된 음영 부분에 의하면, 제 1 파티션(partition)은 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 15를 포함한다. 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 15는 LruOct 비트(510), LruQuad[0:1] 비트들(520, 525), LruPair[0:3] 비트들(530-545), 및 LruWay[0:7] 비트들(550-¬585)에 의해 표시될 수 있다. 제 2 파티션(partition)은 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3을 포함할 수 있다. 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3은 LruPair[0] 비트(545), LruWay[1] bit (580), 및 LruWay[0] bit (585)에 의해 표시될 수 있다.
캐시 파티션(partition)들로의 캐시 할당 요청들은 ReqAlloc 할당 신호에 의해 표시될 수 있다. 예를 들면, ReqAlloc 할당 신호를 ‘1111’로 설정한 할당 요청은 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 15를 액세스하고, 파티션(partition)(즉, 전체 캐시) 내의 비트들(즉, 전체 비트들)의 업데이트에 의해 요청된 파티션(partition)에서 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 15로부터 LRU 엔트리(entry)를 업데이트하는 요청일 수 있다. 유사하게, ReqAlloc 할당 신호를 ‘0001’로 설정한 할당 요청은 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3를 액세스하고, 파티션(partition)에 포함된 비트들(545, 580, 585)의 업데이트에 의해 요청된 파티션(partition)에서 캐시 엔트리(entry) 0 내지 캐시 엔트리(entry) 3으로부터 오직 LRU 엔트리(entry)만을 업데이트하는 요청일 수 있다.
이상에서 설명된 바와 같이, LRU 비트들은 비트들의 반전에 의해 의사-LRU에 따라 업데이트될 수 있다. 하지만, 본 발명의 실시 예에 따르면, 오직 업데이트된 파티션(partition)에 포함된 비트들만 반전된다.
도 6은 본 발명의 실시 예에 따른 의사-LRU 재배치 정책에 따른 분할된 캐시를 관리하는 방법을 보여주는 순서도이다. 도 6에 도시된 바와 같이, 610 단계에서, 캐시는 분할된다. 도 3 내지 도 5에 대하여 이상에서 설명된 바와 같이, 캐시는 다양한 방법으로 분할될 수 있다.
캐시 분할은 레지스터 또는 설정 파일에 저장된 비트 마스트(bit mask)의 설정을 통해 수행될 수 있다. 비트 마스크(bit mask)는 캐시의 파티션(partition)들 중에서 리퀘스터(requestor)가 캐시로 엔트리(entry)를 할당할 수 있는 파티션(partition)을 표시할 수 있다. 레지스터는 리퀘스터(requestor)와 연관될 수 있다. 또는 리퀘스터(requestor)들은 공유된 설정 파일을 액세스하고, 캐시 요청의 할당에 대한 비트 마스크(bit mask)를 결정하기 위해 레지스터 또는 설정 파일을 읽을 수 있다.
620 단계에서, 리퀘스터(requestor)는 캐시로의 할당을 초기화할 수 있다. 이상에서 설명된 바와 같이, 리퀘스터(requestor)는 캐시로 엔트리(entry)를 할당하기 위해 ReqAlloc 할당 신호의 할당 비트들을 사용할 수 있다. 630 단계에서, 메모리 컨트롤러 또는 캐시를 제어하기 위한, 그리고 그것의 동작들을 제어하기 위한 프로세싱 모듈(즉, CPU, 마이크로프로세서 등)을 포함하는 수단은 리퀘스터(requestor)로부터 요청을 받고 그 요청에 기초하여 LRU 엔트리(entry)로 표시된 엔트리(entry)를 찾을 수 있다. 예를 들면, 그 요청이 특정한 파티션(partition)을 표시하면, 메모리 관리자는 요청의 할당 비트들에 의해 표시되었기 때문에 특정한 파티션(partition) 내에서 LRU 엔트리(entry)를 찾을 수 있다.
630 단계에서, 캐시의 하나의 파티션(partition) 내에 LRU 엔트리(entry)가 존재한다고 결정되면, 그것은 리퀘스터(requestor)로 액세스 가능하지 않고, 그러면 다음 LRU 엔트리(entry)는 리퀘스터(requestor)로 액세스 가능한 캐시의 파티션(partition) 내의 엔트리(entry)들 중에서 결정될 수 있다. 이상에서 설명된 바와 같이, 이것은 리퀘스터(requestor)가 오직 캐시의 할당된 파티션(partition) 또는 파티션(partition)들로만 제한되기 때문이다. 그러나, CPU와 같은 다른 리퀘스터(requestor)는 또한 파티션(partition)에 액세스 할 수 있고, 다른 파티션(partition)에 엔트리(entry)로 LRU 엔트리(entry)를 설정할 수 있다.
640 단계에서, 캐시는 새로운 LRU 엔트리(entry)를 반영하여 업데이트될 수 있다. 이상에서 설명된 바와 같이, 엔트리(entry)는 의사-LRU 정책에 따라 업데이트될 수 있다. LRU 비트들은 반전된다. 그러나, 리퀘스터(requestor)에 지정된 파티션(partition) 내의 그러한 비트들만 반전될 수 있다. 따라서, 특정한 파티션(partition)으로 제한된 리퀘스터(requestor)는 캐시의 다른 파티션(partition)들에 액세스하는 다른 리퀘스터(requestor)의 캐시 엔트리(entry)들을 지배할 수 없다.
실시 예들의 기능들은 컴퓨터로 읽기 가능한 저장 매체에 컴퓨터로 읽기 가능한 코드들로 구현될 수 있다. 컴퓨터로 읽기 가능한 저장 매체는 컴퓨터로 읽기 가능한 데이터가 저장된 모든 타입의 저장 매체를 포함한다. 예를 들면, 컴퓨터로 읽기 가능한 저장 매체는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 및 광학 데이터 스토리지를 포함한다. 또한, 저장 매체는 인터넷 통신에서 사용되는 것과 같은 캐리어 웨이브(carrier wave)의 형태로 구현될 수 있다. 추가적으로, 컴퓨터로 읽기 가능한 저장 매체는 네트워크 상의 컴퓨터 시스템들로 분산될 수 있다. 여기에서 컴퓨터로 읽기 가능한 코드들은 분산적 방법으로 저장되고 실행될 수 있다.
본 발명의 따른 실시 예들은, 어떤 일들을 수행하는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)와 같이, 소프트웨어 또는 하드웨어 요소들을 결합하여 구현될 수 있음을 이 분야의 통상의 지식을 가진 자는 이해할 수 있을 것이다. 유닛 또는 모듈은 자체 주소를 가진 스토리지 매체에 유리하게 저장되고, 하나 이상의 프로세서들 또는 마이크로프로세서들에서 실행될 수 있다. 따라서, 유닛 또는 모듈은, 예를 들면, 소프트웨어 요소들, 객체 지향형의 소프트웨어 요소들, 클래스(class) 요소들 및 태스크(task) 요소들, 프로세스(process), 기능(function), 속성(attribute), 과정(procedure), 서브루틴(subroutine), 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로망, 데이터, 데이터베이스, 데이터 구조, 테이블, 어레이, 및 기타 등등과 같은 요소들을 포함할 수 있다. 이러한 요소들 및 유닛들에 제공되는 기능은 더 적은 요소들과 유닛들 또는 모듈들로 결합될 수 있다. 또는 이러한 요소들 및 유닛들에 제공되는 기능은 추가적인 요소들과 유닛들 또는 모듈들로 분화될 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100, 200, 300, 400, 500 : 캐시
110, 210, 310, 410, 510 : LruOct 비트
120, 220, 320, 420, 520 : LruQuad[1] 비트
125, 225, 325, 425, 525 : LruQuad[0] 비트
130, 230, 330, 430, 530 : LruPair[3] 비트
135, 235, 335, 435, 535 : LruPair[2] 비트
140, 240, 340, 440, 540 : LruPair[1] 비트
145, 245, 345, 445, 545 : LruPair[0] 비트
150, 250, 350, 450, 550 : LruWay[7] 비트
155, 255, 355, 455, 555 : LruWay[6] 비트
160, 260, 360, 460, 560 : LruWay[5] 비트
165, 265, 365, 465, 565 : LruWay[4] 비트
170, 270, 370, 470, 570 : LruWay[3] 비트
175, 275, 375, 475, 575 : LruWay[2] 비트
180, 280, 380, 480, 580 : LruWay[1] 비트
185, 285, 385, 485, 585 : LruWay[0] 비트

Claims (10)

  1. 복수의 파티션들로 분할된 캐시의 캐시 재배치 방법에 있어서:
    상기 복수의 파티션들 중 선택 파티션으로 제 1 캐시 엔트리를 할당하기 위해 리퀘스터로부터 요청을 수신하는 단계;
    상기 선택 파티션에서 캐시 엔트리들 중 가장 최근에 사용된(least recently used, 이하 LRU) 캐시 엔트리를 결정하는 단계;
    상기 선택 파티션에서 상기 제 1 캐시 엔트리를 할당하는 단계; 그리고
    상기 선택 파티션 내에서 다음 LRU 캐시 엔트리를 설정하는 단계를 포함하는 캐시 재배치 방법.
  2. 제 1 항에 있어서,
    상기 다음 LRU 캐시 엔트리를 설정하는 단계는 상기 선택 파티션 내에서 상기 분할된 캐시의 LRU 비트들을 반전시키는 단계를 포함하는 캐시 재배치 방법.
  3. 제 2 항에 있어서,
    상기 선택 파티션은 상기 복수의 파티션들 중에서 상기 선택 파티션을 표시하는 비트 마스크에 의해 설정되는 캐시 재배치 방법.
  4. 제 3 항에 있어서,
    상기 선택 파티션은 상기 복수의 파티션들 중 적어도 두 파티션들을 포함하고,
    상기 비트 마스크는 상기 적어도 두 파티션들을 표시하는 캐시 재배치 방법.
  5. 제 3 항에 있어서,
    상기 선택 파티션은 제 1 파티션을 포함하며, 상기 복수의 파티션들은 제 2 파티션을 포함하고,
    상기 제 1 파티션은 상기 2 파티션으로부터 분리되는 캐시 재배치 방법.
  6. 제 3 항에 있어서,
    상기 선택 파티션은 제 1 파티션을 포함하며, 상기 복수의 파티션들은 제 2 파티션을 포함하고,
    상기 제 1 파티션 내의 캐시 엔트리들은 상기 제 2 파티션의 캐시 엔트리들에 포함되는 캐시 재배치 방법.
  7. 제 3 항에 있어서,
    상기 선택 파티션은 제 1 파티션을 포함하며, 상기 복수의 파티션들은 제 2 파티션을 포함하고,
    상기 제 1 파티션의 크기는 상기 제 2 파티션의 크기와 서로 다른 캐시 재배치 방법.
  8. 복수의 파티션들로 분할된 캐시에서 캐시 재배치 방법을 수행하는 메모리 컨트롤러에 있어서:
    상기 복수의 파티션들 중 선택 파티션으로 제 1 캐시 엔트리를 할당하기 위해 리퀘스터로부터 요청을 수신하고, 상기 선택 파티션에서 캐시 엔트리들 중 가장 최근에 사용된(least recently used, 이하 LRU) 캐시 엔트리를 결정하고, 상기 선택 파티션에서 상기 제 1 캐시 엔트리를 할당하고, 그리고 상기 선택 파티션 내에서 다음 LRU 캐시 엔트리를 설정하는 프로세싱 모듈을 포함하는 메모리 컨트롤러.
  9. 제 8 항에 있어서,
    상기 프로세싱 모듈은 상기 선택 파티션 내의 LRU 비트들을 반전시키는 것에 의해 상기 다음 LRU 캐시 엔트리를 설정하는 메모리 컨트롤러.
  10. 제 9 항에 있어서,
    상기 선택 파티션은 상기 복수의 파티션들 중에서 상기 선택 파티션을 표시하는 비트 마스크에 의해 설정되는 메모리 컨트롤러.
KR1020150088931A 2015-01-07 2015-06-23 분할된 캐시의 캐시 재배치 방법 및 그것을 수행하는 메모리 컨트롤러 KR20160085194A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/591,322 2015-01-07
US14/591,322 US20150193355A1 (en) 2014-01-07 2015-01-07 Partitioned cache replacement algorithm

Publications (1)

Publication Number Publication Date
KR20160085194A true KR20160085194A (ko) 2016-07-15

Family

ID=56686582

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150088931A KR20160085194A (ko) 2015-01-07 2015-06-23 분할된 캐시의 캐시 재배치 방법 및 그것을 수행하는 메모리 컨트롤러

Country Status (1)

Country Link
KR (1) KR20160085194A (ko)

Similar Documents

Publication Publication Date Title
JP7116047B2 (ja) プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラおよび方法
US8095736B2 (en) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
KR100335300B1 (ko) 캐시 메모리, 멀티프로세서 시스템, 공유 캐시 메모리의 분할 방법 및, 기록 매체
US10169232B2 (en) Associative and atomic write-back caching system and method for storage subsystem
US20180373635A1 (en) Managing cache partitions based on cache usage information
US8464009B2 (en) Method for memory interleave support with a ceiling mask
US20150193355A1 (en) Partitioned cache replacement algorithm
US20130097387A1 (en) Memory-based apparatus and method
JP6263596B2 (ja) 分散キャッシュメモリにおける適応分割用のシステム及び方法
JP2001188707A (ja) 複数のlruを使用するキャッシュ
US10824555B2 (en) Method and system for flash-aware heap memory management wherein responsive to a page fault, mapping a physical page (of a logical segment) that was previously reserved in response to another page fault for another page in the first logical segment
GB2509755A (en) Partitioning a shared cache using masks associated with threads to avoiding thrashing
KR20120068454A (ko) 원격 페이지 폴트 처리 장치 및 그 방법
JP2006196011A (ja) 変化するサービスレベルを提供するためのキャッシュのセグメント化
US20140223072A1 (en) Tiered Caching Using Single Level Cell and Multi-Level Cell Flash Technology
US9984003B2 (en) Mapping processing method for a cache address in a processor to provide a color bit in a huge page technology
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
KR20230063334A (ko) 캐시 최대 연관성 값에 기초한 캐시 내의 경로들의 할당 제한
JP3989312B2 (ja) キャッシュメモリ装置およびメモリ割付方法
US10884948B2 (en) Replacing pointers with hashing in tree-based page table designs
US20110296115A1 (en) Assigning Memory to On-Chip Coherence Domains
KR20210144656A (ko) 비연접 백업 물리적 서브페이지에 가상 페이지를 할당하는 방법
KR20160085194A (ko) 분할된 캐시의 캐시 재배치 방법 및 그것을 수행하는 메모리 컨트롤러
JP5293611B2 (ja) メモリ再配置システム
Ghandeharizadeh et al. Cache replacement with memory allocation