KR102094163B1 - 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템 - Google Patents
하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템 Download PDFInfo
- Publication number
- KR102094163B1 KR102094163B1 KR1020130102696A KR20130102696A KR102094163B1 KR 102094163 B1 KR102094163 B1 KR 102094163B1 KR 1020130102696 A KR1020130102696 A KR 1020130102696A KR 20130102696 A KR20130102696 A KR 20130102696A KR 102094163 B1 KR102094163 B1 KR 102094163B1
- Authority
- KR
- South Korea
- Prior art keywords
- page
- cache
- class
- stored
- data
- 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/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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
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
하이브리드 캐시 메모리 시스템에서 그 캐시를 관리하는 장치에 관한 것이다. 일 실시예에 따른 캐시 관리 장치는 데이터의 I/O 요청을 모니터링하여 제1 캐시에 저장된 각 페이지의 접근 패턴을 분석하는 접근 패턴 분석부와, 각 페이지에 대한 접근 패턴이 분석되면 그 분석 결과를 기초로 각 페이지의 클래스를 결정하는 페이지 클래스 관리부 및 그 페이지의 클래스 결정 결과를 기초로 제2 캐시에 저장되도록 하는 클래스를 가진 페이지를 제2 캐시로 이동시키는 페이지 이동 관리부를 포함할 수 있다.
Description
하이브리드 캐시 기반의 메모리 시스템에서 그 캐시를 관리하는 장치 및 방법과 그 메모리 시스템에 관한 것이다.
일반적으로 데이터의 I/O 요청을 신속하게 처리하기 위해 OS(Operating System)의 커널에서 관리하는 RAM 기반의 캐시를 주로 이용하고 있다. 하지만, OS의 커널에서 관리하는 RAM 기반의 캐시는 HDD(Hard Disk Drive)나 SSD(Solid State Drive)와 같은 저장 장치에 비해 상대적으로 고가인 RAM을 캐시로 사용하기 때문에 공간상의 제약이 크고, 시스템에서 사용되고 있지 않은 유휴 RAM 영역을 캐시로 이용하므로, RAM의 요구량이 갑자기 증가하게 되면 캐시 영역이 감소하게 되어 I/O 처리 성능의 저하가 발생한다. 이로 인해 시스템의 I/O 처리 성능의 편차가 매우 불규칙해질 수 있다.
이러한 RAM 기반의 캐시의 한계를 극복하기 위해 최근에는 HDD나 SSD와 같은 보조 기억 장치에 캐시를 두어 I/O 처리 속도를 향상시키는 방법이 구현되고 있다. 하지만, 보조 기억 장치에 캐시를 구현하는 일반적인 방법 역시 커널의 블록 레이어에 구현되어 커널에 의해 관리되므로 RAM 기반의 캐시에 의해 서비스되는 페이지를 중복하여 저장하는 문제가 발생하고, 최신 데이터들이 이미 RAM 기반의 캐시에 의해 서비스되므로 보조 기억 장치에 구현된 캐시의 캐시 적중률(Hit Ratio)을 높일 수 없다는 문제가 있다.
보조 기억 장치에 할당된 캐시를 페이지 캐시 레이어에서 동작하도록 하는 캐시 관리 장치 및 방법이 제시된다. 캐시 관리 장치를 통해 안정적인 캐시 공간을 확보하고 데이터 I/O 처리 성능을 향상시키는 메모리 시스템이 제시된다.
일 양상에 따르면, 캐시 관리 장치는 데이터 I/O 요청을 모니터링하여 제1 캐시에 저장된 각 페이지에 대한 접근 패턴을 분석하는 접근 패턴 분석부, 각 페이지에 대한 접근 패턴 분석 결과를 기초로 각 페이지의 클래스를 결정하는 페이지 클래스 관리부 및 그 결정 결과를 기초로 제2 캐시에 저장되도록 하는 클래스를 가진 페이지를 제2 캐시로 이동시키는 페이지 이동 관리부를 포함할 수 있다.
이때, 제1 캐시는 RAM 기반의 주 기억 장치에 할당되고, 제2 캐시는 SSD(Solid State Drive) 를 포함하는 보조 기억 장치에 할당될 수 있다.
또한, 제1캐시는 데이터 I/O 요청에 의해 보조 기억 장치 또는 제2캐시에서 접근된 데이터를 저장하고, 제2캐시는 제1캐시에 저장된 페이지들 중 일부를 선별적으로 저장할 수 있다.
접근 패턴 분석부는 각 페이지에 대해 단위 주기 동안 I/O 요청이 발생한 횟수인 접근 카운트를 산출하고, 그 접근 카운트를 기초로 접근 패턴을 분석할 수 있다.
접근 패턴 분석부는 각 페이지별로 I/O 요청이 발생하는 주기인 접근 주기를 산출하고, 그 접근 주기를 기초로 접근 패턴을 분석할 수 있다.
페이지 이동 관리부는 시스템 이벤트 발생시 페이지 이동, 소정 시간 단위로 페이지 이동 및 소정 페이지 청크(chunk) 크기 단위로 페이지 이동하도록 하는 정책과, 그 정책들의 둘 이상을 조합한 정책 중의 어느 하나의 정책에 따라 제2 캐시에 저장되도록 하는 클래스를 가진 페이지를 제2 페이지 캐시에 이동시킬 수 있다.
이때, 소정 페이지 청크 크기는 제2 캐시가 할당된 보조 기억 장치의 채널 구조 및 지우기 블록 사이즈(erase block size) 중의 하나 이상을 포함하는 보조 기억 장치의 특성을 고려하여 결정될 수 있다.
페이지 클래스 관리부는 어느 페이지가 제2 캐시에 저장되도록 하는 클래스로 결정되면, 그 페이지가 OS(Operating System)에 의해 임의로 버려지지 않도록 그 페이지의 노드 정보를 갱신할 수 있다.
페이지 클래스 관리부는 어느 페이지가 상기 제2 캐시에 저장되도록 하는 클래스로 결정되면, 그 페이지에 대한 링크 정보를 이동 버퍼에 저장하고, 페이지 이동 관리부는 이동 버퍼에 저장된 페이지의 링크 정보를 기초로 제1 캐시에 저장된 페이지를 제2 캐시에 전송할 수 있다.
페이지 클래스 관리부는 어느 페이지에 대한 클래스가 제2 캐시에 저장되도록 하는 클래스에서 OS에 의해 임의로 버려질 수 있는 클래스로 변경되면, 제2 캐시에 저장된 그 페이지가 임의의 시점에 버려질 수 있다는 것을 지시하도록 그 페이지에 대한 메타 정보의 갱신 요청 정보를 제2 캐시에 전송할 수 있다.
페이지 클래스 관리부는 어느 페이지에 대한 클래스 결정 결과, 그 페이지의 클래스가 제2 캐시에 저장되도록 하는 클래스에서 OS에 의해 임의로 버려질 수 있는 클래스로 변경되면, 제1 캐시에서 그 페이지가 OS에 의해 버려지는 것이 가능하도록 페이지 노드 정보를 갱신할 수 있다.
페이지 이동 관리부는 제2 캐시 잔여 용량 정보를 기초로 페이지를 저장할 공간이 부족한지를 판단하고, 부족한 경우 제2 캐시에 가용 공간을 확보하도록 요청하는 정보를 전송할 수 있다.
일 양상에 따르면, 캐시 관리 방법은 데이터 I/O 요청을 모니터링하여 제1 캐시에 저장된 각 페이지에 대한 접근 패턴을 분석하는 단계, 각 페이지에 대한 접근 패턴 분석 결과를 기초로 각 페이지의 클래스를 결정하는 단계 및 그 결정 결과를 기초로 제2 캐시에 저장되도록 하는 클래스를 가진 페이지를 제2 캐시로 이동시키는 단계를 포함할 수 있다.
이때, 제1캐시는 데이터 I/O 요청에 의해 보조 기억 장치 또는 제2캐시에서 접근된 데이터를 저장하고, 제2캐시는 제1캐시에 저장된 페이지들 중 일부를 선별적으로 저장할 수 있다.
접근 패턴 분석 단계는 각 페이지에 대해 단위 주기 동안 I/O 요청이 발생한 횟수인 접근 카운트를 산출하고, 그 접근 카운트를 기초로 접근 패턴을 분석할 수 있다.
접근 패턴 분석 단계는 각 페이지별로 I/O 요청이 발생하는 주기인 접근 주기를 산출하고, 그 접근 주기를 기초로 접근 패턴을 분석할 수 있다.
페이지 클래스 관리 단계는 어느 페이지가 제2 캐시에 저장되도록 하는 클래스로 결정되면, 그 페이지가 OS(Operating System)에 의해 임의로 버려지지 않도록 그 페이지의 노드 정보를 갱신하는 단계를 포함할 수 있다.
페이지 클래스 관리 단계는 어느 페이지가 제2 캐시에 저장되도록 하는 클래스로 결정되면, 그 페이지에 대한 링크 정보를 이동 버퍼에 저장하는 단계를 포함할 수 있고, 페이지 이동 관리 단계는 이동 버퍼에 저장된 페이지의 링크 정보를 기초로 상기 제1 캐시에 저장된 페이지를 제2 캐시에 전송할 수 있다.
페이지 클래스 관리 단계는 어느 페이지에 대한 클래스가 제2 캐시에 저장되도록 하는 클래스에서 OS에 의해 임의로 버려질 수 있는 클래스로 변경되면, 제2 캐시에 저장된 그 페이지가 임의의 시점에 버려질 수 있다는 것을 지시하도록 그 페이지에 대한 메타 정보의 갱신 요청 정보를 제2 캐시에 전송하는 단계를 포함할 수 있다.
페이지 클래스 관리 단계는 어느 페이지에 대한 클래스 결정 결과, 그 페이지의 클래스가 제2 캐시에 저장되도록 하는 클래스에서 OS에 의해 임의로 버려질 수 있는 클래스로 변경되면, 제1 캐시에서 그 페이지가 OS에 의해 버려지는 것이 가능하도록 페이지 노드 정보를 갱신하는 단계를 포함할 수 있다.
페이지 이동 관리 단계는 제2 캐시 잔여 용량 정보를 기초로 페이지를 저장할 공간이 부족한지를 판단하는 단계 및 그 판단 결과 저장할 공간이 부족한 경우 제2 캐시에 가용 공간을 확보하도록 요청하는 정보를 전송하는 단계를 포함할 수 있다.
일 양상에 따르면, 메모리 시스템은 제1 캐시를 포함하는 주 기억 장치, 제2 캐시를 포함하는 보조 기억 장치 및 데이터 I/O 요청을 모니터링하여 제1 캐시에 저장된 각 페이지의 접근 패턴을 분석하고, 각 페이지에 대한 접근 패턴 분석 결과를 기초로 각 페이지의 클래스를 결정하며, 제2 캐시에 저장되도록 하는 클래스를 가진 페이지를 제2 캐시로 이동시키는 캐시 관리 장치를 포함할 수 있다.
이때, 주 기억 장치는 RAM 기반의 메모리를 포함하고, 보조 기억 장치는 NAND 플래시 기반의 SSD(Solid State Drive)를 포함할 수 있다.
또한, 제1캐시는 데이터 I/O 요청에 의해 보조 기억 장치 또는 제2캐시에서 접근된 데이터를 저장하고, 제2캐시는 제1캐시에 저장된 페이지들 중 일부를 선별적으로 저장할 수 있다.
또한, 주 기억 장치는 이동 버퍼를 더 포함할 수 있고, 캐시 관리 장치는 어느 페이지가 제2 캐시에 저장되도록 하는 클래스로 결정되면 그 페이지에 대한 링크 정보를 이동 버퍼에 저장할 수 있다.
캐시 관리 장치는 미리 설정된 정책에 따라 이동 버퍼에 저장된 페이지의 링크 정보를 기초로 해당하는 페이지를 포함하는 쓰기 요청 정보를 제2 캐시에 전송할 수 있다.
보조 기억 장치는 캐시 관리 장치로부터 제2 캐시에 저장될 페이지를 포함하는 쓰기 요청 정보가 수신되면, 페이지를 미리 정의된 페이지 청크 크기 단위로 제2 캐시에 저장할 수 있다.
보조 기억 장치는 캐시 관리 장치로부터 제2 캐시에 가용 공간을 확보하도록 요청하는 정보가 수신되면 소정 정책에 따라 제2 캐시에 저장된 페이지를 페이지 청크 단위로 지울 수 있다.
소정 정책은 제2 캐시에 저장된 순서가 오래된 페이지를 포함하는 페이지 청크를 우선하여 지우는 정책, 소정의 메타 정보를 가진 페이지가 많이 포함된 페이지 청크를 우선하여 지우는 정책 및 임의로 어느 하나의 페이지 청크를 선택하여 지우는 정책을 포함하는 정책들 중에서 선택된 어느 하나일 수 있다.
메모리 시스템에서 보조 기억 장치에 할당된 캐시를 페이지 캐시 레이어에서 동작하도록 관리하여 안정적인 캐시 공간을 확보하고 데이터 I/O 처리 성능을 향상시킬 수 있다.
도 1a 및 도 1b는 일반적인 RAM 기반의 페이지 캐시 메모리 시스템을 설명하기 위한 도면이다.
도 2a 및 도 2b는 일반적인 하이브리드 블록 페이지 캐시 메모리 시스템을 설명하기 위한 도면이다.
도 3a 및 도 3b는 일 실시예에 따른 하이브리드 페이지 캐시 메모리 시스템을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 캐시 관리 장치의 상세 블록도이다.
도 5a는 일 실시예에 따른 캐시 관리 장치에서 각 페이지를 분류하기 위한 클래스의 일 예이다.
도 5b는 일 실시예에 따른 캐시 관리 장치에서 관리되는 페이지 노드의 일 예이다.
도 6a 및 도 6b는 일 실시예에 따라 페이지 청크 단위로 제2 캐시로 페이지가 이동되는 것을 설명하기 위한 도면이다.
도 7a 및 도 7b는 일 실시예에 따라 제2 캐시에서 가용 공간을 확보하는 것을 설명하기 위한 도면이다.
도 8은 일 실시예에 따라 하이브리드 페이지 캐시 메모리 시스템에서 캐시 관리 방법의 흐름도이다.
도 9는 일 실시예에 따른 캐시 관리 방법 중에서 페이지 클래스를 결정하는 절차의 일 예이다.
도 10은 일 실시예에 따른 캐시 관리 방법 중에서 제2 캐시에 페이지를 이동하는 절차의 일 예이다.
도 2a 및 도 2b는 일반적인 하이브리드 블록 페이지 캐시 메모리 시스템을 설명하기 위한 도면이다.
도 3a 및 도 3b는 일 실시예에 따른 하이브리드 페이지 캐시 메모리 시스템을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 캐시 관리 장치의 상세 블록도이다.
도 5a는 일 실시예에 따른 캐시 관리 장치에서 각 페이지를 분류하기 위한 클래스의 일 예이다.
도 5b는 일 실시예에 따른 캐시 관리 장치에서 관리되는 페이지 노드의 일 예이다.
도 6a 및 도 6b는 일 실시예에 따라 페이지 청크 단위로 제2 캐시로 페이지가 이동되는 것을 설명하기 위한 도면이다.
도 7a 및 도 7b는 일 실시예에 따라 제2 캐시에서 가용 공간을 확보하는 것을 설명하기 위한 도면이다.
도 8은 일 실시예에 따라 하이브리드 페이지 캐시 메모리 시스템에서 캐시 관리 방법의 흐름도이다.
도 9는 일 실시예에 따른 캐시 관리 방법 중에서 페이지 클래스를 결정하는 절차의 일 예이다.
도 10은 일 실시예에 따른 캐시 관리 방법 중에서 제2 캐시에 페이지를 이동하는 절차의 일 예이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 기재된 기술의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템의 실시예들을 도면들을 참고하여 자세히 설명하도록 한다.
도 1a 및 도 1b는 일반적인 RAM(Random Access Memory) 기반의 페이지 캐시 메모리 시스템을 설명하기 위한 도면이다.
도 1a를 참조하면, 일반적인 메모리 시스템(100)은 주기억장치의 하나인 RAM에 페이지 캐시(121)가 할당되고, RAM(120)에 할당된 페이지 캐시(121)에서 I/O 요청 인터페이스(110)를 통해 입력되는 데이터 I/O 요청을 서비스한다. I/O 요청 인터페이스(110)를 통해 데이터의 I/O 요청이 입력되면 OS(Operating System)의 커널은 먼저 페이지 캐시(121)를 확인하여 요청한 데이터가 존재하면 보조기억장치인 디스크(140)에 접근할 필요없이 바로 페이지 캐시(121)에 저장된 데이터를 I/O 요청 인터페이스(110)를 통해 출력한다. 반면, 페이지 캐시(121)에 요청한 데이터가 존재하지 않으면, 블록 레이어(130)를 통해 디스크(140)의 물리적인 주소에 접근하여 해당하는 데이터를 읽고, 그 데이터를 I/O 요청 인터페이스를 통해 서비스한다. 이때, 그 데이터에 대한 다음 I/O 요청을 신속하게 처리하기 위해 페이지 캐시(121)에 읽은 데이터를 저장한다.
도 1b를 더 참조하여 예를 들어 설명하면, 애플리케이션(10)에서 t1, t2 및 t3 시점에 각각 요청한 데이터 A, B 및 C는 페이지 캐시(121)에 해당 데이터가 존재하지 않으므로 디스크(140)에서 읽어 서비스되고 페이지 캐시(121)에 저장된다. 이후, 데이터 C에 대해서는 t4, t7, t8, t9 및 t11 시점에 계속해서 I/O 요청이 입력되어 바로 페이지 캐시(121)에서 서비스되지만, t5 시점 이후의 데이터 A와, t8 시점과 t9 시점 사이의 데이터 D 및 B는 커널에서 관리하는 임의의 시간 동안 다음 요청이 입력되지 않아 커널에 의해 페이지 캐시(121)에서 버려진다. 그 이후, 데이터 B에 대해서는 t10 시점에 다시 I/O 요청이 입력되어 디스크에서 읽어 서비스되고 다시 페이지 캐시(121)에 저장된다.
이와 같이, 일반적인 RAM 기반의 페이지 캐시 메모리 시스템(100)은 속도가 빠른 RAM을 기반으로 한다는 점에서 비교적 신속하게 데이터 I/O 요청에 대해 서비스할 수 있지만, 할당될 수 있는 페이지 캐시 용량의 한계가 존재한다.
도 2a 및 도 2b는 일반적인 하이브리드 블록 페이지 캐시 메모리 시스템을 설명하기 위한 도면이다.
도 2a를 참조하면, 일반적인 하이브리드 블록 페이지 캐시 메모리 시스템(200)은 RAM(220)에 할당된 페이지 캐시(221) 외에도, 비교적 대용량 저장 장치인 보조기억장치(240), 예컨대, SSD(Solid State Drive)(240)에 페이지 캐시(241)를 두어 두 개의 페이지 캐시(221,241)를 통해 데이터 I/O 요청을 서비스함으로써, 도 1a의 일반적인 RAM 기반의 페이지 캐시 메모리 시스템(100)의 제약 사항인 페이지 캐시의 용량 문제를 해결할 수 있다.
하지만, 이와 같은, 일반적인 하이브리드 블록 페이지 캐시 메모리 시스템(200)은 아래에서 도 2b를 참조하여 설명하는 바와 같이, 커널의 블록 레이어(230)를 통해 SSD(240)에 할당된 페이지 캐시(241)를 관리하는 구조라는 점에서 캐시 적중률(cache hit ratio)을 높일 수 없다는 한계가 있다.
도 2b를 더 참조하여 예를 들어 설명하면, 애플리케이션(20)에서 t1, t2, t3, t5 시점에 각각 요청한 데이터 A, B, C 및 D는 제1 페이지 캐시(221)에 해당 데이터가 존재하지 않으므로, 커널의 블록 레이어(230)를 통해 제2 페이지 캐시(241)에 그 데이터들이 존재하는지 확인한다. 제2 페이지 캐시(241)에도 해당하는 데이터들이 존재하지 않으므로, 디스크(240)에서 해당 데이터들을 읽어 서비스하고, 그 데이터들을 제1 페이지 캐시(221)와 제2 페이지 캐시(222)에 저장한다.
이후, 데이터 C에 대해서는 t4, t7, t8, t9 및 t11 시점에 계속해서 I/O 요청이 입력되어 바로 페이지 캐시(221)에서 서비스되지만, t5 시점 이후의 데이터 A와, t8 시점과 t9 시점 사이의 데이터 D 및 B는 커널에서 관리하는 임의의 시간 동안 다음 요청이 입력되지 않아 커널에 의해 페이지 캐시(221)에서 버려진다. 그 이후, 데이터 B에 대해서는 t10 시점에 다시 I/O 요청이 입력되고, 아직 제2 페이지 캐시(241)에서는 버려지지 않은 상태이므로, 제2 페이지 캐시(241)에서 그 데이터 B를 읽어 서비스하고 다시 페이지 캐시(221)에 저장한다.
이와 같이, 일반적인 하이브리드 기반의 페이지 캐시 메모리 시스템(200)은 제1 페이지 캐시(221)의 용량의 한계를 극복할 수 있다는 장점이 있다. 하지만, 데이터 C와 같이 데이터 I/O 요청이 빈번하게 발생하는 데이터들은 계속해서 제1 페이지 캐시(221)에서 서비스되고 데이터 A는 I/O 요청이 거의 발생하지 않으므로 제2 페이지 캐시(241)에 접근하는 빈도가 매우 적게 된다. 이처럼, 제2 페이지 캐시(241)에 대한 캐시 적중률은 낮으나 제2 페이지 캐시(241)에 굳이 접근 가능성이 적은 데이터를 저장하고 있어야 하므로 공간의 낭비가 발생하게 된다.
도 3a 및 도 3b는 일 실시예에 따른 하이브리드 페이지 캐시 메모리 시스템을 설명하기 위한 도면이다.
도 3a를 참조하면, 하이브리드 페이지 캐시 메모리 시스템(300)은 주기억장치(320)와 보조기억장치(340)를 포함한다.
주기억장치(320)는 RAM 기반의 비활성 메모리일 수 있다. 예를 들어, 주기억장치는 MRAM(Magnetic RAM), PRAM(Phase-change RAM) 및 DRAM과 같은 비활성 메모리를 포함할 수 있다.
보조 기억 장치(340)는 NAND 플래시 기반의 SSD, PRAM, MRAM 등과 같은 비활성 메모리 및 HDD 중 적어도 하나를 포함할 수 있다. 도시된 예에서 보조기억장치(340)는 HDD 및 SSD로 구성되고 있으나, 반드시 이에 한정되는 것은 아니다.
한편, 주기억장치(320)와 보조기억장치(340)는 각각 제1 캐시(321)과 제2 캐시(341)를 포함한다. 특히, 제2 캐시(341)는 데이터 I/O 처리 성능을 향상시키기 위해 HDD에 비해 월등히 빠른 I/O 속도를 보이는 SSD에 할당될 수 있고, 이때, SSD는 단일의 SSD 또는 RAID 또는 그 밖의 다양한 방식으로 엮어진 SSD 어레이(array)일 수 있다. 또한, 하이브리드 페이지 캐시 메모리 시스템(300)은 각 페이지 캐시(321,341)를 통해 커널의 블록 레이어(330) 이전 단계에서 데이터의 I/O 요청을 서비스할 수 있도록 하는 캐시 관리 장치(350)를 더 포함할 수 있다.
캐시 관리 장치(350)는 I/O 요청 인터페이스(310)를 통해 입력되는 데이터 I/O 요청을 모니터링하여 제1 캐시(321)에 저장된 각 페이지의 접근 패턴을 분석한다. 또한, 그 분석 결과를 기초로 각 페이지의 클래스를 결정할 수 있다.
이때, 클래스는 예를 들어 제1 캐시(321)에 저장되고 OS의 커널에 의해 임의로 버려지지 않도록 하는 클래스인 'class-1'과, 제2 캐시(341)에 저장되고 OS에 의해 임의로 버려지지 않도록 하는 클래스인 'class-2' 및 제1 캐시(321)에 저장되어 있으나 OS에 의해 언제든지 버려지는 것이 가능한 클래스인 'class-3'으로 구분될 수 있다.
이와 같이, 각 페이지에 대해 클래스가 결정되면 캐시 관리 장치(350)는 결정된 클래스를 기초로 제2 캐시(341)에 저장되도록 하는 클래스인 'class-2'를 가진 페이지를 제2 캐시(341)로 이동시킬 수 있다.
한편, 도 3a를 참조하면, 하이브리드 페이지 캐시 메모리 시스템(300)은 이동 버퍼(322)를 더 포함할 수 있고, 그 이동 버퍼(322)는 제1 캐시(321)를 포함하는 주기억장치(320)에 구현될 수 있다.
캐시 관리 장치(350)는 각 페이지에 대한 클래스가 결정되면 'class-2'를 가진 페이지에 대한 정보를 이동 버퍼(322)에 저장할 수 있다. 이때, 그 페이지에 대한 정보는 제1 캐시(321)에 저장된 페이지의 전체 정보가 아니라 그 대응되는 페이지의 링크 정보일 수 있다. 캐시 관리 장치(350)는 이동 버퍼(322)에 페이지의 링크 정보가 저장되고, 미리 설정된 정책에 부합하는 상황이 발생하면 그 이동 버퍼(322)에 저장된 페이지의 링크 정보를 기초로 제1 캐시(321)에서 해당하는 페이지 정보를 포함하는 쓰기 요청 정보를 제2 캐시(341)에 전송할 수 있다.
또한, 캐시 관리 장치(350)는 제2 캐시(341)에 충분한 가용 공간이 존재하는지를 확인하고, 부족한 경우 제2 캐시(341)가 할당된 보조기억장치(340)에 공간을 확보하도록 요청하는 정보를 전송할 수 있다.
한편, 제2 캐시(341)가 할당된 보조기억장치(340)는 캐시 관리 장치(350)로부터 쓰기 요청 정보가 수신되면, 그 쓰기 요청 정보에 포함된 페이지 정보를 미리 설정된 페이지 청크 크기 단위로 제2 캐시(341)에 저장할 수 있다. 보조기억장치(340)는 캐시 관리 장치(350)로부터 공간 확보 요청 정보가 수신되거나 소정의 주기 단위로 제2 캐시(341)에 저장된 페이지 청크를 지우는 것과 같이 미리 정의되어 있는 규칙에 따라 제2 캐시(341)의 공간을 확보할 수 있다.
이때, 제2 캐시(341)의 공간을 확보하는 정책은 미리 설정될 수 있으며, 예컨대, 제2 캐시(341)에 저장된 순서가 오래된 페이지를 포함하는 페이지 청크를 우선하여 지우는 정책 또는 소정의 메타 정보를 가진 페이지가 많이 포함되어 있는 페이지 청크를 우선하여 지우는 정책 또는, 임의로 어느 하나의 페이지 청크를 선택하여 지우는 정책을 포함할 수 있다.
한편, 보조기억장치(340)는 캐시관리장치(350)로부터 특정 페이지에 대한 메타 정보 갱신 요청 정보를 수신하거나 제2 캐시(341)에서 I/O 요청을 서비스한 후에는 해당 페이지의 메타 정보를 갱신할 수 있다. 이때, 메타 정보는 특정 페이지가 제2 캐시(341)에서 임의로 버려질 수 있다는 것을 지시하는 '_to_be_discarded' 및, I/O 요청에 따라 제2 캐시(341)에서 서비스하고 현재 제1 캐시(321)에 캐시되어 있다는 것을 지시하는 '_now_in_tier_1'를 포함할 수 있다.
본 실시예에 따르면, I/O 요청이 발생한 데이터가 제1 캐시(321)와 제2 캐시(341)에 저장되어 있지 않은 경우에는 보조기억장치(340)에서 읽어 블록 레이어(330)를 거쳐 경로 P1을 통해 그 I/O 요청을 서비스한다. 이때, 서비스되는 데이터는 제 1 캐시(321)에는 저장되나, 제2캐시(341)에는 저장되지 않는다.
즉, I/O 요청된 데이터가 제1캐시(321) 및 제2캐시(341)에 저장되어 있지 않은 경우, 보조기억장치(340)를 통해 I/O 요청이 서비스된다. 이때, I/O 요청에 의해 보조기억장치(340)에서 접근된 데이터는 제1캐시(321)에만 저장되며, 제2캐시(341)는 제1캐시(321)에 저장된 각 페이지의 클래스에 따라 일부의 페이지를 선별적으로 저장한다. 이에 대한, 보다 상세한 설명은 후술하기로 한다.
한편, I/O 요청된 데이터가 제1캐시(321)에는 저장되어 있지 않으나, 제2캐시(341)에는 저장되어 있는 경우, 제2캐시(341)를 통해 I/O 요청이 서비스된다. 이때, I/O 요청에 의해 제2캐시(341)에서 접근된 데이터는 제1캐시(321)에 저장된다.
제1 캐시(321)과 제2 캐시(341) 사이의 데이터 이동은 블록레이어(330)를 거치지 않고 경로 P2를 통해 이루어진다. 또한, 제2 캐시(341)에서 I/O 요청을 서비스하는 경우에는 블록레이어(330)를 통하는 경로 P1을 통해 서비스하는 것도 가능하지만, 주로 블록레이어(330)를 통하지 않는 경로 P2를 통해 서비스함으로써 블록레이어(330)를 반드시 통해야 하는 일반적인 블록 페이지 캐시 메모리 시스템의 한계를 극복할 수 있다.
도 3b는 일 실시예에 따른 하이브리드 페이지 캐시 메모리 시스템(300)에서 데이터의 I/O 요청에 따라 각 캐시(321,341)에 접근되는 모습을 보여준다.
도 3b를 참조하면, 도 2b와 달리, t1, t2, t3 및 t5 시점에 애플리케이션(30)의 I/O 요청에 따라 디스크(340)로부터 읽혀져 서비스되는 데이터 A, B, C, D는 제1 캐시(321)에는 저장되나, 제2 캐시(341)에는 바로 저장되지 않는다. 또한, 도 2a 및 도 2b를 통해 설명한 바와 같이, 일반적인 하이브리드 블록 캐시 메모리 시스템(200)에서는 t5 시점 이후의 데이터 A와, t8 시점과 t9 시점 사이의 데이터 D 및 B는 커널에서 관리하는 임의의 시간 동안 다음 요청이 입력되지 않아 OS에 의해 페이지 캐시(221)에서 버려진다.
하지만, 일 실시예의 하이브리드 페이지 캐시 메모리 시스템(300)은 데이터 A, B 및 D의 접근 패턴 분석 결과를 기초로 데이터 A에 대해서는 'class-3'으로 결정하여 임의의 시점 t5에 버려질 수 있도록 하고, 데이터 B와 D는 'class-2'로 결정하여 제2 캐시(341)에 저장되도록 할 수 있다. 그리고, t10 및 t12 시점에 데이터 B와 D에 대한 I/O 요청에 따라 제2 캐시(341)에서 서비스되도록 하고 그 데이터들을 제1 캐시(321)에 저장할 수 있다.
본 실시예에 따르면, 커널이 관리하는 임의의 시간 동안에는 I/O 요청이 발생하지 않아 제1 캐시(321)에서는 커널에 의해 버려지더라도 일정한 주기를 가지고 I/O 요청이 발생하는 경우처럼 계속해서 캐시를 통해 서비스할 필요가 있는 페이지의 데이터는 청크(chunk) 단위로 2 캐시(341)에 저장하도록 함으로써, 제2 캐시(341)의 공간을 효율적으로 관리할 수 있고 캐시 적중률을 높일 수 있다. 특히, 제2 캐시(341)가 SSD에 할당되는 경우 SSD는 그 특성상 마모 측면에서 쓰기(write) 및 지우기(erase)에 많은 제약이 있는데, 이처럼 불필요한 데이터를 제2 캐시(341)에 바로 저장하지 않도록 함으로써 SSD의 마모 관리 측면에서 매우 효과적이라 할 수 있다.
도 4는 일 실시예에 따른 캐시 관리 장치의 상세 블록도이다. 도 4의 실시예에 따른 캐시 관리 장치(400)는 도 3a의 실시예에 따른 하이브리드 페이지 캐시 메모리 시스템에 적용될 수 있다.
도 4를 참조하면, 캐시 관리 장치(400)는 접근 패턴 분석부(410), 페이지 클래스 관리부(420) 및 페이지 이동 관리부(430)를 포함할 수 있다.
접근 패턴 분석부(410)는 데이터 I/O 요청을 모니터링한다. 접근 패턴 분석부(410)는 데이터 I/O 요청에 따라 제1 캐시(41)에서 서비스된 데이터의 페이지, 그 I/O 요청에 의해 제2 캐시(42) 또는 디스크로부터 서비스되고 제1 캐시(41)에 저장된 데이터의 페이지에 대한 접근 패턴을 분석할 수 있다.
예를 들어, 접근 패턴 분석부(410)는 각 페이지별로 미리 설정된 단위 주기 동안 I/O 요청이 발생한 횟수를 의미하는 접근 카운트를 산출하고, 그 산출된 접근 카운트를 기초로 접근 패턴을 분석할 수 있다. 또는, 각 페이지별로 I/O 요청이 발생하는 주기를 의미하는 접근 주기를 산출하고, 그 산출된 접근 주기를 기초로 접근 패턴을 분석할 수 있다.
도 1a 및 도 2a와 같은 일반적인 캐시 메모리 시스템에서는 캐시에 저장된 페이지를 대체하거나 버리는 방법으로 LRU(Least Recently Used), 즉, 최신성(recency) 정보만을 활용하여 페이지 캐시에 계속 보관하고 있을 페이지와 언제든지 필요에 따라 버릴 수 있는 페이지들로 구분한다. 하지만, 본 실시예에 따르면, 접근 카운트나 접근 주기 등의 다양한 정보들을 활용하여 각 페이지에 대한 접근 패턴을 분석하여 빈번하게 I/O 요청이 발생하는 페이지는 제1 캐시(41)에서 서비스되도록 하고, 특정 시점에서는 I/O 요청이 발생하지 않으나 곧 다시 발생할 가능성이 있는 페이지는 제2 캐시(42)에서 서비스되도록 함으로써 캐시(41,42)를 효율적으로 관리하는 게 가능하다.
페이지 클래스 관리부(420)는 각 페이지에 대한 접근 패턴 분석 결과를 기초로 각 페이지의 클래스를 결정할 수 있다. 이때, 클래스는 다양한 기준으로 분류되어 미리 정의될 수 있으며, 일 예로 전술한 바와 같이, 제1 캐시(41)에서 서비스할 페이지를 의미하는 'class-1', 제2 캐시(42)에서 서비스할 페이지를 의미하는 'class-2' 및 임의의 시점에 제1 캐시(41)에서 버려지는 것이 가능한 페이지를 의미하는 'class-3'으로 구분될 수 있다.
좀 더 상세하게, 도 5a를 참조하면 캐시 관리 장치(400)에서 각 페이지를 분류하기 위해 미리 정의된 클래스는 'class-0', 'class-1', 'class-2' 및 'class-3'일 수 있다. 일반적으로 제1 캐시(41)에 존재하는 페이지들은 크게 임의로 버려질 수 있는 페이지인 'evictable' 페이지와, 커널 등 시스템에서 특정 목적으로 예약하여 사용하는 페이지들처럼 임의로 버려져서는 안되는 페이지인 'unevictable' 페이지로 구분될 수 있다. 이때, 임의로 버려질 수 있는 페이지는 파일과 관련되어 있는 페이지인 'evictable, file' 페이지와, 파일과 관련되어 있지 않은 페이지인 'evictable, non-file'로 구분될 수 있다.
도 5a에 도시된 바와 같이, 임의로 버려져서는 안 되는 'unevictable' 페이지와 임의로 버려질 수 있으나 파일과 관련되어 있지 않은 'evictable, non-file' 페이지는 'class-0'으로 미리 분류된다. 또한, 임의로 버려질 수 있으면서 파일과 관련된 'evictable, file' 페이지는 현재 계속해서 I/O 요청이 빈번하게 발생하는 'currently-hot' 페이지와, 현재 시점에는 I/O 요청이 발생하지 않지만 잠재적으로 다시 I/O 요청이 발생할 가능성이 있는 'has-rehit-potential' 페이지와, 그 밖의 'the-others' 페이지로 구분될 수 있으며, 각각 'class-1','class-2' 및 'class-3'으로 분류될 수 있다.
일 실시예에 따르면, 임의로 버려질 수 있으면서 파일과 관련된 'evictable,file' 페이지를 캐시 관리 장치(400)의 관리 대상, 즉, 클래스를 결정하여 제1캐시(41)에서 제2 캐시(42)로 이동되도록 하는 대상으로 한다. 하지만, 반드시 이에 한정되는 것은 아니고 필요에 따라서는 다른 페이지들도 그 대상이 될 수 있으며, 또는 페이지들을 다양한 기준으로 세분화하여 대상을 선별하는 것도 가능하다.
다시 도 4를 참조하면, 페이지 클래스 관리부(420)는 제1 캐시(41)의 각 페이지, 특히 'evictable, file' 페이지들에 대한 접근 패턴 분석 결과를 기초로 위의 클래스 'class-1','class-2' 및 'class-3' 중의 어느 하나로 결정할 수 있다.
또한, 페이지 클래스 관리부(420)는 도 5a에 도시된 바와 같이, 'class-1'으로 결정된 페이지는 제1 캐시(41)에서 계속 서비스되도록 하고, 'class-2'로 결정된 페이지는 제2 캐시(42)에서 서비스되도록 제2 캐시(42)로 이동시키는데 필요한 정보를 도 3a에 도시된 바와 같은 이동 버퍼(322)에 저장할 수 있다. 이때, 그 이동 버퍼(322)에 저장되는 정보는 제1 캐시(41)에 저장된 페이지에 대한 링크 정보일 수 있다.
도 5b는 일 실시예에 따른 캐시 관리 장치(400)에서 관리되는 페이지 노드의 일 예이다. 페이지 노드는 기수 검색(radix tree), 해시 테이블(hash table), 링크드 리스트(linked list) 등의 다양한 방법으로 구조화되어 관리될 수 있다. 이러한 구조를 통해 원하는 페이지를 손쉽게 찾거나 얻을 수 있다.
도 5b를 참조하면, 페이지 노드는 제1 캐시(41)에 캐시된 데이터가 저장되어 있는 실제 디스크의 위치를 나타내는 논리 주소, OS에 의해 임의로 버려지는 것이 가능한지 여부를 나타내는 'evictable-or-not' 플래그, 페이지가 파일과 관련되어 있는지를 나타내는 'file-related-or-not' 플래그, 이 페이지의 데이터가 변경되었으나 디스크에 그 변경 내용이 갱신되었는지 여부를 나타내는 'page-is-dirty' 플래그, 제2 캐시(42)로 이동된 페이지인지를 나타내는 'tiered-or-not' 플래그, 접근 패턴 분석부(410)에 의해 산출된 접근 카운트 정보를 저장하는 접근 카운트, 페이지 클래스 관리부(420)에 의해 결정된 클래스 정보를 저장하는 클래스 아이디, 페이지가 제2 캐시(42)로 이동된 경우 제2 캐시(42)의 저장 위치, 제1 캐시(41)에 저장되어 있는 페이지 데이터 및 보조 데이터 필드를 포함할 수 있다. 이때, 보조 데이터는 기타 필요한 정보들을 저장하는 필드로서 사용되며, 예컨대, 'class-2'로 결정된 페이지들의 링크 정보가 이동 버퍼에 저장된 경우, 그 이동 버퍼로 찾아가기 위한 역링크(back link) 정보 등을 포함할 수 있다.
페이지 클래스 관리부(420)는 각 페이지에 대해 클래스가 결정되면, 결정된 클래스를 페이지 노드의 클래스 아이디에 저장할 수 있다. 또한, 'class-2'로 결정된 페이지에 대해서는 제1 캐시(41)에서 OS에 의해 임의의 시점에 버려지지 않도록 그 페이지 노드 정보 중의 'evictable-or-not' 플래그를 'unevictable'로 설정하고, 'class-3'으로 결정된 페이지에 대하여는 제1 캐시(41)에서 임의의 시점에 OS에 의해 버려질 수 있도록 'evictable'로 설정할 수 있다.
한편, 페이지 클래스 관리부(420)는 어느 페이지에 대하여 제2 캐시(42)에 저장되도록 하는 'class-2'에서 OS에 의해 임의로 버려질 수 있는 'class-3'으로 클래스를 변경하게 되면, 제2 캐시(42)에 저장되어 있는 그 페이지에 대한 메타 정보를 갱신하도록 요청하는 갱신 요청 정보를 제2 캐시(42)에 전송할 수 있다. 예를 들어, 갱신 요청 정보는 갱신될 페이지 아이디 및 제2 캐시(42)에서 그 페이지가 임의의 시점에 버려질 수 있다는 것을 나타내는 '_to_be_discarded'를 포함할 수 있다. 이때, 제2 캐시(42)를 포함하는 보조 기억 장치는 특정 페이지에 대한 메타 정보 갱신 요청 정보가 수신되면, 해당 페이지의 메타 정보를 '_to_be_discarded'로 갱신한다.
도 6a 및 도 6b는 일 실시예에 따라 페이지 청크 단위로 제2 캐시로 페이지가 이동되는 것을 설명하기 위한 도면이다.
도 4 및 6a를 참조하면, 페이지 이동 관리부(430)는 이동 버퍼(43)에 제2 캐시(42)로 이동시키기 위한 페이지들의 링크 정보가 대기중이면 그 링크 정보를 이용하여 해당하는 페이지를 제2 캐시(42)로 이동시킨다. 페이지 이동 관리부(430)는 소정의 이동 정책에 따라 해당하는 페이지를 제2 캐시(42)로 이동시키는데, 예를 들어, 시스템이 예기치 않게 종료하는 경우처럼 시스템 이벤트가 발생할 때 이동 버퍼(43)에 대기중인 페이지를 제2 캐시(42)로 이동시킬 수 있다.
또는, 사용자에 의해 설정된 정책에 따라 그 정책을 만족하는 상황이 발생할 때마다 해당하는 페이지를 제2 캐시(42)로 이동시킬 수 있다. 사용자에 의해 설정된 정책은 예컨대, 소정 시간 단위로 페이지를 이동시키거나 소정 페이지 청크 크기 단위로 페이지를 이동시키는 정책 또는, 소정 시간과 페이지 청크 크기 중에서 먼저 만족할 때마다 이동시키는 정책과 같이 그 정책들을 조합한 정책들 중에서 설정된 어느 하나의 정책일 수 있다.
예를 들어, 사용자에 의해 설정된 정책이 소정 시간 단위로 페이지를 이동시키는 것이면, 페이지 이동 관리부(430)는 소정 시간이 경과할 때마다 이동 버퍼(43)에 대기중인 페이지의 링크 정보가 존재하는지를 확인한다. 확인 결과 대기중인 페이지 링크 정보가 존재하면 그 링크 정보를 이용하여 제1 캐시(41)에서 해당하는 페이지의 데이터를 찾고, 그 데이터를 포함하는 쓰기 요청 정보를 생성하여 제2 캐시(42)에 전송할 수 있다. 만약, 사용자에 의해 설정된 정책이 소정 페이지 청크 크기 단위로 페이지를 이동시키는 것이면, 페이지 이동 관리부(430)는 이동 버퍼(43)에 대기중인 페이지의 링크 정보를 기초로 이동될 페이지가 소정 페이지 청크 크기를 만족하는지 체크하고, 그 결과 만족하면 페이지 청크 단위로 쓰기 요청 정보를 제2 캐시(42)에 전송할 수 있다. 이 경우, 이동 버퍼(43)의 크기는 페이지 청크 크기와 동일하도록 할당될 수 있다.
페이지 청크 크기는 제2 캐시(42)가 할당된 보조기억장치의 채널 구조, 지우기 블록 사이즈(erase block size) 등의 특성을 고려하여 결정될 수 있다. 예를 들어, 보조기억장치의 채널 수와 지우기 블록 사이즈를 곱한 값을 페이지 청크 크기로 결정할 수 있다.
한편, 페이지 이동 관리부(430)는 제2 캐시(42)가 할당된 보조기억장치, 예컨대, SSD의 상태에 따라 제2 캐시(42)로 이동하는 작업을 보류할 수 있다. 이때, 페이지 이동 관리부(430)는 SSD에게 이동시킬 페이지 데이터의 크기 정보를 미리 전달할 수 있다. SSD는 이동시킬 페이지 데이터의 크기에 해당하는 데이터를 쓰는데 필요한 공간 확보를 위해 어느 정도 대기해야 하는지에 대한 예상 대기 시간 정보를 페이지 이동 관리부(430)에 전송할 수 있다. 만약, 복수 개의 SSD에 제2 캐시가 할당되어 있다면, 메모리 시스템에 별도의 SSD 어레이 관리 레이어(미도시)를 두고 그 SSD 어레이 관리 레이어를 통해 해당 페이지 데이터를 저장하기에 가장 적합한 SSD의 제2 캐시에 I/O가 발생하도록 할 수 있다.
도 6a에 도시된 바와 같이, 소정의 페이지 청크 크기가 3이라고 하면 페이지 이동 관리부(430)는 이동 버퍼(43)에 대기중인 페이지 링크 정보를 이용하여 'class-2'를 가진 페이지 1, 2 및 4를 찾아 페이지 청크를 생성하고, 생성된 페이지 청크를 제2 캐시(42)에 전송하여 쓰기 요청을 할 수 있다.
도 6b를 참조하면, 제2 캐시(42)가 할당된 보조기억장치는 t(0) 시점에 쓰기 요청을 수신하면, 페이지 청크를 각 채널 수 및 지우기 블록 사이즈를 기초로 각 페이지로 분할하여, 분할된 각 데이터를 각 채널별로 나누어 저장할 수 있다. 보조기억장치는 연달아 입력되는 페이지 청크를 저장할 때 쓰기 연산의 지연(latency)으로 인한 영향을 감소시키기 위해, 도시된 바와 같이 현재 시점 t(0)에 입력된 페이지 청크를 NAND 패키지의 제2열(wy_1)에 쓰도록 했다면, 다음 시점 t(1)에 입력되는 페이지 청크는 NAND 패키지의 제3열(wy_2)에 쓰도록 할 수 있다.
보조기억장치는 쓰기 요청에 대한 처리가 끝나면, 그 처리 결과 정보를 페이지 이동 관리부(430)에 전송할 수 있다. 예를 들어, 처리 결과 정보는 쓰기 요청의 처리가 성공했는지 여부, 제2 캐시(42) 내의 저장 위치(예: 저장된 제2 캐시(42)의 페이지 청크 아이디 또는 페이지 청크 주소), 제2 캐시(42)의 잔여 공간 정보 등을 포함할 수 있다. 페이지 이동 관리부(430)는 그 처리 결과 정보를 기초로 페이지 노드의 제2 캐시의 저장 위치 정보를 갱신하고, 필요한 경우 제2 캐시(42)에 가용 공간을 확보하도록 하는 요청 정보를 전송할 수 있다.
도 7a 및 도 7b는 일 실시예에 따라 제2 캐시에서 가용 공간을 확보하는 것을 설명하기 위한 도면이다.
다시 도 4를 참조하면, 페이지 이동 관리부(430)는 제2 캐시(42)의 잔여 용량 정보를 기초로 페이지를 저장하기 위한 공간이 부족한지를 판단하고, 부족한 경우에는 제2 캐시(42)에 가용 공간을 확보하도록 요청하는 정보를 전송할 수 있다. 예를 들어, 페이지 이동 관리부(430)는 보조기억장치로부터 성공 여부 및 제2 캐시의 잔여 공간 정보를 포함하는 쓰기 요청에 대한 처리 결과 또는 주기적으로 제2 캐시(42)의 잔여 공간 정보를 수신하여, 다음 전송할 쓰기 요청을 처리하는데 필요한 공간이 충분한지를 판단할 수 있다. 그 결과, 가용 공간이 부족하거나 잔여 공간이 미리 설정되어 있는 임계치(threshold) 이하로 떨어진 경우에는 더 확보되어야 할 공간의 크기 정보를 제2 캐시(42)에 전송할 수 있다.
보조기억장치는 페이지 이동 관리부(430)로부터 공간 확보 요청 정보가 수신되면, 전술한 바와 같은 미리 설정된 공간 확보 정책에 따라 제2 캐시(42)의 공간을 확보할 수 있다. 예를 들어, 공간 확보 정책으로 저장된 순서가 오래된 페이지를 포함하는 페이지 청크를 우선하여 지우는 정책이 설정되어 있고, 도 7a에 도시된 페이지 청크 1부터 N이 순서대로 제2 캐시(42)에 저장된 경우라면, 가장 먼저 페이지 청크 1부터 필요한 만큼의 페이지 청크가 지워진다. 만약, 공간 확보 정책이 소정의 메타 정보를 가진 페이지를 많이 포함하고 있는 페이지 청크를 우선하여 지우는 것이라면 페이지 청크 2가 가장 먼저 지워진다.
한편, 보조기억장치는 페이지 청크를 지워 필요한 공간을 확보할 때 지워지는 페이지 청크 내의 유효한 페이지를 미리 제1 캐시(41)에 저장하도록 요청할 수 있다. 페이지 이동 관리부(430)는 그 요청에 따라 그 페이지 청크가 제2 캐시(42)에서 지워지기 전에 제1 캐시(41)에 저장할 수 있으며, 이때, 제1 캐시(41)의 가용 공간 정보를 고려하여 제1 캐시(41)에 저장할지 여부를 미리 판단할 수 있다.
도 7b에 도시된 바와 같이, 보조기억장치는 페이지 이동 관리부(430)로부터 페이지 청크 쓰기 요청이 수신되는 주기를 파악하여 현재 t(0) 시점 이후 페이지 청크가 입력될 시점 t(1)을 미리 예측하고, t(1) 시점이 되기 전의 적절한 시점에 필요한 페이지 청크를 지울 수 있다. 예를 들어, 현재 시점 t(0)에 입력된 페이지 청크가 NAND 패키지의 마지막 열(wy_Nw)에 저장되었다면 지우기 연산의 수행 속도 등을 고려하여 다음 시점 t(1)이 되기 전의 임의의 시점에 미리 제1열(wy_0)의 페이지 청크에 대한 지우기 연산을 수행할 수 있다. 이로 인해, t(1) 시점에 페이지 청크를 저장할 때에는 필요한 공간을 확보하기 위한 지우기 연산의 수행 시간의 영향을 받지 않게 되어 I/O 속도가 향상되게 된다.
한편, 보조기억장치는 제2 캐시(42)에서 관리되는 페이지 데이터들과 메타 정보를 스냅샷(snapshot)하여 다른 영역에 보관할 수 있다. 이때, 스냅샷 이미지가 저장될 다른 영역은 제2 캐시(42)가 할당되어 있는 보조기억장치뿐만 아니라 제2 캐시(42)가 할당되어 있지 않은 보조기억장치의 임의의 영역일 수 있다. 스냅샷된 이미지는 하이브리드 페이지 캐시나 전체 시스템의 셧다운(shut down)시 또는 특정 트리거 이벤트 발생시에 다른 영역에 저장될 수 있다. 이로 인해, 하이브리드 페이지 캐시 부트스트랩(bootstrap)시에 해당 스냅샷 이미지 전체 또는 메타 정보 등의 일부분을 메모리에 올림으로써 캐시 웜업(warm-up) 시간을 단축할 수 있다.
도 8은 일 실시예에 따라 하이브리드 페이지 캐시 메모리 시스템에서 캐시 관리 방법의 흐름도이다. 도 9는 일 실시예에 따른 캐시 관리 방법 중에서 페이지 클래스를 결정하는 절차의 일 예이다. 도 10은 일 실시예에 따른 캐시 관리 방법 중에서 제2 캐시에 페이지를 이동하는 절차의 일 예이다.
도 8 내지 도 10의 캐시 관리 방법은 도 3a의 실시예에 따른 하이브리드 페이지 캐시 메모리 시스템(300)의 캐시 관리 장치(350)에 의해 수행될 수 있다. 일 실시예에 따른 캐시 관리 방법은 앞에서 자세히 설명한 바에 따라 해석될 수 있으므로, 이하 중복되는 설명을 피하기 위해 도 8 내지 도 10을 참조하여 간단하게 설명한다.
도 8을 참조하면, 먼저, 캐시 관리 장치는 데이터 I/O 요청을 모니터링하고, 제1 캐시에 저장된 각 페이지에 대한 접근 패턴을 분석한다(단계 810). 예를 들어, 각 페이지에 대한 미리 설정된 단위 주기 동안 I/O 요청이 발생하는 횟수 즉, 접근 카운트를 산출하여 접근 패턴을 분석할 수 있으며, 또는 각 페이지별로 I/O 요청이 발생하는 주기, 즉 접근 주기를 산출하여 접근 패턴을 분석할 수 있다.
그 다음, 각 페이지에 대한 접근 패턴이 분석되면 그 결과를 기초로 각 페이지의 클래스를 결정한다(단계 820).
도 9를 참조하여 각 페이지의 클래스를 결정하는 단계(820)의 일 실시예를 설명하면, 각 페이지에 대한 접근 패턴 분석 결과를 기초로 페이지의 클래스를 결정한다(단계 821).
이때, 각 페이지에 대해 결정된 클래스는 전술한 바와 같이 'class-1', 'class-2' 및 'class-3' 중의 어느 하나일 수 있다. 어느 페이지의 클래스가 'class-1'으로 결정되면 그 페이지 노드의 클래스 아이디를 'class-1'으로 설정한다(단계 822). 만약, 'class-2'로 결정되면 페이지 노드의 클래스 아이디를 'class-2'로 설정하고(단계 823), 그 페이지가 제1 캐시에서 OS에 의해 임의로 버려지지 않도록 페이지 노드의 'evictable-or-not' 플래그를 'unevictable'로 설정한다(단계 824). 그 다음, 그 페이지의 링크 정보를 이동 버퍼에 저장한다(단계 825).
만약, 'class-3'로 결정되면, 그 페이지 노드의 클래스 아이디를 'class-3'으로 설정하고(단계 826), 이전에 그 페이지에 대해 결정된 클래스가 'class-2'인지를 확인한다(단계 827). 그 페이지의 이전 클래스가 'class-2'라면, 그 페이지는 제2 캐시에 저장되어 있을 가능성이 있으므로 제2 캐시에 그 페이지에 대한 메타 정보를 '_to_be_discarded'로 갱신하도록 요청하는 정보를 전송할 수 있다(단계 828). 그 다음, 제1 캐시에서 그 페이지가 OS에 의해 임의의 시점에 버려질 수 있도록 페이지 노드의 'evictable-or-not' 플래그를 'unevictable'로 설정한다(단계 828).
다시, 도 8을 참조하면, 각 페이지에 대해 클래스가 결정되면(단계 820) 제2 캐시에 저장되도록 하는 클래스(class-2)를 가진 페이지를 제2 캐시로 이동시킨다(단계 830).
도 10을 참조하여, 제2 캐시로 class-2를 가진 페이지를 이동하는 단계(830)의 일 실시예를 설명한다. 먼저, 캐시 관리 장치는 미리 설정된 이동에 관련된 정책을 만족하는 상황이 발생하는지 체크한다(단계 831). 판단 결과 전술한 바와 같이 미리 설정된 이동 정책을 만족하는 상황이 발생하면 다시 페이지 청크 단위로 제2 캐시에 이동시킬지를 판단한다(단계 832). 예를 들어, 사용자는 시스템 이벤트가 발생하는 경우, 또는 설정된 시간 단위로 현재 이동 버퍼에 저장되어 있는 페이지 전체를 제2 캐시에 전송하도록 요청할 수 있다. 미리 설정된 시간 단위로 이동하는 경우라도 이동 버퍼에 저장되어 있는 페이지를 페이지 청크 단위로 제2 캐시에 전송하도록 설정할 수 있고, 경우에 따라서는 이동 버퍼에 페이지 청크 크기의 페이지 정보가 저장될 때마다 그 페이지 청크 단위로 제2 캐시에 이동시킬 수도 있다.
판단 결과(단계 832) 페이지 청크 단위로 이동하는 경우라면 이동 버퍼에 페이지 청크 크기 이상의 페이지 정보가 존재하는지 체크하고(단계 834), 존재하면(단계 834), 페이지 청크를 생성하여 제2 캐시에 쓰기 요청 정보를 전송한다(단계 835). 만약, 페이지 청크 단위로 이동하는 것이 아니라면 현재 이동 버퍼에 대기중인 페이지의 쓰기 요청 정보를 제2 캐시에 전송한다(단계 841).
그 다음, 제2 캐시로부터 처리 결과를 수신하고(단계 836), 처리 결과를 기초로 제2 캐시의 가용 공간을 체크할 수 있다(단계 837). 판단 결과(단계 837) 제2 캐시에 공간 확보가 필요한 경우에는 제2 캐시에 공간 확보 요청 정보를 전송할 수 있다(단계 839). 캐시 관리 장치는 이동 버퍼에 페이지 정보가 입력되는 속도, 제2 캐시에 페이지 청크를 전송하는 주기 등을 파악하여 제2 캐시에서 필요한 공간 크기를 산출하고 제2 캐시가 확보해야할 공간 크기 정보를 전송할 수 있다.
그 다음, 처리할 페이지가 더 존재하면(단계 840), 이동 버퍼에 아직 대기중인 페이지가 페이지 청크 크기 이상 존재하는지를 체크하는 단계(833) 이하를 수행한다. 더 이상 처리할 페이지가 존재하지 않으면(단계 840) 종료한다.
이와 같이, 일 실시예에 따르면 접근 패턴 분석 결과 데이터 I/O 요청이 빈번한 페이지에 대해서는 제1 캐시에서 서비스되도록 하고, OS의 커널이 관리하는 임의의 시간 동안에는 I/O 요청이 발생하지 않으나 소정의 주기성을 나타내는 페이지에 대해서는 제2 캐시에 저장하여 서비스되도록 함으로써 제2 캐시에 불필요한 데이터가 저장되는 것을 방지하면서도 캐시 적중률을 향상시킬 수 있다.
한편, 본 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
300: 메모리 시스템 310: I/O 요청 인터페이스
320: 주기억장치 321: 제1 캐시
322: 이동 버퍼 330: 블록 레이어
340: 보조기억장치 341: 제2 캐시
350: 캐시관리장치 400: 캐시관리장치
410: 접근 패턴 분석부 420: 페이지 클래스 관리부
430: 페이지 이동 관리부
320: 주기억장치 321: 제1 캐시
322: 이동 버퍼 330: 블록 레이어
340: 보조기억장치 341: 제2 캐시
350: 캐시관리장치 400: 캐시관리장치
410: 접근 패턴 분석부 420: 페이지 클래스 관리부
430: 페이지 이동 관리부
Claims (29)
- 데이터 I/O 요청을 모니터링하여 제1 캐시에 저장된 각 페이지에 대한 접근 패턴을 분석하는 접근 패턴 분석부;
상기 각 페이지에 대한 접근 패턴 분석 결과를 기초로 각 페이지의 클래스를 결정하는 페이지 클래스 관리부; 및
상기 페이지 클래스 관리부에 의해 결정된 결과를 기초로 제2 캐시에 저장되도록 하는 클래스를 가진 페이지를 제2 캐시로 이동시키는 페이지 이동 관리부를 포함하되,
상기 페이지 클래스 관리부는
어느 페이지가 상기 제2 캐시에 저장되도록 하는 클래스로 결정되면, 그 페이지가 OS(Operating System)에 의해 임의로 버려지지 않도록 그 페이지의 노드 정보를 갱신하는 캐시 관리 장치. - 삭제
- 삭제
- 제1항에 있어서, 상기 접근 패턴 분석부는
상기 각 페이지에 대해 단위 주기 동안 I/O 요청이 발생한 횟수인 접근 카운트를 산출하고, 그 접근 카운트를 기초로 접근 패턴을 분석하는 캐시 관리 장치. - 제1항에 있어서, 상기 접근 패턴 분석부는
상기 각 페이지별로 I/O 요청이 발생하는 주기인 접근 주기를 산출하고, 그 접근 주기를 기초로 접근 패턴을 분석하는 캐시 관리 장치. - 삭제
- 삭제
- 삭제
- 제1항에 있어서, 상기 페이지 클래스 관리부는
어느 페이지가 상기 제2 캐시에 저장되도록 하는 클래스로 결정되면, 그 페이지에 대한 링크 정보를 이동 버퍼에 저장하고,
상기 페이지 이동 관리부는
상기 이동 버퍼에 저장된 페이지의 링크 정보를 기초로 상기 제1 캐시에 저장된 페이지를 상기 제2 캐시에 전송하는 캐시 관리 장치. - 제1항에 있어서, 상기 페이지 클래스 관리부는
어느 페이지에 대한 클래스가 제2 캐시에 저장되도록 하는 클래스에서 OS에 의해 임의로 버려질 수 있는 클래스로 변경되면, 제2 캐시에 저장된 그 페이지가 임의의 시점에 버려질 수 있다는 것을 지시하도록 그 페이지에 대한 메타 정보의 갱신 요청 정보를 제2 캐시에 전송하는 캐시 관리 장치. - 제1항에 있어서, 상기 페이지 클래스 관리부는
어느 페이지에 대한 클래스 결정 결과, 그 페이지의 클래스가 제2 캐시에 저장되도록 하는 클래스에서 OS에 의해 임의로 버려질 수 있는 클래스로 변경되면, 제1 캐시에서 그 페이지가 OS에 의해 버려지는 것이 가능하도록 페이지 노드 정보를 갱신하는 캐시 관리 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제1 캐시를 포함하는 주 기억 장치;
제2 캐시를 포함하는 보조 기억 장치; 및
데이터 I/O 요청을 모니터링하여 상기 제1 캐시에 저장된 각 페이지의 접근 패턴을 분석하고, 상기 각 페이지에 대한 접근 패턴 분석 결과를 기초로 각 페이지의 클래스를 결정하며, 상기 제2 캐시에 저장되도록 하는 클래스를 가진 페이지를 제2 캐시로 이동시키는 캐시 관리 장치를 포함하되,
상기 캐시 관리 장치는,
어느 페이지에 대한 클래스 결정 결과, 그 페이지의 클래스가 상기 제2 캐시에 저장되도록 하는 클래스에서 OS에 의해 임의로 버려질 수 있는 클래스로 변경되면, 상기 제1 캐시에서 그 페이지가 OS에 의해 버려지는 것이 가능하도록 페이지 노드 정보를 갱신하는 메모리 시스템. - 삭제
- 제22항에 있어서,
상기 제1 캐시는 데이터 I/O 요청에 의해 상기 보조 기억 장치 또는 상기 제2 캐시에서 접근된 데이터를 저장하고,
상기 제2 캐시는 상기 제1 캐시에 저장된 페이지들 중 일부를 선별적으로 저장하는 메모리 시스템. - 제22항에 있어서,
상기 주 기억 장치는 이동 버퍼를 더 포함하고,
상기 캐시 관리 장치는
어느 페이지가 제2 캐시에 저장되도록 하는 클래스로 결정되면 그 페이지에 대한 링크 정보를 상기 이동 버퍼에 저장하는 메모리 시스템. - 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130102696A KR102094163B1 (ko) | 2013-08-28 | 2013-08-28 | 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템 |
US14/460,833 US9858197B2 (en) | 2013-08-28 | 2014-08-15 | Cache management apparatus of hybrid cache-based memory system and the hybrid cache-based memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130102696A KR102094163B1 (ko) | 2013-08-28 | 2013-08-28 | 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150025274A KR20150025274A (ko) | 2015-03-10 |
KR102094163B1 true KR102094163B1 (ko) | 2020-03-27 |
Family
ID=52584906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130102696A KR102094163B1 (ko) | 2013-08-28 | 2013-08-28 | 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9858197B2 (ko) |
KR (1) | KR102094163B1 (ko) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102695B (zh) * | 2014-06-26 | 2017-11-10 | 晨星半导体股份有限公司 | 智能设备启动过程的数据处理方法及智能设备 |
US9652405B1 (en) * | 2015-06-30 | 2017-05-16 | EMC IP Holding Company LLC | Persistence of page access heuristics in a memory centric architecture |
US10140030B2 (en) * | 2015-11-02 | 2018-11-27 | International Business Machines Corporation | Dynamic modulation of cache memory |
KR101691112B1 (ko) * | 2015-12-21 | 2016-12-29 | 한국과학기술정보연구원 | 파일관리장치 및 그 동작 방법 |
CN105631035B (zh) * | 2016-01-04 | 2018-04-17 | 北京百度网讯科技有限公司 | 数据存储方法和装置 |
US10387329B2 (en) | 2016-02-10 | 2019-08-20 | Google Llc | Profiling cache replacement |
KR101643278B1 (ko) * | 2016-02-26 | 2016-07-28 | 주식회사 티맥스데이터 | 데이터베이스 시스템에서 스토리지 서버 관리 방법, 장치 및 컴퓨터 판독가능 매체에 저장된 컴퓨터-프로그램 |
US9826932B2 (en) | 2016-04-19 | 2017-11-28 | Google Llc | Automated abdominojugular reflux testing |
US10528295B2 (en) | 2017-04-29 | 2020-01-07 | International Business Machines Corporation | Intra-tier data migration to segregate zombie storage from dead storage |
CN109213693B (zh) * | 2017-06-30 | 2023-05-05 | 伊姆西Ip控股有限责任公司 | 存储管理方法、存储系统和计算机程序产品 |
CN109582223B (zh) | 2018-10-31 | 2023-07-18 | 华为技术有限公司 | 一种内存数据迁移的方法及装置 |
CN111221862B (zh) * | 2019-12-31 | 2023-08-11 | 五八有限公司 | 一种请求处理方法及装置 |
US11573709B2 (en) * | 2020-01-07 | 2023-02-07 | International Business Machines Corporation | Maintaining data structures in a memory subsystem comprised of a plurality of memory devices |
US11907543B2 (en) * | 2020-01-07 | 2024-02-20 | International Business Machines Corporation | Managing swappable data structures in a plurality of memory devices based on access counts of the data structures |
US11620055B2 (en) * | 2020-01-07 | 2023-04-04 | International Business Machines Corporation | Managing data structures in a plurality of memory devices that are indicated to demote after initialization of the data structures |
KR20210157537A (ko) * | 2020-06-22 | 2021-12-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
WO2022246644A1 (en) * | 2021-05-25 | 2022-12-01 | Citrix Systems, Inc. | Data transfer across storage tiers |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101257848B1 (ko) * | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법 |
US8195878B2 (en) | 2009-02-19 | 2012-06-05 | Pmc-Sierra, Inc. | Hard disk drive with attached solid state drive cache |
US20110191522A1 (en) | 2010-02-02 | 2011-08-04 | Condict Michael N | Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory |
KR101180288B1 (ko) * | 2010-05-11 | 2012-09-07 | 한국과학기술원 | 하이브리드 메모리와 ssd 로 구성된 시스템에서의 읽기 캐시 및 쓰기 캐시 관리 방법 |
KR101713051B1 (ko) | 2010-11-29 | 2017-03-07 | 삼성전자주식회사 | 하이브리드 메모리 시스템, 및 그 관리 방법 |
US9110813B2 (en) * | 2013-02-14 | 2015-08-18 | Avago Technologies General Ip (Singapore) Pte Ltd | Cache load balancing in storage controllers |
JP2014194634A (ja) * | 2013-03-28 | 2014-10-09 | Sony Corp | 情報処理装置、情報処理方法、並びに記録媒体 |
US10747746B2 (en) * | 2013-04-30 | 2020-08-18 | Amazon Technologies, Inc. | Efficient read replicas |
CN103885815A (zh) * | 2014-03-24 | 2014-06-25 | 北京大学 | 一种基于热页迁移的虚拟机动态缓存方法 |
-
2013
- 2013-08-28 KR KR1020130102696A patent/KR102094163B1/ko active IP Right Grant
-
2014
- 2014-08-15 US US14/460,833 patent/US9858197B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20150025274A (ko) | 2015-03-10 |
US20150067258A1 (en) | 2015-03-05 |
US9858197B2 (en) | 2018-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102094163B1 (ko) | 하이브리드 캐시 기반의 메모리 시스템에서 캐시를 관리하는 장치 및 방법과, 그 메모리 시스템 | |
US10649890B2 (en) | Information processing system, storage control apparatus, storage control method, and storage control program | |
US9928249B2 (en) | Scheduling deduplication in a storage system | |
EP3229142B1 (en) | Read cache management method and device based on solid state drive | |
US10552317B2 (en) | Cache allocation in a computerized system | |
US9779027B2 (en) | Apparatus, system and method for managing a level-two cache of a storage appliance | |
CN107430551B (zh) | 数据缓存方法、存储控制装置、及存储设备 | |
US9591096B2 (en) | Computer system, cache control method, and server | |
US20200371943A1 (en) | Method and devices for managing cache | |
US10185666B2 (en) | Item-wise simulation in a block cache where data eviction places data into comparable score in comparable section in the block cache | |
WO2015039352A1 (zh) | 缓存数据的方法和存储系统 | |
JP6402647B2 (ja) | データ配置プログラム、データ配置装置およびデータ配置方法 | |
US10620844B2 (en) | System and method to read cache data on hybrid aggregates based on physical context of the data | |
US11809330B2 (en) | Information processing apparatus and method | |
US11243877B2 (en) | Method, apparatus for data management, and non-transitory computer-readable storage medium for storing program | |
US20170168944A1 (en) | Block cache eviction | |
US20170168956A1 (en) | Block cache staging in content delivery network caching system | |
KR102195896B1 (ko) | 디스크 캐시 제어 장치 및 방법 | |
CN112148736A (zh) | 缓存数据的方法、设备及存储介质 | |
US9851925B2 (en) | Data allocation control apparatus and data allocation control method | |
JP6928247B2 (ja) | ストレージ制御装置およびストレージ制御プログラム | |
KR102149468B1 (ko) | 통합 캐시를 하나 또는 복수의 논리 유닛에 동적 할당하는 시스템 및 방법 | |
JP2015172897A (ja) | バッファキャッシュ管理装置、バッファキャッシュ管理方法、及び、バッファキャッシュ管理プログラム |
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 |