KR20220162605A - 메모리 시스템에서 페이지 마이그레이션을 위한 시스템, 방법 및 장치 - Google Patents

메모리 시스템에서 페이지 마이그레이션을 위한 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20220162605A
KR20220162605A KR1020220023211A KR20220023211A KR20220162605A KR 20220162605 A KR20220162605 A KR 20220162605A KR 1020220023211 A KR1020220023211 A KR 1020220023211A KR 20220023211 A KR20220023211 A KR 20220023211A KR 20220162605 A KR20220162605 A KR 20220162605A
Authority
KR
South Korea
Prior art keywords
memory
page
type
monitoring
migration
Prior art date
Application number
KR1020220023211A
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 삼성전자주식회사
Publication of KR20220162605A publication Critical patent/KR20220162605A/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
    • 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
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/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/0614Improving the reliability of 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/0629Configuration or reconfiguration of 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory

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)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 개시의 기술적 사상의 일측면에 따른 메모리 시스템을 관리하는 방법은, 제1 유형의 제1 메모리의 페이지를 모니터링하는 단계, 모니터링에 기초하여 페이지의 사용을 결정하는 단계 및 결정된 페이지의 사용에 기초하여, 제1 유형과 다른 제2 유형의 제2 메모리로 페이지를 마이그레이션하는 단계를 포함한다.

Description

메모리 시스템에서 페이지 마이그레이션을 위한 시스템, 방법 및 장치{SYSTEMS, METHODS, AND APPARATUS FOR PAGE MIGRATION IN MEMORY SYSTEMS}
본 개시의 기술적 사상은 메모리 시스템에 관한 것으로서, 상세하게는 메모리 시스템에서 페이지 마이그레이션(migration)을 위한 시스템 방법 및 장치에 관한 것이다.
일부 실시 예에서, 이종 메모리 시스템은 2이상의 서로 다른 타입의 메모리를 사용할 수 있으며, 이들 각각은 특정 목적에 맞게 조정될 수 있다. 예를 들어, 이종 메모리 시스템은 전력 사이클 동안 데이터를 유지할 수 있는 비휘발성 메모리를 포함 할 수 있다. 다른 예에서, 이종 메모리 시스템은 수명 마모 제한없이 자주 업데이트 될 수 있는 휘발성 메모리를 포함 할 수 있다. 상술한 배경 기술에 기재된 내용은 배경 기술의 이해를 향상시키기 위한 것이므로 종래 기술을 구성하지 않는 정보를 포함 할 수 있다.
본 개시의 기술적 사상이 해결하려는 과제는, 메모리 시스템에서 페이지 마이그레이션(migration)을 위한 시스템 방법 및 장치를 제공하는 데 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재들로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 일측면에 따른 메모리 시스템을 관리하는 방법은 제1 유형의 제1 메모리의 페이지를 모니터링하는 단계, 모니터링에 기초하여 상기 페이지의 사용을 결정하는 단계 및 결정된 페이지의 사용에 기초하여, 제1 유형과 다른 제2 유형의 제2 메모리로 페이지를 마이그레이션하는 단계를 포함한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 일측면에 따른 장치는, 메모리 및 메모리의 페이지를 모니터링하고, 모니터링에 기초하여 페이지의 사용을 결정하고, 페이지의 사용에 기초하여 표시를 전송하도록 구성된 디바이스 컨트롤러를 포함한다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 일측면에 따른 시스템은, 호스트 프로세서, 호스트 프로세서에 의해 액세스되도록 배열된 제1 유형의 제1 메모리, 제2 유형의 제2 메모리를 호스트 프로세서에 노출시키도록 구성된 장치 인터페이스 및 마이그레이션 메시지(migration message)를 수신하고, 마이그레이션 메시지에 기초하여 제2 메모리의 페이지를 상기 제1 메모리로 마이그레이션하도록 구성된 마이그레이션 로직을 포함한다.
본 개시의 기술적 사상의 장치에 따르면, 결정된 핫 페이지에 기초하여 하나 이상의 핫 페이지를 제1 유형의 메모리에서 제2 유형의 메모리로 마이그레이션 하도록 매핑 방식을 제어함으로써, 제1 유형의 메모리의 수명을 연장할 수 있고, 시스템 성능을 개선할 수 있다.
본 개시의 예시적 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 아니하며, 언급되지 아니한 다른 효과들은 이하의 기재로부터 본 개시의 예시적 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 도출되고 이해될 수 있다. 즉, 본 개시의 예시적 실시예들을 실시함에 따른 의도하지 아니한 효과들 역시 본 개시의 예시적 실시예들로부터 당해 기술분야의 통상의 지식을 가진 자에 의해 도출될 수 있다.
도면은 반드시 일정한 비율로 도시된 것은 아니며 유사한 구조 또는 기능의 요소는 일반적으로 도면 전체에 걸쳐 예시 목적으로 유사한 참조 번호 또는 그 부분으로 표시될 수 있다. 도면은 본 명세서에서 설명되는 다양한 실시예의 설명을 용이하게 하기 위한 것이다. 도면은 여기에 개시된 교시의 모든 측면을 설명하지 않으며 청구범위를 제한하지 않습니다. 도면이 불분명하게 도시되는 것을 방지하기 위해 모든 구성 요소, 연결 등이 표시되지 않을 수 있으며 모든 구성 요소에 참조 번호가 표시되지 않을 수 있다. 그러나 구성 요소의 패턴은 도면에서 쉽게 알 수 있다. 첨부된 도면은 명세서와 함께 본 발명의 일 실시예를 도시한 것으로, 발명의 상세한 설명과 함께 본 발명을 설명하기 위한 것이다.
도 1은 예시적인 실시예에 따라 호스트가 장치에 부착된 메모리에 액세스할 수 있는 시스템의 예시적인 실시예를 도시한다.
도 2는 예시적인 실시예에 따른 이종 메모리 방식의 예시적인 실시예를 도시한다.
도 3은 예시적인 실시예에 따른 페이지 마이그레이션을 갖는 이종 메모리 방식의 예시적인 실시예를 도시한다.
도 4는 예시적인 실시예에 따른 페이지 마이그레이션을 갖는 이종 메모리 방식의 다른 예시적인 실시예를 도시한다.
도 5는 예시적인 실시예에 따른 페이지 마이그레이션 방식에 대한 구현 가능한 세부사항을 보여주는 이종 메모리 방식의 다른 예시적인 실시예를 도시한다.
도 6은 예시적인 실시예에 따른 하나 이상의 메모리 페이지에 대한 사용 패턴을 결정하기 위한 정보를 저장하기 위한 시스템의 실시예를 도시한다.
도 7은 예시적인 실시예에 따른 페이지 마이그레이션 방식을 구현하는 데 사용될 수 있는 호스트 장치의 예시적인 실시예를 도시한다.
도 8은 예시적인 실시예에 따른 페이지 마이그레이션 방식을 구현하는데 사용될 수 있는 장치의 예시적인 실시예를 도시한다.
도 9는 예시적인 실시예에 따른 메모리 시스템을 관리하기 위한 방법의 실시예를 도시한다.
본 개시의 예시적인 실시예들에 따른 이종 메모리 시스템에서, 메모리 페이지는 메모리 페이지의 사용 패턴을 결정하는 것에 기초하여 제1 유형의 메모리(예를 들어, 비휘발성 메모리)에서 제2 유형의 메모리(예를 들어, 휘발성 메모리)로 마이그레이션(migration)될 수 있다. 예를 들어, 비휘발성 메모리의 하나 이상의 페이지의 사용 패턴은 다른 페이지보다 더 자주 액세스될 수 있는 페이지를 식별하기 위해 모니터링될 수 있다. 자주 액세스되는 것으로 결정된 페이지(이하에서, '핫 페이지(hot pages)'라고 지칭될 수 있음)는, 예를 들어, 비휘발성 메모리의 수명을 늘릴 수 있는 페이지 쓰기를 감소시키거나 시스템 성능(예를 들어, 로드 균형 조정에 의한 성능)을 개선하기 위해, 비휘발성 메모리에서 휘발성 메모리로 마이그레이션될 수 있다.
일부 실시예에서, 제1 유형의 메모리(예를 들어, 비휘발성 메모리)는 SSD(Solid State Drive)와 같은 저장 장치에서 장치 부착 메모리로 구현될 수 있다. 장치 부착 메모리의 하나 이상의 페이지의 사용 패턴은, 예를 들어, 메모리 페이지의 L2P(logical-To-Physical) 매핑의 변화를 모니터링함으로써 SSD에서 모니터링될 수 있다. 예를 들어, SSD의 일부 또는 전체 페이지의 평균에 기초하여, 특정 페이지의 L2P 매핑이 결정될 수 있는 임계 값보다 더 자주 업데이트되는 경우, 특정 페이지는 핫 페이지로 결정될 수 있다. 예를 들어, SSD는 호스트의 디바이스 드라이버에 인터럽트를 발행함으로써 하나 이상의 핫 페이지 마이그레이션을 시작할 수 있다.
일부 실시예에서, 핫 페이지는 페이지 폴트 핸들러(a page fault handler)를 사용하여 제1 유형의 메모리에서 제2 유형의 메모리로 마이그레이션될 수 있다. 예를 들어, 장치 부착 메모리를 갖는 저장 장치용 디바이스 드라이버는 핫 페이지로 결정된 제1 유형의 메모리의 하나 이상의 페이지에 대해 기입 방지 상태를 설정할 수 있다. 기입 방지된 페이지 중 하나에 대한 후속 기입 동작은 페이지 폴트 핸들러가 액세스된 페이지를 첫 번째 유형의 메모리에서 두 번째 유형의 메모리로 마이그레이션하도록 할 수 있다. 일부 실시예에서, 기입 방지 상태는 핫 페이지를 가리키는 페이지 테이블 엔트리(page table entry)에 기입 방지 비트를 설정함으로써 핫 페이지에 대해 설정될 수 있다.
일부 실시예에서, 장치 부착 메모리의 하나 이상의 페이지의 사용 패턴을 모니터링하기 위한 정보는 장치 부착 메모리에 저장될 수 있다. 예를 들어, 장치 부착 메모리의 일부는 쓰기 카운트 또는 사용 패턴을 결정하는 데 사용될 수 있는 다른 메트릭(metric)을 위해 예약될 수 있다. 예약된 부분은 장치 및/또는 호스트에서 액세스될 수 있다. 예를 들어, 디바이스는 페이지에 대한 L2P 매핑이 변경될 때 각 페이지에 대한 쓰기 카운트를 업데이트할 수 있다. 페이지가 할당 해제되면 호스트가 페이지의 쓰기 횟수를 재설정할 수 있다. 따라서 호스트의 애플리케이션 및/또는 프로세스에서 더 이상 사용할 수 없다.
도 1은 본 발명의 실시예들에 따른 호스트가 장치에 부착된 메모리에 액세스할 수 있는 시스템의 예시적인 실시예를 도시한 도면이다.
도 1을 참조하면, 도 1에 도시된 시스템은 호스트(102) 및 장치(104)를 포함할 수 있다. 호스트(102)는 메모리 컨트롤러(106)를 포함하는 CPU(Central Processing Unit, 105), 및 시스템 메모리(110)를 포함할 수 있다. 일부 실시예에서, CPU(105)는 디바이스 드라이버(device driver), 페이지 폴트 핸들러(a page fault handler), 및/또는 후술되는 다른 시스템 소프트웨어와 같은 소프트웨어를 실행할 수 있다.
시스템 메모리(110)는 임의의 유형의 메모리, 예를 들어, DRAM(Dynamic Random Access Memory), SRAM(Static Random Access Memory) 등과 같은 휘발성 메모리로 구현될 수 있다. 그러나, 다른 실시예에서, 임의의 다른 유형의 메모리가 사용될 수 있다.
장치(104)는 장치 메모리(108)를 포함할 수 있다. 장치(104)는, 예를 들어, 장치 메모리(108)가 NAND 플래시 메모리와 같은 비휘발성 메모리(NVM)로 구현될 수 있는 SSD(Solid State Drive)와 같은 저장 디바이스로서 구현될 수 있다. 그러나, 다른 실시예에서, 임의의 다른 유형의 장치(104) 및/또는 장치 메모리(108)가 사용될 수 있다.
호스트(102) 및 장치(104)는 CXL(Compute Express Link)과 같은 임의의 유형의 인터커넥트(112, interconnect)를 통해 통신할 수 있다. 인터커넥트(112)는 '인터커넥트 인터페이스'로 지칭될 수 있다. 호스트(102)는 임의의 유형의 프로토콜을 사용하여 인터커넥트(112)를 통해 장치 메모리(108)에 액세스할 수 있다. 도 1에 도시된 실시예에서, 호스트(102)는 CXL 인터커넥트(112)를 통해 동작할 수 있는 CXL.mem 프로토콜(114)을 사용하여 장치 메모리(108)에 액세스할 수 있다. CXL 인터커넥트(112)는 'CXL 인터페이스'로 지칭될 수 있다. CXL.mem 프로토콜은 호스트(102)가 장치 메모리(108)가 시스템 메모리(110)의 일부인 것처럼 장치 메모리(108)에 액세스할 수 있도록 하는 방식으로 장치 메모리를 호스트(102)에 노출할 수 있다.
도 1에 도시된 구성요소들의 구성은 예시일 뿐이며, 다른 실시예에서 다르게 배치될 수 있다. 예를 들어, 다른 실시예에서, 메모리 컨트롤러(106) 및/또는 도시된 시스템 메모리(110)는 호스트(102)와 별도로 구현될 수 있다.
도 2는 예시적인 실시예에 따른 이종 메모리 방식의 예시적인 실시예를 도시한 도면이다. 도 2에 예시된 메모리 방식은, 예를 들어, 도 1에 예시된 시스템을 사용하여 구현될 수 있지만, 도 2에 예시된 메모리 방식은 다른 시스템으로도 구현될 수 있다.
도 2를 참조하면, 메모리 방식(the memory scheme)은 제1 유형의 메모리(208), 제2 유형의 메모리(210), 및 제1 유형의 메모리(208) 및 제2 유형의 메모리(210)를 사용할 수 있는 호스트(202)를 포함할 수 있다. 제1 유형의 메모리(208)는 예를 들어 NAND 플래시 메모리와 같은 휘발성 메모리로서 구현될 수 있다. 제2 유형의 메모리(210)는, 예를 들어, DRAM(Dynamic Random Access Memory)과 같은 비휘발성 메모리로 구현될 수 있다.
일부 실시예에서, 제1 유형의 메모리(208)의 일부 또는 전부는 장치 부착 메모리로서 구현될 수 있는 반면, 제2 유형의 메모리(210)의 일부 또는 전부는 시스템 메모리로서 구현될 수 있다. 장치 부착 메모리는 CXL 및/또는 CXL.mem과 같은 상호 연결 및/또는 프로토콜을 통해 호스트(202)에 노출될 수 있다. 일부 실시예에서, CXL.mem과 같은 코히어런트 메모리 프로토콜(a coherent memory protocol)의 사용은 장치 부착 메모리가 호스트(202)에 시스템 메모리로 나타나도록 할 수 있다. 제1 유형의 메모리(208) 및 제2 유형의 메모리(210)는 매핑 방식(218)을 통해 호스트(202)에서 실행되는 하나 이상의 프로세스(216)에 매핑될 수 있다.
도 2에 도시된 구성에서, 호스트(202) 상에서 실행되는 하나 이상의 프로세스(216)는 제1 유형의 메모리(208)의 수명을 감소시킬 수 있는 방식 및/또는 시스템 성능을 저하시킬 수 있는 부하 불균형을 야기할 수 있는 방식으로 제1 유형의 메모리(208)를 사용할 수 있다. 예를 들어, 일부 실시예에서, 제1 유형의 메모리(208)의 하나 이상의 페이지는 프로세스(216)에 의해 자주 기입 동작을 수행할 수 있다. 그러나, 제1 유형의 메모리(208)는 제한된 수의 기입 동작 후에 마모될 수 있기 때문에, 빈번한 업데이트는 제1 유형의 메모리(208)의 수명을 감소시킬 수 있다.
더욱이, 제1 유형의 메모리(208)는 시스템 메모리가 아닌 장치 부착 메모리로서 구현될 수 있기 때문에, 호스트(202)는 제1 유형의 메모리(208)의 수명 및/또는 성능에 영향을 미칠 수 있는 정보에 액세스하지 못할 수 있다. 예를 들어, 장치 부착 메모리(208)가 SSD(Solid State Drive)의 비휘발성 메모리로 구현되는 경우, 빈번한 페이지 업데이트는 빈번한 가비지 컬렉션(garbage collection)을 트리거할 수 있는 무효 페이지들(invalid pages)의 수를 증가시킬 수 있고, 이는 차례로 비휘발성 메모리의 수명을 단축시킬 수 있다. 더욱이, 빈번한 페이지 업데이트는, 예를 들어, 애플리케이션이 장치 부착 메모리(208)에 대한 다중 액세스 요청을 발행한 후 가장 긴 대기 시간 요청이 완료될 때까지 기다릴 수 있을 때 발생할 수 있는 테일 레이턴시(tail latency)를 증가시킴으로써 시스템 성능을 저하시킬 수 있다.
도 3은 예시적인 실시예에 따른 페이지 마이그레이션을 갖는 이종 메모리 방식의 예시적인 실시예를 도시한 도면이다.
도 3을 참조하면, 도 3에 예시된 실시예는 도 2에 예시된 것과 유사한 구성으로 배열된 제1 유형의 메모리(308), 제2 유형의 메모리(310), 및 호스트(302)를 포함할 수 있다. 그러나, 도 3에 예시된 실시예는 하나 이상의 페이지(322)의 하나 이상의 사용 패턴을 결정하기 위해 제1 유형의 메모리(308)의 하나 이상의 페이지(322)를 모니터링할 수 있는 모니터링 프로세스(320)를 포함할 수 있다. 예를 들어, 모니터링 프로세스(320)는 페이지(322) 중 하나 이상이 호스트(302)에서 실행 중인 프로세스(316)에 의해 자주 액세스될 수 있는 핫 페이지일 수 있다고 결정할 수 있다. 모니터링 프로세스(320)는 핫 페이지일 수 있는 하나 이상의 페이지(322)를 식별하는 마이그레이션 신호(324)를 호스트(302)의 마이그레이션 로직(326)으로 전송할 수 있다. 마이그레이션 로직(326)은, 화살표(330)로 나타낸 바와 같이, 하나 이상의 핫 페이지를 제2 유형의 메모리(310)의 하나 이상의 위치(328)에 다시 매핑함으로써, 하나 이상의 핫 페이지를 제1 유형의 메모리(308)에서 제2 유형의 메모리(310)로 마이그레이션하도록 매핑 방식(318)을 제어할 수 있다.
구현 세부사항에 따라, 도 3에 예시된 메모리 방식은 제1 유형의 메모리(308)의 수명을 연장할 수 있고, 시스템 성능을 개선할 수 있다. 예를 들어, 제1 유형의 메모리(308)가 플래시 메모리로 구현되고 제2 유형의 메모리(310)가 DRAM으로 구현되는 경우, 제2 유형의 메모리(310)로 마이그레이션된 하나 이상의 핫 페이지(328)는 제1 유형의 메모리(308)의 수명을 감소시키거나 추가 레이턴시(latency)를 도입하지 않고도 재기입 동작을 자주 수행할 수 있다.
일부 실시예는 장치 부착 메모리와 관련하여 설명될 수 있다. 그러나, 핫 페이지 마이그레이션과 관련된 실시 예는 핫 페이지가 제1 유형의 메모리에서 제2 유형의 메모리로 마이그레이션될 수 있는 임의의 메모리 컨텍스트(memory context)에 적용될 수 있다. 예를 들어, 핫 페이지 마이그레이션과 관련된 실시 예는 제2 유형의 메모리가 장치 부착 메모리가 아닌 시스템 메모리로서 구현될 수 있는 실시예에 적용될 수 있다. 아울러, 메모리의 사용 패턴을 모니터링하고 결정하는 것에 기초하여 한 유형의 메모리에서 다른 유형의 메모리로 하나 이상의 페이지를 마이그레이션하는 것으로부터 유리한 효과를 얻을 수 있는 다른 특성을 갖는 임의의 유형의 메모리에 적용될 수 있다.
일부 실시예는 CXL 인터페이스 및/또는 프로토콜과 관련하여 설명될 수 있다. 그러나 실시예는, Gen-Z, CAPI(Coherent Accelerator Processor Interface), CCIX(Cache Coherent Interconnect for Accelerators) 등과 같이 캐시 일관성(cache coherent), 메모리 시맨틱 인터페이스(memory semantic interfaces) 및 프로토콜 중 적어도 하나를 포함하는 임의의 다른 인터페이스 및/또는 프로토콜로 구현될 수도 있다. 적합한 인터페이스 및/또는 프로토콜의 다른 예는 PCIe(Peripheral Component Interconnect Express), NVMe(Nonvolatile Memory Express), NVMe-oF(NVMe-over-fabric), 이더넷, TCP/IP(전송 제어 프로토콜/인터넷 프로토콜), RDMA(원격 직접 메모리 액세스), ROCE(RDMA over Converged Ethernet), FibreChannel, InfiniBand, SATA(Serial ATA), SCSI(Small Computer Systems Interface), SAS(Serial Attached SCSI), iWARP, 또는 이들의 조합을 포함할 수 있다.
도 4는 예시적인 실시예에 따른 페이지 마이그레이션을 갖는 이종 메모리 방식의 다른 예시적인 실시예를 도시한 도면이다.
도 4를 참조하면, 메모리 방식은 장치 부착 메모리(408) 및 시스템 메모리(410)를 포함할 수 있다. 도 4에서, 장치 부착 메모리(408)는 CXL.mem과 같은 메모리 프로토콜을 통해 노출될 수 있는 SSD(432)의 플래시 메모리로 구현될 수 있고, 시스템 메모리(410)는 DRAM과 같은 휘발성 메모리로 구현될 수 있다.
장치 부착 메모리(408) 및 시스템 메모리(410)는 장치 부착 메모리(408) 및 시스템 메모리(410)에 대한 매핑을 제공할 수 있는 하나 이상의 페이지 테이블(438)과 함께 페이징 방식(436, paging scheme)을 사용하여 프로세스 가상 메모리(434)에 매핑될 수 있다. 도 4에서, 4-레벨 페이징(예를 들어, PGD(Page Global Directory; 438a), PUD(Page Upper Directory; 438b), PMD(Page Middle Directory; 438c), 및 PTE(Page Table Entry; 438d) 등)이 사용될 수 있으나, 이에 제한되지 않으며 다른 페이징 체계가 사용될 수도 있다. 프로세스 가상 메모리(434)는, 예를 들어, 도 1, 도 2 및/또는 도 3에 예시된 호스트 중 임의의 것과 같은 호스트에서 실행되는 하나 이상의 프로세스에 의해 사용될 수 있다.
도 4를 다시 참조하면, SSD(432)는 SSD(432)에서 플래시 메모리의 LBA(Logical Block Addres, 431)와 PBA(Physical Block Address, 433)의 매핑(442)을 모니터링할 수 있는 모니터 로직(420)을 포함할 수 있다. LBA와 PBA의 매핑은 L2P 매핑(442)으로 지칭될 수 있다. LBA(431)는 화살표(437)에 의해 도시된 바와 같이 CXL.mem을 통해 SSD(432)의 플래시 메모리를 노출할 수 있다.
L2P 매핑(442)의 모니터링에 기초하여, 모니터 로직(420)은 장치 부착 메모리(408)의 하나 이상의 페이지(422)가 프로세스 가상 메모리(434)를 사용하는 하나 이상의 프로세스에 의해 비교적 자주 액세스될 수 있는 핫 페이지라고 결정할 수 있다. 이 결정에 기초하여, 모니터 로직(420)은 장치 부착 메모리(408)로부터 시스템 메모리(410)로의 하나 이상의 핫 페이지(422)의 마이그레이션을 트리거할 수 있는 페이징 방식(436)으로 마이그레이션 신호(424)를 보낼 수 있다.
하나 이상의 핫 페이지(422)는 마이그레이션 이전에 원래 매핑(444)과 초기에 매핑될 수 있다. 수신된 마이그레이션 신호(424)에 기초하여, 화살표(430)로 도시된 바와 같이, 페이징 방식(436)은 마이그레이션 후 새로운 매핑(446)을 사용하여 하나 이상의 핫 페이지(422)를 시스템 메모리(410)의 새로운 위치(428)로 마이그레이션하도록 매핑(440)을 수정할 수 있다.
도 5는 예시적인 실시예에 따른 페이지 마이그레이션 방식에 대한 구현 가능한 세부사항을 보여주는 이종 메모리 방식의 다른 예시적인 실시예를 예시한 도면이다.
도 5를 참조하면, 메모리 방식은 장치 부착 메모리(508) 및 시스템 메모리(510)를 포함할 수 있다. 장치 부착 메모리(508)는 CXL.mem과 같은 메모리 프로토콜을 통해 노출될 수 있는 CXL 지원 SSD(532)에서 하나 이상의 플래시 메모리 장치(554)로 구현될 수 있고, 시스템 메모리(510)는 DRAM과 같은 휘발성 메모리로 구현될 수 있다.
장치 부착 메모리(508) 및 시스템 메모리(510)는 페이지 테이블(538 및 539)과 함께 페이징 방식(536)을 사용하여 장치 부착 메모리(508) 및 시스템 메모리(510)에 대한 매핑을 제공하는 제1 프로세스 가상 메모리(534) 및 제2 프로세스 가상 메모리(535)에 매핑될 수 있다. 예를 들어, 프로세스 가상 메모리(534, 535)는 도 1, 도 2 및/또는 도 3에 도시된 호스트와 같은 호스트에서 실행되는 제1 프로세스(프로세스 A) 및 제2 프로세스(프로세스 B)에 의해 각각 사용될 수 있다.
도 5를 다시 참조하면, 장치 부착 메모리는 실선(544)으로 도시된 초기 매핑을 사용하여 프로세스 가상 메모리(534, 535)에 초기에 매핑될 수 있는 하나 이상의 페이지(522)를 포함할 수 있다.
SSD(532)는 LBA(550)를 하나 이상의 플래시 메모리 장치(554)의 PBA(552)에 매핑할 수 있는 FTL(Flash Translation Layer; 548)을 포함할 수 있다. FTL(548)은 장치 부착 메모리(508)의 하나 이상의 페이지(522)의 하나 이상의 사용 패턴을 결정하기 위해 LBA 대 PBA 매핑(556)을 모니터링할 수 있는 모니터 로직(520)을 포함할 수 있다.
예를 들어, 특정 LBA(550C)와 연관된 페이지(522)가 프로세스 가상 메모리(534 및 535) 중 하나를 사용하는 프로세스에 의해 처음 기입될 때, FTL(548)은 LBA(550C)를 제1 PBA(552B)에 매핑할 수 있다. 그 후, 페이지(522)가 기입 동작을 수행할 때, FTL(548)은 LBA(550C)가 제2 PBA(552C)에 매핑되도록 매핑을 변경할 수 있다. 그 후, 페이지(522)가 기입 동작을 수행할 때, FTL(548)은 매핑을 다시 변경할 수 있으므로 LBA(550C)가 제3 PBA(552n)에 매핑될 수 있다.
따라서, 모니터 로직(520)은 장치 부착 메모리(508)의 하나 이상의 페이지(522)가 자주 액세스되는 핫 페이지일 수 있다고 결정할 수 있다. 일부 실시예에서, 모니터 로직(520)은 장치 부착 메모리(508)의 페이지에 대한 사용 패턴을 결정하기 위해, 페이지 또는 다른 메트릭마다 매핑 업데이트의 평균 수를 설정하기 위해 L2P 매핑(556)의 일부 또는 전부를 모니터링할 수 있다. 모니터 로직(520)은 개별 모니터링된 페이지를 비교할 수 있는 임계값으로서 평균 또는 다른 메트릭을 사용할 수 있다. 모니터 로직(520)은 특정 페이지에 대한 LBA 대 PBA 매핑(556)의 수가 임계값(예를 들어, 총 누적 기준으로, 롤링 타임 윈도우(rolling time window) 동안 등)을 초과하는 경우 특정 페이지가 핫 페이지라고 결정할 수 있다.
모니터 로직(520)이 장치 부착 메모리(508)의 하나 이상의 페이지(522)가 핫 페이지라고 결정할 때, 예를 들어 모니터 로직(520)은 프로세스 A 및/또는 프로세스 B가 실행될 수 있는 호스트에서 SSD(532)를 위한 디바이스 드라이버(558)에 마이그레이션 메시지(524)를 전송함으로써 마이그레이션을 트리거할 수 있다. 도 5에 도시된 예에서, 마이그레이션 메시지(524)는 인터럽트(예를 들어, 하드웨어 인터럽트)로서 구현될 수 있다.
인터럽트(524) 수신에 기초하여, 디바이스 드라이버(558)는 페이지 폴트 핸들러(560)를 사용하여 하나 이상의 핫 페이지(522)를 장치 부착 메모리(508)에서 시스템 메모리(510)로 마이그레이션하는 프로세스를 시작할 수 있다. 일부 실시예에서, 페이지 폴트 핸들러(560)는 페이지 폴트가 발생할 때 호출될 수 있는 시스템 소프트웨어(예를 들어, 운영 체제 커널의 구성요소로서)로 구현될 수 있다. 페이지 폴트는 다양한 이유로 발생할 수 있다. 따라서, 인터럽트(524) 수신에 기초하여, 드라이버(558)는 애플리케이션이 페이지 액세스를 시도할 때 핫 페이지가 페이지 폴트를 유발하도록 보호 비트를 설정할 수 있다.
일부 실시예에서, 페이지 폴트 핸들러(560)는 시스템 메모리(510)와 저장 장치 사이에서 페이지를 교환하는데 사용될 수 있다. 예를 들어, 프로세스 A 및 프로세스 B 중 어느 하나가 저장 장치로 이동된 시스템 메모리(510)의 요청된 페이지에 액세스하려고 하면 페이지 폴트가 발생할 수 있다. 페이지 폴트에 기초하여, 페이지 폴트 핸들러(560)는 저장 장치로부터 요청된 페이지를 검색하고 이를 시스템 메모리(510)로 스왑(swap)하여 요청 프로세스에서 사용할 수 있도록 할 수 있다.
도 5에 도시된 실시예는, 본 개시의 예시적인 실시예에 따라, 핫 페이지 마이그레이션을 수행하도록 적응시킴으로써 시스템에 이미 존재할 수도 있는 페이지 폴트 핸들러(560)를 이용할 수 있다.
본 개시의 예시적인 실시예에서, 디바이스 드라이버(558)는 모니터 로직(520)에 의해 검출된 장치 부착 메모리(508) 내의 각각의 핫 페이지(522)에 대한 기입 방지 상태(예를 들어, 기입 방지 비트를 사용하여)를 설정할 수 있다. 기입 방지 상태는 화살표(559)로 표시된 페이지 테이블에서와 같이 페이지 테이블(538, 539) 각각에 설정될 수 있다. 이는 프로세스가 기입 방지된 핫 페이지(522) 중 하나 이상에 기입을 시도할 때 활성화될 수 있는 소프트웨어 트랩을 설정할 수 있다. 예를 들어, 기입 방지된 페이지(522) 중 하나에 대한 기입 시도에 기초하여, 페이지 폴트 핸들러(560)는 화살표(530)로 나타낸 바와 같이 장치 부착 메모리(508)에서 시스템 메모리(510)로 페이지 데이터를 이동하고 점선(546)으로 나타낸 바와 같이 원래의 매핑(544)을 새로운 매핑으로 대체함으로써, 하나 이상의 핫 페이지(522)를 장치 연결 메모리(508)에서 시스템 메모리(510)의 하나 이상의 새로운 위치(528)로 마이그레이션할 수 있다.
일부 실시예에서, 도 5에 예시된 메모리 방식은 핫 페이지로 식별된 페이지(522)가 마이그레이션을 위해 표시(예를 들어, 기입 방지로 표시될 수 있음) 되는 수동(예를 들어, 효율적인 수동) 페이지 마이그레이션 방식을 구현할 수 있다. 그러나, 핫 페이지(522)는, 예를 들어, 핫 페이지(522)의 기입 표시에 의해 표시된대로 프로세스에서 필요할 때까지 실제로 마이그레이션되지 않을 수 있다.
도 6은 예시적인 실시예에 따른 하나 이상의 메모리 페이지에 대한 사용 패턴을 결정하기 위한 정보를 저장하기 위한 시스템의 실시예를 도시한 도면이다.
도 6을 참조하면, 도 6에 도시된 시스템에서, 장치(604)는 예를 들어 CXL.mem과 같은 메모리 프로토콜을 통해 노출될 수 있는 장치 부착 메모리(608)를 포함할 수 있다. 장치 부착 메모리(608)의 예약된 부분(621)은 제1 유형의 메모리의 하나 이상의 페이지에 대한 사용 패턴을 결정하기 위해 사용될 수 있는 기입 카운트와 같은 정보를 위해 예약될 수 있다.
일부 실시예들에서, 장치(604)는 모니터링 로직(620)을 갖는 FTL(648)을 갖는 SSD로서 구현될 수 있다. 모니터링 로직(620)은 페이지에 대한 변경된 L2P 매핑을 검출할 때마다 화살표(662)로 표시된 바와 같이 페이지에 대한 기입 카운트를 증가시킬 수 있다. 또한, 모니터링 로직(620)은, 화살표(664)로 표시된 바와 같이, 페이지에 대한 기입 카운트가 핫 페이지로 간주될 수 있음을 나타내는 임계값에 도달했는지를 결정하기 위해 페이지에 대한 변경된 L2P 매핑을 검출할 때마다 페이지에 대한 기입 카운트를 확인할 수 있다. 그 후, 모니터링 로직(620)은 핫 페이지 감지에 기반하여 마이그레이션 메시지를 보낼 수 있다.
호스트에 위치할 수 있는 메모리 할당기(666, memory allocator)는 페이지가 할당 해제되어 애플리케이션 및/또는 프로세스에 의해 더 이상 사용되지 않을 때 업데이트 메시지를 전송하여 화살표(668)로 표시된 페이지에 대한 기입 카운트를 재설정할 수 있다.
도 7은 예시적인 실시예에 따른 페이지 마이그레이션 방식을 구현하는 데 사용될 수 있는 호스트 장치의 예시적인 실시예를 도시한 도면이다.
도 7을 참조하면, 호스트 장치(702)는 프로세서(770), 메모리 컨트롤러(772), 페이지 폴트 핸들러(760), 시스템 메모리(710), 및 인터커넥트 인터페이스(774)를 포함할 수 있으며, 이들은 예를 들어 CXL을 사용하여 구현될 수 있다. 도 7에 예시된 구성요소 중 일부 또는 전부는 시스템 버스(776)를 통해 통신할 수 있다. 일부 실시예에서, 도 7에 예시된 호스트 장치(702)는 도 1 내지 도 6에 도시된 실시예에 개시된 프로세싱, 매핑, 페이징, 페이지 폴트 핸들링, 인터럽트 핸들링, 및/또는 메모리 할당 기능 중 임의의 것을 포함하여 본 명세서에 개시된 임의의 호스트 기능을 구현하는 데 사용될 수 있다.
도 8은 예시적인 실시예에 따른 페이지 마이그레이션 방식을 구현하는데 사용될 수 있는 장치의 예시적인 실시예를 도시한 도면이다.
도 8을 참조하면, 장치(804)는 디바이스 컨트롤러(880), 디바이스 기능 회로(882), 및 상호접속 인터페이스(884)를 포함할 수 있다. 도 8에 도시된 구성요소 중 일부 또는 전부는 시스템 버스(886)를 통해 통신할 수 있다.
디바이스 기능 회로(882)는 장치(802)의 기능을 구현하기 위한 임의의 하드웨어를 포함할 수 있다. 예를 들어, 장치(802)가 저장 장치로서 구현되는 경우, 디바이스 기능 회로(882)는 하나 이상의 플래시 메모리 장치, FTL 등과 같은 저장 매체를 포함할 수 있다. 다른 예로서, 장치(804)가 NIC(Network Interface Card)로서 구현되는 경우, 디바이스 기능 회로(882)는 하나 이상의 모뎀, 네트워크 인터페이스, 물리 계층(physical layers; PHY), 매체 액세스 제어 계층(medium access control layers; MAC) 등을 포함할 수 있다.
추가 예로서, 장치(804)가 가속기로서 구현되는 경우, 디바이스 기능 회로(882)는 하나 이상의 가속기 회로, 메모리 회로 등을 포함할 수 있다. 일부 실시예에서, 도 8에 예시된 장치(804)는 도 1 내지 도 6에 개시된 임의의 기능을 포함하여, 여기에 개시된 장치 및/또는 장치 부착 메모리와 관련된 임의의 기능을 구현하는 데 사용될 수 있다.
장치(804)가 저장 장치로서 구현될 수 있는 실시예에서, 저장 장치는 자기 매체, 고체 상태 매체, 광학 매체 등을 포함하는 임의의 유형의 저장 매체에 기초할 수 있다. 예를 들어, 일부 실시예들에서, 장치(804)는 NAND 플래시 메모리, 크로스 그리드(cross-gridded) 비휘발성 메모리, 벌크 저항 변화를 갖는 메모리, PCM(Phase Change Memory) 및/또는 이들의 임의의 조합과 같은 영구 메모리를 기반으로 하는 SSD로 구현될 수 있다.
이러한 저장 장치는 직렬 ATA(SATA), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), U.2 등과 같은 임의의 커넥터 구성을 사용하여 3.5인치, 2.5인치, 1.8인치, M.2, EDSFF(Enterprise and Data Center SSD Form Factor), NF1 등과 같은 임의의 폼 팩터로 구현될 수 있다. 그러한 저장 장치는 서버 섀시(server chassis), 서버 랙(server rack), 데이터룸(dataroom), 데이터 센터(datacenter), 에지 데이터 센터(edge datacenter), 모바일 에지 데이터 센터(mobile edge datacenter), 및/또는 이들의 임의의 조합, 및/또는 이와 유사한 것과 함께 전체적으로 또는 부분적으로 구현될 수 있고/있거나 이와 관련하여 사용될 수 있다.
도 1 내지 도 8에 설명된 호스트 기능, 기능적으로 장치 및/또는 이와 유사한 것을 포함하여 여기에 설명된 기능 중 임의의 것은 하드웨어, 소프트웨어, 조합 논리를 포함한 이들의 조합(any combination thereof including combinational logic), 순차 논리(sequential logic), 하나 이상의 타이머, 카운터, 레지스터, 상태 머신(state machines), DRAM(volatile memories such as dynamic random access memory) 및/또는 SRAM(static random access memory), NAND 플래시 메모리를 포함하는 플래시 메모리와 같은 비휘발성 메모리, 크로스 그리드 비휘발성 메모리와 같은 영구 메모리, 벌크 저항 변화가 있는 메모리 등 및/또는 이들의 임의의 조합, CPLDs(Complex Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), ASICs(Application Specific Integrated Circuits), x86 프로세서와 같은 복합 명령어 세트 컴퓨터(Complex Instruction Set Computer, CISC) 프로세서 및/또는 ARM 프로세서와 같은 축소 명령어 세트 컴퓨터(Reduced Instruction Set Computer, RISC) 프로세서와 같은 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 신경 처리 장치(NPU) 등으로 구현되어, 임의의 유형의 메모리에 저장된 명령을 실행할 수 있다. 일부 실시예에서, 하나 이상의 컴포넌트는 시스템 온 칩(SOC)으로서 구현될 수 있다.
도 9는 예시적인 실시예에 따른 메모리 시스템을 관리하기 위한 방법의 실시예를 도시한 도면이다.
도 9를 참조하면, 메모리 시스템을 관리하기 위한 방법은 단계(902)에서 시작할 수 있다.
단계(904)에서, 제1 유형의 제1 메모리의 페이지를 모니터링할 수 있다. 예를 들어, 일부 실시예에서, 장치 부착 비휘발성 메모리의 페이지에 대한 기입 카운트를 모니터링할 수 있다.
단계(906)에서, 모니터링에 기초하여 페이지의 사용을 결정할 수 있다. 예를 들어, 일부 실시예에서, 페이지에 대한 L2P 매핑의 변경에 기초하여, 페이지가 자주 액세스된 핫 페이지일 수 있다고 결정할 수 있다.
단계(908)에서, 페이지의 사용에 기초하여 페이지를 제2 유형의 제2 메모리로 마이그레이션할 수 있다. 예를 들어, 일부 실시예에서, 핫 페이지를 비휘발성 메모리에서 휘발성 메모리로 마이그레이션할 수 있다.
메모리 시스템을 관리하기 위한 방법은 단계(910)에서 종료될 수 있다.
도 9에 도시된 실시 예뿐만 아니라 본 명세서에서 설명된 모든 다른 실시 예들은 예시적인 동작 및/또는 구성요소일 수 있다. 일부 실시예에서, 일부 동작 및/또는 구성요소는 생략될 수 있고/있거나 다른 동작 및/또는 구성요소가 포함될 수 있다. 아울러, 일부 실시예에서, 동작 및/또는 구성요소의 시간적 및/또는 공간적 순서는 변경될 수 있다. 일부 구성요소 및/또는 동작이 개별 구성요소로 예시될 수 있지만, 일부 실시예에서, 별도로 표시된 일부 구성요소 및/또는 동작은 단일 구성요소 및/또는 동작으로 통합될 수 있고/있거나 단일 구성요소 및/또는 동작으로 표시된 일부 구성요소 및/또는 동작은 다중 구성요소 및/또는 동작으로 구현될 수 있다.
위에 개시된 일부 실시예는 다양한 구현 세부사항의 맥락에서 설명되었지만, 본 개시내용의 원리는 이들 또는 임의의 다른 특정 세부사항으로 제한되지 않는다. 예를 들어, 일부 기능은 특정 구성요소에 의해 구현되는 것으로 설명되었지만, 다른 실시예에서 기능은 상이한 위치에 있고 다양한 사용자 인터페이스를 갖는 상이한 시스템 및 구성요소 사이에 분산될 수 있다. 특정 실시예는 특정 프로세스, 동작 등을 갖는 것으로 설명되었지만, 이러한 용어는 특정 프로세스, 동작 등이 다수의 프로세스, 동작 등으로 구현될 수 있는 실시예를 포함하거나, 다수의 프로세스, 동작, 등은 단일 프로세스, 단계 등으로 통합될 수 있다.
구성 요소 또는 요소에 대한 참조는 구성 요소 또는 요소의 일부만을 참조할 수 있다. 예를 들어, 집적 회로에 대한 참조는 집적 회로의 전부 또는 일부만을 의미할 수 있고, 블록에 대한 참조는 전체 블록 또는 하나 이상의 서브블록을 참조할 수 있다. 본 개시 및 청구범위에서 "제1" 및 "제2"와 같은 용어의 사용은 그들이 수정하는 것을 구별하기 위한 목적일 수 있으며 문맥상 달리 명백하지 않는 한 공간적 또는 시간적 순서를 나타내지 않을 수 있다. 일부 실시예들에서, 사물에 대한 언급은 사물의 적어도 일부를 지칭할 수 있고, 예를 들어 "~에 기초한"은 "~에 적어도 부분적으로 기반하는" 등을 지칭할 수 있다. 첫 번째 요소에 대한 참조는 두 번째 요소의 존재를 의미하지 않을 수 있다. 본 명세서에 개시된 원리는 독립적인 유용성을 가지며 개별적으로 구현될 수 있으며, 모든 실시예가 모든 원리를 활용할 수 있는 것은 아니다. 그러나 원칙은 다양한 조합으로 구현될 수도 있으며, 그 중 일부는 개별 원칙의 이점을 시너지 방식으로 증폭할 수 있다.
위에서 설명된 다양한 세부사항 및 실시예는 본 발명의 원리에 따른 추가 실시예를 생성하기 위해 결합될 수 있다. 본 발명의 발명 원리는 본 발명의 개념을 벗어나지 않고 배열 및 세부 사항이 변경될 수 있으므로 이러한 변경 및 수정은 다음 청구 범위에 속하는 것으로 간주될 수 있다.

Claims (20)

  1. 제1 유형의 제1 메모리의 페이지를 모니터링하는 단계;
    상기 모니터링에 기초하여 상기 페이지의 사용을 결정하는 단계; 및
    상기 결정된 페이지의 사용에 기초하여, 제2 유형의 제2 메모리로 상기 페이지를 마이그레이션하는 단계를 포함하는 메모리 시스템을 관리하는 방법.
  2. 제1항에 있어서,
    상기 페이지를 모니터링하는 단계는,
    상기 페이지의 매핑을 모니터링하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법.
  3. 제1항에 있어서,
    상기 페이지의 사용을 결정하는 단계는,
    상기 페이지의 업데이트 빈도를 결정하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법.
  4. 제3항에 있어서,
    상기 페이지의 사용을 결정하는 단계는,
    상기 페이지의 업데이트 빈도를 임계값과 비교하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법.
  5. 제1항에 있어서,
    상기 페이지를 마이그레이션하는 단계는,
    디바이스 드라이버에 인터럽트(interrupt)를 전송하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법.
  6. 제1항에 있어서,
    상기 페이지를 마이그레이션하는 단계는,
    상기 페이지에 대하여 기입 방지 상태를 설정하는 단계; 및
    상기 페이지의 기입에 기초하여, 페이지 폴트 핸들러(page fault handler)에 의해 상기 페이지를 마이그레이션하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법.
  7. 제1항에 있어서,
    상기 제1 메모리는, 장치 부착 메모리를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법.
  8. 제7항에 있어서,
    상기 장치 부착 메모리는, 메모리 프로토콜을 통해 노출되는 것을 특징으로 하는 메모리 시스템을 관리하는 방법.
  9. 제8항에 있어서,
    상기 메모리 프로토콜은, 코히어런트 메모리 프로토콜(coherent memory protocol)을 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법.
  10. 제1항에 있어서,
    상기 제1 메모리는 비휘발성 메모리를 포함하고, 상기 제2 메모리는 휘발성 메모리를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법.
  11. 메모리; 및
    상기 메모리의 페이지를 모니터링하고, 상기 모니터링에 기초하여 상기 페이지의 사용을 결정하고, 상기 페이지의 사용에 기초하여 신호를 전송하도록 구성된 디바이스 컨트롤러를 포함하는 장치.
  12. 제11항에 있어서,
    상기 디바이스 컨트롤러는,
    상기 페이지의 매핑을 모니터링하여 상기 페이지를 모니터링하도록 구성되는 것을 특징으로 하는 장치.
  13. 제12항에 있어서,
    상기 디바이스 컨트롤러는,
    상기 페이지의 논리적 주소와 물리적 주소의 매핑을 모니터링함으로써 상기 페이지의 매핑을 모니터링하도록 구성되는 것을 특징으로 하는 장치.
  14. 제11항에 있어서,
    상기 디바이스 컨트롤러는,
    상기 페이지의 업데이트 빈도를 결정함으로써 상기 페이지의 사용을 결정하도록 구성되는 것을 특징으로 하는 장치.
  15. 제11항에 있어서,
    상기 장치는, 저장 장치를 더 포함하고,
    상기 메모리는, 코히어런트 메모리 프로토콜(coherent memory protocol)을 통해 노출되는 것을 특징으로 하는 장치.
  16. 제11항에 있어서,
    상기 디바이스 컨트롤러는,
    상기 메모리의 페이지에 대한 사용 정보를 저장하도록 구성되는 것을 특징으로 하는 장치.
  17. 제16항에 있어서,
    상기 디바이스 컨트롤러는,
    업데이트 메시지를 수신하고, 상기 업데이트 메시지에 기초하여 상기 사용 정보를 업데이트하도록 구성되는 것을 특징으로 하는 장치.
  18. 호스트 프로세서;
    상기 호스트 프로세서에 의해 액세스되도록 배열된 제1 유형의 제1 메모리;
    제2 유형의 제2 메모리를 상기 호스트 프로세서에 노출시키도록 구성된 장치 인터페이스; 및
    마이그레이션 메시지(migration message)를 수신하고, 상기 마이그레이션 메시지에 기초하여 상기 제2 메모리의 페이지를 상기 제1 메모리로 마이그레이션하도록 구성된 마이그레이션 로직을 포함하는 시스템.
  19. 제18항에 있어서,
    상기 마이그레이션 로직은,
    상기 마이그레이션 메시지를 수신하도록 구성된 디바이스 드라이버를 포함하는 것을 특징으로 하는 시스템.
  20. 제18항에 있어서,
    상기 마이그레이션 로직은,
    상기 제2 메모리에서 상기 제1 메모리로 상기 제2 메모리의 페이지를 마이그레이션하는 것에 기초하여, 디바이스 인터페이스를 통해 업데이트 메시지를 전송하도록 구성되는 것을 특징으로 하는 시스템.



KR1020220023211A 2021-06-01 2022-02-22 메모리 시스템에서 페이지 마이그레이션을 위한 시스템, 방법 및 장치 KR20220162605A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163195708P 2021-06-01 2021-06-01
US63/195,708 2021-06-01
US17/393,399 US20220382478A1 (en) 2021-06-01 2021-08-03 Systems, methods, and apparatus for page migration in memory systems
US17/393,399 2021-08-03

Publications (1)

Publication Number Publication Date
KR20220162605A true KR20220162605A (ko) 2022-12-08

Family

ID=81598090

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220023211A KR20220162605A (ko) 2021-06-01 2022-02-22 메모리 시스템에서 페이지 마이그레이션을 위한 시스템, 방법 및 장치

Country Status (5)

Country Link
US (1) US20220382478A1 (ko)
EP (1) EP4099171A1 (ko)
KR (1) KR20220162605A (ko)
CN (1) CN115437554A (ko)
TW (1) TW202248862A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11522931B1 (en) * 2021-07-30 2022-12-06 Avago Technologies International Sales Pte. Limited Systems and methods for controlling high speed video

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6067584A (en) * 1996-09-09 2000-05-23 National Instruments Corporation Attribute-based system and method for configuring and controlling a data acquisition task
US6021446A (en) * 1997-07-11 2000-02-01 Sun Microsystems, Inc. Network device driver performing initial packet processing within high priority hardware interrupt service routine and then finishing processing within low priority software interrupt service routine
US6096094A (en) * 1997-10-03 2000-08-01 National Instruments Corporation Configuration manager for configuring a data acquisition system
EP1042871B1 (en) * 1997-10-14 2009-04-15 Cypress Semiconductor Corporation Digital radio-frequency transceiver
US20030079007A1 (en) * 2001-10-22 2003-04-24 Merkin Cynthia M. Redundant source event log
US7266678B2 (en) * 2001-11-06 2007-09-04 Dell Products L.P. Dynamic configuration of computer when booting
US6789139B2 (en) * 2001-11-13 2004-09-07 Dell Products L.P. Method for enabling an optical drive to self-test analog audio signal paths when no disc is present
US6654707B2 (en) * 2001-12-28 2003-11-25 Dell Products L.P. Performing diagnostic tests of computer devices while operating system is running
US7017054B2 (en) * 2002-07-02 2006-03-21 Dell Products L.P. Mirrored tag snoop optimization
FR2843209B1 (fr) * 2002-08-02 2006-01-06 Cimai Technology Procede de replication d'une application logicielle dans une architecture multi-ordinateurs, procede pour realiser une continuite de fonctionnement mettant en oeuvre ce procede de replication, et systeme multi-ordinateurs ainsi equipe.
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8407518B2 (en) * 2007-10-26 2013-03-26 Vmware, Inc. Using virtual machine cloning to create a backup virtual machine in a fault tolerant system
KR101061483B1 (ko) * 2009-07-02 2011-09-02 한국과학기술원 메모리 회로 및 메모리 회로의 엑세스 방법, 메모리 관리 시스템 및 메모리 관리방법
EP2518614A4 (en) * 2009-12-24 2014-01-01 Hitachi Ltd STORAGE SYSTEM FOR PROVIDING A VIRTUAL VOLUME
EP2518613A4 (en) * 2009-12-24 2013-10-02 Hitachi Ltd STORAGE SYSTEM FOR PROVIDING A VIRTUAL VOLUME
JP2011154547A (ja) * 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
JP5314772B2 (ja) * 2010-01-28 2013-10-16 株式会社日立製作所 性能の異なる実領域群で構成されたプールを有するストレージシステムの管理システム及び方法
US8489699B2 (en) * 2010-08-13 2013-07-16 Vmware, Inc. Live migration of virtual machine during direct access to storage over SR IOV adapter
EP2613269A4 (en) * 2010-08-30 2013-08-21 Fujitsu Ltd MULTICORE PROCESSOR SYSTEM, SYNCHRONIZATION CONTROL SYSTEM, SYNCHRONIZATION CONTROL DEVICE, INFORMATION GENERATION PROCESS AND INFORMATION GENERATION PROGRAM
US9547443B2 (en) * 2012-04-30 2017-01-17 Hitachi, Ltd. Method and apparatus to pin page based on server state
WO2014030221A1 (ja) * 2012-08-22 2014-02-27 株式会社日立製作所 仮想計算機システム、管理計算機及び仮想計算機管理方法
WO2014057521A1 (en) * 2012-10-12 2014-04-17 Hitachi, Ltd. Storage apparatus and data management method
US20150347311A1 (en) * 2013-01-09 2015-12-03 Hitachi, Ltd. Storage hierarchical management system
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10642505B1 (en) * 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
JP2014186622A (ja) * 2013-03-25 2014-10-02 Sony Corp 情報処理装置、情報処理方法、並びに記録媒体
US10037222B2 (en) * 2013-09-24 2018-07-31 University Of Ottawa Virtualization of hardware accelerator allowing simultaneous reading and writing
US9535831B2 (en) * 2014-01-10 2017-01-03 Advanced Micro Devices, Inc. Page migration in a 3D stacked hybrid memory
JP5707540B1 (ja) * 2014-01-31 2015-04-30 株式会社東芝 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法
US20160327602A1 (en) * 2015-05-07 2016-11-10 Sandisk Technologies Inc. Protecting a removable device from short circuits
US9710401B2 (en) * 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US9904567B2 (en) * 2015-08-13 2018-02-27 Red Hat Israel, Ltd. Limited hardware assisted dirty page logging
CN106486140B (zh) * 2015-08-27 2019-03-29 株式会社东芝 磁盘装置及写入控制方法
US9870285B2 (en) * 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
US9836243B1 (en) * 2016-03-31 2017-12-05 EMC IP Holding Company LLC Cache management techniques
US10642496B2 (en) * 2016-04-01 2020-05-05 Sandisk Technologies Inc. Out of order read transfer with host memory buffer
US9996273B1 (en) * 2016-06-30 2018-06-12 EMC IP Holding Company LLC Storage system with data durability signaling for directly-addressable storage devices
US10521256B2 (en) * 2016-08-30 2019-12-31 Red Had Israel, Ltd. Virtual machine migration acceleration with page state indicators
US10108550B2 (en) * 2016-09-22 2018-10-23 Google Llc Memory management supporting huge pages
US10282292B2 (en) * 2016-10-17 2019-05-07 Advanced Micro Devices, Inc. Cluster-based migration in a multi-level memory hierarchy
KR20180094372A (ko) * 2017-02-15 2018-08-23 에스케이하이닉스 주식회사 하이브리드 메모리 시스템 및 그 제어 방법
US10922296B2 (en) * 2017-03-01 2021-02-16 Sap Se In-memory row storage durability
US10126971B1 (en) * 2017-06-21 2018-11-13 International Business Machines Corporation Enhanced application performance in multi-tier storage environments
US11347843B2 (en) * 2018-09-13 2022-05-31 King Fahd University Of Petroleum And Minerals Asset-based security systems and methods
US10783024B2 (en) * 2018-10-12 2020-09-22 International Business Machines Corporation Reducing block calibration overhead using read error triage
US10740019B1 (en) * 2019-01-31 2020-08-11 EMC IP Holding Company LLC Data migration using write protection
WO2020168536A1 (en) * 2019-02-22 2020-08-27 Intel Corporation Dynamical swithcing between ept and shadow page tables for runtime processor verification
US10866735B2 (en) * 2019-03-26 2020-12-15 EMC IP Holding Company LLC Storage system with variable granularity counters
US11656891B2 (en) * 2019-09-27 2023-05-23 Red Hat, Inc. Copy-on-write for virtual machines with encrypted storage
US20230297411A1 (en) * 2019-09-27 2023-09-21 Red Hat, Inc. Copy-on-write for virtual machines with encrypted storage
US11157379B2 (en) * 2019-10-30 2021-10-26 International Business Machines Corporation Managing blocks of memory based on block health using hybrid controllers
US11138124B2 (en) * 2019-10-30 2021-10-05 International Business Machines Corporation Migrating data between block pools in a storage system
US20210303477A1 (en) * 2020-12-26 2021-09-30 Intel Corporation Management of distributed shared memory

Also Published As

Publication number Publication date
EP4099171A1 (en) 2022-12-07
US20220382478A1 (en) 2022-12-01
CN115437554A (zh) 2022-12-06
TW202248862A (zh) 2022-12-16

Similar Documents

Publication Publication Date Title
US11360679B2 (en) Paging of external memory
EP3799396B1 (en) Provisioning and allocation of external memory
US10372335B2 (en) External memory for virtualization
US11163699B2 (en) Managing least recently used cache using reduced memory footprint sequence container
US9043542B2 (en) Concurrent content management and wear optimization for a non-volatile solid-state cache
US9195603B2 (en) Storage caching
WO2014102886A1 (en) Information processing apparatus and cache control method
US20100161929A1 (en) Flexible Memory Appliance and Methods for Using Such
US20100161909A1 (en) Systems and Methods for Quota Management in a Memory Appliance
US20100161908A1 (en) Efficient Memory Allocation Across Multiple Accessing Systems
US20100161879A1 (en) Efficient and Secure Main Memory Sharing Across Multiple Processors
WO2012109679A2 (en) Apparatus, system, and method for application direct virtual memory management
US20230017824A1 (en) Systems and methods for load balancing in a heterogeneous memory system
US20230008874A1 (en) External memory as an extension to virtualization instance memory
US8799573B2 (en) Storage system and its logical unit management method
US20240053917A1 (en) Storage device, operation method of storage device, and storage system using the same
EP4099171A1 (en) Systems, methods, and apparatus for page migration in memory systems
US20220187992A1 (en) Systems and methods for data copy offload for storage devices
EP4394576A1 (en) Apparatus and methods for accessing data at a storage node
CN115809018A (zh) 改善***的读取性能的设备和方法