KR102446121B1 - Memory controlling device and memory system including the same - Google Patents

Memory controlling device and memory system including the same Download PDF

Info

Publication number
KR102446121B1
KR102446121B1 KR1020190001915A KR20190001915A KR102446121B1 KR 102446121 B1 KR102446121 B1 KR 102446121B1 KR 1020190001915 A KR1020190001915 A KR 1020190001915A KR 20190001915 A KR20190001915 A KR 20190001915A KR 102446121 B1 KR102446121 B1 KR 102446121B1
Authority
KR
South Korea
Prior art keywords
memory
data
sub data
cache
module
Prior art date
Application number
KR1020190001915A
Other languages
Korean (ko)
Other versions
KR20200002581A (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
Priority claimed from KR1020180075930A external-priority patent/KR101952827B1/en
Application filed by 주식회사 멤레이, 연세대학교 산학협력단 filed Critical 주식회사 멤레이
Priority to KR1020190001915A priority Critical patent/KR102446121B1/en
Publication of KR20200002581A publication Critical patent/KR20200002581A/en
Application granted granted Critical
Publication of KR102446121B1 publication Critical patent/KR102446121B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • 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

메모리 서브시스템과 메모리 제어기를 포함하는 메모리 시스템이 제공된다. 메모리 서브시스템은 상변화 메모리로 구현되는 복수의 제1 메모리 모듈과 상변화 메모리보다 쓰기 속도가 빠른 메모리로 구현되는 제2 메모리 모듈을 포함한다. 메모리 제어기는, 원 데이터가 나누어진 복수의 서브데이터로부터 논블록킹 부호를 생성하고, 논블록킹 부호를 상기 제2 메모리 모듈에 쓰고, 복수의 서브데이터를 각각 복수의 제1 메모리 모듈에 쓰며, 읽기 요청 시에 소정 조건 하에서 복수의 제1 메모리 모듈 중 일부 제1 메모리 모듈로부터 읽은 복수의 서브데이터 중 일부 서브데이터와 제2 메모리 모듈로부터 읽은 논블록킹 부호로부터 원 데이터를 재구성한다. A memory system is provided that includes a memory subsystem and a memory controller. The memory subsystem includes a plurality of first memory modules implemented as a phase change memory and a second memory module implemented as a memory having a write speed faster than that of the phase change memory. The memory controller generates a non-blocking code from the plurality of sub data in which the original data is divided, writes the non-blocking code to the second memory module, writes the plurality of sub data to the plurality of first memory modules, respectively, and requests a read At the time, original data is reconstructed from some of the plurality of sub data read from the first memory module among the plurality of first memory modules and the non-blocking code read from the second memory module under a predetermined condition.

Description

메모리 제어 장치 및 이를 포함하는 메모리 시스템{MEMORY CONTROLLING DEVICE AND MEMORY SYSTEM INCLUDING THE SAME}MEMORY CONTROLLING DEVICE AND MEMORY SYSTEM INCLUDING THE SAME

본 발명은 메모리 제어 장치 및 이를 포함하는 메모리 시스템에 관한 것이다.The present invention relates to a memory control device and a memory system including the same.

반도체 메모리의 고성능화 및 저전력화 추세에 맞추어 차세대 반도체 메모리가 개발되고 있다. 이러한 차세대 반도체 메모리 중에서 상변화 물질(phase-change material)을 이용하는 상변화 메모리(phase-change memory, PCM), 특히 상변화 랜덤 액세스 메모리(phase-change random access memory, PRAM)가 있다. 상변화 메모리는 결정질 상태(crystalline state)와 비정질 상태(amorphous state)를 전환하는 상변화 물질을 사용하고, 결정질 상태와 비정절 상태의 저항율 차이에 기초하여서 데이터를 저장한다.A next-generation semiconductor memory is being developed in line with the trend of higher performance and lower power consumption of semiconductor memory. Among these next-generation semiconductor memories, there is a phase-change memory (PCM) using a phase-change material, particularly a phase-change random access memory (PRAM). The phase change memory uses a phase change material that switches between a crystalline state and an amorphous state, and stores data based on a difference in resistivity between the crystalline state and the amorphous state.

이러한 상변화 메모리에서 현재 상태의 상변화 물질을 통해 데이터를 읽는 경우보다 상변화 물질의 상태를 변경할 필요가 있는 데이터 쓰기에 시간이 많이 걸린다는 문제점이 있다.In such a phase change memory, there is a problem in that it takes more time to write data that needs to change the state of the phase change material than when data is read through the current state of the phase change material.

본 발명이 이루고자 하는 과제는 응답 속도를 증가시킬 수 있는 상변화 메모리를 사용하는 메모리 시스템 및 메모리 제어 장치를 제공하는 것이다.SUMMARY OF THE INVENTION An object of the present invention is to provide a memory system and a memory control device using a phase change memory capable of increasing response speed.

본 발명의 한 실시예에 따르면, 상변화 메모리로 구현되는 복수의 제1 메모리 모듈과 상변화 메모리보다 쓰기 속도가 빠른 메모리로 구현되는 제2 메모리 모듈을 포함하는 메모리 서브시스템, 그리고 상기 복수의 제1 메모리 모듈과 상기 제2 메모리 모듈에 복수의 채널을 통해 연결되는 메모리 제어기를 포함하는 메모리 시스템이 제공된다. 상기 메모리 제어기는, 원 데이터가 나누어진 복수의 서브데이터로부터 논블록킹 부호를 생성하고, 상기 논블록킹 부호를 상기 제2 메모리 모듈에 쓰고, 상기 복수의 서브데이터를 각각 상기 복수의 제1 메모리 모듈에 쓰며, 읽기 요청 시에 소정 조건 하에서 상기 복수의 제1 메모리 모듈 중 일부 제1 메모리 모듈로부터 읽은 상기 복수의 서브데이터 중 일부 서브데이터와 상기 제2 메모리 모듈로부터 읽은 상기 논블록킹 부호로부터 상기 원 데이터를 재구성한다.According to an embodiment of the present invention, a memory subsystem including a plurality of first memory modules implemented as a phase change memory and a second memory module implemented as a memory having a write speed faster than that of the phase change memory, and the plurality of first memory modules There is provided a memory system including a first memory module and a memory controller connected to the second memory module through a plurality of channels. The memory controller generates a non-blocking code from a plurality of sub data in which original data is divided, writes the non-blocking code to the second memory module, and writes the plurality of sub data to the plurality of first memory modules, respectively write, and receive the original data from some of the plurality of sub data read from some of the plurality of first memory modules and the non-blocking code read from the second memory module under a predetermined condition at the time of a read request reconstruct

상기 메모리 제어기는, 중앙 처리 유닛(central processing unit, CPU)으로부터의 쓰기 요청에 따라 상기 쓰기 요청에 해당하는 데이터를 저장하는 캐시를 포함할 수 있다.The memory controller may include a cache for storing data corresponding to the write request in response to a write request from a central processing unit (CPU).

상기 원 데이터가 상기 캐시에 저장되어 있는 경우, 상기 메모리 제어기는, 상기 캐시에 저장된 상기 원 데이터를 상기 메모리 서브시스템으로 마이그레이션할 때, 상기 논블록킹 부호를 상기 제2 메모리 모듈에 쓰고, 상기 복수의 서브데이터를 각각 상기 복수의 제1 메모리 모듈에 쓸 수 있다.When the raw data is stored in the cache, the memory controller is configured to, when migrating the raw data stored in the cache to the memory subsystem, write the non-blocking code to the second memory module, and Each of the sub data may be written to the plurality of first memory modules.

상기 복수의 서브데이터는 제1 서브데이터와 제2 서브데이터를 포함할 수 있다. 이때, 상기 복수의 서브데이터를 각각 상기 복수의 제1 메모리 모듈에 쓸 때, 상기 메모리 제어기는 상기 제1 서브데이터를 상기 복수의 제1 메모리 모듈 중 대응하는 제1 메모리 모듈에 쓰고, 상기 제1 서브데이터의 쓰기 완료된 후에 상기 제2 서브데이터를 상기 복수의 제1 메모리 모듈 중 대응하는 제1 메모리 모듈에 쓸 수 있다.The plurality of sub data may include first sub data and second sub data. In this case, when writing the plurality of sub data to the plurality of first memory modules, respectively, the memory controller writes the first sub data to a corresponding first memory module among the plurality of first memory modules, After writing of the sub data is completed, the second sub data may be written to a corresponding first memory module among the plurality of first memory modules.

상기 복수의 서브데이터가 상기 복수의 제1 메모리 모듈로 쓰는 것인 완료된 후, 상기 메모리 제어기는 상기 원 데이터를 상기 캐시에서 제거할 수 있다.After the writing of the plurality of sub-data to the plurality of first memory modules is completed, the memory controller may remove the original data from the cache.

상기 제1 서브데이터를 상기 대응하는 제1 메모리 모듈에 쓸 때, 상기 메모리 제어기는 상기 논블록킹 부호를 상기 제2 메모리 모듈에 쓸 수 있다.When writing the first sub data to the corresponding first memory module, the memory controller may write the non-blocking code to the second memory module.

상기 원 데이터를 상기 메모리 서브시스템으로 마이그레이션하는 동안 상기 원 데이터에 대해서 캐시 히트가 발생하는 경우, 상기 메모리 제어기는 상기 원 데이터의 마이그레이션을 중지할 수 있다.If a cache hit occurs on the raw data while migrating the raw data to the memory subsystem, the memory controller may stop the migration of the raw data.

각 제1 메모리 모듈의 메모리 셀 어레이는 복수의 파티션으로 분할되어 있을 수 있다. 이때, 상기 소정 조건은 상기 복수의 서브데이터 중 다른 일부 서브데이터가 저장된 파티션에서 쓰기 동작이 진행 중인 조건을 포함할 수 있다.The memory cell array of each first memory module may be divided into a plurality of partitions. In this case, the predetermined condition may include a condition that a write operation is in progress in a partition in which some other sub data among the plurality of sub data is stored.

상기 소정 조건은 상기 원 데이터의 상기 읽기 요청에 대해서 캐시 미스가 발생하는 조건을 더 포함할 수 있다.The predetermined condition may further include a condition in which a cache miss occurs with respect to the read request of the original data.

상기 캐시는 비휘발성 메모리로 구현될 수 있다.The cache may be implemented as a non-volatile memory.

상기 메모리 시스템은 컴퓨팅 디바이스의 CPU에 의해 사용되는 메인 메모리일 수 있다.The memory system may be main memory used by the CPU of the computing device.

본 발명의 다른 실시예에 따르면, 상변화 메모리로 구현되는 제1 메모리 모듈 및 제2 메모리 모듈, 그리고 상변화 메모리보다 쓰기 속도가 빠른 메모리로 구현되는 제3 메모리 모듈을 포함하는 메모리 서브시스템에 복수의 채널을 통해 연결되는 메모리 제어 장치가 제공된다. 상기 메모리 제어 장치는 캐시 및 메모리 제어기를 포함한다. 상기 캐시는 CPU로부터의 쓰기 요청에 따라 상기 쓰기 요청에 해당하는 데이터를 저장한다. 상기 메모리 제어기는, 상기 캐시에 저장된 원 데이터를 제1 서브데이터와 제2 서브데이터를 포함하는 복수의 서브데이터로 나누고, 상기 복수의 서브데이터로부터 논블록킹 부호를 생성하며, 마이그레이션 시에 상기 제1 서브데이터를 상기 제1 메모리 모듈에 쓰고, 상기 제2 서브데이터를 상기 제2 메모리 모듈에 쓰고, 상기 논블록킹 부호를 상기 제3 메모리 모듈에 쓰고, 상기 CPU로부터의 읽기 요청 시에 소정 조건 하에서 상기 제2 메모리 모듈로부터 상기 제2 서브데이터를 읽지 않고 상기 제1 메모리 모듈로부터 읽은 상기 제1 서브데이터와 상기 제3 메모리 모듈로부터 읽은 상기 논블록킹 부호로부터 상기 원 데이터를 재구성한다.According to another embodiment of the present invention, a plurality of memory subsystems are provided in a memory subsystem including a first memory module and a second memory module implemented as a phase change memory, and a third memory module implemented as a memory having a write speed faster than that of the phase change memory. A memory control device connected through a channel of The memory control device includes a cache and a memory controller. The cache stores data corresponding to the write request according to the write request from the CPU. The memory controller divides the original data stored in the cache into a plurality of sub data including first sub data and second sub data, generates a non-blocking code from the plurality of sub data, and performs migration of the first sub data. write sub data to the first memory module, write the second sub data to the second memory module, write the non-blocking code to the third memory module, and write the non-blocking code to the third memory module The original data is reconstructed from the first sub data read from the first memory module and the non-blocking code read from the third memory module without reading the second sub data from the second memory module.

상기 메모리 제어기는 상기 제1 및 제2 서브데이터 중 어느 하나의 서브데이터를 상기 제1 및 제2 메모리 모듈 중 대응하는 메모리 모듈에 쓰고, 상기 어느 하나의 서브데이터의 쓰기 완료된 후에 상기 제1 및 제2 서브데이터 중 다른 하나의 서브데이터를 상기 제1 및 제2 메모리 모듈 중 대응하는 메모리 모듈에 쓸 수 있다.The memory controller writes any one of the first and second sub data to a corresponding one of the first and second memory modules, and after writing of the one sub data is completed, the first and second sub data The other sub data among the two sub data may be written to a corresponding memory module among the first and second memory modules.

상기 제1 및 제2 서브데이터가 상기 제1 및 제2 메모리 모듈로 쓰는 것인 완료된 후, 상기 메모리 제어기는 상기 원 데이터를 상기 캐시에서 제거할 수 있다.After the first and second sub-data are written to the first and second memory modules, the memory controller may remove the raw data from the cache.

상기 어느 하나의 서브데이터를 상기 대응하는 메모리 모듈에 쓸 때, 상기 메모리 제어기는 상기 논블록킹 부호를 상기 제3 메모리 모듈에 쓸 수 있다.When writing the one sub-data to the corresponding memory module, the memory controller may write the non-blocking code to the third memory module.

상기 마이그레이션 동안 상기 원 데이터에 대해서 캐시 히트가 발생하는 경우, 상기 메모리 제어기는 상기 원 데이터의 마이그레이션을 중지할 수 있다.When a cache hit occurs with respect to the raw data during the migration, the memory controller may stop the migration of the raw data.

상기 제2 메모리 모듈의 메모리 셀 어레이는 복수의 파티션으로 분할되어 있을 수 있다. 이때, 상기 소정 조건은 상기 제2 서브데이터가 저장된 파티션에서 쓰기 동작이 진행 중인 조건을 포함할 수 있다.The memory cell array of the second memory module may be divided into a plurality of partitions. In this case, the predetermined condition may include a condition that a write operation is in progress in the partition in which the second sub data is stored.

상기 소정 조건은 상기 원 데이터의 상기 읽기 요청에 대해서 캐시 미스가 발생하는 조건을 더 포함할 수 있다.The predetermined condition may further include a condition in which a cache miss occurs with respect to the read request of the original data.

상기 캐시는 비휘발성 메모리로 구현될 수 있다.The cache may be implemented as a non-volatile memory.

본 발명의 또 다른 실시예에 따르면, 상기 메모리 제어 장치 및 상기 메모리 서브시스템을 포함하는 메모리 시스템이 제공된다. According to another embodiment of the present invention, there is provided a memory system including the memory control device and the memory subsystem.

본 발명의 한 실시예에 따르면, 상변화 메모리에서의 긴 쓰기 지연을 감출 수 있으며, 또한 읽기 요청의 차단 없이 읽기 요청의 데이터가 제공될 수 있다. 다른 실시예에 따르면, 로그 데이터를 저장하는 로깅 메커니즘 없이 메모리 연속성을 제공할 수 있다.According to an embodiment of the present invention, a long write delay in the phase change memory can be hidden, and data of a read request can be provided without blocking the read request. According to another embodiment, memory continuity may be provided without a logging mechanism for storing log data.

도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이다.
도 2는 PRAM에서 하나의 메모리 셀을 개략적으로 나타내는 도면이다.
도 3은 도 2에 도시한 메모리 셀에 인가되는 전류를 나타내는 도면이다.
도 4는 도 2에 도시한 메모리 셀에 도 3에 도시한 전류가 인가될 때의 온도 변화를 나타내는 도면이다.
도 5는 본 발명의 한 실시예에 따른 PRAM 기반 가속기에서 PRAM 모듈의 개략적인 블록도이다.
도 6은 본 발명의 한 실시예에 따른 PRAM에서 메모리 셀 어레이의 파티션 방법의 한 예를 설명하는 도면이다.
도 7은 본 발명의 한 실시예에 따른 PRAM에서 파티션의 한 예를 설명하는 도면이다.
도 8은 본 발명의 한 실시예에 따른 메모리 시스템의 개략적인 블록도이다.
도 9는 본 발명의 다른 실시예에 따른 메모리 시스템의 개략적인 블록도이다.
도 10은 본 발명의 한 실시예에 따른 메모리 제어기에서 캐시 제어 모듈의 동작을 나타내는 흐름도이다.
도 11은 본 발명의 한 실시예에 따른 메모리 제어기에서 마이그레이션 모듈의 동작을 나타내는 흐름도이다.
도 12는 메모리 시스템에서의 로깅 메커니즘을 설명하는 도면이다.
1 is a schematic block diagram of a computing device according to an embodiment of the present invention.
2 is a diagram schematically illustrating one memory cell in a PRAM.
FIG. 3 is a diagram illustrating a current applied to the memory cell shown in FIG. 2 .
FIG. 4 is a diagram illustrating a temperature change when the current shown in FIG. 3 is applied to the memory cell shown in FIG. 2 .
5 is a schematic block diagram of a PRAM module in a PRAM-based accelerator according to an embodiment of the present invention.
6 is a view for explaining an example of a method of partitioning a memory cell array in a PRAM according to an embodiment of the present invention.
7 is a diagram for explaining an example of a partition in a PRAM according to an embodiment of the present invention.
8 is a schematic block diagram of a memory system according to an embodiment of the present invention.
9 is a schematic block diagram of a memory system according to another embodiment of the present invention.
10 is a flowchart illustrating an operation of a cache control module in a memory controller according to an embodiment of the present invention.
11 is a flowchart illustrating an operation of a migration module in a memory controller according to an embodiment of the present invention.
12 is a diagram for explaining a logging mechanism in a memory system.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those of ordinary skill in the art to which the present invention pertains can easily implement them. However, the present invention may be embodied in several different forms and is not limited to the embodiments described herein. And in order to clearly explain the present invention in the drawings, parts irrelevant to the description are omitted, and similar reference numerals are attached to similar parts throughout the specification.

도 1은 본 발명의 한 실시예에 따른 컴퓨팅 디바이스의 개략적인 블록도이다. 도 1은 가능한 컴퓨팅 디바이스의 한 예이며, 본 발명의 실시예에 따른 컴퓨팅 디바이스는 다른 다양한 구조로 구현될 수 있다.1 is a schematic block diagram of a computing device according to an embodiment of the present invention. 1 is an example of a possible computing device, and a computing device according to an embodiment of the present invention may be implemented in various other structures.

도 1을 참고하면, 본 발명의 한 실시예에 따른 컴퓨팅 디바이스(100)는 중앙 처리 유닛(central processing unit, CPU)(110) 및 메모리(120)를 포함한다.Referring to FIG. 1 , a computing device 100 according to an embodiment of the present invention includes a central processing unit (CPU) 110 and a memory 120 .

메모리(120)는 CPU(100)에 의해 액세스되어 사용된다. 어떤 실시예에서, 메모리(120)는 컴퓨팅 디바이스의 메인 메모리일 수 있다. 이 경우, 메모리(120)는 바이트 단위로 어드레스가 가능한(byte-addressable) 메모리일 수 있다.The memory 120 is accessed and used by the CPU 100 . In some embodiments, memory 120 may be the main memory of a computing device. In this case, the memory 120 may be a byte-addressable memory.

어떤 실시예에서, 컴퓨팅 디바이스(100)는 별도의 저장 장치(130)를 더 포함할 수 있다.In some embodiments, the computing device 100 may further include a separate storage device 130 .

어떤 실시예에서, 컴퓨팅 디바이스(100)는 메모리(120)와 저장 장치(130)를 CPU(110)와 연결하기 위해서 메모리 브릿지(140)를 더 포함할 수 있다. 메모리 브릿지(140)는 예를 들면 노스브릿지(northbridge) 또는 메모리 컨트롤러 허브(memory controller hub, MCH)일 수 있다.In some embodiments, the computing device 100 may further include a memory bridge 140 to connect the memory 120 and the storage device 130 to the CPU 110 . The memory bridge 140 may be, for example, a northbridge or a memory controller hub (MCH).

다시 도 1을 참고하면, 메모리(120)로 사용되는 메모리 시스템(120)은 메모리 제어기(121) 및 메모리 서브시스템(122)을 포함하며, 메모리 서브시스템(122)은 메모리 제어기(121)에 복수의 채널(123a, 123b, 123c)을 통해 연결되어 있다.메모리 제어기(121)는 CPU(110)로부터 요청, 예를 들면 입출력(input/output, I/O) 요청을 수신하고, 수신한 I/O 요청에 기초하여 메모리 서브시스템(122)에 액세스한다.Referring back to FIG. 1 , the memory system 120 used as the memory 120 includes a memory controller 121 and a memory subsystem 122 , and the memory subsystem 122 includes a plurality of memory controllers 121 . It is connected through the channels 123a, 123b, and 123c of the memory controller 121. The memory controller 121 receives a request from the CPU 110, for example, an input/output (I/O) request, and receives the received I/O request. Access the memory subsystem 122 based on the O request.

메모리 서브시스템(122)은 복수의 상변화 메모리(phase-change memory, PCM) 모듈(122a, 122b) 및 논블록킹(non-blocking) 메모리 모듈(122c)을 포함한다. 아래에서는 상변화 랜덤 액세스 메모리(phase-change random access memory, PRAM)를 PCM의 한 예로 설명한다. 또한 논블록킹 메모리 모듈(122c)로는 PRAM보다 쓰기 속도가 빠른 메모리가 사용되며, 아래에서는 논블록킹 메모리 모듈(122c)로 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM) 모듈이 사용되는 것으로 설명한다.The memory subsystem 122 includes a plurality of phase-change memory (PCM) modules 122a and 122b and a non-blocking memory module 122c. Hereinafter, a phase-change random access memory (PRAM) will be described as an example of the PCM. In addition, a memory having a write speed faster than that of PRAM is used as the non-blocking memory module 122c, and it will be described below that a dynamic random access memory (DRAM) module is used as the non-blocking memory module 122c.

PRAM 모듈(122a, 122b)은 데이터를 저장하는 공간으로 제공되며, 각 PRAM 모듈(122a, 122b)은 대응하는 채널(123a, 123b), 즉 PRAM 채널(123a, 123b)을 통해 메모리 제어기(121)에 연결되어 있다. DRAM 모듈(122c)는 논블록킹 부호(non-blocking code)를 저장하는 공간으로 제공되며, DRAM 모듈(122c)도 대응하는 채널(123c), 즉 DRAM 채널(123c)을 통해 메모리 제어기(121)에 연결되어 있다. 논블록킹 부호는 원 데이터에서 일부 데이터가 빠지더라도 나머지 데이터와 함께 원 데이터를 재구성하는데 사용될 수 있는 부호이다.The PRAM modules 122a and 122b are provided as a space for storing data, and each of the PRAM modules 122a and 122b is connected to the memory controller 121 through the corresponding channels 123a and 123b, that is, the PRAM channels 123a and 123b. is connected to The DRAM module 122c is provided as a space for storing non-blocking codes, and the DRAM module 122c is also provided to the memory controller 121 through the corresponding channel 123c, that is, the DRAM channel 123c. connected. The non-blocking code is a code that can be used to reconstruct the original data together with the remaining data even if some data is omitted from the original data.

메모리 제어기(121)는 I/O 요청에 따라 메모리 서브시스템(122)에 쓸 쓰기 데이터를 복수의 서브데이터(sub-data)로 나누고, 복수의 서브데이터에 기초해서 논블록킹 부호를 생성한다. 메모리 제어기(121)는 복수의 서브데이터를 복수의 PRAM 채널(123a, 123b)을 통해 복수의 PRAM 모듈(122a, 122b)로 쓰고, 논블록킹 부호를 DRAM 채널(123c)를 통해 DRAM 모듈(122c)로 쓴다. 또한 쓰기 데이터가 나누어져 기록 복수의 PRAM 모듈(122a, 122b) 중 일부 PRAM 모듈에서 읽기 동작이 불가능한 경우, 메모리 제어기(110)는 복수의 PRAM 모듈(122a, 122b) 중 읽기 동작이 가능한 일부 PRAM 모듈로부터 서브데이터를 읽고, DRAM 모듈(122c)로부터 논블록킹 부호를 읽은 후, 읽은 서브데이터와 논블록킹 부호로부터 원래의 쓰기 데이터를 재구성할 수 있다.The memory controller 121 divides write data to be written to the memory subsystem 122 into a plurality of sub-data according to an I/O request, and generates a non-blocking code based on the plurality of sub-data. The memory controller 121 writes the plurality of sub data to the plurality of PRAM modules 122a and 122b through the plurality of PRAM channels 123a and 123b, and writes a non-blocking code to the DRAM module 122c through the DRAM channel 123c. write as In addition, when the read operation is impossible in some of the PRAM modules 122a and 122b of the plurality of PRAM modules 122a and 122b for writing because the write data is divided, the memory controller 110 controls some of the PRAM modules 122a and 122b in which the read operation is possible. After reading the sub data from and reading the non-blocking code from the DRAM module 122c, original write data may be reconstructed from the read sub data and the non-blocking code.

도 1에 도시한 것처럼, 두 개의 PRAM 모듈(122a, 122b)이 사용되는 경우, 메모리 제어기(121)는 쓰기 데이터를 두 개의 서브데이터로 나눌 수 있다. 예를 들면, 쓰기 데이터가 64 바이트 데이터인 경우, 메모리 제어기(121)는 쓰기 데이터를 두 개의 32 바이트 서브데이터로 나누어서 두 개의 PRAM 모듈(122a, 122b)에 각각 쓸 수 있다. 메모리 제어기(121)는 두 개의 서브데이터를 부호화하여 논블록킹 부호를 생성해서 DRAM 모듈(122c)에 쓸 수 있다. 또한 메모리 제어기(121)는 두 개의 PRAM 모듈(122a, 122b) 중 하나의 PRAM 모듈로부터 서브데이터를 읽고 DRAM 모듈(122c)에 논블록킹 부호를 읽어서, 읽은 서브데이터와 논블록킹 부호를 합쳐서 원래의 쓰기 데이터를 재구성할 수 있다.As shown in FIG. 1 , when two PRAM modules 122a and 122b are used, the memory controller 121 may divide write data into two sub data. For example, when the write data is 64-byte data, the memory controller 121 divides the write data into two 32-byte sub-data and writes the write data to the two PRAM modules 122a and 122b, respectively. The memory controller 121 may encode two sub-data to generate a non-blocking code and write it to the DRAM module 122c. In addition, the memory controller 121 reads sub data from one of the two PRAM modules 122a and 122b, reads a non-blocking code from the DRAM module 122c, and adds the read sub data and the non-blocking code to write the original write. data can be reconstructed.

도 1에는 두 개의 PRAM 모듈(122a, 122b)과 이에 대응하는 두 개의 PRAM 채널(123a, 123b)이 사용되는 예를 도시하였지만, PRAM 모듈의 개수는 두 개에 한정되지 않는다. 또한 위에서는 원 데이터를 두 개의 서브데이터로 나누는 예를 도 1을 참고로 하여 설명하였지만, 원 데이터가 나누어지는 서브데이터의 개수는 두 개에 한정되지 않고, 원 데이터는 두 개 이상의 서브데이터를 나누어질 수 있다.Although FIG. 1 shows an example in which two PRAM modules 122a and 122b and two PRAM channels 123a and 123b corresponding thereto are used, the number of PRAM modules is not limited to two. In the above, an example of dividing the raw data into two sub data has been described with reference to FIG. 1, but the number of sub data into which the raw data is divided is not limited to two, and the raw data is divided into two or more sub data can get

예를 들면, 원 데이터는 네 개의 서브데이터(데이터 A, 데이터 B, 데이터 C, 데이터 D)로 나누어질 수 있다. 이 경우, 메모리 서브시스템(122)은 적어도 네 개의 PRAM 모듈(PRAM 모듈 A, PRAM 모듈 B, PRAM 모듈 C, PRAM 모듈 D)를 포함할 수 있으며, 데이터 A, 데이터 B, 데이터 C 및 데이터 D는 각각 PRAM 모듈 A, PRAM 모듈 B, PRAM 모듈 C 및 PRAM 모듈 D에 저장될 수 있다.For example, the raw data may be divided into four sub-data (data A, data B, data C, and data D). In this case, the memory subsystem 122 may include at least four PRAM modules (PRAM module A, PRAM module B, PRAM module C, PRAM module D), wherein data A, data B, data C, and data D are may be stored in PRAM module A, PRAM module B, PRAM module C, and PRAM module D, respectively.

한 예에서, 메모리 제어기(121)는 데이터 A, 데이터 B, 데이터 C 및 데이터 D를 부호화하여서 하나의 논블록킹 부호를 생성하여 DRAM 모듈에 저장할 수 있다. 이 경우, 메모리 제어기(121)는 하나의 PRAM 모듈(예를 들면, PRAM 모듈 A)에서 데이터 A를 읽지 못하더라도, 나머지 세 개의 PRAM 모듈(예를 들면, PRAM 모듈 B, PRAM 모듈 C, PRAM 모듈 D)에서 읽은 세 개의 데이터(데이터 B, 데이터 C, 데이터 D)와 DRAM 모듈에서 읽은 논블록킹 부호로부터 원 데이터를 재구성할 수 있다.In one example, the memory controller 121 may encode data A, data B, data C, and data D to generate one non-blocking code and store it in the DRAM module. In this case, even if the memory controller 121 fails to read data A from one PRAM module (eg, PRAM module A), the remaining three PRAM modules (eg, PRAM module B, PRAM module C, and PRAM module) The original data can be reconstructed from the three data (data B, data C, and data D) read from D) and the non-blocking code read from the DRAM module.

다른 예에서, 메모리 제어기(121)는 데이터 A와 데이터 B를 결합한 데이터와 데이터 C와 데이터 D를 결합한 데이터를 부호화하여서 하나의 논블록킹 부호를 생성하여 DRAM 모듈에 저장할 수 있다. 이 경우, 메모리 제어기(121)는 두 PRAM 모듈(예를 들면, PRAM 모듈 A, PRAM 모듈 B)에서 데이터 A 및 데이터 B를 읽지 못하더라도, 나머지 두 PRAM 모듈(예를 들면, PRAM 모듈 C, PRAM 모듈 D)에서 읽은 두 데이터(데이터 C, 데이터 D)와 DRAM 모듈에서 읽은 논블록킹 부호로부터 원 데이터를 재구성할 수 있다.In another example, the memory controller 121 may encode data obtained by combining data A and B and data obtained by combining data C and D to generate one non-blocking code and store it in the DRAM module. In this case, even if the memory controller 121 fails to read data A and data B from the two PRAM modules (eg, PRAM module A and PRAM module B), the remaining two PRAM modules (eg, PRAM module C, PRAM) The original data can be reconstructed from the two data (data C, data D) read from the module D) and the non-blocking code read from the DRAM module.

또 다른 예에서, 메모리 제어기(121)는 데이터 A와 데이터 B를 부호화하여서 하나의 논블록킹 부호를 생성하여 DRAM 모듈에 저장하고, 데이터 C와 데이터 D를 부호화하여서 다른 하나의 논블록킹 부호를 생성하여 DRAM 모듈에 저장할 수 있다. 이 경우, 두 논블록킹 부호는 서로 다른 DRAM 모듈에 저장될 수 있다. 이 경우, 메모리 제어기(121)는 두 PRAM 모듈(예를 들면, PRAM 모듈 A, PRAM 모듈 C)에서 데이터 A 및 데이터 C를 읽지 못하더라도, 나머지 두 PRAM 모듈(예를 들면, PRAM 모듈 B, PRAM 모듈 D)에서 읽은 두 데이터(데이터 B, 데이터 D)와 DRAM 모듈에서 읽은 두 논블록킹 부호로부터 원 데이터를 재구성할 수 있다.In another example, the memory controller 121 encodes data A and data B to generate one non-blocking code and stores it in the DRAM module, and encodes data C and data D to generate another non-blocking code. It can be stored in a DRAM module. In this case, the two non-blocking codes may be stored in different DRAM modules. In this case, even if the memory controller 121 fails to read data A and data C from the two PRAM modules (eg, PRAM module A and PRAM module C), the remaining two PRAM modules (eg, PRAM module B, PRAM) The original data can be reconstructed from the two data (data B, data D) read from the module D) and the two non-blocking codes read from the DRAM module.

다시 도 1을 참고하면, 하나의 채널에 연결된 PRAM 모듈(122a 또는 122b)은 복수의 PRAM 칩(또는 PRAM 뱅크)(124)을 포함한다. 어떤 실시예에서, 각 PRAM 칩(또는 PRAM 뱅크)는 복수의 파티션(PART0-PARTn)으로 분할될 수 있다. 하나의 채널에 연결된 PRAM 모듈(122a 또는 122b)은 하나의 랭크(rank)로 이루어질 수 있으며, 또는 복수의 랭크로 확장될 수도 있다. 어떤 실시예에서, 하나의 채널에 연결된 복수의 랭크가 서로 독립적으로 동작할 수 있다면, 각 랭크가 독립적인 PRAM 모듈로 동작할 수 있다. 이 경우, 복수의 PRAM 모듈(즉, 복수의 랭크)이 하나의 채널을 공유할 수 있다. 하나의 채널에 연결된 DRAM 모듈(122c)은 복수의 DRAM 칩(또는 DRAM 뱅크)을 포함한다. 하나의 채널에 연결된 DRAM 모듈(122c)은 하나의 랭크(rank)로 이루어질 수 있으며, 또는 복수의 랭크로 확장될 수도 있다.Referring back to FIG. 1 , the PRAM module 122a or 122b connected to one channel includes a plurality of PRAM chips (or PRAM banks) 124 . In some embodiments, each PRAM chip (or PRAM bank) may be divided into a plurality of partitions PART0-PARTn. The PRAM module 122a or 122b connected to one channel may consist of one rank or may be extended to a plurality of ranks. In some embodiments, if a plurality of ranks connected to one channel can operate independently of each other, each rank can operate as an independent PRAM module. In this case, a plurality of PRAM modules (ie, a plurality of ranks) may share one channel. The DRAM module 122c connected to one channel includes a plurality of DRAM chips (or DRAM banks). The DRAM module 122c connected to one channel may consist of one rank or may be extended to a plurality of ranks.

다음, 본 발명의 한 실시예에 따른 메모리 시스템(100)에 포함되는 PRAM(120)의 한 예에 대해서 설명한다.Next, an example of the PRAM 120 included in the memory system 100 according to an embodiment of the present invention will be described.

도 2는 PRAM에서 하나의 메모리 셀을 개략적으로 나타내는 도면이며, 도 3은 도 2에 도시한 메모리 셀에 인가되는 전류를 나타내는 도면이고, 도 4는 도 2에 도시한 메모리 셀에 도 3에 도시한 전류가 인가될 때의 온도 변화를 나타내는 도면이다.FIG. 2 is a diagram schematically showing one memory cell in a PRAM, FIG. 3 is a diagram showing a current applied to the memory cell shown in FIG. 2, and FIG. 4 is a diagram showing the memory cell shown in FIG. 2 in FIG. It is a diagram showing the temperature change when one current is applied.

도 2에 도시한 메모리 셀은 하나의 예이며, 본 발명의 실시예에 따른 PRAM의 메모리 셀은 다양한 형태로 구현될 수 있다.The memory cell shown in FIG. 2 is an example, and the memory cell of the PRAM according to the embodiment of the present invention may be implemented in various forms.

도 2를 참고하면, PRAM의 메모리 셀(200)은 상변화 소자(210)와 스위칭 소자(220)를 포함한다. 스위칭 소자(220)는 모스 트랜지스터, 다이오드 등의 다양한 소자로 구현될 수 있다. 상변화 소자(210)는 상변화막(211), 상벽화막 위에 형성되어 있는 상부 전극(212) 및 상변화막(211) 아래에 형성되어 있는 하부 전극(213)을 포함한다. 예를 들면, 상변화막(210)은 상변화 물질로 게르마늄(germanium, Ge), 안티몬(antimony, Sb) 및 텔루르(tellurium, Te)의 혼합물("GST 물질"이라 불리기도 함)을 포함할 수 있다.Referring to FIG. 2 , the memory cell 200 of the PRAM includes a phase change element 210 and a switching element 220 . The switching device 220 may be implemented with various devices such as a MOS transistor and a diode. The phase change element 210 includes a phase change film 211 , an upper electrode 212 formed on the upper wall film film, and a lower electrode 213 formed under the phase change film 211 . For example, the phase change layer 210 may include a mixture of germanium (Ge), antimony (Sb), and tellurium (Te) as a phase change material (also referred to as a “GST material”). can

상변화 물질은 비교적 높은 저항율(resistivity)을 가지는 비정질 상태와 비교적 낮은 저항율을 가지는 결정질 상태를 전환할 수 있다. 이때, 상변화 물질의 상태는 가열되는 온도와 가열 시간에 의해 결정될 수 있다.The phase change material may switch between an amorphous state having a relatively high resistivity and a crystalline state having a relatively low resistivity. In this case, the state of the phase change material may be determined by the heating temperature and heating time.

다시 도 2를 참고하면, 메모리 셀(200)에 전류가 인가되면, 인가된 전류는 하부 전극(213)을 통해 흐르게 된다. 짧은 시간 동안 전류가 메모리 셀(200)에 인가되면, 인가된 전류는 하부 전극(213)의 인접한 막을 가열한다. 이때, 가열 프로파일의 차이에 의해서 상변화막(211)의 일부(도 2에서 해칭된 부분)가 결정질 상태로 되거나 비정질 상태로 된다. 결정질 상태는 "셋(set) 상태"로, 비정질 상태로 "리셋(reset) 상태"로 불린다.Referring again to FIG. 2 , when a current is applied to the memory cell 200 , the applied current flows through the lower electrode 213 . When a current is applied to the memory cell 200 for a short time, the applied current heats the adjacent film of the lower electrode 213 . At this time, a portion of the phase change layer 211 (a portion hatched in FIG. 2 ) becomes a crystalline state or an amorphous state due to a difference in the heating profile. A crystalline state is called a "set state", and an amorphous state is called a "reset state".

도 3 및 도 4를 참고하면, 높은 전류의 리셋 펄스(RESET)가 짧은 시간(tRST) 동안 메모리 셀(200)에 인가될 때, 상변화막(211)은 리셋 상태로 된다. 리셋 펄스(RESET)의 인가에 따라 상변화막(211)의 상변화 물질이 가열되어 온도(Tr)가 녹는점 이상으로 되면, 상변화 물질이 녹은 후 식으면서 비정질 상태로 변화한다. 리셋 펄스(RESET)보다 낮은 전류를 가지는 셋 펄스(SET)가 리셋 펄스(RESET)보다 긴 시간(tSET) 동안 상변화막(211)에 인가될 때, 상변화막(211)은 셋 상태로 된다. 셋 전류(SET)의 인가에 따라, 상변화 물질이 가열되어서 온도(Ts) 녹는점보다 낮은 결정화 온도에 도달하면 결정질 상태로 변화한다. 셋 펄스(SET)보다 낮은 전류가 인가되거나 짧은 시간 동안 전류가 인가되는 경우에는 이러한 리셋 상태 및 셋 상태가 유지되므로, 메모리 셀(200)에 데이터를 기입할 수 있다.3 and 4 , when a high current reset pulse RESET is applied to the memory cell 200 for a short time tRST, the phase change layer 211 is in a reset state. When the phase change material of the phase change layer 211 is heated according to the application of the reset pulse RESET and the temperature Tr is higher than the melting point, the phase change material is melted and then cooled to change to an amorphous state. When the set pulse SET having a current lower than the reset pulse RESET is applied to the phase change layer 211 for a time tSET longer than the reset pulse RESET, the phase change layer 211 is in a set state. . According to the application of the set current SET, when the phase change material is heated and reaches a crystallization temperature lower than the melting point of the temperature Ts, it changes to a crystalline state. When a current lower than the set pulse SET is applied or a current is applied for a short time, the reset state and the set state are maintained, so that data can be written into the memory cell 200 .

이때, 리셋 상태와 셋 상태는 각각 "1"과 "0"의 데이터로 설정될 수 있으며, 이는 메모리 셀(200)의 상변화 소자(210)의 저항율을 측정함으로써 감지될 수 있다. 이와는 달리, 리셋 상태와 셋 상태를 각각 "0"과 "1"의 데이터로 설정될 수도 있다.In this case, the reset state and the set state may be set to data of “1” and “0”, respectively, which may be detected by measuring the resistivity of the phase change element 210 of the memory cell 200 . Alternatively, the reset state and the set state may be set to data of “0” and “1”, respectively.

따라서 메모리 셀(200)에 읽기 펄스(READ)를 인가함으로써 메모리 셀(200)에 저장된 데이터를 읽을 수 있다. 읽기 펄스(READ)는 낮은 전류로 짧은 시간(tREAD) 동안 인가되어 메모리 셀(200)의 상태를 변경하지 않을 수 있다. 읽기 펄스(READ)는 전류 크기가 셋 펄스(SET)보다 낮을 수 있고, 인가되는 시간(tREAD)이 리셋 펄스(RESET)의 인가 시간(tRST)보다 짧을 수 있다. 메모리 셀(200)의 상변화 소자(210)의 저항율이 상태에 따라 다르므로, 상변화 소자(210)에 흐르는 전류의 크기 또는 상변화 소자(210)에서의 전압 강하의 크기로 메모리 셀(200)의 상태, 즉 메모리 셀(200)에 저장된 데이터를 읽을 수 있다.Accordingly, data stored in the memory cell 200 may be read by applying the read pulse READ to the memory cell 200 . The read pulse READ may be applied for a short time tREAD with a low current so that the state of the memory cell 200 may not be changed. A current magnitude of the read pulse READ may be lower than that of the set pulse SET, and an applied time tREAD may be shorter than an application time tRST of the reset pulse RESET. Since the resistivity of the phase change element 210 of the memory cell 200 varies depending on the state, the magnitude of the current flowing through the phase change element 210 or the magnitude of the voltage drop in the phase change element 210 is determined in the memory cell 200 . ) state, that is, data stored in the memory cell 200 can be read.

한 실시예에서, 읽기 펄스(READ)를 인가하였을 때, 메모리 셀(200)에 걸리는 전압의 크기의 차이로 메모리 셀(200)의 상태를 읽을 수 있다. 이 경우, 리셋 상태에서 메모리 셀(200)의 상변화 소자(210)는 큰 저항을 가지므로, 상변화 소자(210)에서 감지된 전압인 큰 경우를 리셋 상태로, 상변화 소자(210)에서 감지된 전압이 작은 경우를 셋 상태로 결정할 수 있다. 다른 실시예에서, 메모리 셀(200)에 전압을 인가하였을 때, 출력되는 전류의 차이로 메모리 셀(200)의 상태를 읽을 수 있다. 이 경우, 상변화 소자(210)에서 감지된 전류가 작은 경우를 리셋 상태로, 상변화 소자(210)에서 감지된 전류가 큰 경우를 셋 상태로 결정할 수 있다.In one embodiment, when the read pulse READ is applied, the state of the memory cell 200 may be read by the difference in the magnitude of the voltage applied to the memory cell 200 . In this case, since the phase change element 210 of the memory cell 200 has a large resistance in the reset state, the large case of the voltage sensed by the phase change element 210 is set to the reset state, and the phase change element 210 has a large resistance. A case in which the sensed voltage is small may be determined as a set state. In another embodiment, when a voltage is applied to the memory cell 200 , the state of the memory cell 200 may be read by a difference in output current. In this case, the case where the current sensed by the phase change element 210 is small may be determined as the reset state, and the case where the current sensed by the phase change element 210 is large may be determined as the set state.

PRAM에서는 데이터 쓰기는 일련의 리셋 과정과 셋 과정을 통해서 수행되므로, 인가 시간이 긴 리셋 펄스로 인해 쓰기 동작이 읽기 동작보다 느리다.In the PRAM, data writing is performed through a series of reset and set processes, so a write operation is slower than a read operation due to a long reset pulse.

도 5는 본 발명의 한 실시예에 따른 메모리 시스템에서 PRAM의 개략적인 블록도이다. 도 5에 도시한 PRAM은 하나의 PRAM 칩 또는 하나의 PRAM 뱅크일 수 있다.5 is a schematic block diagram of a PRAM in a memory system according to an embodiment of the present invention. The PRAM shown in FIG. 5 may be one PRAM chip or one PRAM bank.

도 5를 참고하면, PRAM(500)은 메모리 셀 어레이(510), 행 어드레스 버퍼(520), 행 데이터 버퍼(530), 행 디코더(540), 센스 앰프(sense amplifier)(550) 및 기입 드라이버(560)를 포함한다.Referring to FIG. 5 , the PRAM 500 includes a memory cell array 510 , a row address buffer 520 , a row data buffer 530 , a row decoder 540 , a sense amplifier 550 , and a write driver. (560).

메모리 셀 어레이(510)는 대략 행 방향으로 뻗어 있는 복수의 워드 라인(도시하지 않음), 대략 열 방향으로 뻗어 있는 복수의 비트 라인(도시하지 않음), 그리고 이에 연결되어 있으며 대략 행렬의 형태로 배열된 복수의 메모리 셀(도시하지 않음)을 포함한다. 메모리 셀은 예를 들면 도 2를 참고로 하여 설명한 메모리 셀(200)일 수 있다.The memory cell array 510 includes a plurality of word lines (not shown) extending approximately in a row direction, a plurality of bit lines (not shown) extending approximately in a column direction, and connected thereto and arranged in a substantially matrix form. and a plurality of memory cells (not shown). The memory cell may be, for example, the memory cell 200 described with reference to FIG. 2 .

행 어드레스 버퍼(520)와 행 데이터 버퍼(530)는 행 버퍼를 형성한다. 각 행 버퍼는 행 어드레스 버퍼(520)와 행 데이터 버퍼(530)에 의해 논리적으로 짝이 지워져 있으며, 버퍼 어드레스에 의해 선택된다.The row address buffer 520 and the row data buffer 530 form a row buffer. Each row buffer is logically paired by a row address buffer 520 and a row data buffer 530 and is selected by a buffer address.

행 어드레스 버퍼(520)는 메모리 컨트롤러(도시하지 않음)로부터 전달되는 명령 데이터와 어드레스(특히, 행 어드레스)를 저장한다. 행 데이터 버퍼(530)는 메모리 셀 어레이(510)에서 전달된 데이터를 저장한다.The row address buffer 520 stores command data and addresses (particularly, row addresses) transmitted from a memory controller (not shown). The row data buffer 530 stores data transferred from the memory cell array 510 .

어떤 실시예에서, PRAM(500)은 복수의 행 버퍼(520, 530)를 사용하기 위해서 비휘발성 메모리 인터페이스를 채용할 수 있다. 한 실시예에서, 비휘발성 메모리 인터페이스는 DDR(double data rate) 인터페이스, 예들 들면 LPDDR2(low-power double data rate 2)-NVM(non-volatile memory) 인터페이스일 수 있다. 행 어드레스 버퍼(520)는 비휘발성 메모리 인터페이스를 통해 행 어드레스 및 뱅크 어드레스를 수신하고, 행 데이터 버퍼(530)는 비휘발성 메모리 인터페이스를 통해 데이터를 출력한다.In some embodiments, PRAM 500 may employ a non-volatile memory interface to use multiple row buffers 520 , 530 . In one embodiment, the non-volatile memory interface may be a double data rate (DDR) interface, for example, a low-power double data rate 2 (LPDDR2)-non-volatile memory (NVM) interface. The row address buffer 520 receives a row address and a bank address through the non-volatile memory interface, and the row data buffer 530 outputs data through the non-volatile memory interface.

행 디코더(540)는 행 어드레스를 복호하여서 메모리 셀 어레이(510)의 복수의 행에서 타깃 행을 선택한다. 즉, 행 디코더(540)는 메모리 셀 어레이(510)의 복수의 워드 라인 중 데이터를 읽거나 데이터를 쓸 워드 라인을 선택한다.The row decoder 540 selects a target row from a plurality of rows of the memory cell array 510 by decoding the row address. That is, the row decoder 540 selects a word line from which data is read or data is written from among a plurality of word lines of the memory cell array 510 .

어떤 실시예에서, 메모리 컨트롤러에서 전달되는 행 어드레스는 상위 어드레스(upper address)와 하위 어드레스(lower address)를 포함할 수 있다. 이 경우, 상위 어드레스는 행 어드레스 버퍼(520)로 전달되고, 하위 어드레스는 행 디코더(540)로 직접 전달될 수 있다. 이때, 행 디코더(540)는 행 어드레스 버퍼(520)에 저장된 상위 어드레스와 직접 전달된 하위 어드레스를 결합하여서 타깃 행을 선택할 수 있다.In some embodiments, the row address transferred from the memory controller may include an upper address and a lower address. In this case, the upper address may be transferred to the row address buffer 520 , and the lower address may be transferred directly to the row decoder 540 . In this case, the row decoder 540 may select a target row by combining the high-order address stored in the row address buffer 520 and the directly transmitted low-order address.

센스 앰프(550)는 메모리 셀 어레이(510)에 저장된 데이터를 읽는 동작을 수행한다. 센스 앰프(550)는 행 디코더(540)가 선택한 워드 라인에 연결된 복수의 메모리 셀로부터 복수의 비트 라인을 통해서 데이터를 읽을 수 있다. 기입 드라이버(560)는 입력되는 데이터를 메모리 셀 어레이(510)에 쓴다. 기입 드라이버(560)는 행 디코더(540)가 선택한 워드 라인에 연결된 복수의 메모리 셀에 복수의 비트 라인을 통해서 데이터를 쓸 수 있다.The sense amplifier 550 reads data stored in the memory cell array 510 . The sense amplifier 550 may read data through a plurality of bit lines from a plurality of memory cells connected to the word line selected by the row decoder 540 . The write driver 560 writes input data to the memory cell array 510 . The write driver 560 may write data through a plurality of bit lines to a plurality of memory cells connected to a word line selected by the row decoder 540 .

어떤 실시예에서, PRAM(500)에서는 쓰기 동작이 읽기 동작보다 느리므로, 이를 해결하기 위해서 PRAM(500)은 입력되는 데이터를 버퍼에 먼저 저장한 후에, 이를 메모리 셀 어레이(510)에 쓸 수 있다. 이를 위해, PRAM(500)은 메모리 매핑된(memory-mapped) 레지스터로서 오버레이 윈도우(570, 580)를 포함할 수 있다. 오버레이 윈도우는 오버레이 윈도우 레지스터(570)와 프로그램 버퍼(580)를 포함할 수 있다. 한 실시예에서, 쓰기 데이터에 대한 정보(예를 들면, 첫 번째 데이터 어드레스와 기입될 바이트 수)가 레지스터(570)에 써진 후에, 쓰기 데이터가 프로그램 버퍼(580)에 저장된다. 다음 오버레이 윈도우 레지스터(570)에 소정의 값이 써지면, 프로그램 버퍼(580)에 저장된 데이터가 메모리 셀 어레이(510)에 기입된다. 이 경우, 메모리 컨트롤러는 오버레이 윈도우 레지스터(570)를 폴링함으로써 메모리 셀 어레이(510)로의 쓰기 동작이 완료되었는지를 확인할 수 있다.In some embodiments, since a write operation is slower than a read operation in the PRAM 500 , in order to solve this problem, the PRAM 500 may first store input data in a buffer and then write it to the memory cell array 510 . . To this end, the PRAM 500 may include overlay windows 570 and 580 as memory-mapped registers. The overlay window may include an overlay window register 570 and a program buffer 580 . In one embodiment, after information about the write data (eg, the first data address and the number of bytes to be written) is written to the register 570 , the write data is stored in the program buffer 580 . Next, when a predetermined value is written to the overlay window register 570 , the data stored in the program buffer 580 is written to the memory cell array 510 . In this case, the memory controller may check whether the write operation to the memory cell array 510 is completed by polling the overlay window register 570 .

도 6은 본 발명의 한 실시예에 따른 PRAM에서 메모리 셀 어레이의 파티션 방법의 한 예를 설명하는 도면이고, 도 7은 본 발명의 한 실시예에 따른 PRAM에서 파티션의 한 예를 설명하는 도면이다.6 is a diagram for explaining an example of a method of partitioning a memory cell array in a PRAM according to an embodiment of the present invention, and FIG. 7 is a diagram for explaining an example of a partitioning method in a PRAM according to an embodiment of the present invention .

도 6을 참고하면, 어떤 실시예에서, 하나의 메모리 셀 어레이(510), 예를 들면 PRAM 뱅크는 복수의 파티션(PART0-PART15)으로 분할될 수 있다. 도 6에서는 메모리 셀 어레이(510)가 16개의 파티션(PART0-PART15)으로 분할되는 예를 도시하였다. 이때, 복수의 행 버퍼(520, 530)는 복수의 파티션(PART0-PART15)에 연결될 수 있다. 예를 들면, 각 파티션은 64 비트 병렬 입출력 처리를 할 수 있다.Referring to FIG. 6 , in some embodiments, one memory cell array 510 , for example, a PRAM bank may be divided into a plurality of partitions PART0 - PART15 . 6 illustrates an example in which the memory cell array 510 is divided into 16 partitions PART0-PART15. In this case, the plurality of row buffers 520 and 530 may be connected to the plurality of partitions PART0-PART15. For example, each partition can perform 64-bit parallel I/O processing.

어떤 실시예에서, 복수의 파티션(PART0-PART15)은 센스 앰프(도 5의 550) 및 행 디코더(도 5의 540)와 같은 읽기 회로를 공유할 수 있다.In some embodiments, the plurality of partitions PART0 - PART15 may share a read circuit such as a sense amplifier ( 550 in FIG. 5 ) and a row decoder ( 540 in FIG. 5 ).

도 7을 참고하면, 어떤 실시예에서, 각 파티션은 복수의 서브어레이(sub-array)를 포함할 수 있다. 서브어레이는 저항성 타일(resistive tile)이라 불릴 수 있다. 도 7에서는 하나의 파티션이 64개의 타일(Tile0-Tile63)을 포함하는 것으로 도시하였다.Referring to FIG. 7 , in some embodiments, each partition may include a plurality of sub-arrays. The sub-array may be referred to as a resistive tile. 7 shows that one partition includes 64 tiles (Tile0-Tile63).

각 타일은 복수의 비트 라인(예를 들면 2048 비트 라인)과 복수의 워드 라인(예를 들면 4096 워드 라인)에 연결되는 복수의 메모리 셀, 즉 PRAM 코어를 포함한다. 설명의 편의상, 도 7에서는 각 타일에 포함되어 있는 복수의 메모리 셀 중에서 하나의 메모리 셀과 이에 연결되어 있는 하나의 비트 라인(BL) 및 워드 라인(WL)만을 도시하였고, 메모리 셀을 형성하는 상변화 소자와 스위칭 소자를 각각 저항과 다이오드로 도시하였다.Each tile includes a plurality of memory cells, or PRAM cores, connected to a plurality of bit lines (eg 2048 bit lines) and a plurality of word lines (eg 4096 word lines). For convenience of explanation, FIG. 7 illustrates only one memory cell among a plurality of memory cells included in each tile and one bit line BL and a word line WL connected thereto. The change element and the switching element are shown as resistors and diodes, respectively.

각 타일에는 로컬 열 디코더(local column decoder)(앞으로 "LYDEC"이라 함)(710)가 연결되어 있을 수 있다. LYDEC(710)은 대응하는 타일의 복수의 비트 라인(BL)에 연결되어 있다. 또한 파티션에는 복수의 타일에 각각 대응하는 복수의 글로벌 비트 라인(GBL)이 형성될 수 있다. 각 글로벌 비트 라인(GBL)은 대응하는 타일의 복수의 비트 라인(BL)에 연결되어 있으며, 글로벌 열 디코더(global column decoder)(앞으로 "GYDEC"이라 함)에 연결되어 있을 수 있다. 어떤 실시예에서, LYDEC(710)은 GYDEC과 함께 대응하는 파티션의 대응하는 타일에서 비트 라인(BL)을 선택하는데 사용될 수 있다. 센스 앰프(도 5의 550)가 선택된 비트 라인(BL)을 통해 데이터를 읽거나, 기입 드라이버(도 5의 570)가 선택된 비트 라인(BL)을 통해 데이터를 쓸 수 있다.A local column decoder (hereinafter referred to as “LYDEC”) 710 may be connected to each tile. The LYDEC 710 is connected to a plurality of bit lines BL of a corresponding tile. Also, a plurality of global bit lines GBL corresponding to a plurality of tiles may be formed in the partition. Each global bit line GBL is connected to a plurality of bit lines BL of a corresponding tile, and may be connected to a global column decoder (hereinafter referred to as “GYDEC”). In some embodiments, LYDEC 710 may be used together with GYDEC to select a bit line (BL) in a corresponding tile of a corresponding partition. The sense amplifier 550 of FIG. 5 may read data through the selected bit line BL, or the write driver 570 of FIG. 5 may write data through the selected bit line BL.

병렬화를 최대화하기 위해서, 각 타일에는 서브 워드라인 드라이버(sub word line driver)(앞으로 "SWD"라 함)(720)가 연결되어 있을 수 있다. 파티션에 글로벌 워드 라인(GWL)이 형성되고, 글로벌 워드 라인(GWL)은 메인 워드 라인 드라이버(main word line driver)(앞으로 "MWD"라 함)(730)에 연결되어 있을 수 있다. 이 경우 파티션에 형성되는 복수의 워드 라인(WL)이 글로벌 워드 라인(GWL)에 연결되어 있을 수 있다. 파티션 내의 모든 SWD는 MWD(730)에 연결되어 있다. 어떤 실시예에서, SWD(720)는 MWD(730)과 함께 대응하는 타일에서 워드 라인(WL)을 구동하는데 사용될 수 있다. 이때, 구동되는 워드 라인(WL)은 행 디코더(도 5의 540)에 의해 선택될 수 있다.In order to maximize parallelism, a sub word line driver (hereinafter referred to as “SWD”) 720 may be connected to each tile. A global word line GWL is formed in the partition, and the global word line GWL may be connected to a main word line driver (hereinafter referred to as “MWD”) 730 . In this case, a plurality of word lines WL formed in the partition may be connected to the global word lines GWL. All SWDs in the partition are connected to MWD 730 . In some embodiments, SWD 720 may be used together with MWD 730 to drive word lines WL in the corresponding tile. In this case, the driven word line WL may be selected by the row decoder ( 540 of FIG. 5 ).

도 6 및 도 7에 도시한 파티션 구조를 사용하는 경우, 파티션당 복수의 입출력(input/output, I/O) 동작(예를 들면 도 7의 예에서는 64개의 I/O 동작)을 동시에 수행할 수 있다. 또한 도 6 및 도 7에 도시한 것처럼 각 파티션에서 로컬 디코더와 워드 라인 드라이버가 사용되므로, 메모리 시스템은 서로 다른 파티션에 병렬로 접근할 수 있다. 그러나 서로 다른 파티션은 수신한 I/O 요청의 유형이 서로 다른 경우에만 동시에 I/O 서비스를 지원할 수 있다. When the partition structure shown in FIGS. 6 and 7 is used, a plurality of input/output (I/O) operations per partition (for example, 64 I/O operations in the example of FIG. 7 ) may be simultaneously performed. can In addition, as shown in FIGS. 6 and 7 , since a local decoder and a word line driver are used in each partition, the memory system can access different partitions in parallel. However, different partitions can support I/O services at the same time only if the types of I/O requests they receive are different.

예를 들면, 도 8에 도시한 것처럼, PRAM의 파티션 0에서 쓰기 동작이 진행되는 동안, 파티션 0과 다른 파티션, 예를 들면 파티션 1에서 읽기 서비스를 제공할 수 있다. 이와 같이 서로 다른 파티션에서 읽기와 쓰기를 병렬로 제공할 수 있으므로, 느린 쓰기 동작 진행되는 동안 다른 읽기 동작이 진행될 수 있다. 따라서 쓰기 동작이 완료되기를 기다릴 필요 없이, 쓰기 지연 시간 동안 많은 읽기 요청을 병렬로 처리할 수 있다.For example, as shown in FIG. 8 , while a write operation is in progress in partition 0 of the PRAM, a read service may be provided in a partition different from partition 0, for example, partition 1. As such, since read and write can be provided in parallel from different partitions, another read operation may proceed while a slow write operation is in progress. Therefore, many read requests can be processed in parallel during write latency without waiting for the write operation to complete.

그러나 PRAM의 파티션 0에서 쓰기 동작이 진행되는 동안, 파티션 0에서 읽기 서비스를 제공할 수는 없다. 그러므로 파티션 0에서 쓰기 동작이 완료된 후에, 파티션 0에서 읽기 동작이 진행될 수 있다. 이 경우, 읽기 요청의 응답 시간(즉, 읽기 동작이 완료되는데 걸리는 시간)은 쓰기 지연 시간과 읽기 지연 시간의 합에 해당할 수 있다. 이와 같이, 읽기 요청의 응답 시간이 오래 걸리는 경우를 방지하기 위한 실시예에 대해서 설명한다.However, while a write operation is in progress on partition 0 of the PRAM, a read service cannot be provided from partition 0. Therefore, after the write operation in partition 0 is completed, a read operation in partition 0 may proceed. In this case, the response time of the read request (ie, the time it takes to complete the read operation) may correspond to the sum of the write delay time and the read delay time. As described above, an embodiment for preventing a case in which a response time of a read request takes a long time will be described.

다음 본 발명의 한 실시예에 따른 메모리 시스템에 대해서 도 8을 참고로 하여 설명한다.Next, a memory system according to an embodiment of the present invention will be described with reference to FIG. 8 .

도 8은 본 발명의 한 실시예에 따른 메모리 시스템의 개략적인 블록도이다.8 is a schematic block diagram of a memory system according to an embodiment of the present invention.

도 8을 참고하면, 본 발명의 한 실시예에 따른 메모리 시스템은 메모리 제어기(800)와 메모리 서브시스템을 포함한다.Referring to FIG. 8 , a memory system according to an embodiment of the present invention includes a memory controller 800 and a memory subsystem.

도 1을 참고로 하여 설명한 것처럼, 메모리 제어기(800)는 PRAM 모듈(122a, 122b)과 DRAM 모듈(122c)를 포함하는 메모리 서브시스템에 복수의 채널(123a, 123b, 123c)을 통해 연결되어 있으며, 캐시(810), 캐시 제어 모듈(820) 및 마이그레이션(migration) 모듈(830)을 포함한다.As described with reference to FIG. 1 , the memory controller 800 is connected to a memory subsystem including the PRAM modules 122a and 122b and the DRAM module 122c through a plurality of channels 123a, 123b, and 123c. , a cache 810 , a cache control module 820 , and a migration module 830 .

메모리 서브시스템(122)은 PRAM 채널(123a, 123b)를 통해 각각 메모리 제어기(800)에 연결되는 PRAM 모듈(122a, 122b)과 DRAM 채널(123c)를 통해 메모리 제어기(800)에 연결되는 DRAM 모듈(122c)를 포함한다. 아래에서는 설명의 편의상 두 개의 PRAM 채널(123a, 123b), 즉 PRAM 모듈(122a, 122b)이 사용되는 예를 설명하지만, 본 발명은 이에 한정되지 않는다.Memory subsystem 122 includes PRAM modules 122a and 122b that are connected to memory controller 800 through PRAM channels 123a and 123b, respectively, and DRAM modules that are connected to memory controller 800 through DRAM channels 123c. (122c). Hereinafter, an example in which two PRAM channels 123a and 123b, ie, PRAM modules 122a and 122b are used will be described for convenience of description, but the present invention is not limited thereto.

캐시(810)는 CPU로부터 쓰기 요청을 수신하는 경우에 CPU에서 제공되는 원 데이터를 저장하며, 또한 캐시 정보를 저장하고 있다. 어떤 실시예에서, 캐시(810)는 원 데이터를 복수의 서브데이터(DATA_A, DATA_B)로 나누어서 저장할 수 있다. 캐시(810)는 PRAM보다 쓰기 속도가 빠른 메모리, 예를 들면 DRAM 또는 자기저항 랜덤 액세스 메모리(magnetoresistive random access memory, MRAM)를 사용한다. 이에 따라 메모리 시스템에서의 PRAM에 의한 쓰기 지연을 CPU로부터 감출 수 있다.The cache 810 stores raw data provided from the CPU when a write request is received from the CPU, and also stores cache information. In some embodiments, the cache 810 may divide and store the original data into a plurality of sub data DATA_A and DATA_B. The cache 810 uses a memory having a faster write speed than PRAM, for example, DRAM or magnetoresistive random access memory (MRAM). Accordingly, the write delay by the PRAM in the memory system can be hidden from the CPU.

마이그레이션 모듈(830)은 캐시(810)에 저장된 서브데이터(DATA_A, DATA_B)로부터 논블록킹 부호를 생성한다. 마이그레이션 모듈(830)은 서브데이터(DATA_A, DATA_B)를 각각 대응하는 PRAM 채널(123a, 123b)을 통해 PRAM 모듈(122a, 122b)에 쓰고, 논블록킹 부호를 DRAM 채널(123c)를 통해 DRAM 모듈(122c)에 써서, 캐시(810)의 데이터를 메모리 서브시스템(123)으로 마이그레이션한다. 어떤 실시예에서, 마이그레이션은 메모리 제어기(800)의 휴지(idle) 시간 동안 진행될 수 있다.The migration module 830 generates a non-blocking code from the sub-data DATA_A and DATA_B stored in the cache 810 . The migration module 830 writes the sub data DATA_A and DATA_B to the PRAM modules 122a and 122b through the corresponding PRAM channels 123a and 123b, respectively, and writes the non-blocking code to the DRAM module ( 122c ), migrating the data in cache 810 to memory subsystem 123 . In some embodiments, the migration may proceed during an idle time of the memory controller 800 .

한 실시예에서, 논블록킹 부호를 생성하는 부호화로 배타적 논리합(exclusive OR, XOR) 연산을 사용할 수 있다. 이 경우, 64 바이트의 원 데이터가 두 개의 32 바이트의 서브데이터(DATA_A, DATA_B)로 나누어지는 경우, 32 바이트의 서브데이터(DATA_A, DATA_B)를 비트단위(bitwise) XOR 연산하여서 32 바이트의 논블록킹 부호가 생성될 수 있다. 예를 들면, "001011100110"의 원 데이터가 "001011"의 DATA_A와 "100110"의 DATA_B로 나누어지는 경우, 논블록킹 부호는 "101101"로 생성될 수 있다. 이때, DATA_A와 논블록킹 부호의 XOR 연산을 통해 "100110"의 DATA_B를 복구하거나, DATA_B와 논블록킹 부호의 XOR 연산을 통해 "001011"의 DATA_A를 복구할 수 있다.In an embodiment, an exclusive OR (XOR) operation may be used as a coding for generating a non-blocking code. In this case, when 64-byte raw data is divided into two 32-byte sub-data (DATA_A, DATA_B), 32-byte non-blocking is performed by bitwise XOR operation on the 32-byte sub data (DATA_A, DATA_B). A code may be generated. For example, when the original data of “001011100110” is divided into DATA_A of “001011” and DATA_B of “100110”, the non-blocking code may be generated as “101101”. In this case, DATA_B of “100110” may be recovered through the XOR operation of DATA_A and the non-blocking code, or DATA_A of “001011” may be recovered through the XOR operation of DATA_B and the non-blocking code.

다른 실시예에서, XOR 외에 논블록킹 부호를 생성할 수 있는 다른 부호화가 사용될 수 있다. 이러한 부호화를 사용하는 경우, 논블록킹 부호의 크기를 XOR 연산에 비해서 줄일 수 있다.In another embodiment, other encodings capable of generating a non-blocking code other than XOR may be used. When such encoding is used, the size of the non-blocking code can be reduced compared to the XOR operation.

한 예로, 오류 정정 부호화(error correction coding, ECC)가 논블록킹 부호를 생성하는 부호화로 사용될 수 있다. 예를 들면, 저밀도 패러티 검사(low density parity check, LDPC) 부호화를 통해서 논블록킹 부호로 패러티 부호를 생성할 수 있다.As an example, error correction coding (ECC) may be used as a coding for generating a non-blocking code. For example, a parity code may be generated as a non-blocking code through low density parity check (LDPC) encoding.

다른 예로, 소거 부호화(erasure coding)가 논블록킹 부호를 생성하는 부호화로 사용될 수 있다. 소거 부호화에서는, 원 데이터를 n개의 데이터 청크(chunk)로 나누고, 소거 부호화 알고리즘을 사용해서 n개의 데이터 청크로부터 k개의 부호 청크를 생성할 수 있다. 사용 불가능한 데이터 청크의 개수만큼 부호 청크를 사용해서, n개의 청크를 통해 원 데이터를 복구할 수 있다.As another example, erasure coding may be used as coding for generating a non-blocking code. In erasure coding, original data is divided into n data chunks, and k code chunks can be generated from the n data chunks by using an erasure coding algorithm. By using signed chunks as many as the number of unavailable data chunks, the original data can be recovered through n chunks.

또 다른 실시예에서, 전형적인 PRAM 모듈 및 그 메모리 제어기에서 오류 정정을 위해 제공되는 부호화가 사용될 수 있다.In another embodiment, the encoding provided for error correction in a typical PRAM module and its memory controller may be used.

메모리 제어기(800)가 CPU로부터 읽기 요청을 수신하는 경우, 캐시 제어 모듈(820)은 록업 모듈(810)을 조회하여서 캐시 히트인지 캐시 미스인지를 판단한다. 읽기 요청이 히트이면 캐시 제어 모듈(820)은 캐시(810)로부터 데이터를 읽는다. 읽기 요청이 미스인 경우, 메모리 제어기(800)는 메모리 서브시스템(820)로부터 데이터를 읽는다. 이때, 두 PRAM 모듈(122a, 122b) 중 어느 하나의 PRAM 모듈(122a, 122b)로부터 서브데이터를 읽을 수 없는 경우가 발생할 수 있다. 예를 들면, PRAM 모듈(122b)에서 서브데이터(122b)가 저장된 파티션과 동일한 파티션에서 쓰기 동작이 진행 중이면(즉, 파티션 충돌이 발생하면), PRAM 모듈(122b)로부터 서브데이터(122b)를 읽을 수 없다. 이 경우, 메모리 제어기(800)는 PRAM 모듈(122a)로부터 서브데이터(DATA_A)를 읽고, DRAM 모듈(122c)로부터 논블록킹 부호를 읽는다. 그리고 메모리 제어기(800)의 캐시 제어 모듈(820)은 논블록킹 부호와 서브데이터(DATA_A)로부터 원 데이터를 재구성한다. 예를 들면, 논블록킹 부호 생성을 위한 부호화로 XOR 연산이 사용된 경우, 캐시 제어 모듈(820)은 서브데이터(DATA_A)와 논블록킹 부호를 XOR 연산하여서 원 데이터를 재구성할 수 있다.When the memory controller 800 receives a read request from the CPU, the cache control module 820 inquires the lockup module 810 to determine whether it is a cache hit or a cache miss. If the read request is a hit, the cache control module 820 reads data from the cache 810 . If the read request is a miss, the memory controller 800 reads data from the memory subsystem 820 . At this time, there may be a case in which sub data cannot be read from any one of the PRAM modules 122a and 122b of the two PRAM modules 122a and 122b. For example, when a write operation is in progress in the same partition as the partition in which the sub data 122b is stored in the PRAM module 122b (that is, when a partition conflict occurs), the sub data 122b is written from the PRAM module 122b. can't read In this case, the memory controller 800 reads the sub data DATA_A from the PRAM module 122a and reads the non-blocking code from the DRAM module 122c. In addition, the cache control module 820 of the memory controller 800 reconstructs the original data from the non-blocking code and the sub data DATA_A. For example, when an XOR operation is used as encoding for generating a non-blocking code, the cache control module 820 may reconstruct the original data by performing an XOR operation on the sub data DATA_A and the non-blocking code.

이와 같이, 본 발명의 한 실시예에 따르면, 캐시 미스로 인해 메모리 서브시스템으로부터 데이터를 읽는 경우에, 파티션 충돌과 같은 이유로 PRAM 모듈에서 데이터를 바로 읽을 수 없더라도, 쓰기 동작이 완료될 때까지 기다릴 필요 없이 논블록킹 부호를 이용해서 읽기 데이터를 제공할 수 있다.As such, according to one embodiment of the present invention, when data is read from the memory subsystem due to a cache miss, it is necessary to wait until the write operation is completed, even if data cannot be directly read from the PRAM module due to a partition conflict or the like. It is possible to provide read data using a non-blocking code without

도 9는 본 발명의 다른 실시예에 따른 메모리 시스템의 개략적인 블록도이다.9 is a schematic block diagram of a memory system according to another embodiment of the present invention.

도 9를 참고하면, 메모리 제어기(900)는 룩업 모듈(910), 캐시 제어 모듈(820) 및 마이그레이션 모듈(830)을 포함하며, 룩업 모듈(910)은 캐시(911) 및 마이그레이션 큐(912)를 포함한다.Referring to FIG. 9 , the memory controller 900 includes a lookup module 910 , a cache control module 820 , and a migration module 830 , and the lookup module 910 includes a cache 911 and a migration queue 912 . includes

캐시(911)는 원 데이터(911a) 외에 룩업 테이블(911b)을 저장하고 있을 수 있다. 어떤 실시예에서, 룩업 테이블(911b)은 캐시 인덱스에 대응하는 복수의 엔트리를 포함할 수 있으며, 각 엔트리는 캐시(911)의 저장 공간에서의 캐시 엔트리(예를 들면, 캐시 라인)을 지시할 수 있다. CPU로부터의 수신되는 I/O 요청은 태그와 캐시 인덱스로 분리될 수 있다. 태그와 캐시 인덱스는 캐시(911)의 크기에 의해 결정될 수 있다. 예를 들면, 512K개의 캐시 인덱스를 사용하는 경우, I/O 요청의 어드레스(예를 들면, 32 비트)는 옵셋(예를 들면, 5비트)을 제외하고, 19 비트의 캐시 인덱스와 3 비트의 태그로 분리될 수 있다. 이 경우, 룩업 테이블(911b)은 19 비트의 캐시 인덱스, 즉 512K개의 캐시 인덱스에 대응할 수 있도록 512K개의 엔트리를 가질 수 있다. 한 실시예에서, 각 엔트리는 태그 어레이, 카운터 및 유효 비트를 포함할 수 있다. 태그 어레이는 I/O 요청의 어드레스의 태그를 저장하고, 유효 비트는 대응하는 캐시 엔트리에 데이터가 존재하는지를 지시할 수 있다. 또한 카운터는 대응하는 캐시 엔트리의 액세스에 따라 갱신될 수 있다.The cache 911 may store the lookup table 911b in addition to the original data 911a. In some embodiments, lookup table 911b may include a plurality of entries corresponding to cache indexes, each entry pointing to a cache entry (eg, a cache line) in the storage space of cache 911 . can Incoming I/O requests from the CPU can be separated into tags and cache indexes. The tag and cache index may be determined by the size of the cache 911 . For example, when using 512K cache indexes, the address of the I/O request (e.g., 32 bits), excluding the offset (e.g., 5 bits), has a cache index of 19 bits and a can be separated by tags. In this case, the lookup table 911b may have 512K entries to correspond to a 19-bit cache index, that is, 512K cache indexes. In one embodiment, each entry may include a tag array, a counter, and a valid bit. The tag array stores tags of the address of the I/O request, and the valid bit may indicate whether data exists in the corresponding cache entry. The counter may also be updated upon access of the corresponding cache entry.

마이그레이션 큐(912)는 마이그레이션이 필요한 캐시 엔트리의 정보를 저장한다. 마이그레이션 큐(912)는 PRAM보다 쓰기 속도가 빠른 메모리, 예를 들면 DRAM 또는 MRAM으로 구현될 수 있다.The migration queue 912 stores information of cache entries requiring migration. The migration queue 912 may be implemented with a memory having a faster write speed than that of PRAM, for example, DRAM or MRAM.

캐시 제어 모듈(820)은 I/O 요청의 캐시 히트/미스 여부를 판단하기 위해서 룩업 모듈(910)로 조회(lookup) 명령을 전달할 수 있다. I/O 요청의 어드레스와 룩업 모듈(910)의 룩업 테이블(911b)에 기초해서 I/O 요청의 캐시 히트 또는 캐시 미스가 판단될 수 있다. 캐시 미스의 경우, 캐시 제어 모듈(820)은 빈 캐시 엔트리가 존재하는지를 판단하기 위해서 룩업 모듈(910)로 찾기(find) 명령을 전달할 수 있다. 룩업 모듈(910)의 룩업 테이블(911b)에 기초해서 빈 캐시 엔트리가 존재하는지 판단될 수 있다. 캐시 제어 모듈(820)은 룩업 테이블(911b)의 갱신을 위해 갱신 명령을 룩업 모듈(910)로 전달할 수 있다. 이에 따라, 캐시 히트의 경우 캐시 히트의 캐시 엔트리에 대응하는 룩업 테이블의 카운터가 갱신될 수 있으며, 캐시 미스의 경우 룩업 테이블에 새로운 엔트리가 추가되고 카운터가 갱신될 수 있다.The cache control module 820 may transmit a lookup command to the lookup module 910 to determine whether the I/O request is a cache hit/miss. A cache hit or a cache miss of the I/O request may be determined based on the address of the I/O request and the lookup table 911b of the lookup module 910 . In case of a cache miss, the cache control module 820 may transmit a find command to the lookup module 910 to determine whether an empty cache entry exists. It may be determined whether an empty cache entry exists based on the lookup table 911b of the lookup module 910 . The cache control module 820 may transmit an update command to the lookup module 910 to update the lookup table 911b. Accordingly, in the case of a cache hit, the counter of the lookup table corresponding to the cache entry of the cache hit may be updated, and in the case of a cache miss, a new entry may be added to the lookup table and the counter may be updated.

마이그레이션 모듈(830)은 마이그레이션을 시작하기 위해서 마이그레이션 큐(912)에서 헤드(head)가 포인트하는 정보(즉, 헤드 정보)를 읽기 위해서 룩업 모듈(910)로 읽기 명령을 전달할 수 있다. 그러면 룩업 모듈(910)은 마이그레이션 큐(912)에서 헤드 정보를 읽고, 헤드 정보에 해당하는 캐시 엔트리에 저장된 데이터의 마이그레이션이 시작될 수 있다. 마이그레이션 모듈(830)은 마이그레이션이 완료된 데이터를 캐시 엔트리에서 제거하기 위해서 제거 명령을 룩업 모듈(910)로 전달할 수 있다. 그러면 룩업 모듈(910)은 마이그레이션 큐(912)에서 헤드에 해당하는 큐 엔트리를 제거하고 다음 큐 엔트리로 헤드를 이동하고, 해당 캐시 엔트리에서 데이터를 제거할 수 있다. 룩업 모듈(910)은 새로운 엔트리가 추가되는 경우(즉, 캐시 엔트리에 새로운 데이터가 저장되는 경우), 삽입(insert) 명령을 통해 마이그레이션 큐(912)에 새로 입력된 캐시 엔트리의 정보를 추가할 수 있다.The migration module 830 may transmit a read command to the lookup module 910 to read information (ie, head information) pointed to by a head in the migration queue 912 to start migration. Then, the lookup module 910 reads head information from the migration queue 912 , and migration of data stored in a cache entry corresponding to the head information may start. The migration module 830 may transmit a remove command to the lookup module 910 in order to remove migration-completed data from the cache entry. Then, the lookup module 910 may remove the queue entry corresponding to the head from the migration queue 912 , move the head to the next queue entry, and remove data from the corresponding cache entry. When a new entry is added (that is, when new data is stored in the cache entry), the lookup module 910 may add information of the cache entry newly input to the migration queue 912 through an insert command. have.

메모리 제어기(900)는 PRAM 모듈(122a, 122b) 및 DRAM 모듈(122c)를 각각 제어하기 위한 메모리 제어 유닛(MCU)(951, 952, 953)을 더 포함할 수 있다. 또한 메모리 제어기(900)는 캐시 제어 모듈(820)로부터의 읽기/쓰기에 따른 메모리 요청 또는 마이그레이션 제어 모듈(830)로부터의 마이그레이션에 따른 메모리 요청을 대응하는 메모리 제어 유닛(MCU)(951, 952, 953)으로 전달하기 위한 다중화기(940)를 더 포함할 수 있다.The memory controller 900 may further include memory control units (MCUs) 951 , 952 , and 953 for controlling the PRAM modules 122a and 122b and the DRAM module 122c, respectively. In addition, the memory controller 900 is a memory control unit (MCU) 951, 952, corresponding to the memory request according to the read/write from the cache control module 820 or the memory request according to the migration from the migration control module (830) 953) may further include a multiplexer 940 for forwarding.

도 10은 본 발명의 한 실시예에 따른 메모리 제어기에서 캐시 제어 모듈의 동작을 나타내는 흐름도이다.10 is a flowchart illustrating an operation of a cache control module in a memory controller according to an embodiment of the present invention.

도 10을 참고하면, 캐시 제어 모듈(도 8 또는 도 9의 820)은 캐시(도 8의 810 또는 도 9의 911)의 캐시 정보를 참조해서 CPU로부터의 요청이 캐시 히트인지 캐시 미스인지를 판단한다(S1010). 캐시 히트인 경우(S1010: 예), 캐시 제어 모듈(820)은 캐시를 통해 요청에 해당하는 서비스를 제공한다(S1020, S1030, S1035). 즉, 요청이 읽기 요청이면(S1020: 예), 캐시 제어 모듈(820)은 캐시(810 또는 911)로부터 읽기 요청에 대응하는 데이터를 읽는다(S1030). 요청이 쓰기 요청이면(S1020: 아니요), 캐시 제어 모듈(820)은 캐시(810 또는 911)에 쓰기 요청에 대응하는 데이터를 쓴다(S1035). 어떤 실시예에서, 캐시 제어 모듈(820)은 캐시 히트에 따라 캐시 정보를 갱신할 수 있다(S1050).Referring to FIG. 10 , the cache control module ( 820 in FIG. 8 or 9 ) determines whether a request from the CPU is a cache hit or a cache miss with reference to cache information of a cache ( 810 in FIG. 8 or 911 in FIG. 9 ) do (S1010). In case of a cache hit (S1010: Yes), the cache control module 820 provides a service corresponding to the request through the cache (S1020, S1030, S1035). That is, if the request is a read request (S1020: Yes), the cache control module 820 reads data corresponding to the read request from the cache 810 or 911 (S1030). If the request is a write request (S1020: No), the cache control module 820 writes data corresponding to the write request to the cache 810 or 911 (S1035). In some embodiments, the cache control module 820 may update cache information according to a cache hit ( S1050 ).

캐시 미스인 경우(S1010: 아니요), 요청이 쓰기 요청이면(S1040: 예), 캐시 제어 모듈(820)은 캐시 정보를 참조해서 캐시(810 또는 911)에 빈 엔트리(즉, 캐시 라인)가 있는지 판단한다(S1045). 캐시(810 또는 911)에 빈 엔트리가 있으면(S1045: 예), 캐시 제어 모듈(820)은 캐시(즉, 캐시의 빈 엔트리)(810 또는 911)에 쓰기 요청에 해당하는 데이터를 쓴다(S1050). 어떤 실시예서, 캐시 제어 모듈(820)은 데이터가 쓰여진 엔트리에 대한 정보를 캐시 정보에 추가하여서 캐시 정보를 갱신할 수 있다(S1050). 캐시(810 또는 911)에 빈 엔트리가 없으면, 캐시(810 또는 911)에서 메모리 서브시스템(도 8의 122)의 PRAM 모듈로 데이터가 써지는 중(즉, 마이그레이션되는 중)이므로, 캐시 제어 모듈(820)은 PRAM 모듈로의 쓰기가 완료될 때까지 대기한다(S1055: 아니요)). PRAM 모듈로의 쓰기가 완료되어 캐시(810 또는 911)에 빈 엔트리가 생긴 후에(S1055: 예), 캐시 제어 모듈(820)은 캐시(810 또는 911)의 빈 엔트리에 쓰기 요청에 해당하는 데이터를 쓴다(S1050).In the case of a cache miss (S1010: No), if the request is a write request (S1040: Yes), the cache control module 820 refers to the cache information to see if there is an empty entry (ie, a cache line) in the cache 810 or 911 It is determined (S1045). If there is an empty entry in the cache 810 or 911 (S1045: Yes), the cache control module 820 writes data corresponding to the write request to the cache (ie, an empty entry in the cache) 810 or 911 (S1050) . In some embodiments, the cache control module 820 may update the cache information by adding information about an entry in which data is written to the cache information ( S1050 ). If there is no empty entry in the cache 810 or 911, the cache control module ( 820) waits until writing to the PRAM module is completed (S1055: No)). After writing to the PRAM module is completed and an empty entry is made in the cache 810 or 911 (S1055: Yes), the cache control module 820 writes data corresponding to the write request to the empty entry of the cache 810 or 911. Write (S1050).

캐시 미스인 경우, 요청이 읽기 요청이면(S1040: 아니요), 캐시 제어 모듈(820)은 현재 메모리 서브시스템(122)이 PRAM 모듈(도 8 또는 도 9의 122a, 122b)로부터 원 데이터에 해당하는 모든 서브데이터를 읽을 수 있는 조건을 만족하는지를 판단한다(S1060). 어떤 실시예에서, PRAM 모듈(122a, 122b) 모두에 쓰기가 진행 중이지 않으면, 메모리 서브시스템(122)이 PRAM 모듈(122a, 122b)로부터 원 데이터에 해당하는 모든 서브데이터를 읽을 수 있다. 또는 PRAM 모듈(122a, 122b) 중 어느 하나에 쓰기가 진행 중이더라도, 쓰기 진행 중인 파티션과 서브데이터를 읽을 파티션이 충돌하지 않는다면, 메모리 서브시스템(122)이 PRAM 채널(도 8 또는 도 9의 123a, 123b)를 통해 PRAM 모듈(122a, 122b)로부터 원 데이터에 해당하는 모든 서브데이터를 읽을 수 있다.In the case of a cache miss, if the request is a read request (S1040: No), the cache control module 820 indicates that the current memory subsystem 122 corresponds to the original data from the PRAM module (122a, 122b in FIG. 8 or 9). It is determined whether a condition for reading all sub data is satisfied (S1060). In some embodiments, if no writes are in progress to either of the PRAM modules 122a and 122b, the memory subsystem 122 may read all subdata corresponding to the original data from the PRAM modules 122a, 122b. Alternatively, even when writing to any one of the PRAM modules 122a and 122b is in progress, if the partition in progress and the partition from which the sub data is to be read do not collide, the memory subsystem 122 transmits the PRAM channel (123a in FIG. 8 or 9). , 123b), all sub data corresponding to the original data can be read from the PRAM modules 122a and 122b.

메모리 서브시스템(122)이 PRAM 모듈(122a, 122b)로부터 원 데이터에 해당하는 모든 서브데이터를 읽을 수 있으면(S1060: 예), 캐시 제어 모듈(820)은 PRAM 모듈(122a, 122b)로부터 서브데이터를 읽어서 CPU로 전달한다(S1070). 메모리 서브시스템(122)이 일부 PRAM 모듈(예를 들면, 122b)로부터 서브데이터를 읽을 수 없으면(S1060: 아니요), 캐시 제어 모듈(820)은 데이터 읽기가 가능한 PRAM 모듈(122a)로부터 서브데이터를 읽고, DRAM 채널(도 8 또는 도 9의 123c)을 통해 DRAM 모듈(도 8 또는 도 9의 122c)로부터 논블록킹 부호를 읽는다(S1075). 캐시 제어 모듈(820)은 서브데이터와 논블록킹 부호로부터 원 데이터를 재구성하여 CPU로 전달한다(S1075). If the memory subsystem 122 can read all the sub data corresponding to the original data from the PRAM modules 122a and 122b (S1060: Yes), the cache control module 820 sends the sub data from the PRAM modules 122a and 122b. is read and transmitted to the CPU (S1070). If the memory subsystem 122 cannot read the sub data from some PRAM module (eg, 122b) (S1060: No), the cache control module 820 reads the sub data from the PRAM module 122a capable of reading data. Read, and read the non-blocking code from the DRAM module (122c of FIG. 8 or 9) through the DRAM channel (123c of FIG. 8 or 9) (S1075). The cache control module 820 reconstructs the original data from the sub data and the non-blocking code and transmits it to the CPU (S1075).

도 11은 본 발명의 한 실시예에 따른 메모리 제어기에서 마이그레이션 모듈의 동작을 나타내는 흐름도이다.11 is a flowchart illustrating an operation of a migration module in a memory controller according to an embodiment of the present invention.

도 11을 참고하면, 마이그레이션 모듈(도 8 또는 도 9의 830)은 캐시(810 또는 911)에 마이그레이션을 시작할 데이터가 저장되어 있는지를 판단한다(S1110). 어떤 실시예에서, 마이그레이션 모듈(830)은 마이그레이션 큐(도 9의 912)가 비어 있는지를 확인할 수 있다(S1110). 마이그레이션 큐(912)가 비어 있으면, 즉 캐시(810 또는 911)에 마이그레이션할 데이터가 없으면(S1110: 예), 마이그레이션 모듈(830)은 마이그레이션 큐(912)에 새로운 캐시 엔트리의 정보가 추가될 때까지(즉, 캐시(911)에 새로운 데이터가 저장될 때까지) 대기한다.Referring to FIG. 11 , the migration module ( 830 of FIG. 8 or 9 ) determines whether data to start migration is stored in the cache 810 or 911 ( S1110 ). In some embodiments, the migration module 830 may check whether the migration queue ( 912 of FIG. 9 ) is empty ( S1110 ). If the migration queue 912 is empty, that is, if there is no data to be migrated in the cache 810 or 911 (S1110: Yes), the migration module 830 waits until information of a new cache entry is added to the migration queue 912 . It waits (that is, until new data is stored in the cache 911).

마이그레이션 큐(912)가 비어 있지 않으면, 즉 캐시(810 또는 911)에 마이그레이션할 데이터가 있으면(S1110: 아니요), 마이그레이션 모듈(830)은 캐시(810 또는 911)로부터 마이그레이션할 데이터를 읽고, 원 데이터가 나누어진 복수의 서브데이터로부터 논블록킹 부호를 생성한다(S1120). 어떤 실시예에서, 마이그레이션 모듈(830)은 마이그레이션 큐(912)에서 헤드 정보에 대응하는 캐시 엔트리에 저장된 데이터를 읽을 수 있다(S1120). 마이그레이션 모듈(830)은 서브데이터를 대응하는 PRAM 채널을 통해 대응하는 PRAM 모듈에 쓰고, 논블록킹 부호를 DRAM 채널(도 8 또는 도 9의 123c)을 통해 DRAM 모듈(도 8 또는 도 9의 122c)에 쓴다(S1130). 어떤 실시예에서, 마이그레이션 모듈(830)은 복수의 서브데이터 중 일부 서브데이터만 대응하는 PRAM 채널을 통해 대응하는 PRAM 모듈에 쓰고, 논블록킹 부호를 DRAM 채널을 통해 DRAM 모듈에 쓸 수 있다(S1130). 한 실시예에서, 원 데이터가 두 개의 서브데이터로 나누어지는 경우, 마이그레이션 모듈(830)은 하나의 서브데이터를 PRAM 채널(도 8 또는 도 9의 123a)을 통해 대응하는 PRAM 모듈(도 8 또는 도 9의 122a)에 쓸 수 있다(S1130). 모든 서브데이터를 모든 PRAM 채널을 통해 PRAM 모듈로 쓰는 경우, 읽기 요청이 발생했을 때 읽기 요청과 파티션 충돌이 발생하는 경우 읽기 요청이 차단될 수 있기 때문에, 일부 서브데이터에 대해서만 쓰기가 진행될 수 있다. 그러면 읽기 요청에 대해서 PRAM 모듈(122a)에서 파티션 충돌이 발생하더라도, 쓰기 진행 중이지 않은 다른 PRAM 모듈(도 8 또는 도 9의 122b)에서 읽은 데이터와 논블록킹 부호로 원 데이터를 재구성할 수 있다.If the migration queue 912 is not empty, that is, if there is data to be migrated in the cache 810 or 911 (S1110: No), the migration module 830 reads the data to be migrated from the cache 810 or 911, and the raw data A non-blocking code is generated from a plurality of divided sub data (S1120). In some embodiments, the migration module 830 may read data stored in a cache entry corresponding to the head information in the migration queue 912 ( S1120 ). The migration module 830 writes sub data to the corresponding PRAM module through the corresponding PRAM channel, and writes the non-blocking code to the DRAM module (122c in FIG. 8 or 9) through the DRAM channel (123c in FIG. 8 or 9). Write to (S1130). In some embodiments, the migration module 830 may write only some sub data among the plurality of sub data to the corresponding PRAM module through the corresponding PRAM channel, and write the non-blocking code to the DRAM module through the DRAM channel ( S1130 ). . In one embodiment, when the raw data is divided into two sub data, the migration module 830 transfers one sub data to the corresponding PRAM module (FIG. 8 or FIG. It can be written to 122a of 9 (S1130). If all sub-data is written to the PRAM module through all PRAM channels, the read request may be blocked if a read request and a partition conflict occur when a read request occurs, so writing may proceed only for some sub-data. Then, even if a partition collision occurs in the PRAM module 122a for a read request, the original data can be reconstructed with the non-blocking code and data read from another PRAM module (122b of FIG. 8 or 9) that is not being written.

어떤 실시예에서, 쓰기 동작이 수행된 PRAM 모듈(122a)에서 쓰기가 완료되면(S1140: 예), 마이그레이션 모듈(830)은 나머지 일부 서브데이터를 대응하는 PRAM 채널을 통해 대응하는 PRAM 모듈에 쓸 수 있다(S1160). 한 실시예에서, 원 데이터가 두 개의 서브데이터로 나누어지는 경우, 마이그레이션 모듈(830)은 나머지 서브데이터를 PRAM 채널(도 8의 123b)을 통해 대응하는 PRAM 모듈(122b)에 쓸 수 있다(S1160).In some embodiments, when writing is completed in the PRAM module 122a on which the write operation has been performed (S1140: Yes), the migration module 830 may write the remaining partial sub data to the corresponding PRAM module through the corresponding PRAM channel. There is (S1160). In one embodiment, when the original data is divided into two sub data, the migration module 830 may write the remaining sub data to the corresponding PRAM module 122b through the PRAM channel (123b in FIG. 8 ) ( S1160 ). ).

어떤 실시예에서, 나머지 일부 서브데이터를 대응하는 PRAM 모듈에 쓰기 전에(S1160), 마이그레이션을 진행하고 있는 데이터에 대해서 캐시 히트가 발생하면(S1150: 예), 마이그레이션 모듈(830)은 나머지 일부 서브데이터에 대해서 쓰기를 진행하지 않고 마이그레이션을 종료할 수 있다. 캐시(911)의 데이터를 PRAM 모듈로 마이그레이션하는 중에, 해당 데이터에 대해서 캐시 히트가 발생하면, 요청한 데이터를 우선적으로 처리할 필요가 있기 때문에 마이그레이션을 종료할 수 있다. 캐시 히트가 발생하지 않으면(S1150: 아니요), 마이그레이션 모듈(830)은 나머지 일부 서브데이터를 대응하는 PRAM 채널을 통해 대응하는 PRAM 모듈에 쓸 수 있다(S1160).In some embodiments, before writing the remaining partial sub data to the corresponding PRAM module (S1160), if a cache hit occurs with respect to the data being migrated (S1150: Yes), the migration module 830 performs the remaining partial sub data Migration can be terminated without writing to the . If a cache hit occurs with respect to the data while migrating the data of the cache 911 to the PRAM module, the migration can be terminated because the requested data needs to be processed preferentially. If the cache hit does not occur (S1150: No), the migration module 830 may write the remaining partial sub data to the corresponding PRAM module through the corresponding PRAM channel (S1160).

나머지 일부 서브데이터의 쓰기가 완료하면(S1170: 예), 마이그레이션 모듈(830)은 캐시(911)에서 해당하는 캐시 엔트리의 데이터를 삭제한다(S1180). 어떤 실시예에서, 마이그레이션 모듈(830)은 마이그레이션 큐(912)에서 큐 엔트리를 삭제할 수 있다(S1180).When writing of the remaining partial sub data is completed (S1170: Yes), the migration module 830 deletes data of a corresponding cache entry from the cache 911 (S1180). In some embodiments, the migration module 830 may delete a queue entry from the migration queue 912 ( S1180 ).

이와 같이, 본 발명의 한 실시예에 따르면, 쓰기 지연이 긴 PRAM 모듈 대신에 캐시에서 먼저 쓰기가 진행되므로, PRAM 모듈의 긴 쓰기 지연을 감출 수 있다. 또한 파티션 충돌이 있는 쓰기와 읽기가 동시에 진행될 수 있으므로, 읽기 요청의 차단 없이 읽기 요청의 데이터가 제공될 수 있다. 또한 메모리 제어기의 휴지 시간 동안 캐시의 데이터를 PRAM으로 마이그레이션해서 캐시를 비울 수 있으므로, 메모리 시스템의 전체적인 응답 속도를 높일 수 있다. 이에 따라, 본 발명의 한 실시예에 따른 메모리 시스템을 CPU의 메인 메모리로 사용할 수 있으며, 또한 DRAM과 달리 비휘발성 메모리 시스템을 제공할 수 있다.As described above, according to an embodiment of the present invention, since writing is performed first in the cache instead of the PRAM module having a long write delay, it is possible to hide the long write delay of the PRAM module. In addition, since write and read with partition conflict can proceed simultaneously, data of a read request can be provided without blocking the read request. In addition, since the cache can be emptied by migrating the data in the cache to the PRAM during the idle time of the memory controller, the overall response speed of the memory system can be increased. Accordingly, the memory system according to an embodiment of the present invention can be used as the main memory of the CPU, and, unlike the DRAM, a nonvolatile memory system can be provided.

일반적으로, 메모리 연속성(persistency)을 제공하기 위해서, 컴퓨팅 디바이스의 전원 장애 등으로 셧다운될 때 데이터가 유지되어야 할 뿐만 아니라, 컴퓨팅 디바이스가 다시 부팅되었을 때 정지되었던 위치에서 다시 동작이 수행될 수 있어야 한다. 이를 위해, 컴퓨팅 디바이스의 재부팅 시에 로그 영역(log area)을 먼저 탐색해서 종료되었던 시점으로 복구하고 컴퓨팅 디바이스를 구동하는 로깅 메커니즘(logging mechanism)이 사용될 수 있다.In general, to provide memory persistency, data must be retained when the computing device is shut down due to a power failure, etc. . To this end, when the computing device is rebooted, a logging mechanism that searches a log area first, restores it to a point in time at which it was terminated, and drives the computing device may be used.

도 12에 도시한 것처럼, 로깅 메커니즘을 위해 PRAM 모듈(1200)에는 데이터 저장 영역(1210) 외에 로그 영역(1220)이 존재한다. 메모리 제어기는 CPU로부터 로그 데이터(log data)를 위한 캐시 라인 플러시 명령(clflush)을 수신하는 경우, 캐시의 데이터를 로그 영역에 저장한다. 다음 메모리 제어기는 데이터를 위한 캐시 라인 플러시 명령(clflush)과 펜스 명령(sfense)을 수신하는 경우, 캐시의 데이터를 PRAM 모듈의 데이터 저장 영역에 저장한다. 따라서 컴퓨팅 디바이스가 셧다운된 후에 재부팅되는 경우, 로그 영역의 로그 데이터가 정상적이라면 로그 데이터로 데이터를 복구할 수 있다. 로그 영역의 로그 데이터가 비정상적이라면 명령이 실행되지 않은 것으로 판단하고 무시할 수 있다. 이 경우, 캐시의 데이터를 PRAM의 데이터 저장 영역에 저장하기 전에 로그 데이터를 로그 영역(1220)에 중복해서 저장하므로, 데이터의 중복 문제가 발생하고, 명령 실행에서 속도 저하가 발생할 수 있다.As shown in FIG. 12 , a log area 1220 exists in addition to the data storage area 1210 in the PRAM module 1200 for the logging mechanism. When the memory controller receives a cache line flush command (clflush) for log data from the CPU, the memory controller stores the data of the cache in the log area. When the next memory controller receives a cache line flush command (clflush) and a fence command (sfense) for data, the memory controller stores the data in the cache in the data storage area of the PRAM module. Therefore, when the computing device is rebooted after being shut down, if the log data in the log area is normal, the data can be recovered as the log data. If the log data in the log area is abnormal, it is determined that the command has not been executed and can be ignored. In this case, since the log data is redundantly stored in the log area 1220 before the data of the cache is stored in the data storage area of the PRAM, a data duplication problem may occur and a decrease in the speed of instruction execution may occur.

그러나 본 발명의 한 실시예에 따르면, 마이그레이션을 통해 캐시(도 8의 810 또는 도 9의 911)에 저장된 데이터가 지속적으로 비휘발성 메모리인 PRAM 모듈에 기록될 수 있다. 이 경우, 캐시(810 또는 911)로 DRAM과 같은 휘발성 메모리가 사용하는 경우, 전원 장애가 발생하더라도 백업용 배터리를 통해 캐시의 데이터가 사라지기 전에 PRAM 모듈로 데이터를 기록할 수 있으므로, 로깅 메커니즘을 사용하지 않더라도 전원 장애로 인한 메모리 연속성을 제공할 수 있다. 어떤 실시예에서, 캐시(810 또는 911)가 비휘발성 메모리, 예를 들면 MRAM으로 구현될 수 있다. 이 경우, 전원 장애 등으로 컴퓨팅 디바이스가 셧다운되더라도 비휘발성인 캐시(810, 911)에 데이터가 보존되어 있으므로, 로깅 메커니즘 없이 메모리 연속성을 제공할 수 있으며, 또한 백업용 배터리를 사용하지 않을 수도 있다.However, according to an embodiment of the present invention, data stored in the cache ( 810 in FIG. 8 or 911 in FIG. 9 ) may be continuously written to the non-volatile memory PRAM module through migration. In this case, if a volatile memory such as DRAM is used as the cache (810 or 911), data can be written to the PRAM module before the data in the cache is lost through the backup battery even in the event of a power failure, so the logging mechanism is not used. Even if it does, it can provide memory continuity due to power failure. In some embodiments, cache 810 or 911 may be implemented with non-volatile memory, for example MRAM. In this case, even if the computing device is shut down due to a power failure, etc., since data is retained in the non-volatile caches 810 and 911, memory continuity may be provided without a logging mechanism, and a backup battery may not be used.

이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto. is within the scope of the right.

Claims (22)

