KR102538253B1 - Semiconductor memory module and memory system including semiconductor memory module - Google Patents
Semiconductor memory module and memory system including semiconductor memory module Download PDFInfo
- Publication number
- KR102538253B1 KR102538253B1 KR1020180043848A KR20180043848A KR102538253B1 KR 102538253 B1 KR102538253 B1 KR 102538253B1 KR 1020180043848 A KR1020180043848 A KR 1020180043848A KR 20180043848 A KR20180043848 A KR 20180043848A KR 102538253 B1 KR102538253 B1 KR 102538253B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- controller
- data
- read
- type
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 반도체 메모리 모듈에 관한 것이다. 본 발명의 실시 예에 따른 반도체 메모리 모듈은 랜덤 액세스 메모리, 불휘발성 메모리, 버퍼 메모리, 그리고 제어 신호의 활성화에 응답하여 버퍼 메모리에 대해 읽기 동작을 수행하도록 구성되는 제어기를 포함한다. 읽기 동작의 결과에 따라, 제어기는 랜덤 액세스 메모리에 저장된 제1 데이터를 불휘발성 메모리에 저장하는 플러시 동작을 수행하도록 더 구성된다.The present invention relates to a semiconductor memory module. A semiconductor memory module according to an embodiment of the present invention includes a random access memory, a nonvolatile memory, a buffer memory, and a controller configured to perform a read operation on the buffer memory in response to activation of a control signal. According to a result of the read operation, the controller is further configured to perform a flush operation of storing the first data stored in the random access memory to the non-volatile memory.
Description
본 발명은 반도체 장치에 관한 것으로, 더 상세하게는 반도체 메모리 모듈 및 반도체 메모리 모듈을 포함하는 메모리 시스템에 관한 것이다.The present invention relates to a semiconductor device, and more particularly, to a semiconductor memory module and a memory system including the semiconductor memory module.
반도체 메모리는 반도체 소자들을 이용하여 데이터를 저장하는 데에 사용된다. 반도체 메모리는 동적 랜덤 액세스 메모리 또는 정적 랜덤 액세스 메모리와 같은 휘발성 메모리, 그리고 플래시 메모리, 상 변화 메모리, 강유전체 메모리, 자기 메모리, 저항성 메모리 등과 같은 불휘발성 메모리를 포함한다.Semiconductor memories are used to store data using semiconductor elements. Semiconductor memories include volatile memories such as dynamic random access memories or static random access memories, and nonvolatile memories such as flash memories, phase change memories, ferroelectric memories, magnetic memories, resistive memories, and the like.
통상적으로, 휘발성 메모리는 고속의 랜덤 액세스를 지원하며, 개인용 컴퓨터, 서버 또는 워크스테이션과 같은 컴퓨팅 시스템의 주 메모리로 사용된다. 불휘발성 메모리는 큰 저장 용량을 지원하며, 컴퓨팅 시스템의 보조 스토리지로 사용된다.Typically, volatile memory supports high-speed random access and is used as main memory in computing systems such as personal computers, servers, or workstations. Non-volatile memory supports a large storage capacity and is used as secondary storage in a computing system.
근래에, 스토리지 클래스 메모리(SCM, Storage Class Memory)에 대한 연구 및 개발이 진행되고 있다. 스토리지 클래스 메모리는 불휘발성의 큰 저장 용량과 고속의 랜덤 액세스 모두를 지원하는 것을 목표로 개발되고 있다. 스토리지 클래스 메모리는 불휘발성 메모리를 이용하여 구현될 수 있다.In recent years, research and development on a storage class memory (SCM) has been conducted. Storage class memory is being developed with the goal of supporting both large non-volatile storage capacity and high-speed random access. Storage class memory may be implemented using non-volatile memory.
기존의 주 메모리와의 호환성을 위하여, 스토리지 클래스 메모리는 주 메모리의 메모리 모듈을 기반으로 연구 및 개발되고 있다. 그러나 기존의 주 메모리인 동적 랜덤 액세스 메모리(DRAM)의 동작 특성과 스토리지 클래스 메모리의 불휘발성 메모리의 동작 특성의 차이로 인해, 스토리지 클래스 메모리의 속도는 기존의 주 메모리의 속도보다 낮을 수 있다.For compatibility with the existing main memory, a storage class memory is being researched and developed based on a memory module of the main memory. However, the speed of the storage class memory may be lower than that of the conventional main memory due to the difference between the operating characteristics of a dynamic random access memory (DRAM), which is a conventional main memory, and a nonvolatile memory of a storage class memory.
본 발명의 목적은 향상된 속도를 갖는 반도체 메모리 모듈 및 반도체 메모리 모듈을 포함하는 메모리 시스템을 제공하는 데에 있다.An object of the present invention is to provide a semiconductor memory module having improved speed and a memory system including the semiconductor memory module.
본 발명의 실시 예에 따른 반도체 메모리 모듈은 랜덤 액세스 메모리, 불휘발성 메모리, 버퍼 메모리, 그리고 제어 신호의 활성화에 응답하여 버퍼 메모리에 대해 읽기 동작을 수행하도록 구성되는 제어기를 포함한다. 읽기 동작의 결과에 따라, 제어기는 랜덤 액세스 메모리에 저장된 제1 데이터를 불휘발성 메모리에 저장하는 플러시 동작을 수행하도록 더 구성된다.A semiconductor memory module according to an embodiment of the present invention includes a random access memory, a nonvolatile memory, a buffer memory, and a controller configured to perform a read operation on the buffer memory in response to activation of a control signal. According to a result of the read operation, the controller is further configured to perform a flush operation of storing the first data stored in the random access memory to the non-volatile memory.
본 발명의 실시 예에 따른 반도체 메모리 모듈은 랜덤 액세스 메모리, 불휘발성 메모리, 버퍼 메모리, 그리고 제어 신호의 활성화에 응답하여 버퍼 메모리 및 랜덤 액세스 메모리에 대해 읽기 동작을 수행하고, 버퍼 메모리로부터 읽은 제1 데이터를 불휘발성 메모리에 저장하고, 그리고 랜덤 액세스 메모리로부터 읽은 제2 데이터를 버퍼 메모리에 저장하는 플러시 동작을 수행하도록 구성되는 제어기를 포함한다.A semiconductor memory module according to an embodiment of the present invention performs a read operation on a random access memory, a nonvolatile memory, a buffer memory, and a buffer memory and a random access memory in response to activation of a control signal, and a first read operation from the buffer memory. and a controller configured to perform a flush operation of storing data in the non-volatile memory and storing second data read from the random access memory in the buffer memory.
본 발명의 실시 예에 따른 메모리 시스템은 반도체 메모리 모듈 및 중앙 제어 블록을 포함한다. 반도체 메모리 모듈은 랜덤 액세스 메모리, 불휘발성 메모리, 그리고 제어기를 포함한다. 중앙 제어 블록은 반도체 메모리 모듈을 액세스할 때에 액세스 오류가 검출되면, 제어기에 전달되는 제어 신호를 활성화하도록 구성된다. 제어 신호가 활성화되는 것에 응답하여, 제어기는 랜덤 액세스 메모리에 저장된 데이터 중 제1 데이터를 읽고 그리고 제1 데이터를 불휘발성 메모리에 제2 데이터로서 저장하도록 구성된다.A memory system according to an embodiment of the present invention includes a semiconductor memory module and a central control block. A semiconductor memory module includes a random access memory, a nonvolatile memory, and a controller. The central control block is configured to activate a control signal transmitted to the controller if an access error is detected when accessing the semiconductor memory module. In response to the control signal being activated, the controller is configured to read first data from among data stored in the random access memory and store the first data as second data in the non-volatile memory.
본 발명에 따르면, 반도체 메모리 모듈은 쓰기 테이블을 이용하여 랜덤 액세스 메모리의 데이터 중 일부를 불휘발성 메모리로 플러시한다. 또한, 반도체 메모리 모듈은 캐시 미스가 발생한 데이터를 버퍼 메모리에 저장할 수 있다. 따라서, 향상된 속도를 갖는 반도체 메모리 모듈이 제공된다. 또한, 본 발명에 따르면, 메모리 시스템은 액세스 에러가 발생할 때에 반도체 메모리 모듈에 플러시를 지시할 수 있다. 따라서, 향상된 속도를 갖는 메모리 시스템이 제공된다.According to the present invention, a semiconductor memory module flushes some data of a random access memory to a nonvolatile memory using a write table. Also, the semiconductor memory module may store data in which a cache miss occurs in a buffer memory. Thus, a semiconductor memory module with improved speed is provided. Also, according to the present invention, the memory system may instruct the semiconductor memory module to flush when an access error occurs. Thus, a memory system with improved speed is provided.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 메모리 시스템의 동작 방법을 보여주는 순서도이다.
도 3은 액세스 에러가 발생할 때에 플러시 동작을 지시하는 제1 예를 보여준다.
도 4는 허브가 제1 제어 신호를 활성화하는 다른 예를 보여준다.
도 5는 액세스 에러가 발생할 때에 플러시 동작을 지시하는 제2 예를 보여준다.
도 6은 본 발명의 다른 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 제1 메모리 모듈 또는 제3 메모리 모듈의 동작 방법을 보여주는 순서도이다.
도 8은 제1 메모리 모듈에 데이터를 저장하는 제1 예를 보여준다.
도 9는 제1 메모리 모듈에서 버퍼 메모리를 이용하여 플러시 동작이 수행되는 제1 예를 보여준다.
도 10은 제1 메모리 모듈에서 버퍼 메모리를 이용하여 플러시 동작이 수행되는 제2 예를 보여준다.
도 11은 도 10에 후속하여 플러시 동작이 수행되는 예를 보여준다.
도 12는 제1 메모리 모듈이 버퍼 메모리를 이용하는 응용 예를 보여준다.
도 13은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 14는 프로세서가 제1 및 제3 메모리 모듈들을 액세스하는 예를 보여준다.
도 15는 본 발명의 제1 예에 따른 메모리 시스템의 동작 방법을 보여주는 순서도이다.
도 16은 제1 메모리 모듈로부터 데이터를 읽는 예를 보여준다.
도 17은 제1 메모리 모듈에 대해 예외 처리가 수행되는 예를 보여준다.
도 18은 본 발명의 제2 예에 따른 동작 방법을 보여주는 순서도이다.
도 19는 군주 코어가 할당되는 예를 보여준다.
도 20은 나머지 코어들이 관리되는 제1 예를 보여준다.
도 21은 본 발명의 실시 예에 따라 예외 처리를 위해 코어들이 관리되는 예를 보여준다.
도 22는 나머지 코어들이 관리되는 제2 예를 보여준다.
도 23은 제1 코어가 예외 처리를 수행하는 동안 다른 예외 처리가 발생하는 예를 보여준다.
도 24는 도 11의 상태에 후속하여 제1 코어가 예외 처리를 완료하는 예를 보여준다.
도 25는 코어들 또는 프로세서가 생성하는 에러 신호의 제1 예를 보여준다.
도 26은 본 발명의 실시 예에 따른 제1 타입 메모리 모듈을 보여주는 블록도이다.
도 27은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 28은 프로세서가 제1 및 제3 메모리 모듈들을 액세스하는 예를 보여준다.
도 29는 페이지 부재가 발생하는 예를 보여준다.
도 30은 부재 처리가 수행되는 예를 보여준다.
도 31은 제1 응용에 '01' 내지 '16'의 가상 주소들로 식별되는 가상 저장 공간이 할당되는 예를 보여준다.
도 32는 도 5에 후속하여 제1 실시 예에 따라 가상 주소들이 할당되는 예를 보여준다.
도 33은 페이지 부재 처리기가 제1 실시 예에 따라 '01' 내지 '16'의 가상 주소들에 대해 페이지 부재 처리를 수행한 예를 보여준다.
도 34는 본 발명의 제2 실시 예에 따른 부재 처리 방법을 보여준다.
도 35는 도 32에 후속하여 제2 실시 예에 따라 가상 주소들이 할당되는 예를 보여준다.
도 36은 도 35에 후속하여 제2 실시 예에 따라 가상 주소들이 할당되는 예를 보여준다.
도 37은 페이지 부재 처리기가 제2 실시 예에 따라 '01' 내지 '16'의 가상 주소들에 대해 페이지 부재 처리를 수행한 예를 보여준다.
도 38은 본 발명의 실시 예에 따라 페이지들의 수를 조절하는 예를 보여준다.
도 39는 부재 처리의 결과가 제1 메모리 모듈로 전달되는 예를 보여준다.
도 40은 본 발명의 실시 예에 따른 제1 타입 메모리 모듈을 보여주는 블록도이다.
도 41은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 42는 본 발명의 실시 예에 따른 제1 타입 메모리 모듈의 동작 방법을 보여주는 순서도이다.
도 43은 메모리 제어기가 제1 및 제3 메모리 모듈들과 초기화를 수행하는 예를 보여준다.
도 44는 초기화가 수행된 후에 트레이닝 시에, 매체 제어기가 메모리 제어기와 채널을 구성하는 예를 보여준다.
도 45는 트레이닝 시에 매체 제어기가 트레이닝 명령들을 제어하는 예를 보여준다.
도 46은 매체 제어기가 제2 타입 메모리와 채널을 수립하는 예를 보여준다.
도 47은 매체 제어기가 트레이닝의 완료를 검출하는 예를 보여준다.
도 48은 본 발명의 실시 예에 따른 제1 타입 메모리 모듈을 보여주는 블록도이다.
도 49는 본 발명의 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 50은 제1 제어기가 주 메모리에 대해 읽기 동작을 수행하는 예를 보여준다.
도 51은 도 50의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다.
도 52는 도 51의 읽기 동작의 변형 예를 보여준다.
도 53은 도 50의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다.
도 54는 본 발명의 실시 예에 따른 메모리 제어기의 동작 방법을 보여주는 순서도이다.
도 55는 도 54의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다.
도 56은 도 54의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다.
도 57은 도 56의 읽기 동작의 변형 예를 보여준다.
도 58은 도 54의 동작 방법의 응용 예를 보여준다.
도 59는 제3 시간을 측정하면서 읽기 동작을 수행하는 예를 보여준다.
도 60은 본 발명의 다른 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 61은 SPD 장치 및 레지스터 갱신기를 포함하는 주 메모리의 예를 보여준다.
도 62는 주 메모리가 레지스터를 갱신하는 방법을 보여주는 순서도이다.
도 63은 본 발명의 또 다른 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 64는 제1 제어기가 쓰기 동작을 수행하는 예를 보여주는 순서도이다.
도 65는 주 메모리가 쓰기 동작을 수행하는 예를 보여주는 순서도이다.
도 66 도 65의 동작 방법에 따라 쓰기 동작이 수행되는 제1 예를 보여준다.
도 67은 도 65의 동작 방법에 따라 쓰기 동작이 수행되는 제2 예를 보여준다.
도 68은 도 66의 동작 방법에 따라 쓰기 동작이 수행되는 제2 예를 보여준다.
도 69는 도 68의 읽기 동작의 변형 예를 보여준다.
도 70은 도 68의 읽기 동작의 다른 변형 예를 보여준다.1 is a block diagram illustrating a memory system according to an exemplary embodiment of the inventive concept.
2 is a flowchart illustrating a method of operating a memory system according to an exemplary embodiment of the present invention.
3 shows a first example of instructing a flush operation when an access error occurs.
4 shows another example in which the hub activates the first control signal.
5 shows a second example of instructing a flush operation when an access error occurs.
6 is a block diagram illustrating a memory system according to another exemplary embodiment of the inventive concept.
7 is a flowchart illustrating an operating method of a first memory module or a third memory module according to an embodiment of the present invention.
8 shows a first example of storing data in a first memory module.
9 shows a first example in which a flush operation is performed using a buffer memory in a first memory module.
10 shows a second example in which a flush operation is performed using a buffer memory in a first memory module.
FIG. 11 shows an example in which a flush operation is performed following FIG. 10 .
12 shows an application example in which the first memory module uses a buffer memory.
13 is a block diagram illustrating a memory system according to an embodiment of the inventive concept.
14 shows an example in which a processor accesses first and third memory modules.
15 is a flowchart illustrating a method of operating a memory system according to a first example of the present invention.
16 shows an example of reading data from a first memory module.
17 shows an example in which exception processing is performed on the first memory module.
18 is a flowchart showing an operating method according to a second example of the present invention.
19 shows an example in which monarch cores are allocated.
20 shows a first example in which remaining cores are managed.
21 shows an example in which cores are managed for exception handling according to an embodiment of the present invention.
22 shows a second example in which the remaining cores are managed.
23 shows an example in which another exception processing occurs while the first core performs exception processing.
FIG. 24 shows an example in which the first core completes exception processing following the state of FIG. 11 .
25 shows a first example of an error signal generated by cores or processors.
26 is a block diagram illustrating a first type memory module according to an embodiment of the present invention.
27 is a block diagram illustrating a memory system according to an embodiment of the inventive concept.
28 shows an example in which a processor accesses first and third memory modules.
29 shows an example in which a page fault occurs.
30 shows an example in which member processing is performed.
31 shows an example in which virtual storage spaces identified by virtual addresses of '01' to '16' are allocated to a first application.
FIG. 32 shows an example in which virtual addresses are allocated according to the first embodiment following FIG. 5 .
33 shows an example in which the page fault handler performs page fault processing on virtual addresses '01' to '16' according to the first embodiment.
34 shows a member processing method according to a second embodiment of the present invention.
FIG. 35 shows an example in which virtual addresses are allocated according to the second embodiment following FIG. 32 .
FIG. 36 shows an example in which virtual addresses are allocated according to the second embodiment following FIG. 35 .
37 shows an example in which the page fault processor performs page fault processing on virtual addresses '01' to '16' according to the second embodiment.
38 shows an example of adjusting the number of pages according to an embodiment of the present invention.
39 shows an example in which the result of member processing is transferred to the first memory module.
40 is a block diagram showing a first type memory module according to an embodiment of the present invention.
41 is a block diagram showing a memory system according to an embodiment of the inventive concept.
42 is a flowchart illustrating an operating method of a first-type memory module according to an embodiment of the present invention.
43 shows an example in which the memory controller performs initialization with first and third memory modules.
44 shows an example in which the media controller configures a channel with the memory controller during training after initialization is performed.
45 shows an example in which the media controller controls training commands during training.
46 shows an example in which the media controller establishes a channel with a second type memory.
47 shows an example in which the media controller detects completion of training.
48 is a block diagram showing a first type memory module according to an embodiment of the present invention.
49 is a block diagram showing a computing device according to an embodiment of the present invention.
50 shows an example in which the first controller performs a read operation on the main memory.
51 shows a first example in which a read operation is performed according to the operation method of FIG. 50 .
52 shows a modified example of the read operation of FIG. 51 .
53 shows a second example in which a read operation is performed according to the operation method of FIG. 50 .
54 is a flowchart illustrating an operating method of a memory controller according to an embodiment of the present invention.
55 shows a first example in which a read operation is performed according to the operation method of FIG. 54 .
56 shows a second example in which a read operation is performed according to the operation method of FIG. 54 .
57 shows a modified example of the read operation of FIG. 56 .
58 shows an application example of the operation method of FIG. 54 .
59 shows an example of performing a read operation while measuring a third time.
60 is a block diagram showing a computing device according to another example of the present invention.
61 shows an example of a main memory including an SPD device and a register updater.
62 is a flow chart showing how main memory updates registers.
63 is a block diagram showing a computing device according to another example of the present invention.
64 is a flowchart illustrating an example in which the first controller performs a write operation.
65 is a flowchart illustrating an example in which a main memory performs a write operation.
66 shows a first example in which a write operation is performed according to the operation method of FIG. 65 .
67 shows a second example in which a write operation is performed according to the operation method of FIG. 65 .
68 shows a second example in which a write operation is performed according to the operation method of FIG. 66 .
69 shows a modified example of the read operation of FIG. 68 .
70 shows another modified example of the read operation of FIG. 68 .
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.Hereinafter, embodiments of the present invention will be described clearly and in detail to the extent that those skilled in the art can easily practice the present invention.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(100a)을 보여주는 블록도이다. 예를 들어, 메모리 시스템(100a)은 응용 서버, 클라이언트 서버, 데이터 서버와 같은 서버를 포함할 수 있다. 다른 예로서, 메모리 시스템(100a)은 개인용 컴퓨터 또는 워크 스테이션을 포함할 수 있다.1 is a block diagram illustrating a
도 1을 참조하면, 메모리 시스템(100a)은 중앙 제어 블록(110), 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140), 제4 메모리 모듈(150), 루트 컴플렉스(160), 스토리지 장치(170), 전력 관리 블록(180), 그리고 주변 장치들(190)을 포함한다.Referring to FIG. 1 , a
중앙 제어 블록(110)은 프로세서(111) 및 허브(114)를 포함한다. 프로세서(111)는 메모리 시스템(100a)의 구성 요소들 및 구성 요소들의 동작들을 제어할 수 있다. 프로세서(111)는 운영체제 및 응용들을 실행하고, 운영체제 또는 응용들을 이용하여 데이터를 처리할 수 있다.The
프로세서(111)는 메모리 제어기(112) 및 캐시 메모리(113)를 포함할 수 있다. 메모리 제어기(112)는 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)을 액세스할 수 있다. 캐시 메모리(113)는 정적 랜덤 액세스 메모리(SRAM)와 같은 고속의 메모리를 포함할 수 있다.The
허브(114)는 전력 관리 블록(180)에 연결될 수 있다. 허브(114)는 프로세서(111)를 다양한 주변 장치들(190)과 연결할 수 있다. 허브(114)는 주변 장치들(190)을 제어하기 위한 다양한 제어기들을 포함할 수 있다. 예를 들어, 허브(114)는 플랫폼 제어기 허브(PCH, Platform Controller Hub)를 포함할 수 있다.
허브(114)는 제1 타입 메모리 모듈들(120a, 130a)에 제1 제어 신호(CS1) 및 제2 제어 신호(CS2)를 각각 전송할 수 있다. 예를 들어, 제1 제어 신호(CS1) 및 제2 제어 신호(CS2)는 제1 메모리 모듈(120a) 및 제2 메모리 모듈(130a)에 플러시 동작을 수행할 것을 각각 요청하는 ADR(Asynchronous DRAM Refresh) 신호를 포함할 수 있다.The
제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)은 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 메모리 제어기(112)에 연결될 수 있다. 메인 채널들(MCH)은 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)(예를 들어, 반도체 메모리 모듈들)에 데이터를 저장하거나 데이터를 읽기 위해 사용되는 채널들일 수 있다. 메인 채널들(MCH)은 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)에 대해 각각 제공되는 채널들을 포함할 수 있다.The
보조 채널들(SCH)은 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)에 데이터를 저장하거나 읽는 것 외에, 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)과 연관된 추가적인 기능들을 제공할 수 있다.The auxiliary channels SCH store or read data in the
예를 들어, 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)은 보조 채널들(SCH)을 통해 자신의 고유한 정보들을 메모리 제어기(112)에 제공할 수 있다. 보조 채널들(SCH)은 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)에 대해 각각 제공되는 채널들을 포함할 수 있다.For example, the
제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)은 메모리 시스템(100a)의 메인 메모리로 사용될 수 있다. 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)은 DIMM(Dual In-line Memory Module), RDIMM(Registered DIMM), LRDIMM(Load Reduced DIMM) 등과 같은 메모리 모듈의 표준들 중 하나에 따라 메모리 제어기(112)와 통신할 수 있다.The
루트 컴플렉스(160)는 프로세서(111)와 직접 통신하거나 또는 허브(114)를 통해 프로세서(111)와 통신할 수 있다. 루트 컴플렉스(160)는 중앙 제어 블록(110)이 다양한 주변 장치들을 액세스하는 채널들을 제공할 수 있다. 예를 들어, 루트 컴플렉스(160)에 스토리지 장치(170)가 연결될 수 있다. 스토리지 장치(170)는 하드 디스크 드라이브, 광학 디스크 드라이브, 솔리드 스테이트 드라이브 등을 포함할 수 있다.The
예시적으로, 루트 컴플렉스(160)에 연결되는 주변 장치들은 스토리지 장치(170)로 한정되지 않는다. 예를 들어, 루트 컴플렉스(160)는 모뎀, 그래픽 프로세싱 유닛(GPU), 뉴로모픽(Neuromorphic) 프로세서 등과 같은 다양한 장치들에 연결될 수 있다.As an example, peripheral devices connected to the
전력 관리 블록(180)은 메모리 시스템(100a)에 공급되는 전력을 관찰하고, 메모리 시스템(100a)의 구성 요소들에 공급되는 전력을 제어할 수 있다. 전력 관리 블록(180)은 메모리 시스템(100a)에서 급작스런 전원 오프(SPO), Sudden Power Off)가 발생할 때에, SPO를 알리는 신호를 허브(114)에 제공할 수 있다.The
프로세서(111)는 캐시 메모리(113), 메인 메모리인 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150), 그리고 스토리지 장치(170)를 계층적으로 관리할 수 있다. 예를 들어, 프로세서(111)는 스토리지 장치(170)에 저장된 데이터 중 필요한 데이터를 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)을 포함하는 메인 메모리에 로드할 수 있다. 프로세서(111)는 메인 메모리에 저장된 데이터 중 백업이 필요한 데이터를 스토리지 장치(170)로 플러시(flush)할 수 있다.The
제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)을 포함하는 메인 메모리의 저장 영역 중 일부는 캐시 메모리(113)에 사상될 수 있다. 프로세서(111)는 메인 메모리의 특정한 저장 공간을 액세스할 필요가 있을 때, 특정한 저장 공간이 캐시 메모리(113)에 사상되어 있는지 판단할 수 있다.Some of the storage areas of the main memory including the
특정한 저장 공간이 캐시 메모리(113)에 사상되어 있으면, 프로세서(111)는 캐시 메모리(113)의 특정한 저장 공간을 액세스할 수 있다. 특정한 저장 공간이 캐시 메모리(113)에 사상되어 있지 않으면, 프로세서(111)는 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)의 특정한 저장 공간을 캐시 메모리(113)에 사상할(또는 가져올(fetch)) 수 있다.If a specific storage space is mapped to the
캐시 메모리(113)의 저장 공간이 부족하면, 프로세서(111)는 기존에 캐시 메모리(113)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 프로세서(111)는 갱신된 데이터를 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)로 플러시할 수 있다.When the storage space of the
제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)은 이종의 메모리 모듈들을 포함할 수 있다. 예를 들어, 제1 및 제2 메모리 모듈들(120a, 130a)은 제1 타입 메모리 모듈들일 수 있다. 제3 및 제4 메모리 모듈들(140, 150)은 제2 타입 메모리 모듈들일 수 있다.The
제1 메모리 모듈(120a)은 제1 타입 메모리(121), 제2 타입 메모리(122), 매체 제어기(123), 그리고 직렬 프레즌스 검출(SPD)(Serial Presence Detect) 장치(125)를 포함할 수 있다. 제2 메모리 모듈(130a)은 제1 타입 메모리(131), 제2 타입 메모리(132), 매체 제어기(133), 그리고 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(135)를 포함할 수 있다. 이하에서, 제1 메모리 모듈(120a)을 참조하여 제1 타입 메모리 모듈들(120a, 130a)이 설명된다.The
제1 타입 메모리(121)는 고속의 휘발성 메모리, 예를 들어 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. 제2 타입 메모리(122)는 제1 타입 메모리(121)보다 느린 속도를 갖고, 제1 타입 메모리(121)보다 큰 저장 용량을 갖는 불휘발성 메모리를 포함할 수 있다. 예를 들어, 제2 타입 메모리(122)는 플래시 메모리, 상 변화 메모리(Phase Change Memory), 강유전체 메모리(Ferroelectric Memory), 자기 메모리(Magnetic Memory), 저항성 메모리(Resistive Memory) 등을 포함할 수 있다.The
매체 제어기(123)는 메인 채널들(MCH) 중 대응하는 채널을 통해 전달되는 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)로부터의 액세스 명령을 제1 타입 메모리(121) 또는 제2 타입 메모리(122)에 전달할 수 있다. 액세스 명령에 따라, 매체 제어기(123)는 메인 채널들(MCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)와 데이터를 교환할 수 있다.The
매체 제어기(123)는 제2 타입 메모리(122)의 저장 용량 또는 저장 공간을 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)에 제공할 수 있다. 매체 제어기(123)는 제1 타입 메모리(121)를 제2 타입 메모리(122)의 캐시 메모리로 사용할 수 있다. The
예를 들어, 매체 제어기(123)는 제2 타입 메모리(122)의 저장 공간 중 일부 저장 공간을 제1 타입 메모리(121)에 사상할 수 있다. 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(121)에 사상되어 있으면, 매체 제어기(123)는 액세스 명령을 제1 타입 메모리(121)로 전달할 수 있다.For example, the
외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(121)에 사상되어 있지 않으면, 매체 제어기(123)는 해당 저장 공간을 제2 타입 메모리(122)로부터 제1 타입 메모리(121)로 사상(또는 백업)할 수 있다.If a storage space associated with an access command from an external host device, for example, the
제1 타입 메모리(121)의 저장 공간이 부족하면, 매체 제어기(123)는 기존에 제1 타입 메모리(121)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 매체 제어기(123)는 갱신된 데이터를 제2 타입 메모리(122)로 플러시할 수 있다.When the storage space of the
SPD 장치(125)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)와 통신할 수 있다. 예를 들어, 제1 메모리 모듈(120a)이 초기화될 때에, SPD 장치(125)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)에 제공할 수 있다.The
예를 들어, SPD 장치(125)는 제1 메모리 모듈(120a)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(125)는 제2 타입 메모리(122)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(125)는 제2 타입 메모리(122)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)에 제공할 수 있다.For example, the
예를 들어, SPD 장치(125)에 저장되는 용량 정보는 제2 타입 메모리(122)의 사용자 용량에 대한 정보를 포함할 수 있다. 제2 타입 메모리(122)의 저장 용량은 사용자 용량, 메타 용량, 그리고 예비 용량을 포함할 수 있다. 사용자 용량은 제2 타입 메모리(122)가 외부의 호스트 장치, 예를 들어 메모리 제어기(112)에 제공하는 저장 용량일 수 있다.For example, the capacity information stored in the
메타 용량은 제2 타입 메모리(122)를 관리하기 위한 다양한 메타 정보가 저장되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(112)에 공개되지 않는 저장 용량일 수 있다. 예비 용량은 제2 타입 메모리(122)를 관리하기 위해 확보되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(112)에 공개되지 않는 저장 용량일 수 있다.The meta capacity may be a storage capacity in which various meta information for managing the
SPD 장치(125)에 저장된 용량 정보는 제2 타입 메모리(122)의 사용자 용량에 대한 정보를 포함할 수 있다. 이하에서, 별도로 명시되지 않으면, 제2 타입 메모리(122)의 용량은 제2 타입 메모리(122)의 사용자 용량을 가리키는 것으로 이해될 수 있다.The capacity information stored in the
제3 메모리 모듈(140)은 제1 타입 메모리(141) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(145)를 포함할 수 있다. 제4 메모리 모듈(150)은 제1 타입 메모리(151) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(155)를 포함할 수 있다. 이하에서, 제3 메모리 모듈(140)을 참조하여 제2 타입 메모리 모듈들(140, 150)이 설명된다.The
제1 타입 메모리(141)는 제1 메모리 모듈(120a)의 제1 타입 메모리(121)와 마찬가지로 동적 랜덤 액세스 메모리를 포함할 수 있다. SPD 장치(145)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)와 통신할 수 있다. 예를 들어, 제3 메모리 모듈(140)이 초기화될 때에, SPD 장치(145)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)에 제공할 수 있다.Like the
예를 들어, SPD 장치(145)는 제3 메모리 모듈(140)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(145)는 제1 타입 메모리(141)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(145)는 제1 타입 메모리(141)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(112) 또는 프로세서(111)에 제공할 수 있다.For example, the
메모리 시스템(100a)에 전원이 공급되면, 메모리 제어기(112)는 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)과 초기화를 수행할 수 있다. 예를 들어, 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150)의 SPD 장치들(125~155)은 보조 채널들(SCH)을 통해 메모리 제어기(112)에 각각 용량 정보를 제공할 수 있다.When power is supplied to the
제1 타입 메모리 모듈들(120a, 130a)의 SPD 장치들(125, 135)은 각각 제2 타입 메모리들(122, 132)의 저장 용량들을 메모리 제어기(112)에 제공할 수 있다. 제2 타입 메모리 모듈들(140, 150)의 SPD 장치들(145, 155)은 각각 제1 타입 메모리들(141, 151)의 저장 용량들을 메모리 제어기(112)에 제공할 수 있다. 예를 들어, 메모리 제어기(112)는 SPD 장치들(125~155)로부터 저장 용량들을 각각 읽을 수 있다.The
도 2는 본 발명의 실시 예에 따른 메모리 시스템(100a)의 동작 방법을 보여주는 순서도이다. 도 1 및 도 2를 참조하면, S11 단계에서, 프로세서(111)는 제1 타입 메모리 모듈들(120a, 130a) 중 하나의 메모리 모듈, 예를 들어 제1 메모리 모듈(120a)을 액세스할 때에 액세스 에러가 발생하는 것을 검출할 수 있다.2 is a flowchart illustrating an operating method of the
S12 단계에서, 액세스 에러가 검출됨에 따라, 중앙 제어 블록(110)은 제1 메모리 모듈(120a)이 데이터를 플러시(flush)하도록 제어 신호(CS)를 활성화할 수 있다. 즉, 본 발명의 실시 예에 따른 메모리 시스템(100a)은 제1 타입 메모리 모듈들(120a, 130a)을 액세스할 때에 액세스 에러가 발생하면, 에러가 발생한 메모리 모듈에 플러시 동작을 지시할 수 있다.In operation S12 , as an access error is detected, the
도 3은 액세스 에러가 발생할 때에 플러시 동작을 지시하는 제1 예를 보여준다. 도면이 불필요하게 복잡해지는 것을 방지하기 위하여, 도 3에서 중앙 제어 블록(110), 제1 메모리 모듈(120a) 및 제3 메모리 모듈(140)만이 도시된다. 제1 메모리 모듈(120a)은 제1 메인 채널(MCH1)을 통해 메모리 제어기(112)와 통신하고, 제3 메모리 모듈(140)은 제2 메인 채널(MCH2)을 통해 메모리 제어기(112)와 통신할 수 있다.3 shows a first example of instructing a flush operation when an access error occurs. To avoid unnecessarily complicating the drawing, in FIG. 3 only the
예시적으로, 제1 메모리 모듈(120a)을 액세스할 때에 액세스 에러가 발생하는 예가 도 3에 도시된다. 도 1 및 도 3을 참조하면, S21 단계에서, 프로세서(111)는 제1 메모리 모듈(120a)을 액세스할 때에 액세스 에러를 검출할 수 있다. 예를 들어, 액세스 에러는 페이지 부재(page fault) 또는 정정 불가능한 에러(uncorrectable error)를 포함할 수 있다.Illustratively, an example in which an access error occurs when accessing the
프로세서(111)에서 실행되는 운영체제 또는 응용은 가상 주소를 이용하여 제1 메모리 모듈(120a)에 대한 액세스 요청을 생성할 수 있다. 메모리 제어기(112)는 제1 메모리 모듈(120a), 제2 메모리 모듈(130a), 제3 메모리 모듈(140) 및 제4 메모리 모듈(150) 중 하나의 메모리 모듈에 저장된 페이지 테이블을 참조하여, 가상 주소를 물리 주소로 변환할 수 있다. 메모리 제어기(112)는 물리 주소를 이용하여 제1 메모리 모듈(120a)을 액세스할 수 있다.An operating system or application running on the
운영체제 또는 응용이 새로운 데이터를 저장할 것을 요청할 때, 또는 운영체제 또는 응용이 이미 해제된 저장 공간의 액세스를 요청할 때, 액세스 요청에 대응하는 페이지 테이블은 존재하지 않는다. 이때, 페이지 부재가 발생할 수 있다. 페이지 부재가 발생하면, 프로세서(111)는 예외 처리를 수행할 수 있다.When an operating system or application requests to store new data, or when an operating system or application requests access to a storage space that has already been released, a page table corresponding to the access request does not exist. At this time, a page fault may occur. When a page fault occurs, the
메모리 제어기(112)가 제1 메모리 모듈(120a)로 읽기 요청을 전송하면, 매체 제어기(123)는 요청된 데이터가 제1 타입 메모리(121)에 저장되어 있는지(즉, 캐시 히트인지) 또는 제2 타입 메모리(122)에 저장되어 있는지(즉, 캐시 미스인지) 판단할 수 있다.When the
캐시 미스인 경우, 매체 제어기(123)는 읽기 요청된 데이터를 제2 타입 메모리(122)로부터 제1 타입 메모리(121)로 가져와야(fetch) 한다. 데이터를 가져올 때의 소요 시간으로 인해, 제1 메모리 모듈(120a)은 메모리 제어기(112)에 설정된 제한 시간 안에 읽기 요청된 데이터를 메모리 제어기(112)에 제공할 수 없다. 이때, 메모리 제어기(112)는 정정 불가능한 에러가 발생한 것으로 판단하고, 예외 처리를 수행할 수 있다.In the case of a cache miss, the
캐시 히트인 경우, 제1 타입 메모리(121)는 메모리 제어기(112)로부터의 읽기 요청에 따라 데이터를 메모리 제어기(112)로 전송할 수 있다. 전송된 데이터가 정정 불가능한 에러를 가지면, 메모리 제어기(112)는 정정 불가능한 에러가 발생한 것으로 판단하고, 예외 처리를 수행할 수 있다.In case of a cache hit, the
상술된 바와 같이, 프로세서(111) 또는 메모리 제어기(112)가 제1 메모리 모듈(120a)을 액세스할 때에 액세스 에러가 발생하면, 프로세서(111)는 예외 처리를 수행할 수 있다. 예외 처리가 수행되는 동안, 프로세서(111) 또는 메모리 제어기(112)가 제1 메모리 모듈(120a)을 액세스하는 것은 금지된다.As described above, if an access error occurs when the
즉, 예외 처리가 수행되는 동안, 프로세서(111) 또는 메모리 제어기(112)로부터 제1 메모리 모듈(120a)에 액세스 요청이 전달되지 않는 유휴 시간이 제1 메모리 모듈(120a)에 보장될 수 있다.That is, while exception processing is being performed, an idle time in which an access request is not transmitted from the
본 발명의 실시 예에 따른 메모리 시스템(100a)은 예외 처리가 수행되는 것을 제1 메모리 모듈(120a)에 알릴 수 있다. 예를 들어, S22 단계에서, 프로세서(111)는 제1 제어 신호(CS1)를 활성화할 것을 허브(114)에 요청할 수 있다. S23 단계에서, 허브(114)는 제1 제어 신호(CS1)를 활성화할 수 있다.The
제1 제어 신호(CS1)가 활성화됨에 따라, 매체 제어기(123)는 프로세서(111)가 예외 처리를 수행 중이고, 따라서 유휴 시간이 보장됨을 식별할 수 있다. 유휴 시간이 보장됨에 따라, 매체 제어기(123)는 제1 메모리 모듈(120a)이 동작하는 데에 필요한 배경 동작들을 수행할 수 있다.As the first control signal CS1 is activated, the
예를 들어, 배경 동작은 중앙 제어 블록(110)이 요청하지 않고 중앙 제어 블록(110)에 의해 인식되지 않는 동작들일 수 있다. 제1 메모리 모듈(120a)은 중앙 제어 블록(110)으로부터의 액세스 요청이 없는 유휴시간 동안에 배경 동작을 수행할 수 있다. 제1 메모리 모듈(120a)은 중앙 제어 블록(110)으로부터의 액세스 요청들을 처리하는 사이에 배경 동작을 수행할 수 있다.For example, background operations may be operations not requested by
예를 들어, S24 단계에서, 매체 제어기(123)는 제1 타입 메모리(121)에 저장된 데이터를 제2 타입 메모리(122)로 옮기는 플러시 동작(flush operation)을 수행할 수 있다. 예를 들어, 제1 타입 메모리(121)에 저장된 데이터의 전부 또는 일부가 플러시 동작을 통해 제2 타입 메모리(122)에 기입될 수 있다.For example, in step S24 , the
제1 타입 메모리(121)는 제2 타입 메모리(122)의 캐시 메모리로 사용된다. 따라서, 제1 타입 메모리(121)에 저장된 데이터는 플러시 동작을 통해 제2 타입 메모리(122)로 옮겨져야 한다.The
예를 들어, 프로세서(111) 또는 메모리 제어기(112)의 액세스 요청에 따라 제1 타입 메모리(121)에 데이터를 기입하여야 할 때, 제1 타입 메모리(121)의 자유 저장 공간이 부족할 수 있다. 또는, 프로세서(111) 또는 메모리 제어기(112)의 액세스 요청에 따라 제2 타입 메모리(122)에 저장된 데이터를 제1 타입 메모리(121)로 가져와야(fetch) 할 때, 제1 타입 메모리(121)의 자유 저장 공간이 부족할 수 있다.For example, when data must be written into the first-
제1 타입 메모리(121)의 자유 저장 공간이 부족할 때, 제1 타입 메모리(121)의 자유 저장 공간을 확보하기 위하여 플러시 동작이 수행될 수 있다. 또한, 메모리 시스템(100a)의 전원이 꺼질 때, 제1 타입 메모리(121)에 저장된 데이터를 보존하기 위하여 제1 타입 메모리(121)에 저장된 데이터를 제2 타입 메모리(122)로 옮기는 플러시 동작이 수행될 수 있다.When the free storage space of the
매체 제어기(123)가 프로세서(111) 또는 메모리 제어기(112)로부터 수신된 액세스 요청을 처리할 때에 플러시 동작이 수행되면, 플러시 동작으로 인해 제1 메모리 모듈(120a)의 액세스의 레이턴시가 증가한다. 본 발명의 실시 예에 따른 제1 메모리 모듈(120a)은 액세스 에러가 발생한 때에 플러시 동작을 수행한다. 따라서, 액세스 요청을 처리할 때에 플러시 동작을 수행하여야 하는 빈도가 감소하고, 제1 메모리 모듈(120a) 및 메모리 시스템(100a)의 액세스의 레이턴시가 감소한다.If a flush operation is performed when the
예시적으로, 제1 메모리 모듈(120a)을 참조하여 설명된 것과 동일하게, 제2 메모리 모듈(130a)에서 액세스 에러가 발생할 수 있다. 허브(114)는 제2 제어 신호(CS2)를 활성화하고, 제2 메모리 모듈(130a)은 배경 동작을 수행할 수 있다. 예시적으로, 제1 메모리 모듈(120a) 및 제2 메모리 모듈(130a)에서 수행되는 배경 동작은 플러시 동작에 한정되지 않는다.Illustratively, in the same manner as described with reference to the
배경 동작은 매체 제어기(123)가 제2 타입 메모리(122)를 관리하기 위해 수행하는 읽기 리클레임(read reclaim), 배드 블록 관리, 마모도 관리(wear leveling), 가비지 컬렉션(garbage collection), 소거 동작 등을 포함할 수 있다.Background operations include read reclaim, bad block management, wear leveling, garbage collection, and erase operations performed by the
도 4는 허브(114)가 제1 제어 신호(CS1)를 활성화하는 다른 예를 보여준다. 도면이 불필요하게 복잡해지는 것을 방지하기 위하여, 도 4에서 중앙 제어 블록(110), 제1 메모리 모듈(120a), 제3 메모리 모듈(140), 그리고 전력 관리 블록(180)만이 도시된다.4 shows another example in which the
도 1 및 도 4를 참조하면, S31 단계에서, 전력 관리 블록(180)은 급작스런 전원 오프(SPO, Sudden Power Off)를 검출할 수 있다. SPO가 발생한 때에, 메모리 시스템(100a)은 배터리, 슈퍼 커패시터 등과 같은 충전 소자에 충전된 전력을 이용하여 SPO에 대응한 후속 처리를 수행할 수 있다.Referring to FIGS. 1 and 4 , in step S31 , the
SPO가 검출됨에 따라, S32 단계에서, 전력 관리 블록(180)은 제1 제어 신호(CS1)를 활성화할 것을 허브(114)에 요청할 수 있다. 예를 들어, 전력 관리 블록(180)은 제1 타입 메모리 모듈들(120a, 130a)에 전달되는 제1 제어 신호(CS1) 및 제2 제어 신호(CS2) 모두를 활성화할 것을 허브(114)에 요청할 수 있다.As SPO is detected, in step S32, the
전력 관리 블록(180)에서 SPO가 검출됨에 따라, S33 단계에서, 허브(114)는 제1 제어 신호(CS1)를 활성화할 수 있다. 제1 제어 신호(CS1)의 활성화에 응답하여, S34 단계에서, 제1 메모리 모듈(120a)은 제1 타입 메모리(121)에 저장된 데이터를 제2 타입 메모리(122)로 옮기는 플러시 동작을 수행할 수 있다. 예를 들어, 제1 타입 메모리(121)에 저장된 데이터의 전부 또는 일부가 플러시 동작을 통해 제2 타입 메모리(122)에 기입될 수 있다.As the SPO is detected by the
마찬가지로, 제2 제어 신호(CS2)가 활성화됨에 따라, 제2 메모리 모듈(130a)은 제1 타입 메모리(131)에 저장된 데이터를 제2 타입 메모리(132)로 옮기는 플러시 동작을 수행할 수 있다. 예를 들어, 제1 타입 메모리(131)에 저장된 데이터의 전부 또는 일부가 플러시 동작을 통해 제2 타입 메모리(132)에 기입될 수 있다.Similarly, when the second control signal CS2 is activated, the
도 5는 액세스 에러가 발생할 때에 플러시 동작을 지시하는 제2 예를 보여준다. 도면이 불필요하게 복잡해지는 것을 방지하기 위하여, 도 5에서 중앙 제어 블록(110), 제1 메모리 모듈(120a) 및 제3 메모리 모듈(140)만이 도시된다. 예시적으로, 제1 메모리 모듈(120a)을 액세스할 때에 액세스 에러가 발생하는 예가 도 5에 도시된다.5 shows a second example of instructing a flush operation when an access error occurs. To avoid unnecessarily complicating the drawing, only the
도 1 및 도 5를 참조하면, S41 단계에서, 프로세서(111)는 제1 메모리 모듈(120a)을 액세스할 때에 액세스 에러를 검출할 수 있다. 액세스 에러가 검출됨에 따라, S42 단계에서, 프로세서(111)는 제1 메인 채널(MCH1)을 통해 제1 메모리 모듈(120a)로 전달되는 제3 제어 신호(CS3)를 활성화할 수 있다.1 and 5 , in step S41, the
제3 제어 신호(CS3)가 활성화됨에 따라, 매체 제어기(123)는 플러시 동작과 같은 배경 동작을 수행할 수 있다. 즉, 메모리 제어기(112)는 액세스 에러가 발생하였음을 허브(114)를 통하지 않고 제1 메모리 모듈(120a)로 직접 전달할 수 있다.As the third control signal CS3 is activated, the
예시적으로, 도 3 및 도 4를 참조하여 설명된 바와 같이, 액세스 에러가 검출된 때에 또는 SPO가 검출된 때에, 허브(114)는 제1 제어 신호(CS1)를 활성화할 수 있다. 다른 예로서, 도 4 및 도 5를 참조하여 설명된 바와 같이, 액세스 에러가 검출된 때에 메모리 제어기(112)가 제3 제어 신호(CS3)를 활성화하고, 그리고 SPO가 검출된 때에 허브(114)가 제1 제어 신호(CS1)를 활성화할 수 있다.Illustratively, as described with reference to FIGS. 3 and 4 , when an access error is detected or when an SPO is detected, the
도 6은 본 발명의 다른 실시 예에 따른 메모리 시스템(100b)을 보여주는 블록도이다. 도 6을 참조하면, 메모리 시스템(100b)은 중앙 제어 블록(110), 제1 메모리 모듈(120b), 제2 메모리 모듈(130b), 제3 메모리 모듈(140), 제4 메모리 모듈(150), 루트 컴플렉스(160), 스토리지 장치(170), 전력 관리 블록(180), 그리고 주변 장치들(190)을 포함한다.6 is a block diagram showing a
중앙 제어 블록(110), 제3 메모리 모듈(140), 제4 메모리 모듈(150), 루트 컴플렉스(160), 스토리지 장치(170), 전력 관리 블록(180), 그리고 주변 장치들(190)은 도 1의 메모리 시스템(100a)과 동일하게 동작하고, 동일하게 구성될 수 있다.The
예를 들어, 중앙 제어 블록(110)은 액세스 에러가 검출될 때에 제1 제어 신호(CS1)(도 3 참조) 또는 제3 제어 신호(CS3)(도 5 참조)를 활성화할 수 있다. 중앙 제어 블록은 SPO가 검출될 때에 제1 제어 신호(CS1)를 활성화(도 4 참조)할 수 있다.For example, the
제1 메모리 모듈(120b)은 제1 제어 신호(CS1) 또는 제3 제어 신호(CS3)에 응답하여 배경 동작, 예를 들어 플러시 동작을 수행할 수 있다. 제2 메모리 모듈(130b)은 제2 제어 신호(CS2) 또는 제3 제어 신호(CS3)에 응답하여 배경 동작, 예를 들어 플러시 동작을 수행할 수 있다.The
제1 메모리 모듈(120b)은 버퍼 메모리(126)를 더 포함한다. 제2 메모리 모듈(130b)은 버퍼 메모리(136)를 더 포함한다. 제1 메모리 모듈(120b)은 버퍼 메모리(126)를 이용하여 플러시 동작을 수행할 수 있다. 제2 메모리 모듈(130b)은 버퍼 메모리(136)를 이용하여 플러시 동작을 수행할 수 있다.The
도 7은 본 발명의 실시 예에 따른 제1 메모리 모듈(120b) 또는 제3 메모리 모듈(140b)의 동작 방법을 보여주는 순서도이다. 예시적으로, 제1 메모리 모듈(120b)을 참조하여 본 발명의 실시 예에 따른 동작 방법이 설명된다. 도 6 및 도 7을 참조하면, S51 단계에서, 제1 메모리 모듈(120b)의 매체 제어기(123)는 제어 신호(CS), 예를 들어 제1 제어 신호(CS1) 또는 제3 제어 신호(CS3)의 활성화를 검출할 수 있다.7 is a flowchart illustrating an operating method of the
S52 단계에서, 매체 제어기(123)는 버퍼 메모리(126)에 대해 읽기 동작을 수행할 수 있다. S53 단계에서, 매체 제어기(123)는 읽기 동작의 결과에 기반하여 플러시 동작을 수행할 수 있다. 즉, 매체 제어기(123)는 버퍼 메모리(126)로부터 읽은 정보를 이용하여, 제1 타입 메모리(121)에 저장된 데이터를 제2 타입 메모리(122)에 기입하는 플러시 동작을 수행할 수 있다.In step S52, the
도 8은 제1 메모리 모듈(120b)에 데이터를 저장하는 제1 예를 보여준다. 도면이 불필요하게 복잡해지는 것을 방지하기 위하여, 도 8에서 제1 타입 메모리(121), 제2 타입 메모리(122), 매체 제어기(123), 그리고 버퍼 메모리(126)만이 도시된다.8 shows a first example of storing data in the
도 8에서, 제1 타입 메모리(121)의 제1 저장 공간(SC1)은 제1 내지 제8 페이지들(PAGE1~PAGE8)을 포함하는 것으로 도시된다. 페이지는 중앙 제어 블록(110)이 제1 메모리 모듈(120b)을 액세스하는 단위일 수 있다. 예를 들어, 중앙 제어 블록(110)은 페이지의 단위로 제1 메모리 모듈(120b)에 데이터를 저장하거나 제1 메모리 모듈(120b)로부터 데이터를 읽을 수 있다.In FIG. 8 , the first storage space SC1 of the
도 8에서, 버퍼 메모리(126)의 제2 저장 공간(SC2)에 쓰기 테이블(WT)이 저장될 수 있다. 쓰기 테이블(WT)은 제1 타입 메모리(121)의 제1 내지 제8 페이지들(PAGE1~PAGE8)의 정보를 포함할 수 있다. 예를 들어, 쓰기 테이블(WT)은 제1 타입 메모리(121)의 제1 내지 제8 페이지들(PAGE1~PAGE8)에 저장된 데이터가 새로 기입된 데이터인지의 정보를 저장할 수 있다.In FIG. 8 , the write table WT may be stored in the second storage space SC2 of the
도 6 및 도 8을 참조하면, S61 단계에서, 중앙 제어 블록(110)은 제1 메모리 모듈(120b)에 쓰기 요청을 전송할 수 있다. 매체 제어기(123)는 중앙 제어 블록(110)으로부터 쓰기 요청을 수신할 수 있다. 예를 들어, 쓰기 요청은 쓰기 데이터 및 주소를 포함할 수 있다. 주소는 제2 타입 메모리(122)의 저장 공간 중 특정한 저장 공간을 가리킬 수 있다.6 and 8 , in step S61, the
S62 단계에서, 매체 제어기(123)는 제1 타입 메모리(121)의 자유 저장 용량이 충분한지 판단할 수 있다. 예를 들어, 제1 타입 메모리(121)의 자유 저장 용량이 쓰기 데이터의 용량과 같거나 그보다 클 때, 매체 제어기(123)는 충분한 자유 저장 용량이 존재하는 것으로 판단할 수 있다.In step S62, the
제1 타입 메모리(121)의 자유 저장 용량이 충분함에 따라, S63 단계에서, 매체 제어기(123)는 중앙 제어 블록(110)으로부터의 쓰기 요청을 제1 타입 메모리(121)로 전달할 수 있다.As the free storage capacity of the
쓰기 요청에 따라, S64 단계에서, 제1 타입 메모리(121)의 제1 페이지(PAGE1)에 쓰기 데이터가 기입될 수 있다. 제1 페이지(PAGE1)에 쓰기 데이터가 기입됨에 따라, S65 단계에서, 매체 제어기(123)는 쓰기 테이블(WT)을 갱신할 수 있다. S66 단계에서, 제1 타입 메모리(121)의 제1 페이지(PAGE1)에 새로운 데이터가 기입되었음을 알리는 더티(Dirty) 표시(또는 플래그)가 쓰기 테이블(WT)에 기록될 수 있다.According to the write request, write data may be written to the first page PAGE1 of the
도 9는 제1 메모리 모듈(120b)에서 버퍼 메모리(126)를 이용하여 플러시 동작이 수행되는 제1 예를 보여준다. 도 8에서, 제2 타입 메모리(122)의 제3 저장 용량(SC3)은 제1 내지 제4 메모리 블록들(BLK1~BLK4)로 분할될 수 있다. 제1 내지 제4 메모리 블록들(BLK1~BLK4) 각각은 제1 내지 제8 불휘발성 페이지들(NPAGE1~NPAGE8)로 분할될 수 있다.9 shows a first example in which a flush operation is performed using the
불휘발성 페이지는 매체 제어기(123)가 제2 타입 메모리(122)를 액세스하는 단위일 수 있다. 예시적으로, 불휘발성 페이지의 용량은 페이지의 용량과 같거나 다를 수 있다. 도 6, 도 8 및 도 9를 참조하면, S71 단계에서, 매체 제어기(123)는 제1 제어 신호(CS1) 또는 제3 제어 신호(CS3)가 활성화되는 것을 검출할 수 있다.A nonvolatile page may be a unit in which the
제1 제어 신호(CS1) 또는 제3 제어 신호(CS3)의 활성화에 응답하여, 매체 제어기(123)는 플러시 동작을 수행할 수 있다. 예를 들어, S72 단계에서, 매체 제어기(123)는 버퍼 메모리(126)에 저장된 쓰기 테이블(WT)을 읽을 수 있다. 쓰기 테이블(WT)에 따라, S73 단계에서, 매체 제어기(123)는 제1 타입 메모리(121)의 제1 페이지(PAGE1)의 더티 플래그를 확인할 수 있다.In response to activation of the first control signal CS1 or the third control signal CS3, the
예를 들어, 매체 제어기(123)는 이전 플러시 동작의 이후에 또는 메모리 시스템(100b)에 전원이 공급된 후에 제1 타입 메모리(121)의 제1 페이지(PAGE1)에 새로운 데이터가 기입된 것을 쓰기 테이블(WT)의 더티 테이블로부터 검출할 수 있다.For example, the
제1 타입 메모리(121)의 제1 페이지(PAGE1)에 새로 기입된 데이터는 제2 타입 메모리(122)에 저장되어야 하며, 따라서 플러시 동작이 필요한 데이터일 수 있다. 제1 타입 메모리(121)의 제2 내지 제8 페이지들(PAGE2~PAGE8)에 저장된 데이터는 제2 타입 메모리(122)에 저장된 데이터 또는 무효 데이터이며, 따라서 플러시 동작이 필요하지 않은 데이터일 수 있다.Data newly written in the first page PAGE1 of the first-
S74 단계에서, 매체 제어기(123)는 제1 타입 메모리(121)에 읽기 요청을 전송할 수 있다. 예를 들어, 매체 제어기(123)는 플러시 동작이 필요한 제1 페이지(PAGE1)의 읽기 요청을 제1 타입 메모리(121)로 전송할 수 있다. 읽기 요청에 따라, S75 단계에서, 제1 타입 메모리(121)의 제1 페이지(PAGE1)의 데이터가 읽혀질 수 있다.In step S74, the
S76 단계에서, 매체 제어기(123)는 제2 타입 메모리(122)에 쓰기 요청을 전송할 수 있다. 예를 들어, 매체 제어기(123)는 제1 타입 메모리(121)로부터 읽은 제1 페이지(PAGE1)의 데이터의 쓰기 요청을 제2 타입 메모리(122)로 전송할 수 있다.In step S76, the
S77 단계에서, 제1 타입 메모리(121)에 새로 기입된 데이터가 제2 타입 메모리(122)의 제1 메모리 블록(BLK1)의 제3 불휘발성 페이지(NPAGE3)에 기입될 수 있다. 제1 타입 메모리(121)에 새로 기입된 데이터를 제2 타입 메모리(122)에 기입하는 것으로, 데이터의 이동이 종료될 수 있다.In step S77 , data newly written in the
S78 단계에서, 매체 제어기(123)는 쓰기 테이블(WT)의 더티 표시들을 제거(clear)할 수 있다. 또한, 매체 제어기(123)는 제1 타입 메모리(121)와 제2 타입 메모리(122)의 사상 관계를 제거(clear)할 수 있다. 플러시 동작이 수행되면, 제1 타입 메모리(121)에 새로 기입된 데이터가 제2 타입 메모리(122)로 옮겨지고(flushed), 제1 타입 메모리(121)가 비워질 수 있다.In step S78, the
본 발명의 실시 예에 따르면, 제1 타입 메모리(121)에 저장된 데이터 중에서 플러시 동작이 필요한 데이터, 즉 제1 타입 메모리(121)에 새로 기입된 데이터만이 플러시 동작을 통해 제2 타입 메모리(122)에 기입된다. 데이터의 이동이 감소하므로, 플러시 동작의 소요 시간이 감소하고, 제1 메모리 모듈(120b)의 레이턴시가 감소한다.According to an embodiment of the present invention, among data stored in the first-
예시적으로, 제1 타입 메모리(121)가 가득 찬 때에도 도 9를 참조하여 설명된 플러시 동작이 수행될 수 있다. 예시적으로, 제2 타입 메모리(122)의 제3 저장 용량(SC3)은 네 개의 메모리 블록들을 갖는 것으로 한정되지 않는다. 각 메모리 블록은 8개의 불휘발성 페이지들을 갖는 것으로 한정되지 않는다.Illustratively, the flush operation described with reference to FIG. 9 may be performed even when the
도 10은 제1 메모리 모듈(120b)에서 버퍼 메모리를 이용하여 플러시 동작이 수행되는 제2 예를 보여준다. 도 10에서, 버퍼 메모리(126)의 제2 저장 공간(SC2)은 제1 내지 제8 페이지들(PAGE1~PAGE8)로 분할될 수 있다. 제2 저장 공간(SC2)의 페이지의 용량은 제1 저장 공간(SC1)의 페이지의 용량과 같거나 다를 수 있다.10 shows a second example in which a flush operation is performed using a buffer memory in the
버퍼 메모리(126)의 용량은 제1 타입 메모리(121)의 용량과 같거나 다를 수 있다. 도 6 및 도 8을 참조하면, S81 단계에서, 매체 제어기(123)는 제1 제어 신호(CS1) 또는 제3 제어 신호(CS3)의 활성화를 검출할 수 있다.The capacity of the
제1 제어 신호(CS1) 또는 제3 제어 신호(CS3)의 활성화에 따라, S82 단계에서, 매체 제어기(123)는 버퍼 메모리(126)에 읽기 요청을 전송할 수 있다. 예시적으로, 매체 제어기(123)는 버퍼 메모리(126)에 저장된 데이터 중에서 제2 타입 메모리(122)에 기입되어야 할 유효 데이터의 읽기 요청을 전송할 수 있다.According to activation of the first control signal CS1 or the third control signal CS3 , the
예를 들어, 버퍼 메모리(126)의 제1 페이지(PAGE1)의 데이터가 유효 데이터일 수 있다. 읽기 요청에 따라, S83 단계에서, 버퍼 메모리(126)의 제1 페이지(PAGE1)의 데이터가 읽힐 수 있다. S84 단계에서, 매체 제어기(123)는 제2 타입 메모리(122)에 쓰기 요청을 전송할 수 있다.For example, data of the first page PAGE1 of the
예를 들어, 매체 제어기(123)는 버퍼 메모리(126)로부터 읽은 제1 페이지(PAGE1)의 데이터의 쓰기 요청을 제2 타입 메모리(122)로 전송할 수 있다. 쓰기 요청에 따라, S85 단계에서, 제2 타입 메모리(122)의 제3 불휘발성 페이지(NPAGE3)에 데이터가 기입될 수 있다.For example, the
도 11은 도 10에 후속하여 플러시 동작이 수행되는 예를 보여준다. 도 6, 도 10 및 도 11을 참조하면, S91 단계에서, 매체 제어기(123)는 제1 타입 메모리(121)에 읽기 요청을 전송할 수 있다. 읽기 요청에 따라, S92 단계에서, 제1 타입 메모리(121)에 저장된 데이터가 읽힐 수 있다.FIG. 11 shows an example in which a flush operation is performed following FIG. 10 . Referring to FIGS. 6 , 10 and 11 , in step S91 , the
S93 단계에서, 매체 제어기(123)는 버퍼 메모리(126)에 쓰기 요청을 전송할 수 있다. 예를 들어, 매체 제어기(123)는 제1 타입 메모리(121)로부터 읽은 데이터의 쓰기 요청을 버퍼 메모리(126)로 전송할 수 있다. 쓰기 요청에 따라, S94 단계에서, 데이터가 버퍼 메모리(126)에 저장될 수 있다.In step S93, the
제1 메모리 모듈(120b)은 버퍼 메모리(126)에 저장된 데이터를 제2 타입 메모리(122)에 기입하고, 그리고 제1 타입 메모리(121)에 저장된 데이터를 버퍼 메모리(126)에 기입함으로써 플러시 동작을 완료할 수 있다. 이후에, 매체 제어기(123)는 버퍼 메모리(126)에 저장된 데이터를 제2 타입 메모리(122)에 기입하는 배경 동작을 수행할 수 있다.The
예시적으로, 버퍼 메모리(126)의 자유 저장 용량이 제1 타입 메모리(121)로부터 읽은 데이터보다 클 때, 제1 메모리 모듈(120b)은 제1 타입 메모리(121)의 데이터를 버퍼 메모리(126)에 기입하는 것으로 플러시 동작을 완료할 수 있다. 즉, 플러시 동작은 도 10을 참조하여 설명된 단계들을 생략하고, 도 11을 참조하여 설명된 단계들을 통해 완료될 수 있다.Illustratively, when the free storage capacity of the
제1 타입 메모리(121)의 데이터가 버퍼 메모리(126)에 저장되면, 매체 제어기(123)는 제1 타입 메모리(121)와 제2 타입 메모리(122)의 사상 정보를 참조 정보로 제거한 후에 제거(clear)할 수 있다. 매체 제어기(123)는 참조 정보를 이용하여 버퍼 메모리(126)에 저장된 데이터를 제2 타입 메모리(122)에 기입하는 배경 동작을 수행할 수 있다.When the data of the
본 발명의 실시 예에 따르면, 플러시 동작 시에, 제1 타입 메모리(121)의 데이터는 버퍼 메모리(126)에 기입된다. 버퍼 메모리(126)에 기입된 데이터는 배경 동작을 통해 제2 타입 메모리(122)로 옮겨질 수 있다. 따라서, 플러시 동작의 레이턴시가 감소한다.According to an embodiment of the present invention, during a flush operation, data of the
예시적으로, 매체 제어기(123)는 제1 타입 메모리(121)의 자유 저장 용량을 관찰할 수 있다. 제1 타입 메모리(121)의 자유 저장 용량이 문턱 값보다 적어지면 또는 문턱 비율보다 감소하면, 매체 제어기(123)는 플러시 동작을 수행할 수 있다.Illustratively, the
도 12는 제1 메모리 모듈(120b)이 버퍼 메모리(126)를 이용하는 응용 예를 보여준다. 도 12를 참조하면, 버퍼 메모리(126)의 제2 저장 공간(SC2)은 쓰기 테이블(WT) 및 버퍼 영역(BA)을 포함할 수 있다. 쓰기 테이블(WT)은 도 8 및 도 9를 참조하여 설명된 바와 같이 더티 표시들을 저장할 수 있다.12 shows an application example in which the
제1 제어 신호(CS1) 또는 제3 제어 신호(CS3)가 활성화되면, 매체 제어기(123)는 쓰기 테이블(WT)을 참조할 수 있다. 매체 제어기(123)는 제1 타입 메모리(121)에 저장된 데이터 중 쓰기 테이블(WT)의 더티 표시와 연관된 데이터를 읽고, 읽은 데이터를 버퍼 메모리(126)의 버퍼 영역(BA)에 저장할 수 있다.When the first control signal CS1 or the third control signal CS3 is activated, the
버퍼 메모리(126)의 자유 저장 용량이 부족하면, 매체 제어기(123)는 버퍼 메모리(126)의 버퍼 영역(BA)으로부터 데이터를 읽고, 읽은 데이터를 제2 타입 메모리(122)에 기입하는 동작을 먼저 수행할 수 있다. 매체 제어기(123)는 플러시 동작이 완료된 후에 버퍼 메모리(126)에 존재하는 데이터를 배경 동작을 통해 제2 타입 메모리(122)로 옮길 수 있다.When the free storage capacity of the
예시적으로, 중앙 제어 블록(110)은 제1 타입 메모리(120a 또는 120b)의 자유 저장 용량을 관찰할 수 있다. 제1 타입 메모리(121)의 자유 저장 용량이 문턱 값보다 적어지면 또는 문턱 비율보다 감소하면, 중앙 제어 블록(110)은 제1 제어 신호(CS1) 또는 제3 제어 신호(CS3)를 활성화하여 플러시 동작을 유발할 수 있다.Illustratively, the
도 13은 본 발명의 실시 예에 따른 메모리 시스템(200)을 보여주는 블록도이다. 예를 들어, 메모리 시스템(200)은 응용 서버, 클라이언트 서버, 데이터 서버와 같은 서버를 포함할 수 있다. 다른 예로서, 메모리 시스템(200)은 개인용 컴퓨터 또는 워크 스테이션을 포함할 수 있다.13 is a block diagram showing a
도 13을 참조하면, 메모리 시스템(200)은 프로세서(210), 제1 내지 제4 메모리 모듈들(220~250), 루트 컴플렉스(260), 그리고 스토리지 장치(270)를 포함한다. 프로세서(210)는 메모리 시스템(200)의 구성 요소들 및 구성 요소들의 동작들을 제어할 수 있다. 프로세서(210)는 운영체제 및 응용들을 실행하고, 운영체제 또는 응용들을 이용하여 데이터를 처리할 수 있다.Referring to FIG. 13 , the
프로세서(210)는 메모리 제어기(211) 및 캐시 메모리(212)를 포함할 수 있다. 메모리 제어기(211)는 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 제1 내지 제4 메모리 모듈들(220~250)을 액세스할 수 있다. 캐시 메모리(212)는 정적 랜덤 액세스 메모리(SRAM)와 같은 고속의 메모리를 포함할 수 있다.The
제1 내지 제4 메모리 모듈들(220~250)은 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 메모리 제어기(211)에 연결될 수 있다. 메인 채널들(MCH)은 메모리 모듈들(220~250)(예를 들어, 반도체 메모리 모듈들)에 데이터를 저장하거나 데이터를 읽기 위해 사용되는 채널들일 수 있다. 메인 채널들(MCH)은 제1 내지 제4 메모리 모듈들(220~250)에 대해 각각 제공되는 채널들을 포함할 수 있다.The first to
보조 채널들(SCH)은 제1 내지 제4 메모리 모듈들(220~250)에 데이터를 저장하거나 읽는 것 외에, 제1 내지 제4 메모리 모듈들(220~250)과 연관된 추가적인 기능들을 제공할 수 있다. 예를 들어, 제1 내지 제4 메모리 모듈들(220~250)은 보조 채널들(SCH)을 통해 자신의 고유한 정보들을 메모리 제어기(211)에 제공할 수 있다. 보조 채널들(SCH)은 제1 내지 제4 메모리 모듈들(220~250)에 대해 각각 제공되는 채널들을 포함할 수 있다.In addition to storing or reading data in the first to
제1 내지 제4 메모리 모듈들(220~250)은 메모리 시스템(200)의 메인 메모리로 사용될 수 있다. 제1 내지 제4 메모리 모듈들(220~250)은 DIMM(Dual In-line Memory Module), RDIMM(Registered DIMM), LRDIMM(Load Reduced DIMM) 등과 같은 메모리 모듈의 표준들 중 하나에 따라 메모리 제어기(211)와 통신할 수 있다.The first to
루트 컴플렉스(260)는 프로세서(210)가 다양한 주변 장치들을 액세스하는 채널들을 제공할 수 있다. 예를 들어, 루트 컴플렉스(260)에 스토리지 장치(270)가 연결될 수 있다. 스토리지 장치(270)는 하드 디스크 드라이브, 광학 디스크 드라이브, 솔리드 스테이트 드라이브 등을 포함할 수 있다.Root complex 260 may provide channels through which
예시적으로, 루트 컴플렉스(260)에 연결되는 주변 장치들은 스토리지 장치(270)로 한정되지 않는다. 예를 들어, 루트 컴플렉스(260)는 모뎀, 그래픽 프로세싱 유닛(GPU), 뉴로모픽(Neuromorphic) 프로세서 등과 같은 다양한 장치들에 연결될 수 있다.For example, peripheral devices connected to the
프로세서(210)는 캐시 메모리(212), 메인 메모리인 제1 내지 제4 메모리 모듈들(220~250), 그리고 스토리지 장치(270)를 계층적으로 관리할 수 있다. 예를 들어, 프로세서(210)는 스토리지 장치(270)에 저장된 데이터 중 필요한 데이터를 제1 내지 제4 메모리 모듈들(220~250)을 포함하는 메인 메모리에 로드할 수 있다. 프로세서(210)는 메인 메모리에 저장된 데이터 중 백업이 필요한 데이터를 스토리지 장치(270)로 플러시(flush)할 수 있다.The
제1 내지 제4 메모리 모듈들(220~250)을 포함하는 메인 메모리의 저장 영역 중 일부는 캐시 메모리(212)에 사상될 수 있다. 프로세서(210)는 메인 메모리의 특정한 저장 공간을 액세스할 필요가 있을 때, 특정한 저장 공간이 캐시 메모리(212)에 사상되어 있는지 판단할 수 있다.A part of the storage area of the main memory including the first to
특정한 저장 공간이 캐시 메모리(212)에 사상되어 있으면, 프로세서(210)는 캐시 메모리(212)의 특정한 저장 공간을 액세스할 수 있다. 특정한 저장 공간이 캐시 메모리에 사상되어 있지 않으면, 프로세서(210)는 제1 내지 제4 메모리 모듈들(220~250)의 특정한 저장 공간을 캐시 메모리(212)에 사상할(또는 가져올(fetch)) 수 있다.If a specific storage space is mapped to the
캐시 메모리(212)의 저장 공간이 부족하면, 프로세서(210)는 기존에 캐시 메모리(212)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 프로세서(210)는 갱신된 데이터를 제1 내지 제4 메모리 모듈들(220~250)로 플러시할 수 있다.When the storage space of the
제1 내지 제4 메모리 모듈들(220~250)은 이종의 메모리 모듈들을 포함할 수 있다. 예를 들어, 제1 및 제2 메모리 모듈들(220, 230)은 제1 타입 메모리 모듈들일 수 있다. 제3 및 제4 메모리 모듈들(240, 250)은 제2 타입 메모리 모듈들일 수 있다.The first to
제1 메모리 모듈(220)은 제1 타입 메모리(221), 제2 타입 메모리(222), 매체 제어기(223), 그리고 직렬 프레즌스 검출(SPD)(Serial Presence Detect) 장치(225)를 포함할 수 있다. 제2 메모리 모듈(230)은 제1 타입 메모리(231), 제2 타입 메모리(232), 매체 제어기(233), 그리고 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(235)를 포함할 수 있다. 이하에서, 제1 메모리 모듈(220)을 참조하여 제1 타입 메모리 모듈들(220, 230)이 설명된다.The
제1 타입 메모리(221)는 고속의 휘발성 메모리, 예를 들어 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. 제2 타입 메모리(222)는 제1 타입 메모리(221)보다 느린 속도를 갖고, 제1 타입 메모리(221)보다 큰 저장 용량을 갖는 불휘발성 메모리를 포함할 수 있다. 예를 들어, 제2 타입 메모리(222)는 플래시 메모리, 상 변화 메모리(Phase Change Memory), 강유전체 메모리(Ferroelectric Memory), 자기 메모리(Magnetic Memory), 저항성 메모리(Resistive Memory) 등을 포함할 수 있다.The
매체 제어기(223)는 메인 채널들(MCH) 중 대응하는 채널을 통해 전달되는 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)로부터의 액세스 명령을 제1 타입 메모리(221) 또는 제2 타입 메모리(222)에 전달할 수 있다. 액세스 명령에 따라, 매체 제어기(223)는 메인 채널들(MCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)와 데이터를 교환할 수 있다.The
매체 제어기(223)는 제2 타입 메모리(222)의 저장 용량 또는 저장 공간을 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)에 제공할 수 있다. 매체 제어기(223)는 제1 타입 메모리(221)를 제2 타입 메모리(222)의 캐시 메모리로 사용할 수 있다. The
예를 들어, 매체 제어기(223)는 제2 타입 메모리(222)의 저장 공간 중 일부 저장 공간을 제1 타입 메모리(221)에 사상할 수 있다. 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(221)에 사상되어 있으면, 매체 제어기(223)는 액세스 명령을 제1 타입 메모리(221)로 전달할 수 있다.For example, the
외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(221)에 사상되어 있지 않으면, 매체 제어기(223)는 해당 저장 공간을 제2 타입 메모리(222)로부터 제1 타입 메모리(221)로 사상(또는 백업)할 수 있다.If a storage space associated with an access command from an external host device, for example, the
제1 타입 메모리(221)의 저장 공간이 부족하면, 매체 제어기(223)는 기존에 제1 타입 메모리(221)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 매체 제어기(223)는 갱신된 데이터를 제2 타입 메모리(222)로 플러시할 수 있다.When the storage space of the
SPD 장치(225)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)와 통신할 수 있다. 예를 들어, 제1 메모리 모듈(220)이 초기화될 때에, SPD 장치(225)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)에 제공할 수 있다.The
예를 들어, SPD 장치(225)는 제1 메모리 모듈(220)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(225)는 제2 타입 메모리(222)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(225)는 제2 타입 메모리(222)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)에 제공할 수 있다.For example, the
예를 들어, SPD 장치(225)에 저장되는 용량 정보는 제2 타입 메모리(222)의 사용자 용량에 대한 정보를 포함할 수 있다. 제2 타입 메모리(222)의 저장 용량은 사용자 용량, 메타 용량, 그리고 예비 용량을 포함할 수 있다. 사용자 용량은 제2 타입 메모리(222)가 외부의 호스트 장치, 예를 들어 메모리 제어기(211)에 제공하는 저장 용량일 수 있다.For example, the capacity information stored in the
메타 용량은 제2 타입 메모리(222)를 관리하기 위한 다양한 메타 정보가 저장되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(211)에 공개되지 않는 저장 용량일 수 있다. 예비 용량은 제2 타입 메모리(222)를 관리하기 위해 확보되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(211)에 공개되지 않는 저장 용량일 수 있다.The meta capacity may be a storage capacity in which various meta information for managing the
SPD 장치(225)에 저장된 용량 정보는 제2 타입 메모리(222)의 사용자 용량에 대한 정보를 포함할 수 있다. 이하에서, 별도로 명시되지 않으면, 제2 타입 메모리(222)의 용량은 제2 타입 메모리(222)의 사용자 용량을 가리키는 것으로 이해될 수 있다.The capacity information stored in the
제3 메모리 모듈(240)은 제1 타입 메모리(241) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(245)를 포함할 수 있다. 제4 메모리 모듈(250)은 제1 타입 메모리(251) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(255)를 포함할 수 있다. 이하에서, 제3 메모리 모듈(240)을 참조하여 제2 타입 메모리 모듈들(240, 250)이 설명된다.The
제1 타입 메모리(241)는 제1 메모리 모듈(220)의 제1 타입 메모리(221)와 마찬가지로 동적 랜덤 액세스 메모리를 포함할 수 있다. SPD 장치(245)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)와 통신할 수 있다. 예를 들어, 제3 메모리 모듈(240)이 초기화될 때에, SPD 장치(245)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)에 제공할 수 있다.Like the
예를 들어, SPD 장치(225)는 제3 메모리 모듈(240)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(245)는 제1 타입 메모리(241)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(245)는 제1 타입 메모리(241)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(211) 또는 프로세서(210)에 제공할 수 있다.For example, the
메모리 시스템(200)에 전원이 공급되면, 메모리 제어기(211)는 제1 내지 제4 메모리 모듈들(220~250)과 초기화를 수행할 수 있다. 예를 들어, 제1 내지 제4 메모리 모듈들(220~250)의 SPD 장치들(225~255)은 보조 채널들(SCH)을 통해 메모리 제어기(211)에 각각 용량 정보를 제공할 수 있다.When power is supplied to the
제1 타입 메모리 모듈들(220, 230)의 SPD 장치들(225, 235)은 각각 제2 타입 메모리들(222, 232)의 저장 용량들을 메모리 제어기(211)에 제공할 수 있다. 제2 타입 메모리 모듈들(240, 250)의 SPD 장치들(245, 255)은 각각 제1 타입 메모리들(241, 251)의 저장 용량들을 메모리 제어기(211)에 제공할 수 있다. 예를 들어, 메모리 제어기(211)는 SPD 장치들(225~255)로부터 저장 용량들을 각각 읽을 수 있다.The
도 14는 프로세서(210)가 제1 및 제3 메모리 모듈들(220, 240)을 액세스하는 예를 보여준다. 도면이 불필요하게 복잡해지는 것을 방지하기 위하여, 프로세서(210), 제1 메모리 모듈(220), 그리고 제3 메모리 모듈(240) 외의 다른 구성 요소들은 생략된다.14 shows an example in which the
도 13 및 도 14를 참조하면, 프로세서(210)는 제1 내지 제n 코어들(CORE1~COREn)을 포함할 수 있다. 즉, 프로세서(210)는 다중 코어 프로세서일 수 있다. 제1 내지 제n 코어들(CORE1~COREn)에 의해 실행되는 개체들은 실행 영역(EA)에 도시된다.Referring to FIGS. 13 and 14 , the
실행 영역(EA)을 참조하면, 프로세서(210)에서 운영체제(OS)가 실행될 수 있다. 또한, 운영체제(OS)의 지원을 바탕으로, 프로세서(210)에서 제1 내지 제3 응용들(APP1~APP3)이 실행될 수 있다. Referring to the execution area (EA), the operating system (OS) may be executed in the
운영체제(OS)는 기계 검사 예외 처리기(MCEH)(Machine Check Exception Handler)를 포함할 수 있다. 기계 검사 예외 처리기(MCEH)는 메모리 제어기(211)가 제1 내지 제4 메모리 모듈들(220~250)을 액세스할 때에 발생하는 에러를 처리할 수 있다. 기계 검사 예외 처리기(MCEH)의 동작은 도 15를 참조하여 더 상세히 설명된다The operating system (OS) may include a machine check exception handler (MCEH). The machine check exception handler (MCEH) may process an error occurring when the
메모리 제어기(211)는 제1 내지 제n 코어들(CORE1~COREn)의 요청에 따라 제1 내지 제4 메모리 모듈들(220~250)을 액세스할 수 있다. 예를 들어, 메모리 제어기(211)는 제1 메인 채널(MCH1)을 통해 제1 메모리 모듈(220)을 액세스하고, 제2 메인 채널(MCH2)을 통해 제3 메모리 모듈(240)을 액세스할 수 있다.The
도 15는 본 발명의 제1 예에 따른 메모리 시스템(200)의 동작 방법을 보여주는 순서도이다. 도 13 내지 도 15를 참조하면, S110 단계에서, 메모리 제어기(211)는 제1 내지 제4 메모리 모듈들(220~250) 중 하나의 메모리 모듈로부터 데이터를 읽을 수 있다. 예를 들어, 메모리 제어기(211)는 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)의 요청에 따라 데이터를 읽을 수 있다.15 is a flowchart illustrating an operating method of the
S120 단계에서, 메모리 제어기(211)는 정정 불가능한 에러(uncorrectable error)를 검출할 수 있다. 예를 들어, 메모리 제어기(211)는 읽혀진 데이터에 대해 에러 정정 디코딩을 수행할 수 있다. 메모리 제어기(211)는 에러 정정 디코딩의 결과에 따라 에러를 정정하거나 정정 불가능한 에러를 검출할 수 있다.In step S120, the
예를 들어, 읽혀진 데이터가 에러 정정 디코딩에 의해 정정되는 에러 비트들의 수를 초과한 에러 비트들을 포함할 때, 정정 불가능한 에러가 검출될 수 있다. 예를 들어, 메모리 제어기(211)는 특정 횟수만큼 읽기 재시도를 수행할 수 있다. 읽기 재시도를 반복적으로 수행한 때에도 정정 불가능한 에러가 검출되면, 예외 처리(Exception Handling)가 수행될 수 있다.For example, an uncorrectable error may be detected when the data read includes error bits exceeding the number of error bits corrected by error correction decoding. For example, the
예를 들어, 프로세서(210)의 제1 내지 제n 코어들(CORE1~COREn) 중 하나의 코어가 기계 검사 예외 처리기(MCEH)에 도달하고 실행함으로써, 예외 처리가 수행될 수 있다. 예외 처리는 S230 단계 내지 S180 단계를 포함할 수 있다.For example, when one of the first to n th cores CORE1 to COREn of the
S230 단계에서, 기계 검사 예외 처리기(MCEH)는 기계 검사를 수행할 수 있다. 예를 들어, 기계 검사는 메모리 제어기(211) 또는 제1 메모리 모듈(220)이 정상적으로 동작하는지 또는 오동작하는지 판단하는 것을 포함할 수 있다. 기계 검사는 검출된 에러가 치명적 에러(fatal error)인지 또는 재해적인 에러인지(catastrophic error) 판단하는 것을 포함할 수 있다.In step S230, the machine check exception handler (MCEH) may perform machine check. For example, the machine test may include determining whether the
예를 들어, 중요한 데이터에서 정정 불가능한 에러가 발생하면, 재해적 에러가 판단될 수 있다. 메모리 시스템(200)의 제어 또는 운용에 필요한 데이터는 중요한 데이터일 수 있다. 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)가 요청하였고 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)가 사용할 데이터는 중요한 데이터일 수 있다.For example, if an uncorrectable error occurs in critical data, a catastrophic error may be determined. Data necessary for controlling or operating the
예를 들어, 중요하지 않은 데이터에서 정정 불가능한 에러가 발생하면, 치명적 에러가 판단될 수 있다. 메모리 시스템(200)의 제어 또는 운용과 무관한 데이터는 중요하지 않은 데이터일 수 있다. 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)가 요청하였고 제1 내지 제3 응용들(APP1~APP3) 또는 운영체제(OS)가 사용하지 않는 데이터는 중요하지 않은 데이터일 수 있다.For example, if an uncorrectable error occurs in non-critical data, a fatal error may be determined. Data unrelated to the control or operation of the
S240 단계에서, 정정 불가능한 데이터가 중요한 에러이면, 기계 검사 예외 처리기(MCEH)는 S250 단계를 수행한다. S240 단계에서, 기계 검사 예외 처리기(MCEH)는 재해적 에러(catastrophic error)가 발생하였음을 에러 로그에 기록할 수 있다. 이후에, S160 단계에서, 메모리 시스템(200)의 시스템 리부트(system reboot) 또는 커널 패닉(kernel panic)이 발생할 수 있다.In step S240, if the uncorrectable data is a critical error, the machine check exception handler (MCEH) performs step S250. In step S240, the machine check exception handler (MCEH) may record in the error log that a catastrophic error has occurred. Thereafter, in step S160 , a system reboot of the
S240 단계에서, 정정 불가능한 데이터가 중요하지 않은 에러이면, 기계 검사 예외 처리기(MCEH)는 S170 단계를 수행한다. S170 단계에서, 기계 검사 예외 처리기(MCEH)는 치명적 에러(fatal error)가 발생하였음을 에러 로그에 기록할 수 있다.In step S240, if the uncorrectable data is an unimportant error, the machine check exception handler (MCEH) performs step S170. In step S170, the machine check exception handler (MCEH) may record in the error log that a fatal error has occurred.
도 16은 제1 메모리 모듈(220)로부터 데이터를 읽는 예를 보여준다. 도 13 및 도 16을 참조하면, S111 단계에서, 예를 들어 제1 응용(APP1)이 제1 메모리 모듈(220)에 대한 읽기 요청을 메모리 제어기(211)로 전송할 수 있다. 읽기 요청은 운영체제(OS) 및 제1 내지 제n 코어들(CORE1~COREn)을 통해 메모리 제어기(211)로 전달될 수 있다.16 shows an example of reading data from the
S112 단계에서, 읽기 요청에 응답하여, 메모리 제어기(211)는 제1 메모리 모듈(220)에 읽기 명령을 전송할 수 있다. S113 단계에서, 읽기 명령은 제2 타입 메모리(222)에 대한 액세스를 유발할 수 있다. 예를 들어, 읽기 명령에 대응하는 데이터가 제1 타입 메모리(221)에 사상되어 있지 않을 때, 매체 제어기(223)는 해당 데이터를 제2 타입 메모리(222)로부터 읽어 제1 타입 메모리(221)에 사상할 수 있다.In step S112 , in response to the read request, the
메모리 제어기(211)가 제1 메모리 모듈(220)을 액세스하는 절차는 제3 메모리 모듈(240)을 액세스하는 절차와 동일하다. 예를 들어, 메모리 제어기(211)가 제1 메모리 모듈(220)로 읽기 명령을 전송한 후에 데이터를 수신할 때까지의 시간 조건은 제1 타입 메모리(221 또는 241)의 액세스 속도에 맞추어져 있다.A procedure for accessing the
제2 타입 메모리(222)의 액세스 속도는 제1 타입 메모리(221)의 액세스 속도보다 느리다. 따라서, S114 단계에서, 메모리 제어기(211)의 시간 조건에 따른 시간이 경과할 때까지 제2 타입 메모리(222)로부터 데이터가 읽혀지지 않는 타임 아웃이 발생할 수 있다.The access speed of the
예를 들어, 제1 메모리 모듈(220)은 제1 메인 채널(MCH1)로 데이터를 전송하지 않음에도, 메모리 제어기(211)는 제1 메인 채널(MCH1)의 전압들로부터 데이터를 감지할 수 있다. 이때, 메모리 제어기(211)는 정정 불가능한 에러를 갖는 데이터를 수신한 것으로 판단할 수 있다.For example, even though the
다른 예로서, 시간 조건에 따른 시간이 경과함에 따라, 제1 메모리 모듈(220)은 더미 데이터를 제1 메인 채널(MCH1)로 전송할 수 있다. 메모리 제어기(211)는 제1 메인 채널(MCH1)을 통해 더미 데이터를 수신할 수 있다. 메모리 제어기는 더미 데이터가 정정 불가능한 에러를 갖는 것으로 판단할 수 있다. 예를 들어, 더미 데이터는 특정한 패턴을 갖는 데이터 또는 임의 패턴을 갖는 데이터일 수 있다.As another example, as time elapses according to the time condition, the
도 17은 제1 메모리 모듈(220)에 대해 예외 처리가 수행되는 예를 보여준다. 예시적으로, 도 17은 도 16의 S114 단계에 후속하는 동작들을 보여준다. 도 13 및 도 17을 참조하면, S115 단계에서, 메모리 제어기(211)는 제1 메모리 모듈(220)로부터 정정 불가능한 에러(UE)를 갖는 데이터를 수신한다.17 shows an example in which exception processing is performed for the
예를 들어, 위에서 언급된 바와 같이, 매체 제어기(223)는 메모리 제어기(211)로 데이터를 전송하지 않거나 또는 메모리 제어기(211)로 더미 데이터를 전송할 수 있다. 메모리 제어기(211)는 읽은 데이터에 대해 에러 정정 디코딩을 수행하고, 읽혀진 데이터가 정정 불가능한 에러를 가짐을 판단할 수 있다.For example, as mentioned above,
정정 불가능한 에러가 검출되면, S116 단계에서, 메모리 제어기(211)는 인터럽트 신호(IRQ)를 출력할 수 있다. 인터럽트 신호(IRQ)는 제1 내지 제n 코어들(CORE1~COREn) 중 적어도 하나의 코어로 전달될 수 있다. 인터럽트 신호(IRQ)는 적어도 하나의 코어를 통해 실행 영역(EA)의 제1 응용(APP1) 또는 운영체제(OS)로 전달될 수 있다.When an uncorrectable error is detected, in step S116, the
인터럽트 신호(IRQ)에 응답하여, S117 단계에서, 제1 응용(APP1)으로부터 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)로 콘텍스트 스위칭이 발생할 수 있다. 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 제1 내지 제n 코어들(CORE1~COREn)에 예외(exception)가 발생하여 예외 처리(exception handling)가 필요함을 알리는 예외 방송(exception broadcasting)을 수행할 수 있다.In response to the interrupt signal IRQ, context switching may occur from the first application APP1 to the operating system OS or the machine check exception handler MCEH in step S117. The operating system (OS) or machine check exception handler (MCEH) broadcasts an exception notifying that exception handling is required because an exception has occurred in the first to nth cores CORE1 to COREn. can be done
예를 들어, 예외 방송은 제1 내지 제n 코어들(CORE1~COREn)이 기계 검사 예외 처리기(MCEH)를 실행하도록 호출하는 호출일 수 있다. 예외 방송에 따라, 제1 내지 제n 코어들(CORE1~COREn)은 현재 수행하는 동작들을 중지하고, 기계 검사 예외 처리기(MCEH)에 접근할 수 있다.For example, the exception broadcasting may be a call for calling the first to nth cores CORE1 to COREn to execute the machine check exception handler MCEH. According to the exception broadcast, the first to nth cores CORE1 to COREn may stop currently performing operations and access the machine check exception handler MCEH.
예를 들어, 현재 수행하는 동작들은 프로세스들, 쓰레드들, 작업들, 연산들, 일련의 코드들 또는 명령들을 포함할 수 있다. 각 동작은 하나 또는 그보다 많은 중지 포인트를 가질 수 있다. 각 중지 포인트에서, 해당 동작을 수행하는 코어는 동작의 수행을 중지 및 재개하도록 허용될 수 있다.For example, currently performing operations may include processes, threads, tasks, operations, sequences of codes or instructions. Each action may have one or more breakpoints. At each suspension point, the core performing the operation may be allowed to suspend and resume performance of the operation.
제1 내지 제n 코어들(CORE1~COREn) 중 하나의 코어는 기계 검사 예외 처리기(MCEH)를 실행하여 예외 처리를 수행할 수 있다. 예외 처리를 수행하는 코어는 군주 코어(monarchy core)일 수 있다. 제1 내지 제n 코어들(CORE1~COREn) 중 군주 코어를 제외한 나머지 코어들은 기계 검사 예외 처리기(MCEH)를 실행하지 않을 수 있다.One of the first to nth cores CORE1 to COREn may perform exception processing by executing the machine check exception handler MCEH. The core that performs exception handling may be a monarchy core. Among the first to nth cores CORE1 to COREn, the cores other than the monarch core may not execute the machine check exception handler MCEH.
메모리 제어기(211)는 제1 메모리 모듈(220)의 제1 타입 메모리(221)를 액세스한다. 제1 타입 메모리(221)는 제2 타입 메모리(222)의 캐시 메모리이다. 제1 메모리 모듈(220)로부터 읽혀진 데이터가 정정 불가능한 것은 제1 타입 메모리(221)에 저장된 해당 데이터가 정정 불가능한 에러를 갖거나 또는 해당 데이터가 제1 타입 메모리(221)에 사상되어 있지 않음을 의미한다.The
제1 타입 메모리(221)에 저장된 해당 데이터가 정정 불가능한 에러를 가지면, 제2 타입 메모리(222)에 저장된 해당 데이터를 제1 타입 메모리(221)에 재기입 함으로써 에러가 치유될 수 있다. 해당 데이터가 제1 타입 메모리(221)에 사상되어 있지 않으면, 제2 타입 메모리(222)에 저장된 해당 데이터를 제1 타입 메모리(221)에 사상함으로써 에러가 치유될 수 있다.If the corresponding data stored in the
즉, 제2 타입 메모리(222)에 대한 액세스가 완료되면, 제1 메모리 모듈(220)로부터 정확한 데이터가 읽혀질 수 있다. 그러나 도 15를 참조하여 설명된 방법에 따르면, 제1 메모리 모듈(220)에서 제2 타입 메모리(222)에 대한 액세스가 발생한 때에 메모리 시스템(200, 도 1 참조)은 커널 패닉 또는 시스템 리부트에 진입할 수 있다.That is, when access to the
제1 메모리 모듈(220)에서 제2 타입 메모리(222)에 대한 액세스가 발생한 때에 커널 패닉 또는 시스템 리부트가 발생하는 것을 방지하기 위하여, 본 발명의 실시 예에 따른 메모리 시스템(200)은 제1 메모리 모듈(220)에 대한 예외 처리를 제1 예와 다른 제2 예에 따라 수행할 수 있다.In order to prevent a kernel panic or system reboot from occurring when access to the
도 18은 본 발명의 제2 예에 따른 동작 방법을 보여주는 순서도이다. 도 1, 도 17 및 도 18을 참조하면, S121 단계 내지 S123 단계는 도 15의 S110 단계 내 S230 단계와 동일하게 수행될 수 있다. 따라서, S121 단계 내지 S123 단계에 대한 중복되는 설명은 생략된다.18 is a flowchart showing an operating method according to a second example of the present invention. Referring to FIGS. 1, 17 and 18 , steps S121 to S123 may be performed identically to steps S230 in step S110 of FIG. 15 . Therefore, redundant descriptions of steps S121 to S123 are omitted.
S124 단계에서, 기계 검사 예외 처리기(MCEH)는 제1 메모리 모듈(220)과 연관된 에러가 발생하였음을 에러 로그에 기록할 수 있다. 예를 들어, 기계 검사 예외 처리기(MCEH)는 치명적 에러 또는 재해적 에러를 에러 로그에 기록할 수 있다. 예시적으로, S124 단계는 선택적으로 수행될 수 있다. S124 단계는 수행되거나 또는 수행되지 않고 생략될 수 있다. 예시적으로, S123 단계의 기계 검사에서, 검출된 에러가 치명적 에러인지 재해적 에러인지 판단하는 기능은 생략될 수 있다.In step S124 , the machine check exception handler (MCEH) may record that an error related to the
예외 처리가 완료되면, 기계 검사 예외 처리기(MCEH)로부터 제1 응용(APP1)으로 콘텍스트 스위칭이 수행된다. 도 16의 S111 단계에서 설명된 바와 같이, 제1 응용(APP1)은 제1 메모리 모듈(220)에 대해 읽기 요청을 다시 전송할 수 있다.When exception processing is completed, context switching is performed from the machine check exception handler MCEH to the first application APP1. As described in step S111 of FIG. 16 , the first application APP1 may transmit a read request to the
제1 응용(APP1)으로부터 기계 검사 예외 처리기(MCEH)로의 콘텍스트 스위칭(도 17의 S117 단계)에 제1 시간이 소비될 수 있다. 기계 검사(S123 단계)에 제2 시간이 소비될 수 있다. 기계 검사 예외 처리기(MCEH)로부터 제1 응용(APP1)으로의 콘텍스트 스위칭에 제3 시간이 소비될 수 있다.A first time may be consumed in context switching from the first application APP1 to the machine check exception handler MCEH (step S117 of FIG. 17 ). A second time may be consumed in the machine inspection (step S123). A third time may be spent in context switching from the machine check exception handler (MCEH) to the first application (APP1).
제1 시간, 제2 시간, 그리고 제3 시간이 흐르는 동안, 매체 제어기(223)는 읽기 명령(도 16의 S112 단계 참조)에 해당하는 데이터를 제2 타입 메모리(222)로부터 제1 타입 메모리(221)로 사상할 수 있다. 따라서, 제1 응용(APP1)이 읽기 요청을 재전송함에 따라 메모리 제어기(211)가 제1 메모리 모듈(220)에 읽기 명령을 재전송하면, 메모리 제어기(211)는 제1 메모리 모듈(220)로부터 정확한 데이터를 읽을 수 있다.While the first time, the second time, and the third time pass, the
도 18을 참조하여 설명된 바와 같이, 기계 검사 예외 처리기(MCEH)는 제1 메모리 모듈(220)에 대한 예외 처리 시에, 치명적 에러 또는 재해적 에러를 판단하지 않고, 커널 패닉 또는 시스템 리부트로 진입하지 않는다. 따라서, 제1 메모리 모듈(220)에서 제2 타입 메모리(222)에 대한 액세스가 발생하여도, 메모리 시스템(200)은 커널 패닉 또는 시스템 리부트를 경험하지 않고 제1 메모리 모듈(220)로부터 정확한 데이터를 획득할 수 있다.As described with reference to FIG. 18 , the machine check exception handler (MCEH) does not determine a fatal error or a catastrophic error when processing an exception for the
예시적으로, 제1 타입 메모리 모듈들(220, 230)에 대해 도 18을 참조하여 설명된 제2 예에 따른 예외 처리가 적용될 수 있다. 또한, 제2 타입 메모리 모듈들(240, 250)에 대해 도 15를 참조하여 설명된 제1 예에 따른 예외 처리가 적용될 수 있다.Illustratively, exception processing according to the second example described with reference to FIG. 18 may be applied to the first
도 19는 군주 코어가 할당되는 예를 보여준다. 예시적으로, 제1 내지 제4 코어들(CORE1~CORE4) 중 군주 코어가 할당되는 예가 도 19에 도시된다. 도 17 및 도 19를 참조하면, 제1 내지 제4 코어들(CORE1~CORE4)은 예외 방송(S118 단계)에 따라 현재 수행중인 동작들을 중지할 수 있다.19 shows an example in which monarch cores are allocated. Illustratively, an example in which the monarch core is allocated among the first to fourth cores CORE1 to CORE4 is illustrated in FIG. 19 . Referring to FIGS. 17 and 19 , the first to fourth cores CORE1 to CORE4 may stop currently performing operations according to exception broadcasting (step S118).
그러나 제1 내지 제4 코어들(CORE1~CORE4)이 수행중인 동작들의 종류에 따라, 제1 내지 제4 코어들(CORE1~CORE4)이 동작들을 중지할 수 있는 타이밍들은 다를 수 있다. 예를 들어, 제1 내지 제4 코어들(CORE1~CORE4)이 수행중인 쓰레드들의 중지 포인트들이 서로 다를 수 있다.However, timings at which the first to fourth cores CORE1 to CORE4 may stop operations may be different depending on the types of operations being performed by the first to fourth cores CORE1 to CORE4 . For example, the stopping points of the threads being executed by the first to fourth cores CORE1 to CORE4 may be different from each other.
예시적으로, 제1 내지 제4 코어들(CORE1~CORE4) 중 제1 코어(CORE1)가 가장 먼저 수행중인 동작을 중지하고, 호출에 응답할 수 있다. 가장 먼저 호출에 응답하는 제1 코어(CORE1)는 기계 검사 예외 처리기(MCEH)에 가장 먼저 도달한 것으로 여겨질 수 있다.For example, a first core CORE1 among the first to fourth cores CORE1 to CORE4 may stop an operation being performed first and respond to a call. The first core (CORE1) that responds to the call first can be considered to have reached the machine check exception handler (MCEH) first.
기계 검사 예외 처리기(MCEH)에 가장 먼저 도달한 제1 코어(CORE1)가 군주 코어(monarchy core)로 지정(또는 할당)될 수 있다. 제1 코어(CORE1)는 기계 검사 예외 처리기(MCEH)를 실행하여, 도 15 또는 도 18을 참조하여 설명된 예외 처리를 수행할 수 있다.The first core CORE1 reaching the machine check exception handler MCEH first may be designated (or assigned) as a monarchy core. The first core CORE1 may execute the exception processing described with reference to FIG. 15 or FIG. 18 by executing the machine check exception handler MCEH.
도 20은 나머지 코어들이 관리되는 제1 예를 보여준다. 도 20을 참조하면, 제2 내지 제4 코어들(CORE2~CORE4)은 제1 코어(CORE1)보다 늦게 기계 검사 예외 처리기(MCEH)에 도달할 수 있다. 예시적으로, 제2 내지 제4 코어들(CORE2~CORE4)은 제1 코어(CORE1)가 예외 처리를 완료할 때까지 대기할 수 있다.20 shows a first example in which remaining cores are managed. Referring to FIG. 20 , the second to fourth cores CORE2 to CORE4 may reach the machine check exception handler MCEH later than the first core CORE1 . For example, the second to fourth cores CORE2 to CORE4 may wait until the first core CORE1 completes exception processing.
제2 내지 제4 코어들(CORE2~CORE4)은 대기하는 코어들일 수 있다. 제1 코어(CORE1)가 예외 처리를 완료하면, 제1 내지 제4 코어들(CORE1~CORE4)은 이전에 수행하던 동작들로 복귀(return)할 수 있다. 예를 들어, 예외 처리가 커널 패닉 또는 시스템 리부트 없이 완료된 때에, 제1 내지 제4 코어들(CORE1~CORE4)은 이전에 수행하던 동작들로 복귀할 수 있다.The second to fourth cores CORE2 to CORE4 may be standby cores. When the first core CORE1 completes exception handling, the first to fourth cores CORE1 to CORE4 may return to previously performed operations. For example, when exception processing is completed without a kernel panic or system reboot, the first to fourth cores CORE1 to CORE4 may return to previously performed operations.
도 18을 참조하여 설명된 예외 처리와 같이, 예외 처리가 커널 패닉 또는 시스템 리부트 없이 완료되면, 제2 내지 제4 코어들(CORE2~CORE4)이 대기하는 것은 자원들의 낭비를 초래한다. 이를 방지하기 위하여, 본 발명의 실시 예에 따른 메모리 시스템(200)은 대기하는 코어들을 제거하는 새로운 알고리즘을 제공한다.Like the exception processing described with reference to FIG. 18 , if the exception processing is completed without a kernel panic or system reboot, waiting of the second to fourth cores CORE2 to CORE4 causes a waste of resources. To prevent this, the
도 21은 본 발명의 실시 예에 따라 예외 처리를 위해 코어들이 관리되는 예를 보여준다. 도 17 및 도 21을 참조하면, S131 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 예외 방송(S118 단계)을 통해 코어들(CORE1~COREn)을 호출할 수 있다.21 shows an example in which cores are managed for exception handling according to an embodiment of the present invention. 17 and 21 , in step S131, the operating system (OS) or the machine check exception handler (MCEH) may call the cores CORE1 to COREn through exception broadcasting (step S118).
S232 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 코어의 도착을 검출할 수 있다. 예를 들어, 특정한 코어가 수행중인 동작을 중지하고 호출에 응답할 때, 특정한 코어가 도착한 것으로 여겨질 수 있다. S430 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 도착한 코어가 첫 번째 코어인지 판단할 수 있다.In step S232, the operating system (OS) or the machine check exception handler (MCEH) may detect the arrival of the core. For example, a particular core may be considered to have arrived when it stops performing operations and responds to a call. In step S430, the operating system (OS) or machine check exception handler (MCEH) may determine whether the arrived core is the first core.
S430 단계에서, 도착한 코어가 첫 번째 코어이면, S440 단계가 수행된다. S440 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 도착한 코어를 기계 검사 예외 처리에 할당(또는 지정)할 수 있다. 예를 들어, 도착한 코어는 기계 검사 예외 처리기(MCEH)의 코드들을 실행함으로써 예외 처리를 수행할 수 있다. 예를 들어, 도착한 코어는 도 15 또는 도 18을 참조하여 설명된 방법에 따라 예외 처리를 수행할 수 있다.In step S430, if the arrived core is the first core, step S440 is performed. In step S440, the operating system (OS) or machine check exception handler (MCEH) may assign (or designate) the arrived core to machine check exception processing. For example, an arriving core can perform exception handling by executing codes in a machine-checked exception handler (MCEH). For example, the arriving core may perform exception processing according to the method described with reference to FIG. 15 or FIG. 18 .
S430 단계에서, 도착한 코어가 첫 번째 코어가 아니면, S450 단계가 수행된다. S450 단계에서, 운영체제(OS) 또는 기계 검사 예외 처리기(MCEH)는 도착한 코어를 중지된 동작으로 복귀시킬 수 있다. 도착한 코어는 중지된 동작으로 복귀하여 중지된 동작을 재개할 수 있다.In step S430, if the arrived core is not the first core, step S450 is performed. In step S450, the operating system (OS) or the machine check exception handler (MCEH) may return the arrived core to the suspended operation. The arriving core can return to the suspended operation and resume the suspended operation.
도 22는 나머지 코어들이 관리되는 제2 예를 보여준다. 예시적으로, 도 19에서 제1 코어(CORE1)가 군주 코어가 지정된 후에 나머지 코어들이 관리되는 예가 도 22에 도시된다. 도 13 및 도 22를 참조하면, 제2 내지 제4 코어들(CORE2~CORE4)은 제1 코어(CORE1)보다 늦게 기계 검사 예외 처리기(MCEH)에 도달할 수 있다.22 shows a second example in which the remaining cores are managed. Illustratively, an example in which the remaining cores are managed after the first core CORE1 is designated as the monarch core in FIG. 19 is illustrated in FIG. 22 . Referring to FIGS. 13 and 22 , the second to fourth cores CORE2 to CORE4 may reach the machine check exception handler MCEH later than the first core CORE1 .
예시적으로, 제2 코어(CORE2)가 제1 코어(CORE1) 다음인 두 번째로 기계 검사 예외 처리기(MCEH)에 도달할 수 있다. 제1 코어(CORE1)가 이미 군주 코어로 지정되었음을 인식함에 따라, 제2 코어(CORE2)는 중지된 동작으로 복귀하고, 그리고 중지된 동작을 재개할 수 있다(도 21의 S450 단계 참조). 예를 들어, 제2 코어(CORE2)는 중지된 동작의 중지 포인트로부터, 중지된 동작의 코드들을 실행할 수 있다.For example, the second core CORE2 may reach the machine check exception handler MCEH second after the first core CORE1. As the first core CORE1 recognizes that it has already been designated as the monarch core, the second core CORE2 returns to the suspended operation and resumes the suspended operation (see step S450 of FIG. 21 ). For example, the second core CORE2 may execute codes of the stopped operation from the stop point of the stopped operation.
마찬가지로, 제3 및 제4 코어들(CORE3, CORE4)은 제1 코어(CORE1)보다 늦게 기계 검사 예외 처리기(MCEH)에 도달할 수 있다. 제1 코어(CORE1)가 이미 군주 코어로 지정되었음을 인식함에 따라, 제3 및 제4 코어들(CORE3, CORE4)은 중지된 동작들로 각각 복귀하고, 그리고 중지된 동작들을 각각 재개할 수 있다(도 21의 S450 단계 참조).Similarly, the third and fourth cores CORE3 and CORE4 may reach the machine check exception handler MCEH later than the first core CORE1 . As the first core CORE1 recognizes that it has already been designated as the monarch core, the third and fourth cores CORE3 and CORE4 respectively return to the suspended operations, and resume the suspended operations, respectively ( See step S450 of FIG. 21).
도 18을 참조하여 설명된 바와 같이, 제1 메모리 모듈(220)에 대한 예외 처리 시에, 커널 패닉 또는 시스템 리부트는 발생하지 않는다. 제1 메모리 모듈(220)에 대한 예외 처리가 완료되면, 군주 코어는 중지된 동작으로 복귀한다. 제1 메모리 모듈(220)에 대한 예외 처리 시에 커널 패닉 또는 시스템 리부트가 발생하지 않으므로, 제2 내지 제4 코어들(CORE2~CORE4)이 예외 처리의 완료를 대기할 필요가 없다.As described with reference to FIG. 18 , a kernel panic or system reboot does not occur when an exception is processed for the
따라서, 제1 코어(CORE1)가 예외 처리를 수행하는 동안 제2 내지 제4 코어들(CORE2~CORE4)은 중지된 동작들로 복귀할 수 있다. 제2 내지 제4 코어들(CORE2~CORE4)이 중지된 동작들로 더 일찍 복귀함으로써, 제2 내지 제4 코어들(CORE2~CORE4)의 자원들의 낭비가 방지되고, 메모리 시스템(200)의 성능이 향상된다.Accordingly, while the first core CORE1 performs exception handling, the second to fourth cores CORE2 to CORE4 may return to suspended operations. As the second to fourth cores CORE2 to CORE4 return to the suspended operations earlier, waste of resources of the second to fourth cores CORE2 to CORE4 is prevented, and performance of the
예시적으로, 제1 타입 메모리 모듈들(220, 230)은 데이터를 제2 타입 메모리들(222, 232)에 저장(또는 백업)하며, 매체 제어기들(223, 233)은 제2 타입 메모리들(222, 232)에 대한 별도의 에러 정정 수단들을 구비한다. 따라서, 제1 타입 메모리 모듈들(220, 230)은 에러 없는 데이터를 보장할 수 있다. Illustratively, the first
즉, 도 18을 참조하여 설명된 바와 같이, 예외 처리 시에 커널 패닉 또는 시스템 리부트가 발생하지 않는 방법이 제1 타입 메모리 모듈들(220, 230)에 적용될 수 있다. 또한, 도 22를 참조하여 설명된 바와 같이, 제1 코어(CORE1)가 예외 처리를 수행하는 동안 제2 내지 제4 코어들(CORE2~CORE4)이 중지된 동작들로 복귀하는 방법이 제1 타입 메모리 모듈들(220, 230)에 적용될 수 있다.That is, as described with reference to FIG. 18 , a method in which a kernel panic or system reboot does not occur during exception processing may be applied to the first
반면, 제2 타입 메모리 모듈들(240, 250)은 제1 타입 메모리들(241, 251)만을 구비하며, 제1 타입 메모리들(241, 251)에 대한 자체적인 에러 정정 수단을 구비하지 않을 수 있다. 따라서, 제2 타입 메모리들(241, 251)에 저장된 데이터에서 정정 불가능한 에러가 발생할 수 있다.On the other hand, the second
즉, 도 15를 참조하여 설명된 바와 같이, 예외 처리 시에 커널 패닉 또는 시스템 리부트가 발생하는 방법이 제2 타입 메모리 모듈들(240, 250)에 적용될 수 있다. 또한, 도 20을 참조하여 설명된 바와 같이, 제1 코어(CORE1)가 예외 처리를 수행하는 동안 제2 내지 제4 코어들(CORE2~CORE4)은 커널 패닉 또는 시스템 리부트에 대비하여 대기하는 방법이 제1 타입 메모리 모듈들(220, 230)에 적용될 수 있다.That is, as described with reference to FIG. 15 , a method in which a kernel panic or system reboot occurs when an exception is handled may be applied to the second
도 23은 제1 코어(CORE1)가 예외 처리를 수행하는 동안 다른 예외 처리가 발생하는 예를 보여준다. 도 13 및 도 23을 참조하면, 제1 메모리 모듈(220)에서 발생한 정정 불가능한 제1 에러(UE1)에 대해 제1 코어(CORE1)가 예외 처리를 수행하는 동안, 제2 내지 제4 메모리 모듈들(230~250) 중 하나의 메모리 모듈에서 정정 불가능한 제2 에러(UE2)가 발생할 수 있다.23 shows an example in which another exception processing occurs while the first core CORE1 performs exception processing. 13 and 23 , while the first core CORE1 performs exception processing for the first uncorrectable error UE1 generated in the
도 17을 참조하여 설명된 바와 같이, 정정 불가능한 제2 에러(UE2)에 대해 예외 방송(S118)이 수행되어, 코어들(CORE1~CORE4)이 호출될 수 있다. 예외 처리를 수행하는 제1 코어(CORE1)는 호출에 응답하지 않을 수 있다. 예외 처리를 수행하지 않는 제2 내지 제4 코어들(CORE2~CORE4)은 호출에 응답할 수 있다.As described with reference to FIG. 17 , exception broadcasting ( S118 ) is performed for the uncorrectable second error UE2 , and thus the cores CORE1 to CORE4 may be called. The first core CORE1 performing exception handling may not respond to the call. The second to fourth cores CORE2 to CORE4 that do not perform exception processing may respond to the call.
예를 들어, 제4 코어(CORE4)가 호출에 가장 먼저 응답함으로써, 기계 검사 예외 처리기(MCEH)에 가장 먼저 도달할 수 있다. 따라서, 제4 코어(CORE4)가 정정 불가능한 제2 에러(UE2)에 대한 군주 코어로 지정(또는 할당)될 수 있다. 제4 코어(CORE4)는 정정 불가능한 제2 에러(UE2)에 대해 예외 처리를 수행할 수 있다.For example, the fourth core CORE4 may reach the machine check exception handler MCEH first by responding to the call first. Accordingly, the fourth core CORE4 may be designated (or assigned) as the monarch core for the second uncorrectable error UE2. The fourth core CORE4 may perform exception processing on the second uncorrectable error UE2.
도 24는 도 23의 상태에 후속하여 제1 코어(CORE1)가 예외 처리를 완료하는 예를 보여준다. 도 13 및 도 24를 참조하면, 제4 코어(CORE4)가 정정 불가능한 제2 에러(UE2)에 대해 예외 처리를 수행하는 동안, 제1 코어(CORE1)가 예외 처리를 완료할 수 있다. 예외 처리가 완료되면, 제1 코어(CORE1)는 제4 코어(CORE4)가 예외 처리를 수행하는 것과 무관하게 중지된 동작(또는 이전에 수행하던 동작)으로 복귀할 수 있다.FIG. 24 shows an example in which the first core CORE1 completes exception processing following the state of FIG. 23 . Referring to FIGS. 13 and 24 , while the fourth core CORE4 performs exception processing on the second uncorrectable error UE2, the first core CORE1 may complete exception processing. When the exception handling is completed, the first core CORE1 may return to the suspended operation (or the previously performed operation) regardless of whether the fourth core CORE4 performs exception handling.
제4 코어(CORE4)의 예외 처리가 완료될 때까지 대기하지 않고 제1 코어(CORE1)가 중지된 동작으로 복귀하면, 메모리 시스템(200)의 자원 낭비가 더 방지되고 그리고 메모리 시스템(200)의 성능이 더 향상될 수 있다.If the first core CORE1 returns to the suspended operation without waiting until the exception processing of the fourth core CORE4 is completed, waste of resources of the
도 25는 코어들(CORE1~COREn) 또는 프로세서(210)가 생성하는 에러 신호(CAT_ERR_N)의 제1 예를 보여준다. 도 13 및 도 25를 참조하면, 에러 신호(CAT_ERR_N)는 제1 선(C1) 또는 제2 선(C2)의 형태로 제어될 수 있다.25 shows a first example of an error signal CAT_ERR_N generated by the cores CORE1 to COREn or the
예를 들어, 메모리 제어기(211)가 정정 불가능한 에러를 검출한 때에, 에러 신호(CAT_ERR_N)는 하이 레벨로부터 로우 레벨로 천이할 수 있다. 정정 불가능한 에러가 재해적 에러가 아닌 치명적 에러이면, 에러 신호(CAT_ERR_N)는 제1 선(C1)과 같이 로우 레벨로부터 하이 레벨로 천이할 수 있다.For example, when the
정정 불가능한 에러가 재해적 에러이면, 제2 선(C2)과 같이 에러 신호(CAT_ERR_N)는 시스템 리부트가 수행될 때까지 로우 레벨로 유지될 수 있다. 정정 불가능한 에러가 제1 타입 메모리 모듈들(220, 230)에서 발생한 것이면, 도 18을 참조하여 설명된 바와 같이 커널 패닉 또는 시스템 리부트가 발생하지 않는다.If the uncorrectable error is a catastrophic error, the error signal CAT_ERR_N, like the second line C2, may be maintained at a low level until system reboot is performed. If an uncorrectable error occurs in the first
예를 들어, 제1 타입 메모리 모듈들(220, 230)에 대한 정정 불가능한 에러는 치명적 에러 또는 에러 없음으로 처리될 수 있다. 따라서, 제1 선(C1)을 참조하여 설명된 바와 같이 에러 신호(CAT_ERR_N)는 로우 레벨로부터 하이 레벨로 천이할 수 있다.For example, an uncorrectable error for the first
도 26은 코어들(CORE1~COREn) 또는 프로세서(210)가 생성하는 에러 신호(CAT_ERR_N)의 제2 예를 보여준다. 도 13 및 도 26을 참조하면, 에러 신호(CAT_ERR_N)는 제3 선(C3) 또는 제4 선(C4)의 형태로 제어될 수 있다.26 shows a second example of an error signal CAT_ERR_N generated by the cores CORE1 to COREn or the
예를 들어, 메모리 제어기(211)가 정정 불가능한 에러를 검출하고 그리고 정정 불가능한 에러가 재해적인 에러가 아닌 치명적 에러일 때, 제3 선(C3)과 같이 에러 신호(CAT_ERR_N)는 하이 레벨을 유지할 수 있다.For example, when the
메모리 제어기(211)가 정정 불가능한 에러를 검출하고 그리고 정정 불가능한 에러가 재해적인 에러일 때, 제4 선(C4)과 같이 에러 신호(CAT_ERR_N)는 하이 레벨로부터 로우 레벨로 천이할 수 있다. 시스템 리부트가 수행되면, 에러 신호(CAT_ERR_N)는 하이 레벨로 복원될 수 있다.When the
예를 들어, 제1 타입 메모리 모듈들(220, 230)에 대한 정정 불가능한 에러는 치명적 에러 또는 에러 없음으로 처리될 수 있다. 따라서, 제3 선(C3)을 참조하여 설명된 바와 같이 에러 신호(CAT_ERR_N)는 하이 레벨을 유지할 수 있다.For example, an uncorrectable error for the first
도 27은 본 발명의 실시 예에 따른 메모리 시스템(300)을 보여주는 블록도이다. 예를 들어, 메모리 시스템(300)은 응용 서버, 클라이언트 서버, 데이터 서버와 같은 서버를 포함할 수 있다. 다른 예로서, 메모리 시스템(300)은 개인용 컴퓨터 또는 워크 스테이션을 포함할 수 있다.27 is a block diagram showing a
도 27을 참조하면, 메모리 시스템(300)은 프로세서(310), 제1 내지 제4 메모리 모듈들(320~350), 루트 컴플렉스(360), 그리고 스토리지 장치(370)를 포함한다. 프로세서(310)는 메모리 시스템(300)의 구성 요소들 및 구성 요소들의 동작들을 제어할 수 있다. 프로세서(310)는 운영체제 및 응용들을 실행하고, 운영체제 또는 응용들을 이용하여 데이터를 처리할 수 있다.Referring to FIG. 27 , the
프로세서(310)는 메모리 제어기(311) 및 캐시 메모리(312)를 포함할 수 있다. 메모리 제어기(311)는 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 제1 내지 제4 메모리 모듈들(320~350)을 액세스할 수 있다. 캐시 메모리(312)는 정적 랜덤 액세스 메모리(SRAM)와 같은 고속의 메모리를 포함할 수 있다.The
메모리 제어기(311)는 레지스터(R)를 포함할 수 있다. 레지스터(R)는 메모리 제어기(311)가 제1 내지 제4 메모리 모듈들(320~350)을 액세스하는 데에 필요한 다양한 정보들을 저장할 수 있다. 메모리 제어기(311)는 레지스터(R)에 저장된 정보를 참조하여 제1 내지 제4 메모리 모듈들(320~350)을 액세스할 수 있다.The
제1 내지 제4 메모리 모듈들(320~350)은 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 메모리 제어기(311)에 연결될 수 있다. 메인 채널들(MCH)은 메모리 모듈들(320~350)(예를 들어, 반도체 메모리 모듈들)에 데이터를 저장하거나 데이터를 읽기 위해 사용되는 채널들일 수 있다. 메인 채널들(MCH)은 제1 내지 제4 메모리 모듈들(320~350)에 대해 각각 제공되는 채널들을 포함할 수 있다.The first to
보조 채널들(SCH)은 제1 내지 제4 메모리 모듈들(320~350)에 데이터를 저장하거나 읽는 것 외에, 제1 내지 제4 메모리 모듈들(320~350)과 연관된 추가적인 기능들을 제공할 수 있다. 예를 들어, 제1 내지 제4 메모리 모듈들(320~350)은 보조 채널들(SCH)을 통해 자신의 고유한 정보들을 메모리 제어기(311)에 제공할 수 있다. 보조 채널들(SCH)은 제1 내지 제4 메모리 모듈들(320~350)에 대해 각각 제공되는 채널들을 포함할 수 있다.In addition to storing or reading data in the first to
제1 내지 제4 메모리 모듈들(320~350)은 메모리 시스템(300)의 메인 메모리로 사용될 수 있다. 제1 내지 제4 메모리 모듈들(320~350)은 DIMM(Dual In-line Memory Module), RDIMM(Registered DIMM), LRDIMM(Load Reduced DIMM) 등과 같은 메모리 모듈의 표준들 중 하나에 따라 메모리 제어기(311)와 통신할 수 있다.The first to
루트 컴플렉스(360)는 프로세서(310)가 다양한 주변 장치들을 액세스하는 채널들을 제공할 수 있다. 예를 들어, 루트 컴플렉스(360)에 스토리지 장치(370)가 연결될 수 있다. 스토리지 장치(370)는 하드 디스크 드라이브, 광학 디스크 드라이브, 솔리드 스테이트 드라이브 등을 포함할 수 있다.Root complex 360 may provide channels through which
예시적으로, 루트 컴플렉스(360)에 연결되는 주변 장치들은 스토리지 장치(370)로 한정되지 않는다. 예를 들어, 루트 컴플렉스(360)는 모뎀, 그래픽 프로세싱 유닛(GPU), 뉴로모픽(Neuromophic) 프로세서 등과 같은 다양한 장치들에 연결될 수 있다.As an example, peripheral devices connected to the
프로세서(310)는 캐시 메모리(312), 메인 메모리인 제1 내지 제4 메모리 모듈들(320~350), 그리고 스토리지 장치(370)를 계층적으로 관리할 수 있다. 예를 들어, 프로세서(310)는 스토리지 장치(370)에 저장된 데이터 중 필요한 데이터를 제1 내지 제4 메모리 모듈들(320~350)을 포함하는 메인 메모리에 로드할 수 있다. 프로세서(310)는 메인 메모리에 저장된 데이터 중 백업이 필요한 데이터를 스토리지 장치(370)로 플러시(flush)할 수 있다.The
제1 내지 제4 메모리 모듈들(320~350)을 포함하는 메인 메모리의 저장 영역 중 일부는 캐시 메모리(312)에 사상될 수 있다. 프로세서(310)는 메인 메모리의 특정한 저장 공간을 액세스할 필요가 있을 때, 특정한 저장 공간이 캐시 메모리(312)에 사상되어 있는지 판단할 수 있다.A part of the storage area of the main memory including the first to
특정한 저장 공간이 캐시 메모리(312)에 사상되어 있으면, 프로세서(310)는 캐시 메모리(312)의 특정한 저장 공간을 액세스할 수 있다. 특정한 저장 공간이 캐시 메모리에 사상되어 있지 않으면, 프로세서(310)는 제1 내지 제4 메모리 모듈들(320~350)의 특정한 저장 공간을 캐시 메모리(312)에 사상할(또는 가져올(fetch)) 수 있다.If a specific storage space is mapped to the
캐시 메모리(312)의 저장 공간이 부족하면, 프로세서(310)는 기존에 캐시 메모리(312)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 프로세서(310)는 갱신된 데이터를 제1 내지 제4 메모리 모듈들(320~350)로 플러시할 수 있다.When the storage space of the
제1 내지 제4 메모리 모듈들(320~350)은 이종의 메모리 모듈들을 포함할 수 있다. 예를 들어, 제1 및 제2 메모리 모듈들(320, 330)은 제1 타입 메모리 모듈들일 수 있다. 제3 및 제4 메모리 모듈들(340, 350)은 제2 타입 메모리 모듈들일 수 있다.The first to
제1 메모리 모듈(320)은 제1 타입 메모리(321), 제2 타입 메모리(322), 매체 제어기(323), 그리고 직렬 프레즌스 검출(SPD)(Serial Presence Detect) 장치(325)를 포함할 수 있다. 제2 메모리 모듈(330)은 제1 타입 메모리(331), 제2 타입 메모리(332), 매체 제어기(333), 그리고 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(335)를 포함할 수 있다. 이하에서, 제1 메모리 모듈(320)을 참조하여 제1 타입 메모리 모듈들(320, 330)이 설명된다.The
제1 타입 메모리(321)는 고속의 휘발성 메모리, 예를 들어 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. 제2 타입 메모리(322)는 제1 타입 메모리(321)보다 느린 속도를 갖고, 제1 타입 메모리(321)보다 큰 저장 용량을 갖는 불휘발성 메모리를 포함할 수 있다. 예를 들어, 제2 타입 메모리(322)는 플래시 메모리, 상 변화 메모리(Phase Change Memory), 강유전체 메모리(Ferroelectric Memory), 자기 메모리(Magnetic Memory), 저항성 메모리(Resistive Memory) 등을 포함할 수 있다.The
매체 제어기(323)는 메인 채널들(MCH) 중 대응하는 채널을 통해 전달되는 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)로부터의 액세스 명령을 제1 타입 메모리(321) 또는 제2 타입 메모리(322)에 전달할 수 있다. 액세스 명령에 따라, 매체 제어기(323)는 메인 채널들(MCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)와 데이터를 교환할 수 있다.The
매체 제어기(323)는 제2 타입 메모리(322)의 저장 용량 또는 저장 공간을 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)에 제공할 수 있다. 매체 제어기(323)는 제1 타입 메모리(321)를 제2 타입 메모리(322)의 캐시 메모리로 사용할 수 있다. The
예를 들어, 매체 제어기(323)는 제2 타입 메모리(322)의 저장 공간 중 일부 저장 공간을 제1 타입 메모리(321)에 사상할 수 있다. 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(321)에 사상되어 있으면, 매체 제어기(323)는 액세스 명령을 제1 타입 메모리(321)로 전달할 수 있다.For example, the
외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(321)에 사상되어 있지 않으면, 매체 제어기(323)는 해당 저장 공간을 제2 타입 메모리(322)로부터 제1 타입 메모리(321)로 사상(또는 백업)할 수 있다.If the storage space associated with the access command from the external host device, for example, the
제1 타입 메모리(321)의 저장 공간이 부족하면, 매체 제어기(323)는 기존에 제1 타입 메모리(321)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 매체 제어기(323)는 갱신된 데이터를 제2 타입 메모리(322)로 플러시할 수 있다.When the storage space of the
SPD 장치(325)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)와 통신할 수 있다. 예를 들어, 제1 메모리 모듈(320)이 초기화될 때에, SPD 장치(325)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)에 제공할 수 있다.The
예를 들어, SPD 장치(325)는 제1 메모리 모듈(320)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(325)는 제2 타입 메모리(322)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(325)는 제2 타입 메모리(322)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)에 제공할 수 있다.For example, the
예를 들어, SPD 장치(325)에 저장되는 용량 정보는 제2 타입 메모리(322)의 사용자 용량에 대한 정보를 포함할 수 있다. 제2 타입 메모리(322)의 저장 용량은 사용자 용량, 메타 용량, 그리고 예비 용량을 포함할 수 있다. 사용자 용량은 제2 타입 메모리(322)가 외부의 호스트 장치, 예를 들어 메모리 제어기(311)에 제공하는 저장 용량일 수 있다.For example, the capacity information stored in the
메타 용량은 제2 타입 메모리(322)를 관리하기 위한 다양한 메타 정보가 저장되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(311)에 공개되지 않는 저장 용량일 수 있다. 예비 용량은 제2 타입 메모리(322)를 관리하기 위해 확보되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(311)에 공개되지 않는 저장 용량일 수 있다.The meta capacity may be a storage capacity in which various meta information for managing the
SPD 장치(325)에 저장된 용량 정보는 제2 타입 메모리(322)의 사용자 용량에 대한 정보를 포함할 수 있다. 이하에서, 별도로 명시되지 않으면, 제2 타입 메모리(322)의 용량은 제2 타입 메모리(322)의 사용자 용량을 가리키는 것으로 이해될 수 있다.The capacity information stored in the
제3 메모리 모듈(340)은 제1 타입 메모리(341) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(345)를 포함할 수 있다. 제4 메모리 모듈(350)은 제1 타입 메모리(351) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(355)를 포함할 수 있다. 이하에서, 제3 메모리 모듈(340)을 참조하여 제2 타입 메모리 모듈들(340, 350)이 설명된다.The
제1 타입 메모리(341)는 제1 메모리 모듈(320)의 제1 타입 메모리(321)와 마찬가지로 동적 랜덤 액세스 메모리를 포함할 수 있다. SPD 장치(345)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)와 통신할 수 있다. 예를 들어, 제3 메모리 모듈(340)이 초기화될 때에, SPD 장치(345)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)에 제공할 수 있다.Like the
예를 들어, SPD 장치(325)는 제3 메모리 모듈(340)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(345)는 제1 타입 메모리(341)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(345)는 제1 타입 메모리(341)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(311) 또는 프로세서(310)에 제공할 수 있다.For example, the
메모리 시스템(300)에 전원이 공급되면, 메모리 제어기(311)는 제1 내지 제4 메모리 모듈들(320~350)과 초기화를 수행할 수 있다. 예를 들어, 제1 내지 제4 메모리 모듈들(320~350)의 SPD 장치들(325~355)은 보조 채널들(SCH)을 통해 메모리 제어기(311)에 각각 용량 정보를 제공할 수 있다.When power is supplied to the
제1 타입 메모리 모듈들(320, 330)의 SPD 장치들(325, 335)은 각각 제2 타입 메모리들(322, 332)의 저장 용량들을 메모리 제어기(311)에 제공할 수 있다. 제2 타입 메모리 모듈들(340, 350)의 SPD 장치들(345, 355)은 각각 제1 타입 메모리들(341, 351)의 저장 용량들을 메모리 제어기(311)에 제공할 수 있다. 예를 들어, 메모리 제어기(311)는 SPD 장치들(325~355)로부터 저장 용량들을 각각 읽을 수 있다.The
상술된 실시 예에서, 루트 컴플렉스(360)에 스토리지 장치(370)가 연결되는 것으로 도시된다. 그러나 루트 컴플렉스(360)에 연결되는 장치는 스토리지 장치(370)로 한정되지 않는다.In the above-described embodiment, the
도 28은 프로세서(310)가 제1 및 제3 메모리 모듈들(320, 340)을 액세스하는 예를 보여준다. 도면이 불필요하게 복잡해지는 것을 방지하기 위하여, 프로세서(310), 제1 메모리 모듈(320), 그리고 제3 메모리 모듈(340) 외의 다른 구성 요소들은 생략된다.28 shows an example in which the
도 27 및 도 27을 참조하면, 프로세서(310)에서 실행되는 개체들을 보여주는 실행 영역(EA)이 도시된다. 실행 영역(EA)을 참조하면, 프로세서(310)에서 운영체제(OS)가 실행될 수 있다. 또한, 운영체제(OS)의 지원을 바탕으로, 프로세서(310)에서 제1 내지 제3 응용들(APP1~APP3)이 실행될 수 있다.Referring to FIGS. 27 and 27 , an execution area EA showing objects executed in the
운영체제(OS)는 페이지 부재 처리기(PFH)를 포함할 수 있다. 페이지 부재 처리기(PFH)는 제1 내지 제3 응용들(APP1~APP3)이 제1 및 제3 메모리 모듈들(320, 340)을 액세스할 때에 발생하는 페이지 부재(page fault)를 처리할 수 있다. 페이지 부재 처리기(PFH)의 동작은 도 29 및 도 30을 참조하여 더 상세히 설명된다.The Operating System (OS) may include a Page Fault Handler (PFH). The page fault handler PFH may process a page fault that occurs when the first to third applications APP1 to APP3 access the first and
제1 메모리 모듈(320)은 제2 타입 메모리(322)의 저장 공간을 프로세서(310)에 제공한다. 제1 메모리 모듈(320)의 사용자 용량에 대응하는 저장 공간은 제1 저장 영역(SA1)으로 도시된다. 제1 저장 영역(SA1)은 제1 내지 제3 서브 저장 영역들(SA1_1~SA1_3)을 포함할 수 있다.The
제1 내지 제3 서브 저장 영역들(SA1_1~SA1_3)은 제2 타입 메모리(322)의 저장 공간에 속하며, 논리적 또는 물리적으로 구별되는 저장 영역들일 수 있다. 제1 내지 제3 서브 저장 영역들(SA1_1~SA1_3)은 서로 다른 주소들에 의해 액세스될 수 있다.The first to third sub storage areas SA1_1 to SA1_3 belong to the storage space of the
제1 저장 영역(SA1)에 더하여, 제1 메모리 모듈(320)의 메타 용량에 대응하는 저장 공간은 제1 메타 저장 영역(SA1_M)으로 도시된다. 매체 제어기(323)는 제1 저장 영역(SA1)을 액세스하는 데에 필요한 다양한 정보들을 제1 메타 저장 영역(SA1_M)에 저장할 수 있다.In addition to the first storage area SA1 , a storage space corresponding to the meta capacity of the
제3 메모리 모듈(340)은 제1 타입 메모리(341)의 저장 공간을 프로세서(310)에 제공한다. 제3 메모리 모듈(340)의 저장 공간은 제2 저장 영역(SA2)으로 도시된다. 제2 저장 영역(SA2)은 제1 저장 영역(SA1)보다 작을 수 있다.The
메모리 시스템(300)이 초기화되면, 프로세서(310)의 메모리 제어기(311)는 보조 채널들(SCH)을 통해 제1 내지 제4 메모리 모듈들(320~350)의 저장 공간들을 식별할 수 있다. 프로세서(310), 예를 들어 운영체제(OS)는 식별된 저장 공간들에 주소들, 예를 들어 가상 주소들(VA)을 할당할 수 있다.When the
프로세서(310), 예를 들어 운영체제(OS)는 가상 주소들(VA)을 이용하여 제1 저장 영역(SA1) 및 제2 저장 영역(SA2)을 액세스할 수 있다. 프로세서(310), 예를 들어 운영체제(OS)는 가상 주소들(VA)을 이용하여 제1 내지 제4 메모리 모듈들(320~350)의 저장 공간을 제1 내지 제3 응용들(APP1~APP3)에 할당할 수 있다.The
메모리 제어기(311)는 프로세서(310)로부터 가상 주소들(VA)에 기반한 액세스 명령을 수신할 수 있다. 메모리 제어기(311)는 가상 주소들(VA)을 제1 내지 제4 메모리 모듈들(320~350)의 실제 주소들로 변환할 수 있다. 메모리 제어기(311)는 실제 주소들에 기반하여 메인 채널들(MCH)을 통해 제1 내지 제4 메모리 모듈들(320~350)을 액세스할 수 있다. 예를 들어, 메모리 제어기(311)는 제1 및 제2 메인 채널들(MCH1, MCH2)을 통해 제1 및 제3 메모리 모듈들(320, 3400을 각각 액세스할 수 있다.The
메모리 제어기(311)는 프로세서(310)에 의해 할당된 가상 주소들(VA)과 제1 내지 제4 메모리 모듈들(320~350)의 실제 주소들의 사상 정보를 페이지 테이블(PT)로서 제3 메모리 모듈(340)에 저장할 수 있다. 페이지 테이블(PT)은 제1 내지 제4 메모리 모듈들(320~350)에 각각 대응하는 제1 내지 제4 테이블들(T1~T4)을 포함할 수 있다.The
예시적으로, 메모리 제어기(311)는 페이지 테이블(PT)을 제2 타입 메모리 모듈들(340, 350) 중 하나에 저장할 수 있다. 다른 예로서, 메모리 제어기(311)는 페이지 테이블(PT)을 제1 내지 제4 메모리 모듈들(320~350) 중 하나에 저장할 수 있다. 예를 들어, 메모리 제어기(311)는 제1 내지 제4 메모리 모듈들(320~350)의 제1 내지 제4 테이블들(T1~T4)을 하나의 메모리 모듈에 저장할 수 있다.For example, the
제2 타입 메모리 모듈들(340, 350)은 메모리 제어기(311)에 의해 직접 액세스된다. 메모리 제어기(311)가 제2 타입 메모리 모듈들(340, 350)을 액세스할 때에 사용하는 주소들은 제1 타입 메모리들(341, 351)의 물리 주소들(PA)일 수 있다. 따라서, 제2 타입 메모리 모듈들(340, 350)에 대한 제3 및 제4 테이블들(T3, T4)은 가상 주소들(VA) 및 제2 타입 메모리 모듈들(340, 350)의 물리 주소들(PA)의 사상 정보를 포함할 수 있다.The second
제1 타입 메모리 모듈들(320, 330)은 메모리 제어기(311)에 의해 직접 액세스되지 않는다. 메모리 제어기(311)는 매체 제어기(323, 333)를 통해 제1 타입 메모리 모듈들(320, 330)을 액세스한다. 메모리 제어기(311)가 제1 타입 메모리 모듈들(320, 330)을 액세스할 때에 사용하는 주소들은 제2 타입 메모리들(322, 332)의 물리 주소들(PA)이 아니며, 논리 주소들(LA)로 불릴 수 있다.The first
매체 제어기(323 또는 333)는 메모리 제어기(311)가 사용하는 논리 주소들(LA) 및 제2 타입 메모리(322 또는 332)의 물리 주소들(PA) 사이의 사상 정보를 제1 메타 저장 영역(SA1_M)에 저장할 수 있다. 제1 메타 저장 영역(SA1_M)에 저장된 사상 정보를 이용하여, 매체 제어기(323 또는 333)는 메모리 제어기(311)로부터의 액세스 명령을 제2 타입 메모리(322 또는 332)에 대한 액세스 명령으로 변환할 수 있다.The
메모리 제어기(311)가 제1 타입 메모리 모듈들(320, 330)의 논리 주소들(LA)을 사용하므로, 제1 타입 메모리 모듈들(320, 330)에 대한 제1 및 제2 테이블들(T1, T2)은 가상 주소들(VA) 및 논리 주소들(LA) 사이의 사상 정보를 포함할 수 있다.Since the
메모리 제어기(311)는 페이지 테이블(PT)이 저장된 제3 메모리 모듈(340)의 저장 공간의 시작 주소 및 페이지 테이블(PT)의 크기에 대한 정보를 레지스터(R)에 저장할 수 있다. 운영체제(OS) 또는 제1 내지 제3 응용들(APP1~APP3)이 가상 주소들(VA)에 기반하여 제1 내지 제4 메모리 모듈들(320~350)에 대한 액세스를 지시할 때, 메모리 제어기(311)는 레지스터(R)를 참조하여 페이지 테이블(PT)을 검색하고, 그리고 검색 결과에 따라 제1 내지 제4 메모리 모듈들(320~350)에 액세스 명령을 전송할 수 있다.The
도 29는 페이지 부재(page fault)가 발생하는 예를 보여준다. 도 27 및 도 29를 참조하면, S211 단계에서, 제1 응용(APP1)이 제1 메모리 모듈(320)에 대한 메모리 액세스를 지시할 수 있다. 제1 응용(APP1)의 지시는 운영체제(OS)를 통해 메모리 제어기(311)로 전달될 수 있다. S212 단계에서, 메모리 제어기(311)는 레지스터(R)를 참조하여 페이지 테이블(PT)을 검색할 수 있다.29 shows an example in which a page fault occurs. Referring to FIGS. 27 and 29 , in step S211 , the first application APP1 may instruct memory access to the
메모리 액세스가 요청된 제1 메모리 모듈(320)의 가상 주소들(VA)의 사상 정보가 제1 테이블(T1)에 존재하지 않으면, S213 단계에서 페이지 부재(page fault)가 발생할 수 있다. 예를 들어, 제1 응용(APP1)이 새로운 메모리의 할당을 요청하면, 운영체제(OS)는 메모리의 할당을 위해 메모리 액세스를 메모리 제어기(311)에 지시할 수 있다.If the mapping information of the virtual addresses VA of the
이전에 사용되지 않은 새로운 메모리의 할당이 요청되었으므로, 사상 정보는 제1 테이블(T1)에 존재하지 않을 수 있다. 즉, 새로운 메모리의 할당이 수행될 때, 페이지 부재(page fault)가 발생할 수 있다. 예를 들어, 제1 응용(APP1)의 실행이 시작될 때, 새로운 메모리의 할당이 요청되고 페이지 부재가 발생할 수 있다. 페이지 부재가 발생하면, S214 단계에서, 제1 응용(APP1)으로부터 운영체제(OS)로 문맥 교환(context switching)이 수행될 수 있다.Since allocation of new memory that has not been used before has been requested, mapping information may not exist in the first table T1. That is, when a new memory is allocated, a page fault may occur. For example, when the execution of the first application APP1 starts, allocation of new memory is requested and a page fault may occur. When a page fault occurs, context switching may be performed from the first application APP1 to the operating system OS in step S214.
도 30은 부재 처리(fault handling)가 수행되는 예를 보여준다. 도 30을 참조하면, S215 단계에서, 운영체제(OS)의 페이지 부재 처리기(PFH)는 부재 처리를 수행할 수 있다. 예를 들어, 페이지 부재 처리기(PFH)는 제1 응용(APP1)이 요청한 가상 주소(VA)에 제1 메모리 모듈(320)의 자유 페이지의 논리 주소(LA)를 사상할 수 있다.30 shows an example in which fault handling is performed. Referring to FIG. 30 , in step S215 , the page fault handler PFH of the operating system OS may perform absence processing. For example, the page fault handler PFH may map the logical address LA of the free page of the
예를 들어, 제1 내지 제4 메모리 모듈들(320~350)의 자유 용량이 부족하면, 프로세서(310)는 제1 메모리 모듈(320)의 제1 저장 영역(SA1)에 저장된 데이터의 일부를 스토리지 장치(370)로 스왑하고, 스왑된 데이터의 저장 공간을 해제(release)함으로써 제1 저장 영역(SA1)에 자유 용량을 확보할 수 있다.For example, when the free capacity of the first to
사상된 논리 주소(LA)는 제1 응용(APP1)에 대한 제1 응용 저장 영역(SA_APP1)으로서 제1 저장 영역(SA1)에 할당될 수 있다. S216 단계에서, 메모리 제어기(311)는 페이지 테이블(PT)의 제1 테이블(T1)에 제1 응용 저장 영역(SA_APP1)의 사상 정보를 기입함으로써 페이지 테이블을 갱신할 수 있다. S217 단계에서, 부재 처리가 완료된 후에 페이지 부재 처리기(PFH)로부터 제1 응용(APP1)으로 문맥 교환(context switching)이 수행될 수 있다.The mapped logical address LA may be allocated to the first storage area SA1 as the first application storage area SA_APP1 for the first application APP1. In step S216, the
도 29 및 도 30을 참조하여 설명된 바와 같이, 페이지 부재가 발생하고 부재 처리가 수행되면, 두 번의 문맥 교환들이 수행된다. 문맥 교환들은 메모리 시스템(300)의 자원을 소모하고, 메모리 시스템(300)의 동작 속도를 저해할 수 있다.As described with reference to Figs. 29 and 30, when a page fault occurs and the fault processing is performed, two context switches are performed. Context switches may consume resources of the
도 31은 제1 응용(APP1)에 '01' 내지 '16'의 가상 주소들로 식별되는 가상 저장 영역(VSA)이 할당되는 예를 보여준다. 도 27 및 도 31을 참조하면, S221 단계에서, 제1 응용(APP1)은 가상 저장 영역(VSA)의 '01'의 가상 주소(VA)에 대한 액세스를 지시할 수 있다. 예를 들어, '01'의 가상 주소(VA)는 제1 메모리 모듈(320)에 대응할 수 있다.31 shows an example in which a virtual storage area VSA identified by virtual addresses of '01' to '16' is allocated to the first application APP1. Referring to FIGS. 27 and 31 , in step S221, the first application APP1 may instruct access to the virtual address VA of '01' of the virtual storage area VSA. For example, a virtual address VA of '01' may correspond to the
'01'의 가상 주소(VA)의 사상 정보가 제1 테이블(T1, 도 29 참조)에 존재하지 않으므로, S222 단계에서 페이지 부재가 발생할 수 있다. 이후에 문맥 교환이 수행되고 페이지 부재 처리기(PFH)가 활성화될 수 있다. S223 단계에서, 페이지 부재 처리기(PFH)는 부재 처리를 수행할 수 있다.Since mapping information of the virtual address VA of '01' does not exist in the first table (T1, see FIG. 29), a page fault may occur in step S222. A context switch is then performed and the Page Fault Handler (PFH) can be activated. In step S223, the page fault handler PFH may perform element processing.
예를 들어, 페이지 부재 처리기(PFH)는 '01'의 가상 주소(VA)에 제1 응용 저장 영역(SA_APP1)의 '21'의 논리 주소(LA)를 사상할 수 있다. '21'의 논리 주소(LA)는 제1 메모리 모듈(320)에 대응할 수 있다. S224 단계에서, 페이지 부재 처리기(PFH)는 '01'의 가상 주소(VA)와 '21'의 논리 주소(LA)의 사상 정보를 포함하도록 제1 테이블(T1)에 대해 페이지 테이블 갱신을 수행할 수 있다.For example, the page fault handler PFH may map the logical address LA of '21' of the first application storage area SA_APP1 to the virtual address VA of '01'. A logical address LA of '21' may correspond to the
도 32는 도 31에 후속하여 제1 실시 예에 따라 가상 주소들(VA)이 할당되는 예를 보여준다. 도 32를 참조하면, S231 단계에서, 제1 응용(APP1)은 가상 저장 영역(VSA)의 '02'의 가상 주소(VA)를 갖는 다음 페이지를 액세스할 수 있다. S232 단계에서 페이지 부재가 발생하고, S233 단계에서 부재 처리가 수행될 수 있다.FIG. 32 shows an example in which virtual addresses VA are allocated according to the first embodiment following FIG. 31 . Referring to FIG. 32 , in step S231 , the first application APP1 may access the next page having the virtual address VA of '02' of the virtual storage area VSA. A page fault may occur in step S232, and the absence process may be performed in step S233.
페이지 부재 처리기(PFH)는 제1 응용 저장 영역(SA_APP1)의 '22'의 논리 주소(LA)를 '02'의 가상 주소(VA)에 할당할 수 있다. S234 단계에서, 페이지 부재 처리기(PFH)는 '02'의 가상 주소(VA)와 '22'의 논리 주소(LA)의 사상 정보를 포함하도록 제1 테이블(T1)에 대해 페이지 테이블 갱신을 수행할 수 있다. 도 31 및 도 32를 참조하여 설명된 바와 같이, 제1 응용(APP1)은 '01' 내지 '16'의 가상 주소들(VA)에 대한 액세스들을 순차적으로 요청할 수 있다.The page fault handler PFH may allocate the logical address LA of '22' of the first application storage area SA_APP1 to the virtual address VA of '02'. In step S234, the page fault handler PFH updates the first table T1 to include mapping information of the virtual address VA of '02' and the logical address LA of '22'. can As described with reference to FIGS. 31 and 32 , the first application APP1 may sequentially request access to the virtual addresses VA of '01' to '16'.
도 33은 페이지 부재 처리기(PFH)가 제1 실시 예에 따라 '01' 내지 '16'의 가상 주소들(VA)에 대해 페이지 부재 처리를 수행한 예를 보여준다. 도 33을 참조하면, S241 단계, S242 단계 및 S243 단계를 통해, 페이지 부재 처리기(PFH)는 가상 저장 영역(VSA)의 '01' 내지 '16'의 가상 주소들(VA)에 제1 응용 저장 영역(SA_APP1)의 '21' 내지 '36'의 논리 주소들(LA)을 사상할 수 있다. 페이지 부재 처리기(PFH)는 '01' 내지 '16'의 가상 주소들(VA) 각각에 대해 페이지 부재 처리를 수행할 수 있다.33 shows an example in which the page fault handler PFH performs page fault processing for virtual addresses VA of '01' to '16' according to the first embodiment. Referring to FIG. 33, through steps S241, S242, and S243, the page fault handler PFH stores the first application at virtual addresses VA of '01' to '16' of the virtual storage area VSA. Logical addresses LA of '21' to '36' of the area SA_APP1 may be mapped. The page fault handler PFH may perform page fault processing for each of the virtual addresses VA of '01' to '16'.
통상적으로 페이지의 사이즈는 4KB일 수 있다. 제1 응용(APP1)이 사용하는 메모리 용량은 수 MB 내지 수 GB일 수 있다. 제1 타입 메모리 모듈들(320, 330)과 같은 대용량의 스토리지 클래스 메모리들이 도입됨에 따라, 제1 응용(APP1)이 사용하는 메모리 용량은 더 증가할 수 있다.Typically, the size of a page may be 4 KB. The memory capacity used by the first application APP1 may be several MB to several GB. As large-capacity storage class memories such as the first-
제1 응용(APP1)이 대용량의 메모리를 할당할 때에 4KB의 페이지의 단위로 부재 처리를 수행하는 것은 프로세서(310)의 자원을 과도하게 소모하며 프로세서(310) 및 메모리 시스템(300)의 동작 속도를 현저히 저해할 수 있다. 이와 같은 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 프로세서(310)(또는 운영체제(OS))는 제1 응용(APP1)이 액세스를 요청하는 페이지들의 수보다 적은 수의 부재 처리를 수행할 수 있다.When the first application (APP1) allocates a large amount of memory, performing absence processing in units of 4 KB pages excessively consumes the resources of the
도 34은 본 발명의 제2 실시 예에 따른 부재 처리 방법을 보여준다. 도 28 및 도 34을 참조하면, S251 단계에서, 페이지 부재 처리기(PFH)는 페이지들의 수를 조절할 수 있다. S252 단계에서, 페이지 부재 처리기(PFH)는 조절된 페이지들의 수에 따라 페이지들을 할당할 수 있다. S253 단계에서, 페이지 부재 처리기(PFH)는 할당에 따라 페이지 테이블(PT)을 갱신할 수 있다.34 shows a member processing method according to a second embodiment of the present invention. Referring to FIGS. 28 and 34 , in step S251, the page absence handler PFH may adjust the number of pages. In step S252, the page fault handler PFH may allocate pages according to the adjusted number of pages. In step S253, the page fault handler (PFH) may update the page table (PT) according to the allocation.
예를 들어, 페이지 부재 처리기(PFH)는 페이지 부재가 발생한 액세스의 특성에 따라 페이지들의 수를 조절할 수 있다. 페이지 부재 처리기(PFH)는 특정한 액세스와 연관된 부재 처리 시에 둘 이상의 가상 주소들(VA)과 둘 이상의 논리 주소들(LA)을 사상할 수 있다. For example, the page fault handler (PFH) can adjust the number of pages depending on the nature of the access for which the page fault occurred. The Page Fault Handler (PFH) may map two or more virtual addresses (VA) and two or more logical addresses (LA) when processing a fault associated with a particular access.
메모리 할당과 같은 연속적인 가상 주소들에 대한 액세스들에 의해 페이지 부재가 발생할 때, 페이지 부재 처리기(PFH)는 부재 처리 시에 사상되는 가상 주소들(VA)의 수 및 논리 주소들(LA)의 수를 순차적으로 증가할 수 있다.When a page fault occurs due to accesses to consecutive virtual addresses, such as memory allocation, the page fault handler (PFH) determines the number of virtual addresses (VA) and the number of logical addresses (LA) mapped during fault processing. The number can be incrementally increased.
도 35는 도 31에 후속하여 제2 실시 예에 따라 가상 주소들(VA)이 할당되는 예를 보여준다. 도 35를 참조하면, S261 단계에서, 제1 응용(APP1)은 가상 저장 영역(VSA)의 '02'의 가상 주소(VA)를 갖는 다음 페이지를 액세스할 수 있다. S262 단계에서 페이지 부재가 발생하고, S263 단계에서 부재 처리가 수행될 수 있다.FIG. 35 shows an example in which virtual addresses VA are allocated according to the second embodiment following FIG. 31 . Referring to FIG. 35 , in step S261, the first application APP1 can access the next page having the virtual address VA of '02' of the virtual storage area VSA. A page fault may occur in step S262, and the absence process may be performed in step S263.
페이지 부재 처리기(PFH)는 둘 이상의 논리 주소들을 둘 이상의 가상 주소들과 사상할 수 있다. 예를 들어, 페이지 부재 처리기(PFH)는 제1 응용 저장 영역(SA_APP1)의 '22'의 논리 주소(LA)를 '02'의 가상 주소(VA)에 할당하고, '23'의 논리 주소(LA)를 '03'의 가상 주소(VA)와 사상할 수 있다.A page fault handler (PFH) can map two or more logical addresses to two or more virtual addresses. For example, the page fault handler PFH allocates the logical address LA of '22' of the first application storage area SA_APP1 to the virtual address VA of '02' and the logical address of '23' ( LA) can be mapped to a virtual address (VA) of '03'.
S264 단계에서, 페이지 부재 처리기(PFH)는 '02'의 가상 주소(VA)와 '22'의 논리 주소(LA)의 사상 정보를 포함하도록, 그리고 '03'의 가상 주소(VA)와 '23'의 논리 주소(LA)의 사상 정보를 포함하도록 제1 테이블(T1)에 대해 페이지 테이블 갱신을 수행할 수 있다.In step S264, the page fault handler (PFH) includes mapping information of the virtual address (VA) of '02' and the logical address (LA) of '22', and the virtual address (VA) of '03' and '23'. A page table update may be performed on the first table T1 to include mapping information of the logical address LA of '.
도 36은 도 35에 후속하여 제2 실시 예에 따라 가상 주소들이 할당되는 예를 보여준다. 도 36을 참조하면, S271 단계에서, 제1 응용(APP1)은 가상 저장 영역(VSA)의 '02'의 가상 주소(VA)를 갖는 페이지 및 '03'의 가상 주소(VA)를 갖는 페이지를 순차적으로 액세스할 수 있다.FIG. 36 shows an example in which virtual addresses are allocated according to the second embodiment following FIG. 35 . Referring to FIG. 36, in step S271, the first application APP1 stores a page having a virtual address VA of '02' and a page having a virtual address VA of '03' in the virtual storage area VSA. can be accessed sequentially.
'03'의 가상 주소(VA)는 '23'의 논리 주소(LA)와 사상되어 있으므로, 제1 응용(APP1)이 '03'이 가상 주소(VA)를 액세스할 때에 페이지 부재는 발생하지 않는다. '04'의 가상 주소(VA)는 논리 주소(LA)와 사상되어 있지 않으므로, S272 단계에서, 제1 응용(APP1)이 '04'의 가상 주소(VA)를 액세스할 때에 페이지 부재가 발생할 수 있다. S273 단계에서 부재 처리가 수행될 수 있다.Since the virtual address VA of '03' is mapped to the logical address LA of '23', page fault does not occur when the first application APP1 accesses the virtual address VA of '03'. . Since the virtual address VA of '04' is not mapped to the logical address LA, page fault may occur when the first application APP1 accesses the virtual address VA of '04' in step S272. there is. Member processing may be performed in step S273.
페이지 부재 처리기(PFH)는 둘 이상의 논리 주소들을 둘 이상의 가상 주소들과 사상할 수 있다. 예를 들어, 페이지 부재 처리기(PFH)는 제1 응용 저장 영역(SA_APP1)의 '24'의 논리 주소(LA)를 '04'의 가상 주소(VA)에 할당하고, '25'의 논리 주소(LA)를 '05'의 가상 주소(VA)와 사상하고, '26의 논리 주소(LA)를 '06'의 가상 주소(VA)에 할당하고, 그리고 '27'의 논리 주소(LA)를 '07'의 가상 주소(VA)와 사상할 수 있다.A page fault handler (PFH) can map two or more logical addresses to two or more virtual addresses. For example, the page fault handler PFH allocates the logical address LA of '24' of the first application storage area SA_APP1 to the virtual address VA of '04', and the logical address of '25' ( LA) with the virtual address (VA) of '05', assign the logical address (LA) of '26 to the virtual address (VA) of '06', and assign the logical address (LA) of '27' to ' It can be mapped with the virtual address (VA) of 07'.
S274 단계에서, 페이지 부재 처리기(PFH)는 '04의 가상 주소(VA)와 '24'의 논리 주소(LA)의 사상 정보를 포함하도록, '05'의 가상 주소(VA)와 '25'의 논리 주소(LA)의 사상 정보를 포함하도록, '06'의 가상 주소(VA)와 '26'의 논리 주소(LA)의 사상 정보를 포함하도록, 그리고 '07'의 가상 주소(VA)와 '27'의 논리 주소(LA)의 사상 정보를 포함하도록 제1 테이블(T1)에 대해 페이지 테이블 갱신을 수행할 수 있다.In step S274, the page fault handler (PFH) maps the virtual address (VA) of '05' and the virtual address (VA) of '25' to include mapping information of the virtual address (VA) of '04 and the logical address (LA) of '24'. To include the mapping information of the logical address (LA), to include the mapping information of the virtual address (VA) of '06' and the logical address (LA) of '26', and the virtual address (VA) of '07' and ' Page table update may be performed on the first table T1 to include mapping information of the logical address LA of 27'.
도 35 및 도 36을 참조하여 설명된 바와 같이, 제1 응용(APP1)은 부재 처리 시에 사상되는 논리 주소들(LA)의 수 및 가상 주소들(VA)의 수를 순차적으로 증가시킬 수 있다. As described with reference to FIGS. 35 and 36 , the first application APP1 may sequentially increase the number of logical addresses LA and the number of virtual addresses VA mapped during absence processing. .
도 37은 페이지 부재 처리기(PFH)가 제2 실시 예에 따라 '01' 내지 '16'의 가상 주소들(VA)에 대해 페이지 부재 처리를 수행한 예를 보여준다. 도 37을 참조하면, S281 단계, S282 단계 및 S283 단계를 통해, 페이지 부재 처리기(PFH)는 가상 저장 영역(VSA)의 '01' 내의 '16'의 가상 주소들(VA)에 제1 응용 저장 영역(SA_APP1)의 '21' 내지 '36'의 논리 주소들(LA)을 사상할 수 있다. 페이지 부재 처리기(PFH)는 '01', '02', '04', '08', 그리고 '16'의 가상 주소들(VA) 각각에 대해 페이지 부재 처리를 수행할 수 있다.37 shows an example in which the page fault handler PFH performs page fault processing for virtual addresses VA of '01' to '16' according to the second embodiment. Referring to FIG. 37, through steps S281, S282, and S283, the page fault handler PFH stores the first application at virtual addresses VA of '16' in '01' of the virtual storage area VSA. Logical addresses LA of '21' to '36' of the area SA_APP1 may be mapped. The page fault handler (PFH) may perform page fault processing for each of the virtual addresses (VA) of '01', '02', '04', '08', and '16'.
제1 실시 예에 따른 도 33과 비교하면, 제2 실시 예에 따른 도 31에서 부재 처리가 수행되는 횟수가 감소한다. 따라서, 문맥 교환이 수행되는 횟수가 감소하고, 부재 처리들을 더 빠르게 수행함으로써 향상된 속도를 갖는 프로세서(310) 및 메모리 시스템(300)의 속도가 향상된다.Compared to FIG. 33 according to the first embodiment, in FIG. 31 according to the second embodiment, the number of member processes performed is reduced. Accordingly, the number of times context switching is performed is reduced, and the speed of the
도 38은 본 발명의 실시 예에 따라 페이지들의 수를 조절하는 예를 보여준다. 도 28 및 도 38을 참조하면, S291 단계에서, 페이지 부재 처리기(PFH)는 페이지 부재가 동일한 응용(예를 들어, APP1)으로부터의 연속적인 액세스들(예를 들어, 연속적인 가상 주소들(VA)에 대한 액세스들)에 대응하는지 판단할 수 있다.38 shows an example of adjusting the number of pages according to an embodiment of the present invention. 28 and 38, in step S291, the page fault handler (PFH) performs successive accesses (eg, successive virtual addresses (VA) from an application (eg, APP1) for which the page fault is the same. ) It can be determined whether it corresponds to accesses to).
예를 들어, 페이지 부재를 유발한 액세스의 가상 주소가 이전 액세스의 이전 가상 주소와 연속인지 판단할 수 있다. 페이지 부재가 연속적인 액세스들에 대응하지 않으면, 즉 가상 주소가 이전 액세스의 가상 주소와 연속이 아니면, S292 단계가 수행된다. S292 단계에서, 페이지 부재 처리기(PFH)는 페이지들의 수를 기본값, 예를 들어 '1'로 조절할 수 있다. 이후에 조절은 종료된다.For example, it may be determined whether the virtual address of the access that caused the page fault is contiguous with the previous virtual address of the previous access. If the page fault does not correspond to successive accesses, that is, if the virtual address is not contiguous with the virtual address of the previous access, step S292 is performed. In step S292, the page fault handler (PFH) may adjust the number of pages to a default value, for example, '1'. The adjustment is then terminated.
페이지 부재가 연속적인 액세스들에 대응하면, 즉 가상 주소가 이전 액세스의 가상 주소와 연속이면, S293 단계가 수행된다. S293 단계에서, 페이지 부재 처리기(PFH)는 페이지들의 수가 문턱값에 도달했는지 판단할 수 있다. 페이지들의 수가 문턱값에 도달하지 않았으면, S294 단계가 수행된다. S294 단계에서, 페이지 부재 처리기(PFH)는 페이지들의 수를 이전 할당 페이지들의 수의 두 배로 조절할 수 있다. 이후에 조절은 종료된다.If the page fault corresponds to successive accesses, that is, if the virtual address is contiguous with the virtual address of the previous access, step S293 is performed. In step S293, the page fault handler PFH may determine whether the number of pages has reached a threshold value. If the number of pages has not reached the threshold, step S294 is performed. In step S294, the page fault handler (PFH) may adjust the number of pages to twice the number of previously allocated pages. The adjustment is then terminated.
페이지들의 수가 문턱값에 도달하였으면, S295 단계가 수행된다. S295 단계에서, 페이지 부재 처리기(PFH)는 페이지들의 수를 이전 할당 페이지들의 수로 조절할 수 있다. 예를 들어, 페이지 부재 처리기(PFH)는 페이지들의 수를 이전 부재 처리에서와 동일하게 유지할 수 있다. 이후에 조절은 종료된다.If the number of pages has reached the threshold, step S295 is performed. In step S295, the page fault handler (PFH) may adjust the number of pages to the number of previously allocated pages. For example, the page fault handler (PFH) may keep the number of pages the same as in the previous fault process. The adjustment is then terminated.
예시적으로, 페이지 부재 처리기(PFH)는 페이지들의 수를 두 배로 조절하는 것으로 한정되지 않는다. 페이지 부재 처리기(PFH)는 미리 정해진 수만큼 페이지들의 수를 증가시킬 수 있다. 예를 들어, 페이지 부재 처리기(PFH)는 연속적인 액세스들과 연관되어 부재 처리들이 수행될 때에 페이지들의 수를 '2'씩 또는 '4'씩 증가시킬 수 있다.Illustratively, the page fault handler (PFH) is not limited to doubling the number of pages. The page fault handler (PFH) may increment the number of pages by a predetermined number. For example, the Page Fault Handler (PFH) may increment the number of pages by '2' or '4' when fault processes are performed in association with successive accesses.
예시적으로, 페이지 부재 처리기(PFH)는 연속적인 액세스들과 연관된 부채 처리들을 둘 이상의 페이즈들(phases)로 분할하여 수행할 수 있다. 제1 페이즈에서, 페이지 부재 처리기(PFH)는 페이지들의 수를 이전 할당 페이지들의 수의 K배(K는 양의 정수)로 조절할 수 있다. 제2 페이즈에서, 페이지 부재 처리기(PFH)는 페이지들의 수를 이전 할당 페이지들의 수에 I를(I는 양의 정수) 더한 값으로 조절할 수 있다.Illustratively, the page fault handler (PFH) may perform debt processing associated with successive accesses by dividing them into two or more phases. In the first phase, the page fault handler (PFH) may adjust the number of pages to K times the number of previously allocated pages, where K is a positive integer. In the second phase, the page fault handler (PFH) may adjust the number of pages to the number of previously allocated pages plus I (where I is a positive integer).
상술된 실시 예들에서, 페이지 부재 처리기(PFH)는 제1 메모리 모듈(320)에 대해 도 31, 도 35, 도 36 및 도 37을 참조하여 설명된 제2 실시 예에 따라 부재 처리가 수행되는 것으로 설명되었다. 그러나 도 31, 도 35, 도 36 및 도 37을 참조하여 설명된 제2 실시 예에 따른 부재 처리는 제1 내지 제4 메모리 모듈들(320~350)에 모두 적용될 수 있다.In the above-described embodiments, the page member handler PFH assumes that member processing is performed for the
예를 들어, 도 31, 도 35, 도 36 및 도 37을 참조하여 설명된 제2 실시 예에 따른 부재 처리가 제2 타입 메모리 모듈들(340, 350)에 적용될 때, 도 31, 도 35, 도 36 및 도 37에서 언급된 논리 주소들(LA)은 제3 메모리 모듈(340) 또는 제4 메모리 모듈(350)의 물리 주소들(PA)로 변경될 수 있다.For example, when member processing according to the second embodiment described with reference to FIGS. 31, 35, 36, and 37 is applied to the second
예시적으로, 페이지 부재 처리기(PFH)는 메모리 모듈들의 타입에 따라 부재 처리의 방법을 다르게 설정할 수 있다. 예를 들어, 제1 타입 메모리 모듈들(320, 330)에서 페이지 부재가 발생하면, 페이지 부재 처리기(PFH)는 도 31, 도 35, 도 36 및 도 37을 참조하여 설명된 제2 실시 예에 따른 부재 처리를 수행할 수 있다.Illustratively, the page fault handler PFH may differently set a fault handling method according to the types of memory modules. For example, when a page fault occurs in the first
제2 타입 메모리 모듈들(340, 350)에서 페이지 부재가 발생하면, 페이지 부재 처리기(PFH)는 도 31, 도 32 및 도 33을 참조하여 설명된 제1 실시 예에 따른 부재 처리를 수행할 수 있다. 예를 들어, 제1 내지 제4 메모리 모듈들(320~350)의 타입들은 초기화 시에 SPD 장치들(325, 335, 345, 355)로부터 프로세서(310)로 제공될 수 있다.When a page fault occurs in the second
도 39는 부재 처리의 결과가 제1 메모리 모듈(320)로 전달되는 예를 보여준다. 예시적으로, 도 29 및 도 30을 참조하여 설명된 부재 처리가 완료된 후에, 도 39에 도시된 절차들이 수행될 수 있다. 도 27 및 도 39를 참조하면, S218 단계에서, 페이지 부재 처리기(PFH)는 부재 알림을 수행할 수 있다.39 shows an example in which the result of member processing is transmitted to the
예를 들어, 페이지 부재 처리기(PFH)는 부재 처리 과정에서 사상된 논리 주소(LA)를 해당 논리 주소(LA)와 연관된 제1 메모리 모듈(320)에 전송할 것을 메모리 제어기(311)에 지시할 수 있다. 메모리 제어기(311)는 사상된 논리 주소(LA)를 제1 메모리 모듈(320)의 매체 제어기(323)에 전송할 수 있다.For example, the page fault handler PFH may instruct the
예를 들어, 메모리 제어기(311)는 읽기 명령 및 읽기 주소를 제1 메모리 모듈(320)에 전송함으로써 읽기 동작을 지시할 수 있다. 메모리 제어기(311)는 쓰기 명령 및 쓰기 주소를 제1 메모리 모듈(320)에 전송함으로써 쓰기 동작을 지시할 수 있다. 메모리 제어기(311)는 읽기 명령 및 읽기 주소와 다른 형태, 그리고 쓰기 명령 및 쓰기 주소와 다른 형태로 논리 주소(LA)를 제1 메모리 모듈(320)로 전송할 수 있다.For example, the
예시적으로, 페이지 부재 처리기(PFH)는 부재 처리가 수행될 때마다 부재 알림을 수행할 수 있다. 다른 예로서, 페이지 부재 처리기(PFH)는 연속적인 주소들과 연관된 부재 처리가 특정 횟수 수행되면 부재 알림을 수행할 수 있다. 다른 예로서, 페이지 부재 처리기(PFH)는 부재 처리가 수행된 후 특정 시간 동안 다른 부재 처리가 수행되지 않으면 부재 알림을 수행할 수 있다. 페이지 부재 처리기(PFH)가 부재 알림을 수행하는 조건은 다양하게 응용 및 수정될 수 있다.Exemplarily, the page fault handler PFH may perform absence notification whenever absence processing is performed. As another example, the page fault handler (PFH) may perform absence notification when absence processing associated with consecutive addresses is performed a specific number of times. As another example, the page fault handler (PFH) may perform an absence notification if no other absence process is performed for a specific time period after the absence process is performed. A condition for the page fault handler (PFH) to perform absence notification may be applied and modified in various ways.
위에서 언급된 바와 같이, 부재 처리는 제1 응용(APP1)이 새로운 메모리의 할당을 요청할 때에 발생할 수 있다. 요청한 메모리의 할당이 완료되면, 제1 응용(APP1)은 할당된 메모리를 이용할 수 있다. 즉, 특정한 논리 주소(LA)에 대해 부재 처리가 수행되면, 특정한 논리 주소(LA)는 액세스될 예정인 것으로 예측될 수 있다.As mentioned above, member processing may occur when the first application APP1 requests allocation of new memory. When the requested memory allocation is completed, the first application APP1 may use the allocated memory. That is, if absence processing is performed for a specific logical address LA, it can be predicted that the specific logical address LA will be accessed.
S219 단계에서, 매체 제어기(323)는 특정한 논리 주소(LA)에 대응하는 제2 타입 메모리(322)의 저장 공간을 제1 타입 메모리(321)에 사상하는 캐시 할당을 수행할 수 있다. 예를 들어, 제2 타입 메모리(322)의 제1 응용 저장 영역(SA_APP1)의 논리 주소들(LA)에 대해 부재 처리가 수행됨에 따라, 매체 제어기(323)는 제1 응용 저장 영역(SA_APP1)을 제1 타입 메모리(321)에 사상할 수 있다.In step S219 , the
매체 제어기(323)가 제1 응용 저장 영역(SA_APP1)을 제1 타입 메모리(321)에 사상하면, 제1 응용(APP1)이 할당된 메모리를 액세스할 때에 제1 타입 메모리(321)에서 캐시 미스(cache miss)가 발생하지 않고 캐시 히트(cache hit)가 발생한다. 따라서, 메모리 시스템(300)의 속도가 향상된다.If the
도 40은 본 발명의 실시 예에 따른 제1 타입 메모리 모듈(1100)을 보여주는 블록도이다. 예시적으로, 제1 타입 메모리 모듈(1100)은 LRDIMM 표준에 기반한 메모리 모듈일 수 있다. 도 1 및 도 40 또는 도 27 및 도 40을 참조하면, 제1 타입 메모리 모듈(1100)은 휘발성 메모리 장치(1110), 불휘발성 메모리 장치(1120), 매체 제어기(1130), 그리고 제1 내지 제8 데이터 버퍼들(1141~1148)을 포함한다.40 is a block diagram showing a first
휘발성 메모리 장치(1110)는 제1 내지 제4 휘발성 메모리들(1111~1114)을 포함한다. 제1 내지 제4 휘발성 메모리들(1111~1114)은 서로 분리된 패키지들로 형성될 수 있다. 제1 내지 제4 휘발성 메모리들(1111~1114)은 동적 랜덤 액세스 메모리들을 포함할 수 있다. 휘발성 메모리 장치(1110)는 제1 타입 메모리(321 또는 331)일 수 있다.The
불휘발성 메모리 장치(1120)는 제1 내지 제4 불휘발성 메모리들(1121~1124)을 포함할 수 있다. 제1 내지 제4 불휘발성 메모리들(1121~1124)은 서로 분리된 패키지들로 형성될 수 있다. 제1 내지 제4 불휘발성 메모리들(1121~1124)은 불휘발성 메모리 장치(1120) 내에서 서로 다른 어드레스들에 의해 식별되는 저장 영역들일 수 있다. 불휘발성 메모리 장치(1120)는 제2 타입 메모리(322 또는 332)일 수 있다.The
불휘발성 메모리 장치(1120)는 플래시 메모리 장치(Flash Memory Device), 상 변화 메모리 장치(Phase Change Memory Device), 강유전체 메모리 장치(Ferroelectric Memory Device), 저항성 메모리 장치(Resistive Memory Deice), 자기 메모리 장치(Magnetoregistive Memory Device)와 같은 다양한 불휘발성 메모리 장치들 중 적어도 하나를 포함할 수 있다.The
매체 제어기(1130)는 메모리 제어기(311)로부터 제1 명령 및 주소(CA1), 제1 클럭 신호(CK1), 그리고 제1 제어 신호(CTRL1)를 수신할 수 있다. 매체 제어기(1130)는 제1 내지 제8 데이터 버퍼들(1141~1148)과 제2 데이터 신호들(DQ2)을 통신할 수 있다. 매체 제어기(1130)는 제1 명령 및 주소(CA1), 제1 클럭 신호(CK1), 그리고 제1 제어 신호(CTRL1)에 따라, 휘발성 메모리 장치(1110) 또는 불휘발성 메모리 장치(1120)를 액세스할 수 있다.The
매체 제어기(1130)는 제2 명령 및 주소(CA2), 제2 클럭 신호(CK2), 그리고 제2 제어 신호(CTRL2)를 휘발성 메모리 장치(1110)로 전송하고, 휘발성 메모리 장치(1110)와 제3 데이터 신호들(DQ3)을 통신할 수 있다. 매체 제어기(1130)는 제3 명령 및 주소(CA3), 제3 클럭 신호(CK3), 그리고 제3 제어 신호(CTRL3)를 불휘발성 메모리 장치(1120)로 전송하고, 불휘발성 메모리 장치(1120)와 제4 데이터 신호들(DQ4)을 통신할 수 있다.The
예시적으로, 제1 명령 및 주소(CA1), 제2 명령 및 주소(CA2), 그리고 제3 명령 및 주소(CA3)는 서로 다른 포맷들을 가질 수 있다. 다른 예로서, 제1 명령 및 주소(CA1), 제2 명령 및 주소(CA2), 그리고 제3 명령 및 주소(CA3) 중 적어도 두 개는 동일한 포맷들을 가질 수 있다. 예를 들어, 매체 제어기(1130)가 휘발성 메모리 장치(1110)와 통신하는 포맷과 불휘발성 메모리 장치(1120)와 통신하는 포맷은 서로 다를 수 있다.For example, the first command and address CA1 , the second command and address CA2 , and the third command and address CA3 may have different formats. As another example, at least two of the first command and address CA1 , the second command and address CA2 , and the third command and address CA3 may have the same formats. For example, a format in which the
매체 제어기(1130)는 제1 버퍼 명령(CMD_B1)을 전송하여 제1 내지 제4 데이터 버퍼들(1141~1144)을 제어할 수 있다. 매체 제어기(1130)는 제2 버퍼 명령(CMD_B2)을 전송하여 제5 내지 제8 데이터 버퍼들(1145~1148)을 제어할 수 있다.The
제1 내지 제8 데이터 버퍼들(1141~1148)은 데이터 스트로브 신호들(DQS)과 동기되어 메모리 제어기(311)와 제1 데이터 신호들(DQ1)을 통신할 수 있다. 제1 내지 제8 데이터 버퍼들(1141~1148)은 메모리 제어기(311)로부터 수신되는 제1 데이터 신호들(DQ1)을 제2 데이터 신호들(DQ2)로서 매체 제어기(1130)로 전달할 수 있다.The first to
제1 내지 제8 데이터 버퍼들(1141~1148)은 매체 제어기(1130)로부터 수신되는 제2 데이터 신호들(DQ2)을 제1 데이터 신호들(DQ1)로서 메모리 제어기(311)로 전달할 수 있다. 제1 내지 제8 데이터 버퍼들(1141~1148)은 서로 분리된 패키지들로 형성될 수 있다.The first to
예시적으로, 휘발성 메모리 장치(1110)는 불휘발성 메모리 장치(1120)의 캐시 메모리로 사용될 수 있다. 불휘발성 메모리 장치(1120)의 저장 공간 중 일부가 휘발성 메모리 장치(1110)에 사상될 수 있다.For example, the
메모리 제어기(311)로부터 수신되는 제1 명령 및 주소(CA1)가 가리키는 제1 저장 공간이 휘발성 메모리 장치(1110)에 사상되어 있을 때, 즉 캐시 히트가 발생할 때, 매체 제어기(1130)는 휘발성 메모리 장치(1110)에 제2 명령 및 주소(CA2)를 전달할 수 있다. 휘발성 메모리 장치(1110)는 제2 명령 및 주소(CA2)에 따라 쓰기 또는 읽기를 수행할 수 있다.When the first command received from the
메모리 제어기(311)로부터 수신되는 제1 명령 및 주소(CA1)가 가리키는 제1 저장 공간이 휘발성 메모리 장치(1110)에 사상되어 있지 않을 때, 즉 캐시 미스가 발생할 때, 매체 제어기(1130)는 제1 명령 및 주소(CA1)가 가리키는 제1 저장 공간을 휘발성 메모리 장치(1110)에 사상할 수 있다.When the first command received from the
예를 들어, 불휘발성 메모리 장치(1120)의 제1 저장 공간과 연관된 제2 저장 공간을 휘발성 메모리 장치(1110)에 확보할 수 있다. 휘발성 메모리 장치(1110)에 저장 공간이 부족하면, 매체 제어기(1130)는 휘발성 메모리 장치(1110)에 사상된 다른 저장 공간을 버리거나 또는 다른 저장 공간을 불휘발성 메모리 장치(1120)에 반환함으로써, 휘발성 메모리 장치(1110)에 저장 공간을 확보할 수 있다.For example, the second storage space associated with the first storage space of the
불휘발성 메모리 장치(1120)의 제1 저장 공간에 데이터가 저장되어 있으면, 매체 제어기(1130)는 제1 저장 공간의 데이터를 휘발성 메모리 장치(1110)의 제2 저장 공간으로 복사할 수 있다. 이후에, 매체 제어기(1130)는 제2 명령 및 주소(CA2)를 휘발성 메모리 장치(1110)로 전달할 수 있다. 휘발성 메모리 장치(1110)는 제2 명령 및 주소(CA2)에 응답하여 제2 저장 공간에 대해 쓰기 또는 읽기를 수행할 수 있다.If data is stored in the first storage space of the
예시적으로, 제1 명령 및 주소(CA1)를 통해 부재 알림이 전달되면, 매체 제어기(1130)는 부재 알림에 포함된 논리 주소 또는 논리 주소들에 대응하는 불휘발성 메모리 장치(1120)의 저장 공간을 휘발성 메모리 장치(1110)에 사상할 수 있다. 부재 알림은 읽기 동작을 위한 제1 명령 및 주소(CA1) 또는 쓰기 동작을 위한 제1 명령 및 주소(CA1)와 다른 형태로 전달될 수 있다. 예를 들어, 매체 제어기(1130)는 부재 알림을 위한 제1 명령 및 주소(CA1)를 수신하고, 캐시 할당을 수행할 수 있다.Exemplarily, when the absence notification is transmitted through the first command and address CA1, the
휘발성 메모리 장치(1110)에서 제2 저장 공간을 해제하고자 할 때, 매체 제어기(1130)는 제2 저장 공간이 오염되었는지(dirty) 체크할 수 있다. 예를 들어, 제2 저장 공간에 대해 쓰기가 수행된 때에, 제2 저장 공간은 오염된(dirty) 것으로 판단될 수 있다.When trying to release the second storage space in the
제2 저장 공간이 오염되지 않았으면(not dirty), 매체 제어기(1130)는 제2 저장 공간의 데이터를 버림으로써 제2 저장 공간을 해제할 수 있다. 제2 저장 공간이 오염되었으면(dirty), 매체 제어기(1130)는 제2 저장 공간의 데이터를 불휘발성 메모리 장치(1120)에 기입함으로써 제2 저장 공간을 반환할 수 있다. 제2 저장 공간을 반환한 후에, 매체 제어기(1130)는 제2 저장 공간을 버림으로써 제2 저장 공간을 해제할 수 있다.If the second storage space is not dirty, the
다른 예로서, 휘발성 메모리 장치(1110) 및 불휘발성 메모리 장치(1120)는 메모리 제어기(311)에 의해 직접 액세스될 수 있다. 예를 들어, 제1 명령 및 주소(CA1) 또는 제1 제어 신호(CTRL1)가 휘발성 메모리 장치(1110)를 가리킬 때, 매체 제어기(1130)는 제2 명령 및 주소(CA2), 제2 클럭 신호(CK2) 또는 제2 제어 신호(CTRL2)를 휘발성 메모리 장치(1110)에 전달할 수 있다.As another example, the
제1 명령 및 주소(CA1) 또는 제1 제어 신호(CTRL1)가 불휘발성 메모리 장치(1120)를 가리킬 때, 매체 제어기(1130)는 제3 명령 및 주소(CA3), 제3 클럭 신호(CK3) 또는 제3 제어 신호(CTRL3)를 불휘발성 메모리 장치(1120)에 전달할 수 있다.When the first command and address CA1 or the first control signal CTRL1 indicates the
예시적으로, 휘발성 메모리들, 불휘발성 메모리들, 그리고 데이터 버퍼들의 수는 한정되지 않는다. 휘발성 메모리들 또는 불휘발성 메모리들의 수는 데이터 버퍼들의 수와 동일할 수 있다. 데이터 버퍼들의 수는 9개로 변경될 수 있다.By way of example, the number of volatile memories, non-volatile memories, and data buffers is not limited. The number of volatile memories or non-volatile memories may equal the number of data buffers. The number of data buffers can be changed to nine.
매체 제어기(1130)는 불휘발성 메모리 장치(1120)의 제1 메타 저장 영역(SA1_M)(도 28 참조)에 논리 주소들(LA) 및 물리 주소들(PA) 사이의 사상 정보를 저장할 수 있다. 메모리 제어기(311)로부터 수신되는 제1 명령 및 주소(CA1)는 불휘발성 메모리 장치(1120)의 논리 주소들(LA)에 기반할 수 있다.The
매체 제어기(1130)가 제1 명령 및 주소(CA1)에 따라 불휘발성 메모리 장치(1120)를 액세스할 때, 매체 제어기(1130)는 사상 정보에 따라 논리 주소들(LA)을 물리 주소들(PA)로 변환할 수 있다. 매체 제어기(1130)는 변환된 물리 주소들(PA)을 이용하여 불휘발성 메모리 장치(1120)를 액세스할 수 있다. 즉, 제3 명령 및 주소(CA3)는 물리 주소들(PA)에 기반할 수 있다.When the
불휘발성 메모리 장치(1120)의 휘발성 메모리 장치(1110)에 대한 캐시 할당은 논리 주소들(LA) 또는 물리 주소들(PA)에 따라 수행될 수 있다. 즉, 제2 명령 및 주소(CA2)는 논리 주소들(LA) 또는 물리 주소들(PA)에 기반할 수 있다. 매체 제어기(1130)는 논리 주소들(LA) 또는 물리 주소들(PA)을 이용하여 캐시 히트 또는 캐시 미스를 판단할 수 있다.Cache allocation of the
도 41은 본 발명의 실시 예에 따른 메모리 시스템(400)을 보여주는 블록도이다. 예를 들어, 메모리 시스템(400)은 응용 서버, 클라이언트 서버, 데이터 서버와 같은 서버를 포함할 수 있다. 다른 예로서, 메모리 시스템(400)은 개인용 컴퓨터 또는 워크 스테이션을 포함할 수 있다.41 is a block diagram showing a
도 41을 참조하면, 메모리 시스템(400)은 프로세서(410), 제1 내지 제4 메모리 모듈들(420~450), 루트 컴플렉스(460), 그리고 스토리지 장치(470)를 포함한다. 프로세서(410)는 메모리 시스템(400)의 구성 요소들 및 구성 요소들의 동작들을 제어할 수 있다. 프로세서(410)는 운영체제 및 응용들을 실행하고, 운영체제 또는 응용들을 이용하여 데이터를 처리할 수 있다.Referring to FIG. 41 , a
프로세서(410)는 메모리 제어기(411) 및 캐시 메모리(412)를 포함할 수 있다. 메모리 제어기(411)는 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 제1 내지 제4 메모리 모듈들(420~450)을 액세스할 수 있다. 캐시 메모리(412)는 정적 랜덤 액세스 메모리(SRAM)와 같은 고속의 메모리를 포함할 수 있다.The
제1 내지 제4 메모리 모듈들(420~450)은 메인 채널들(MCH) 및 보조 채널들(SCH)을 통해 메모리 제어기(411)에 연결될 수 있다. 메인 채널들(MCH)은 메모리 모듈들(420~450)에 데이터를 저장하거나 데이터를 읽기 위해 사용되는 채널들일 수 있다. 메인 채널들(MCH)은 제1 내지 제4 메모리 모듈들(420~450)에 대해 각각 제공되는 채널들을 포함할 수 있다.The first to
보조 채널들(SCH)은 제1 내지 제4 메모리 모듈들(420~450)에 데이터를 저장하거나 읽는 것 외에, 제1 내지 제4 메모리 모듈들(420~450)과 연관된 추가적인 기능들을 제공할 수 있다. 예를 들어, 제1 내지 제4 메모리 모듈들(420~450)은 보조 채널들(SCH)을 통해 자신의 고유한 정보들을 메모리 제어기(411)에 제공할 수 있다. 보조 채널들(SCH)은 제1 내지 제4 메모리 모듈들(420~450)에 대해 각각 제공되는 채널들을 포함할 수 있다.In addition to storing or reading data in the first to
제1 내지 제4 메모리 모듈들(420~450)은 메모리 시스템(400)의 메인 메모리로 사용될 수 있다. 제1 내지 제4 메모리 모듈들(420~450)은 DIMM(Dual In-line Memory Module), RDIMM(Registered DIMM), LRDIMM(Load Reduced DIMM) 등과 같은 메모리 모듈의 표준들 중 하나에 따라 메모리 제어기(411)와 통신할 수 있다.The first to
루트 컴플렉스(460)는 프로세서(410)가 다양한 주변 장치들을 액세스하는 채널들을 제공할 수 있다. 예를 들어, 루트 컴플렉스(460)에 스토리지 장치(470)가 연결될 수 있다. 스토리지 장치(470)는 하드 디스크 드라이브, 광학 디스크 드라이브, 솔리드 스테이트 드라이브 등을 포함할 수 있다.Root complex 460 may provide channels through which
프로세서(410)는 캐시 메모리(412), 메인 메모리인 제1 내지 제4 메모리 모듈들(420~450), 그리고 스토리지 장치(470)를 계층적으로 관리할 수 있다. 예를 들어, 프로세서(410)는 스토리지 장치(470)에 저장된 데이터 중 필요한 데이터를 제1 내지 제4 메모리 모듈들(420~450)을 포함하는 메인 메모리에 로드할 수 있다. 프로세서(410)는 메인 메모리에 저장된 데이터 중 백업이 필요한 데이터를 스토리지 장치(470)로 플러시(flush)할 수 있다.The
제1 내지 제4 메모리 모듈들(420~450)을 포함하는 메인 메모리의 저장 영역 중 일부는 캐시 메모리(412)에 사상될 수 있다. 프로세서(410)는 메인 메모리의 특정한 저장 공간을 액세스할 필요가 있을 때, 특정한 저장 공간이 캐시 메모리(412)에 사상되어 있는지 판단할 수 있다.A part of the storage area of the main memory including the first to
특정한 저장 공간이 캐시 메모리(412)에 사상되어 있으면, 프로세서(410)는 캐시 메모리(412)의 특정한 저장 공간을 액세스할 수 있다. 특정한 저장 공간이 캐시 메모리에 사상되어 있지 않으면, 프로세서(410)는 제1 내지 제4 메모리 모듈들(420~450)의 특정한 저장 공간을 캐시 메모리(412)에 사상할(또는 가져올(fetch)) 수 있다.If a specific storage space is mapped to the
캐시 메모리(412)의 저장 공간이 부족하면, 프로세서(410)는 기존에 캐시 메모리(412)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 프로세서(410)는 갱신된 데이터를 제1 내지 제4 메모리 모듈들(420~450)로 플러시할 수 있다.When the storage space of the
제1 내지 제4 메모리 모듈들(420~450)은 이종의 메모리 모듈들을 포함할 수 있다. 예를 들어, 제1 및 제2 메모리 모듈들(420, 430)은 제1 타입 메모리 모듈들일 수 있다. 제3 및 제4 메모리 모듈들(440, 450)은 제2 타입 메모리 모듈들일 수 있다.The first to
제1 메모리 모듈(420)은 제1 타입 메모리(421), 제2 타입 메모리(422), 매체 제어기(423), 그리고 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(425)를 포함할 수 있다. 제2 메모리 모듈(430)은 제1 타입 메모리(431), 제2 타입 메모리(432), 매체 제어기(433), 그리고 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(435)를 포함할 수 있다. 이하에서, 제1 메모리 모듈(420)을 참조하여 제1 타입 메모리 모듈들(420, 430)이 설명된다.The
제1 타입 메모리(421)는 고속의 휘발성 메모리, 예를 들어 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. 제2 타입 메모리(422)는 제1 타입 메모리(421)보다 느린 속도를 갖고, 제1 타입 메모리(421)보다 큰 저장 용량을 갖는 불휘발성 메모리를 포함할 수 있다. 예를 들어, 제2 타입 메모리(422)는 플래시 메모리, 상 변화 메모리(Phase Change Memory), 강유전체 메모리(Ferroelectric Memory), 자기 메모리(Magnetic Memory), 저항성 메모리(Resistive Memory) 등을 포함할 수 있다.The
매체 제어기(423)는 메인 채널들(MCH) 중 대응하는 채널을 통해 전달되는 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)로부터의 액세스 명령을 제1 타입 메모리(421) 또는 제2 타입 메모리(422)에 전달할 수 있다. 액세스 명령에 따라, 매체 제어기(423)는 메인 채널들(MCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)와 데이터를 교환할 수 있다.The
매체 제어기(423)는 제2 타입 메모리(422)의 저장 용량 또는 저장 공간을 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)에 제공할 수 있다. 매체 제어기(423)는 제1 타입 메모리(421)를 제2 타입 메모리(422)의 캐시 메모리로 사용할 수 있다. The
예를 들어, 매체 제어기(423)는 제2 타입 메모리(422)의 저장 공간 중 일부 저장 공간을 제1 타입 메모리(421)에 사상할 수 있다. 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(421)에 사상되어 있으면, 매체 제어기(423)는 액세스 명령을 제1 타입 메모리(421)로 전달할 수 있다.For example, the
외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)로부터의 액세스 명령과 연관된 저장 공간이 제1 타입 메모리(421)에 사상되어 있지 않으면, 매체 제어기(423)는 해당 저장 공간을 제2 타입 메모리(422)로부터 제1 타입 메모리(421)로 사상(또는 백업)할 수 있다.If the storage space associated with the access command from the external host device, for example, the
제1 타입 메모리(421)의 저장 공간이 부족하면, 매체 제어기(423)는 기존에 제1 타입 메모리(421)에 사상된 저장 공간을 해제할 수 있다. 해제 대상인 저장 공간의 데이터가 갱신되었으면, 매체 제어기(423)는 갱신된 데이터를 제2 타입 메모리(422)로 플러시할 수 있다.When the storage space of the
매체 제어기(423)는 매체 스위치(MSW)를 포함할 수 있다. 매체 스위치(MSW)는 매체 제어기(423) 내에 집적 회로의 일부로 포함되는 하드웨어 또는 매체 제어기(423)에서 실행되는 펌웨어의 형태로 구현될 수 있다. 매체 스위치(MSW)는 제1 타입 메모리(421) 및 제2 타입 메모리(422)와의 통신을 제어할 수 있다.The
예를 들어, 트레이닝 시에, 매체 스위치(MSW)는 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)로부터의 트레이닝 명령을 제1 타입 메모리(421)로만 전달하도록 구성될 수 있다. 트레이닝이 완료된 후에, 매체 스위치(MSW)는 외부의 호스트 장치로부터의 액세스 명령에 따라, 제1 타입 메모리(421) 또는 제2 타입 메모리(422)로 액세스 명령을 전송할 수 있다.For example, during training, the medium switch MSW may be configured to transfer a training command from an external host device, eg, the
SPD 장치(425)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)와 통신할 수 있다. 예를 들어, 제1 메모리 모듈(420)이 초기화될 때에, SPD 장치(425)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)에 제공할 수 있다.The
예를 들어, SPD 장치(425)는 제1 메모리 모듈(420)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(425)는 제2 타입 메모리(422)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(425)는 제2 타입 메모리(422)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)에 제공할 수 있다.For example, the
예를 들어, SPD 장치(425)에 저장되는 용량 정보는 제2 타입 메모리(422)의 사용자 용량에 대한 정보를 포함할 수 있다. 제2 타입 메모리(422)의 저장 용량은 사용자 용량, 메타 용량, 그리고 예비 용량을 포함할 수 있다. 사용자 용량은 제2 타입 메모리(422)가 외부의 호스트 장치, 예를 들어 메모리 제어기(411)에 제공하는 저장 용량일 수 있다.For example, the capacity information stored in the
메타 용량은 제2 타입 메모리(422)를 관리하기 위한 다양한 메타 정보가 저장되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(411)에 공개되지 않는 저장 용량일 수 있다. 예비 용량은 제2 타입 메모리(422)를 관리하기 위해 확보되며, 외부의 호스트 장치, 예를 들어 메모리 제어기(411)에 공개되지 않는 저장 용량일 수 있다.The meta capacity may be a storage capacity in which various meta information for managing the
SPD 장치(425)에 저장된 용량 정보는 제2 타입 메모리(422)의 사용자 용량에 대한 정보를 포함할 수 있다. 이하에서, 제2 타입 메모리(422)의 용량은 제2 타입 메모리(422)의 사용자 용량을 가리키는 것으로 이해될 수 있다.The capacity information stored in the
제3 메모리 모듈(440)은 제1 타입 메모리(441) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(445)를 포함할 수 있다. 제4 메모리 모듈(450)은 제1 타입 메모리(451) 및 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치(455)를 포함할 수 있다. 이하에서, 제3 메모리 모듈(440)을 참조하여 제2 타입 메모리 모듈들(440, 450)이 설명된다.The
제1 타입 메모리(441)는 제1 메모리 모듈(420)의 제1 타입 메모리(421)와 마찬가지로 동적 랜덤 액세스 메모리를 포함할 수 있다. SPD 장치(445)는 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)와 통신할 수 있다. 예를 들어, 제3 메모리 모듈(440)이 초기화될 때에, SPD 장치(445)는 저장된 정보를 보조 채널들(SCH) 중 대응하는 채널을 통해 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)에 제공할 수 있다.Like the
예를 들어, SPD 장치(425)는 제3 메모리 모듈(440)의 저장 공간으로서 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)에 제공되는 저장 용량에 대한 정보를 저장할 수 있다. 예를 들어, SPD 장치(445)는 제1 타입 메모리(441)의 저장 용량에 대한 정보를 저장할 수 있다. 초기화 시에, SPD 장치(445)는 제1 타입 메모리(441)의 저장 용량에 대한 정보를 외부의 호스트 장치, 예를 들어 메모리 제어기(411) 또는 프로세서(410)에 제공할 수 있다.For example, the
메모리 시스템(400)에 전원이 공급되면, 메모리 제어기(411)는 제1 내지 제4 메모리 모듈들(420~450)과 초기화를 수행할 수 있다. 예를 들어, 제1 내지 제4 메모리 모듈들(420~450)의 SPD 장치들(425~455)은 보조 채널들(SCH)을 통해 메모리 제어기(411)에 각각 용량 정보를 제공할 수 있다.When power is supplied to the
제1 타입 메모리 모듈들(420, 430)의 SPD 장치들(425, 435)은 각각 제2 타입 메모리들(422, 432)의 저장 용량들을 메모리 제어기(411)에 제공할 수 있다. 제2 타입 메모리 모듈들(440, 450)의 SPD 장치들(445, 455)은 각각 제1 타입 메모리들(441, 451)의 저장 용량들을 메모리 제어기(411)에 제공할 수 있다. 예를 들어, 메모리 제어기(411)는 SPD 장치들(425~455)로부터 저장 용량들을 각각 읽을 수 있다.The
초기화가 수행된 후에, 메모리 제어기(411)는 제1 내지 제4 메모리 모듈들(420~450)과 트레이닝을 수행할 수 있다. 예를 들어, 메모리 제어기(411)는 제1 내지 제4 메모리 모듈들(420~450)로 트레이닝 명령을 전송함으로써 트레이닝을 수행할 수 있다.After initialization is performed, the
트레이닝 명령은 둘 이상의 읽기 명령들 또는 둘 이상의 쓰기 명령들을 포함할 수 있다. 트레이닝 동안 메모리 제어기(411)는 제1 내지 제4 메모리 모듈들(420~450)에 명령들을 반복적으로 전송함으로써, 클럭 신호에 동기되어 명령들을 전송하는 타이밍들을 정렬하고, 그리고 제1 내지 제4 메모리 모듈들(420~450)의 저장 용량들의 무결성을 체크할 수 있다.A training command may include two or more read commands or two or more write commands. During training, the
메모리 제어기(411)가 식별하는 제2 타입 메모리 모듈들(440, 450)의 저장 공간들은 제1 타입 메모리들(441, 451)의 저장 공간들이다. 따라서, 메모리 제어기(411)의 트레이닝 명령은 제1 타입 메모리들(441, 451)로 전달된다.Storage spaces of the second
메모리 제어기(411)가 식별하는 제1 타입 메모리 모듈들(420, 430)의 저장 공간들은 제2 타입 메모리들(422, 432)의 저장 공간들이다. 따라서, 메모리 제어기(411)는 제2 타입 메모리들(422, 432)의 저장 공간들에 대해 트레이닝 명령을 전송할 수 있다.Storage spaces of the first
그러나 메인 메모리들을 제어하는 메모리 제어기(411)의 트레이닝 명령은 제1 타입 메모리, 즉 동적 랜덤 액세스에 부합하도록 정해져 있다. 메모리 제어기(411)가 제2 타입 메모리들(422, 432)의 저장 공간에 대해 트레이닝을 수행할 수 있도록 하려면, 메모리 제어기(411)의 구조 또는 기능이 변경되어야 한다. 그러나 기존에 사용되고 있는 메모리 제어기(411)를 변경하는 것은 큰 비용을 초래한다.However, the training command of the
이러한 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 제1 타입 메모리 모듈들(420, 430)은 제2 타입 메모리들(422, 432)의 저장 공간들을 메모리 제어기(411)에 제공하되, 트레이닝을 제1 타입 메모리(421)에게 전담시킨다. 따라서, 메모리 제어기(411)의 트레이닝에 영향을 주거나 오동작을 유발하지 않으면서, 제2 타입 메모리들(422, 432)의 저장 공간들을 메모리 제어기(411)에 제공할 수 있다.In order to solve this problem, the first
상술된 실시 예에서, 루트 컴플렉스(460)에 스토리지 장치(470)가 연결되는 것으로 도시된다. 그러나 루트 컴플렉스(460)에 연결되는 장치는 스토리지 장치(470)로 한정되지 않는다.In the above-described embodiment, the
도 42는 본 발명의 실시 예에 따른 제1 타입 메모리 모듈(420 또는 430)의 동작 방법을 보여주는 순서도이다. 예시적으로, 제1 메모리 모듈(420)을 참조하여 동작 방법이 설명된다. 그러나 제2 메모리 모듈(430) 또는 도 42를 참조하여 설명된 동작 방법을 수행할 수 있다.42 is a flowchart illustrating an operating method of the first
도 41 및 도 42를 참조하면, S311 단계에서, 초기화 동안에, 제1 메모리 모듈(420)은 제2 타입 메모리(422)의 용량을 제1 메모리 모듈(420)의 전체 용량으로 보고한다. 예를 들어, 제1 메모리 모듈(420)은 SPD 장치(425)에 저장된 용량 정보를 메모리 제어기(411)에 전달할 수 있다. 용량 정보는 제2 타입 메모리(422)의 용량 정보를 포함할 수 있다.41 and 42 , in step S311 , during initialization, the
S312 단계에서, 트레이닝 동안에, 제1 메모리 모듈(420)은 메모리 제어기(411)로부터 수신되는 제2 타입 메모리(422)에 대한 트레이닝 명령을 제1 타입 메모리로 전송할 수 있다. 제1 타입 메모리(421)는 트레이닝 명령에 따라 메모리 제어기(411)와 트레이닝을 수행할 수 있다.In operation S312 , during training, the
제2 타입 메모리(422)에 대한 트레이닝 명령을 제2 타입 메모리(422)가 아닌 제1 타입 메모리(421)로 전송함으로써, 제1 메모리 모듈(420)은 트레이닝에 영향을 주지 않고 그리고 트레이닝에서 오동작을 유발하는 것이 방지된다.By sending the training command for the
도 43은 메모리 제어기(411)가 제1 및 제3 메모리 모듈들(420, 440)과 초기화를 수행하는 예를 보여준다. 도 43을 참조하면, 제1 및 제3 메모리 모듈들(420, 440)은 각각 제1 및 제2 보조 채널들(SCH1, SCH2)을 통해 제1 및 제2 용량 정보들(CI1, CI2)을 메모리 제어기(411)에 전송할 수 있다. 예를 들어, 메모리 제어기(411)는 SPD 장치들(425, 445)로부터 각각 제1 및 제2 용량 정보들(CI1, CI2)을 읽을 수 있다.43 shows an example in which the
제1 용량 정보(CI1)는 제1 메모리 모듈(420)의 용량으로서 제2 타입 메모리(422)의 용량을 가리킬 수 있다. 제1 용량 정보(CI1)가 가리키는 제2 타입 메모리(422)의 용량은 제1 타입 메모리(421)의 용량(이하에서, 단위 용량)과 연관될 수 있다. 예를 들어, 제1 용량 정보(CI1)에 포함된 제2 타입 메모리(422)의 용량은 단위 용량의 N배(N은 양의 정수)일 수 있다.The first capacity information CI1 is the capacity of the
제1 용량 정보(CI1)는 단위 용량을 갖는 N개의 메모리들이 존재함을 가리킬 수 있다. 예를 들어, 제1 용량 정보(CI1)는 단위 용량을 갖는 N개의 랭크들이 존재함을 가리킬 수 있다. 예를 들어, 제1 용량 정보(CI1)는 제2 타입 메모리(422)의 저장 공간을 N개의 물리적 또는 논리적으로 구별되는 저장 공간들(예를 들어, 가상으로 구별된 메모리들)로 나타낼 수 있다.The first capacity information CI1 may indicate that there are N memories having unit capacities. For example, the first capacity information CI1 may indicate that there are N ranks having unit capacities. For example, the first capacity information CI1 may represent the storage space of the
메모리 제어기(411)는 제1 용량 정보(CI1)에 따라 제1 메모리 모듈(420)의 용량을 제1 식별된 용량(IC1)으로 식별할 수 있다. 메모리 제어기(411)는 단위 용량을 갖는 N개의 가상으로 구별된 메모리들에 식별자들을 부여할 수 있다. 예를 들어, N이 8인 경우, 메모리 제어기(411)는 단위 용량을 갖는 8개의 가상 메모리들에 제1 내지 제8 식별자들(CID1~CID8)을 부여할 수 있다.The
제1 용량 정보(CI1)에 따라, 메모리 제어기(411)는 N개의 메모리들(예를 들어, 가상으로 구별된 메모리들)이 제1 메모리 모듈(420)에 존재하는 것으로 식별할 수 있다. 초기화 및 트레이닝이 완료된 후에, 메모리 제어기(411)는 N개의 메모리들을 개별적으로 액세스할 수 있다. 초기화 및 트레이닝이 완료된 후에, 제1 메모리 모듈(420)의 매체 제어기(423)는 N개의 메모리들에 대한 액세스들을 제2 타입 메모리(422)의 물리적 또는 논리적으로 구별되는 저장 공간들에 대한 액세스들로 식별할 수 있다.According to the first capacity information CI1 , the
제2 용량 정보(CI2)는 제3 메모리 모듈(440)의 용량으로서 제1 타입 메모리(441)의 용량을 가리킬 수 있다. 제2 용량 정보(CI2)에 따라, 메모리 제어기(411)는 제3 메모리 모듈(440)의 용량을 제2 식별된 용량(IC2)으로 식별할 수 있다. 예를 들어, 제2 용량 정보(CI2)에 따라, 제2 식별된 용량(IC2)에 하나 또는 그보다 많은 식별자들이 할당될 수 있다.The second capacity information CI2 is the capacity of the
도 44는 초기화가 수행된 후에 트레이닝 시에, 매체 제어기(423)가 메모리 제어기(411)와 채널을 구성하는 예를 보여준다. 도 44를 참조하면, 매체는 제1 메인 채널(MCH1)을 통해 메모리 제어기(411)와 통신할 수 있다. 매체 제어기(423)의 매체 스위치(MSW)는 제2 타입 메모리(422)와 채널을 구성하지 않고 제1 타입 메모리(421)와만 채널을 구성할 수 있다.44 shows an example in which the
메모리 제어기(411)에 의해 식별된 제1 식별된 용량(IC1) 중에서 제1 타입 메모리(421)에 대응하는 용량, 예를 들어 제1 식별자(CID1)가 부여된 용량이 실제 저장 공간을 가질 수 있다. 제1 식별된 용량(IC1) 중에서 제1 타입 메모리(421)에 대응하지 않는 용량, 예를 들어 제2 내지 제8 식별자들(CID2~CID8)이 부여된 용량들은 실제 저장 공간을 갖지 않는 가상 용량일 수 있다.Among the first identified capacities IC1 identified by the
제1 메모리 모듈(420)과 달리, 제3 메모리 모듈(440)의 제1 타입 메모리(441)는 제2 메인 채널(MCH2)을 통해 메모리 제어기(411)와 직접 채널을 구성할 수 있다. 제2 식별된 용량(IC2)은 제3 메모리 모듈(440)의 제1 타입 메모리(441)의 저장 공간을 가질 수 있다.Unlike the
도 45는 트레이닝 시에 매체 제어기(423)가 트레이닝 명령들을 제어하는 예를 보여준다. 도 45를 참조하면, 제1 식별된 용량(IC1)에 따라, 메모리 제어기(411)는 제1 내지 제8 식별자들(CID1~CID8)을 갖는 메모리들이 제1 메모리 모듈(420)에 존재하는 것으로 인식한다.45 shows an example in which the
따라서, 메모리 제어기(411)는 제1 내지 제8 식별자들(CID1~CID8)을 갖는 트레이닝 명령들(T_CMDs)을 제1 메모리 모듈(420)로 순차적으로 전송할 수 있다. 예를 들어, 메모리 제어기(411)는 제1 식별자(CID1)를 갖는 트레이닝 명령을 제1 메모리 모듈(420)로 전송하여, 제1 식별자(CID1)를 갖는 메모리에 대한 트레이닝을 시도할 수 있다.Accordingly, the
제1 식별자(CID1)를 갖는 메모리에 대한 트레이닝이 완료된 후에, 메모리 제어기(411)는 제2 식별자(CID2)를 갖는 트레이닝 명령을 제1 메모리 모듈(420)로 전송하여, 제2 식별자(CID2)를 갖는 메모리에 대한 트레이닝을 시도할 수 있다. 예를 들어, 트레이닝 명령은 적어도 하나의 쓰기 명령, 적어도 하나의 읽기 명령, 또는 적어도 하나의 리프레시 명령과 같은 다양한 명령들을 포함할 수 있다.After the training of the memory having the first identifier CID1 is completed, the
매체 스위치(MSW)는 트레이닝 명령들(T_CMDs)을 모두 제1 타입 메모리(421)로 전달할 수 있다. 예를 들어, 트레이닝 명령들(T_CMDs)에 포함된 식별자들(CID1~CID8)에 관계없이, 매체 스위치(MSW)는 트레이닝 명령들(T_CMDs)을 제1 타입 메모리(421)로 반복적으로 전달할 수 있다. 예를 들어, 매체 스위치(MSW)는 트레이닝 명령들(T_CMDs)이 모두 제1 식별자(CID1)를 갖는 것으로 인식할 수 있다.The medium switch MSW may transfer all of the training commands T_CMDs to the
메모리 제어기(411)가 제1 내지 제8 식별자들(CID1~CID8)을 갖는 트레이닝 명령들(T_CMDs)을 순차적으로 전송함에 따라, 매체 스위치(MSW)는 제1 내지 제8 식별자들(CID1~CID8)에 대응하는 트레이닝 명령들(T_CMDs)을 제1 타입 메모리(421)로 반복적으로 전송할 수 있다.As the
즉, 제1 식별된 용량(IC1)에서, 제2 내지 제8 식별자들(CID2~CID8)을 갖는 가상 용량들은 트레이닝되지 않고, 제1 식별자(CID1)를 갖는 제1 타입 메모리(421)의 용량이 반복적으로 트레이닝될 수 있다.That is, in the first identified capacity IC1 , virtual capacities having the second to eighth identifiers CID2 to CID8 are not trained, and the capacity of the
제1 타입 메모리(421)는 제1 메인 채널(MCH1)의 트레이닝 절차에 부합한다. 따라서, 메모리 제어기(411)로부터의 트레이닝 명령들(T_CMDs)이 제1 타입 메모리(421)로 전달되면, 제1 메모리 모듈(420)이 메모리 제어기(411)와의 트레이닝에 영향을 주거나 오동작을 유발하는 것이 방지된다.The
제2 타입 메모리(422)에 대한 초기화 또는 트레이닝은 매체 제어기(423)에 의해 수행될 수 있다. 따라서, 제1 타입 메모리(421)와 제2 타입 메모리(422)의 초기화 및 트레이닝이 오동작 없이 수행될 수 있다.Initialization or training of the
제1 메모리 모듈(420)과 달이, 제3 메모리 모듈(440)에 대한 트레이닝 명령(T_CMD)은 제1 타입 메모리(441)로 직접 전달된다. 제1 타입 메모리(441)는 제2 메인 채널(MCH2)의 트레이닝 절차에 부합한다. 따라서, 제3 메모리 모듈(440)에 대한 트레이닝이 오동작 없이 수행된다.The training command T_CMD for the
상술된 바와 같이, 트레이닝 시에 매체 스위치(MSW)는 메모리 제어기(411)로부터의 트레이닝 명령들(T_CMDs)이 제2 타입 메모리(422)로 전달되는 것을 차단할 수 있다. 트레이닝 시에, 매체 스위치(MSW)는 메모리 제어기(411)로부터의 트레이닝 명령들(T_CMDs)을 제1 타입 메모리(421)로 전달할 수 있다. 따라서, 제1 메인 채널(MCH1)의 트레이닝 절차에 부합하지 않는 제2 타입 메모리(422)를 저장 공간으로 제공하는 제1 메모리 모듈(420)에서 트레이닝이 오동작 없이 수행될 수 있다.As described above, during training, the medium switch MSW may block transfer of training commands T_CMDs from the
도 46은 매체 제어기(423)가 제2 타입 메모리(422)와 채널을 수립하는 예를 보여준다. 도 45 및 도 46을 참조하면, S321 단계에서, 매체 제어기(423)는 트레이닝의 완료를 검출할 수 있다. 트레이닝의 완료가 검출되면, S322 단계에서, 매체 제어기(423)는 제2 타입 메모리(422)를 메인 메모리로 그리고 제1 타입 메모리(421)를 캐시 메모리로 설정할 수 있다.46 shows an example in which the
예를 들어, 제1 식별된 용량(IC1)에 따라, 메모리 제어기(411)는 제1 메모리 모듈(420)의 저장 용량을 제2 타입 메모리(422)의 저장 용량으로 식별한다. 제2 타입 메모리(422)의 저장 공간의 일부는 제1 타입 메모리(421)에 사상될 수 있다. 메모리 제어기(411)가 액세스하고자 하는 저장 공간이 제1 타입 메모리(421)에 사상되어 있을 때, 매체 제어기(423)는 메모리 제어기(411)로부터의 액세스 명령을 제1 타입 메모리(421)로 전달할 수 있다.For example, according to the first identified capacity IC1 , the
메모리 제어기(411)가 액세스하고자 하는 저장 공간이 제1 타입 메모리(421)에 사상되어 있지 않을 때, 매체 제어기(423)는 액세스 요청된 저장 공간을 제2 타입 메모리(422)로부터 제1 타입 메모리(421)로 사상할 수 있다. 이후에, 매체 제어기(423)는 메모리 제어기(411)로부터의 액세스 명령을 제1 타입 메모리(421)로 전달할 수 있다.When the storage space that the
본 실시 예에 따르면, 제1 메모리 모듈(420)은 메모리 제어기(411)의 액세스 요청을 제1 타입 메모리(421)로 전달함으로써, 메모리 제어기(411)가 요구하는 높은 액세스 속도를 보장할 수 있다. 또한, 제1 메모리 모듈(420)은 제2 타입 메모리(422)의 저장 공간을 제1 타입 메모리(421)에 사상(예를 들어, 백업)하거나 또는 제1 타입 메모리(421)의 저장 공간을 제2 타입 메모리(422)에 플러시(flush) 함으로써, 제2 타입 메모리(422)의 큰 저장 용량 및 불휘발성 기능을 메모리 제어기(411)에 제공할 수 있다.According to this embodiment, the
도 47은 매체 제어기(423)가 트레이닝의 완료를 검출하는 예를 보여준다. 도 47을 참조하면, 초기화 및 트레이닝은 바이오스(BIOS. Basic Input Output System)에 의해 수행된다. 초기화 및 트레이닝이 완료되면, 메모리 제어기(411)는 리프레시 명령(R_CMD)을 주기적으로 제1 메모리 모듈(420) 및 제3 메모리 모듈(440)로 전송할 수 있다.47 shows an example in which the
매체 제어기(423)는 리프레시 명령(R_CMD)이 주기적으로(또는 연속적으로) 수신될 때, 트레이닝이 완료된 것을 검출할 수 있다. 예를 들어, 매체 제어기(423)는 다른 명령이 끼어들지 않고 리프레시 명령(R_CMD)만이 특정 횟수 이상 주기적으로(또는 연속적으로) 수신될 때, 트레이닝이 완료된 것을 검출할 수 있다.The
트레이닝의 완료가 검출되면, 매체 스위치(MSW)는 제1 타입 메모리(421) 및 제2 타입 메모리(422) 모두와 채널을 수립할 수 있다. 예시적으로, 트레이닝이 수행되는 동안 리프레시 명령(R_CMD)이 잡음의 형태로 수신될 수 있다. 매체 제어기(423)는 리프레시 명령(R_CMD)만이 주기적으로 또는 연속적으로 수신되는지를 판단함으로써, 트레이닝 시에 잡음의 형태로 수신되는 리프레시 명령(R_CMD)과 트레이닝이 완료된 후에 수신되는 리프레시 명령(R_CMD)을 구별할 수 있다.When the completion of training is detected, the medium switch MSW can establish channels with both the
도 48은 본 발명의 실시 예에 따른 제1 타입 메모리 모듈(1200)을 보여주는 블록도이다. 예시적으로, 제1 타입 메모리 모듈(1200)은 LRDIMM 표준에 기반한 메모리 모듈일 수 있다. 예시적으로, 제1 메모리 모듈(420)을 참조하여 제1 타입 메모리 모듈(1200)이 도시된다.48 is a block diagram showing a first
도 41 및 도 48을 참조하면, 제1 타입 메모리 모듈(1200)은 제1 타입 메모리(1210), 제2 타입 메모리(1220), 매체 제어기(1230), 제1 내지 제8 데이터 버퍼들(1241~1248), 그리고 직렬 프레즌스 검출(SPD) 장치(1250)를 포함한다.41 and 48, the first
제1 타입 메모리(1210), 제2 타입 메모리(1220), 제1 내지 제8 데이터 버퍼들(1241~1248), 그리고 직렬 프레즌스 검출(SPD) 장치(1250)는 도 40을 참조하여 설명된 제1 타입 메모리(1110), 제2 타입 메모리(1120), 제1 내지 제8 데이터 버퍼들(1141~1148), 그리고 직렬 프레즌스 검출(SPD) 장치(1150)와 동일하게 구성되고, 동일하게 동작한다. 따라서, 중복되는 설명은 생략된다.The
매체 제어기(1230)는 도 40을 참조하여 설명된 매체 제어기(1130)와 유사하게 구성되고 유사하게 동작할 수 있다. 도 40을 참조하여 설명된 매체 제어기(1130)와 달리, 매체 제어기(1230)는 매체 스위치(MSW)를 포함할 수 있다.The
위에서 설명된 바와 같이, 제1 타입 메모리 모듈(1200)이 초기화될 때, 매체 스위치(MSW)는 메모리 제어기(411)로부터의 제2 타입 메모리(1220)에 대한 트레이닝 명령을 제1 타입 메모리(1210)로 전달할 수 있다. 트레이닝이 종료되면, 매체 스위치(MSW)는 제2 타입 메모리(1220)를 제1 타입 메모리 모듈(1200)의 저장 공간으로서 메모리 제어기(411)에 제공할 수 있다.As described above, when the first
도 49는 본 발명의 실시 예에 따른 컴퓨팅 장치(500a)를 보여주는 블록도이다. 예를 들어, 컴퓨팅 장치(500a)는 응용 서버, 클라이언트 서버, 데이터 서버와 같은 서버를 포함할 수 있다. 다른 예로서, 컴퓨팅 장치(500a)는 개인용 컴퓨터 또는 워크 스테이션을 포함할 수 있다.49 is a block diagram showing a
도 49를 참조하면, 컴퓨팅 장치(500a)는 프로세서(510), 제2 캐시 메모리(520), 메모리 제어기(530a), 주 메모리(540a), 스토리지 인터페이스(550), 그리고 스토리지 장치(560)를 포함한다.Referring to FIG. 49 , a
프로세서(510)는 컴퓨팅 장치(500a)의 구성 요소들 및 구성 요소들의 동작들을 제어할 수 있다. 프로세서(510)는 운영체제 및 응용들을 실행하고, 운영체제 또는 응용들을 이용하여 데이터를 처리할 수 있다. 프로세서(510)는 제1 캐시 메모리(511)를 포함할 수 있다. 제1 캐시 메모리(511)는 정적 랜덤 액세스 메모리(SRAM)와 같은 고속의 메모리를 포함할 수 있다.The
제2 캐시 메모리(520)는 프로세서(510)와 통신할 수 있다. 제2 캐시 메모리(520)는 정적 랜덤 액세스 메모리(SRAM) 또는 동적 랜덤 액세스 메모리(DRAM)와 같은 고속의 랜덤 액세스 메모리를 포함할 수 있다.The
메모리 제어기(530a)는 프로세서(510)의 요청에 따라 주 메모리(540a)를 액세스할 수 있다. 예를 들어, 메모리 제어기(530a)는 DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM)과 같은 메모리 모듈의 표준들 중 하나에 기반할 수 있다. 예시적으로, 메모리 제어기(530a)는 도 49에 도시된 바와 같이 프로세서(510)의 외부에 배치되거나 또는 프로세서(510)의 내부에 포함될 수 있다.The
메모리 제어기(530a)는 타임아웃 제어기(531) 및 레지스터(532)를 포함한다. 타임아웃 제어기(531)는 메모리 제어기(530a)가 주 메모리(540a)를 액세스할 때에 시간을 측정할 수 있다. 레지스터(532)는 메모리 제어기(530a)와 연관된 다양한 파라미터들을 저장할 수 있다.The
예를 들어, 레지스터(532)는 메모리 제어기(530a)가 주 메모리(540a)를 액세스할 때의 다양한 타임아웃 값들을 저장할 수 있다. 타임아웃 제어기(531)는 레지스터(532)에 저장된 타임아웃 값들에 기반하여, 메모리 제어기(530a)가 주 메모리(540a)를 액세스할 때의 타임아웃을 제어할 수 있다.For example, register 532 can store various timeout values when
주 메모리(540a)는 불휘발성 저장 능력 또는 대용량을 갖고, 그리고 동적 랜덤 액세스 메모리(DRAM)와 유사한 액세스 속도 및 랜덤 액세스 능력을 갖는 스토리지 클래스 메모리(SCM, Storage Class Memory)를 포함할 수 있다.The
기존의 컴퓨팅 장치들과의 호환성을 지원하기 위하여, 주 메모리(540a)는 DIMM, RDIMM, LRDIMM과 같은 메모리 모듈의 표준들 중 하나에 기반하여 구현될 수 있다. 메모리 제어기(530a) 및 주 메모리(540a)를 메모리 시스템을 형성할 수 있다.To support compatibility with existing computing devices, the
스토리지 인터페이스(550)는 프로세서(510)로부터의 요청 또는 데이터를 스토리지 장치(560)로 전달할 수 있다. 스토리지 인터페이스(550)는 스토리지 장치(560)로부터 전달되는 데이터를 프로세서(510)로 전달할 수 있다. 스토리지 인터페이스(550)는 PCIe (Peripheral Component Interconnect express), NVMe (NonVolatile Memory express), SATA (Serial Advanced Technology Attachment) 등과 같은 다양한 표준들 중 하나에 기반할 수 있다.The
스토리지 장치(560)는 스토리지 인터페이스(550)를 통해 전달되는 요청에 따라, 스토리지 인터페이스(550)를 통해 전달되는 데이터를 저장할 수 있다. 스토리지 장치(560)는 스토리지 인터페이스(550)를 통해 전달되는 요청에 따라, 저장된 데이터를 스토리지 인터페이스(550)를 통해 전달할 수 있다.The
스토리지 장치(560)는 불휘발성 저장 매체 및 불휘발성 저장 매체를 제어하는 제어기를 포함하도록 구현될 수 있다. 스토리지 장치(560)는 하드 디스크 드라이브(HDD, Hard Disk Drive), 솔리드 스테이트 드라이브(SSD, Solid Stat Drive) 등을 포함할 수 있다.The
프로세서(510)는 계층적으로 데이터를 처리할 수 있다. 예를 들어, 컴퓨팅 장치(500a)에서 사용되는 운영체제의 소스 데이터, 응용의 소스 데이터, 그리고 사용자 데이터는 스토리지 장치(560)에 저장될 수 있다. 사용자 데이터는 운영체제, 응용 또는 컴퓨팅 장치(500a)의 사용자에 의해 생성되는 데이터를 포함할 수 있다.The
프로세서(510)가 필요로 하는 특정한 데이터(예를 들어, 소스 데이터 또는 사용자 데이터)가 스토리지 장치(560)에 저장되어 있을 때, 프로세서(510)는 특정한 데이터를 스토리지 장치(560)로부터 읽어 주 메모리(540a)에 저장할 수 있다. 프로세서(510)는 주 메모리(540a)에 저장된 특정한 데이터를 스토리지 장치(560)에 백업할 수 있다.When specific data (eg, source data or user data) required by the
주 메모리(540a)의 저장 영역들 중 일부는 제2 캐시 메모리(520)에 사상될 수 있다. 제2 캐시 메모리(520)의 저장 영역들 중 일부는 제1 캐시 메모리(511)에 사상될 수 있다. 예시적으로, 컴퓨팅 장치(500a)에서 제1 및 제2 캐시 메모리들(511, 520) 중 적어도 하나는 생략될 수 있다.Some of the storage areas of the
예시적으로, 주 메모리(540a)는 도 26을 참조하여 설명된 구조를 갖고, 도 26을 참조하여 설명된 바에 따라 동작할 수 있다. 다른 예로서, 주 메모리(540a)는 도 40을 참조하여 설명된 구조를 갖고, 도 40을 참조하여 설명된 바에 따라 동작할 수 있다.Illustratively, the
도 50은 메모리 제어기(530a)가 주 메모리(540a)에 대해 읽기 동작을 수행하는 예를 보여준다. 도 49 내지 도 50을 참조하면, S411 단계에서, 메모리 제어기(530a)는 제1 읽기 요청을 수신할 수 있다. 예를 들어, 메모리 제어기(530a)는 프로세서(510)로부터 제1 읽기 요청을 수신할 수 있다.50 shows an example in which the
S412 단계에서, 메모리 제어기(530a)는 매체 제어기(1230)로 제2 읽기 요청을 전송할 수 있다. 예를 들어, 메모리 제어기(530a)는 제1 읽기 요청으로부터 제2 읽기 요청을 생성할 수 있다. 제1 읽기 요청의 포맷과 제2 읽기 요청의 포맷은 같거나 다를 수 있다. 하나의 제1 읽기 요청으로부터 하나 또는 그보다 많은 제2 읽기 요청들이 생성될 수 있다.In step S412, the
S413 단계에서, 메모리 제어기(530a)는 제1 시간(T1) 내에 정상 데이터가 수신되는지 판단할 수 있다. 예를 들어, 정상 데이터는 에러가 없는 데이터 또는 정정 가능한 범위 내의 에러를 갖는 데이터를 가리킬 수 있다. 정정 가능한 범위는 메모리 제어기(530a)와 매체 제어기(1230) 사이의 통신에 사용되는 에러 정정 코드의 종류에 따라 달리 정해질 수 있다.In step S413, the
정상 데이터와 달리, 에러를 갖는 데이터 또는 정정 가능한 범위 밖의 에러를 갖는 데이터는 에러 데이터일 수 있다. 제1 시간(T1) 내에 정상 데이터가 수신되면, S414 단계에서, 읽기 성공이 판단된다. 메모리 제어기(530a)는 수신된 정상 데이터를 프로세서(510)로 전달할 수 있다.Unlike normal data, data with errors or data with errors outside the correctable range may be error data. If normal data is received within the first time period T1, in step S414, read success is determined. The
제1 시간(T1) 내에 정상 데이터가 수신되지 않으면, 또는 제1 시간(T1) 내에 에러 데이터가 수신되면, S415 단계에서, 메모리 제어기(530a)는 제2 읽기 요청을 매체 제어기(1230)로 다시 전송할 수 있다. 예를 들어, S415 단계에서 전송되는 제2 읽기 요청은 S412 단계에서 전송된 제2 읽기 요청과 동일할 수 있다. S415 단계는 읽기 재시도(read retry)로 표현될 수 있다.If normal data is not received within the first time T1, or if error data is received within the first time T1, in step S415, the
S416 단계에서, 메모리 제어기(530a)는 제2 시간(T2) 내에 정상 데이터가 수신되는지 판단할 수 있다. 제2 시간(T2)은 제1 시간(T1)과 같거나 다를 수 있다. 제2 시간(T2) 내에 정상 데이터가 수신되면, S414 단계에서 읽기 성공이 판단될 수 있다.In step S416, the
제2 시간(T2) 내에 정상 데이터가 수신되지 않으면, S417 단계가 수행된다. S417 단계에서, 메모리 제어기(530a)는 제2 읽기 요청이 제1 값(N1)의 횟수(N1 times)만큼 재전송되었는지 판단할 수 있다. 예를 들어, 메모리 제어기(530a)는 읽기 재시도가 제1 값(N1)의 횟수만큼 수행되었는지 판단할 수 있다.If normal data is not received within the second time T2, step S417 is performed. In step S417, the
읽기 재시도가 제1 값(N1)의 횟수만큼 수행되지 않았으면, S415 단계에서 읽기 재시도가 수행될 수 있다. 읽기 재시도가 제1 값(N1)의 횟수만큼 수행되었으면, S418 단계가 수행된다. S418 단계에서, 메모리 제어기(530a)는 정정 불가능한 에러가 발생하였으면, 읽기 실패가 발생한 것을 판단할 수 있다.If read retries are not performed as many times as the number of times of the first value N1, read retries may be performed in step S415. If read retries have been performed as many times as the first value N1, step S418 is performed. In step S418, if an uncorrectable error occurs, the
도 51은 도 50의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 휘발성 메모리 장치(1210)와 연관되며, 휘발성 메모리 장치(1210)에서 읽기 동작이 수행되는 예가 도 51에 도시된다.51 shows a first example in which a read operation is performed according to the operation method of FIG. 50 . For example, an example in which the first command and address CA1 are associated with the
도 49 내지 도 51을 참조하면, 프로세서(510)는 제1 읽기 요청(R1)을 생성할 수 있다. S421 단계에서, 프로세서(510)는 제1 읽기 요청(R1)을 메모리 제어기(530a)로 전달할 수 있다. 메모리 제어기(530a)는 제1 읽기 요청(R1)에 따라 제2 읽기 요청(R2)을 생성할 수 있다.Referring to FIGS. 49 to 51 , the
S422 단계에서, 메모리 제어기(530a)는 제2 읽기 요청(R2)을 매체 제어기(1230)로 전달할 수 있다. 제2 읽기 요청(R2)은 제1 커맨드 및 어드레스(CA1)로서 매체 제어기(1230)로 전달될 수 있다. 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(531)는 제1 시간(T1)의 측정(또는 카운트)을 시작할 수 있다(도 50의 S413 단계).In step S422, the
매체 제어기(1230)는 제2 읽기 요청(R2)에 따라 제3 읽기 요청(R3)을 생성할 수 있다. S423 단계에서, 매체 제어기(1230)는 제3 읽기 요청(R3)을 휘발성 메모리 장치(1210)로 전달할 수 있다. 제3 읽기 요청(R3)은 제2 커맨드 및 어드레스(CA2)로서 휘발성 메모리 장치(1210)로 전달될 수 있다.The
예를 들어, 매체 제어기(1230)는 제2 읽기 요청(R2)을 가공하지 않고 제3 읽기 요청(R3)으로서 휘발성 메모리 장치(1210)로 전달할 수 있다. 다른 예로서, 매체 제어기(1230)는 제2 읽기 요청(R2)을 휘발성 메모리 장치(1210)에 적합한 형태로 가공하고, 가공된 결과를 제3 읽기 요청(R3)으로서 휘발성 메모리 장치(1210)로 전달할 수 있다.For example, the
제3 읽기 요청(R3)에 응답하여, 휘발성 메모리 장치(1210)는 읽기 동작(RD)을 수행할 수 있다. 휘발성 메모리 장치(1210)로부터 읽혀지는 데이터는 매체 제어기(1230)로 전달될 수 있다. S424 단계에서, 읽기 동작이 완료될 수 있다.In response to the third read request R3, the
매체 제어기(1230)는 휘발성 메모리 장치(1210)로부터 읽혀진 데이터를 메모리 제어기(530a)로 전달하는 데이터 전송(DT)을 수행할 수 있다. S425 단계에서, 데이터 전송(DT)이 완료되고, 데이터는 메모리 제어기(530a)로 전달될 수 있다.The
메모리 제어기(530a)는 제2 읽기 요청(R2)을 전송한 후 제1 시간(T1)이 경과하기 전에 주 메모리(540a)로부터 데이터를 수신한다. 예를 들어, 수신된 데이터는 정상 데이터일 수 있다. 따라서, 메모리 제어기(530a)는 읽기 성공을 판단할 수 있다.The
메모리 제어기(530a)는 매체 제어기(1230)로부터 전달된 데이터를 프로세서(510)로 전달하는 데이터 전송(DT)을 수행할 수 있다. S426 단계에서, 데이터 전송(DT)이 완료되고, 데이터는 프로세서(510)로 전달될 수 있다. 프로세서(510)는 읽기 완료(RC, Read Complete)를 판단할 수 있다.The
도 52는 도 51의 읽기 동작의 변형 예를 보여준다. 도 49 내지 도 50, 그리고 도 52를 참조하면, S431 단계 내지 S433 단계는 도 51의 S421 단계 내지 S423 단계와 동일하게 수행된다. 따라서, 중복되는 설명은 생략된다.52 shows a modified example of the read operation of FIG. 51 . Referring to FIGS. 49 to 50 and FIG. 52 , steps S431 to S433 are performed identically to steps S421 to S423 of FIG. 51 . Therefore, redundant descriptions are omitted.
휘발성 메모리 장치(1210)가 읽기 동작(RD)을 수행할 때, S434 단계에서, 읽혀진 데이터는 매체 제어기(1230)에 의해 제어되거나 버퍼링되지 않고, 매체 제어기(1230) 및 제1 내지 제8 데이터 버퍼들(1241~1248)을 통해 메모리 제어기(530a)로 직접 전달될 수 있다. LRDIMM은 동적 랜덤 액세스 메모리(DRAM)에 기반하므로, 휘발성 메모리 장치(1210)는 메모리 제어기(530a)와 직접 통신할 수 있다.When the
이후에, S436 단계는 도 51의 S426 단계와 동일하게 수행될 수 있다. 휘발성 메모리 장치(1210)에서 읽혀진 데이터가 메모리 제어기(530a)로 직접 전달되면, 메모리 제어기(530a)가 제2 읽기 요청(R2)을 전송한 후에 데이터를 수신할 때까지의 시간이 단축될 수 있다.Thereafter, step S436 may be performed in the same manner as step S426 of FIG. 51 . If data read from the
도 53은 도 50의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(1220)와 연관되며, 불휘발성 메모리 장치(1220)에서 읽기 동작이 수행되는 예가 도 53에 도시된다.53 shows a second example in which a read operation is performed according to the operation method of FIG. 50 . For example, an example in which the first command and address CA1 are associated with the
도 49 내지 도 50, 그리고 도 53을 참조하면, 프로세서(510)는 제1 읽기 요청(R1)을 생성할 수 있다. S441 단계에서, 프로세서(510)는 제1 읽기 요청(R1)을 메모리 제어기(530a)로 전달할 수 있다. 메모리 제어기(530a)는 제1 읽기 요청(R1)에 따라 제2 읽기 요청(R2)을 생성할 수 있다.Referring to FIGS. 49 to 50 and FIG. 53 , the
S442 단계에서, 메모리 제어기(530a)는 제2 읽기 요청(R2)을 매체 제어기(1230)로 전달할 수 있다. 제2 읽기 요청(R2)은 제1 커맨드 및 어드레스(CA1)로서 매체 제어기(1230)로 전달될 수 있다. 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(531)는 제1 시간(T1)의 측정(또는 카운트)을 시작할 수 있다(도 50의 S413 단계).In step S442, the
매체 제어기(1230)는 제2 읽기 요청(R2)에 따라 제3 읽기 요청(R3)을 생성할 수 있다. S443 단계에서, 매체 제어기(1230)는 제3 읽기 요청(R3)을 불휘발성 메모리 장치(1220)로 전달할 수 있다. 제3 읽기 요청(R3)은 제3 커맨드 및 어드레스(CA3)로서 불휘발성 메모리 장치(1220)로 전달될 수 있다.The
예를 들어, 매체 제어기(1230)는 제2 읽기 요청(R2)을 가공하지 않고 제3 읽기 요청(R3)으로서 불휘발성 메모리 장치(1220)로 전달할 수 있다. 다른 예로서, 매체 제어기(1230)는 제2 읽기 요청(R2)을 불휘발성 메모리 장치(1212)에 적합한 형태로 가공하고, 가공된 결과를 제3 읽기 요청(R3)으로서 불휘발성 메모리 장치(1220)로 전달할 수 있다.For example, the
제3 읽기 요청(R3)에 응답하여, 불휘발성 메모리 장치(1220)는 읽기 동작(RD)을 수행할 수 있다. 불휘발성 메모리 장치(1220)로부터 읽혀지는 데이터는 매체 제어기(1230)로 전달될 수 있다.In response to the third read request R3, the
예시적으로, 불휘발성 메모리 장치(1220)의 읽기 속도는 휘발성 메모리 장치(1210)의 읽기 속도보다 낮다. 불휘발성 메모리 장치(1220)로부터 데이터를 읽는 데에 필요한 시간은 휘발성 메모리 장치(1210)로부터 데이터를 읽는 데에 필요한 시간보다 길다.For example, a read speed of the
앞서 언급된 바와 같이, LRDIMM은 동적 랜덤 액세스 메모리(DRAM)에 기반한다. 따라서, 통상적으로, 제1 시간(T1) 및 제2 시간(T2)은 동적 랜덤 액세스 메모리(DRAM)의 읽기 시간에 따라 정해져 있다. 제1 시간(T1) 및 제2 시간(T2)은 불휘발성 메모리 장치(1220)의 읽기 시간보다 짧다.As mentioned earlier, LRDIMMs are based on Dynamic Random Access Memory (DRAM). Therefore, typically, the first time T1 and the second time T2 are determined according to the read time of the dynamic random access memory (DRAM). The first time T1 and the second time T2 are shorter than the read time of the
메모리 제어기(530a)가 S442 단계에서 제2 읽기 요청(R2)을 전송한 후 제1 시간(T1)이 경과할 때까지, 불휘발성 메모리 장치(1220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S444 단계에서, 메모리 제어기(530a)는 제2 읽기 요청(R2)을 매체 제어기(1230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 50의 S415 단계).The read operation RD of the
메모리 제어기(530a)가 S444 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과할 때까지, 불휘발성 메모리 장치(1220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S445 단계에서, 메모리 제어기(530a)는 제2 읽기 요청(R2)을 매체 제어기(1230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 50의 S415 단계).The read operation RD of the
메모리 제어기(530a)가 S445 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과할 때까지, 불휘발성 메모리 장치(1220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S446 단계 및 S447 단계에서, 메모리 제어기(530a)는 제2 읽기 요청(R2)을 매체 제어기(1230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 50의 S415 단계).The read operation RD of the
읽기 재시도가 제1 값(N1)의 횟수만큼 수행될 때까지, 불휘발성 메모리 장치(1220)의 읽기 동작(RD)이 완료되지 않을 수 있다. 메모리 제어기(530a)는 읽기 실패가 발생한 것을 판단할 수 있다. 메모리 제어기(530a)는 에러 보고(ER)를 생성하고, S448 단계에서 에러 보고(ER)를 프로세서(510)로 전달할 수 있다. 에러 보고(ER)에 따라, 프로세서(510)는 에러 핸들링(EH)을 수행할 수 있다.The read operation RD of the
S449 단계에서, 불휘발성 메모리 장치(1220)의 읽기 동작이 완료되고, 데이터가 매체 제어기(1230)에 전달될 수 있다. 그러나 메모리 제어기(530a)는 이미 읽기 실패를 판단한 상태이다. 따라서, 주 메모리(540a)의 불휘발성 메모리 장치(1220)에 대한 읽기 동작이 발생하면, 불휘발성 메모리 장치(1220)와 휘발성 메모리 장치(1210)의 읽기 속도들의 차이에 의해, 주 메모리(540a)에 대한 읽기 동작이 실패할 수 있다.In step S449 , the read operation of the
이와 같은 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 메모리 제어기(530a)는 횟수 제한 없는 읽기 재시도를 수행할 수 있다. 예를 들어, 제1 값(N1)은 레지스터(532)에 저장될 수 있다. 본 발명의 실시 예에 다른 메모리 제어기(530a)는 레지스터(532)에 저장된 제1 값(N1)을 무효화하거나 또는 무한대로 설정할 수 있다.To solve this problem, the
도 54는 본 발명의 실시 예에 따른 메모리 제어기(530a)의 동작 방법을 보여주는 순서도이다. 도 49, 도 50 및 도 54를 참조하면, S451 단계에서, 메모리 제어기(530a)는 제1 읽기 요청을 수신할 수 있다. 예를 들어, 메모리 제어기(530a)는 프로세서(510)로부터 제1 읽기 요청을 수신할 수 있다.54 is a flowchart illustrating an operating method of the
S452 단계에서, 메모리 제어기(530a)는 매체 제어기(1230)로 제2 읽기 요청을 전송할 수 있다. 예를 들어, 메모리 제어기(530a)는 제1 읽기 요청으로부터 제2 읽기 요청을 생성할 수 있다. 제1 읽기 요청의 포맷과 제2 읽기 요청의 포맷은 같거나 다를 수 있다. 하나의 제1 읽기 요청으로부터 하나 또는 그보다 많은 제2 읽기 요청들이 생성될 수 있다.In step S452, the
S453 단계에서, 메모리 제어기(530a)는 제1 시간(T1) 내에 정상 데이터가 수신되는지 판단할 수 있다. 제1 시간(T1) 내에 정상 데이터가 수신되면, S454 단계에서, 읽기 성공이 판단된다. 메모리 제어기(530a)는 수신된 정상 데이터를 프로세서(510)로 전달할 수 있다.In step S453, the
제1 시간(T1) 내에 정상 데이터가 수신되지 않으면, 또는 제1 시간(T1) 내에 에러 데이터가 수신되면, S455 단계에서, 메모리 제어기(530a)는 제2 읽기 요청을 매체 제어기(1230)로 다시 전송하여 읽기 재시도를 수행할 수 있다.If normal data is not received within the first time T1 or if error data is received within the first time T1, in step S455, the
S456 단계에서, 메모리 제어기(530a)는 제2 시간(T2) 내에 정상 데이터가 수신되는지 판단할 수 있다. 제2 시간(T2)은 제1 시간(T1)보다 짧을 수 있다. 제2 시간(T2) 내에 정상 데이터가 수신되면, S454 단계에서 읽기 성공이 판단될 수 있다.In step S456, the
제2 시간(T2) 내에 정상 데이터가 수신되지 않으면, 메모리 제어기(530a)는 S455 단계에서 읽기 재시도를 수행할 수 있다. 즉, 메모리 제어기(530a)는 읽기 요청을 횟수 제한 없이 재전송할 수 있다.If normal data is not received within the second time T2, the
도 55는 도 54의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(1220)와 연관되며, 불휘발성 메모리 장치(1220)에서 읽기 동작이 수행되는 예가 도 55에 도시된다.55 shows a first example in which a read operation is performed according to the operation method of FIG. 54 . For example, an example in which the first command and address CA1 are associated with the
도 49, 도 50, 도 54 및 도 55를 참조하면, 프로세서(510)는 제1 읽기 요청(R1)을 생성할 수 있다. S461 단계에서, 프로세서(510)는 제1 읽기 요청(R1)을 메모리 제어기(530a)로 전달할 수 있다. 메모리 제어기(530a)는 제1 읽기 요청(R1)에 따라 제2 읽기 요청(R2)을 생성할 수 있다.Referring to FIGS. 49, 50, 54, and 55, the
S462 단계에서, 메모리 제어기(530a)는 제2 읽기 요청(R2)을 매체 제어기(1230)로 전달할 수 있다. 제2 읽기 요청(R2)은 제1 커맨드 및 어드레스(CA1)로서 매체 제어기(1230)로 전달될 수 있다. 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(531)는 제1 시간(T1)의 측정(또는 카운트)을 시작할 수 있다(도 54의 S453 단계).In step S462, the
매체 제어기(1230)는 제2 읽기 요청(R2)에 따라 제3 읽기 요청(R3)을 생성할 수 있다. S463 단계에서, 매체 제어기(1230)는 제3 읽기 요청(R3)을 불휘발성 메모리 장치(1220)로 전달할 수 있다. 제3 읽기 요청(R3)은 제3 커맨드 및 어드레스(CA3)로서 불휘발성 메모리 장치(1220)로 전달될 수 있다.The
제3 읽기 요청(R3)에 응답하여, 불휘발성 메모리 장치(1220)는 읽기 동작(RD)을 수행할 수 있다. 불휘발성 메모리 장치(1220)로부터 읽혀지는 데이터는 매체 제어기(1230)로 전달될 수 있다.In response to the third read request R3, the
메모리 제어기(530a)가 S412 단계에서 제2 읽기 요청(R2)을 전송한 후 제1 시간(T1)이 경과할 때까지, 불휘발성 메모리 장치(1220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S464 단계에서, 메모리 제어기(530a)는 제2 읽기 요청(R2)을 매체 제어기(1230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 54의 S455 단계).The read operation RD of the
메모리 제어기(530a)가 S464 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과할 때까지, 불휘발성 메모리 장치(1220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S465 단계에서, 메모리 제어기(530a)는 제2 읽기 요청(R2)을 매체 제어기(1230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 54의 S455 단계).The read operation RD of the
마찬가지로, 제2 시간(T2)이 경과함에 따라, 메모리 제어기(530a)는 S466 단계 내지 S468 단계에서 제2 읽기 요청(R2)을 매체 제어기(1230)로 다시 전송하여 읽기 재시도를 수행할 수 있다. 불휘발성 메모리 장치(1220)에서 읽기 동작(RD)이 수행되는 동안, 매체 제어기(1230)는 읽기 동작(RD)과 연관되어 수신되는 제2 읽기 요청들(예를 들어, S464 단계 내지 S468 단계에서 수신되는 제2 읽기 요청들(R2))을 무시할 수 있다.Similarly, as the second time T2 elapses, the
S469 단계에서, 불휘발성 메모리 장치(1220)에서 읽기 동작(RD)이 완료되고, 읽혀진 데이터가 매체 제어기(1230)로 전달될 수 있다. 매체 제어기(1230)는 불휘발성 메모리 장치(1220)로부터 읽혀진 데이터를 메모리 제어기(530a)로 전달하는 데이터 전송(DT)을 수행할 수 있다. S470 단계에서, 데이터 전송(DT)이 완료되고, 데이터는 메모리 제어기(530a)로 전달될 수 있다.In step S469, the read operation (RD) is completed in the
메모리 제어기(530a)는 S468 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과하기 전에 주 메모리(540a)로부터 데이터를 수신한다. 예를 들어, 수신된 데이터는 정상 데이터일 수 있다. 따라서, 메모리 제어기(530a)는 읽기 성공을 판단할 수 있다.The
메모리 제어기(530a)는 매체 제어기(1230)로부터 전달된 데이터를 프로세서(510)로 전달하는 데이터 전송(DT)을 수행할 수 있다. S471 단계에서, 데이터 전송(DT)이 완료되고, 데이터는 프로세서(510)로 전달될 수 있다. 프로세서(510)는 읽기 완료(RC, Read Complete)를 판단할 수 있다.The
상술된 바와 같이, 메모리 제어기(530a)가 읽기 재시도를 수행하는 횟수를 제한하지 않음으로써, 불휘발성 메모리 장치(1220)로부터 정상 데이터가 읽혀질 수 있다.As described above, normal data may be read from the
도 56은 도 54의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(1220)와 연관되며, 휘발성 메모리 장치(1210)가 불휘발성 메모리 장치(1220)의 캐시 메모리로 사용되는 예가 도 56에 도시된다.56 shows a second example in which a read operation is performed according to the operation method of FIG. 54 . For example, an example in which the first command and address CA1 are associated with the
도 40, 도 49, 도 54 및 도 56을 참조하면, S481 단계에서, 프로세서(510)는 제1 읽기 요청(R1)을 메모리 제어기(530a)로 전달할 수 있다. 메모리 제어기(530a)는 제1 읽기 요청(R1)에 따라 제2 읽기 요청(R2)을 생성할 수 있다.Referring to FIGS. 40, 49, 54, and 56 , in step S481, the
S482 단계에서, 메모리 제어기(530a)는 제2 읽기 요청(R2)을 매체 제어기(1230)로 전달할 수 있다. 제2 읽기 요청(R2)은 제1 커맨드 및 어드레스(CA1)로서 매체 제어기(1230)로 전달될 수 있다. 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(531)는 제1 시간(T1)의 측정(또는 카운트)을 시작할 수 있다(도 54의 S453 단계).In step S482, the
매체 제어기(1230)는 제2 읽기 요청(R2)과 연관된 저장 공간이 휘발성 메모리 장치(1210)에 사상되어 있는지(즉, 캐시 히트인지) 판단할 수 있다. 제2 읽기 요청(R2)과 연관된 저장 공간이 휘발성 메모리 장치(1210)에 사상되어 있으면, 즉 캐시 히트이면, 매체 제어기(1230)는 제3 읽기 요청(R3)을 제2 커맨드 및 어드레스(CA2) 또는 제2 제어 신호(CTRL2)로서 휘발성 메모리 장치(1210)로 전송할 수 있다.The
휘발성 메모리 장치(1210)에 대한 읽기 동작은 도 51 또는 도 52를 참조하여 설명된 것과 동일하게 수행될 수 있다. 따라서, 휘발성 메모리 장치(1210)에 대한 읽기 동작은 중복하여 설명되지 않는다.A read operation on the
제2 읽기 요청(R2)과 연관된 저장 공간이 휘발성 메모리 장치(1210)에 사상되어 있지 않으면, 즉 캐시 미스이면, 매체 제어기(1230)는 제2 읽기 요청(R2)과 연관된 저장 공간을 휘발성 메모리 장치(1210)에 사상할 수 있다.If the storage space associated with the second read request R2 is not mapped to the
매체 제어기(1230)는 제2 읽기 요청(R2)과 연관된 저장 공간에 대한 제3 읽기 요청(R3)을 생성할 수 있다. S483 단계에서, 매체 제어기(1230)는 제3 읽기 요청(R3)을 불휘발성 메모리 장치(1220)로 전달할 수 있다. 제3 읽기 요청(R3)은 제3 커맨드 및 어드레스(CA3)로서 불휘발성 메모리 장치(1220)로 전달될 수 있다.The
제3 읽기 요청(R3)에 응답하여, 불휘발성 메모리 장치(1220)는 읽기 동작(RD)을 수행할 수 있다. 불휘발성 메모리 장치(1220)로부터 읽혀지는 데이터는 매체 제어기(1230)로 전달될 수 있다.In response to the third read request R3, the
제1 시간(T1) 또는 제2 시간(T2)이 경과함에 따라, 메모리 제어기(530a)는 S484 단계 내지 S488 단계에서 제2 읽기 요청(R2)을 전송하여 읽기 재시도를 수행할 수 있다.As the first time T1 or the second time T2 elapses, the
불휘발성 메모리 장치(1220)의 읽기 동작(RD)이 완료됨에 따라, S489 단계에서, 불휘발성 메모리 장치(1220)로부터 읽혀진 데이터는 매체 제어기(1230)로 전달된다.As the read operation (RD) of the
불휘발성 메모리 장치(1220)로부터 데이터가 전달됨에 따라, S490 단계에서, 매체 제어기(1230)는 쓰기 요청(W)을 휘발성 메모리 장치(1210)로 전달할 수 있다. 쓰기 요청(W)은 불휘발성 메모리 장치(1220)로부터 읽혀진 데이터를 포함하거나 데이터와 함께 전달될 수 있다.As data is transferred from the
예를 들어, 쓰기 요청(W)은 제2 커맨드 및 어드레스(CA2)로서 휘발성 메모리 장치(1210)로 전달될 수 있다. 다른 예로서, 쓰기 요청(W)은 제2 제어 신호(CTRL2)로서 휘발성 메모리 장치(1210)로 전달될 수 있다. 예를 들어, 매체 제어기(1230)는 특정한 제어 신호, 예를 들어 SAVEn을 활성화할 수 있다.For example, the write request W may be transferred to the
특정한 제어 신호가 활성화된 동안, 매체 제어기(1230)는 불휘발성 메모리 장치(1220)로부터 읽혀진 데이터를 휘발성 메모리 장치(1210)로 출력할 수 있다. 특정한 제어 신호의 활성화에 응답하여, 휘발성 메모리 장치(1210)는 매체 제어기(1230)로부터 전달되는 데이터를 기입할 수 있다.While a specific control signal is activated, the
쓰기 요청(W)에 따라, 휘발성 메모리 장치(1210)는 쓰기 동작(WR)을 수행할 수 있다. 휘발성 메모리 장치(1210)가 쓰기 동작(WR)을 수행함으로써, 제2 읽기 요청(R2)과 연관된 불휘발성 메모리 장치(1220)의 제1 저장 공간이 휘발성 메모리 장치의 제2 저장 공간으로 사상(또는 백업)될 수 있다.According to the write request W, the
쓰기 동작(WR)이 완료된 후에, S491 단계에서, 메모리 제어기(530a)는 매체 제어기(1230)로 제2 읽기 요청(R2)을 전달할 수 있다. S492 단계에서, 매체 제어기(1230)는 읽기 동작(RD)이 완료된 후에 S441 단계에서 수신된 제2 읽기 요청(R2)에 응답하여, 휘발성 메모리 장치(1210)에 제3 읽기 요청(R3)을 전송할 수 있다. 제3 읽기 요청(R3)은 불휘발성 메모리 장치(1220)로부터 휘발성 메모리 장치(1210)로 사상된 데이터에 대한 읽기를 요청할 수 있다.After the write operation WR is completed, in step S491 , the
제3 읽기 요청(R3)에 따라, 휘발성 메모리 장치(1210)는 읽기 동작(RD)을 수행할 수 있다. 읽기 동작(RD)이 완료되면, S493 단계에서, 제2 읽기 요청(R2)과 연관된 데이터가 매체 제어기(1230)에 전달된다. 매체 제어기(1230)는 데이터 전송(DT)을 수행할 수 있다.According to the third read request R3, the
데이터 전송(DT)이 수행됨에 따라, S494 단계에서, 데이터가 메모리 제어기(530a)로 전달된다. 메모리 제어기(530a)가 S491 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과하기 전에, 메모리 제어기(530a)에 제2 읽기 요청(R2)과 연관된 데이터가 수신된다. 따라서, 메모리 제어기(530a)는 읽기 성공을 판단할 수 있다(도 54의 S454 단계).As data transfer (DT) is performed, data is transferred to the
메모리 제어기(530a)는 데이터 전송(DT)을 수행하여, S495 단계에서 프로세서(510)로 데이터를 전달할 수 있다. 데이터가 전달됨에 따라, 프로세서(510)는 읽기 완료를 판단할 수 있다.The
도 57은 도 56의 읽기 동작의 변형 예를 보여준다. 도 40, 도 49, 도 54 및 도 57을 참조하면, S501 단계 내지 S510 단계는 도 56의 S481 단계 내지 S490 단계와 동일하게 수행된다. 따라서, 중복되는 설명은 생략된다.57 shows a modified example of the read operation of FIG. 56 . Referring to FIGS. 40 , 49 , 54 and 57 , steps S501 to S510 are performed in the same manner as steps S481 to S490 of FIG. 56 . Therefore, redundant descriptions are omitted.
S511 단계에서, 메모리 제어기(530a)는 매체 제어기(1230)로 제2 읽기 요청(R2)을 전송할 수 있다. 제2 읽기 요청(R2)에 응답하여, S512 단계에서, 매체 제어기(1230)는 휘발성 메모리 장치(1210)로 제3 읽기 요청(R3)을 전송할 수 있다. 예를 들어, 매체 제어기(1230)는 메모리 제어기(530a)로부터 전달되는 제2 읽기 요청(R2)을 제3 읽기 요청(R3)으로서 휘발성 메모리 장치(1210)로 전달할 수 있다.In step S511, the
휘발성 메모리 장치(1210)가 읽기 동작(RD)을 수행할 때, S513 단계에서, 읽혀진 데이터는 매체 제어기(1230)에 의해 제어되거나 버퍼링되지 않고, 매체 제어기(1230) 및 제1 내지 제8 데이터 버퍼들(1241~1248)을 통해 메모리 제어기(530a)로 직접 전달될 수 있다. LRDIMM은 동적 랜덤 액세스 메모리(DRAM)에 기반하므로, 휘발성 메모리 장치(1210)는 메모리 제어기(530a)와 직접 통신할 수 있다.When the
이후에, S514 단계는 도 56의 S495 단계와 동일하게 수행될 수 있다. 휘발성 메모리 장치(1210)에서 읽혀진 데이터가 메모리 제어기(530a)로 직접 전달되면, 메모리 제어기(530a)가 제2 읽기 요청(R2)을 전송한 후에 데이터를 수신할 때까지의 시간이 단축될 수 있다.Thereafter, step S514 may be performed in the same manner as step S495 of FIG. 56 . If data read from the
도 58은 도 54의 동작 방법의 응용 예를 보여준다. 도 40, 도 49 및 도 58을 참조하면, S521 단계 내지 S525 단계는 도 54를 참조하여 설명된 S451 단계 내지 S455 단계와 동일하게 수행된다. 즉, 메모리 제어기(530a)는 횟수 제한 없이 읽기 재시도를 반복적으로 수행할 수 있다.58 shows an application example of the operation method of FIG. 54 . Referring to FIGS. 40 , 49 and 58 , steps S521 to S525 are performed identically to steps S451 to S455 described with reference to FIG. 54 . That is, the
S526 단계에서, 제2 시간(T2) 내에 정상 데이터가 수신되지 않았으면, S527 단계가 수행된다. S527 단계에서, 제2 읽기 요청을 최초로 전송(S522 단계)한 후 제3 시간(T3)이 경과했는지 판단된다. 제3 시간(T3)이 경과하지 않았으면, S525 단계에서 읽기 재시도가 횟수 제한 없이 수행된다.In step S526, if normal data is not received within the second time period T2, step S527 is performed. In step S527, it is determined whether the third time period T3 has elapsed after the first transmission of the second read request (step S522). If the third time period T3 has not elapsed, read retries are performed without limiting the number of times in step S525.
제3 시간(T3)이 경과했으면, S528 단계에서, 메모리 제어기(530a)는 정정 불가능한 에러가 발생하였으면, 읽기 실패가 발생한 것을 판단할 수 있다. 예시적으로, 제3 시간(T3)의 정보는 레지스터(532)에 저장될 수 있다.When the third time T3 has elapsed, in step S528, the
제3 시간(T3)은 불휘발성 메모리 장치(1220)에서 읽기 동작을 수행하는 데에 필요한 시간(예를 들어, 읽기 시간)에 따라 결정될 수 있다. 예를 들어, 제3 시간(T3)은 읽기 시간보다 길게(예를 들어, 두 배 이상) 정해질 수 있다.The third time T3 may be determined according to a time (eg, a read time) required to perform a read operation in the
도 59는 제3 시간(T3)을 측정하면서 읽기 동작을 수행하는 예를 보여준다. 도 56과 비교하면, S482 단계에서 메모리 제어기(530a)가 매체 제어기(1230)로 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(531)는 제3 시간(T3)의 측정을 시작할 수 있다.59 shows an example of performing a read operation while measuring the third time T3. 56, as the
예시적으로, 제3 시간(T3)은 불휘발성 메모리 장치(1220)에 대해 읽기 동작이 수행되는 시간보다 길게 설정될 수 있다. 제3 시간(T3)에 따라 타임아웃이 측정되면, 주 메모리(540a)에서 에러(예를 들어, 읽기 에러)가 발생하여 정상 데이터가 읽히지 않는 때에 메모리 제어기(530a)가 읽기 재시도를 반복하는 것이 방지된다. 즉, 메모리 제어기(530a) 및 주 메모리(540a)를 포함하는 메모리 시스템에서 행(hang)이 발생하는 것이 방지된다.For example, the third time T3 may be set longer than a time during which a read operation is performed on the
도 60은 본 발명의 다른 예에 따른 컴퓨팅 장치(500b)를 보여주는 블록도이다. 도 60을 참조하면, 컴퓨팅 장치(500b)는 프로세서(510), 제2 캐시 메모리(520), 메모리 제어기(530b), 주 메모리(540b), 스토리지 인터페이스(550), 그리고 스토리지 장치(560)를 포함한다.60 is a block diagram showing a
프로세서(510), 제2 캐시 메모리(520), 스토리지 인터페이스(550), 그리고 스토리지 장치(560)는 도 49를 참조하여 설명된 것과 동일하게 동작한다. 따라서, 중복되는 설명은 생략된다.The
도 49와 비교하면, 메모리 제어기(530b) 및 주 메모리(540b)는 시스템 관리 버스(SMBus, System Management Bus)를 통해 더 통신할 수 있다. 주 메모리(540b)는 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치 및 레지스터 갱신기(542)를 포함할 수 있다.Compared to FIG. 49 , the
SPD 장치(541)는 주 메모리(540b)에 대한 정보를 포함할 수 있다. 메모리 제어기(530b) 및 주 메모리(540b)에 전원이 공급될 때, 메모리 제어기(530b)는 주 메모리(540b)의 SPD 장치(541)를 액세스하여, 주 메모리(540b)에 대한 정보를 획득할 수 있다.The
획득된 정보를 기반으로, 메모리 제어기(530b)는 주 메모리(540b)를 액세스하는 방법들 또는 파라미터들을 설정 또는 조절할 수 있다. 예를 들어, 메모리 제어기(530b)는 시스템 관리 버스(SMBus)를 통해 SPD 장치(541)를 액세스할 수 있다.Based on the obtained information, the
레지스터 갱신기(542)는 시스템 관리 버스(SMBus)를 통해 메모리 제어기(530b)의 레지스터(532)를 갱신할 수 있다. 예를 들어, 메모리 제어기(530b)가 주 메모리(540b)의 SPD 장치(541)를 액세스할 때에, 메모리 제어기(530b)는 주 메모리(540b)가 시스템 관리 버스(SMBus)를 통해 레지스터(532)를 액세스하는 것을 허용할 수 있다.The
메모리 제어기(530b)가 SPD 장치(541)를 액세스하는 동안, 레지스터 갱신기(542)는 레지스터(532)에 저장된 정보 중 일부를 갱신할 수 있다. 예를 들어, 레지스터 갱신기(542)는 도 54 내지 도 59를 참조하여 설명된 동작들이 허용되도록, 레지스터(532)에 저장된 정보를 갱신할 수 있다.While the
도 61은 SPD 장치(541) 및 레지스터 갱신기(542)를 포함하는 주 메모리(1300)의 예를 보여준다. 도 40과 비교하면, 매체 제어기(1330)는 SPD 장치(541) 및 레지스터 갱신기(542)를 포함할 수 있다.61 shows an example of a
SPD 장치(541)는 매체 제어기(1330)의 내부에 포함되거나 또는 매체 제어기(1330)의 외부에 매체 제어기(1330)와 구별되는 패키지도 제공될 수 있다. SPD 장치(541) 및 레지스터 갱신기(542)는 시스템 관리 버스(SMBus)를 통해 메모리 제어기(530b)와 통신할 수 있다.The
도 62는 주 메모리(540b)가 레지스터(532)를 갱신하는 방법을 보여주는 순서도이다. 도 60 내지 도 62를 참조하면, S531 단계에서, 매체 제어기(1330)는 파워 온을 검출할 수 있다. S532 단계에서, 매체 제어기(1330)의 레지스터 갱신기(542)는 시스템 관리 버스(SMBus)를 통해 레지스터(532)에 저장된 정보를 갱신할 수 있다.62 is a flow chart showing how
예를 들어, 레지스터 갱신기(542)는 레지스터(532)에 저장된 횟수 제한(times limit)을 무효화하거나 제거할 수 있다. 레지스터 갱신기(542)는 불휘발성 메모리 장치(1320)의 읽기 시간에 따라 레지스터(532)에 저장된 제3 시간(T3)을 갱신할 수 있다. 예를 들어, 레지스터 갱신기(542)는 제3 시간(T3)이 읽기 시간보다 길어지도록 레지스터(532)를 갱신할 수 있다.For example,
도 63은 본 발명의 또 다른 예에 따른 컴퓨팅 장치(500c)를 보여주는 블록도이다. 도 40 및 도 63을 참조하면, 컴퓨팅 장치(500c)는 프로세서(510), 제2 캐시 메모리(520), 메모리 제어기(530c), 주 메모리(540c), 스토리지 인터페이스(550), 그리고 스토리지 장치(560)를 포함한다.63 is a block diagram showing a
프로세서(510), 제2 캐시 메모리(520), 스토리지 인터페이스(550), 그리고 스토리지 장치(560)는 도 49를 참조하여 설명된 것과 동일하게 동작한다. 따라서, 중복되는 설명은 생략된다.The
도 49와 비교하면, 주 메모리(540c)는 메모리 제어기(530c)로 쓰기 에러 신호(WRCRC)를 출력할 수 있다. 예를 들어, 메모리 제어기(530c)는 주 메모리(540c)로 쓰기 요청을 전달할 수 있다. 쓰기 요청의 쓰기 데이터는 에러 정정 코드에 의해 생성된 패리티와 함께 전송될 수 있다.Compared to FIG. 49 , the
주 메모리(540c)는 패리티를 이용하여 쓰기 데이터에 에러가 존재하는지 체크할 수 있다. 쓰기 데이터에 에러가 존재하면, 주 메모리(540c)는 쓰기 에러 신호(WRCRC)를 활성화(예를 들어, 로우 레벨로 조절)할 수 있다. 쓰기 에러 신호(WRCRC)가 활성화되면, 메모리 제어기(530c)는 쓰기 요청을 재전송할 수 있다.The
주 메모리(540c)는 쓰기 에러 제어기(543)를 포함할 수 있다. 도 61을 참조하여 설명된 바와 같이, 쓰기 에러 제어기(543)는 매체 제어기(1230)에 포함될 수 있다. 불휘발성 메모리 장치(1220)에 대한 쓰기가 수행될 때, 쓰기 에러 제어기(543)는 쓰기 에러 신호(WRCRC)를 제어할 수 있다. 예를 들어, 쓰기 에러 신호(WRCRC)는 ALERTn 신호를 포함할 수 있다.The
도 64는 메모리 제어기(530c)가 쓰기 동작을 수행하는 예를 보여주는 순서도이다. 도 40, 도 63 및 도 64를 참조하면, S541 단계에서, 메모리 제어기(530c)는 제1 쓰기 요청을 수신할 수 있다. 예를 들어, 메모리 제어기(530c)는 프로세서(510)로부터 제1 쓰기 요청을 수신할 수 있다.64 is a flowchart illustrating an example in which the
S542 단계에서, 메모리 제어기(530c)는 매체 제어기(1230)로 제2 쓰기 요청을 전송할 수 있다. 예를 들어, 메모리 제어기(530c)는 제1 쓰기 요청으로부터 제2 쓰기 요청을 생성할 수 있다. 제1 쓰기 요청의 포맷과 제2 쓰기 요청의 포맷은 같거나 다를 수 있다. 하나의 제1 쓰기 요청으로부터 하나 또는 그보다 많은 제2 쓰기 요청들이 생성될 수 있다.In step S542, the
S543 단계에서, 메모리 제어기(530c)는 쓰기 에러 신호(WRCRC)가 활성화되는지 체크할 수 있다. 쓰기 에러 신호(WRCRC)가 활성화되지 않으면, S544 단계에서, 메모리 제어기(530c)는 쓰기가 성공한 것을 판단할 수 있다.In step S543, the
쓰기 에러 신호(WRCRC)가 활성화되면, S545 단계에서, 메모리 제어기(530c)는 복원을 수행할 수 있다. 예를 들어, 메모리 제어기(530c)는 메모리 제어기(530c)와 주 메모리(540c) 사이의 통신 링크(communication link)에 대한 복원을 수행할 수 있다. 복원은 ZQ 교정(ZQ calibration), 쓰기 트레이닝, 읽기 트레이닝 등을 포함할 수 있다.When the write error signal WRCRC is activated, in step S545, the
이후에, S542 단계에서, 메모리 제어기(530c)는 제2 쓰기 요청을 다시 전송할 수 있다. 즉, 메모리 제어기(530c)는 횟수 제한 없이 쓰기 재시도(write retry)를 반복할 수 있다.Afterwards, in step S542, the
도 65는 주 메모리(540c)가 쓰기 동작을 수행하는 예를 보여주는 순서도이다. 도 40, 도 63 및 도 65를 참조하면, S551 단계에서, 매체 제어기(1230)는 제2 쓰기 요청을 수신할 수 있다. 예를 들어, 매체 제어기(1230)는 메모리 제어기(530c)로부터 제1 커맨드 및 어드레스(CA1)로서 제2 쓰기 요청을 수신할 수 있다.65 is a flowchart illustrating an example in which the
S552 단계에서, 매체 제어기(1230)는 제2 쓰기 요청이 불휘발성 메모리 장치(1220)에 대한 쓰기를 유발하는지 판단할 수 있다. 제2 쓰기 요청이 불휘발성 메모리 장치(1220)에 대한 쓰기를 유발하지 않으면, S553 단계에서, 매체 제어기(1230)는 제2 쓰기 요청에 따라 휘발성 메모리 장치(1210)에 대해 쓰기 동작을 수행할 수 있다.In step S552 , the
제2 쓰기 요청이 불휘발성 메모리 장치(1220)에 대한 쓰기를 유발하면, S554 단계가 수행된다. S554 단계에서, 매체 제어기(1230)는 쓰기 에러 신호(WRCRC)를 활성화할 수 있다. S555 단계에서, 매체 제어기(1230)는 불휘발성 메모리 장치(1220)에 대해 쓰기 동작을 수행할 수 있다.When the second write request causes writing to the
불휘발성 메모리 장치(1220)에 대한 쓰기 동작이 완료된 후에, 제2 쓰기 요청이 수신되면(S556 단계), S557 단계에서, 매체 제어기(1230)는 쓰기 에러 신호(WRCRC)를 비활성화(예를 들어, 하이 레벨로 조절)할 수 있다.After the write operation to the
도 53을 참조하여 설명된 바와 같이, 불휘발성 메모리 장치(1220)에 대한 쓰기 동작은 휘발성 메모리 장치(1210)에 대한 쓰기 동작보다 긴 시간을 필요로 한다. 메모리 제어기(530c)는 휘발성 메모리 장치(1210)의 쓰기 속도에 기반하여 주 메모리(540c)를 제어하도록 구성된다.As described with reference to FIG. 53 , a write operation to the
예를 들어, 메모리 제어기(530c)는 주 메모리(540c)로 제2 쓰기 요청(W2)을 전달하고, 주 메모리(540c)로부터 별도의 회신, 예를 들어 쓰기 에러 신호(WRCRC)의 활성화가 없으면 쓰기 동작이 완료된 것으로 판단할 수 있다.For example, the
불휘발성 메모리 장치(1220)에 대한 쓰기 동작이 완료되지 않은 상태에서 메모리 제어기(530c)가 쓰기 완료를 판단하면, 쓰기 실패가 발생할 수 있다. 이러한 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 주 메모리(540c)는 불휘발성 메모리 장치(1220)에 대한 쓰기 동작이 완료될 때까지 쓰기 에러 신호(WRCRC)를 활성 상태(예를 들어, 로우 레벨)로 유지할 수 있다.If the
도 66은 도 65의 동작 방법에 따라 쓰기 동작이 수행되는 제1 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(1220)와 연관되지 않으며, 휘발성 메모리 장치(1210)에서 쓰기 동작이 수행되는 예가 도 66에 도시된다.66 shows a first example in which a write operation is performed according to the operation method of FIG. 65 . For example, an example in which the first command and address CA1 are not associated with the
도 40, 도 63, 도 65 및 도 66을 참조하면, 프로세서(510)는 제1 쓰기 요청(W1)을 생성할 수 있다. S561 단계에서, 프로세서(510)는 제1 쓰기 요청(W1)을 제어기(530c)로 전달할 수 있다. 메모리 제어기(530c)는 제1 쓰기 요청(W1)에 따라 제2 쓰기 요청(W2)을 생성할 수 있다.Referring to FIGS. 40, 63, 65, and 66, the
S562 단계에서, 메모리 제어기(530c)는 제2 쓰기 요청(W2)을 매체 제어기(1230)로 전달할 수 있다. 제2 쓰기 요청(W2)은 제1 커맨드 및 어드레스(CA1)로서 매체 제어기(1230)로 전달될 수 있다.In step S562, the
매체 제어기(1230)는 제2 쓰기 요청(W2)에 따라 제3 쓰기 요청(W3)을 생성할 수 있다. S563 단계에서, 매체 제어기(1230)는 제3 쓰기 요청(W3)을 휘발성 메모리 장치(1210)로 전달할 수 있다. 제3 쓰기 요청(W3)은 제2 커맨드 및 어드레스(CA2)로서 휘발성 메모리 장치(1210)로 전달될 수 있다.The
예를 들어, 매체 제어기(1230)는 제2 쓰기 요청(W2)을 가공하지 않고 제3 쓰기 요청(W3)으로서 휘발성 메모리 장치(1210)로 전달할 수 있다. 다른 예로서, 매체 제어기(1230)는 제2 쓰기 요청(W2)을 휘발성 메모리 장치(1210)에 적합한 형태로 가공하고, 가공된 결과를 제3 쓰기 요청(W3)으로서 휘발성 메모리 장치(1210)로 전달할 수 있다.For example, the
제3 쓰기 요청(W3)에 응답하여, 휘발성 메모리 장치(1210)는 쓰기 동작(WR)을 수행할 수 있다. 예시적으로, 도 52를 참조하여 설명된 바와 같이, 메모리 제어기(530c)는 매체 제어기(1230)의 제어를 거치지 않고 또는 매체 제어기(1230)의 버퍼링 없이, 제1 내지 제8 데이터 버퍼들(1241~1248) 및 매체 제어기(1230)를 통해 휘발성 메모리 장치(1210)에 데이터를 직접 기입할 수 있다.In response to the third write request W3, the
쓰기 데이터에 에러가 없으면, 매체 제어기(1230)는 쓰기 에러 신호(WRCRC)를 하이 레벨의 비활성 상태로 유지할 수 있다. 쓰기 데이터에 에러가 있으면, 매체 제어기(1230)는 쓰기 에러 신호(WRCRC)를 로우 레벨의 활성 상태로 제어할 수 있다. 쓰기 에러 신호(WRCRC)의 활성화에 따라, 메모리 제어기(530c)는 제2 쓰기 요청(W2)을 재전송할 수 있다.If there is no error in the write data, the
예시적으로, 쓰기 데이터에 에러가 존재하는지 체크하는 것은 매체 제어기(1230) 또는 휘발성 메모리 장치(1210)에 의해 수행될 수 있다. 매체 제어기(1230) 또는 휘발성 메모리 장치(1210)는 쓰기 데이터에 에러가 존재할 때에 쓰기 에러 신호(WRCRC)를 로우 레벨로 활성화할 수 있다.Illustratively, checking whether there is an error in the write data may be performed by the
예를 들어, 휘발성 메모리 장치(1210)가 출력하는 쓰기 에러 신호(WRCRC)는 제2 제어 신호(CTRL2)에 포함되어 매체 제어기(1230)로 전달될 수 있다. 매체 제어기(1230)는 휘발성 메모리 장치(1210)로부터 전달된 쓰기 에러 신호(WRCRC)를 메모리 제어기(530c)로 전달할 수 있다.For example, the write error signal WCRRC output from the
도 67은 도 65의 동작 방법에 따라 쓰기 동작이 수행되는 제2 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(1220)에 대한 쓰기 동작을 유발하는 예가 도 67에 도시된다.67 shows a second example in which a write operation is performed according to the operation method of FIG. 65 . For example, an example in which the first command and address CA1 triggers a write operation on the
도 40, 도 63, 도 65 및 도 67을 참조하면, 프로세서(510)는 제1 쓰기 요청(W1)을 생성할 수 있다. S571 단계에서, 프로세서(510)는 제1 쓰기 요청(W1)을 제어기(530c)로 전달할 수 있다. 메모리 제어기(530c)는 제1 쓰기 요청(W1)에 따라 제2 쓰기 요청(W2)을 생성할 수 있다.Referring to FIGS. 40, 63, 65, and 67, the
S572 단계에서, 메모리 제어기(530c)는 제2 쓰기 요청(W2)을 매체 제어기(1230)로 전달할 수 있다. 제2 쓰기 요청(W2)은 제1 커맨드 및 어드레스(CA1)로서 매체 제어기(1230)로 전달될 수 있다. 제2 쓰기 요청(W2)은 불휘발성 메모리 장치(1220)에 대한 쓰기 동작을 유발한다. 따라서, 제2 쓰기 요청(W2)이 수신됨에 따라, 매체 제어기(1230)는 쓰기 에러 신호(WRCRC)를 로우 레벨로 활성화할 수 있다.In step S572, the
매체 제어기(1230)는 제2 쓰기 요청(W2)에 따라 제3 쓰기 요청(W3)을 생성할 수 있다. S573 단계에서, 매체 제어기(1230)는 제3 쓰기 요청(W3)을 불휘발성 메모리 장치(1220)로 전달할 수 있다. 제3 쓰기 요청(W3)은 제3 커맨드 및 어드레스(CA3)로서 불휘발성 메모리 장치(1220)로 전달될 수 있다.The
예를 들어, 매체 제어기(1230)는 제2 쓰기 요청(W2)을 가공하지 않고 제3 쓰기 요청(W3)으로서 불휘발성 메모리 장치(1220)로 전달할 수 있다. 다른 예로서, 매체 제어기(1230)는 제2 쓰기 요청(W2)을 불휘발성 메모리 장치(1220)에 적합한 형태로 가공하고, 가공된 결과를 제3 쓰기 요청(W3)으로서 불휘발성 메모리 장치(1220)로 전달할 수 있다.For example, the
제3 쓰기 요청(W3)에 응답하여, 불휘발성 메모리 장치(1220)는 쓰기 동작(WR)을 수행할 수 있다. 쓰기 에러 신호(WRCRC)가 활성화됨에 따라, S574 단계에서, 메모리 제어기(530c)는 복원(RE)을 수행할 수 있다. 복원이 수행된 후에, S575 단계에서, 메모리 제어기(530c)는 제2 쓰기 요청(S565)을 다시 전송함으로써 쓰기 재시도를 수행할 수 있다.In response to the third write request W3, the
이후에, 불휘발성 메모리 장치(1220)에서 쓰기 동작(WR)이 수행되는 동안, 쓰기 에러 신호(WRCRC)의 활성화에 따라 S576 단계 내지 S578 단계에서 메모리 제어기(530c)는 복원 및 쓰기 재시도를 반복할 수 있다.Thereafter, while the write operation WR is being performed in the
S579 단계에서, 불휘발성 메모리 장치(1220)는 쓰기 동작(WR)이 완료 되었음을 매체 제어기(1230)에 알릴 수 있다. 예를 들어, 불휘발성 메모리 장치(1220)는 레디/비지(ready/busy) 신호(R/nB)가 레디(ready)를 가리키도록 제어함으로써, 쓰기 동작(WR)이 완료되었음을 매체 제어기(1230)에 알릴 수 있다.In step S579, the
S580 단계에서, 메모리 제어기(530c)는 제2 쓰기 요청(W2)을 매체 제어기(1230)로 전송함으로써 쓰기 재시도를 수행할 수 있다. S580 단계에서 제2 쓰기 요청(W2)이 수신됨에 따라, 매체 제어기(1230)는 쓰기 에러 신호(WRCRC)를 하이 레벨로 비활성화할 수 있다. 쓰기 에러 신호(WRCRC)가 비활성화됨에 따라, 메모리 제어기(530c)는 쓰기 동작(WR)이 완료되었음을 식별할 수 있다.In step S580, the
상술된 바와 같이, 불휘발성 메모리 장치(1220)에 대해 쓰기 동작(WR)이 수행될 때, 매체 제어기(1230)는 에러가 발생하지 않았음에도 쓰기 에러 신호(WRCRC)를 활성화할 수 있다. 쓰기 에러 신호(WRCRC)를 활성화함에 따라, 메모리 제어기(530c)는 횟수 제한 없이 쓰기 동작을 재전송할 수 있다. 따라서, 불휘발성 메모리 장치(1220)에 대한 쓰기 동작(WR)이 완료될 때까지, 메모리 제어기(530c)가 홀드(hold) 되며, 쓰기 에러가 방지된다.As described above, when a write operation WR is performed on the
도 68은 도 66의 동작 방법에 따라 쓰기 동작이 수행되는 제2 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(1220)와 연관되며, 휘발성 메모리 장치(1210)가 불휘발성 메모리 장치(1220)의 캐시 메모리로 사용되는 예가 도 68에 도시된다.68 shows a second example in which a write operation is performed according to the operation method of FIG. 66 . For example, an example in which the first command and address CA1 are associated with the
도 40, 도 63, 도 66 및 도 68을 참조하면, 프로세서(510)는 제1 쓰기 요청(W1)을 생성할 수 있다. S591 단계에서, 프로세서(510)는 제1 쓰기 요청(W1)을 제어기(530c)로 전달할 수 있다. 메모리 제어기(530c)는 제1 쓰기 요청(W1)에 따라 제2 쓰기 요청(W2)을 생성할 수 있다.Referring to FIGS. 40, 63, 66, and 68, the
S592 단계에서, 메모리 제어기(530c)는 제2 쓰기 요청(W2)을 매체 제어기(1230)로 전달할 수 있다. 제2 쓰기 요청(W2)은 제1 커맨드 및 어드레스(CA1)로서 매체 제어기(1230)로 전달될 수 있다. 매체 제어기(1230)는 제1 커맨드 및 어드레스(CA1)와 연관된 저장 공간이 휘발성 메모리 장치(1210)에 사상되어 있는지 판단할 수 있다.In step S592, the
예를 들어, 제1 커맨드 및 어드레스(CA1)와 연관된 저장 공간은 휘발성 메모리 장치(1210)에 사상되어 있지 않을 수 있다. 또한, 휘발성 메모리 장치(1210)의 자유 저장 공간이 제1 커맨드 및 어드레스(CA1)와 연관된 저장 공간을 제공하기에 부족하여, 불휘발성 메모리 장치(1220)에 대한 쓰기 동작을 유발할 수 있다.For example, the storage space associated with the first command and address CA1 may not be mapped to the
매체 제어기(1230)는 휘발성 메모리 장치(1210)에 사상된 저장 공간들 중 특정한 저장 공간을 선택하고, 선택된 저장 공간을 제거할 수 있다. 예를 들어, 선택된 저장 공간은 오염된(dirty) 저장 공간일 수 있다. 매체 제어기(1230)는 선택된 저장 공간을 불휘발성 메모리 장치(1220)로 반환함으로써, 불휘발성 메모리 장치(1220)에 대한 쓰기 동작을 유발할 수 있다.The
S593 단계에서, 매체 제어기(1230)는 선택된 저장 공간에 대한 읽기 요청(R)을 휘발성 메모리 장치(1210)로 전송할 수 있다. 읽기 요청(R)은 제2 커맨드 및 어드레스(CA2) 또는 제2 제어 신호(CTRL2)로서 휘발성 메모리 장치(1210)로 전달될 수 있다.In step S593, the
예를 들어, 읽기 요청(R)은 제2 커맨드 및 어드레스(CA2)로서 휘발성 메모리 장치(1210)로 전달될 수 있다. 다른 예로서, 읽기 요청(R)은 제2 제어 신호(CTRL2)로서 휘발성 메모리 장치(1210)로 전달될 수 있다. 예를 들어, 매체 제어기(1230)는 특정한 제어 신호, 예를 들어 SAVEn을 활성화할 수 있다.For example, the read request R may be transferred to the
특정한 제어 신호가 활성화되면, 휘발성 메모리 장치(1210)는 저장된 데이터, 예를 들어 내부 스케줄에 의해 지정된 위치(예를 들어, 뱅크)의 데이터 또는 모든 데이터를 출력할 수 있다. 매체 제어기(1230)는 휘발성 메모리 장치(1210)로부터 전달되는 데이터를 저장할 수 있다.When a specific control signal is activated, the
휘발성 메모리 장치(1210)는 읽기 요청(R)에 따라 읽기 동작(RD)을 수행할 수 있다. 휘발성 메모리 장치(1210)에서 읽혀진 데이터는 S594 단계에서 매체 제어기(1230)로 전달될 수 있다. 휘발성 메모리 장치(1210)로부터 선택된 저장 공간의 데이터가 읽혀짐에 따라, S594 단계에서, 매체 제어기(1230)는 불휘발성 메모리 장치(1220)로 제3 쓰기 요청(W3)을 전송할 수 있다. 제3 쓰기 요청(W3)은 제3 커맨드 및 어드레스(CA3) 또는 제3 제어 신호(CTRL3)로서 불휘발성 메모리 장치(1220)로 전달될 수 있다.The
제3 쓰기 요청(W3)에 따라, 불휘발성 메모리 장치(1220)는 쓰기 동작(WR)을 수행할 수 있다. 불휘발성 메모리 장치(1220)가 쓰기 동작을 수행하는 동안, 쓰기 에러 신호(WRCRC)가 활성화되어 있다. 따라서, 불휘발성 메모리 장치(1220)가 쓰기 동작을 수행하는 동안, 메모리 제어기(530c)는 S596 단계 내지 S600 단계에서 복원(RE) 및 제2 쓰기 요청(W2)을 전송하는 쓰기 재시도를 반복할 수 있다.In response to the third write request W3 , the
S601 단계에서, 불휘발성 메모리 장치(1220)는 쓰기 동작(WR)이 완료 되었음을 매체 제어기(1230)에 알릴 수 있다. 쓰기 동작(WR)이 완료된 후에, S602 단계에서, 메모리 제어기(530c)는 제2 쓰기 요청(W2)을 전송하여 쓰기 재시도를 수행할 수 있다.In step S601, the
불휘발성 메모리 장치(1220)의 쓰기 동작이 완료된 후에 제2 쓰기 요청(W2)이 수신되면(S602 단계), 매체 제어기(1230)는 쓰기 에러 신호(WRCRC)를 비활성화할 수 있다. 매체 제어기(1230)는 S602 단계의 제2 쓰기 요청(W2)에 따라, 휘발성 메모리 장치(1210)에 제1 커맨드 및 어드레스(CA1)와 연관된 저장 공간을 사상할 수 있다.When the second write request W2 is received after the write operation of the
S603 단계에서, 매체 제어기(1230)는 휘발성 메모리 장치(1210)에 제3 쓰기 요청(W3)을 전송할 수 있다. 제3 쓰기 요청(W3)은 제2 커맨드 및 어드레스(CA2) 또는 제2 제어 신호(CTRL2)로서 전달될 수 있다. 제3 쓰기 요청(W3)에 따라, 휘발성 메모리 장치(1210)는 쓰기 동작(WR)을 수행할 수 있다.In step S603 , the
도 69는 도 68의 읽기 동작의 변형 예를 보여준다. 도 40, 도 63, 도 66 및 도 69를 참조하면, S611 단계 내지 S621 단계는 도 68의 S591 단계 내지 S601 단계와 동일하게 수행된다. 따라서, 중복되는 설명은 생략된다.69 shows a modified example of the read operation of FIG. 68 . Referring to FIGS. 40 , 63 , 66 and 69 , steps S611 to S621 are performed identically to steps S591 to S601 of FIG. 68 . Therefore, redundant descriptions are omitted.
불휘발성 메모리 장치(1220)에서 쓰기 동작(WR)이 완료된 후에, S622 단계에서, 메모리 제어기(530c)는 제2 쓰기 요청(W2)을 매체 제어기(1230)로 전달할 수 있다. 매체 제어기(1230)는 제2 쓰기 요청(W2)을 제3 쓰기 요청(W3)으로서 휘발성 메모리 장치(1210)로 전달할 수 있다.After the write operation WR is completed in the
메모리 제어기(530c)로부터 전달되는 데이터는 매체 제어기(1230)에 의해 제어되거나 버퍼링되지 않고, 매체 제어기(1230) 및 제1 내지 제8 데이터 버퍼들(1241~1248)을 통해 휘발성 메모리 장치(1210)로 직접 전달될 수 있다. LRDIMM은 동적 랜덤 액세스 메모리(DRAM)에 기반하므로, 휘발성 메모리 장치(1210)는 메모리 제어기(530a)와 직접 통신할 수 있다.Data transferred from the
도 70은 도 68의 읽기 동작의 다른 변형 예를 보여준다. 도 40, 도 63, 도 66 및 도 70을 참조하면, 매체 제어기(1230)는 읽기 동작(RD)이 완료됨에 따라 제3 쓰기 요청(W3)을 불휘발성 메모리 장치(1220)로 전송하지 않고 대기할 수 있다. 읽기 동작(RD)이 완료된 후에, S597 단계에서 메모리 제어기(530c)로부터 제2 쓰기 요청(W2)이 전달될 수 있다. S597 단계의 제2 쓰기 요청(W2)에 응답하여, 매체 제어기(1230)는 불휘발성 메모리 장치(1220)로 제3 쓰기 요청(W3)을 전송할 수 있다(S604 단계).70 shows another modified example of the read operation of FIG. 68 . 40, 63, 66, and 70, the
예시적으로, 도 60 및 도 61에서 매체 제어기(1230)는 SPD 장치(541) 및 레지스터 갱신기(542)를 포함하는 것으로 설명되었다. 또한, 도 63에서 매체 제어기(1230)는 쓰기 에러 제어기(543)를 포함하는 것으로 설명되었다. 본 발명의 실시 예에 따른 매체 제어기(1230)는 SPD 장치(541), 레지스터 갱신기(542), 그리고 쓰기 에러 제어기(543)를 모두 포함할 수 있다.Illustratively, in FIGS. 60 and 61 , the
레지스터 갱신기(542)는 횟수 제한 없이 읽기 재시도를 수행하도록, 메모리 제어기(530a, 530b 또는 530c)의 레지스터(532)를 갱신할 수 있다. 또한, 레지스터 갱신기(542)는 횟수 제한 없이 쓰기 재시도를 수행하도록, 메모리 제어기(530a, 530b 또는 530c)의 레지스터(532)를 갱신할 수 있다.The
상술된 실시 예들에서, "블록"의 용어를 사용하여 본 발명의 실시 예들에 따른 구성 요소들이 참조되었다. "블록"은 IC (Integrated Circuit), ASIC (Application Specific IC), FPGA (Field Programmable Gate Array), CPLD (Complex Programmable Logic Device) 등과 같은 다양한 하드웨어 장치들, 하드웨어 장치들에서 구동되는 펌웨어, 응용과 같은 소프트웨어, 또는 하드웨어 장치와 소프트웨어가 조합된 형태로 구현될 수 있다. 또한, "블록"은 IC 내의 반도체 소자들로 구성되는 회로들 또는 IP (Intellectual Property)를 포함할 수 있다.In the above-described embodiments, components according to embodiments of the present invention are referred to using the term “block”. "Block" refers to various hardware devices such as IC (Integrated Circuit), ASIC (Application Specific IC), FPGA (Field Programmable Gate Array), CPLD (Complex Programmable Logic Device), firmware running on hardware devices, applications such as It may be implemented in software or a combination of a hardware device and software. In addition, a “block” may include circuits or IP (Intellectual Property) composed of semiconductor elements in an IC.
상술된 실시 예들에서, 다양한 실시 예들 및 다양한 도면들을 참조하여 본 발명의 기술적 사상이 설명되었다. 그러나 분리하여 설명된 실시 예들 및 도면들은 본 발명의 기술적 사상을 이 분야에 숙련된 자들에게 용이하게 이해시키기 위한 것으로, 서로 분리되는 것으로 의도되지 않는다.In the above-described embodiments, the technical idea of the present invention has been described with reference to various embodiments and various drawings. However, the separately described embodiments and drawings are intended to easily understand the technical spirit of the present invention to those skilled in the art, and are not intended to be separated from each other.
본 발명의 기술적 사상에 따른 상술된 실시 예들 및 상술된 도면들은 서로 조합될 수 있다. 도 1 내지 도 70 중 적어도 하나의 도면 또는 상술된 실시 예들 중 적어도 하나의 실시 예에 기재된 기술적 특징과 도 1 내지 도 70 중 적어도 다른 하나의 도면 또는 상술된 실시 예들 중 적어도 다른 하나의 실시 예에 기재된 기술적 특징이 조합되어 본 발명의 기술적 사상에 따른 실시 예를 구성할 수 있다.The above-described embodiments and the above-described drawings according to the technical spirit of the present invention may be combined with each other. Technical features described in at least one drawing of FIGS. 1 to 70 or at least one embodiment of the above-described embodiments and at least another drawing of FIGS. 1 to 70 or at least another embodiment of the above-described embodiments The described technical features may be combined to form an embodiment according to the technical spirit of the present invention.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.The foregoing are specific embodiments for carrying out the present invention. The present invention will include not only the above-described embodiments, but also embodiments that can be simply or easily changed in design. In addition, the present invention will also include techniques that can be easily modified and practiced using the embodiments. Therefore, the scope of the present invention should not be limited to the above-described embodiments and should not be defined by the following claims as well as those equivalent to the claims of this invention.
100a: 메모리 시스템
110: 중앙 제어 블록
120: 제1 메모리 모듈
130: 제2 메모리 모듈
140: 제3 메모리 모듈
150: 제4 메모리 모듈
160: 루트 컴플렉스
170: 스토리지 장치
180: 전력 관리 블록
190: 주변 장치들100a: memory system
110: central control block
120: first memory module
130: second memory module
140: third memory module
150: fourth memory module
160: root complex
170: storage device
180: power management block
190: peripherals
Claims (10)
불휘발성 메모리;
버퍼 메모리; 그리고
제어 신호의 활성화에 응답하여 상기 버퍼 메모리에 대해 읽기 동작을 수행하도록 구성되는 제어기를 포함하고,
상기 버퍼 메모리에서 수행되는 상기 읽기 동작의 결과에 따라, 상기 제어기는 상기 랜덤 액세스 메모리에 저장된 제1 데이터를 상기 불휘발성 메모리에 저장하는 플러시 동작을 수행하도록 더 구성되는 반도체 메모리 모듈.random access memory;
non-volatile memory;
buffer memory; and
a controller configured to perform a read operation on the buffer memory in response to activation of a control signal;
Wherein the controller is further configured to perform a flush operation of storing the first data stored in the random access memory in the nonvolatile memory according to a result of the read operation performed in the buffer memory.
외부의 호스트 장치의 요청에 따라 상기 랜덤 액세스 메모리에 상기 제1 데이터를 기입할 때, 상기 제어기는 상기 제1 데이터의 정보를 상기 버퍼 메모리에 저장하도록 더 구성되는 반도체 메모리 모듈.According to claim 1,
wherein the controller is further configured to store information of the first data in the buffer memory when the first data is written in the random access memory according to a request of an external host device.
상기 읽기 동작 시에 상기 제어기는 상기 버퍼 메모리로부터 상기 정보를 읽도록 더 구성되고, 그리고
상기 제1 데이터는 상기 랜덤 액세스 메모리에 저장된 데이터 중 상기 정보에 따라 선택되는 데이터인 반도체 메모리 모듈.According to claim 2,
In the read operation, the controller is further configured to read the information from the buffer memory, and
The first data is data selected according to the information among data stored in the random access memory.
상기 제1 데이터가 상기 불휘발성 메모리에 저장된 후에, 상기 제어기는 상기 정보를 상기 버퍼 메모리로부터 제거하도록 더 구성되는 반도체 메모리 모듈.According to claim 3,
and the controller is further configured to remove the information from the buffer memory after the first data is stored in the non-volatile memory.
상기 랜덤 액세스 메모리에 저장된 데이터 중 외부의 호스트 장치에 의해 기입되지 않은 제2 데이터는 상기 플러시 동작 동안에 상기 불휘발성 메모리에 저장되지 않는 반도체 메모리 모듈.According to claim 1,
Among the data stored in the random access memory, second data not written by an external host device is not stored in the nonvolatile memory during the flush operation.
상기 랜덤 액세스 메모리는 상기 불휘발성 메모리의 캐시 메모리로 사용되는 반도체 메모리 모듈.According to claim 1,
The random access memory is used as a cache memory of the nonvolatile memory.
상기 플러시 동작은 상기 랜덤 액세스 메모리에 저장된 상기 제1 데이터를 읽어 상기 버퍼 메모리에 저장하는 제1 동작을 포함하는 반도체 메모리 모듈.According to claim 1,
The flush operation includes a first operation of reading the first data stored in the random access memory and storing it in the buffer memory.
상기 플러시 동작은 상기 버퍼 메모리에 저장된 제2 데이터를 상기 불휘발성 메모리 장치에 기입하는 제2 동작들 더 포함하는 반도체 메모리 모듈.According to claim 7,
The flush operation may further include second operations of writing the second data stored in the buffer memory to the nonvolatile memory device.
불휘발성 메모리;
버퍼 메모리; 그리고
제어 신호의 활성화에 응답하여 상기 버퍼 메모리 및 상기 랜덤 액세스 메모리에 대해 읽기 동작을 수행하고, 상기 버퍼 메모리로부터 읽은 제1 데이터를 상기 불휘발성 메모리에 저장하고, 그리고 상기 랜덤 액세스 메모리로부터 읽은 제2 데이터를 상기 버퍼 메모리에 저장하는 플러시 동작을 수행하도록 구성되는 제어기를 포함하는 반도체 메모리 모듈.random access memory;
non-volatile memory;
buffer memory; and
A read operation is performed on the buffer memory and the random access memory in response to activation of a control signal, first data read from the buffer memory is stored in the nonvolatile memory, and second data read from the random access memory is stored. A semiconductor memory module comprising a controller configured to perform a flush operation of storing ? in the buffer memory.
상기 반도체 메모리 모듈을 액세스할 때에 액세스 오류가 검출되면, 상기 제어기에 전달되는 제어 신호를 활성화하도록 구성되는 중앙 제어 블록을 포함하고,
상기 제어 신호가 활성화되는 것에 응답하여, 상기 제어기는 상기 랜덤 액세스 메모리에 저장된 데이터 중 제1 데이터를 읽고, 상기 랜덤 액세스 메모리로부터 읽은 상기 제1 데이터를 상기 버퍼 메모리에 제3 데이터로서 저장하고, 상기 버퍼 메모리로부터 상기 제3 데이터를 읽고, 그리고 상기 버퍼 메모리로부터 읽은 상기 제3 데이터를 제2 데이터로서 상기 불휘발성 메모리 장치에 저장하도록 더 구성되는 메모리 시스템.a semiconductor memory module including a random access memory, a nonvolatile memory, a buffer memory, and a controller; and
a central control block configured to activate a control signal transmitted to the controller when an access error is detected when accessing the semiconductor memory module;
In response to the activation of the control signal, the controller reads first data among data stored in the random access memory, stores the first data read from the random access memory as third data in the buffer memory, and The memory system further configured to read the third data from the buffer memory and store the third data read from the buffer memory as second data in the nonvolatile memory device.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180043848A KR102538253B1 (en) | 2018-04-16 | 2018-04-16 | Semiconductor memory module and memory system including semiconductor memory module |
US16/218,720 US10990463B2 (en) | 2018-03-27 | 2018-12-13 | Semiconductor memory module and memory system including the same |
CN201910166951.9A CN110389721A (en) | 2018-04-16 | 2019-03-06 | Semiconductor storage module and storage system including it |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180043848A KR102538253B1 (en) | 2018-04-16 | 2018-04-16 | Semiconductor memory module and memory system including semiconductor memory module |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190120536A KR20190120536A (en) | 2019-10-24 |
KR102538253B1 true KR102538253B1 (en) | 2023-06-01 |
Family
ID=68284903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180043848A KR102538253B1 (en) | 2018-03-27 | 2018-04-16 | Semiconductor memory module and memory system including semiconductor memory module |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102538253B1 (en) |
CN (1) | CN110389721A (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220157155A (en) | 2021-05-20 | 2022-11-29 | 에스케이하이닉스 주식회사 | Storage device and operating method thereof |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170153826A1 (en) | 2015-12-01 | 2017-06-01 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and operation method thereof |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085248A (en) * | 1997-02-11 | 2000-07-04 | Xaqtu Corporation | Media access control transmitter and parallel network management system |
US6336174B1 (en) * | 1999-08-09 | 2002-01-01 | Maxtor Corporation | Hardware assisted memory backup system and method |
US9785563B1 (en) * | 2015-08-13 | 2017-10-10 | Western Digital Technologies, Inc. | Read command processing for data storage system based on previous writes |
KR102475547B1 (en) * | 2015-12-01 | 2022-12-12 | 삼성전자주식회사 | Nonvolatile memory device and operation method thereof |
KR102491651B1 (en) * | 2015-12-14 | 2023-01-26 | 삼성전자주식회사 | Nonvolatile memory module, computing system having the same, and operating method thereof |
US10810144B2 (en) * | 2016-06-08 | 2020-10-20 | Samsung Electronics Co., Ltd. | System and method for operating a DRR-compatible asynchronous memory module |
-
2018
- 2018-04-16 KR KR1020180043848A patent/KR102538253B1/en active IP Right Grant
-
2019
- 2019-03-06 CN CN201910166951.9A patent/CN110389721A/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170153826A1 (en) | 2015-12-01 | 2017-06-01 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and operation method thereof |
Also Published As
Publication number | Publication date |
---|---|
CN110389721A (en) | 2019-10-29 |
KR20190120536A (en) | 2019-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102505913B1 (en) | Memory module and memory system including memory module) | |
US5640530A (en) | Use of configuration registers to control access to multiple caches and nonvolatile stores | |
US20200151104A1 (en) | System having persistent memory | |
EP2348413B1 (en) | Controlling memory redundancy in a system | |
US10990463B2 (en) | Semiconductor memory module and memory system including the same | |
CN105940386B (en) | Method, system, and medium for moving data between memories | |
US7596657B2 (en) | Increased storage capacity for solid state disks using data compression | |
US7574537B2 (en) | Method, apparatus, and computer program product for migrating data pages by disabling selected DMA operations in a physical I/O adapter | |
US10049004B2 (en) | Electronic system with memory data protection mechanism and method of operation thereof | |
US6604171B1 (en) | Managing a cache memory | |
US20040073829A1 (en) | Fail-over of multiple memory blocks in multiple memory modules in computer system | |
US6591335B1 (en) | Fault tolerant dual cache system | |
US20120023302A1 (en) | Concurrent Atomic Operations with Page Migration in PCIe | |
CN104520932A (en) | Flash memory controller | |
TW201502781A (en) | Replaying memory transactions while resolving memory access faults | |
US20050185496A1 (en) | Intelligent solid state disk | |
CN105786400A (en) | Heterogeneous hybrid memory module, system and storage method | |
US8407389B2 (en) | Atomic operations with page migration in PCIe | |
KR102538679B1 (en) | Memory system and operating method of memory system | |
CN100373373C (en) | Method and system for dynamic node partitioning utilizing sleep state | |
JP2005267111A (en) | Storage control system and method for controlling storage control system | |
US20230251931A1 (en) | System and device for data recovery for ephemeral storage | |
US10642727B1 (en) | Managing migration events performed by a memory controller | |
KR102538253B1 (en) | Semiconductor memory module and memory system including semiconductor memory module | |
JP2014010540A (en) | Data migration control device, method and system in virtual server environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |