KR20210149445A - 메모리 모듈 및 메모리 모듈의 동작 방법 - Google Patents
메모리 모듈 및 메모리 모듈의 동작 방법 Download PDFInfo
- Publication number
- KR20210149445A KR20210149445A KR1020200066493A KR20200066493A KR20210149445A KR 20210149445 A KR20210149445 A KR 20210149445A KR 1020200066493 A KR1020200066493 A KR 1020200066493A KR 20200066493 A KR20200066493 A KR 20200066493A KR 20210149445 A KR20210149445 A KR 20210149445A
- Authority
- KR
- South Korea
- Prior art keywords
- refresh
- memory device
- host
- error
- time
- Prior art date
Links
Images
Classifications
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- 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
- 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
-
- 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40603—Arbitration, priority and concurrent access to memory cells for read/write or refresh operations
-
- 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40611—External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
-
- 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/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40626—Temperature related aspects of refresh operations
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/10—Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/36—Data generation devices, e.g. data inverters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/36—Data generation devices, e.g. data inverters
- G11C2029/3602—Pattern generator
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
메모리 모듈이 제공된다. 상기 메모리 모듈은, 호스트로부터 제1 리프레시 커맨드를 제공받아, 제1 리프레시 커맨드에 응답하여 리프레시 시간 동안 리프레시 동작을 수행하는 메모리 장치, 및 호스트로부터 메모리 장치로 제공된 제1 리프레시 커맨드를 감지하고, 리프레시 시간 동안 메모리 장치의 제1 어드레스에 제1 에러 패턴을 라이트하는 컴퓨팅 유닛을 포함한다.
Description
본 발명은 메모리 모듈 및 메모리 모듈의 동작 방법에 관한 것이다.
메모리 장치는 메모리 셀에 저장된 데이터를 유지하기 위하여 리프레시(refresh) 동작을 수행한다. 리프레시 동작은 메모리 셀에 필요한 전하를 다시 충전하므로 전력을 소모한다. 리프레시 동작에 의한 전력 소모를 감소시키기 위해, 리프레시 동작을 온도에 따라 상이하게 수행할 수 있다. 한편, 각각의 메모리 장치마다 물리적인 특성, 배치 위치 등이 서로 상이할 수 있으므로, 메모리 장치들은 서로 다른 온도를 가질 수 있다.
본 발명이 해결하고자 하는 기술적 과제는 호스트의 동작과 무관하게 메모리 장치에 에러 패턴을 주입할 수 있고, 자동으로 모든 에러 패턴을 메모리 장치에 주입할 수 있는 메모리 모듈을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 호스트의 동작과 무관하게 에러 패턴이 주입되고, 자동으로 모든 에러 패턴이 주입되는 메모리 모듈의 동작 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 모듈은, 호스트로부터 제1 리프레시 커맨드를 제공받아, 제1 리프레시 커맨드에 응답하여 리프레시 시간 동안 리프레시 동작을 수행하는 메모리 장치, 및 호스트로부터 메모리 장치로 제공된 제1 리프레시 커맨드를 감지하고, 리프레시 시간 동안 메모리 장치의 제1 어드레스에 제1 에러 패턴을 라이트하는 컴퓨팅 유닛을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 모듈은, 호스트로부터 제1 리프레시 커맨드를 제공받아, 제1 리프레시 커맨드에 응답하여 리프레시 동작을 수행하는 메모리 장치, 및 호스트로부터 메모리 장치로 제공된 제1 리프레시 커맨드를 감지하고, 제1 리프레시 커맨드를 감지한 시점으로부터 미리 설정된 시간이 지난 시점에서 메모리 장치의 제1 어드레스에 저장된 제1 데이터를 리드하는 컴퓨팅 컨트롤러와, 리드된 제1 데이터가 저장되는 버퍼와, 복수의 에러 패턴들이 저장된 에러 패턴 스토리지를 포함하는 컴퓨팅 유닛을 포함하고, 컴퓨팅 컨트롤러는, 메모리 장치의 제1 어드레스에 저장된 제1 데이터를 리드한 후, 제1 어드레스에 에러 패턴 스토리지에 저장된 복수의 에러 패턴들 중 제1 에러 패턴을 라이트한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 모듈의 동작 방법은, 제1 리프레시 커맨드에 응답하여 리프레시 시간 동안 메모리 장치를 리프레시하고, 리프레시 시간 동안 메모리 장치의 제1 어드레스에 저장된 제1 데이터를 버퍼에 저장하고, 메모리 장치의 제1 어드레스에 제1 에러 패턴을 라이트하는 것을 포함하고, 리프레시 시간은 메모리 장치가 리프레시 동작을 수행하는데 요구되는 최소 시간인 제1 리프레시 시간보다 길다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 몇몇 실시예들에 따른 메모리 시스템을 설명하기 위한 블록도이다.
도 2는 도 1의 에러 패턴 스토리지에 저장된 에러 패턴을 설명하기 위한 도면이다.
도 3은 본 발명의 몇몇 실시예들에 따른 컴퓨팅 유닛의 동작을 설명하기 위한 순서도이다.
도 4는 도 3의 S160단계를 설명하기 위한 순서도이다.
도 5는 도 1의 호스트의 동작을 설명하기 위한 도면이다.
도 6 및 도 7은 본 발명의 몇몇 실시예들에 따른 메모리 시스템의 동작을 설명하기 위한 타이밍도이다.
도 8은 본 발명의 몇몇 다른 실시예들에 따른 메모리 시스템의 블록도이다.
도 9는 본 발명의 몇몇 다른 실시예들에 따른 메모리 시스템을 설명하기 위한 블록도이다.
도 10은 도 9의 메모리 모듈의 동작을 설명하기 위한 흐름도이다.
도 11은 도 1의 메모리 장치를 설명하기 위한 도면이다.
도 2는 도 1의 에러 패턴 스토리지에 저장된 에러 패턴을 설명하기 위한 도면이다.
도 3은 본 발명의 몇몇 실시예들에 따른 컴퓨팅 유닛의 동작을 설명하기 위한 순서도이다.
도 4는 도 3의 S160단계를 설명하기 위한 순서도이다.
도 5는 도 1의 호스트의 동작을 설명하기 위한 도면이다.
도 6 및 도 7은 본 발명의 몇몇 실시예들에 따른 메모리 시스템의 동작을 설명하기 위한 타이밍도이다.
도 8은 본 발명의 몇몇 다른 실시예들에 따른 메모리 시스템의 블록도이다.
도 9는 본 발명의 몇몇 다른 실시예들에 따른 메모리 시스템을 설명하기 위한 블록도이다.
도 10은 도 9의 메모리 모듈의 동작을 설명하기 위한 흐름도이다.
도 11은 도 1의 메모리 장치를 설명하기 위한 도면이다.
도 1은 본 발명의 몇몇 실시예들에 따른 메모리 시스템을 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 몇몇 실시예들에 따른 메모리 시스템(1)은 호스트(100) 및 메모리 모듈(20)을 포함할 수 있다.
호스트(10)는 메모리 모듈(20)과 연결될 수 있다. 호스트(10)는 메모리 모듈(20)에 데이터를 라이트하거나 메모리 모듈(20)에 저장된 데이터를 리드할 수 있다. 호스트(10)는 예를 들어, 중앙 처리 유닛(CPU: Central Processing Unit) 또는 어플리케이션 프로세서(AP: Application Processor)일 수 있다. 호스트(10)는 호스트 컨트롤러(110), 버퍼(120), ECC 엔진(130), ECC 카운터(140) 및 레지스터(150)를 포함할 수 있다. 호스트 컨트롤러(110), 버퍼(120), ECC 엔진(130) ECC 카운터(140) 및 레지스터(150)는 버스(105)를 통해 서로 전기적으로 접속될 수 있다.
호스트 컨트롤러(110)는 어플리케이션 또는 드라이버를 구동할 수 있다. 어플리케이션은 호스트(10)에서 실행되어 메모리 시스템(1)을 제어할 수 있고, 드라이버는 호스트(10)에 전기적으로 접속되는 메모리 모듈(20)을 구동할 수 있다. 구체적으로, 드라이버는 어플리케이션으로부터 메모리 모듈(20)을 제어하기 위한 명령을 수신하고, 메모리 모듈(20)이 해당 명령을 처리한 결과를 어플리케이션에 제공할 수 있다.
호스트 컨트롤러(110)는 메모리 모듈(20)에 에러 주입 커맨드를 제공할 수 있다. 에러 주입 커맨드는 특정 어드레스와 데이터를 포함할 수 있다. 특정 어드레스는 에러가 주입될 메모리 장치(300) 내의 어드레스일 수 있다.
또한 호스트 컨트롤러(110)는 메모리 모듈(20)에 에러 주입 커맨드를 제공하고, 레지스터(150)에 저장된 메모리 장치(300)의 리프레시 시간을 변경할 수 있다. 호스트 컨트롤러(110)는 예를 들어, 메모리 장치(300)의 리프레시 시간을 제1 리프레시 시간에서 제2 리프레시 시간으로 변경할 수 있다. 호스트 컨트롤러(110)는 변경된 제2 리프레시 시간을 레지스터(150)에 저장할 수 있다.
제1 리프레시 시간은 메모리 장치(300)가 리프레시 동작을 수행하는데 요구되는 최소 시간으로, 미리 정해진 값일 수 있다. 제1 리프레시 시간은 메모리 장치(300)의 용량, 구조, 성능 등에 따라 정해진 값일 수 있다.
제2 리프레시 시간은 메모리 장치(300)가 리프레시 동작을 수행하고 컴퓨팅 유닛(200)이 에러 주입 커맨드에 응답하여 에러 주입 동작을 수행하는 시간일 수 있다. 따라서 제2 리프레시 시간은 제1 리프레시 시간보다 길 수 있다. 즉, 메모리 모듈(20)은 제2 리프레시 시간동안 에러 주입 동작을 수행할 수 있다.
또한 호스트(10)는 컴퓨팅 유닛(200)에 에러 주입 중지 커맨드를 제공할 수 있다. 이 경우, 호스트 컨트롤러(110)는 메모리 장치(300)의 리프레시 시간을 제2 리프레시 시간에서 제1 리프레시 시간으로 변경할 수 있다. 호스트 컨트롤러(110)는 변경된 제1 리프레시 시간을 레지스터(150)에 저장할 수 있다.
호스트 컨트롤러(110)는 메모리 장치(300)에 리프레시 커맨드를 제공할 수 있다. 호스트 컨트롤러(110)는 메모리 장치(300)에 리프레시 커맨드를 전송한 시점부터 리프레시 시간이 지난 후, 리드 또는 라이트 명령과 같은 유효 커맨드(도 6의 VALID)를 제공할 수 있다.
버퍼(120)는 호스트(10)의 메인 메모리로 사용되거나 데이터를 임시로 저장하기 위한 캐시 메모리 또는 임시 메모리 등으로 사용될 수 있다. 버퍼(120)는 에러 주입 커맨드에 포함된 특정 어드레스와 데이터가 저장될 수 있다.
버퍼(120)는 예를 들어, DRAM(Dynamic Random Access Memory)을 비롯한 휘발성 메모리를 포함할 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다.
ECC 엔진(130)은 에러 감지 및 에러 정정 동작을 수행할 수 있다. ECC 엔진(130)은 입력된 데이터에 대하여 ECC 인코딩을 수행하여 패리티 데이터를 생성할 수 있고, 메모리 장치(300)로부터 독출된 데이터에 대하여 ECC 인코딩을 수행하여 독출된 데이터의 에러를 정정할 수 있다.
ECC 엔진(130)은 에러를 감지하고 에러를 정정하기 위해, 패리티 체크(Parity-Check), CRC 체크(Cyclical Redundancy Code Check), 체크섬 체크(Checksum Check) 및 해밍코드(Hamming code)를 이용할 수 있다. 또한 ECC 엔진(130)은 복수의 메모리 칩의 에러를 정정하기 위해 x4 SDDC(Single Device Data Correction), x8 SECDED(Single-bit Error Correction and Double-bit Error Detection), Lockstep x8 SDDC 등의 정정 기법을 사용할 수 있다.
ECC 카운터(140)는 ECC 엔진(130)의 에러 정정 수행 횟수를 카운트할 수 있다.
호스트(10)는 메모리 장치(300)에 리프레시 커맨드(REF)를 제공할 수 있다. 호스트(10)는 메모리 장치(300)에 리프레시 커맨드를 제공한 시점으로부터 리프레시 시간이 지난 시점에서, 메모리 장치(300)를 리드하여 에러 정정 동작을 수행할 수 있다. 메모리 모듈(20)은 컴퓨팅 유닛(200)과 메모리 장치(300)를 포함할 수 있다.
컴퓨팅 유닛(200)은 호스트(10) 및 메모리 장치(300) 사이에 연결될 수 있다. 컴퓨팅 유닛(200)은 메모리 장치(300)에 직접 연결될 수 있다. 컴퓨팅 유닛(200)은 호스트(10)와 무관하게 메모리 장치(300)에 액세스할 수 있다.
컴퓨팅 유닛(200)은 예를 들어, 호스트(10)와 이더넷(Ethernet), I2C 또는 시리얼 통신을 기반으로 통신할 수 있다.
컴퓨팅 유닛(200)은 연산 가능한 유닛으로 입력된 프로그램에 따라 동작을 수행할 수 있다. 컴퓨팅 유닛(200)은 입력된 프로그램에 따라 메모리 장치(300)를 구동할 수 있다. 본 발명의 몇몇 실시예들에 따른 컴퓨팅 유닛(200)은 예를 들어, FPGA(field programmable gate array), FIM(FPGA Interface Manager) 또는 HBM(High Bandwidth Memory)에 의해 구현될 수 있으나, 본 발명은 이에 제한되지 않는다.
컴퓨팅 유닛(200)은 컴퓨팅 컨트롤러(210), 버퍼(220), 에러 패턴 스토리지(230) 및 에러 정정 결과 스토리지(240)를 포함할 수 있다.
컴퓨팅 컨트롤러(210)는 컴퓨팅 유닛(200)의 전반적인 동작을 제어할 수 있다. 컴퓨팅 컨트롤러(210)는 호스트(10)로부터 메모리 장치(300)에 제공되는 리프레시 커맨드를 감지할 수 있다.
컴퓨팅 컨트롤러(210)는 호스트(10)로부터 에러 주입 커맨드를 제공받을 수 있다. 컴퓨팅 컨트롤러(210)는 에러 주입 커맨드에 응답하여 리프레시 커맨드를 감지한 시점으로부터 일정 시간이 지난 시점에서, 에러 주입 동작을 수행할 수 있다. 여기서 일정 시간은 제1 리프레시 시간일 수 있다.
에러 주입 동작은 메모리 장치(300) 내의 특정 어드레스에 저장된 데이터에 에러를 발생시키고, 에러에 대한 에러 정정 결과를 판단하는 것을 의미할 수 있다. 컴퓨팅 컨트롤러(210)는 에러 주입 커맨드에 포함된 특정 어드레스에 에러 패턴 스토리지(230)에 저장된 복수의 에러 패턴 중 하나의 에러 패턴을 라이트할 수 있고, 에러 패턴에 대한 에러 정정 결과를 판단할 수 있다.
버퍼(220)는 에러 주입 커맨드에 포함된 특정 어드레스와 데이터가 저장될 수 있다.
에러 패턴 스토리지(230)는 복수의 에러 패턴이 저장될 수 있다. 복수의 에러 패턴은 특정 어드레스에 라이트 되는 데이터 패턴을 의미할 수 있다.
에러 정정 결과 스토리지(240)는 에러 패턴에 대한 에러 정정 결과가 저장될 수 있다.
메모리 장치(300)는 호스트(10) 및 컴퓨팅 유닛(200)과 연결될 수 있다. 메모리 장치(300)는 호스트(10) 및/또는 컴퓨팅 유닛(200)으로부터 액세스될 수 있다. 메모리 장치(300)는 호스트(10)의 제어에 따라 데이터를 저장하거나 저장된 데이터를 출력할 수 있다.
메모리 장치(300)는 예를 들어, 호스트(10)와 DDR(Double Data Rate) 인터페이스를 기반으로 통신할 수 있다. 또는 메모리 장치(300)는 예를 들어, 호스트(10)와 USB(Universal Serial Bus), MMC(multimedia card), PCI(peripheral component interconnection), PCI-E(PCI-express), ATA(Advanced Technology Attachment), SATA(Serial-ATA), PATA(Parallel-ATA), SCSI(small computer small interface), ESDI(enhanced small disk interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface), NVM-e(Nonvolatile Memory-express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 통신할 수 있다.
메모리 장치(300)는 호스트(10)로부터 제공받은 리프레시 커맨드에 응답하여 리프레시 시간동안 리프레시 동작을 수행할 수 있다. 또한 메모리 장치(300)는 컴퓨팅 유닛(200)에 의해 에러가 주입될 수 있다.
본 발명의 몇몇 실시예들에 따른 메모리 장치(300)는 DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory), LPDDR(Low Power Double Data Rate) SDRAM, GDDR(Graphics Double Data Rate) SDRAM, RDRAM(Rambus Dynamic Random Access Memory) 등과 같은 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM)이거나, 리프레시 동작이 필요한 임의의 메모리 장치일 수 있다.
도 2는 도 1의 에러 패턴 스토리지에 저장된 에러 패턴을 설명하기 위한 도면이다. 도 2는 메모리 장치(300)가 예를 들어 x4 DRAM 칩인 경우, 에러 패턴을 설명하기 위한 도면이다.
도 2를 참조하면, 에러 패턴은 x4 DRAM 칩에서 데이터가 저장된 패턴을 의미할 수 있다. 1bit는 0 또는 1을 저장할 수 있기 때문에 x4 DRAM 칩은 총 2^16(=65536)개의 에러 패턴이 형성될 수 있다.
도 3은 본 발명의 몇몇 실시예들에 따른 컴퓨팅 유닛의 동작을 설명하기 위한 순서도이다.
도 1 및 도 3을 참조하면, 컴퓨팅 유닛(200)은 호스트 컨트롤러(110)로부터 에러 주입 커맨드를 수신할 수 있다(S110). 에러 주입 커맨드는 에러가 주입된 메모리 장치(300) 내의 특정 어드레스와 상기 특정 어드레스에 라이트 될 데이터를 포함할 수 있다. 컴퓨팅 컨트롤러(210)는 에러 주입 커맨드에 응답하여 에러 주입 동작을 수행할 수 있다.
컴퓨팅 컨트롤러(210)는 에러 주입 커맨드에 포함된 특정 어드레스와 데이터를 버퍼(220)에 저장할 수 있다(S120).
이어서, 컴퓨팅 컨트롤러(210)는 호스트(10)로부터 메모리 장치(300)에 제공되는 리프레시 커맨드를 감지할 수 있다(S130).
컴퓨팅 컨트롤러(210)는 리프레시 커맨드를 감지한 시점으로부터 일정 시간이 지난 시점에서, 에러 주입 커맨드에 포함된 메모리 장치(300) 내의 특정 어드레스에, 에러 패턴을 라이트할 수 있다(S140). 에러 패턴은 에러 패턴 스토리지(230)에 저장된 복수의 에러 패턴 중 하나일 수 있다. 여기서, 일정 시간은 제2 리프레시 주기일 수 있다.
이어서, 컴퓨팅 컨트롤러(210)는 호스트(10)로부터 메모리 장치(300)에 제공되는 리프레시 커맨드를 감지할 수 있다(S150).
컴퓨팅 컨트롤러(210)는 리프레시 커맨드가 감지된 시점으로부터 일정 시간이 지난 시점에서, 에러 패턴에 대한 에러 정정 결과를 판단할 수 있고, 에러 정정 결과를 에러 정정 결과 스토리지(240)에 저장할 수 있다. (S160).
이어서, 컴퓨팅 컨트롤러(210)는 에러 패턴이 에러 패턴 스토리지(230)에 저장된 마지막 에러 패턴인지 판단할 수 있다(S170).
S170단계에서, 에러 패턴이 마지막 에러 패턴인 경우, 컴퓨팅 컨트롤러(210)는 에러 주입 동작을 종료할 수 있다(S180).
에러 주입 동작이 종료되면, 컴퓨팅 컨트롤러(210)는 에러 정정 커버리지(coverage)를 계산할 수 있다(S190). 컴퓨팅 컨트롤러(210)는 호스트(10)의 명령에 따라 에러 정정 커버리지를 호스트(10)에 제공할 수 있다.
반면 S170단계에서, 에러 패턴이 마지막 에러 패턴이 아닌 경우, 컴퓨팅 컨트롤러(210)는 S130단계로 되돌아갈 수 있다. 컴퓨팅 컨트롤러(210)는 리프레시 커맨드를 감지하고(S130), 리프레시 커맨드가 감지된 시점으로부터 일정 시간이 지난 시점에서, 특정 어드레스에 에러 패턴 스토리지(230)에 저장된 다음 에러 패턴을 라이트할 수 있다. 여기서, 일정 시간은 앞서 설명한 바와 같이 제2 리프레시 주기일 수 있다.
도 4는 도 3의 S160단계를 설명하기 위한 순서도이다.
도 4를 참조하면, 컴퓨팅 컨트롤러(210)는 리프레시 커맨드가 감지된 시점으로부터 일정 시간이 지난 시점에서, 버퍼(220)에 저장된 특정 어드레스를 리드할 수 있다(S162).
컴퓨팅 컨트롤러(210)는 메모리 장치(300) 내의 특정 어드레스를 리드한 데이터와 버퍼(220)에 저장된 데이터를 비교할 수 있다(S164).
S164단계에서, 메모리 장치(300) 내의 특정 어드레스를 리드한 데이터와 버퍼(220)에 저장된 데이터가 동일한 경우, 컴퓨팅 컨트롤러(210)는 에러 패턴에 대해 정정 가능한 에러 패턴(correctable error pattern)으로 판단하고, 에러 정정 결과를 에러 정정 결과 스토리지(240)에 저장할 수 있다(S165). 즉, 메모리 장치(300) 내의 특정 어드레스를 리드한 데이터와 버퍼(220)에 저장된 데이터가 동일한 경우, 호스트(10)의 에러 패턴에 대한 에러 정정 동작이 성공하였다는 의미이므로 에러 패턴을 정정 가능한 에러 패턴으로 판단할 수 있다.
반면 S164단계에서, 메모리 장치(300) 내의 특정 어드레스를 리드한 데이터와 버퍼(220)에 저장된 데이터가 동일하지 않은 경우, 컴퓨팅 컨트롤러(210)는 에러 패턴에 대해 정정 불가능한 에러 패턴(uncorrectable error pattern)으로 판단하고, 에러 정정 결과를 에러 정정 결과 스토리지(240)에 저장할 수 있다 수 있다(S166). 즉, 메모리 장치(300) 내의 특정 어드레스를 리드한 데이터와 버퍼(220)에 저장된 데이터가 동일하지 않은 경우, 호스트(10) 의 에러 패턴에 대한 에러 정정 동작이 실패했다는 의미이므로 에러 패턴을 정정 불가능한 에러 패턴으로 판단할 수 있다.
도 5는 도 1의 호스트의 동작을 설명하기 위한 도면이다.
도 1 및 도 5를을 참조하면, 호스트 컨트롤러(110)는 컴퓨팅 유닛(200)에 에러 주입 커맨드를 제공할 수 있다(S210). 호스트 컨트롤러(110)는 에러 주입 커맨드에 포함된 특정 어드레스와 데이터를 버퍼(120)에 저장할 수 있다.
호스트 컨트롤러(110)는 메모리 장치(300)의 리프레시 시간을 제1 리프레시 시간에서 제2 리프레시 시간으로 변경할 수 있다(S220).
호스트 컨트롤러(110)는 메모리 장치(300)에 리프레시 커맨드를 제공할 수 있다(S230).
호스트 컨트롤러(110)는 메모리 장치(300)에 리프레시 커맨드를 제공한 시점으로부터 제2 리프레시 시간이 지난 시점에서, 버퍼(120)에 저장된 메모리 장치(300) 내의 특정 어드레스로부터 데이터를 리드할 수 있다(S240).
호스트 컨트롤러(110)는 메모리 장치(300) 내의 특정 어드레스로부터 리드된 데이터와 버퍼(120)에 저장된 데이터를 비교할 수 있다(S250).
S250단계에서, 메모리 장치(300) 내의 특정 어드레스를 리드한 데이터와 버퍼(120)에 저장된 데이터가 동일하지 않은 경우, ECC 엔진(130)은 에러 정정 동작을 수행할 수 있다(S262). 이에 따라 호스트 컨트롤러(110)는 정정된 데이터를 메모리 장치(300) 내의 특정 어드레스에 라이트할 수 있다.
반면, S250단계에서, 메모리 장치(300) 내의 특정 어드레스를 리드한 데이터와 버퍼(120)에 저장된 데이터가 동일한 경우, ECC 엔진(130)은 에러 정정 동작을 수행하지 않을 수 있다(S264).
이어서, 컴퓨팅 유닛(200)의 에러 주입 동작이 종료된 경우 또는 호스트 컨트롤러(110)가 컴퓨팅 유닛(200)에 에러 주입 중지 커맨드를 제공하는 경우(S270), 호스트 컨트롤러(110)는 리프레시 시간을 제2 리프레시 시간에서 제1 리프레시 시간으로 변경할 수 있다(S280).
반면, 컴퓨팅 유닛(200)의 에러 주입 동작이 종료되지 않은 경우 또는 컴퓨팅 유닛(200)에 에러 주입 중지 커맨드를 제공하지 않는 경우(S270), 호스트 컨트롤러(110)는 S230단계로 돌아가 메모리 장치(300)에 리프레시 커맨드를 제공할 수 있다.
도 6 및 도 7은 본 발명의 몇몇 실시예들에 따른 메모리 시스템의 동작을 설명하기 위한 타이밍도이다.
도 6 및 도 7을 참조하면, t0 시점에서, 호스트(10)는 컴퓨팅 유닛(200)에 에러 주입 커맨드(CMD_E)를 제공할 수 있다. 호스트(10)는 메모리 장치(300)의 리프레시 시간을 제1 리프레시 시간(tRFC1)에서 제2 리프레시 시간(tRFC2)로 변경할 수 있다. 호스트(10)는 에러 주입 커맨드(CMD_E)에 포함된 어드레스(ADDR)와 제1 데이터(DATA 1)를 호스트(10) 내의 버퍼에 저장할 수 있다. 컴퓨팅 유닛(200)은 에러 주입 커맨드(CMD_E)에 응답하여 에러 주입 동작을 수행할 수 있다.
t1 시점에서, 호스트(10)는 메모리 장치(300)에 제1 리프레시 커맨드(REF)를 제공할 수 있다. 호스트(10)는 제2 리프레시 시간(tRFC2)동안 메모리 장치(300)에 액티브 동작과 관련된 커맨드를 제공하지 않는다.
메모리 장치(300)는 리프레시 커맨드(REF)에 응답하여 리프레시 동작을 수행할 수 있다. 메모리 장치(300)는 제1 리프레시 시간(tRFC1)동안 리프레시 동작을 수행할 수 있다.
또한 컴퓨팅 유닛(200)은 t1 시점에서, 호스트(10)로부터 메모리 장치(300)에 제공된 리프레시 커맨드(REF)를 감지할 수 있다.
리프레시 커맨드(REF)를 감지한 t1 시점으로부터 제1 리프레시 시간(tRFC1)이 지난 t2 시점에서, 컴퓨팅 유닛(200)은 에러 주입 커맨드(CMD_E)에 포함된 어드레스(ADDR)와 제1 데이터(DATA 1)를 버퍼(132)에 저장할 수 있다.
이어서, 컴퓨팅 유닛(200)은 어드레스(ADDR)에 에러 패턴 스토리지(230)에 저장된 복수의 에러 패턴 중 제1 에러 패턴(ERROR PATTERN 1)을 라이트 할 수 있다. 따라서 메모리 장치(300)에 에러 패턴을 주입하는 동작은 호스트(10)에 의한 액티브 동작과 관련된 커맨드와 충돌되지 않을 수 있다.
호스트(10)는 리프레시 커맨드(REF)를 제공한 t1 시점으로부터 제2 리프레시 시간(tRFC2)이 지난 t3 시점에서, 메모리 장치(300)를 리드할 수 있다. 호스트(10)는 호스트(10) 내 버퍼에 저장된 어드레스(ADDR)를 리드할 수 있다. 제2 리프레시 시간(tRFC2)동안 컴퓨팅 유닛(200)은 어드레스(ADDR)에 제1 에러 패턴(ERROR PATTER 1)을 라이트했기 때문에, 호스트(10)는 제1 에러 패턴(ERROR PATTER 1)을 리드할 수 있다.
호스트(10)는 제1 에러 패턴(ERROR PATTER 1)과 호스트(10) 내 버퍼에 저장된 제1 데이터(DATA 1)가 다르기 때문에, 에러 정정 동작을 수행할 수 있다. 호스트(10)의 에러 정정 동작 결과, 메모리 장치(300)의 어드레스(ADDR)에는 제1 데이터(DATA 1)가 라이트될 수 있다.
t1 시점으로부터 리프레시 주기(tREFI)가 지난 t4 시점에서, 호스트(10)는 메모리 장치(300)에 리프레시 커맨드(REF)를 제공할 수 있다.
메모리 장치(300)는 리프레시 커맨드(REF)에 응답하여 리프레시 동작을 수행할 수 있다. 메모리 장치(300)는 제1 리프레시 시간(tRFC1)동안 리프레시 동작을 수행할 수 있다.
또한 컴퓨팅 유닛(200)은 t4 시점에서, 호스트(10)로부터 메모리 장치(300)에 제공된 리프레시 커맨드(REF)를 감지할 수 있다.
컴퓨팅 유닛(200)은 리프레시 커맨드(REF)를 감지한 t4 시점으로부터 제1 리프레시 시간(tRFC1)이 지난 t5 시점에서, 메모리 장치(300)를 리드할 수 있다. 컴퓨팅 유닛(200)은 컴퓨팅 유닛(200) 내 버퍼에 저장된 어드레스(ADDR)를 리드할 수 있다. 호스트(10)의 에러 정정 동작에 의해 어드레스(ADDR)에는 제1 데이터(DATA 1)가 라이트되었기 때문에, 컴퓨팅 유닛(200)은 제1 데이터(DATA 1)를 리드할 수 있다.
컴퓨팅 유닛(200)은 컴퓨팅 유닛(200) 내 버퍼에 저장된 제1 데이터(DATA 1)와 메모리 장치(300) 내 어드레스(ADDR)를 리드한 제1 데이터(DATA 1)를 비교할 수 있다.
컴퓨팅 유닛(200)은 컴퓨팅 유닛(200) 내 버퍼에 저장된 제1 데이터(DATA 1)와 메모리 장치(300) 내 어드레스(ADDR)를 리드한 제1 데이터(DATA 1)가 동일하기 때문에 제1 에러 패턴(ERROR PATTERN 1)에 대해 정정 가능한 에러 패턴으로 판단할 수 있고, 이를 컴퓨팅 유닛(200) 내 에러 정정 결과 스토리지에 저장할 수 있다.
만일 컴퓨팅 유닛(200) 내 버퍼에 저장된 제1 데이터(DATA 1)와 메모리 장치(300) 내 어드레스(ADDR)를 리드한 제1 데이터(DATA 1)가 동일하지 않은 경우, 컴퓨팅 유닛(200)은 제1 에러 패턴(ERROR PATTERN 1)에 대해 정정 불가능한 에러 패턴으로 판단할 수 있고, 이를 컴퓨팅 유닛(200) 내 에러 정정 결과 스토리지에 저장할 수 있다.
t6 시점으로부터 리프레시 주기(tREFI)가 지난 t7 시점에서, 호스트(10)는 메모리 장치(300)에 리프레시 커맨드(REF)를 제공할 수 있다.
메모리 장치(300)는 리프레시 커맨드(REF)에 응답하여 리프레시 동작을 수행할 수 있다. 메모리 장치(300)는 제1 리프레시 시간(tRFC1)동안 리프레시 동작을 수행할 수 있다.
또한 컴퓨팅 유닛(200)은 t7 시점에서, 호스트(10)로부터 메모리 장치(300)에 제공된 리프레시 커맨드(REF)를 감지할 수 있다.
리프레시 커맨드(REF)를 감지한 t7 시점으로부터 제1 리프레시 시간(tRFC1)이 지난 t8 시점에서, 컴퓨팅 유닛(200)은 어드레스(ADDR)에 에러 패턴 스토리지(230)에 저장된 복수의 에러 패턴 중 제2 에러 패턴(ERROR PATTERN 2)을 라이트 할 수 있다. 어드레스(ADDR)는 컴퓨팅 유닛(200) 버퍼에 저장된 어드레스(ADDR)일 수 있다.
호스트(10)는 리프레시 커맨드(REF)를 제공한 t7 시점으로부터 제2 리프레시 시간(tRFC2)이 지난 t9 시점에서, 메모리 장치(300)를 리드할 수 있다. 호스트(10)는 호스트(10) 내 버퍼에 저장된 어드레스(ADDR)를 리드할 수 있다. 제2 리프레시 시간(tRFC2)동안 컴퓨팅 유닛(200)은 어드레스(ADDR)에 제2 에러 패턴(ERROR PATTER 2)을 라이트했기 때문에, 호스트(10)는 제2 에러 패턴(ERROR PATTER 2)을 리드할 수 있다.
호스트(10)는 제2 에러 패턴(ERROR PATTER 2)과 호스트(10) 내 버퍼에 저장된 제1 데이터(DATA 1)가 다르기 때문에, 에러 정정 동작을 수행할 수 있다. 호스트(10)의 에러 정정 동작 결과, 메모리 장치(300)의 어드레스(ADDR)에는 제1 데이터(DATA 1)가 라이트될 수 있다.
t7 시점으로부터 리프레시 주기(tREFI)가 지난 t10 시점에서, 호스트(10)는 메모리 장치(300)에 리프레시 커맨드(REF)를 제공할 수 있다.
메모리 장치(300)는 리프레시 커맨드(REF)에 응답하여 리프레시 동작을 수행할 수 있다. 메모리 장치(300)는 제1 리프레시 시간(tRFC1)동안 리프레시 동작을 수행할 수 있다.
또한 컴퓨팅 유닛(200)은 t10 시점에서, 호스트(10)로부터 메모리 장치(300)에 제공된 리프레시 커맨드(REF)를 감지할 수 있다.
컴퓨팅 유닛(200)은 리프레시 커맨드(REF)를 감지한 t10 시점으로부터 제 1 리프레시 시간(tRFC1)이 지난 t11 시점에서, 메모리 장치(300)를 리드할 수 있다. 컴퓨팅 유닛(200)은 컴퓨팅 유닛(200) 내 버퍼에 저장된 어드레스(ADDR)를 리드할 수 있다. 호스트(10)의 에러 정정 동작에 의해 어드레스(ADDR)에는 제1 데이터(DATA 1)가 라이트되었기 때문에, 컴퓨팅 유닛(200)은 제1 데이터(DATA 1)를 리드할 수 있다.
컴퓨팅 유닛(200)은 컴퓨팅 유닛(200) 내 버퍼에 저장된 제1 데이터(DATA 1)와 메모리 장치(300) 내 어드레스(ADDR)를 리드한 제1 데이터(DATA 1)를 비교할 수 있다.
컴퓨팅 유닛(200)은 컴퓨팅 유닛(200) 내 버퍼에 저장된 제1 데이터(DATA 1)와 메모리 장치(300) 내 어드레스(ADDR)를 리드한 제1 데이터(DATA 1)가 동일하기 때문에 제2 에러 패턴(ERROR PATTERN 2)에 대해 정정 가능한 에러 패턴으로 판단할 수 있고, 이를 컴퓨팅 유닛(200) 내 에러 정정 결과 스토리지에 저장할 수 있다.
만일 컴퓨팅 유닛(200) 내 버퍼에 저장된 제1 데이터(DATA 1)와 메모리 장치(300) 내 어드레스(ADDR)를 리드한 제1 데이터(DATA 1)가 동일하지 않은 경우, 컴퓨팅 유닛(200)은 제2 에러 패턴(ERROR PATTERN 2)에 대해 정정 불가능한 에러 패턴으로 판단할 수 있고, 이를 컴퓨팅 유닛(200) 내 에러 정정 결과 스토리지에 저장할 수 있다.
컴퓨팅 유닛(200)은 상기 동작을 반복하여 컴퓨팅 유닛(200) 내 에러 패턴 스토리지 내에 저장된 모든 에러 패턴에 대하여 에러 정정 결과를 판단하고, 에러 정정 결과를 컴퓨팅 유닛(200) 내 에러 정정 결과 스토리지에 저장할 수 있다. 그 후, 컴퓨팅 유닛(200)은 에러 정정 커버리지(coverage)를 계산할 수 있다. 따라서 본 발명의 몇몇 실시예들에 따른 메모리 시스템(1)은 정확한 에러 정정 커버리지를 계산할 수 있다.
종래에는 호스트(100)의 클럭 신호에 따라 호스트(100)와 메모리 장치(300)가 연결되는 버스에 비트 플립을 발생시켜 메모리 장치(300)에 에러를 주입했었다. 따라서 호스트(10)의 동작에 영향을 받았으며, 에러 또한 비트 단위로 제한적이었다.
하지만 본 발명의 몇몇 실시예들에 따른 메모리 시스템(1)은 에러 주입 커맨드(CMD_E)에 응답하여 에러 주입 커맨드(CMD_E)에 포함된 특정 어드레스에 에러 패턴을 라이트 할 수 있다. 즉, 에러를 주입하기 위한 메모리 장치(300) 내의 어드레스를 설정할 수 있다.
또한 본 발명의 몇몇 실시예들에 따른 메모리 시스템(1)은 리프레시 커맨드(REF)를 감지하여 에러 주입 동작을 수행하므로, 별도의 커맨드들이 필요하지 않을 수 있다. 리프레시 커맨드(REF)는 리프레시 주기(tREFI)에 따라 컴퓨팅 유닛(200)에 제공되므로, 컴퓨팅 유닛(200)은 자동으로 에러 패턴 스토리지에 저장된 에러 패턴 전체에 대하여 에러 주입 동작을 수행할 수 있다. 따라서, 호스트(10)의 동작과 무관하게 메모리 장치(300)에 에러를 주입할 수 있다.
또한 에러 패턴 스토리지에 저장된 에러 패턴 전체에 대하여 에러 주입 동작을 수행할 수 있어, 보다 정확한 에러 정정 커버리지를 계산할 수 있다.도 8은 본 발명의 몇몇 다른 실시예들에 따른 메모리 시스템의 블록도이다. 도 1과 다른 점을 중심으로 설명한다.
도 8을 참조하면, 본 발명의 몇몇 다른 실시예들에 따른 메모리 시스템(2)에서 호스트(10)는 유저 인터페이스(160) 더 포함할 수 있다.
유저 인터페이스(160)는 사용자 입력 신호를 제공받기 위한 구성일 수 있다. 유저 인터페이스(160)는 예를 들어, 키보드, 키패드, 터치 패널, 터치 스크린, 터치 패드 등과 같은 하나 이상의 입력 소자일 수 있다. 또는 유저 인터페이스(160)는 디스플레이 장치와 하나 이상의 출력 장치를 포함할 수 있다.
호스트 컨트롤러(110)는 유저 인터페이스(160)를 통해 에러가 주입되는 메모리 장치(300) 내의 어드레스를 제공받을 수 있다. 즉, 호스트 컨트롤러(110)는 컴퓨팅 유닛(200)의 에러 주입 동작이 시작된 후, 유저 인터페이스(160)를 통해 제공받은 어드레스를 컴퓨팅 유닛(200)에 제공할 수 있다. 이에 따라 컴퓨팅 유닛(200)은 변경된 어드레스에 에러 주입 동작을 수행할 수 있다.
또한 유저 인터페이스(160)는 호스트(10)의 에러 정정 동작 결과 및/또는 에러 정정 커버리지를 출력할 수 있다.
도 9는 본 발명의 몇몇 다른 실시예들에 따른 메모리 시스템을 설명하기 위한 블록도이다. 도 1과 다른 점을 중심으로 설명한다.
도 9를 참조하면, 본 발명의 몇몇 다른 실시예들에 따른 메모리 시스템에서 메모리 장치(300)는 제1 영역(310) 및 제2 영역(320)을 포함할 수 있다.
제1 영역(310)은 호스트(10)와 컴퓨팅 유닛(200)이 통신하기 위한 영역일 수 있다. 제2 영역(320)은 데이터가 저장되는 영역일 수 있다. 호스트(10) 및 컴퓨팅 유닛(200)은 제2 영역(302)에 데이터를 저장하거나 제2 영역(202)으로부터 데이터를 독출 할 수 있다.
제1 영역(310)은 호스트(10)로부터 제공된 에러 주입 커맨드(CMD_E) 및 에러 주입 커맨드(CMD_E)에 포함된 어드레스(ADDR)가 라이트되는 영역일 수 있다. 제2 영역(320)은 호스트(10)로부터 제공된 어드레스(ADDR)에 데이터(DATA 1)가 저장되는 영역일 수 있다.
컴퓨팅 유닛(200)은 메모리 장치(300)로 제공되는 리프레시 커맨드를 감지하고, 리프레시 커맨드를 감지한 시점으로부터 일정 시간이 지난 시점에서, 제1 영역(310)을 리드할 수 있다. 여기서 일정 시간은 제1 리프레시 시간일 수 있다.
컴퓨팅 유닛(200)은 제1 영역(310)을 리드하여 에러 주입 커맨드(CMD_E)를 제공받고, 에러 주입 커맨드(CMD_E)에 응답하여 에러 주입 동작을 수행할 수 있다. 즉, 호스트(10)는 메모리 장치(300)의 제1 영역(310)을 통해 컴퓨팅 유닛(200)에 에러 주입 커맨드(CMD_E)를 제공할 수 있다.
도 10은 도 9의 메모리 모듈의 동작을 설명하기 위한 흐름도이다. 도 3과 다른 점을 중심으로 설명한다.
도 9 및 도 10을 참조하면, 컴퓨팅 유닛(200)은 호스트(10)로부터 메모리 장치(300)에 제공되는 리프레시 커맨드를 감지할 수 있다(S10).
컴퓨팅 유닛(200)은 리프레시 커맨드를 감지한 시점으로부터 일정 시간이 지난 시점에서, 메모리 장치(300)의 제1 영역(310)을 리드할 수 있다(S20).
컴퓨팅 유닛(200)은 제1 영역(310)을 리드하여 에러 주입 커맨드(CMD_E)를 리드한 경우(S30), 에러 주입 커맨드(CMD_E)에 포함된 어드레스(ADDR) 및 데이터(DATA 1)을 버퍼(220)에 저장할 수 있다(S120).
컴퓨팅 유닛(200)은 제1 영역(310)을 리드하여 에러 주입 커맨드(CMD_E)를 리드하지 못한 경우(S30), S10 단계로 돌아가 호스트(10)로부터 메모리 장치(300)에 제공되는 리프레시 커맨드를 감지할 수 있다.
도 11은 도 1의 메모리 장치를 설명하기 위한 도면이다.
도 11을 참조하면, 본 발명의 몇몇 다른 실시예들에 따른 메모리 장치(300)는 DIMM(Dual In-line Memory Module) 타입의 구조를 가질 수 있다. 예를 들어, 메모리 장치(300)는 UDIMM(Unbuffered Dual In-line Memory Module), RDIMM(Registered Dual In-line Memory Module), FBDIMM(Fully Buffered Dual In-line Memory Module), LRDIMM(Load Reduced Dual In-line Memory Module) 등과 같은 타입의 구조를 가질 수 있다.
메모리 장치(300)는 복수의 메모리 칩(301) 및 버퍼(303)를 포함할 수 있다.
버퍼(303)는 컴퓨팅 유닛 또는 호스트로부터 커맨드, 어드레스 및 데이터를 수신하고, 상기 커맨드, 어드레스 및 데이터를 버퍼링하여 메모리 칩(301)에 제공할 수 있다.
버퍼(303)와 메모리 칩들(301) 사이의 데이터 전송선들은 포인트-투-포인트 방식으로 연결될 수 있다. 또한, 버퍼(303)와 메모리 칩들(301) 사이의 커맨드/어드레스 전송선들은 멀티-드롭 방식, 데이지-체인 방식, 또는 플라이-바이 데이지-체인 방식으로 연결될 수 있다.
버퍼(303)가 커맨드, 어드레스 및 데이터를 모두 버퍼링하므로, 컴퓨팅 유닛 또는 호스트는 버퍼(303)의 로드만을 구동함으로써 메모리 장치(300)와 인터페이싱 할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 호스트
20: 메모리 모듈
200: 컴퓨팅 유닛 300: 메모리 장치
200: 컴퓨팅 유닛 300: 메모리 장치
Claims (10)
- 호스트로부터 제1 리프레시 커맨드를 제공받아, 상기 제1 리프레시 커맨드에 응답하여 리프레시 시간 동안 리프레시 동작을 수행하는 메모리 장치; 및
상기 호스트로부터 상기 메모리 장치로 제공된 상기 제1 리프레시 커맨드를 감지하고, 상기 리프레시 시간 동안 상기 메모리 장치의 제1 어드레스에 제1 에러 패턴을 라이트하는 컴퓨팅 유닛을 포함하는 메모리 모듈. - 제 1항에 있어서,
상기 리프레시 시간은 상기 메모리 장치가 상기 리프레시 동작을 수행하는데 요구되는 최소 시간인 제1 리프레시 시간보다 긴 메모리 모듈. - 제 1항에 있어서,
상기 컴퓨팅 유닛은, 상기 제1 리프레시 커맨드를 감지한 시점으로부터 제1 리프레시 시간이 지난 시점에 상기 메모리 장치의 상기 제1 어드레스에 상기 제1 에러 패턴을 라이트하고,
상기 제1 리프레시 시간은 상기 메모리 장치가 상기 리프레시 동작을 수행하는데 요구되는 최소 시간이고,
상기 리프레시 시간은 상기 제1 리프레시 시간보다 긴 메모리 모듈. - 제 1항에 있어서,
상기 컴퓨팅 유닛은,
상기 호스트로부터 에러 주입 커맨드를 제공받은 후, 상기 호스트로부터 상기 메모리 장치로 제공된 상기 제1 리프레시 커맨드를 감지하고, 상기 리프레시 시간 동안 상기 메모리 장치의 상기 제1 어드레스에 상기 제1 에러 패턴을 라이트하는 메모리 모듈. - 제 1항에 있어서,
상기 컴퓨팅 유닛은,
상기 제1 어드레스에 저장된 제1 데이터를 저장하는 버퍼를 더 포함하고,
상기 버퍼에 상기 제1 데이터를 저장한 후, 상기 제1 어드레스에 상기 제1 에러 패턴을 라이트하는 메모리 모듈. - 제 1항에 있어서,
상기 메모리 장치는, 상기 호스트로부터 제3 리프레시 커맨드를 제공받아, 상기 제3 리프레시 커맨드에 응답하여 상기 리프레시 시간 동안 상기 리프레시 동작을 수행하고,
상기 컴퓨팅 유닛은, 상기 호스트로부터 상기 메모리 장치에 제공된 상기 제3 리프레시 커맨드를 감지하고, 상기 리프레시 시간 동안 상기 제1 어드레스에 상기 제1 에러 패턴과 다른 제2 에러 패턴을 라이트하는 메모리 모듈. - 제 1항에 있어서,
상기 메모리 장치는, 상기 호스트로부터 제3 리프레시 커맨드를 제공받아, 상기 제3 리프레시 커맨드에 응답하여 상기 리프레시 시간 동안 상기 리프레시 동작을 수행하고,
상기 컴퓨팅 유닛은, 상기 호스트로부터 상기 제1 어드레스와 다른 제2 어드레스를 제공받고, 상기 호스트로부터 상기 메모리 장치에 제공된 상기 제3 리프레시 커맨드를 감지하고, 상기 리프레시 시간 동안 상기 제2 어드레스에 상기 제1 에러 패턴과 다른 제2 에러 패턴을 라이트하는 메모리 모듈. - 제 1항에 있어서,
상기 메모리 장치는, 상기 리프레시 시간 동안 상기 호스트로부터 유효 커맨드를 제공받지 않는 메모리 모듈. - 호스트로부터 제1 리프레시 커맨드를 제공받아, 상기 제1 리프레시 커맨드에 응답하여 리프레시 동작을 수행하는 메모리 장치; 및
상기 호스트로부터 상기 메모리 장치로 제공된 상기 제1 리프레시 커맨드를 감지하고, 상기 제1 리프레시 커맨드를 감지한 시점으로부터 미리 설정된 시간이 지난 시점에서 상기 메모리 장치의 제1 어드레스에 저장된 제1 데이터를 리드하는 컴퓨팅 컨트롤러와,
상기 리드된 제1 데이터가 저장되는 버퍼와,
복수의 에러 패턴들이 저장된 에러 패턴 스토리지를 포함하는 컴퓨팅 유닛을 포함하고,
상기 컴퓨팅 컨트롤러는, 상기 메모리 장치의 제1 어드레스에 저장된 상기 제1 데이터를 리드한 후, 상기 제1 어드레스에 상기 에러 패턴 스토리지에 저장된 상기 복수의 에러 패턴들 중 제1 에러 패턴을 라이트하는 메모리 모듈. - 제1 리프레시 커맨드에 응답하여 리프레시 시간 동안 메모리 장치를 리프레시하고,
상기 리프레시 시간 동안 상기 메모리 장치의 제1 어드레스에 저장된 제1 데이터를 버퍼에 저장하고,
상기 메모리 장치의 상기 제1 어드레스에 제1 에러 패턴을 라이트하는 것을 포함하고,
상기 리프레시 시간은 상기 메모리 장치가 리프레시 동작을 수행하는데 요구되는 최소 시간인 제1 리프레시 시간보다 긴 메모리 모듈의 동작 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200066493A KR20210149445A (ko) | 2020-06-02 | 2020-06-02 | 메모리 모듈 및 메모리 모듈의 동작 방법 |
US17/177,415 US11531585B2 (en) | 2020-06-02 | 2021-02-17 | Memory module and operating method |
CN202110609330.0A CN113760598A (zh) | 2020-06-02 | 2021-06-01 | 存储器模块及操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200066493A KR20210149445A (ko) | 2020-06-02 | 2020-06-02 | 메모리 모듈 및 메모리 모듈의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210149445A true KR20210149445A (ko) | 2021-12-09 |
Family
ID=78706235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200066493A KR20210149445A (ko) | 2020-06-02 | 2020-06-02 | 메모리 모듈 및 메모리 모듈의 동작 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11531585B2 (ko) |
KR (1) | KR20210149445A (ko) |
CN (1) | CN113760598A (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210149445A (ko) * | 2020-06-02 | 2021-12-09 | 삼성전자주식회사 | 메모리 모듈 및 메모리 모듈의 동작 방법 |
JP6975298B1 (ja) * | 2020-09-03 | 2021-12-01 | 華邦電子股▲ふん▼有限公司Winbond Electronics Corp. | 半導体記憶装置 |
CN117520063A (zh) * | 2022-07-30 | 2024-02-06 | 华为技术有限公司 | 内存测试方法、装置、设备、系统、芯片及板卡 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6772387B1 (en) | 1998-03-16 | 2004-08-03 | Actel Corporation | Cyclic redundancy checking of a field programmable gate array having an SRAM memory architecture |
US6182248B1 (en) * | 1998-04-07 | 2001-01-30 | International Business Machines Corporation | Method and tool for computer bus fault isolation and recovery design verification |
JP4478974B2 (ja) * | 2004-01-30 | 2010-06-09 | エルピーダメモリ株式会社 | 半導体記憶装置及びそのリフレッシュ制御方法 |
US8181100B1 (en) | 2008-02-07 | 2012-05-15 | Marvell International Ltd. | Memory fault injection |
JP4768374B2 (ja) * | 2005-09-16 | 2011-09-07 | 株式会社東芝 | 半導体記憶装置 |
JP5162763B2 (ja) * | 2007-08-07 | 2013-03-13 | 株式会社メガチップス | メモリアクセスシステム |
US20110179311A1 (en) * | 2009-12-31 | 2011-07-21 | Nachimuthu Murugasamy K | Injecting error and/or migrating memory in a computing system |
US8954806B2 (en) | 2010-12-07 | 2015-02-10 | Cisco Technology, Inc. | Single event-upset controller wrapper that facilitates fault injection |
US8572529B2 (en) | 2011-06-08 | 2013-10-29 | Cadence Design Systems, Inc. | System and method for dynamically injecting errors to a user design |
JP2014531681A (ja) | 2011-09-29 | 2014-11-27 | インテル・コーポレーション | メモリにエラーを注入する方法および装置 |
KR101882681B1 (ko) * | 2011-10-27 | 2018-07-31 | 삼성전자 주식회사 | 메모리 장치 및 그 구동 방법 |
WO2013077891A1 (en) | 2011-11-22 | 2013-05-30 | Intel Corporation | Collaborative processor and system performance and power management |
US20130139008A1 (en) | 2011-11-29 | 2013-05-30 | Advanced Micro Devices, Inc. | Methods and apparatus for ecc memory error injection |
US8645797B2 (en) * | 2011-12-12 | 2014-02-04 | Intel Corporation | Injecting a data error into a writeback path to memory |
US9047988B2 (en) | 2012-11-20 | 2015-06-02 | International Business Machines Corporation | Flash interface error injector |
JP2015056061A (ja) * | 2013-09-12 | 2015-03-23 | 株式会社東芝 | 擬似故障発生装置 |
US20160026524A1 (en) * | 2014-07-25 | 2016-01-28 | Kabushiki Kaisha Toshiba | Memory device |
CN104731668B (zh) | 2014-12-05 | 2017-08-25 | 中国航空工业集团公司第六三一研究所 | Fpga三模冗余架构的故障管理与恢复控制器及其控制方法 |
KR20170082066A (ko) * | 2016-01-05 | 2017-07-13 | 에스케이하이닉스 주식회사 | 반도체시스템 |
WO2017131639A1 (en) * | 2016-01-26 | 2017-08-03 | 1/1Hewlett Packard Enterprise Development Lp | Dram-level error injection and tracking |
US10204698B2 (en) * | 2016-12-20 | 2019-02-12 | Ampere Computing Llc | Method to dynamically inject errors in a repairable memory on silicon and a method to validate built-in-self-repair logic |
JP2019066983A (ja) * | 2017-09-29 | 2019-04-25 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
KR102388803B1 (ko) * | 2017-11-02 | 2022-04-20 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
US10452505B2 (en) * | 2017-12-20 | 2019-10-22 | Advanced Micro Devices, Inc. | Error injection for assessment of error detection and correction techniques using error injection logic and non-volatile memory |
US10910082B1 (en) * | 2019-07-31 | 2021-02-02 | Arm Limited | Apparatus and method |
US11475929B2 (en) * | 2020-02-27 | 2022-10-18 | Taiwan Semiconductor Manufacturing Company, Ltd. | Memory refresh |
KR20210149445A (ko) * | 2020-06-02 | 2021-12-09 | 삼성전자주식회사 | 메모리 모듈 및 메모리 모듈의 동작 방법 |
US11372677B1 (en) * | 2020-06-04 | 2022-06-28 | Amazon Technologies, Inc. | Efficient scheduling of load instructions |
US11775380B2 (en) * | 2020-11-12 | 2023-10-03 | Arm Limited | Data processing systems |
US11688454B2 (en) * | 2020-12-10 | 2023-06-27 | SK Hynix Inc. | Semiconductor memory device and memory system including the same |
-
2020
- 2020-06-02 KR KR1020200066493A patent/KR20210149445A/ko active Search and Examination
-
2021
- 2021-02-17 US US17/177,415 patent/US11531585B2/en active Active
- 2021-06-01 CN CN202110609330.0A patent/CN113760598A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11531585B2 (en) | 2022-12-20 |
CN113760598A (zh) | 2021-12-07 |
US20210373996A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531585B2 (en) | Memory module and operating method | |
US11061763B2 (en) | Memory controller, memory system and application processor comprising the memory controller | |
US10824523B2 (en) | Data storage device and operating method thereof | |
US20190034270A1 (en) | Memory system having an error correction function and operating method of memory module and memory controller | |
KR102674032B1 (ko) | 리페어 동작을 수행하는 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 | |
US11614869B2 (en) | Controller for preventing uncorrectable error in memory device, memory device having the same, and operating method thereof | |
US11650752B2 (en) | Computing system and operating method thereof | |
KR102669545B1 (ko) | 휘발성 메모리 장치의 리페어 제어 방법 및 이를 수행하는 스토리지 장치 | |
US11664083B2 (en) | Memory, memory system having the same and operating method thereof | |
US11721408B2 (en) | Memory device capable of outputting fail data in parallel bit test and memory system including the memory device | |
KR20190090268A (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
CN111352756A (zh) | 检测存储器装置中存储的数据的错误的装置及其操作方法 | |
US20220300371A1 (en) | Semiconductor devices | |
US20200057728A1 (en) | Controller, memory system and operating method thereof | |
US11550662B2 (en) | Storage device and computing system | |
CN114627939A (zh) | 存储器控制器以及包括存储器控制器的存储装置 | |
US20240212782A1 (en) | Memory controller, an operation method thereof, a memory device, and a memory system | |
US11782646B2 (en) | Memory device and memory system having the memory device | |
US20230259422A1 (en) | Memory system including data-width aware encoder and data-width aware decoder and operating method thereof | |
EP4390939A2 (en) | Memory controller and memory system including adjustment of scrub cycle rate | |
US20230137339A1 (en) | Memory device, memory module including the memory device, and operating method of memory controller | |
KR20240064318A (ko) | 스토리지 장치 및 이의 동작 방법 | |
TW202334978A (zh) | 儲存裝置及操作其的方法 | |
CN114579355A (zh) | 存储装置及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination |