KR20200085522A - 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 - Google Patents

이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 Download PDF

Info

Publication number
KR20200085522A
KR20200085522A KR1020190001723A KR20190001723A KR20200085522A KR 20200085522 A KR20200085522 A KR 20200085522A KR 1020190001723 A KR1020190001723 A KR 1020190001723A KR 20190001723 A KR20190001723 A KR 20190001723A KR 20200085522 A KR20200085522 A KR 20200085522A
Authority
KR
South Korea
Prior art keywords
memory device
memory
page
data
hot
Prior art date
Application number
KR1020190001723A
Other languages
English (en)
Inventor
한미선
문윤정
주영표
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020190001723A priority Critical patent/KR20200085522A/ko
Priority to US16/593,756 priority patent/US11379381B2/en
Priority to CN201910987218.3A priority patent/CN111414132B/zh
Publication of KR20200085522A publication Critical patent/KR20200085522A/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Abstract

본 발명의 실시 예에 따른 메인 메모리 장치는 제1 메모리 장치; 및 상기 제1 메모리 장치와 다른 액세스 레이턴시를 갖는 제2 메모리 장치를 포함한다. 상기 제1 메모리 장치는 상기 제1 메모리 장치의 적어도 하나의 영역에 대한 액세스 횟수에 근거하여 상기 적어도 하나의 영역 내에 포함된 핫 페이지를 판단한다.

Description

이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법{Main memory device having heterogeneous memories, computer system including the same and data management method thereof}
본 발명은 컴퓨터 시스템에 관한 것으로, 보다 구체적으로는 이종 메모리를 갖는 메인 메모리 장치를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법에 관한 것이다.
컴퓨터 시스템은 다양한 형태의 메모리 장치를 포함할 수 있다. 메모리 장치는 데이터를 저장하기 위한 메모리와 메모리의 동작을 제어하는 메모리 컨트롤러를 포함한다. 메모리는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 휘발성(volatile) 메모리와 EEPROM(Electrically Erasable Programmable ROM), FRAM(Ferroelectric RAM), PCRAM(Phase change Random Access Memory), MRAM(Magnetic RAM), Flash Memory 등과 같은 비휘발성(non-volatile) 메모리로 분류된다. 휘발성 메모리에 저장된 데이터는 전원 공급이 중단되면 소멸되는 반면, 비휘발성 메모리에 저장된 데이터는 전원 공급이 중단되더라도 소멸되지 않는다. 최근에는 이러한 이종의 메모리들이 탑재된 메인 메모리 장치가 개발되고 있다.
또한, 휘발성 메모리는 동작(예컨대, 쓰기 및 읽기 등) 속도가 빠른 반면, 비휘발성 메모리는 동작 속도가 상대적으로 느리다. 이에 따라, 메모리 시스템의 성능 향상을 위해 액세싱이 빈번한 데이터(예컨대, 핫 데이터)는 휘발성 메모리에 저장하고, 액세싱이 빈번하지 않은 데이터(예컨대, 콜드 데이터)는 비휘발성 메모리에 저장할 필요가 있다.
본 발명의 실시 예는 액세스 횟수에 따른 데이터 마이그레이션을 통해 동작 성능을 향상시킬 수 있는 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법을 제공한다.
본 발명의 실시 예에 따른 메인 메모리 장치는 제1 메모리 장치; 및 상기 제1 메모리 장치와 다른 액세스 레이턴시를 갖는 제2 메모리 장치를 포함한다. 상기 제1 메모리 장치는 상기 제1 메모리 장치의 적어도 하나의 영역에 대한 액세스 횟수에 근거하여 상기 적어도 하나의 영역 내에 포함된 핫 페이지를 판단한다.
본 발명의 실시 예에 따른 메인 메모리 장치는 제1 메모리 장치; 및 상기 제1 메모리 장치와 다른 단위 시간당 전력 소모량을 갖는 제2 메모리 장치를 포함한다. 상기 제1 메모리 장치는 상기 제1 메모리 장치의 적어도 하나의 영역에 대한 액세스 횟수에 근거하여 상기 적어도 하나의 영역 내에 포함된 핫 페이지를 판단한다.
본 발명의 실시 예에 따른 컴퓨터 시스템은 중앙 처리 장치(central processing unit, CPU); 및 상기 중앙 처리 장치(CPU)와 시스템 버스를 통해 연결된 메인 메모리 장치를 포함한다. 상기 메인 메모리 장치는, 제1 메모리 장치; 및 상기 제1 메모리 장치보다 짧은 액세스 레이턴시를 갖는 제2 메모리 장치를 포함한다. 상기 제1 메모리 장치는, 상기 제1 메모리 장치의 하나 또는 그 이상의 영역들에 대한 액세스 횟수에 근거하여 적어도 하나의 영역 내에 포함된 핫 페이지를 판단한다.
본 발명의 실시 예에 따른 중앙 처리 장치(central processing unit, CPU) 및 상기 중앙 처리 장치(CPU)와 시스템 버스를 통해 연결되되 액세스 레이턴시가 서로 다른 제1 메모리 장치 및 제2 메모리 장치로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템의 데이터 관리 방법으로서, 상기 중앙 처리 장치(CPU)가 상기 제1 메모리 장치의 제1 메모리 내에 핫 페이지가 존재하는지 확인하기 위한 핫 페이지 확인 명령을 상기 제1 메모리 장치로 전송하는 단계; 상기 제1 메모리 장치가 상기 제1 메모리 내의 상기 핫 페이지에 대응하는 어드레스를 포함하는 제1 응답 및 상기 제1 메모리 내에 상기 핫 페이지가 존재하지 않음을 나타내는 제2 응답 중 적어도 하나의 응답을 상기 중앙 처리 장치(CPU)로 전송하는 단계; 및 상기 제1 메모리 장치로부터 상기 제1 응답이 수신되면, 상기 중앙 처리 장치(CPU)가 상기 제1 메모리의 상기 핫 페이지에 저장된 핫 데이터와 상기 제2 메모리 장치의 제2 메모리 내의 콜드 데이터를 교환하기 위한 데이터 이동 명령을 상기 메인 메모리 장치로 전송하는 단계를 포함한다.
본 실시 예에 따르면, 메인 메모리 장치 내에서 액세스 빈도가 높은 핫 데이터와 액세스 빈도가 낮은 콜드 데이터를 정확하게 추적(tracking)하여 유효한(또는 유의미한) 핫 데이터를 동작 속도가 빠른 메모리로 이동시킬 수 있으므로, 시스템 전체의 동작 성능을 향상시킬 수 있다.
또한, 본 실시 예에 따르면, 확률 기반에 근거하여 핫 데이터를 결정함으로써, 페이지보다 큰 단위로 액세스 횟수를 관리하더라도 핫 데이터가 저장된 핫 페이지의 추적이 가능하고, 그 결과 페이지 단위로 데이터 이동(data migration)을 수행할 수 있다.
또한, 본 실시 예에 따르면, 복수의 페이지들을 포함하는 페이지 그룹 단위로 액세스 횟수를 관리함으로써, 액세스 횟수 저장을 위한 스토리지 오버헤드가 증가하는 것을 방지할 수 있다.
도 1은 본 발명의 실시 예에 따른 컴퓨터 시스템을 나타낸 도면이다.
도 2는 도 1의 메인 메모리 장치의 구성을 나타낸 도면이다.
도 3a 및 도 3b는 제1 메모리 장치의 제1 컨트롤러의 구성을 나타낸 도면이다.
도 4a는 액세스 횟수 저장부의 구성을 예시적으로 나타낸 도면이다.
도 4b는 하나의 액세스 관리 영역에 대한 핫 데이터 발생 여부를 판단하는 예를 나타낸 도면이다.
도 4c는 액세스 횟수 저장부에 핫 페이지 어드레스가 저장된 것을 나타낸 도면이다.
도 5는 본 발명의 실시 예에 따른 데이터 관리 방법을 나타낸 순서도이다.
도 6은 제1 메모리 및 제2 메모리 각각에 대한 LRU(least recently used) 큐(queue)를 나타낸 도면이다.
도 7a는 제1 메모리 장치와 제2 메모리 장치 사이의 데이터 이동(data migration)을 예시적으로 나타낸 도면이다.
도 7b는 데이터 이동 후 제1 LRU 큐와 제2 LRU 큐가 갱신된 상태를 예시적으로 나타낸 도면이다.
도 8 및 도 9는 본 발명의 실시 예에 따른 시스템의 구성을 보여주는 도면들이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 컴퓨터 시스템(10)을 나타낸 도면이다.
본 실시 예에 따른 컴퓨터 시스템(10)은 예컨대 메인 프레임 컴퓨터, 서버 컴퓨터, 퍼스널 컴퓨터, 모바일 기기, 및 프로그램 가능한 가전제품 등과 같은 범용 또는 특수 목적의 컴퓨터 시스템일 수 있다.
도 1을 참조하면, 컴퓨터 시스템(10)은 시스템 버스(500)에 전기적으로 연결되는 중앙 처리 장치(central processing unit, 이하, ‘CPU’라 함)(100), 메인 메모리 장치(200), 스토리지(300) 및 입출력 인터페이스(400)를 포함한다. 일 실시 예에 따르면, 컴퓨터 시스템(10)은 CPU(100)에 연결된 별도의 캐시 메모리(150)를 더 포함할 수 있다.
CPU(100)는 상업적으로 이용할 수 있는 다양한 프로세서일 수 있으며, 예컨대, AMD® 애슬론®, 듀론® 및 옵테론® 프로세서; ARM® 어플리케이션, 임베디드 및 보안 프로세서; IBM®과 모터로라® 드래곤볼® 및 파워PC® 프로세서; IBM and 소니® 셀 프로세서; 인텔® 셀러론®, 코어(2) 듀오®, 코어 i3, 코어 i5, 코어 i7, 아이타니엄®, 펜티엄®, 제온®, 그리고 엑스스케일® 프로세서; 그리고 유사한 프로세서들을 한정 없이 포함할 수 있다. 듀얼 마이크로프로세서, 멀티-코어 프로세서, 그리고 기타 멀티-프로세서 아키텍처가 CPU(100)로 채택될 수 있다.
CPU(100)는 메인 메모리 장치(200)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 예컨대, CPU(100)는 클락 신호 발생기(미도시)로부터 출력된 클락 신호에 응답하여 상기 프로그램들 및/또는 상기 데이터를 처리 또는 실행할 수 있다.
또한, CPU(100)는 캐시 메모리(150) 및 메인 메모리 장치(200)를 액세스(access)하도록 구성될 수 있다. 예를 들어, CPU(100)는 데이터를 메인 메모리 장치(200)에 저장할 수 있다. 또한, CPU(100)는 캐시 메모리(150) 및 메인 메모리 장치(200)에 저장된 데이터를 읽을 수 있다.
한편, CPU(100)는 메인 메모리 장치(200)에 저장된 데이터를 기반으로 다양한 동작을 수행할 수 있다. 예를 들어, CPU(100)는 제1 메모리 장치(210)와 제2 메모리 장치(250) 사이의 데이터 이동(data migration)을 메인 메모리 장치(200)에 명령할 수 있다.
캐시 메모리(150)는 속도가 빠른 장치와 느린 장치 사이에서 속도 차이에 따른 병목 현상을 줄이기 위한 범용 메모리를 지칭한다. 즉, 캐시 메모리(150)는 고속 동작하는 CPU(100)와 상대적으로 저속 동작하는 메인 메모리 장치(200) 사이의 데이터 병목 현상을 완화하는 역할을 한다. 캐시 메모리(150)는 메인 메모리 장치(200)에 저장된 데이터 중 CPU(100)가 자주 액세스하는 데이터를 캐싱할 수 있다.
도 1에 도시하지는 않았으나, 캐시 메모리(150)는 복수의 캐시를 포함할 수 있다. 예를 들어, 캐시 메모리(150)는 L1 캐시, L2 캐시 등을 포함할 수 있다. 여기에서 ‘L’은 레벨을 의미한다. 일반적으로, L1 캐시는 CPU(100) 내에 내장되어 데이터 참조 및 사용에 가장 먼저 사용될 수 있다. L1 캐시는 캐시들 중 가장 속도가 빠른 반면, 저장 용량은 작을 수 있다. L1 캐시에 데이터가 존재하지 않으면(예컨대, 캐시 미스), CPU(100)는 L2 캐시를 액세스할 수 있다. L2 캐시는 L1 캐시보다 상대적으로 속도는 느린 반면, 저장 용량은 클 수 있다. L2 캐시에도 데이터가 존재하지 않으면, CPU(100)는 메인 메모리 장치(200)를 액세스한다.
메인 메모리 장치(200)는 제1 메모리 장치(210) 및 제2 메모리 장치(250)를 포함할 수 있다. 제1 메모리 장치(210)와 제2 메모리 장치(250)는 서로 다른 구조를 가질 수 있다. 예시적으로, 제1 메모리 장치(210)는 비휘발성 메모리(non-volatile memory, NVM) 및 비휘발성 메모리를 제어하는 컨트롤러를 포함하고, 제2 메모리 장치(250)는 휘발성 메모리(volatile memory, VM) 및 휘발성 메모리를 제어하는 컨트롤러를 포함할 수 있다. 예를 들어, 휘발성 메모리는 DRAM(dynamic random access memory)이고, 비휘발성 메모리는 PCRAM(phase change RAM)일 수 있으나, 특별히 이에 한정되는 것은 아니다.
컴퓨터 시스템(10)은 메인 메모리 장치(200)에 데이터를 단기적으로 그리고 임시로 저장할 수 있다. 또한, 메인 메모리 장치(200)는 파일 시스템 형식의 데이터를 저장하거나, 판독 전용 공간을 별도로 두어 운영 체제 프로그램을 저장할 수도 있다. 한편, CPU(100)가 응용 프로그램을 실행할 때, 응용 프로그램의 적어도 일부는 스토리지(300)로부터 독출되어 메인 메모리 장치(200)에 로드될 수 있다. 메인 메모리 장치(200)에 대해서는 이후 도면들을 참조하여 상세하게 설명한다.
스토리지(300)는 하드 디스크 드라이브(이하, HDD) 및 SSD(solid state drive) 중 적어도 하나를 포함할 수 있다. 이때, ‘스토리지’는 컴퓨터 시스템(10)이 사용자 데이터를 장기적으로 저장하는 저장 매체를 가리킨다. 스토리지(300)에는 운영 시스템(Operation System, OS), 응용 프로그램(application program), 프로그램 데이터(program data) 등이 저장될 수 있다.
입출력 인터페이스(400)는 입력 인터페이스와 출력 인터페이스로 구성될 수 있다. 입력 인터페이스는 외부 입력 장치와 연결될 수 있다. 일 실시 예에 따르면, 외부 입력 장치는 키보드(keyboard), 마우스(Mouse), 마이크(Mike) 또는 스캐너(Scanner) 등일 수 있다. 사용자는 외부 입력 장치를 통해 명령, 데이터 및 정보를 컴퓨터 시스템(10)에 입력할 수 있다.
출력 인터페이스는 외부 출력 장치와 연결될 수 있다. 일 실시 예에 따르면, 외부 출력 장치는 모니터(Monitor), 프린터(Printer) 또는 스피커(Speaker) 등일 수 있다. 사용자 명령에 대한 컴퓨터 시스템(10)의 실행 및 처리 결과는 외부 출력 장치를 통해 표현된다.
도 2는 도 1의 메인 메모리 장치(200)의 구성을 나타낸 도면이다.
도 2를 참조하면, 메인 메모리 장치(200)는 비휘발성 메모리인 제1 메모리(230)를 포함하는 제1 메모리 장치(210)와 휘발성 메모리인 제2 메모리(270)를 포함하는 제2 메모리 장치(250)를 포함할 수 있다. 제1 메모리 장치(210)의 동작 속도 즉, 쓰기 및 읽기 속도는 제2 메모리 장치(250)의 동작 속도보다 느린 반면, 제1 메모리 장치(210)의 저장 용량은 제2 메모리 장치(250)의 저장 용량보다 클 수 있다.
전술한 바와 같이, 캐시 메모리(150)에서 캐시 미스가 발생한 경우, CPU(100)는 메인 메모리 장치(200)를 액세스하여 데이터를 찾는다. 제2 메모리 장치(250)의 동작 속도가 제1 메모리 장치(210)의 동작 속도보다 빠름에 따라, CPU(100)가 찾는 데이터가 제2 메모리 장치(250)에 저장된 경우에 제1 메모리 장치(210)에 저장된 경우보다 빠르게 액세스할 수 있다.
이를 위해, CPU(100)는 제1 메모리 장치(210)에 저장된 데이터 중 상대적으로 액세스 횟수가 많은 데이터(이하, ‘핫 데이터’라 함)를 제2 메모리 장치(250)로 이동시키고, 제2 메모리 장치(250)에 저장된 데이터 중 상대적으로 액세스 횟수가 작은 데이터(이하, ‘콜드 데이터’라 함)를 제1 메모리 장치(210)로 이동시키도록 메인 메모리 장치(200)를 제어할 수 있다.
이때, CPU(100)에서 제1 메모리 장치(210)에 대해 페이지 단위로 액세스 횟수를 관리하는 경우, CPU(100)에서 판단한 제1 메모리 장치(210)의 핫 데이터 및 콜드 데이터는 제1 메모리 장치(210)에서의 실제 핫 데이터 및 콜드 데이터와 다를 수 있다. 이는, 외부로부터 CPU(100)로 수신되는 액세스 요청 중 대부분은 캐시 메모리(150)에서 히트되고, 메인 메모리 장치(200)로의 액세스는 극히 일부에 불과하며, CPU(100)에서는 액세스된 데이터가 캐시 메모리(150)에 저장된 것인지 또는, 메인 메모리 장치(200)에 저장된 것인지를 정확히 판단할 수 없기 때문이다.
이에 따라, 본 실시 예에서는 메인 메모리 장치(200)의 제1 메모리 장치(210)에서 직접 제1 메모리(220) 내에서 상대적으로 액세스 횟수가 많은 페이지(예컨대, 핫 페이지)를 추적하고, CPU(100)의 요청에 따라 추적 결과를 CPU(100)로 전송한다. CPU(100)는 제1 메모리 장치(210)로부터 수신된 추적 결과에 근거하여 제1 메모리 장치(210)와 제2 메모리 장치(250) 사이의 데이터 이동(data migration)을 수행하도록 메인 메모리 장치(200)를 제어한다. 이때, 제1 메모리 장치(210)와 제2 메모리 장치(250) 사이의 데이터 이동(data migration)은 제1 메모리(230) 내의 핫 데이터와 제2 메모리(270) 내의 콜드 데이터를 교환하는 동작일 수 있다. 이를 위한 구체적인 구성 및 방법은 이후 도면들을 참조하여 상세히 설명한다.
계속하여 도 2를 참조하면, 제1 메모리 장치(210)는 제1 컨트롤러(220) 및 제1 메모리(230)를 포함할 수 있다. 또한, 제2 메모리 장치(250)는 제2 컨트롤러(260) 및 제2 메모리(270)를 포함할 수 있다. 도 2에서는 도면의 간략화를 위해 제1 메모리(230) 및 제2 메모리(270)를 각각 하나의 블록으로 도시하였으나, 제1 메모리(230) 및 제2 메모리(270)는 각각 복수의 메모리 칩들을 포함할 수 있다.
제1 메모리 장치(210)의 제1 컨트롤러(220)는 제1 메모리(230)의 동작을 제어할 수 있다. 제1 컨트롤러(220)는 CPU(100)로부터 수신된 명령에 대응하는 동작을 수행하도록 제1 메모리(230)를 제어할 수 있다.
한편, 제1 컨트롤러(220)는 제1 메모리(230)의 데이터 저장 영역을 복수의 영역들로 그룹화할 수 있다. 그룹화된 복수의 영역들은 각각 복수의 페이지들을 포함할 수 있다. 설명의 편의를 위해, 이후부터는 그룹화된 각 영역을 ‘액세스 관리 영역’이라 한다. 제1 컨트롤러(220)는 액세스 관리 영역들 각각에 대한 액세스 횟수를 관리하고, 액세스 관리 영역들 각각의 액세스 횟수에 따라 제1 메모리(230)에서의 핫 데이터가 저장된 핫 페이지를 결정할 수 있다.
이와 같이, 제 컨트롤러(220)가 제1 메모리(220)에 대한 액세스 횟수를 페이지 단위로 관리하지 않고, 페이지보다 큰 단위인 액세스 관리 영역 단위로 관리하는 것은 제1 메모리(220)의 저장 용량은 매우 크기 때문에, 페이지 단위로 액세스 횟수를 관리하는 경우 각 페이지에 대한 액세스 횟수를 저장하기 위한 스토리지 오버헤드(storage overhead)가 증가하는 문제가 있기 때문이다.
따라서, 본 실시 예에서는 스토리지 오버헤드(storage overhead)의 증가를 방지하기 위해, 페이지보다 큰 단위인 액세스 관리 영역 단위로 액세스 횟수를 관리한다. 제1 컨트롤러(220)가 액세스 관리 영역들 각각에 대한 액세스 횟수에 따라 제1 메모리(230) 내의 핫 페이지를 결정하는 것에 대해서는 이후 도면들을 참조하여 상세히 설명한다.
제1 메모리(230)는 복수의 메모리 셀들로 구성된 메모리 셀 어레이(도시하지 않음), 메모리 셀 어레이로 데이터를 쓰거나 또는 메모리 셀 어레이로부터 데이터를 읽기 위한 주변 회로(도시하지 않음), 및 주변 회로의 동작을 제어하기 위한 제어 로직(도시하지 않음) 등을 포함할 수 있다. 제1 메모리(230)는 비휘발성 메모리일 수 있다. 예를 들어, 제1 메모리(230)는 PCRAM으로 구성될 수 있으나, 특별히 이에 한정되는 것은 아니며, 다양한 비휘발성 메모리들로 구성될 수 있다.
제2 메모리 장치(250)의 제2 컨트롤러(260)는 제2 메모리(270)의 동작을 제어할 수 있다. 제2 컨트롤러(260)는 CPU(100)로부터 수신된 명령에 대응하는 동작을 수행하도록 제2 메모리(270)를 제어할 수 있다. 제2 메모리(270)는 제2 컨트롤러(260)로부터 제공된 명령에 따라 메모리 셀 어레이(도시하지 않음)에 데이터를 쓰거나 또는, 메모리 셀 어레이로부터 데이터를 읽는 동작을 수행할 수 있다.
제2 메모리(270)는 복수의 메모리 셀들로 구성된 메모리 셀 어레이, 메모리 셀 어레이로 데이터를 쓰거나 또는 메모리 셀 어레이로부터 데이터를 읽기 위한 주변 회로(도시하지 않음), 및 주변 회로의 동작을 제어하기 위한 제어 로직(도시하지 않음) 등을 포함할 수 있다.
제2 메모리(270)는 휘발성 메모리일 수 있다. 예를 들어, 제1 메모리(230)는 DRAM으로 구성될 수 있으나, 특별히 이에 한정되는 것은 아니며, 다양한 휘발성 메모리들로 구성될 수 있다.
제1 메모리 장치(210)는 제2 메모리 장치(250)에 비해 상대적으로 긴 액세스 레이턴시(access latency)를 가질 수 있다. 여기에서, 액세스 레이턴시는 CPU(100)로부터 명령이 전송된 시점부터 전송된 명령에 대응하는 동작을 완료하고 CPU(100)로 응답(response)을 전송하는 시점까지의 시간을 의미할 수 있다. 또한, 제1 메모리 장치(210)는 제2 메모리 장치(250)에 비해 상대적으로 큰 단위 시간당 전력 소모량을 가질 수 있다.
도 3a는 본 발명의 일 실시 예에 따른 제1 메모리 장치(210)의 제1 컨트롤러(220)의 구성을 나타낸 도면이다.
도 3a를 참조하면, 제1 컨트롤러(220)는 제1 인터페이스(221), 메모리 코어(222), 액세스 관리부(223), 액세스 횟수 저장부(224) 및 제2 인터페이스(225)를 포함할 수 있다.
제1 인터페이스(221)는 시스템 버스(500)를 통해 CPU(100)로부터 전송되는 명령 등을 수신하거나 또는 CPU(100)로 데이터 등을 전송하도록 구성될 수 있다.
메모리 코어(222)는 제1 컨트롤러(220)의 제반 동작을 제어할 수 있다. 메모리 코어(222)는 마이크로 컨트롤 유닛(micro control unit)(MCU), 중앙 처리 장치(central processing unit)(CPU)로 구성될 수 있다. 메모리 코어(222)는 CPU(100)로부터 전송된 명령을 처리할 수 있다. CPU(100)로부터 전송된 명령을 처리하기 위해서, 메모리 코어(222)는 코드 형태의 명령(instruction) 또는 알고리즘, 즉, 펌웨어를 구동하고, 제1 인터페이스(221), 액세스 관리부(223), 액세스 횟수 저장부(224) 및 제2 인터페이스(225) 등과 같은 내부 기능 블록들 및 제1 메모리(230)를 제어할 수 있다.
메모리 코어(222)는 CPU(100)로부터 전송된 명령에 근거하여 제1 메모리(230)의 동작을 제어하기 위한 제어 신호들을 생성하고, 생성된 제어 신호들을 제2 인터페이스(225)를 통해 제1 메모리(230)로 제공할 수 있다.
메모리 코어(222)는 제1 메모리(230)의 데이터 저장 영역 전체를 복수의 페이지들을 포함하는 복수의 액세스 관리 영역들로 그룹화할 수 있다. 메모리 코어(222)는 액세스 관리부(223)를 이용하여 제1 메모리(230)의 액세스 관리 영역들 각각에 대한 액세스 횟수를 관리할 수 있다.
액세스 관리부(223)는 메모리 코어(222)의 제어에 따라 제1 메모리(230)의 액세스 관리 영역들 각각에 대한 액세스 횟수를 관리할 수 있다. 예를 들어, 액세스 관리부(223)는 제1 메모리(230)에 대한 액세스 발생 시 액세스 횟수 저장부(224)에 저장된 액세스 관리 영역 별 액세스 횟수를 증분시킬 수 있다. 이때, 액세스 관리 영역에 대한 액세스가 발생하는 것은 해당 액세스 관리 영역에 포함된 복수의 페이지들 중 어떤 페이지에 대한 액세스가 발생하는 것을 의미할 수 있다. 예를 들어, 제1 액세스 관리 영역에 포함된 제1 페이지가 액세스되면, 액세스된 제1 페이지의 액세스 횟수가 아닌 제1 액세스 관리 영역의 액세스 횟수가 증분될 수 있다.
액세스 횟수 저장부(224)는 제1 메모리(230)의 액세스 관리 영역 별 액세스 횟수를 저장하도록 구성될 수 있다. 액세스 횟수 저장부(224)는 제1 컨트롤러(220) 내에 구비된 SRAM 및 DRAM 등과 같은 메모리(도시하지 않음)의 일부 영역에 포함되거나 또는, 별도의 레지스터(register)로 구비될 수 있다.
제2 인터페이스(225)는 메모리 코어(222)의 제어에 따라 제1 메모리(230)를 제어할 수 있다. 제2 인터페이스(225)는 메모리 코어(222)에 의해 생성된 제어 신호들을 제1 메모리(230)로 제공할 수 있다. 제어 신호들은 제1 메모리(230)를 제어하기 위한 커맨드, 어드레스, 동작 제어 신호 등을 포함할 수 있다. 제2 인터페이스(225)는 데이터를 제1 메모리(230)로 제공하거나, 제1 메모리(230)로부터 데이터를 제공 받을 수 있다.
제2 컨트롤러(220)의 제1 인터페이스(221), 메모리 코어(222), 액세스 관리부(223), 액세스 횟수 저장부(224) 및 제2 인터페이스(225)는 내부 버스(227)를 통해 전기적으로 연결될 수 있다.
도 3b는 본 발명의 다른 실시 예에 따른 제1 메모리 장치(210)의 제1 컨트롤러(220)의 구성을 나타낸 도면이다. 도 3b를 참조하여 본 실시 예에 따른 제1 컨트롤러(220)의 구성을 설명함에 있어서, 도 3a에 도시된 제1 컨트롤러(220)의 구성과 동일한 구성에 대한 설명은 생략한다.
도 3b를 참조하면, 제1 컨트롤러(220)는 메모리 코어(222) 내에 포함된 액세스 관리 로직(228)을 포함할 수 있다. 액세스 관리 로직(228)은 소프트웨어, 하드웨어 또는 이들의 조합으로 구성될 수 있다.
도 4a는 액세스 횟수 저장부(224)의 구성을 예시적으로 나타낸 도면이고, 도 4b는 하나의 액세스 관리 영역에 대한 핫 페이지 발생 여부를 판단하는 예를 나타낸 도면이고, 도 4c는 액세스 횟수 저장부(224)에 핫 페이지 어드레스가 저장된 예를 나타낸 도면이다. 설명의 편의를 위해, 제1 메모리(230)는 n개의 액세스 관리 영역들로 그룹화된 것으로 가정한다. 여기에서 n은 1 이상의 자연수일 수 있다.
도 4a를 참조하면, 액세스 횟수 저장부(224)는 복수의 액세스 관리 영역들(REGION1 내지 REGIONn) 각각에 대한 액세스 횟수를 저장하고, 핫 페이지 발생 시 핫 페이지 어드레스를 저장하도록 구성될 수 있다. 여기에서, 핫 페이지는 핫 데이터가 저장된 페이지를 나타내며, 본 명세서 내에서 핫 페이지와 핫 데이터는 동일한 의미로 사용될 수 있다. 이때, 핫 페이지는 각 액세스 관리 영역 별로 액세스 횟수가 기 설정된 임계 값(예컨대, m, m ≥ 1)에 도달한 시점에 액세스된 페이지일 수 있다.
예를 들어, 도 4b에 도시한 바와 같이, CPU(100)로부터 제1 메모리(230)의 제1 액세스 관리 영역(REGION1)에 대하여 m번의 액세스가 발생한 것으로 가정한다. 첫 번째 액세스(A1)가 발생하면, 액세스 횟수 저장부(224)의 제1 액세스 관리 영역(REGION1)에 대응하는 액세스 횟수 필드의 값은 ‘0’에서 ‘1’이 될 것이다. 이어서, 두 번째 내지 m 번째 액세스들(A2 내지 Am)이 각각 발생할 때마다 액세스 횟수 저장부(224)의 제1 액세스 관리 영역(REGION1)에 대응하는 액세스 횟수 필드의 값은 ‘1’씩 증분되어 도 4c와 같이 결국 ‘m’이 될 것이다.
제1 액세스 관리 영역(REGION1)의 액세스 빈도 수가 ‘m’이 되면, 액세스 관리부(223)는 제1 액세스 관리 영역(REGION1)에 포함된 복수의 페이지들 중 m 번째로 액세스된 페이지에 대응하는 어드레스(예컨대, ‘ADDR_H’)를 액세스 횟수 저장부(224)의 제1 액세스 관리 영역(REGION1)에 대응하는 핫 페이지 어드레스 필드에 저장할 수 있다. 이때, m 번째 액세스된 페이지를 핫 페이지로 결정하는 것은 확률 기반에 의해 수행될 수 있다. 즉, 한 번 액세스된 페이지는 다시 액세스될 확률이 높은 특성에 기반하여 제1 액세스 관리 영역(REGION1)에 대한 m 번의 액세스 대부분을 m 번째 액세스된 페이지가 점유한다고 가정하는 것이다. 이와 같이, 확률을 기반으로 핫 페이지를 결정함으로써, 페이지보다 큰 단위인 액세스 관리 영역 별로 액세스 횟수를 관리하더라도 비교적 정확한 핫 페이지의 추적이 가능하고, 그 결과 페이지 단위로 데이터 이동(data migration)을 수행할 수 있다.
또한, 전술한 바와 같이, 페이지 단위가 아닌 페이지보다 큰 단위(즉, 복수의 페이지들을 포함하는 액세스 관리 영역 단위) 별로 액세스 횟수를 관리함으로써, 액세스 횟수 저장을 위한 스토리지 오버헤드가 증가하는 것을 방지할 수 있다.
여기까지, 제1 메모리 장치(210)의 제1 컨트롤러(220)가 제1 메모리(230)의 액세스 관리 영역들 각각에 대한 액세스 횟수를 관리하고, 액세스 횟수가 기 설정된 임계 값(m)에 도달하는 액세스 관리 영역이 발생하면, 해당 액세스 관리 영역에 포함된 페이지들 중 m 번째 액세스된 페이지에 대응하는 어드레스를 핫 페이지 어드레스로 저장하는 것을 설명하였다. 이후부터는, 액세스 관리 영역 별 액세스 횟수에 근거하여 결정된 핫 페이지에 저장된 데이터를 동작 속도가 빠른 제2 메모리 장치(250)로 이동시키는 방법에 대하여 상세히 설명한다.
도 5는 본 발명의 실시 예에 따른 데이터 관리 방법을 나타낸 순서도이다. 도 5를 참조하여 본 실시 예에 따른 데이터 관리 방법을 설명함에 있어서, 도 3a 내지 도 4c 중 적어도 하나의 도면이 참조될 수 있다.
S501 단계에서, CPU(100)는 제1 메모리 장치(210)의 제1 메모리(230) 내에 핫 페이지가 존재하는지 확인하는 주기(즉, 기 설정된 주기)에 도달했는지 여부를 판단할 수 있다. 기 설정된 주기에 도달한 것으로 판단되면, 프로세스는 S503 단계로 진행될 수 있다.
S503 단계에서, CPU(100)는 시스템 버스(500, 도 1)를 통해 제1 메모리(230)에 핫 페이지가 존재하는지를 확인하기 위한 명령 즉, 핫 페이지 확인 명령(CMD_H)을 제1 메모리 장치(210)로 전송할 수 있다.
S505 단계에서, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 CPU(100)로부터 수신된 핫 페이지 확인 명령(CMD_H)에 응답하여 액세스 횟수 저장부(224)의 핫 페이지 어드레스 필드에 저장된 어드레스(즉, 핫 페이지 어드레스)가 있는지 확인할 수 있다. 액세스 횟수 저장부(224)에 핫 페이지 어드레스가 저장된 경우, 프로세스는 S507 단계로 진행될 수 있다. 한편, 액세스 횟수 저장부(224)에 저장된 핫 페이지 어드레스가 없으면, 프로세스는 S509 단계로 진행될 수 있다.
S507 단계에서, 제1 메모리 장치(210)의 제2 컨트롤러(220)는 핫 페이지 어드레스(ADDR_H)를 시스템 버스(500)를 통해 CPU(100)로 전송할 수 있다. 이후 프로세스는 S511 단계로 진행될 수 있다.
한편, S509 단계에서, 제1 메모리 장치(210)의 제2 컨트롤러(220)는 핫 페이지가 없음을 나타내는 응답(RES_NH)을 CPU(100)로 전송할 수 있다. 이후 프로세스는 S517 단계로 진행될 수 있다.
S511 단계에서, CPU(100)는, 제1 메모리 장치(210) 및 제2 메모리 장치(250)로 데이터 이동 명령(CMD_DM)을 전송할 수 있다. 여기에서, 데이터 이동 명령(CMD_DM)은 제1 메모리 장치(210)의 제1 메모리(230)의 핫 페이지 어드레스(ADDR_H)에 대응하는 페이지에 저장된 핫 데이터를 제2 메모리 장치(250)의 제2 메모리(270)로 이동시키기 위한 데이터 이동 명령을 포함할 수 있다. 또한, 데이터 이동 명령(CMD_DM)은 제2 메모리 장치(250)의 제2 메모리(270)의 콜드 페이지에 저장된 콜드 데이터를 제1 메모리 장치(210)의 제1 메모리(230)로 이동시키는 명령을 포함할 수 있다. 따라서, 이후 프로세스는 S513 단계 및 S515 단계로 각각 진행될 수 있다. 예를 들어, S513 단계와 S515 단계는 동시에 수행될 수 있으나, 특별히 이에 한정되는 것은 아니다.
S513 단계에서, 제2 메모리 장치(250)의 제2 컨트롤러(260)는 제2 메모리(270)의 콜드 페이지로부터 콜드 데이터를 독출하여 버퍼 메모리(도시하지 않음)에 임시 저장하고, 제1 메모리 장치(210)로부터 수신된 핫 데이터를 콜드 페이지에 저장할 수 있다. 또한, 제2 컨트롤러(260)는 버퍼 메모리에 임시 저장된 콜드 데이터를 제1 메모리 장치(210)로 전송할 수 있다.
이때, 제2 메모리 장치(250)의 제2 메모리(270)가 빈 페이지를 포함하면, 콜드 페이지로부터 콜드 데이터를 독출하여 버퍼 메모리에 임시 저장하는 과정은 생략되고, 제1 메모리(230)의 핫 데이터를 제2 메모리(270)의 빈 페이지에 즉시 저장할 수도 있다.
그러나, 제2 메모리(270)가 가득 차 있는 상태에서 제1 메모리(230)의 핫 데이터를 제2 메모리(270)로 이동시키기 위해서는 제2 메모리(270)에 저장된 데이터와 교환해야 한다. 이를 위해, CPU(100)는 제2 메모리(270)에 저장된 데이터 중 제1 메모리(230)의 핫 데이터와 교환할 데이터를 선택할 수 있으며, 선택 기준은 액세스된 시점(또는 순서)일 수 있다. 예를 들어, CPU(100)는 제2 메모리(270)의 페이지들 중 액세스한지 가장 오래된 페이지에 저장된 데이터(즉, 콜드 데이터)를 제1 메모리(230)의 핫 데이터와 교환할 데이터로 선택할 수 있다.
CPU(100)는 S511 단계에서 데이터 이동 명령(CMD_DM)을 제1 메모리 장치(210) 및 제2 메모리 장치(250)로 전송하기 전에 제2 메모리 장치(250)의 제2 메모리(270)에서 콜드 데이터를 선택하고, 선택된 콜드 데이터가 저장된 콜드 페이지 어드레스를 제2 메모리 장치(250)로 전송할 데이터 이동 명령(CMD_DM)에 포함시킬 수 있다. CPU(100)가 제2 메모리(270)에서 콜드 데이터를 선택하는 방법에 대해서는 이후 도 6을 참조하여 상세하게 설명한다.
S515 단계에서, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 제1 메모리(230)의 핫 페이지로부터 핫 데이터를 독출하여 제2 메모리 장치(250)로 전송하고, 제2 메모리 장치(250)로부터 수신된 콜드 데이터를 핫 페이지에 저장할 수 있다.
S517 단계에서, CPU(100)는 액세스 횟수 저장부(224)의 액세스 횟수 필드 및 핫 페이지 어드레스 필드에 저장된 값을 초기화하기 위한 액세스 횟수 저장부 리셋 명령(CMD_R)을 제1 메모리 장치(210)로 전송할 수 있다. 본 실시 예에서는, CPU(100)가 명령들(CMD_H, CMD_DM, CMD_R)을 순차적으로 전송하는 것으로 예를 들어 설명하였으나, CPU(100)는 상술한 명령들(CMD_H, CMD_DM, CMD_R)을 모두 포함하는 하나의 명령을 제1 및 제2 메모리 장치(210, 250)로 전송하는 것도 가능하다.
S519 단계에서, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 CPU(100)로부터 수신된 액세스 횟수 저장부 리셋 명령(CMD_R)에 따라 액세스 횟수 저장부(224)에 저장된 값(또는 정보)을 초기화시킬 수 있다.
도 6은 제1 메모리(230) 및 제2 메모리(270) 각각에 대한 LRU(least recently used) 큐(queue)를 나타낸 도면이다. 전술한 바와 같이, CPU(100)는 도 6에 도시된 제2 메모리(270)의 LRU 큐를 이용하여 제2 메모리(270)에서 제1 메모리(230)의 핫 데이터와 교환할 콜드 데이터를 선택할 수 있다.
예를 들어, CPU(100)는 제1 메모리(230) 및 제2 메모리(270) 각각에 대한 LRU 큐를 별도로 관리할 수 있다. 설명의 편의를 위해, 제1 메모리(230)에 대한 LRU 큐를 제1 LRU 큐(LRUQ1)라 하고, 제2 메모리(270)에 대한 LRU 큐를 제2 LRU 큐(LRUQ2)라 한다. 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2)는 제1 메모리(230) 또는 제2 메모리(270)에 저장될 수 있다. 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2)는 서로 동일한 구성을 가질 수 있다. 예를 들어, 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2)는 각각 복수의 어드레스를 저장하기 위한 복수의 저장 공간들을 포함할 수 있다. 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2) 각각의 일 측 첫 번째 저장 공간에는 가장 최근 액세스된(MRU, most recently used) 페이지의 어드레스가 저장되고, 타 측 첫 번째 공간에는 가장 예전에(또는 오래 전에) 액세스된(LRU) 페이지의 어드레스가 저장될 수 있다.
제1 메모리(230) 및 제2 메모리(270)에 대한 액세스가 발생할 때마다 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2) 각각의 MRU 공간에 저장된 액세스 페이지의 어드레스가 갱신되고, 원래 MRU 공간에 저장되었던 이전 액세스 페이지부터 나머지 액세스 페이지들의 어드레스 정보는 각각 LRU 측으로 한 칸씩 이동할 수 있다.
CPU(100)는 제2 LRU 큐(LRUQ2)를 참조하여 제2 메모리(270)에서 가장 예전에 액세스된(LRU) 페이지를 확인하고, 해당 페이지에 저장된 데이터를 제1 메모리(230)의 핫 데이터와 교환할 콜드 데이터로 결정할 수 있다. 한편, CPU(100)는 제1 메모리(230)의 핫 데이터와 제2 메모리(270)의 콜드 데이터의 교환이 완료되면, 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2)의 MRU 공간들에 저장된 정보 즉, 페이지 어드레스를 갱신할 수 있다.
도 7a는 제1 메모리 장치(210)와 제2 메모리 장치(250) 사이의 데이터 이동을 예시적으로 나타낸 도면이고, 도 7b는 데이터 이동 후 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2)가 갱신된 상태를 예시적으로 나타낸 도면이다.
도 7a를 참조하면, CPU(100)가 시스템 버스(500)를 통해 제1 메모리 장치(210) 및 제2 메모리 장치(250) 로 데이터 이동 명령(CMD_DM)을 전송할 수 있다(①).
이때, 제1 메모리 장치(210)로 전송된 데이터 이동 명령(CMD_DM)은 제1 메모리(230)에서 핫 데이터가 저장된 핫 페이지의 어드레스, 핫 페이지로부터 핫 데이터를 독출하기 위한 읽기 명령, 제2 메모리 장치(250)로부터 전송된 콜드 데이터를 저장하기 위한 쓰기 명령 등을 포함할 수 있으나, 특별히 이에 한정되는 것은 아니다.
또한, 제2 메모리 장치(250)로 전송된 데이터 이동 명령(CMD_DM)은 제2 메모리(270)에서 콜드 데이터가 저장된 콜드 페이지의 어드레스, 콜드 페이지로부터 콜드 데이터를 독출하기 위한 읽기 명령, 제1 메모리 장치(230)로부터 전송된 핫 데이터를 저장하기 위한 쓰기 명령 등을 포함할 수 있으나, 특별히 이에 한정되는 것은 아니다.
CPU(100)로부터 데이터 이동 명령(CMD_DM)을 수신한 제2 메모리 장치(250)의 제2 컨트롤러(260)는 제2 메모리(270)로부터 콜드 데이터를 독출하고, 독출된 콜드 데이터는 제2 컨트롤러(260) 내에 포함된 버퍼 메모리(도시하지 않음)에 임시 저장할 수 있다(②). 마찬가지로, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 데이터 이동 명령(CMD_DM)에 근거하여 제1 메모리(230)로부터 핫 데이터를 독출하고(②), 독출된 핫 데이터를 제2 컨트롤러(260)로 전송할 수 있다(③).
제2 컨트롤러(260)는 제1 메모리 장치(210)로부터 수신된 핫 데이터를 제2 메모리(270)에 저장할 수 있다(④). 이때, 제2 메모리(270)에서 핫 데이터가 저장되는 영역은 콜드 데이터가 저장되어 있던 영역이다.
또한, 제2 컨트롤러(260)는 버퍼 메모리에 임시 저장된 콜드 데이터를 제1 메모리 장치(210)로 전송할 수 있다(⑤). 제1 컨트롤러(220)는 제2 메모리 장치(250)로부터 수신된 콜드 데이터를 제1 메모리(230)에 저장할 수 있다(⑥). 이때, 제1 메모리(230)에서 콜드 데이터가 저장된 영역은 핫 데이터가 저장되어 있던 영역이다. 이로써, 제1 메모리(230)의 핫 데이터와 제2 메모리(270)의 콜드 데이터의 교환이 완료될 수 있다.
설명한 바와 같이, 제1 메모리(230)와 제2 메모리(270) 사이의 데이터 이동을 위해, CPU(100)는 제1 메모리(230)에서 핫 데이터가 저장된 페이지를 액세스하고, 제2 메모리(270)에서 LRU 페이지(도 6 참조)를 액세스한다.
이에 따라, 도 7b에 도시한 바와 같이, 데이터 교환 전, 제2 LRU 큐(LRUQ2)에서 가장 예전에 액세스된 페이지에 대응하는 어드레스(예컨대, ADDR_1)는 데이터 교환 후, 제2 LRU 큐(LRUQ2)에서 가장 최근에 액세스된 어드레스로서 MRU 공간에 저장될 수 있다. 이때, 제2 LRU 큐(LRUQ2)의 MRU 공간에 신규 어드레스 정보가 저장됨에 따라, 원래 MRU 공간에 저장된 어드레스를 포함한 이후 어드레스들은 LRU 공간 측으로 한 칸씩 이동될 수 있다. 예를 들어, 데이터 교환 전, 제2 LRU 큐(LRUQ2)에 ‘1’내지 ‘k’ 어드레스들이 저장되고, 여기에서, 어드레스 ‘k’가 콜드 페이지 어드레스(ADDR_1)인 것으로 가정한다. 데이터 교환 후, 어드레스 ‘k’가 제2 LRU 큐(LRUQ2)의 MRU 공간에 저장되면, ‘1’ 내지 ‘k-1’ 어드레스들이 각각 오른쪽으로 한 칸씩 이동하여 어드레스 ‘k-1’이 LRU 페이지가 된다.
또한, 데이터 교환 전, 제1 LRU 큐(LRUQ1)에서 핫 페이지에 대응하는 어드레스(예컨대, ADDR_2)는 데이터 교환 후, 제1 LRU 큐(LRUQ1)에서 가장 최근에 액세스된 어드레스로서 MRU 공간에 저장될 수 있다. 이때, 제1 LRU 큐(LRUQ1)의 MRU 공간에 신규 어드레스(즉, ADDR_2)가 저장됨에 따라, 원래 MRU 공간에 저장된 어드레스부터 핫 페이지 어드레스(ADDR_2)가 저장된 공간 이전의 공간에 저장된 어드레스들은 LRU 공간 측으로 이동될 수 있다. 예를 들어, 데이터 교환 전, 제1 LRU 큐(LRUQ1)에 ‘1’ 내지 ‘k’ 어드레스들이 저장되고, 여기에서, 어드레스 ‘3’이 핫 페이지 어드레스(ADDR_2)인 것으로 가정한다. 데이터 교환 후, 어드레스 ‘3’이 제1 LRU 큐(LRUQ1)의 MRU 공간에 저장되면, ‘1’ 및 ‘2’ 어드레스들이 오른쪽으로 한 칸씩 이동한다. 이때, 제1 LRU 큐(LRUQ1)에서는 여전히 어드레스 ‘k’가 LRU 페이지가 된다.
한편, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 데이터 교환이 완료되면, 액세스 횟수 저장부(224)의 액세스 횟수 필드 및 핫 페이지 어드레스 필드에 저장된 정보를 초기화하는 리셋 동작을 수행할 수 있다. 이와 같이, 액세스 횟수 저장부(224)에 대한 리셋 동작을 수행하는 것은 매우 오랜 시간 동안 액세스 횟수가 증분되어 기 설정된 임계 값(m)에 도달한 경우, 해당 페이지에 저장된 데이터를 핫 데이터로서 제2 메모리(270)로 이동시키는 것은 무의미하기 때문이다. 즉, 상술한 경우의 핫 데이터는 무효한(또는 무의미한) 핫 데이터일 수 있다. 따라서, 제1 컨트롤러(220)는 CPU(100)로부터 주기적으로 핫 데이터를 확인하고, 핫 데이터를 이동시키고, 액세스 횟수 저장부(224)를 리셋하기 위한 명령이 수신될 때마다 핫 데이터의 존재 여부, 데이터 이동의 수행 여부에 관계 없이 액세스 횟수 저장부(264)를 리셋한다.
도 8은 본 발명의 실시 예에 따른 시스템(1000)의 구성을 보여주는 도면이다. 도 8에서, 상기 시스템(1000)은 메인 보드(1110), 프로세서(1120) 및 메모리 모듈(1130)을 포함할 수 있다. 상기 메인 보드(1110)는 시스템을 구성하는 부품을 장착하기 위한 기판으로서, 마더 보드(Mother Board)로도 불릴 수 있다. 상기 메인 보드(1110)는 상기 프로세서(1120)가 장착될 수 있는 슬롯(도시하지 않음) 및 상기 메모리 모듈(1130)이 장착될 수 있는 슬롯(1140)을 포함할 수 있다. 상기 메인 보드(1110)는 상기 프로세서(1120)와 상기 메모리 모듈(1130)을 전기적으로 연결하기 위한 배선(1150)을 포함할 수 있다. 상기 프로세서(1120)는 상기 메인 보드(1110) 상에 장착될 수 있다. 상기 프로세서(1120)는 중앙처리장치(CPU), 그래픽 처리 장치(Graphic Processing Unit, GPU), 멀티미디어 프로세서(Multi-Media Processor, MMP), 디지털 신호 프로세서(Digital Signal Processor)를 포함할 수 있다. 또한 어플리케이션 프로세서(AP)와 같이 다양한 기능을 가진 프로세서 칩들을 조합하여 시스템 온 칩(System On Chip)의 형태로 구현될 수 있다.
상기 메모리 모듈(1130)은 상기 메인 보드(1110)의 슬롯(1140)을 통해 상기 메인 보드(1110) 상에 장착될 수 있다. 상기 메모리 모듈(1130)은 모듈 기판에 형성된 모듈 핀 및 상기 슬롯(1140)을 통해 상기 메인 보드(1110)의 배선(1150)과 연결될 수 있다. 상기 메모리 모듈(1130)은 예를 들어, UDIMM (Unbuffered Dual Inline Memory Module), DIMM (Dual Inline Memory Module), RDIMM (Registered Dual Inline Memory Module), LRDIMM (Load Reduced Dual Inline Memory Module), SODIMM (Small Outline Dual Inline Memory Module), NVDIMM (Non-Volatile Dual Line Memory Module) 등을 포함할 수 있다.
도 1에 도시된 메인 메모리 장치(200)는 상기 메모리 모듈(1130)로 적용될 수 있다. 상기 메모리 모듈(1130)은 각각 복수의 메모리 장치(1131)를 포함할 수 있다. 상기 복수의 메모리 장치(1131)는 각각 휘발성 메모리 장치 및 비휘발성 메모리 장치 중 하나 이상을 포함할 수 있다. 상기 휘발성 메모리 장치는 SRAM, DRAM, SDRAM 등을 포함할 수 있고, 상기 비휘발성 메모리 장치는 ROM, PROM, EEPROM, EPROM, 플래시 메모리, PRAM, MRAM, RRAM 및 FRAM 등을 포함할 수 있다. 도 1에 도시된 메인 메모리 장치(200)의 제2 메모리 장치(250)는 비휘발성 메모리 장치를 포함하는 상기 메모리 장치(1131)로 적용될 수 있다. 또한, 상기 메모리 장치(1131)는 복수의 칩이 적층되어 형성되는 적층 메모리 장치 또는 멀티 칩 패키지를 포함할 수 있다.
도 9는 본 발명의 실시 예에 따른 시스템(2000)의 구성을 보여주는 도면이다. 도 9에서, 상기 시스템(2000)은 프로세서(2010), 메모리 컨트롤러(2020) 및 메모리 장치(2030)를 포함한다. 상기 프로세서(2010)는 칩 셋(2040)을 통해 상기 메모리 컨트롤러(2020)와 연결될 수 있고, 상기 메모리 컨트롤러(2020)는 복수의 버스를 통해 상기 메모리 장치(2030)와 연결될 수 있다. 도 9에서, 상기 프로세서(2010)는 하나인 것으로 예시되었으나, 특별히 이에 한정되는 것은 아니며, 물리적 또는 논리적으로 복수의 프로세서가 구비될 수 있다.
상기 칩 셋(2040)은 상기 프로세서(2010) 및 상기 메모리 컨트롤러(2020) 사이에서 신호가 전송되는 통신 경로를 제공할 수 있다. 상기 프로세서(2010)는 연산 동작을 수행하고, 원하는 데이터를 입출력 시키기 위해 상기 칩 셋(2040)을 통해 상기 메모리 컨트롤러(2020)로 요청 및 데이터를 전송할 수 있다.
상기 메모리 컨트롤러(2020)는 상기 복수의 버스를 통해 커맨드 신호, 어드레스 신호, 클럭 신호 및 데이터를 상기 메모리 장치(2030)으로 전송할 수 있다. 상기 메모리 장치(2030)는 상기 메모리 컨트롤러(2020)로부터 상기 신호들을 수신하여 데이터를 저장할 수 있고, 저장하고 있는 데이터를 상기 메모리 컨트롤러(2020)로 출력할 수 있다. 상기 메모리 장치(2030)는 하나 이상의 메모리 모듈을 포함할 수 있다. 도 1의 메인 메모리 장치(200)는 상기 메모리 장치(2030)로 적용될 수 있다.
도 9에서, 상기 시스템(2000)은 입출력 버스(2110), 입출력 장치(2120, 2130, 2140), 디스크 드라이버 컨트롤러(2150) 및 디스크 드라이브(2160)를 더 포함할 수 있다. 상기 칩 셋(2040)은 입출력 버스(2110)와 연결될 수 있다. 상기 입출력 버스(2110)는 상기 칩 셋(2040)으로부터 입출력 장치(2120, 2130, 2140)까지의 신호 전송을 위한 통신 경로를 제공할 수 있다. 상기 입출력 장치는 마우스(2120), 비디오 디스플레이(2130), 또는 키보드(2140)를 포함할 수 있다. 상기 입출력 버스(2110)는 상기 입출력 장치(2120, 2130, 2140)와 통신하는 어떠한 통신 프로토콜이라도 포함할 수 있다. 또한, 상기 입출력 버스(2110)는 상기 칩 셋(2040) 내부로 집적될 수 있다.
상기 디스크 드라이버 컨트롤러(2050)는 상기 칩 셋(2040)과 연결되어 동작할 수 있다. 상기 디스크 드라이버 컨트롤러(2050)는 상기 칩 셋(2040)과 하나 또는 그 이상의 디스크 드라이브(2060) 사이의 통신 경로를 제공할 수 있다. 상기 디스크 드라이브(2060)는 명령과 데이터를 저장함으로써 외부 데이터 저장 장치로 활용될 수 있다. 상기 디스크 드라이버 컨트롤러(2050) 및 상기 디스크 드라이브(2060)는 입출력 버스(2110)를 포함하는 어떠한 통신 프로토콜을 사용하여 서로 또는 상기 칩 셋(2040)과 통신할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 컴퓨터 시스템 100: CPU
150: 캐시 메모리 200: 메인 메모리 장치
210: 제1 메모리 장치 250: 제2 메모리 장치
220: 제1 컨트롤러 230: 제1 메모리
260: 제2 컨트롤러 270: 제2 메모리
261: 제1 인터페이스 262: 메모리 코어
263: 액세스 관리부 264: 액세스 횟수 저장부
265: 제2 인터페이스

Claims (38)

  1. 제1 메모리 장치; 및
    상기 제1 메모리 장치와 다른 액세스 레이턴시를 갖는 제2 메모리 장치를 포함하고,
    상기 제1 메모리 장치는 상기 제1 메모리 장치의 적어도 하나의 영역에 대한 액세스 횟수에 근거하여 상기 적어도 하나의 영역 내에 포함된 핫 페이지를 판단하는 메인 메모리 장치.
  2. 제1항에 있어서,
    상기 제1 메모리 장치는 제1 메모리 및 상기 제1 메모리의 동작을 제어하는 제1 컨트롤러를 포함하고,
    상기 제1 컨트롤러는,
    상기 적어도 하나의 영역에 대한 상기 액세스 횟수를 저장하는 액세스 횟수 필드 및 상기 핫 페이지의 어드레스를 저장하는 핫 페이지 어드레스 필드로 구성된 액세스 횟수 저장부; 및
    상기 적어도 하나의 영역에 대한 액세스가 발생할 때마다 상기 액세스 횟수 필드에 저장된 상기 액세스 횟수를 증분시키는 액세스 관리부
    를 포함하는 메인 메모리 장치.
  3. 제2항에 있어서,
    상기 액세스 관리부는,
    상기 적어도 하나의 영역에 대한 상기 액세스 횟수가 기 설정된 임계 값에 도달하면, 가장 마지막으로 액세스한 페이지를 상기 핫 페이지로 판단하고, 상기 핫 페이지에 대응하는 상기 어드레스를 상기 액세스 횟수 저장부의 상기 핫 페이지 어드레스 필드에 저장하는 메인 메모리 장치.
  4. 제2항에 있어서,
    상기 제1 컨트롤러는, 외부 장치로부터 핫 데이터 확인 명령이 수신되면, 상기 액세스 횟수 저장부를 참조하여 상기 제1 메모리에 상기 핫 페이지가 존재하는지를 확인하고, 확인 결과를 상기 외부 장치로 전송하는 메인 메모리 장치.
  5. 제4항에 있어서,
    상기 제1 컨트롤러는,
    상기 핫 페이지가 존재하면, 상기 핫 페이지의 어드레스를 상기 확인 결과로서 상기 외부 장치로 전송하고,
    상기 핫 페이지가 존재하지 않으면, 상기 핫 페이지가 존재하지 않음을 나타내는 정보를 상기 확인 결과로서 상기 외부 장치로 전송하는 메인 메모리 장치.
  6. 제5항에 있어서,
    상기 외부 장치로부터 데이터 이동 명령이 수신되면, 상기 제1 메모리의 상기 핫 페이지에 저장된 핫 데이터를 상기 제2 메모리 장치의 제2 메모리에 저장된 콜드 데이터와 교환하는 데이터 이동 동작을 수행하는 메인 메모리 장치.
  7. 제6항에 있어서,
    상기 제1 메모리는 비휘발성 메모리를 포함하고, 상기 제2 메모리는 휘발성 메모리를 포함하는 메인 메모리 장치.
  8. 제7항에 있어서,
    상기 비휘발성 메모리는 PCRAM(phase change RAM)을 포함하고, 상기 휘발성 메모리는 DRAM(dynamic random access memory)를 포함하는 메인 메모리 장치.
  9. 제1항에 있어서,
    상기 제1 메모리 장치의 액세스 레이턴시는 상기 제2 메모리 장치의 액세스 레이턴스보다 긴 메인 메모리 장치.
  10. 제1항에 있어서,
    상기 적어도 하나의 영역은 복수의 페이지들을 포함하는 메인 메모리 장치.
  11. 제1 메모리 장치; 및
    상기 제1 메모리 장치와 다른 단위 시간당 전력 소모량을 갖는 제2 메모리 장치를 포함하고,
    상기 제1 메모리 장치는 상기 제1 메모리 장치의 적어도 하나의 영역에 대한 액세스 횟수에 근거하여 상기 적어도 하나의 영역 내에 포함된 핫 페이지를 판단하는 메인 메모리 장치.
  12. 제11항에 있어서,
    상기 제1 메모리 장치의 단위 시간당 전력 소모량은 상기 제2 메모리 장치의 단위 시간당 전력 소모량보다 큰 메인 메모리 장치.
  13. 중앙 처리 장치(central processing unit, CPU); 및
    상기 중앙 처리 장치(CPU)와 시스템 버스를 통해 연결된 메인 메모리 장치를 포함하고,
    상기 메인 메모리 장치는,
    제1 메모리 장치; 및
    상기 제1 메모리 장치보다 짧은 액세스 레이턴시를 갖는 제2 메모리 장치를 포함하고,
    상기 제1 메모리 장치는, 상기 제1 메모리 장치의 하나 또는 그 이상의 영역들에 대한 액세스 횟수에 근거하여 적어도 하나의 영역 내에 포함된 핫 페이지를 판단하는 컴퓨터 시스템.
  14. 제13항에 있어서,
    상기 제1 메모리 장치는, 제1 메모리 및 상기 제1 메모리의 동작을 제어하는 제1 컨트롤러를 포함하고,
    상기 제1 컨트롤러는,
    상기 하나 또는 그 이상의 영역들 각각에 대한 상기 액세스 횟수를 저장하는 액세스 횟수 필드 및 상기 핫 페이지의 어드레스를 저장하는 핫 페이지 어드레스 필드로 구성된 액세스 횟수 저장부; 및
    상기 하나 또는 그 이상의 영역들 각각에 대한 액세스가 발생할 때마다 액세스 발생된 영역에 대응하는 상기 액세스 횟수 필드에 저장된 상기 액세스 횟수를 증분시키는 액세스 관리부
    를 포함하는 컴퓨터 시스템.
  15. 제14항에 있어서,
    상기 액세스 관리부는,
    상기 하나 또는 그 이상의 영역들 중 액세스 횟수가 기 설정된 임계 값에 도달한 영역이 발생하면, 해당 영역 내에서 가장 마지막으로 액세스한 페이지를 상기 핫 페이지로 판단하고, 상기 핫 페이지에 대응하는 상기 어드레스를 상기 액세스 횟수 저장부의 상기 핫 페이지 어드레스 필드에 저장하는 컴퓨터 시스템.
  16. 제15항에 있어서,
    상기 중앙 처리 장치(CPU)는, 상기 제1 메모리 장치의 상기 제1 메모리 내에서 액세스된 페이지 어드레스들을 액세스 순서에 따라 저장하도록 구성된 제1 LRU(least recently used) 큐 및 상기 제2 메모리 장치의 제2 메모리 내에서 액세스된 페이지 어드레스들을 액세스 순서에 따라 저장하도록 구성된 제2 LRU 큐를 관리하는 컴퓨터 시스템.
  17. 제16항에 있어서,
    상기 중앙 처리 장치(CPU)는, 기 설정된 주기 마다 핫 페이지 확인 동작을 수행하기 위한 핫 데이터 확인 명령을 제1 메모리 장치로 전송하는 컴퓨터 시스템.
  18. 제17항에 있어서,
    상기 제1 메모리 장치는, 상기 중앙 처리 장치(CPU)로부터 수신된 상기 핫 데이터 확인 명령에 따라 상기 액세스 횟수 저장부의 상기 핫 페이지 어드레스 필드를 참조하여 상기 제1 메모리에 상기 핫 페이지가 존재하는지 여부를 확인하고, 확인 결과를 상기 중앙 처리 장치(CPU)로 전송하는 컴퓨터 시스템.
  19. 제18항에 있어서,
    상기 제1 메모리 장치는,
    상기 핫 페이지가 존재하면, 상기 핫 페이지에 대응하는 어드레스를 상기 확인 결과로서 상기 중앙 처리 장치(CPU)로 전송하고,
    상기 핫 페이지가 존재하지 않으면, 상기 핫 데이터가 존재하지 않음을 나타내는 정보를 상기 확인 결과로서 상기 중앙 처리 장치(CPU)로 전송하는 컴퓨터 시스템.
  20. 제19항에 있어서,
    상기 중앙 처리 장치(CPU)는, 상기 제2 LRU 큐를 참조하여 상기 제2 메모리 내의 콜드 페이지를 판단하고, 상기 제1 메모리의 상기 핫 페이지에 저장된 핫 데이터와 상기 제2 메모리의 상기 콜드 페이지에 저장된 콜드 데이터를 교환하기 위한 데이터 이동 명령을 상기 메인 메모리 장치로 전송하는 컴퓨터 시스템.
  21. 제20항에 있어서,
    상기 제2 메모리 장치는, 상기 중앙 처리 장치(CPU)로부터 수신된 상기 데이터 이동 명령에 따라 상기 콜드 페이지로부터 상기 콜드 데이터를 독출하여 임시 저장하고, 상기 제1 메모리 장치로부터 수신된 상기 핫 데이터를 상기 콜드 페이지에 저장하고, 및 상기 임시 저장된 콜드 데이터를 상기 제1 메모리 장치로 전송하는 컴퓨터 시스템.
  22. 제21항에 있어서,
    상기 제1 메모리 장치는, 상기 중앙 처리 장치(CPU)로부터 수신된 상기 데이터 이동 명령에 따라 상기 핫 페이지로부터 상기 핫 데이터를 독출하여 상기 제2 메모리 장치로 전송하고, 상기 제2 메모리 장치로부터 수신된 상기 콜드 데이터를 상기 핫 페이지에 저장하는 컴퓨터 시스템.
  23. 제22항에 있어서,
    상기 중앙 처리 장치(CPU)는, 상기 메인 메모리 장치에서 상기 핫 데이터와 상기 콜드 데이터의 교환이 완료되면, 상기 제1 LRU 큐 및 상기 제2 LRU 큐 각각에 저장된 정보를 갱신하는 컴퓨터 시스템.
  24. 제23항에 있어서,
    상기 중앙 처리 장치(CPU)는, 상기 제1 LRU 큐의 MRU(most recently used) 공간에 상기 제1 메모리의 상기 핫 페이지에 대응하는 어드레스를 저장하고, 및 상기 제2 LRU 큐의 MRU 공간에 상기 콜드 페이지에 대응하는 어드레스를 저장하는 컴퓨터 시스템.
  25. 제20항에 있어서,
    상기 중앙 처리 장치(CPU)는, 기 설정된 주기 마다 상기 액세스 횟수 저장부에 저장된 정보를 초기화하기 위한 리셋 명령을 상기 제1 메모리 장치로 전송하는 컴퓨터 시스템.
  26. 제25항에 있어서,
    상기 제1 메모리 장치는, 상기 중앙 처리 장치(CPU)로부터 수신된 상기 리셋 명령에 따라 상기 액세스 횟수 저장부에 저장된 상기 액세스 횟수 및 상기 핫 페이지 어드레스를 초기화하는 컴퓨터 시스템.
  27. 제13항에 있어서,
    상기 제1 메모리 장치의 상기 하나 또는 그 이상의 영역들은 각각 복수의 페이지들을 포함하는 컴퓨터 시스템.
  28. 제13항에 있어서,
    상기 제1 메모리 장치는 비휘발성 메모리를 포함하고, 상기 제2 메모리 장치는 휘발성 메모리를 포함하는 컴퓨터 시스템.
  29. 제28항에 있어서,
    상기 비휘발성 메모리는 PCRAM(phase change RAM)을 포함하고, 상기 휘발성 메모리는 DRAM(dynamic random access memory)를 포함하는 컴퓨터 시스템.
  30. 중앙 처리 장치(central processing unit, CPU) 및 상기 중앙 처리 장치(CPU)와 시스템 버스를 통해 연결되되 액세스 레이턴시가 서로 다른 제1 메모리 장치 및 제2 메모리 장치로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템의 데이터 관리 방법으로서,
    상기 중앙 처리 장치(CPU)가 상기 제1 메모리 장치의 제1 메모리 내에 핫 페이지가 존재하는지 확인하기 위한 핫 페이지 확인 명령을 상기 제1 메모리 장치로 전송하는 단계;
    상기 제1 메모리 장치가 상기 제1 메모리 내의 상기 핫 페이지에 대응하는 어드레스를 포함하는 제1 응답 및 상기 제1 메모리 내에 상기 핫 페이지가 존재하지 않음을 나타내는 제2 응답 중 적어도 하나의 응답을 상기 중앙 처리 장치(CPU)로 전송하는 단계; 및
    상기 제1 메모리 장치로부터 상기 제1 응답이 수신되면, 상기 중앙 처리 장치(CPU)가 상기 제1 메모리의 상기 핫 페이지에 저장된 핫 데이터와 상기 제2 메모리 장치의 제2 메모리 내의 콜드 데이터를 교환하기 위한 데이터 이동 명령을 상기 메인 메모리 장치로 전송하는 단계
    를 포함하는 데이터 관리 방법.
  31. 제30항에 있어서,
    상기 중앙 처리 장치(CPU)가 상기 핫 페이지 확인 명령을 상기 제1 메모리 장치로 전송하는 단계는 기 설정된 주기 마다 수행되는 데이터 관리 방법.
  32. 제30항에 있어서,
    상기 데이터 이동 명령을 상기 메인 메모리 장치로 전송하는 단계 이후,
    상기 제2 메모리 장치가 상기 제2 메모리의 콜드 페이지로부터 상기 콜드 데이터를 독출하여 버퍼 메모리에 임시 저장하는 단계;
    상기 제1 메모리 장치가 상기 제1 메모리의 상기 핫 페이지로부터 상기 핫 데이터를 독출하여 상기 제2 메모리로 전송하는 단계;
    상기 제2 메모리 장치가 상기 제2 메모리의 상기 콜드 페이지에 상기 제1 메모리 장치로부터 수신된 상기 핫 데이터를 저장하는 단계;
    상기 제2 메모리 장치가 상기 버퍼 메모리에 임시 저장된 상기 콜드 데이터를 상기 제1 메모리 장치로 전송하는 단계; 및
    상기 제1 메모리 장치가 상기 제1 메모리의 상기 핫 페이지에 상기 제2 메모리 장치로부터 수신된 상기 콜드 데이터를 저장하는 단계
    를 포함하는 데이터 관리 방법.
  33. 제32항에 있어서,
    상기 제2 메모리의 상기 콜드 페이지는 상기 제2 메모리 내에서 액세스된 페이지 어드레스들이 액세스 순서에 따라 저장된 LRU(least recently used) 큐에 근거하여 상기 중앙 처리 장치(CPU)에 의해 선택되는 데이터 관리 방법.
  34. 제33항에 있어서,
    상기 중앙 처리 장치(CPU)는 상기 LRU(least recently used) 큐에 저장된 페이지 어드레스들 중 가장 예전에 액세스된 페이지 어드레스를 상기 콜드 페이지로서 선택하는 데이터 관리 방법.
  35. 제29항에 있어서,
    상기 제1 메모리의 상기 핫 페이지에 상기 콜드 데이터를 저장하는 단계 이후에,
    상기 제1 메모리 내에서 액세스된 페이지 어드레스들이 액세스 순서에 따라 저장된 제1 LRU 큐 및 상기 제2 메모리 내에서 액세스된 페이지들이 액세스 순서에 따라 저장된 제2 LRU 큐 각각에 저장된 정보를 갱신하는 단계를 더 포함하는 데이터 관리 방법.
  36. 제35항에 있어서,
    상기 제1 LRU 큐 및 상기 제2 LRU 큐 각각에 저장된 정보를 갱신하는 단계는,
    상기 제1 LRU 큐의 MRU(most recently used) 공간에 상기 제1 메모리의 상기 핫 페이지에 대응하는 어드레스를 저장하는 단계; 및
    상기 제2 LRU 큐의 MRU(most recently used) 공간에 상기 제2 메모리의 상기 콜드 페이지에 대응하는 어드레스를 저장하는 단계
    를 포함하는 데이터 관리 방법.
  37. 제30항에 있어서,
    상기 데이터 이동 명령을 상기 메인 메모리 장치로 전송하는 단계 이후에,
    상기 중앙 처리 장치(CPU)가 상기 핫 페이지에 대한 정보가 저장된 액세스 횟수 저장부를 초기화하기 위한 리셋 명령을 상기 제1 메모리 장치로 전송하는 단계; 및
    상기 제1 메모리 장치가 상기 리셋 명령에 응답하여 상기 액세스 횟수 저장부를 초기화하는 단계를 더 포함하는 데이터 관리 방법.
  38. 제30항에 있어서,
    상기 제1 메모리 장치로부터 상기 제2 응답이 수신되면,
    상기 중앙 처리 장치(CPU)가 상기 핫 페이지에 대한 정보가 저장된 액세스 횟수 저장부를 초기화하기 위한 리셋 명령을 상기 제1 메모리 장치로 전송하는 단계; 및
    상기 제1 메모리 장치가 상기 리셋 명령에 응답하여 상기 액세스 횟수 저장부를 초기화하는 단계를 더 포함하는 데이터 관리 방법.
KR1020190001723A 2019-01-07 2019-01-07 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법 KR20200085522A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190001723A KR20200085522A (ko) 2019-01-07 2019-01-07 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
US16/593,756 US11379381B2 (en) 2019-01-07 2019-10-04 Main memory device having heterogeneous memories, computer system including the same, and data management method thereof
CN201910987218.3A CN111414132B (zh) 2019-01-07 2019-10-17 带异构存储器的主存储设备、计算机系统及数据管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190001723A KR20200085522A (ko) 2019-01-07 2019-01-07 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법

Publications (1)

Publication Number Publication Date
KR20200085522A true KR20200085522A (ko) 2020-07-15

Family

ID=71404278

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190001723A KR20200085522A (ko) 2019-01-07 2019-01-07 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법

Country Status (3)

Country Link
US (1) US11379381B2 (ko)
KR (1) KR20200085522A (ko)
CN (1) CN111414132B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200085522A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
US11237981B1 (en) * 2019-09-30 2022-02-01 Amazon Technologies, Inc. Memory scanner to accelerate page classification
KR20220055034A (ko) 2020-10-26 2022-05-03 삼성전자주식회사 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법
KR20220059266A (ko) * 2020-11-02 2022-05-10 에스케이하이닉스 주식회사 스토리지 시스템
US11645198B2 (en) 2020-12-08 2023-05-09 International Business Machines Corporation Buffer pool maintenance improvement
CN112860185B (zh) * 2021-01-29 2022-11-25 西藏宁算科技集团有限公司 基于lru算法的高可用缓存方法、存储装置以及电子设备
CN113835624A (zh) * 2021-08-30 2021-12-24 阿里巴巴(中国)有限公司 基于异构内存的数据迁移方法及装置
US11860773B2 (en) * 2022-02-03 2024-01-02 Micron Technology, Inc. Memory access statistics monitoring

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101257848B1 (ko) * 2005-07-13 2013-04-24 삼성전자주식회사 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법
US8606998B2 (en) * 2006-08-24 2013-12-10 Advanced Micro Devices, Inc. System and method for instruction-based cache allocation policies
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
US8612668B2 (en) 2008-11-24 2013-12-17 Juniper Networks, Inc. Storage optimization system based on object size
CN101526923B (zh) * 2009-04-02 2012-04-04 成都市华为赛门铁克科技有限公司 一种数据处理方法、装置和闪存存储系统
US9418011B2 (en) 2010-06-23 2016-08-16 Intel Corporation Region based technique for accurately predicting memory accesses
US8463995B2 (en) 2010-07-16 2013-06-11 Hitachi, Ltd. Storage control apparatus and storage system comprising multiple storage control apparatuses
CN102156753B (zh) * 2011-04-29 2012-11-14 中国人民解放军国防科学技术大学 面向固态硬盘文件系统的数据页缓存方法
KR101403922B1 (ko) 2011-08-25 2014-06-09 인하대학교 산학협력단 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
US8769210B2 (en) * 2011-12-12 2014-07-01 International Business Machines Corporation Dynamic prioritization of cache access
JP5895944B2 (ja) * 2011-12-21 2016-03-30 富士通株式会社 管理装置、管理プログラムおよび管理方法
US9330736B2 (en) 2012-11-09 2016-05-03 Qualcomm Incorporated Processor memory optimization via page access counting
CN106030553B (zh) * 2013-04-30 2020-06-30 慧与发展有限责任合伙企业 存储器网络
US20150058520A1 (en) 2013-08-22 2015-02-26 International Business Machines Corporation Detection of hot pages for partition migration
US9406361B2 (en) * 2014-03-27 2016-08-02 Oracle International Corporation Low latency, high bandwidth memory subsystem incorporating die-stacked DRAM
CN104536724B (zh) * 2014-12-25 2017-07-07 华中科技大学 一种多核环境下哈希表并发访问性能优化方法
CN104699424B (zh) * 2015-03-26 2018-06-12 华中科技大学 一种基于页面热度的异构内存管理方法
CN104794064B (zh) * 2015-04-21 2017-09-29 华中科技大学 一种基于区域热度的缓存管理方法
US10877879B1 (en) * 2015-05-19 2020-12-29 EMC IP Holding Company LLC Flash cache throttling to control erasures
KR20160143259A (ko) 2015-06-05 2016-12-14 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US20170024326A1 (en) * 2015-07-22 2017-01-26 CNEX-Labs, Inc. Method and Apparatus for Caching Flash Translation Layer (FTL) Table
US9952904B2 (en) * 2015-08-21 2018-04-24 International Business Machines Corporation Distributing tracks to add to cache to processor cache lists based on counts of processor access requests to the cache
KR102495000B1 (ko) * 2016-03-18 2023-02-02 삼성전자주식회사 반도체 소자 및 이의 제조방법
US10037173B2 (en) * 2016-08-12 2018-07-31 Google Llc Hybrid memory management
US9946646B2 (en) * 2016-09-06 2018-04-17 Advanced Micro Devices, Inc. Systems and method for delayed cache utilization
US10691613B1 (en) * 2016-09-27 2020-06-23 EMC IP Holding Company LLC Caching algorithms for multiple caches
US10127156B1 (en) * 2016-09-29 2018-11-13 EMC IP Holding Company LLC Caching techniques
US10901894B2 (en) 2017-03-10 2021-01-26 Oracle International Corporation Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories
US10599585B2 (en) * 2017-03-23 2020-03-24 Intel Corporation Least recently used-based hotness tracking mechanism enhancements for high performance caching
KR20190038964A (ko) 2017-10-02 2019-04-10 에스케이하이닉스 주식회사 에러 정정 코드 유닛, 그것의 인코딩 및 디코딩 방법
US10387243B2 (en) * 2017-12-08 2019-08-20 Macronix International Co., Ltd. Managing data arrangement in a super block
CN108762664B (zh) * 2018-02-05 2021-03-16 杭州电子科技大学 一种固态硬盘页级缓存区管理方法
CN108646977B (zh) * 2018-03-07 2021-02-05 深圳忆联信息系统有限公司 一种ssd冷热数据判断的方法及垃圾回收方法
KR20200085522A (ko) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
US11379373B2 (en) * 2019-08-13 2022-07-05 Micron Technology, Inc. Memory tiering using PCIe connected far memory
US11042307B1 (en) * 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation

Also Published As

Publication number Publication date
US11379381B2 (en) 2022-07-05
CN111414132A (zh) 2020-07-14
CN111414132B (zh) 2024-03-12
US20200218668A1 (en) 2020-07-09

Similar Documents

Publication Publication Date Title
KR20200085522A (ko) 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템 및 그것의 데이터 관리 방법
US10896136B2 (en) Storage system including secondary memory that predicts and prefetches data
US20170091099A1 (en) Memory controller for multi-level system memory having sectored cache
CN107408079B (zh) 带有一致单元的多级别系统存储器的存储器控制器
US11210020B2 (en) Methods and systems for accessing a memory
US20220245066A1 (en) Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof
US11500797B2 (en) Computer memory expansion device and method of operation
US10108549B2 (en) Method and apparatus for pre-fetching data in a system having a multi-level system memory
US10180796B2 (en) Memory system
US9977604B2 (en) Memory system
US20190042415A1 (en) Storage model for a computer system having persistent system memory
CN110543433B (zh) 一种混合内存的数据迁移方法及装置
KR102353859B1 (ko) 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
US20220374150A1 (en) Adjustable timer component for semiconductor devices
US20210224213A1 (en) Techniques for near data acceleration for a multi-core architecture
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
JP2022050757A (ja) メモリシステム
JP6209573B2 (ja) 情報処理装置および情報処理方法
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
TWI742961B (zh) 快閃記憶體系統及其快閃記憶體裝置
US11526448B2 (en) Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
US20230384960A1 (en) Storage system and operation method therefor
EP4071593A1 (en) Stacked cache system based on sedram, and control method and cache device
KR101416248B1 (ko) 데이터 처리장치 및 그 데이터 처리방법
KR20240008073A (ko) 메모리 시스템 및 그의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application