KR102549584B1 - 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 - Google Patents
메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 Download PDFInfo
- Publication number
- KR102549584B1 KR102549584B1 KR1020180035270A KR20180035270A KR102549584B1 KR 102549584 B1 KR102549584 B1 KR 102549584B1 KR 1020180035270 A KR1020180035270 A KR 1020180035270A KR 20180035270 A KR20180035270 A KR 20180035270A KR 102549584 B1 KR102549584 B1 KR 102549584B1
- Authority
- KR
- South Korea
- Prior art keywords
- controller
- read
- memory device
- nonvolatile memory
- write
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/0757—Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- 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
- G06F2003/0697—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/835—Timestamp
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1004—Compatibility, e.g. with legacy hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
- G06F2212/2515—Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 메모리 시스템에 관한 것이다. 본 발명의 메모리 시스템은 불휘발성 메모리 모듈, 그리고 불휘발성 메모리 모듈을 제어하도록 구성되는 제1 제어기를 포함한다. 불휘발성 메모리 모듈은 휘발성 메모리 장치, 불휘발성 메모리 장치, 그리고 휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하도록 구성되는 제2 제어기를 포함한다. 읽기 동작 시에, 제1 제어기는 제2 제어기로 읽기 요청을 전송하도록 구성된다. 읽기 요청에 따라 불휘발성 메모리 모듈로부터 정상 데이터가 수신되지 않으면, 제1 제어기는 제2 제어기로 읽기 요청을 횟수 제한 없이 재전송하도록 구성된다.
Description
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법에 관한 것이다.
반도체 메모리는 반도체 소자들을 이용하여 데이터를 저장하는 데에 사용된다. 반도체 메모리는 동적 랜덤 액세스 메모리 또는 정정 랜덤 액세스 메모리와 같은 휘발성 메모리, 그리고 플래시 메모리, 상 변화 메모리, 강유전체 메모리, 자기 메모리, 저항성 메모리 등과 같은 불휘발성 메모리를 포함한다.
통상적으로, 휘발성 메모리는 고속의 랜덤 액세스를 지원하며, 개인용 컴퓨터, 서버 또는 워크스테이션과 같은 컴퓨팅 시스템의 주 메모리로 사용된다. 불휘발성 메모리는 큰 저장 용량을 지원하며, 컴퓨팅 시스템의 보조 스토리지로 사용된다.
근래에, 스토리지 클래스 메모리(SCM, Storage Class Memory)에 대한 연구 및 개발이 진행되고 있다. 스토리지 클래스 메모리는 불휘발성의 큰 저장 용량과 고속의 랜덤 액세스 모두를 지원하는 것을 목표로 개발되고 있다. 스토리지 클래스 메모리는 불휘발성 메모리를 이용하여 구현될 수 있다.
기존의 주 메모리와의 호환성을 위하여, 스토리지 클래스 메모리는 동적 랜덤 액세스 메모리와 동일한 메모리 모듈을 기반으로 연구 및 개발되고 있다. 그러나 주 메모리인 동적 랜덤 액세스 메모리(DRAM)의 동작 특성과 불휘발성 메모리의 동작 특성의 차이로 인해, 스토리지 클래스 메모리를 구현하는 데에 문제가 발생할 수 있다.
본 발명의 목적은 동작 특성의 차이를 극복하고 읽기 및 쓰기를 정상적으로 수행하는 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 메모리 시스템은 불휘발성 메모리 모듈, 그리고 불휘발성 메모리 모듈을 제어하도록 구성되는 제1 제어기를 포함한다. 불휘발성 메모리 모듈은 휘발성 메모리 장치, 불휘발성 메모리 장치, 그리고 휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하도록 구성되는 제2 제어기를 포함한다. 읽기 동작 시에, 제1 제어기는 제2 제어기로 읽기 요청을 전송하도록 구성된다. 읽기 요청에 따라 불휘발성 메모리 모듈로부터 정상 데이터가 수신되지 않으면, 제1 제어기는 제2 제어기로 읽기 요청을 횟수 제한 없이 재전송하도록 구성된다.
본 발명의 실시 예에 따른 메모리 모듈은 휘발성 메모리 장치, 불휘발성 메모리 장치, 그리고 휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하도록 구성되는 제어기를 포함한다. 쓰기 동작 시에, 제어기는 쓰기 요청에 응답하여 휘발성 메모리 장치 및 불휘발성 메모리 장치 중 하나에 대해 쓰기를 수행하도록 구성된다. 불휘발성 메모리 장치에 대해 쓰기를 수행하는 동안, 제어기는 쓰기 에러 신호를 활성화하여 출력하도록 구성된다.
제어기와 통신하도록 구성되는 본 발명의 실시 예에 따른 메모리 모듈의 동작 방법은 파워 온을 검출하는 단계, 그리고 파워 온이 검출되면, 시스템 관리 버스(SMBus, System Management Bus)를 통해 제어기의 레지스터의 값을 갱신하여 횟수 제한 없는 읽기 재시도를 허용하는 단계를 포함한다.
본 발명에 따르면, 메모리 모듈의 불휘발성 메모리 장치에 대해 읽기 또는 쓰기가 수행될 때, 읽기 재시도 또는 쓰기 재시도가 횟수 제한 없이 허용된다. 따라서, 동적 랜덤 액세스 메모리의 읽기 속도 또는 쓰기 속도보다 불휘발성 메모리 장치의 읽기 속도 또는 쓰기 속도가 느림으로 인해, 읽기 실패 또는 쓰기 실패가 발생하는 것을 방지하는 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 2는 본 발명의 실시 예에 따른 주 메모리를 보여주는 블록도이다.
도 3은 제1 제어기가 주 메모리에 대해 읽기 동작을 수행하는 예를 보여준다.
도 4는 도 3의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다.
도 5는 도 4의 읽기 동작의 변형 예를 보여준다.
도 6은 도 3의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다.
도 7은 본 발명의 실시 예에 따른 제1 제어기의 동작 방법을 보여주는 순서도이다.
도 8은 도 7의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다.
도 9는 도 7의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다.
도 10은 도 9의 읽기 동작의 변형 예를 보여준다.
도 11은 도 7의 동작 방법의 응용 예를 보여준다.
도 12는 제3 시간을 측정하면서 읽기 동작을 수행하는 예를 보여준다.
도 13은 본 발명의 다른 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 14는 SPD 장치 및 레지스터 갱신기를 포함하는 주 메모리의 예를 보여준다.
도 15는 주 메모리가 레지스터를 갱신하는 방법을 보여주는 순서도이다.
도 16은 본 발명의 또 다른 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 17은 제1 제어기가 쓰기 동작을 수행하는 예를 보여주는 순서도이다.
도 18은 주 메모리가 쓰기 동작을 수행하는 예를 보여주는 순서도이다.
도 19는 도 18의 동작 방법에 따라 쓰기 동작이 수행되는 제1 예를 보여준다.
도 2는 본 발명의 실시 예에 따른 주 메모리를 보여주는 블록도이다.
도 3은 제1 제어기가 주 메모리에 대해 읽기 동작을 수행하는 예를 보여준다.
도 4는 도 3의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다.
도 5는 도 4의 읽기 동작의 변형 예를 보여준다.
도 6은 도 3의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다.
도 7은 본 발명의 실시 예에 따른 제1 제어기의 동작 방법을 보여주는 순서도이다.
도 8은 도 7의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다.
도 9는 도 7의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다.
도 10은 도 9의 읽기 동작의 변형 예를 보여준다.
도 11은 도 7의 동작 방법의 응용 예를 보여준다.
도 12는 제3 시간을 측정하면서 읽기 동작을 수행하는 예를 보여준다.
도 13은 본 발명의 다른 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 14는 SPD 장치 및 레지스터 갱신기를 포함하는 주 메모리의 예를 보여준다.
도 15는 주 메모리가 레지스터를 갱신하는 방법을 보여주는 순서도이다.
도 16은 본 발명의 또 다른 예에 따른 컴퓨팅 장치를 보여주는 블록도이다.
도 17은 제1 제어기가 쓰기 동작을 수행하는 예를 보여주는 순서도이다.
도 18은 주 메모리가 쓰기 동작을 수행하는 예를 보여주는 순서도이다.
도 19는 도 18의 동작 방법에 따라 쓰기 동작이 수행되는 제1 예를 보여준다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 장치(100a)를 보여주는 블록도이다. 예를 들어, 컴퓨팅 장치(100a)는 응용 서버, 클라이언트 서버, 데이터 서버와 같은 서버를 포함할 수 있다. 다른 예로서, 컴퓨팅 장치(100a)는 개인용 컴퓨터 또는 워크 스테이션을 포함할 수 있다.
도 1을 참조하면, 컴퓨팅 장치(100a)는 프로세서(110), 제2 캐시 메모리(120), 제1 제어기(130a), 주 메모리(140a), 스토리지 인터페이스(150), 그리고 스토리지 장치(160)를 포함한다.
프로세서(110)는 컴퓨팅 장치(100a)의 구성 요소들 및 구성 요소들의 동작들을 제어할 수 있다. 프로세서(110)는 운영체제 및 응용들을 실행하고, 운영체제 또는 응용들을 이용하여 데이터를 처리할 수 있다. 프로세서(110)는 제1 캐시 메모리(111)를 포함할 수 있다. 제1 캐시 메모리(111)는 정적 랜덤 액세스 메모리(SRAM)와 같은 고속의 메모리를 포함할 수 있다.
제2 캐시 메모리(120)는 프로세서(110)와 통신할 수 있다. 제2 캐시 메모리(120)는 정적 랜덤 액세스 메모리(SRAM) 또는 동적 랜덤 액세스 메모리(DRAM)와 같은 고속의 랜덤 액세스 메모리를 포함할 수 있다.
제1 제어기(130a)는 프로세서(110)의 요청에 따라 주 메모리(140a)를 액세스할 수 있다. 예를 들어, 제1 제어기(130a)는 DIMM (Dual In-line Memory Module), RDIMM (Registered DIMM), LRDIMM (Load Reduced DIMM)과 같은 메모리 모듈의 표준들 중 하나에 기반할 수 있다. 예시적으로, 제1 제어기(130a)는 도 1에 도시된 바와 같이 프로세서(110)의 외부에 배치되거나 또는 프로세서(110)의 내부에 포함될 수 있다.
제1 제어기(130a)는 타임아웃 제어기(131) 및 레지스터(132)를 포함한다. 타임아웃 제어기(131)는 제1 제어기(130a)가 주 메모리(140a)를 액세스할 때에 시간을 측정할 수 있다. 레지스터(132)는 제1 제어기(130a)와 연관된 다양한 파라미터들을 저장할 수 있다.
예를 들어, 레지스터(132)는 제1 제어기(130a)가 주 메모리(140a)를 액세스할 때의 다양한 타임아웃 값들을 저장할 수 있다. 타임아웃 제어기(131)는 레지스터(132)에 저장된 타임아웃 값들에 기반하여, 제1 제어기(130a)가 주 메모리(140a)를 액세스할 때의 타임아웃을 제어할 수 있다.
주 메모리(140a)는 불휘발성 저장 능력 또는 대용량을 갖고, 그리고 동적 랜덤 액세스 메모리(DRAM)와 유사한 액세스 속도 및 랜덤 액세스 능력을 갖는 스토리지 클래스 메모리(SCM, Storage Class Memory)를 포함할 수 있다.
기존의 컴퓨팅 장치들과의 호환성을 지원하기 위하여, 주 메모리(140a)는 DIMM, RDIMM, LRDIMM과 같은 메모리 모듈의 표준들 중 하나에 기반하여 구현될 수 있다. 제1 제어기(130a) 및 주 메모리(140a)를 메모리 시스템을 형성할 수 있다.
스토리지 인터페이스(150)는 프로세서(110)로부터의 요청 또는 데이터를 스토리지 장치(160)로 전달할 수 있다. 스토리지 인터페이스(150)는 스토리지 장치(160)로부터 전달되는 데이터를 프로세서(110)로 전달할 수 있다. 스토리지 인터페이스(150)는 PCIe (Peripheral Component Interconnect express), NVMe (NonVolatile Memory express), SATA (Serial Advanced Technology Attachment) 등과 같은 다양한 표준들 중 하나에 기반할 수 있다.
스토리지 장치(160)는 스토리지 인터페이스(150)를 통해 전달되는 요청에 따라, 스토리지 인터페이스(150)를 통해 전달되는 데이터를 저장할 수 있다. 스토리지 장치(160)는 스토리지 인터페이스(150)를 통해 전달되는 요청에 따라, 저장된 데이터를 스토리지 인터페이스(150)를 통해 전달할 수 있다.
스토리지 장치(160)는 불휘발성 저장 매체 및 불휘발성 저장 매체를 제어하는 제어기를 포함하도록 구현될 수 있다. 스토리지 장치(160)는 하드 디스크 드라이브(HDD, Hard Disk Drive), 솔리드 스테이트 드라이브(SSD, Solid Stat Drive) 등을 포함할 수 있다.
프로세서(110)는 계층적으로 데이터를 처리할 수 있다. 예를 들어, 컴퓨팅 장치(100a)에서 사용되는 운영체제의 소스 데이터, 응용의 소스 데이터, 그리고 사용자 데이터는 스토리지 장치(160)에 저장될 수 있다. 사용자 데이터는 운영체제, 응용 또는 컴퓨팅 장치(100a)의 사용자에 의해 생성되는 데이터를 포함할 수 있다.
프로세서(110)가 필요로 하는 특정한 데이터(예를 들어, 소스 데이터 또는 사용자 데이터)가 스토리지 장치(160)에 저장되어 있을 때, 프로세서(110)는 특정한 데이터를 스토리지 장치(160)로부터 읽어 주 메모리(140a)에 저장할 수 있다. 프로세서(110)는 주 메모리(140a)에 저장된 특정한 데이터를 스토리지 장치(160)에 백업할 수 있다.
주 메모리(140a)의 저장 영역들 중 일부는 제2 캐시 메모리(120)에 사상될 수 있다. 제2 캐시 메모리(120)의 저장 영역들 중 일부는 제1 캐시 메모리(111)에 사상될 수 있다. 예시적으로, 컴퓨팅 장치(100a)에서 제1 및 제2 캐시 메모리들(111, 120) 중 적어도 하나는 생략될 수 있다.
도 2는 본 발명의 실시 예에 따른 주 메모리(140a)를 보여주는 블록도이다. 예시적으로, 주 메모리(140a)는 LRDIMM 표준에 기반한 메모리 모듈일 수 있다. 도 2를 참조하면, 주 메모리(140a)는 휘발성 메모리 장치(210), 불휘발성 메모리 장치(220), 제2 제어기(230), 그리고 제1 내지 제8 데이터 버퍼들(241~248)을 포함한다.
휘발성 메모리 장치(210)는 제1 내지 제4 휘발성 메모리들(211~214)을 포함한다. 제1 내지 제4 휘발성 메모리들(211~214)은 서로 분리된 패키지들로 형성될 수 있다. 제1 내지 제4 휘발성 메모리들(211~214)은 동적 랜덤 액세스 메모리들을 포함할 수 있다.
불휘발성 메모리 장치(220)는 제1 내지 제4 불휘발성 메모리들(221~224)을 포함할 수 있다. 제1 내지 제4 불휘발성 메모리들(221~224)은 서로 분리된 패키지들로 형성될 수 있다. 제1 내지 제4 불휘발성 메모리들(221~224)은 불휘발성 메모리 장치(220) 내에서 서로 다른 어드레스들에 의해 식별되는 저장 영역들일 수 있다.
불휘발성 메모리 장치(220)는 플래시 메모리 장치(Flash Memory Device), 상 변화 메모리 장치(Phase Change Memory Device), 강유전체 메모리 장치(Ferroelectric Memory Device), 저항성 메모리 장치(Resistive Memory Deice), 자기 메모리 장치(Magnetoregistive Memory Device)와 같은 다양한 불휘발성 메모리 장치들 중 적어도 하나를 포함할 수 있다.
제2 제어기(230)는 제1 제어기(130a)로부터 제1 커맨드 및 어드레스(CA1), 제1 클럭 신호(CK1), 그리고 제1 제어 신호(CTRL1)를 수신할 수 있다. 제2 제어기(230)는 제1 내지 제8 데이터 버퍼들(241~248)과 제2 데이터 신호들(DQ2)을 통신할 수 있다. 제2 제어기(230)는 제1 커맨드 및 어드레스(CA1), 제1 클럭 신호(CK1), 그리고 제1 제어 신호(CTRL1)에 따라, 휘발성 메모리 장치(210) 또는 불휘발성 메모리 장치(220)를 액세스할 수 있다.
제2 제어기(230)는 제2 커맨드 및 어드레스(CA2), 제2 클럭 신호(CK2), 그리고 제2 제어 신호(CTRL2)를 휘발성 메모리 장치(210)로 전송하고, 휘발성 메모리 장치(210)와 제3 데이터 신호들(DQ3)을 통신할 수 있다. 제2 제어기(230)는 제3 커맨드 및 어드레스(CA3), 제3 클럭 신호(CK3), 그리고 제3 제어 신호(CTRL3)를 불휘발성 메모리 장치(220)로 전송하고, 불휘발성 메모리 장치(220)와 제4 데이터 신호들(DQ4)을 통신할 수 있다.
예시적으로, 제1 커맨드 및 어드레스(CA1), 제2 커맨드 및 어드레스(CA2), 그리고 제3 커맨드 및 어드레스(CA3)는 서로 다른 포맷들을 가질 수 있다. 다른 예로서, 제1 커맨드 및 어드레스(CA1), 제2 커맨드 및 어드레스(CA2), 그리고 제3 커맨드 및 어드레스(CA3) 중 적어도 두 개는 동일한 포맷들을 가질 수 있다. 예를 들어, 제2 제어기(230)가 휘발성 메모리 장치(210)와 통신하는 포맷과 불휘발성 메모리 장치(220)와 통신하는 포맷은 서로 다를 수 있다.
제2 제어기(230)는 제1 버퍼 커맨드(CMD_B1)를 전송하여 제1 내지 제4 데이터 버퍼들(241~244)을 제어할 수 있다. 제2 제어기(230)는 제2 버퍼 커맨드(CMD_B2)를 전송하여 제5 내지 제8 데이터 버퍼들(245~248)을 제어할 수 있다.
제1 내지 제8 데이터 버퍼들(241~248)은 데이터 스트로브 신호들(DQS)과 동기되어 제1 제어기(130a)와 제1 데이터 신호들(DQ1)을 통신할 수 있다. 제1 내지 제8 데이터 버퍼들(241~248)은 제1 제어기(130a)로부터 수신되는 제1 데이터 신호들(DQ1)을 제2 데이터 신호들(DQ2)로서 제2 제어기(230)로 전달할 수 있다.
제1 내지 제8 데이터 버퍼들(241~248)은 제2 제어기(230)로부터 수신되는 제2 데이터 신호들(DQ2)을 제1 데이터 신호들(DQ1)로서 제1 제어기(130a)로 전달할 수 있다. 제1 내지 제8 데이터 버퍼들(241~248)은 서로 분리된 패키지들로 형성될 수 있다.
예시적으로, 휘발성 메모리 장치(210)는 불휘발성 메모리 장치(220)의 캐시 메모리로 사용될 수 있다. 불휘발성 메모리 장치(220)의 저장 공간 중 일부가 휘발성 메모리 장치(210)에 사상될 수 있다.
제1 제어기(130a)로부터 수신되는 제1 커맨드 및 어드레스(CA1)가 가리키는 제1 저장 공간이 휘발성 메모리 장치(210)에 사상되어 있을 때, 즉 캐시 히트가 발생할 때, 제2 제어기(230)는 휘발성 메모리 장치(210)에 제2 커맨드 및 어드레스(CA2)를 전달할 수 있다. 휘발성 메모리 장치(210)는 제2 커맨드 및 어드레스(CA2)에 따라 쓰기 또는 읽기를 수행할 수 있다.
제1 제어기(130a)로부터 수신되는 제1 커맨드 및 어드레스(CA1)가 가리키는 제1 저장 공간이 휘발성 메모리 장치(210)에 사상되어 있지 않을 때, 즉 캐시 미스가 발생할 때, 제2 제어기(230)는 제1 커맨드 및 어드레스(CA1)가 가리키는 제1 저장 공간을 휘발성 메모리 장치(210)에 사상할 수 있다.
예를 들어, 불휘발성 메모리 장치(220)의 제1 저장 공간과 연관된 제2 저장 공간을 휘발성 메모리 장치(210)에 확보할 수 있다. 휘발성 메모리 장치(210)에 저장 공간이 부족하면, 제2 제어기(230)는 휘발성 메모리 장치(210)에 사상된 다른 저장 공간을 버리거나 또는 다른 저장 공간을 불휘발성 메모리 장치(220)에 반환함으로써, 휘발성 메모리 장치(210)에 저장 공간을 확보할 수 있다.
불휘발성 메모리 장치(220)의 제1 저장 공간에 데이터가 저장되어 있으면, 제2 제어기(230)는 제1 저장 공간의 데이터를 휘발성 메모리 장치(210)의 제2 저장 공간으로 복사할 수 있다. 이후에, 제2 제어기(230)는 제2 커맨드 및 어드레스(CA2)를 휘발성 메모리 장치(210)로 전달할 수 있다. 휘발성 메모리 장치(210)는 제2 커맨드 및 어드레스(CA2)에 응답하여 제2 저장 공간에 대해 쓰기 또는 읽기를 수행할 수 있다.
휘발성 메모리 장치(210)에서 제2 저장 공간을 해제하고자 할 때, 제2 제어기(230)는 제2 저장 공간이 오염되었는지(dirty) 체크할 수 있다. 예를 들어, 제2 저장 공간에 대해 쓰기가 수행된 때에, 제2 저장 공간은 오염된(dirty) 것으로 판단될 수 있다.
제2 저장 공간이 오염되지 않았으면(not dirty), 제2 제어기(230)는 제2 저장 공간의 데이터를 버림으로써 제2 저장 공간을 해제할 수 있다. 제2 저장 공간이 오염되었으면(dirty), 제2 제어기(230)는 제2 저장 공간의 데이터를 불휘발성 메모리 장치(220)에 기입함으로써 제2 저장 공간을 반환할 수 있다. 제2 저장 공간을 반환한 후에, 제2 제어기(230)는 제2 저장 공간을 버림으로써 제2 저장 공간을 해제할 수 있다.
다른 예로서, 휘발성 메모리 장치(210) 및 불휘발성 메모리 장치(220)는 제1 제어기(130a)에 의해 직접 액세스될 수 있다. 예를 들어, 제1 커맨드 및 어드레스(CA1) 또는 제1 제어 신호(CTRL1)가 휘발성 메모리 장치(210)를 가리킬 때, 제2 제어기(230)는 제2 커맨드 및 어드레스(CA2), 제2 클럭 신호(CK2) 또는 제2 제어 신호(CTRL2)를 휘발성 메모리 장치(210)에 전달할 수 있다.
제1 커맨드 및 어드레스(CA1) 또는 제1 제어 신호(CTRL1)가 불휘발성 메모리 장치(220)를 가리킬 때, 제2 제어기(230)는 제3 커맨드 및 어드레스(CA3), 제3 클럭 신호(CK3) 또는 제3 제어 신호(CTRL3)를 불휘발성 메모리 장치(220)에 전달할 수 있다.
예시적으로, 휘발성 메모리들, 불휘발성 메모리들, 그리고 데이터 버퍼들의 수는 한정되지 않는다. 휘발성 메모리들 또는 불휘발성 메모리들의 수는 데이터 버퍼들의 수와 동일할 수 있다. 데이터 버퍼들의 수는 9개로 변경될 수 있다.
도 3은 제1 제어기(130a)가 주 메모리(140a)에 대해 읽기 동작을 수행하는 예를 보여준다. 도 1 내지 도 3을 참조하면, S110 단계에서, 제1 제어기(130a)는 제1 읽기 요청을 수신할 수 있다. 예를 들어, 제1 제어기(130a)는 프로세서(110)로부터 제1 읽기 요청을 수신할 수 있다.
S120 단계에서, 제1 제어기(130a)는 제2 제어기(230)로 제2 읽기 요청을 전송할 수 있다. 예를 들어, 제1 제어기(130a)는 제1 읽기 요청으로부터 제2 읽기 요청을 생성할 수 있다. 제1 읽기 요청의 포맷과 제2 읽기 요청의 포맷은 같거나 다를 수 있다. 하나의 제1 읽기 요청으로부터 하나 또는 그보다 많은 제2 읽기 요청들이 생성될 수 있다.
S130 단계에서, 제1 제어기(130a)는 제1 시간(T1) 내에 정상 데이터가 수신되는지 판단할 수 있다. 예를 들어, 정상 데이터는 에러가 없는 데이터 또는 정정 가능한 범위 내의 에러를 갖는 데이터를 가리킬 수 있다. 정정 가능한 범위는 제1 제어기(130a)와 제2 제어기(230) 사이의 통신에 사용되는 에러 정정 코드의 종류에 따라 달리 정해질 수 있다.
정상 데이터와 달리, 에러를 갖는 데이터 또는 정정 가능한 범위 밖의 에러를 갖는 데이터는 에러 데이터일 수 있다. 제1 시간(T1) 내에 정상 데이터가 수신되면, S140 단계에서, 읽기 성공이 판단된다. 제1 제어기(130a)는 수신된 정상 데이터를 프로세서(110)로 전달할 수 있다.
제1 시간(T1) 내에 정상 데이터가 수신되지 않으면, 또는 제1 시간(T1) 내에 에러 데이터가 수신되면, S150 단계에서, 제1 제어기(130a)는 제2 읽기 요청을 제어기(230)로 다시 전송할 수 있다. 예를 들어, S150 단계에서 전송되는 제2 읽기 요청은 S120 단계에서 전송된 제2 읽기 요청과 동일할 수 있다. S150 단계는 읽기 재시도(read retry)로 표현될 수 있다.
S160 단계에서, 제1 제어기(130a)는 제2 시간(T2) 내에 정상 데이터가 수신되는지 판단할 수 있다. 제2 시간(T2)은 제1 시간(T1)과 같거나 다를 수 있다. 제2 시간(T2) 내에 정상 데이터가 수신되면, S140 단계에서 읽기 성공이 판단될 수 있다.
제2 시간(T2) 내에 정상 데이터가 수신되지 않으면, S170 단계가 수행된다. S170 단계에서, 제1 제어기(130a)는 제2 읽기 요청이 제1 값(N1)의 횟수(N1 times)만큼 재전송되었는지 판단할 수 있다. 예를 들어, 제1 제어기(130a)는 읽기 재시도가 제1 값(N1)의 횟수만큼 수행되었는지 판단할 수 있다.
읽기 재시도가 제1 값(N1)의 횟수만큼 수행되지 않았으면, S150 단계에서 읽기 재시도가 수행될 수 있다. 읽기 재시도가 제1 값(N1)의 횟수만큼 수행되었으면, S180 단계가 수행된다. S180 단계에서, 제1 제어기(130a)는 정정 불가능한 에러가 발생하였으면, 읽기 실패가 발생한 것을 판단할 수 있다.
도 4는 도 3의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 휘발성 메모리 장치(210)와 연관되며, 휘발성 메모리 장치(210)에서 읽기 동작이 수행되는 예가 도 4에 도시된다.
도 1 내지 도 4를 참조하면, 프로세서(110)는 제1 읽기 요청(R1)을 생성할 수 있다. S211 단계에서, 프로세서(110)는 제1 읽기 요청(R1)을 제1 제어기(130a)로 전달할 수 있다. 제1 제어기(130a)는 제1 읽기 요청(R1)에 따라 제2 읽기 요청(R2)을 생성할 수 있다.
S212 단계에서, 제1 제어기(130a)는 제2 읽기 요청(R2)을 제2 제어기(230)로 전달할 수 있다. 제2 읽기 요청(R2)은 제1 커맨드 및 어드레스(CA1)로서 제2 제어기(230)로 전달될 수 있다. 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(131)는 제1 시간(T1)의 측정(또는 카운트)을 시작할 수 있다(도 3의 S130 단계).
제2 제어기(230)는 제2 읽기 요청(R2)에 따라 제3 읽기 요청(R3)을 생성할 수 있다. S213 단계에서, 제2 제어기(230)는 제3 읽기 요청(R3)을 휘발성 메모리 장치(210)로 전달할 수 있다. 제3 읽기 요청(R3)은 제2 커맨드 및 어드레스(CA2)로서 휘발성 메모리 장치(210)로 전달될 수 있다.
예를 들어, 제2 제어기(230)는 제2 읽기 요청(R2)을 가공하지 않고 제3 읽기 요청(R3)으로서 휘발성 메모리 장치(210)로 전달할 수 있다. 다른 예로서, 제2 제어기(230)는 제2 읽기 요청(R2)을 휘발성 메모리 장치(210)에 적합한 형태로 가공하고, 가공된 결과를 제3 읽기 요청(R3)으로서 휘발성 메모리 장치(210)로 전달할 수 있다.
제3 읽기 요청(R3)에 응답하여, 휘발성 메모리 장치(210)는 읽기 동작(RD)을 수행할 수 있다. 휘발성 메모리 장치(210)로부터 읽혀지는 데이터는 제2 제어기(230)로 전달될 수 있다. S214 단계에서, 읽기 동작이 완료될 수 있다.
제2 제어기(230)는 휘발성 메모리 장치(210)로부터 읽혀진 데이터를 제1 제어기(130a)로 전달하는 데이터 전송(DT)을 수행할 수 있다. S215 단계에서, 데이터 전송(DT)이 완료되고, 데이터는 제1 제어기(130a)로 전달될 수 있다.
제1 제어기(130a)는 제2 읽기 요청(R2)을 전송한 후 제1 시간(T1)이 경과하기 전에 주 메모리(140a)로부터 데이터를 수신한다. 예를 들어, 수신된 데이터는 정상 데이터일 수 있다. 따라서, 제1 제어기(130a)는 읽기 성공을 판단할 수 있다.
제1 제어기(130a)는 제2 제어기(230)로부터 전달된 데이터를 프로세서(110)로 전달하는 데이터 전송(DT)을 수행할 수 있다. S216 단계에서, 데이터 전송(DT)이 완료되고, 데이터는 프로세서(110)로 전달될 수 있다. 프로세서(110)는 읽기 완료(RC, Read Complete)를 판단할 수 있다.
도 5는 도 4의 읽기 동작의 변형 예를 보여준다. 도 1 내지 도 3, 그리고 도 5를 참조하면, S221 단계 내지 S223 단계는 도 4의 S211 단계 내지 S213 단계와 동일하게 수행된다. 따라서, 중복되는 설명은 생략된다.
휘발성 메모리 장치(210)가 읽기 동작(RD)을 수행할 때, S224 단계에서, 읽혀진 데이터는 제2 제어기(230)에 의해 제어되거나 버퍼링되지 않고, 제2 제어기(230) 및 제1 내지 제8 데이터 버퍼들(241~248)을 통해 제1 제어기(130a)로 직접 전달될 수 있다. LRDIMM은 동적 랜덤 액세스 메모리(DRAM)에 기반하므로, 휘발성 메모리 장치(210)는 제1 제어기(130a)와 직접 통신할 수 있다.
이후에, S226 단계는 도 4의 S216 단계와 동일하게 수행될 수 있다. 휘발성 메모리 장치(210)에서 읽혀진 데이터가 제1 제어기(130a)로 직접 전달되면, 제1 제어기(130a)가 제2 읽기 요청(R2)을 전송한 후에 데이터를 수신할 때까지의 시간이 단축될 수 있다.
도 6은 도 3의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(220)와 연관되며, 불휘발성 메모리 장치(220)에서 읽기 동작이 수행되는 예가 도 6에 도시된다.
도 1 내지 도 3, 그리고 도 6을 참조하면, 프로세서(110)는 제1 읽기 요청(R1)을 생성할 수 있다. S231 단계에서, 프로세서(110)는 제1 읽기 요청(R1)을 제1 제어기(130a)로 전달할 수 있다. 제1 제어기(130a)는 제1 읽기 요청(R1)에 따라 제2 읽기 요청(R2)을 생성할 수 있다.
S232 단계에서, 제1 제어기(130a)는 제2 읽기 요청(R2)을 제2 제어기(230)로 전달할 수 있다. 제2 읽기 요청(R2)은 제1 커맨드 및 어드레스(CA1)로서 제2 제어기(230)로 전달될 수 있다. 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(131)는 제1 시간(T1)의 측정(또는 카운트)을 시작할 수 있다(도 3의 S130 단계).
제2 제어기(230)는 제2 읽기 요청(R2)에 따라 제3 읽기 요청(R3)을 생성할 수 있다. S233 단계에서, 제2 제어기(230)는 제3 읽기 요청(R3)을 불휘발성 메모리 장치(220)로 전달할 수 있다. 제3 읽기 요청(R3)은 제3 커맨드 및 어드레스(CA3)로서 불휘발성 메모리 장치(220)로 전달될 수 있다.
예를 들어, 제2 제어기(230)는 제2 읽기 요청(R2)을 가공하지 않고 제3 읽기 요청(R3)으로서 불휘발성 메모리 장치(220)로 전달할 수 있다. 다른 예로서, 제2 제어기(230)는 제2 읽기 요청(R2)을 불휘발성 메모리 장치(212)에 적합한 형태로 가공하고, 가공된 결과를 제3 읽기 요청(R3)으로서 불휘발성 메모리 장치(220)로 전달할 수 있다.
제3 읽기 요청(R3)에 응답하여, 불휘발성 메모리 장치(220)는 읽기 동작(RD)을 수행할 수 있다. 불휘발성 메모리 장치(220)로부터 읽혀지는 데이터는 제2 제어기(230)로 전달될 수 있다.
예시적으로, 불휘발성 메모리 장치(220)의 읽기 속도는 휘발성 메모리 장치(210)의 읽기 속도보다 낮다. 불휘발성 메모리 장치(220)로부터 데이터를 읽는 데에 필요한 시간은 휘발성 메모리 장치(210)로부터 데이터를 읽는 데에 필요한 시간보다 길다.
앞서 언급된 바와 같이, LRDIMM은 동적 랜덤 액세스 메모리(DRAM)에 기반한다. 따라서, 통상적으로, 제1 시간(T1) 및 제2 시간(T2)은 동적 랜덤 액세스 메모리(DRAM)의 읽기 시간에 따라 정해져 있다. 제1 시간(T1) 및 제2 시간(T2)은 불휘발성 메모리 장치(220)의 읽기 시간보다 짧다.
제1 제어기(130a)가 S232 단계에서 제2 읽기 요청(R2)을 전송한 후 제1 시간(T1)이 경과할 때까지, 불휘발성 메모리 장치(220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S234 단계에서, 제1 제어기(130a)는 제2 읽기 요청(R2)을 제2 제어기(230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 3의 S150 단계).
제1 제어기(130a)가 S234 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과할 때까지, 불휘발성 메모리 장치(220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S235 단계에서, 제1 제어기(130a)는 제2 읽기 요청(R2)을 제2 제어기(230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 3의 S150 단계).
제1 제어기(130a)가 S235 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과할 때까지, 불휘발성 메모리 장치(220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S236 단계 및 S237 단계에서, 제1 제어기(130a)는 제2 읽기 요청(R2)을 제2 제어기(230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 3의 S150 단계).
읽기 재시도가 제1 값(N1)의 횟수만큼 수행될 때까지, 불휘발성 메모리 장치(220)의 읽기 동작(RD)이 완료되지 않을 수 있다. 제1 제어기(130a)는 읽기 실패가 발생한 것을 판단할 수 있다. 제1 제어기(130a)는 에러 보고(ER)를 생성하고, S238 단계에서 에러 보고(ER)를 프로세서(110)로 전달할 수 있다. 에러 보고(ER)에 따라, 프로세서(110)는 에러 핸들링(EH)을 수행할 수 있다.
S239 단계에서, 불휘발성 메모리 장치(220)의 읽기 동작이 완료되고, 데이터가 제2 제어기(230)에 전달될 수 있다. 그러나 제1 제어기(130a)는 이미 읽기 실패를 판단한 상태이다. 따라서, 주 메모리(140a)의 불휘발성 메모리 장치(220)에 대한 읽기 동작이 발생하면, 불휘발성 메모리 장치(220)와 휘발성 메모리 장치(210)의 읽기 속도들의 차이에 의해, 주 메모리(140a)에 대한 읽기 동작이 실패할 수 있다.
이와 같은 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 제1 제어기(130a)는 횟수 제한 없는 읽기 재시도를 수행할 수 있다. 예를 들어, 제1 값(N1)은 레지스터(132)에 저장될 수 있다. 본 발명의 실시 예에 다른 제1 제어기(130a)는 레지스터(132)에 저장된 제1 값(N1)을 무효화하거나 또는 무한대로 설정할 수 있다.
도 7은 본 발명의 실시 예에 따른 제1 제어기(130a)의 동작 방법을 보여주는 순서도이다. 도 1, 도 2 및 도 7을 참조하면, S310 단계에서, 제1 제어기(130a)는 제1 읽기 요청을 수신할 수 있다. 예를 들어, 제1 제어기(130a)는 프로세서(110)로부터 제1 읽기 요청을 수신할 수 있다.
S320 단계에서, 제1 제어기(130a)는 제2 제어기(230)로 제2 읽기 요청을 전송할 수 있다. 예를 들어, 제1 제어기(130a)는 제1 읽기 요청으로부터 제2 읽기 요청을 생성할 수 있다. 제1 읽기 요청의 포맷과 제2 읽기 요청의 포맷은 같거나 다를 수 있다. 하나의 제1 읽기 요청으로부터 하나 또는 그보다 많은 제2 읽기 요청들이 생성될 수 있다.
S330 단계에서, 제1 제어기(130a)는 제1 시간(T1) 내에 정상 데이터가 수신되는지 판단할 수 있다. 제1 시간(T1) 내에 정상 데이터가 수신되면, S340 단계에서, 읽기 성공이 판단된다. 제1 제어기(130a)는 수신된 정상 데이터를 프로세서(110)로 전달할 수 있다.
제1 시간(T1) 내에 정상 데이터가 수신되지 않으면, 또는 제1 시간(T1) 내에 에러 데이터가 수신되면, S350 단계에서, 제1 제어기(130a)는 제2 읽기 요청을 제어기(230)로 다시 전송하여 읽기 재시도를 수행할 수 있다.
S360 단계에서, 제1 제어기(130a)는 제2 시간(T2) 내에 정상 데이터가 수신되는지 판단할 수 있다. 제2 시간(T2)은 제1 시간(T1)보다 짧을 수 있다. 제2 시간(T2) 내에 정상 데이터가 수신되면, S340 단계에서 읽기 성공이 판단될 수 있다.
제2 시간(T2) 내에 정상 데이터가 수신되지 않으면, 제1 제어기(130a)는 S350 단계에서 읽기 재시도를 수행할 수 있다. 즉, 제1 제어기(130a)는 읽기 요청을 횟수 제한 없이 재전송할 수 있다.
도 8은 도 7의 동작 방법에 따라 읽기 동작이 수행되는 제1 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(220)와 연관되며, 불휘발성 메모리 장치(220)에서 읽기 동작이 수행되는 예가 도 8에 도시된다.
도 1, 도 2, 도 7 및 도 8을 참조하면, 프로세서(110)는 제1 읽기 요청(R1)을 생성할 수 있다. S411 단계에서, 프로세서(110)는 제1 읽기 요청(R1)을 제1 제어기(130a)로 전달할 수 있다. 제1 제어기(130a)는 제1 읽기 요청(R1)에 따라 제2 읽기 요청(R2)을 생성할 수 있다.
S412 단계에서, 제1 제어기(130a)는 제2 읽기 요청(R2)을 제2 제어기(230)로 전달할 수 있다. 제2 읽기 요청(R2)은 제1 커맨드 및 어드레스(CA1)로서 제2 제어기(230)로 전달될 수 있다. 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(131)는 제1 시간(T1)의 측정(또는 카운트)을 시작할 수 있다(도 7의 S330 단계).
제2 제어기(230)는 제2 읽기 요청(R2)에 따라 제3 읽기 요청(R3)을 생성할 수 있다. S413 단계에서, 제2 제어기(230)는 제3 읽기 요청(R3)을 불휘발성 메모리 장치(220)로 전달할 수 있다. 제3 읽기 요청(R3)은 제3 커맨드 및 어드레스(CA3)로서 불휘발성 메모리 장치(220)로 전달될 수 있다.
제3 읽기 요청(R3)에 응답하여, 불휘발성 메모리 장치(220)는 읽기 동작(RD)을 수행할 수 있다. 불휘발성 메모리 장치(220)로부터 읽혀지는 데이터는 제2 제어기(230)로 전달될 수 있다.
제1 제어기(130a)가 S412 단계에서 제2 읽기 요청(R2)을 전송한 후 제1 시간(T1)이 경과할 때까지, 불휘발성 메모리 장치(220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S414 단계에서, 제1 제어기(130a)는 제2 읽기 요청(R2)을 제2 제어기(230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 7의 S350 단계).
제1 제어기(130a)가 S414 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과할 때까지, 불휘발성 메모리 장치(220)의 읽기 동작(RD)이 완료되지 않을 수 있다. S415 단계에서, 제1 제어기(130a)는 제2 읽기 요청(R2)을 제2 제어기(230)로 다시 전송하여 읽기 재시도(read retry)를 수행할 수 있다(도 7의 S350 단계).
마찬가지로, 제2 시간(T2)이 경과함에 따라, 제1 제어기(130a)는 S416 단계 내지 S418 단계에서 제2 읽기 요청(R2)을 제2 제어기(230)로 다시 전송하여 읽기 재시도를 수행할 수 있다. 불휘발성 메모리 장치(220)에서 읽기 동작(RD)이 수행되는 동안, 제2 제어기(230)는 읽기 동작(RD)과 연관되어 수신되는 제2 읽기 요청들(예를 들어, S414 단계 내지 S418 단계에서 수신되는 제2 읽기 요청들(R2))을 무시할 수 있다.
S419 단계에서, 불휘발성 메모리 장치(220)에서 읽기 동작(RD)이 완료되고, 읽혀진 데이터가 제2 제어기(230)로 전달될 수 있다. 제2 제어기(230)는 불휘발성 메모리 장치(220)로부터 읽혀진 데이터를 제1 제어기(130a)로 전달하는 데이터 전송(DT)을 수행할 수 있다. S420 단계에서, 데이터 전송(DT)이 완료되고, 데이터는 제1 제어기(130a)로 전달될 수 있다.
제1 제어기(130a)는 S418 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과하기 전에 주 메모리(140a)로부터 데이터를 수신한다. 예를 들어, 수신된 데이터는 정상 데이터일 수 있다. 따라서, 제1 제어기(130a)는 읽기 성공을 판단할 수 있다.
제1 제어기(130a)는 제2 제어기(230)로부터 전달된 데이터를 프로세서(110)로 전달하는 데이터 전송(DT)을 수행할 수 있다. S421 단계에서, 데이터 전송(DT)이 완료되고, 데이터는 프로세서(110)로 전달될 수 있다. 프로세서(110)는 읽기 완료(RC, Read Complete)를 판단할 수 있다.
상술된 바와 같이, 제1 제어기(130a)가 읽기 재시도를 수행하는 횟수를 제한하지 않음으로써, 불휘발성 메모리 장치(220)로부터 정상 데이터가 읽혀질 수 있다.
도 9는 도 7의 동작 방법에 따라 읽기 동작이 수행되는 제2 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(220)와 연관되며, 휘발성 메모리 장치(210)가 불휘발성 메모리 장치(220)의 캐시 메모리로 사용되는 예가 도 9에 도시된다.
도 1, 도 2, 도 7 및 도 9를 참조하면, S431 단계에서, 프로세서(110)는 제1 읽기 요청(R1)을 제1 제어기(130a)로 전달할 수 있다. 제1 제어기(130a)는 제1 읽기 요청(R1)에 따라 제2 읽기 요청(R2)을 생성할 수 있다.
S432 단계에서, 제1 제어기(130a)는 제2 읽기 요청(R2)을 제2 제어기(230)로 전달할 수 있다. 제2 읽기 요청(R2)은 제1 커맨드 및 어드레스(CA1)로서 제2 제어기(230)로 전달될 수 있다. 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(131)는 제1 시간(T1)의 측정(또는 카운트)을 시작할 수 있다(도 7의 S330 단계).
제2 제어기(230)는 제2 읽기 요청(R2)과 연관된 저장 공간이 휘발성 메모리 장치(210)에 사상되어 있는지(즉, 캐시 히트인지) 판단할 수 있다. 제2 읽기 요청(R2)과 연관된 저장 공간이 휘발성 메모리 장치(210)에 사상되어 있으면, 즉 캐시 히트이면, 제2 제어기(230)는 제3 읽기 요청(R3)을 제2 커맨드 및 어드레스(CA2) 또는 제2 제어 신호(CTRL2)로서 휘발성 메모리 장치(210)로 전송할 수 있다.
휘발성 메모리 장치(210)에 대한 읽기 동작은 도 4 또는 도 5를 참조하여 설명된 것과 동일하게 수행될 수 있다. 따라서, 휘발성 메모리 장치(210)에 대한 읽기 동작은 중복하여 설명되지 않는다.
제2 읽기 요청(R2)과 연관된 저장 공간이 휘발성 메모리 장치(210)에 사상되어 있지 않으면, 즉 캐시 미스이면, 제2 제어기(230)는 제2 읽기 요청(R2)과 연관된 저장 공간을 휘발성 메모리 장치(210)에 사상할 수 있다.
제2 제어기(230)는 제2 읽기 요청(R2)과 연관된 저장 공간에 대한 제3 읽기 요청(R3)을 생성할 수 있다. S413 단계에서, 제2 제어기(230)는 제3 읽기 요청(R3)을 불휘발성 메모리 장치(220)로 전달할 수 있다. 제3 읽기 요청(R3)은 제3 커맨드 및 어드레스(CA3)로서 불휘발성 메모리 장치(220)로 전달될 수 있다.
제3 읽기 요청(R3)에 응답하여, 불휘발성 메모리 장치(220)는 읽기 동작(RD)을 수행할 수 있다. 불휘발성 메모리 장치(220)로부터 읽혀지는 데이터는 제2 제어기(230)로 전달될 수 있다.
제1 시간(T1) 또는 제2 시간(T2)이 경과함에 따라, 제1 제어기(130a)는 S434 단계 내지 S438 단계에서 제2 읽기 요청(R2)을 전송하여 읽기 재시도를 수행할 수 있다.
불휘발성 메모리 장치(220)의 읽기 동작(RD)이 완료됨에 따라, S439 단계에서, 불휘발성 메모리 장치(220)로부터 읽혀진 데이터는 제2 제어기(230)로 전달된다.
불휘발성 메모리 장치(220)로부터 데이터가 전달됨에 따라, S440 단계에서, 제2 제어기(230)는 쓰기 요청(W)을 휘발성 메모리 장치(210)로 전달할 수 있다. 쓰기 요청(W)은 불휘발성 메모리 장치(220)로부터 읽혀진 데이터를 포함하거나 데이터와 함께 전달될 수 있다.
예를 들어, 쓰기 요청(W)은 제2 커맨드 및 어드레스(CA2)로서 휘발성 메모리 장치(210)로 전달될 수 있다. 다른 예로서, 쓰기 요청(W)은 제2 제어 신호(CTRL2)로서 휘발성 메모리 장치(210)로 전달될 수 있다. 예를 들어, 제2 제어기(230)는 특정한 제어 신호, 예를 들어 SAVEn을 활성화할 수 있다.
특정한 제어 신호가 활성화된 동안, 제2 제어기(230)는 불휘발성 메모리 장치(220)로부터 읽혀진 데이터를 휘발성 메모리 장치(210)로 출력할 수 있다. 특정한 제어 신호의 활성화에 응답하여, 휘발성 메모리 장치(210)는 제2 제어기(230)로부터 전달되는 데이터를 기입할 수 있다.
쓰기 요청(W)에 따라, 휘발성 메모리 장치(210)는 쓰기 동작(WR)을 수행할 수 있다. 휘발성 메모리 장치(210)가 쓰기 동작(WR)을 수행함으로써, 제2 읽기 요청(R2)과 연관된 불휘발성 메모리 장치(220)의 제1 저장 공간이 휘발성 메모리 장치의 제2 저장 공간으로 사상(또는 백업)될 수 있다.
쓰기 동작(WR)이 완료된 후에, S441 단계에서, 제1 제어기(130a)는 제2 제어기(230)로 제2 읽기 요청(R2)을 전달할 수 있다. S442 단계에서, 제2 제어기(230)는 읽기 동작(RD)이 완료된 후에 S441 단계에서 수신된 제2 읽기 요청(R2)에 응답하여, 휘발성 메모리 장치(210)에 제3 읽기 요청(R3)을 전송할 수 있다. 제3 읽기 요청(R3)은 불휘발성 메모리 장치(220)로부터 휘발성 메모리 장치(210)로 사상된 데이터에 대한 읽기를 요청할 수 있다.
제3 읽기 요청(R3)에 따라, 휘발성 메모리 장치(210)는 읽기 동작(RD)을 수행할 수 있다. 읽기 동작(RD)이 완료되면, S443 단계에서, 제2 읽기 요청(R2)과 연관된 데이터가 제2 제어기(230)에 전달된다. 제2 제어기(230)는 데이터 전송(DT)을 수행할 수 있다.
데이터 전송(DT)이 수행됨에 따라, S444 단계에서, 데이터가 제1 제어기(130a)로 전달된다. 제1 제어기(130a)가 S441 단계에서 제2 읽기 요청(R2)을 전송한 후 제2 시간(T2)이 경과하기 전에, 제1 제어기(130a)에 제2 읽기 요청(R2)과 연관된 데이터가 수신된다. 따라서, 제1 제어기(130a)는 읽기 성공을 판단할 수 있다(도 7의 S340 단계).
제1 제어기(130a)는 데이터 전송(DT)을 수행하여, S445 단계에서 프로세서(110)로 데이터를 전달할 수 있다. 데이터가 전달됨에 따라, 프로세서(110)는 읽기 완료를 판단할 수 있다.
도 10은 도 9의 읽기 동작의 변형 예를 보여준다. 도 1, 도 2, 도 7 및 도 10을 참조하면, S451 단계 내지 S460 단계는 도 9의 S431 단계 내지 S440 단계와 동일하게 수행된다. 따라서, 중복되는 설명은 생략된다.
S461 단계에서, 제1 제어기(130a)는 제2 제어기(230)로 제2 읽기 요청(R2)을 전송할 수 있다. 제2 읽기 요청(R2)에 응답하여, S462 단계에서, 제2 제어기(230)는 휘발성 메모리 장치(210)로 제3 읽기 요청(R3)을 전송할 수 있다. 예를 들어, 제2 제어기(230)는 제1 제어기(130a)로부터 전달되는 제2 읽기 요청(R2)을 제3 읽기 요청(R3)으로서 휘발성 메모리 장치(210)로 전달할 수 있다.
휘발성 메모리 장치(210)가 읽기 동작(RD)을 수행할 때, S463 단계에서, 읽혀진 데이터는 제2 제어기(230)에 의해 제어되거나 버퍼링되지 않고, 제2 제어기(230) 및 제1 내지 제8 데이터 버퍼들(241~248)을 통해 제1 제어기(130a)로 직접 전달될 수 있다. LRDIMM은 동적 랜덤 액세스 메모리(DRAM)에 기반하므로, 휘발성 메모리 장치(210)는 제1 제어기(130a)와 직접 통신할 수 있다.
이후에, S464 단계는 도 9의 S445 단계와 동일하게 수행될 수 있다. 휘발성 메모리 장치(210)에서 읽혀진 데이터가 제1 제어기(130a)로 직접 전달되면, 제1 제어기(130a)가 제2 읽기 요청(R2)을 전송한 후에 데이터를 수신할 때까지의 시간이 단축될 수 있다.
도 11은 도 7의 동작 방법의 응용 예를 보여준다. 도 1, 도 2 및 도 11을 참조하면, S510 단계 내지 S550 단계는 도 7을 참조하여 설명된 S310 단계 내지 S350 단계와 동일하게 수행된다. 즉, 제1 제어기(130a)는 횟수 제한 없이 읽기 재시도를 반복적으로 수행할 수 있다.
S560 단계에서, 제2 시간(T2) 내에 정상 데이터가 수신되지 않았으면, S570 단계가 수행된다. S570 단계에서, 제2 읽기 요청을 최초로 전송(S520 단계)한 후 제3 시간(T3)이 경과했는지 판단된다. 제3 시간(T3)이 경과하지 않았으면, S550 단계에서 읽기 재시도가 횟수 제한 없이 수행된다.
제3 시간(T3)이 경과했으면, S580 단계에서, 제1 제어기(130a)는 정정 불가능한 에러가 발생하였으면, 읽기 실패가 발생한 것을 판단할 수 있다. 예시적으로, 제3 시간(T3)의 정보는 레지스터(132)에 저장될 수 있다.
제3 시간(T3)은 불휘발성 메모리 장치(220)에서 읽기 동작을 수행하는 데에 필요한 시간(예를 들어, 읽기 시간)에 따라 결정될 수 있다. 예를 들어, 제3 시간(T3)은 읽기 시간보다 길게(예를 들어, 두 배 이상) 정해질 수 있다.
도 12는 제3 시간(T3)을 측정하면서 읽기 동작을 수행하는 예를 보여준다. 도 9와 비교하면, S432 단계에서 제1 제어기(130a)가 제2 제어기(230)로 제2 읽기 요청(R2)을 전송함에 따라, 타임아웃 제어기(131)는 제3 시간(T3)의 측정을 시작할 수 있다.
예시적으로, 제3 시간(T3)은 불휘발성 메모리 장치(220)에 대해 읽기 동작이 수행되는 시간보다 길게 설정될 수 있다. 제3 시간(T3)에 따라 타임아웃이 측정되면, 주 메모리(140a)에서 에러(예를 들어, 읽기 에러)가 발생하여 정상 데이터가 읽히지 않는 때에 제1 제어기(130a)가 읽기 재시도를 반복하는 것이 방지된다. 즉, 제1 제어기(130a) 및 주 메모리(140a)를 포함하는 메모리 시스템에서 행(hang)이 발생하는 것이 방지된다.
도 13은 본 발명의 다른 예에 따른 컴퓨팅 장치(100b)를 보여주는 블록도이다. 도 13을 참조하면, 컴퓨팅 장치(100b)는 프로세서(110), 제2 캐시 메모리(120), 제1 제어기(130b), 주 메모리(140b), 스토리지 인터페이스(150), 그리고 스토리지 장치(160)를 포함한다.
프로세서(110), 제2 캐시 메모리(120), 스토리지 인터페이스(150), 그리고 스토리지 장치(160)는 도 1을 참조하여 설명된 것과 동일하게 동작한다. 따라서, 중복되는 설명은 생략된다.
도 1과 비교하면, 제1 제어기(130b) 및 주 메모리(140b)는 시스템 관리 버스(SMBus, System Management Bus)를 통해 더 통신할 수 있다. 주 메모리(140b)는 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치 및 레지스터 갱신기(142)를 포함할 수 있다.
SPD 장치(141)는 주 메모리(140b)에 대한 정보를 포함할 수 있다. 제1 제어기(130b) 및 주 메모리(140b)에 전원이 공급될 때, 제1 제어기(130b)는 주 메모리(140b)의 SPD 장치(141)를 액세스하여, 주 메모리(140b)에 대한 정보를 획득할 수 있다.
획득된 정보를 기반으로, 제1 제어기(130b)는 주 메모리(140b)를 액세스하는 방법들 또는 파라미터들을 설정 또는 조절할 수 있다. 예를 들어, 제1 제어기(130b)는 시스템 관리 버스(SMBus)를 통해 SPD 장치(141)를 액세스할 수 있다.
레지스터 갱신기(142)는 시스템 관리 버스(SMBus)를 통해 제1 제어기(130b)의 레지스터(132)를 갱신할 수 있다. 예를 들어, 제1 제어기(130b)가 주 메모리(140b)의 SPD 장치(141)를 액세스할 때에, 제1 제어기(130b)는 주 메모리(140b)가 시스템 관리 버스(SMBus)를 통해 레지스터(132)를 액세스하는 것을 허용할 수 있다.
제1 제어기(130b)가 SPD 장치(141)를 액세스하는 동안, 레지스터 갱신기(142)는 레지스터(132)에 저장된 정보 중 일부를 갱신할 수 있다. 예를 들어, 레지스터 갱신기(142)는 도 7 내지 도 12를 참조하여 설명된 동작들이 허용되도록, 레지스터(132)에 저장된 정보를 갱신할 수 있다.
도 14는 SPD 장치(141) 및 레지스터 갱신기(142)를 포함하는 주 메모리(140b)의 예를 보여준다. 도 2와 비교하면, 제2 제어기(230)는 SPD 장치(141) 및 레지스터 갱신기(142)를 포함할 수 있다.
SPD 장치(141)는 제2 제어기(230)의 내부에 포함되거나 또는 제2 제어기(230)의 외부에 제2 제어기(230)와 구별되는 패키지도 제공될 수 있다. SPD 장치(141) 및 레지스터 갱신기(142)는 시스템 관리 버스(SMBus)를 통해 제1 제어기(130b)와 통신할 수 있다.
도 15는 주 메모리(140b)가 레지스터(132)를 갱신하는 방법을 보여주는 순서도이다. 도 13 내지 도 15를 참조하면, S610 단계에서, 제2 제어기(230)는 파워 온을 검출할 수 있다. S620 단계에서, 제2 제어기(230)의 레지스터 갱신기(142)는 시스템 관리 버스(SMBus)를 통해 레지스터(132)에 저장된 정보를 갱신할 수 있다.
예를 들어, 레지스터 갱신기(142)는 레지스터(132)에 저장된 횟수 제한(times limit)을 무효화하거나 제거할 수 있다. 레지스터 갱신기(142)는 불휘발성 메모리 장치(220)의 읽기 시간에 따라 레지스터(132)에 저장된 제3 시간(T3)을 갱신할 수 있다. 예를 들어, 레지스터 갱신기(142)는 제3 시간(T3)이 읽기 시간보다 길어지도록 레지스터(132)를 갱신할 수 있다.
도 16은 본 발명의 또 다른 예에 따른 컴퓨팅 장치(100c)를 보여주는 블록도이다. 도 2 및 도 16을 참조하면, 컴퓨팅 장치(100c)는 프로세서(110), 제2 캐시 메모리(120), 제1 제어기(130c), 주 메모리(140c), 스토리지 인터페이스(150), 그리고 스토리지 장치(160)를 포함한다.
프로세서(110), 제2 캐시 메모리(120), 스토리지 인터페이스(150), 그리고 스토리지 장치(160)는 도 1을 참조하여 설명된 것과 동일하게 동작한다. 따라서, 중복되는 설명은 생략된다.
도 1과 비교하면, 주 메모리(140c)는 제1 제어기(130c)로 쓰기 에러 신호(WRCRC)를 출력할 수 있다. 예를 들어, 제1 제어기(130c)는 주 메모리(140c)로 쓰기 요청을 전달할 수 있다. 쓰기 요청의 쓰기 데이터는 에러 정정 코드에 의해 생성된 패리티와 함께 전송될 수 있다.
주 메모리(140c)는 패리티를 이용하여 쓰기 데이터에 에러가 존재하는지 체크할 수 있다. 쓰기 데이터에 에러가 존재하면, 주 메모리(140c)는 쓰기 에러 신호(WRCRC)를 활성화(예를 들어, 로우 레벨로 조절)할 수 있다. 쓰기 에러 신호(WRCRC)가 활성화되면, 제1 제어기(130c)는 쓰기 요청을 재전송할 수 있다.
주 메모리(140c)는 쓰기 에러 제어기(143)를 포함할 수 있다. 도 14를 참조하여 설명된 바와 같이, 쓰기 에러 제어기(143)는 제2 제어기(230)에 포함될 수 있다. 불휘발성 메모리 장치(220)에 대한 쓰기가 수행될 때, 쓰기 에러 제어기(143)는 쓰기 에러 신호(WRCRC)를 제어할 수 있다. 예를 들어, 쓰기 에러 신호(WRCRC)는 ALERTn 신호를 포함할 수 있다.
도 17은 제1 제어기(130c)가 쓰기 동작을 수행하는 예를 보여주는 순서도이다. 도 2, 도 16 및 도 17을 참조하면, S710 단계에서, 제1 제어기(130c)는 제1 쓰기 요청을 수신할 수 있다. 예를 들어, 제1 제어기(130c)는 프로세서(110)로부터 제1 쓰기 요청을 수신할 수 있다.
S720 단계에서, 제1 제어기(130c)는 제2 제어기(230)로 제2 쓰기 요청을 전송할 수 있다. 예를 들어, 제1 제어기(130c)는 제1 쓰기 요청으로부터 제2 쓰기 요청을 생성할 수 있다. 제1 쓰기 요청의 포맷과 제2 쓰기 요청의 포맷은 같거나 다를 수 있다. 하나의 제1 쓰기 요청으로부터 하나 또는 그보다 많은 제2 쓰기 요청들이 생성될 수 있다.
S730 단계에서, 제1 제어기(130c)는 쓰기 에러 신호(WRCRC)가 활성화되는지 체크할 수 있다. 쓰기 에러 신호(WRCRC)가 활성화되지 않으면, S740 단계에서, 제1 제어기(130c)는 쓰기가 성공한 것을 판단할 수 있다.
쓰기 에러 신호(WRCRC)가 활성화되면, S750 단계에서, 제1 제어기(130c)는 복원을 수행할 수 있다. 예를 들어, 제1 제어기(130c)는 제1 제어기(130c)와 주 메모리(140c) 사이의 통신 링크(communication link)에 대한 복원을 수행할 수 있다. 복원은 ZQ 교정(ZQ calibration), 쓰기 트레이닝, 읽기 트레이닝 등을 포함할 수 있다.
이후에, S720 단계에서, 제1 제어기(130c)는 제2 쓰기 요청을 다시 전송할 수 있다. 즉, 제1 제어기(130c)는 횟수 제한 없이 쓰기 재시도(write retry)를 반복할 수 있다.
도 18은 주 메모리(140c)가 쓰기 동작을 수행하는 예를 보여주는 순서도이다. 도 2, 도 16 및 도 18을 참조하면, S810 단계에서, 제2 제어기(230)는 제2 쓰기 요청을 수신할 수 있다. 예를 들어, 제2 제어기(230)는 제1 제어기(130c)로부터 제1 커맨드 및 어드레스(CA1)로서 제2 쓰기 요청을 수신할 수 있다.
S820 단계에서, 제2 제어기(230)는 제2 쓰기 요청이 불휘발성 메모리 장치(220)에 대한 쓰기를 유발하는지 판단할 수 있다. 제2 쓰기 요청이 불휘발성 메모리 장치(220)에 대한 쓰기를 유발하지 않으면, S830 단계에서, 제2 제어기(230)는 제2 쓰기 요청에 따라 휘발성 메모리 장치(210)에 대해 쓰기 동작을 수행할 수 있다.
제2 쓰기 요청이 불휘발성 메모리 장치(220)에 대한 쓰기를 유발하면, S840 단계가 수행된다. S840 단계에서, 제2 제어기(230)는 쓰기 에러 신호(WRCRC)를 활성화할 수 있다. S850 단계에서, 제2 제어기(230)는 불휘발성 메모리 장치(220)에 대해 쓰기 동작을 수행할 수 있다.
불휘발성 메모리 장치(220)에 대한 쓰기 동작이 완료된 후에, 제2 쓰기 요청이 수신되면(S860 단계), S870 단계에서, 제2 제어기(230)는 쓰기 에러 신호(WRCRC)를 비활성화(예를 들어, 하이 레벨로 조절)할 수 있다.
도 6을 참조하여 설명된 바와 같이, 불휘발성 메모리 장치(220)에 대한 쓰기 동작은 휘발성 메모리 장치(210)에 대한 쓰기 동작보다 긴 시간을 필요로 한다. 제1 제어기(130c)는 휘발성 메모리 장치(210)의 쓰기 속도에 기반하여 주 메모리(140c)를 제어하도록 구성된다.
예를 들어, 제1 제어기(130c)는 주 메모리(140c)로 제2 쓰기 요청(W2)을 전달하고, 주 메모리(140c)로부터 별도의 회신, 예를 들어 쓰기 에러 신호(WRCRC)의 활성화가 없으면 쓰기 동작이 완료된 것으로 판단할 수 있다.
불휘발성 메모리 장치(220)에 대한 쓰기 동작이 완료되지 않은 상태에서 제1 제어기(130c)가 쓰기 완료를 판단하면, 쓰기 실패가 발생할 수 있다. 이러한 문제를 해결하기 위하여, 본 발명의 실시 예에 따른 주 메모리(140c)는 불휘발성 메모리 장치(220)에 대한 쓰기 동작이 완료될 때까지 쓰기 에러 신호(WRCRC)를 활성 상태(예를 들어, 로우 레벨)로 유지할 수 있다.
도 19는 도 18의 동작 방법에 따라 쓰기 동작이 수행되는 제1 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(220)와 연관되지 않으며, 휘발성 메모리 장치(210)에서 쓰기 동작이 수행되는 예가 도 19에 도시된다.
도 2, 도 16, 도 18 및 도 19를 참조하면, 프로세서(110)는 제1 쓰기 요청(W1)을 생성할 수 있다. S911 단계에서, 프로세서(110)는 제1 쓰기 요청(W1)을 제어기(130c)로 전달할 수 있다. 제1 제어기(130c)는 제1 쓰기 요청(W1)에 따라 제2 쓰기 요청(W2)을 생성할 수 있다.
S912 단계에서, 제1 제어기(130c)는 제2 쓰기 요청(W2)을 제2 제어기(230)로 전달할 수 있다. 제2 쓰기 요청(W2)은 제1 커맨드 및 어드레스(CA1)로서 제2 제어기(230)로 전달될 수 있다.
제2 제어기(230)는 제2 쓰기 요청(W2)에 따라 제3 쓰기 요청(W3)을 생성할 수 있다. S913 단계에서, 제2 제어기(230)는 제3 쓰기 요청(W3)을 휘발성 메모리 장치(210)로 전달할 수 있다. 제3 쓰기 요청(W3)은 제2 커맨드 및 어드레스(CA2)로서 휘발성 메모리 장치(210)로 전달될 수 있다.
예를 들어, 제2 제어기(230)는 제2 쓰기 요청(W2)을 가공하지 않고 제3 쓰기 요청(W3)으로서 휘발성 메모리 장치(210)로 전달할 수 있다. 다른 예로서, 제2 제어기(230)는 제2 쓰기 요청(W2)을 휘발성 메모리 장치(210)에 적합한 형태로 가공하고, 가공된 결과를 제3 쓰기 요청(W3)으로서 휘발성 메모리 장치(210)로 전달할 수 있다.
제3 쓰기 요청(W3)에 응답하여, 휘발성 메모리 장치(210)는 쓰기 동작(WR)을 수행할 수 있다. 예시적으로, 도 5를 참조하여 설명된 바와 같이, 제1 제어기(130c)는 제2 제어기(230)의 제어를 거치지 않고 또는 제2 제어기(230)의 버퍼링 없이, 제1 내지 제8 데이터 버퍼들(241~248) 및 제2 제어기(230)를 통해 휘발성 메모리 장치(210)에 데이터를 직접 기입할 수 있다.
쓰기 데이터에 에러가 없으면, 제2 제어기(230)는 쓰기 에러 신호(WRCRC)를 하이 레벨의 비활성 상태로 유지할 수 있다. 쓰기 데이터에 에러가 있으면, 제2 제어기(230)는 쓰기 에러 신호(WRCRC)를 로우 레벨의 활성 상태로 제어할 수 있다. 쓰기 에러 신호(WRCRC)의 활성화에 따라, 제1 제어기(130c)는 제2 쓰기 요청(W2)을 재전송할 수 있다.
예시적으로, 쓰기 데이터에 에러가 존재하는지 체크하는 것은 제2 제어기(230) 또는 휘발성 메모리 장치(210)에 의해 수행될 수 있다. 제2 제어기(230) 또는 휘발성 메모리 장치(210)는 쓰기 데이터에 에러가 존재할 때에 쓰기 에러 신호(WRCRC)를 로우 레벨로 활성화할 수 있다.
예를 들어, 휘발성 메모리 장치(210)가 출력하는 쓰기 에러 신호(WRCRC)는 제2 제어 신호(CTRL2)에 포함되어 제2 제어기(230)로 전달될 수 있다. 제2 제어기(230)는 휘발성 메모리 장치(210)로부터 전달된 쓰기 에러 신호(WRCRC)를 제1 제어기(130c)로 전달할 수 있다.
도 20은 도 18의 동작 방법에 따라 쓰기 동작이 수행되는 제2 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(220)에 대한 쓰기 동작을 유발하는 예가 도 20에 도시된다.
도 2, 도 16, 도 18 및 도 20을 참조하면, 프로세서(110)는 제1 쓰기 요청(W1)을 생성할 수 있다. S921 단계에서, 프로세서(110)는 제1 쓰기 요청(W1)을 제어기(130c)로 전달할 수 있다. 제1 제어기(130c)는 제1 쓰기 요청(W1)에 따라 제2 쓰기 요청(W2)을 생성할 수 있다.
S922 단계에서, 제1 제어기(130c)는 제2 쓰기 요청(W2)을 제2 제어기(230)로 전달할 수 있다. 제2 쓰기 요청(W2)은 제1 커맨드 및 어드레스(CA1)로서 제2 제어기(230)로 전달될 수 있다. 제2 쓰기 요청(W2)은 불휘발성 메모리 장치(220)에 대한 쓰기 동작을 유발한다. 따라서, 제2 쓰기 요청(W2)이 수신됨에 따라, 제2 제어기(230)는 쓰기 에러 신호(WRCRC)를 로우 레벨로 활성화할 수 있다.
제2 제어기(230)는 제2 쓰기 요청(W2)에 따라 제3 쓰기 요청(W3)을 생성할 수 있다. S923 단계에서, 제2 제어기(230)는 제3 쓰기 요청(W3)을 불휘발성 메모리 장치(220)로 전달할 수 있다. 제3 쓰기 요청(W3)은 제3 커맨드 및 어드레스(CA3)로서 불휘발성 메모리 장치(220)로 전달될 수 있다.
예를 들어, 제2 제어기(230)는 제2 쓰기 요청(W2)을 가공하지 않고 제3 쓰기 요청(W3)으로서 불휘발성 메모리 장치(220)로 전달할 수 있다. 다른 예로서, 제2 제어기(230)는 제2 쓰기 요청(W2)을 불휘발성 메모리 장치(220)에 적합한 형태로 가공하고, 가공된 결과를 제3 쓰기 요청(W3)으로서 불휘발성 메모리 장치(220)로 전달할 수 있다.
제3 쓰기 요청(W3)에 응답하여, 불휘발성 메모리 장치(220)는 쓰기 동작(WR)을 수행할 수 있다. 쓰기 에러 신호(WRCRC)가 활성화됨에 따라, S924 단계에서, 제1 제어기(130c)는 복원(RE)을 수행할 수 있다. 복원이 수행된 후에, S925 단계에서, 제1 제어기(130c)는 제2 쓰기 요청(S915)을 다시 전송함으로써 쓰기 재시도를 수행할 수 있다.
이후에, 불휘발성 메모리 장치(220)에서 쓰기 동작(WR)이 수행되는 동안, 쓰기 에러 신호(WRCRC)의 활성화에 따라 S926 단계 내지 S928 단계에서 제1 제어기(130c)는 복원 및 쓰기 재시도를 반복할 수 있다.
S929 단계에서, 불휘발성 메모리 장치(220)는 쓰기 동작(WR)이 완료 되었음을 제2 제어기(230)에 알릴 수 있다. 예를 들어, 불휘발성 메모리 장치(220)는 레디/비지(ready/busy) 신호(R/nB)가 레디(ready)를 가리키도록 제어함으로써, 쓰기 동작(WR)이 완료되었음을 제2 제어기(230)에 알릴 수 있다.
S930 단계에서, 제1 제어기(130c)는 제2 쓰기 요청(W2)을 제2 제어기(230)로 전송함으로써 쓰기 재시도를 수행할 수 있다. S930 단계에서 제2 쓰기 요청(W2)이 수신됨에 따라, 제2 제어기(230)는 쓰기 에러 신호(WRCRC)를 하이 레벨로 비활성화할 수 있다. 쓰기 에러 신호(WRCRC)가 비활성화됨에 따라, 제1 제어기(130c)는 쓰기 동작(WR)이 완료되었음을 식별할 수 있다.
상술된 바와 같이, 불휘발성 메모리 장치(220)에 대해 쓰기 동작(WR)이 수행될 때, 제2 제어기(230)는 에러가 발생하지 않았음에도 쓰기 에러 신호(WRCRC)를 활성화할 수 있다. 쓰기 에러 신호(WRCRC)를 활성화함에 따라, 제1 제어기(130c)는 횟수 제한 없이 쓰기 동작을 재전송할 수 있다. 따라서, 불휘발성 메모리 장치(220)에 대한 쓰기 동작(WR)이 완료될 때까지, 제1 제어기(130c)가 홀드(hold) 되며, 쓰기 에러가 방지된다.
도 21은 도 19의 동작 방법에 따라 쓰기 동작이 수행되는 제2 예를 보여준다. 예를 들어, 제1 커맨드 및 어드레스(CA1)가 불휘발성 메모리 장치(220)와 연관되며, 휘발성 메모리 장치(210)가 불휘발성 메모리 장치(220)의 캐시 메모리로 사용되는 예가 도 21에 도시된다.
도 2, 도 16, 도 19 및 도 21을 참조하면, 프로세서(110)는 제1 쓰기 요청(W1)을 생성할 수 있다. S941 단계에서, 프로세서(110)는 제1 쓰기 요청(W1)을 제어기(130c)로 전달할 수 있다. 제1 제어기(130c)는 제1 쓰기 요청(W1)에 따라 제2 쓰기 요청(W2)을 생성할 수 있다.
S942 단계에서, 제1 제어기(130c)는 제2 쓰기 요청(W2)을 제2 제어기(230)로 전달할 수 있다. 제2 쓰기 요청(W2)은 제1 커맨드 및 어드레스(CA1)로서 제2 제어기(230)로 전달될 수 있다. 제2 제어기(230)는 제1 커맨드 및 어드레스(CA1)와 연관된 저장 공간이 휘발성 메모리 장치(210)에 사상되어 있는지 판단할 수 있다.
예를 들어, 제1 커맨드 및 어드레스(CA1)와 연관된 저장 공간은 휘발성 메모리 장치(210)에 사상되어 있지 않을 수 있다. 또한, 휘발성 메모리 장치(210)의 자유 저장 공간이 제1 커맨드 및 어드레스(CA1)와 연관된 저장 공간을 제공하기에 부족하여, 불휘발성 메모리 장치(220)에 대한 쓰기 동작을 유발할 수 있다.
제2 제어기(230)는 휘발성 메모리 장치(210)에 사상된 저장 공간들 중 특정한 저장 공간을 선택하고, 선택된 저장 공간을 제거할 수 있다. 예를 들어, 선택된 저장 공간은 오염된(dirty) 저장 공간일 수 있다. 제2 제어기(230)는 선택된 저장 공간을 불휘발성 메모리 장치(220)로 반환함으로써, 불휘발성 메모리 장치(220)에 대한 쓰기 동작을 유발할 수 있다.
S943 단계에서, 제2 제어기(230)는 선택된 저장 공간에 대한 읽기 요청(R)을 휘발성 메모리 장치(210)로 전송할 수 있다. 읽기 요청(R)은 제2 커맨드 및 어드레스(CA2) 또는 제2 제어 신호(CTRL2)로서 휘발성 메모리 장치(210)로 전달될 수 있다.
예를 들어, 읽기 요청(R)은 제2 커맨드 및 어드레스(CA2)로서 휘발성 메모리 장치(210)로 전달될 수 있다. 다른 예로서, 읽기 요청(R)은 제2 제어 신호(CTRL2)로서 휘발성 메모리 장치(210)로 전달될 수 있다. 예를 들어, 제2 제어기(230)는 특정한 제어 신호, 예를 들어 SAVEn을 활성화할 수 있다.
특정한 제어 신호가 활성화되면, 휘발성 메모리 장치(210)는 저장된 데이터, 예를 들어 내부 스케줄에 의해 지정된 위치(예를 들어, 뱅크)의 데이터 또는 모든 데이터를 출력할 수 있다. 제2 제어기(230)는 휘발성 메모리 장치(210)로부터 전달되는 데이터를 저장할 수 있다.
휘발성 메모리 장치(210)는 읽기 요청(R)에 따라 읽기 동작(RD)을 수행할 수 있다. 휘발성 메모리 장치(210)에서 읽혀진 데이터는 S944 단계에서 제2 제어기(230)로 전달될 수 있다. 휘발성 메모리 장치(210)로부터 선택된 저장 공간의 데이터가 읽혀짐에 따라, S944 단계에서, 제2 제어기(230)는 불휘발성 메모리 장치(220)로 제3 쓰기 요청(W3)을 전송할 수 있다. 제3 쓰기 요청(W3)은 제3 커맨드 및 어드레스(CA3) 또는 제3 제어 신호(CTRL3)로서 불휘발성 메모리 장치(220)로 전달될 수 있다.
제3 쓰기 요청(W3)에 따라, 불휘발성 메모리 장치(220)는 쓰기 동작(WR)을 수행할 수 있다. 불휘발성 메모리 장치(220)가 쓰기 동작을 수행하는 동안, 쓰기 에러 신호(WRCRC)가 활성화되어 있다. 따라서, 불휘발성 메모리 장치(220)가 쓰기 동작을 수행하는 동안, 제1 제어기(130c)는 S946 단계 내지 S950 단계에서 복원(RE) 및 제2 쓰기 요청(W2)을 전송하는 쓰기 재시도를 반복할 수 있다.
S951 단계에서, 불휘발성 메모리 장치(220)는 쓰기 동작(WR)이 완료 되었음을 제2 제어기(230)에 알릴 수 있다. 쓰기 동작(WR)이 완료된 후에, S952 단계에서, 제1 제어기(130c)는 제2 쓰기 요청(W2)을 전송하여 쓰기 재시도를 수행할 수 있다.
불휘발성 메모리 장치(220)의 쓰기 동작이 완료된 후에 제2 쓰기 요청(W2)이 수신되면(S952 단계), 제2 제어기(230)는 쓰기 에러 신호(WRCRC)를 비활성화할 수 있다. 제2 제어기(230)는 S952 단계의 제2 쓰기 요청(W2)에 따라, 휘발성 메모리 장치(210)에 제1 커맨드 및 어드레스(CA1)와 연관된 저장 공간을 사상할 수 있다.
S953 단계에서, 제2 제어기(230)는 휘발성 메모리 장치(210)에 제3 쓰기 요청(W3)을 전송할 수 있다. 제3 쓰기 요청(W3)은 제2 커맨드 및 어드레스(CA2) 또는 제2 제어 신호(CTRL2)로서 전달될 수 있다. 제3 쓰기 요청(W3)에 따라, 휘발성 메모리 장치(210)는 쓰기 동작(WR)을 수행할 수 있다.
도 22는 도 21의 읽기 동작의 변형 예를 보여준다. 도 2, 도 16, 도 19 및 도 22를 참조하면, S961 단계 내지 S971 단계는 도 21의 S941 단계 내지 S951 단계와 동일하게 수행된다. 따라서, 중복되는 설명은 생략된다.
불휘발성 메모리 장치(220)에서 쓰기 동작(WR)이 완료된 후에, S972 단계에서, 제1 제어기(130c)는 제2 쓰기 요청(W2)을 제2 제어기(230)로 전달할 수 있다. 제2 제어기(230)는 제2 쓰기 요청(W2)을 제3 쓰기 요청(W3)으로서 휘발성 메모리 장치(210)로 전달할 수 있다.
제1 제어기(130c)로부터 전달되는 데이터는 제2 제어기(230)에 의해 제어되거나 버퍼링되지 않고, 제2 제어기(230) 및 제1 내지 제8 데이터 버퍼들(241~248)을 통해 휘발성 메모리 장치(210)로 직접 전달될 수 있다. LRDIMM은 동적 랜덤 액세스 메모리(DRAM)에 기반하므로, 휘발성 메모리 장치(210)는 제1 제어기(130a)와 직접 통신할 수 있다.
도 23은 도 21의 읽기 동작의 다른 변형 예를 보여준다. 도 2, 도 16, 도 19 및 도 23을 참조하면, 제2 제어기(230)는 읽기 동작(RD)이 완료됨에 따라 제3 쓰기 요청(W3)을 불휘발성 메모리 장치(220)로 전송하지 않고 대기할 수 있다. 읽기 동작(RD)이 완료된 후에, S947 단계에서 제1 제어기(130c)로부터 제2 쓰기 요청(W2)이 전달될 수 있다. S947 단계의 제2 쓰기 요청(W2)에 응답하여, 제2 제어기(230)는 불휘발성 메모리 장치(220)로 제3 쓰기 요청(W3)을 전송할 수 있다(S954 단계).
예시적으로, 도 13 및 도 14에서 제2 제어기(230)는 SPD 장치(141) 및 레지스터 갱신기(142)를 포함하는 것으로 설명되었다. 또한, 도 16에서 제2 제어기(230)는 쓰기 에러 제어기(143)를 포함하는 것으로 설명되었다. 본 발명의 실시 예에 따른 제2 제어기(230)는 SPD 장치(141), 레지스터 갱신기(142), 그리고 쓰기 에러 제어기(143)를 모두 포함할 수 있다.
레지스터 갱신기(142)는 횟수 제한 없이 읽기 재시도를 수행하도록, 제1 제어기(130a, 130b 또는 130c)의 레지스터(132)를 갱신할 수 있다. 또한, 레지스터 갱신기(142)는 횟수 제한 없이 쓰기 재시도를 수행하도록, 제1 제어기(130a, 130b 또는 130c)의 레지스터(132)를 갱신할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 컴퓨팅 장치
110: 프로세서
111: 제1 캐시 메모리
120: 제2 캐시 메모리
130a: 제1 제어기
131: 타임아웃 제어기
132: 레지스터
140a: 주 메모리
141: 직렬 프레즌스 검출 장치
142: 레지스터 갱신기
143: 쓰기 에러 제어기
150: 스토리지 인터페이스
160: 스토리지 장치
210: 휘발성 메모리 장치
220: 불휘발성 메모리 장치
230: 제2 제어기
241~248: 데이터 버퍼들
110: 프로세서
111: 제1 캐시 메모리
120: 제2 캐시 메모리
130a: 제1 제어기
131: 타임아웃 제어기
132: 레지스터
140a: 주 메모리
141: 직렬 프레즌스 검출 장치
142: 레지스터 갱신기
143: 쓰기 에러 제어기
150: 스토리지 인터페이스
160: 스토리지 장치
210: 휘발성 메모리 장치
220: 불휘발성 메모리 장치
230: 제2 제어기
241~248: 데이터 버퍼들
Claims (20)
- 불휘발성 메모리 모듈; 그리고
상기 불휘발성 메모리 모듈을 제어하도록 구성되는 제1 제어기를 포함하고,
상기 불휘발성 메모리 모듈은
휘발성 메모리 장치;
불휘발성 메모리 장치; 그리고
상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하도록 구성되는 제2 제어기를 포함하고,
상기 제1 제어기는 상기 제2 제어기로 읽기 요청을 전송하도록 구성되고,
상기 읽기 요청에 응답하여, 상기 제2 제어기는 상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치 중 하나가 읽기 동작을 시작하도록 제어하고,
상기 제2 제어기는 상기 읽기 요청에 응답하여 상기 휘발성 메모리 장치 또는 상기 불휘발성 메모리 장치로부 터 데이터를 읽도록 상기 휘발성 메모리 장치 또는 상기 불휘발성 메모리 장치를 제어하고, 그리고
상기 읽기 요청에 따라 상기 휘발성 메모리 장치 또는 상기 불휘발성 메모리 장치로부터 상기 데이터를 읽는 동안, 상기 불휘발성 메모리 모듈로부터 정상 데이터가 수신되지 않으면, 상기 제1 제어기는 상기 제2 제어기로 상기 읽기 요청을 횟수 제한 없이 재전송하도록 구성되고,
상기 제1 제어기는 상기 읽기 요청을 상기 제2 제어기로 재전송하는 상기 횟수 제한을 저장하는 레지스터를 포함하고,
상기 제2 제어기는 상기 레지스터에 저장된 상기 횟수 제한을 상기 레지스터로부터 제거함으로써, 상기 제1 제어기로부터 상기 읽기 요청의 재전송을 상기 횟수 제한 없이 수신하도록 구성되고,
상기 제2 제어기가 상기 불휘발성 메모리 장치로부터 데이터를 읽는 동안, 상기 제2 제어기는 상기 읽기 요청이 상기 제1 제어기로부터 재전송되어 수신되는 것을 무시하도록 구성되고, 그리고
상기 불휘발성 메모리 장치로부터 상기 데이터를 모두 읽은 후에 상기 읽기 요청이 재전송되는 것에 응답하여, 상기 제2 제어기는 상기 읽은 데이터를 상기 제1 제어기로 전달하도록 구성되는 메모리 시스템. - 제1항에 있어서,
상기 읽기 요청을 처음으로 전송한 후에 상기 정상 데이터가 수신되지 않고 제1 시간이 경과하면, 상기 제1 제어기는 상기 읽기 요청을 재전송하고, 상기 읽기 요청이 재전송된 후에 상기 정상 데이터가 수신되지 않고 제2 시간이 경과하면 상기 제1 제어기는 상기 읽기 요청을 재전송하는 메모리 시스템. - 제2항에 있어서,
상기 제2 시간은 상기 제1 시간보다 짧은 메모리 시스템. - 제1항에 있어서,
상기 읽기 요청이 처음으로 전송되는 것에 응답하여 상기 제2 제어기는 상기 불휘발성 메모리 장치 및 상기 휘발성 메모리 장치 중 하나로부터 데이터를 읽도록 구성되는 메모리 시스템. - 제1항에 있어서,
상기 제1 제어기는 상기 읽기 요청이 처음으로 전송된 후에 상기 정상 데이터가 수신되지 않고 제3 시간이 경과하면, 상기 읽기 동작이 실패한 것으로 판단하는 메모리 시스템. - 제5항에 있어서,
상기 제3 시간은 상기 제2 제어기가 상기 불휘발성 메모리 장치로부터 데이터를 읽는 시간보다 긴 메모리 시스템. - 제1항에 있어서,
상기 제2 제어기는 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치를 포함하고,
상기 제1 제어기가 상기 직렬 프레즌스 검출 장치를 액세스할 때에, 상기 제2 제어기는 상기 레지스터에 저장된 상기 횟수 제한을 상기 레지스터로부터 제거하도록 구성되는 메모리 시스템. - 제1항에 있어서,
상기 제2 제어기는 시스템 관리 버스(SMBus, System Management Bus)를 통해 상기 레지스터에 저장된 상기 횟수 제한을 상기 레지스터로부터 제거하도록 구성되는 메모리 시스템. - 제1항에 있어서,
쓰기 동작 시에, 상기 제1 제어기는 상기 제2 제어기로 쓰기 요청을 전송하도록 구성되고,
상기 쓰기 요청에 따라 상기 제2 제어기가 상기 불휘발성 메모리 장치에 데이터를 기입할 때에, 상기 제2 제어기는 쓰기 에러 신호를 활성화하여 상기 제1 제어기로 전달하도록 구성되는 메모리 시스템. - 제9항에 있어서,
상기 쓰기 요청에 따라 상기 제2 제어기는 상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치 중 하나에 대해 쓰기를 수행하도록 구성되고,
상기 쓰기 요청에 따라 상기 불휘발성 메모리 장치에 대해 쓰기가 수행될 때, 상기 제2 제어기는 상기 쓰기 에러 신호를 비활성화하도록 구성되는 메모리 시스템. - 제9항에 있어서,
상기 쓰기 에러 신호가 활성화되면, 상기 제1 제어기는 상기 제2 제어기에 상기 쓰기 요청을 재전송하도록 구성되는 메모리 시스템. - 제11항에 있어서,
상기 불휘발성 메모리 장치에 대한 상기 데이터의 상기 기입이 완료된 후 상기 쓰기 요청이 재전송되면, 상기 제2 제어기는 상기 쓰기 에러 신호를 비활성화하도록 구성되는 메모리 시스템. - 제11항에 있어서,
상기 불휘발성 메모리 장치에 상기 데이터를 기입하는 동안, 상기 제2 제어기는 상기 쓰기 요청이 재전송되는 것을 무시하도록 구성되는 메모리 시스템. - 휘발성 메모리 장치;
불휘발성 메모리 장치; 그리고
상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하도록 구성되는 제어기를 포함하고,
쓰기 동작 시에, 상기 제어기는 외부의 장치로부터 수신되는 쓰기 요청에 응답하여 상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치 중 하나에 대해 쓰기를 수행하도록 구성되고,
상기 불휘발성 메모리 장치에 대해 상기 쓰기를 수행하는 동안, 상기 제어기는 상기 외부의 장치로 출력되는 쓰기 에러 신호를 활성화하도록 구성되고,
상기 쓰기 에러 신호는 상기 외부의 장치의 상기 쓰기 요청의 재전송을 유발하고,
상기 제어기는 상기 외부의 장치의 레지스터의 상기 외부의 장치의 상기 제어기에 대한 읽기 재전송의 횟수를 가리키는 값을 갱신하도록 구성되고,
상기 제어기는 상기 외부의 장치의 레지스터에 저장된 상기 횟수를 가리키는 값을 상기 레지스터로부터 제거함으로써, 읽기 동작 시에 상기 외부의 장치로부터 상기 읽기 재전송을 횟수 제한 없이 수신하도록 구성되고,
상기 읽기 동작 시에, 상기 제어기는 읽기 요청에 응답하여 상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치 중 하나에 대해 읽기를 수행하도록 구성되고,
상기 불휘발성 메모리 장치에 대해 상기 읽기 동작을 수행하는 동안, 상기 제어기는 상기 읽기 재전송이 상기 외부의 장치로부터 수신되는 것을 무시하도록 구성되고, 그리고
상기 불휘발성 메모리 장치에 대한 상기 읽기 동작을 완료한 후에 상기 외부의 장치로부터 상기 읽기 재전송이 수신되는 것에 응답하여, 상기 제어기는 상기 읽기 동작에서 읽은 데이터를 상기 외부의 장치로 전달하도록 구성되는 메모리 모듈. - 제14항에 있어서,
상기 불휘발성 메모리 장치에 대해 상기 쓰기를 수행하는 동안, 상기 제어기는 상기 쓰기 요청이 재전송되는 것을 무시하도록 구성되는 메모리 모듈. - 레지스터를 포함하는 외부의 제어기와 통신하도록 구성되고, 그리고 불휘발성 메모리, 휘발성 메모리, 그리고 상기 불휘발성 메모리 및 상기 휘발성 메모리를 제어하도록 구성되는 제어기를 포함하는 메모리 모듈의 동작 방법에 있어서:
상기 메모리 모듈에서 파워 온을 검출하는 단계; 그리고
상기 파워 온이 검출되면, 상기 메모리 모듈에 의해 시스템 관리 버스(SMBus, System Management Bus)를 통해 상기 외부의 제어기로 값을 전송하여 상기 외부의 제어기의 레지스터를 갱신하는 단계를 포함하고,
상기 값은 상기 외부의 제어기로부터 상기 메모리 모듈로 읽기 재시도가 수행되는 횟수를 가리키고,
상기 메모리 모듈은 상기 외부의 제어기의 레지스터에 저장된 값을 횟수 제한이 없음을 가리키는 상기 값으로 갱신함으로써, 읽기 동작 시에 상기 외부의 제어기로부터 상기 읽기 재시도를 횟수 제한 없이 수신하도록 구성되고,
상기 읽기 동작 시에, 상기 제어기는 읽기 요청에 응답하여 상기 휘발성 메모리 및 상기 불휘발성 메모리 중 하나에 대해 읽기를 수행하도록 구성되고,
상기 불휘발성 메모리에 대해 상기 읽기를 수행하는 동안, 상기 제어기는 상기 읽기 재시도가 상기 외부의 제어기로부터 수신되는 것을 무시하도록 구성되고, 그리고
상기 불휘발성 메모리에 대한 상기 읽기를 완료한 후에 상기 읽기 재시도가 상기 외부의 제어기로부터 수신되는 것에 응답하여, 상기 제어기는 상기 읽기에서 읽혀진 데이터를 상기 외부의 제어기로 전달하도록 구성되는 동작 방법. - 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180035270A KR102549584B1 (ko) | 2018-03-27 | 2018-03-27 | 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 |
US16/162,821 US11210208B2 (en) | 2018-03-27 | 2018-10-17 | Memory system including memory module, memory module, and operating method of memory module |
US16/218,720 US10990463B2 (en) | 2018-03-27 | 2018-12-13 | Semiconductor memory module and memory system including the same |
CN201910231779.0A CN110308869A (zh) | 2018-03-27 | 2019-03-26 | 存储器***、存储器模块以及操作存储器模块的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180035270A KR102549584B1 (ko) | 2018-03-27 | 2018-03-27 | 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190113080A KR20190113080A (ko) | 2019-10-08 |
KR102549584B1 true KR102549584B1 (ko) | 2023-06-30 |
Family
ID=68056313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180035270A KR102549584B1 (ko) | 2018-03-27 | 2018-03-27 | 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11210208B2 (ko) |
KR (1) | KR102549584B1 (ko) |
CN (1) | CN110308869A (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11392441B2 (en) | 2019-12-30 | 2022-07-19 | Advanced Micro Devices, Inc. | Error reporting for non-volatile memory modules |
Family Cites Families (33)
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 |
US6633936B1 (en) * | 2000-09-26 | 2003-10-14 | Broadcom Corporation | Adaptive retry mechanism |
US7337371B2 (en) | 2003-12-30 | 2008-02-26 | Intel Corporation | Method and apparatus to handle parity errors in flow control channels |
JP4679370B2 (ja) * | 2004-02-03 | 2011-04-27 | パナソニック株式会社 | データ処理装置並びにメモリカードの設定方法 |
US7380068B2 (en) * | 2005-10-27 | 2008-05-27 | International Business Machines Corporation | System and method for contention-based cache performance optimization |
US20070271495A1 (en) | 2006-05-18 | 2007-11-22 | Ian Shaeffer | System to detect and identify errors in control information, read data and/or write data |
US8327076B2 (en) | 2009-05-13 | 2012-12-04 | Seagate Technology Llc | Systems and methods of tiered caching |
US8854882B2 (en) * | 2010-01-27 | 2014-10-07 | Intelligent Intellectual Property Holdings 2 Llc | Configuring storage cells |
JP5870111B2 (ja) * | 2010-11-18 | 2016-02-24 | イーライ リリー アンド カンパニー | mGluR2/3アンタゴニストとしての4−置換−3−ベンジルオキシ−ビシクロ[3.1.0]ヘキサン化合物 |
US9552175B2 (en) * | 2011-02-08 | 2017-01-24 | Diablo Technologies Inc. | System and method for providing a command buffer in a memory system |
US8363484B2 (en) * | 2011-03-09 | 2013-01-29 | Arm Limited | Memory device and method of controlling a write operation within a memory device |
KR101826140B1 (ko) * | 2011-08-04 | 2018-03-22 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 메모리 시스템 |
KR20130034522A (ko) * | 2011-09-28 | 2013-04-05 | 삼성전자주식회사 | 비휘발성 메모리 장치의 데이터 리드 방법, 및 이를 수행하는 장치 |
WO2013048493A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Memory channel that supports near memory and far memory access |
US9230825B2 (en) * | 2012-10-29 | 2016-01-05 | Lam Research Corporation | Method of tungsten etching |
US20150186278A1 (en) | 2013-12-26 | 2015-07-02 | Sarathy Jayakumar | Runtime persistence |
US20160103613A1 (en) | 2014-10-13 | 2016-04-14 | Microsoft Corporation | Tagging for storage device regions |
WO2016171934A1 (en) * | 2015-04-20 | 2016-10-27 | Netlist, Inc. | Memory module and system and method of operation |
US20160321010A1 (en) * | 2015-04-28 | 2016-11-03 | Kabushiki Kaisha Toshiba | Storage system having a host directly manage physical data locations of storage device |
US10152413B2 (en) | 2015-06-08 | 2018-12-11 | Samsung Electronics Co. Ltd. | Nonvolatile memory module and operation method thereof |
US10067872B2 (en) | 2015-06-22 | 2018-09-04 | Advanced Micro Devices, Inc. | Memory speculation for multiple memories |
US9836404B2 (en) | 2015-08-14 | 2017-12-05 | Netapp, Inc. | Write mirroring to storage class memory devices |
KR102372730B1 (ko) * | 2015-08-25 | 2022-03-10 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이의 동작 방법 및 이를 포함하는 에스에스디 |
US10303372B2 (en) | 2015-12-01 | 2019-05-28 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and operation method thereof |
KR102523141B1 (ko) | 2016-02-15 | 2023-04-20 | 삼성전자주식회사 | 휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 모듈 |
US10310980B2 (en) | 2016-04-01 | 2019-06-04 | Seagate Technology Llc | Prefetch command optimization for tiered storage systems |
KR20180009217A (ko) | 2016-07-18 | 2018-01-26 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법 |
CN107797821B (zh) * | 2016-09-05 | 2021-10-08 | 上海宝存信息科技有限公司 | 重试读取方法以及使用该方法的装置 |
JP6675290B2 (ja) * | 2016-09-09 | 2020-04-01 | キオクシア株式会社 | ストレージシステム及び方法 |
CN108389600B (zh) * | 2017-02-02 | 2021-02-26 | 慧荣科技股份有限公司 | 数据储存装置以及参数改写方法 |
KR102310117B1 (ko) | 2017-07-07 | 2021-10-08 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
JP2019053806A (ja) * | 2017-09-15 | 2019-04-04 | 東芝メモリ株式会社 | メモリシステム、及びメモリシステムの制御方法 |
US10776267B2 (en) | 2017-12-11 | 2020-09-15 | Red Hat, Inc. | Mirrored byte addressable storage |
-
2018
- 2018-03-27 KR KR1020180035270A patent/KR102549584B1/ko active IP Right Grant
- 2018-10-17 US US16/162,821 patent/US11210208B2/en active Active
-
2019
- 2019-03-26 CN CN201910231779.0A patent/CN110308869A/zh active Pending
Non-Patent Citations (7)
Title |
---|
미국공개특허 제2013-0080858호(2013.03.28.) 1부.* |
미국공개특허 제2014-0056068호(2014.02.27.) 1부.* |
미국특허공보 제6633936호(2003.10.14.) 1부.* |
일본공개특허 제2011-108252호(2011.06.02.) 1부.* |
일본공개특허 제2018-041404호(2018.03.15.) 1부.* |
한국공개특허 제10-2013-0015643호(2013.02.14.) 1부.* |
한국공개특허 제10-2017-0096277호(2017.08.24.) 1부.* |
Also Published As
Publication number | Publication date |
---|---|
US20190303282A1 (en) | 2019-10-03 |
CN110308869A (zh) | 2019-10-08 |
KR20190113080A (ko) | 2019-10-08 |
US11210208B2 (en) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11094364B2 (en) | Data storage device and operating method thereof | |
US10120600B2 (en) | Persistent memory descriptor | |
KR20190115923A (ko) | 메모리 모듈 및 메모리 모듈을 포함하는 메모리 시스템 | |
KR102538679B1 (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 | |
JP2015011421A (ja) | 記憶制御装置、記憶装置、および、その記憶制御方法 | |
US11748025B2 (en) | Nonvolatile memory device, data storage device including the same and operating method thereof | |
KR102549584B1 (ko) | 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 | |
US11513736B2 (en) | Revised host command generation for unaligned access | |
CN116888585A (zh) | 用于简单复制命令的基于高速缓存的流 | |
JP6228523B2 (ja) | メモリ制御回路および半導体記憶装置 | |
US20140129788A1 (en) | High-performance large scale semiconductor storage module with hybrid technology | |
KR102583266B1 (ko) | 스토리지 모듈, 스토리지 모듈의 동작 방법, 및 스토리지 모듈을 제어하는 호스트의 동작 방법 | |
CN110299181B (zh) | 非易失性存储器装置、其操作方法及数据存储装置 | |
US20220147497A1 (en) | Automatic flexible schema detection and migration | |
WO2023101720A1 (en) | Centralized sram error location detection and recovery mechanism | |
US20210333996A1 (en) | Data Parking for SSDs with Streams | |
KR102427323B1 (ko) | 반도체 메모리 모듈, 반도체 메모리 시스템, 그리고 반도체 메모리 모듈을 액세스하는 액세스 방법 | |
TWI741078B (zh) | 半導體裝置 | |
US11397699B2 (en) | Interrupt coalescing protection logic | |
US20230112776A1 (en) | Operation method of memory module, operation method of memory controller, and operation method of memory system | |
US12039173B2 (en) | Data storage device that detects and releases input queue bottlenecks | |
US20240111426A1 (en) | Data Storage Device That Detects and Releases Bottlenecks In Hardware | |
EP4160419A1 (en) | Operation method of memory module, operation method of memory controller, and operation method of memory system | |
US11966582B2 (en) | Data storage device that detects and releases bottlenecks | |
US11934693B2 (en) | Detection of scattered data locations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant |