KR20220091023A - Hybrid memory device and management method thereof - Google Patents
Hybrid memory device and management method thereof Download PDFInfo
- Publication number
- KR20220091023A KR20220091023A KR1020200182117A KR20200182117A KR20220091023A KR 20220091023 A KR20220091023 A KR 20220091023A KR 1020200182117 A KR1020200182117 A KR 1020200182117A KR 20200182117 A KR20200182117 A KR 20200182117A KR 20220091023 A KR20220091023 A KR 20220091023A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- segment
- program
- module
- stored
- Prior art date
Links
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/068—Hybrid storage device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
본 발명은 다수의 휘발성 메모리 셀을 포함하는 VM 모듈, 다수의 비휘발성 메모리 셀을 포함하는 NVM 모듈 및 NVM 모듈에 저장된 프로그램을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 프로그램에 대한 라이트 카운트인 프로그램 카운트를 계산하고, 프로그램 카운트가 기지정된 제1 문턱값 이상인 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 VM 모듈에 저장된 데이터와 마이그레이션하고, 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑하는 메모리 컨트롤 모듈을 포함하여, NVM의 쓰기 횟수를 줄이고 쓰기 속도를 향상시켜, 하이브리드 메모리의 성능을 개선할 수 있는 하이브리드 메모리 장치 및 이의 관리 방법을 제공할 수 있다.The present invention divides a VM module including a plurality of volatile memory cells, an NVM module including a plurality of non-volatile memory cells, and a program stored in the NVM module into a predetermined segment unit, and is the number of write commands included in each segment. by acquiring and summing the segment counts to calculate a program count that is a write count for the program, selecting a segment whose segment count is equal to or greater than a predetermined second threshold among a plurality of segments of the program in which the program count is greater than or equal to a predetermined first threshold A hybrid memory device that can improve hybrid memory performance by reducing the number of NVM writes and improving write speed, including a memory control module that migrates data stored in the VM module and remaps the data addresses of migrated segments And it can provide a management method thereof.
Description
본 발명은 하이브리드 메모리 장치 및 이의 관리 방법에 관한 것으로, 라이트 특성을 고려한 하이브리드 메모리 장치 및 이의 관리 방법에 관한 것이다.The present invention relates to a hybrid memory device and a management method thereof, and to a hybrid memory device in consideration of write characteristics and a management method thereof.
정보 통신 기기와 컴퓨터 그래픽 기술의 발전에 따라 고속 대용량의 고성능 메모리에 대한 요구는 항상 증가되어 왔다. 이에 집적도 향상, 고속 저전력화 등과 같이 메모리의 성능을 향상시키기 위한 연구가 꾸준하게 진행되어 왔으나, 최근에는 각 메모리의 종류별 장단점이 분명하여 단일 종류의 메모리만으로 모든 요구 사항을 충족시키기 어렵다는 문제가 있다.With the development of information communication devices and computer graphics technology, the demand for high-speed, large-capacity and high-performance memory has always increased. Accordingly, research to improve memory performance, such as integration improvement and high-speed and low power consumption, has been continuously conducted, but recently, each type of memory has clear advantages and disadvantages, so it is difficult to satisfy all requirements with only a single type of memory.
일 예로 DRAM(dynamic random access memory)과 같은 휘발성 메모리(Volatile Memory: 이하 VM)의 경우, 라이트 속도가 빠르다는 장점이 있으나, 전원이 공급되지 않으면 데이터가 소실되며, 데이터를 유지하기 위해서는 주기적으로 리플레시를 수행해야 하므로 전력 소비가 증가한다는 문제가 있다.For example, volatile memory (VM) such as dynamic random access memory (DRAM) has the advantage of fast write speed, but data is lost when power is not supplied. There is a problem in that power consumption increases because it has to perform poetry.
반면, 상변화 메모리(Phase-Change Memory: 이하 PCM)와 같은 비휘발성 메모리(Non-Volatile Memory: 이하 NVM)의 경우, 휘발성 메모리보다 높은 집적도를 가져 고용량으로 구현하기에 유리하며, 전원이 인가되지 않아도 데이터가 유지되며, 대기 전력을 소비하지 않아 저전력 기기로 구현 가능하다는 장점이 잇다. 그러나 NVM의 경우, 리드(read) 속도에서는 VM과 유사한 수준을 나타내지만, 라이트(write) 속도는 VM에 비해 크게 느려 병목 현상을 발생할 가능성이 높다는 단점과 함께 라이트 횟수에 제한이 있어 라이트 동작이 빈번하게 발생하는 어플리케이션에 적용하기에는 부적합하다는 문제가 있다.On the other hand, in the case of non-volatile memory (NVM) such as phase-change memory (PCM), it has a higher density than volatile memory, so it is advantageous to implement with a high capacity, and power is not applied. It has the advantage that it can be implemented as a low-power device because it does not consume data and does not consume standby power. However, in the case of NVM, the read speed is similar to that of the VM, but the write speed is significantly slower than that of the VM, which is highly likely to cause a bottleneck. There is a problem in that it is not suitable for application to applications that occur frequently.
이에 최근에는 서로 다른 두 종류 이상의 메모리 소자를 포함하는 하이브리드 메모리에 대한 연구가 활발하게 수행되고 있다. 하이브리드 메모리의 경우, 대부분 VM와 NVM의 조합으로 구성되어, VM과 NVM의 단점을 서로 보완할 수 있도록 한다.Accordingly, recently, research on a hybrid memory including two or more different types of memory devices has been actively conducted. In the case of hybrid memory, it is mostly composed of a combination of VM and NVM, so that the shortcomings of VM and NVM can be complemented with each other.
즉 하이브리드 메모리에서는 NVM의 비휘발성, 고집적도 및 저전력 소비의 장점을 이용하되, 느린 라이트 속도 및 라이트 횟수 제한에 따른 문제를 VM을 이용하여 해소하는데 중점을 두고 있다.In other words, hybrid memory takes advantage of NVM's advantages of non-volatility, high density, and low power consumption, but focuses on solving problems caused by slow write speed and limited number of writes by using VM.
본 발명의 목적은 VM과 NVM의 라이트 특성을 고려하여 NVM의 라이트 횟수를 줄이고 라이트 속도를 향상시켜, 하이브리드 메모리의 성능을 개선할 수 있는 하이브리드 메모리 장치 및 이의 관리 방법을 제공하는데 있다.It is an object of the present invention to provide a hybrid memory device capable of improving performance of a hybrid memory by reducing the number of writes of the NVM and improving the write speed in consideration of the write characteristics of the VM and the NVM, and a method for managing the same.
본 발명의 다른 목적은 프로그램을 세그먼트 단위로 구분하고, 구분된 세그먼트의 라이트 명령 개수를 기반으로 마이그레이션 대상 세그먼트를 선별하여 마이그레이션을 수행하며, 마이그레이션 대상 세그먼트의 데이터 어드레스 변화에 기초하여 마이그레이션 단위 크기를 조절하여 라이트 효율성을 향상시킬 수 있는 하이브리드 메모리 장치 및 이의 관리 방법을 제공하는데 있다.Another object of the present invention is to divide a program into segments, perform migration by selecting a migration target segment based on the number of write commands in the segmented segment, and adjust the size of a migration unit based on a change in the data address of the migration target segment Accordingly, an object of the present invention is to provide a hybrid memory device capable of improving write efficiency and a method for managing the same.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 하이브리드 메모리 장치는 다수의 휘발성 메모리 셀을 포함하는 VM 모듈; 다수의 비휘발성 메모리 셀을 포함하는 NVM 모듈; 및 상기 NVM 모듈에 저장된 프로그램을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 프로그램에 대한 라이트 카운트인 프로그램 카운트를 계산하고, 상기 프로그램 카운트가 기지정된 제1 문턱값 이상인 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 상기 VM 모듈에 저장된 데이터와 마이그레이션하고, 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑하는 메모리 컨트롤 모듈을 포함한다.A hybrid memory device according to an embodiment of the present invention for achieving the above object includes: a VM module including a plurality of volatile memory cells; an NVM module including a plurality of non-volatile memory cells; and divides the program stored in the NVM module into a predetermined segment unit, obtains and adds a segment count that is the number of write commands included in each segment, calculates a program count that is a write count for the program, and the program count is A memory control module that selects a segment having a segment count equal to or greater than a second threshold value from among a plurality of segments of a program that is equal to or greater than a predetermined first threshold value, migrates it with data stored in the VM module, and remaps a data address of the migrated segment includes
상기 메모리 컨트롤 모듈은 상기 VM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 VM 컨트롤러; 상기 NVM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 NVM 컨트롤러; 및 상기 NVM 모듈에 저장된 프로그램의 세그먼트를 선택적으로 상기 VM 모듈에 저장된 데이터와 마이그레이션시키고, 마이그레이션된 데이터에 대한 액세스 명령이 인가되면, 리맵핑된 데이터 어드레스에 대한 액세스 명령으로 수정하는 메모리 매니저를 포함할 수 있다.The memory control module may include: a VM controller configured to control access to data stored in the VM module; an NVM controller for controlling access to data stored in the NVM module; and a memory manager that selectively migrates a segment of a program stored in the NVM module with data stored in the VM module, and modifies it with an access command to a remapped data address when an access command for the migrated data is applied. can
상기 메모리 매니저는 리드 또는 라이트 명령을 포함하는 액세스 명령이 인가되면, 인가된 액세스 명령을 분석하여, 리드 또는 라이트 명령과 프로그램 정보와 데이터 어드레스를 포함하는 라이트 요청 정보로 구분하는 명령 분석부; 상기 라이트 요청 정보를 인가받아 인가된 프로그램을 다수의 세그먼트로 구분하고, 세그먼트 카운트와 프로그램 카운트를 획득하여 라이트 히스토리 테이블에 저장하며, 저장된 라이트 히스토리 테이블에 기초하여 상기 NVM 모듈에 저장된 프로그램의 세그먼트를 선택적으로 상기 VM 모듈의 대응하는 데이터와 마이그레이션시키고, 마이그레이션되어 변경된 데이터 어드레스를 획득하는 재할당부; 세그먼트의 데이터가 저장된 데이터 어드레스와 변경된 데이터 어드레스를 리맵핑하여 저장하고, 상기 리드 또는 라이트 명령이 인가되면, 인가된 리드 또는 라이트 명령에서 지정되는 데이터 어드레스를 리맵핑된 데이터 어드레스로 수정하여 상기 VM 컨트롤러와 상기 NVM 컨트롤러로 출력하는 리맵핑부; 및 상기 NVM 모듈과 상기 VM 모듈 사이에서 마이그레이션되는 데이터를 인가받아 임시 저장하여 상대 모듈로 전달하는 스왑 버퍼를 포함할 수 있다.The memory manager may include: a command analyzing unit that, when an access command including a read or write command is applied, analyzes the applied access command, and divides the read or write command and write request information including program information and data address; After receiving the write request information, the approved program is divided into a plurality of segments, the segment count and the program count are obtained and stored in the write history table, and the segment of the program stored in the NVM module is selected based on the stored write history table a reallocation unit for migrating the corresponding data of the VM module to , and obtaining a migrated and changed data address; The data address in which segment data is stored and the changed data address are remapped and stored, and when the read or write command is applied, the data address specified in the applied read or write command is modified to the remapped data address and the VM controller and a remapping unit outputting to the NVM controller; and a swap buffer for receiving data migrated between the NVM module and the VM module, temporarily storing the data, and transferring the data to a counterpart module.
상기 재할당부는 상기 라이트 히스토리 테이블을 분석하여, 프로그램 카운트가 상기 제1 문턱값 이상인 프로그램을 스왑 후보 프로그램으로 설정하고, 설정된 스왑 후보 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 상기 제2 문턱값 이상인 세그먼트를 마이그레이션이 수행되는 마이그레이션 대상 세그먼트로 선택할 수 있다.The reallocation unit analyzes the write history table, sets a program having a program count equal to or greater than the first threshold value as a swap candidate program, and selects a segment having a segment count equal to or greater than the second threshold value among a plurality of segments of the set swap candidate program. It can be selected as the migration target segment where the migration is performed.
상기 재할당부는 상기 마이그레이션 대상 세그먼트에 대한 데이터 어드레스를 상기 NVM 컨트롤러로 전달하여, 상기 NVM 컨트롤러의 제어에 따라 상기 NVM 모듈에 저장된 상기 마이그레이션 대상 세그먼트가 상기 스왑 버퍼와 상기 VM 컨트롤러를 통해 상기 VM 모듈에 저장되도록 할 수 있다.The reallocation unit transfers the data address for the migration target segment to the NVM controller, so that the migration target segment stored in the NVM module is transferred to the VM module through the swap buffer and the VM controller under the control of the NVM controller. can be saved.
상기 재할당부는 마이그레이션되는 세그먼트의 데이터 어드레스를 확인하여, 순차적으로 마이그레이션되는 데이터의 데이터 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 기지정된 개수의 데이터 스코프 중 동일한 데이터 스코프에 누적카운트하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 다시 누적 카운트하여 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 다수의 데이터 스코프에 누적 기록하며, 다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 확인된 구간에 따라 마이그레이션되는 데이터의 마이그레이션 단위 크기를 조절할 수 있다.The reassignment unit checks the data address of the migrated segment, and if the data address difference of the sequentially migrated data is less than or equal to a predetermined reference address unit, the reassignment unit counts the accumulated data in the same data scope among the predetermined number of data scopes, and the reference address unit If it exceeds, it is counted again in another data scope, and the address change of sequentially transmitted data is accumulated and recorded in a number of predefined data scopes. It is possible to adjust the migration unit size of migrated data according to the confirmed section by checking whether the recorded size corresponds to any of the unit maintenance section, the unit reduction section, and the unit increase section, which are predetermined based on the currently set migration unit.
상기 메모리 매니저는 마이그레이션 실행 중 액세스 명령이 인가되면, 마이그레이션되는 세그먼트의 데이터 중 스왑 버퍼로 전송되는 데이터의 전송 완료 후, 마이그레이션을 일시 중지시키고, 액세스 명령에 대응하는 동작을 수행할 수 있다.When an access command is applied during migration, the memory manager may pause migration and perform an operation corresponding to the access command after completion of transmission of data transmitted to a swap buffer among data of a segment to be migrated.
상기 메모리 매니저는 상기 액세스 명령에 의해 지정되는 데이터가 상기 스왑 버퍼에 저장되어 있는지 판별하고, 상기 스왑 버퍼에 저장된 것으로 판별되면, 상기 스왑 버퍼에 저장된 데이터에 액세스를 수행하며, 상기 스왑 버퍼에 저장되지 않은 것으로 판별되면, 상기 VM 컨트롤러 또는 상기 NVM 컨트롤러를 통해 상기 VM 모듈 또는 상기 NVM 모듈에 저장된 데이터에 액세스를 수행할 수 있다.The memory manager determines whether the data designated by the access command is stored in the swap buffer, and when it is determined that the data is stored in the swap buffer, accesses the data stored in the swap buffer, If it is determined that there is not, access to data stored in the VM module or the NVM module may be performed through the VM controller or the NVM controller.
상기 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 하이브리드 메모리의 관리 방법은 다수의 휘발성 메모리 셀을 포함하는 VM 모듈과 다수의 비휘발성 메모리 셀을 포함하는 NVM 모듈 및 스왑 버퍼를 포함하는 하이브리드 메모리 장치의 관리 방법에 있어서, 상기 NVM 모듈에 저장된 프로그램을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 프로그램에 대한 라이트 카운트인 프로그램 카운트를 계산하는 단계; 상기 프로그램 카운트가 기지정된 제1 문턱값 이상인 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 상기 VM 모듈에 저장된 데이터와 마이그레이션시키는 단계; 및 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑하는 단계를 포함한다.A hybrid memory management method according to another embodiment of the present invention for achieving the above object is a hybrid memory including a VM module including a plurality of volatile memory cells, an NVM module including a plurality of non-volatile memory cells, and a swap buffer. A device management method, wherein a program stored in the NVM module is divided into a predetermined segment unit, and a segment count that is the number of write commands included in each segment is acquired and summed to calculate a program count that is a write count for the program to do; selecting a segment having a segment count equal to or greater than a second threshold value from among a plurality of segments of the program in which the program count is equal to or greater than a predetermined first threshold value, and migrating it with data stored in the VM module; and remapping the data addresses of the migrated segments.
따라서, 본 발명의 실시예에 따른 하이브리드 메모리 장치 및 이의 관리 방법은 VM과 NVM의 라이트 특성을 고려하여 NVM의 라이트 횟수를 줄이고 라이트 속도를 향상시켜, 하이브리드 메모리의 성능을 개선할 수 있다. 또한 프로그램을 세그먼트 단위로 구분하고, 구분된 세그먼트의 라이트 명령 개수를 기반으로 마이그레이션 대상 세그먼트를 선별하여 마이그레이션을 수행하며, 마이그레이션 대상 세그먼트의 데이터 어드레스 변화에 기초하여 마이그레이션 단위 크기를 조절하여 라이트 효율성을 향상시킬 수 있다.Accordingly, the hybrid memory device and the management method thereof according to the embodiment of the present invention can improve the performance of the hybrid memory by reducing the number of writes of the NVM and improving the write speed in consideration of the write characteristics of the VM and the NVM. In addition, programs are divided into segments, migration is performed by selecting a migration target segment based on the number of write commands in the segment, and the migration unit size is adjusted based on the change in the data address of the migration target segment to improve write efficiency. can do it
도 1은 본 발명의 일 실시예에 따른 하이브리드 메모리 장치의 개략적 구조를 나타낸다.
도 2는 세그먼트 카운트와 프로그램 카운트를 설명하기 위한 도면이다.
도 3 내지 도 6은 도 1의 메모리 제어 모듈이 데이터를 마이그레이션하는 동작을 설명하기 위한 도면이다.
도 7은 도 1의 메모리 매니저의 상세 구조를 나타낸다.
도 8은 도 7의 재할당부의 상세 구조를 나타낸다.
도 9는 도 8의 마이그레이션 결정부가 마이그레이션되는 데이터의 단위 크기를 결정하는 개념을 설명하기 위한 도면이다.
도 10은 본 발명의 일 실시예에 따른 하이브리드 메모리 장치의 관리 방법을 나타낸다.
도 11은 도 10의 마이그레이션 실행 단계를 상세하게 나타낸 도면이다.1 shows a schematic structure of a hybrid memory device according to an embodiment of the present invention.
2 is a diagram for explaining a segment count and a program count.
3 to 6 are diagrams for explaining an operation of migrating data by the memory control module of FIG. 1 .
FIG. 7 shows a detailed structure of the memory manager of FIG. 1 .
FIG. 8 shows a detailed structure of the reassignment unit of FIG. 7 .
FIG. 9 is a diagram for explaining a concept in which the migration determining unit of FIG. 8 determines a unit size of migrated data.
10 illustrates a method for managing a hybrid memory device according to an embodiment of the present invention.
11 is a diagram illustrating in detail the migration execution step of FIG. 10 .
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다. In order to fully understand the present invention, the operational advantages of the present invention, and the objects achieved by the practice of the present invention, reference should be made to the accompanying drawings illustrating preferred embodiments of the present invention and the contents described in the accompanying drawings.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 설명하는 실시예에 한정되는 것이 아니다. 그리고, 본 발명을 명확하게 설명하기 위하여 설명과 관계없는 부분은 생략되며, 도면의 동일한 참조부호는 동일한 부재임을 나타낸다. Hereinafter, the present invention will be described in detail by describing preferred embodiments of the present invention with reference to the accompanying drawings. However, the present invention may be embodied in various different forms, and is not limited to the described embodiments. In addition, in order to clearly explain the present invention, parts irrelevant to the description are omitted, and the same reference numerals in the drawings indicate the same members.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...부", "...기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. Throughout the specification, when a part "includes" a certain component, it does not exclude other components, unless otherwise stated, meaning that other components may be further included. In addition, terms such as "...unit", "...group", "module", and "block" described in the specification mean a unit that processes at least one function or operation, which is hardware, software, or hardware. and a combination of software.
도 1은 본 발명의 일 실시예에 따른 하이브리드 메모리 장치의 개략적 구조를 나타낸다.1 shows a schematic structure of a hybrid memory device according to an embodiment of the present invention.
도 1을 참조하면, 본 실시예에 따른 하이브리드 메모리 장치는 메모리 컨트롤 모듈(100)과 VM 모듈(200) 및 NVM 모듈(300)로 구성될 수 있다.Referring to FIG. 1 , the hybrid memory device according to the present embodiment may include a
메모리 컨트롤 모듈(100)은 CPU나 GPU 와 같은 프로세서 등의 외부 장치로부터 리드 명령이 인가되면, VM 모듈(200) 또는 NVM 모듈(300)에 저장된 데이터 중 리드 명령에 대응하는 데이터를 획득하여 외부 장치로 출력한다. 그리고 외부 장치로부터 라이트 명령과 데이터가 인가되면, 라이트 명령과 함께 인가되는 데이터를 VM 모듈(200) 또는 NVM 모듈(300)에 저장한다.When a read command is applied from an external device such as a processor such as a CPU or GPU, the
또한 본 실시예에서 메모리 컨트롤 모듈(100)은 VM 모듈(200)과 NVM 모듈(300)에 저장되는 데이터를 관리한다. 메모리 컨트롤 모듈(100)은 NVM 모듈(300)과 VM 모듈(200) 사에 데이터를 상호 교환하는 마이그레이션(migration)을 수행할 수 있다. 메모리 컨트롤 모듈(100)은 NVM 모듈(300)에 저장된 데이터를 선별하여 VM 모듈(200)로, 그리고 VM 모듈(200)에 저장된 대응하는 데이터를 NVM 모듈(300)로 상호 스왑(swap)하여 마이그레이션시킬 수 있다. 본 실시예에서 메모리 컨트롤 모듈(100)은 NVM 모듈(300)에 저장된 데이터를 분석하여 라이트 명령의 개수에 기초하여 VM 모듈(200)에 저장할 데이터를 선별하여 마이그레이션할 수 있다.Also, in the present embodiment, the
메모리 컨트롤 모듈(100)은 메모리 매니저(110), VM 컨트롤러(120) 및 NVM 컨트롤러(130)를 포함할 수 있다.The
메모리 매니저(110)는 VM 모듈(200) 또는 NVM 모듈(300) 중 외부에서 인가되는 리드 명령에 대응하는 데이터가 저장된 모듈을 판별하고, 데이터가 VM 모듈(200)에 저장된 것으로 판별되면, VM 컨트롤러(120)로 리드 명령을 전달하며, 데이터가 NVM 모듈(300)에 저장된 것으로 판별되면, NVM 컨트롤러(130)로 리드 명령을 전달한다. 그리고 VM 컨트롤러(120) 또는 VM 컨트롤러(120)로부터 대응하는 데이터를 인가받아 외부로 출력한다.The
또한 메모리 매니저(110)는 라이트 명령에 따라 VM 컨트롤러(120) 또는 VM 컨트롤러(120)로 저장될 데이터와 라이트 명령을 전달하여, VM 모듈(200) 또는 NVM 모듈(300)에 데이터가 저장되도록 한다. 여기서 라이트 명령과 함께 인가되는 데이터는 기본적으로 NVM 모듈(300)에 저장되지만, 라이트 되는 데이터가 NVM 모듈(300)에서 VM 모듈(200)으로 이전에 마이그레이션되어 저장되어 있는 경우, VM 모듈(200)에 기저장된 데이터를 라이트되는 데이터로 오버라이트(overwrite)하여 갱신할 수 있다.Also, the
그리고 본 실시예에서 메모리 매니저(110)는 NVM 모듈(300)에 저장된 데이터 중 VM 모듈(200)로 마이그레션 되어야하는 데이터를 선별하고, 선별 결과를 VM 컨트롤러(120)와 NVM 컨트롤러(130)로 전달하여, NVM 모듈(300)과 VM 모듈(200) 각각이 선별된 데이터와 대응하는 데이터를 상호 스왑하도록 한다.And in this embodiment, the
메모리 매니저(110)는 VM 모듈(200)과 NVM 모듈(300) 사이에서 데이터 마이그레이션이 수행될 수 있도록 VM 컨트롤러(120)와 NVM 컨트롤러(130)에서 전달되는 데이터를 임시로 저장하는 스왑 버퍼(미도시)를 포함할 수 있다. 메모리 매니저(110)가 마이그레이션을 수행하는 상세한 동작에 대해서는 후술하도록 한다.The
VM 컨트롤러(120)는 메모리 매니저(110)의 관리에 따라 VM 모듈(200)을 제어한다. VM 컨트롤러(120)는 메모리 매니저(110)를 통해 인가되는 리드 명령에 응답하여, VM 모듈(200)에 저장된 데이터를 탐색하여 획득하고, 획득된 데이터를 메모리 매니저(110)로 전달한다. 그리고 라이트 명령에 응답하여, VM 모듈(200)의 기지정된 메모리 어드레스에 인가된 데이터를 저장한다. 이때, VM 컨트롤러(120)는 VM 모듈(200)에서 획득되는 데이터 또는 메모리 매니저(110)에서 전달되어 VM 모듈(200)에 저장되어야 하는 데이터를 임시 저장하는 버퍼(121)를 포함할 수 있다.The
또한 VM 컨트롤러(120)는 기지정된 주기로 VM 모듈(200)에 저장된 데이터를 리플레시하여, VM 모듈(200)에 저장된 데이터가 소실되지 않도록 하며, 메모리 매니저(110)의 관리하에 하이브리드 메모리 장치로 인가되는 전원이 차단되기 이전에 VM 모듈(200)에 저장된 데이터를 인가받아 메모리 매니저(110)의 스왑 버퍼를 통해 NVM 컨트롤러(130)로 전달할 수 있다.In addition, the
NVM 컨트롤러(130)는 메모리 매니저(110)의 관리에 따라 NVM 모듈(300)을 제어한다. NVM 컨트롤러(130)는 VM 컨트롤러(120)와 유사하게 메모리 매니저(110)를 통해 인가되는 리드 명령에 응답하여 NVM 모듈(300)에 저장된 데이터를 탐색하여 획득하고, 획득된 데이터를 메모리 매니저(110)로 전달하며, 라이트 명령에 응답하여 NVM 모듈(300)의 기지정된 메모리 어드레스에 인가된 데이터를 저장한다. 그리고 NVM 컨트롤러(130) 또한 NVM 버퍼(131)를 포함하여, NVM 모듈(300)에서 획득되는 데이터 또는 메모리 매니저(110)에서 전달되어 NVM 모듈(300)에 저장되어야 하는 데이터를 임시 저장할 수 있다.The
NVM 컨트롤러(130)는 VM 컨트롤러(120)와 달리 NVM 모듈(300)에 저장된 데이터에 대해 리플레시 동작을 수행할 필요가 없다. 그러나 NVM 컨트롤러(130)는 메모리 매니저(110)에 의해 선별되는 NVM 모듈(300)에 저장된 데이터를 인가받아, 스왑 버퍼를 통해 VM 컨트롤러(120)로 전달할 수 있다.Unlike the
VM 모듈(200)은 다수의 VM 셀을 포함하여 전원이 인가되는 동안 데이터를 저장한다. VM 모듈(200)은 메모리 컨트롤 모듈(100)의 VM 컨트롤러(120)의 제어에 따라 데이터를 인가받아 저장하거나 리플레시하고, 저장된 데이터를 VM 컨트롤러(120)로 전달한다.The
NVM 모듈(300)은 다수의 NVM 셀을 포함하여 전원 공급 여부에 무관하게 항시 데이터를 저장할 수 있다. NVM 모듈(300)은 메모리 컨트롤 모듈(100)의 NVM 컨트롤러(130)의 제어에 따라 데이터를 인가받아 저장하고, 저장된 데이터를 NVM 컨트롤러(130)로 전달한다.The
본 실시예에서 메모리 컨트롤 모듈(100)은 프로그램(또는 어플리케이션)에 대한 데이터를 세그먼트(segment) 단위로 구분하여 관리한다. 여기서 세그먼트는 마이그레이션되기 위해 선별되는 데이터 단위를 나타낸다. 즉 도 1에 도시된 바와 같이, NVM 모듈(300)에는 각각 다수의 세그먼트(Segment 0 ~ Segment 3)로 구성되는 다수의 프로그램(Program 0 ~ Program 3)이 저장될 수 있으며, 메모리 컨트롤 모듈(100)은 NVM 모듈(300)에 저장된 다수의 프로그램(Program 0 ~ Program 3) 각각에서 세그먼트를 선별하여 VM 모듈(200)로 마이그레이션시킬 수 있다. 도 1에서는 일 예로 NVM 모듈(300)에서 제0 및 제1 프로그램(Program 0, Program 1)에서 각각 하나의 세그먼트((segment 3), (segment 0))와 제2 프로그램(Program 2)에서 2개의 세그먼트(segment 1, segment 2)가 선별되어 VM 모듈(200)로 마이그레이션되는 경우를 가정하여 도시하였다.In the present embodiment, the
도 2는 세그먼트 카운트와 프로그램 카운트를 설명하기 위한 도면이고, 도 3 내지 도 6은 도 1의 메모리 제어 모듈이 데이터를 마이그레이션하는 동작을 설명하기 위한 도면이다.FIG. 2 is a diagram for explaining a segment count and a program count, and FIGS. 3 to 6 are diagrams for explaining an operation of migrating data by the memory control module of FIG. 1 .
도 1에 도시된 메모리 컨트롤 모듈(100)의 메모리 매니저(110)는 NVM 모듈(300)에 저장된 프로그램(Program A, Program C)의 각 세그먼트에 포함된 라이트 명령의 개수를 카운트한다. 이때 메모리 매니저(110)는 외부로부터 라이트되어야 하는 프로그램(Program A, Program C)가 인가되면, 인가되는 프로그램을 각 세그먼트 단위로 라이트 명령의 개수를 카운트하면서 NVM 모듈(300)에 저장하고, 프로그램이 저장되면, 카운트된 세그먼트 카운트를 합산하여 프로그램 카운트를 획득할 수 있다. 여기서는 각 세그먼트별로 카운트된 라이트 명령의 개수를 세그먼트 카운트라 한다. 그리고 각 프로그램 데이터(Program A, Program C)에서 포함된 다수의 세그먼트에 대한 세그먼트 카운트의 누적합을 프로그램 카운트로 계산한다.The
도 2를 살펴보면, A 프로그램(Program A)에서는 4개의 세그먼트에 대한 세그먼트 카운트가 각각 (51, 20, 32, 24)로서 프로그램 카운트는 127로 계산된다. 그리고 C 프로그램(Program C)에서는 4개의 세그먼트에 대한 세그먼트 카운트가 각각 (49, 38, 77, 47)로서 프로그램 카운트는 211로 계산된다.Referring to FIG. 2 , in program A, segment counts for four segments are (51, 20, 32, 24), respectively, and the program count is calculated as 127. And, in the C program (Program C), the segment count for the four segments is (49, 38, 77, 47), respectively, and the program count is calculated as 211.
메모리 매니저(110)는 NVM 모듈(300)에 저장된 프로그램에서 데이터가 변경되면, 즉 세그먼트에 변화가 발생되면, 변화된 세그먼트에 따라 세그먼트 카운트를 업데이트하고, 이를 프로그램 카운트에 반영할 수 있다. When data is changed in a program stored in the
도 3은 NVM 모듈(300)의 초기 상태를 나타내며, 이에 실질적으로 프로그램(Program A ~ Program C)이 NVM 모듈(300)에 저장되지 않은 상태로서, 프로그램 카운트가 모두 0인 상태를 나타낸다.FIG. 3 shows an initial state of the
도 4는 프로그램(Program A ~ Program C)이 NVM 모듈(300)에 저장된 상태로서, 메모리 매니저(110)는 각 프로그램(Program A ~ Program C)별 다수의 세그먼트 각각에 대한 라이트 개수를 확인하여 세그먼트 카운트를 획득하고, 획득된 세그먼트 카운트를 기반으로 프로그램 카운트를 계산한다. 여기서 프로그램(Program A ~ Program C)별 프로그램 카운트는 각각 127, 79, 211인 것으로 가정한다.4 shows a state in which programs (Program A to Program C) are stored in the
프로그램 카운트가 계산되면, 메모리 매니저(110)는 계산된 프로그램 카운트 중 기지정된 제1 문턱값(여기서는 일 예로 100) 이상인 프로그램 카운트를 갖는 프로그램을 탐색한다. 프로그램 카운트가 제1 문턱값 이상인 프로그램(Program A, Program C)이 탐색되면, 탐색된 프로그램(Program A, Program C)을 스왑 후보 프로그램으로 선별한다.When the program count is calculated, the
그리고 선별된 스왑 후보 프로그램(Program A, Program C)에 포함된 각 세그먼트에 대한 세그먼트 카운트가 제1 문턱값 이하의 값으로 기지정된 제2 문턱값(여기서는 일 예로 50) 이상인 세그먼트를 탐색하고, 세그먼트 카운트가 제2 문턱값 이상인 세그먼트가 탐색되면 탐색된 세그먼트를 마이그레이션 대상으로 선별한다.Then, a segment in which the segment count of each segment included in the selected swap candidate programs (Program A, Program C) is equal to or less than the first threshold value is greater than or equal to a second threshold (here, 50 for example) is searched for, and the segment When a segment whose count is equal to or greater than the second threshold is found, the found segment is selected as a migration target.
도 5에서는 스왑 후보 프로그램(Program A, Program C)에서 각 세그먼트의 세그먼트 카운트가 도 2와 같은 것으로 가정하였으며, 이에 A 프로그램(Program A)에서 세그먼트 카운트가 51인 제0 세그먼트가 마이그레이션 대상으로 선별되며, C 프로그램(Program C)에서는 세그먼트 카운트가 77인 제2 세그먼트가 마이그레이션 대상으로 선별된다. 여기서는 일 예로서 프로그램(Program A, Program C)에서 각 1개의 세그먼트가 마이그레이션 대상으로 선별되는 경우를 도시하였으나, 각 프로그램(Program A, Program C)에서 마이그레이션 대상으로 선별되는 세그먼트의 개수는 한정되지 않는다. 즉 선별된 스왑 후보 프로그램(Program A, Program C)에서 세그먼트 카운트가 제2 문턱값 이상인 모든 세그먼트가 마이그레이션 대상 세그먼트로 선별될 수 있다. 그러나 스왑 후보 프로그램(Program A, Program C)으로 선별되지 않은 프로그램(Program B)에서는 세그먼트 카운트가 제2 문턱값 이상인 모든 세그먼트가 존재하더라도, 메모리 매니저(110)가 선별되지 않은 프로그램(Program B)의 세그먼트 카운트를 고려하지 않으므로, 마이그레이션 대상 세그먼트로 선별되지 않는다.In FIG. 5, it is assumed that the segment count of each segment in the swap candidate programs (Program A, Program C) is the same as in FIG. , in the C program (Program C), the second segment having a segment count of 77 is selected as a migration target. Here, as an example, a case in which one segment is selected as a migration target in the programs (Program A, Program C) is illustrated, but the number of segments selected as a migration target in each program (Program A, Program C) is not limited. . That is, all segments having a segment count equal to or greater than the second threshold in the selected swap candidate programs Program A and Program C may be selected as migration target segments. However, in the program (Program B) that is not selected as the swap candidate programs (Program A, Program C), even if all segments having the segment count equal to or greater than the second threshold exist, the
그리고 메모리 매니저(110)는 마이그레이션 대상 세그먼트가 선별되면, 도 6에서 도시된 바와 같이, NVM 모듈(300)에서 선별된 세그먼트가 VM 모듈(200)로 마이그레이션되도록 VM 컨트롤러(120)와 NVM 컨트롤러(130)를 제어하여, NVM 모듈(300)에서 선별된 마이그레이션 대상 세그먼트를 VM 모듈(200)로 마이그레이션 시킨다. 이때, NVM 모듈(300)에서 선별된 마이그레이션 대상 세그먼트는 NVM 컨트롤러(130)의 버퍼(131)를 통해 메모리 매니저(110)의 스왑 버퍼로 전달되고, 스왑 버퍼로 전달된 마이그레이션 대상 세그먼트는 VM 컨트롤러(120)의 버퍼(121)를 통해 VM 모듈(200)로 인가되어 저장될 수 있다.In addition, when a segment to be migrated is selected, the
또한 메모리 매니저(110)는 선별된 마이그레이션 대상 세그먼트를 마이그레이션할 때, 마이그레이션되는 데이터의 단위 크기를 가변시킬 수 있다.Also, the
도 7은 도 1의 메모리 매니저의 상세 구조를 나타낸다.FIG. 7 shows a detailed structure of the memory manager of FIG. 1 .
도 7을 참조하면, 본 실시예에 따른 메모리 매니저(110)는 명령 분석부(111), 재할당부(112), 리맵핑부(113) 및 스왑 버퍼(114)를 포함할 수 있다.Referring to FIG. 7 , the
명령 분석부(111)는 외부 장치에서 인가되는 리드 또는 라이트와 같은 명령을 분석하여, 리드 요청과 라이트 요청은 리맵핑부(113)로 전달하고, 라이트 요청 정보는 재할당부(112)로 전달한다. 여기서 라이트 요청 정보에는 데이터 어드레스, 프로그램 정보 등이 포함될 수 있다.The
하이브리드 메모리 장치에 저장된 프로그램은 외부 프로세서 등에 의해 실행될 수 있으며, 실행되는 과정에서 라이트 명령에 의해 데이터 변경이 발생하며, 변경된 데이터는 다시 하이브리드 장치에 저장되어야 한다. 이에 명령 분석부(111)는 라이트 명령에 의해 변경된 데이터가 인가되면, 재할당부(112)로 변경된 데이터의 어드레스와 프로그램 정보 및 세그먼트 정보 등이 포함된 라이트 요청 정보를 전송하여, 이전 저장된 데이터가 변경된 데이터로 업데이트 되도록 한다. 본 실시예에서 명령 분석부(111)가 재할당부(112)로 라이트 요청 정보를 전달하는 것은 NVM 모듈(300)에 저장된 프로그램에서 프로그램 카운트와 세그먼트 카운트에 의해 VM 모듈(200)로 마이그레이션된 세그먼트에 대한 정보가 리맵핑부(113)으로 전달되도록 하여, 리맵핑부(113)가 정상적으로 데이터를 라이트하여 업데이트할 수 있도록 하기 위함이다.A program stored in the hybrid memory device may be executed by an external processor or the like, and data change occurs by a write command during execution, and the changed data must be stored in the hybrid device again. Accordingly, when the data changed by the write command is applied, the
재할당부(112)는 인가된 프로그램이 이전 VM 모듈(200) 또는 NVM 모듈(300)에 저장되지 않은 신규 프로그램이면, 인가되는 프로그램을 세그먼트로 구분하고, 각 세그먼트에 라이트 명령이 포함된 개수를 카운트하여 세그먼트 카운트를 획득하며, 획득된 세그먼트 카운트를 기반으로 프로그램 카운트를 계산하여 저장한다. 그리고 재할당부(112)는 계산된 프로그램 카운트와 세그먼트 카운트에 따라 VM 모듈(200) 또는 NVM 모듈(300) 중 프로그램의 다수의 세그먼트가 각각 저장될 위치를 설정한다.If the applied program is a new program that is not stored in the
재할당부(112)는 인가되는 프로그램의 세그먼트들이 기본적으로 NVM 모듈(300)에 저장되도록 어드레스를 할당할 수 있다. 그러나 재할당부(112)는 저장된 프로그램 카운트와 세그먼트 카운트에 기반하여, 스왑 후보 프로그램을 선별하고, 선별된 스왑 후보 프로그램에서 마이그레이션 대상 세그먼트를 선별하여, 선별된 마이그레이션 대상 세그먼트가 VM 모듈(200)에 저장되도록 어드레스를 할당할 수 있다.The
즉 선별되지 않은 프로그램의 세그먼트들과 스왑 후보 프로그램에서 마이그레이션 대상 세그먼트를 제외한 나머지 세그먼트들은 NVM 모듈(300)에 저장되도록 어드레스를 할당할 수 있다. 경우에 따라서 재할당부(112)는 신규 프로그램에 대한 세그먼트들을 모두 NVM 모듈(300)에 저장되도록 어드레스를 할당하여 저장하고, 이후, NVM 모듈(300)에 저장된 프로그램의 세그먼트 중 마이그레이션 대상 세그먼트를 선별하여 VM 모듈(200)에 마이그레이션되도록 할 수도 있다.That is, addresses may be assigned to the segments of the unselected program and the segments other than the migration target segment in the swap candidate program to be stored in the
재할당부(112)는 VM 컨트롤러(120) 또는 NVM 컨트롤러(130)가 인가된 프로그램의 세그먼트를 저장한 이후, VM 컨트롤러(120) 또는 NVM 컨트롤러(130)로부터 저장된 데이터 어드레스를 인가받아 획득할 수도 있다.After the
그리고 재할당부(112)는 NVM 모듈(300)에 이전 저장된 프로그램에 대한 프로그램 카운트와 세그먼트 카운트를 분석하여, NVM 모듈(300)에 저장된 프로그램의 세그먼트를 선별적으로 VM 모듈(300)로 마이그레이션시킬 수 있다. 재할당부(112)는 상기한 바와 같이 신규 프로그램이 라이트될 때, 프로그램 카운트와 세그먼트 카운트를 획득하여 미리 저장하고 있으며, 라이트 요청 정보로부터 프로그램의 세그먼트에 변화가 확인되는 경우, 프로그램 카운트와 세그먼트 카운트를 다시 계산하여 업데이트하여 저장한다. 즉 각 프로그램의 세그먼트들에 대한 라이트 히스토리를 미리 저장한다. 그리고 저장된 라이트 히스토리에 따라 프로그램의 세그먼트들 중 마이그레이션 대상 세그먼트를 선별하여 VM 모듈(300)로 마이그레이션 시킨다. 이때, 재할당부(112)는 NVM 모듈(300)에서 마이그레이션 대상 세그먼트의 데이터 어드레스와 VM 모듈(200)로 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑부(113)로 전달하여 리맵핑부(113)가 마이그레이션된 데이터 어드레스의 변화를 저장하도록 한다.In addition, the
또한 재할당부(112)는 마이그레이션 대상 세그먼트의 데이터 어드레스를 분석하여, 마이그레이션되는 데이터의 단위 크기를 조절할 수 있다. 재할당부(112)가 마이그레이션되는 데이터의 단위 크기를 조절하는 방식에 대한 상세한 설명은 후술하도록 한다.Also, the
리맵핑부(113)는 재할당부(112)로부터 마이그레이션에 의해 변경된 데이터 어드레스를 인가받아 저장하고, 명령 분석부(111)로부터 리드 명령 또는 라이트 명령을 인가되면, 저장된 데이터 어드레스를 기반으로 리드 명령과 라이트 명령을 수정하여, VM 컨트롤러(120) 또는 NVM 컨트롤러(130)로 전달한다.The
리맵핑부(113)는 재할당부(112)에 의해 마이그레이션된 데이터에 대한 데이터 어드레스가 인가되면, 기존의 데이터 어드레스와 마이그레이션된 데이터 어드레스를 리맵핑 테이블에 저장한다. 이후, 명령 분석부(111)로부터 리드 또는 라이트 명령이 인가되면, 리맵핑 테이블에 해당 데이터에 대해 재할당된 메모리 어드레스가 존재하는지 판별하고, 재할당부(112)에 의해 재할당된 메모리 어드레스가 존재하면, 리드 또는 라이트 명령을 재할당된 메모리 어드레스에 대한 명령으로 수정하여 VM 컨트롤러(120) 또는 NVM 컨트롤러(130)로 전달함으로써, VM 컨트롤러(120) 또는 NVM 컨트롤러(130)가 재할당된 메모리 어드레스에서 데이터를 리드하거나 라이트 할 수 있도록 한다.When the data address for the migrated data is applied by the
스왑 버퍼(114)는 VM 모듈(200)에 저장된 데이터를 NVM 모듈(300)로 마이그레이션하거나, NVM 모듈(300)에 저장된 데이터를 VM 모듈(200)로 마이그레이션할 때, VM 컨트롤러(120) 및 NVM 컨트롤러(130)의 버퍼(121, 131)에서 전달되는 데이터를 임시 저장한 후, 상대 버퍼(121, 131)로 전달함으로써, 마이그레이션 도중 데이터 충돌이 발생하지 않도록 할 수 있다.The
도 8은 도 7의 재할당부의 상세 구조를 나타내고, 도 9는 도 8의 마이그레이션 결정부가 마이그레이션되는 데이터의 단위 크기를 결정하는 개념을 설명하기 위한 도면이다.FIG. 8 shows the detailed structure of the reassignment unit of FIG. 7 , and FIG. 9 is a diagram for explaining the concept of determining the unit size of the migrated data by the migration determining unit of FIG. 8 .
도 8을 참조하면, 재할당부(112)는 라이트 요청 정보 분석부(1121), 라이트 히스토리 테이블(1122), 마이그레이션 결정부(1123) 및 마이그레이션 요청부(1124)를 포함할 수 있다.Referring to FIG. 8 , the
라이트 요청 정보 분석부(1121)는 명령 분석부(111)에서 인가되는 라이트 요청 정보를 분석한다. 라이트 요청 정보 분석부(1121)는 라이트 요청 정보로부터 프로그램 정보와 세그먼트 정보 및 데이터 어드레스 등을 확인하여, 라이트 히스토리 테이블(1122)로 전달한다.The write request
라이트 히스토리 테이블(1122)은 라이트 요청 정보 분석부(1121)에서 확인되는 프로그램 정보와 세그먼트 정보로부터 프로그램을 세그먼트로 구분하고, 각 세그먼트에 라이트 명령이 포함된 개수를 카운트하여 세그먼트 카운트를 획득하며, 획득된 세그먼트 카운트를 기반으로 프로그램 카운트를 계산한다. 그리고 계산된 프로그램 카운트와 세그먼트 카운트를 라이트 히스토리 테이블(1122)에 저장한다.The write history table 1122 divides a program into segments from the program information and segment information checked by the write request
마이그레이션 결정부(1123)는 라이트 히스토리 테이블(1122)에 저장된 프로그램 카운트로부터 스왑 후보 프로그램을 설정하고, 설정된 스왑 후보 프로그램에 포함된 세그먼트들의 세그먼트 카운트로부터 마이그레이션 대상 세그먼트를 선별한다.The
마이그레이션 요청부(1124)는 마이그레이션 대상 세그먼트에 대한 데이터 어드레스를 VM 컨트롤러(120)와 NVM 컨트롤러(130)로 전달하여, 마이그레이션 대상 세그먼트가 VM 모듈(200) 또는 NVM 모듈(300)로 마이그레이션 되도록 한다.The
마이그레이션 요청부(1124)는 VM 컨트롤러(120)와 NVM 컨트롤러(130)로부터 마이그레이션 된 이후의 데이터 어드레스를 인가받아 라이트 히스토리 테이블(1122)에 저장하고 리맵핑부(113)로 전달할 수 있다. 이때, 마이그레이션 요청부(1124)는 세그먼트에 포함된 데이터의 데이터 어드레스를 기반으로 마이그레이션되는 데이터의 단위 크기를 조절할 수 있다.The
도 9를 참조하면, 마이그레이션 요청부(1124)는 다수의 데이터 스코프(Scope0 ~ Scope5)를 포함할 수 있다. 여기서 데이터 스코프(Scope0 ~ Scope5)의 개수는 다양하게 조절될 수 있다. 여기서 데이터 스코프는 데이터가 시퀀셜하게 인가되는지 판별하기 위한 일종의 가상 카운터로서, 다수의 데이터 스코프(Scope0 ~ Scope5) 각각에서 구분되는 각 영역은 마이그레이션 수행시에 설정될 수 있는 데이터 마이그레이션 단위 크기를 설정하기 위한 카운트를 나타낸다.Referring to FIG. 9 , the
여기서 다수의 데이터 스코프(Scope0 ~ Scope5) 각각의 전체 크기는 마이그레이션 가능한 최대 데이터 마이그레이션 단위 크기(예를 들면 128Kbyte)를 나타내도록 설정될 수 있다. 일 예로 도 9에서 각 데이터 스코프(Scope0 ~ Scope5)의 각 영역은 최소 데이터 마이그레이션 단위 크기 4Kbye를 나타내도록 설정되어, 다수의 데이터 스코프(Scope0 ~ Scope5) 각각은 32개의 영역으로 구분될 수 있다. 그러나 마이그레이션 단위 크기는 일반적으로 2의 자승 순서로 변경되므로, 각 영역이 4Kbye로부터 2의 승수에 따라 증가하는 마이그레이션 단위 크기를 나타내도록 설정될 수도 있다. 즉 데이터 스코프의 각 영역이 순차적으로, 4, 8, 16, 32 …, 128Kbyte 순서를 나타내도록 설정될 수도 있다.Here, the total size of each of the plurality of data scopes (Scope0 to Scope5) may be set to indicate the maximum migrateable data migration unit size (eg, 128Kbyte). For example, in FIG. 9 , each area of each data scope (Scope0 to Scope5) is set to represent a minimum data migration unit size of 4Kbye, and each of the plurality of data scopes (Scope0 to Scope5) may be divided into 32 areas. However, since the migration unit size is generally changed in the order of a power of 2, each region may be set to represent a migration unit size that increases from 4Kbye to a power of two. That is, each area of the data scope is sequentially 4, 8, 16, 32 ... , it may be set to indicate the order of 128 Kbytes.
또한 마이그레이션 요청부(1124)는 현재 설정된 마이그레이션 단위를 기준으로 더 작은 값을 갖는 제1 기준 마이그레이션 단위와 더 큰 값을 가는 제2 기준 마이그레이션 단위를 설정할 수 있다. 즉 현재 마이그레이션 단위를 중심으로 제1 기준 마이그레이션 단위와 제2 기준 마이그레이션 단위 사이의 구간을 단위 유지 구간으로 설정하고, 제1 기준 마이그레이션 단위 미만 구간을 단위 감소 구간으로 설정하며, 제1 기준 마이그레이션 단위 이상의 구간을 단위 증가 구간으로 설정한다.Also, the
이후 마이그레이션 요청부(1124)는 순처적으로 접근하는 데이터 어드레스 사이의 어드레스 차이가 현재 설정된 기지정된 기준 어드레스 단위 이하이면, 다수의 데이터 스코프(Scope0 ~ Scope5) 중 하나의 데이터 스코프에서 각 영역을 순차적으로 채운다. 데이터 어드레스 차이가 계속해서 기준 어드레스 단위 이하이면 동일한 데이터 스코프에서 계속하여 영역을 채우는 반면, 데이터 어드레스 차이가 기준 어드레스 단위를 초과하게 되면, 다음 순서의 데이터 스코프에서 다시 각 영역을 순차적으로 채운다.Thereafter, if the address difference between sequentially accessed data addresses is less than or equal to the currently set preset reference address unit, the
마이그레이션 요청부(1124)는 상기한 과정을 반복 수행하며, 모든 데이터 스코프(Scope0 ~ Scope5)에 대해 각 영역이 채워지면, 다시 순환하여 데이터 스코프(Scope0 ~ Scope5)의 영역을 순차적으로 채울 수 있다.The
그리고 마이그레이션 요청부(1124)는 기지정된 구간 동안, 다수의 데이터 스코프(Scope0 ~ Scope5)에 채워진 영역의 크기를 계산하고, 다수의 데이터 스코프(Scope0 ~ Scope5) 중 절반 이상, 즉 과반수 이상의 데이터 스코프에 채워진 영역의 크기가 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중에서 포함되는 구간을 판별한다. 만일 단위 유지 구간에 포함되는 것으로 판별되면, 현재 설정된 마이그레이션 단위를 유지하는 반면, 단위 감소 구간 또는 단위 증가 구간에 포함되는 것으로 판별되면, 설정된 마이그레이션 단위를 기지정된 단위로 증가시키거나 감소시킨다.In addition, the
여기서 마이그레이션 요청부(1124)가 마이그레이션 단위를 가변하는 것은 마이그레이션할 세그먼트에서 연속하는 데이터의 크기에 대응하여 한번에 마이그레이션되는 데이터의 크기를 증가 또는 감소시켜, 마이그레이션 수행 횟수 자체를 줄일 뿐만 아니라, VM 모듈(200)과 NVM 모듈(300)에서 라이트 횟수를 저감시켜 라이트 속도를 향상시킬 뿐만 아니라 NVM 모듈(300)의 내구성을 향상시킬 수 있도록 하기 위함이다.Here, when the
도 10은 본 발명의 일 실시예에 따른 하이브리드 메모리 장치의 관리 방법을 나타내고, 도 11은 도 10의 마이그레이션 실행 단계를 상세하게 나타낸 도면이다.10 is a diagram illustrating a management method of a hybrid memory device according to an embodiment of the present invention, and FIG. 11 is a diagram illustrating the migration execution step of FIG. 10 in detail.
도 10을 참조하면, 하이브리드 메모리 장치의 관리 방법은 우선 현재 저장된 프로그램의 데이터에 대해 마이그레이션을 수행해야 하는지 여부를 판별한다(S10). 여기서 마이그레이션은 NVM 모듈(300)에 저장된 데이터와 VM 모듈(200)에 저장된 데이터를 상호 스왑하도록 수행될 수 있다. NVM 모듈(300)에 저장된 데이터를 VM 모듈(200)과 마이그레이션하는 경우는 NVM 모듈(300)에 저장된 프로그램이 리드된 이후, 리드된 프로그램에 대해 실행될 수 있다. 더불어 마이그레이션은 라이트 명령으로 새로운 프로그램이 하이브리드 메모리 장치에 인가되어 저장되는 경우에도 수행될 수 있다. 그리고 마이그레이션이 수행되어야 하는 것으로 판별되면, 하이브리드 메모리 장치는 기지정된 방식으로 마이그레이션을 실행한다(S20).Referring to FIG. 10 , in the method of managing a hybrid memory device, it is first determined whether migration should be performed on data of a currently stored program ( S10 ). Here, the migration may be performed to swap data stored in the
도 11을 참조하면, 마이그레이션을 실행하는 단계에서는 먼저 다수의 프로그램 각각을 구성하는 다수의 세그먼트 각각에서 라이트 명령의 개수를 카운트하여 세그먼트 카운트를 획득하고, 획득된 세그먼트 카운트를 합산하여 각 프로그램에 대한 프로그램 카운트를 계산한다(S21).Referring to FIG. 11 , in the migration step, first, the number of write commands in each of a plurality of segments constituting each of a plurality of programs is counted to obtain a segment count, and the obtained segment counts are summed to obtain a program for each program A count is calculated (S21).
그리고 계산된 프로그램 카운트가 기지정된 제1 문턱값 이상인 프로그램을 판별한다(S22). 만일 프로그램 카운트가 제1 문턱값 이상인 프로그램이 확인되면, 확인된 프로그램을 스왑 후보 프로그램으로 설정한다(S23). 이후 설정된 스왑 후보 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 제2 문턱값 이상인 세그먼트를 판별한다(S24). 세그먼트 카운트가 제2 문턱값 이상인 세그먼트가 판별되면, 판별된 세그먼트를 마이그레이션 대상 세그먼트로 선택한다(S25).Then, a program whose calculated program count is equal to or greater than a predetermined first threshold is determined (S22). If a program whose program count is equal to or greater than the first threshold is identified, the checked program is set as a swap candidate program (S23). Thereafter, among a plurality of segments of the set swap candidate program, a segment having a segment count equal to or greater than a second threshold is determined (S24). When a segment having a segment count equal to or greater than the second threshold is determined, the determined segment is selected as a migration target segment ( S25 ).
그리고 마이그레이션 대상 세그먼트에 대한 마이그레이션을 시작한다(S26). 마이그레이션이 시작되면, 세그먼트에서 순차적으로 전달되는 데이터의 어드레스 차이를 확인하여, 확인되는 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 동일한 데이터 스코프에 누적하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 누적하는 방식으로 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 개수의 데이터 스코프에 누적 기록한다. 그리고 기지정된 구간마다 다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 다수의 데이터 스코프 중 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 마이그레이션 단위를 변경시킨다(S27).Then, migration of the migration target segment is started (S26). When migration starts, the address difference of data sequentially transferred from the segment is checked, and if the identified address difference is less than or equal to a predetermined reference address unit, it is accumulated in the same data scope, and when it exceeds the reference address unit, it is accumulated in another data scope In this way, address changes of sequentially transferred data are accumulated and recorded in a predetermined number of data scopes. In addition, the size accumulated in multiple data scopes is checked for each predetermined section, and the size accumulated in more than half of the data scopes among the multiple data scopes is a preset unit maintenance section and unit reduction section based on the currently set migration unit, and The migration unit is changed by checking which section of the unit increase section corresponds to (S27).
다시 도 10을 참조하면, 리드 또는 라이트 명령과 같이 데이터 액세스 명령이 인가되는지 판별한다(S30). 만일 액세스 명령이 인가된 것으로 판별되면, 현재 VM 모듈(200)과 NVM 모듈(300) 사이에서 데이터 마이그레이션이 수행 중인지 판별한다(S40). 마이그레이션이 수행중인 것으로 판별되면, 현재 마이그레이션 중인 데이터가 스왑 버퍼(114)에 저장될 때까지 대기한 후, 마이그레이션을 일시 중지시킨다(S50).Referring back to FIG. 10 , it is determined whether a data access command such as a read or write command is applied ( S30 ). If it is determined that the access command is approved, it is determined whether data migration is currently being performed between the
그리고 액세스 명령이 인가된 데이터가 스왑 버퍼(114)에 저장되어 있는지 판별한다(S60). 데이터가 스왑 버퍼(114)에 저장된 것으로 판별되면, 스왑 버퍼(114)에 대해 액세스를 수행한다(S70). 즉 데이터를 리드 또는 라이트 한다. 그리고 마이그레이션을 계속 수행한다(S80).Then, it is determined whether the data to which the access command is applied is stored in the swap buffer 114 (S60). When it is determined that data is stored in the
그러나 스왑 버퍼(114)에 저장되지 않은 것으로 판별되면, VM 컨트롤러(120) 또는 NVM 컨트롤러(130)를 통해 VM 모듈(200) 또는 NVM 모듈(300)에 저장된 데이터에 액세스를 수행한다(S90). 또한 현재 마이그레이션이 수행중이지 않은 경우에도, VM 컨트롤러(120) 또는 NVM 컨트롤러(130)를 통해 VM 모듈(200) 또는 NVM 모듈(300)에 저장된 데이터에 액세스를 수행한다(S90).However, if it is determined that it is not stored in the
본 발명에 따른 방법은 컴퓨터에서 실행시키기 위한 매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다. 여기서 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 가용 매체일 수 있고, 또한 컴퓨터 저장 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하며, ROM(판독 전용 메모리), RAM(랜덤 액세스 메모리), CD(컴팩트 디스크)-ROM, DVD(디지털 비디오 디스크)-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등을 포함할 수 있다.The method according to the present invention may be implemented as a computer program stored in a medium for execution by a computer. Here, the computer-readable medium may be any available medium that can be accessed by a computer, and may include all computer storage media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data, and read dedicated memory), RAM (Random Access Memory), CD (Compact Disk)-ROM, DVD (Digital Video Disk)-ROM, magnetic tape, floppy disk, optical data storage, and the like.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다.Although the present invention has been described with reference to the embodiment shown in the drawings, which is only exemplary, those skilled in the art will understand that various modifications and equivalent other embodiments are possible therefrom.
따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.Accordingly, the true technical protection scope of the present invention should be defined by the technical spirit of the appended claims.
100: 메모리 컨트롤 모듈
200: VM 모듈
300: NVM 모듈
110: 메모리 매니저
120: VM 컨트롤러
121: VM 버퍼
130: NVM 컨트롤러
131: NVM 버퍼
111: 명령 분석부
112: 재할당부
113: 리맵핑부
114: 스왑 버퍼
1121: 라이트 요청 정보 분석부
1122: 라이트 히스토리 테이블
1123: 마이그레이션 결정부
1124: 마이그레이션 요청부100: memory control module 200: VM module
300: NVM module 110: memory manager
120: VM Controller 121: VM Buffer
130: NVM Controller 131: NVM Buffer
111: command analysis unit 112: reassignment unit
113: remapping unit 114: swap buffer
1121: light request information analysis unit 1122: light history table
1123: migration decision unit 1124: migration request unit
Claims (17)
다수의 비휘발성 메모리 셀을 포함하는 NVM 모듈; 및
상기 NVM 모듈에 저장된 프로그램을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 프로그램에 대한 라이트 카운트인 프로그램 카운트를 계산하고, 상기 프로그램 카운트가 기지정된 제1 문턱값 이상인 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 상기 VM 모듈에 저장된 데이터와 마이그레이션하고, 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑하는 메모리 컨트롤 모듈을 포함하는 하이브리드 메모리 장치.a VM module including a plurality of volatile memory cells;
an NVM module including a plurality of non-volatile memory cells; and
The program stored in the NVM module is divided into a predetermined segment unit, a segment count that is the number of write commands included in each segment is acquired and summed to calculate a program count that is a write count for the program, and the program count is A memory control module that selects a segment whose segment count is equal to or greater than a predetermined second threshold value among a plurality of segments of the program that is equal to or greater than a specified first threshold, migrates it with data stored in the VM module, and remaps the data address of the migrated segment; A hybrid memory device comprising
상기 VM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 VM 컨트롤러;
상기 NVM 모듈에 저장되는 데이터에 대한 액세스를 제어하는 NVM 컨트롤러; 및
상기 NVM 모듈에 저장된 프로그램의 세그먼트를 선택적으로 상기 VM 모듈에 저장된 데이터와 마이그레이션시키고, 마이그레이션된 데이터에 대한 액세스 명령이 인가되면, 리맵핑된 데이터 어드레스에 대한 액세스 명령으로 수정하는 메모리 매니저를 포함하는 하이브리드 메모리 장치.The method of claim 1 , wherein the memory control module comprises:
a VM controller for controlling access to data stored in the VM module;
an NVM controller for controlling access to data stored in the NVM module; and
A hybrid comprising a memory manager that selectively migrates a segment of a program stored in the NVM module with data stored in the VM module, and modifies it with an access command to a remapped data address when an access command for the migrated data is applied memory device.
리드 또는 라이트 명령을 포함하는 액세스 명령이 인가되면, 인가된 액세스 명령을 분석하여, 리드 또는 라이트 명령과 프로그램 정보와 데이터 어드레스를 포함하는 라이트 요청 정보로 구분하는 명령 분석부;
상기 라이트 요청 정보를 인가받아 인가된 프로그램을 다수의 세그먼트로 구분하고, 세그먼트 카운트와 프로그램 카운트를 획득하여 라이트 히스토리 테이블에 저장하며, 저장된 라이트 히스토리 테이블에 기초하여 상기 NVM 모듈에 저장된 프로그램의 세그먼트를 선택적으로 상기 VM 모듈의 대응하는 데이터와 마이그레이션시키고, 마이그레이션되어 변경된 데이터 어드레스를 획득하는 재할당부;
세그먼트의 데이터가 저장된 데이터 어드레스와 변경된 데이터 어드레스를 리맵핑하여 저장하고, 상기 리드 또는 라이트 명령이 인가되면, 인가된 리드 또는 라이트 명령에서 지정되는 데이터 어드레스를 리맵핑된 데이터 어드레스로 수정하여 상기 VM 컨트롤러와 상기 NVM 컨트롤러로 출력하는 리맵핑부; 및
상기 NVM 모듈과 상기 VM 모듈 사이에서 마이그레이션되는 데이터를 인가받아 임시 저장하여 상대 모듈로 전달하는 스왑 버퍼를 포함하는 하이브리드 메모리 장치.The method of claim 2 , wherein the memory manager
a command analysis unit that, when an access command including a read or write command is applied, analyzes the applied access command, and divides the read or write command into write request information including program information and data address;
After receiving the write request information, the approved program is divided into a plurality of segments, the segment count and the program count are obtained and stored in the write history table, and the segment of the program stored in the NVM module is selected based on the stored write history table a reassignment unit for migrating the data corresponding to the VM module and acquiring the migrated and changed data address;
The data address in which segment data is stored and the changed data address are remapped and stored, and when the read or write command is applied, the data address specified in the applied read or write command is modified to the remapped data address and the VM controller and a remapping unit outputting to the NVM controller; and
and a swap buffer for receiving data migrated between the NVM module and the VM module, temporarily storing the data, and transferring the data to a counterpart module.
상기 라이트 히스토리 테이블을 분석하여, 프로그램 카운트가 상기 제1 문턱값 이상인 프로그램을 스왑 후보 프로그램으로 설정하고, 설정된 스왑 후보 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 상기 제2 문턱값 이상인 세그먼트를 마이그레이션이 수행되는 마이그레이션 대상 세그먼트로 선택하는 하이브리드 메모리 장치.The method of claim 3, wherein the reallocation unit
By analyzing the write history table, a program having a program count equal to or greater than the first threshold value is set as a swap candidate program, and a segment having a segment count equal to or greater than the second threshold value among a plurality of segments of the set swap candidate program is migrated. A hybrid memory device that you select as a migration target segment.
상기 마이그레이션 대상 세그먼트에 대한 데이터 어드레스를 상기 NVM 컨트롤러로 전달하여, 상기 NVM 컨트롤러의 제어에 따라 상기 NVM 모듈에 저장된 상기 마이그레이션 대상 세그먼트가 상기 스왑 버퍼와 상기 VM 컨트롤러를 통해 상기 VM 모듈에 저장되도록 하는 하이브리드 메모리 장치.5. The method of claim 4, wherein the reallocation unit
A hybrid that transmits a data address for the migration target segment to the NVM controller so that the migration target segment stored in the NVM module is stored in the VM module through the swap buffer and the VM controller under the control of the NVM controller memory device.
마이그레이션되는 세그먼트의 데이터 어드레스를 확인하여, 순차적으로 마이그레이션되는 데이터의 데이터 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 기지정된 개수의 데이터 스코프 중 동일한 데이터 스코프에 누적카운트하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 다시 누적 카운트하여 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 다수의 데이터 스코프에 누적 기록하며, 다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 확인된 구간에 따라 마이그레이션되는 데이터의 마이그레이션 단위 크기를 조절하는 하이브리드 메모리 장치.The method of claim 5, wherein the reallocation unit
Check the data address of the migrated segment. If the data address difference of sequentially migrated data is less than or equal to a predetermined reference address unit, the accumulated count is counted in the same data scope among the predetermined number of data scopes. If the reference address unit is exceeded, another Accumulated counting again in the data scope, the address change of sequentially transmitted data is accumulated and recorded in a number of predefined data scopes, the size accumulated and recorded in the plurality of data scopes is checked, and the size accumulated and recorded in more than half of the data scopes is A hybrid memory device that adjusts the migration unit size of migrated data according to the confirmed section by checking which section corresponds to a predetermined unit maintenance section, a unit reduction section, and a unit increase section based on the currently set migration unit.
마이그레이션 실행 중 액세스 명령이 인가되면, 마이그레이션되는 세그먼트의 데이터 중 스왑 버퍼로 전송되는 데이터의 전송 완료 후, 마이그레이션을 일시 중지시키고, 액세스 명령에 대응하는 동작을 수행하는 하이브리드 메모리 장치.4. The method of claim 3, wherein the memory manager
A hybrid memory device that, when an access command is applied during migration, pauses migration and performs an operation corresponding to the access command after the transfer of data transferred to the swap buffer among data of the migrated segment is completed.
상기 액세스 명령에 의해 지정되는 데이터가 상기 스왑 버퍼에 저장되어 있는지 판별하고, 상기 스왑 버퍼에 저장된 것으로 판별되면, 상기 스왑 버퍼에 저장된 데이터에 액세스를 수행하며, 상기 스왑 버퍼에 저장되지 않은 것으로 판별되면, 상기 VM 컨트롤러 또는 상기 NVM 컨트롤러를 통해 상기 VM 모듈 또는 상기 NVM 모듈에 저장된 데이터에 액세스를 수행하는 하이브리드 메모리 장치.The method of claim 7, wherein the memory manager
It is determined whether the data specified by the access command is stored in the swap buffer, and when it is determined that the data is stored in the swap buffer, access is performed to the data stored in the swap buffer, and when it is determined that the data is not stored in the swap buffer , a hybrid memory device that accesses data stored in the VM module or the NVM module through the VM controller or the NVM controller.
액세스가 수행되면, 일시 중지된 마이그레이션을 계속 수행하는 하이브리드 메모리 장치.The method of claim 7, wherein the memory manager
A hybrid memory device that continues a paused migration once an access is made.
상기 NVM 모듈에 저장된 프로그램을 기지정된 세그먼트 단위로 구분하고, 각 세그먼트에 포함된 라이트 명령의 개수인 세그먼트 카운트를 획득하고 합산하여, 프로그램에 대한 라이트 카운트인 프로그램 카운트를 계산하는 단계;
상기 프로그램 카운트가 기지정된 제1 문턱값 이상인 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 기지정된 제2 문턱값 이상인 세그먼트를 선택하여 상기 VM 모듈에 저장된 데이터와 마이그레이션시키는 단계; 및
마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑하는 단계를 포함하는 하이브리드 메모리 장치의 관리 방법.A method for managing a hybrid memory device comprising: a VM module including a plurality of volatile memory cells; an NVM module including a plurality of non-volatile memory cells; and a swap buffer, the method comprising:
dividing the program stored in the NVM module into a predetermined segment unit, acquiring a segment count that is the number of write commands included in each segment, and summing them to calculate a program count that is a write count for the program;
selecting a segment having a segment count equal to or greater than a second threshold value from among a plurality of segments of the program in which the program count is equal to or greater than a predetermined first threshold value, and migrating the segment with data stored in the VM module; and
A method for managing a hybrid memory device, comprising remapping data addresses of migrated segments.
리드 또는 라이트 명령을 포함하는 액세스 명령이 인가되면, 인가된 액세스 명령을 분석하여, 리드 또는 라이트 명령과 프로그램 정보와 데이터 어드레스를 포함하는 라이트 요청 정보로 구분하는 단계; 및
상기 라이트 요청 정보를 인가받아 인가된 프로그램을 다수의 세그먼트로 구분하고, 세그먼트 카운트와 프로그램 카운트를 획득하여 라이트 히스토리 테이블에 저장하는 단계를 포함하는 하이브리드 메모리 장치의 관리 방법.11. The method of claim 10, wherein calculating the program count comprises:
when an access command including a read or write command is applied, analyzing the applied access command and dividing the read or write command into write request information including program information and data address; and
and dividing the approved program into a plurality of segments by receiving the write request information, and storing the segment count and the program count in a write history table.
상기 라이트 히스토리 테이블을 분석하여, 프로그램 카운트가 상기 제1 문턱값 이상인 프로그램을 스왑 후보 프로그램으로 설정하는 단계; 및
설정된 스왑 후보 프로그램의 다수의 세그먼트 중 세그먼트 카운트가 상기 제2 문턱값 이상인 세그먼트를 마이그레이션이 수행되는 마이그레이션 대상 세그먼트로 선택하여 선택된 세그먼트를 상기 VM 모듈의 대응하는 데이터와 마이그레이션하는 단계를 포함하는 하이브리드 메모리 장치의 관리 방법.The method of claim 11, wherein the migrating
analyzing the write history table and setting a program having a program count equal to or greater than the first threshold value as a swap candidate program; and
A hybrid memory device comprising: selecting a segment having a segment count equal to or greater than the second threshold value among a plurality of segments of a set swap candidate program as a migration target segment to be migrated and migrating the selected segment with corresponding data of the VM module management method.
마이그레이션되어 변경된 데이터 어드레스를 획득하는 단계; 및
세그먼트의 데이터가 저장된 데이터 어드레스와 변경된 데이터 어드레스를 리맵핑하여 저장하는 단계를 포함하는 하이브리드 메모리 장치의 관리 방법.The method of claim 12, wherein the remapping comprises:
acquiring a migrated and changed data address; and
A method for managing a hybrid memory device, comprising the step of remapping and storing a data address in which segment data is stored and the changed data address.
마이그레이션된 데이터에 대한 액세스 명령이 인가되면, 리맵핑된 데이터 어드레스에 대한 액세스 명령으로 수정하는 단계를 더 포함하는 하이브리드 메모리 장치의 관리 방법.The method of claim 13 , wherein the managing method of the hybrid memory device comprises:
When an access command for migrated data is applied, the method of managing a hybrid memory device further comprising the step of modifying the remapped data address with an access command.
상기 마이그레이션 대상 세그먼트에 대한 데이터 어드레스에 따라 상기 NVM 모듈에 저장된 상기 마이그레이션 대상 세그먼트에 액세스하고, 액세스된 상기 마이그레이션 대상 세그먼트가 상기 스왑 버퍼를 통해 상기 VM 모듈에 저장되도록 하는 하이브리드 메모리 장치의 관리 방법.15. The method of claim 14, wherein the migrating step
A method for managing a hybrid memory device, comprising accessing the migration target segment stored in the NVM module according to a data address for the migration target segment, and storing the accessed migration target segment in the VM module through the swap buffer.
마이그레이션되는 세그먼트의 데이터 어드레스를 확인하여, 순차적으로 마이그레이션되는 데이터의 데이터 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 기지정된 개수의 데이터 스코프 중 동일한 데이터 스코프에 누적카운트하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 다시 누적 카운트하여 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 다수의 데이터 스코프에 누적 기록하는 단계; 및
다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 확인된 구간에 따라 마이그레이션되는 데이터의 마이그레이션 단위 크기를 조절하는 단계를 더 포함하는 하이브리드 메모리 장치의 관리 방법.16. The method of claim 15, wherein the migrating step
Check the data address of the migrated segment. If the data address difference of sequentially migrated data is less than or equal to a predetermined reference address unit, the accumulated count is counted in the same data scope among the predetermined number of data scopes. If the reference address unit is exceeded, another accumulatively counting again in the data scope and accumulating and recording address changes of sequentially transferred data in a plurality of predetermined data scopes; and
Check the accumulated size recorded in multiple data scopes, and check whether the accumulated recorded size in more than half of the data scopes corresponds to the preset unit maintenance section, unit decrease section, and unit increase section based on the currently set migration unit. The management method of a hybrid memory device further comprising the step of adjusting the size of the migration unit of the data to be migrated according to the identified section.
마이그레이션 실행 중 액세스 명령이 인가되면, 마이그레이션되는 세그먼트의 데이터 중 스왑 버퍼로 전송되는 데이터의 전송 완료 후, 마이그레이션을 일시 중지시키고, 액세스 명령에 대응하는 동작을 수행하는 단계;
상기 액세스 명령에 의해 지정되는 데이터가 상기 스왑 버퍼에 저장되어 있는지 판별하는 단계;
상기 스왑 버퍼에 저장된 것으로 판별되면, 상기 스왑 버퍼에 저장된 데이터에 액세스를 수행하는 단계;
상기 스왑 버퍼에 저장되지 않은 것으로 판별되면, 상기 VM 모듈 또는 상기 NVM 모듈에 저장된 데이터에 액세스를 수행하는 단계; 및
액세스가 수행되면, 일시 중지된 마이그레이션을 계속 수행하는 단계를 더 포함하는 하이브리드 메모리 장치의 관리 방법.The method of claim 16 , wherein the managing method of the hybrid memory device comprises:
when an access command is applied during migration execution, after completion of transmission of data transmitted to a swap buffer among data of a segment to be migrated, stopping migration and performing an operation corresponding to the access command;
determining whether the data specified by the access command is stored in the swap buffer;
if it is determined that the swap buffer is stored, accessing the data stored in the swap buffer;
performing access to data stored in the VM module or the NVM module if it is determined that the swap buffer is not stored; and
When the access is performed, the method of managing a hybrid memory device further comprising the step of continuing the paused migration.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200182117A KR102482191B1 (en) | 2020-12-23 | 2020-12-23 | Hybrid memory device and management method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200182117A KR102482191B1 (en) | 2020-12-23 | 2020-12-23 | Hybrid memory device and management method thereof |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220091023A true KR20220091023A (en) | 2022-06-30 |
KR102482191B1 KR102482191B1 (en) | 2022-12-27 |
Family
ID=82215311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200182117A KR102482191B1 (en) | 2020-12-23 | 2020-12-23 | Hybrid memory device and management method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102482191B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056087A (en) * | 2023-10-11 | 2023-11-14 | 深圳云天畅想信息科技有限公司 | Cloud data center hybrid memory optimization method, computer device and storage medium |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110106058A (en) * | 2010-03-22 | 2011-09-28 | 한국과학기술원 | A system, method and comuputer readable media for managing main memory |
KR20160016896A (en) * | 2013-05-31 | 2016-02-15 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Memory system, memory access request processing method and computer system |
KR101713051B1 (en) | 2010-11-29 | 2017-03-07 | 삼성전자주식회사 | Hybrid Memory System and Management Method there-of |
KR20170036123A (en) * | 2013-03-15 | 2017-03-31 | 넷리스트 인코포레이티드 | Memory system with configurable error thresholds and failure analysis capability |
-
2020
- 2020-12-23 KR KR1020200182117A patent/KR102482191B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110106058A (en) * | 2010-03-22 | 2011-09-28 | 한국과학기술원 | A system, method and comuputer readable media for managing main memory |
KR101713051B1 (en) | 2010-11-29 | 2017-03-07 | 삼성전자주식회사 | Hybrid Memory System and Management Method there-of |
KR20170036123A (en) * | 2013-03-15 | 2017-03-31 | 넷리스트 인코포레이티드 | Memory system with configurable error thresholds and failure analysis capability |
KR20160016896A (en) * | 2013-05-31 | 2016-02-15 | 후아웨이 테크놀러지 컴퍼니 리미티드 | Memory system, memory access request processing method and computer system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056087A (en) * | 2023-10-11 | 2023-11-14 | 深圳云天畅想信息科技有限公司 | Cloud data center hybrid memory optimization method, computer device and storage medium |
CN117056087B (en) * | 2023-10-11 | 2024-01-26 | 深圳云天畅想信息科技有限公司 | Cloud data center hybrid memory optimization method, computer device and storage medium |
Also Published As
Publication number | Publication date |
---|---|
KR102482191B1 (en) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8225044B2 (en) | Storage system which utilizes two kinds of memory devices as its cache memory and method of controlling the storage system | |
JP3962368B2 (en) | System and method for dynamically allocating shared resources | |
JP3753766B2 (en) | Method for securing storage space of hierarchical data storage system | |
US9405485B2 (en) | Method and apparatus for writing data to a flash memory | |
US6857047B2 (en) | Memory compression for computer systems | |
US9317892B2 (en) | Method and device to augment volatile memory in a graphics subsystem with non-volatile memory | |
EP0727745A1 (en) | Memory control apparatus and its control method | |
CN113568562A (en) | Storage system, memory management method and management node | |
US20170115932A1 (en) | Memory controller, data storage device, and memory control method | |
KR20200110547A (en) | Storage device and computing device including storage device | |
US10838628B2 (en) | Storage system and control method of maintaining reliability of a mounted flash storage | |
US20160283387A1 (en) | Dynamic caching method and system for data storage system | |
KR20200057311A (en) | Storage device throttling amount of communicated data depending on suspension frequency of operation | |
US20120017052A1 (en) | Information Handling System Universal Memory Wear Leveling System and Method | |
CN101957729B (en) | Logical block transformation method and method and device compatible with reading and writing of user based on same | |
KR102482191B1 (en) | Hybrid memory device and management method thereof | |
US11150809B2 (en) | Memory controller and storage device including the same | |
CN107506139A (en) | A kind of write request towards phase transition storage optimizes device | |
KR102088944B1 (en) | Memory controller and storage device including the same | |
KR102514268B1 (en) | Method and apparatus for switching migration policy | |
CN105612505A (en) | Method and apparatus for scheduling CPU | |
JP6254986B2 (en) | Information processing apparatus, access controller, and information processing method | |
CN114185492A (en) | Solid state disk garbage recycling algorithm based on reinforcement learning | |
CN108897618B (en) | Resource allocation method based on task perception under heterogeneous memory architecture | |
KR20170019729A (en) | Electronic device for compressing data and method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |