KR20220091023A - Hybrid memory device and management method thereof - Google Patents

Hybrid memory device and management method thereof Download PDF

Info

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
Application number
KR1020200182117A
Other languages
Korean (ko)
Other versions
KR102482191B1 (en
Inventor
정의영
정태양
최승헌
한상우
Original Assignee
연세대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 연세대학교 산학협력단 filed Critical 연세대학교 산학협력단
Priority to KR1020200182117A priority Critical patent/KR102482191B1/en
Publication of KR20220091023A publication Critical patent/KR20220091023A/en
Application granted granted Critical
Publication of KR102482191B1 publication Critical patent/KR102482191B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

하이브리드 메모리 장치 및 이의 관리 방법{Hybrid memory device and management method thereof}Hybrid memory device and management method thereof

본 발명은 하이브리드 메모리 장치 및 이의 관리 방법에 관한 것으로, 라이트 특성을 고려한 하이브리드 메모리 장치 및 이의 관리 방법에 관한 것이다.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.

한국 등록 특허 제10-1713051호 (2017.02.28 등록)Korean Patent Registration No. 10-1713051 (Registered on February 28, 2017)

본 발명의 목적은 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 memory control module 100 , a VM module 200 , and an NVM module 300 .

메모리 컨트롤 모듈(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 memory control module 100 acquires data corresponding to the read command among data stored in the VM module 200 or the NVM module 300 to obtain an external device. output as And when a write command and data are applied from an external device, the data applied along with the write command is stored in the VM module 200 or the NVM module 300 .

또한 본 실시예에서 메모리 컨트롤 모듈(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 memory control module 100 manages data stored in the VM module 200 and the NVM module 300 . The memory control module 100 may perform migration for exchanging data between the NVM module 300 and the VM module 200 . The memory control module 100 selects data stored in the NVM module 300 to migrate to the VM module 200 and swaps corresponding data stored in the VM module 200 to the NVM module 300 to migrate can do it In the present embodiment, the memory control module 100 may analyze data stored in the NVM module 300 to select and migrate data to be stored in the VM module 200 based on the number of write commands.

메모리 컨트롤 모듈(100)은 메모리 매니저(110), VM 컨트롤러(120) 및 NVM 컨트롤러(130)를 포함할 수 있다.The memory control module 100 may include a memory manager 110 , a VM controller 120 , and an NVM controller 130 .

메모리 매니저(110)는 VM 모듈(200) 또는 NVM 모듈(300) 중 외부에서 인가되는 리드 명령에 대응하는 데이터가 저장된 모듈을 판별하고, 데이터가 VM 모듈(200)에 저장된 것으로 판별되면, VM 컨트롤러(120)로 리드 명령을 전달하며, 데이터가 NVM 모듈(300)에 저장된 것으로 판별되면, NVM 컨트롤러(130)로 리드 명령을 전달한다. 그리고 VM 컨트롤러(120) 또는 VM 컨트롤러(120)로부터 대응하는 데이터를 인가받아 외부로 출력한다.The memory manager 110 determines a module in which data corresponding to a read command applied from the outside is stored among the VM module 200 or the NVM module 300 , and when it is determined that the data is stored in the VM module 200 , the VM controller A read command is transmitted to 120 , and when it is determined that data is stored in the NVM module 300 , a read command is transmitted to the NVM controller 130 . Then, the VM controller 120 or the VM controller 120 receives the corresponding data and outputs it to the outside.

또한 메모리 매니저(110)는 라이트 명령에 따라 VM 컨트롤러(120) 또는 VM 컨트롤러(120)로 저장될 데이터와 라이트 명령을 전달하여, VM 모듈(200) 또는 NVM 모듈(300)에 데이터가 저장되도록 한다. 여기서 라이트 명령과 함께 인가되는 데이터는 기본적으로 NVM 모듈(300)에 저장되지만, 라이트 되는 데이터가 NVM 모듈(300)에서 VM 모듈(200)으로 이전에 마이그레이션되어 저장되어 있는 경우, VM 모듈(200)에 기저장된 데이터를 라이트되는 데이터로 오버라이트(overwrite)하여 갱신할 수 있다.Also, the memory manager 110 transmits the write command and data to be stored to the VM controller 120 or the VM controller 120 according to the write command, so that the data is stored in the VM module 200 or the NVM module 300 . . Here, the data applied along with the write command is basically stored in the NVM module 300, but if the data to be written is previously migrated from the NVM module 300 to the VM module 200 and stored, the VM module 200 It can be updated by overwriting the data stored in the .

그리고 본 실시예에서 메모리 매니저(110)는 NVM 모듈(300)에 저장된 데이터 중 VM 모듈(200)로 마이그레션 되어야하는 데이터를 선별하고, 선별 결과를 VM 컨트롤러(120)와 NVM 컨트롤러(130)로 전달하여, NVM 모듈(300)과 VM 모듈(200) 각각이 선별된 데이터와 대응하는 데이터를 상호 스왑하도록 한다.And in this embodiment, the memory manager 110 selects data to be migrated to the VM module 200 from among the data stored in the NVM module 300 , and displays the selection result to the VM controller 120 and the NVM controller 130 . to each of the NVM module 300 and the VM module 200 to mutually swap selected data and corresponding data.

메모리 매니저(110)는 VM 모듈(200)과 NVM 모듈(300) 사이에서 데이터 마이그레이션이 수행될 수 있도록 VM 컨트롤러(120)와 NVM 컨트롤러(130)에서 전달되는 데이터를 임시로 저장하는 스왑 버퍼(미도시)를 포함할 수 있다. 메모리 매니저(110)가 마이그레이션을 수행하는 상세한 동작에 대해서는 후술하도록 한다.The memory manager 110 is a swap buffer (not shown) for temporarily storing data transferred from the VM controller 120 and the NVM controller 130 so that data migration can be performed between the VM module 200 and the NVM module 300 . city) may be included. A detailed operation of performing migration by the memory manager 110 will be described later.

VM 컨트롤러(120)는 메모리 매니저(110)의 관리에 따라 VM 모듈(200)을 제어한다. VM 컨트롤러(120)는 메모리 매니저(110)를 통해 인가되는 리드 명령에 응답하여, VM 모듈(200)에 저장된 데이터를 탐색하여 획득하고, 획득된 데이터를 메모리 매니저(110)로 전달한다. 그리고 라이트 명령에 응답하여, VM 모듈(200)의 기지정된 메모리 어드레스에 인가된 데이터를 저장한다. 이때, VM 컨트롤러(120)는 VM 모듈(200)에서 획득되는 데이터 또는 메모리 매니저(110)에서 전달되어 VM 모듈(200)에 저장되어야 하는 데이터를 임시 저장하는 버퍼(121)를 포함할 수 있다.The VM controller 120 controls the VM module 200 according to the management of the memory manager 110 . The VM controller 120 searches for and acquires data stored in the VM module 200 in response to a read command applied through the memory manager 110 , and transmits the acquired data to the memory manager 110 . And in response to the write command, the applied data is stored in a predetermined memory address of the VM module 200 . In this case, the VM controller 120 may include a buffer 121 for temporarily storing data obtained from the VM module 200 or data transmitted from the memory manager 110 to be stored in the VM module 200 .

또한 VM 컨트롤러(120)는 기지정된 주기로 VM 모듈(200)에 저장된 데이터를 리플레시하여, VM 모듈(200)에 저장된 데이터가 소실되지 않도록 하며, 메모리 매니저(110)의 관리하에 하이브리드 메모리 장치로 인가되는 전원이 차단되기 이전에 VM 모듈(200)에 저장된 데이터를 인가받아 메모리 매니저(110)의 스왑 버퍼를 통해 NVM 컨트롤러(130)로 전달할 수 있다.In addition, the VM controller 120 refreshes the data stored in the VM module 200 at a predetermined cycle to prevent the data stored in the VM module 200 from being lost, and is applied as a hybrid memory device under the management of the memory manager 110 . Data stored in the VM module 200 may be received before the power is turned off and transferred to the NVM controller 130 through the swap buffer of the memory manager 110 .

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 controller 130 controls the NVM module 300 according to the management of the memory manager 110 . Similar to the VM controller 120 , the NVM controller 130 searches for and acquires data stored in the NVM module 300 in response to a read command applied through the memory manager 110 , and transfers the acquired data to the memory manager 110 . ), and stores data applied to a predetermined memory address of the NVM module 300 in response to a write command. In addition, the NVM controller 130 may also include the NVM buffer 131 to temporarily store data acquired from the NVM module 300 or data transmitted from the memory manager 110 to be stored in the NVM module 300 .

NVM 컨트롤러(130)는 VM 컨트롤러(120)와 달리 NVM 모듈(300)에 저장된 데이터에 대해 리플레시 동작을 수행할 필요가 없다. 그러나 NVM 컨트롤러(130)는 메모리 매니저(110)에 의해 선별되는 NVM 모듈(300)에 저장된 데이터를 인가받아, 스왑 버퍼를 통해 VM 컨트롤러(120)로 전달할 수 있다.Unlike the VM controller 120 , the NVM controller 130 does not need to perform a refresh operation on data stored in the NVM module 300 . However, the NVM controller 130 may receive data stored in the NVM module 300 selected by the memory manager 110 and transmit it to the VM controller 120 through the swap buffer.

VM 모듈(200)은 다수의 VM 셀을 포함하여 전원이 인가되는 동안 데이터를 저장한다. VM 모듈(200)은 메모리 컨트롤 모듈(100)의 VM 컨트롤러(120)의 제어에 따라 데이터를 인가받아 저장하거나 리플레시하고, 저장된 데이터를 VM 컨트롤러(120)로 전달한다.The VM module 200 includes a plurality of VM cells and stores data while power is applied. The VM module 200 receives and stores or refreshes data under the control of the VM controller 120 of the memory control module 100 , and transmits the stored data to the VM controller 120 .

NVM 모듈(300)은 다수의 NVM 셀을 포함하여 전원 공급 여부에 무관하게 항시 데이터를 저장할 수 있다. NVM 모듈(300)은 메모리 컨트롤 모듈(100)의 NVM 컨트롤러(130)의 제어에 따라 데이터를 인가받아 저장하고, 저장된 데이터를 NVM 컨트롤러(130)로 전달한다.The NVM module 300 may include a plurality of NVM cells to always store data regardless of whether power is supplied or not. The NVM module 300 receives and stores data under the control of the NVM controller 130 of the memory control module 100 , and transmits the stored data to the NVM controller 130 .

본 실시예에서 메모리 컨트롤 모듈(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 memory control module 100 classifies and manages data for a program (or application) in segments. Here, a segment represents a data unit selected for migration. That is, as shown in FIG. 1 , a plurality of programs (Program 0 to Program 3) each consisting of a plurality of segments (Segment 0 to Segment 3) may be stored in the NVM module 300 , and the memory control module 100 ) may be migrated to the VM module 200 by selecting segments from each of a plurality of programs (Program 0 to Program 3) stored in the NVM module 300 . In FIG. 1 , as an example, in the NVM module 300 , one segment ((segment 3), (segment 0)) in the 0th and first programs (Program 0, Program 1) and 2 in the second program (Program 2) respectively It is assumed that the segment 1 and segment 2 are selected and migrated to the VM module 200 .

도 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 memory manager 110 of the memory control module 100 shown in FIG. 1 counts the number of write commands included in each segment of the programs (Program A and Program C) stored in the NVM module 300 . At this time, when a program to be written (Program A, Program C) is applied from the outside, the memory manager 110 stores the applied program in the NVM module 300 while counting the number of write commands in units of each segment, and the program is If stored, the program count may be obtained by summing the counted segment counts. Here, the number of write commands counted for each segment is referred to as a segment count. Then, the accumulated sum of segment counts for a plurality of segments included in each program data (Program A, Program C) is calculated as the program count.

도 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 NVM module 300 , that is, when a change occurs in a segment, the memory manager 110 may update the segment count according to the changed segment and reflect this in the program count.

도 3은 NVM 모듈(300)의 초기 상태를 나타내며, 이에 실질적으로 프로그램(Program A ~ Program C)이 NVM 모듈(300)에 저장되지 않은 상태로서, 프로그램 카운트가 모두 0인 상태를 나타낸다.FIG. 3 shows an initial state of the NVM module 300 , in which programs (Program A to Program C) are not substantially stored in the NVM module 300 , indicating a state in which all program counts are 0.

도 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 NVM module 300, the memory manager 110 checks the number of writes for each of a plurality of segments for each program (Program A to Program C). A count is acquired, and a program count is calculated based on the acquired segment count. Here, it is assumed that the program counts for each program (Program A to Program C) are 127, 79, and 211, respectively.

프로그램 카운트가 계산되면, 메모리 매니저(110)는 계산된 프로그램 카운트 중 기지정된 제1 문턱값(여기서는 일 예로 100) 이상인 프로그램 카운트를 갖는 프로그램을 탐색한다. 프로그램 카운트가 제1 문턱값 이상인 프로그램(Program A, Program C)이 탐색되면, 탐색된 프로그램(Program A, Program C)을 스왑 후보 프로그램으로 선별한다.When the program count is calculated, the memory manager 110 searches for a program having a program count equal to or greater than a predetermined first threshold (here, 100 for example) among the calculated program counts. When a program (Program A, Program C) whose program count is equal to or greater than the first threshold is searched for, the searched programs (Program A, Program C) are selected as a swap candidate program.

그리고 선별된 스왑 후보 프로그램(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 memory manager 110 determines the unselected program (Program B). Since the segment count is not considered, it is not selected as a migration target segment.

그리고 메모리 매니저(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 memory manager 110 performs the migration between the VM controller 120 and the NVM controller 130 so that the segment selected in the NVM module 300 is migrated to the VM module 200 as shown in FIG. 6 . ) to migrate the migration target segment selected by the NVM module 300 to the VM module 200 . At this time, the migration target segment selected by the NVM module 300 is transferred to the swap buffer of the memory manager 110 through the buffer 131 of the NVM controller 130, and the migration target segment transferred to the swap buffer is transferred to the VM controller ( It may be applied to and stored in the VM module 200 through the buffer 121 of the 120 .

또한 메모리 매니저(110)는 선별된 마이그레이션 대상 세그먼트를 마이그레이션할 때, 마이그레이션되는 데이터의 단위 크기를 가변시킬 수 있다.Also, the memory manager 110 may change the unit size of the migrated data when the selected migration target segment is migrated.

도 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 memory manager 110 according to the present embodiment may include a command analysis unit 111 , a reallocation unit 112 , a remapping unit 113 , and a swap buffer 114 .

명령 분석부(111)는 외부 장치에서 인가되는 리드 또는 라이트와 같은 명령을 분석하여, 리드 요청과 라이트 요청은 리맵핑부(113)로 전달하고, 라이트 요청 정보는 재할당부(112)로 전달한다. 여기서 라이트 요청 정보에는 데이터 어드레스, 프로그램 정보 등이 포함될 수 있다.The command analysis unit 111 analyzes a command such as read or write applied from an external device, and transmits the read request and the write request to the remapping unit 113 , and transmits the write request information to the reassignment unit 112 . . Here, the write request information may include a data address and program information.

하이브리드 메모리 장치에 저장된 프로그램은 외부 프로세서 등에 의해 실행될 수 있으며, 실행되는 과정에서 라이트 명령에 의해 데이터 변경이 발생하며, 변경된 데이터는 다시 하이브리드 장치에 저장되어야 한다. 이에 명령 분석부(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 command analysis unit 111 transmits write request information including the address of the changed data and program information and segment information to the reassignment unit 112, so that the previously stored data is changed. to be updated with data. In this embodiment, the command analysis unit 111 transmits the write request information to the reassignment unit 112 to the segment migrated to the VM module 200 by the program count and segment count in the program stored in the NVM module 300. This is so that information about the data is transmitted to the remapping unit 113 so that the remapping unit 113 can write and update data normally.

재할당부(112)는 인가된 프로그램이 이전 VM 모듈(200) 또는 NVM 모듈(300)에 저장되지 않은 신규 프로그램이면, 인가되는 프로그램을 세그먼트로 구분하고, 각 세그먼트에 라이트 명령이 포함된 개수를 카운트하여 세그먼트 카운트를 획득하며, 획득된 세그먼트 카운트를 기반으로 프로그램 카운트를 계산하여 저장한다. 그리고 재할당부(112)는 계산된 프로그램 카운트와 세그먼트 카운트에 따라 VM 모듈(200) 또는 NVM 모듈(300) 중 프로그램의 다수의 세그먼트가 각각 저장될 위치를 설정한다.If the applied program is a new program that is not stored in the previous VM module 200 or the NVM module 300, the reassignment unit 112 divides the applied program into segments and counts the number of each segment including a write command. to obtain a segment count, and calculate and store the program count based on the obtained segment count. In addition, the reassignment unit 112 sets a location in which a plurality of segments of a program are to be stored among the VM module 200 or the NVM module 300 according to the calculated program count and segment count.

재할당부(112)는 인가되는 프로그램의 세그먼트들이 기본적으로 NVM 모듈(300)에 저장되도록 어드레스를 할당할 수 있다. 그러나 재할당부(112)는 저장된 프로그램 카운트와 세그먼트 카운트에 기반하여, 스왑 후보 프로그램을 선별하고, 선별된 스왑 후보 프로그램에서 마이그레이션 대상 세그먼트를 선별하여, 선별된 마이그레이션 대상 세그먼트가 VM 모듈(200)에 저장되도록 어드레스를 할당할 수 있다.The reassignment unit 112 may allocate addresses so that segments of the program to be applied are basically stored in the NVM module 300 . However, the reallocation unit 112 selects a swap candidate program based on the stored program count and the segment count, selects a migration target segment from the selected swap candidate program, and stores the selected migration target segment in the VM module 200 . Addresses can be assigned as much as possible.

즉 선별되지 않은 프로그램의 세그먼트들과 스왑 후보 프로그램에서 마이그레이션 대상 세그먼트를 제외한 나머지 세그먼트들은 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 NVM module 300 . In some cases, the reassignment unit 112 allocates and stores addresses so that all segments for the new program are stored in the NVM module 300 , and then selects a migration target segment from among the program segments stored in the NVM module 300 . It may be migrated to the VM module 200 .

재할당부(112)는 VM 컨트롤러(120) 또는 NVM 컨트롤러(130)가 인가된 프로그램의 세그먼트를 저장한 이후, VM 컨트롤러(120) 또는 NVM 컨트롤러(130)로부터 저장된 데이터 어드레스를 인가받아 획득할 수도 있다.After the VM controller 120 or NVM controller 130 stores the approved program segment, the reallocation unit 112 may obtain the stored data address by being authorized by the VM controller 120 or the NVM controller 130 . .

그리고 재할당부(112)는 NVM 모듈(300)에 이전 저장된 프로그램에 대한 프로그램 카운트와 세그먼트 카운트를 분석하여, NVM 모듈(300)에 저장된 프로그램의 세그먼트를 선별적으로 VM 모듈(300)로 마이그레이션시킬 수 있다. 재할당부(112)는 상기한 바와 같이 신규 프로그램이 라이트될 때, 프로그램 카운트와 세그먼트 카운트를 획득하여 미리 저장하고 있으며, 라이트 요청 정보로부터 프로그램의 세그먼트에 변화가 확인되는 경우, 프로그램 카운트와 세그먼트 카운트를 다시 계산하여 업데이트하여 저장한다. 즉 각 프로그램의 세그먼트들에 대한 라이트 히스토리를 미리 저장한다. 그리고 저장된 라이트 히스토리에 따라 프로그램의 세그먼트들 중 마이그레이션 대상 세그먼트를 선별하여 VM 모듈(300)로 마이그레이션 시킨다. 이때, 재할당부(112)는 NVM 모듈(300)에서 마이그레이션 대상 세그먼트의 데이터 어드레스와 VM 모듈(200)로 마이그레이션된 세그먼트의 데이터 어드레스를 리맵핑부(113)로 전달하여 리맵핑부(113)가 마이그레이션된 데이터 어드레스의 변화를 저장하도록 한다.In addition, the reassignment unit 112 analyzes the program count and segment count for the program previously stored in the NVM module 300 to selectively migrate segments of the program stored in the NVM module 300 to the VM module 300 . have. As described above, when a new program is written, the reassignment unit 112 obtains and stores the program count and segment count in advance. Recalculate, update, and save. That is, the write history of segments of each program is stored in advance. Then, a migration target segment is selected from among the program segments according to the stored write history and migrated to the VM module 300 . At this time, the reallocation unit 112 transfers the data address of the segment to be migrated from the NVM module 300 and the data address of the segment migrated to the VM module 200 to the remapping unit 113 so that the remapping unit 113 is Changes in the migrated data address are saved.

또한 재할당부(112)는 마이그레이션 대상 세그먼트의 데이터 어드레스를 분석하여, 마이그레이션되는 데이터의 단위 크기를 조절할 수 있다. 재할당부(112)가 마이그레이션되는 데이터의 단위 크기를 조절하는 방식에 대한 상세한 설명은 후술하도록 한다.Also, the reallocation unit 112 may analyze the data address of the migration target segment to adjust the unit size of the migrated data. A detailed description of how the reallocation unit 112 adjusts the unit size of migrated data will be described later.

리맵핑부(113)는 재할당부(112)로부터 마이그레이션에 의해 변경된 데이터 어드레스를 인가받아 저장하고, 명령 분석부(111)로부터 리드 명령 또는 라이트 명령을 인가되면, 저장된 데이터 어드레스를 기반으로 리드 명령과 라이트 명령을 수정하여, VM 컨트롤러(120) 또는 NVM 컨트롤러(130)로 전달한다.The remapping unit 113 receives and stores the data address changed by migration from the reassignment unit 112, and when a read command or a write command is applied from the command analysis unit 111, a read command and a read command based on the stored data address The write command is modified and transmitted to the VM controller 120 or the NVM controller 130 .

리맵핑부(113)는 재할당부(112)에 의해 마이그레이션된 데이터에 대한 데이터 어드레스가 인가되면, 기존의 데이터 어드레스와 마이그레이션된 데이터 어드레스를 리맵핑 테이블에 저장한다. 이후, 명령 분석부(111)로부터 리드 또는 라이트 명령이 인가되면, 리맵핑 테이블에 해당 데이터에 대해 재할당된 메모리 어드레스가 존재하는지 판별하고, 재할당부(112)에 의해 재할당된 메모리 어드레스가 존재하면, 리드 또는 라이트 명령을 재할당된 메모리 어드레스에 대한 명령으로 수정하여 VM 컨트롤러(120) 또는 NVM 컨트롤러(130)로 전달함으로써, VM 컨트롤러(120) 또는 NVM 컨트롤러(130)가 재할당된 메모리 어드레스에서 데이터를 리드하거나 라이트 할 수 있도록 한다.When the data address for the migrated data is applied by the reallocation unit 112 , the remapping unit 113 stores the existing data address and the migrated data address in the remapping table. Thereafter, when a read or write command is applied from the command analysis unit 111 , it is determined whether a memory address reallocated for the corresponding data exists in the remapping table, and the memory address reallocated by the reallocation unit 112 exists. Then, the VM controller 120 or the NVM controller 130 modifies the read or write command into a command for the reallocated memory address and transmits it to the VM controller 120 or the NVM controller 130, thereby causing the reallocated memory address Enables data to be read from or written to.

스왑 버퍼(114)는 VM 모듈(200)에 저장된 데이터를 NVM 모듈(300)로 마이그레이션하거나, NVM 모듈(300)에 저장된 데이터를 VM 모듈(200)로 마이그레이션할 때, VM 컨트롤러(120) 및 NVM 컨트롤러(130)의 버퍼(121, 131)에서 전달되는 데이터를 임시 저장한 후, 상대 버퍼(121, 131)로 전달함으로써, 마이그레이션 도중 데이터 충돌이 발생하지 않도록 할 수 있다.The swap buffer 114 migrates data stored in the VM module 200 to the NVM module 300 or migrates data stored in the NVM module 300 to the VM module 200, the VM controller 120 and NVM Data transferred from the buffers 121 and 131 of the controller 130 is temporarily stored and then transferred to the counterpart buffers 121 and 131 to prevent data collisions during migration.

도 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 reallocation unit 112 may include a write request information analyzer 1121 , a write history table 1122 , a migration determiner 1123 , and a migration request unit 1124 .

라이트 요청 정보 분석부(1121)는 명령 분석부(111)에서 인가되는 라이트 요청 정보를 분석한다. 라이트 요청 정보 분석부(1121)는 라이트 요청 정보로부터 프로그램 정보와 세그먼트 정보 및 데이터 어드레스 등을 확인하여, 라이트 히스토리 테이블(1122)로 전달한다.The write request information analysis unit 1121 analyzes the write request information applied from the command analysis unit 111 . The write request information analyzer 1121 checks the program information, segment information, and data address from the write request information, and transmits it to the write history table 1122 .

라이트 히스토리 테이블(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 information analysis unit 1121, and counts the number of write commands included in each segment to obtain a segment count, and obtain Calculate the program count based on the segment count. Then, the calculated program count and segment count are stored in the write history table 1122 .

마이그레이션 결정부(1123)는 라이트 히스토리 테이블(1122)에 저장된 프로그램 카운트로부터 스왑 후보 프로그램을 설정하고, 설정된 스왑 후보 프로그램에 포함된 세그먼트들의 세그먼트 카운트로부터 마이그레이션 대상 세그먼트를 선별한다.The migration determiner 1123 sets a swap candidate program from the program count stored in the write history table 1122 and selects a migration target segment from the segment counts of segments included in the set swap candidate program.

마이그레이션 요청부(1124)는 마이그레이션 대상 세그먼트에 대한 데이터 어드레스를 VM 컨트롤러(120)와 NVM 컨트롤러(130)로 전달하여, 마이그레이션 대상 세그먼트가 VM 모듈(200) 또는 NVM 모듈(300)로 마이그레이션 되도록 한다.The migration request unit 1124 transmits the data address of the migration target segment to the VM controller 120 and the NVM controller 130 so that the migration target segment is migrated to the VM module 200 or the NVM module 300 .

마이그레이션 요청부(1124)는 VM 컨트롤러(120)와 NVM 컨트롤러(130)로부터 마이그레이션 된 이후의 데이터 어드레스를 인가받아 라이트 히스토리 테이블(1122)에 저장하고 리맵핑부(113)로 전달할 수 있다. 이때, 마이그레이션 요청부(1124)는 세그먼트에 포함된 데이터의 데이터 어드레스를 기반으로 마이그레이션되는 데이터의 단위 크기를 조절할 수 있다.The migration request unit 1124 may receive the migrated data address from the VM controller 120 and the NVM controller 130 , store it in the write history table 1122 , and transmit it to the remapping unit 113 . In this case, the migration request unit 1124 may adjust the unit size of the migrated data based on the data address of the data included in the segment.

도 9를 참조하면, 마이그레이션 요청부(1124)는 다수의 데이터 스코프(Scope0 ~ Scope5)를 포함할 수 있다. 여기서 데이터 스코프(Scope0 ~ Scope5)의 개수는 다양하게 조절될 수 있다. 여기서 데이터 스코프는 데이터가 시퀀셜하게 인가되는지 판별하기 위한 일종의 가상 카운터로서, 다수의 데이터 스코프(Scope0 ~ Scope5) 각각에서 구분되는 각 영역은 마이그레이션 수행시에 설정될 수 있는 데이터 마이그레이션 단위 크기를 설정하기 위한 카운트를 나타낸다.Referring to FIG. 9 , the migration request unit 1124 may include a plurality of data scopes Scope0 to Scope5. Here, the number of data scopes Scope0 to Scope5 may be variously adjusted. Here, the data scope is a kind of virtual counter to determine whether data is sequentially applied. indicates the count.

여기서 다수의 데이터 스코프(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 migration request unit 1124 may set a first reference migration unit having a smaller value and a second reference migration unit having a larger value based on the currently set migration unit. That is, the section between the first reference migration unit and the second reference migration unit is set as the unit maintenance section, centered on the current migration unit, the section less than the first standard migration unit is set as the unit reduction section, and more than the first standard migration unit Set the section to the unit increment section.

이후 마이그레이션 요청부(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 migration request unit 1124 sequentially performs each area in one data scope among a plurality of data scopes Scope0 to Scope5. fill If the data address difference continues to be less than or equal to the reference address unit, the same data scope continues to fill the region, whereas if the data address difference exceeds the reference address unit, each region is sequentially filled again in the next data scope.

마이그레이션 요청부(1124)는 상기한 과정을 반복 수행하며, 모든 데이터 스코프(Scope0 ~ Scope5)에 대해 각 영역이 채워지면, 다시 순환하여 데이터 스코프(Scope0 ~ Scope5)의 영역을 순차적으로 채울 수 있다.The migration request unit 1124 repeats the above process, and when each area for all data scopes Scope0 to Scope5 is filled, it can cycle again to sequentially fill the data scopes Scope0 to Scope5.

그리고 마이그레이션 요청부(1124)는 기지정된 구간 동안, 다수의 데이터 스코프(Scope0 ~ Scope5)에 채워진 영역의 크기를 계산하고, 다수의 데이터 스코프(Scope0 ~ Scope5) 중 절반 이상, 즉 과반수 이상의 데이터 스코프에 채워진 영역의 크기가 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중에서 포함되는 구간을 판별한다. 만일 단위 유지 구간에 포함되는 것으로 판별되면, 현재 설정된 마이그레이션 단위를 유지하는 반면, 단위 감소 구간 또는 단위 증가 구간에 포함되는 것으로 판별되면, 설정된 마이그레이션 단위를 기지정된 단위로 증가시키거나 감소시킨다.In addition, the migration request unit 1124 calculates the size of the area filled in a plurality of data scopes (Scope0 to Scope5) during a predetermined period, and is more than half of the plurality of data scopes (Scope0 to Scope5), that is, more than half of the data scopes. A section in which the size of the filled region is included among the unit maintenance section, the unit reduction section, and the unit increase section is determined. If it is determined to be included in the unit maintenance section, the currently set migration unit is maintained, whereas if it is determined to be included in the unit reduction section or the unit increase section, the set migration unit is increased or decreased by a predetermined unit.

여기서 마이그레이션 요청부(1124)가 마이그레이션 단위를 가변하는 것은 마이그레이션할 세그먼트에서 연속하는 데이터의 크기에 대응하여 한번에 마이그레이션되는 데이터의 크기를 증가 또는 감소시켜, 마이그레이션 수행 횟수 자체를 줄일 뿐만 아니라, VM 모듈(200)과 NVM 모듈(300)에서 라이트 횟수를 저감시켜 라이트 속도를 향상시킬 뿐만 아니라 NVM 모듈(300)의 내구성을 향상시킬 수 있도록 하기 위함이다.Here, when the migration request unit 1124 varies the migration unit, it increases or decreases the size of data to be migrated at a time in response to the size of continuous data in the segment to be migrated, thereby reducing the number of times of migration itself as well as the VM module ( 200) and the NVM module 300 to reduce the number of writes to improve the write speed as well as to improve the durability of the NVM module 300.

도 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 NVM module 300 with data stored in the VM module 200 . When the data stored in the NVM module 300 is migrated with the VM module 200 , after the program stored in the NVM module 300 is read, the read program may be executed. In addition, migration may be performed even when a new program is applied to and stored in the hybrid memory device by a write command. And when it is determined that migration is to be performed, the hybrid memory device performs migration in a predetermined manner (S20).

도 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 VM module 200 and the NVM module 300 ( S40 ). If it is determined that migration is being performed, the migration is paused after waiting until the data currently being migrated is stored in the swap buffer 114 (S50).

그리고 액세스 명령이 인가된 데이터가 스왑 버퍼(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 swap buffer 114, access is performed to the swap buffer 114 (S70). That is, data is read or written. And the migration is continued (S80).

그러나 스왑 버퍼(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 swap buffer 114 , the data stored in the VM module 200 or the NVM module 300 is accessed through the VM controller 120 or the NVM controller 130 ( S90 ). Also, even when migration is not currently being performed, data stored in the VM module 200 or the NVM module 300 is accessed through the VM controller 120 or the NVM controller 130 ( S90 ).

본 발명에 따른 방법은 컴퓨터에서 실행시키기 위한 매체에 저장된 컴퓨터 프로그램으로 구현될 수 있다. 여기서 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 가용 매체일 수 있고, 또한 컴퓨터 저장 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하며, 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)

다수의 휘발성 메모리 셀을 포함하는 VM 모듈;
다수의 비휘발성 메모리 셀을 포함하는 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
제1항에 있어서, 상기 메모리 컨트롤 모듈은
상기 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.
제2항에 있어서, 상기 메모리 매니저는
리드 또는 라이트 명령을 포함하는 액세스 명령이 인가되면, 인가된 액세스 명령을 분석하여, 리드 또는 라이트 명령과 프로그램 정보와 데이터 어드레스를 포함하는 라이트 요청 정보로 구분하는 명령 분석부;
상기 라이트 요청 정보를 인가받아 인가된 프로그램을 다수의 세그먼트로 구분하고, 세그먼트 카운트와 프로그램 카운트를 획득하여 라이트 히스토리 테이블에 저장하며, 저장된 라이트 히스토리 테이블에 기초하여 상기 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.
제3항에 있어서, 상기 재할당부는
상기 라이트 히스토리 테이블을 분석하여, 프로그램 카운트가 상기 제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.
제4항에 있어서, 상기 재할당부는
상기 마이그레이션 대상 세그먼트에 대한 데이터 어드레스를 상기 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.
제5항에 있어서, 상기 재할당부는
마이그레이션되는 세그먼트의 데이터 어드레스를 확인하여, 순차적으로 마이그레이션되는 데이터의 데이터 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 기지정된 개수의 데이터 스코프 중 동일한 데이터 스코프에 누적카운트하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 다시 누적 카운트하여 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 다수의 데이터 스코프에 누적 기록하며, 다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 확인된 구간에 따라 마이그레이션되는 데이터의 마이그레이션 단위 크기를 조절하는 하이브리드 메모리 장치.
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.
제3항에 있어서, 상기 메모리 매니저는
마이그레이션 실행 중 액세스 명령이 인가되면, 마이그레이션되는 세그먼트의 데이터 중 스왑 버퍼로 전송되는 데이터의 전송 완료 후, 마이그레이션을 일시 중지시키고, 액세스 명령에 대응하는 동작을 수행하는 하이브리드 메모리 장치.
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.
제7항에 있어서, 상기 메모리 매니저는
상기 액세스 명령에 의해 지정되는 데이터가 상기 스왑 버퍼에 저장되어 있는지 판별하고, 상기 스왑 버퍼에 저장된 것으로 판별되면, 상기 스왑 버퍼에 저장된 데이터에 액세스를 수행하며, 상기 스왑 버퍼에 저장되지 않은 것으로 판별되면, 상기 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.
제7항에 있어서, 상기 메모리 매니저는
액세스가 수행되면, 일시 중지된 마이그레이션을 계속 수행하는 하이브리드 메모리 장치.
The method of claim 7, wherein the memory manager
A hybrid memory device that continues a paused migration once an access is made.
다수의 휘발성 메모리 셀을 포함하는 VM 모듈과 다수의 비휘발성 메모리 셀을 포함하는 NVM 모듈 및 스왑 버퍼를 포함하는 하이브리드 메모리 장치의 관리 방법에 있어서,
상기 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.
제10항에 있어서, 상기 프로그램 카운트를 계산하는 단계는
리드 또는 라이트 명령을 포함하는 액세스 명령이 인가되면, 인가된 액세스 명령을 분석하여, 리드 또는 라이트 명령과 프로그램 정보와 데이터 어드레스를 포함하는 라이트 요청 정보로 구분하는 단계; 및
상기 라이트 요청 정보를 인가받아 인가된 프로그램을 다수의 세그먼트로 구분하고, 세그먼트 카운트와 프로그램 카운트를 획득하여 라이트 히스토리 테이블에 저장하는 단계를 포함하는 하이브리드 메모리 장치의 관리 방법.
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.
제11항에 있어서, 상기 마이그레이션시키는 단계는
상기 라이트 히스토리 테이블을 분석하여, 프로그램 카운트가 상기 제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.
제12항에 있어서, 상기 리맵핑하는 단계는
마이그레이션되어 변경된 데이터 어드레스를 획득하는 단계; 및
세그먼트의 데이터가 저장된 데이터 어드레스와 변경된 데이터 어드레스를 리맵핑하여 저장하는 단계를 포함하는 하이브리드 메모리 장치의 관리 방법.
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.
제13항에 있어서, 상기 하이브리드 메모리 장치의 관리 방법은
마이그레이션된 데이터에 대한 액세스 명령이 인가되면, 리맵핑된 데이터 어드레스에 대한 액세스 명령으로 수정하는 단계를 더 포함하는 하이브리드 메모리 장치의 관리 방법.
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.
제14항에 있어서, 상기 마이그레이션하는 단계는
상기 마이그레이션 대상 세그먼트에 대한 데이터 어드레스에 따라 상기 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.
제15항에 있어서, 상기 마이그레이션하는 단계는
마이그레이션되는 세그먼트의 데이터 어드레스를 확인하여, 순차적으로 마이그레이션되는 데이터의 데이터 어드레스 차이가 기지정된 기준 어드레스 단위 이하이면, 기지정된 개수의 데이터 스코프 중 동일한 데이터 스코프에 누적카운트하고, 기준 어드레스 단위를 초과하면 다른 데이터 스코프에 다시 누적 카운트하여 순차적으로 전달되는 데이터의 어드레스 변화를 기지정된 다수의 데이터 스코프에 누적 기록하는 단계; 및
다수의 데이터 스코프에 누적 기록된 크기를 확인하고, 과반수 이상의 데이터 스코프에 누적 기록된 크기가 현재 설정된 마이그레이션 단위를 기준으로 미리 지정된 단위 유지 구간과 단위 감소 구간 및 단위 증가 구간 중 어느 구간에 해당하는지 확인하여 확인된 구간에 따라 마이그레이션되는 데이터의 마이그레이션 단위 크기를 조절하는 단계를 더 포함하는 하이브리드 메모리 장치의 관리 방법.
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.
제16항에 있어서, 상기 하이브리드 메모리 장치의 관리 방법은
마이그레이션 실행 중 액세스 명령이 인가되면, 마이그레이션되는 세그먼트의 데이터 중 스왑 버퍼로 전송되는 데이터의 전송 완료 후, 마이그레이션을 일시 중지시키고, 액세스 명령에 대응하는 동작을 수행하는 단계;
상기 액세스 명령에 의해 지정되는 데이터가 상기 스왑 버퍼에 저장되어 있는지 판별하는 단계;
상기 스왑 버퍼에 저장된 것으로 판별되면, 상기 스왑 버퍼에 저장된 데이터에 액세스를 수행하는 단계;
상기 스왑 버퍼에 저장되지 않은 것으로 판별되면, 상기 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.
KR1020200182117A 2020-12-23 2020-12-23 Hybrid memory device and management method thereof KR102482191B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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