KR102344008B1 - 데이터 스토어 및 데이터 스토어에 데이터를 할당하는 방법 - Google Patents
데이터 스토어 및 데이터 스토어에 데이터를 할당하는 방법 Download PDFInfo
- Publication number
- KR102344008B1 KR102344008B1 KR1020167002454A KR20167002454A KR102344008B1 KR 102344008 B1 KR102344008 B1 KR 102344008B1 KR 1020167002454 A KR1020167002454 A KR 1020167002454A KR 20167002454 A KR20167002454 A KR 20167002454A KR 102344008 B1 KR102344008 B1 KR 102344008B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- tag
- entry
- array
- entries
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
데이터 스토어는 데이터 값들을 저장하는 데이터 어레이와 어느 데이터 값들이 데이터 어레이에 저장되는지를 추적하기 위한 태그 값들을 저장하는 태그 어레이를 갖는다. 데이터 어레이의 연관성은 태그 어레이의 연관성보다 크다. 이것은 종래의 데이터 스토어에서보다 더 적은 태그 엔트리들이 각 데이터 액세스에 액세스될 필요가 있는 것을 의미하므로, 전력 소모가 감소된다.
Description
본 발명은 데이터 처리의 분야에 관한 것이다. 좀 더 구체적으로, 본 발명은 데이터를 저장하는 데이터 스토어와 데이터 스토어에 데이터를 할당하는 방법에 관한 것이다.
데이터 처리 장치는 예를 들면 캐쉬와 같은, 데이터를 저장하기 위한 데이터 스토어를 갖는다. 합리적으로는 특정 메모리 어드레스와 관련된 데이터 값이 단지 데이터 스토어 내부의 제한된 위치의 세트 내에 저장될 수 있다는 것을 의미하는, "세트 연관(set associative)" 방식으로 캐쉬와 같은 데이터 스토어가 구조화되는 것이 일반적이고, 그 위치의 세트는 데이터 값의 어드레스에 근거해서 선택된다. 어느 데이터 값들이 그 위치에 저장되는지를 추적하기 위해서, 각 데이터 저장 위치는 일반적으로 데이터 저장 위치 내에 저장된 데이터 값의 어드레스의 일부를 나타내는 태그 값을 저장하기 위한 그에 대응하는 태그 저장 위치를 갖는다. 타겟 어드레스에 의해 식별된 데이터 값에 대한 데이터 스토어를 찾을 때, 데이터 스토어는 데이터 값을 저장할 수 있는 데이터 위치의 세트에 대응하는 가능한 태그 위치들 모두를 찾고, 이들 태그 위치 중의 하나가 타겟 어드레스와 매칭하는 태그 값을 저장하면, 그 후에 데이터 값은 이 태그 위치로부터 액세스된다. 데이터 스토어 내의 데이터 엔트리들과 태그 스토어 내의 태그 엔트리들 간의 1:1 맵(map)핑이 있기 때문에, 일단 대응하는 태그가 발견되었으면 필요한 데이터 위치를 찾아내는 것이 쉽다.
그렇지만, 태그 위치들의 세트를 통해서 검색하는 것은 에너지가 든다. 본 기술은 종래의 데이터 스토어보다 더 에너지 효율적인 데이터 스토어를 제공하고자 한다.
일 국면에서 보면, 본 발명은 데이터를 저장하기 위한 데이터 스토어를 제공하고, 이 데이터 스토어는,
데이터 값들을 저장하는 복수의 데이터 엔트리들로 구성되는 데이터 어레이와,
어느 데이터 값들이 상기 데이터 어레이 내에 저장되는지를 추적하기 위한 태그 값들을 저장하는 복수의 태그 엔트리들로 구성되는 태그 어레이와,
상기 데이터 어레이에 데이터 값을 할당하는 것과 그에 대응하는 태그 값을 상기 태그 어레이에 할당하는 것을 제어하여,
(a) 상기 데이터 어레이의 N 데이터 엔트리들의 대응하는 데이터 세트의 선택된 데이터 엔트리에 상기 데이터 값을 할당하고, 여기서 N은 상기 데이터 어레이의 데이터 엔트리들의 총수보다 적은 정수이며, 상기 대응하는 데이터 세트는 상기 데이터 값의 어드레스에 근거해서 선택되며, 상기 데이터 값은 상기 대응하는 데이터 세트 내에 없는 데이터 엔트리에 할당될 수 없고,
(b) 상기 태그 어레이의 M 태그 엔트리들의 대응하는 태그 세트의 선택된 태그 엔트리에 상기 대응하는 태그 값을 할당하며, 여기서 M은 정수이며 M < N이고, 상기 대응하는 태그 세트는 상기 데이터 값의 상기 어드레스에 근거해서 선택되며, 상기 태그 값은 상기 대응하는 태그 세트 내에 없는 태그 엔트리에 할당될 수 없고,
(c) 상기 대응하는 데이터 세트의 어느 데이터 엔트리가 상기 선택된 데이터 엔트리인지를 식별하는 포인터를 상기 선택된 태그 엔트리에 저장하도록 구성되는 제어회로를 구비한다.
종래의 데이터 스토어에 있어서, 데이터 어레이의 연관성은 태그 어레이의 연관성과 같다. 이것은 어드레스에 근거해서 선택된 데이터 어드레스의 제한된 데이터 엔트리들의 세트 중의 하나에 할당될 수 있다. 각 데이터 엔트리는 태그 어레이 내의 그에 대응하는 태그 엔트리를 갖고, 그래서 데이터 값에 대응하는 태그 값은 제한된 태그 엔트리들의 세트 중의 하나에 저장될 수 있고, 여기서 태그 세트 내의 태그 엔트리들의 수는 데이터 세트 내의 데이터 엔트리들의 수와 같다. 데이터 어레이 내에 데이터 값을 위치시키기 위해서, 데이터 값의 타겟 어드레스에 대응하는 전체 태그 세트를 찾는 것이 필요하다. 그렇지만, 어떤 주어진 태그 액세스에 대해서는, 기껏해야 한 개의 태그 엔트리만이 타겟 어드레스와 매치하고, 세트 내의 다른 태그 엔트리들에의 액세스는 전력을 낭비하고 액세스 시간을 증가시킨다. 그러므로, 태그 연관성을 증가시키는 것은 전력 소모 및 액세스 레이턴시의 관점에서 비용이 많이 든다.
이 문제의 가능한 해결법은 데이터 어레이와 태그 어레이 양쪽의 연관성을 줄일 수도 있어, 각 태그 액세스에 대해서 더 적은 태그 위치들이 검색될 필요가 있다. 그렇지만, 데이터 어레이에 대해서는 일반적으로는 보다 큰 연관성이 성능상의 이유로 바람직한데, 그 이유는 이것에 의해서 신규 데이터 값을 저장할 수 있는 가능한 모든 위치들이 데이터 스토어에 데이터 값이 할당될 필요가 있을 때 이미 가득 차 있을 가능성이 감소하기 때문이다. 이 경우에, 오래된 데이터 값이 대응하는 데이터 엔트리들의 세트 중의 하나로부터 축출될 필요가 있을 것이고, 다음의 액세스 시에는 데이터 값이 추가 레벨 데이터 스토어 또는 메모리로부터 페치(fetch)되어 데이터 스토어에 재할당될 필요가 있을 것이다. 이것에 의해 액세스 레이턴시가 증가된다. 따라서, 양쪽 데이터 어레이와 태그 어레이의 연관성을 줄이면 처리 성능이 감소될 수도 있다.
이들 문제를 해결하기 위해서, 본 기술은 태그 어레이의 연관성이 데이터 어레이의 연관성보다 적은 데이터 어레이와 태그 어레이에 데이터 스토어를 제공한다. 즉, 데이터 값이 제어회로에 의해 데이터 스토어에 할당될 때, 데이터 값이 N 데이터 엔트리들의 대응하는 데이터 세트 중의 어느 것인가에 배치될 수 있고, 그 세트 내에 없는 데이터 엔트리에는 할당될 수 없다. 반면에, 대응하는 태그 값은 단지 태그 어레이의 M 태그 엔트리들의 대응하는 태그 세트 중의 하나에 배치될 수 있으며, 여기서 M은 N보다 적다. 더 이상 데이터 엔트리들과 태그 엔트리들 간의 1:1 맵핑이 없으므로, 포인터는 대응하는 데이터 세트의 어느 데이터 엔트리가 그에 대응하는 데이터 값을 저장하는지를 식별하는 태그 엔트리 내에 저장된다.
이 접근법은 태그 어레이가 데이터 어레이와 같은 논리적 배치를 갖는 것이 관례적이다. 그렇지만, 본 기술의 발명자는, 실제로 데이터 어레이보다 작은 연관성을 태그 어레이에 제공하는 것에 의해, 주어진 데이터 값에 대한 데이터 스토어를 찾을 때, 더 적은 태그 엔트리들이 그에 대응하는 태그 값을 저장할 수 있어 더 적은 태그 엔트리들이 검색될 필요가 있기 때문에 데이터 스토어의 전체 전력 소모를 감소시킬 수 있는 것을 실현했고, 이것은 대응하는 데이터 엔트리에 포인터를 저장하는 각 태그 엔트리와 관련된 어떤 추가 오버헤드를 더 많이 보상한다. 또한, 이 기술에 의해 데이터 어레이의 연관성이 여전히 유지되도록 허용하면서 전력을 절약할 수 있다.
데이터 어레이와 태그 어레이는 양쪽 데이터 값들과 그에 대응하는 태그 값들을 저장하는 공통 메모리 내부에 또는 분리된 메모리로서 구현될 수도 있다.
태그 세트당 태그 엔트리들의 수는 데이터 세트당 데이터 엔트리들의 수보다 작기 때문에, 데이터 세트들보다 더 큰 태그 세트들의 수가 제공될 수도 있어, 데이터 값들에 대응하는 충분한 태그 값들이 저장될 수도 있다. 예를 들면, 태그 어레이는 M 태그 엔트리들의 Y 태그 세트들을 구비할 수도 있고, 데이터 어레이는 N 데이터 엔트리들의 Z 데이터 세트들을 구비할 수도 있으며, 여기서 Y 및 Z는 정수이고, Y는 Z보다 크다. 예를 들면, 각 태그 세트는 각 데이터 세트보다 작은 범위의 어드레스에 대응할 수도 있어 태그 세트들의 전체 어드레스 범위는 데이터 세트들의 전체 어드레스 범위와 같다.
몇몇 예에 있어서는, 태그 엔트리들의 총수는 데이터 엔트리들의 총수보다 클 수도 있으므로, (Y×M)≥(Z×N)이다. 이것은 상이한 어드레스들에 대응하는 액세스들이 같은 태그 세트를 위해서 경쟁하고 있는 충돌을 줄이는 것을 돕는데 유용할 수 있다. 태그 엔트리들의 추가 태그 세트들을 제공함으로써, 충돌 수를 줄일 수 있고 그것에 의해 데이터 스토어 내의 히트 레이트(hit rate)를 향상시킬 수 있다. 데이터 세트들과 태그 세트들과 어드레스들의 맵핑을 좀 더 편리하게 하기 위해서, 데이터 엔트리들의 수와 태그 엔트리들의 수 간의 비율이 2 혹 4와 같이, 2의 제곱인 것이 유용할 수 있다.
데이터 어레이로부터 타겟 데이터 값을 액세스하기 위한 액세스 요구에 응답해서, 데이터 스토어의 제어회로는 M 태그 엔트리들의 대응하는 태그 세트의 각각으로부터 태그 값들을 판독하기 위한 제1 태그 검색을 수행할 수도 있다. 대응하는 태그 세트는 액세스 요구에 의해 지정된 타겟 어드레스에 근거해서 선택된다. 태그 세트가 데이터 세트보다 작기 때문에, 대응하는 데이터 세트의 사이즈에 대응하는 N 태그 엔트리들을 판독할 필요가 없어, 전력 소모가 감소된다. 타겟 어드레스에 대응하는 태그 세트로부터 판독된 태그 값들에 근거해서, 제어회로는 데이터 어레이가 타겟 데이터 값을 저장하는지 여부를 판정할 수 있다. 액세스 요구는 데이터 값을 데이터 스토어로부터 판독하는 판독 액세스 요구 또는 데이터 값을 데이터 스토어에 기록하는 기록 액세스 요구일 수도 있다.
태그 엔트리들의 판독 태그 세트 내의 판독 태그 값들 중의 하나가 태그 어드레스의 태그부에 대응하면, 그 후에 필요한 데이터 값을 저장하는 타겟 데이터 엔트리가, 적어도 대응하는 태그 값을 저장하는 태그 엔트리의 포인터와 타겟 어드레스의 일부를 이용해서 결정될 수 있다. 그 후에 타겟 데이터 값은 타겟 데이터 엔트리에서 액세스될 수 있다. 그러므로, 포인터는 데이터 어레이에 데이터 값을 위치시키는 것을 돕는다. 어느 태그 엔트리가 대응하는 태그 값을 저장하는지와 같은, 다른 파라미터들도 이용해서 타겟 데이터 엔트리를 결정하는 것이 가능하다.
타겟 데이터 값을 취득하기 위한 타겟 데이터 엔트리에의 액세스는, 제1 태그 검색을 수행해서 태그 값들을 판독하는 처리 사이클 다음에 오는 처리 사이클에서 발생할 수도 있다. 사이클에 대한 데이터 액세스를 지연시킴으로써, 태그 액세스가 미리 완료할 수 있어, 어느 데이터 엔트리가 필요한 데이터 값을 저장하는지가 이미 공지되어 있다. 이것은 대응하는 데이터 세트의 모든 데이터 엔트리들을 판독할 필요가 없어, 전력 소모가 감소될 수 있다는 것을 의미한다.
대응하는 태그 세트로부터의 판독 태그 값들 중의 어느 것도 타겟 어드레스의 태그부에 대응하지 않으면, 그 후에 제어회로는 대응하는 데이터 세트의 N 데이터 엔트리들 중의 하나에 신규 데이터 값을 할당할 수도 있고, 대응하는 태그 세트의 M 태그 엔트리들 중의 하나에 태그부를 할당할 수 있으며, 여기서 선택된 데이터 엔트리에 대한 포인터는 선택된 태그 엔트리에 저장되어 있다. 신규 데이터 값은 더 높은 레벨 캐쉬 또는 메모리와 같은 추가 데이터 스토어로부터 페치될 필요가 있다.
신규 데이터 값이 데이터 스토어에 할당될 때, 또 다른 데이터 값이 데이터 스토어로부터 축출되어야 한다. 축출되고 있는 데이터 값이 더티(dirty)이면, 그 후에는 추가 레벨 데이터 스토어에 라이트백(write back)될 필요가 있다. 만일 그렇다면, 그 후에는 그것의 어드레스가 태그 어레이 내의 대응하는 태그 값으로부터 결정될 수도 있다. 같은 데이터 세트 내의 데이터 값들에 대한 태그 값들을 저장할 수 있는 상이한 태그 세트들이 몇 개 있을 수도 있고, 그래서 축출된 데이터 값과 관련된 태그 엔트리가, 타겟 데이터 값이 데이터 스토어 내에 있었는지를 판정하기 위한 제1 태그 검색 시에 판독되었던 태그 세트와 상이한 태그 세트 내에 있는 것이 가능하다. 만약 그렇다면, 그 후에는 제2 태그 검색을 수행하여 추출되어야 할 데이터 값에 대응하는 태그 값을 판독할 수도 있다. 반면에, 축출되고 있는 데이터 값이 이미 검색되었던 태그 세트와 같은 태그 세트 내의 대응하는 태그 엔트리를 가졌다면, 그 후에는 제2 태그 검색이 생략될 수 있다. 제2 태그 검색은, 중요한 경로상에 있지 않기 때문에 처리 성능에 상당히 영향을 미치지 않는다(태그 미스 또는 히트가 있었는지의 여부와 히트에서 어느 웨이(way)가 필요한 데이터를 저장하는지는 이미 결정되었다).
데이터 값을 데이터 스토어에 할당할 때, 제어회로는 대응하는 데이터 세트의 N 이용가능한 데이터 엔트리들로부터 데이터 값을 저장하기 위한 데이터 엔트리를 선택하는 빅팀 선택(victim selection)을 수행할 수도 있다. 예를 들면, 빅팀 선택은 대응하는 데이터 세트 내에 저장된 데이터 값들이 클린 혹은 더티인지 여부를 고려할 수도 있고, 우선적으로는 메모리에 라이트백될 필요가 없는 클린 데이터 값을 함유하는 데이터 엔트리들을 선택할 수도 있다. 또한, 빅팀 선택은 데이터 세트의 대응하는 데이터 엔트리들 내부의 데이터 값들이 유효한지 여부를 나타내는 유효 정보를 고려할 수도 있다. 데이터 값이 무효하면, 그 후에 대응하는 데이터 엔트리가 우선적으로 빅팀 데이터 엔트리로서 선택될 수도 있다.
데이터 스토어가 빅팀 선택에 사용하기 위한 빅팀 선택 데이터를 저장하기 위한 빅팀 선택 데이터 어레이를 가질 수도 있다. 예를 들면, 빅팀 선택 데이터는 최소 최근 사용(least recently used: LRU) 또는 의사 최소 최근 사용(pseudo least recently used:pLRU) 빅팀 선택 알고리즘에 의해 사용하기 위해, 엔트리들의 대응하는 데이터 세트 중의 어느 것이 최소 최근 사용되었는지를 추정하기 위한 정보를 포함할 수도 있다. 예를 들면, 이 정보는 데이터 엔트리들이 최근에 액세스되었던 순서를 나타낼 수도 있다. 빅팀 선택 데이터의 다른 타입은 특정 데이터 엔트리들이 얼마나 자주 액세스되었는지의 표시와 이들 데이터 엔트리들 내의 데이터가 축출될 수 없다는 것을 나타내는, 특정 데이터 엔트리들이 잠겨 있는 것으로 간주되는지 여부의 표시를 포함할 수도 있다.
종래의 캐쉬에 있어서는, 빅팀 선택 데이터가 일반적으로 대응하는 태그 값들과 관련되어 있고, 대응하는 태그 세트 내의 모든 태그 엔트리들에 대한 빅팀 선택 데이터는 빅팀 엔트리를 결정할 때 체크된다. 그렇지만, 태그 세트들이 본 기술에서의 데이터 세트보다, 더 낮은 연관성을 가지고 있기 때문에, 한 개의 태그 세트에 대한 빅팀 선택 데이터만을 고려하면 선택에 이용할 수 있는 데이터 엔트리들의 수가 감소하여, 처리 성능을 해치는, 데이터 어레이의 연관성이 효율적으로 감소할 것이다. 대신에, 제어회로는 N 데이터 엔트리들의 전체 데이터 세트에 대응하는 빅팀 선택 엔트리들의 한 세트에 대한 빅팀 선택 데이터를 이용해서 빅팀 선택을 수행할 수도 있다.
빅팀 선택에 따르면, 제1 태그 엔트리와 이전에 관련되었던 데이터 엔트리가 지금 제2 태그 엔트리와 관련되는 것이 가능하다. 이것은 데이터 엔트리에 저장된 신규 데이터 값이 이전에 저장된 데이터 값과 상이한 태그 세트에 대응하면 발생할 수도 있다. 제1 태그 엔트리 내의 태그 값은 축출될 필요가 없고, 그 태그 값을 무효라고 간단히 표시하기에 충분할 수도 있다. 그러므로, 시간이 지남에 따라 태그 어레이가 무효한 몇 개의 태그 값들을 저장할 수도 있고 데이터 어레이 내의 유효 데이터 값들에 대응하지 않는다. 이것은 데이터 어레이가 데이터 엔트리들을 가지고 있는 것보다 더 많은 수의 태그 엔트리들을 태그 어레이가 가지고 있는 경우에 특히 가능하다. 제어회로에 의해 수행된 빅팀 선택 처리는, 이들 무효 태그 값들을 고려할 수도 있는데, 그 이유는 그들이 데이터 어레이로부터 축출되었던 데이터 값들의 일부 히스토리를 표시할 수 있기 때문이다. 무효 태그 값들을 이용해서 좀 더 개선된 데이터 스토어 할당 폴리시(allocation policy)를 구현할 수 있다.
몇몇 예에 있어서는, 빅팀 선택은 특정 데이터 엔트리를 선택할 수도 있고, 그 후에는 타겟 어드레스에 대응하는 태그 세트의 태그 엔트리들 중의 하나를 대응하는 태그 엔트리로서 선택할 수도 있다.
다른 경우에는, 빅팀 선택은 주어진 태그 엔트리를 가장 먼저 선택할 수도 있고, 그 후에는 대응하는 데이터 세트의 데이터 엔트리가 나중에 선택될 수도 있다. 이 접근법은 몇 가지 이유로 편리하다. 먼저, 이것은 선택된 태그 엔트리에 저장된 포인터를 이용해서 신규 데이터 값을 저장하기 위해서 선택될 대응하는 데이터 엔트리를 위치시킬 수 있다는 것을 의미한다. 두 번째로, 선택된 태그 엔트리에 저장된 태그 값을 이용해서 대응하는 데이터 엔트리에 이미 저장된 어떤 데이터 값의 어드레스를 식별할 수 있어, 그것은 더 높은 레벨 데이터 스토어에 데이터 값이 라이트백될 필요가 있는 경우에 유용하다.
몇몇 구현에서는, 각 태그 엔트리가 대응하는 데이터 세트의 데이터 엔트리들 중의 어느 것인가를 가리킬 수 있다. 이것은 대응하는 데이터 값들 및 태그 값들이 저장될 수 있는 위치들에 가장 큰 자유를 제공한다. 대응하는 태그 세트 내의 태그 엔트리가 특정 태그 값을 저장하는 것에 관계없이, 대응하는 데이터 값이 대응하는 데이터 세트의 데이터 엔트리들 중의 어느 것인가에 저장될 수 있다.
그렇지만, 실제로 대응하는 데이터 세트의 데이터 엔트리들의 서브세트를 가리키기 위해 각 태그 엔트리를 제한하는 것이 더 효율적일 수도 있다. 각 태그 엔트리는 대응하는 데이터 세트의 엔트리들의 주어진 서브세트에 대응할 수도 있다. 예를 들면, 데이터 엔트리들의 각 서브세트는 N/M 데이터 엔트리들로 구성될 수도 있다. 데이터 값이 데이터 세트의 데이터 엔트리들의 특정 서브세트에 저장되면, 그 후에는 대응하는 태그 값이 단지 그 서브세트에 대응하는 태그 엔트리에 위치될 수 있다. 이 접근법은 대응하는 데이터 엔트리에 대한 충돌이 없었을 때 특정 태그 엔트리에 대한 충돌을 때때로 일으킬 수도 있는 할당에 몇 개의 제한을 제공하고, 이 타입의 태그 충돌은 거의 발생하지 않을 것으로 예상된다. 주어진 태그 엔트리에 의해 지목될 수 있는 데이터 엔트리들의 수를 제한함으로써, 더 적은 비트를 갖는 포인터들이 태그 어레이에 사용될 수 있어, 전체 태그 엔트리를 통해서 상당한 양의 저장 용량을 절약할 수 있다. 태그 충돌이 때때로 발행하더라도, 데이터 스토어의 전체 전력 소모가 감소될 수 있다.
대응하는 데이터 세트 및 대응하는 태그 세트와 타겟 어드레스를 맵핑하기 위해서, 데이터 어레이와 태그 어레이 각각에 대해서 상이한 해쉬 함수(hash function)가 사용될 수도 있다. 제1 해쉬 함수는 대응하는 데이터 세트를 식별하기 위해서 어드레스의 제1 부분에 적용될 수 있고, 제2 해쉬 함수는 대응하는 태그 세트를 식별하기 위해서 어드레스의 제2 부분에 적용될 수 있다. 해쉬 함수는 어드레스 값을 변경하지 않는 직접 맵핑된 함수(direct-mapped functions)일 수도 있다(즉, 어드레스의 제1 및 제2 부분은 대응하는 데이터 세트 및 태그 세트에 직접 인덱스할 수도 있다). 그 대신, 배타적 혹은 (XOR) 함수와 같은 해쉬 함수를 이용해서 어드레스의 인덱스부를 데이터 세트 또는 태그 세트의 식별자로 변환할 수도 있다.
상이한 해쉬 함수에 대해 사용된 어드레스의 제1 및 제2 부분은 사이즈가 같거나 사이즈가 다를 수도 있다. 일반적으로, 데이터 세트들보다 더 많은 수의 태그 세트들이 있으면, 그 후에는 태그 세트를 식별하기 위해 사용된 제2 부분은 데이터 세트를 식별하기 위해 사용된 제1 부분보다 클 수도 있다. 이것은 태그 어레이 내의 태그 값으로서 저장된 나머지 태그부가, 태그 연관성이 데이터 연관성과 같은 종래의 데이터 스토어의 경우보다 작을 것이라는 것을 의미한다. 그러므로, 본 기술에 있어서는, 대응하는 데이터 어레이의 포인터를 나타내는 추가 비트들을 보상하는, 태그 값 자체가 종래의 데이터 스토어에서보다 더 적은 비트를 가지고 있어, 각 태그 엔트리 내의 비트의 총수는 거의 종래의 데이터 스토어에서와 동일할 수도 있다.
더 이상 태그 엔트리들과 데이터 엔트리들 간의 고정된 관계가 없기 때문에, 별개의 유효 데이터 어레이들은 어느 엔트리들이 유효 데이터를 저장하는지를 추적하기 위해서 데이터 엔트리들과 태그 엔트리들 각각에 대해서 유지될 수도 있다.
또 다른 국면에서 보면, 본 발명은 데이터를 저장하기 위한 데이터 스토어를 제공하고, 이 데이터 스토어는,
데이터 값들을 저장하는 복수의 데이터 엔트리 수단을 구비하는, 데이터를 저장하기 위한 데이터 어레이 수단과,
상기 데이터 어레이 수단에 어느 데이터 값들이 저장되는지를 추적하기 위한 태그 값들을 저장하는 복수의 태그 엔트리 수단을 구비하는, 태그들을 저장하기 위한 태그 어레이 수단과,
데이터 값을 상기 데이터 어레이 수단에 할당하고 그에 대응하는 태그 값을 상기 태그 어레이 수단에 할당하는 것을 제어하여,
(a) 상기 데이터 어레이의 N 데이터 엔트리 수단의 대응하는 데이터 세트의 선택된 데이터 엔트리 수단에 상기 데이터 값을 할당하고, 여기서 N은 상기 데이터 어레이 수단의 데이터 엔트리 수단의 총수보다 적은 정수이며, 상기 대응하는 데이터 세트는 상기 데이터 값의 어드레스에 근거해서 선택되며, 상기 데이터 값은 상기 대응하는 데이터 세트 내에 없는 데이터 엔트리에 할당될 수 없고,
(b) 상기 태그 어레이 수단의 M 태그 엔트리들 수단의 대응하는 태그 세트의 선택된 태그 엔트리 수단에 상기 대응하는 태그 값을 할당하고, 여기서 M은 정수이며 M < N이고, 상기 대응하는 태그 세트는 상기 데이터 값의 상기 어드레스에 근거해서 선택되며, 상기 태그 값은 상기 대응하는 태그 세트 내에 없는 태그 엔트리 수단에 할당될 수 없고,
(c) 상기 대응하는 데이터 세트의 어느 데이터 엔트리 수단이 상기 선택된 데이터 엔트리인지를 식별하는 포인터를 상기 선택된 태그 엔트리에 저장하는 제어수단을 구비한다.
추가 국면에서 보면, 본 발명은 데이터 값들을 저장하는 복수의 데이터 엔트리들로 구성되는 데이터 어레이와, 어느 데이터 값들이 데이터 어레이에 저장되는지를 추적하기 위한 태그 값들을 저장하는 복수의 태그 엔트리들로 구성되는 태그 어레이를 구비하는 데이터 스토어에 데이터 값을 할당하는 방법을 제공하고, 이 방법은,
상기 데이터 어레이의 N 데이터 엔트리들의 대응하는 데이터 세트의 선택된 데이터 엔트리에 상기 데이터 값을 할당하고, 여기서 N은 상기 데이터 어레이의 데이터 엔트리들의 총수보다 적은 정수이며, 상기 대응하는 데이터 세트는 상기 데이터 값의 어드레스에 근거해서 선택되며, 상기 데이터 값은 상기 대응하는 데이터 세트 내에 없는 데이터 엔트리에 할당될 수 없고,
상기 태그 어레이의 M 태그 엔트리들의 대응하는 태그 세트의 선택된 태그 엔트리에 상기 대응하는 태그 값을 할당하고, 여기서 M은 정수이며 M < N이고, 상기 대응하는 태그 세트는 상기 데이터 값의 상기 어드레스에 근거해서 선택되며, 상기 태그 값은 상기 대응하는 태그 세트 내에 없는 태그 엔트리에 할당될 수 없고,
상기 대응하는 데이터 세트의 어느 데이터 엔트리가 상기 선택된 데이터 엔트리인지를 식별하는 포인터를 상기 선택된 태그 엔트리에 저장하는 것을 포함한다.
본 발명의 상기, 및 다른 목적, 특징, 및 이점은 첨부도면과 관련되어 판독되는 예시적인 실시예의 이하의 상세한 설명으로부터 분명해질 것이다.
도 1은 종래의 데이터 스토어 내의 데이터 엔트리와 태그 엔트리의 논리적 배치의 일례를 나타낸다.
도 2는 데이터 어레이가 태그 어레이보다 더 큰 연관성을 갖는 데이터 스토어의 논리적 배치의 일례를 나타낸다.
도 3은 본 기술에 따른 데이터 스토어의 일례를 나타낸다.
도 4는 도 3의 데이터 스토어 내의 데이터에 액세스하는 방법을 나타낸다.
도 5a 및 5b는 데이터 스토어에 데이터 값을 할당하는 방법을 나타낸다.
도 6a 내지 6c는 연속적인 데이터 값들이 데이터 스토어에 할당되는 것처럼 데이터 엔트리, 태그 엔트리, 및 빅팀 선택 데이터 엔트리 내에 저장된 정보의 일례를 나타낸다.
도 7은 각 태그 엔트리가 대응하는 데이터 세트의 데이터 엔트리의 서브세트와 관련되어 있는 예시적인 구현을 나타낸다.
도 8은 연관성이 같은 데이터 어레이와 태그 어레이를 갖는 종래의 데이터 스토어의 성능과 연관성이 다른 데이터 어레이와 태그 어레이를 갖는 데이터 스토어의 성능을 비교하는 그래프이다.
도 9는 본 기술의 데이터 스토어에 의해 달성된 추정된 에너지 감소를 나타내는 테이블이다.
도 2는 데이터 어레이가 태그 어레이보다 더 큰 연관성을 갖는 데이터 스토어의 논리적 배치의 일례를 나타낸다.
도 3은 본 기술에 따른 데이터 스토어의 일례를 나타낸다.
도 4는 도 3의 데이터 스토어 내의 데이터에 액세스하는 방법을 나타낸다.
도 5a 및 5b는 데이터 스토어에 데이터 값을 할당하는 방법을 나타낸다.
도 6a 내지 6c는 연속적인 데이터 값들이 데이터 스토어에 할당되는 것처럼 데이터 엔트리, 태그 엔트리, 및 빅팀 선택 데이터 엔트리 내에 저장된 정보의 일례를 나타낸다.
도 7은 각 태그 엔트리가 대응하는 데이터 세트의 데이터 엔트리의 서브세트와 관련되어 있는 예시적인 구현을 나타낸다.
도 8은 연관성이 같은 데이터 어레이와 태그 어레이를 갖는 종래의 데이터 스토어의 성능과 연관성이 다른 데이터 어레이와 태그 어레이를 갖는 데이터 스토어의 성능을 비교하는 그래프이다.
도 9는 본 기술의 데이터 스토어에 의해 달성된 추정된 에너지 감소를 나타내는 테이블이다.
도 1은 데이터 값들을 저장하는 다수의 엔트리(4)로 이루어진 종래의 데이터 어레이(2)의 논리적 배치의 일례를 나타낸다. 엔트리(4)는 웨이(way)(6)와 세트(set)(8)로 논리적으로 배열되고, 각 세트(8)는 웨이(6)의 각각으로부터의 엔트리(4)를 포함한다. 웨이(6)의 개수(혹은 각 세트(8) 내의 엔트리(4)의 개수)는 데이터 어레이의 "연관성(associativity)"이라고 칭한다. 도 1은 단지 엔트리(4)의 논리적 배치를 나타낸 것이며, 엔트리(4)의 물리적 배치가 서로 다를 수도 있다는 것을 알 수 있을 것이다. 예를 들면, 같은 세트(8) 혹은 같은 웨이(4)의 "이웃하는" 엔트리들은 실제로 메모리 디바이스 내의 분리된 물리적 위치에 배열될 수도 있다.
데이터 어레이(2)에 저장되어야 하는 각 데이터 값은 인덱스부(9)와 태그부(10)로 형성되는 대응하는 어드레스를 갖는다. 데이터 값은 데이터 값의 어드레스의 인덱스부(9)에 근거해서 결정된 대응하는 세트(8)의 엔트리(4)들의 어느 것인가에 저장될 수 있고, 다른 세트들의 엔트리(4) 내에는 저장될 수 없다. 데이터 값을 저장할 수 있는 엔트리(4)가 몇 개 있기 때문에, 어드레스의 태그부(10)는 데이터 값(12)에 따라 선택된 어드레스(4)에 저장되므로 다음의 액세스는 어느 엔트리가 데이터 값(12)을 저장하는지를 판정할 수 있다. 각 엔트리(4)는, 또한 데이터 어레이(2) 내에 저장된 데이터가 유효한지 아닌지를 나타내는 유효 비트, 혹은 더 높은 레벨 캐쉬(예를 들면, L2 혹은 L3 캐쉬) 혹은 메모리와 같은 더 높은 레벨 데이터 스토어 내의 대응하는 데이터 값과 비교해서 데이터 값(12)이 변경되었는지를 나타내는 더티 비트와 같은 데이터 값들(12)과 관련된 상태 정보를 저장할 수도 있다.
도 1은 데이터 어레이(2)의 같은 엔트리(4) 내에 저장되어 있는 태그 값(10)과 그에 대응하는 데이터 값(12)을 나타낸다. 일부 데이터 어레이에 있어서는, 한 개의 메모리 디바이스는 태그 값들(10)과 데이터 값들(12)을 모두 저장한다. 다른 예에 있어서는, 분리된 데이터 메모리와 태그 메모리는, 데이터 값들(12)과 태그 값들(10)을 각각 저장하기 위해서 제공될 수도 있다.
종래의 데이터 스토어에 있어서는, 데이터 값들(12)을 저장하기 위한 데이터 엔트리들과 태그 값들(10)을 저장하기 위한 태그 엔트리들 간의 1:1 관계가 있다. 각 데이터 엔트리는 그에 대응하는 태그 엔트리를 갖는다. 데이터 값은 데이터 스토어(2)로부터 액세스될 필요가 있을 때, 대응하는 세트(8)의 모든 태그(10)가 판독되고, 이들 태그(10) 중의 하나가 타겟 어드레스의 태그부와 매치하면, 그에 대응하는 데이터 값이 돌아오게 된다. 그렇지만, 한 개의 태그만이 타겟 어드레스의 태그부와 매치 가능함에 따라, 다른 태그 판독이 불필요하게 되었고, 이들은 그저 전력을 낭비하고 액세스 시간을 증가시킨다. 세트(8) 내의 엔트리의 수가 클수록, 낭비된 태그 판독의 수가 커지고 그래서 전력 소모가 커진다. 판독되어야 하는 태그의 수를 감소시키기 위해서 데이터 스토어(2)의 연관성을 줄이는 것이 가능하고, 주어진 연관성의 양은 데이터 엔트리들이 히트 레이트(hit rates) 및 처리 성능을 유지하는 것이 바람직하다. 따라서, 보통 데이터 스토어(2)의 연관성을 줄이는 것은 바람직하지 않다.
도 2에 도시한 바와 같이, 본 기술은 대응하는 데이터 어레이(40)보다 더 낮은 연관성을 갖는 태그 어레이(30)를 갖는 데이터 스토어(20)를 제공함으로써 이 이슈를 해결한다. 데이터 어레이(40)는 데이터 값들을 저장하기 위한 다수의 데이터 엔트리(42)를 포함한다. 데이터 엔트리(42)는 논리적으로 데이터 세트(44)로 배열되어 있고, 각 세트는 각 웨이(46)로부터 한 개의 엔트리로 구성된다. 데이터 어레이(40)의 연관성은 W이며, 이것은 데이터 세트(44)마다 W 웨이(46), 혹은 W 엔트리(42)가 있다는 것을 의미한다. 이 예에 있어서는, W는 4와 같다. 타겟 어드레스를 갖는 데이터 값은 타겟 어드레스의 인덱스부(49)에 근거해서 선택되는, 대응하는 데이터 세트(44)의 W 엔트리(42)의 어느 것인가에 저장될 수 있다.
태그 어레이(30)는 데이터 어레이(40) 내의 데이터 값들에 대응하는 태그 값들을 저장하기 위한 다수의 태그 엔트리(32)를 갖는다. 태그 엔트리(32)는 w 엔트리들로 각각 구성되는 태그 세트(34) 내에 배열되고, 여기서 w는 연관성 태그 어레이(30)이다. 태그 어레이(30)의 연관성은 데이터 어레이(40)의 연관성보다 적다. 이 예에 있어서는, 태그 어레이(30)의 연관성이 2이다. 그러므로, 데이터 값이 대응하는 데이터 세트(44) 내부의 W 위치들 중의 어느 것인가 내에 위치될 수 있고, 대응하는 태그 값은, 대응하는 태그 세트(34)의 w 태그 엔트리(32)들 중의 하나에만 위치될 수 있다. 다시, 태그 세트(34)를 식별하는 데에 사용된 인덱스부(39)가 데이터 세트(49)를 식별하는 데에 사용된 인덱스부(49)와 다른 어드레스의 부분일 수도 있지만, 태그 세트(34)가 타겟 어드레스의 인덱스부(39)에 근거해서 식별된다.
데이터 세트마다 있는 데이터 엔트리들보다 태그 세트마다 있는 태그 엔트리들이 더 적기 때문에, 더 적은 태그가 각 데이터 액세스에서 검색될 필요가 있다. 이것은 더 적은 전력이 소모되는 것을 의미한다. 그럼에도 불구하고, 데이터 어레이의 연관성은 더 높은 히트 레이트를 달성하기 위해서 유지된다. 따라서, 데이터 어레이(40)와 태그 어레이(30)의 비대칭 배치가 성능에 상당히 영향을 미치지 않고 전력 효율을 향상시킨다(비대칭 데이터 스토어(20)의 성능 및 전력 소모와 도 1에 도시한 바와 같은 종래의 대칭 데이터 스토어의 성능 및 전력 소모를 비교하기 위해서 아래의 도 8 및 도 9를 참조).
현재 태그 엔트리(32)와 데이터 엔트리(42) 간의 1:다수 관계가 있기 때문에, 각 태그 엔트리(32)는 대응하는 데이터 세트(44)의 데이터 엔트리(42) 중의 어느 것이 대응하는 데이터 값을 저장하는지를 나타내는 포인터(37)를 갖는다. 데이터 스토어에 액세스할 때, 타겟 어드레스에 대한 매칭 태그 값을 가지고 있는 태그 엔트리(32)로부터의 포인터(37)를 이용해서, 대응하는 데이터 값을 저장하는 데이터 엔트리(42)의 위치를 찾아낸다.
태그 값들에 대하여 충분한 공간을 제공하기 위해서, 태그 어레이(30)는 데이터 어레이(40)가 데이터 세트(44)를 갖는 것보다 더 많은 태그 세트(34)를 갖는다. 바람직하게는, 태그 엔트리(32)의 총수는 데이터 엔트리(42)의 총수, 예를 들면, 2, 4 혹은 8배 많은 엔트리들(혹은 2비율의 일부 다른 전력)보다 크다. 더 많은 수의 태그 엔트리(32)를 제공하는 것은 태그 엔트리들에 대한 경쟁을 줄이는 데에 유용한다. 데이터 엔트리(42)보다 더 많은 태그 엔트리(32)가 있기 때문에, 어느 한 시점에서는, 태그 엔트리들 중의 일부가 데이터 스토어(40) 내의 유효 데이터 값에 대응하지 않는 무효 태그 값(38)을 저장할 수도 있다. 무효 태그 엔트리(38)는 도 2에서는 Z로 표시되어 있다. 무효 태그 엔트리(38) 내의 정보는, 그것이 지난 태그 액세스의 부분적인 히스토리를 나타냄으로써 빅팀(victim) 선택을 수행할 때 사용될 수 있다.
도 3은 데이터 스토어(20)를 좀 더 상세히 예시한 예를 나타낸다. 도 2에서와 같이, 데이터 스토어(20)는 데이터 어레이(40)와 태그 어레이(30)를 갖고, 데이터 어레이(40)의 연관성은 태그 어레이(30)의 연관성보다 크다. 이 예에 있어서는, 데이터 세트(44)가 각각 N 데이터 엔트리들을 구비하고, 태그 세트(34)가 각각 M 태그 엔트리들을 구비하며, 여기서 N은 M보다 크다. 타겟 어드레스는 인덱스부(50)와 태그부(52)를 갖는다. 인덱스부(50)는 데이터 해쉬 함수(54)에 예속되어 타겟 어드레스에 대응하는 데이터 세트(44)를 식별하기 위한 데이터 인덱스를 취득한다. 인덱스부(50)는 또한 태그 해쉬 함수(56)에 예속되어 타겟 어드레스에 대한 대응하는 태그 세트(34)를 식별하기 위한 태그 인덱스를 발생한다. 데이터 해쉬 함수와 태그 해쉬 함수(54, 56)는 서로 다른 함수일 수도 있고, 또는 같은 함수일 수도 있다. 몇몇 예에 있어서는, 해쉬 함수(54, 56)는 단지 데이터 혹은 태그 세트(44, 34)의 인덱스에 직접 인덱스부(50)를 맵핑할 수도 있고, 다른 경우에는, 해쉬 함수(54, 56)는 예를 들면, 소정의 상수를 갖는 XOR 함수를 이용해서, 인덱스부를 상이한 숫자 값으로 변환할 수도 있다. 태그 해쉬 함수(56)가 데이터 해쉬 함수(54)보다 더 많은 타겟 어드레스의 비트의 수를 이용함으로써, 주어진 태그 세트(34)에 대응하는 어드레스의 범위가 데이터 세트(44)에 대응하는 어드레스의 범위보다 작다.
데이터 스토어(20)는 또한 데이터 어레이(40)와 태그 어레이(30)에의 액세스를 제어하기 위한 액세스 제어회로(60)를 갖는다. 액세스 제어 회로(60)는 엔트리 42, 32 중의 어느 것에 데이터 값들과 태그 값들이 할당되는지를 선택하기 위한 빅팀 선택 폴리시(victim selection policy)(62)를 갖는다. 데이터 스토어(20)는 또한 액세스가 수행되고 있는 동안 임시 값들을 저장하기 위한, 메모리 또는 레지스터들의 뱅크와 같은, 임시 데이터 스토어(70)를 갖는다. 나중에 다시 데이터 스토어(20)로부터 데이터를 판독할 필요성을 피하기 위해서 임시 데이터 스토어(70) 내에 임시로 데이터가 저장될 수 있다.
데이터 스토어(20)는 데이터 엔트리(42)와 태그 엔트리(32) 중의 어느 것이 신규로 할당된 데이터 및 태그 값들을 저장해야 하는지를 판정하기 위한 빅팀 선택 폴리시(62)에 의해 사용된 빅팀 선택 데이터를 저장하기 위한 빅팀 선택 어레이(72)를 갖는다. 이 예에 있어서는, 빅팀 선택 어레이는 태그 스테이터스 정보 어레이(tag status information array)(80)와 데이터 스테이터스 정보 어레이(90)를 구비한다. 태그 스테이터스 정보 어레이(80)는 태그 어레이(30)의 태그 엔트리(32) 중의 하나에 각각 대응하는 다수의 태그 스테이터스 엔트리들을 포함하고, 데이터 스테이터스 정보 어레이(90)는 데이터 어레이(40) 내의 데이터 엔트리(42) 중의 하나에 각각 대응하는 몇 개의 데이터 스테이터스 엔트리들을 포함한다.
도 3의 하부 부분은 다양한 어레이 30, 40, 80, 90의 엔트리들 내에 저장된 정보의 일례를 나타낸다. 데이터 어레이(40) 내의 데이터 엔트리(42)는 데이터 값을 저장한다. 태그 어레이(30) 내의 대응하는 태그 엔트리(32)는, 대응하는 데이터 값의 어드레스의 태그부(52)를 나타내는 태그 값(33)을 저장한다. 태그 엔트리는 또한 데이터 값을 저장하는 대응하는 데이터 엔트리(42)를 식별하는 포인터(37)를 포함한다.
태그 스테이터스 정보 엔트리(110)는 적어도 대략, 다양한 태그 엔트리들이 액세스되었던 순서(order)를 나타내는 오더링(ordering) 정보(112)를 포함한다. 이 오더링 정보(112)는 최소 최근 사용(least recently used) 혹은 의사 최소 최근 사용과 같은, 다양한 빅팀 선택 폴리시(62)를 구현하는 데에 유용한다. 태그 스테이터스 엔트리(110)는 또한 데이터 엔트리(40) 내의 대응하는 데이터 값이 클린(clean) 혹은 더티(dirty)인지 아닌지를 나타내기 위한 더티 비트(114)를 포함한다. 더 높은 레벨 데이터 스토어 내의 데이터 값과 비교해서 데이터 값이 변경되지 않았다면 데이터 값이 클린이고, 데이터 값이 변경되었다면 데이터 값이 더티이다. 태그 스테이터스 정보 엔트리(110)는 또한 대응하는 태그 엔트리(32)가 유효한지 아닌지를 나타내는 태그 유효 비트를 포함한다. 태그 엔트리(32)가 데이터 어레이(40) 내의 유효 데이터 값에 대응하면, 태그 엔트리(32)가 유효하다.
데이터 스테이터스 정보 엔트리(120)는 대응하는 데이터 엔트리(42) 내의 데이터 값이 유효한지 여부를 나타내는 데이터 유효 비트(122)를 포함한다. 도 3은 태그 및 데이터 스테이터스 정보 어레이(80, 90) 내의 빅팀 선택 데이터의 특정 배치를 나타내고, 그것은 또한 다르게 배열될 수 있다. 예를 들면, 더티 비트(114) 혹은 오더링 정보(112)는 태그 스테이터스 정보 엔트리(112) 대신에 데이터 스테이터스 정보 엔트리(120) 내에 있을 수 있다. 또한, 도 3은 분리된 태그 스테이터스 정보 및 데이터 스테이터스 정보 어레이(80, 90)를 나타내지만, 몇몇 실시예에 있어서는, 이들은 단 한 개의 어레이로 결합될 수 있다. 또한, 몇몇 실시예에 있어서는, 태그 스테이터스 정보 어레이(80)는 태그 어레이(30)와 결합될 수 있고, 데이터 스테이터스 정보 어레이(90)는 데이터 어레이(40)와 결합될 수 있다. 따라서, 빅팀 선택 데이터가 배열될 수 있는 방법이 많이 있다.
태그 스테이터스 정보 엔트리들과 데이터 스테이터스 정보 엔트리들(110, 120)은 액세스 제어 회로(60)에 의해 수행된 빅팀 선택 폴리시(62)를 위해 사용된다. 태그 어레이(30)의 연관성은 데이터 어레이(40)의 연관성보다 적지만, 액세스 제어 회로(60)는, 전체 데이터 세트(44)에 대응하는 다수의 엔트리에 대한 태그 스테이터스 정보 및 데이터 스테이터스 정보를 이용하여 빅팀 선택을 수행한다. 대응하는 데이터 세트(44)의 데이터 엔트리(42)를 가리킬 수 있는 모든 태그 엔트리(32)의 태그 스테이터스 정보 엔트리(110)는 빅팀 선택 시에 고려된다. 이것은 감소된 태그 연관성이 데이터 세트(44)의 어떤 위치에 데이터를 할당하는 능력에 영향을 미치지 않고, 데이터 세트의 연관성을 유지함으로써 히트 레이트(hit rates)를 유지하는 것을 보장한다.
도 4는 도 3의 데이터 스토어 내의 데이터 액세스를 처리하는 방법을 나타낸다. 스텝 150에서는, 데이터 스토어(20)에 판독 혹은 기록될 데이터 값의 타겟 어드레스를 명시하는 판독 또는 기록 액세스가 수신된다. 스텝 152에서는, 액세스 제어 회로(60)가 타겟 어드레스의 인덱스부(50)에 태그 해쉬 함수(56)를 적용함으로써 태그 인덱스를 취득한다. 스텝 154에서는, 액세스 제어 회로(60)는 태그 인덱스에 의해 식별된 태그 세트(34)로부터 M 태그 값들 및 포인터들을 검색하고, 이들 태그 및 포인터를 임시 데이터 스토어(70) 내에 저장한다. 스텝 156에서는, 액세스 제어 회로(60)는 태그 히트(tag hit)가 있었는지 여부(즉, 판독 태그들 중의 어느 것이 타겟 어드레스의 태그부(52)와 매치하는지 여부)를 판정한다. 태그 히트가 있었으면, 스텝 158에서는, 타겟 데이터 엔트리가, 매칭 태그를 가진 태그 엔트리(32) 내에 저장된 포인터(37)와 타겟 어드레스의 인덱스부(50)를 이용해서 결정된다. 인덱스부가 데이터 해쉬 함수(54)에 예속되어 데이터 어레이(40) 내의 대응하는 데이터 세트(44)의 인덱스를 식별한다. 이 포인터는 그 데이터 세트(44) 내부의 어느 데이터 엔트리가 필요한 데이터 값을 저장하는지를 식별한다. 그 후에 스텝 160에서는, 액세스 제어 회로(60)는 태그들이 스텝 154에서 검색되었던 사이클을 따르는 처리 사이클에서 타겟 데이터 엔트리에 액세스한다. 다음 사이클까지 데이터 액세스를 지연시킴으로써, 데이터 어레이를 액세스하기 전에 스텝 154 및 156에서 태그 비교의 결과를 기다리는 것이 가능하므로, 하나의 데이터 엔트리(42)만이 전력을 절약하기 위해서 액세스될 필요가 있다. 스텝 162에서는, 빅팀 선택 정보가 갱신된다(즉, 오더링 정보(112)와 더티 비트(114)가 갱신될 필요가 있다). 그러므로, 도 1에 나타낸 종래의 캐쉬 배열은, 도 2 및 도 3의 태그 연관성이 감소된 상태로, 각 데이터 액세스에 대한 N 태그 위치들을 검색했을 것이고(여기서 N은 각 데이터 세트(8) 내의 데이터 엔트리의 수이다), M 태그 위치들만이 스텝 154에서 판독될 필요가 있어, 전력이 절약되고 액세스 시간이 감소된다.
스텝 156에서 태그 미스(tag miss)가 있었으면(즉, 스텝 154에서 판독된 M 태그들 중의 어느 것도 타겟 어드레스의 태그부(52)와 매치하지 않았으면), 그 후에 방법은 스텝 170으로 진행되고, 여기서는 할당 절차가, 필요한 데이터 값을 데이터 스토어(20)의 데이터 엔트리(42)에 할당하고, 대응하는 태그 값을 태그 엔트리(32)에 할당하기 위해서 수행된다. 할당 절차(170)의 예가 도 5a 및 5b에 좀 더 상세히 도시되어 있다.
도 5a의 스텝 200에서는, 액세스 제어 회로(60)는 타겟 어드레스에 대응하는 데이터 세트(44)의 데이터 엔트리(42)에 대한 N 데이터 스테이터스 엔트리(120)의 데이터 유효 비트(122)를 판독한다. 스텝 202에서는, 액세스 제어 회로(60)는 이들 데이터 유효 비트(122) 중의 어느 것이, 대응하는 데이터 값이 무효하다는 것을 나타내는, 클리어(clear)인지(예를 들면 0과 같은지) 여부를 판정한다. 그래서 그 후에 스텝 204에서는 설정되지 않은 유효 비트(122)를 갖는 엔트리들 중의 하나가 신규 데이터 값을 저장하기 위해서 선택된다. 그러므로, 무효 데이터 엔트리(122)는, 할 수만 있으면 캐쉬로부터 다른 데이터 값들을 축출하는 것을 피하기 위해서, 신규로 할당된 데이터 값을 저장하기 위해서 우선적으로 선택된다.
반면에, 대응하는 데이터 세트(44)에 대한 데이터 유효 비트(122)의 모두가 설정되면(예를 들면 1과 같으면), 그 후에 데이터 값은 신규 값에 대해 자리를 내주기 위해서 데이터 스토어(20)로부터 축출될 필요가 있을 것이다. 스텝 204에서는, 빅팀 선택 알고리즘은 축출될 데이터 값에 대응하는 빅팀 태그 엔트리(32)를 선택하기 위해서 수행된다. 빅팀 태그 엔트리는 신규 데이터 값의 타겟 어드레스에 대응하는 데이터 세트(44)를 가리킬 수 있는 태그 엔트리(32)의 어느 것인가로부터 선택된다. 도 4의 스텝 154에서 검색된 태그 세트(34)와 같은 태그 세트(34)로부터 빅팀 선택 엔트리를 선택할 필요가 없다. 빅팀 선택 알고리즘은, 빅팀이 데이터 값을 축출할 수 있는 유효 데이터 엔트리에 대응할 것이라는 것을 보장하기 위해서, 설정된 대응하는 태그 유효 비트(116)를 갖는 유효 태그 엔트리를 빅팀 태그 엔트리로서 선택한다. 어떤 적당한 빅팀 선택 폴리시를 사용해서 특정 태그 엔트리(32)를 선택할 수도 있다. 예를 들면, 최소 최근 사용 혹은 의사 최소 최근 사용 폴리시는 오더링 정보(112)를 이용해서, 적어도 대략, 어느 태그 엔트리(32)가 최소 최근 액세스되었는지를 판정할 수도 있다(최소 최근 사용 엔트리가 미래에 요구될 가능성이 가장 적어서, 축출에 가장 적합하다고 가정한다). 그 대신에, 다른 빅팀 선택 폴리시(62)는 최소 최근 사용에 대한 이원 근사(binary approximation) 혹은 가장 최근 사용이 아닌 근사(a not most recently used approximation)를 이용할 수도 있다. 또한, 더티 비트(114)는, 액세스 레이턴시(access latency)를 증가시키는 더티 데이터의 라이트백(writebacks)을 피하기 위해서, 태그 엔트리들이 클린 데이터에 대응하면 이 태그 엔트리들이 우선적으로 선택되도록 고려될 수도 있다.
스텝 204에서는 어느 기술이든 이용해서 빅팀 태그 엔트리를 선택하고, 그 후에 방법은 스텝 206으로 진행되어, 스텝 154에서 검색된 태그 세트(34)와 같은 태그 세트(34) 내에 빅팀 태그 엔트리가 있는지 여부를 판정한다. 만일 그렇다면, 그 후에 스텝 154에서는 빅팀 태그 엔트리의 태그 값(33)과 포인터(37)가 이미 임시 데이터 스토어(70)에 저장되었을 것이며, 그래서 다시 그들을 태그 엔트리(30)로부터 판독할 필요가 없다. 시간 및 에너지를 절약하기 위해서, 스텝 208에서는 빅팀 태그 엔트리의 태그 값(33)과 포인터(37)는 임시 데이터 스토어(70)로부터 판독된다. 반면에, 스텝 206에서는 빅팀 태그 엔트리가 이미 검색된 태그 세트(34)와 다른 태그 세트 내에 있다고 판정하고, 그 후에 스텝 210에서는 제2 태그 검색이 포인터(37) 및 태그 값(33)을 다른 태그 세트(34) 내의 빅팀 태그 엔트리로부터 판독하도록 수행된다. 이 제2 태그 검색은 태그 히트/미스가 이미 결정되었기 때문에 처리 성능에 대한 최상 경로상에는 없다.
방법은 그 후에 스텝 212로 진행되어, 선택된 데이터 엔트리(42)가 빅팀 태그 엔트리의 포인터(37)를 이용해서 결정된다. 스텝 214에서는 액세스 제어 회로(60)는 대응하는 더티 비트(114)가 설정되었는지(예를 들면, 1과 같은지) 여부를 판정한다. 더티 비트(114)가 설정되지 않았으면, 그 후에는 어떤 라이트백도 필요하지 않다. 그렇지만, 더티 비트(114)가 설정되면, 그 후에는 스텝 216에서 라이트백이 수행된다. 라이트백 어드레스는 스텝 208 또는 210에서 판독된 태그 값(33)과 빅팀 태그 엔트리를 포함하는 태그 세트(34)에 대응하는 인덱스부에 근거해서 식별되고, 그 후에 선택된 데이터 엔트리로부터의 데이터 값은 라이트백 어드레스에 의해 식별된 더 높은 레벨 데이터 스토어 내의 위치에 기록된다. 빅팀 태그 엔트리의 태그 유효 비트(116)는 그 후에 태그 엔트리(32)가 더 이상 데이터 어레이(40) 내의 유효 데이터에 대응하지 않다는 것을 나타내기 위해서 클리어된다.
이 시점에서는, 선택된 데이터 엔트리가 신규로 할당된 데이터 값을 저장하기 위해서 선택되었고, 그 엔트리 내에 이미 있는 어떤 데이터든 축출되었다. 다음에, 대응하는 태그 값을 저장하기 위한 태그 엔트리가 선택된다. 이 방법은, 도 5b의 스텝 220으로 진행되어, 무효 데이터 엔트리가 스텝 204에서 선택되었는지 또는 이미 사용중인 데이터 엔트리가 스텝 212에서 선택되었는지 여부에 관계없이 수행된다. 스텝 220에서는, 액세스 제어 회로(60)는, 그것의 유효 비트가 설정되어 있지 않으며 선택된 데이터 엔트리를 가리킬 수 있는, 타겟 어드레스에 대응하는 태그 세트(34) 내부의 태그 엔트리가 있는지 여부를 판정한다. 만일 그렇다면, 그 후에 스텝 221에서는 무효 태그 엔트리(32)가 선택된 태그 엔트리로서 선택된다. 그렇지 않으면, 그 후에 스텝 222에서는 이미 유효한 태그 엔트리가 선택되고, 대응하는 데이터 엔트리 내에 저장된 어떤 데이터든 축출되며(데이터가 더티이면 라이트백되고), 그 후에 대응하는 데이터 엔트리의 데이터 유효 비트(122)가 클리어된다. 그렇지만, 데이터 엔트리(42)보다 더 많은 태그 엔트리(32)가 있기 때문에, 스텝 222는 거의 요구되지 않을 것이고, 거의 내내 이용할 수 있는 무효 태그 엔트리가 있을 것으로 예상된다.
스텝 224에서는, 선택된 데이터 엔트리(42)를 가리키는 포인터(37)와 타겟 어드레스의 태그부(52)가 선택된 태그 엔트리(32)에 기록된다. 스텝 226에서는, 선택된 태그 엔트리(32)에 대응하는 태그 유효 비트(116)가 설정된다. 선택된 데이터 엔트리에 기록되는 신규 데이터 값이 더 높은 레벨로 저장된 대응하는 값과 다르면, 그 후에 더티 비트(114)도 설정된다. 스텝 228에서는, 신규 데이터 값이 스텝 204 또는 214에서 선택된 선택 데이터 엔트리(42)에 기록된다. 최종적으로, 스텝 230에서는, 선택된 데이터 엔트리에 대응하는 데이터 스테이터스 정보 엔트리(120)의 데이터 유효 비트(122)가 설정된다. 신규로 저장된 데이터 값은 원래의 액세스 요구를 발행했었던 프로세스가 사용하는 데에 이용 가능하게 될 수 있다. 이 방법은 그 후에 도 4의 스텝 162로 되돌아가서 빅팀 선택 정보의 오더링 정보(112)가 최근 액세스를 반영하기 위해서 갱신된다.
그러므로, 데이터 어레이와 비교해서 연관성이 감소된 태그 어레이를 제공하면 신규 값들을 캐쉬에 할당할 때 약간의 추가 복잡성이 발생하게 된다. 그렇지만, 히트 레이트가 상당히 높으면, 그 후에는 할당이 자주 요구되지 않을 것이고, 할당에 가끔 발생했던 추가 오버헤드(overhead)는, 보다 적은 태그 엔트리들에 액세스함으로써 모든 데이터 액세스에 대해 이익을 얻은 전력 절약에 의해서 매우 크게 된다. 그래서, 전체 전력 소모가 감소된다.
도 6a 내지 6c는 도 5a 및 5b의 할당 메카니즘을 데이터 스토어에 적용하는 간단한 예를 나타내고, 여기서 데이터 어레이는 4의 연관성을 갖고, 태그 어레이는 2의 연관성을 갖는다. 이 예에 있어서, 데이터 세트(44)는 인덱스부 0b00XX을 가진 어드레스에 대응하고, 데이터 세트(44) 내의 데이터 값들에 대응하는 태그 값들을 저장할 수 있는 인덱스부 0b0000, 0b0001, 0b0010 및 0b0011에 대응하는 4개의 태그 세트 32-0 내지 32-3가 있다. 태그 세트 32-0 내지 32-3의 각 태그 엔트리는 그에 대응하는 태그 스테이터스 정보 엔트리 110-00 내지 110-31을 갖고(태그 스테이터스 정보 엔트리들과 태그 엔트리들 간의 맵핑이 도 6a에 도시되어 있다), 데이터 세트(44)의 각 데이터 엔트리가 그에 대응하는 데이터 스테이터스 정보 엔트리 120-0 내지 120-3을 갖는다.
도 6a는 데이터 세트(44), 태그 세트(34), 태그 스테이터스 정보 어레이(80) 및 데이터 정보 스테이터스 어레이(90) 내의 데이터의 초기 배치의 예를 나타낸다. 데이터 액세스는 그 후에 타겟 어드레스 0b00111010에 의해 수신된다. 타겟 어드레스의 인덱스부 0b0011은 태그 세트 34-3에 대응한다. 태그들은 이 태그 세트로부터 판독되고, 태그 세트 34-3 내의 태그들 중의 어느 것도 타겟 어드레스의 태그 0b1010와 매치하지 않기 때문에(이 경우에, 태그 세트 34-3의 모든 태그 엔트리들이 무효하기 때문에) 태그 미스(tag miss)가 검출된다. 이 태그 미스는 할당이 필요하다는 것을 의미한다.
그러므로, 액세스 제어회로(60)는 대응하는 데이터 세트의 어떤 데이터 엔트리들이 그들의 대응하는 유효 비트 클리어를 갖는지 여부를 체크한다(도 5a의 스텝 202). 도 6a에 있어서, 데이터 스테이터스 정보 엔트리 120-3은 0(not set)과 같은 그것의 유효 비트를 갖고, 이것은 데이터 세트(44)의 대응하는 데이터 엔트리 3가 비어 있다는 것을 나타낸다. 따라서, 이 데이터 엔트리가 신규 데이터 값을 저장하기 위해서 선택된다.
따라서, 도 6b에 도시한 바와 같이, 신규 데이터 값 D는 데이터 세트(44)의 데이터 엔트리(3)에 저장된다. 또한, 도 5b의 스텝 220 및 224에 의하면, 대응하는 태그 세트 34-3의 빈 태그 엔트리가 신규 태그를 저장하기 위해서 선택된다(이 예에 있어서는, 태그 세트 34-3의 엔트리(30)가 선택되었다). 데이터 값 D의 어드레스의 태그부 0b1010은, 데이터 세트(44)의 데이터 엔트리(3)가 그에 대응하는 데이터 값 D을 저장한다는 것을 식별하는 포인터 0b11에 따라 선택된 태그 엔트리 내에 저장된다. 또한, 도 6b는 대응하는 태그 스테이터스 정보 엔트리 110-30가 신규 오더링 정보에 의해 갱신되고 이 엔트리 110-30의 유효 비트 V가 설정되는 것을 나타낸다. 대응하는 데이터 스테이터스 정보 엔트리 120-3 내의 데이터 유효 비트는, 또한 유효 데이터를 나타내기 위해서 갱신된다. 그러므로, 첫 번째 액세스 후에는, 다양한 어레이 내의 데이터는 도 6b에 도시한 바와 같다.
도 6c에 도시한 바와 같이, 타겟 어드레스 0b00001011를 명시하는 또 다른 액세스가 그 후에 수신된다. 이 경우에 인덱스 0b0000가 태그 세트 34-0에 대응하고, 다시 타겟 어드레스의 태그부 0b1011가 태그 세트 34-0 내의 태그들 중의 어느 것과도 매치하지 않는다(도 6b에 도시한 바와 같이, 태그 중 하나는 상이한 태그 값 0b0000을 저장하고, 태그 세트 34-0의 다른 태그는 무효하다). 그러므로, 태그 미스가 있어, 다시 스텝 170의 할당 절차가 요구된다. 이번엔, 모든 대응하는 데이터 유효 비트들 120-0 내지 120-3가 설정되어 있다는 사실로 나타낸 바와 같이, 인덱스 0b0000에 대한 대응하는 데이터 세트(44)가 기존 데이터 값들로 완전히 가득 차 있다. 그러므로, 도 5a의 스텝 204~216의 빅팀 선택 알고리즘을 수행할 필요가 있다. 스텝 204에서는 빅팀 태그 엔트리가 빅팀 선택 데이터에 근거해서 선택된다. 이 예에 있어서는, 더 낮은 오더링 값이 더 높은 오더링 값보다 덜 최근에 액세스된 엔트리를 나타낸다. 그러므로, 가장 낮은 오더링 값을 갖는 태그 스테이터스 정보 엔트리 110-21은, 태그 세트 34-2 내의 태그 엔트리(21)에 대응하여, 빅팀 태그 엔트리로서 선택된다. 다른 예에 있어서는, 유효 정보 또는 더티 정보가 빅팀 태그 엔트리를 결정할 때 사용될 수 있었고, 혹은 또 다른 할당 폴리시가 사용될 수 있었다.
빅팀 태그 엔트리를 포함하는 태그 세트 34-2가 태그 미스를 결정할 때 이미 검색되었던 태그 세트 34-0과 다르기 때문에, 두 번째 태그 검색을 수행하여 태그 세트 34-2 내의 빅팀 태그 엔트리(21)로부터 포인터 및 태그 값을 판독할 필요가 있다. 이 태그 엔트리의 포인터 0b01은 데이터 세트(34)의 데이터 위치 1을 식별하고, 그래서 데이터 위치 1은 선택된 데이터 엔트리로서 선택되고, 선택된 데이터 엔트리로부터의 데이터 B가, 태그 세트 34-2의 태그 엔트리(21) 내의 태그 값 0b0010과 태그 세트 34-2에 대응하는 인덱스 0b0010에 근거해 결정된 기록 어드레스 0b00100010에서 메모리에 라이트백된다. 빅팀 태그 엔트리에 대응하는 태그 스테이터스 정보 엔트리 110-21 내의 유효 비트 V가 지금 클리어된다(도 6c에서는 그것이 0으로 설정되었다).
그리고나서, 태그 엔트리가 신규 데이터 값에 대응하는 태그 값을 저장하기 위해서 선택된다. 데이터 액세스의 인덱스부가 0b0000이었기 때문에, 태그 세트 34-0 내의 엔트리 01이 선택된다. 선택된 데이터 엔트리의 포인터 0b01과 타겟 어드레스의 태그부 0b1011은, 선택된 태그 엔트리에 기록되고, 대응하는 태그 스테이터스 정보 엔트리 110-01은, 대응하는 태그 엔트리가 유효하다는 것을 나타내기 위해서 1로 설정된 유효 비트와 오더링 정보로 갱신된다. 그 다음에, 신규 데이터 값 E가 선택된 데이터 엔트리에 기록된다. 그러므로, 다양한 어레이들 내의 데이터는 지금 도 6c에 나타낸 것과 같다.
그러므로, 도 6a 내지 도 6c에 나타낸 바와 같이, 빅팀 선택 어레이(72)는, 데이터 어레이(44) 내에 어느 데이터 값들이 저장되는지와 태그 어레이(30) 내에 어느 태그 값들이 저장되는지를 추적하도록 액세스 제어회로(6)를 돕고, 미래에 요구될 가능성이 가장 적은 데이터 값들을 축출하기 위해서 선택하려고 하는 빅팀 선택에 사용된다.
상기 설명한 예들은 각 태그 엔트리가 대응하는 데이터 세트(44) 내의 위치들 중의 어느 것인가를 가리키도록 허용했다. 그렇지만, 데이터 세트들이 크면, 이것은 태그 엔트리(32)의 포인터(37)도 더 커지게 되는 것을 의미한다. 태그 어레이(30) 내의 공간을 절약하기 위해서, 각 태그 엔트리가 데이터 세트의 특정 서브세트에 대응하는 도 7에 나타낸 것과 같은 실시예를 제공하는 것이 가능하다. 이 예에 있어서는, 데이터 세트(44)가 16 엔트리들을 갖고, 각 태그 엔트리(32)가 대응하는 데이터 세트의 4 데이터 엔트리(42)의 서브 세트를 가리킬 수 있다. 예를 들면, 도 7에 있어서는, 태그 세트 34-0 및 34-1의 태그 엔트리 0이 데이터 세트(44)의 서브세트 0 내부의 4개의 데이터 엔트리(42)들 중의 어느 것인가를 가리킬 수 있고, 각 태그 세트 34-0, 34-1의 태그 엔트리 1, 2, 및 3은 비슷하게 서브세트 1, 2 및 3 내의 엔트리들을 가리킨다. 이것은, 포인터 37이 16 위치들 중의 하나를 식별할 수 있는 4 비트 수보다는, 4개의 가능한 위치들 중의 하나를 식별하는 2비트 수일 수 있다는 것을 의미한다. 이것은 포인터 37을 유지하는 것과 관련된 오버헤드를 반으로 줄인다. 태그 엔트리들을 데이터 세트의 특정 서브세트로 제한하는 것은 약간 할당을 제한하지만, 이것은 상당히 히트 레이트에 영향을 미칠 것 같지는 않다. 데이터 값들은 데이터 세트(44)의 데이터 엔트리들 중의 어느 것인가에 할당될 수 있고, 그래서 특정 서브세트에 대한 대응하는 태그 엔트리가 이미 사용되었으면, 그 후에 상이한 서브세트 내의 데이터 엔트리가 대신 선택될 수 있다.
데이터 세트(44)가 도 7에 나타낸 것처럼 서브세트들로 분할되면, 도 4 및 도 5의 방법은 약간 변경될 수 있다. 스텝 158에서는, 타겟 데이터 엔트리가 이전에 설명한 것처럼 포인터 및 어드레스의 인덱스부뿐만 아니라, 매칭 태그 내에 포함된 태그 엔트리에 근거해서 식별된다(스텝 158의 괄호로 묶은 부분 참조). 이 경우에, 인덱스부는 그에 대응하는 데이터 세트(44)를 식별할 것이고, 매칭 태그를 저장한 태그 엔트리는 선택된 데이터 엔트리를 포함하는 서브세트를 식별할 것이며, 태그 엔트리 내에 저장된 포인터(37)는 타겟 데이터를 저장하는 서브세트 내부의 특정 데이터 엔트리를 식별할 것이다.
또한, 서브세트들이 도 7에 나타낸 것처럼 사용되면, 그 후에 스텝 220 내지 222에서는, 선택된 태그 엔트리가 선택된 데이터 엔트리를 포함하는 서브세트에 대응하는 태그 엔트리여야 한다. 그렇지 않으면, 할당 방법은 상기 설명한 것과 같을 것이다.
도 8은 종래의 캐쉬의 성능과 본 기술에 따른 캐쉬의 성능을 비교하는 그래프이다. 왼쪽의 Y축은 캐쉬 히트 레이트를 나타내고 X축은 캐쉬 사이즈로 정규화된 스택 디스턴스(stack distance)로서 표현되는 액세스 신근성(access recency)을 나타낸다. 액세스 신근성은 실질적으로 또 다른 액세스를 행할 때 같은 데이터에의 이전의 액세스 이후의 시간의 길이의 척도이다. 액세스가 덜 최근됨에 따라, 필요한 데이터가 그 동안 축출되었을 가능성이 많기 때문에, 히트 레이트가 떨어질 것으로 예상된다.
그래프는 표준 4-웨이 캐쉬를 나타내는 라인 300과 표준 8-웨이 캐쉬를 나타내는 라인 302를 포함한다. 이들 캐쉬에 있어서는, 태그와 데이터 어레이들의 연관성이 동일한 것이다. 도 8의 왼쪽 부분에 도시한 바와 같이, 히트 레이트는, 데이터가 비교적 최근에 액세스되었을 때 높다. 액세스가 덜 빈번하게 됨에 따라, 히트 레이트가 떨어진다. 도 8의 라인 304는 16-웨이 데이터 어레이에 대한 성능을 나타낸다. 데이터 어레이와 태그 어레이에서 같은 연관성을 갖는 표준 16-웨이 캐쉬에 대해서는, 히트 레이트가 라인 304에 나타낸 것과 같을 것이다. 도 8에 도시한 바와 같이, 같은 어드레스의 그룹에 대응하는 더 많은 데이터 값들이 캐쉬 내에 저장되는 것을 허용하면 필요한 데이터 값이 캐쉬 내에 존재할 가능성이 증가하기 때문에, 라인 300, 302에 나타낸 4-웨이 및 8-웨이 캐쉬와 비교해서 성능 향상이 있다. 그렇지만, 이 증가된 성능은 각 액세스에 대하여 16 태그 엔트리들을 찾아보는 비용이 들어, 전력 소모가 증가하게 된다.
그러므로, 본 기술은 데이터 어레이와 비교해서 연관성이 감소된 태그 어레이를 제공한다. 도 8은, 라인 304로 나타낸 16-웨이 데이터 어레이 내에 데이터 엔트리들이 있는 것보다 2배 많은 태그 엔트리들을 포함하는 4-웨이 태그 어레이에 대한 히트 레이트를 나타내는 라인 306을 나타낸다. 라인 306과 라인 300 간의 비교는, 2배 많은 태그 엔트리들을 제공하면 데이터 엔트리들과 같은 수의 태그 엔트리들을 갖는 어레이와 비교해서 히트 레이트가 상당히 증가하는 것을 나타낸다. 각 캐쉬 액세스에서 더 적은 태그들을 검색함으로써, 전력 소모가 감소된다. 그렇지만, 각 태그 값은 단지 데이터 어레이에서와 같이 16개의 위치보다는 4개의 가능한 위치 내에 저장될 수 있기 때문에, 태그 어레이(306)에 대한 히트 레이트가 데이터 어레이(304)에 대한 히트 레이트보다 아래로 떨어지는 그래프 라벨 310의 일부가 있다. 이것은 신규 데이터 값을 저장하기 위해서 데이터 어레이(40) 내에 공간이 있었지만 대응하는 태그 값을 저장하기 위한 대응하는 태그 세트 내에 공간이 없었던 경우를 나타내고, 그래서 데이터는 태그들 중의 하나가 재분배되는 것을 허용하기 위해서 어쨌든 데이터 어레이로부터 축출되어야 했다. 이 데이터-히트/태그-미스 조건은 (왼쪽 Y축에서와 같이 히트 레이트보다는) 미스 레이트를 나타내는 오른쪽 Y축에 대해서 표시되어 있는 라인 310에 좀 더 상세히 도시되어 있다. 라인 310에 도시되어 있는 것처럼, 액세스 신근성의 일부 값들에 대해서는, 데이터 히트/태그 미스 레이트 값이 약 1%로 상승하지만, 그 후에는 일단 데이터 히트 레이트가 더 적은 데이터 엔트리들을 갖기 때문에 다시 태그 히트 레이트보다 뒤떨어지기 시작하면 다시 떨어진다. 라인 310에 나타낸 데이터 히트/태그 미스 레이트가 여전히 상당히 낮기 때문에, 태그 연관성을 줄이는 것은 성능에 상당히 영향을 미치지 않아, 감소된 연관성의 전력 절약이 이 작은 성능 패널티를 정당화한다.
본 기술에 의해 달성된 전력 절약의 추정치가 도 9에 도시되어 있다. 행 350은 16-웨이 태그 어레이를 갖는 종래의 16-웨이 캐쉬의 추정된 전력 소모를 나타낸다. 도 9의 행 360은 태그 어레이가 4-웨이를 가지면서 데이터 어레이가 16-웨이를 갖는 비대칭 연관 캐쉬에 대한 대응하는 추정치를 나타낸다. 비대칭 캐쉬 내에 더 많은 태그 세트가 있기 때문에, 각 태그 세트에 대응하는 더 적은 어드레스들이 있으므로, 태그 값으로서 저장된 태그부가 비대칭 캐쉬에 대해서 더 작고(20비트보다는 18비트), 이것은 포인터에 필요한 추가 2비트를 보상한다(이 예는 각 태그 엔트리가 데이터 엔트리들의 서브세트에 대응하는 도 7의 기술을 이용한다). 따라서, 포인터는 실제로 각 태그 엔트리 내에 저장될 어떤 추가 비트들을 필요로 하지 않는다. 주된 전력 절약은 많은 적은 비트들이 각 태그 액세스에서 판독될 필요가 있다는 사실에서 비롯된다(태그 히트에 대해서 320비트보다는 80비트). 캐쉬 미스에 관해서는, 두 번째 태그 검색이 요구될 수도 있기 때문에 일부 추가 비트들이 가끔 판독될 필요가 있을 수도 있지만, 태그 비트들 판독의 수는 여전히 종래의 캐쉬보다 훨씬 적다. 도 9에서의 테이블의 행 370에 나타낸 것처럼, 평균 전력 절약(50% 히트 레이트라고 가정하고)은, 태그 전력 소모의 65%이고 전체 캐쉬 전력 소모의 28%이다(데이터 어레이의 전력 소모는 동일하게 유지된다). 이것은 보수적인 추정치이며 평균 히트 레이트가 50%보다 크면, 절약이 훨씬 더 클 것이다. 또한, 전력 절약은 고밀도 RAM보다 더 많이 전력을 소모하는 고속 RAM에서 더 클 것이다. 그러므로, 상당한 전력 감소가 성능에 크게 영향을 미치지 않고 달성될 수 있다.
상기 설명한 비대칭 연관 캐쉬와 스누프 디렉토리(snoop directory)의 것을 결합하여 단 한 개의 룩업(lookup) 레벨 3 캐쉬 및 스누프 필터를 제공하는 것이 가능할 것이다.
본 발명의 예시적인 실시예가 첨부도면을 참조하여 여기에 상세히 설명되었지만, 본 발명은 이들 특정 실시예에 한정되는 것이 아니며, 다양한 변화 및 변경이, 첨부된 청구항에 의해 한정된 것처럼 본 발명의 범위 및 정신으로부터 벗어나지 않고 본 기술분야의 당업자에 의해 영향을 받을 수 있다는 것을 알 수 있을 것이다.
Claims (21)
- 데이터를 저장하는 데이터 스토어로서,
데이터 값들을 저장하는 복수의 데이터 엔트리들로 구성되는 데이터 어레이와,
어느 데이터 값들이 상기 데이터 어레이에 저장되는지를 추적하기 위한 태그 값들을 저장하는 복수의 태그 엔트리들로 구성되는 태그 어레이와,
데이터 값을 상기 데이터 어레이에 할당하고, 대응하는 태그 값을 상기 태그 어레이에 할당하는 것을 제어하여,
(a) 상기 데이터 어레이의 N 데이터 엔트리들의 대응하는 데이터 세트의 선택된 데이터 엔트리에 상기 데이터 값을 할당하고, 여기서 N은 상기 데이터 어레이의 데이터 엔트리들의 총수보다 적은 정수이며, 상기 대응하는 데이터 세트는 상기 데이터 값의 어드레스에 근거해서 선택되며, 상기 데이터 값은 상기 대응하는 데이터 세트 내에 없는 데이터 엔트리에 할당될 수 없고,
(b) 상기 태그 어레이의 M 태그 엔트리들의 대응하는 태그 세트의 선택된 태그 엔트리에 상기 대응하는 태그 값을 할당하고, 여기서 M은 정수이며 M < N이고, 상기 대응하는 태그 세트는 상기 데이터 값의 상기 어드레스에 근거해서 선택되며, 상기 태그 값은 상기 대응하는 태그 세트 내에 없는 태그 엔트리에 할당될 수 없고,
(c) 상기 대응하는 데이터 세트의 어느 데이터 엔트리가 상기 선택된 데이터 엔트리인지를 식별하는 포인터를 상기 선택된 태그 엔트리에 저장하도록 구성된 제어회로를 구비하는 것을 특징으로 하는, 데이터 스토어.
- 제 1 항에 있어서,
상기 태그 어레이는 M 태그 엔트리들의 Y 태그 세트들을 구비하고, 상기 데이터 어레이는 N 데이터 엔트리들의 Z 데이터 세트들을 구비하며, Y 및 Z는 정수이고 Y > Z인 것을 특징으로 하는, 데이터 스토어.
- 제 2 항에 있어서,
(Y × M) ≥ (Z × N)인 것을 특징으로 하는, 데이터 스토어.
- 제 3 항에 있어서,
(Y × M) = (Z × N) × 2J, J는 정수인 것을 특징으로 하는, 데이터 스토어.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 데이터 어레이로부터 타겟 어드레스에 의해 식별된 타겟 데이터 값을 액세스하기 위한 액세스 요구에 응답해서, 상기 제어회로는, 상기 타겟 어드레스에 근거해서 선택된 M 태그 엔트리들의 대응하는 태그 세트의 각각으로부터 태그 값들을 판독하기 위한 제1 태그 검색을 수행하고, 상기 데이터 어레이가 판독한 태그 값들의 각각과 상기 타겟 어드레스의 태그부를 비교해서 상기 타겟 데이터 값을 저장하는지 여부를 판정하도록 구성되는 것을 특징으로 하는, 데이터 스토어.
- 제 5 항에 있어서,
상기 판독한 태그 값들 중의 하나가 상기 타겟 어드레스의 상기 태그부에 대응하면, 상기 제어회로는, 적어도 상기 판독한 태그 값들 중의 하나를 저장하는 태그 엔트리의 상기 포인터와 상기 타겟 어드레스의 일부를 이용해서 상기 데이터 어레이 내의 타겟 데이터 엔트리를 판정하고, 상기 타겟 데이터 엔트리 내의 상기 타겟 데이터 값에 액세스하도록 구성되는 것을 특징으로 하는, 데이터 스토어.
- 제 6 항에 있어서,
상기 제어회로는, 상기 제1 태그 검색이 수행되는 처리 사이클 다음에 오는 처리 사이클에서 상기 타겟 데이터 엔트리 내의 상기 타겟 데이터 값에 액세스하도록 구성되는 것을 특징으로 하는, 데이터 스토어.
- 제 5 항에 있어서,
상기 판독한 태그 값들 중의 어느 것도 상기 타겟 어드레스의 상기 태그부에 대응하지 않으면, 상기 제어회로는 상기 타겟 데이터 값을 상기 데이터 어레이에 할당하고 상기 타겟 어드레스의 상기 태그부를 상기 태그 어레이에 할당하기 위한 상기 할당을 수행하도록 구성되는 것을 특징으로 하는, 데이터 스토어.
- 제 8 항에 있어서,
상기 할당 시에, 상기 선택된 태그 엔트리가 상이한 태그 세트로부터 상기 제1 태그 검색 시에 판독된 태그 세트까지이며 상기 선택된 데이터 엔트리가 이미 메모리에 라이트백될 필요가 있는 데이터 값을 저장했으면, 상기 제어회로는, 상기 상이한 태그 세트에 대한 제2 태그 검색을 수행하여 상기 선택된 데이터 엔트리에 이미 저장된 상기 데이터 값에 대응하는 태그 값을 판독하도록 구성되는 것을 특징으로 하는, 데이터 스토어.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 제어회로는, N 데이터 엔트리들의 상기 대응하는 데이터 세트 중의 어느 것이 상기 선택된 데이터 엔트리인지를 선택하기 위한 빅팀 선택을 수행하도록 구성되는 것을 특징으로 하는, 데이터 스토어.
- 제 10 항에 있어서,
상기 데이터 어레이의 대응하는 데이터 엔트리들에 대한 빅팀 선택 데이터를 저장하기 위한 복수의 빅팀 선택 엔트리들로 구성되는 빅팀 선택 데이터 어레이를 구비하고,
상기 제어 회로는 N 데이터 엔트리들의 상기 대응하는 데이터 세트에 대응하는 빅팀 선택 엔트리들의 한 세트의 빅팀 데이터를 이용하여 상기 빅팀 선택을 수행하는 것을 특징으로 하는, 데이터 스토어.
- 제 11 항에 있어서,
상기 빅팀 선택 데이터는 N 데이터 엔트리들의 상기 대응하는 데이터 세트 중의 어느 것이 최소 최근 사용되었는지를 추정하기 위한 정보를 구비하는 것을 특징으로 하는, 데이터 스토어.
- 제 10 항에 있어서,
상기 제어회로는, 상기 태그 어레이의 태그 엔트리들에 저장된 무효 태그 값들을 이용해서 상기 빅팀 선택을 수행하도록 구성되고, 상기 무효 태그 값들은 상기 데이터 어레이 내의 유효 데이터 값들에 대응하지 않는 태그 값들을 구비하는 것을 특징으로 하는, 데이터 스토어.
- 제 10 항에 있어서,
상기 빅팀 선택 시에, 상기 제어회로는 상기 선택된 태그 엔트리로서 상기 대응하는 태그 세트의 태그 엔트리를 선택하고, 상기 선택된 태그 엔트리에 이미 저장된 포인터에 의해 식별되는 상기 대응하는 데이터 세트의 데이터 엔트리를, 상기 선택된 데이터 엔트리로서 선택하도록 구성되는 것을 특징으로 하는, 데이터 스토어.
- 제 14 항에 있어서,
상기 선택된 데이터 엔트리가 이미 메모리에 라이트백되는 데이터 값을 저장했으면, 상기 제어회로는 상기 선택된 태그 엔트리에 이미 저장된 태그 값으로부터 데이터 값이 라이트백되는 어드레스를 결정하도록 구성되는 것을 특징으로 하는, 데이터 스토어.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 대응하는 태그 세트의 각 태그 엔트리는, 상기 대응하는 데이터 세트의 데이터 엔트리들의 서브세트에 대응하는 것을 특징으로 하는, 데이터 스토어.
- 제 16 항에 있어서,
상기 선택된 태그 엔트리에 저장된 상기 포인터는, 데이터 엔트리들의 대응하는 서브세트의 어느 데이터 엔트리가 상기 선택된 데이터 엔트리인지를 식별하는 것을 특징으로 하는, 데이터 스토어.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 제어회로는, 상기 어드레스의 제1 부분에 적용된 제1 해쉬 함수에 근거해서 상기 대응하는 데이터 세트를 선택하고, 상기 어드레스의 제2 부분에 적용된 제2 해쉬 함수에 근거해서 상기 대응하는 태그 세트를 선택하도록 구성되는 것을 특징으로 하는, 데이터 스토어.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
상기 데이터 어레이의 대응하는 데이터 엔트리들이 유효 데이터 값들을 저장하는지 여부를 나타내는 데이터 유효 정보를 저장하도록 구성된 데이터 유효 정보 어레이와,
상기 태그 어레이의 대응하는 태그 엔트리들이 상기 데이터 어레이 내의 유효 데이터 값들에 대응하는 태그 값들을 저장하는지 여부를 나타내는 태그 유효 정보를 저장하도록 구성된 태그 유효 정보 어레이를 구비하는 것을 특징으로 하는, 데이터 스토어.
- 데이터를 저장하기 위한 데이터 스토어로서,
데이터 값들을 저장하는 복수의 데이터 엔트리 수단을 구비하는, 데이터를 저장하기 위한 데이터 어레이 수단과,
상기 데이터 어레이 수단에 어느 데이터 값들이 저장되는지를 추적하기 위한 태그 값들을 저장하는 복수의 태그 엔트리 수단을 구비하는, 태그들을 저장하기 위한 태그 어레이 수단과,
데이터 값을 상기 데이터 어레이 수단에 할당하고 대응하는 태그 값을 상기 태그 어레이 수단에 할당하는 것을 제어하여,
(a) 상기 데이터 어레이 수단의 N 데이터 엔트리 수단의 대응하는 데이터 세트의 선택된 데이터 엔트리 수단에 상기 데이터 값을 할당하고, 여기서 N은 상기 데이터 어레이 수단의 데이터 엔트리 수단의 총수보다 적은 정수이며, 상기 대응하는 데이터 세트는 상기 데이터 값의 어드레스에 근거해서 선택되며, 상기 데이터 값은 상기 대응하는 데이터 세트 내에 없는 데이터 엔트리 수단에 할당될 수 없고,
(b) 상기 태그 어레이 수단의 M 태그 엔트리 수단의 대응하는 태그 세트의 선택된 태그 엔트리 수단에 상기 대응하는 태그 값을 할당하고, 여기서 M은 정수이며 M < N이고, 상기 대응하는 태그 세트는 상기 데이터 값의 상기 어드레스에 근거해서 선택되며, 상기 태그 값은 상기 대응하는 태그 세트 내에 없는 태그 엔트리 수단에 할당될 수 없고,
(c) 상기 대응하는 데이터 세트의 어느 데이터 엔트리 수단이 상기 선택된 데이터 엔트리 수단인지를 식별하는 포인터를 상기 선택된 태그 엔트리 수단에 저장하는 제어수단을 구비하는 것을 특징으로 하는, 데이터 스토어.
- 데이터 값들을 저장하는 복수의 데이터 엔트리들로 구성되는 데이터 어레이와, 어느 데이터 값들이 데이터 어레이에 저장되는지를 추적하기 위한 태그 값들을 저장하는 복수의 태그 엔트리들로 구성되는 태그 어레이를 구비하는 데이터 스토어에 데이터 값을 할당하는 방법으로서, 상기 방법은
상기 데이터 어레이의 N 데이터 엔트리들의 대응하는 데이터 세트의 선택된 데이터 엔트리에 상기 데이터 값을 할당하고, 여기서 N은 상기 데이터 어레이의 데이터 엔트리들의 총수보다 적은 정수이며, 상기 대응하는 데이터 세트는 상기 데이터 값의 어드레스에 근거해서 선택되며, 상기 데이터 값은 상기 대응하는 데이터 세트 내에 없는 데이터 엔트리에 할당될 수 없고,
상기 태그 어레이의 M 태그 엔트리들의 대응하는 태그 세트의 선택된 태그 엔트리에 대응하는 태그 값을 할당하고, 여기서 M은 정수이며 M < N이고, 상기 대응하는 태그 세트는 상기 데이터 값의 상기 어드레스에 근거해서 선택되며, 상기 태그 값은 상기 대응하는 태그 세트 내에 없는 태그 엔트리에 할당될 수 없고,
상기 대응하는 데이터 세트의 어느 데이터 엔트리가 상기 선택된 데이터 엔트리인지를 식별하는 포인터를 상기 선택된 태그 엔트리에 저장하는 것을 구비하는 것을 특징으로 하는, 할당방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/936,749 US9176856B2 (en) | 2013-07-08 | 2013-07-08 | Data store and method of allocating data to the data store |
US13/936,749 | 2013-07-08 | ||
PCT/GB2014/051990 WO2015004422A1 (en) | 2013-07-08 | 2014-07-01 | Data store and method of allocating data to the data store |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160029086A KR20160029086A (ko) | 2016-03-14 |
KR102344008B1 true KR102344008B1 (ko) | 2021-12-28 |
Family
ID=51168296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167002454A KR102344008B1 (ko) | 2013-07-08 | 2014-07-01 | 데이터 스토어 및 데이터 스토어에 데이터를 할당하는 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9176856B2 (ko) |
KR (1) | KR102344008B1 (ko) |
CN (1) | CN105378685B (ko) |
WO (1) | WO2015004422A1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9367454B2 (en) * | 2013-08-15 | 2016-06-14 | Applied Micro Circuits Corporation | Address index recovery using hash-based exclusive or |
US9846648B2 (en) * | 2015-05-11 | 2017-12-19 | Intel Corporation | Create page locality in cache controller cache allocation |
KR102415626B1 (ko) * | 2016-01-04 | 2022-07-01 | 한국전자통신연구원 | 데이터 소유권 검증 방법 및 장치 |
US20180285274A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Apparatus, method and system for just-in-time cache associativity |
CN107688438B (zh) * | 2017-08-03 | 2021-08-27 | 中国石油集团东方地球物理勘探有限责任公司 | 适用于大规模地震数据存储、快速定位的方法及装置 |
GB2566469B (en) * | 2017-09-13 | 2021-03-24 | Advanced Risc Mach Ltd | Cache line statuses |
GB2566470B (en) | 2017-09-13 | 2021-02-10 | Advanced Risc Mach Ltd | Cache storage |
US10992707B2 (en) * | 2017-12-07 | 2021-04-27 | Ridgeback Network Defense, Inc. | Tagging network data |
CN111813734B (zh) * | 2020-06-15 | 2022-11-01 | 上海航天计算机技术研究所 | 无消息间隔限制的1553b总线通信方法和*** |
US20240061784A1 (en) * | 2022-08-18 | 2024-02-22 | Samsung Electronics Co | System and method for performing caching in hashed storage |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3218317B2 (ja) * | 1988-01-20 | 2001-10-15 | アドバンスト・マイクロ・ディバイシズ・インコーポレーテッド | 集積キャッシュユニットおよびその構成方法 |
US20110219188A1 (en) * | 2010-01-08 | 2011-09-08 | International Business Machines Corporation | Cache as point of coherence in multiprocessor system |
US20120054443A1 (en) * | 2010-08-27 | 2012-03-01 | Tarun Nakra | Partially sectored cache |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5978888A (en) | 1997-04-14 | 1999-11-02 | International Business Machines Corporation | Hardware-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels |
JP4073157B2 (ja) | 2000-08-21 | 2008-04-09 | 富士通株式会社 | タグメモリのアクセス回数を制限したキャッシュシステム |
US6854033B2 (en) | 2001-06-29 | 2005-02-08 | Intel Corporation | Using linked list for caches with variable length data |
US7552277B2 (en) | 2003-08-20 | 2009-06-23 | International Business Machines Corporation | Distributed buffer integrated cache memory organization and method for reducing energy consumption thereof |
US20060090034A1 (en) | 2004-10-22 | 2006-04-27 | Fujitsu Limited | System and method for providing a way memoization in a processing environment |
WO2007101969A1 (en) | 2006-03-06 | 2007-09-13 | Arm Limited | Accessing a cache in a data processing apparatus |
US7650465B2 (en) | 2006-08-18 | 2010-01-19 | Mips Technologies, Inc. | Micro tag array having way selection bits for reducing data cache access power |
US7788445B2 (en) | 2007-03-28 | 2010-08-31 | Cisco Technology, Inc | Intelligent allocation of programmable comparison operations for reducing the number of associative memory entries required |
US20090006756A1 (en) | 2007-06-29 | 2009-01-01 | Donley Greggory D | Cache memory having configurable associativity |
US8352683B2 (en) * | 2010-06-24 | 2013-01-08 | Intel Corporation | Method and system to reduce the power consumption of a memory device |
CN102063406B (zh) * | 2010-12-21 | 2012-07-25 | 清华大学 | 用于多核处理器的网络共享Cache及其目录控制方法 |
US20130036270A1 (en) | 2011-08-04 | 2013-02-07 | The Regents Of The University Of Michigan | Data processing apparatus and method for powering down a cache |
US9043570B2 (en) | 2012-09-11 | 2015-05-26 | Apple Inc. | System cache with quota-based control |
US9292451B2 (en) * | 2013-02-19 | 2016-03-22 | Qualcomm Incorporated | Methods and apparatus for intra-set wear-leveling for memories with limited write endurance |
US20140289468A1 (en) * | 2013-03-25 | 2014-09-25 | International Business Machines Corporation | Lightweight primary cache replacement scheme using associated cache |
-
2013
- 2013-07-08 US US13/936,749 patent/US9176856B2/en active Active
-
2014
- 2014-07-01 CN CN201480038132.1A patent/CN105378685B/zh active Active
- 2014-07-01 KR KR1020167002454A patent/KR102344008B1/ko active IP Right Grant
- 2014-07-01 WO PCT/GB2014/051990 patent/WO2015004422A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3218317B2 (ja) * | 1988-01-20 | 2001-10-15 | アドバンスト・マイクロ・ディバイシズ・インコーポレーテッド | 集積キャッシュユニットおよびその構成方法 |
US20110219188A1 (en) * | 2010-01-08 | 2011-09-08 | International Business Machines Corporation | Cache as point of coherence in multiprocessor system |
US20120054443A1 (en) * | 2010-08-27 | 2012-03-01 | Tarun Nakra | Partially sectored cache |
Also Published As
Publication number | Publication date |
---|---|
KR20160029086A (ko) | 2016-03-14 |
US20150012719A1 (en) | 2015-01-08 |
WO2015004422A1 (en) | 2015-01-15 |
CN105378685B (zh) | 2019-06-14 |
CN105378685A (zh) | 2016-03-02 |
US9176856B2 (en) | 2015-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102344008B1 (ko) | 데이터 스토어 및 데이터 스토어에 데이터를 할당하는 방법 | |
KR102193689B1 (ko) | 예측에 기초하여 효율적으로 캐시 라인을 관리하는 시스템 및 방법 | |
US10133678B2 (en) | Method and apparatus for memory management | |
US7284096B2 (en) | Systems and methods for data caching | |
US7844778B2 (en) | Intelligent cache replacement mechanism with varying and adaptive temporal residency requirements | |
US6381676B2 (en) | Cache management for a multi-threaded processor | |
CN108475234B (zh) | 多处理器***及其方法 | |
US10628318B2 (en) | Cache sector usage prediction | |
US8583874B2 (en) | Method and apparatus for caching prefetched data | |
US9582282B2 (en) | Prefetching using a prefetch lookup table identifying previously accessed cache lines | |
US7020748B2 (en) | Cache replacement policy to mitigate pollution in multicore processors | |
US20160055100A1 (en) | System and method for reverse inclusion in multilevel cache hierarchy | |
JP2004530995A (ja) | 高速かつ正確なキャッシュウェイの選択 | |
CN108459975B (zh) | 用于有效使用地址转换缓存的技术 | |
CN107015922B (zh) | 缓存存储器 | |
KR20180122969A (ko) | 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법 | |
US7010649B2 (en) | Performance of a cache by including a tag that stores an indication of a previously requested address by the processor not stored in the cache | |
KR20080089622A (ko) | 메모리 액세스 제어 장치 및 메모리 액세스 제어 방법 | |
US7293141B1 (en) | Cache word of interest latency organization | |
US20180052778A1 (en) | Increase cache associativity using hot set detection | |
US11934307B2 (en) | Apparatus and method for providing coherence data for use when implementing a cache coherency protocol | |
US20090157968A1 (en) | Cache Memory with Extended Set-associativity of Partner Sets | |
US7143239B2 (en) | Cache structure and methodology | |
US9734071B2 (en) | Method and apparatus for history-based snooping of last level caches |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |