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

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

Info

Publication number
KR20210025344A
KR20210025344A KR1020190105263A KR20190105263A KR20210025344A KR 20210025344 A KR20210025344 A KR 20210025344A KR 1020190105263 A KR1020190105263 A KR 1020190105263A KR 20190105263 A KR20190105263 A KR 20190105263A KR 20210025344 A KR20210025344 A KR 20210025344A
Authority
KR
South Korea
Prior art keywords
memory
memory device
hot
access management
access
Prior art date
Application number
KR1020190105263A
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 KR1020190105263A priority Critical patent/KR20210025344A/ko
Priority to US16/839,708 priority patent/US20210064535A1/en
Priority to CN202010562294.2A priority patent/CN112445423A/zh
Priority to DE102020117350.4A priority patent/DE102020117350A1/de
Priority to JP2020139917A priority patent/JP2021034052A/ja
Publication of KR20210025344A publication Critical patent/KR20210025344A/ko
Priority to US17/727,600 priority patent/US20220245066A1/en

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/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
    • 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
    • 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
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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/0866Addressing 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/0871Allocation or management of cache space
    • 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
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • 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
    • G06F13/1673Details of memory controller using buffers
    • 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
    • G06F13/1689Synchronisation and timing concerns
    • 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
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시 예에 따른 메인 메모리 장치는 제1 메모리 장치; 및 상기 제1 메모리 장치와 다른 액세스 레이턴시를 갖는 제2 메모리 장치를 포함한다. 상기 제1 메모리 장치는, 복수의 페이지들을 포함하는 복수의 액세스 관리 영역들을 포함하는 제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 메모리 장치는, 상기 복수의 액세스 관리 영역들 중 액세스 횟수가 기 설정된 임계 횟수에 도달한 핫 액세스 관리 영역 및 상기 핫 액세스 관리 영역 내에 포함된 하나 또는 그 이상의 핫 페이지들을 검출한다.
본 발명의 실시 예에 따른 컴퓨터 시스템은, 중앙 처리 장치(central processing unit, CPU); 및 상기 중앙 처리 장치(CPU)와 시스템 버스를 통해 연결된 메인 메모리 장치를 포함한다. 상기 메인 메모리 장치는, 제1 메모리 장치; 및 상기 제1 메모리 장치와 다른 액세스 레이턴시를 갖는 제2 메모리 장치를 포함한다. 상기 제1 메모리 장치는, 복수의 페이지들을 포함하는 복수의 액세스 관리 영역들을 포함하는 제1 메모리를 포함하고, 상기 제1 메모리 장치는, 상기 복수의 액세스 관리 영역들 중 액세스 횟수가 기 설정된 임계 횟수에 도달한 핫 액세스 관리 영역 및 상기 핫 액세스 관리 영역 내에 포함된 하나 또는 그 이상의 핫 페이지들을 검출한다.
본 발명의 실시 예에 따른 컴퓨터 시스템의 데이터 관리 방법은, 중앙 처리 장치(CPU)가 제1 메모리 장치의 제1 메모리 내에 핫 액세스 관리 영역이 존재하는지 확인하기 위한 핫 액세스 관리 영역 확인 명령을 상기 제1 메모리 장치로 전송하는 단계; 상기 제1 메모리 장치가 상기 핫 액세스 관리 영역 확인 명령에 따라 상기 핫 액세스 관리 영역 내의 하나 또는 그 이상의 핫 페이지들에 관련된 정보를 포함하는 제1 응답 및 상기 제1 메모리 내에 상기 핫 액세스 관리 영역이 존재하지 않음을 나타내는 제2 응답 중 적어도 하나의 응답을 상기 중앙 처리 장치(CPU)로 전송하는 단계; 및 상기 제1 메모리 장치로부터 상기 제1 응답이 수신되면, 상기 중앙 처리 장치(CPU)가 상기 제1 메모리의 상기 하나 또는 그 이상의 핫 페이지들에 저장된 핫 데이터와 상기 제2 메모리 장치의 제2 메모리 내의 콜드 데이터를 교환하기 위한 데이터 이동 명령을 상기 메인 메모리 장치로 전송하는 단계를 포함한다.
본 발명의 실시 예에 따른 메모리 할당 방법은, 중앙 처리 장치(CPU)가 페이지 할당 요청 및 가상 주소를 수신하는 단계; 상기 중앙 처리 장치가 상기 수신된 가상 주소에 대응하는 물리 주소에 대한 핫 페이지 검출 이력을 확인하는 단계; 확인 결과에 대응하여 상기 수신된 가상 주소에 대응하는 페이지를 상기 제1 메모리 장치의 제1 메모리 및 상기 제2 메모리 장치의 제2 메모리에 할당하는 단계를 포함한다.
본 발명의 실시 예에 따른 메모리 장치는, 비휘발성 메모리 및 상기 비휘발성 메모리의 동작을 제어하는 컨트롤러를 포함하고, 상기 컨트롤러는, 상기 비휘발성 메모리를 복수의 영역들로 구분하고, 상기 복수의 영역들 각각은 복수의 페이지들을 포함한다. 상기 컨트롤러는, 상기 복수의 영역들 각각에 대한 액세스 횟수를 저장하는 액세스 횟수 테이블 및 상기 복수의 영역들 각각에 포함된 상기 복수의 페이지들에 대응하는 비트들로 구성된 복수의 비트 벡터들을 포함하고, 상기 컨트롤러는, 상기 비휘발성 메모리가 액세스되면, 상기 복수의 영역들 중 액세스된 영역에 대응하는 상기 액세스 횟수 테이블의 공간에 상기 액세스된 영역의 액세스 횟수를 저장하고, 상기 액세스된 영역에 대응하는 비트 벡터에서 액세스된 페이지에 대응하는 비트를 제1 값으로 설정한다.
본 실시 예에 따르면, 메인 메모리 장치에서 직접 액세스 횟수가 높은 핫 페이지들을 검출함에 따라 실질적으로 유효한(또는 유의미한) 핫 데이터를 동작 속도가 빠른 메모리로 이동시킬 수 있으므로, 시스템 전체의 동작 성능을 향상시킬 수 있다.
또한, 본 실시 예에 따르면, 핫 페이지 검출 이력에 따라 동작 속도가 빠른 메모리 또는 동작 속도가 느린 메모리에 페이지를 할당함으로써, 데이터 이동(migration)을 감소시키고 동작 속도가 빠른 메모리로의 액세스를 증가시켜 시스템의 전체 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 컴퓨터 시스템을 나타낸 도면이다.
도 2는 도 1의 메인 메모리 장치의 구성을 나타낸 도면이다.
도 3은 도 2의 제1 메모리에 포함된 페이지들을 복수의 액세스 관리 영역들로 그룹핑한 예를 나타낸 도면이다.
도 4a 및 도 4b는 각각 제1 메모리 장치의 제1 컨트롤러의 구성 예를 나타낸 도면들이다.
도 5a는 액세스 관리 영역들 각각에 대한 액세스 횟수를 저장하는 액세스 횟수 테이블을 예시적으로 나타낸 도면이다.
도 5b는 액세스 관리 영역들 각각에 포함된 페이지들에 대응하는 비트 벡터를 예시적으로 나타낸 도면이다.
도 6a는 액세스 관리 영역에 대한 액세스의 발생을 예시적으로 나타낸 도면이다.
도 6b는 액세스가 발생된 액세스 관리 영역의 액세스 횟수가 저장된 액세스 횟수 테이블을 예시적으로 나타낸 도면이다.
도 6c는 액세스가 발생된 액세스 관리 영역 내의 액세스된 페이지들에 대응하는 비트들이 ‘셋(set) 상태’를 나타내는 값으로 설정된 비트 벡터를 나타낸 도면이다.
도 7a는 본 발명의 실시 예에 따른 데이터 관리 방법을 나타낸 순서도이다.
도 7b는 도 7a의 S730 단계를 구체적으로 나타낸 순서도이다.
도 8은 제1 메모리 장치와 제2 메모리 장치 사이의 데이터 이동(data migration)을 예시적으로 나타낸 도면이다.
도 9a는 제1 메모리 및 제2 메모리 각각에 대한 LRU(least recently used) 큐(queue)를 나타낸 도면이다.
도 9b는 데이터 교환 후 제1 LRU 큐와 제2 LRU 큐가 갱신된 상태를 예시적으로 나타낸 도면이다.
도 10a는 가상 주소와 물리 주소 간의 맵핑 정보가 저장된 페이지 테이블을 예시적으로 나타낸 도면이다.
도 10b는 도 10a의 페이지 맵핑 엔트리(PME)를 예시적으로 나타낸 도면이다.
도 11은 본 발명의 실시 예에 따른 메모리 할당 방법을 나타낸 순서도이다.
도 12 및 도 13은 본 발명의 실시 예에 따른 시스템의 구성을 보여주는 도면들이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 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)가 메인 메모리 장치(200)에 저장하는 데이터는 스토리지(300)로부터 독출된 데이터이거나 또는, 입출력 인터페이스(400)를 통해 입력된 데이터일 수 있다. 또한, 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)가 CPU(100)의 요청(또는 명령)에 따라 제1 메모리(220) 내에 핫 페이지가 발생된 핫 액세스 관리 영역이 존재하는지 여부를 확인하고, 핫 액세스 관리 영역 내의 페이지들 중 하나 또는 그 이상의 핫 페이지들을 검출하고, 검출된 하나 또는 그 이상의 핫 페이지들에 관련된 정보(예컨대, 주소들)를 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)를 제어할 수 있다.
도 3은 제1 메모리(230)에 포함된 페이지들을 복수의 액세스 관리 영역들로 그룹핑한 예를 나타낸 도면이다.
도 3을 참조하면, 제1 컨트롤러(220)는 제1 메모리(230)의 데이터 저장 영역을 복수의 영역들(REGION1~REGIONn)로 그룹화할 수 있다. 그룹화된 복수의 영역들(REGION1~REGIONn)은 각각 복수의 페이지들(Page1~Pagek)을 포함할 수 있다. 이후부터는 그룹화된 복수의 영역들(REGION1~REGIONn)을 각각 ‘액세스 관리 영역’이라 한다.
제1 컨트롤러(220)는 액세스 관리 영역들(REGION1~REGIONn) 각각에 대한 액세스 횟수를 관리할 수 있다. 제1 컨트롤러(220)가 제1 메모리(220)에 대한 액세스 횟수를 페이지 단위로 관리하지 않고, 페이지 단위보다 큰 액세스 관리 영역 단위로 관리하는 것은 제1 메모리(220)의 저장 용량은 매우 크기 때문에, 페이지 단위로 액세스 횟수를 관리하는 경우 각 페이지의 액세스 횟수를 저장하기 위한 스토리지 오버헤드(storage overhead)가 증가하는 문제가 있기 때문이다. 본 실시 예에서는, 스토리지 오버헤드(storage overhead)의 증가를 방지하기 위해, 페이지 단위보다 큰 액세스 관리 영역 단위로 액세스 횟수를 카운트한다.
또한, 제1 컨트롤러(220)는 액세스 관리 영역들(REGION1~REGIONn) 각각의 액세스 횟수에 근거하여 핫 페이지가 발생된 핫 액세스 관리 영역의 존재 여부를 판단할 수 있다. 예를 들어, 제1 컨트롤러(220)는 제1 메모리(230)의 액세스 관리 영역들(REGION1~REGIONn) 중 액세스 횟수가 기 설정된 임계 횟수에 도달한 액세스 관리 영역을 핫 액세스 관리 영역으로 판단할 수 있다. 또한, 제1 컨트롤러(220)는 핫 액세스 관리 영역의 페이지들 중 액세스된 페이지들을 핫 페이지들로 검출할 수 있다. 예를 들어, 제1 컨트롤러(220)는 핫 액세스 관리 영역에 대응하는 비트 벡터를 이용하여 핫 페이지들을 검출할 수 있다.
제1 컨트롤러(220)가 핫 액세스 관리 영역의 존재 여부를 판단하고, 핫 액세스 관리 영역 내의 핫 페이지들을 검출하는 것에 대해서는 이후 도면들을 참조하여 상세히 설명한다.
제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)는 휘발성 메모리일 수 있다. 예를 들어, 제2 메모리(270)는 DRAM으로 구성될 수 있으나, 특별히 이에 한정되는 것은 아니며, 다양한 휘발성 메모리들로 구성될 수 있다.
제1 메모리 장치(210)는 제2 메모리 장치(250)에 비해 상대적으로 긴 액세스 레이턴시(access latency)를 가질 수 있다. 여기에서, 액세스 레이턴시는 CPU(100)로부터 명령이 전송된 시점부터 전송된 명령에 대응하는 응답(response)을 CPU(100)로 전송하는 시점까지의 시간을 의미할 수 있다. 또한, 제1 메모리 장치(210)는 제2 메모리 장치(250)에 비해 상대적으로 큰 단위 시간당 전력 소모량을 가질 수 있다.
도 4a는 본 발명의 일 실시 예에 따른 제1 메모리 장치(210)의 제1 컨트롤러(220)의 구성을 나타낸 도면이다.
도 4a를 참조하면, 제1 컨트롤러(220)는 제1 인터페이스(221), 메모리 코어(222), 액세스 매니저(223), 메모리(224) 및 제2 인터페이스(225)를 포함할 수 있다.
제1 인터페이스(221)는 시스템 버스(500)(도 1 참조)를 통해 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)의 액세스 관리 영역들 각각에 대한 액세스 횟수를 관리할 수 있다. 또한, 메모리 코어(222)는 액세스 매니저(223)를 이용하여 제1 메모리(230)의 액세스 관리 영역들 각각에 포함된 페이지들에 대한 액세스 정보를 관리할 수 있다.
액세스 매니저(223)는 메모리 코어(222)의 제어에 따라 제1 메모리(230)의 액세스 관리 영역들 각각에 대한 액세스 횟수를 관리할 수 있다. 예를 들어, 액세스 매니저(223)는 제1 메모리(230)에 대한 액세스가 발생되면 액세스된 페이지를 포함하는 액세스 관리 영역에 대응하는 액세스 횟수를 증분시킬 수 있다. 또한, 액세스 매니저(223)는 액세스된 페이지를 포함하는 액세스 관리 영역에 대응하는 비트 벡터의 비트들 중 액세스된 페이지에 대응하는 비트를 ‘셋(set) 상태’를 나타내는 값으로 설정할 수 있다.
메모리(224)는 제1 메모리(230)의 액세스 관리 영역들 각각에 대한 액세스 횟수를 저장하도록 구성된 액세스 횟수 테이블(ACT)을 포함할 수 있다. 또한, 메모리(224)는 제1 메모리(230)의 액세스 관리 영역들에 대응하는 비트 벡터들로 구성된 액세스 페이지 비트 벡터(APBV)를 포함할 수 있다. 메모리(224)는 SRAM 및 DRAM 등을 포함할 수 있으나, 특별히 이에 한정되는 것은 아니다.
제2 인터페이스(225)는 메모리 코어(222)의 제어에 따라 제1 메모리(230)를 제어할 수 있다. 제2 인터페이스(225)는 메모리 코어(222)에 의해 생성된 제어 신호들을 제1 메모리(230)로 제공할 수 있다. 제어 신호들은 제1 메모리(230)를 제어하기 위한 커맨드, 어드레스, 동작 신호 등을 포함할 수 있다. 제2 인터페이스(225)는 데이터를 제1 메모리(230)로 제공하거나, 제1 메모리(230)로부터 데이터를 제공 받을 수 있다.
제1 컨트롤러(220)의 제1 인터페이스(221), 메모리 코어(222), 액세스 매니저(223), 메모리(224) 및 제2 인터페이스(225)는 내부 버스(227)를 통해 전기적으로 연결될 수 있다.
도 4b는 본 발명의 다른 실시 예에 따른 제1 메모리 장치(210)의 제1 컨트롤러(220)의 구성을 나타낸 도면이다. 도 4b를 참조하여 본 실시 예에 따른 제1 컨트롤러(220)의 구성을 설명함에 있어서, 도 4a에 도시된 제1 컨트롤러(220)의 구성과 동일한 구성에 대한 설명은 생략한다.
도 4b를 참조하면, 제1 컨트롤러(220)는 메모리 코어(222) 내에 포함된 액세스 관리 로직(228)을 포함할 수 있다. 액세스 관리 로직(228)은 소프트웨어, 하드웨어 또는 이들의 조합으로 구성될 수 있다. 액세스 관리 로직(228)은 메모리 코어(222)의 제어에 따라 제1 메모리(230)의 액세스 관리 영역들 각각에 대한 액세스 횟수를 관리할 수 있다. 예를 들어, 액세스 관리 로직(228)은 제1 메모리(230)에 대한 액세스가 발생되면 액세스된 페이지를 포함하는 액세스 관리 영역에 대응하는 액세스 횟수를 증분시킬 수 있다. 또한, 액세스 관리 로직(228)은 액세스된 페이지를 포함하는 액세스 관리 영역에 대응하는 비트 벡터의 비트들 중 액세스된 페이지에 대응하는 비트를 ‘셋(set) 상태’를 나타내는 값으로 설정할 수 있다.
도 5a는 액세스 횟수 테이블(ACT)의 구성을 예시적으로 나타낸 도면이다.
도 5a를 참조하면, 액세스 횟수 테이블(ACT)은 제1 메모리(230)의 액세스 관리 영역들(REGION1~REGIONn) 각각에 대한 액세스 횟수를 저장하는 공간들로 구성될 수 있다. 제1 컨트롤러(220)의 액세스 매니저(223)(또는, 액세스 관리 로직(228))는 제1 메모리(230)에 대한 액세스가 발생할 때마다 액세스된 페이지를 포함하는 액세스 관리 영역에 대응하는 액세스 횟수 테이블(ACT)의 공간에 액세스 횟수를 저장할 수 있다.
도 5b는 액세스 페이지 비트 벡터(APBV)의 구성을 예시적으로 나타낸 도면이다.
도 5b를 참조하면, 액세스 페이지 비트 벡터(APBV)는 액세스 관리 영역들(REGION1~REGIONn) 각각에 대응하는 비트 벡터들(BV1~BVn)을 포함할 수 있다. 하나의 액세스 관리 영역에 대응하는 하나의 비트 벡터는 액세스 관리 영역에 포함된 페이지들의 수(즉, ‘k’개)와 동일한 수의 비트들로 구성될 수 있다. 제1 컨트롤러(220)의 액세스 매니저(223)(또는, 액세스 관리 로직(228))는 제1 메모리(230)에 대한 액세스가 발생할 때마다 액세스된 페이지를 포함하는 액세스 관리 영역에 대응하는 비트 벡터(BV)의 비트들 중 액세스된 페이지에 대응하는 비트를 ‘셋(set) 상태’를 나타내는 값으로 설정할 수 있다.
도 6a는 액세스 관리 영역에 대한 액세스의 발생을 예시적으로 나타낸 도면이고, 도 6b는 액세스가 발생된 액세스 관리 영역의 액세스 횟수가 저장된 액세스 횟수 테이블을 예시적으로 나타낸 도면이고, 도 6c는 액세스 관리 영역 내의 액세스된 페이지들에 대응하는 비트들이 ‘셋(set) 상태’를 나타내는 값으로 설정된 비트 벡터를 나타낸 도면이다. 도 6a 내지 도 6c에서는 제1 액세스 관리 영역(REGION1)을 예를 들어 도시하였으나, 본 발명은 제2 내지 제n 액세스 관리 영역들(REGION2~REGIONn) 각각에 대해서도 동일하게 적용될 것이다.
도 6a를 참조하면, 가로 축은 시간을 나타내고, ‘A1’ 내지 ‘Am’은 액세스 횟수를 나타낸다. 액세스 매니저(223)(또는, 액세스 관리 로직(228))는 제1 액세스 관리 영역(REGION1) 내의 임의의 페이지가 액세스될 때마다 도 6b에 도시된 액세스 횟수 테이블(ACT)의 제1 액세스 관리 영역(REGION1)에 대응하는 공간에 저장된 액세스 횟수를 증분시킬 수 있다.
예를 들어, 도 6a에 도시한 바와 같이, 제1 액세스 관리 영역(REGION1)에 대한 첫 번째 액세스(A1)가 발생하면, 도 6b에 도시된 액세스 횟수 테이블(ACT)의 제1 액세스 관리 영역(REGION1)에 대응하는 공간에는 ‘1’이 저장될 것이다. 이어서, 제1 액세스 관리 영역(REGION1)에 대하여 두 번째 내지 m 번째 액세스들(A2 내지 Am)이 각각 발생할 때마다 액세스 횟수 테이블(ACT)의 제1 액세스 관리 영역(REGION1)에 대응하는 공간에 저장된 값은 ‘1’씩 증분되어 도 6b와 같이 결국 ‘m’이 될 것이다.
또한, 액세스 매니저(223)(또는, 액세스 관리 로직(228))는 제1 액세스 관리 영역(REGION1)이 액세스될 때마다 제1 액세스 관리 영역(REGION1)에 대응하는 비트 벡터에 포함된 비트들 중 액세스된 페이지에 대응하는 비트들을 ‘셋(set) 상태’를 나타내는 값(예컨대, ‘1’)으로 설정할 수 있다.
예를 들어, 도 6c에 도시된 것처럼, 제1 액세스 관리 영역(REGION1)에 대응하는 제1 비트 벡터(BV1)에 포함된 k 개의 비트들 중 액세스된 페이지(예컨대, ‘1’, ‘2’, ‘100’, ‘101’ 및 ‘102’)에 대응하는 비트들이 ‘1’로 설정될 수 있다. 또한, 액세스 매니저(223)(또는, 액세스 관리 로직(228))는 액세스된 페이지에 대응하는 제1 비트 벡터(BV1)의 비트가 ‘셋(set) 상태’를 나타내는 값으로 설정되어 있으면, 설정된 값을 변경하지 않고 유지할 수 있다.
액세스 매니저(223)(또는, 액세스 관리 로직(228))는 제1 액세스 관리 영역(REGION1)에 대한 액세스 횟수가 기 설정된 임계 횟수(예컨대, ‘m’)에 도달하면, 제1 액세스 관리 영역(REGION1)을 핫 액세스 관리 영역으로 판단할 수 있다. 또한, 액세스 매니저(223)(또는, 액세스 관리 로직(228))는 핫 액세스 관리 영역인 제1 액세스 관리 영역(REGION1)에 대응하는 제1 벡터(BV1)를 참조하여, 제1 액세스 관리 영역(REGION1)에서 액세스된 페이지들을 모두 핫 페이지들로 검출할 수 있다.
여기까지, 제1 메모리 장치(210)의 제1 컨트롤러(220)가 제1 메모리(230)의 액세스 관리 영역들 각각에 대한 액세스 횟수 및 액세스된 페이지들을 관리하고, 액세스 횟수가 기 설정된 임계 횟수(m)에 도달한 핫 액세스 관리 영역이 발생하면, 핫 액세스 관리 영역에 대응하는 비트 벡터를 이용하여 하나 또는 그 이상의 핫 페이지들을 검출하는 것을 설명하였다.
이후부터는, 검출된 하나 또는 그 이상의 핫 페이지들에 저장된 핫 데이터를 동작 속도가 빠른 제2 메모리 장치(250)로 이동시키는 방법을 상세히 설명한다.
도 7은 본 발명의 실시 예에 따른 데이터 관리 방법을 나타낸 순서도이다. 도 7을 참조하여 본 실시 예에 따른 데이터 관리 방법을 설명함에 있어서, 도 1 내지 도 6c 중 적어도 하나의 도면이 참조될 수 있다.
S710 단계에서, CPU(100)는 제1 메모리 장치(210)의 제1 메모리(230) 내에 핫 액세스 관리 영역이 존재하는지 여부를 확인하는 주기에 도달했는지 여부를 판단할 수 있다. 해당 주기는 사전에 설정될 수 있다. 해당 주기에 도달한 것으로 판단되면, 프로세스는 S720 단계로 진행될 수 있다.
S720 단계에서, CPU(100)는 시스템 버스(500, 도 1)를 통해 제1 메모리(230)에 핫 페이지가 발생된 핫 액세스 관리 영역이 존재하는지를 확인하기 위한 명령 즉, 핫 액세스 관리 영역 확인 명령을 제1 메모리 장치(210)로 전송할 수 있다.
S730 단계에서, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 CPU(100)로부터 수신된 핫 액세스 관리 영역 확인 명령에 응답하여 액세스 횟수 테이블(ACT)을 확인하고, 액세스 횟수 테이블(ACT)에 저장된 값에 근거하여 핫 액세스 관리 영역의 존재 여부를 판단할 수 있다. 핫 액세스 관리 영역이 존재하지 않는 것으로 판단되면, 프로세스는 S750 단계로 진행될 수 있다.
한편, 핫 액세스 관리 영역이 존재하는 것으로 판단되면, 제1 컨트롤러(220)는 핫 액세스 관리 영역에 대응하는 비트 벡터를 참조하여 핫 액세스 관리 영역에 포함된 하나 또는 그 이상의 핫 페이지들을 검출할 수 있다. 핫 액세스 관리 영역의 존재 여부를 판단하고, 핫 페이지들을 검출하는 과정은 이후 도 7b를 참조하여 상세히 설명한다.
S740 단계에서, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 S730 단계에서 검출된 핫 페이지들의 주소들을 CPU(100)로 전송할 수 있다. 이후 프로세스는 S760 단계로 진행될 수 있다.
한편, S750 단계에서, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 핫 액세스 관리 영역이 없음을 나타내는 응답을 CPU(100)로 전송할 수 있다. 이후 프로세스는 S780 단계로 진행될 수 있다.
S760 단계에서, CPU(100)는, 제1 메모리 장치(210) 및 제2 메모리 장치(250)로 데이터 이동 명령을 전송할 수 있다.
CPU(100)로부터 제1 메모리 장치(210)로 전송되는 데이터 이동 명령은 제1 메모리 장치(210)의 제1 메모리(230)에 포함된 하나 또는 그 이상의 핫 페이지들에 저장된 핫 데이터를 제2 메모리 장치(250)의 제2 메모리(270)로 이동시키기 위한 명령 및 제2 메모리 장치(250)로부터 수신된 콜드 데이터를 제1 메모리(230)에 저장하기 위한 명령 등을 포함할 수 있다.
또한, CPU(100)로부터 제2 메모리 장치(250)로 전송되는 데이터 이동 명령은 제2 메모리 장치(250)의 제2 메모리(270)의 하나 또는 그 이상의 콜드 페이지들에 저장된 콜드 데이터를 제1 메모리 장치(210)의 제1 메모리(230)로 이동시키는 명령 및 제1 메모리 장치(210)로부터 수신된 핫 데이터를 제2 메모리(270)에 저장하기 위한 명령 등을 포함할 수 있다. 따라서, 이후 프로세스는 S770 단계 및 S775 단계로 각각 진행될 수 있다. 예를 들어, S770 단계와 S775 단계는 동시에 수행될 수 있으나, 특별히 이에 한정되는 것은 아니다.
S770 단계에서, 제2 메모리 장치(250)의 제2 컨트롤러(260)는 CPU(100)로부터 수신된 데이터 이동 명령에 따라 제2 메모리(270)의 하나 또는 그 이상의 콜드 페이지들로부터 콜드 데이터를 독출하여 버퍼 메모리(도시하지 않음)에 임시 저장하고, 제1 메모리 장치(210)로부터 수신된 핫 데이터를 하나 또는 그 이상의 콜드 페이지들에 저장할 수 있다. 또한, 제2 컨트롤러(260)는 버퍼 메모리에 임시 저장된 콜드 데이터를 제1 메모리 장치(210)로 전송할 수 있다.
이때, 제2 메모리 장치(250)의 제2 메모리(270)가 빈 페이지를 포함하면, 콜드 페이지로부터 콜드 데이터를 독출하여 버퍼 메모리에 임시 저장하는 과정은 생략되고, 제1 메모리 장치(210)로부터 수신된 핫 데이터를 제2 메모리(270)의 빈 페이지에 즉시 저장할 수도 있다.
그러나, 제2 메모리(270)가 가득 차 있는 상태에서 제1 메모리(230)의 핫 데이터를 제2 메모리(270)로 이동시키기 위해서는 제2 메모리(270)에 저장된 데이터와 교환해야 한다. 이를 위해, CPU(100)는 제2 메모리(270)에 저장된 데이터 중 제1 메모리(230)의 핫 데이터와 교환할 콜드 데이터를 선택할 수 있다. 콜드 데이터를 선택하는 기준은 액세스된 시점(또는 순서)일 수 있다. 예를 들어, CPU(100)는 제2 메모리(270)의 페이지들 중 액세스된지 가장 오래된 페이지(즉, 콜드 페이지)에 저장된 데이터(즉, 콜드 데이터)를 제1 메모리(230)의 핫 데이터와 교환할 데이터로 선택할 수 있다.
CPU(100)는 S760 단계에서 제1 메모리 장치(210) 및 제2 메모리 장치(250) 각각에 데이터 이동 명령을 전송하기 전에 제2 메모리 장치(250)의 제2 메모리(270)에서 콜드 데이터를 선택하고, 선택된 콜드 데이터가 저장된 콜드 페이지 주소를 제2 메모리 장치(250)로 전송할 데이터 이동 명령에 포함시킬 수 있다. CPU(100)가 제2 메모리(270)에서 콜드 데이터를 선택하는 방법에 대해서는 이후 도 9a를 참조하여 상세하게 설명한다.
S775 단계에서, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 CPU(100)로부터 수신된 데이터 이동 명령에 따라 제1 메모리(230)의 핫 액세스 관리 영역에 포함된 하나 또는 그 이상의 핫 페이지들로부터 핫 데이터를 독출하여 제2 메모리 장치(250)로 전송하고, 제2 메모리 장치(250)로부터 수신된 콜드 데이터를 제1 메모리(230)에 저장할 수 있다.
S780 단계에서, CPU(100)는 액세스 횟수 테이블(ACT) 및 액세스 페이지 비트 벡터(APBV)에 저장된 값들을 초기화하기 위한 리셋 명령을 제1 메모리 장치(210)로 전송할 수 있다. 본 실시 예에서는, CPU(100)가 각각의 명령들 즉, 핫 액세스 관리 영역 확인 명령, 데이터 이동 명령 및 리셋 명령을 순차적으로 전송하는 것으로 예를 들어 설명하였으나, CPU(100)는 상술한 명령들을 모두 포함하는 하나의 명령을 제1 및 제2 메모리 장치(210, 250)로 전송하는 것도 가능하다.
S790 단계에서, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 CPU(100)로부터 수신된 리셋 명령에 따라 액세스 횟수 테이블(ACT) 및 액세스 페이지 비트 벡터(APBV)에 저장된 값들(또는 정보)을 초기화할 수 있다.
도 7b는 도 7a의 S730 단계를 구체적으로 나타낸 순서도이다.
S731 단계에서, 제1 컨트롤러(220)는 액세스 횟수 테이블(ACT)에 저장된 값들(즉, 액세스 관리 영역들 각각의 액세스 횟수들)을 확인할 수 있다. 예를 들어, 제1 컨트롤러(220)는 액세스 횟수 테이블(ACT)에 저장된 액세스 관리 영역 별 액세스 횟수를 확인할 수 있다.
S733 단계에서, 제1 컨트롤러(220)는 액세스 관리 영역 별 액세스 횟수에 근거하여 액세스 관리 영역들(REGION1~REGIONn) 중 핫 액세스 관리 영역이 존재하는지 여부를 판단할 수 있다. 예를 들어, 제1 컨트롤러(220)는 액세스 횟수가 기 설정된 임계 횟수(예컨대, ‘m’)에 도달한 액세스 관리 영역이 있으면, 핫 액세스 관리 영역이 존재하는 것으로 판단할 수 있다. 핫 액세스 관리 영역이 존재하는 것으로 판단되면, 프로세스는 S735 단계로 진행될 수 있다. 한편, 핫 액세스 관리 영역이 존재하지 않는 것으로 판단되면, 프로세스는 S750 단계로 진행될 수 있다.
S735 단계에서, 제1 컨트롤러(220)는 핫 액세스 관리 영역에 대응하는 비트 벡터를 참조하여 핫 액세스 관리 영역에 포함된 하나 또는 그 이상의 핫 페이지들을 검출할 수 있다. 예를 들어, 제1 컨트롤러(220)는 비트 벡터에 포함된 비트들 중 ‘셋(set) 상태’를 나타내는 값(예컨대, ‘1’)으로 설정된 비트들에 대응하는 페이지들을 핫 페이지들로 검출할 수 있다. 핫 페이지들의 검출이 완료되면, 프로세스는 S740 단계로 진행될 수 있다.
도 8은 제1 메모리 장치와 제2 메모리 장치 사이의 데이터 이동(data migration)을 예시적으로 나타낸 도면이다.
도 8을 참조하면, CPU(100)는 시스템 버스(500, 도 1)를 통해 제1 메모리 장치(210) 및 제2 메모리 장치(250) 각각에 데이터 이동 명령을 전송할 수 있다(①).
이때, 제1 메모리 장치(210)로 전송된 데이터 이동 명령은 제1 메모리(230)에서 핫 데이터가 저장된 핫 페이지들의 주소들, 핫 페이지들로부터 핫 데이터를 독출하기 위한 읽기 명령, 제2 메모리 장치(250)로부터 전송된 콜드 데이터를 저장하기 위한 쓰기 명령 등을 포함할 수 있으나, 특별히 이에 한정되는 것은 아니다.
또한, 제2 메모리 장치(250)로 전송된 데이터 이동 명령은 제2 메모리(270)에서 콜드 데이터가 저장된 콜드 페이지들의 주소들, 콜드 페이지들로부터 콜드 데이터를 독출하기 위한 읽기 명령, 제1 메모리 장치(230)로부터 전송된 핫 데이터를 저장하기 위한 쓰기 명령 등을 포함할 수 있으나, 특별히 이에 한정되는 것은 아니다.
CPU(100)로부터 데이터 이동 명령을 수신한 제2 메모리 장치(250)의 제2 컨트롤러(260)는 제2 메모리(270)의 콜드 페이지들로부터 콜드 데이터를 독출하고, 독출된 콜드 데이터는 제2 컨트롤러(260) 내에 포함된 버퍼 메모리(도시하지 않음)에 임시 저장할 수 있다(②). 마찬가지로, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 데이터 이동 명령에 근거하여 제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)의 콜드 데이터의 교환이 완료될 수 있다.
도 9a는 제1 메모리(230) 및 제2 메모리(270) 각각에 대한 LRU(least recently used) 큐(queue)를 나타낸 도면이다. 전술한 바와 같이, CPU(100)는 도 9a에 도시된 제2 메모리(270)의 LRU 큐(LRUQ2)를 이용하여 제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)에서 가장 예전에(또는 오래 전에) 액세스된 페이지를 확인하고, 해당 페이지에 저장된 데이터를 제1 메모리(230)의 핫 데이터와 교환할 콜드 데이터로 결정할 수 있다. 또한, CPU(100)는 핫 데이터가 복수 개인 경우, 제2 LRU 큐(LRUQ2)의 LRU 공간부터 MRU 공간 방향으로 핫 데이터의 개수에 대응하는 개수만큼의 콜드 데이터를 선택할 수 있다.
또한, CPU(100)는 제1 메모리(230)의 핫 데이터와 제2 메모리(270)의 콜드 데이터의 교환이 완료되면, 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2)의 MRU 공간들에 저장된 정보 즉, 페이지 주소를 새로 저장할 수 있다. 또한, 핫 데이터가 복수 개인 경우, CPU(100)는 제1 메모리(230)의 핫 데이터와 제2 메모리(270)의 콜드 데이터의 교환이 완료될 때마다, 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2)의 MRU 공간들에 저장된 페이지 주소를 새로 저장할 수 있다.
도 9b는 데이터 교환 후 제1 LRU 큐(LRUQ1)와 제2 LRU 큐(LRUQ2)가 갱신된 상태를 예시적으로 나타낸 도면이다.
전술한 바와 같이, 제1 메모리(230)와 제2 메모리(270) 사이의 데이터 이동을 위해, CPU(100)는 제1 메모리(230)에서는 핫 데이터가 저장된 핫 페이지를 액세스하고, 제2 메모리(270)에서는 LRU 공간에 저장된 주소에 대응하는 콜드 페이지를 액세스한다. 이에 따라, 제1 메모리(230)에서 최근 액세스된 핫 페이지의 주소가 제1 LRU 큐(LRUQ1)의 MRU 공간에 새로 저장되고, 제2 메모리(270)에서 최근 액세스된 콜드 페이지의 주소가 제2 LRU 큐(LRUQ2)의 MRU 공간에 새로 저장될 것이다. 제1 LRU 큐(LRUQ1) 및 제2 LRU 큐(LRUQ2) 각각의 MRU 공간에 주소가 새로 저장됨에 따라, 원래 MRU 공간에 저장된 주소 및 이후 주소들은 LRU 공간 측으로 한 칸씩 이동될 수 있다.
도 9b를 참조하면, 제1 메모리(230)에서 검출된 핫 페이지들은 5개이다. 5개의 핫 페이지들의 주소들을 ‘3’, ‘4’, ‘5’, ‘8’ 및 ‘9’로 가정한다. MRU 공간으로부터 멀수록 액세스된 지 오래된 페이지이므로, 5개의 핫 페이지들을 액세스된 지 오래된 순서대로 정렬하면 ‘9’, ‘8’, ‘5’, ‘4’ 및 ‘3’이 될 것이다.
5개의 핫 페이지들에 저장된 핫 데이터를 제2 메모리(270)로 이동시키기 위해, CPU(100)는 제2 LRU 큐(LRUQ2)를 참조하여 5개의 콜드 페이지를 선택할 수 있다. 전술한 바와 같이, CPU(100)는 제2 LRU 큐(LRUQ2)의 LRU 공간부터 MRU 공간 방향으로 핫 데이터의 개수 즉, 5개의 콜드 페이지들(‘i’, ‘i-1’, ‘i-2’, ‘i-3’ 및 ‘i-4’)를 선택할 수 있다.
핫 페이지들 중 액세스된 지 오래된 핫 페이지에 저장된 핫 데이터부터 콜드 데이터와 교환하는 것으로 가정하면, 핫 페이지 ‘9’에 저장된 핫 데이터와 콜드 페이지 ‘i’에 저장된 콜드 데이터가 첫 번째로 교환될 수 있다. 그 결과, 도 9b에 도시하지는 않았으나, 제1 LRU 큐(LRUQ1)의 MRU에는 ‘9’가 새로 저장되고, ‘1’ 내지 ‘8’은 오른쪽으로 한 칸씩 이동할 것이다. 또한, 제2 LRU 큐(LRUQ2)의 MRU에는 ‘i’가 새로 저장되고, ‘1’ 내지 ‘i-1’은 오른쪽으로 한 칸씩 이동할 것이다.
핫 페이지 ‘8’에 저장된 핫 데이터와 콜드 페이지 ‘i-1’에 저장된 콜드 데이터가 두 번째로 교환될 수 있다. 그 결과, 도 9b에 도시하지는 않았으나, 제1 LRU 큐(LRUQ1)의 MRU에는 ‘8’이 새로 저장되고, ‘9’ 및 ‘1’ 내지 ‘7’은 오른쪽으로 한 칸씩 이동할 것이다. 또한, 제2 LRU 큐(LRUQ2)의 MRU에는 ‘i-1’이 새로 저장되고, ‘1’ 내지 ‘i-2’는 오른쪽으로 한 칸씩 이동할 것이다.
핫 페이지 ‘5’에 저장된 핫 데이터와 콜드 페이지 ‘i-2’에 저장된 콜드 데이터가 세 번째로 교환될 수 있다. 그 결과, 도 9b에 도시하지는 않았으나, 제1 LRU 큐(LRUQ1)의 MRU에는 ‘5’가 새로 저장되고, ‘8’, ‘9’ 및 ‘1’ 내지 ‘4’는 오른쪽으로 한 칸씩 이동할 것이다. 또한, 제2 LRU 큐(LRUQ2)의 MRU에는 ‘i-2’가 새로 저장되고, ‘1’ 내지 ‘i-3’은 오른쪽으로 한 칸씩 이동할 것이다.
핫 페이지 ‘4’에 저장된 핫 데이터와 콜드 페이지 ‘i-3’에 저장된 콜드 데이터가 네 번째로 교환될 수 있다. 그 결과, 도 9b에 도시하지는 않았으나, 제1 LRU 큐(LRUQ1)의 MRU에는 ‘4’가 새로 저장되고, ‘5’, ‘8’, ‘9’ 및 ‘1’ 내지 ‘3’은 오른쪽으로 한 칸씩 이동할 것이다. 또한, 제2 LRU 큐(LRUQ2)의 MRU에는 ‘i-3’이 새로 저장되고, ‘1’ 내지 ‘i-4’는 오른쪽으로 한 칸씩 이동할 것이다.
핫 페이지 ‘3’에 저장된 핫 데이터와 콜드 페이지 ‘i-4’에 저장된 콜드 데이터가 마지막으로 교환될 수 있다. 그 결과, 도 9b에 도시하지는 않았으나, 제1 LRU 큐(LRUQ1)의 MRU에는 ‘3’이 새로 저장되고, ‘4’, ‘5’, ‘8’, ‘9’ 및 ‘1’ 내지 ‘2’는 오른쪽으로 한 칸씩 이동할 것이다. 또한, 제2 LRU 큐(LRUQ2)의 MRU에는 ‘i-4’가 새로 저장되고, ‘1’ 내지 ‘i-5’는 오른쪽으로 한 칸씩 이동할 것이다.
데이터 교환이 완료된 후, 제1 LRU 큐(LRUQ1)의 MRU에는 ‘3’이 저장되고, LRU에는 여전히 ‘i’가 저장된 상태일 것이다. 또한, 제2 LRU 큐(LRUQ2)의 MRU에는 ‘i-4’가 저장되고, LRU에는 ‘i-5’가 저장된 상태일 것이다.
한편, 제1 메모리 장치(210)의 제1 컨트롤러(220)는 데이터 교환이 완료되면, 메모리(224)의 액세스 횟수 테이블(ACT) 및 액세스 페이지 비트 벡터(APBV)에 저장된 값들(또는 정보)을 초기화하는 리셋 동작을 수행할 수 있다. 액세스 횟수 테이블(ACT) 및 액세스 페이지 비트 벡터(APBV)에 대한 리셋 동작을 수행하는 것은 매우 오랜 시간 동안 액세스 횟수가 증분되어 기 설정된 임계 횟수(m)에 도달한 액세스 관리 영역을 핫 액세스 관리 영역으로 판단하고, 해당 액세스 관리 영역 내의 액세스된 페이지들에 저장된 데이터를 핫 데이터로서 제2 메모리(270)로 이동시키는 것은 무의미하기 때문이다. 즉, 상술한 경우의 핫 데이터는 무효한(또는 무의미한) 핫 데이터일 수 있다.
따라서, 제1 컨트롤러(220)는 CPU(100)로부터 핫 액세스 관리 영역 명령, 데이터 이동 명령 및 리셋 명령 중 적어도 하나의 명령이 수신될 때마다 핫 액세스 관리 영역의 존재 여부 및 데이터 이동의 수행 여부에 관계 없이 액세스 횟수 테이블(ACT) 및 액세스 페이지 비트 벡터(APBV)를 초기화한다.
도 10a는 가상 주소와 물리 주소 간의 맵핑을 위한 페이지 테이블을 예시적으로 나타낸 도면이다.
도 10a를 참조하면, 페이지 테이블(PT)은 가상 주소와 물리 주소(또는 실제 주소) 간의 맵핑 정보를 포함하는 데이터 구조일 수 있다. 페이지 테이블(PT)은 복수의 가상 페이지 번호들(VPN1~VPNj) 및 복수의 가상 페이지 번호들(VPN1~VPNj) 각각에 맵핑된 복수의 물리 페이지 번호들(PPN1~PPNj)을 포함하는 복수의 페이지 맵핑 엔트리(PME)들로 구성될 수 있다. CPU(100)는 페이지 테이블(PT)을 참조하여 가상 주소를 물리 주소로 변환하고, 변환된 물리 주소에 대응하는 페이지를 액세스할 수 있다.
도 10b는 도 10a의 페이지 맵핑 엔트리(PME)를 예시적으로 나타낸 도면이다.
도 10b를 참조하면, 페이지 맵핑 엔트리(PME)는 가상 페이지 번호, 가상 페이지 번호에 맵핑된 물리 페이지 번호를 포함할 수 있다. 또한, 페이지 맵핑 엔트리(PME)는 페이지 속성 정보를 포함할 수 있다. 페이지 속성 정보는 페이지 맵핑 엔트리(PME)에 관련된 페이지에 대한 판독 가능성, 기록 가능성, 캐시 기억 가능성, 레벨 액세스 제한 등과 같은 특성을 정의한 정보를 포함할 수 있으나, 특별히 이에 한정되는 것은 아니다. 또한, 페이지 맵핑 엔트리(PME)는 관련된 페이지가 핫 페이지인지 여부를 표시하는 핫 페이지 플래그(S)를 포함할 수 있다. 페이지 맵핑 엔트리(PME)는 도 10b에 도시된 형태에 한정되지 않고 다양한 범위의 다른 형태를 가질 수 있다.
CPU(100)는 제1 메모리 장치(210)로부터 검출된 핫 페이지들의 주소들을 수신하면, 페이지 테이블(PT)의 페이지 맵핑 엔트리(PME)들 중 핫 페이지들의 주소들에 대응하는 물리 주소(즉, 물리 페이지 번호)를 포함하는 페이지 맵핑 엔트리(PME)들의 핫 페이지 플래그를 ‘셋(set) 상태’를 나타내는 값으로 설정할 수 있다. 또한, CPU(100)는 메모리 할당 시, 페이지 테이블(PT)을 참조하여 가상 주소에 대응하는 페이지 맵핑 엔트리(PME)의 핫 페이지 플래그를 확인하고, 해당 가상 주소에 대한 페이지를 제1 메모리 장치(210)의 제1 메모리(230)에 할당하거나 또는 제2 메모리 장치(250)의 제2 메모리(270)에 할당할 수 있다.
도 11은 본 발명의 실시 예에 따른 메모리 할당 방법을 나타낸 순서도이다. 도 11을 참조하여 본 실시 예에 따른 메모리 할당 방법을 설명함에 있어서, 도 1 내지 도 10b 중 적어도 하나의 도면이 참조될 수 있다.
S1101 단계에서, CPU(100)는 페이지 할당 요청 및 가상 주소를 수신할 수 있다. 페이지 할당 요청은 응용프로그램으로부터 수신될 수 있으나, 특별히 이에 한정되는 것은 아니다.
S1103 단계에서, CPU(100)는 페이지 테이블(PT)을 참조하여 수신된 가상 주소에 대응하는 물리 주소에 대한 핫 페이지 검출 이력을 확인할 수 있다. 예를 들어, CPU(100)는 도 10a의 페이지 테이블(PT)에 포함된 복수의 페이지 맵핑 엔트리들 중 수신된 가상 주소를 포함하는 페이지 맵핑 엔트리(PME)의 핫 페이지 플래그를 확인함으로써, 해당 물리 주소에 대한 핫 페이지 검출 이력을 확인할 수 있다.
S1105 단계에서, CPU(100)는 수신된 가상 주소에 대응하는 물리 주소에 대한 핫 페이지 검출 이력이 존재하는지 여부를 판단할 수 있다. 예를 들어, CPU(100)는 수신된 가상 주소를 포함하는 페이지 맵핑 엔트리(PME)의 핫 페이지 플래그가 ‘셋(set) 상태’를 나타내는 값으로 설정되어 있으면, 해당 물리 주소에 대한 핫 페이지 검출 이력이 존재하는 것으로 판단할 수 있다. 한편, CPU(100)는 수신된 가상 주소를 포함하는 페이지 맵핑 엔트리(PME)의 핫 페이지 플래그가 ‘리셋(reset) 상태’를 나타내는 값으로 설정되어 있으면, 해당 물리 주소에 대한 핫 페이지 검출 이력이 존재하지 않는 것으로 판단할 수 있다.
핫 페이지 검출 이력이 존재하는 것으로 판단되면, 프로세스는 S1107 단계로 진행될 수 있다. 또한, 핫 페이지 검출 이력이 존재하지 않는 것으로 판단되면, 프로세스는 S1109 단계로 진행될 수 있다.
S1107 단계에서, CPU(100)는 수신된 가상 주소에 대응하는 페이지를 상대적으로 액세스 레이턴시가 빠른 제2 메모리(270)에 할당할 수 있다.
S1109 단계에서, CPU(100)는 수신된 가상 주소에 대응하는 페이지를 상대적으로 액세스 레이턴시가 느린 제1 메모리(230)에 할당할 수 있다.
이와 같이, 페이지 할당 요청과 함께 수신된 가상 주소에 관련된 물리 주소에 대한 핫 페이지 검출 이력에 따라 가상 주소에 대응하는 페이지를 제1 메모리(230) 또는 제2 메모리(270)에 할당함으로써, 데이터 이동(migration)을 감소시키고 상대적으로 액세스 레이턴시가 빠른 메모리로의 액세스를 증가시켜 시스템의 전체 성능을 향상시킬 수 있다.
도 12는 본 발명의 실시 예에 따른 시스템(1000)의 구성을 보여주는 도면이다. 도 12에서, 상기 시스템(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)의 제1 메모리 장치(210)는 비휘발성 메모리 장치를 포함하는 상기 메모리 장치(1131)로 적용될 수 있다. 또한, 상기 메모리 장치(1131)는 복수의 칩이 적층되어 형성되는 적층 메모리 장치 또는 멀티 칩 패키지를 포함할 수 있다.
도 13은 본 발명의 실시 예에 따른 시스템(2000)의 구성을 보여주는 도면이다. 도 13에서, 상기 시스템(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)로 적용될 수 있다.
도 13에서, 상기 시스템(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 메모리
221: 제1 인터페이스 222: 메모리 코어
223: 액세스 매니저 224: 메모리
225: 제2 인터페이스

Claims (20)

  1. 제1 메모리 장치; 및 상기 제1 메모리 장치와 다른 액세스 레이턴시를 갖는 제2 메모리 장치를 포함하고,
    상기 제1 메모리 장치는, 복수의 페이지들을 포함하는 복수의 액세스 관리 영역들을 포함하는 제1 메모리를 포함하고,
    상기 제1 메모리 장치는, 상기 복수의 액세스 관리 영역들 중 액세스 횟수가 기 설정된 임계 횟수에 도달한 핫 액세스 관리 영역 및 상기 핫 액세스 관리 영역 내에 포함된 하나 또는 그 이상의 핫 페이지들을 검출하는 메인 메모리 장치.
  2. 제1항에 있어서,
    상기 제1 메모리 장치는, 상기 제1 메모리의 동작을 제어하는 제1 컨트롤러를 포함하고,
    상기 제1 컨트롤러는,
    상기 복수의 액세스 관리 영역들 각각에 대한 액세스 횟수를 저장하는 액세스 횟수 테이블과 상기 복수의 액세스 관리 영역들 각각에 포함된 상기 복수의 페이지들에 대응하는 비트들로 구성된 복수의 비트 벡터들을 포함하는 메모리; 및
    상기 복수의 액세스 관리 영역들 중 액세스된 액세스 관리 영역에 대응하는 상기 액세스 횟수 테이블의 공간에 상기 액세스된 액세스 관리 영역의 액세스 횟수를 저장하고, 상기 액세스된 액세스 관리 영역에 대응하는 비트 벡터의 비트들 중 액세스된 페이지에 대응하는 비트를 ‘셋(set) 상태’를 나타내는 값으로 설정하는 액세스 매니저
    를 포함하는 메인 메모리 장치.
  3. 제2항에 있어서,
    상기 제1 컨트롤러는, 외부 장치로부터 핫 액세스 관리 영역 확인 명령이 수신되면, 상기 액세스 횟수 테이블에 근거하여 상기 핫 액세스 관리 영역이 존재하는지 여부를 확인하고, 확인 결과를 상기 외부 장치로 전송하는 메인 메모리 장치.
  4. 제3항에 있어서,
    상기 제1 컨트롤러는,
    상기 핫 액세스 관리 영역이 존재하면, 상기 복수의 비트 벡터들 중 상기 핫 액세스 관리 영역에 대응하는 비트 벡터를 확인하고, 상기 ‘셋(set) 상태’를 나타내는 값으로 설정된 비트들에 대응하는 상기 핫 페이지들을 검출하고, 검출된 상기 핫 페이지들에 관련된 정보를 상기 외부 장치로 전송하는 메인 메모리 장치.
  5. 제4항에 있어서,
    상기 제1 컨트롤러는, 상기 핫 페이지들에 저장된 데이터를 상기 제2 메모리 장치로 전송하는 메인 메모리 장치.
  6. 제3항에 있어서,
    상기 제1 컨트롤러는,
    상기 핫 액세스 관리 영역이 존재하지 않으면, 상기 핫 액세스 관리 영역이 존재하지 않음을 나타내는 정보를 상기 외부 장치로 전송하는 메인 메모리 장치.
  7. 제3항에 있어서,
    상기 외부 장치로부터 데이터 이동 명령이 수신되면, 상기 제1 메모리의 상기 핫 액세스 관리 영역에 포함된 상기 핫 페이지들에 저장된 핫 데이터를 상기 제2 메모리 장치의 제2 메모리에 저장된 데이터와 교환하는 데이터 이동 동작을 수행하는 메인 메모리 장치.
  8. 제6항에 있어서,
    상기 제1 메모리는 비휘발성 메모리를 포함하고, 상기 제2 메모리는 휘발성 메모리를 포함하는 메인 메모리 장치.
  9. 제7항에 있어서,
    상기 비휘발성 메모리는 PCRAM(phase change RAM)을 포함하고, 상기 휘발성 메모리는 DRAM(dynamic random access memory)를 포함하는 메인 메모리 장치.
  10. 제3항에 있어서,
    상기 외부 장치로부터 리셋 명령이 수신되면, 상기 제1 컨트롤러는 상기 액세스 횟수 테이블 및 상기 복수의 비트 벡터들에 저장된 값들을 초기화하는 메인 메모리 장치.
  11. 제1항에 있어서,
    상기 제1 메모리 장치의 액세스 레이턴시는 상기 제2 메모리 장치의 액세스 레이턴시보다 긴 메인 메모리 장치.
  12. 중앙 처리 장치(central processing unit, CPU); 및
    상기 중앙 처리 장치(CPU)와 시스템 버스를 통해 연결된 메인 메모리 장치를 포함하고,
    상기 메인 메모리 장치는,
    제1 메모리 장치; 및 상기 제1 메모리 장치와 다른 액세스 레이턴시를 갖는 제2 메모리 장치를 포함하고,
    상기 제1 메모리 장치는, 복수의 페이지들을 포함하는 복수의 액세스 관리 영역들을 포함하는 제1 메모리를 포함하고,
    상기 제1 메모리 장치는, 상기 복수의 액세스 관리 영역들 중 액세스 횟수가 기 설정된 임계 횟수에 도달한 핫 액세스 관리 영역 및 상기 핫 액세스 관리 영역 내에 포함된 하나 또는 그 이상의 핫 페이지들을 검출하는 컴퓨터 시스템.
  13. 제11항에 있어서,
    상기 제1 메모리 장치는, 상기 제1 메모리의 동작을 제어하는 제1 컨트롤러를 포함하고,
    상기 제1 컨트롤러는,
    상기 복수의 액세스 관리 영역들 각각에 대한 액세스 횟수를 저장하는 액세스 횟수 테이블과 상기 복수의 액세스 관리 영역들 각각에 포함된 상기 복수의 페이지들에 대응하는 비트들로 구성된 복수의 비트 벡터들을 포함하는 메모리; 및
    상기 복수의 액세스 관리 영역들 중 액세스된 액세스 관리 영역에 대응하는 상기 액세스 횟수 테이블의 공간에 상기 액세스된 액세스 관리 영역의 액세스 횟수를 저장하고, 상기 액세스된 액세스 관리 영역에 대응하는 비트 벡터의 비트들 중 액세스된 페이지에 대응하는 비트를 ‘셋(set) 상태’를 나타내는 값으로 설정하는 액세스 매니저
    를 포함하는 컴퓨터 시스템.
  14. 제12항에 있어서,
    상기 중앙 처리 장치(CPU)는, 기 설정된 주기 마다 상기 핫 액세스 관리 영역의 존재 여부를 확인하기 위한 핫 액세스 관리 영역 확인 명령을 상기 제1 메모리 장치로 전송하는 컴퓨터 시스템.
  15. 중앙 처리 장치(central processing unit, CPU) 및 상기 중앙 처리 장치(CPU)와 시스템 버스를 통해 연결되되 액세스 레이턴시가 서로 다른 제1 메모리 장치 및 제2 메모리 장치로 구성된 메인 메모리 장치를 포함하는 컴퓨터 시스템의 데이터 관리 방법으로서,
    상기 중앙 처리 장치(CPU)가 상기 제1 메모리 장치의 제1 메모리 내에 핫 액세스 관리 영역이 존재하는지 확인하기 위한 핫 액세스 관리 영역 확인 명령을 상기 제1 메모리 장치로 전송하는 단계;
    상기 제1 메모리 장치가 상기 핫 액세스 관리 영역 확인 명령에 응답하여 상기 핫 액세스 관리 영역 내의 하나 또는 그 이상의 핫 페이지들에 관련된 정보를 포함하는 제1 응답 및 상기 제1 메모리 내에 상기 핫 액세스 관리 영역이 존재하지 않음을 나타내는 제2 응답 중 하나의 응답을 상기 중앙 처리 장치(CPU)로 전송하는 단계; 및
    상기 제1 메모리 장치로부터 상기 제1 응답이 수신되면, 상기 중앙 처리 장치(CPU)가 상기 제1 메모리의 상기 하나 또는 그 이상의 핫 페이지들에 저장된 핫 데이터와 상기 제2 메모리 장치의 제2 메모리 내의 콜드 데이터를 교환하기 위한 데이터 이동 명령을 상기 메인 메모리 장치로 전송하는 단계
    를 포함하는 데이터 관리 방법.
  16. 제15항에 있어서,
    상기 중앙 처리 장치(CPU)가 상기 핫 액세스 관리 영역 확인 명령을 상기 제1 메모리 장치로 전송하는 단계는 기 설정된 주기 마다 수행되는 데이터 관리 방법.
  17. 제15항에 있어서,
    상기 데이터 이동 명령을 상기 메인 메모리 장치로 전송하는 단계 이후,
    상기 제2 메모리 장치가 상기 제2 메모리의 콜드 페이지로부터 상기 콜드 데이터를 독출하여 버퍼 메모리에 임시 저장하는 단계;
    상기 제1 메모리 장치가 상기 제1 메모리의 상기 하나 또는 그 이상의 핫 페이지들로부터 상기 핫 데이터를 독출하여 상기 제2 메모리로 전송하는 단계;
    상기 제2 메모리 장치가 상기 제2 메모리의 상기 콜드 페이지에 상기 제1 메모리 장치로부터 수신된 상기 핫 데이터를 저장하는 단계;
    상기 제2 메모리 장치가 상기 버퍼 메모리에 임시 저장된 상기 콜드 데이터를 상기 제1 메모리 장치로 전송하는 단계; 및
    상기 제1 메모리 장치가 상기 제1 메모리의 상기 하나 또는 그 이상의 핫 페이지들에 상기 제2 메모리 장치로부터 수신된 상기 콜드 데이터를 저장하는 단계
    를 더 포함하는 데이터 관리 방법.
  18. 제15항에 있어서,
    상기 중앙 처리 장치(CPU)가 상기 제1 메모리 장치에 상기 핫 액세스 관리 영역 확인 명령을 전송하는 단계 이후에,
    상기 제1 메모리 장치가 복수의 액세스 관리 영역들 각각에 대한 액세스 횟수를 확인하는 단계;
    상기 복수의 액세스 관리 영역들 중 상기 액세스 횟수가 기 설정된 임계 횟수에 도달한 상기 핫 액세스 관리 영역이 존재하는지 여부를 판단하는 단계; 및
    상기 핫 액세스 관리 영역에 대응하는 비트 벡터의 비트들 중 ‘셋(set) 상태’를 나타내는 값으로 설정된 비트들에 대응하는 페이지들을 상기 핫 페이지들로 검출하는 단계
    를 더 포함하는 데이터 관리 방법.
  19. 비휘발성 메모리 및 상기 비휘발성 메모리의 동작을 제어하는 컨트롤러를 포함하는 메모리 장치로서,
    상기 컨트롤러는, 상기 비휘발성 메모리를 복수의 영역들로 구분하고, 상기 복수의 영역들 각각은 복수의 페이지들을 포함하고,
    상기 컨트롤러는, 상기 복수의 영역들 각각에 대한 액세스 횟수를 저장하는 액세스 횟수 테이블 및 상기 복수의 영역들 각각에 포함된 상기 복수의 페이지들에 대응하는 비트들로 구성된 복수의 비트 벡터들을 포함하고,
    상기 컨트롤러는, 상기 비휘발성 메모리가 액세스되면, 상기 복수의 영역들 중 액세스된 영역에 대응하는 상기 액세스 횟수 테이블의 공간에 상기 액세스된 영역의 액세스 횟수를 저장하고, 상기 액세스된 영역에 대응하는 비트 벡터에서 액세스된 페이지에 대응하는 비트를 제1 값으로 설정하는 메모리 장치.
  20. 제19항에 있어서,
    상기 메모리 장치는, 휘발성 메모리를 포함하고,
    상기 컨트롤러는, 상기 비휘발성 메모리의 상기 복수의 영역들 중 상기 액세스 횟수가 임계 횟수에 도달한 영역에 대응하는 비트 벡터에서 상기 제1 값을 갖는 하나 또는 그 이상의 비트들에 대응하는 페이지들에 저장된 데이터를 상기 휘발성 메모리로 이동시키는 메모리 장치.
KR1020190105263A 2019-08-27 2019-08-27 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템, 그것의 데이터 관리 방법 KR20210025344A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020190105263A KR20210025344A (ko) 2019-08-27 2019-08-27 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템, 그것의 데이터 관리 방법
US16/839,708 US20210064535A1 (en) 2019-08-27 2020-04-03 Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof
CN202010562294.2A CN112445423A (zh) 2019-08-27 2020-06-18 存储器系统、计算机系统及其数据管理方法
DE102020117350.4A DE102020117350A1 (de) 2019-08-27 2020-07-01 Speichersystem einschliesslich heterogener speicher, computersystem mit dem speichersystem und datenverwaltungsverfahren dafür
JP2020139917A JP2021034052A (ja) 2019-08-27 2020-08-21 異種メモリを有するメモリシステム、これを含むコンピュータシステム及びそのデータ管理方法
US17/727,600 US20220245066A1 (en) 2019-08-27 2022-04-22 Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
KR20210025344A true KR20210025344A (ko) 2021-03-09

Family

ID=74565037

Family Applications (1)

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

Country Status (5)

Country Link
US (2) US20210064535A1 (ko)
JP (1) JP2021034052A (ko)
KR (1) KR20210025344A (ko)
CN (1) CN112445423A (ko)
DE (1) DE102020117350A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11989448B2 (en) 2022-03-25 2024-05-21 SK Hynix Inc. Memory controller and memory system including the same

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220005285A (ko) * 2020-07-06 2022-01-13 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11537306B2 (en) * 2021-03-12 2022-12-27 Micron Technology, Inc. Cold data detector in memory system
KR20230059909A (ko) * 2021-10-26 2023-05-04 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
US11853572B2 (en) 2022-05-05 2023-12-26 Western Digital Technologies, Inc. Encoding-aware data routing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100855467B1 (ko) * 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
KR20130070178A (ko) * 2011-12-19 2013-06-27 한국전자통신연구원 하이브리드 저장 장치 및 그것의 동작 방법
US20130238832A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Deduplicating hybrid storage aggregate
US20150058520A1 (en) * 2013-08-22 2015-02-26 International Business Machines Corporation Detection of hot pages for partition migration
US10162748B2 (en) * 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
KR20160143259A (ko) * 2015-06-05 2016-12-14 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
KR102403266B1 (ko) * 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10089014B2 (en) * 2016-09-22 2018-10-02 Advanced Micro Devices, Inc. Memory-sampling based migrating page cache
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
CN108804350B (zh) * 2017-04-27 2020-02-21 华为技术有限公司 一种内存访问方法及计算机系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11989448B2 (en) 2022-03-25 2024-05-21 SK Hynix Inc. Memory controller and memory system including the same

Also Published As

Publication number Publication date
CN112445423A (zh) 2021-03-05
JP2021034052A (ja) 2021-03-01
US20220245066A1 (en) 2022-08-04
US20210064535A1 (en) 2021-03-04
DE102020117350A1 (de) 2021-03-04

Similar Documents

Publication Publication Date Title
KR102518095B1 (ko) 스토리지 장치 및 시스템
US11379381B2 (en) Main memory device having heterogeneous memories, computer system including the same, and data management method thereof
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
KR20210025344A (ko) 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템, 그것의 데이터 관리 방법
US9075725B2 (en) Persistent memory for processor main memory
US11210020B2 (en) Methods and systems for accessing a memory
US20170091099A1 (en) Memory controller for multi-level system memory having sectored cache
US9990283B2 (en) Memory system
US10949356B2 (en) Fast page fault handling process implemented on persistent memory
US20220374150A1 (en) Adjustable timer component for semiconductor devices
US20210224213A1 (en) Techniques for near data acceleration for a multi-core architecture
US20190042415A1 (en) Storage model for a computer system having persistent system memory
US20170109062A1 (en) Memory system
US10185501B2 (en) Method and apparatus for pinning memory pages in a multi-level system memory
US6801982B2 (en) Read prediction algorithm to provide low latency reads with SDRAM cache
US20170109074A1 (en) Memory system
EP3506112A1 (en) Multi-level system memory configurations to operate higher priority users out of a faster memory level
US10180904B2 (en) Cache memory and operation method thereof
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
US12019545B2 (en) Memory system and operating method thereof
US20240211406A1 (en) Systems, methods, and apparatus for accessing data from memory or storage at a storage node
US11526448B2 (en) Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
EP4071593A1 (en) Stacked cache system based on sedram, and control method and cache device

Legal Events

Date Code Title Description
A201 Request for examination