KR20150019788A - 캐시 장치 및 그 제어 방법 - Google Patents
캐시 장치 및 그 제어 방법 Download PDFInfo
- Publication number
- KR20150019788A KR20150019788A KR20130097042A KR20130097042A KR20150019788A KR 20150019788 A KR20150019788 A KR 20150019788A KR 20130097042 A KR20130097042 A KR 20130097042A KR 20130097042 A KR20130097042 A KR 20130097042A KR 20150019788 A KR20150019788 A KR 20150019788A
- Authority
- KR
- South Korea
- Prior art keywords
- cache
- way
- present
- data
- empty
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- 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
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- 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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 일부 주소에 대하여 요청이 집중되는 경우에도 캐시 장치의 성능을 저하시키지 않는 캐시 장치와 그 제어 방법을 제공하는 것을 목적으로 한다.
본 발명에 의한 캐시장치는 제 1 세트와 제 1 세트에 대응하는 다수의 웨이를 포함하는 제 1 캐시 및 제 1 세트와 연관될 수 있는 제 2 세트와 상기 제 2 세트에 대응하는 다수의 웨이를 포함하는 제 2 캐시를 포함한다.
본 발명에 의한 캐시장치는 제 1 세트와 제 1 세트에 대응하는 다수의 웨이를 포함하는 제 1 캐시 및 제 1 세트와 연관될 수 있는 제 2 세트와 상기 제 2 세트에 대응하는 다수의 웨이를 포함하는 제 2 캐시를 포함한다.
Description
본 발명은 캐시 장치 및 그 제어 방법에 관한 것이다.
프로세서와 반도체 메모리 장치 사이에는 반도체 메모리 장치에 대한 접근 시간을 줄이기 위해 캐시 장치가 사용되고 있다.
예를 들어 4GB 용량의 반도체 메모리 장치와 2MB 용량의 캐시 장치를 사용하는 경우 반도체 메모리 장치의 전체 주소 중 1/2048이 캐시 장치에 저장될 수 있다.
그러나 반도체 메모리 장치의 일부 주소에 읽기 또는 쓰기 요청이 집중되는 경우 캐시 장치의 일부 세트에서 데이터 추방(eviction)이 빈번하게 발생하고 이로 인하여 캐시 장치 및 이를 포함하는 시스템의 성능이 저하될 수 있다.
본 발명은 반도체 메모리 장치의 일부 주소에 대하여 요청이 집중되는 경우에도 성능 저하를 줄일 수 있는 캐시 장치와 그 제어 방법을 제공하는 것을 목적으로 한다.
본 발명의 일 실시예에 의한 캐시 장치는 제 1 세트와 상기 제 1 세트에 대응하는 다수의 웨이를 포함하는 제 1 캐시 및 상기 제 1 세트와 연관될 수 있는 제 2 세트와 상기 제 2 세트에 대응하는 다수의 웨이를 포함하는 제 2 캐시를 포함할 수 있다.
본 발명의 일 실시예에 의한 캐시 장치에서 상기 제 1 캐시는 상기 제 1 세트와 상기 제 2 세트의 연관 관계를 나타내는 제 1 데이터를 포함할 수 있다.
본 발명의 일 실시예에 의한 캐시 장치에서 상기 제 1 데이터는 상기 제 1 세트와 연관된 상기 제 2 세트가 존재하는지를 나타내는 플래그 및 상기 제 1 세트와 연관된 상기 제 2 세트의 주소를 나타내는 포인터를 포함할 수 있다.
본 발명의 일 실시예에 의한 캐시 장치에서 제 2 캐시는 상기 제 2 세트의 사용 빈도에 관한 제 2 데이터를 포함할 수 있다.
본 발명의 일 실시예에 의한 캐시 장치에서 상기 제 2 세트는 상기 제 1 세트에 빈 웨이가 없을 때 상기 제 1 세트에 연관될 수 있다.
본 발명의 일 실시예에 의한 캐시 장치에서 상기 제 2 세트는 상기 제 2 데이터가 특정 값을 가지는 경우 상기 제 1 세트와의 연관 관계가 종료될 수 있다.
본 발명의 일 실시예에 의한 시스템은 프로세서 코어, 저장 장치 및 상기 프로세서 코어와 상기 저장 장치 사이에서 상기 저장 장치의 데이터를 캐싱하는 캐시 장치를 포함하되, 상기 캐시 장치는 제 1 세트와 상기 제 1 세트에 대응하는 다수의 웨이를 포함하는 제 1 캐시 및 상기 제 1 세트와 연관될 수 있는 제 2 세트와 상기 제 2 세트에 대응하는 다수의 웨이를 포함하는 제 2 캐시를 포함할 수 있다.
본 발명의 일 실시예에 의한 캐시 장치의 제어 방법은 읽기 요청된 주소에 대응하는 제 1 웨이가 제 1 캐시의 제 1 세트에 존재하는지 판단하는 단계, 상기 대응하는 제 1 웨이가 존재하지 않는 경우 상기 제 1 세트에 연관된 제 2 세트가 제 2 캐시에 존재하는지 확인하는 단계, 상기 제 2 세트가 존재하는 경우 상기 읽기 요청된 주소에 대응하는 제 2 웨이가 상기 제 2 세트에 존재하는지 확인하는 단계 및 상기 제 2 웨이가 상기 제 2 세트에 존재하는 경우 상기 제 2 웨이에서 상기 읽기 요청된 주소의 데이터를 읽는 단계를 포함할 수 있다.
본 발명의 일 실시예에 의한 캐시 장치의 제어 방법은 쓰기 요청된 주소에 대응하는 제 1 웨이가 제 1 캐시의 제 1 세트에 존재하는지 확인하는 단계; 상기 제 1 웨이가 존재하지 않는 경우 상기 제 1 세트에 연관된 제 2 세트가 제 2 캐시에 존재하는지 확인하는 단계; 상기 제 2 세트가 존재하는 경우 상기 제 2 세트에 상기 쓰기 요청된 주소에 대응하는 제 2 웨이가 존재하는지 확인하는 단계 및 상기 제 2 웨이가 존재하는 경우 상기 쓰기 요청된 데이터를 저장하는 단계를 포함할 수 있다.
본 발명의 일 실시예에 의한 캐시 장치의 제어 방법은 다수의 웨이를 구비하는 제 1 세트를 포함하는 제 1 캐시와 다수의 웨이를 포함하고 상기 제 1 세트와 연관될 수 있는 제 2 세트와 상기 제 2 세트에 대한 접근 빈도를 나타내는 카운트 값을 저장하는 제 2 캐시를 포함하는 캐시 장치에서 상기 제 2 세트에 대하여 읽기 또는 쓰기를 수행하는 경우 상기 제 2 세트의 상기 카운트 값을 증가시키는 단계 및 일정한 주기로 상기 카운트를 감소시키는 단계를 포함할 수 있다.
본 발명에 의한 캐시 장치는 요청이 집중되는 주소에 대하여 캐시 장치의 저장 공간을 증가시킴으로써 캐시 장치의 동작 성능을 높일 수 있다.
도 1은 본 발명의 일 실시예에 의한 캐시 장치를 포함하는 시스템의 블록도.
도 2는 본 발명의 일 실시예에 의한 캐시 장치의 블록도.
도 3은 본 발명의 일 실시예에 의한 캐시 장치의 웨이 데이터 구조를 나타내는 블록도.
도 4는 본 발명의 일 실시예에 의한 캐시 장치의 읽기 동작을 나타내는 순서도.
도 5는 본 발명의 일 실시예에 의한 캐시 장치의 쓰기 동작을 나타내는 순서도.
도 6은 본 발명의 일 실시예에 의한 제 2 캐시의 카운트 값을 제어하는 동작을 나타내는 순서도.
도 2는 본 발명의 일 실시예에 의한 캐시 장치의 블록도.
도 3은 본 발명의 일 실시예에 의한 캐시 장치의 웨이 데이터 구조를 나타내는 블록도.
도 4는 본 발명의 일 실시예에 의한 캐시 장치의 읽기 동작을 나타내는 순서도.
도 5는 본 발명의 일 실시예에 의한 캐시 장치의 쓰기 동작을 나타내는 순서도.
도 6은 본 발명의 일 실시예에 의한 제 2 캐시의 카운트 값을 제어하는 동작을 나타내는 순서도.
이하에서는 도면을 참조하여 본 발명의 실시예를 개시한다. 이하에서 동일한 참조 번호는 실질적으로 동일한 구성 요소를 지시한다.
도 1은 본 발명의 일 실시예에 의한 캐시 장치(100)를 포함하는 시스템의 블록도이다.
시스템의 성능을 향상시키기 위하여 프로세스 코어(10)와 저장 장치(30)의 사이에 캐시 장치를 사용하는 기술은 공지된 것이다.
본 발명에 있어서 저장 장치(30)는 예를 들어 DRAM과 같은 휘발성 반도체 메모리 장치, SSD와 같은 비휘발성 반도체 메모리 장치, SSD, 하드디스크 같은 자기 저장 장치 또는 광디스크와 같은 광학적 저장 장치를 모두 포함하는 것으로 이해해야 한다.
본 발명에 의한 캐시 장치(100)는 제 1 캐시(110)와 제 2 캐시(120)를 포함하고, 본 발명에 의한 캐시 제어기(200)는 제 1 캐시(110)와 제 2 캐시(120)를 포함하는 캐시 장치(100)에 대한 제어 동작을 수행한다.
본 발명에 의한 캐시 장치(100)는 제 1 캐시(110)와 제 2 캐시(120)를 포함한다.
제 2 캐시(120)의 각 세트는 제 1 캐시(110)의 어느 한 세트와 연관될 수 있다. 제 1 캐시의 (110)의 특정 세트의 웨이가 모두 사용 중인 경우 제 2 캐시(120)의 어느 한 세트는 제 1 캐시(110)의 특정 세트를 확장하는 역할을 한다.
이와 같이 제 2 캐시(120)는 제 1 캐시(110)의 특정 세트에 요청이 집중되는 경우 저장 공간의 부족으로 말미암아 빈번한 추방(eviction)이 발생하는 것을 방지한다.
본 발명에 의한 캐시 장치(100)와 그 동작 방법에 대해서는 이하에서 구체적으로 살펴본다.
도 2는 본 발명의 일 실시예에 의한 캐시 장치(100)를 나타내는 블록도이다.
본 발명의 일 실시예에 의한 캐시 장치(100)는 제 1 캐시(110)와 제 2 캐시(120)를 포함한다.
제 1 캐시(110)와 제 2 캐시(120) 각각은 다수의 세트를 포함하고 다수의 세트 각각은 다수의 웨이를 포함한다.
제 1 캐시(110)에서 어느 세트를 사용할 것인지는 프로세서 코어(10)로부터 요청되는 주소에 따라 자동으로 결정된다. 웨이는 도 3에 도시된 바와 같이 그 내부에 태그 주소, 더티 플래그, 데이터를 포함한다.
프로세서 코어(10)로부터 요청되는 주소는 세트 번호와 태그 주소의 조합으로 생성될 수 있다. 따라서 프로세서 코어(10)로부터 요청된 주소에 대한 값이 캐시 장치(100)에 저장되어 있는지 확인하기 위해 요청된 주소에 의해 자동으로 결정되는 세트에서 그 내부에 포함된 다수의 웨이의 태그 주소를 조회한다. 태그 주소에 특정한 값(예를 들어 "0")을 지정하여 해당 웨이가 비어 있음을 표시할 수도 있다.
더티 플래그는 캐시 장치에 저장된 데이터가 저장 장치(30)에 저장되었는지 여부를 표시한다. 예를 들어 활성화된 더티 플래그는 웨이에 저장된 데이터가 업데이트 되었으나 저장 장치(30)에는 저장되지 않았음을 표시할 수 있다. 따라서 캐시 장치에서 추방되는 웨이를 확인하여 더티 플래그가 활성화된 것이면 그 데이터를 이용하여 저장 장치를 업데이트 해야한다.
제 2 캐시(120)는 다수의 세트를 포함하는데 각 세트는 제 1 캐시(110)에 포함된 어느 하나의 세트와 연관될 수 있다. 제 1 캐시(110)에 포함된 세트와 제 2 캐시(120)에 포함된 세트 사이의 연관 관계는 수시로 변경될 수 있다.
제 1 캐시(110)의 특정 세트(예를 들어 Set 0)에 비어 있는 웨이가 없는 경우 해당 세트를 제 2 캐시(120)의 가용한 세트 중 어느 하나(예를 들어 Set 1)와 연관시킬 수 있다. 이를 통해 제 1 캐시의 세트(Set 0)의 웨이 개수는 N개에서 (N+L)개로 확장될 수 있다.
제 2 캐시(120)의 세트 중 제 1 캐시(110)의 어느 세트와도 연관 관계를 가지지 않는 세트는 제 1 캐시(110)의 세트와 연관될 수 있다.
제 2 캐시(120)의 세트 중 사용 빈도가 낮은 세트 역시 제 1 캐시(110)의 세트와 연관될 수 있다. 이를 위하여 제 2 캐시(120)는 다수의 세트 각각에 대해서 카운트 값을 포함한다. 카운트 값은 대응하는 세트에 대한 읽기 또는 쓰기 등의 요청 빈도에 대한 정보를 나타낸다.
예를 들어 카운트는 해당 세트에 대해서 읽기 또는 쓰기를 수행할 때마다 값이 증가하도록 하고 일정한 주기마다 값이 감소하도록 설정할 수 있다.
카운트가 특정 값(예를 들어 0)을 가지는 경우 해당 세트는 사용 빈도가 낮은 것으로 판단되어 현재 연관된 제 1 캐시(110)의 세트 대신 제 1 캐시(120)의 다른 세트와 연관될 수 있다.
제 1 캐시(110)의 각 세트는 해당 세트가 제 2 캐시(120)의 세트 중 어느 하나와 연관 관계를 가지는지 여부를 표시하는 플래그와 연관 관계를 가지는 제 2 캐시(120)의 세트를 지시하는 포인터를 포함한다.
따라서 프로세서 코어로부터 읽기 또는 쓰기 요청이 있는 경우 해당 주소로부터 자동으로 정해지는 제 1 캐시(110)의 세트에 포함된 플래그와 포인터를 이용하여 제 2 캐시(120)의 저장 공간을 추가로 사용할 수 있다.
도 2에 도시된 캐시 제어기(200)를 통해 캐시 장치(100)에 대하여 읽기 또는 쓰기 요청을 처리하는 구체적인 방법에 대해서는 이하의 도 4 ~ 5를 참조하여 구체적으로 설명한다.
도 4는 본 발명의 일 실시예에 의한 캐시 장치에 대한 읽기 동작을 나타내는 순서도이다.
먼저 캐시 제어기(200)는 프로세서 코어(10)로부터 읽기 요청을 수신한다(S110).
캐시 제어기(200)는 읽기 요청된 주소를 이용하여 제 1 캐시(110)에서 대응하는 제 1 세트를 탐색한다. 제 1 캐시(110)의 제 1 세트는 읽기 요청된 주소에 의해 자동으로 지정된다.
캐시 제어기(200)는 제 1 세트에 포함된 다수의 웨이 각각의 태그 주소와 읽기 요청된 주소를 대비하여 읽기 요청된 주소에 대응하는 제 1 웨이가 존재하는지 판단한다(S130).
만일 제 1 웨이가 존재하면 캐시 제어기(200)는 해당 웨이로부터 데이터를 읽어 프로세서 코어(10)에 제공하고 처리를 종료한다.
단계(S130)에서 제 1 웨이가 존재하지 않는 경우 캐시 제어기(200)는 저장 장치에 대한 읽기 요청을 메모리 제어기(20)에 전달한다. 이후 캐시 제어기(200)는 제 1 캐시(110)의 제 1 세트에 연관된 제 2 세트가 제 2 캐시(120)에 존재하는지 확인한다(S140, S150). 제 1 세트에 연관된 제 2 세트가 존재하는지 여부는 제 1 세트의 플래그를 통해 확인할 수 있고 제 1 세트에 연관된 제 2 세트의 주소는 제 1 세트의 포인터를 통해 확인할 수 있다.
제 2 세트가 존재하는 경우 캐시 제어기(200)는 제 2 세트에 포함된 다수의 웨이 중 읽기 요청된 주소에 대응하는 제 2 웨이가 존재하는지 확인한다(S160).
제 2 웨이가 존재하는 경우 캐시 제어기(200)는 제 2 웨이의 데이터를 프로세서 코어(10)에 전달한다. 또한 캐시 장치(100)에서 읽기 요청에 대한 처리를 완료했으므로 메모리 제어기(20)에 전달한 읽기 요청은 수행될 필요가 없다. 따라서 캐시 제어기(200)는 단계(S140)에서 전달한 읽기 요청에 대한 취소 요청을 메모리 제어기(20)에 전달한다.
이후 캐시 제어기(200)는 제 2 캐시(120)의 제 2 세트에 대응하는 카운트 값을 증가시킨다(S162).
제 1 캐시(110)의 제 1 세트 및 제 1 세트에 연관된 제 2 세트에 포함된 모든 웨이 중에서 가장 최근에 접근된 웨이는 제 1 세트 내에 저장하는 것이 바람직하다. 제 1 세트에는 비어 있는 웨이가 없으므로 제 1 세트에 포함된 다수의 웨이 중 어느 하나를 추방한다. 본 실시예에서는 가장 오래 전에 사용되었던 웨이를 추방되는 웨이로 선택한다. 웨이를 추방하는 경우 웨이의 더티 플래그를 확인하여 더티 플래그가 활성화된 경우 그 데이터를 저장 장치(30)에 기록한다. 이후 프로세서 코어(10)에 제공된 데이터를 제 1 세트의 빈 웨이에 저장한다(S163).
본 실시예에서는 단계(S163)에서 제 1 세트의 웨이를 저장 장치(30)로 추방하였으나 다른 실시예에서는 제 1 세트에서 추방되는 웨이를 제 2 세트의 빈 웨이에 저장할 수도 있다.
단계(S150)에서 판단한 결과 제 2 세트가 존재하지 않는 경우라면 캐시 제어기(200)는 제 2 세트에 제 2 웨이가 존재하는지 여부를 살펴볼 필요없이 저장 장치(30)로부터 데이터를 읽어 프로세서 코어(10)에 제공한다(S170).
이후 캐시 제어기(200)는 제 1 세트에 빈 웨이가 있는지 확인하고(S171), 빈 웨이가 있으면 저장 장치(30)로부터 읽은 데이터를 제 1 세트의 빈 웨이에 저장한 이후(S172) 동작을 종료한다.
만일 제 1 세트에 빈 웨이가 존재하지 않으면 캐시 제어기(200)는 제 1 캐시(110)의 제 1 세트에서 가장 오래 전에 사용되었던 웨이를 추방하고 저장 장치(30)로부터 읽은 데이터를 제 1 세트의 빈 웨이에 저장한다(S163).
단계(S160)에서 판단한 결과 제 2 세트에서 읽기 요청된 주소에 대응하는 제 2 웨이가 존재하지 않는 경우에는 캐시 제어기(200)는 저장 장치(30)로부터 제공된 데이터를 프로세서 코어(10)에 제공한다.
이 경우 제 1 세트에는 빈 웨이가 존재하지 않으므로 캐시 제어기(200)는 제 1 세트에서 가장 오래 전에 사용된 웨이를 추방하고 제 1 세트의 빈 웨이에 저장 장치(30)로부터 읽은 데이터를 저장한다(S163). 다른 실시예에서는 제 1 세트에서 추방된 웨이를 제 2 세트의 빈 웨이로 이동할 수 있다.
본 발명에 의한 캐시 장치(100)를 사용하여 읽기 요청을 처리하는 경우 제 1 캐시(110)의 특정 세트에 대한 읽기 요청이 집중됨으로 인하여 부족하게 되는 웨이를 제 2 캐시(120)를 통해 보충할 수 있으므로 빈번한 추방에 의한 성능 저하를 방지할 수 있다.
도 5는 본 발명의 일 실시예에 의한 캐시 장치(100)의 쓰기 동작을 나타내는 순서도이다.
먼저 캐시 제어기(200)는 프로세서 코어(10)로부터 쓰기 요청을 수신한다(S110).
캐시 제어기(200)는 쓰기 요청된 주소를 이용하여 제 1 캐시(110)에서 대응하는 제 1 세트를 탐색한다(S220). 제 1 캐시(110)의 제 1 세트는 쓰기 요청된 주소에 의해 자동으로 지정된다.
이후 캐시 제어기(200)는 제 1 세트에 쓰기 요청된 주소에 대응하는 제 1 웨이가 존재하는지 확인한다(S230).
제 1 웨이가 존재하는 경우 캐시 제어기(200)는 제 1 웨이에 쓰기 요청된 데이터를 저장한다. 또한 제 1 웨이의 더티 플래그를 활성화하여 추후에 해당 웨이가 추방되는 경우 그 데이터가 저장 장치(30)에 업데이트 될 수 있도록 한다(S231).
제 1 웨이가 존재하지 않는 경우 캐시 제어기(200)는 제 2 캐시(120)에 제 1 세트에 연관된 제 2 세트가 존재하는지 확인한다(S240). 제 1 세트에 연관된 제 2 세트가 존재하는지 여부는 제 1 세트의 플래그를 통해 확인할 수 있고 제 1 세트에 연관된 제 2 세트의 주소는 제 1 세트의 포인터를 통해 확인할 수 있다.
제 2 세트가 존재하는 경우 캐시 제어기(200)는 쓰기 요청된 주소에 대응하는 제 2 웨이가 제 2 세트에 포함되어 있는지 확인한다(S250). 이는 제 2 세트에 포함된 각 웨이의 태그 주소와 쓰기 요청된 주소를 비교하여 확인할 수 있다.
쓰기 요청된 주소에 대응하는 제 2 웨이가 존재하는 경우 캐시 제어기(200)는 제 1 세트에서 가장 오래 전에 사용된 웨이를 저장 장치(30)로 추방한다. 이후 캐시 제어기(200)는 제 2 세트의 제 2 웨이를 제 1 세트의 빈 웨이에 이동하여 저장하고 그 데이터를 쓰기 요청된 데이터를 이용하여 업데이트 한다(S251).
본 실시예에서는 제 1 세트에서 가장 오래 전에 사용된 웨이를 저장 장치(30)로 추방하나 다른 실시예에서는 이를 제 2 세트의 빈 웨이로 이동할 수도 있다.
이후 캐시 제어기(200)는 제 2 세트의 카운트 값을 증가시킨다(S252).
단계(S250)에서 판단한 결과 쓰기 요청된 주소에 대응하는 제 2 웨이가 존재하지 않는 경우 캐시 제어기(200)는 제 1 세트에서 가장 오래 전에 사용된 웨이를 제 2 세트의 빈 웨이로 추방한다. 또한 캐시 제어기(200)는 제 2 세트의 제 2 웨이를 제 1 세트의 빈 웨이로 이동하여 저장하고 쓰기 요청된 데이터를 이용하여 그 데이터를 업데이트 한다(S253).
제 2 세트에 빈 웨이가 존재하지 않는 경우 제 1 세트에서 추방된 웨이는 저장 장치(30)로 이동할 수도 있다.
이후 캐시 제어기(200)는 제 2 세트의 카운트 값을 증가시킨다(S252).
단계(S240)에서 판단한 결과 제 1 세트에 연관된 제 2 세트가 존재하지 않는 경우 캐시 제어기(200)는 제 1 세트에 빈 웨이가 있는지 확인한다(S260).
제 1 세트에 빈 웨이가 존재하는 경우 캐시 제어기(200)는 빈 웨이에 쓰기 요청된 데이터를 저장한다(S261).
제 1 세트에 빈 웨이가 존재하지 않는 경우 캐시 제어기(200)는 제 2 캐시(120)에서 제 1 세트와 연관될 수 있는 제 3 세트가 존재하는지 확인한다(S262).
제 1 세트와 연관될 수 있는 제 3 세트는 제 1 캐시(110)의 어느 세트와도 연관되지 않은 세트이거나, 제 1 캐시(110)의 어느 한 세트와 연관된 상태이지만 그 카운트 값이 특정 값(예를 들어 0)을 가지는 세트일 수 있다.
제 3 세트가 존재하는 경우(S263) 캐시 제어기(200)는 제 3 세트를 제 1 세트와 연관시킨다. 이때 제 1 세트의 플래그를 활성화하고 제 1 세트의 포인터에 제 3 세트의 주소를 기록한다.
만일 제 3 세트가 기존에 다른 제 1 캐시(110)의 세트와 연관되어 있었다면 캐시 제어기(200)는 제 3 세트에 포함된 웨이들 중 비어 있지 않은 웨이들을 먼저 추방해야 한다. 추방하는 경우 더티 플래그가 활성화된 웨이의 데이터는 저장 장치(30)에 다시 기록한다(S263).
이후 캐시 제어기(200)는 제 1 세트에서 가장 오래 전에 사용된 웨이를 추방하여 제 3 세트의 빈 웨이로 이동한다. 이후 제 1 세트의 빈 웨이에 쓰기 요청된 데이터를 기록한다(S253).
이후 캐시 제어기(200)는 제 3 세트의 카운트 값을 증가시킨다(S252).
단계(S262)에서 제 1 세트와 연관될 수 있는 제 3 세트가 제 2 캐시(120)에 존재하지 않는 경우 캐시 제어기(200)는 제 1 세트에서 가장 오래 전에 사용된 웨이를 추방한다(S264).
이후 캐시 제어기(200)는 제 1 세트의 빈 웨이에 쓰기 요청된 데이터를 저장하고 종료한다.
도 6은 본 발명의 일 실시예에 의한 캐시 장치에서 제 2 캐시의 카운트 값을 조절하는 방법을 나타내는 순서도이다.
전술한 바와 같이 제 2 캐시(120)의 카운트 값은 제 2 캐시(120)의 각 세트마다 존재하며 읽기 또는 쓰기 요청에 대한 처리를 위해 제 2 세트에 접근하는 경우 그 값이 증가된다.
캐시 제어기(200)는 일정한 주기마다 제 2 캐시의 각 세트에 위치하는 카운트 값을 감소시킨다(S310). 이때 주기와 감소되는 정도는 실시예에 따라 달라질 수 있다.
캐시 제어기(200)는 카운트의 값이 0인 세트를 제 1 캐시에 포함된 세트와 연관될 수 있는 세트로 고려한다. 이에 대해서는 도 4의 단계(S263)와 관련하여 상세히 설명한 바 있다.
카운트 값을 감소시킴으로서 제 2 캐시(120)에서 상대적으로 덜 사용되는 세트를 제 1 캐시(110)에서 사용 빈도가 높은 세트의 웨이를 확장하는데 사용할 수 있다. 이를 통해 제 2 캐시(120)의 크기를 크게 증가시키지 않으면서 제 1 캐시(110)의 캐시 크기를 동적으로 조절할 수 있게 된다.
이상의 개시는 본 발명의 설명을 위한 것으로서 이상의 개시에 의하여 본 발명의 권리범위가 한정되는 것은 아니다. 본 발명의 권리범위는 후술하는 특허청구범위에 문언적으로 기재된 범위와 그 균등범위에 의해 정해진다.
10: 프로세서 코어
100: 캐시 장치
110: 제 1 캐시
120: 제 2 캐시
200: 캐시 제어기
20: 저장 장치 제어기, 메모리 제어기
30: 저장 장치
100: 캐시 장치
110: 제 1 캐시
120: 제 2 캐시
200: 캐시 제어기
20: 저장 장치 제어기, 메모리 제어기
30: 저장 장치
Claims (27)
- 제 1 세트와 상기 제 1 세트에 대응하는 다수의 웨이를 포함하는 제 1 캐시 및
상기 제 1 세트와 연관될 수 있는 제 2 세트와 상기 제 2 세트에 대응하는 다수의 웨이를 포함하는 제 2 캐시
를 포함하는 캐시 장치. - 청구항 1에 있어서, 상기 제 1 캐시는 상기 제 1 세트와 상기 제 2 세트의 연관 관계를 나타내는 제 1 데이터를 포함하는 캐시 장치.
- 청구항 2에 있어서, 상기 제 1 데이터는
상기 제 1 세트와 연관된 상기 제 2 세트가 존재하는지를 나타내는 플래그 및
상기 제 1 세트와 연관된 상기 제 2 세트의 주소를 나타내는 포인터
를 포함하는 캐시 장치. - 청구항 1에 있어서, 상기 제 2 캐시는
상기 제 2 세트의 사용 빈도에 관한 제 2 데이터를 포함하는 캐시 장치. - 청구항 1에 있어서, 상기 제 2 세트는 상기 제 1 세트에 빈 웨이가 없을 때 상기 제 1 세트에 연관되는 캐시 장치.
- 청구항 4에 있어서, 상기 제 2 세트는 상기 제 2 데이터가 특정 값을 가지는 경우 상기 제 1 세트와의 연관 관계가 종료되는 캐시 장치.
- 프로세서 코어;
저장 장치 및
상기 프로세서 코어와 상기 저장 장치 사이에서 상기 저장 장치의 데이터를 캐싱하는 캐시 장치
를 포함하되, 상기 캐시 장치는
제 1 세트와 상기 제 1 세트에 대응하는 다수의 웨이를 포함하는 제 1 캐시 및
상기 제 1 세트와 연관될 수 있는 제 2 세트와 상기 제 2 세트에 대응하는 다수의 웨이를 포함하는 제 2 캐시
를 포함하는 시스템. - 청구항 7에 있어서, 상기 제 1 캐시는
상기 제 1 세트와 상기 제 2 세트의 연관 관계를 나타내는 제 1 데이터를 포함하는 시스템. - 청구항 8에 있어서, 상기 제 1 데이터는
상기 제 1 세트와 연관된 상기 제 2 세트가 존재하는지를 나타내는 플래그 및
상기 제 1 세트와 연관된 상기 제 2 세트의 주소를 나타내는 포인터
를 포함하는 시스템. - 청구항 7에 있어서, 상기 제 2 캐시는
상기 제 2 세트의 사용 빈도에 관한 제 2 데이터를 포함하는 시스템. - 청구항 7에 있어서, 상기 제 2 세트는 상기 제 1 세트에 빈 웨이가 존재하지 않는 경우 상기 제 1 세트와 연관되는 시스템.
- 청구항 10에 있어서, 상기 제 2 세트는 상기 제 2 데이터의 값에 따라 상기 제 1 세트와의 연관 관계가 종료되는 시스템.
- 읽기 요청된 주소에 대응하는 제 1 웨이가 제 1 캐시의 제 1 세트에 존재하는지 판단하는 단계;
상기 대응하는 제 1 웨이가 존재하지 않는 경우 상기 제 1 세트에 연관된 제 2 세트가 제 2 캐시에 존재하는지 확인하는 단계;
상기 제 2 세트가 존재하는 경우 상기 읽기 요청된 주소에 대응하는 제 2 웨이가 상기 제 2 세트에 존재하는지 확인하는 단계 및
상기 제 2 웨이가 상기 제 2 세트에 존재하는 경우 상기 제 2 웨이에서 상기 읽기 요청된 주소의 데이터를 읽는 단계
를 포함하는 캐시 장치의 제어 방법. - 청구항 13에 있어서, 상기 제 2 웨이가 상기 제 2 세트에 존재하는 경우
상기 제 1 세트에서 어느 한 웨이를 추방하는 단계 및
상기 제 1 세트의 빈 웨이에 상기 제 2 웨이의 데이터를 저장하는 단계
를 더 포함하는 캐시 장치의 제어 방법. - 청구항 13에 있어서, 상기 제 2 웨이가 상기 제 2 세트에 존재하는 경우
상기 제 1 세트의 어느 한 웨이의 데이터와 상기 제 2 웨이의 데이터를 교환하는 단계
를 더 포함하는 캐시 장치의 제어 방법. - 청구항 13에 있어서, 상기 제 1 세트에 연관된 상기 제 2 세트가 존재하지 않는 경우,
저장 장치에서 상기 읽기 요청된 주소의 데이터를 읽는 단계;
상기 제 1 세트에 빈 웨이가 존재하지 않는 경우 상기 제 1 세트에 포함된 다수의 웨이 중 어느 하나의 웨이를 추방하여 빈 웨이를 형성하는 단계;
상기 읽은 데이터를 상기 빈 웨이에 기록하는 단계
를 더 포함하는 캐시 장치의 제어 방법. - 청구항 13에 있어서, 상기 대응하는 제 1 웨이가 존재하지 않는 경우
저장 장치에 상기 읽기 요청을 전달하는 단계 및
상기 제 2 웨이가 존재하는 경우 상기 읽기 요청에 대한 취소 요청을 전달하는 단계
를 더 포함하는 캐시 장치의 제어 방법. - 쓰기 요청된 주소에 대응하는 제 1 웨이가 제 1 캐시의 제 1 세트에 존재하는지 확인하는 단계;
상기 제 1 웨이가 존재하지 않는 경우 상기 제 1 세트에 연관된 제 2 세트가 제 2 캐시에 존재하는지 확인하는 단계;
상기 제 2 세트가 존재하는 경우 상기 제 2 세트에 상기 쓰기 요청된 주소에 대응하는 제 2 웨이가 존재하는지 확인하는 단계 및
상기 제 2 웨이가 존재하는 경우 상기 쓰기 요청된 데이터를 저장하는 단계
를 포함하는 캐시 장치의 제어 방법. - 청구항 18에 있어서, 상기 쓰기 요청된 데이터를 저장하는 단계는
상기 제 1 세트에 포함된 어느 한 웨이를 추방하는 단계 및
상기 제 1 세트의 빈 웨이에 상기 쓰기 요청된 데이터를 저장하는 단계
를 포함하는 캐시 장치의 제어 방법. - 청구항 18에 있어서, 상기 쓰기 요청된 데이터를 저장하는 단계는
상기 제 1 세트에 포함된 어느 한 웨이를 상기 제 2 세트의 빈 웨이로 이동하는 단계 및
상기 제 1 세트의 빈 웨이에 상기 쓰기 요청된 데이터를 저장하는 단계
를 포함하는 캐시 장치의 제어 방법. - 청구항 18에 있어서, 상기 제 2 웨이가 존재하지 않는 경우,
상기 제 1 세트에 포함된 어느 한 웨이를 상기 제 2 세트로 이동하는 단계;
상기 제 1 세트의 빈 웨이에 상기 쓰기 요청된 데이터를 저장하는 단계
를 더 포함하는 캐시 장치의 제어 방법. - 청구항 18에 있어서, 상기 연관된 제 2 세트가 존재하지 않는 경우
상기 제 1 세트에 빈 웨이가 존재하는지 확인하는 단계 및
상기 제 1 세트에 빈 웨이가 존재하는 경우 상기 빈 웨이에 상기 쓰기 요청된 데이터를 저장하는 단계를 더 포함하는 캐시 장치의 제어 방법. - 청구항 22에 있어서, 상기 제 1 세트에 빈 웨이가 존재하지 않는 경우
상기 제 2 캐시에서 상기 제 1 세트와 연관될 수 있는 제 3 세트가 존재하는지 확인하는 단계;
상기 제 3 세트가 존재하는 경우 상기 제 3 세트를 상기 제 1 세트와 연관시키는 단계;
상기 제 1 세트의 어느 한 웨이를 상기 제 3 세트로 이동시키는 단계 및
상기 제 1 세트의 빈 웨이에 상기 쓰기 요청된 데이터를 저장하는 단계;
를 더 포함하는 캐시 장치의 제어 방법. - 청구항 23에 있어서, 상기 제 3 세트가 존재하는지 확인하는 단계는
상기 제 1 캐시의 어느 세트와도 연관되지 않는 세트 또는 상기 제 2 캐시에서 카운트 값이 특정값을 가지는 세트가 존재하는지 확인하는 단계
를 포함하는 캐시 장치의 제어 방법. - 청구항 24에 있어서, 상기 제 2 캐시에서 카운트 값이 특정값을 가지는 세트가 상기 제 3 세트로 선택되는 경우
상기 제 3 세트에 포함된 웨이 중 더티 플래그가 활성화된 웨이를 저장 장치로 추방하는 단계 및
상기 제 3 세트에 포함된 모든 웨이를 빈 웨이로 설정하는 단계
를 포함하는 캐시 장치의 제어 방법. - 다수의 웨이를 구비하는 제 1 세트를 포함하는 제 1 캐시와 다수의 웨이를 포함하고 상기 제 1 세트와 연관될 수 있는 제 2 세트와 상기 제 2 세트에 대한 접근 빈도를 나타내는 카운트 값을 저장하는 제 2 캐시를 포함하는 캐시 장치에서
상기 제 2 세트에 대하여 읽기 또는 쓰기를 수행하는 경우 상기 제 2 세트의 상기 카운트 값을 증가시키는 단계 및
일정한 주기로 상기 카운트를 감소시키는 단계
를 포함하는 캐시 장치의 제어 방법. - 청구항 26에 있어서, 상기 카운트 값이 특정값을 가지는 제 2 세트와 상기 제 1 세트를 연관시키는 단계를 더 포함하는 캐시 장치의 제어 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130097042A KR20150019788A (ko) | 2013-08-16 | 2013-08-16 | 캐시 장치 및 그 제어 방법 |
US14/333,185 US9846647B2 (en) | 2013-08-16 | 2014-07-16 | Cache device and control method threreof |
CN201410400789.XA CN104375955B (zh) | 2013-08-16 | 2014-08-14 | 高速缓冲存储器设备及其控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130097042A KR20150019788A (ko) | 2013-08-16 | 2013-08-16 | 캐시 장치 및 그 제어 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150019788A true KR20150019788A (ko) | 2015-02-25 |
Family
ID=52467677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130097042A KR20150019788A (ko) | 2013-08-16 | 2013-08-16 | 캐시 장치 및 그 제어 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9846647B2 (ko) |
KR (1) | KR20150019788A (ko) |
CN (1) | CN104375955B (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018133038A (ja) * | 2017-02-17 | 2018-08-23 | Necプラットフォームズ株式会社 | 情報処理装置、制御装置、制御方法及びプログラム |
CN108459970B (zh) * | 2017-02-17 | 2021-02-12 | 华为技术有限公司 | 一种查询缓存信息的方法及装置 |
KR20200008759A (ko) * | 2018-07-17 | 2020-01-29 | 에스케이하이닉스 주식회사 | 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법 |
US11086791B2 (en) | 2019-08-29 | 2021-08-10 | Micron Technology, Inc. | Methods for supporting mismatched transaction granularities |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7136967B2 (en) * | 2003-12-09 | 2006-11-14 | International Business Machinces Corporation | Multi-level cache having overlapping congruence groups of associativity sets in different cache levels |
US7395373B2 (en) * | 2005-09-20 | 2008-07-01 | International Business Machines Corporation | Set-associative cache using cache line decay counts and set overflow |
US20070094450A1 (en) * | 2005-10-26 | 2007-04-26 | International Business Machines Corporation | Multi-level cache architecture having a selective victim cache |
US7856532B2 (en) * | 2006-11-03 | 2010-12-21 | Arm Limited | Cache logic, data processing apparatus including cache logic, and a method of operating cache logic |
JP2013065150A (ja) * | 2011-09-16 | 2013-04-11 | Toshiba Corp | キャッシュメモリ装置、プロセッサ、および情報処理装置 |
CN103019954A (zh) * | 2011-09-22 | 2013-04-03 | 瑞昱半导体股份有限公司 | 高速缓存装置与高速缓存数据存取方法 |
JP5791529B2 (ja) * | 2012-01-19 | 2015-10-07 | ルネサスエレクトロニクス株式会社 | メモリ制御装置及び制御方法並びに情報処理装置 |
CN104169892A (zh) * | 2012-03-28 | 2014-11-26 | 华为技术有限公司 | 并发访问的组相联溢出缓存 |
-
2013
- 2013-08-16 KR KR20130097042A patent/KR20150019788A/ko not_active Application Discontinuation
-
2014
- 2014-07-16 US US14/333,185 patent/US9846647B2/en active Active
- 2014-08-14 CN CN201410400789.XA patent/CN104375955B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104375955B (zh) | 2019-05-03 |
US20150052310A1 (en) | 2015-02-19 |
CN104375955A (zh) | 2015-02-25 |
US9846647B2 (en) | 2017-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11579773B2 (en) | Memory system and method of controlling memory system | |
CN108427647B (zh) | 读取数据的方法以及混合存储器模块 | |
US8892520B2 (en) | Storage device including a file system manager for managing multiple storage media | |
US8639883B2 (en) | Reducing write amplification in a cache with flash memory used as a write cache | |
US8949544B2 (en) | Bypassing a cache when handling memory requests | |
JP5434738B2 (ja) | ディスク装置 | |
US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
US20110231598A1 (en) | Memory system and controller | |
US9063862B2 (en) | Expandable data cache | |
US8572325B2 (en) | Dynamic adjustment of read/write ratio of a disk cache | |
US20100185806A1 (en) | Caching systems and methods using a solid state disk | |
US11645006B2 (en) | Read performance of memory devices | |
JP2019056972A (ja) | メモリシステムおよびメモリシステムの制御方法 | |
US20170091099A1 (en) | Memory controller for multi-level system memory having sectored cache | |
US20090094391A1 (en) | Storage device including write buffer and method for controlling the same | |
CN112214420A (zh) | 数据缓存方法、存储控制装置、及存储设备 | |
JP2022188903A (ja) | 情報処理装置および方法 | |
JP4585599B1 (ja) | データ記憶装置及びキャッシュ制御方法 | |
JP2020030822A (ja) | インメモリコンピューティングのための大容量メモリシステム | |
KR20150019788A (ko) | 캐시 장치 및 그 제어 방법 | |
US11023381B2 (en) | System and method for a hit-based ratio write cache operation mode in a storage controller | |
KR102195896B1 (ko) | 디스크 캐시 제어 장치 및 방법 | |
US9009426B1 (en) | Methods, computer readable media, and systems for optimizing cache utilization | |
US9454488B2 (en) | Systems and methods to manage cache data storage | |
GB2514571A (en) | Cache allocation in a computerized system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |