KR20210033593A - 메모리 모듈 및 그것의 동작 방법 - Google Patents

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

Info

Publication number
KR20210033593A
KR20210033593A KR1020190114889A KR20190114889A KR20210033593A KR 20210033593 A KR20210033593 A KR 20210033593A KR 1020190114889 A KR1020190114889 A KR 1020190114889A KR 20190114889 A KR20190114889 A KR 20190114889A KR 20210033593 A KR20210033593 A KR 20210033593A
Authority
KR
South Korea
Prior art keywords
training
data
value
memory module
control
Prior art date
Application number
KR1020190114889A
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 KR1020190114889A priority Critical patent/KR20210033593A/ko
Priority to US16/879,120 priority patent/US11226823B2/en
Priority to CN202010535290.5A priority patent/CN112530484A/zh
Publication of KR20210033593A publication Critical patent/KR20210033593A/ko

Links

Images

Classifications

    • 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
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06F18/2148Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1066Output synchronization
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1084Data input buffers, e.g. comprising level conversion circuits, circuits for adapting load
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1093Input synchronization
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Memory System (AREA)

Abstract

본 발명의 하나의 실시 예에 따른 메모리 모듈은 제1 클럭 신호, 제1 데이터 신호, 및 제1 데이터 스트로브 신호를 포함하는 제1 인터페이스를 기반으로 호스트 장치와 통신하고, 상기 호스트 장치로부터의 동작 모드 제어 값에 따라 제1 동작 모드 또는 제2 동작 모드로 동작하도록 구성되는 장치 컨트롤러 및 제2 데이터 신호 및 제2 데이터 스트로브 신호를 포함하는 제2 인터페이스를 기반으로 상기 장치 컨트롤러와 통신하는 메모리 장치를 포함하고, 상기 장치 컨트롤러는 상기 제1 동작 모드에서 상기 호스트 장치에 의해 인식되는 가상의 제3 인터페이스에 대한 트레이닝이 수행되는 경우, 상기 호스트 장치로부터의 트레이닝 제어 값에 따라 미리 정해진 트레이닝 결과 값을 상기 호스트 장치로 전송하도록 구성된 버퍼 트레이닝 지원 로직 회로를 포함한다.

Description

