KR20180127707A - 메모리 모듈 및 이의 동작 방법 - Google Patents
메모리 모듈 및 이의 동작 방법 Download PDFInfo
- Publication number
- KR20180127707A KR20180127707A KR1020170062754A KR20170062754A KR20180127707A KR 20180127707 A KR20180127707 A KR 20180127707A KR 1020170062754 A KR1020170062754 A KR 1020170062754A KR 20170062754 A KR20170062754 A KR 20170062754A KR 20180127707 A KR20180127707 A KR 20180127707A
- Authority
- KR
- South Korea
- Prior art keywords
- memory devices
- memory
- data
- error correction
- module
- 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
-
- 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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/161—Portable computer, e.g. notebook
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/171—Portable consumer electronics, e.g. mobile phone
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
메모리 모듈은, 다수의 제1메모리 장치; 상기 다수의 제1메모리 장치에 저장된 데이터의 일부를 캐시하기 위한 하나 이상의 제2메모리 장치; 호스트 메모리 콘트롤러가 억세스하려는 상기 다수의 제1메모리 장치의 영역이 상기 하나 이상의 제2메모리 장치에 캐시된 경우에 상기 하나 이상의 제2메모리 장치를 억세스하고, 그렇지 않은 경우에 상기 다수의 제1메모리 장치를 억세스하는 억세스 제어 회로; 상기 다수의 제1메모리 장치의 라이트 동작시에 상기 호스트 메모리 콘트롤러로부터 전달된 라이트 데이터를 이용해 상기 라이트 데이터와 함께 저장될 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로; 및 상기 다수의 제1메모리 장치의 리드 동작시에 상기 다수의 제1메모리 장치로부터 리드된 리드 데이터의 에러를 상기 리드 데이터와 함께 리드된 에러 정정 코드를 이용해 정정하는 에러 정정 회로를 포함할 수 있다.
Description
본 특허 문헌은 메모리 모듈에 관한 것이다.
최근 스마트 폰, 태블릿 PC와 같은 이동 통신 단말기의 보급이 대중화되고, 소셜 네트워크 서비스(SNS, Social Network Service), 사물 네트워크(M2M, Machine to Machine), 센서 네트워크(Sensor Network) 등의 사용이 증가함에 따라 데이터의 양, 생성 속도 및 그 다양성이 기하급수적으로 증가하고 있다.
빅 데이터의 처리를 위해서는 메모리의 속도도 중요하지만 메모리 장치 및 이를 포함하는 메모리 모듈의 저장 용량이 매우 클 것이 요구된다.
본 발명의 실시예들은 메모리 모듈의 용량을 늘리면서도 메모리 모듈의 빠른 억세스를 가능하게 하는 기술을 제공할 수 있다.
본 발명의 일실시예에 따른 메모리 모듈은, 다수의 제1메모리 장치; 상기 다수의 제1메모리 장치에 저장된 데이터의 일부를 캐시하기 위한 하나 이상의 제2메모리 장치; 호스트 메모리 콘트롤러가 억세스하려는 상기 다수의 제1메모리 장치의 영역이 상기 하나 이상의 제2메모리 장치에 캐시된 경우에 상기 하나 이상의 제2메모리 장치를 억세스하고, 그렇지 않은 경우에 상기 다수의 제1메모리 장치를 억세스하는 억세스 제어 회로; 상기 다수의 제1메모리 장치의 라이트 동작시에 상기 호스트 메모리 콘트롤러로부터 전달된 라이트 데이터를 이용해 상기 라이트 데이터와 함께 저장될 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로; 및 상기 다수의 제1메모리 장치의 리드 동작시에 상기 다수의 제1메모리 장치로부터 리드된 리드 데이터의 에러를 상기 리드 데이터와 함께 리드된 에러 정정 코드를 이용해 정정하는 에러 정정 회로를 포함할 수 있다.
본 발명의 일실시예에 따른 메모리 모듈의 동작 방법은, 다수의 제1메모리 장치와 상기 다수의 제1메모리 장치에 저장된 데이터의 일부를 캐시하기 위한 하나 이상의 제2메모리 장치를 포함하는 메모리 모듈의 동작 방법에 있어서, 호스트 메모리 콘트롤러로부터 상기 다수의 제1메모리 장치의 제1영역에 대한 라이트 동작의 수행을 요청받는 단계; 상기 제1영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인지를 확인하는 단계; 상기 제1영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인 경우에, 상기 하나 이상의 제2메모리 장치에 상기 호스트 메모리 콘트롤러로부터 수신된 라이트 데이터를 라이트하는 단계; 상기 제1영역이 상기 하나 이상의 제2메모리 장치에 캐시되지 않은 영역인 경우에, 상기 호스트 메모리 콘트롤러로부터 수신된 라이트 데이터를 이용해 에러 정정 코드를 생성하는 단계; 및 상기 호스트 메모리 콘트롤러로부터 수신된 라이트 데이터와 상기 에러 정정 코드를 상기 다수의 제1메모리 장치의 제1영역에 라이트하는 단계를 포함할 수 있다.
본 발명의 실시예들에 따르면 메모리 모듈의 용량을 늘리면서도 메모리 모듈의 빠른 억세스를 가능하게 할 수 있다.
도 1은 본 발명의 일실시예에 따른 메모리 모듈(100)의 구성도.
도 2는 본 발명의 다른 실시예에 따른 메모리 모듈(200)의 구성도.
도 3은 도 2의 메모리 모듈(200)의 라이트 동작을 도시한 순서도.
도 4는 도 2의 메모리 모듈(200)의 리드 동작을 도시한 순서도.
도 2는 본 발명의 다른 실시예에 따른 메모리 모듈(200)의 구성도.
도 3은 도 2의 메모리 모듈(200)의 라이트 동작을 도시한 순서도.
도 4는 도 2의 메모리 모듈(200)의 리드 동작을 도시한 순서도.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 공지의 구성은 생략될 수 있다. 각 도면의 구성 요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 1은 본 발명의 일실시예에 따른 메모리 모듈(100)의 구성도이다. 설명의 편의를 위해 메모리 모듈(100)을 제어하는 호스트 메모리 콘트롤러(1)를 같이 도시했다.
호스트 메모리 콘트롤러(1)는 제어 버스(101)를 통해 커맨드(CMD)와 어드레스(ADD)를 메모리 모듈(100)로 전송할 수 있다. 그리고 데이터 버스(102)를 통해 메모리 모듈(100)과 데이터(DATA)를 송/수신할 수 있다. 또한, 호스트 메모리 콘트롤러(1)는 억세스될 랭크(rank)를 선택하기 위한 칩 선택(chip select) 신호들(CS0~CS7)을 랭크 선택 버스(103)를 통해 메모리 모듈(100)로 전송할 수 있다. 여기서는 커맨드(CMD)와 칩 선택 신호들(CS0~CS7)을 따로 도시했지만, 칩 선택 신호들(CS0~CS7)은 커맨드(CMD)로 분류될 수도 있다. 제어 버스(101), 데이터 버스(102), 랭크 선택 버스(103) 각각은 다수의 전송 라인들을 포함할 수 있다.
메모리 모듈(100)은 모듈 콘트롤러(110)와 다수의 메모리 장치들(120_0_0~120_7_8)을 포함할 수 있다. 메모리 모듈(100)은 DIMM(Dual In-Line Memory Module) 타입일 수 있다. 다수의 메모리 장치들(120_0_0~120_7_8) 각각은 DRAM(Dynamic Random Access Memory), PCRAM(Phase Change Random Access Memory) 등 여러 종류의 메모리 중 하나일 수 있다. 다수의 메모리 장치들(120_0_0~120_7_8)은 랭크(rank)0에서 랭크7까지 8개의 랭크로 나뉠 수 있다. 메모리 장치들(120_0_0~120_7_8)의 도면 기호 중 가운데 숫자가 해당 메모리 장치의 랭크를 나타낼 수 있다. 예를 들어, 메모리 장치(120_1_2)는 랭크1에 포함되고, 메모리 장치(120_3_1)는 랭크3에 포함될 수 있다. 랭크0에서 랭크7 각각은 9개의 메모리 장치들을 포함할 수 있다. 랭크0~랭크7 중 칩 선택 신호에 의해 선택된 랭크가 억세스될 수 있다. 예를 들어, 칩 선택 신호(CS1)가 활성화된 경우에는 랭크1의 메모리 장치들(120_1_0~120_1~8)이 억세스되고, 칩 선택 신호(CS7)가 활성화된 경우에는 랭크7의 메모리 장치들(120_7_0~120_1_8)이 억세스될 수 있다. 메모리 모듈(100)에 포함되는 랭크의 개수 및 각각의 랭크에 포함되는 메모리 장치들의 개수는 예시일 뿐이며, 랭크의 개수 및 각각의 랭크에 포함되는 메모리 장치들의 개수가 도 1과 다를 수도 있음은 당연하다.
모듈 콘트롤러(110)는 제어 버스(101)를 통해 호스트 메모리 콘트롤러(1)로부터 커맨드(CMD)와 어드레스(ADD)를 수신하고, 랭크 선택 버스(103)를 통해 호스트 메모리 콘트롤러(1)로부터 칩 선택 신호들(CS0~CS7)을 수신하고, 데이터 버스(102)를 통해 호스트 메모리 콘트롤러(1)와 데이터(DATA)를 송수신할 수 있다. 즉, 모듈 콘트롤러(110)는 다수의 메모리 장치들과 호스트 메모리 콘트롤러(1) 간의 인터페이스 역할을 수행할 수 있다. 모듈 콘트롤러(110)는 호스트 메모리 콘트롤러(1)로부터 수신된 커맨드(CMD), 어드레스(ADD) 및 칩 선택 신호들(CS0~CS7)을 버퍼링해 내부 제어 버스(131) 및 내부 랭크 선택 버스(133)를 통해 메모리 장치들(120_0_0~120_7_8)로 전달할 수 있다. 이 과정에서 모듈 콘트롤러(110)는 메모리 장치들(120_0_0~120_7_8)로 전달되는 신호들(CMD, ADD, CS0~CS7)의 타이밍을 제어할 수 있다.
모듈 콘트롤러(110)는 라이트 및 리드 동작시에 데이터의 처리를 위한 에러 정정 코드 생성 회로(111)와 에러 정정 회로(112)를 포함할 수 있다.
에러 정정 코드 생성 회로(111)는 라이트 동작시에 호스트 메모리 콘트롤러(1)로부터 전달된 라이트 데이터(DATA)를 이용해 에러 정정 코드(ECC)를 생성할 수 있다. 라이트 동작시에 내부 데이터 버스(132)를 통해서는 호스트 메모리 콘트롤러(1)로부터 전달된 라이트 데이터(DATA', 라이트 동작시 DATA=DATA')와 에러 정정 코드 생성 회로(111)에서 생성된 에러 정정 코드(ECC)가 메모리 장치들(120_0_0~120_7_8)로 전달될 수 있다. 랭크0~랭크7 각각은 9개의 메모리 장치들을 포함하는데, 이 중 8개의 메모리 장치에는 라이트 데이터(DATA')가 저장되고 1개의 메모리 장치에는 에러 정정 코드(ECC)가 저장될 수 있다. 예를 들어, 랭크3이 선택된 경우에, 랭크3의 8개의 메모리 장치(120_3_0~120_3_7)에서 어드레스(ADD)에 의해 선택된 메모리 셀들에 라이트 데이터(DATA')가 라이트되고, 랭크3의 1개의 메모리 장치(120_3_8)에서 어드레스(ADD)에 의해 선택된 메모리 셀들에 에러 정정 코드(ECC)가 라이트될 수 있다.
에러 정정 회로(112)는 리드 동작시에 랭크0~랭크7 중 선택된 랭크의 메모리 장치들로부터 리드된 에러 정정 코드(ECC)를 이용해 선택된 랭크의 메모리 장치들로부터 리드된 리드 데이터(DATA')의 에러를 정정할 수 있다. 그리고 에러가 정정된 리드 데이터(DATA)가 호스트 메모리 콘트롤러(1)로 전달될 수 있다. 예를 들어, 랭크2가 선택된 경우에, 에러 정정 회로(112)는 랭크2의 메모리 장치(120_2_8)에서 어드레스(ADD)에 의해 선택된 메모리 셀들로부터 리드된 에러 정정 코드(ECC)를 이용해 랭크2의 메모리 장치들(120_2_0~120_2_7)에서 어드레스(ADD)에 의해 선택된 메모리 셀들로부터 리드된 리드 데이터(DATA')의 에러를 정정할 수 있다.
빅 데이터의 처리를 위해 메모리 모듈(100)의 용량을 늘리면서 비용도 줄이기 위해서는 용량은 크지만 제조 비용이 저렴한, 즉 비교적 낮은 품질의, 메모리 장치들을 사용해야 한다. 즉, 메모리 모듈(100)에 포함되는 메모리 장치들(120_0_0~120_7_8)로 비교적 낮은 품질의 저렴한 제품들을 사용해야할 수 있다. 또한, 고용량의 메모리 모듈(100)에서 소모되는 전류를 줄이기 위해서는 메모리 장치들(120_0_0~120_7_8)의 리프레시(refresh) 주기도 늘려야 하는데, 이 경우 메모리 장치들(120_0_0~120_7_8)에서는 비교적 많은 에러가 발생할 수밖에 없다. 게다가 메모리 모듈(100)의 용량을 늘리기 위해서는 메모리 모듈(100)에 포함되는 메모리 장치들(120_0_0~120_7_8)의 개수를 늘려야 하는데, 메모리 장치들(120_0_0~120_7_8)의 개수가 늘어날수록 모듈 내의 수많은 신호들의 라우팅(routing)이 어려워지므로 메모리 장치들(120_0_0~120_7_8)에서 발생하는 에러는 더욱 늘어날 수밖에 없다. 에러 정정 코드 생성 회로(111)와 에러 정정 회로(112)는 메모리 장치들(120_0_0~120_7_8)에서 발생하는 에러를 정정하기 위해 사용될 수 있다.
에러 정정 코드 생성 회로(111)와 에러 정정 회로(112)를 사용하면, 메모리 장치들(120_0_0~120_7_8)에서 발생하는 에러를 정정하는 것이 가능하지만, 이들의 사용에 의해 메모리 장치들(120_0_0~120_7_8)의 리드 및 라이트 동작 속도는 느려질 수밖에 없다. 즉, 메모리 장치들(120_0_0~120_7_8)의 리드 및 라이트 동작과 관련된 레이턴시(latency)가 증가할 수밖에 없다. 라이트 동작시에는 메모리 장치들(120_0_0~120_7_8)에 데이터(DATA)가 라이트되기 이전에 에러 정정 코드 생성 회로(111)에 의해 에러 정정 코드(ECC)를 생성하는 처리 과정이 필요하며, 리드 동작시에는 메모리 장치(120_0_0~120_7_8)들로부터 리드된 데이터(DATA')가 호스트 메모리 콘트롤러(1)로 전달되기 이전에 에러 정정 회로(112)에 의해 에러가 정정되는 처리 과정이 필요하기 때문이다.
도 2는 본 발명의 다른 실시예에 따른 메모리 모듈(200)의 구성도이다. 설명의 편의를 위해 메모리 모듈(200)을 제어하는 호스트 메모리 콘트롤러(2)를 같이 도시했다.
호스트 메모리 콘트롤러(2)는 제어 버스(201)를 통해 커맨드(CMD)와 어드레스(ADD)를 메모리 모듈(200)로 전송할 수 있다. 그리고 데이터 버스(202)를 통해 메모리 모듈(200)과 데이터(DATA)를 송/수신할 수 있다. 또한, 호스트 메모리 콘트롤러(2)는 억세스될 랭크(rank)를 선택하기 위한 칩 선택(chip select) 신호들(CS0~CS7)을 랭크 선택 버스(203)를 통해 메모리 모듈(200)로 전송할 수 있다. 여기서는 커맨드(CMD)와 칩 선택 신호들(CS0~CS7)을 따로 도시했지만, 칩 선택 신호들(CS0~CS7)은 커맨드(CMD)로 분류될 수도 있다. 제어 버스(201), 데이터 버스(202), 랭크 선택 버스(203) 각각은 다수의 전송 라인들을 포함할 수 있다.
메모리 모듈(200)은 모듈 콘트롤러(210), 다수의 제1메모리 장치들(220_0_0~220_7_8) 및 다수의 제2메모리 장치들(220_C_0~220_C_7)을 포함할 수 있다. 메모리 모듈(200)은 DIMM(Dual In-Line Memory Module) 타입일 수 있다.
다수의 제1메모리 장치들(220_0_0~220_7_8) 각각은 DRAM, PCRAM 등 여러 종류의 메모리 중 하나일 수 있다. 다수의 제1메모리 장치들(220_0_0~220_7_8)은 랭크0에서 랭크7까지 8개의 랭크로 나뉠 수 있다. 제1메모리 장치들(220_0_0~220_7_8)의 도면 기호 중 가운데 숫자가 해당 제1메모리 장치의 랭크를 나타낼 수 있다. 예를 들어, 제1메모리 장치(220_1_2)는 랭크1에 포함되고, 제1메모리 장치(220_3_1)는 랭크3에 포함될 수 있다. 랭크0에서 랭크7 각각은 9개의 제1메모리 장치들을 포함할 수 있다. 랭크0~랭크7 중 칩 선택 신호에 의해 선택된 랭크가 억세스될 수 있다. 예를 들어, 칩 선택 신호(CS1)가 활성화된 경우에는 랭크1의 제1메모리 장치들(220_1_0~220_1~8)이 억세스되고, 칩 선택 신호(CS7)가 활성화된 경우에는 랭크7의 제1메모리 장치들(220_7_0~220_1_8)이 억세스될 수 있다.
다수의 제2메모리 장치들(220_C_0~220_C_7)은 다수의 제1메모리 장치들(220_0_0~220_7_8) 중 하나의 랭크의 제1메모리 장치들에 저장된 데이터를 캐시할 수 있다. 예를 들어, 제2메모리 장치들(220_C_0~220_C_7)은 랭크5의 제1메모리 장치들(220_5_0~220_5_8)에 저장된 데이터를 캐시할 수 있다. 다수의 제2메모리 장치들(220_C_0~220_C_7)의 억세스시에, 즉 다수의 제2메모리 장치들(220_C_0~220_C_7)의 라이트 및 리드 동작시에, 에러 정정 알고리즘이 사용되지 않을 수 있다. 즉, 에러 정정 코드 생성 회로(211)와 에러 정정 회로(212)는 제2메모리 장치들(220_C_0~220_C_7)의 억세스시에는 사용되지 않고 비활성화될 수 있다. 제2메모리 장치들(220_C_0~220_C_7)에는 에러 정정 코드(ECC)가 저장될 필요가 없으므로, 8개의 제2메모리 장치들(220_C_0~220_C_7)이, 하나의 랭크에 속한 9개의 제1메모리 장치들에 저장된 데이터를 캐시할 수 있다. 제2메모리 장치들(220_C_0~220_C_7)은 제1메모리 장치들(220_0_0~220_7_8)과 동일한 종류의 메모리일 수 있다. 예를 들어, 제1메모리 장치들(220_0_0~220_7_8)이 DRAM인 경우에, 제2메모리 장치들(220_C_0~220_C_7)도 DRAM일 수 있다. 제2메모리 장치들(220_C_0~220_C_7)의 억세스시에는 제1메모리 장치들(220_0_0~220_7_8)의 억세스시와는 다르게 에러 정정 알고리즘이 사용되지 않으므로, 제2메모리 장치들(220_C_0~220_C_7)의 에러율은 제1메모리 장치들(220_0_0~220_7_8)의 에러율보다 훨씬 낮거나 에러가 발생하지 않아야 한다. 즉, 제2메모리 장치들(220_C_0~220_C_7)은 제1메모리 장치들(220_0_0~220_7_8)보다 고품질의 메모리일 필요가 있다. 예를 들어, 동일한 제조공정을 통해 메모리 장치들이 제조된 경우에, 테스트 결과 품질이 가장 우수한 메모리 장치들이 제2메모리 장치들(220_C_0~220_C_7)로 사용되고 그보다 못한 품질의 메모리 장치들이 제1메모리 장치들(220_0_0~220_7_8)로 사용될 수 있다.
모듈 콘트롤러(210)는 제어 버스(201)를 통해 호스트 메모리 콘트롤러(2)로부터 커맨드(CMD)와 어드레스(ADD)를 수신하고, 랭크 선택 버스(203)를 통해 호스트 메모리 콘트롤러(2)로부터 칩 선택 신호들(CS0~CS7)을 수신하고, 데이터 버스(202)를 통해 호스트 메모리 콘트롤러(2)와 데이터(DATA)를 송수신할 수 있다. 즉, 모듈 콘트롤러(210)는 메모리 모듈(200)과 호스트 메모리 콘트롤러(2) 간의 인터페이스 역할을 수행할 수 있다. 모듈 콘트롤러(210)는 호스트 메모리 콘트롤러(2)로부터 수신된 커맨드(CMD) 및 어드레스(ADD)를 버퍼링해 내부 제어 버스(231)를 통해 제1메모리 장치들(220_0_0~220_7_8)과 제2메모리 장치들(220_C_0~220_C_7)로 전달할 수 있다. 이 과정에서 모듈 콘트롤러(210)는 제1메모리 장치들(220_0_0~220_7_8)과 제2메모리 장치들(220_C_0~220_C_7)로 전달되는 신호들(CMD, ADD)의 타이밍을 제어할 수 있다. 제1메모리 장치들(220_0_0~220_7_8)이 억세스되는 경우에 제2메모리 장치들(220_C_0~220_C_7)이 억세스되는 경우보다 더 많은 레이턴시가 필요하므로, 제1메모리 장치들(220_0_0~220_7_8)이 억세스되느냐 제2메모리 장치들(220_C_0~220_C_7)이 억세스되느냐에 따라 신호들(CMD, ADD)이 전달되는 타이밍이 다르게 제어될 수 있다.
모듈 콘트롤러(210)는 억세스 제어 회로(213), 에러 정정 코드 생성 회로(211) 및 에러 정정 회로(212)를 포함할 수 있다.
억세스 제어 회로(213)는 랭크0~랭크7 중 어느 랭크가 제2메모리 장치들(220_C_0~220_C_7)에 캐시되어 있는지를 저장하는 테이블을 포함할 수 있다. 여기서, 랭크0~랭크7 중 제2메모리 장치들(220_C_0~220_C_7)에 캐시되는 랭크는 랭크0~랭크7 중 자주 억세스되는 랭크가 어느 랭크이냐에 따라 변경될 수 있다. 호스트 메모리 콘트롤러(2)가 억세스하려는 랭크가 제2메모리 장치들(220_C_0~220_C_7)에 캐시된 랭크인 경우에, 억세스 제어 회로(213)는 제2메모리 장치들(220_C_0~220_C_7)을 억세스할 수 있다. 즉, 억세스 제어 회로(213)는 내부 랭크 선택 버스(233)로 전달되는 칩 선택 신호들(CS0~CS7, CSC) 중 제2메모리 장치들(220_C_0~220_C_7)을 선택하기 위한 칩 선택 신호(CSC)를 활성화하고, 내부 제어 버스(231)를 통해 커맨드(CMD)와 어드레스(ADD)를 제2메모리 장치들(220_C_0~220_C_7)에 전달하고, 제2내부 데이터 버스(234)를 통해 제2메모리 장치들(220_C_0~220_C_7)과 데이터(DATA)를 송수신할 수 있다.
호스트 메모리 콘트롤러(2)가 억세스하려는 랭크가 제2메모리 장치들(220_C_0~220_C_7)에 캐시되지 않은 랭크인 경우에, 억세스 제어 회로(213)는 제1메모리 장치들(220_0_0~220_7_8) 중 호스트 메모리 콘트롤러(2)가 억세스하려는 랭크의 제1메모리 장치들에 억세스할 수 있다. 이 경우에는 랭크 선택 버스(203) 상에서 활성화된 칩 선택 신호와 내부 랭크 선택 버스(233) 상에서 활성화된 칩 선택 신호가 동일할 수 있으며, 칩 선택 신호(CSC)는 비활성화될 수 있다. 예를 들어, 랭크 선택 버스(203) 상에서 칩 선택 신호(CS1)가 활성화된 경우에 내부 랭크 선택 버스(233) 상에서도 칩 선택 신호(CS1)가 활성화되어 랭크1의 제1메모리 장치들(220_1_0~220_1_8)이 억세스될 수 있으며, 칩 선택 신호(CSC)가 비활성화되어 제2메모리 장치들(220_C_0~220_C_7)은 억세스되지 않을 수 있다.
에러 정정 코드 생성 회로(211)는 제1메모리 장치들(220_0_0~220_7_8)의 라이트 동작시에 호스트 메모리 콘트롤러(2)로부터 전달된 라이트 데이터(DATA)를 이용해 에러 정정 코드(ECC)를 생성할 수 있다. 제1메모리 장치들(220_0_0~220_7_8)의 라이트 동작시에 제1내부 데이터 버스(232)를 통해서는 호스트 메모리 콘트롤러(2)로부터 전달된 라이트 데이터(DATA', 라이트 동작시 DATA=DATA')와 에러 정정 코드 생성 회로(211)에서 생성된 에러 정정 코드(ECC)가 제1메모리 장치들(220_0_0~220_7_8)로 전달될 수 있다. 랭크0~랭크7 각각은 9개의 제1메모리 장치들을 포함하는데, 이 중 8개의 제1메모리 장치에는 라이트 데이터(DATA')가 저장되고 1개의 제1메모리 장치에는 에러 정정 코드(ECC)가 저장될 수 있다. 예를 들어, 랭크3이 선택된 경우에, 랭크3의 8개의 제1메모리 장치(220_3_0~220_3_7)에서 어드레스(ADD)에 의해 선택된 메모리 셀들에 라이트 데이터(DATA')가 라이트되고, 랭크3의 1개의 메모리 장치(220_3_8)에서 어드레스(ADD)에 의해 선택된 메모리 셀들에 에러 정정 코드(ECC)가 라이트될 수 있다.
에러 정정 회로(212)는 제1메모리 장치들(220_0_0~220_7_8)의 리드 동작시에 랭크0~랭크7 중 선택된 랭크의 제1메모리 장치들로부터 리드된 에러 정정 코드(ECC)를 이용해 선택된 랭크의 제1메모리 장치들로부터 리드된 리드 데이터(DATA')의 에러를 정정할 수 있다. 그리고 에러가 정정된 리드 데이터(DATA)가 호스트 메모리 콘트롤러(2)로 전달될 수 있다. 예를 들어, 랭크2가 선택된 경우에, 에러 정정 회로(212)는 랭크2의 제1메모리 장치(220_2_8)에서 어드레스(ADD)에 의해 선택된 메모리 셀들로부터 리드된 에러 정정 코드(ECC)를 이용해 랭크2의 제1메모리 장치들(220_2_0~220_2_7)에서 어드레스(ADD)에 의해 선택된 메모리 셀들로부터 리드된 리드 데이터(DATA')의 에러를 정정할 수 있다.
도 2의 메모리 모듈(200)에서는 에러 정정 알고리즘의 사용으로 인해 비교적 억세스 속도가 느린 제1메모리 장치들(220_0_0~220_7_8) 중 자주 억세스되는 하나의 랭크의 제1메모리 장치들의 데이터를 제2메모리 장치들(220_C_0~220_C_7)에 캐시하고, 제2메모리 장치들(220_C_0~220_C_7)의 억세스시에는 에러 정정 알고리즘을 사용하지 않고 빠르게 억세스하는 방식을 사용해 메모리 모듈(200)의 동작 속도를 높일 수 있다.
여기서는 제1메모리 장치들(220_0_0~220_7_8) 중 1개의 랭크의 데이터가 제2메모리 장치들(220_C_0~220_C_7)에 캐시되는 것을 예시했으나, 캐시되는 데이터의 단위가 항상 랭크 단위일 필요는 없으며, 뱅크(bank) 단위, 또는 더 작은 단위로 데이터가 캐시될 수도 있다. 예를 들어, 제1메모리 장치들(220_0_0~220_7_8)의 모든 랭크의 특정 뱅크(예, 뱅크3)의 데이터가 제2메모리 장치들에 캐시될 수도 있다. 또한, 메모리 모듈(200)에 포함되는 제1메모리 장치들(220_0_0~220_7_8)의 개수 및 제2메모리 장치들(220_C_0~220_C_7)의 개수가 도 2의 예시와 다를 수도 있음은 당연하다. 또한, 도 2에서는 억세스 제어 회로(213), 에러 정정 코드 생성 회로(211) 및 에러 정정 회로(212)가 모두 모듈 콘트롤러(210)에 포함된 것을 예시했으나, 이들 중 일부가 모듈 콘트롤러(210) 외부에 위치할 수도 있다.
제2메모리 장치들(220_C_0~220_C_7)의 억세스시에는 에러 정정 알고리즘이 사용되지 않으므로, 제2메모리 장치들(220_C_0~220_C_7)의 에러 발생을 줄여야 하고, 제2메모리 장치들(220_C_0~220_C_7)은 일종의 캐시로 사용되므로 이들의 억세스 속도를 높이는 것이 중요하다. 신호들의 라우팅에서 발생하는 제2메모리 장치들(220_C_0~220_C_7)의 에러를 줄이고 제2메모리 장치들(220_C_0~220_C_7)의 억세스 속도를 높이기 위해, 제2메모리 장치들(220_C_0~220_C_7)을 포함하는 패키지가 패키지 오버 패키지(PoP: Package over Package) 형태로 모듈 콘트롤러(210)의 패키지 상에 적층될 수도 있다. 또한, 제2메모리 장치들(220_C_0~220_C_7)에 대한 에러 정정 동작이 수행되지 않으므로, 제1메모리 장치들(220_0_0~220_7_8)과 제2메모리 장치들(220_C_0~220_C_7)이 DRAM인 경우에, 제2메모리 장치들(220_C_0~220_C_7)이 더욱 짧은 리프레시 주기를 가질 수 있다.
도 3은 도 2의 메모리 모듈(200)의 라이트 동작을 도시한 순서도이다. 메모리 모듈(200)에 포함된 제1메모리 장치들(220_0_0~220_7_8) 중 랭크4의 제1메모리 장치들(220_4_0~220_4_8)의 데이터가 제2메모리 장치들(220_C_0~220_C_7)에 캐시되었다고 가정하기로 한다.
도 3을 참조하면, 먼저 호스트 메모리 콘트롤러(2)로부터 메모리 모듈(200)로 라이트 동작의 수행이 요청될 수 있다(S310). 라이트 동작의 수행 요청은 호스트 메모리 콘트롤러(2)가 제어 버스(201)를 통해 라이트 동작을 지시하는 커맨드(CMD)와 라이트 동작이 수행될 메모리 셀들을 지정하기 위한 어드레스(ADD)를 메모리 모듈(200)로 전달하고, 데이터 버스(202)를 통해 라이트 데이터(DATA)를 메모리 모듈(200)로 전달하고, 랭크 선택 버스(203) 상의 칩 선택 신호들(CS0~CS7) 중 라이트 동작이 수행될 랭크에 대응하는 칩 선택 신호를 활성화하는 것에 의해 수행될 수 있다.
그리고 메모리 모듈(200)의 억세스 제어 회로(213)에 의해 호스트 메모리 콘트롤러(2)가 라이트 동작을 수행하려는 랭크가 제2메모리 장치들(220_C_0~220_C_7)에 캐시된 랭크, 즉 랭크4, 인지 아닌지가 판단될 수 있다(S320). 이는 단계(S310)에서 활성화된 칩 선택 신호가 랭크4에 대응하는 칩 선택 신호(CS4)인지 아닌지를 판단하는 것에 의해 수행될 수 있다.
단계(S320)에서 호스트 메모리 콘트롤러(2)가 억세스하려는 랭크가 제2메모리 장치들(220_C_0~220_C_7)에 캐시된 랭크, 즉 랭크4, 라고 판단된 경우에(S320에서 Y), 제2메모리 장치들(220_C_0~220_C_7)의 라이트 동작이 수행될 수 있다(S330). 이는 모듈 콘트롤러(210)가 내부 제어 버스(231)를 통해 라이트 동작일 지시하는 커맨드(CMD)와 라이트 동작이 수행될 메모리 셀들을 지정하기 위한 어드레스(ADD)를 제2메모리 장치들(220_C_0~220_C_7)로 전달하고, 모듈 콘트롤러(210)가 내부 랭크 선택 버스(233) 상의 칩 선택 신호(CSC)를 활성화하고, 제2내부 데이터 버스(234)를 통해 라이트될 데이터(DATA)를 제2메모리 장치들(220_C_0~220_C_7)로 전달하고, 제2메모리 장치들(220_C_0~220_C_7)에서 어드레스(ADD)에 의해 선택된 메모리 셀들에 데이터(DATA)가 라이트되는 것에 의해 수행될 수 있다. 제2메모리 장치들(220_C_0~220_C_7)의 라이트 동작은 에러 정정을 위한 처리과정 없이 바로 수행되므로 빠르게 수행될 수 있다.
단계(S320)에서 호스트 메모리 콘트롤러(2)가 억세스하려는 랭크가 제2메모리 장치들(220_C_0~220_C_7)에 캐시된 랭크가 아니라고 판단된 경우에(S320에서 N), 에러 정정 코드 생성 회로(211)가 라이트 데이터(DATA)를 이용해 에러 정정 코드(ECC)를 생성할 수 있다(S340). 그리고 제1메모리 장치들(220_0_0~220_7_8) 중 선택된 랭크의 제1메모리 장치들의 라이트 동작이 수행될 수 있다(S350). 이는 모듈 콘트롤러(210)가 내부 제어 버스(231)를 통해 라이트 동작일 지시하는 커맨드(CMD)와 라이트 동작이 수행될 메모리 셀들을 지정하기 위한 어드레스(ADD)를 제1메모리 장치들(220_0_0~220_7_8)로 전달하고, 모듈 콘트롤러(210)가 내부 랭크 선택 버스(233) 상의 칩 선택 신호들(CS0~CS7) 중 선택된 랭크에 대응하는 칩 선택 신호를 활성화하고, 제1내부 데이터 버스(232)를 통해 라이트될 데이터(DATA')와 에러 정정 코드(ECC)를 제1메모리 장치들(220_0_0~220_7_8)로 전달하고, 제1메모리 장치들(220_0_0~220_7_8) 중 선택된 랭크의 제1메모리 장치들에서 어드레스(ADD)에 의해 선택된 메모리 셀들에 데이터(DATA')와 에러 정정 코드(ECC)가 라이트되는 것에 의해 수행될 수 있다.
도 3에는 도시되지 않았지만, 제2메모리 장치들(220_C_0~220_C_7)에 캐시된 데이터 중 더티(dirty) 데이터는 주기적으로 제1메모리 장치들(220_0_0~220_7_8) 중 대응하는 랭크의 제1메모리 장치들로 업데이트될 수 있다. 여기서 더티 데이터는 제2메모리 장치들(220_C_0~220_C_7)에 캐시된 데이터와 이에 대응하는 제1메모리 장치들 상의 오리지널 데이터가 서로 다른 경우의 데이터를 의미할 수 있다.
도 4는 도 2의 메모리 모듈(200)의 리드 동작을 도시한 순서도이다. 메모리 모듈(200)에 포함된 제1메모리 장치들(220_0_0~220_7_8) 중 랭크4의 제1메모리 장치들(220_4_0~220_4_8)의 데이터가 제2메모리 장치들(220_C_0~220_C_7)에 캐시되었다고 가정하기로 한다.
도 4를 참조하면, 먼저 호스트 메모리 콘트롤러(2)로부터 메모리 모듈(200)로 리드 동작의 수행이 요청될 수 있다(S410). 리드 동작의 수행 요청은 호스트 메모리 콘트롤러(2)가 제어 버스(201)를 통해 리드 동작을 지시하는 커맨드(CMD)와 리드 동작이 수행될 메모리 셀들을 지정하기 위한 어드레스(ADD)를 메모리 모듈(200)로 전달하고, 랭크 선택 버스(203) 상의 칩 선택 신호들(CS0~CS7) 중 리드 동작이 수행될 랭크에 대응하는 칩 선택 신호를 활성화하는 것에 의해 수행될 수 있다.
그리고 메모리 모듈(200)의 억세스 제어 회로(213)에 의해 호스트 메모리 콘트롤러(2)가 리드 동작을 수행하려는 랭크가 제2메모리 장치들(220_C_0~220_C_7)에 캐시된 랭크, 즉 랭크4, 인지 아닌지가 판단될 수 있다(S420). 이는 단계(S410)에서 활성화된 칩 선택 신호가 랭크4에 대응하는 칩 선택 신호(CS4)인지 아닌지를 판단하는 것에 의해 수행될 수 있다.
단계(S420)에서 호스트 메모리 콘트롤러(2)가 억세스하려는 랭크가 제2메모리 장치들(220_C_0~220_C_7)에 캐시된 랭크, 즉 랭크4, 라고 판단된 경우에(S420에서 Y), 제2메모리 장치들(220_C_0~220_C_7)의 리드 동작이 수행될 수 있다(S430). 이는 모듈 콘트롤러(210)가 내부 제어 버스(231)를 통해 리드 동작을 지시하는 커맨드(CMD)와 리드 동작이 수행될 메모리 셀들을 지정하기 위한 어드레스(ADD)를 제2메모리 장치들(220_C_0~220_C_7)로 전달하고, 모듈 콘트롤러(210)가 내부 랭크 선택 버스(233) 상의 칩 선택 신호(CSC)를 활성화하고, 커맨드(CMD)와 어드레스(ADD)에 응답해 제2메모리 장치들(220_C_0~220_C_7)로부터 리드된 데이터(DATA)가 제2내부 데이터 버스(234)를 통해 모듈 콘트롤러(210)로 전달되는 것에 의해 수행될 수 있다.
그리고 제2메모리 장치들(220_C_0~220_C_7)로부터 리드된 데이터(DATA)가 데이터 버스(202)를 통해 모듈 콘트롤러(210)로부터 호스트 메모리 콘트롤러(2)로 전달될 수 있다(S440).
단계(S420)에서 호스트 메모리 콘트롤러(2)가 억세스하려는 랭크가 제2메모리 장치들(220_C_0~220_C_7)에 캐시된 랭크가 아니라고 판단된 경우에(S420에서 N), 제1메모리 장치들(220_0_0~220_7_8) 중 선택된 랭크의 제1메모리 장치들의 라이트 동작이 수행될 수 있다(S450). 이는 모듈 콘트롤러(210)가 내부 제어 버스(231)를 통해 리드 동작을 지시하는 커맨드(CMD)와 리드 동작이 수행될 메모리 셀들을 지정하기 위한 어드레스(ADD)를 제1메모리 장치들(220_0_0~220_7_8)로 전달하고, 모듈 콘트롤러(210)가 내부 랭크 선택 버스(233) 상의 칩 선택 신호들(CS0~CS7) 중 선택된 랭크에 대응하는 칩 선택 신호를 활성화하고, 제1메모리 장치들(220_0_0~220_7_8) 중 선택된 랭크의 제1메모리 장치들로부터 리드된 데이터(DATA')와 에러 정정 코드(ECC)가 제1내부 데이터 버스(232)를 통해 모듈 콘트롤러(210)로 전달되는 것에 의해 수행될 수 있다.
에러 정정 회로(212)는 단계(S450)에서 리드된 에러 정정 코드(ECC)를 이용해 단계(S450)에서 리드된 데이터(DATA')의 에러를 정정할 수 있다(S460).
그리고 에러 정정 회로(212)에 의해 정정된 데이터(DATA)가 데이터 버스(202)를 통해 모듈 콘트롤러(210)로부터 호스트 메모리 콘트롤러(2)로 전달될 수 있다(S470).
본 발명은 상기 바람직한 실시예에 따라 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술분야의 통상의 전문가라면 본 발명의 기술사상의 범위 내에서 다양한 실시예가 가능함을 알 수 있을 것이다.
200: 메모리 모듈 210: 모듈 콘트롤러
220_0_0~220_7_8: 다수의 제1메모리 장치들
220_C_0~220_C_7: 다수의 제2메모리 장치들
220_0_0~220_7_8: 다수의 제1메모리 장치들
220_C_0~220_C_7: 다수의 제2메모리 장치들
Claims (17)
- 다수의 제1메모리 장치;
상기 다수의 제1메모리 장치에 저장된 데이터의 일부를 캐시하기 위한 하나 이상의 제2메모리 장치;
호스트 메모리 콘트롤러가 억세스하려는 상기 다수의 제1메모리 장치의 영역이 상기 하나 이상의 제2메모리 장치에 캐시된 경우에 상기 하나 이상의 제2메모리 장치를 억세스하고, 그렇지 않은 경우에 상기 다수의 제1메모리 장치를 억세스하는 억세스 제어 회로;
상기 다수의 제1메모리 장치의 라이트 동작시에 상기 호스트 메모리 콘트롤러로부터 전달된 라이트 데이터를 이용해 상기 라이트 데이터와 함께 저장될 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로; 및
상기 다수의 제1메모리 장치의 리드 동작시에 상기 다수의 제1메모리 장치로부터 리드된 리드 데이터의 에러를 상기 리드 데이터와 함께 리드된 에러 정정 코드를 이용해 정정하는 에러 정정 회로
를 포함하는 메모리 모듈.
- 제 1항에 있어서,
상기 하나 이상의 제2메모리 장치의 억세스시에 상기 에러 정정 코드 생성 회로와 상기 에러 정정 회로는 비활성화되는
메모리 모듈.
- 제 1항에 있어서,
상기 다수의 제1메모리 장치와 상기 하나 이상의 제2메모리 장치는 동일한 종류의 메모리인
메모리 모듈.
- 제 3항에 있어서,
상기 다수의 제1메모리 장치보다 상기 하나 이상의 제2메모리 장치가 에러 발생률이 낮은
메모리 모듈.
- 제 3항에 있어서,
상기 다수의 제1메모리 장치와 상기 하나 이상의 제2메모리 장치 각각은 DRAM이고,
상기 메모리 모듈은 DIMM(Dual In-Line Memory Module) 타입인
메모리 모듈.
- 제 2항에 있어서,
상기 다수의 제1메모리 장치의 리드 동작시간은 상기 하나 이상의 제2메모리 장치의 리드 동작시간보다 길고,
상기 다수의 제2메모리 장치의 라이트 동작시간은 상기 하나 이상의 제2메모리 장치의 라이트 동작시간보다 긴
메모리 모듈.
- 제 1항에 있어서,
상기 다수의 제1메모리 장치는 N개의 랭크들로 나뉘어지고(N은 2이상의 정수),
상기 하나 이상의 제2메모리 장치는 상기 N개의 랭크들 중 하나의 랭크에 속한 제1메모리 장치들에 저장된 데이터를 캐시하는
메모리 모듈.
- 제 7항에 있어서,
상기 N개의 랭크들 각각에 포함된 제1메모리 장치들의 개수는 상기 하나 이상의 제2메모리 장치보다 많은
메모리 모듈.
- 제 1항에 있어서,
상기 억세스 제어 회로, 상기 에러 정정 코드 생성 회로 및 상기 에러 정정 회로는 모듈 콘트롤러에 포함되는
메모리 모듈.
- 제 9항에 있어서,
상기 하나 이상의 제2메모리 장치는 상기 모듈 콘트롤러 상에 패키지 온 패키지(PoP: Package on Package) 형태로 적층되는
메모리 모듈.
- 제 5항에 있어서,
상기 다수의 제1메모리 장치보다 상기 하나 이상의 제2메모리 장치의 리프레시 주기가 더 짧은
메모리 모듈.
- 다수의 제1메모리 장치와 상기 다수의 제1메모리 장치에 저장된 데이터의 일부를 캐시하기 위한 하나 이상의 제2메모리 장치를 포함하는 메모리 모듈의 동작 방법에 있어서,
호스트 메모리 콘트롤러로부터 상기 다수의 제1메모리 장치의 제1영역에 대한 라이트 동작의 수행을 요청받는 단계;
상기 제1영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인지를 확인하는 단계;
상기 제1영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인 경우에, 상기 하나 이상의 제2메모리 장치에 상기 호스트 메모리 콘트롤러로부터 수신된 라이트 데이터를 라이트하는 단계;
상기 제1영역이 상기 하나 이상의 제2메모리 장치에 캐시되지 않은 영역인 경우에, 상기 호스트 메모리 콘트롤러로부터 수신된 라이트 데이터를 이용해 에러 정정 코드를 생성하는 단계; 및
상기 호스트 메모리 콘트롤러로부터 수신된 라이트 데이터와 상기 에러 정정 코드를 상기 다수의 제1메모리 장치의 제1영역에 라이트하는 단계
를 포함하는 메모리 모듈의 동작 방법.
- 제 12항에 있어서,
상기 호스트 메모리 콘트롤러로부터 상기 다수의 제1메모리 장치의 제2영역에 대한 리드 동작의 수행을 요청받는 단계;
상기 제2영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인지를 확인하는 단계;
상기 제2영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인 경우에, 상기 하나 이상의 제2메모리 장치로부터 데이터를 리드해 상기 호스트 메모리 콘트롤러로 제공하는 단계;
상기 제2영역이 상기 하나 이상의 제2메모리 장치에 캐시되지 않은 영역인 경우에, 상기 다수의 제1메모리 장치의 제2영역으로부터 데이터와 에러 정정 코드를 리드하는 단계;
상기 다수의 제1메모리 장치의 제2영역으로부터 리드된 에러 정정 코드를 이용해 상기 다수의 제1메모리 장치의 제2영역으로부터 리드된 데이터의 에러를 정정하는 단계; 및
에러가 정정된 데이터를 상기 호스트 메모리 콘트롤러로 제공하는 단계
를 더 포함하는 메모리 모듈의 동작 방법.
- 제 12항에 있어서,
상기 다수의 제1메모리 장치와 상기 하나 이상의 제2메모리 장치는 동일한 종류의 메모리인
메모리 모듈의 동작 방법.
- 제 14항에 있어서,
상기 다수의 제1메모리 장치보다 상기 하나 이상의 제2메모리 장치가 에러 발생률이 낮은
메모리 모듈의 동작 방법.
- 제 15항에 있어서,
상기 다수의 제1메모리 장치와 상기 하나 이상의 제2메모리 장치 각각은 DRAM이고,
상기 메모리 모듈은 DIMM (Dual In-Line Memory Module) 타입인
메모리 모듈의 동작 방법.
- 제 16항에 있어서,
상기 다수의 제1메모리 장치보다 상기 하나 이상의 제2메모리 장치의 리프레시 주기가 더 짧은
메모리 모듈의 동작 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170062754A KR20180127707A (ko) | 2017-05-22 | 2017-05-22 | 메모리 모듈 및 이의 동작 방법 |
US15/897,265 US10713114B2 (en) | 2017-05-22 | 2018-02-15 | Memory module and operation method of the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170062754A KR20180127707A (ko) | 2017-05-22 | 2017-05-22 | 메모리 모듈 및 이의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180127707A true KR20180127707A (ko) | 2018-11-30 |
Family
ID=64272376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170062754A KR20180127707A (ko) | 2017-05-22 | 2017-05-22 | 메모리 모듈 및 이의 동작 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10713114B2 (ko) |
KR (1) | KR20180127707A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020185448A1 (en) * | 2019-03-14 | 2020-09-17 | Micron Technology, Inc. | Deferred error code correction with improved effective data bandwidth performance |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200078830A (ko) * | 2018-12-24 | 2020-07-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 모듈 |
US11093323B2 (en) * | 2019-04-15 | 2021-08-17 | Nvidia Corporation | Performant inline ECC architecture for DRAM controller |
US10866861B1 (en) * | 2019-08-29 | 2020-12-15 | Micron Technology, Inc. | Deferred error-correction parity calculations |
US12013756B2 (en) * | 2022-01-24 | 2024-06-18 | Micron Technology, Inc. | Method and memory system for writing data to dram submodules based on the data traffic demand |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7840876B2 (en) * | 2007-02-20 | 2010-11-23 | Qimonda Ag | Power savings for memory with error correction mode |
US8626997B2 (en) * | 2009-07-16 | 2014-01-07 | Micron Technology, Inc. | Phase change memory in a dual inline memory module |
JP5482197B2 (ja) * | 2009-12-25 | 2014-04-23 | 富士通株式会社 | 演算処理装置、情報処理装置及びキャッシュメモリ制御方法 |
JP2011198272A (ja) * | 2010-03-23 | 2011-10-06 | Toshiba Corp | 半導体記憶装置および半導体記憶装置の制御方法 |
WO2013084315A1 (ja) * | 2011-12-07 | 2013-06-13 | 富士通株式会社 | 演算処理装置、及び、演算処理装置の制御方法 |
KR101862379B1 (ko) * | 2013-04-19 | 2018-07-05 | 삼성전자주식회사 | Ecc 동작과 리던던시 리페어 동작을 공유하는 메모리 장치 |
CN104347122B (zh) * | 2013-07-31 | 2017-08-04 | 华为技术有限公司 | 一种消息式内存模组的访存方法和装置 |
US10540284B2 (en) * | 2014-07-29 | 2020-01-21 | Nxp Usa, Inc. | Cache-coherent multiprocessor system and a method for detecting failures in a cache-coherent multiprocessor system |
US9904591B2 (en) * | 2014-10-22 | 2018-02-27 | Intel Corporation | Device, system and method to restrict access to data error information |
US9804920B2 (en) * | 2014-11-20 | 2017-10-31 | Samsung Electronics Co., Ltd. | Rank and page remapping logic in a volatile memory |
KR102406267B1 (ko) * | 2015-11-19 | 2022-06-08 | 삼성전자주식회사 | 불휘발성 메모리 모듈 및 이를 포함하는 전자 장치 |
US10209895B2 (en) * | 2016-02-18 | 2019-02-19 | Toshiba Memory Corporation | Memory system |
EP3453022B1 (en) * | 2016-05-02 | 2022-07-06 | INTEL Corporation | Internal error checking and correction (ecc) with extra system bits |
-
2017
- 2017-05-22 KR KR1020170062754A patent/KR20180127707A/ko unknown
-
2018
- 2018-02-15 US US15/897,265 patent/US10713114B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020185448A1 (en) * | 2019-03-14 | 2020-09-17 | Micron Technology, Inc. | Deferred error code correction with improved effective data bandwidth performance |
Also Published As
Publication number | Publication date |
---|---|
US20180336092A1 (en) | 2018-11-22 |
US10713114B2 (en) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20180127707A (ko) | 메모리 모듈 및 이의 동작 방법 | |
US10818375B2 (en) | Semiconductor memory devices, memory systems and methods of operating semiconductor memory devices | |
US10521141B2 (en) | Memory module and method system including the same | |
US10108491B2 (en) | Control circuit, memory device including the same, and method | |
US7649795B2 (en) | Memory with flexible serial interfaces and method for accessing memory thereof | |
CN110047525B (zh) | 存储模块及其操作方法 | |
KR102023487B1 (ko) | 오토 리프레쉬 커맨드를 사용하지 않고 리프레쉬를 수행할 수 있는 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 | |
US9792975B1 (en) | Dram and access and operating method thereof | |
KR20220036752A (ko) | 로우 해머 리프레쉬 동작을 수행하는 메모리 장치 및 이의 동작 방법 | |
KR20140146469A (ko) | 메모리 제어 시스템 및 이를 이용한 메모리 인터페이스 방법 | |
US9141472B2 (en) | Sharing a check bit memory device between groups of memory devices | |
US20160313923A1 (en) | Method for accessing multi-port memory module and associated memory controller | |
US20210216419A1 (en) | Memory module, memory system including the same and operation method thereof | |
US9368236B2 (en) | Semiconductor memory apparatus and test method thereof | |
US20180260345A1 (en) | Memory module and memory system including the same | |
CN105304119B (zh) | 刷新电路 | |
US9940260B1 (en) | System and method for controlling optimized access to memory device having three-dimensional stacked structure | |
US10402325B2 (en) | Memory system | |
US10713137B2 (en) | Memory module | |
US11308010B2 (en) | Memory system having memories of different capacities | |
KR20170128783A (ko) | 메모리 시스템 및 이의 동작 방법 | |
US10140025B2 (en) | Memory system including memory controller and operation method thereof | |
US20150026408A1 (en) | Cache memory system and method of operating the same | |
US9508418B1 (en) | Semiconductor device | |
US20180196621A1 (en) | Memory module, memory system and operating method of memory system |