KR20220162605A - 메모리 시스템에서 페이지 마이그레이션을 위한 시스템, 방법 및 장치 - Google Patents
메모리 시스템에서 페이지 마이그레이션을 위한 시스템, 방법 및 장치 Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 257
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000013508 migration Methods 0.000 title claims description 40
- 230000005012 migration Effects 0.000 title claims description 40
- 238000012544 monitoring process Methods 0.000 claims abstract description 25
- 238000013507 mapping Methods 0.000 claims description 32
- 230000001427 coherent effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 description 32
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 229920001485 poly(butyl acrylate) polymer Polymers 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-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
본 개시의 기술적 사상은 메모리 시스템에 관한 것으로서, 상세하게는 메모리 시스템에서 페이지 마이그레이션(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는 예시적인 실시예에 따른 이종 메모리 방식의 예시적인 실시예를 도시한다.
도 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 메모리의 페이지를 모니터링하는 단계;
상기 모니터링에 기초하여 상기 페이지의 사용을 결정하는 단계; 및
상기 결정된 페이지의 사용에 기초하여, 제2 유형의 제2 메모리로 상기 페이지를 마이그레이션하는 단계를 포함하는 메모리 시스템을 관리하는 방법. - 제1항에 있어서,
상기 페이지를 모니터링하는 단계는,
상기 페이지의 매핑을 모니터링하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법. - 제1항에 있어서,
상기 페이지의 사용을 결정하는 단계는,
상기 페이지의 업데이트 빈도를 결정하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법. - 제3항에 있어서,
상기 페이지의 사용을 결정하는 단계는,
상기 페이지의 업데이트 빈도를 임계값과 비교하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법. - 제1항에 있어서,
상기 페이지를 마이그레이션하는 단계는,
디바이스 드라이버에 인터럽트(interrupt)를 전송하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법. - 제1항에 있어서,
상기 페이지를 마이그레이션하는 단계는,
상기 페이지에 대하여 기입 방지 상태를 설정하는 단계; 및
상기 페이지의 기입에 기초하여, 페이지 폴트 핸들러(page fault handler)에 의해 상기 페이지를 마이그레이션하는 단계를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법. - 제1항에 있어서,
상기 제1 메모리는, 장치 부착 메모리를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법. - 제7항에 있어서,
상기 장치 부착 메모리는, 메모리 프로토콜을 통해 노출되는 것을 특징으로 하는 메모리 시스템을 관리하는 방법. - 제8항에 있어서,
상기 메모리 프로토콜은, 코히어런트 메모리 프로토콜(coherent memory protocol)을 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법. - 제1항에 있어서,
상기 제1 메모리는 비휘발성 메모리를 포함하고, 상기 제2 메모리는 휘발성 메모리를 포함하는 것을 특징으로 하는 메모리 시스템을 관리하는 방법. - 메모리; 및
상기 메모리의 페이지를 모니터링하고, 상기 모니터링에 기초하여 상기 페이지의 사용을 결정하고, 상기 페이지의 사용에 기초하여 신호를 전송하도록 구성된 디바이스 컨트롤러를 포함하는 장치. - 제11항에 있어서,
상기 디바이스 컨트롤러는,
상기 페이지의 매핑을 모니터링하여 상기 페이지를 모니터링하도록 구성되는 것을 특징으로 하는 장치. - 제12항에 있어서,
상기 디바이스 컨트롤러는,
상기 페이지의 논리적 주소와 물리적 주소의 매핑을 모니터링함으로써 상기 페이지의 매핑을 모니터링하도록 구성되는 것을 특징으로 하는 장치. - 제11항에 있어서,
상기 디바이스 컨트롤러는,
상기 페이지의 업데이트 빈도를 결정함으로써 상기 페이지의 사용을 결정하도록 구성되는 것을 특징으로 하는 장치. - 제11항에 있어서,
상기 장치는, 저장 장치를 더 포함하고,
상기 메모리는, 코히어런트 메모리 프로토콜(coherent memory protocol)을 통해 노출되는 것을 특징으로 하는 장치. - 제11항에 있어서,
상기 디바이스 컨트롤러는,
상기 메모리의 페이지에 대한 사용 정보를 저장하도록 구성되는 것을 특징으로 하는 장치. - 제16항에 있어서,
상기 디바이스 컨트롤러는,
업데이트 메시지를 수신하고, 상기 업데이트 메시지에 기초하여 상기 사용 정보를 업데이트하도록 구성되는 것을 특징으로 하는 장치. - 호스트 프로세서;
상기 호스트 프로세서에 의해 액세스되도록 배열된 제1 유형의 제1 메모리;
제2 유형의 제2 메모리를 상기 호스트 프로세서에 노출시키도록 구성된 장치 인터페이스; 및
마이그레이션 메시지(migration message)를 수신하고, 상기 마이그레이션 메시지에 기초하여 상기 제2 메모리의 페이지를 상기 제1 메모리로 마이그레이션하도록 구성된 마이그레이션 로직을 포함하는 시스템. - 제18항에 있어서,
상기 마이그레이션 로직은,
상기 마이그레이션 메시지를 수신하도록 구성된 디바이스 드라이버를 포함하는 것을 특징으로 하는 시스템. - 제18항에 있어서,
상기 마이그레이션 로직은,
상기 제2 메모리에서 상기 제1 메모리로 상기 제2 메모리의 페이지를 마이그레이션하는 것에 기초하여, 디바이스 인터페이스를 통해 업데이트 메시지를 전송하도록 구성되는 것을 특징으로 하는 시스템.
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)
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)
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 |
-
2021
- 2021-08-03 US US17/393,399 patent/US20220382478A1/en active Pending
-
2022
- 2022-02-22 KR KR1020220023211A patent/KR20220162605A/ko unknown
- 2022-05-03 EP EP22171317.5A patent/EP4099171A1/en active Pending
- 2022-05-18 TW TW111118546A patent/TW202248862A/zh unknown
- 2022-05-30 CN CN202210597735.1A patent/CN115437554A/zh active Pending
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) | 改善***的读取性能的设备和方法 |