KR20180127707A - 메모리 모듈 및 이의 동작 방법 - Google Patents

메모리 모듈 및 이의 동작 방법 Download PDF

Info

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
Application number
KR1020170062754A
Other languages
English (en)
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 KR1020170062754A priority Critical patent/KR20180127707A/ko
Priority to US15/897,265 priority patent/US10713114B2/en
Publication of KR20180127707A publication Critical patent/KR20180127707A/ko

Links

Images

Classifications

    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0683Plurality of storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/16General purpose computing application
    • G06F2212/161Portable computer, e.g. notebook
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/171Portable 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

메모리 모듈 및 이의 동작 방법 {MEMORY MODULE AND OPERATION METHOD OF THE SAME}
본 특허 문헌은 메모리 모듈에 관한 것이다.
최근 스마트 폰, 태블릿 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)의 리드 동작을 도시한 순서도.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 본 발명을 설명함에 있어서, 본 발명의 요지와 무관한 공지의 구성은 생략될 수 있다. 각 도면의 구성 요소들에 참조 번호를 부가함에 있어서, 동일한 구성요소들에 한해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 번호를 가지도록 하고 있음에 유의하여야 한다.
도 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메모리 장치들

Claims (17)

  1. 다수의 제1메모리 장치;
    상기 다수의 제1메모리 장치에 저장된 데이터의 일부를 캐시하기 위한 하나 이상의 제2메모리 장치;
    호스트 메모리 콘트롤러가 억세스하려는 상기 다수의 제1메모리 장치의 영역이 상기 하나 이상의 제2메모리 장치에 캐시된 경우에 상기 하나 이상의 제2메모리 장치를 억세스하고, 그렇지 않은 경우에 상기 다수의 제1메모리 장치를 억세스하는 억세스 제어 회로;
    상기 다수의 제1메모리 장치의 라이트 동작시에 상기 호스트 메모리 콘트롤러로부터 전달된 라이트 데이터를 이용해 상기 라이트 데이터와 함께 저장될 에러 정정 코드를 생성하는 에러 정정 코드 생성 회로; 및
    상기 다수의 제1메모리 장치의 리드 동작시에 상기 다수의 제1메모리 장치로부터 리드된 리드 데이터의 에러를 상기 리드 데이터와 함께 리드된 에러 정정 코드를 이용해 정정하는 에러 정정 회로
    를 포함하는 메모리 모듈.
  2. 제 1항에 있어서,
    상기 하나 이상의 제2메모리 장치의 억세스시에 상기 에러 정정 코드 생성 회로와 상기 에러 정정 회로는 비활성화되는
    메모리 모듈.
  3. 제 1항에 있어서,
    상기 다수의 제1메모리 장치와 상기 하나 이상의 제2메모리 장치는 동일한 종류의 메모리인
    메모리 모듈.
  4. 제 3항에 있어서,
    상기 다수의 제1메모리 장치보다 상기 하나 이상의 제2메모리 장치가 에러 발생률이 낮은
    메모리 모듈.
  5. 제 3항에 있어서,
    상기 다수의 제1메모리 장치와 상기 하나 이상의 제2메모리 장치 각각은 DRAM이고,
    상기 메모리 모듈은 DIMM(Dual In-Line Memory Module) 타입인
    메모리 모듈.
  6. 제 2항에 있어서,
    상기 다수의 제1메모리 장치의 리드 동작시간은 상기 하나 이상의 제2메모리 장치의 리드 동작시간보다 길고,
    상기 다수의 제2메모리 장치의 라이트 동작시간은 상기 하나 이상의 제2메모리 장치의 라이트 동작시간보다 긴
    메모리 모듈.
  7. 제 1항에 있어서,
    상기 다수의 제1메모리 장치는 N개의 랭크들로 나뉘어지고(N은 2이상의 정수),
    상기 하나 이상의 제2메모리 장치는 상기 N개의 랭크들 중 하나의 랭크에 속한 제1메모리 장치들에 저장된 데이터를 캐시하는
    메모리 모듈.
  8. 제 7항에 있어서,
    상기 N개의 랭크들 각각에 포함된 제1메모리 장치들의 개수는 상기 하나 이상의 제2메모리 장치보다 많은
    메모리 모듈.
  9. 제 1항에 있어서,
    상기 억세스 제어 회로, 상기 에러 정정 코드 생성 회로 및 상기 에러 정정 회로는 모듈 콘트롤러에 포함되는
    메모리 모듈.
  10. 제 9항에 있어서,
    상기 하나 이상의 제2메모리 장치는 상기 모듈 콘트롤러 상에 패키지 온 패키지(PoP: Package on Package) 형태로 적층되는
    메모리 모듈.
  11. 제 5항에 있어서,
    상기 다수의 제1메모리 장치보다 상기 하나 이상의 제2메모리 장치의 리프레시 주기가 더 짧은
    메모리 모듈.
  12. 다수의 제1메모리 장치와 상기 다수의 제1메모리 장치에 저장된 데이터의 일부를 캐시하기 위한 하나 이상의 제2메모리 장치를 포함하는 메모리 모듈의 동작 방법에 있어서,
    호스트 메모리 콘트롤러로부터 상기 다수의 제1메모리 장치의 제1영역에 대한 라이트 동작의 수행을 요청받는 단계;
    상기 제1영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인지를 확인하는 단계;
    상기 제1영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인 경우에, 상기 하나 이상의 제2메모리 장치에 상기 호스트 메모리 콘트롤러로부터 수신된 라이트 데이터를 라이트하는 단계;
    상기 제1영역이 상기 하나 이상의 제2메모리 장치에 캐시되지 않은 영역인 경우에, 상기 호스트 메모리 콘트롤러로부터 수신된 라이트 데이터를 이용해 에러 정정 코드를 생성하는 단계; 및
    상기 호스트 메모리 콘트롤러로부터 수신된 라이트 데이터와 상기 에러 정정 코드를 상기 다수의 제1메모리 장치의 제1영역에 라이트하는 단계
    를 포함하는 메모리 모듈의 동작 방법.
  13. 제 12항에 있어서,
    상기 호스트 메모리 콘트롤러로부터 상기 다수의 제1메모리 장치의 제2영역에 대한 리드 동작의 수행을 요청받는 단계;
    상기 제2영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인지를 확인하는 단계;
    상기 제2영역이 상기 하나 이상의 제2메모리 장치에 캐시된 영역인 경우에, 상기 하나 이상의 제2메모리 장치로부터 데이터를 리드해 상기 호스트 메모리 콘트롤러로 제공하는 단계;
    상기 제2영역이 상기 하나 이상의 제2메모리 장치에 캐시되지 않은 영역인 경우에, 상기 다수의 제1메모리 장치의 제2영역으로부터 데이터와 에러 정정 코드를 리드하는 단계;
    상기 다수의 제1메모리 장치의 제2영역으로부터 리드된 에러 정정 코드를 이용해 상기 다수의 제1메모리 장치의 제2영역으로부터 리드된 데이터의 에러를 정정하는 단계; 및
    에러가 정정된 데이터를 상기 호스트 메모리 콘트롤러로 제공하는 단계
    를 더 포함하는 메모리 모듈의 동작 방법.
  14. 제 12항에 있어서,
    상기 다수의 제1메모리 장치와 상기 하나 이상의 제2메모리 장치는 동일한 종류의 메모리인
    메모리 모듈의 동작 방법.
  15. 제 14항에 있어서,
    상기 다수의 제1메모리 장치보다 상기 하나 이상의 제2메모리 장치가 에러 발생률이 낮은
    메모리 모듈의 동작 방법.
  16. 제 15항에 있어서,
    상기 다수의 제1메모리 장치와 상기 하나 이상의 제2메모리 장치 각각은 DRAM이고,
    상기 메모리 모듈은 DIMM (Dual In-Line Memory Module) 타입인
    메모리 모듈의 동작 방법.
  17. 제 16항에 있어서,
    상기 다수의 제1메모리 장치보다 상기 하나 이상의 제2메모리 장치의 리프레시 주기가 더 짧은
    메모리 모듈의 동작 방법.
KR1020170062754A 2017-05-22 2017-05-22 메모리 모듈 및 이의 동작 방법 KR20180127707A (ko)

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)

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

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

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

Cited By (1)

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