복수의 제1 메모리 모듈과 제2 메모리 모듈을 포함하는 메모리 서브시스템, 그리고
상기 복수의 제1 메모리 모듈과 상기 제2 메모리 모듈에 복수의 채널을 통해 연결되는 메모리 제어기를 포함하며,
각 제1 메모리 모듈의 메모리 셀 어레이는 복수의 파티션으로 분할되어 있고,
상기 메모리 제어기는, 원 데이터가 나누어진 복수의 서브데이터로부터 논블록킹 부호를 생성하고, 상기 논블록킹 부호를 상기 제2 메모리 모듈에 쓰고, 상기 복수의 서브데이터를 각각 상기 복수의 제1 메모리 모듈에 쓰며, 읽기 요청 시에 소정 조건 하에서 상기 복수의 제1 메모리 모듈 중 일부 제1 메모리 모듈로부터 상기 서브 데이터를 읽지 않고 나머지 일부 제1 메모리 모듈로부터 읽은 상기 복수의 서브데이터 중 일부 서브데이터와 상기 제2 메모리 모듈로부터 읽은 상기 논블록킹 부호로부터 상기 원 데이터를 재구성하며,
상기 소정 조건은 상기 복수의 서브데이터 중 다른 일부 서브데이터가 저장된 파티션에서 쓰기 동작이 진행 중인 조건을 포함하고,
상기 읽기 요청 시에, 상기 일부 제1 메모리 모듈의 상기 복수의 파티션 중에서 상기 다른 일부 서브데이터가 저장된 파티션 외의 다른 파티션에서 쓰기 동작이 진행 중인 경우, 상기 메모리 제어기는 상기 일부 제1 메모리 모듈로부터 상기 다른 일부 서브데이터를 읽는
메모리 시스템.
a memory subsystem comprising a plurality of first and second memory modules; and
a memory controller connected to the plurality of first memory modules and the second memory module through a plurality of channels,
The memory cell array of each first memory module is divided into a plurality of partitions,
The memory controller generates a non-blocking code from a plurality of sub data in which original data is divided, writes the non-blocking code to the second memory module, and writes the plurality of sub data to the plurality of first memory modules, respectively write and do not read the sub data from some first memory modules of the plurality of first memory modules under a predetermined condition when a read request is made; Reconstructs the original data from the non-blocking code read from the memory module,
The predetermined condition includes a condition that a write operation is in progress in a partition in which some other sub data among the plurality of sub data is stored,
At the time of the read request, if a write operation is in progress in a partition other than the partition in which the other partial sub data is stored among the plurality of partitions of the partial first memory module, the memory controller is configured to read some sub data
memory system.
제1항에서,
상기 메모리 제어기는, 중앙 처리 유닛(central processing unit, CPU)으로부터의 쓰기 요청에 따라 상기 쓰기 요청에 해당하는 데이터를 저장하는 캐시를 포함하는 메모리 시스템.
In claim 1,
wherein the memory controller includes a cache configured to store data corresponding to the write request in response to a write request from a central processing unit (CPU).
제2항에서,
상기 원 데이터가 상기 캐시에 저장되어 있는 경우, 상기 메모리 제어기는, 상기 캐시에 저장된 상기 원 데이터를 상기 메모리 서브시스템으로 마이그레이션할 때, 상기 논블록킹 부호를 상기 제2 메모리 모듈에 쓰고, 상기 복수의 서브데이터를 각각 상기 복수의 제1 메모리 모듈에 쓰는 메모리 시스템.
In claim 2,
When the raw data is stored in the cache, the memory controller is configured to, when migrating the raw data stored in the cache to the memory subsystem, write the non-blocking code to the second memory module, and A memory system for writing sub data to the plurality of first memory modules, respectively.
제3항에서,
상기 복수의 서브데이터는 제1 서브데이터와 제2 서브데이터를 포함하며,
상기 복수의 서브데이터를 각각 상기 복수의 제1 메모리 모듈에 쓸 때, 상기 메모리 제어기는 상기 제1 서브데이터를 상기 복수의 제1 메모리 모듈 중 대응하는 제1 메모리 모듈에 쓰고, 상기 제1 서브데이터의 쓰기 완료된 후에 상기 제2 서브데이터를 상기 복수의 제1 메모리 모듈 중 대응하는 제1 메모리 모듈에 쓰는
메모리 시스템.
In claim 3,
The plurality of sub data includes first sub data and second sub data,
When each of the plurality of sub data is written to the plurality of first memory modules, the memory controller writes the first sub data to a corresponding first memory module of the plurality of first memory modules, and the first sub data writing the second sub data to a corresponding first memory module among the plurality of first memory modules after the writing of
memory system.
제4항에서,
상기 복수의 서브데이터가 상기 복수의 제1 메모리 모듈로 쓰는 것인 완료된 후, 상기 메모리 제어기는 상기 원 데이터를 상기 캐시에서 제거하는 메모리 시스템.
In claim 4,
and after completion of writing the plurality of sub-data to the first plurality of memory modules, the memory controller removes the original data from the cache.
제4항에서,
상기 제1 서브데이터를 상기 대응하는 제1 메모리 모듈에 쓸 때, 상기 메모리 제어기는 상기 논블록킹 부호를 상기 제2 메모리 모듈에 쓰는 메모리 시스템.
In claim 4,
When writing the first sub-data to the corresponding first memory module, the memory controller writes the non-blocking code to the second memory module.
복수의 제1 메모리 모듈과 제2 메모리 모듈을 포함하는 메모리 서브시스템,
상기 복수의 제1 메모리 모듈과 상기 제2 메모리 모듈에 복수의 채널을 통해 연결되는 메모리 제어기, 그리고
중앙 처리 유닛(central processing unit, CPU)으로부터의 쓰기 요청에 따라 상기 쓰기 요청에 해당하는 데이터를 저장하는 캐시를 포함하며,
상기 메모리 제어기는, 상기 캐시에 저장된 원 데이터가 나누어진 복수의 서브데이터로부터 논블록킹 부호를 생성하고, 상기 원 데이터의 마이그레이션 시에 상기 논블록킹 부호를 상기 제2 메모리 모듈에 쓰고, 상기 복수의 서브데이터를 각각 상기 복수의 제1 메모리 모듈에 쓰며, 읽기 요청 시에 소정 조건 하에서 상기 복수의 제1 메모리 모듈 중 일부 제1 메모리 모듈로부터 상기 서브 데이터를 읽지 않고 나머지 일부 제1 메모리 모듈로부터 읽은 상기 복수의 서브데이터 중 일부 서브데이터와 상기 제2 메모리 모듈로부터 읽은 상기 논블록킹 부호로부터 상기 원 데이터를 재구성하며,
상기 원 데이터를 상기 메모리 서브시스템으로 마이그레이션하는 동안 상기 원 데이터에 대해서 캐시 히트가 발생하는 경우, 상기 메모리 제어기는 상기 원 데이터의 마이그레이션을 중지하는 메모리 시스템.
a memory subsystem comprising a plurality of first and second memory modules;
a memory controller connected to the plurality of first memory modules and the second memory module through a plurality of channels; and
a cache for storing data corresponding to the write request in response to a write request from a central processing unit (CPU);
The memory controller generates a non-blocking code from a plurality of sub data obtained by dividing the original data stored in the cache, writes the non-blocking code to the second memory module when the original data is migrated, and Writes data to the plurality of first memory modules, respectively, and reads the sub data from some of the plurality of first memory modules under a predetermined condition at the time of a read request without reading the sub data from some of the remaining first memory modules Reconstructs the original data from some of the sub data of the sub data and the non-blocking code read from the second memory module,
and when a cache hit occurs on the raw data while migrating the raw data to the memory subsystem, the memory controller stops the migration of the raw data.
삭제delete 제1항에서,
상기 메모리 제어기는, 중앙 처리 유닛(central processing unit, CPU)으로부터의 쓰기 요청에 따라 상기 쓰기 요청에 해당하는 데이터를 저장하는 캐시를 포함하며,
상기 소정 조건은 상기 원 데이터의 상기 읽기 요청에 대해서 캐시 미스가 발생하는 조건을 더 포함하는 메모리 시스템.
In claim 1,
The memory controller includes a cache for storing data corresponding to the write request in response to a write request from a central processing unit (CPU),
The predetermined condition further includes a condition in which a cache miss occurs in response to the read request of the original data.
제2항에서,
상기 캐시는 비휘발성 메모리로 구현되는 메모리 시스템.
In claim 2,
The cache is a memory system implemented as a non-volatile memory.
제1항에서,
상기 메모리 시스템은 컴퓨팅 디바이스의 CPU에 의해 사용되는 메인 메모리인, 메모리 시스템.
In claim 1,
wherein the memory system is main memory used by a CPU of a computing device.
제1항에서,
상기 복수의 제1 메모리 모듈은 상변화 메모리에 의해 구현되는 메모리 시스템.
In claim 1,
The plurality of first memory modules is a memory system implemented by a phase change memory.
제1 메모리 모듈, 제2 메모리 모듈, 그리고 제3 메모리 모듈을 포함하는 메모리 서브시스템에 복수의 채널을 통해 연결되는 메모리 제어 장치로서,
중앙 처리 유닛(central processing unit, CPU)로부터의 쓰기 요청에 따라 상기 쓰기 요청에 해당하는 데이터를 저장하는 캐시, 그리고
상기 캐시에 저장된 원 데이터를 제1 서브데이터와 제2 서브데이터를 포함하는 복수의 서브데이터로 나누고, 상기 복수의 서브데이터로부터 논블록킹 부호를 생성하며, 마이그레이션 시에 상기 제1 서브데이터를 상기 제1 메모리 모듈에 쓰고, 상기 제2 서브데이터를 상기 제2 메모리 모듈에 쓰고, 상기 논블록킹 부호를 상기 제3 메모리 모듈에 쓰고, 상기 CPU로부터의 읽기 요청 시에 소정 조건 하에서 상기 제2 메모리 모듈로부터 상기 제2 서브데이터를 읽지 않고 상기 제1 메모리 모듈로부터 읽은 상기 제1 서브데이터와 상기 제3 메모리 모듈로부터 읽은 상기 논블록킹 부호로부터 상기 원 데이터를 재구성하는 메모리 제어기를 포함하며,
상기 제2 메모리 모듈의 메모리 셀 어레이는 복수의 파티션으로 분할되어 있고,
상기 소정 조건은 상기 복수의 파티션 중에서 상기 제2 서브데이터가 저장된 파티션에서 쓰기 동작이 진행 중인 조건을 포함하며,
상기 읽기 요청 시에, 상기 복수의 파티션 중에서 상기 제2 서브데이터가 저장된 파티션 외의 다른 파티션에서 쓰기 동작이 진행 중인 경우, 상기 메모리 제어기는 상기 제2 메모리 모듈로부터 상기 제2 서브데이터를 읽는
메모리 제어 장치.
A memory control device coupled through a plurality of channels to a memory subsystem comprising a first memory module, a second memory module, and a third memory module, the memory control device comprising:
In response to a write request from a central processing unit (CPU), a cache for storing data corresponding to the write request, and
The original data stored in the cache is divided into a plurality of sub data including first and second sub data, a non-blocking code is generated from the plurality of sub data, and the first sub data is converted into the second sub data during migration. Write to one memory module, write the second sub data to the second memory module, write the non-blocking code to the third memory module, and read from the second memory module under a predetermined condition upon a read request from the CPU a memory controller that reconstructs the original data from the first sub data read from the first memory module without reading the second sub data and the non-blocking code read from the third memory module,
The memory cell array of the second memory module is divided into a plurality of partitions,
The predetermined condition includes a condition that a write operation is in progress in a partition in which the second sub data is stored among the plurality of partitions,
At the time of the read request, if a write operation is in progress in a partition other than a partition in which the second sub data is stored among the plurality of partitions, the memory controller reads the second sub data from the second memory module
memory control unit.
제13항에서,
상기 메모리 제어기는 상기 제1 및 제2 서브데이터 중 어느 하나의 서브데이터를 상기 제1 및 제2 메모리 모듈 중 대응하는 메모리 모듈에 쓰고, 상기 어느 하나의 서브데이터의 쓰기 완료된 후에 상기 제1 및 제2 서브데이터 중 다른 하나의 서브데이터를 상기 제1 및 제2 메모리 모듈 중 대응하는 메모리 모듈에 쓰는
메모리 제어 장치.
In claim 13,
The memory controller writes any one of the first and second sub data to a corresponding one of the first and second memory modules, and after writing of the one sub data is completed, the first and second sub data writing the other sub data among the 2 sub data to a corresponding memory module among the first and second memory modules
memory control unit.
제14항에서,
상기 제1 및 제2 서브데이터가 상기 제1 및 제2 메모리 모듈로 쓰는 것인 완료된 후, 상기 메모리 제어기는 상기 원 데이터를 상기 캐시에서 제거하는 메모리 제어 장치.
15. In claim 14,
after the first and second sub-data is written to the first and second memory modules, the memory controller removes the original data from the cache.
제14항에서,
상기 어느 하나의 서브데이터를 상기 대응하는 메모리 모듈에 쓸 때, 상기 메모리 제어기는 상기 논블록킹 부호를 상기 제3 메모리 모듈에 쓰는 메모리 제어 장치.
15. In claim 14,
When writing the one sub-data to the corresponding memory module, the memory controller writes the non-blocking code to the third memory module.
제1 메모리 모듈, 제2 메모리 모듈, 그리고 제3 메모리 모듈을 포함하는 메모리 서브시스템에 복수의 채널을 통해 연결되는 메모리 제어 장치로서,
중앙 처리 유닛(central processing unit, CPU)로부터의 쓰기 요청에 따라 상기 쓰기 요청에 해당하는 데이터를 저장하는 캐시, 그리고
상기 캐시에 저장된 원 데이터를 제1 서브데이터와 제2 서브데이터를 포함하는 복수의 서브데이터로 나누고, 상기 복수의 서브데이터로부터 논블록킹 부호를 생성하며, 마이그레이션 시에 상기 제1 서브데이터를 상기 제1 메모리 모듈에 쓰고, 상기 제2 서브데이터를 상기 제2 메모리 모듈에 쓰고, 상기 논블록킹 부호를 상기 제3 메모리 모듈에 쓰고, 상기 CPU로부터의 읽기 요청 시에 소정 조건 하에서 상기 제2 메모리 모듈로부터 상기 제2 서브데이터를 읽지 않고 상기 제1 메모리 모듈로부터 읽은 상기 제1 서브데이터와 상기 제3 메모리 모듈로부터 읽은 상기 논블록킹 부호로부터 상기 원 데이터를 재구성하는 메모리 제어기를 포함하며,
상기 마이그레이션 동안 상기 원 데이터에 대해서 캐시 히트가 발생하는 경우, 상기 메모리 제어기는 상기 원 데이터의 마이그레이션을 중지하는 메모리 제어 장치.
A memory control device coupled through a plurality of channels to a memory subsystem comprising a first memory module, a second memory module, and a third memory module, the memory control device comprising:
In response to a write request from a central processing unit (CPU), a cache for storing data corresponding to the write request, and
The original data stored in the cache is divided into a plurality of sub data including first and second sub data, a non-blocking code is generated from the plurality of sub data, and the first sub data is converted into the second sub data during migration. Write to one memory module, write the second sub data to the second memory module, write the non-blocking code to the third memory module, and read from the second memory module under a predetermined condition upon a read request from the CPU a memory controller that reconstructs the original data from the first sub data read from the first memory module without reading the second sub data and the non-blocking code read from the third memory module,
When a cache hit occurs with respect to the original data during the migration, the memory controller stops the migration of the original data.
삭제delete 제13항에서,
상기 소정 조건은 상기 원 데이터의 상기 읽기 요청에 대해서 캐시 미스가 발생하는 조건을 더 포함하는 메모리 제어 장치.
In claim 13,
The predetermined condition further includes a condition in which a cache miss occurs in response to the read request of the original data.
제13항에서,
상기 캐시는 비휘발성 메모리로 구현되는 메모리 제어 장치.
In claim 13,
The cache is a memory control device implemented as a non-volatile memory.
제13항에서,
상기 제1 메모리 모듈과 상기 제2 메모리 모듈은 상변화 메모리에 의해 구현되는 메모리 제어 장치.
In claim 13,
The first memory module and the second memory module are implemented by a phase change memory memory control device.
제13항 내지 제17항, 제19항, 제20항 중 어느 한 항에 기재된 상기 메모리 제어 장치, 그리고
상기 메모리 서브시스템
을 포함하는 메모리 시스템.
The memory control device according to any one of claims 13 to 17, 19 and 20, and
the memory subsystem
A memory system comprising a.
KR1020190001915A 2018-06-29 2019-01-07 Memory controlling device and memory system including the same KR102446121B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190001915A KR102446121B1 (en) 2018-06-29 2019-01-07 Memory controlling device and memory system including the same

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180075930A KR101952827B1 (en) 2018-06-29 2018-06-29 Memory controlling device and memory system including the same
KR1020190001915A KR102446121B1 (en) 2018-06-29 2019-01-07 Memory controlling device and memory system including the same

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020180075930A Division KR101952827B1 (en) 2018-06-29 2018-06-29 Memory controlling device and memory system including the same

Publications (2)

Publication Number Publication Date
KR20200002581A KR20200002581A (en) 2020-01-08
KR102446121B1 true KR102446121B1 (en) 2022-09-22

Family

ID=83445777

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190001915A KR102446121B1 (en) 2018-06-29 2019-01-07 Memory controlling device and memory system including the same

Country Status (1)

Country Link
KR (1) KR102446121B1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11656967B2 (en) 2020-02-13 2023-05-23 MemRay Corporation Method and apparatus for supporting persistence and computing device
KR102470888B1 (en) * 2020-02-13 2022-11-25 주식회사 멤레이 Method and apparatus for supporting persistence and computing device
KR102591315B1 (en) * 2021-03-22 2023-10-20 한국전자통신연구원 Method and apparatus for managing memory integration of cluster system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120324156A1 (en) * 2011-06-17 2012-12-20 Naveen Muralimanohar Method and system of organizing a heterogeneous memory architecture
US20130304970A1 (en) * 2012-04-20 2013-11-14 Stec, Inc. Systems and methods for providing high performance redundant array of independent disks in a solid-state device
US20180136849A1 (en) * 2015-07-16 2018-05-17 Toshiba Memory Corporation Memory controller, information processing apparatus, and processor

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101638764B1 (en) * 2008-12-19 2016-07-22 휴렛 팩커드 엔터프라이즈 디벨롭먼트 엘피 Redundant data storage for uniform read latency
KR101890426B1 (en) * 2016-07-26 2018-08-21 주식회사 맴레이 Resistance switching memory based coprocessor and computing device including the same

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120324156A1 (en) * 2011-06-17 2012-12-20 Naveen Muralimanohar Method and system of organizing a heterogeneous memory architecture
US20130304970A1 (en) * 2012-04-20 2013-11-14 Stec, Inc. Systems and methods for providing high performance redundant array of independent disks in a solid-state device
US20180136849A1 (en) * 2015-07-16 2018-05-17 Toshiba Memory Corporation Memory controller, information processing apparatus, and processor

Also Published As

Publication number Publication date
KR20200002581A (en) 2020-01-08

Similar Documents

Publication Publication Date Title
KR101952827B1 (en) Memory controlling device and memory system including the same
US11126497B2 (en) Method of equalizing bit error rates of memory device
KR101936951B1 (en) Memory controlling device and memory system including the same
KR102446121B1 (en) Memory controlling device and memory system including the same
KR20160083762A (en) Method for managing mapping table in storage system and storage system adopting the same
JP5847940B2 (en) Semiconductor device
US20210098064A1 (en) Resistive memory devices and methods of operating resistive memory devices
US11281981B2 (en) Storage system and sorting-based method for random read command prediction in a multi-queue system
KR101890426B1 (en) Resistance switching memory based coprocessor and computing device including the same
US20220004455A1 (en) Method of equalizing bit error rates of memory device
US11348639B2 (en) Non-volatile memory device, storage device having the same, and reading method thereof
KR20210018615A (en) Storage device and storage sysystem including the same
JP6073495B2 (en) Semiconductor device
US10642746B2 (en) Controlling cached/non-cached memory access decisions based on memory access queue fill levels
US11836377B2 (en) Data transfer management within a memory device having multiple memory regions with different memory densities
US11604734B2 (en) Memory system for determining whether to control a point of execution time of a command based on valid page counts of target memory blocks and operating method thereof
US11474726B2 (en) Memory system, memory controller, and operation method thereof
KR20200073108A (en) Method for consolidation of copy-back and write in pram blocks
US11640336B2 (en) Fast cache with intelligent copyback
US20230400899A1 (en) Thermal management of storage devices increasing host write performance
US11656994B2 (en) Non-volatile memory with optimized read
US20230103515A1 (en) Memory system and operating method of memory system
US20210279000A1 (en) Memory system, memory controller, and method for operating memory system

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right