KR102014723B1 - 하이브리드 메모리 시스템의 버퍼 효율성을 위한 페이지 병합 방법 - Google Patents

하이브리드 메모리 시스템의 버퍼 효율성을 위한 페이지 병합 방법 Download PDF

Info

Publication number
KR102014723B1
KR102014723B1 KR1020130007608A KR20130007608A KR102014723B1 KR 102014723 B1 KR102014723 B1 KR 102014723B1 KR 1020130007608 A KR1020130007608 A KR 1020130007608A KR 20130007608 A KR20130007608 A KR 20130007608A KR 102014723 B1 KR102014723 B1 KR 102014723B1
Authority
KR
South Korea
Prior art keywords
memory
pages
page
compatible
delete delete
Prior art date
Application number
KR1020130007608A
Other languages
English (en)
Other versions
KR20140094934A (ko
Inventor
자가디산 아룬
구오 샤오첸
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to KR1020130007608A priority Critical patent/KR102014723B1/ko
Publication of KR20140094934A publication Critical patent/KR20140094934A/ko
Application granted granted Critical
Publication of KR102014723B1 publication Critical patent/KR102014723B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load

Abstract

일 실시예에서, 제1 메모리와 제2 메모리를 갖고, 상기 제1 메모리가 상기 제2 메모리보다 작으며, 상기 제1 메모리 및 상기 제2 메모리는 상이한 유형인 하이브리드 메모리 시스템의 메모리 관리 방법으로서, 상기 제1 메모리 내에서 서로 호환성 있는 2 또는 그 이상의 페이지들을 상기 2 또는 그 이상의 페이지들마다 포함된 개별 블록들이 액세스되는 때에 관한 예측 중 적어도 일부를 기초로 식별하는 단계; 상기 2 또는 그 이상의 페이지들을 병합하여 병합된 페이지를 생성하는 단계; 및 상기 병합된 페이지를 상기 제1 메모리에 저장하는 단계;를 포함하는 하이브리드 메모리 시스템의 메모리 관리 방법이 개시된다.

Description

하이브리드 메모리 시스템의 버퍼 효율성을 위한 페이지 병합 방법{PAGE MERGING FOR BUFFER EFFICIENCY IN HYBRID MEMORY SYSTEMS}
컴퓨터 메모리 구조에 관련된다. 보다 상세하게는, 하이브리드 메모리 시스템의 버퍼 효율성을 개선하는 기법에 관련된다.
컴퓨터 시스템에는 사용자가 이용할 수 있는 매우 다양한 유형의 메모리가 있다. 랜덤 액세스 메모리(RAM)는 컴퓨터 시스템에서 고빈도의 읽기와 쓰기에 사용되는 전형적인 고속 액세스 메모리이다. 램(RAM)에는 공통된 유형으로 다이나믹 RAM(DRAM), 스태틱 RAM(SRAM), 스핀-토크 전송 메모리 랜덤 액세스 메모리(STT-MRAM:Spin-Torque Transfer Memory Random Access Memory) 및 위상 변화 메모리(PCM: Phase Change Memory)가 포함된다. 램은 오늘날 소형 기기부터 대규모 데이터 센터에 이르기까지 모든 형태의 전산장비에 필수적이다.
각각의 메모리 유형은 지연/성능, 용량, 에너지 소비량 등의 관점에서 장단점을 갖는다. 예컨대, PCM은 비휘발성인 반면(즉, 전력이 공급되지 않아도 내용을 유지하는 반면), DRAM은 휘발성이다. PCM은 또한 DRAM보다 우수한 확장성(scalability)을 갖는다. 반면, DRAM은 PCM에 비해 극히 우수한 쓰기 속도 및 다소 우수한 읽기 속도를 갖는다. PCM은 또한 쓰기를 수행할 때에 더 많은 에너지를 사용하며 제한적인 쓰기 내구성을 갖는다. 이와 같이, 한 가지 유형의 메모리의 장점을 희생하여야 다른 유형의 메모리를 사용할 수 있게 된다. 따라서, 이러한 이슈에 대한 해결방안이 필요하다.
한 유형의 메모리의 장점이 효과적으로 사용되면서도 다른 유형의 메모리의 단점을 가릴 수 있는 하이브리드 메모리 시스템 하이브리드 메모리 시스템의 메모리 관리 방법을 제공한다.
제1 실시예에 따르면, 제1 메모리와 제2 메모리를 갖고, 상기 제1 메모리가 상기 제2 메모리보다 작으며, 상기 제1 메모리 및 상기 제2 메모리는 상이한 유형인 하이브리드 메모리 시스템의 메모리 관리 방법으로서, 상기 제1 메모리 내에서 서로 호환성 있는 2 또는 그 이상의 페이지들을 상기 2 또는 그 이상의 페이지들마다 포함된 개별 블록들이 액세스되는 때에 관한 예측 중 적어도 일부를 기초로 식별하는 단계; 상기 2 또는 그 이상의 페이지들을 병합하여 병합된 페이지를 생성하는 단계; 및 상기 병합된 페이지를 상기 제1 메모리에 저장하는 단계;를 포함하는 하이브리드 메모리 시스템의 메모리 관리 방법이 제공된다.
제2 실시예에 따르면, 제1 메모리와 제2 메모리를 갖고, 상기 제1 메모리가 상기 제2 메모리보다 작으며, 상기 제1 메모리 및 상기 제2 메모리는 상이한 유형인 하이브리드 메모리 시스템의 메모리 관리 방법으로서, 메모리 요청을 수신하는 단계; 상기 제1 메모리에 액세스하여 상기 메모리 요청을 처리하고자 시도하는 단계; 상기 제1 메모리가 상기 메모리 요청을 충족하지 못하는 경우에, 상기 제2 메모리로부터 상기 메모리 요청을 충족하는 메모리 페이지를 검색하는 단계; 상기 메모리 페이지를 상기 제1 메모리에 복사하는 단계; 상기 제1 메모리가 가득 찼을 때, 상기 제1 메모리의 각각의 페이지 내의 개별 블록들이 유용한지 여부를, 상기 개별 블록들이 액세스되는 때에 관한 예측을 기초로, 판단하는 단계; 적어도 2개의 서로 호환성 있는 페이지들을 식별하는 단계; 호환성 있는 페이지들이 발견되었는지 여부를 판단하는 단계; 호환성 있는 페이지들이 있는 경우에, 상기 호환성 있는 페이지들을 병합하고, 병합된 페이지를 상기 제1 메모리의 제1 위치에 저장하는 단계;및 신규로 복사된 메모리 페이지를 상기 제1 메모리 내에 저장하는 단계;를 포함하며, 호환성 있는 페이지들이 없는 경우에, 상기 제1 메모리로부터 페이지를 제거하는 단계;및 상기 신규로 복사된 메모리 페이지를 상기 제1 메모리 내에 저장하는 단계;를 포함하는 하이브리드 메모리 시스템의 메모리 관리 방법이 제공된다.
제3 실시예에 따르면, 제1 메모리; 상기 제1 메모리와 상이한 유형이고, 상기 제1 메모리보다 큰, 제2 메모리;및 상기 제1 메모리 내의 서로 호환성 있는 2 또는 그 이상의 페이지들을, 상기 2 또는 그 이상의 페이지들의 각각에서 개별 블록들이 액세스될 때에 관한 예측의 적어도 일부에 기초하여, 식별하고; 상기 호환성 있는 2 또는 그 이상의 페이지들을 병합하여 병합된 페이지를 생성하고; 상기 병합된 페이지를 상기 제1 메모리 내에 저장하는 메모리 컨트롤러;를 포함하는 하이브리드 메모리 시스템이 제공된다.
제4 실시예에 따르면, 제1 메모리 및 제2 메모리를 가지며, 상기 제1 메모리는 상기 제2 메모리보다 작으며, 상기 제1 메모리 및 상기 제2 메모리는 상이한 유형인 하이브리드 메모리 시스템의 메모리 관리 장치로서, 2 또는 그 이상의 페이지들을, 상기 2 또는 그 이상의 페이지들의 각각에서 개별 블록들이 액세스되는 때에 관한 예측의 적어도 일부를 기초로, 상기 제1 메모리 내에서 식별하는 수단; 상기 2 또는 그 이상의 호환성 있는 페이지들을 병합하여 병합된 페이지를 생성하는 수단;및 상기 병합된 페이지를 상기 제1 메모리 내에 저장하는 수단;을 포함하는 하이브리드 메모리 시스템의 메모리 관리 장치가 제공된다.
제5 실시예에 따르면, 하이브리드 메모리 시스템의 메모리 관리 방법을 기계에 의하여 수행할 수 있는 명령에 관한 프로그램을 유형적으로 구현하는 기계로 판독할 수 있는 비일시적인(non-transitory) 프로그램 저장 장치로서, 상기 하이브리드 메모리 시스템은 제1 메모리 및 제2 메모리를 가지며, 상기 제1 메모리는 상기 제2 메모리보다 작고, 상기 제1 메모리와 상기 제2 메모리는 상이한 유형이며, 상기 방법은, 2 또는 그 이상의 페이지들을, 상기 2 또는 그 이상의 페이지들의 각각에서 개별 블록들이 액세스되는 때에 관한 예측의 적어도 일부에 기초하여, 상기 제1 메모리 내에서 식별하는 단계; 호환성 있는 상기 2 또는 그 이상의 페이지들을 병합하여 병합된 페이지를 생성하는 단계;및 상기 병합된 페이지를 상기 제1 메모리에 저장하는 단계;를 포함하는 비일시적인 프로그램 저장 장치가 제공된다.
한 유형의 메모리의 장점이 효과적으로 사용되면서도 다른 유형의 메모리의 단점을 가릴 수 있는 하이브리드 메모리 시스템 및 그 방법을 구현할 수 있는 효과가 있다.
도 1은 일 실시예에서 사용되는 DRAM-PCM 아키텍처를 나타낸 블록도,
도 2는 일 실시예에 관한 스케줄링 로직을 나타낸 흐름도,
도 3은 일 실시예에 관한 DRAM 태그 테이블 내의 엔트리를 나타낸 도면,
도 4는 일 실시예에 관한 페이지 병합을 나타낸 흐름도,
도 5는 잠재적으로 호환 가능한 페이지들의 예를 나타낸 도면,
도 6은 일 실시예에 관한 하이브리드 메모리 시스템의 메모리 관리 방법을 나타낸 흐름도이다.
발명을 실시하기 위하여 발명자가 고려한 베스트 모드를 포함하는 구체적인 실시예들이 상세히 설명된다. 이 구체적인 실시예들은 도면과 함께 설명된다. 발명이 구체적인 실시예들과 관련지어 설명되고 있으나, 실시예로 발명을 제한하고자 하는 의도가 아님을 이해할 필요가 있다. 그와 반대로, 첨부한 청구항들에 정의된 발명의 사상과 범위는 대체물이나 변형물 및 균등물을 포함할 수 있다. 이하의 설명에서는 구체적인 사항들을 제시하여 발명의 전반적인 이해를 제공할 것이다. 발명은 이들 구체적인 사항의 일부 또는 전부를 생략해서 실시될 수도 있다. 또한, 널리 알려진 사항들은 발명을 불필요하게 모호하게 만드는 일이 없도록 구체적인 내용을 생략하여 설명될 수도 있다.
발명과 관련하여, 구성요소나 처리 단계 및/또는 데이터 구조는 다양한 유형의 운영체제, 프로그래밍 언어, 컴퓨팅 플랫폼, 컴퓨터 프로그램, 및/또는 범용 기기를 이용하여 구현될 수 있다. 또한, 이 기술 분야의 보통의 기술자는 덜 범용적인 특징을 갖는 기기, 예컨대 하드웨어에 내장된 기기, 현장 프로그래머블 게이트 어레이(FPGA:field programmable gate arrays), 애플리케이션에 특화된 주문형 반도체(ASIC) 등도 여기에 개시된 발명의 개념의 사상과 범위를 벗어나는 일 없이 사용될 수 있음을 이해할 수 있을 것이다. 또한, 발명은 컴퓨터로 판독 가능한 매체, 예컨대 메모리 장치에 저장된 컴퓨터 명령어 셋으로서 유형적으로 구현될 수 있다.
일 실시예에서, 하이브리드 메모리 시스템은(예컨대, 지연, 에너지 소모 등의 관점에서) 한 유형의 메모리의 장점이 효과적으로 사용되면서도 다른 유형의 메모리의 단점을 가릴 수 있도록 제공된다. 발명자들은 그러한 하이브리드 메모리 시스템을 하이브리드 PCM 및 DRAM 아키텍처를 만들어 냄으로써 구현하는 경우에 효율성이 낮음에 주목하였다. 이는 밀도를 생각할 때에 메모리가 페이지의 입도(granularity)로 구성되기 때문이다. 페이지 내의 블록들이 상이한 로컬리티 특징을 가지므로 이는 비효율적이 될 수 있다. 따라서 발명자들은 DRAM의 버퍼 효율성을 개선할 가능성이 있음을 깨달았다. 왜냐하면 일시적인 블록 레벨에서의 로컬리티는 온-칩 캐시로 걸러지기 쉽고, 불필요한 블록들이 검색되어 제거될 수 있기 때문이다.
밀도를 고려함에 따라, 메인 메모리는 대개 페이지 입도로 구성된다. 따라서, 이동(migration)과 할당(allocation) 또한 기록(bookkeeping)의 오버헤드를 최소화하기에는 비교적 입도가 크게 된다. 버퍼가 있는 하이브리드 메모리 시스템에서의 희망은, 페이지 레벨에서 높은 일시적 로컬리티가 있음으로써, 일단 페이지가 고속의 비-PCM 부분으로 이동하기만 한다면 근미래에 수차례 언급되기 쉬우므로 이동에 필요한 노력이 더욱 적어질 것이라는 점이다. 그러나, 많은 메모리 집중형 애플리케이션은 큰 메모리 자취(footprint)를 짧은 인터벌 내에 가지는 바, 이는 일반적으로 사용되는 소규모의 버퍼는 최근 액세스된 모든 페이지를 담기에 불충분한 경우가 많음을 의미한다.
일 실시예에서, 호환성 있는 페이지들이 일 유형의 메모리 내에서 병합되어 버퍼가 가득 찼을 때 공간을 절약한다. 페이지 내의 개별 블록들에 대해서는 곧 액세스될 것인지 여부가 판단된다(그러한 판단을 수행하는 메커니즘은 이하에서 자세히 설명하기로 한다). 곧 액세스될 듯한 블록들을 "유용한(useful)"블록으로, 곧 액세스되지 않을 듯한 블록들은 "무용한(useless)" 블록으로 부르기로 한다. 어떤 페이지의 유용한 블록들이 유용한 블록들의 손실 없이 타 페이지의 유용한 블록들과 성공적으로 통합될 수 있는 경우에, 페이지들은 호환성 있는(compatible) 것으로 판단된다. 이를 수행하는 메커니즘 또한 이하에서 자세히 설명하기로 한다.
도 1은 일 실시예에서 사용되는 DRAM-PCM 아키텍처를 나타낸 블록도이다. 도 1은 단지 예시일 뿐이다. 발명은 고속형 메모리를 (작은) 버퍼로 사용하는 저속형 메모리를 갖는 어떠한 하이브리드 메모리 시스템에도 적용될 수 있다. 도 1에서, DRAM 및 PCM 메모리 모두와 인터페이스할 수 있는 채널별 메모리 컨트롤러(100)가 제공됨으로써 페이지를 한 곳에서 다른 곳으로 복사하는 지연(latency)은 백그라운드로 은폐될 수 있다. PCM 액세스와 DRAM 액세스의 내부 타이밍이 상이하므로, 메모리 컨트롤러(100)는 어떤 블록들이 DRAM 버퍼에 있는지를, 예컨대 DRAM 태그 테이블(102)을 메모리 컨트롤러(100) 내부에 구비하는 등을 통하여, 인지하고 있어야 한다. DRAM 태그 테이블(102)은 DRAM 버퍼에 액세스하기 위한 행 ID 인코더(row ID encoder)와 연결된 내용 주소화 기억장치(CAM: Content Addressable Memory)로서 구성될 수 있다. 모든 메모리 요청은 주소 매핑 후 메모리 컨트롤러 큐(104) 진입 전에 DRAM 태그 테이블(102)을 살펴본다. 만약 메모리 요청이 DRAM(106) 내의 블록에 액세스하면, 이 요청은 DRAM 타이밍에 따라 스케줄링되고 열 ID는 DRAM 버퍼 인덱스로 대체된다. 그렇지 않으면, PCM 타이밍에 따라 스케줄링되고 스케줄링 로직(110)에 따라 PCM(108)에 저장된다.
도 2는 일 실시예에 관한 스케줄링 로직을 나타낸 흐름도이다. 200에서, 메모리 요청이 수신된다. 202에서는 메모리 요청에 부합하는 DRAM 태그들이 검색된다. 204에서는 부합한 경우가 발생하였는지 여부가 판단된다. 만약 그렇다면, 206에서 메모리 요청이 DRAM으로 전송된다. 그렇지 않으면, 208에서 요청이 PCM으로 전송된다. 210에서, 페이지들은 PCM과 DRAM 사이로 이동되어 DRAM에서의 부합률보다 향상되도록 한다. 이러한 이동은 다른 시점에서, 예컨대 주기적으로도 요청에 따른 프리-페칭(pre-fetching)으로도 발생할 수 있음에 주목하여야 한다.
DRAM 버퍼는 다양한 입도로 구성될 수 있다. 입도가 크면 DRAM 태그 테이블은 작아지지만 버퍼 효율성이 낮아지게 되는 반면, 입도가 작으면 효율성은 높아지지만 DRAM 태그 테이블이 커진다. 일 실시예에서는, 페이지들이 작은 입도로 배치되는 접근법을 따른다.
도 3은 일 실시예에 관한 DRAM 태그 테이블 내의 엔트리를 나타낸 도면이다. 두 태그(300,302)와 하나의 소유자 마스크(owner mask)(304)가 병합된 페이지들을 인덱스하는 데에 사용된다. 소유자 마스크의 "0"은 대응하는 블록이 페이지 ID0에 속함을 가리키는 반면, "1"은 대응하는 블록이 페이지 ID1에 속함을 가리킨다. 4KB의 페이지 크기와 64B의 블록 크기를 갖는 4GB 메모리에 대하여, 각각의 태그는 페이지 당 21비트(20비트의 페이지 ID 및 1비트의 유효 비트)가 될 수 있다. 만약 DRAM 버퍼가 블록 레벨에서 구성되면, 동등한 페이지 크기에서 블록 수에 대한 태그의 크기는 1728비트가 되며, 반면 블록 레벨에서 페이지가 병합되면, 태그의 크기는 106비트(2개의 태그 및 64비트의 마스크)가 된다. 페이지 병합은 작은 입도의 버퍼링보다 덜 유연하지만, 저장 공간의 효율성은 더 크다.
위에서 설명한 바와 같이, 페이지 병합 절차는 페이지 내의 블록이 근미래에 참조될 것인지 여부에 관한 예측에 기초한다. 제안하는 정책에서의 가정은, 가장 일시적인 로컬리티가 캐시에 의하여 필터링된다는 것으로서, 이는 다수의 블록들이 짧은 시간 간격 동안 1회 또는 2회 액세스될 수 있음을 뜻한다. 이처럼, 하나의 단순한 예측 스킴은 블록이 캐시들로부터 쓰기저장되었는지 여부에 기초할 수 있다. 만약 메모리가 메모리(즉, PCM)로부터 캐시들(즉, DRAM)로 페치된다면, 메모리가 지저분해질 때 쓰기저장되기 쉽다. 따라서, 만약 블록이 메모리로부터 페치되지만 아직 쓰기저장되지 않았다면, 이 블록은 근미래에 유용하게 될 것으로 예측된다. V0(305) 및 V1(308) 비트는 지시자(indicator)로 사용된다. 만약 V0 및 V1이 모두 "1"로 설정된다면, 이는 DRAM 버퍼 엔트리가 2개의 병합된 페이지들을 가짐을 의미한다(따라서 마스크(304)가 두 원래 페이지들 중 어느 것에 블록이 속하는지를 식별하는 데에 사용된다). 반면, 만약 V0 및 V1 중 하나만이 "1"로 설정된다면, 이는 대응하는 DRAM 버퍼 엔트리가 병합되지 않은 페이지를 가지며, 마스크(304)는 병합 전에 유용성 예측 비트(usefulness prediction bits)로 사용됨을 의미한다.
페이지 레벨 최근최소사용(LRU) 알고리즘도 페이지 병합과 함께 사용될 수 있다. DRAM 버퍼가 가득 차면, LRU 위치로부터 하나의 페이지가 선택되어, LRU 순서로 배치되어 발견된 다른 호환성 있는 페이지와 병합된다. 빈번히 액세스되는 블록들의 경우, 페이지 레벨 LRU 순서로 배치함으로써 병합되지 않은 채로 유지될 수 있다. 따라서, LRU 스택이 사용될 수 있다. LRU 스택의 각각의 엔트리는 DRAM 버퍼 엔트리에 대한 포인터를 포함한다.
도 4는 일 실시예에 관한 페이지 병합을 나타낸 흐름도이다. 400에서, DRAM 내에 손실이 발생하였다. 402에서, 페이지가 PCM으로부터 DRAM으로 복사된다. 404에서 DRAM 버퍼가 가득 찼는지 여부가 판단된다. 만약 가득 차지 않았다면, 406에서 신규 페이지가 DRAM 버퍼에 배치된다. 만약 가득 찼다면, 408에서는, 병합할 2개의 호환성 있는 페이지들이 발견된다. 410에서는 이러한 두 개의 호환성 있는 페이지들이 발견되었는지 여부가 판단된다. 만약 발견되었다면, 412에서는 두 개의 호환성 있는 페이지들이 병합된다.
두 개 (또는 그 이상)의 페이지들이 호환성이 있는지 여부는 서로 다른 여러 방법으로 판단될 수 있다. 제1 실시예에서, 페이지들 중 각각의 페이지 내의 동일한 대응하는 위치에 유용한 블록들을 갖는 페이지가 하나뿐인 경우, 페이지들은 호환성 있는 것으로 취급된다. 도 5는 잠재적으로 호환 가능한 페이지들의 예를 나타낸 도면이다. 4개의 페이지들(500,502,504,506)이 존재한다. 블록 내의 "U"는 그 블록이 유용한(useful) 블록으로 취급됨을 가리킨다. 제1 실시예에서, 페이지(500)는 페이지(506)와는 호환성이 있지만 페이지(502) 및 페이지(504)와는 호환성이 있지 않은 것으로 취급된다. 이는, 예컨대 페이지(500)가 위치(location 0)에서 유용한 블록을 가질 때, 페이지(503,504)도 위치(location 0)에서 유용한 블록들을 가질 수 있기 때문이다. 그러나, 페이지(506)는 위치(location 0)에서 유용한 블록을 갖지 않는다. 나아가, 페이지(506)는 페이지(500)가 유용한 블록들을 갖는 어떠한 위치에서도 유용한 블록들을 갖지 않는다. 이처럼, 이 페이지들은 페이지(506)의 위치(loacations 1,3,4,5)에 있는 블록들이 유용한 블록들을 갖지 않는 페이지(500)의 대응하는 위치(locations 1,3,4,5)에 직접 병합될 수 있다. 어떤 경우에는 유용하지 않은 블록들이 깨끗할 수 있지만, 다른 경우에는 지저분한 데이터를 포함할 수도 있음에 주목하여야 한다. 유용하지 않은 블록들이 깨끗한 경우에는 병합된 페이지로부터 간단히 제거될 수 있다.
제2 실시예에서, 역호환성(reverse compatibility)이 사용된다. 여기에서, 페이지 내의 블록들의 순서는, 뒤집는 경우 호환성 있는 페이지가 발생하는지 여부를 판단하기 위하여 뒤집어질 수 있다. 예컨대, 도 5에서, 페이지(500)는 페이지(504)와 역호환성이 있다. 이는 페이지(504) 내의 블록들을 뒤집음으로써 페이지(500)에서는 유용한 블록들을 포함하지 않던 위치(locations 1,4,7)에 있는 유용한 비트들을 만들기 때문이다.
물론 호환성 있는 페이지들이 판단될 수 있는 다른 방법도 있을 수 있다. 예컨대, 페이지 내의 블록들의 위치는 뒤섞이거나 무작위로 배치될 수도 있으며, 한 페이지 내에서 가능한 배치가 의도적으로 다른 페이지로부터의 블록들을 호환성 있는 위치로 이동시키는 데에 사용될 수도 있다. 더욱 복잡한 뒤섞기 기법, 예컨대 좌측 또는 우측 시프트는 병합의 기회를 증가시킨다. 그러나, 여기에서는 제1 및 제2 실시예에 집중하기로 한다. 이러한 실시예들은 요구되는 오버헤드의 양과 처리 시간이 가장 적기 때문이다.
도 6은 일 실시예에 관한 하이브리드 메모리 시스템의 메모리 관리 방법을 나타낸 흐름도이다. 600에서, 메모리 요청이 수신된다. 602에서, 메모리 요청이 제1 메모리를 액세스함으로써 처리 시도된다. 제1 메모리는 "캐시(cache)"가 될 수 있으며, 이 처리 시도는 요청을 충족하는 캐시로부터 데이터를 검색하고자 하는 시도를 포함할 수 있다. 그러한 데이터 발견에 실패한 경우를 "캐시 손실(cache miss)"로 부르기로 한다. 데이터 발견에 성공한 경우는 "캐시 부합(cache hit)"이라고 부르기로 한다. 604에서는 캐시 손실이 발생하였는지 캐시 부합이 발생하였는지가 판단된다. 캐시 부합이 발생하였다면, 시스템은 메모리 요청을 충족한 것이며, 절차는 종료될 수 있다. 만약 캐시 손실이 발생하였다면, 606에서는 메모리 페이지가 제2 메모리로부터 검색되며, 이 때 메모리 페이지는 메모리 요청을 충족할 수 있게 된다. 608에서, 이 메모리 페이지는 제2 메모리로부터 복사된다. 610에서는 제1 메모리가 이제 가득 찼는지 여부가 판단된다. 만약 가득 차지 않았다면, 메모리 페이지는 제1 메모리(622) 내에 배치되고, 절차는 종료된다. 만약 메모리가 가득 찼다면, 시스템은 제1 메모리 내에 맞는 메모리 페이지를 생성하기 위하여 페이지 병합 단계로 이동한다. 이는 612에서 제1 메모리의 각각의 페이지 내의 개별 블록들이 유용한지 여부에 관한 판단을 포함할 수 있다. 앞서 설명한 바와 같이, 블록은 곧 액세스될 것이 예측되는 경우에 유용한 블록으로 불리운다. 이러한 예측을 수행하는 간단한 방법은, 제1 메모리로부터 쓰기저장되지 않은 모든 페이지들이 유용하다고 가정하는 것이다.
614에서, 제1 메모리의 적어도 두 개의 페이지들은 서로 호환성 있는 것으로 식별된다. 616에서, 적어도 한 쌍의 호환성 있는 페이지들이 발견되었는지 여부가 판단된다. 만약 발견되지 않았다면, 618에서는 하나의 페이지가(병합된 것이든 아니든) 제1 메모리로부터 제거된다. 만약 발견되었다면, 620에서 시스템은 호환성 있는 페이지들의 병합 단계로 넘어가게 되며, 병합된 페이지는 제1 메모리(620)의 한 장소에 저장된다. 페이지 병합(620) 또는 페이지 제거(618)가 수행된 후, 복사된 메모리 페이지가 배되는 데에 사용할 수 있는 공간이 제1 메모리 내에 생성된다.
앞서 설명한 바와 같이, 제안하고자 하는 페이지 병합 기법은 DRAM/PCM 하이브리드 메모리에만 제한적으로 적용되는 것은 아니다. 2개의 레이어를 갖는 어떠한 메모리 계층에도 적용할 수 있다. 모든 미립도(fine-granularity) 구성과 비교할 때, 페이지 병합은 특정 환경에서 낮은 오버헤드를 갖는다. 조립도(coarse-granularity) 유닛의 크기와 미립도 유닛의 크기의 비율을 R이라 하고, 조립도 태그의 크기를 T라고 하자. 이 때 모든 미립도 구성의 태그 오버헤드는 Rㅧ(T+log2R)인 반면, 페이지 병합의 오버헤드는 2ㅧT+R이 된다. 2ㅧT+R이 Rㅧ(T+log2R)보다 작은 경우에 페이지 병합의 오버헤드는 미립도 구성의 오버헤드보다 작아진다.
다양한 실험을 통하여 하이브리드 메모리 시스템을 이용한 결과를 측정할 수 있었다. 이러한 실험에서는 DRAM 버퍼가 사용되었다. 페이지 구조(page-structured) DRAM 버퍼(기준값) 및 페이지 병합 알고리즘 모두에 대한 손실율을 계산하였다. 두 경우 모두 LRU를 페이지 레벨에서 사용하고, 쓰기저장되지 않은 페이지들이나 블록들을 근미래에 유용한 것으로 취급하였다. 결과에 따르면 채널 당 64KB DRAM 버퍼의 경우, 기준값인 DRAM 버퍼의 손실율은 4%였다. 페이지 병합의 결과는 DRAM보다 60%만큼 손실율이 감소하였음이 발견되었다. 특정 데이터에서 기준값의 손실율은 이미 낮으므로, 일시적 로컬리티가 페이지에 이미 존재한다. 그러한 상황에서조차 페이지 병합은 현저한 손실율 감소를 가져왔다.
이 기술분야의 보통의 기술자가 예측할 수 있는 바와 같이, 위에서 설명한 예시적인 아키텍처들은 프로세서로 실행하는 프로그램 명령이나 소프트웨어 모듈, 마이크로코드, 컴퓨터로 판독할 수 있는 매체에 담긴 컴퓨터 프로그램 제품, 논리회로, 주문형 반도체, 펌웨어, 가전제품 등 다양한 방법으로 구현될 수 있으며, 무선 기기, 무선 송수신기 및 그 밖의 무선 네트워크를 활용할 수도 있다. 나아가, 여기에 개시된 방법 및 시스템은 순수한 하드웨어로도, 순수한 소프트웨어로도, 하드웨어와 소프트웨어 요소를 함께 갖는 실시예로도 구현될 수 있다.
"컴퓨터로 판독할 수 있는 매체"라는 용어는 일반적으로 메인 메모리, 보조 메모리, 착탈식 저장장치, 하드디스크, 플래시 메모리, 디스크 드라이브 메모리, CD-ROM 및 그 밖의 형태의 지속 저장 가능한 메모리를 일컫는 데에 사용된다. 발명의 다양한 방법을 수행하기 위한 실행 가능한 컴퓨터 코드를 포함하는 저장 장치를 설명하는 데에 사용되는 프로그램 저장 장치는, 일시적인 대상물, 예컨대 전파나 신호를 포함하지는 않는 것으로 해석되어야 한다.
비록 발명의 일부 실시예들만이 상세히 설명되었으나, 발명의 개념과 범위를 벗어나지 않으면서 다양한 상이한 형태로 구현될 수 있음을 인식하여야 한다. 따라서, 실시예들은 단지 예시에 불과하고, 여기에 주어진 세부사항들로 발명이 제한되지 않으며, 첨부한 청구항들의 범위 및 그 균등물의 범위 내에서 변형이 가능함을 인식하여야 한다.

Claims (21)

  1. 제1 메모리와 제2 메모리를 갖고, 상기 제1 메모리가 상기 제2 메모리보다 작으며, 상기 제1 메모리 및 상기 제2 메모리는 상이한 유형인 하이브리드 메모리 시스템의 메모리 관리 방법으로서,
    상기 제1 메모리 내에서 서로 호환성 있는 2 또는 그 이상의 페이지들을 상기 2 또는 그 이상의 페이지들마다 포함된 개별 블록들이 액세스되는 때에 관한 예측 중 적어도 일부를 기초로 식별하는 단계;
    상기 2 또는 그 이상의 페이지들을 병합하여 병합된 페이지를 생성하는 단계; 및
    상기 병합된 페이지를 상기 제1 메모리에 저장하는 단계;를 포함하는 하이브리드 메모리 시스템의 메모리 관리 방법.
  2. 제1항에 있어서,
    상기 2 또는 그 이상의 페이지들마다 포함된 개별 블록들이 액세스되는 때에 관한 상기 예측은, 상기 개별 블록들이 상기 제1 메모리로부터 쓰기저장되었는지 여부에 관한 판단을 포함하는 하이브리드 메모리 시스템의 메모리 관리 방법.
  3. 제1항에 있어서,
    상기 식별하는 단계는,
    특정 시간 구간 동안 액세스될 것이 예측되는 블록을 유용한 블록이라고 할 때, 상기 2 또는 그 이상의 페이지들 내의 유용한 블록들을 식별하는 단계;를 포함하는 하이브리드 메모리 시스템의 메모리 관리 방법.
  4. 제1항에 있어서,
    상기 방법은, 상기 제1 메모리로부터 메모리 요청 처리를 시도하였으나 상기 제2 메모리의 페이지 검색을 요하는 손실이 초래되고, 상기 제1 메모리가 가득 차는 경우에 수행되는 하이브리드 메모리 시스템의 메모리 관리 방법.
  5. 제1 메모리와 제2 메모리를 갖고, 상기 제1 메모리가 상기 제2 메모리보다 작으며, 상기 제1 메모리 및 상기 제2 메모리는 상이한 유형인 하이브리드 메모리 시스템의 메모리 관리 방법으로서,
    메모리 요청을 수신하는 단계;
    상기 제1 메모리에 액세스하여 상기 메모리 요청을 처리하고자 시도하는 단계;
    상기 제1 메모리가 상기 메모리 요청을 충족하지 못하는 경우에,
    상기 제2 메모리로부터 상기 메모리 요청을 충족하는 메모리 페이지를 검색하는 단계;
    상기 메모리 페이지를 상기 제1 메모리에 복사하는 단계;
    상기 제1 메모리가 가득 찼을 때,
    상기 제1 메모리의 각각의 페이지 내의 개별 블록들이 유용한지 여부를, 상기 개별 블록들이 액세스되는 때에 관한 예측을 기초로, 판단하는 단계;
    적어도 2개의 서로 호환성 있는 페이지들을 식별하는 단계;
    호환성 있는 페이지들이 발견되었는지 여부를 판단하는 단계;
    호환성 있는 페이지들이 있는 경우에,
    상기 호환성 있는 페이지들을 병합하고, 병합된 페이지를 상기 제1 메모리의 제1 위치에 저장하는 단계;및
    신규로 복사된 메모리 페이지를 상기 제1 메모리 내에 저장하는 단계;를 포함하며,
    호환성 있는 페이지들이 없는 경우에,
    상기 제1 메모리로부터 페이지를 제거하는 단계;및
    상기 신규로 복사된 메모리 페이지를 상기 제1 메모리 내에 저장하는 단계;를 포함하는 하이브리드 메모리 시스템의 메모리 관리 방법.
  6. 제5항에 있어서,
    상기 제2 메모리 내에서 상기 2개의 서로 호환성 있는 페이지들은 최근최소사용(LRU: least-recently-used) 알고리즘을 기초로 선정되는 하이브리드 메모리 시스템의 메모리 관리 방법.
  7. 제1 메모리;
    상기 제1 메모리와 상이한 유형이고, 상기 제1 메모리보다 큰, 제2 메모리;및
    상기 제1 메모리 내의 서로 호환성 있는 2 또는 그 이상의 페이지들을, 상기 2 또는 그 이상의 페이지들의 각각에서 개별 블록들이 액세스될 때에 관한 예측의 적어도 일부에 기초하여, 식별하고; 상기 호환성 있는 2 또는 그 이상의 페이지들을 병합하여 병합된 페이지를 생성하고; 상기 병합된 페이지를 상기 제1 메모리 내에 저장하는 메모리 컨트롤러;를 포함하는 하이브리드 메모리 시스템.
  8. 제7항에 있어서,
    상기 제1 메모리 내의 서로 호환성 있는 식별된 상기 2 또는 그 이상의 페이지들은 상기 제1 메모리 내에도 포함되는 하이브리드 메모리 시스템.
  9. 제1 메모리 및 제2 메모리를 가지며, 상기 제1 메모리는 상기 제2 메모리보다 작으며, 상기 제1 메모리 및 상기 제2 메모리는 상이한 유형인 하이브리드 메모리 시스템의 메모리 관리 장치로서,
    2 또는 그 이상의 페이지들을, 상기 2 또는 그 이상의 페이지들의 각각에서 개별 블록들이 액세스되는 때에 관한 예측의 적어도 일부를 기초로, 상기 제1 메모리 내에서 식별하는 수단;
    상기 2 또는 그 이상의 호환성 있는 페이지들을 병합하여 병합된 페이지를 생성하는 수단;및
    상기 병합된 페이지를 상기 제1 메모리 내에 저장하는 수단;을 포함하는 하이브리드 메모리 시스템의 메모리 관리 장치.
  10. 하이브리드 메모리 시스템의 메모리 관리 방법을 기계에 의하여 수행할 수 있는 명령에 관한 프로그램을 유형적으로 구현하는 기계로 판독할 수 있는 비일시적인(non-transitory) 프로그램 저장 장치로서, 상기 하이브리드 메모리 시스템은 제1 메모리 및 제2 메모리를 가지며, 상기 제1 메모리는 상기 제2 메모리보다 작고, 상기 제1 메모리와 상기 제2 메모리는 상이한 유형이며, 상기 방법은,
    2 또는 그 이상의 페이지들을, 상기 2 또는 그 이상의 페이지들의 각각에서 개별 블록들이 액세스되는 때에 관한 예측의 적어도 일부에 기초하여, 상기 제1 메모리 내에서 식별하는 단계;
    호환성 있는 상기 2 또는 그 이상의 페이지들을 병합하여 병합된 페이지를 생성하는 단계;및
    상기 병합된 페이지를 상기 제1 메모리에 저장하는 단계;를 포함하는 비일시적인 프로그램 저장 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
KR1020130007608A 2013-01-23 2013-01-23 하이브리드 메모리 시스템의 버퍼 효율성을 위한 페이지 병합 방법 KR102014723B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130007608A KR102014723B1 (ko) 2013-01-23 2013-01-23 하이브리드 메모리 시스템의 버퍼 효율성을 위한 페이지 병합 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130007608A KR102014723B1 (ko) 2013-01-23 2013-01-23 하이브리드 메모리 시스템의 버퍼 효율성을 위한 페이지 병합 방법

Publications (2)

Publication Number Publication Date
KR20140094934A KR20140094934A (ko) 2014-07-31
KR102014723B1 true KR102014723B1 (ko) 2019-08-27

Family

ID=51740417

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130007608A KR102014723B1 (ko) 2013-01-23 2013-01-23 하이브리드 메모리 시스템의 버퍼 효율성을 위한 페이지 병합 방법

Country Status (1)

Country Link
KR (1) KR102014723B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102031490B1 (ko) 2018-04-26 2019-10-11 연세대학교 산학협력단 프리페치 장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Moinuddin K. 등 "Scalable High Performance Main Memory System Using Phase-Change Memory Technology", ACM SIGARCH COMPUTER ARCHITECTURE NEWS. VOL. 37. NO. 3. ACM, 2009.
이소윤 등, "PCM과 DRAM의 혼합형 메모리를 위한 페이지 교체 기법", 논문 한국정보과학회 2011가을 학술발표논문집 제38권 제2호(A), 2011.1

Also Published As

Publication number Publication date
KR20140094934A (ko) 2014-07-31

Similar Documents

Publication Publication Date Title
US10379746B2 (en) Information processing apparatus, storage device, and computer program product
EP3121703B1 (en) Data caching method, cache and computer system
US9177670B1 (en) Method and apparatus for flash cache management
US8386714B2 (en) Reducing write amplification in a cache with flash memory used as a write cache
US7814276B2 (en) Data cache architecture and cache algorithm used therein
US8966204B2 (en) Data migration between memory locations
TWI494761B (zh) 分割實體區塊之方法及記憶體系統
CN106547476B (zh) 用于数据存储系统的方法和装置
US9851919B2 (en) Method for data placement in a memory based file system
US20150169465A1 (en) Method and system for dynamic compression of address tables in a memory
US20140101370A1 (en) Apparatus and method for low power low latency high capacity storage class memory
US20170139825A1 (en) Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach
US9201787B2 (en) Storage device file system and block allocation
KR20170097609A (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
US9268705B2 (en) Data storage device and method of managing a cache in a data storage device
US20120297140A1 (en) Expandable data cache
KR20100021868A (ko) 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
US20090094391A1 (en) Storage device including write buffer and method for controlling the same
US20140223072A1 (en) Tiered Caching Using Single Level Cell and Multi-Level Cell Flash Technology
US9990293B2 (en) Energy-efficient dynamic dram cache sizing via selective refresh of a cache in a dram
US8874849B2 (en) Sectored cache with a tag structure capable of tracking sectors of data stored for a particular cache way
KR101180288B1 (ko) 하이브리드 메모리와 ssd 로 구성된 시스템에서의 읽기 캐시 및 쓰기 캐시 관리 방법
US20140258591A1 (en) Data storage and retrieval in a hybrid drive
US8874827B2 (en) Page merging for buffer efficiency in hybrid memory systems
US10083117B2 (en) Filtering write request sequences

Legal Events

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