KR102549584B1 - 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 - Google Patents

메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 Download PDF

Info

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
Application number
KR1020180035270A
Other languages
English (en)
Other versions
KR20190113080A (ko
Inventor
김대정
강지석
고태경
김성준
김우섭
박찬익
신원제
유용준
최인수
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180035270A priority Critical patent/KR102549584B1/ko
Priority to US16/162,821 priority patent/US11210208B2/en
Priority to US16/218,720 priority patent/US10990463B2/en
Priority to CN201910231779.0A priority patent/CN110308869A/zh
Publication of KR20190113080A publication Critical patent/KR20190113080A/ko
Application granted granted Critical
Publication of KR102549584B1 publication Critical patent/KR102549584B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/073Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F2003/0697Digital 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1004Compatibility, e.g. with legacy hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local 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

메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법{MEMORY SYSTEM INCLUDING MEMORY MODULE, MEMORY MODULE, AND OPERATING METHOD OF MEMORY MODULE}
본 발명은 반도체 메모리에 관한 것으로, 더 상세하게는 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법에 관한 것이다.
반도체 메모리는 반도체 소자들을 이용하여 데이터를 저장하는 데에 사용된다. 반도체 메모리는 동적 랜덤 액세스 메모리 또는 정정 랜덤 액세스 메모리와 같은 휘발성 메모리, 그리고 플래시 메모리, 상 변화 메모리, 강유전체 메모리, 자기 메모리, 저항성 메모리 등과 같은 불휘발성 메모리를 포함한다.
통상적으로, 휘발성 메모리는 고속의 랜덤 액세스를 지원하며, 개인용 컴퓨터, 서버 또는 워크스테이션과 같은 컴퓨팅 시스템의 주 메모리로 사용된다. 불휘발성 메모리는 큰 저장 용량을 지원하며, 컴퓨팅 시스템의 보조 스토리지로 사용된다.
근래에, 스토리지 클래스 메모리(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 예를 보여준다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
도 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: 데이터 버퍼들

Claims (20)

  1. 불휘발성 메모리 모듈; 그리고
    상기 불휘발성 메모리 모듈을 제어하도록 구성되는 제1 제어기를 포함하고,
    상기 불휘발성 메모리 모듈은
    휘발성 메모리 장치;
    불휘발성 메모리 장치; 그리고
    상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하도록 구성되는 제2 제어기를 포함하고,
    상기 제1 제어기는 상기 제2 제어기로 읽기 요청을 전송하도록 구성되고,
    상기 읽기 요청에 응답하여, 상기 제2 제어기는 상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치 중 하나가 읽기 동작을 시작하도록 제어하고,
    상기 제2 제어기는 상기 읽기 요청에 응답하여 상기 휘발성 메모리 장치 또는 상기 불휘발성 메모리 장치로부 터 데이터를 읽도록 상기 휘발성 메모리 장치 또는 상기 불휘발성 메모리 장치를 제어하고, 그리고
    상기 읽기 요청에 따라 상기 휘발성 메모리 장치 또는 상기 불휘발성 메모리 장치로부터 상기 데이터를 읽는 동안, 상기 불휘발성 메모리 모듈로부터 정상 데이터가 수신되지 않으면, 상기 제1 제어기는 상기 제2 제어기로 상기 읽기 요청을 횟수 제한 없이 재전송하도록 구성되고,
    상기 제1 제어기는 상기 읽기 요청을 상기 제2 제어기로 재전송하는 상기 횟수 제한을 저장하는 레지스터를 포함하고,
    상기 제2 제어기는 상기 레지스터에 저장된 상기 횟수 제한을 상기 레지스터로부터 제거함으로써, 상기 제1 제어기로부터 상기 읽기 요청의 재전송을 상기 횟수 제한 없이 수신하도록 구성되고,
    상기 제2 제어기가 상기 불휘발성 메모리 장치로부터 데이터를 읽는 동안, 상기 제2 제어기는 상기 읽기 요청이 상기 제1 제어기로부터 재전송되어 수신되는 것을 무시하도록 구성되고, 그리고
    상기 불휘발성 메모리 장치로부터 상기 데이터를 모두 읽은 후에 상기 읽기 요청이 재전송되는 것에 응답하여, 상기 제2 제어기는 상기 읽은 데이터를 상기 제1 제어기로 전달하도록 구성되는 메모리 시스템.
  2. 제1항에 있어서,
    상기 읽기 요청을 처음으로 전송한 후에 상기 정상 데이터가 수신되지 않고 제1 시간이 경과하면, 상기 제1 제어기는 상기 읽기 요청을 재전송하고, 상기 읽기 요청이 재전송된 후에 상기 정상 데이터가 수신되지 않고 제2 시간이 경과하면 상기 제1 제어기는 상기 읽기 요청을 재전송하는 메모리 시스템.
  3. 제2항에 있어서,
    상기 제2 시간은 상기 제1 시간보다 짧은 메모리 시스템.
  4. 제1항에 있어서,
    상기 읽기 요청이 처음으로 전송되는 것에 응답하여 상기 제2 제어기는 상기 불휘발성 메모리 장치 및 상기 휘발성 메모리 장치 중 하나로부터 데이터를 읽도록 구성되는 메모리 시스템.
  5. 제1항에 있어서,
    상기 제1 제어기는 상기 읽기 요청이 처음으로 전송된 후에 상기 정상 데이터가 수신되지 않고 제3 시간이 경과하면, 상기 읽기 동작이 실패한 것으로 판단하는 메모리 시스템.
  6. 제5항에 있어서,
    상기 제3 시간은 상기 제2 제어기가 상기 불휘발성 메모리 장치로부터 데이터를 읽는 시간보다 긴 메모리 시스템.
  7. 제1항에 있어서,
    상기 제2 제어기는 직렬 프레즌스 검출(SPD, Serial Presence Detect) 장치를 포함하고,
    상기 제1 제어기가 상기 직렬 프레즌스 검출 장치를 액세스할 때에, 상기 제2 제어기는 상기 레지스터에 저장된 상기 횟수 제한을 상기 레지스터로부터 제거하도록 구성되는 메모리 시스템.
  8. 제1항에 있어서,
    상기 제2 제어기는 시스템 관리 버스(SMBus, System Management Bus)를 통해 상기 레지스터에 저장된 상기 횟수 제한을 상기 레지스터로부터 제거하도록 구성되는 메모리 시스템.
  9. 제1항에 있어서,
    쓰기 동작 시에, 상기 제1 제어기는 상기 제2 제어기로 쓰기 요청을 전송하도록 구성되고,
    상기 쓰기 요청에 따라 상기 제2 제어기가 상기 불휘발성 메모리 장치에 데이터를 기입할 때에, 상기 제2 제어기는 쓰기 에러 신호를 활성화하여 상기 제1 제어기로 전달하도록 구성되는 메모리 시스템.
  10. 제9항에 있어서,
    상기 쓰기 요청에 따라 상기 제2 제어기는 상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치 중 하나에 대해 쓰기를 수행하도록 구성되고,
    상기 쓰기 요청에 따라 상기 불휘발성 메모리 장치에 대해 쓰기가 수행될 때, 상기 제2 제어기는 상기 쓰기 에러 신호를 비활성화하도록 구성되는 메모리 시스템.
  11. 제9항에 있어서,
    상기 쓰기 에러 신호가 활성화되면, 상기 제1 제어기는 상기 제2 제어기에 상기 쓰기 요청을 재전송하도록 구성되는 메모리 시스템.
  12. 제11항에 있어서,
    상기 불휘발성 메모리 장치에 대한 상기 데이터의 상기 기입이 완료된 후 상기 쓰기 요청이 재전송되면, 상기 제2 제어기는 상기 쓰기 에러 신호를 비활성화하도록 구성되는 메모리 시스템.
  13. 제11항에 있어서,
    상기 불휘발성 메모리 장치에 상기 데이터를 기입하는 동안, 상기 제2 제어기는 상기 쓰기 요청이 재전송되는 것을 무시하도록 구성되는 메모리 시스템.
  14. 휘발성 메모리 장치;
    불휘발성 메모리 장치; 그리고
    상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하도록 구성되는 제어기를 포함하고,
    쓰기 동작 시에, 상기 제어기는 외부의 장치로부터 수신되는 쓰기 요청에 응답하여 상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치 중 하나에 대해 쓰기를 수행하도록 구성되고,
    상기 불휘발성 메모리 장치에 대해 상기 쓰기를 수행하는 동안, 상기 제어기는 상기 외부의 장치로 출력되는 쓰기 에러 신호를 활성화하도록 구성되고,
    상기 쓰기 에러 신호는 상기 외부의 장치의 상기 쓰기 요청의 재전송을 유발하고,
    상기 제어기는 상기 외부의 장치의 레지스터의 상기 외부의 장치의 상기 제어기에 대한 읽기 재전송의 횟수를 가리키는 값을 갱신하도록 구성되고,
    상기 제어기는 상기 외부의 장치의 레지스터에 저장된 상기 횟수를 가리키는 값을 상기 레지스터로부터 제거함으로써, 읽기 동작 시에 상기 외부의 장치로부터 상기 읽기 재전송을 횟수 제한 없이 수신하도록 구성되고,
    상기 읽기 동작 시에, 상기 제어기는 읽기 요청에 응답하여 상기 휘발성 메모리 장치 및 상기 불휘발성 메모리 장치 중 하나에 대해 읽기를 수행하도록 구성되고,
    상기 불휘발성 메모리 장치에 대해 상기 읽기 동작을 수행하는 동안, 상기 제어기는 상기 읽기 재전송이 상기 외부의 장치로부터 수신되는 것을 무시하도록 구성되고, 그리고
    상기 불휘발성 메모리 장치에 대한 상기 읽기 동작을 완료한 후에 상기 외부의 장치로부터 상기 읽기 재전송이 수신되는 것에 응답하여, 상기 제어기는 상기 읽기 동작에서 읽은 데이터를 상기 외부의 장치로 전달하도록 구성되는 메모리 모듈.
  15. 제14항에 있어서,
    상기 불휘발성 메모리 장치에 대해 상기 쓰기를 수행하는 동안, 상기 제어기는 상기 쓰기 요청이 재전송되는 것을 무시하도록 구성되는 메모리 모듈.
  16. 레지스터를 포함하는 외부의 제어기와 통신하도록 구성되고, 그리고 불휘발성 메모리, 휘발성 메모리, 그리고 상기 불휘발성 메모리 및 상기 휘발성 메모리를 제어하도록 구성되는 제어기를 포함하는 메모리 모듈의 동작 방법에 있어서:
    상기 메모리 모듈에서 파워 온을 검출하는 단계; 그리고
    상기 파워 온이 검출되면, 상기 메모리 모듈에 의해 시스템 관리 버스(SMBus, System Management Bus)를 통해 상기 외부의 제어기로 값을 전송하여 상기 외부의 제어기의 레지스터를 갱신하는 단계를 포함하고,
    상기 값은 상기 외부의 제어기로부터 상기 메모리 모듈로 읽기 재시도가 수행되는 횟수를 가리키고,
    상기 메모리 모듈은 상기 외부의 제어기의 레지스터에 저장된 값을 횟수 제한이 없음을 가리키는 상기 값으로 갱신함으로써, 읽기 동작 시에 상기 외부의 제어기로부터 상기 읽기 재시도를 횟수 제한 없이 수신하도록 구성되고,
    상기 읽기 동작 시에, 상기 제어기는 읽기 요청에 응답하여 상기 휘발성 메모리 및 상기 불휘발성 메모리 중 하나에 대해 읽기를 수행하도록 구성되고,
    상기 불휘발성 메모리에 대해 상기 읽기를 수행하는 동안, 상기 제어기는 상기 읽기 재시도가 상기 외부의 제어기로부터 수신되는 것을 무시하도록 구성되고, 그리고
    상기 불휘발성 메모리에 대한 상기 읽기를 완료한 후에 상기 읽기 재시도가 상기 외부의 제어기로부터 수신되는 것에 응답하여, 상기 제어기는 상기 읽기에서 읽혀진 데이터를 상기 외부의 제어기로 전달하도록 구성되는 동작 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020180035270A 2018-03-27 2018-03-27 메모리 모듈을 포함하는 메모리 시스템, 메모리 모듈, 그리고 메모리 모듈의 동작 방법 KR102549584B1 (ko)

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)

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

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

Non-Patent Citations (7)

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