메모리 모듈 및 그것의 동작 방법{MEMORY MODULE AND OPERATING METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로, 좀 더 상세하게는 호스트에 의해 수행되는 인터페이스 트레이닝 동작을 지원하는 메모리 모듈에 관한 것이다.
컴퓨팅 시스템은 프로세서가 사용하는 데이터를 임시로 저장하기 위한 메인 메모리를 포함한다. 메인 메모리는 DIMM(Dual In-line Memory Module), RDIMM(Registered DIMM), LRDIMM(Load Reduction DIMM) 등과 같은 표준들에 따라 동작하도록 제조된다. 이 경우, RDIMM 타입의 메모리 모듈은 데이터 버퍼를 포함하지 않으며, LRDIMM 타입의 메모리 모듈은 데이터 버퍼를 포함한다.
LRDIMM 타입의 메모리 모듈에 따르면, 각각의 메모리 장치에 대응하는 데이터 버퍼가 인쇄 회로 기판 상에 부착될 수 있다. 이에 따라, 인쇄 회로 기판의 일부 영역을 데이터 버퍼가 차지하므로, 메모리 모듈에 많은 수의 메모리 장치들이 실장될 수 없다. 또한, 데이터 버퍼를 통해 데이터가 읽어지거나 기입되므로, 읽기 및 쓰기 동작에 있어서 레이턴시(latency)가 추가로 발생될 수 있다.
본 발명의 목적은 데이터 버퍼를 포함하지 않고 LRDIMM 타입으로 동작할 수 있는 메모리 모듈을 제공하는데 있다.
본 발명의 하나의 실시 예에 따른 메모리 모듈은 제1 클럭 신호, 제1 데이터 신호, 및 제1 데이터 스트로브 신호를 포함하는 제1 인터페이스를 기반으로 호스트 장치와 통신하고, 상기 호스트 장치로부터의 동작 모드 제어 값에 따라 제1 동작 모드 또는 제2 동작 모드로 동작하도록 구성되는 장치 컨트롤러 및 제2 데이터 신호 및 제2 데이터 스트로브 신호를 포함하는 제2 인터페이스를 기반으로 상기 장치 컨트롤러와 통신하는 메모리 장치를 포함하고, 상기 장치 컨트롤러는 상기 제1 동작 모드에서 상기 호스트 장치에 의해 인식되는 가상의 제3 인터페이스에 대한 트레이닝이 수행되는 경우, 상기 호스트 장치로부터의 트레이닝 제어 값에 따라 미리 정해진 트레이닝 결과 값을 상기 호스트 장치로 전송하도록 구성된 버퍼 트레이닝 지원 로직 회로를 포함한다.
본 발명의 하나의 실시 에에 따른 장치 컨트롤러 및 메모리 장치를 포함하고, 데이터 버퍼를 포함하지 않는 메모리 모듈의 동작 방법은 호스트 장치로부터의 동작 모드 제어 값에 따라 제1 동작 모드 또는 제2 동작 모드로 초기화 동작을 수행하는 단계, 상기 제1 동작 모드로 상기 초기화 동작이 수행된 후, 상기 호스트 장치에 의해 상기 메모리 모듈에 포함되는 것으로 인식되는 가상의 데이터 버퍼와 상기 메모리 장치 사이의 가상의 인터페이스를 트레이닝하기 위한 트레이닝 모드 활성화 신호를 상기 호스트 장치로부터 수신하는 단계, 상기 트레이닝 모드 활성화 신호가 수신된 후, 상기 호스트 장치로부터 상기 가상의 인터페이스의 딜레이 값에 대응하는 트레이닝 제어 값을 수신하는 단계, 및 상기 수신된 트레이닝 제어 값에 따라 미리 정해진 트레이닝 결과 값을 상기 호스트 장치로 전송하는 단계를 포함한다.
본 발명의 하나의 실시 예에 따른 호스트 장치와 제1 인터페이스를 기반으로 통신하도록 구성되는 장치 컨트롤러 및 상기 장치 컨트롤러와 제2 인터페이스를 기반으로 통신하도록 구성되는 메모리 장치를 포함하고, 상기 장치 컨트롤러는 상기 호스트 장치에 의해 상기 제1 인터페이스에 대한 제1 트레이닝 동작이 수행되는 경우, 상기 제1 트레이닝 동작에 따라 획득된 트레이닝 결과 값을 상기 호스트 장치로 전송하고, 상기 호스트 장치에 의해 가상의 제3 인터페이스에 대한 제2 트레이닝 동작이 수행되는 경우, 미리 정해진 트레이닝 결과 값을 상기 호스트 장치로 전송하도록 더 구성된다.
본 발명에 따른 메모리 모듈은 데이터 버퍼를 포함하지 않고, LRDIMM 타입으로 동작할 수 있다. 본 발명에 따른 메모리 모듈은 데이터 버퍼를 포함하지 않으므로, 더 많은 수의 메모리 장치들을 포함할 수 있다. 또한, 읽기 레이턴시 및 쓰기 레이턴시가 감소될 수 있다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다.
도 2는 본 발명의 하나의 실시 예에 따른 메모리 모듈을 보여주는 블록도이다.
도 3은 도 2의 메모리 모듈이 제1 동작 모드인 경우, 호스트 컨트롤러에 의해 인식되는 메모리 모듈의 예시를 보여주는 블록도이다.
도 4는 도 2의 메모리 모듈의 예시적인 동작을 보여주는 순서도이다.
도 5는 메모리 인터페이스 트레이닝 동작을 수행하기 위한 도 2의 장치 컨트롤러의 예시를 보여주는 블록도이다.
도 6은 도 5의 제어 레지스터의 예시를 보여준다.
도 7은 도 2의 메모리 모듈이 MRE(P) 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다.
도 8은 MRE(P) 트레이닝 동작에서 도 2의 호스트 컨트롤러의 동작의 예시를 보여준다.
도 9는 도 2의 메모리 모듈이 DWL 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다.
도 10은 도 2의 메모리 모듈이 MRD 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다.
도 11은 도 2의 메모리 모듈이 MWD 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다.
도 12는 호스트 인터페이스 트레이닝 동작을 수행하기 위한 도 2의 장치 컨트롤러의 예시를 보여주는 블록도이다.
도 13은 도 2의 메모리 모듈이 HWL 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다.
도 14는 호스트 인터페이스 트레이닝 동작을 수행하기 위한 도 2의 장치 컨트롤러의 예시를 보여주는 블록도이다.
도 15는 도 2의 메모리 모듈이 HIW 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
본 명세서에서 두 장치들 사이의 “인터페이스(interface)”는 두 장치들 사이에 송수신되는 신호들 및 이러한 신호들을 송수신하기 위해 이용되는 신호들을 의미한다. 예를 들어, 인터페이스는 데이터 신호, 데이터 스트로브 신호, 및 클럭 신호 등을 포함할 수 있다.
본 명세서에서 “인터페이스 트레이닝(interface training)”은 두 장치들 사이에 송수신되는 신호들 및 이러한 신호들을 송수신하기 위해 이용되는 신호들의 딜레이 값(즉, 위상 또는 타이밍 값)을 조절하여 최적화된 딜레이 값을 선택하는 동작을 의미한다.
도 1은 본 발명의 실시 예에 따른 컴퓨팅 시스템을 보여주는 블록도이다. 도 1을 참조하면, 컴퓨팅 시스템(1000)은 기판(1001), 프로세서(1100), 메인 메모리(1200), 시스템 인터커넥트(1300), 스토리지 장치(1400), 사용자 입출력 장치(1500), 및 모뎀(1600)을 포함할 수 있다.
기판(1001)은 프로세서(1100), 메인 메모리(1200), 시스템 인터커넥트(1300), 스토리지 장치(1400), 사용자 입출력 장치(1500), 및 모뎀(1600)이 실장되는 모 기판(mother board)일 수 있다. 기판(1001)은 프로세서(1100), 메인 메모리(1200), 스토리지 장치(1400), 사용자 입출력 장치(1500), 그리고 모뎀(1600)이 각각 장착되는 제1 내지 제5 커넥터들(1010~1050)을 포함할 수 있다. 기판(1001)은 시스템 인터커넥트(1300)를 포함하도록 제조될 수 있다.
프로세서(1100)는 컴퓨팅 시스템(1000)을 제어하고 다양한 연산들을 수행하는 중앙 처리 부(CPU) 또는 응용 프로세서를 포함할 수 있다. 프로세서(1100)는 메인 메모리(1200)를 제어하도록 구성되는 호스트 컨트롤러(1110)를 포함할 수 있다. 프로세서(1100)는 연산들을 수행하는 데에 필요한 코드들 및 연산들에 수반되는 데이터를 메인 메모리(1200)에 저장할 수 있다.
메인 메모리(1200)는 제2 커넥터(1020)를 통해 기판(1001)에 연결될 수 있다. 메인 메모리(1200)는 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. 메인 메모리(1200)는 플래시 메모리, 상 변화 메모리 등과 같은 불휘발성 메모리를 포함하는 스토리지 클래스 메모리(SCM)일 수 있다. 메인 메모리(1200)는 DIMM(Dual In-line Memory Module)에 기반할 수 있다.
메인 메모리(1200)는 장치 컨트롤러(1210)를 포함할 수 있다. 장치 컨트롤러(1210)는 호스트 컨트롤러(1110)로부터 제공된 명령에 기초하여 메인 메모리(1200)를 제어할 수 있다. 예를 들어, 장치 컨트롤러(1210)는 메인 메모리(1200)에 포함된 메모리 장치에 데이터를 기입하거나 메모리 장치로부터 데이터를 읽을 수 있다.
시스템 인터커넥트(1300)는 프로세서(1100), 스토리지 장치(1400), 사용자 입출력 장치(1500), 및 모뎀(1600)의 사이에 채널들을 제공할 수 있다. 시스템 인터커넥트(1300)는 PCIe(Peripheral Component Interconnect express), NVMe(Nonvolatile Memory express), AXI(Advanced eXtensible Interface), AMBA(ARM Microcontroller Bus Architecture) 등과 같은 다양한 표준들 중 하나에 기반할 수 있다.
스토리지 장치(1400)는 제3 커넥터(1030)를 통해 기판(1001)에 연결될 수 있다. 스토리지 장치(1400)는 컴퓨팅 시스템(1000)의 보조 메모리(Secondary Memory)로 기능할 수 있다. 스토리지 장치(1400)는 프로세서(1100)에 의해 구동되는 운영체제, 애플리케이션, 사용자 데이터의 원본을 저장할 수 있다. 스토리지 장치(1400)는 HDD(Hard Disk Drive), SSD(Solid State Drive), ODD(Optical Disk Drive) 등을 포함할 수 있다.
사용자 입출력 장치(1500)는 제4 커넥터(1040)를 통해 기판(1001)에 연결될 수 있다. 사용자 입출력 장치(1500)는 사용자와 정보를 교환하도록 구성될 수 있다. 사용자 입출력 장치(1500)는 키보드, 마우스, 터치 패널, 동작 센서, 마이크 등과 같이 사용자로부터 정보를 수신하는 사용자 입력 장치를 포함할 수 있다. 사용자 입출력 장치(1500)는 표시 장치, 스피커, 빔 프로젝터, 프린터 등과 같이 사용자에게 정보를 제공하는 사용자 출력 장치를 포함할 수 있다.
모뎀(1600)은 제5 커넥터(1050)를 통해 기판(1001)에 연결될 수 있다. 모뎀(1600)은 외부 장치와 무선 또는 유선으로 데이터를 교환하도록 구성될 수 있다. 예시적인 실시 예에서, 모뎀(1600)은 기판(1001) 또는 프로세서(1100)와 통합되어 제공될 수 있다.
도 2는 본 발명의 하나의 실시 예에 따른 메모리 모듈을 보여주는 블록도이다. 도 2의 메모리 모듈(2000) 및 호스트 컨트롤러(3000)는 도 1의 메인 메모리(1200) 및 호스트 컨트롤러(1110)에 대응할 수 있다.
도 2를 참조하면, 메모리 모듈(2000)은 장치 컨트롤러(100) 및 복수의 메모리 장치들(210~2n0)을 포함한다. 장치 컨트롤러(100) 및 메모리 장치들(210~2n0)은 서로 다른 반도체 패키지들로 구현될 수 있으며, 하나의 인쇄 회로 기판 상에 각각 배치될 수 있다. 예를 들어, 메모리 장치들(210~2n0)의 개수는 9개일 수 있으나, 본 발명이 이에 한정되는 것은 아니다.
장치 컨트롤러(100)는 호스트 인터페이스를 기반으로 호스트 컨트롤러(3000)와 통신할 수 있다. 호스트 인터페이스는 장치 컨트롤러(100) 및 호스트 컨트롤러(3000) 사이에 송수신되는 신호들을 포함할 수 있다. 예를 들어, 호스트 인터페이스는 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 포함할 수 있다.
장치 컨트롤러(100)는 호스트 컨트롤러(3000)로부터 커맨드(CMDe), 어드레스(ADDRe), 클럭 신호(CK), 데이터 신호(DQ), 및 데이터 스트로브 신호(DQS)를 수신할 수 있다. 이 경우, 장치 컨트롤러(100)는 데이터 스트로브 신호(DQS)의 천이 타이밍을 기반으로 데이터 신호(DQ)의 레벨을 래치(latch)할 수 있다. 장치 컨트롤러(100)가 호스트 컨트롤러(3000)로부터 수신하는 신호는 이에 한정되지 않으며, 장치 컨트롤러(100)는 호스트 컨트롤러(3000)로부터 다양한 신호들(예를 들어, 제어 신호들)을 수신할 수 있다. 장치 컨트롤러(100)는 호스트 컨트롤러(3000)로 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 전송할 수 있다.
장치 컨트롤러(100)는 컨트롤러 인터페이스를 기반으로 메모리 장치들(210~2n0)과 통신할 수 있다. 컨트롤러 인터페이스는 장치 컨트롤러(100) 및 메모리 장치들(210~2n0) 사이에 송수신되는 신호들을 포함할 수 있다. 예를 들어, 컨트롤러 인터페이스는 데이터 신호(CDQ) 및 데이터 스트로브 신호(CDQS)를 포함할 수 있다.
장치 컨트롤러(100)는 메모리 장치들(210~2n0) 각각으로 커맨드(CMDi), 어드레스(ADDRi), 클럭 신호(MCK), 데이터 신호(CDQ), 및 데이터 스트로브 신호(CDQS)를 전송할 수 있다. 장치 컨트롤러(100)는 메모리 장치들(210~2n0) 각각으로부터 데이터 신호(CDQ) 및 데이터 스트로브 신호(CDQS)를 수신할 수 있다. 이 경우, 장치 컨트롤러(100)는 데이터 스트로브 신호(CDQS)의 천이 타이밍을 기반으로 데이터 신호(CDQ)의 레벨을 래치할 수 있다.
장치 컨트롤러(100)는 호스트 컨트롤러(3000)로부터 전송되는 커맨드(CMDe), 어드레스(ADDRe), 및 클럭 신호(CK)에 응답하여 메모리 장치들(210~2n0) 중 적어도 하나로 커맨드(CMDi), 어드레스(ADDRi), 및 클럭 신호(MCK)를 전송할 수 있다. 장치 컨트롤러(100)는 호스트 컨트롤러(3000)로부터의 선택 신호에 따라 메모리 장치들(210~2n0) 중 적어도 하나로 커맨드(CMDi), 어드레스(ADDRi), 및 클럭 신호(MCK)를 전송할 수 있다.
장치 컨트롤러(100)는 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 기반으로 대응하는 메모리 장치에 데이터 신호(CDQ) 및 데이터 스트로브 신호(CDQS)를 전송할 수 있다. 예를 들어, 장치 컨트롤러(100)는 제1 및 제2 신호 라인들(101, 102)을 통해 수신되는 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 기반으로 제5 및 제6 신호 라인들(105, 106)을 통해 데이터 신호(CDQ) 및 데이터 스트로브 신호(CDQS)를 제1 메모리 장치(210)로 전송할 수 있다. 장치 컨트롤러(100)는 제3 및 제4 신호 라인들(103, 104)을 통해 수신되는 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 기반으로 제7 및 제8 신호 라인들(107, 108)을 통해 데이터 신호(CDQ) 및 데이터 스트로브 신호(CDQS)를 제1 메모리 장치(210)로 전송할 수 있다.
예시적인 실시 예에서, 장치 컨트롤러(100)는 호스트 컨트롤러(3000)로부터 전송되는 데이터 신호(DQ)를 그대로 메모리 장치로 전송할 수 있다. 이 경우, 데이터 신호(DQ)의 값과 장치 컨트롤러(100)로부터 메모리 장치로 전송되는 데이터 신호(CDQ)의 값은 동일할 수 있다. 다른 실시 예에서, 장치 컨트롤러(100)는 호스트 컨트롤러(3000)로부터 전송되는 데이터 신호(DQ)를 처리하여 메모리 장치로 전송할 수 있다. 이 경우, 데이터 신호(DQ)의 값과 장치 컨트롤러(100)로부터 메모리 장치로 전송되는 데이터 신호(CDQ)의 값은 다를 수 있다.
장치 컨트롤러(100)는 커맨드(CMDi) 및 어드레스(ADDRi)를 기반으로 메모리 장치들(210~2n0) 각각으로부터 데이터 신호(CDQ)를 읽거나, 또는 메모리 장치들(210~2n0) 각각으로 데이터 신호(CDQ)를 기입할 수 있다.
메모리 장치들(210~2n0) 각각은 커맨드(CMDi) 및 어드레스(ADDRi)에 응답하여 내부 메모리 셀들로부터 데이터 신호(CDQ)를 출력하거나, 또는 내부 메모리 셀들에 데이터 신호(CDQ)를 저장할 수 있다. 데이터 신호(CDQ)를 출력하기 위해, 메모리 장치들(210~2n0) 각각은 데이터 신호(CDQ) 및 데이터 스트로브 신호(CDQS)를 장치 컨트롤러(100)로 전송할 수 있다. 데이터 신호(CDQ)를 저장하기 위해, 메모리 장치들(210~2n0) 각각은 데이터 신호(CDQ) 및 데이터 스트로브 신호(CDQS)를 장치 컨트롤러(100)로부터 수신할 수 있다. 이 경우, 메모리 장치들(210~2n0) 각각은 데이터 스트로브 신호(CDQS)의 천이 타이밍에 기초하여 데이터 신호(CDQ)의 레벨을 래치할 수 있다.
메모리 장치들(210~2n0) 각각은 클럭 신호(MCK)에 기초하여 동작할 수 있다. 예를 들어, 메모리 장치들(210~2n0) 각각은 클럭 신호(MCK)로부터 데이터 스트로브 신호(CDQS)를 생성할 수 있다.
메모리 장치들(210~2n0) 각각은 DRAM 등과 같은 휘발성 메모리 장치이거나, 또는 플래시 메모리, PRAM, RRAM, MRAM 등과 같은 불휘발성 메모리 장치일 수 있다.
장치 컨트롤러(100)는 제어 로직 회로(110), 제1 레지스터(120), 제2 레지스터(130), 및 버퍼 트레이닝 지원 로직 회로(140)를 포함할 수 있다. 제어 로직 회로(110)는 커맨드(CMDe) 및 어드레스(ADDRe)에 응답하여 장치 컨트롤러(100)의 동작과 관련된 제어 값을 제1 레지스터(120)에 저장할 수 있다. 장치 컨트롤러(100)는 제1 레지스터(120)에 저장된 제어 값에 따라 동작할 수 있다. 예를 들어, 장치 컨트롤러(100)는 제1 레지스터(120)에 저장된 동작 모드 제어 값에 따라 제1 동작 모드 또는 제2 동작 모드로 동작할 수 있다. 즉, 장치 컨트롤러(100)는 제1 동작 모드 및 제2 동작 모드 중 호스트 컨트롤러(3000)로부터 선택된 동작 모드로 동작할 수 있다.
제1 동작 모드는 LRDIMM(Load Reduction DIMM) 표준을 기반으로 동작하는 모드일 수 있고, 제2 동작 모드는 RDIMM(Registered DIMM) 표준을 기반으로 동작하는 모드일 수 있다. 장치 컨트롤러(100)가 제1 동작 모드인 경우, 메모리 모듈(2000)은 호스트 컨트롤러(3000)에 의해 LRDIMM 타입의 메모리 모듈인 것으로 인식될 수 있다. 장치 컨트롤러(100)가 제2 동작 모드인 경우, 메모리 모듈(2000)은 호스트 컨트롤러(3000)에 의해 RDIMM 타입의 메모리 모듈인 것으로 인식될 수 있다. 즉, 메모리 모듈(2000)은 호스트 컨트롤러(3000)부터의 제어 값에 따라 LRDIMM 또는 RDIMM 중 하나로 동작할 수 있다.
메모리 모듈(2000)이 제1 동작 모드인 경우, 호스트 컨트롤러(3000)는 도 3에 도시된 바와 같이, 메모리 모듈(2000)이 메모리 장치들(210~2n0) 각각에 대응하는 데이터 버퍼를 포함하는 것으로 인식할 수 있다.
도 3은 도 2의 메모리 모듈이 제1 동작 모드인 경우, 호스트 컨트롤러에 의해 인식되는 메모리 모듈의 예시를 보여주는 블록도이다. 도 3을 참조하면, 호스트 컨트롤러(3000)는 메모리 모듈(4000)이 장치 컨트롤러(300), 데이터 버퍼(400), 및 메모리 장치(500)를 포함하는 것으로 인식할 수 있다. 이 경우, 장치 컨트롤러(300)는 커맨드(CMDe), 어드레스(ADDRe), 및 클럭 신호(CK)를 수신할 수 있다.
호스트 컨트롤러(3000)는 데이터 버퍼(400) 및 메모리 장치(500)가 메모리 인터페이스를 기반으로 통신하는 것으로 인식할 수 있다. 이 경우, 메모리 인터페이스는 데이터 버퍼(400) 및 메모리 장치(500) 사이에 송수신되는 신호들 및 이러한 신호들을 송수신하기 위해 이용되는 신호들을 포함할 수 있다. 예를 들어, 메모리 인터페이스는 데이터 신호(MDQ), 데이터 스트로브 신호(MDQS), 및 클럭 신호(BCK)를 포함할 수 있다.
호스트 컨트롤러(3000)는 데이터 버퍼(400)가 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 수신하고, 장치 컨트롤러(300)로부터 제공되는 클럭 신호(BCK)에 기초하여 동작하는 것으로 인식할 수 있다. 이 경우, 클럭 신호(BCK)는 클럭 신호(CK)에 기초하여 생성되는 것으로 인식될 수 있다. 호스트 컨트롤러(3000)는 데이터 버퍼(400)가 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 기반으로 메모리 장치(500)에 데이터 신호(MDQ) 및 데이터 스트로브 신호(MDQS)를 전송하는 것으로 인식할 수 있다. 호스트 컨트롤러(3000)는 데이터 버퍼(400)가 메모리 장치(500)로부터 데이터 신호(MDQ) 및 데이터 스트로브 신호(MDQS)를 수신하는 것으로 인식할 수 있다.
호스트 컨트롤러(3000)는 메모리 장치(500)가 데이터 버퍼(400)로부터 데이터 신호(MDQ) 및 데이터 스트로브 신호(MDQS)를 수신하고, 데이터 버퍼(400)로 데이터 신호(MDQ) 및 데이터 스트로브 신호(MDQS)를 전송하는 것으로 인식할 수 있다. 이 경우, 메모리 장치(500)는 장치 컨트롤러(300)로부터 제공되는 클럭 신호(MCK)에 기초하여 동작하고, 클럭 신호(MCK)는 클럭 신호(CK)에 기초하여 생성되는 것으로 인식될 수 있다.
이와 같이, 메모리 모듈(2000)이 제1 동작 모드인 경우, 호스트 컨트롤러(3000)는 메모리 모듈(2000)이 메모리 모듈(4000)로서 동작하는 것으로 인식할 수 있다. 이 경우, 호스트 컨트롤러(3000)는 메모리 인터페이스를 기반으로 데이터 버퍼(400)와 메모리 장치(500)가 통신하는 것으로 인식할 수 있다. 즉, 데이터 버퍼(400)는 호스트 컨트롤러(3000)에 의해 메모리 모듈(2000)에 포함되는 것으로 인식되는 가상의 데이터 버퍼일 수 있다. 따라서, 메모리 인터페이스는 가상의 데이터 버퍼(400)와 메모리 장치(500) 사이의 가상의 인터페이스일 수 있다.
호스트 컨트롤러(3000)에 의해 메모리 모듈(2000)이 메모리 모듈(4000)과 같이 인식됨에 따라, 호스트 컨트롤러(3000)는 호스트 인터페이스 및 메모리 인터페이스가 존재하는 것으로 인식할 수 있다. 이에 따라, 호스트 컨트롤러(3000)는 호스트 인터페이스 트레이닝 동작 및 메모리 인터페이스 트레이닝 동작을 수행할 수 있다. 호스트 컨트롤러(3000)는 메모리 모듈(2000)이 노멀(normal) 동작을 수행하기 전에 인터페이스 트레이닝 동작을 수행할 수 있다.
다시 도 2를 참조하면, 메모리 모듈(2000)은 데이터 버퍼를 포함하지 않으므로, 메모리 모듈(2000)과 호스트 컨트롤러(3000) 사이의 호스트 인터페이스가 존재할 수 있으나, 데이터 버퍼와 메모리 장치 사이의 메모리 인터페이스는 존재할 수 없다(즉, 메모리 인터페이스는 가상의 인터페이스임). 즉, 메모리 모듈(2000)은 호스트 인터페이스 트레이닝 동작을 수행할 수 있으나, 메모리 인터페이스 트레이닝 동작을 수행할 수 없다. 메모리 모듈(2000)이 제1 동작 모드로 동작하기 위해, 호스트 컨트롤러(3000)에 의한 메모리 인터페이스 트레이닝 동작이 정상적으로 수행되어야 한다. 이에 따라, 메모리 모듈(2000)은 메모리 인터페이스 트레이닝 동작을 모사(즉, 실제로 수행하지 않음)할 수 있다. 호스트 컨트롤러(3000)는 메모리 모듈(2000)의 트레이닝 모사 동작에 따라 메모리 인터페이스 트레이닝 동작이 정상적으로 수행되는 것으로 인식할 수 있다.
제어 로직 회로(110)는 호스트 컨트롤러(3000)로부터 메모리 인터페이스 트레이닝 동작을 위한 커맨드(CMDe) 및 어드레스(ADDRe)를 수신할 수 있다. 제어 로직 회로(110)는 수신된 커맨드(CMDe) 및 어드레스(ADDRe)를 기반으로 버퍼 트레이닝 지원 로직 회로(140)에 트레이닝 제어 값을 제공할 수 있다. 버퍼 트레이닝 지원 로직 회로(140)는 제공된 트레이닝 제어 값에 따라 미리 정해진 트레이닝 결과 값을 생성하고, 생성된 트레이닝 결과 값을 데이터 신호(DQ)를 통해 호스트 컨트롤러(3000)로 전송할 수 있다. 즉, 버퍼 트레이닝 지원 로직 회로(140)는 미리 정해진 트레이닝 결과 값을 호스트 컨트롤러(3000)로 전송함으로써 메모리 인터페이스 트레이닝 동작을 모사할 수 있다.
호스트 컨트롤러(3000)는 트레이닝 결과 값을 기반으로 메모리 인터페이스의 최종 딜레이 값(즉, 최종 위상 또는 최종 타이밍 값)을 선택할 수 있다. 예를 들어, 호스트 컨트롤러(3000)는 도 3의 데이터 버퍼(400)로부터의 데이터 스트로브 신호(MDQS)의 최종 딜레이 값을 선택할 수 있다. 호스트 컨트롤러(3000)는 선택된 최종 딜레이 값을 메모리 모듈(2000)로 제공할 수 있다. 제어 로직 회로(110)는 최종 딜레이 값을 버퍼 트레이닝 지원 로직 회로(140)에 저장할 수 있다. 이에 따라, 호스트 컨트롤러(3000)는 메모리 인터페이스 트레이닝 동작이 정상적으로 완료된 것으로 인식할 수 있다. 버퍼 트레이닝 지원 로직 회로(140)를 기반으로 수행되는 트레이닝 모사 동작은 도 5 내지 도 11을 참조하여 자세하게 설명될 것이다.
장치 컨트롤러(100)는 호스트 컨트롤러(3000)로부터 호스트 인터페이스 트레이닝 동작을 위한 커맨드(CMDe) 및 어드레스(ADDRe)를 수신할 수 있다. 장치 컨트롤러(100)는 수신된 커맨드(CMDe) 및 어드레스(ADDRe)를 기반으로 호스트 인터페이스 트레이닝 동작을 실제로 수행할 수 있다. 장치 컨트롤러(100)는 트레이닝 동작에 따라 생성된 트레이닝 결과 값을 호스트 컨트롤러(3000)로 제공할 수 있다. 호스트 컨트롤러(3000)는 트레이닝 결과 값을 기반으로 호스트 인터페이스의 최종 딜레이 값을 선택할 수 있다. 호스트 컨트롤러(3000)는 선택된 최종 딜레이 값을 내부 레지스터에 저장할 수 있다. 이에 따라, 호스트 인터페이스 트레이닝 동작이 완료될 수 있다.
예시적인 실시 예에서, 호스트 인터페이스 트레이닝 동작을 위해, 버퍼 트레이닝 지원 로직 회로(140)가 이용될 수 있다. 장치 컨트롤러(100)의 호스트 인터페이스 트레이닝 동작은 도 12 내지 도 15를 참조하여 자세하게 설명될 것이다.
장치 컨트롤러(100)는 호스트 컨트롤러(3000)의 명령과 관계없이 자체적으로 컨트롤러 인터페이스 트레이닝 동작을 수행할 수 있다. 예를 들어, 제어 로직 회로(110)는 컨트롤러 인터페이스 트레이닝 동작을 수행하고, 트레이닝 동작에 따라 선택된 컨트롤러 인터페이스의 최종 딜레이 값을 제2 레지스터(130)에 저장할 수 있다. 이에 따라, 장치 컨트롤러(100)는 제2 레지스터(130)에 저장된 최종 딜레이 값을 기반으로 데이터 신호(CDQ) 및 데이터 스트로브 신호(CDQS)를 전송하거나 수신할 수 있다.
장치 컨트롤러(100)는 메모리 장치들(210~2n0) 각각과 장치 컨트롤러(100) 사이의 컨트롤러 인터페이스들 각각에 대하여 트레이닝 동작을 수행할 수 있다. 예를 들어, 장치 컨트롤러(100)는 제1 메모리 장치(210)와 장치 컨트롤러(100) 사이의 제1 컨트롤러 인터페이스를 트레이닝할 수 있다. 제1 컨트롤러 인터페이스 트레이닝 동작과 독립적으로 장치 컨트롤러(100)는 제n 메모리 장치(2n0)와 장치 컨트롤러(100) 사이의 제n 컨트롤러 인터페이스를 트레이닝할 수 있다. 이에 따라, 제2 레지스터(130)는 제1 컨트롤러 인터페이스의 최적화된 딜레이 값과 제n 컨트롤러 인터페이스의 최적화된 딜에이 값을 분리하여 저장할 수 있다.
상술한 바와 같이, 메모리 모듈(2000)은 데이터 버퍼를 포함하지 않고, 제1 동작 모드(즉, LRDIMM 타입)로 동작할 수 있다. 메모리 모듈(2000)이 미리 정해진 크기를 가지는 경우, 메모리 모듈(2000)은 데이터 버퍼를 포함하지 않으므로, 더 많은 수의 메모리 장치들이 메모리 모듈(2000)에 실장될 수 있다. 이에 따라, 메모리 모듈(2000)의 용량이 증가될 수 있다. 또한, 호스트 컨트롤러(3000)와 메모리 장치들(210~2n0) 사이에서 데이터 버퍼를 이용하지 않고 데이터가 전달되므로, 읽기 레이턴시 및 쓰기 레이턴시가 감소될 수 있다.
도 4는 도 2의 메모리 모듈의 예시적인 동작을 보여주는 순서도이다. 도 2 및 도 4를 참조하면, S101 단계에서, 메모리 모듈(2000)은 전원이 켜지거나 리셋될 수 있다. S102 단계에서, 메모리 모듈(2000)은 제1 동작 모드로서 초기화할 수 있다. 예를 들어, 초기화 과정에서, 호스트 컨트롤러(3000)는 제1 동작 모드 및 제2 동작 모드 중 제1 동작 모드를 선택할 수 있다. 이에 따라, 메모리 모듈(2000)은 선택된 제1 동작 모드로서 초기화 동작을 수행할 수 있다.
S103 단계에서, 메모리 모듈(2000)은 메모리 인터페이스 트레이닝 동작 및 호스트 인터페이스 트레이닝 동작을 수행할 수 있다. 메모리 인터페이스 트레이닝 동작 및 호스트 인터페이스 트레이닝 동작은 호스트 컨트롤러(3000)에 의해 제어될 수 있다. 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 전송된 명령 또는 트레이닝 제어 값에 따라 트레이닝 동작들을 수행할 수 있다. 메모리 인터페이스 트레이닝 동작에 따라 호스트 컨트롤러(3000)에 의해 메모리 인터페이스의 최종 딜레이 값들이 선택될 수 있다. 호스트 인터페이스 트레이닝 동작에 따라 호스트 컨트롤러(3000)에 의해 호스트 인터페이스의 최종 딜레이 값들이 선택될 수 있다.
S103 단계의 트레이닝 동작들이 완료된 후, S104 단계에서, 메모리 모듈(2000)은 트레이닝된 인터페이스를 테스트할 수 있다. 인터페이스 테스트 동작은 호스트 컨트롤러(3000)에 의해 제어될 수 있다. 호스트 컨트롤러(3000)는 인터페이스 테스트 동작에 따라 인터페이스 트레이닝 동작들이 정상적으로 수행되었는지 여부를 확인할 수 있다.
테스트 동작이 완료된 후, S105 단계에서, 메모리 모듈(2000)은 노멀 동작을 수행할 수 있다. 메모리 모듈(2000)은 노멀 동작에서 호스트 인터페이스 및 컨트롤러 인터페이스를 기반으로 호스트 컨트롤러(3000) 및 메모리 장치들(210~2n0)과 통신할 수 있다. 컨트롤러 인터페이스 트레이닝 동작은 메모리 모듈(2000)에 의해 별도로 수행될 수 있다. 노멀 동작에서, 메모리 모듈(2000)은 메모리 인터페이스 트레이닝 동작에 따라 선택된 최종 딜레이 값들을 이용하지 않을 수 있다.
이하에서는 도 5 내지 도 11을 참조하여 메모리 모듈(2000)의 메모리 인터페이스 트레이닝 동작을 상세하게 설명할 것이다.
도 5는 메모리 인터페이스 트레이닝 동작을 수행하기 위한 도 2의 장치 컨트롤러의 예시를 보여주는 블록도이다. 도 5를 참조하면, 장치 컨트롤러(100)는 제어 로직 회로(110), 버퍼 트레이닝 지원 로직 회로(140), 및 선택 회로(150)를 포함할 수 있다. 제어 로직 회로(110)는 호스트 컨트롤러(3000)로부터 제공된 커맨드(CMDe) 및 어드레스(ADDRe)에 기초하여 선택 회로(150) 및 버퍼 트레이닝 지원 로직 회로(140)를 제어할 수 있다.
선택 회로(150)는 제어 로직 회로(110)로부터의 제어 신호(SCC)에 기초하여 데이터 신호(DQ)를 제1 데이터 경로(P1) 또는 제2 데이터 경로(P2) 중 하나로 전달할 수 있다. 제1 데이터 경로(P1)를 통해 전달된 데이터 신호(DQ)는 메모리 장치로 제공되거나 장치 컨트롤러(100)의 별도의 회로로 제공될 수 있다. 제2 데이터 경로(P2)를 통해 전달된 데이터 신호(DQ)는 버퍼 트레이닝 지원 로직 회로(140)로 제공될 수 있다. 또한, 선택 회로(150)는 제어 로직 회로(110)로부터의 제어 신호(SCC)에 기초하여 제1 데이터 경로(P1) 또는 제2 데이터 경로(P2) 중 하나로부터 입력되는 데이터 신호(DQ)를 호스트 컨트롤러(3000)로 제공할 수 있다.
제어 로직 회로(110)는 노멀 동작에서 데이터 신호(DQ)가 제1 데이터 경로(P1)를 통해 장치 컨트롤러(100) 또는 호스트 컨트롤러(3000)로 전달되도록 선택 회로(150)를 제어할 수 있다. 제어 로직 회로(110)는 메모리 인터페이스 트레이닝 동작에서 데이터 신호(DQ)가 제2 데이터 경로(P2)를 통해 장치 컨트롤러(100) 또는 호스트 컨트롤러(3000)로 전달되도록 선택 회로(150)를 제어할 수 있다.
버퍼 트레이닝 지원 로직 회로(140)는 버퍼 레지스터(141), 제어 레지스터(142), 및 트레이닝 결과 값 생성기(143)를 포함할 수 있다. 버퍼 레지스터(141)는 제2 데이터 경로(P2)를 통해 전달되는 데이터 신호(DQ)를 저장할 수 있다. 버퍼 레지스터(141)에 저장된 데이터 신호(DQ)는 제2 데이터 경로(P2)를 통해 호스트 컨트롤러(3000)로 전송될 수 있다.
제어 레지스터(142)는 메모리 인터페이스 트레이닝 동작과 관련된 트레이닝 제어 값을 저장할 수 있다. 제어 로직 회로(110)는 호스트 컨트롤러(3000)로부터 커맨드(CMDe) 및 어드레스(ADDRe)를 기반으로 트레이닝 제어 값을 수신할 수 있다. 제어 로직 회로(110)는 제어 신호(BTC)를 통해 수신된 트레이닝 제어 값을 제어 레지스터(142)에 저장할 수 있다.
트레이닝 결과 값 생성기(143)는 제어 레지스터(142)에 저장된 트레이닝 제어 값에 따라 미리 정해진 트레이닝 결과 값을 생성할 수 있다. 미리 정해진 트레이닝 결과 값은 실제 메모리 인터페이스에 대한 트레이닝 동작에 따라 획득되는 실제 트레이닝 결과 값에 대응할 수 있다. 즉, 미리 정해진 트레이닝 결과 값은 실제 트레이닝 결과 값에 대한 모사 값일 수 있다. 예를 들어, 미리 정해진 트레이닝 결과 값은 메모리 인터페이스 트레이닝 동작이 정상적으로 완료되도록 특정 알고리즘에 따라 생성되거나, 또는 특정 값으로서 미리 저장될 수 있다. 생성된 트레이닝 결과 값은 버퍼 레지스터(141)를 통해 호스트 컨트롤러(3000)로 전송될 수 있다.
상술한 바와 같이, 메모리 인터페이스 트레이닝 동작 시, 버퍼 트레이닝 지원 로직 회로(140)는 트레이닝 제어 값에 따라 미리 정해진 트레이닝 결과 값을 생성함으로써 메모리 인터페이스 트레이닝 동작을 모사할 수 있다. 이에 따라, 호스트 컨트롤러(3000)에 의해 수행되는 메모리 인터페이스 트레이닝 동작이 정상적으로 완료될 수 있다. 따라서, 메모리 모듈(2000)은 데이터 버퍼 없이 제1 동작 모드로서 동작할 수 있다.
도 6은 도 5의 제어 레지스터의 예시를 보여준다. 도 5 및 도 6을 참조하면, 제어 레지스터(142)는 모드 필드(MODE), 제어 필드들(MRE(P), DWL, MRD, MWD), 및 데이터 필드들(MPR, TSW)을 포함할 수 있다.
모드 필드(MODE)는 트레이닝 모드의 종류를 가리킬 수 있다. 메모리 인터페이스 트레이닝 동작에서, 모드 필드(MODE)는 메모리 인터페이스 트레이닝 동작의 다양한 트레이닝 모드들 중 하나를 저장할 수 있다. 예를 들어, 메모리 인터페이스에 대한 트레이닝 모드들은 데이터 신호 수신 활성화 위상(MRE(P); MDQ Receive Enable Phase)을 트레이닝하는 모드(이하, MRE(P) 트레이닝 모드라 칭함), 쓰기 레벨링(Write Leveling)을 트레이닝하는 모드(이하, DWL 트레이닝 모드랑 칭함), 읽기 딜레이(Read Delay)를 트레이닝하는 모드(이하, MRD 트레이닝 모드라 칭함), 및 쓰기 딜레이(Write Delay)를 트레이닝하는 모드(이하, MWD 트레이닝 모드라 칭함)를 포함할 수 있다.
MRE(P) 트레이닝 모드에서 도 3의 데이터 버퍼(400)의 클럭 신호(BCK)로부터 생성되는 수신 활성화 신호의 최종 딜레이 값이 선택될 수 있다. MRE(P) 트레이닝 모드에서 선택되는 수신 활성화 신호의 최종 딜레이 값은 클럭 신호(BCK)의 한 주기 이내에서 조절되는 딜레이 값들 중 하나일 수 있다.
DWL 트레이닝 모드에서 도 3의 데이터 버퍼(400)로부터 전송되는 데이터 스트로브 신호(MDQS)의 최종 딜레이 값이 선택될 수 있다. DWL 트레이닝 모드에서 선택되는 데이터 스트로브 신호(MDQS)의 최종 딜레이 값은 데이터 스트로브 신호(MDQS)의 한 주기 이내에서 조절되는 딜레이 값들 중 하나일 수 있다.
MRD 트레이닝 모드에서 수신 활성화 신호의 최종 딜레이 값과 도 3의 메모리 장치(500)로부터 수신되는 데이터 스트로브 신호(MDQS) 및 데이터 신호(MDQ)의 최종 딜레이 값이 선택될 수 있다. MRD 트레이닝 모드에서 선택되는 수신 활성화 신호의 최종 딜레이 값은 클럭 신호(BCK)의 한 주기의 배수들 중 하나일 수 있다. 즉, 수신 활성화 신호의 주기 단위의 딜레이가 선택될 수 있다. MRD 트레이닝 모드에서 선택되는 데이터 스트로브 신호(MDQS) 및 데이터 신호(MDQ)의 최종 딜레이 값은 데이터 스트로브 신호(MDQS)의 한 주기 이내에서 조절되는 딜레이 값들 중 하나일 수 있다.
MWD 트레이닝 모드에서 도 3의 데이터 버퍼(400)로부터 전송되는 데이터 스트로브 신호(MDQS) 및 데이터 신호(MDQ)의 최종 딜레이 값이 선택될 수 있다. MWD 트레이닝 모드에서 선택되는 데이터 스트로브 신호(MDQS)의 최종 딜레이 값은 데이터 스트로브 신호(MDQS)의 한 주기의 배수들 중 하나일 수 있다. 즉, 데이터 스트로브 신호(MDQS)의 주기 단위의 딜레이가 선택될 수 있다. MWD 트레이닝 모드에서 선택되는 데이터 신호(MDQ)의 최종 딜레이 값은 데이터 스트로브 신호(MDQS)의 한 주기 이내에서 조절되는 딜레이 값들 중 하나일 수 있다.
이하에서는, 설명의 편의를 위해, 한 주기 이내에서 선택되는 최종 딜레이 값을 파셜 싸이클 딜레이(partial cycle delay)라 지칭하고, 한 주기의 배수로 선택되는 최종 딜레이 값을 풀 싸이클 딜레이(full cycle delay)라 지칭한다.
메모리 인터페이스 트레이닝 동작에서, 모드 필드(MODE)는 MRE(P) 트레이닝 모드, DWL 트레이닝 모드, MRD 트레이닝 모드, 및 MWD 트레이닝 모드 중 하나를 가리키는 트레이닝 모드 값(TMV)을 저장할 수 있다.
제어 필드(MRE(P))는 MRE(P) 트레이닝 모드에서 이용되는 트레이닝 제어 값(TCV_A)을 저장할 수 있다. 예를 들어, 트레이닝 제어 값(TCV_A)에 따라 클럭 신호(BCK)로부터 생성되는 수신 활성화 신호의 위상(즉, 파셜 싸이클 딜레이)이 조절될 수 있다.
제어 필드(DWL)는 DWL 트레이닝 모드에서 이용되는 트레이닝 제어 값(TCV_B)을 저장할 수 있다. 예를 들어, 트레이닝 제어 값(TCV_B)에 따라 데이터 버퍼(400)로부터 전송되는 데이터 스트로브 신호(MDQS)의 위상(즉, 파셜 싸이클 딜레이)이 조절될 수 있다.
제어 필드들(MRD1~MRD3)은 MRD 트레이닝 모드에서 이용되는 트레이닝 제어 값들(TCV_C~TCV_E)을 각각 저장할 수 있다. 예를 들어, 트레이닝 제어 값들(TCV_C~TCV_E)에 따라 수신 활성화 신호의 풀 싸이클 딜레이, 데이터 버퍼(400)로 수신되는 데이터 스트로브 신호(MDQS) 및 데이터 신호(MDQ)의 위상(즉, 파셜 싸이클 딜레이)이 조절될 수 있다.
제어 필드들(MWD1, MWD2)은 MWD 트레이닝 모드에서 이용되는 트레이닝 제어 값들(TCV_F, TCV_G)을 저장할 수 있다. 예를 들어, 트레이닝 제어 값들(TCV_F, TCV_G)에 따라 데이터 버퍼(400)로부터 전송되는 데이터 스트로브 신호(MDQS)의 풀 싸이클 딜레이 및 데이터 버퍼(400)로부터 전송되는 데이터 신호(MDQ)의 위상(즉, 파셜 싸이클 딜레이)이 조절될 수 있다.
데이터 필드(MPR)는 트레이닝 동작에서 이용되는 예상 데이터(ED; Expected Data)를 저장할 수 있다. 예를 들어, 메모리 인터페이스 트레이닝 동작에서 특정 데이터와 예상 데이터(ED)를 비교하는 동작이 요구될 수 있다.
데이터 필드(TSW)는 트레이닝 동작에서 생성되는 비교 결과(CR; Comparison Result)를 저장할 수 있다. 예를 들어, 메모리 인터페이스 트레이닝 동작에서 데이터 필드(TSW)에 특정 데이터와 예상 데이터(ED)의 비교 결과(CR)에 대응하는 값이 저장될 수 있다.
인터페이스 트레이닝 동작에서, 제어 로직 회로(110)는 커맨드(CMDe) 및 어드레스(ADDRe)를 기반으로 제어 레지스터(142)의 대응하는 필드들에 값들을 기입할 수 있다. 예시적인 실시 예에서, 제어 필드들(MRE(P), DWL, MRD1~MRD3, MWD1, MWD2)의 트레이닝 제어 값들(TCV_A~TCV_G)은 도 4의 초기화 동작에서 저장되거나, 또는 각각의 트레이닝 모드에서 호스트 컨트롤러(3000)로부터 제공될 수 있다. 예를 들어, 첫 번째 트레이닝 제어 값(TCV_A)은 초기화 동작에서 저장되고, 이후 트레이닝 제어 값(TCV_A)은 초기화 동작 이후에(예를 들어, MRE(P) 트레이닝 모드에서) 호스트 컨트롤러(3000)로부터 제공될 수 있다.
트레이닝 결과 값 생성기(143)는 제어 레지스터(142)의 필드들에 기입된 값들에 따라 트레이닝 결과 값을 생성할 수 있다. 예를 들어, 메모리 인터페이스 트레이닝 동작에서, 트레이닝 결과 값 생성기(143)는 제어 레지스터(142)의 제어 필드들(MERP, DWL, MRD1~MRD3, MWD1, MWD2)의 트레이닝 제어 값들(TCV_A~TCV_G)에 따라 미리 정해진 트레이닝 결과 값을 생성할 수 있다.
도 7은 도 2의 메모리 모듈이 MRE(P) 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다. 도 2, 도 5 내지 도 7을 참조하면, S111 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 커맨드(CMDe) 및 어드레스(ADDRe)를 기반으로 MRE(P) 트레이닝 모드 활성화 신호를 수신할 수 있다. 예를 들어, MRE(P) 트레이닝 모드 활성화 신호에 응답하여 제어 로직 회로(110)는 제어 레지스터(142)의 모드 필드(MODE)에 MRE(P) 트레이닝 모드에 대응하는 트레이닝 모드 값(TMV)을 기입할 수 있다.
S112 단계에서, 메모리 모듈(2000)은 트레이닝 제어 값(TCV_A)에 따라 호스트 컨트롤러(3000)로 미리 정해진 트레이닝 결과 값을 전송할 수 있다. 예를 들어, 트레이닝 결과 값 생성기(143)는 제어 레지스터(142)의 제어 필드(MRE(P))에 저장된 트레이닝 제어 값(TCV_A)에 따라 미리 정해진 트레이닝 결과 값을 생성할 수 있다. 여기서, 트레이닝 제어 값(TCV_A)은 클럭 신호(BCK)로부터 생성되는 수신 활성화 신호의 파셜 싸이클 딜레이 값에 대응하고, 미리 정해진 트레이닝 결과 값은 도 3의 메모리 장치(500)로부터 전송되는 데이터 스트로브 신호(MDQS)를 기반으로 클럭 신호(BCK)가 샘플링된 값에 대응할 수 있다. 생성된 트레이닝 결과 값은 버퍼 레지스터(141)를 통해 호스트 컨트롤러(3000)로 전송될 수 있다.
S113 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 새로운 트레이닝 제어 값(TCV_A)을 수신할 수 있다. 예를 들어, 제어 로직 회로(110)는 수신된 새로운 트레이닝 제어 값(TCV_A)을 제어 레지스터(142)의 제어 필드(MRE(P))에 기입할 수 있다. 이에 따라, 제어 필드(MRE(P))의 값이 달라질 수 있다.
S114 단계에서, 메모리 모듈(2000)은 새로운 트레이닝 제어 값(TCV_A)이 최종 트레이닝 제어 값(TCV_A)인지 여부를 판별할 수 있다. 새로운 트레이닝 제어 값(TCV_A)이 최종 트레이닝 제어 값(TCV_A)인 경우, MRE(P) 트레이닝 동작이 종료될 수 있다. 이 경우, 제어 레지스터(142)의 제어 필드(MRE(P))는 최종 트레이닝 제어 값(TCV_A)을 저장할 수 있다. 즉, 수신 활성화 신호의 최종 파셜 싸이클 딜레이 값이 설정될 수 있다.
새로운 트레이닝 제어 값(TCV_A)이 최종 트레이닝 제어 값(TCV_A)이 아닌 경우, 메모리 모듈(2000)은 S112 및 S113 단계의 동작들을 다시 수행할 수 있다. 예를 들어, 메모리 모듈(2000)은 새로운 트레이닝 제어 값(TCV_A)에 따라 호스트 컨트롤러(3000)로 미리 정해진 트레이닝 결과 값을 전송할 수 있다.
호스트 컨트롤러(3000)는 메모리 모듈(2000)로부터 전송된 적어도 하나의 트레이닝 결과 값을 기반으로 최종 트레이닝 제어 값(TCV_A)을 선택할 수 있다. 예를 들어, 적어도 하나의 트레이닝 결과 값을 기반으로 최종 트레이닝 제어 값(TCV_A)이 선택될 수 있는 경우, S113 단계에서, 호스트 컨트롤러(3000)는 선택된 최종 트레이닝 제어 값(TCV_A)을 메모리 모듈(2000)로 전송할 수 있다. 적어도 하나의 트레이닝 결과 값을 기반으로 최종 트레이닝 제어 값(TCV_A)이 선택될 수 없는 경우, S113 단계에서, 호스트 컨트롤러(3000)는 새로운 트레이닝 결과 값을 수신하기 위한 새로운 트레이닝 제어 값(TCV_A)을 메모리 모듈(2000)로 전송할 수 있다.
도 8은 MRE(P) 트레이닝 동작에서 도 2의 호스트 컨트롤러의 동작의 예시를 보여준다. 도 2 및 도 8을 참조하면, 메모리 모듈(2000)은 제1 내지 제64 트레이닝 제어 값들(TCV_A1~TCV_A64)에 기초하여 MRE(P) 트레이닝 동작을 수행할 수 있다. 예를 들어, 제1 내지 제64 트레이닝 제어 값들(TCV_A1~TCV_A64)은 클럭 신호(CK)의 한 주기를 64등분하였을 때, 64등분된 각각의 위상에 대응하는 딜레이 값을 나타낼 수 있다. 즉, 메모리 모듈(2000)은 64개의 서로 다른 트레이닝 제어 값들(TCV_A1~TCV_A64)에 기초하여 MRE(P) 트레이닝 동작을 수행할 수 있다.
메모리 모듈(2000)은 각 트레이닝 제어 값에 따라 미리 정해진 트레이닝 결과 값을 호스트 컨트롤러(3000)로 전송할 수 있다. 예를 들어, 제1 내지 제32 시간(t1~t32)에 메모리 모듈(2000)은 제1 내지 제32 트레이닝 제어 값들(TCV_A1~TCV_A32) 각각에 따라 트레이닝 결과 값으로서 '0'을 호스트 컨트롤러(3000)로 전송할 수 있다. 제33 내지 제64 시간(t33~t64)에 메모리 모듈(2000)은 제33 내지 제64 트레이닝 제어 값들(TCV_A33~TCV_A64) 각각에 따라 트레이닝 결과 값으로서 '1'을 호스트 컨트롤러(3000)로 전송할 수 있다.
호스트 컨트롤러(3000)는 메모리 모듈(2000)로부터 전송된 64개의 트레이닝 결과 값들을 기반으로 최종 트레이닝 제어 값(TCV_A)을 선택할 수 있다. 예를 들어, 호스트 컨트롤러(3000)는 트레이닝 결과 값이 '0'에서 '1'로 천이된 제33 시간(t33)에 대응하는 제33 트레이닝 제어 값(TCV_A33)을 최종 트레이닝 제어 값(TCV_A)으로 선택할 수 있다. 이후, 호스트 컨트롤러(3000)는 최종 트레이닝 제어 값(TCV_A)으로서 제33 트레이닝 제어 값(TCV_A33)을 메모리 모듈(2000)로 전송할 수 있다.
상술한 바와 같이, 호스트 컨트롤러(3000)는 메모리 모듈(2000)로부터 전송된 복수의 트레이닝 결과 값들을 기반으로 수신 활성화 신호의 최종 파셜 싸이클 딜레이 값을 선택할 수 있다. 도 8에서 설명된 최종 파셜 싸이클 딜레이 값 선택 방법은 하나의 예시일 뿐이며, 호스트 컨트롤러(3000)는 도 8에서 설명된 방법과 다른 방법으로 수신 활성화 신호의 최종 파셜 싸이클 딜레이 값을 선택할 수 있다.
도 9는 도 2의 메모리 모듈이 DWL 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다. 도 2, 도 5, 도 6, 및 도 9를 참조하면, S121 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 커맨드(CMDe) 및 어드레스(ADDRe)를 기반으로 DWL 트레이닝 모드 활성화 신호를 수신할 수 있다. 예를 들어, DWL 트레이닝 모드 활성화 신호에 응답하여 제어 로직 회로(110)는 제어 레지스터(142)의 모드 필드(MODE)에 DWL 트레이닝 모드에 대응하는 트레이닝 모드 값(TMV)을 기입할 수 있다.
S122 단계에서, 메모리 모듈(2000)은 트레이닝 제어 값(TCV_B)에 따라 호스트 컨트롤러(3000)로 미리 정해진 트레이닝 결과 값을 전송할 수 있다. 예를 들어, 트레이닝 결과 값 생성기(143)는 제어 레지스터(142)의 제어 필드(DWL)에 저장된 트레이닝 제어 값(TCV_B)에 따라 미리 정해진 트레이닝 결과 값을 생성할 수 있다. 여기서, 트레이닝 제어 값(TCV_B)은 도 3의 데이터 버퍼(400)로부터의 데이터 스트로브 신호(MDQS)의 파셜 싸이클 딜레이 값에 대응하고, 미리 정해진 트레이닝 결과 값은 데이터 스트로브 신호(MDQS)를 기반으로 클럭 신호(MCK)가 샘플링된 값에 대응할 수 있다. 생성된 트레이닝 결과 값은 버퍼 레지스터(141)를 통해 호스트 컨트롤러(3000)로 전송될 수 있다.
S123 단계에서, 메모리 모듈(2000)은 새로운 트레이닝 제어 값(TCV_B)을 수신할 수 있다. 예를 들어, 제어 로직 회로(110)는 수신된 새로운 트레이닝 제어 값(TCV_B)을 제어 레지스터(142)의 제어 필드(DWL)에 기입할 수 있다. 이에 따라, 제어 필드(DWL)의 값이 달라질 수 있다.
S124 단계에서, 메모리 모듈(2000)은 새로운 트레이닝 제어 값(TCV_B)이 최종 트레이닝 제어 값(TCV_B)인지 여부를 판별할 수 있다. 새로운 트레이닝 제어 값(TCV_B)이 최종 트레이닝 제어 값(TCV_B)인 경우, DWL 트레이닝 동작이 종료될 수 있다. 이 경우, 제어 레지스터(142)의 제어 필드(DWL)는 최종 트레이닝 제어 값(TCV_B)을 저장할 수 있다. 즉, 도 3의 데이터 버퍼(400)로부터 전송되는 데이터 스트로브 신호(MDQS)의 최종 파셜 싸이클 딜레이 값이 설정될 수 있다. 새로운 트레이닝 제어 값(TCV_B)이 최종 트레이닝 제어 값(TCV_B)이 아닌 경우, 메모리 모듈(2000)은 S122 및 S123 단계의 동작들을 다시 수행할 수 있다.
호스트 컨트롤러(3000)는 메모리 모듈(2000)로부터 전송된 적어도 하나의 트레이닝 결과 값을 기반으로 최종 트레이닝 제어 값(TCV_B)을 선택할 수 있다. 예를 들어, 호스트 컨트롤러(3000)는 도 8에서 설명한 최종 트레이닝 제어 값(TCV_A) 선택 방법과 유사한 방법으로 최종 트레이닝 제어 값(TCV_B)을 선택할 수 있다.
도 10은 도 2의 메모리 모듈이 MRD 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다. 도 2, 도 5, 도 6, 및 도 10을 참조하면, S131 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 커맨드(CMDe) 및 어드레스(ADDRe)를 기반으로 MRD 트레이닝 모드 활성화 신호를 수신할 수 있다. 예를 들어, MRD 트레이닝 모드 활성화 신호에 응답하여 제어 로직 회로(110)는 제어 레지스터(142)의 모드 필드(MODE)에 MRD 트레이닝 모드에 대응하는 트레이닝 모드 값(TMV)을 기입할 수 있다.
S132 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 제공된 예상 데이터(ED)를 저장할 수 있다. 예를 들어, 호스트 컨트롤러(3000)는 도 3의 데이터 버퍼(400)의 BCW(Buffer Control Words) 레지스터(미도시)에 예상 데이터(ED)를 저장할 것을 지시할 수 있다. 이에 따라, 제어 로직 회로(110)는 BCW 레지스터에 대응하는 제어 레지스터(142)의 데이터 필드(MPR)에 예상 데이터(ED)를 저장할 수 있다. 이 경우, 예상 데이터(ED)는 메모리 장치들(210~2n0) 각각에 미리 저장된 특정 데이터와 동일한 데이터일 수 있다.
S133 단계에서, 메모리 모듈(2000)은 트레이닝 제어 값들(TCV_C~TCV_E)에 따라 호스트 컨트롤러(3000)로 미리 정해진 트레이닝 결과 값을 전송할 수 있다. 예를 들어, 트레이닝 결과 값 생성기(143)는 제어 레지스터(142)의 제어 필드들(MRD1~MRD3)에 저장된 트레이닝 제어 값들(TCV_C~TCV_E)에 따라 미리 정해진 트레이닝 결과 값을 생성할 수 있다. 여기서, 트레이닝 제어 값들(TCV_C~TCV_E)은 메모리 장치(500)로부터 특정 데이터를 읽기 위한 수신 활성화 신호의 풀 싸이클 딜레이, 데이터 스트로브 신호(MDQS)의 파셜 싸이클 딜레이, 및 데이터 신호(MDQ)의 파셜 싸이클 딜레이에 각각 대응할 수 있다. 또한, 미리 정해진 트레이닝 결과 값은 도 3의 데이터 버퍼(400)의 BCW 레지스터에 미리 저장된 예상 데이터와 메모리 장치(500)로부터 읽은 특정 데이터의 비교 결과에 대응할 수 있다.
미리 정해진 트레이닝 결과 값은 두 데이터가 동일함을 나타내는 제1 값(예를 들어, '1')이거나, 또는 두 데이터가 다름을 나타내는 제2 값(예를 들어, '0')일 수 있다. 하나의 예로서, 트레이닝 결과 값 생성기(143)는 트레이닝 제어 값들(TCV_C~TCV_E)에 관계없이 제1 값으로 미리 정해진 트레이닝 결과 값을 생성할 수 있다. 다른 예로서, 특정 트레이닝 제어 값들(TCV_C~TCV_E)이 제어 필드들(MRD1~MRD3)에 저장된 경우, 트레이닝 결과 값 생성기(143)는 제1 값으로 미리 정해진 트레이닝 결과 값을 생성할 수 있다. 트레이닝 결과 값 생성기(143)는 생성된 트레이닝 결과 값을 비교 결과(CR)로서 제어 레지스터(142)의 데이터 필드(TSW)에 저장할 수 있다. 제어 레지스터(142)에 저장된 트레이닝 결과 값은 버퍼 레지스터(141)를 통해 호스트 컨트롤러(3000)로 전송될 수 있다.
S134 단계에서, 메모리 모듈(2000)은 새로운 트레이닝 제어 값들(TCV_C~TCV_E)을 수신할 수 있다. 예를 들어, 제어 로직 회로(110)는 수신된 새로운 트레이닝 제어 값들(TCV_C~TCV_E)을 제어 레지스터(142)의 제어 필드들(MRD1~MRD3)에 기입할 수 있다. 이에 따라, 제어 필드들(MRD1~MRD3)의 값이 달라질 수 있다.
S135 단계에서, 메모리 모듈(2000)은 새로운 트레이닝 제어 값들(TCV_C~TCV_E)이 최종 트레이닝 제어 값들(TCV_C~TCV_E)인지 여부를 판별할 수 있다. 새로운 트레이닝 제어 값들(TCV_C~TCV_E)이 최종 트레이닝 제어 값들(TCV_C~TCV_E)인 경우, MRD 트레이닝 동작이 종료될 수 있다. 이 경우, 제어 레지스터(142)의 제어 필드들(MRD1~MRD3)은 최종 트레이닝 제어 값들(TCV_C~TCV_E)을 저장할 수 있다. 즉, 수신 활성화 신호의 최종 풀 싸이클 딜레이 값과 도 3의 데이터 버퍼(400)로 수신되는 데이터 스트로브 신호(MDQS) 및 데이터 신호(MDQ)의 최종 파셜 싸이클 딜레이 값이 설정될 수 있다. 새로운 트레이닝 제어 값들(TCV_C~TCV_E)이 최종 트레이닝 제어 값들(TCV_C~TCV_E)이 아닌 경우, 메모리 모듈(2000)은 S133 및 S134 단계의 동작들을 다시 수행할 수 있다.
호스트 컨트롤러(3000)는 메모리 모듈(2000)로부터 전송된 적어도 하나의 트레이닝 결과 값을 기반으로 최종 트레이닝 제어 값들(TCV_C~TCV_E)을 선택할 수 있다. 하나의 예로서, 트레이닝 결과 값이 제1 값인 경우, 호스트 컨트롤러(3000)는 대응하는 트레이닝 제어 값들(TCV_C~TCV_E)을 최종 트레이닝 제어 값들(TCV_C~TCV_E)로서 선택할 수 있다. 다른 예로서, 다양한 조합의 트레이닝 제어 값들(TCV_C~TCV_E)에 대응하는 복수의 트레이닝 결과 값들 각각이 제1 값인 경우, 호스트 컨트롤러(3000)는 다양한 조합의 트레이닝 제어 값들(TCV_C~TCV_E) 중 하나의 조합을 최종 트레이닝 제어 값들(TCV_C~TCV_E)로서 선택할 수 있다.
도 11은 도 2의 메모리 모듈이 MWD 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다. 도 2, 도 5, 도 6, 및 도 11을 참조하면, S141 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 커맨드(CMDe) 및 어드레스(ADDRe)를 기반으로 MWD 트레이닝 모드 활성화 신호를 수신할 수 있다. 예를 들어, MWD 트레이닝 모드 활성화 신호에 응답하여 제어 로직 회로(110)는 제어 레지스터(142)의 모드 필드(MODE)에 MWD 트레이닝 모드에 대응하는 트레이닝 모드 값(TMV)을 기입할 수 있다.
S142 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 제공된 예상 데이터(ED)를 저장할 수 있다. 예를 들어, 호스트 컨트롤러(3000)는 도 3의 데이터 버퍼(400)의 BCW 레지스터에 예상 데이터(ED)를 저장할 것을 지시할 수 있다. 이에 따라, 제어 로직 회로(110)는 BCW 레지스터에 대응하는 제어 레지스터(142)의 데이터 필드(MPR)에 예상 데이터(ED)를 저장할 수 있다.
S143 단계에서, 메모리 모듈(2000)은 트레이닝 제어 값들(TCV_F, TCV_G)에 따라 호스트 컨트롤러(3000)로 미리 정해진 트레이닝 결과 값을 전송할 수 있다. 예를 들어, 트레이닝 결과 값 생성기(143)는 제어 레지스터(142)의 제어 필드들(MWD1, MWD2)에 저장된 트레이닝 제어 값들(TCV_F, TCV_G)에 따라 미리 정해진 트레이닝 결과 값을 생성할 수 있다. 여기서, 트레이닝 제어 값들(TCV_F, TCV_G)은 특정 데이터를 메모리 장치(500)에 기입하기 위한 데이터 스트로브 신호(MDQS)의 풀 싸이클 딜레이 및 데이터 신호(MDQ)의 파셜 싸이클 딜레이에 각각 대응할 수 있다. 미리 정해진 트레이닝 결과 값은 도 3의 데이터 버퍼(400)의 BCW 레지스터에 미리 저장된 예상 데이터와 메모리 장치(500)로부터 읽은 특정 데이터의 비교 결과에 대응할 수 있다. 메모리 장치(500)로부터 읽은 특정 데이터는 예상 데이터가 메모리 장치(500)에 기입된 후, 메모리 장치(500)로부터 출력된 데이터일 수 있다.
미리 정해진 트레이닝 결과 값은 두 데이터가 동일함을 나타내는 제1 값(예를 들어, '1')이거나, 또는 두 데이터가 다름을 나타내는 제2 값(예를 들어, '0')일 수 있다. 하나의 예로서, 트레이닝 결과 값 생성기(143)는 트레이닝 제어 값들(TCV_F, TCV_G)에 관계없이 제1 값으로 미리 정해진 트레이닝 결과 값을 생성할 수 있다. 다른 예로서, 특정 트레이닝 제어 값들(TCV_F, TCV_G)이 제어 필드들(MWD1, MWD2)에 저장된 경우, 트레이닝 결과 값 생성기(143)는 제1 값으로 미리 정해진 트레이닝 결과 값을 생성할 수 있다. 트레이닝 결과 값 생성기(143)는 생성된 트레이닝 결과 값을 비교 결과(CR)로서 제어 레지스터(142)의 데이터 필드(TSW)에 저장할 수 있다. 제어 레지스터(142)에 저장된 트레이닝 결과 값은 버퍼 레지스터(141)를 통해 호스트 컨트롤러(3000)로 전송될 수 있다.
S144 단계에서, 메모리 모듈(2000)은 새로운 트레이닝 제어 값들(TCV_F, TCV_G)을 수신할 수 있다. 예를 들어, 제어 로직 회로(110)는 수신된 새로운 트레이닝 제어 값들(TCV_F, TCV_G)을 제어 레지스터(142)의 제어 필드들(MWD1, MWD2)에 기입할 수 있다. 이에 따라, 제어 필드들(MWD1, MWD2)의 값이 달라질 수 있다.
S145 단계에서, 메모리 모듈(2000)은 새로운 트레이닝 제어 값들(TCV_F, TCV_G)이 최종 트레이닝 제어 값들(TCV_F, TCV_G)인지 여부를 판별할 수 있다. 새로운 트레이닝 제어 값들(TCV_F, TCV_G)이 최종 트레이닝 제어 값들(TCV_F, TCV_G)인 경우, MWD 트레이닝 동작이 종료될 수 있다. 이 경우, 제어 레지스터(142)의 제어 필드들(MWD1, MWD2)는 최종 트레이닝 제어 값들(TCV_F, TCV_G)을 저장할 수 있다. 즉, 도 3의 데이터 버퍼(400)로부터 전송되는 데이터 스트로브 신호(MDQS)의 최종 풀 싸이클 딜레이 값과 데이터 신호(MDQ)의 최종 파셜 싸이클 딜레이 값이 설정될 수 있다. 새로운 트레이닝 제어 값들(TCV_F, TCV_G)이 최종 트레이닝 제어 값들(TCV_F, TCV_G)이 아닌 경우, 메모리 모듈(2000)은 S143 및 S144 단계의 동작들을 다시 수행할 수 있다.
호스트 컨트롤러(3000)는 메모리 모듈(2000)로부터 전송된 적어도 하나의 트레이닝 결과 값을 기반으로 최종 트레이닝 제어 값들(TCV_F, TCV_G)을 선택할 수 있다. 호스트 컨트롤러(3000)는 도 10의 MRD 트레이닝 동작에서 설명한 바와 같이, 최종 트레이닝 제어 값들(TCV_F, TCV_G)을 선택할 수 있다.
상술한 바와 같이, 메모리 인터페이스 트레이닝 동작 시, 메모리 모듈(2000)은 다양한 트레이닝 모드들에서 트레이닝 제어 값에 따라 미리 정해진 트레이닝 결과 값을 생성함으로써 트레이닝 동작을 모사할 수 있다.
이하에서는, 도 12 내지 도 15를 참조하여 메모리 모듈(2000)의 호스트 인터페이스 트레이닝 동작을 상세하게 설명할 것이다.
도 12는 호스트 인터페이스 트레이닝 동작을 수행하기 위한 도 2의 장치 컨트롤러의 예시를 보여주는 블록도이다. 도 12의 장치 컨트롤러(100)를 기반으로 호스트 인터페이스 트레이닝 동작의 다양한 트레이닝 모드들 중 쓰기 레벨링을 트레이닝하는 모드(이하, HWL 트레이닝 모드랑 칭함)가 수행될 수 있다. HWL 트레이닝 모드에서 호스트 컨트롤러(3000)로부터의 데이터 스트로브 신호(DQS)의 딜레이 값이 조절될 수 있다.
도 12의 장치 컨트롤러(100)는 도 5의 장치 컨트롤러(100)와 비교하여 샘플링 회로(160)를 더 포함하고, 도 5의 장치 컨트롤러(100)와 유사하게 동작하므로, 중복되는 설명은 생략된다.
도 12를 참조하면, HWL 트레이닝 모드에서, 제어 로직 회로(110)는 버퍼 트레이닝 지원 로직 회로(140), 선택 회로(150), 및 샘플링 회로(160)를 제어할 수 있다. 예를 들어, 제어 로직 회로(110)는 제어 신호(BTC)를 통해 제어 레지스터(142)의 모드 필드(MODE)에 HWL 트레이닝 모드에 대응하는 트레이닝 모드 값(TMV)을 기입할 수 있다.
선택 회로(150)는 호스트 컨트롤러(3000)로부터 특정 딜레이 값을 가지는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 선택 회로(150)는 제어 로직 회로(110)로부터의 제어 신호(SCC)에 기초하여 데이터 스트로브 신호(DQS)를 제3 데이터 경로(P3)로 전달할 수 있다. 제3 데이터 경로(P3)를 통해 전달된 데이터 스트로브 신호(DQS)는 샘플링 회로(160)로 제공될 수 있다. 샘플링 회로(160)는 데이터 스트로브 신호(DQS)를 기반으로 클럭 신호(CK)를 샘플링할 수 있다. 샘플링 회로(160)는 제어 로직 회로(110)로부터의 제어 신호(SAC)에 기초하여 동작할 수 있다. 샘플링 회로(160)는 샘플링된 클럭 신호(S_CK)를 제1 데이터 경로(P1)를 통해 선택 회로(150)로 제공할 수 있다. 선택 회로(150)는 데이터 신호(DQ)를 통해 샘플링된 클럭 신호(S_CK)를 호스트 컨트롤러(3000)로 전송할 수 있다.
호스트 컨트롤러(3000)는 샘플링된 클럭 신호(S_CK)를 기반으로 데이터 스트로브 신호(DQS)의 최종 딜레이 값을 선택할 수 있다. 예를 들어, 호스트 컨트롤러(3000)는 도 8에서 설명한 바와 같이, 데이터 스트로브 신호(DQS)의 최종 딜레이 값을 선택할 수 있다. 즉, HWL 트레이닝 모드에 따라, 호스트 컨트롤러(3000)로부터 전송되는 데이터 스트로브 신호(DQS)의 최종 딜레이 값이 설정될 수 있다.
최종 딜레이 값을 선택할 수 없는 경우, 호스트 컨트롤러(3000)는 딜레이 값을 변경하고, 다른 딜레이 값을 가지는 데이터 스트로브 신호(DQS)를 장치 컨트롤러(100)로 전송할 수 있다. 이에 따라, 장치 컨트롤러(100)는 다른 딜레이 값을 가지는 데이터 스트로브 신호(DQS)를 기반으로 클럭 신호(CK)를 샘플링하고, 샘플링된 클럭 신호(S_CK)를 호스트 컨트롤러(3000)로 전송할 수 있다.
도 12에서는 샘플링 회로(160)가 버퍼 트레이닝 지원 로직 회로(140) 외부에 위치하는 것으로 도시되었으나, 본 발명이 이에 한정되는 것은 아니다. 다른 실시 예에 있어서, 샘플링 회로(160)는 버퍼 트레이닝 지원 로직 회로(140) 내부에 위치할 수 있다. 이 경우, 제어 로직 회로(110)는 데이터 스트로브 신호(DQS)가 버퍼 트레이닝 지원 로직 회로(140)로 전달되도록 선택 회로(150)를 제어할 수 있다.
도 13은 도 2의 메모리 모듈이 HWL 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다. 도 2, 도 12, 및 도 13을 참조하면, S151 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 HWL 트레이닝 모드 활성화 신호를 수신할 수 있다. S152 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 전송되는 데이터 스트로브 신호(DQS)를 기반으로 클럭 신호(CK)에 대한 샘플링 동작을 수행할 수 있다. S153 단계에서, 메모리 모듈(2000)은 샘플링된 클럭 신호(S_CK)를 호스트 컨트롤러(3000)로 전송할 수 있다.
호스트 컨트롤러(3000)에 의해 데이터 스트로브 신호(DQS)의 최종 딜레이 값이 선택된 후 노멀 동작 또는 다른 트레이닝 동작이 수행되는 경우, HWL 트레이닝 동작이 종료될 수 있다. 호스트 컨트롤러(3000)에 의해 데이터 스트로브 신호(DQS)의 최종 딜레이 값이 선택되지 않은 경우, 최종 딜레이 값이 선택될 때까지 S152 단계 및 S153 단계의 동작들이 반복될 수 있다.
도 14는 호스트 인터페이스 트레이닝 동작을 수행하기 위한 도 2의 장치 컨트롤러의 예시를 보여주는 블록도이다. 도 14의 장치 컨트롤러(100)를 기반으로 호스트 인터페이스 트레이닝 동작의 다양한 트레이닝 모드들 중 쓰기 딜레이를 트레이닝하는 모드(이하, HIW 트레이닝 모드랑 칭함)가 수행될 수 있다. HIW 트레이닝 모드에서 호스트 컨트롤러(3000)로부터의 데이터 신호(DQ)의 딜레이 값이 조절될 수 있다. 도 14의 장치 컨트롤러(100)는 도 5의 장치 컨트롤러(100)와 비교하여 버퍼 트레이닝 지원 로직 회로(140) 내부에 비교기(144)를 더 포함할 수 있고, 도 5의 장치 컨트롤러(100)와 유사하게 동작하므로, 중복되는 설명은 생략된다.
도 14를 참조하면, HIW 트레이닝 모드에서, 제어 로직 회로(110)는 버퍼 트레이닝 지원 로직 회로(140) 및 선택 회로(150)를 제어할 수 있다. 예를 들어, 제어 로직 회로(110)는 제어 신호(BTC)를 통해 제어 레지스터(142)의 모드 필드(MODE)에 HIW 트레이닝 모드에 대응하는 트레이닝 모드 값(TMV)을 기입할 수 있다.
제어 로직 회로(110)는 제어 레지스터(142)의 데이터 필드(MPR)에 예상 데이터(ED)를 기입할 수 있다. 예상 데이터(ED)는 커맨드(CMDe) 및 어드레스(ADDRe)를 통해 호스트 컨트롤러(3000)로부터 제공될 수 있다. 제어 로직 회로(110)는 예상 데이터(ED)와 동일한 특정 데이터(PD)가 버퍼 레지스터(141)에 기입되도록 선택 회로(150)를 제어할 수 있다. 특정 데이터(PD)는 데이터 신호(DQ)를 통해 호스트 컨트롤러(3000)로부터 제공될 수 있다. 이 경우, 데이터 신호(DQ)는 호스트 컨트롤러(3000)에 의해 설정된 딜레이 값에 따른 위상을 가질 수 있다.
선택 회로(150)는 호스트 컨트롤러(3000)로부터 데이터 신호(DQ)를 수신할 수 있다. 선택 회로(150)는 제어 로직 회로(110)로부터의 제어 신호(SCC)에 기초하여 데이터 신호(DQ)를 제2 데이터 경로(P2)로 전달할 수 있다. 제2 데이터 경로(P2)를 통해 전달된 데이터 신호(DQ)는 버퍼 레지스터(141)로 제공될 수 있다. 이에 따라, 버퍼 레지스터(141)는 특정 데이터(PD)를 저장할 수 있다.
비교기(144)는 버퍼 레지스터(141)에 저장된 특정 데이터(PD)와 제어 레지스터(142)에 저장된 예상 데이터(ED)를 비교할 수 있다. 비교기(144)는 비교 결과(CR)를 생성하고, 생성된 비교 결과(CR)를 제어 레지스터(142)의 데이터 필드(TSW)에 저장할 수 있다. 예를 들어, 특정 데이터(PD)와 예상 데이터(ED)가 동일한 경우, 비교기(144)는 제1 값(예를 들어, '1')을 비교 결과(CR)로서 생성할 수 있다. 특정 데이터(PD)와 예상 데이터(ED)가 동일하지 않은 경우, 비교기(144)는 제2 값(예를 들어, '0')을 비교 결과(CR)로서 생성할 수 있다.
호스트 컨트롤러(3000)로부터 동일한 값을 가지는 특정 데이터(PD) 및 예상 데이터(ED)가 제공되더라도, 데이터 신호(DQ)와 데이터 스트로브 신호(DQS) 사이의 위상 차이에 따라 버퍼 레지스터(141)에 저장되는 특정 데이터(PD) 값이 달라질 수 있다. HWL 트레이닝 동작을 통해 데이터 스트로브 신호(DQS)의 최종 딜레이 값이 설정된 경우, 데이터 신호(DQ)의 딜레이 값에 따라 버퍼 레지스터(141)에 저장되는 특정 데이터(PD) 값이 달라질 수 있다. 이에 따라, 비교기(144)는 데이터 신호(DQ)의 딜레이 값에 따라 비교 결과(CR)로서 제1 값 또는 제2 값을 생성할 수 있다.
제어 레지스터(142)에 저장된 비교 결과(CR)는 버퍼 레지스터(141)를 통해 호스트 컨트롤러(3000)로 전송될 수 있다. 이 경우, 선택 회로(150)는 제어 신호(SCC)에 기초하여 제2 데이터 경로(P2)를 통해 제공되는 데이터 신호(DQ)를 호스트 컨트롤러(3000)로 전달할 수 있다.
호스트 컨트롤러(3000)는 비교 결과(CR)를 기반으로 데이터 신호(DQ)의 최종 딜레이 값을 선택할 수 있다. 호스트 컨트롤러(3000)는 도 10의 MRD 트레이닝 동작에서 설명한 바와 같이, 최종 딜레이 값을 선택할 수 있다.
최종 딜레이 값을 선택할 수 없는 경우, 호스트 컨트롤러(3000)는 딜레이 값을 변경하고, 다른 딜레이 값(즉, 다른 위상)을 가지는 데이터 신호(DQ)(즉, 특정 데이터(PD))를 장치 컨트롤러(100)로 전송할 수 있다. 이에 따라, 장치 컨트롤러(100)는 다른 딜레이 값을 가지는 데이터 신호(DQ)를 기반으로 비교 결과(CR)를 생성하고, 생성된 비교 결과(CR)를 호스트 컨트롤러(3000)로 전송할 수 있다.
도 15는 도 2의 메모리 모듈이 HIW 트레이닝 동작을 수행하는 예시를 보여주는 순서도이다. 도 2, 도 14, 및 도 15를 참조하면, S161 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 HIW 트레이닝 모드 활성화 신호를 수신할 수 있다. S162 단계에서, 메모리 모듈(2000)은 호스트 컨트롤러(3000)로부터 전송되는 특정 데이터(PD)를 예상 데이터(ED)와 비교할 수 있다. 여기서, 특정 데이터(PD)는 데이터 신호(DQ)를 통해 호스트 컨트롤러(3000)로부터 전송되고, 예상 데이터(ED)는 커맨드(CMDe) 및 어드레스(ADDRe)를 통해 호스트 컨트롤러(3000)로부터 전송될 수 있다. S163 단계에서, 메모리 모듈(2000)은 비교 결과(CR)를 호스트 컨트롤러(3000)로 전송할 수 있다.
호스트 컨트롤러(3000)에 의해 데이터 신호(DQ)의 최종 딜레이 값이 선택된 후 노멀 동작 또는 다른 트레이닝 동작이 수행되는 경우, HIW 트레이닝 동작이 종료될 수 있다. 호스트 컨트롤러(3000)에 의해 데이터 신호(DQ)의 최종 딜레이 값이 선택되지 않은 경우, 최종 딜레이 값이 선택될 때까지 S162 단계 및 S163 단계의 동작들이 반복될 수 있다.
상술한 바와 같이, 호스트 인터페이스 트레이닝 동작을 위해 메모리 모듈(2000)은 실제 트레이닝 동작을 수행할 수 있다. 실제 트레이닝 동작을 통해 생성된 값을 기반으로 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)의 최종 딜레이 값이 설정될 수 있다. 이에 따라, 제1 동작 모드의 노멀 동작에서, 호스트 컨트롤러(3000)는 설정된 최종 딜레이 값을 가지는 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 메모리 모듈(2000)로 전송할 수 있다.
상술한 바와 같이, 데이터 필드(MPR)에 예상 데이터(ED)를 저장하여 트레이닝 동작들이 수행되는 것으로 설명되었으나, 본 발명이 이에 한정되는 것은 아니다. 다른 실시 예에 있어서, 예상 데이터(ED)는 장치 컨트롤러(100) 내부의 특정 레지스터(예를 들어, LFSR(Linear Feedback Shift Register))로부터 생성될 수 있다. 특정 레지스터로부터 생성된 예상 데이터(ED)에 기초하여 데이터 비교 동작을 포함한 트레이닝 동작들이 수행될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.
100: 장치 컨트롤러
110: 제어 로직 회로
120: 제1 레지스터
130: 제2 레지스터
140: 버퍼 트레이닝 지원 로직 회로
150: 샘플링 회로
210-2n0: 메모리 장치
2000: 메모리 모듈
3000: 호스트 컨트롤러

Claims (10)

  1. 제1 클럭 신호, 제1 데이터 신호, 및 제1 데이터 스트로브 신호를 포함하는 제1 인터페이스를 기반으로 호스트 장치와 통신하고, 상기 호스트 장치로부터의 동작 모드 제어 값에 따라 제1 동작 모드 또는 제2 동작 모드로 동작하도록 구성되는 장치 컨트롤러; 및
    제2 데이터 신호 및 제2 데이터 스트로브 신호를 포함하는 제2 인터페이스를 기반으로 상기 장치 컨트롤러와 통신하는 메모리 장치를 포함하고,
    상기 장치 컨트롤러는,
    상기 제1 동작 모드에서 상기 호스트 장치에 의해 인식되는 가상의 제3 인터페이스에 대한 트레이닝이 수행되는 경우, 상기 호스트 장치로부터의 트레이닝 제어 값에 따라 미리 정해진 트레이닝 결과 값을 상기 호스트 장치로 전송하도록 구성된 버퍼 트레이닝 지원 로직 회로를 포함하는 메모리 모듈.
  2. 제 1 항에 있어서,
    상기 가상의 제3 인터페이스는 상기 호스트 장치에 의해 상기 메모리 모듈에 포함되는 것으로 인식되는 가상의 데이터 버퍼와 상기 메모리 장치 사이의 가상의 인터페이스인 메모리 모듈.
  3. 제 2 항에 있어서,
    상기 버퍼 트레이닝 지원 로직 회로는,
    상기 호스트 장치로부터의 상기 트레이닝 제어 값을 저장하는 제어 레지스터; 및
    상기 저장된 트레이닝 제어 값에 따라 상기 미리 정해진 트레이닝 결과 값을 생성하도록 구성된 트레이닝 결과 값 생성기를 포함하는 메모리 모듈.
  4. 제 3 항에 있어서,
    상기 호스트 장치에 의해 상기 가상의 제3 인터페이스의 수신 활성화 신호의 위상이 트레이닝되는 경우,
    상기 트레이닝 결과 값 생성기는 상기 가상의 데이터 버퍼의 동작 클럭 신호로부터 생성되는 상기 수신 활성화 신호의 딜레이 값에 대응하는 제1 트레이닝 제어 값에 따라 제1 트레이닝 결과 값을 생성하고,
    상기 제어 레지스터는 상기 제1 트레이닝 결과 값에 기초하여 상기 호스트 장치에 의해 선택된 상기 수신 활성화 신호의 최종 딜레이 값을 저장하는 메모리 모듈.
  5. 제 3 항에 있어서,
    상기 호스트 장치에 의해 상기 제3 인터페이스의 쓰기 레벨링(Write Leveling)이 트레이닝되는 경우,
    상기 트레이닝 결과 값 생성기는 상기 가상의 데이터 버퍼로부터 전송되는 제3 데이터 스트로브 신호의 딜레이 값에 대응하는 제2 트레이닝 제어 값에 따라 제2 트레이닝 결과 값을 생성하고,
    상기 제어 레지스터는 상기 제2 트레이닝 결과 값에 기초하여 상기 호스트 장치에 의해 선택된 상기 제3 데이터 스트로브 신호의 최종 딜레이 값을 저장하는 메모리 모듈.
  6. 제 3 항에 있어서,
    상기 호스트 장치에 의해 상기 제3 인터페이스의 읽기 딜레이가 트레이닝되는 경우,
    상기 트레이닝 결과 값 생성기는 상기 가상의 데이터 버퍼로 수신되는 제3 데이터 신호의 딜레이 값에 대응하는 제3 트레이닝 제어 값 및 상기 가상의 데이터 버퍼로 수신되는 제4 데이터 스트로브 신호의 딜레이 값에 대응하는 제4 트레이닝 제어 값에 따라 제3 트레이닝 결과 값을 생성하고,
    상기 제어 레지스터는 상기 제3 트레이닝 결과 값에 기초하여 상기 호스트 장치에 의해 선택된 상기 제3 데이터 신호의 최종 딜레이 값 및 상기 제4 데이터 스트로브 신호의 최종 딜레이 값을 저장하는 메모리 모듈.
  7. 제 3 항에 있어서,
    상기 호스트 장치에 의해 상기 제3 인터페이스의 쓰기 딜레이가 트레이닝되는 경우,
    상기 트레이닝 결과 값 생성기는 상기 가상의 데이터 버퍼로부터 전송되는 제4 데이터 신호의 딜레이 값에 대응하는 제5 트레이닝 제어 값에 따라 제4 트레이닝 결과 값을 생성하고,
    상기 제어 레지스터는 상기 제4 트레이닝 결과 값에 기초하여 상기 호스트 장치에 의해 선택된 상기 제4 데이터 신호의 최종 딜레이 값을 저장하는 메모리 모듈.
  8. 제 3 항에 있어서,
    상기 제1 동작 모드에서 상기 호스트 장치에 의해 상기 제1 인터페이스의 쓰기 딜레이(delay)가 트레이닝되는 경우,
    상기 버퍼 트레이닝 지원 로직 회로는,
    제2 쓰기 동작에 따라 특정 데이터를 저장하는 버퍼 레지스터; 및
    상기 버퍼 레지스터에 저장된 상기 특정 데이터 및 예상 데이터를 비교하여 비교 결과를 생성하도록 구성된 비교기를 더 포함하고,
    상기 비교 결과에 기초하여 상기 호스트 장치에 의해 상기 제1 데이터 신호의 최종 딜레이 값이 선택되는 메모리 모듈.
  9. 제 1 항에 있어서,
    상기 장치 컨트롤러는,
    상기 제1 동작 모드에서 상기 호스트 장치에 의해 상기 제1 인터페이스의 쓰기 레벨링 위상이 트레이닝되는 경우, 상기 제1 데이터 스트로브 신호를 기반으로 상기 제1 클럭 신호를 샘플링하도록 구성된 샘플링 회로를 더 포함하고,
    상기 샘플링된 제1 클럭 신호에 기초하여 상기 호스트 장치에 의해 상기 제1 데이터 스트로브 신호의 최종 딜레이 값이 선택되는 메모리 모듈.
  10. 제 1 항에 있어서,
    상기 제1 동작 모드에서 상기 메모리 모듈은 상기 호스트 장치에 의해 LRDIMM(Load Reduced Dual In-line Memory Module)으로 인식되고,
    상기 제2 동작 모드에서 상기 메모리 모듈은 상기 호스트 장치에 의해 RDIMM(Registered Dual In-line Memory Module)으로 인식되는 메모리 모듈.
KR1020190114889A 2019-09-18 2019-09-18 메모리 모듈 및 그것의 동작 방법 KR20210033593A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190114889A KR20210033593A (ko) 2019-09-18 2019-09-18 메모리 모듈 및 그것의 동작 방법
US16/879,120 US11226823B2 (en) 2019-09-18 2020-05-20 Memory module and operating method thereof
CN202010535290.5A CN112530484A (zh) 2019-09-18 2020-06-12 存储器模块及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190114889A KR20210033593A (ko) 2019-09-18 2019-09-18 메모리 모듈 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210033593A true KR20210033593A (ko) 2021-03-29

Family

ID=74868613

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190114889A KR20210033593A (ko) 2019-09-18 2019-09-18 메모리 모듈 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US11226823B2 (ko)
KR (1) KR20210033593A (ko)
CN (1) CN112530484A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230025601A1 (en) * 2021-07-23 2023-01-26 Micron Technology, Inc. Initializing memory systems

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11449250B2 (en) 2019-10-14 2022-09-20 Micron Technology, Inc. Managing a mode to access a memory component or a logic component for machine learning computation in a memory sub-system
KR20220003841A (ko) * 2020-07-02 2022-01-11 에스케이하이닉스 주식회사 데이터 스트로브 클럭 출력 회로

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647467B1 (en) * 2006-05-25 2010-01-12 Nvidia Corporation Tuning DRAM I/O parameters on the fly
US8452917B2 (en) 2008-09-15 2013-05-28 Diablo Technologies Inc. Load reduction dual in-line memory module (LRDIMM) and method for programming the same
US8688901B2 (en) 2009-12-08 2014-04-01 Intel Corporation Reconfigurable load-reduced memory buffer
US9619409B2 (en) * 2013-01-08 2017-04-11 Taiwan Semiconductor Manufacturing Co., Ltd. Data sampling alignment method for memory inferface
US10185499B1 (en) 2014-01-07 2019-01-22 Rambus Inc. Near-memory compute module
US9449651B2 (en) 2014-03-21 2016-09-20 Diablo Technologies Inc. System and method for offsetting the data buffer latency of a device implementing a JEDEC standard DDR-4 LRDIMM chipset
KR102238717B1 (ko) 2014-10-27 2021-04-09 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
US9640236B2 (en) 2015-03-12 2017-05-02 Invensas Corporation Reduced load memory module using wire bonds and a plurality of rank signals
US10613995B2 (en) * 2015-03-16 2020-04-07 Rambus Inc. Training and operations with a double buffered memory topology
US10261697B2 (en) 2015-06-08 2019-04-16 Samsung Electronics Co., Ltd. Storage device and operating method of storage device
US20180059933A1 (en) * 2016-08-26 2018-03-01 Sandisk Technologies Llc Electrically-Buffered NV-DIMM and Method for Use Therewith
KR20180034738A (ko) * 2016-09-26 2018-04-05 삼성전자주식회사 메모리 장치 및 그것의 분주 클록 보정 방법
KR102340446B1 (ko) * 2017-09-08 2021-12-21 삼성전자주식회사 스토리지 장치 및 그것의 데이터 트레이닝 방법
KR102365110B1 (ko) * 2017-09-13 2022-02-18 삼성전자주식회사 복수의 메모리 장치들에 대한 트레이닝 동작을 지원하는 버퍼 장치를 포함하는 메모리 모듈 및 이를 포함하는 메모리 시스템
KR102433040B1 (ko) * 2017-12-12 2022-08-18 삼성전자주식회사 메모리 모듈, 메모리 시스템 및 메모리 모듈의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230025601A1 (en) * 2021-07-23 2023-01-26 Micron Technology, Inc. Initializing memory systems

Also Published As

Publication number Publication date
US11226823B2 (en) 2022-01-18
US20210081204A1 (en) 2021-03-18
CN112530484A (zh) 2021-03-19

Similar Documents

Publication Publication Date Title
CN110097906B (zh) 调节占空比的存储器装置和具有存储器装置的存储器系统
US11074961B2 (en) Method of performing internal processing operation of memory device
US8159889B2 (en) Solid state disk controller apparatus
US11226823B2 (en) Memory module and operating method thereof
US8892794B2 (en) Using central direct memory access (CDMA) controller to test integrated circuit
US20190034365A1 (en) Measurement and optimization of command signal timing margins
CN111679785A (zh) 用于处理操作的存储器装置及其操作方法、数据处理系统
JP2021093129A (ja) メモリデバイスへのコマンドバストレーニングの技術
US9727269B2 (en) System and method for retaining DRAM data when reprogramming reconfigurable devices with DRAM memory controllers incorporating a data maintenance block colocated with a memory module or subsystem
KR102473661B1 (ko) 듀티 사이클을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템
KR20200108773A (ko) 연산 처리를 수행하는 메모리 장치, 이를 포함하는 데이터 처리 시스템 및 메모리 장치의 동작방법
US7796465B2 (en) Write leveling of memory units designed to receive access requests in a sequential chained topology
CN111831593A (zh) 用于生成链路训练信号的设备、系统和方法
US20160103620A1 (en) Symbol lock method and a memory system using the same
US10496422B2 (en) Serial device emulator using two memory levels with dynamic and configurable response
CN108376555B (zh) 存储器设备及其测试方法以及存储器模块及使用其的系统
CN111354411B (zh) 具有训练操作的半导体系统
CN114625678A (zh) 存储器系统
US20230162770A1 (en) Memory device deserializer circuit with a reduced form factor
KR20170057628A (ko) 신호 처리 회로
US11947382B2 (en) Measuring a timing margin of a memory device using an internal oscilloscope
KR102665410B1 (ko) 메모리 장치의 내부 프로세싱 동작 방법
US20230342274A1 (en) Modular test system
CN112309444A (zh) 存储器接口电路、存储器存储装置及设定状态检测方法
CN117170576A (zh) 使用内部振荡器跟踪电压和温度对存储器装置的影响

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal