KR102353027B1 - 스토리지 장치의 데이터 트레이닝 방법 - Google Patents

스토리지 장치의 데이터 트레이닝 방법 Download PDF

Info

Publication number
KR102353027B1
KR102353027B1 KR1020170084195A KR20170084195A KR102353027B1 KR 102353027 B1 KR102353027 B1 KR 102353027B1 KR 1020170084195 A KR1020170084195 A KR 1020170084195A KR 20170084195 A KR20170084195 A KR 20170084195A KR 102353027 B1 KR102353027 B1 KR 102353027B1
Authority
KR
South Korea
Prior art keywords
training
nonvolatile memory
memory device
read
storage controller
Prior art date
Application number
KR1020170084195A
Other languages
English (en)
Other versions
KR20190004398A (ko
Inventor
이철승
이태성
이충의
황순석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020170084195A priority Critical patent/KR102353027B1/ko
Priority to US15/871,637 priority patent/US10366022B2/en
Priority to CN201810618463.2A priority patent/CN109215701B/zh
Publication of KR20190004398A publication Critical patent/KR20190004398A/ko
Application granted granted Critical
Publication of KR102353027B1 publication Critical patent/KR102353027B1/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/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
    • 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
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/28Determining representative reference patterns, e.g. by averaging or distorting; Generating dictionaries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/50Marginal testing, e.g. race, voltage or current testing
    • 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/1063Control signal output circuits, e.g. status or busy flags, feedback command signals
    • 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 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시 예에 따른 스토리지 컨트롤러 및 불휘발성 메모리 장치를 포함하는 스토리지 장치의 데이터 트레이닝 방법은, 상기 불휘발성 메모리 장치에 읽기 트레이닝 명령어를 전달하는 단계, 상기 읽기 트레이닝 명령어에 응답하여 상기 불휘발성 메모리 장치로부터 출력되는 제 1 트레이닝 패턴을 제 1 읽기 타이밍 오프셋 조건에서 수신하는 단계, 상기 읽기 트레이닝 명령어에 응답하여 상기 불휘발성 메모리 장치로부터 출력되는 제 2 트레이닝 패턴을 제 2 읽기 타이밍 오프셋 조건에서 수신하는 단계, 그리고 수신된 상기 제 1 트레이닝 패턴 및 상기 제 2 트레이닝 패턴을 레퍼런스 패턴을 비교하고, 상기 비교 결과에 따라 상기 스토리지 컨트롤러의 읽기 타이밍 오프셋을 결정하는 단계를 포함한다.

Description

스토리지 장치의 데이터 트레이닝 방법{DATA TRAINING METHOD OF STORAGE DEVICE}
본 발명은 반도체 장치에 관한 것으로, 좀 더 구체적으로는 고속으로 데이터 트레이닝을 수행하기 위한 스토리지 장치의 데이터 트레이닝 방법에 관한 것이다.
다수의 불휘발성 메모리 장치와 스토리지 컨트롤러로 이루어진 스토리지 장치에서 데이터의 신뢰성을 보장하기 위해서는 데이터 트레이닝(DQ Training)이 필요하다. 데이터 트레이닝에는 읽기 트레이닝(Read training)과 쓰기 트레이닝(Write training)이 있다. 읽기 트레이닝은 불휘발성 메모리 장치로부터 출력되는 데이터(Dout)의 눈 모양(Eye pattern)의 센터(Center)를 스토리지 컨트롤러가 정렬(Align)시키는 동작이다. 쓰기 트레이닝은 불휘발성 메모리 장치에 기입되는 데이터(Din)의 눈 모양을 정렬시키기 위한 동작이다.
데이터 트레이닝을 위해서 스토리지 컨트롤러는 불휘발성 메모리 장치들 각각에 특정 패턴의 데이터를 기입하거나, 불휘발성 메모리 장치로부터 특정 패턴의 데이터를 읽어내야 한다. 특정 패턴의 데이터를 기입하거나 읽어내기 위해서는 명령어와 어드레스의 입력이 필요하다. 따라서, 트레이닝 동작시에 명령어와 어드레스의 입력, 패턴 데이터의 입력 또는 출력, 그리고 AC 타이밍(AC timing)에 소요되는 시간이 불가피하게 소요된다.
고용량의 스토리지 장치를 구현하기 위해서는 많은 수의 불휘발성 메모리 장치가 스토리지 장치에 장착될 것이다. 많은 수의 불휘발성 메모리 장치들이 구비된 스토리지 장치에서, 파워-업(Power-up)과 같은 상황에서 신속한 접근 성능을 제공하기 위해서는 오픈 타이밍(Open timing)을 줄일 것이 요구된다.
본 발명의 목적은 고속의 데이터 트레이닝이 가능한 스토리지 장치의 데이터 트레이닝 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 스토리지 컨트롤러 및 불휘발성 메모리 장치를 포함하는 스토리지 장치의 데이터 트레이닝 방법은, 상기 불휘발성 메모리 장치에 읽기 트레이닝 명령어를 전달하는 단계, 상기 읽기 트레이닝 명령어에 응답하여 상기 불휘발성 메모리 장치로부터 출력되는 제 1 트레이닝 패턴을 제 1 읽기 타이밍 오프셋 조건에서 수신하는 단계, 상기 읽기 트레이닝 명령어에 응답하여 상기 불휘발성 메모리 장치로부터 출력되는 제 2 트레이닝 패턴을 제 2 읽기 타이밍 오프셋 조건에서 수신하는 단계, 그리고 수신된 상기 제 1 트레이닝 패턴 및 상기 제 2 트레이닝 패턴을 레퍼런스 패턴을 비교하고, 상기 비교 결과에 따라 상기 스토리지 컨트롤러의 읽기 타이밍 오프셋을 결정하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 스토리지 컨트롤러 및 불휘발성 메모리 장치를 포함하는 스토리지 장치의 데이터 트레이닝 방법은, 상기 불휘발성 메모리 장치에 쓰기 트레이닝 명령어를 입력하는 단계, 상기 쓰기 트레이닝 명령어에 후속하여 제 1 쓰기 타이밍 오프셋 조건에서 상기 불휘발성 메모리 장치에 제 1 트레이닝 패턴을 입력하는 단계, 상기 불휘발성 메모리 장치로부터 상기 제 1 트레이닝 패턴을 독출하는 단계, 제 2 쓰기 타이밍 오프셋 조건에서 상기 불휘발성 메모리 장치에 제 2 트레이닝 패턴을 입력하는 단계, 상기 불휘발성 메모리 장치로부터 제 2 트레이닝 패턴을 독출하는 단계, 그리고 상기 제 1 트레이닝 패턴 및 상기 제 2 트레이닝 패턴과 레퍼런스 패턴을 비교하고, 상기 비교 결과에 따라 상기 스토리지 컨트롤러의 쓰기 타이밍 오프셋을 결정하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 스토리지 컨트롤러 및 불휘발성 메모리 장치를 포함하는 스토리지 장치의 데이터 트레이닝 방법은, 상기 불휘발성 메모리 장치에 쓰기 명령어를 입력하는 단계, 상기 쓰기 명령어에 후속하여 복수의 서로 다른 쓰기 타이밍 오프셋 조건들로 트레이닝 패턴을 상기 불휘발성 메모리 장치에 복수회 기입하는 단계, 상기 불휘발성 메모리 장치에 읽기 명령어를 입력하는 단계; 상기 읽기 명령어에 응답하여 상기 불휘발성 메모리 장치로부터 출력되는 복수의 트레이닝 패턴들을 수신하는 단계, 그리고 상기 수신된 트레이닝 패턴들을 사용하여 상기 스토리지 컨트롤러의 쓰기 타이밍 오프셋을 결정하는 단계를 포함한다.
이상과 같은 본 발명의 실시 예에 따르면, 불휘발성 메모리 장치의 데이터 트레이닝에 소요되는 시간을 획기적으로 줄일 수 있다. 따라서, 스토리지 장치의 부팅 시간(또는 오픈 타임)을 줄일 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 보여주는 블록도이다.
도 2는 본 발명의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다.
도 3은 도 1의 저장 매체에 포함되는 불휘발성 메모리 장치들 중 어느 하나를 예시적으로 보여주는 블록도이다.
도 4는 데이터 트레이닝의 한 예로 읽기 트레이닝을 보여주는 블록도이다.
도 5는 본 발명의 실시 예에 따른 스토리지 장치의 읽기 트레이닝 방법을 예시적으로 보여주는 순서도이다.
도 6은 본 발명의 실시 예에 따른 읽기 트레이닝 방법을 보여주는 도면이다.
도 7은 본 발명의 실시 예에 따른 읽기 트레이닝 동작시 발생하는 명령어 시퀀스와 데이터 신호(DQ)를 예시적으로 보여주는 타이밍도이다.
도 8은 본 발명의 일 실시 예에 따른 쓰기 트레이닝 방법을 보여주는 순서도이다.
도 9는 본 발명의 도 8의 쓰기 트레이닝 동작시 스토리지 컨트롤러와 불휘발성 메모리 장치 사이에서 교환되는 데이터를 보여주는 도면이다.
도 10은 쓰기 트레이닝 동작시 발생하는 명령어 시퀀스와 데이터 신호(DQ)를 예시적으로 보여주는 타이밍도이다.
도 11은 본 발명의 다른 실시 예에 따른 쓰기 트레이닝 방법을 보여주는 순서도이다.
도 12는 쓰기 트레이닝 동작시 스토리지 컨트롤러와 불휘발성 메모리 장치 사이에서 교환되는 데이터를 보여주는 도면이다.
도 13은 도 11에 도시된 실시 예의 쓰기 트레이닝 동작시 발생하는 명령어 시퀀스와 데이터 신호(DQ)를 예시적으로 보여주는 타이밍도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징 및 기능을 설명하기 위한 불휘발성 메모리 장치로서 낸드형 플래시 메모리 장치가 예시적으로 설명될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 예를 들면, 불휘발성 메모리 장치로서 PRAM, MRAM, ReRAM, FRAM, NOR 플래시 메모리 등에도 본 발명의 기술적 특징이 적용될 수 있을 것이다. 여기서, 본 발명에서 사용되는 용어 '데이터 트레이닝(Training)'은 데이터 라인의 눈 모양(Eye pattern)의 센터(Center)를 탐색하고 조정하는 동작을 의미한다.
본 발명은 다른 실시 예들을 통해 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 스토리지 장치를 보여주는 블록도이다. 도 1을 참조하면, 스토리지 장치(100)는 스토리지 컨트롤러(110), 저장 매체(120), 그리고 버퍼(130)를 포함한다. 스토리지 컨트롤러(110)와 저장 매체(120) 사이에는 신호 및 데이터 교환을 위한 적어도 하나의 채널(140, 150, 160)이 제공된다.
스토리지 컨트롤러(110)는 저장 매체(120)를 제어하도록 구성될 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 외부 요청에 따라 저장 매체(120)에 데이터를 기입하거나 또는 저장 매체(120)에 저장된 데이터를 독출할 수 있다. 이러한 저장 매체(120)로의 접근을 위하여, 스토리지 컨트롤러(110)는 명령어, 어드레스, 그리고 제어 신호를 저장 매체(120)에 제공할 수 있다.
스토리지 컨트롤러(110)는 호스트(Host)가 요청한 데이터를 읽기 위해서 저장 매체(120)에 접근할 것이다. 스토리지 컨트롤러(110)는 적어도 하나의 채널(140, 150, 160)을 통하여 저장 매체(120)에 연결될 수 있다. 스토리지 컨트롤러(110)는 접근 효율을 높이기 위하여 적어도 하나의 채널(140, 150, 160)을 이용하여 채널 인터리빙(Channel Interleaving) 방식에 따라 저장 매체(120)에 접근할 수 있다.
스토리지 컨트롤러(110)는 스토리지 장치(100)의 부팅이나 특정 상황에서 저장 매체(120)의 데이터 트레이닝(DQ Training)을 수행할 수 있다. 데이터 트레이닝을 통해서 스토리지 컨트롤러(110)는 저장 매체(120)와의 데이터 교환의 신뢰성을 높일 수 있다. 예를 들면, 스토리지 컨트롤러(110)는 트레이닝 패턴(Training Pattern)을 다양한 조건에서 저장 매체(120)에 기입하거나 독출하여 데이터 신호(DQ)의 센터(Center)를 검출할 수 있다. 스토리지 컨트롤러(110)는 검출된 데이터 신호(DQ)의 센터를 정렬하기 위하여 지연 고정 루프(DLL)이나 위상 고정 루프(PLL) 등의 오프셋 값(Offset value)을 조정할 것이다.
특히, 본 발명의 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치에 최소한의 명령어 및 어드레스를 전달하고도 데이터 트레이닝(DQ Training)을 수행할 수 있다. 즉, 읽기 트레이닝 또는 쓰기 트레이닝을 위해 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치에 명령어 시퀀스를 1회 또는 2회만 사용하고도 다양한 오프셋에 대응하는 데이터 신호(DQ)를 전달하거나 수신할 수 있다. 따라서, 많은 수의 불휘발성 메모리 장치들의 데이터 트레이닝을 수행해야 하는 스토리지 장치(100)에서 명령어와 AC 타이밍에 소요되는 시간이 획기적으로 감소될 수 있다.
저장 매체(120)는 복수의 불휘발성 메모리 장치들(NVM_mn)을 포함한다. 복수의 불휘발성 메모리 장치들(NVM_mn)은 복수 채널 단위로 스토리지 컨트롤러(110)에 연결될 수 있다. 예를 들면, 불휘발성 메모리 장치들(NVM_11~NVM_14)은 제 1 채널(CH1)을 통해서 스토리지 컨트롤러(110)에 연결된다. 즉, 불휘발성 메모리 장치들(NVM_11~NVM_14)은 스토리지 컨트롤러(110)와 데이터를 교환하기 위한 데이터 신호 라인(DQ line)을 공유한다. 마찬가지로, 불휘발성 메모리 장치들(NVM_21~NVM_24)은 제 2 채널(CH2)을 통해서 스토리지 컨트롤러(110)에 연결된다. 여기서, 하나의 채널에 포함되는 불휘발성 메모리 장치의 수는 웨이(Way) 인터리빙의 단위가 될 수 있다.
버퍼(130)는 호스트(Host)와 저장 매체(120) 사이에서 전달되는 데이터를 일시 저장하는 메모리이다. 예를 들면, 버퍼(130)는 디램(DRAM)으로 제공될 수 있다.
적어도 하나의 채널(140, 150, 160)은 데이터 신호 라인(DQ Line) 단위로 구분되는 통신 채널이다. 각각의 채널(140, 150, 160)은 독립적으로 스토리지 컨트롤러(110)와 저장 매체(120)가 데이터를 전송할 수 있는 데이터 경로에 해당한다. 예를 들면, 제 1 채널(140)을 통해서 데이터 신호(DQ_1) 및 스트로브 신호(DQS_1)가 전송되는 동안에, 제 2 채널(150)을 통해서 또 다른 데이터 신호(DQ_2) 및 스트로브 신호(DQS_2)가 전송될 수 있다. 각각의 채널(140, 150, 160)은 데이터 신호 라인(DQ Line)을 공유한다. 하지만, 채널에 포함되는 불휘발성 메모리 장치들 각각을 선택하기 위한 칩 인에이블 신호(/CE)는 칩 단위로 제공되어야 한다. 상술한 채널 구조를 사용하여 스토리지 컨트롤러(110)는 채널 및 웨이 단위의 인터리빙을 수행할 수 있다.
이상에서는 데이터 트레이닝(DQ Training) 동작시 명령어 시퀀스의 전달 및 AC 타이밍에 소요되는 시간을 줄일 수 있는 스토리지 장치(100)가 간략히 설명되었다. 본 발명의 데이터 트레이닝(DQ Training)을 위한 명령어 및 AC 타이밍을 위해서 스토리지 컨트롤러(110) 및 저장 매체(120)에 포함되는 불휘발성 메모리 장치들(NVM_mn) 각각의 명령어 인터페이스가 새롭게 정의되어야 할 것이다. 즉, 불휘발성 메모리 장치들(NVM_mn) 각각은 읽기 트레이닝이나 쓰기 트레이닝 동작시 제공되는 단일 명령어에 응답하여 복수회의 데이터 출력 또는 복수회의 데이터 입력이 가능해야 할 것이다. 본 발명의 데이터 트레이닝 방식을 적용하는 경우, 많은 수의 불휘발성 메모리 장치가 구비되는 스토리지 장치(100)의 부팅시 데이터 트레이닝에 소요되는 시간을 획기적으로 줄일 수 있다.
도 2는 본 발명의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 스토리지 컨트롤러(110)는 프로세싱 유닛(111), 트레이닝 매니저(113), 호스트 인터페이스(115), 버퍼 매니저(117), 그리고 플래시 인터페이스(119)를 포함한다. 하지만, 스토리지 컨트롤러(110)의 구성 요소들이 앞서 언급된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 스토리지 컨트롤러(110)는 초기 부팅(Booting) 동작에 필요한 코드 데이터(Code data)를 저장하는 ROM(Read Only Memory)이나 워킹 메모리(Working memory) 등을 더 포함할 수 있다.
프로세싱 유닛(111)은 중앙 처리 장치(Central Processing Unit) 또는 마이크로프로세서(Micro-processor)를 포함할 수 있다. 프로세싱 유닛(111)은 스토리지 컨트롤러(110)의 제반 동작을 주관한다. 프로세싱 유닛(111)은 스토리지 컨트롤러(110)를 동작시키기 위한 위한 펌웨어(Firmware)를 실행하도록 구성된다.
트레이닝 매니저(113)는 스토리지 장치(100)의 부팅과 같은 특정 상황에서 저장 매체(120)와의 통신을 위한 데이터 트레이닝(DQ Training)을 수행한다. 트레이닝 매니저(113)는 데이터 트레이닝을 위해서 선택된 어느 하나의 불휘발성 메모리 장치(NVM)로부터 복수회 전달된 트레이닝 패턴을 기준 데이터와 비교하여 최적의 타이밍 오프셋을 결정한다. 그리고 결정된 최적의 타이밍 오프셋으로 플래시 인터페이스(119)에 구비되는 지연 고정 루프(DLL)나 위상 고정 루프(PLL)의 타이밍 오프셋을 조정할 수 있다. 트레이닝 매니저(113)는 하드웨어로 구현될 수도 있지만, 워킹 메모리에 로드되는 펌웨어 형태로 제공될 수 있음은 잘 이해될 것이다.
호스트 인터페이스(115)는 호스트와 스토리지 컨트롤러(110) 사이의 인터페이스를 제공한다. 호스트와 스토리지 컨트롤러(110)는 다양한 표준 인터페이스들(Standardized Interfaces) 중 하나를 통해 연결될 수 있다. 다른 예로써, 호스트와 스토리지 컨트롤러(110)는 다양한 표준 인터페이스들 적어도 하나를 통해 연결될 수 있다. 여기에서, 표준 인터페이스들은 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), mSATA(mini SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral component Interconnection), PCI-E(PCI Express), USB(Universal Serial Bus), IEEE 1394, UFS(Universal Flash Storage), Card 인터페이스 등과 같은 다양한 인터페이스 방식들을 포함한다.
버퍼 매니저(117)는 호스트 인터페이스(115)와 플래시 인터페이스(119)를 통해서 교환되는 데이터를 일시 저장하기 위하여 버퍼(130)를 제어한다. 버퍼 매니저(117)는 또한 읽기 트레이닝 또는 쓰기 트레이닝 동작시 저장 매체(120)에서 선택된 불휘발성 메모리 장치로부터 전달되는 트레이닝 패턴을 저장할 수도 있다.
플래시 인터페이스(119)는 스토리지 컨트롤러(110)와 저장 매체(120)에 포함되는 불휘발성 메모리 장치들 사이의 인터페이스를 제공한다. 예를 들면, 프로세싱 유닛(111)에 의해서 처리된 데이터가 플래시 인터페이스(119)를 통해 불휘발성 메모리 장치(120)에 전달된다. 다른 예로써, 저장 매체(120)의 불휘발성 메모리 장치에 저장된 데이터는 플래시 인터페이스(119)를 통해 독출된다. 플래시 인터페이스(119)는 불휘발성 메모리 장치들과 채널 단위(CH1~CHm)로 연결될 수 있다.
플래시 인터페이스(119)는 데이터 신호(DQ)를 저장 매체(120)와 교환하기 위한 클록 회로를 포함할 수 있다. 예를 들면, 플래시 인터페이스(119)는 지연 고정 루프 회로(118)를 포함할 수 있다. 지연 고정 루프 회로(118)의 타이밍 오프셋을 조정하면, 저장 매체(120)로부터 전달되는 데이터 신호(DQ)의 센터를 정렬할 수 있다. 데이터 트레이닝 동작시, 플래시 인터페이스(119)는 선택된 불휘발성 메모리 장치에 1회의 트레이닝을 위한 명령어를 제공함으로써 복수회 트레이닝 패턴을 수신하거나 전송할 수 있다. 이러한 동작은 후술하는 타이밍도를 통해서 상세히 설명될 것이다.
이상에서 스토리지 컨트롤러(110)의 구성들이 예시적으로 설명되었다. 본 발명의 스토리지 컨트롤러(110)는 1회의 트레이닝 명령어를 사용하여 복수 시퀀스들에 걸쳐 선택된 불휘발성 메모리 장치와 트레이닝 패턴을 교환할 수 있다. 따라서, 데이터 트레이닝에 소요되는 시간이 획기적으로 감소할 수 있다.
도 3은 도 1의 저장 매체에 포함되는 불휘발성 메모리 장치들 중 어느 하나를 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 불휘발성 메모리 장치(NVM_11)는 셀 어레이(121), 행 디코더(122), 페이지 버퍼(123), 입출력 회로(124), 제어 로직(125), 그리고 전압 발생기(126)를 포함할 수 있다.
셀 어레이(121)는 워드 라인들(WL) 또는 선택 라인들(SSL, GSL)을 통해 행 디코더(122)에 연결된다. 셀 어레이(121)는 비트 라인들(BLs)을 통해서 페이지 버퍼(123)에 연결된다. 셀 어레이(121)는 낸드형으로 구성되는 복수의 셀 스트링(Cell strings)들을 포함할 수 있다. 복수의 셀 스트링들은 하나의 메모리 블록(BLK)을 구성할 수 있다. 여기서, 셀 스트링들 각각의 채널은 수직 또는 수평 방향으로 형성될 수 있다. 셀 어레이(121)에 포함되는 메모리 셀들은 워드 라인과 비트 라인으로 제공되는 전압에 의해서 프로그램된다.
본 발명의 개념에 따른 실시 예로서, 셀 어레이(121)는 3차원 메모리 어레이로 제공될 수 있다. 3차원 메모리 어레이는, 실리콘 기판 및 메모리 셀들의 동작에 연관된 회로의 위에 배치되는 활성 영역을 갖는 메모리 셀들의 어레이들의 하나 또는 그 이상의 물리 레벨들에 모놀리식으로(Monolithically) 형성될 수 있다. 메모리 셀들의 동작에 연관된 회로는 기판 내에 또는 기판 위에 위치할 수 있다. 모놀리식(Monolithical)이란 용어는, 3차원 어레이의 각 레벨의 층들이 3차원 어레이의 하위 레벨의 층들 위에 직접 증착됨을 의미한다.
행 디코더(122)는 어드레스(ADD)에 응답하여 셀 어레이(121)의 메모리 블록들 중 어느 하나를 선택할 수 있다. 행 디코더(122)는 선택된 메모리 블록의 워드 라인들(WLs) 중 어느 하나를 선택할 수 있다. 행 디코더(122)는 선택된 워드 라인에 전압 발생기(126)로부터 제공된 워드 라인 전압(VWL)을 전달한다.
페이지 버퍼(123)는 프로그램 동작시에는 기입 드라이버로 동작하고, 읽기 동작시에는 감지 증폭기로 동작한다. 프로그램 동작시, 페이지 버퍼(123)는 셀 어레이(121)의 비트 라인으로 프로그램될 데이터에 대응하는 비트 라인 전압을 전달한다. 읽기 동작시, 페이지 버퍼(123)는 선택된 메모리 셀에 저장된 데이터를 비트 라인을 통해서 감지한다. 페이지 버퍼(123)는 감지된 데이터를 래치하여 입출력 회로(124)에 전달한다. 본 발명의 페이지 버퍼(124)는 데이터 트레이닝 동작시에 트레이닝 패턴을 저장하는 선입선출 버퍼(FIFO buffer)로 사용될 수 있다. 즉, 쓰기 트레이닝 시에는 트레이닝 패턴은 셀 어레이(121)에 저장될 필요없이 페이지 버퍼(124)에 저장된 후에 출력될 수 있다.
입출력 회로(124)는 프로그램 동작시에 입력받은 쓰기 데이터를 페이지 버퍼(123)에 전달한다. 입출력 회로(124)는 읽기 동작시에 페이지 버퍼(123)로부터 제공되는 읽기 데이터를 외부로 출력한다. 입출력 회로(124)는 입력되는 어드레스(ADD) 또는 명령어를 제어 로직(125)이나 행 디코더(122)에 전달한다.
제어 로직(125)은 외부로부터 전달되는 명령어와 제어 신호(/CE, /RE, /WE, DQS)에 응답하여 페이지 버퍼(123)와 전압 발생기(126)를 제어한다. 특히, 제어 로직(125)은 데이터 트레이닝을 위해 제공되는 1회의 명령어에 응답하여 연속적으로 데이터를 입력받거나 출력하도록 페이지 버퍼(123) 및 입출력 회로(124)를 제어할 수 있다. 예를 들면, 읽기 트레이닝 동작시, 제어 로직(125)은 입출력 회로(124)를 통해서 입력되는 읽기 트레이닝 명령어(CMD_RT)와 패턴 어드레스(PT_ADD)에 응답하여 동일한 패턴 데이터를 복수 회 출력할 수 있다. 즉, 스토리지 컨트롤러(110)에서 오프셋을 복수 회 변경하여 패턴 데이터를 입력받도록 제어 로직(125)은 패턴 데이터를 주기적으로 또는 스토리지 컨트롤러(110)의 플래그 신호에 응답하여 출력할 수 있다. 이러한 데이터 트레이닝을 위한 명령어 시퀀스의 적용은 읽기 트레이닝뿐 아니라 쓰기 트레이닝 동작에서도 동일하게 적용될 수 있다.
전압 발생기(126)는 제어 로직(125)의 제어에 따라 각각의 워드 라인들로 공급될 다양한 워드 라인 전압들(VWL)과, 메모리 셀들이 형성된 벌크(예를 들면, 웰 영역)로 공급될 전압을 발생한다. 각각의 워드 라인들로 공급될 워드 라인 전압들에는 프로그램 전압(Vpgm), 패스 전압(Vpass), 선택 및 비선택 읽기 전압들(Vrd, Vread) 등이 있다.
이상의 본 발명의 불휘발성 메모리 장치(NVM_11)는 데이터 트레이닝 동작시 위한 특정한 명령어 시퀀스를 제공받을 수 있다. 예를 들면, 1회의 읽기 트레이닝 명령어(CMD_RT)와 패턴 어드레스(PT_ADD)의 입력에 응답하여 복수 회 트레이닝 패턴을 출력할 수 있다. 이러한 명령어 시퀀스의 사용은 쓰기 트레이닝 동작시에도 동일하게 적용될 수 있다. 1회의 명령어와 어드레스 입력만으로도 본 발명의 불휘발성 메모리 장치는 외부에서 요청한 트레이닝 패턴을 특정 간격을 두고 복수회 출력할 수 있다. 또한, 쓰기 트레이닝 시에는 1회의 트레이닝 명령어에 응답하여 외부에서 복수회 제공되는 트레이닝 패턴을 페이지 버퍼(123)에 저장할 수 있다.
따라서, 본 발명의 불휘발성 메모리 장치(NVM_11)는 데이터 트레이닝에 소요되는 명령어나 어드레스의 입력 횟수를 획기적으로 줄일 수 있다. 더불어, 본 발명의 데이터 트레이닝 방식에 따르면, 명령어와 어드레스 입력에 불가피하게 동반되는 AC 타이밍의 길이가 획기적으로 감소될 수 있다. 결국, 데이터 트레이닝에 소요되는 시간을 획기적으로 줄일 수 있다.
도 4는 데이터 트레이닝의 한 예로 읽기 트레이닝을 보여주는 블록도이다. 도 4를 참조하면, 읽기 트레이닝시 플래시 인터페이스(119, 도 2 참조)는 불휘발성 메모리 장치(NVM)로부터 제공되는 데이터 신호(DQ)의 최적 샘플링 시점을 조정할 수 있다.
불휘발성 메모리 장치(NVM)가 데이터 신호(DQ)를 플래시 인터페이스(119)에 전달하면, 플래시 인터페이스(119)의 수신 래치(116)가 전달된 데이터 신호(DQ)를 샘플링한다. 불휘발성 메모리 장치(NVM)는, 예를 들면, 센터(Center)가 정렬된 눈 모양(EP, 129)의 데이터 신호(DQ)를 출력할 수 있다. 하지만, 플래시 인터페이스(119)에 전달되는 데이터 신호(DQ)는 채널별, 또는 데이터 라인별로 다양한 요인으로 인하여 서로 다른 지연을 가질 수 있다. 읽기 트레이닝은 불휘발성 메모리 장치(NVM)로부터 제공되는 데이터 신호(DQ)의 눈 모양(114)의 샘플링 시점(S)을 센터(C)로 조정하기 위한 동작이다. 즉, 읽기 트레이닝을 통해서 수신 래치(116)의 샘플링 시점을 검출된 시간(Δt)만큼 조정될 수 있다.
예를 들면, 읽기 트레이닝을 통해서 수신 래치(116)에 클록 신호를 제공하는 DLL 회로(118)의 읽기 타이밍 오프셋(TR_Offset)이 조정될 수 있다. 상술한 읽기 트레이닝을 통해서 불휘발성 메모리 장치(NVM)로부터 전달되는 데이터 신호(DQ)들의 샘플링 시점은 눈 모양(114)의 센터(C)로 정렬될 수 있다.
쓰기 트레이닝 동작은 플래시 인터페이스(119)에서 전송되는 데이터의 쓰기 타이밍 오프셋을 조정하는 동작이다. 불휘발성 메모리 장치(NVM)에 입력되는 데이터 신호(DQ)를 정렬하기 위한 점을 제외하면 쓰기 트레이닝 동작도 읽기 트레이닝 동작과 유사하다. 따라서, 쓰기 트레이닝 동작의 구체적인 설명은 생략하기로 한다.
도 5는 본 발명의 실시 예에 따른 스토리지 장치의 읽기 트레이닝 방법을 예시적으로 보여주는 순서도이다. 도 1 및 도 5를 참조하면, 본 발명의 스토리지 장치(100)는 선택된 불휘발성 메모리 장치에 1회의 트레이닝 명령어를 포함하는 명령어 시퀀스를 사용하여 복수회 트레이닝 패턴을 출력받을 수 있다.
S110 단계에서, 스토리지 컨트롤러(110)는 저장 매체(120)에 포함되는 복수의 불휘발성 메모리 장치들 중 어느 하나를 선택한다. 읽기 트레이닝을 수행하기 위해, 스토리지 컨트롤러(110)는 채널(CH)과 웨이(Way)를 선택할 것이다. 이러한 선택 방식으로 스토리지 컨트롤러(110)는 저장 매체(120) 내의 모든 불휘발성 메모리 장치들의 읽기 트레이닝을 수행할 수 있다.
S120 단계에서, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치에 읽기 트레이닝 명령어(CMD_RT) 및 패턴 어드레스(PT_ADD)를 전달한다. 이때, 복수의 불휘발성 메모리 장치들 중에서 선택된 불휘발성 메모리 장치의 칩 인에이블 신호(/CE)만이 활성화될 것이다. 이때, 스토리지 컨트롤러(110)의 데이터 신호를 수신하기 위한 타이밍 오프셋(Timing Offset)은 초기화될 것이다.
S130 단계에서, 선택된 불휘발성 메모리 장치(NVM)는 패턴 어드레스(PT_ADD)에 대응하는 트레이닝 패턴(Training pattern)을 스토리지 컨트롤러(110)에 출력한다. 스토리지 컨트롤러(110)는 초기화된 타이밍 오프셋 조건에서 불휘발성 메모리 장치(NVM)로부터 출력되는 트레이닝 패턴을 래치하고 저장할 것이다.
S140 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치로부터 출력되는 데이터 신호(DQ)를 수신하기 위한 타이밍 오프셋 값이 조정 가능한 복수의 오프셋 값들 중 마지막 값인지 판단할 것이다. 만일, S130 단계에서 불휘발성 메모리 장치에서 출력되는 트레이닝 패턴을 수신하기 위해 적용된 타이밍 오프셋 값이 마지막 오프셋인 경우, 절차는 S160 단계로 이동한다. 반면, S130 단계에서 불휘발성 메모리 장치로부터의 트레이닝 패턴을 수신하기 위해 적용된 타이밍 오프셋 값이 마지막 오프셋이 아닌 경우, 절차는 S150 단계로 이동한다.
S150 단계에서, 스토리지 컨트롤러(110)는 읽기 타이밍 오프셋(RT_Offset)을 변경한다. 예를 들면, 스토리지 컨트롤러(110)는 플래시 인터페이스(119)의 데이터를 래치하기 위하여 생성되는 DLL 회로(118)나 클록 회로의 읽기 타이밍 오프셋(RT_Offset)을 조정할 것이다. 이어서 절차는 조정된 읽기 타이밍 오프셋(RT_Offset) 조건에서 불휘발성 메모리 장치에서 출력되는 트레이닝 패턴을 수신하기 위한 S130 단계로 이동할 것이다.
S160 단계에서, 스토리지 컨트롤러(110)의 트레이닝 매니저(113)는 서로 다른 읽기 타이밍 오프셋(RT_Offset) 조건에서 수신된 트레이닝 패턴들과 레퍼런스 패턴을 비교할 것이다. 트레이닝 매니저(113)는 서로 다른 읽기 타이밍 오프셋(RT_Offset) 조건에서 수신된 트레이닝 패턴들 중에서 레퍼런스 패턴과 동일한 데이터를 검출할 수 있다. 트레이닝 매니저(113)는 레퍼런스 패턴과 동일한 논리값을 갖는 트레이닝 패턴에 대응하는 읽기 타이밍 오프셋(RT_Offset)을 선택한다. 그리고 트레이닝 매니저(113)는 선택된 읽기 타이밍 오프셋(RT_Offset)을 S110 단계에서 선택된 불휘발성 메모리 장치의 읽기 동작을 위한 최적 읽기 타이밍 오프셋(RT_Offset) 값으로 선택할 것이다.
S170 단계에서, 트레이닝 매니저(113)는 S110 단계에서 선택된 불휘발성 메모리 장치가 저장 매체(120) 내의 읽기 트레이닝을 위한 마지막 장치인지 판단한다. 만일, 선택된 불휘발성 메모리 장치가 읽기 트레이닝의 대상이 되는 마지막 장치인 경우, 제반 읽기 트레이닝은 종료될 것이다. 반면, 선택된 불휘발성 메모리 장치가 읽기 트레이닝의 대상이 되는 마지막 장치가 아닌 경우, 절차는 S180 단계로 이동한다.
S180 단계에서, 트레이닝 매니저(113)는 읽기 트레이닝을 수행할 다른 불휘발성 메모리 장치를 선택할 것이다. 그리고 절차는 S110 단계로 이동한다.
본 발명의 스토리지 장치의 읽기 트레이닝 방법에 따르면, 선택된 불휘발성 메모리 장치에 1회의 읽기 트레이닝 명령어(CMD_TR)를 전달하여 복수의 트레이닝 패턴을 얻을 수 있다. 그리고 스토리지 컨트롤러(110)는 각각의 트레이닝 패턴을 서로 다른 읽기 타이밍 오프셋(RT_Offset)을 적용하여 수신한다. 그리고 수신된 트레이닝 패턴을 레퍼런스 패턴과 비교하면, 최적 읽기 타이밍 오프셋(RT_Offset)이 결정될 수 있다.
도 6은 본 발명의 실시 예에 따른 읽기 트레이닝 방법을 보여주는 도면이다. 도 6을 참조하면, 스토리지 컨트롤러(110)는 본 발명의 실시 예에 따른 트레이닝 명령어 시퀀스를 불휘발성 메모리 장치(NVM)에 전달하여 읽기 트레이닝을 수행할 수 있다. 즉, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 1회의 읽기 트레이닝 명령어(CMD_RT)와 패턴 어드레스(PT_ADD)를 전달하고, 복수의 트레이닝 패턴을 수신할 수 있다.
S11 단계 및 S12 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 읽기 트레이닝 명령어(CMD_RT)와 패턴 어드레스(PT_ADD)를 전송한다. 여기서, 읽기 트레이닝 명령어(CMD_RT)는 불휘발성 메모리 장치(NVM)의 데이터 입출력 패드를 통해서 제공되는 특정 명령어 코드로 제공될 것이다. 특정 명령어 코드가 제공되는 구간에서 명령어 래치 인에이블 신호(CLE)의 활성화와 함께 쓰기 인에이블 신호(/WE)가 토글링될 것이다. 그러면, 읽기 트레이닝 명령어(CMD_RT)가 불휘발성 메모리 장치(NVM)에 입력된다. 패턴 어드레스도 읽기 트레이닝 명령어(CMD_RT)에 후속하여 불휘발성 메모리 장치(NVM)에 제공될 수 있다.
S13 단계에서, 불휘발성 메모리 장치(NVM)의 제어 로직(125, 도 3 참조)은 읽기 트레이닝 명령어(CMD_RT)를 식별하고, 패턴 어드레스(PT_ADD)에 지정된 메모리 영역으로부터 트레이닝 패턴을 읽는다. 트레이닝 패턴은, 예를 들면, 불휘발성 메모리 장치(NVM)의 특정 메모리 영역에 저장된 데이터일 수 있다.
S14 단계에서, 불휘발성 메모리 장치(NVM)는 스토리지 컨트롤러(110)에서 제공되는 읽기 인에이블 신호(/RE)의 토글링에 동기하여 제 1 트레이닝 패턴(Dout_1)으로 출력한다. 그러면, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에서 출력되는 제 1 트레이닝 패턴(Dout_1)을 초기화된 읽기 타이밍 오프셋에 기반하여 래치하고 저장한다.
S15 단계에서, 스토리지 컨트롤러(110)는 읽기 타이밍 오프셋을 조정한다. 이때, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 선택을 해제할 수 있다. 즉, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 제공되는 칩 인에이블 신호(/CE)를 하이 레벨로 비활성화시킨 수 있다. 하지만, 읽기 타이밍 오프셋의 조정 시점에서 불휘발성 메모리 장치의 칩 인에이블 신호(/CE)의 비활성화는 생략되어도 무방하다.
S16 단계에서, 불휘발성 메모리 장치(NVM)는 스토리지 컨트롤러(110)에서 제공되는 읽기 인에이블 신호(/RE)의 토글링에 응답하여 제 2 트레이닝 패턴(Dout_2)으로 출력한다. 제 2 트레이닝 패턴(Dout_2)은 이상적으로는 제 1 트레이닝 패턴(Dout_1)과 동일한 논리값을 갖는 데이터이다. 하지만, 읽기 타이밍 오프셋에 따라 래치되는 시점이 달라지게 되면 스토리지 컨트롤러(110)에서 수신되는 데이터 값은 달라질 수 있다.
S17 단계에서, 스토리지 컨트롤러(110)는 S15 단계에서 설정된 타이밍 오프셋을 다시 조정한다. 이때, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 선택을 해제할 수 있다.
S18 단계에서, 스토리지 컨트롤러(110)는 읽기 인에이블 신호(/RE)를 토글링시킨다. 그러면, 불휘발성 메모리 장치(NVM)는 읽기 인에이블 신호(/RE)의 토글링에 응답하여 제 3 트레이닝 패턴(Dout_3)으로 출력한다.
S19 단계에서, 스토리지 컨트롤러(110)는 S17 단계에서 설정된 읽기 타이밍 오프셋을 다시 조정한다. 이때, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 선택을 해제할 수 있다.
상술한 절차에 따라 조정된 읽기 타이밍 오프셋 상태에서 스토리지 컨트롤러(110)는 읽기 인에이블 신호(/RE)를 토글링하여 트레이닝 패턴을 불휘발성 메모리 장치(NVM)로부터 수신할 수 있다. 즉, 스토리지 컨트롤러(110)는 조정 가능한 모든 읽기 타이밍 오프셋 상태에서 트레이닝 패턴을 불휘발성 메모리 장치(NVM)로부터 수신할 것이다. S20 단계에서 마지막 읽기 타이밍 오프셋의 설정이 이루어지면, S21 단계에서 최종 트레이닝 패턴(Dout_N)이 수신될 것이다.
S22 단계에서, 스토리지 컨트롤러(110)는 수신된 트레이닝 패턴들과 레퍼런스 패턴을 비교할 것이다. 그리고 스토리지 컨트롤러(110)는 비교 결과에 따라 최적의 읽기 타이밍 오프셋을 선택할 수 있다.
상술한 절차들을 통해서 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 읽기 트레이닝을 완료할 수 있다. 여기서, 하나의 칩에 대응하는 불휘발성 메모리 장치(NVM)의 읽기 트레이닝을 위해서 1회의 읽기 트레이닝 명령어(CMD_RT)와 1회의 패턴 어드레스(PT_ADD)만이 사용된다. 따라서, 본 발명의 읽기 트레이닝 방법을 사용하면, 읽기 트레이닝을 위한 명령어 시퀀스의 길이를 최소화할 수 있고, 읽기 트레이닝 동작시 발생하는 AC 타이밍의 길이도 최소화할 수 있다.
도 7은 본 발명의 실시 예에 따른 읽기 트레이닝 동작시 발생하는 명령어 시퀀스와 데이터 신호(DQ)를 예시적으로 보여주는 타이밍도이다. 도 7을 참조하면, 읽기 트레이닝 동작시, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 1회의 명령어 시퀀스('CMD_RT' - 'PT_ADD')를 제공하고, 서로 다른 타이밍 오프셋 조건하에서 트레이닝 패턴들(Dout_1~Dout_N)을 수신할 수 있다.
먼저, 읽기 트레이닝을 위한 불휘발성 메모리 장치(NVM)가 선택되면, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 칩 인에이블 신호(/CE)를 로우 레벨로 활성화할 것이다. 이어서, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 데이터 라인(DQ Line)으로 읽기 트레이닝 명령어(CMD_RT) 및 패턴 어드레스(PT_ADD)를 전달한다. 여기서, 읽기 트레이닝 명령어(CMD_RT) 및 패턴 어드레스(PT_ADD)를 통칭하여 트레이닝 명령어 시퀀스라 칭하기로 한다. 도시되지는 않았지만, 읽기 트레이닝 명령어(CMD_RT)는 패턴 어드레스(PT_ADD) 후미에 제공되는 컨펌 코드(Confirm code)를 더 포함할 수 있음은 이 분야의 기술에 익숙한 자들에게는 잘 이해될 것이다.
트레이닝 명령어 시퀀스가 선택된 불휘발성 메모리 장치(NVM)에 전달되면, 불휘발성 메모리 장치(NVM)는 내부적으로 읽기 트레이닝 명령어(CMD_RT)를 인식하고, 요청된 트레이닝 패턴을 센싱할 수 있다. 이어서, 스토리지 컨트롤러(110)가 읽기 인에이블 신호(/RE)를 토글링하면, 불휘발성 메모리 장치(NVM)는 센싱된 제 1 트레이닝 패턴(Dout_1)을 데이터 라인(DQ Line)으로 출력할 것이다. 제 1 트레이닝 패턴(Dout_1)의 출력이 완료되면, 스토리지 컨트롤러(110)는 칩 인에이블 신호(/CE)를 하이 레벨로 천이시켜 칩 선택을 일시적으로 해제할 수 있다.
스토리지 컨트롤러(110)는 칩 인에이블 신호(/CE)가 비활성화된 상태에서 불휘발성 메모리 장치(NVM)로부터 출력되는 데이터를 래치하기 위한 읽기 타이밍 오프셋을 조정할 수 있다. 즉, 칩 인에이블 신호(/CE)가 비활성화된 시간(tOC) 동안, 스토리지 컨트롤러(110)는 읽기 타이밍 오프셋을 조정할 수 있다. 하지만, 칩 인에이블 신호(/CE)의 천이없이도 스토리지 컨트롤러(110)가 읽기 타이밍 오프셋을 조정할 수 있음은 잘 이해될 것이다.
읽기 타이밍 오프셋의 조정이 완료되면, 스토리지 컨트롤러(110)는 칩 인에이블 신호(/CE)를 로우 레벨로 활성화시키고, 읽기 인에이블 신호(/RE)를 토글링시킨다. 그러면, 불휘발성 메모리 장치(NVM)는 제 2 트레이닝 패턴(Dout_2)을 데이터 라인(DQ Line)으로 출력할 것이다. 제 2 트레이닝 패턴(Dout_2)의 출력이 완료되면, 스토리지 컨트롤러(110)는 칩 인에이블 신호(/CE)를 다시 하이 레벨로 천이시켜 칩 선택을 해제할 것이다.
이러한 방식으로 스토리지 컨트롤러(110)는 복수의 읽기 타이밍 오프셋 조정 동작과 조정된 읽기 타이밍 오프셋 조건하에서 불휘발성 메모리 장치(NVM)로부터 복수회 트레이닝 패턴을 제공받을 수 있다. 하지만, 트레이닝 패턴을 복수회 제공받기 위한 읽기 트레이닝 명령어(CMD_RT)는 패턴 어드레스(PT_ADD)는 1회만 입력하면 된다. 결국, 본 발명의 스토리지 장치(100)에 따르면, 읽기 트레이닝을 위한 읽기 트레이닝 명령어(CMD_RT)와 패턴 어드레스(PT_ADD)의 입력 횟수가 최소화될 수 있다. 더불어, 감소된 명령어 시퀀스에 따라 AC 타이밍도 감소될 것이다.
도 8은 본 발명의 일 실시 예에 따른 쓰기 트레이닝 방법을 보여주는 순서도이다. 도 8을 참조하면, 본 발명의 스토리지 장치(100)는 선택된 불휘발성 메모리 장치에 각각 1회의 쓰기 트레이닝 명령어(CMD_WT) 및 패턴 어드레스(PT_ADD)를 제공하고도 쓰기 트레이닝을 수행할 수 있다.
S210 단계에서, 스토리지 컨트롤러(110)는 저장 매체(120)에 포함되는 복수의 불휘발성 메모리 장치들 중 어느 하나를 선택한다. 쓰기 트레이닝을 수행하기 위해, 스토리지 컨트롤러(110)는 채널(CH)과 웨이(Way)를 선택할 것이다. 선택된 채널(CH) 및 웨이(Way)에 대응하는 어느 하나의 불휘발성 메모리 장치(NVM)가 선택된다.
S220 단계에서, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 쓰기 트레이닝 명령어(CMD_WT) 및 패턴 어드레스(PT_ADD)를 전달한다. 이때, 복수의 불휘발성 메모리 장치들 중에서 선택된 불휘발성 메모리 장치(NVM)의 칩 인에이블 신호(/CE)가 활성화될 것이다. 그리고 스토리지 컨트롤러(110)에서 불휘발성 메모리 장치(NVM)로 데이터를 전송하기 위한 쓰기 타이밍 오프셋(WT_Offset)은 초기화될 것이다.
S230 단계에서, 스토리지 컨트롤러(110)는 S220 단계에서 설정된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 선택된 불휘발성 메모리 장치(NVM)에 트레이닝 패턴에 대응하는 쓰기 데이터(Din)를 전송한다. 그러면, 불휘발성 메모리 장치(NVM)는 입력된 데이터를 트레이닝을 위해 제공되는 버퍼(또는, 페이지 버퍼)에 저장할 것이다.
S240 단계에서, 불휘발성 메모리 장치(NVM)는 스토리지 컨트롤러(110)로부터의 제어 신호(예를 들면, 읽기 인에이블 신호)에 응답하여 S230 단계에서 수신된 쓰기 데이터(Din)를 다시 스토리지 컨트롤러(110)로 출력한다. 그러면, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)가 출력하는 출력 데이터(Dout)를 수신한다.
S250 단계에서, 스토리지 컨트롤러(110)는 S230 단계에서 적용된 쓰기 타이밍 오프셋(WT_Offset)이 조정 가능한 복수의 쓰기 타이밍 오프셋들 중 마지막 값인지 판단할 것이다. 만일, S230 단계에서 적용된 쓰기 타이밍 오프셋(WT_Offset)이 마지막 쓰기 타이밍 오프셋인 경우, 절차는 S270 단계로 이동한다. 반면, S230 단계에서 적용된 쓰기 타이밍 오프셋이 마지막 오프셋이 아닌 경우, 절차는 S260 단계로 이동한다.
S260 단계에서, 스토리지 컨트롤러(110)는 쓰기 타이밍 오프셋(WT_Offset) 값을 변경한다. 예를 들면, 스토리지 컨트롤러(110)는 플래시 인터페이스(119)의 데이터를 전송하기 클록 회로(예를 들면, DLL 회로)의 쓰기 타이밍 오프셋(WT_Offset)을 조정할 것이다. 이어서 절차는 조정된 쓰기 타이밍 오프셋 조건에서 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 전송하기 위한 S230 단계로 이동할 것이다.
S270 단계에서, 스토리지 컨트롤러(110)는 서로 다른 쓰기 타이밍 오프셋 조건에서 전송되고 다시 읽혀진 트레이닝 패턴들과 레퍼런스 패턴을 비교할 것이다. 스토리지 컨트롤러(110)는 수신된 트레이닝 패턴들 중에서 레퍼런스 패턴과 동일한 논리값을 갖는 트레이닝 패턴에 대응하는 쓰기 타이밍 오프셋(WT_Offset)을 선택할 것이다. 그리고 트레이닝 매니저(113)는 선택된 쓰기 타이밍 오프셋(WT_Offset)을 S210 단계에서 선택된 불휘발성 메모리 장치(NVM)의 최적 쓰기 타이밍 오프셋 값으로 선택할 것이다.
S280 단계에서, 스토리지 컨트롤러(110)는 S210 단계에서 선택된 불휘발성 메모리 장치가 저장 매체(120) 내의 쓰기 트레이닝을 위한 마지막 장치인지 판단한다. 만일, 선택된 불휘발성 메모리 장치가 쓰기 트레이닝의 대상이 되는 마지막 장치인 경우, 제반 쓰기 트레이닝은 종료될 것이다. 반면, 선택된 불휘발성 메모리 장치가 쓰기 트레이닝의 대상이 되는 마지막 장치가 아닌 경우, 절차는 S290 단계로 이동한다.
S290 단계에서, 스토리지 컨트롤러(110)는 쓰기 트레이닝을 수행할 다른 불휘발성 메모리 장치를 선택할 것이다. 그리고 절차는 S210 단계로 복귀한다.
본 발명의 스토리지 장치(100)의 쓰기 트레이닝 방법에 따르면, 선택된 불휘발성 메모리 장치에 1회의 쓰기 트레이닝 명령어(CMD_WR) 및 패턴 어드레스(PT_ADD)를 사용하여 다양한 쓰기 타이밍 오프셋(WT_Offset)들 각각에 대응하는 복수의 트레이닝 패턴들을 제공받을 수 있다. 다양한 쓰기 타이밍 오프셋(WT_Offset)들 각각에 대응하는 복수의 트레이닝 패턴들을 레퍼런스 패턴과 비교하면, 최적의 쓰기 타이밍 오프셋(WT_Offset)의 결정이 가능하다.
도 9는 도 8의 쓰기 트레이닝 동작시 스토리지 컨트롤러와 불휘발성 메모리 장치 사이에서 교환되는 데이터를 보여주는 도면이다. 도 9를 참조하면, 스토리지 컨트롤러(110)는 1회의 쓰기 트레이닝 명령어(CMD_WR) 및 패턴 어드레스(PT_ADD)를 불휘발성 메모리 장치(NVM)에 전달하여 쓰기 트레이닝을 수행할 수 있다.
S30 단계 및 S31 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 쓰기 트레이닝 명령어(CMD_WT)와 패턴 어드레스(PT_ADD)를 전송한다. 여기서, 쓰기 트레이닝 명령어(CMD_WT)는 불휘발성 메모리 장치(NVM)의 데이터 입출력 패드를 통해서 제공되는 특정 명령어 코드로 제공될 것이다. 특정 명령어 코드가 제공되는 구간에서 명령어 래치 인에이블 신호(CLE)의 활성화와 함께 쓰기 인에이블 신호(/WE)가 토글링될 것이다. 그러면, 쓰기 트레이닝 명령어(CMD_WT)가 불휘발성 메모리 장치(NVM)에 입력된다. 패턴 어드레스(PT_ADD)도 쓰기 트레이닝 명령어(CMD_WT)에 후속하여 불휘발성 메모리 장치(NVM)에 제공될 수 있다.
S32 단계에서, 스토리지 컨트롤러(110)는 초기화된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 입력 데이터(Din)로 전달할 것이다. 이때, 스토리지 컨트롤러(110)는 입력 데이터(Din)를 불휘발성 메모리 장치에 전달하기 위하여 데이터 스트로브 신호(DQS)를 토글링할 것이다. 불휘발성 메모리 장치(NVM)는 데이터 신호 라인(DQ Line)으로 제공되는 트레이닝 패턴을 내부에 구비되는 버퍼(예를 들면, 페이지 버퍼)에 저장할 수 있다.
S33 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 전달된 트레이닝 패턴을 다시 출력받는다. 예를 들면, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)의 읽기 인에이블 신호(/RE)를 토글링하여 입력된 트레이닝 패턴을 다시 출력 데이터(Dout)로 제공받을 수 있다.
S34 단계에서, 스토리지 컨트롤러(110)는 쓰기 타이밍 오프셋(WT_Offset)을 조정한다. 이때, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 선택을 해제할 수 있다. 즉, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 제공되는 칩 인에이블 신호(/CE)를 하이 레벨로 비활성화시킨 수 있다.
S35 단계에서, 스토리지 컨트롤러(110)는 S34 단계에서 조정된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 입력 데이터(Din)로 전달할 것이다. 이때, 스토리지 컨트롤러(110)는 데이터 신호 라인(DQ Line)으로 입력 데이터(Din)를 불휘발성 메모리 장치(NVM)에 전달하기 위하여 데이터 스트로브 신호(DQS)를 토글링할 수 있다. 불휘발성 메모리 장치(NVM)는 데이터 신호 라인(DQ Line)으로 제공되는 트레이닝 패턴을 내부에 구비되는 버퍼(예를 들면, 페이지 버퍼)에 저장할 수 있다.
S36 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 전달된 트레이닝 패턴을 다시 제공받는다. 예를 들면, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)의 읽기 인에이블 신호(/RE)를 토글링하여 입력된 트레이닝 패턴을 다시 출력 데이터(Dout)로 제공받을 수 있다.
S37 단계에서, 스토리지 컨트롤러(110)는 쓰기 타이밍 오프셋(WT_Offset)을 조정한다. 이때, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 선택을 해제할 수 있다. 즉, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 제공되는 칩 인에이블 신호(/CE)를 하이 레벨로 비활성화시킨 수 있다.
앞서 설명한 절차와 동일한 방식으로 S40 단계, S41 단계, 그리고 S42 단계를 거쳐서 쓰기 타이밍 오프셋(WT_Offset)이 조정되고, 조정된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 트레이닝 패턴이 불휘발성 메모리 장치(NVM)에 기입되고 독출될 수 있다.
S43 단계에서, 각각의 쓰기 타이밍 오프셋(WT_Offset) 조건에서 기입 및 독출된 트레이닝 패턴들은 스토리지 컨트롤러(110)에 의해서 레퍼런스 패턴과 비교된다. 스토리지 컨트롤러(110)는 비교 결과를 이용하여 최적의 쓰기 타이밍 오프셋(WT_Offset)을 결정할 수 있다.
이상의 절차들을 통해서 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 쓰기 트레이닝을 수행할 수 있다. 여기서, 하나의 칩에 대응하는 불휘발성 메모리 장치(NVM)의 쓰기 트레이닝을 위해서 1회의 쓰기 트레이닝 명령어(CMD_WT)와 1회의 패턴 어드레스(PT_ADD)만이 사용된다. 따라서, 쓰기 트레이닝을 위한 명령어 시퀀스의 길이를 최소화할 수 있고, 쓰기 트레이닝 동작시 발생하는 AC 타이밍의 길이도 최소화할 수 있다.
도 10은 쓰기 트레이닝 동작시 발생하는 명령어 시퀀스와 데이터 신호(DQ)를 예시적으로 보여주는 타이밍도이다. 도 10을 참조하면, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 1회의 명령어 시퀀스('CMD_WT' - 'PT_ADD')를 제공한다. 그리고 쓰기 타이밍 오프셋(WT_Offset)을 조정하면서 트레이닝 패턴을 입력 및 출력할 수 있다.
쓰기 트레이닝을 위한 불휘발성 메모리 장치(NVM)가 선택되면, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 칩 인에이블 신호(/CE)를 로우 레벨로 활성화할 것이다. 이어서, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 데이터 라인(DQ Line)으로 쓰기 트레이닝 명령어(CMD_WT) 및 패턴 어드레스(PT_ADD)를 전달한다. 여기서, 쓰기 트레이닝 명령어(CMD_RT) 및 패턴 어드레스(PT_ADD)를 통칭하여 쓰기 트레이닝 명령어 시퀀스라 칭하기로 한다. 도시되지는 않았지만, 쓰기 트레이닝 명령어(CMD_RT)는 패턴 어드레스(PT_ADD) 후미에 제공되는 컨펌 코드(Confirm code)를 더 포함할 수 있음은 이 분야의 기술에 익숙한 자들에게는 잘 이해될 것이다.
쓰기 트레이닝 명령어 시퀀스가 선택된 불휘발성 메모리 장치(NVM)에 전달되면, 불휘발성 메모리 장치(NVM)는 내부적으로 쓰기 트레이닝 명령어(CMD_WT)를 인식한다. 그러면, 불휘발성 메모리 장치(NVM)는 추가적인 명령어 시퀀스를 제공받지 않고도 후속되는 트레이닝 패턴을 수신하고, 수신된 트레이닝 패턴을 다시 출력할 수 있다.
1회의 쓰기 트레이닝 명령어 시퀀스에 후속하여, 스토리지 컨트롤러(110)는 초기화된 쓰기 타이밍 오프셋 조건하에서 트레이닝 패턴을 제 1 쓰기 데이터(Din_1)로 전달한다. 이때, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)를 토글링하는 방식으로 불휘발성 메모리 장치(NVM)를 제어할 수 있다. 트레이닝 패턴의 입력이 완료되면, 불휘발성 메모리 장치(NVM)는 입력된 트레이닝 패턴을 다시 스토리지 컨트롤러(110)에 제 1 출력 데이터(Dout_1)로 출력한다. 이때, 스토리지 컨트롤러(110)는 읽기 인에이블 신호(/RE)를 토글링하는 방식으로 불휘발성 메모리 장치(NVM)를 제어할 수 있다.
최초 트레이닝 패턴의 입력 및 출력이 완료되면, 스토리지 컨트롤러(110)는 칩 인에이블 신호(/CE)를 하이 레벨로 천이시켜 칩 선택을 일시적으로 해제할 수 있다. 스토리지 컨트롤러(110)는 칩 인에이블 신호(/CE)가 비활성화된 상태에서 불휘발성 메모리 장치(NVM)로 데이터를 전송하기 위한 쓰기 타이밍 오프셋(WT_Offset)을 조정할 수 있다. 즉, 칩 인에이블 신호(/CE)가 비활성화된 시간(tOC) 동안, 스토리지 컨트롤러(110)는 쓰기 타이밍 오프셋을 조정할 수 있다.
쓰기 타이밍 오프셋(WT_Offset)의 조정이 완료되면, 스토리지 컨트롤러(110)는 조정된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 트레이닝 패턴을 제 2 쓰기 데이터(Din_2)로서 불휘발성 메모리 장치(MVN)에 전달한다. 더불어, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 입력된 트레이닝 패턴을 다시 제 2 출력 데이터(Dout_2)로 출력하도록 불휘발성 메모리 장치(NVM)를 제어한다. 이때, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS) 및 읽기 인에이블 신호(/RE)를 사용하여 불휘발성 메모리 장치(NVM)를 제어할 수 있다.
상술한 방식으로 스토리지 컨트롤러(110)는 복수의 쓰기 타이밍 오프셋(WT_Offset) 조정과, 조정된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 기입하고 독출한다. 하지만, 트레이닝 패턴을 불휘발성 메모리 장치(NVM)에 복수회 기입하고 독출하기 위한 쓰기 트레이닝 명령어(CMD_WT)와 패턴 어드레스(PT_ADD)는 1회만 입력하면 된다. 결국, 본 발명의 스토리지 장치(100)에 따르면, 쓰기 트레이닝을 위한 쓰기 트레이닝 명령어(CMD_WT)와 패턴 어드레스(PT_ADD)의 입력 횟수가 최소화될 수 있다.
도 11은 본 발명의 다른 실시 예에 따른 쓰기 트레이닝 방법을 보여주는 순서도이다. 도 11을 참조하면, 본 발명의 스토리지 장치(100)는 쓰기 트레이닝 동작시 선택된 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 입력하기 위한 명령어 시퀀스 및 입력된 트레이닝 패턴을 출력하기 위한 명령어 시퀀스를 제공한다. 따라서, 2회의 명령어 시퀀스를 사용하여 선택된 불휘발성 메모리 장치(NVM)의 쓰기 트레이닝을 수행할 수 있다.
S310 단계에서, 스토리지 컨트롤러(110)는 저장 매체(120)에 포함되는 복수의 불휘발성 메모리 장치들 중 어느 하나를 선택한다.
S320 단계에서, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 기입하기 위한 쓰기 명령어(Write_CMD) 및 패턴 어드레스(PT_ADD)를 전달한다. 이때, 스토리지 컨트롤러(110)가 불휘발성 메모리 장치(NVM)에 데이터를 전송하기 위한 타이밍 오프셋(Timing Offset)은 초기화 값을 갖는다.
S330 단계에서, 스토리지 컨트롤러(110)는 S320 단계에서 설정된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 선택된 불휘발성 메모리 장치(NVM)에 트레이닝 패턴에 대응하는 쓰기 데이터(Din)를 전송한다. 그러면, 불휘발성 메모리 장치(NVM)는 입력된 데이터를 트레이닝을 위해 제공되는 버퍼(또는 페이지 버퍼)에 저장할 것이다.
S332 단계에서, 스토리지 컨트롤러(110)는 S330 단계에서 적용된 쓰기 타이밍 오프셋(WT_Offset)이 조정 가능한 복수의 쓰기 타이밍 오프셋들 중 마지막 값인지 판단할 것이다. 만일, S330 단계에서 적용된 쓰기 타이밍 오프셋(WT_Offset)이 마지막 쓰기 타이밍 오프셋인 경우, 절차는 S350 단계로 이동한다. 반면, S330 단계에서 적용된 쓰기 타이밍 오프셋이 마지막 오프셋이 아닌 경우, 절차는 S334 단계로 이동한다.
S334 단계에서, 스토리지 컨트롤러(110)는 쓰기 타이밍 오프셋(WT_Offset) 값을 변경한다. 예를 들면, 스토리지 컨트롤러(110)는 플래시 인터페이스(119)의 데이터를 전송하기 위한 DLL 회로(118, 도 2 참조)나 클록 회로의 오프셋을 조정할 것이다. 이어서 절차는 조정된 쓰기 타이밍 오프셋(WT_Offset) 조건에서 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 전송하기 위한 S330 단계로 복귀할 것이다.
S330 단계, S332 단계, 그리고 S334 단계는 트레이닝 패턴을 불휘발성 메모리 장치에 각각의 쓰기 타이밍 오프셋(WT_Offset)을 적용하여 쓰기 위한 쓰기 동작 루프에 대응한다. 쓰기 동작 루프(S330 단계 - S332 단계- S334 단계)를 통해서 스토리지 컨트롤러(110)는 설정 가능한 모든 쓰기 타이밍 오프셋 값들에 대응하는 조건에서 트레이닝 패턴을 연속적으로 불휘발성 메모리 장치(NVM)에 기입할 수 있다.
쓰기 동작 루프(S330 단계 - S332 단계- S334 단계)가 완료되면, S340 단계에서 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 저장된 트레이닝 패턴을 다시 읽어오기 위한 읽기 동작 루프를 수행할 수 있다. 읽기 동작 루프를 위해, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 읽기 명령어(Read_CMD)와 패턴 어드레스(PT_ADD)를 전달한다.
S350 단계에서, 불휘발성 메모리 장치(NVM)는 이전에 입력된 트레이닝 패턴을 출력 데이터(Dout)로 스토리지 컨트롤러(110)에 출력한다. 그러면, 스토리지 컨트롤러(110)는 출력 데이터(Dout)을 수신하여 레퍼런스 패턴과 비교할 수 있다.
S360 단계에서, 스토리지 컨트롤러(110)는 S350 단계에서 수신된 출력 데이터(Dout)가 쓰기 동작 루프(S330 단계 - S332 단계- S334 단계)에서 입력된 마지막 데이터인지 판단한다. 만일, S350 단계에서 수신된 출력 데이터(Dout)가 마지막 데이터에 대응하는 경우, 절차는 S370 단계로 이동한다. 반면, S350 단계에서 수신된 출력 데이터(Dout)가 마지막 데이터가 아닌 경우, 절차는 S350 단계로 복귀하여 지속적으로 레퍼런스 패턴을 출력하게 될 것이다.
S370 단계에서, 스토리지 컨트롤러(110)는 서로 다른 쓰기 타이밍 오프셋 조건에서 전송되고 다시 읽혀진 트레이닝 패턴들과 레퍼런스 패턴을 비교할 것이다. 스토리지 컨트롤러(110)는 수신된 트레이닝 패턴들 중에서 레퍼런스 패턴과 동일한 논리값을 갖는 트레이닝 패턴에 대응하는 쓰기 타이밍 오프셋(WT_Offset)을 선택할 것이다. 그리고 트레이닝 매니저(113)는 선택된 쓰기 타이밍 오프셋(WT_Offset)을 S310 단계에서 선택된 불휘발성 메모리 장치(NVM)의 최적 쓰기 타이밍 오프셋(WT_Offset) 값으로 선택할 것이다.
S380 단계에서, 스토리지 컨트롤러(110)는 S310 단계에서 선택된 불휘발성 메모리 장치가 저장 매체(120) 내의 쓰기 트레이닝을 위한 마지막 장치인지 판단한다. 만일, 선택된 불휘발성 메모리 장치가 쓰기 트레이닝의 대상이 되는 마지막 장치인 경우, 제반 쓰기 트레이닝은 종료될 것이다. 반면, 선택된 불휘발성 메모리 장치가 쓰기 트레이닝의 대상이 되는 마지막 장치가 아닌 경우, 절차는 S390 단계로 이동한다.
S390 단계에서, 스토리지 컨트롤러(110)는 쓰기 트레이닝을 수행할 다른 불휘발성 메모리 장치를 선택할 것이다. 그리고 절차는 S310 단계로 복귀한다.
본 발명의 스토리지 장치(100)의 쓰기 트레이닝 방법에 따르면, 선택된 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 입력하기 위한 명령어 시퀀스와 입력된 트레이닝 패턴을 출력하기 위한 명령어 시퀀스가 사용된다. 따라서, 선택된 불휘발성 메모리 장치(NVM) 1개의 쓰기 트레이닝을 위해서 2개의 명령어 시퀀스가 적용될 수 있다.
도 12는 쓰기 트레이닝 동작시 스토리지 컨트롤러와 불휘발성 메모리 장치 사이에서 교환되는 데이터를 보여주는 도면이다. 도 12를 참조하면, 스토리지 컨트롤러(110)는 최대 2회의 명령어 시퀀스 사용으로 선택된 불휘발성 메모리 장치(NVM)의 쓰기 트레이닝을 수행할 수 있다.
S50 단계 및 S51 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 쓰기 트레이닝을 위한 쓰기 명령어(Write_CMD)와 패턴 어드레스(PT_ADD)를 전송한다. 여기서, 쓰기 명령어(Write_CMD)는 불휘발성 메모리 장치(NVM)에 제공되는 특정 명령어 코드로 제공될 것이다. 특정 명령어 코드가 제공되는 구간에서 명령어 래치 인에이블 신호(CLE)의 활성화와 함께 쓰기 인에이블 신호(/WE)가 토글링될 것이다. 그러면, 쓰기 명령어(Write_CMD)가 불휘발성 메모리 장치(NVM)에 입력된다. 패턴 어드레스(Pattern Address)도 쓰기 트레이닝 명령어(CMD_WT)에 후속하여 불휘발성 메모리 장치(NVM)에 제공될 수 있다.
S52 단계에서, 스토리지 컨트롤러(110)는 초기화된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 입력 데이터(Din)로 전달할 것이다. 이때, 스토리지 컨트롤러(110)는 입력 데이터(Din)를 불휘발성 메모리 장치에 전달하기 위하여 데이터 스트로브 신호(DQS)를 토글링할 것이다. 불휘발성 메모리 장치(NVM)는 데이터 신호 라인(DQ Line)으로 제공되는 트레이닝 패턴을 내부에 구비되는 버퍼(예를 들면, 페이지 버퍼)에 저장할 수 있다.
S53 단계에서, 스토리지 컨트롤러(110)는 쓰기 타이밍 오프셋(WT_Offset)을 조정한다. 이때, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 선택을 해제할 수 있다. 즉, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 제공되는 칩 인에이블 신호(/CE)를 하이 레벨로 비활성화시킨 수 있다. 하지만, 칩 인에이블 신호(/CE)의 천이는 선택적으로 수행될 수 있다.
S54 단계에서, 스토리지 컨트롤러(110)는 조정된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 불휘발성 메모리 장치(NVM)에 트레이닝 패턴을 입력 데이터(Din)로 전달할 것이다.
S55 단계에서, 스토리지 컨트롤러(110)는 쓰기 타이밍 오프셋(WT_Offset)을 다시 조정한다. 이때, 스토리지 컨트롤러(110)는 쓰기 타이밍 오프셋(WT_Offset)의 조정을 위해 선택된 불휘발성 메모리 장치(NVM)의 선택을 해제할 것이다.
S56 단계 및 S57 단계에서, 앞서 설명한 절차와 동일한 방식으로 마지막 쓰기 타이밍 오프셋(WT_Offset)의 조정과 마지막 트레이닝 패턴의 입력이 수행된다.
S60 단계 및 S61 단계에서, 다양한 쓰기 타이밍 오프셋 조건하에서 불휘발성 메모리 장치(NVM)에 기입된 트레이닝 패턴의 독출이 수행된다. 이를 위해, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(NVM)에 읽기 명령어(Read_CMD)와 패턴 어드레스(Pattern Address)를 전송한다. 여기서, 읽기 명령어(Read_CMD)는 불휘발성 메모리 장치(NVM)에 제공되는 특정 명령어 코드로 제공될 것이다. 특정 명령어 코드가 제공되는 구간에서 명령어 래치 인에이블 신호(CLE)의 활성화와 함께 쓰기 인에이블 신호(/WE)가 토글링될 것이다. 그러면, 읽기 명령어(Read_CMD)가 불휘발성 메모리 장치(NVM)에 입력된다. 패턴 어드레스(Pattern Address)도 읽기 명령어(Read_CMD)에 후속하여 불휘발성 메모리 장치(NVM)에 제공될 수 있다.
S62 단계 내지 S64 단계에서는, 다양한 쓰기 타이밍 오프셋 조건하에서 불휘발성 메모리 장치(NVM)에 기입된 트레이닝 패턴들이 스토리지 컨트롤러(110)에 제공된다. 불휘발성 메모리 장치(NVM)로부터 트레이닝 패턴들을 제공받기 위하여 스토리지 컨트롤러(110)는 읽기 인에이블 신호(/RE)를 토글링하여 입력된 트레이닝 패턴을 출력 데이터(Dout)로 제공받을 수 있다.
S65 단계에서, 독출된 트레이닝 패턴들은 스토리지 컨트롤러(110)에 의해서 레퍼런스 패턴과 비교된다. 스토리지 컨트롤러(110)는 비교 결과를 이용하여 최적의 쓰기 타이밍 오프셋(WT_Offset)을 결정할 수 있다.
이상의 절차들을 통해서 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 쓰기 트레이닝을 완료할 수 있다. 여기서, 하나의 칩에 대응하는 불휘발성 메모리 장치(NVM)의 쓰기 트레이닝을 위해서 1회의 쓰기 명령어 시퀀스 및 1회의 읽기 명령어 시퀀스가 사용될 수 있다. 따라서, 쓰기 트레이닝을 위한 명령어 시퀀스의 길이를 줄일 수 있고, 쓰기 트레이닝 동작시 발생하는 AC 타이밍의 길이도 최소화할 수 있다.
도 13은 도 11에 도시된 실시 예의 쓰기 트레이닝 동작시 발생하는 명령어 시퀀스와 데이터 신호(DQ)를 예시적으로 보여주는 타이밍도이다. 도 13을 참조하면, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 1회의 회의 쓰기 명령어 시퀀스 및 1회의 읽기 명령어 시퀀스를 제공하여 쓰기 트레이닝을 수행할 수 있다.
쓰기 트레이닝을 위한 불휘발성 메모리 장치(NVM)가 선택되면, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 칩 인에이블 신호(/CE)를 로우 레벨로 활성화할 것이다. 이어서, 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)의 데이터 라인(DQ Line)으로 쓰기 명령어(Write_CMD) 및 어드레스(ADD)를 전달한다. 도시되지는 않았지만, 쓰기 명령어(Write_CMD)는 어드레스(ADD) 후미에 제공되는 컨펌 코드(Confirm code)를 더 포함할 수 있음은 이 분야의 기술에 익숙한 자들에게는 잘 이해될 것이다.
쓰기 명령어 시퀀스가 선택된 불휘발성 메모리 장치(NVM)에 전달되면, 불휘발성 메모리 장치(NVM)는 내부적으로 쓰기 명령어(Write_CMD)를 인식한다. 그러면, 불휘발성 메모리 장치(NVM)는 쓰기 트레이닝 패턴이 연속적으로 입력됨을 인식하게 될 것이다.
쓰기 명령어 시퀀스에 후속하여, 스토리지 컨트롤러(110)는 초기화된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 트레이닝 패턴을 제 1 쓰기 데이터(Din_1)로 전달한다. 이때, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)를 토글링하여 불휘발성 메모리 장치(NVM)를 제어할 수 있다.
제 1 쓰기 데이터(Din_1)가 입력이 완료되면, 스토리지 컨트롤러(110)는 칩 인에이블 신호(/CE)를 하이 레벨로 천이시켜 칩 선택을 일시적으로 해제할 수 있다. 스토리지 컨트롤러(110)는 칩 인에이블 신호(/CE)가 비활성화된 구간(tOC)에서 불휘발성 메모리 장치(NVM)로 데이터를 전송하기 위한 쓰기 타이밍 오프셋(WT_Offset)을 조정할 수 있다.
쓰기 타이밍 오프셋(WT_Offset)의 조정이 완료되면, 스토리지 컨트롤러(110)는 조정된 쓰기 타이밍 오프셋(WT_Offset) 조건하에서 트레이닝 패턴을 제 2 쓰기 데이터(Din_2)로서 불휘발성 메모리 장치(MVN)에 전달한다.
상술한 방식으로 모든 쓰기 타이밍 오프셋에 대응하는 트레이닝 패턴의 쓰기가 완료되면, 입력된 트레이닝 패턴들을 읽기 위한 읽기 명령어 시퀀스(명령어 및 어드레스)가 입력된다. 스토리지 컨트롤러(110)는 선택된 불휘발성 메모리 장치(NVM)에 읽기 명령어(Read_CMD) 및 어드레스(ADD)를 전달한다. 도시되지는 않았지만, 읽기 명령어(Read_CMD)는 어드레스(ADD) 후미에 제공되는 컨펌 코드(Confirm code)를 더 포함할 수 있음은 이 분야의 기술에 익숙한 자들에게는 잘 이해될 것이다.
쓰기 명령어 시퀀스가 선택된 불휘발성 메모리 장치(NVM)에 전달되면, 불휘발성 메모리 장치(NVM)는 내부적으로 쓰기 트레이닝을 위한 읽기 명령어(Read_CMD)임을 인식할 수 있다. 그러면, 불휘발성 메모리 장치(NVM)는 스토리지 컨트롤러(110)의 제어에 따라 이전에 입력받은 트레이닝 패턴들을 연속적으로 출력하게 된다.
불휘발성 메모리 장치(NVM)는 입력된 모든 트레이닝 패턴들을 다시 스토리지 컨트롤러(110)에 출력 데이터(Dout_1, Dout_2, …, Dout_N)로 제공한다. 이때, 스토리지 컨트롤러(110)는 읽기 인에이블 신호(/RE)를 토글링하는 방식으로 불휘발성 메모리 장치(NVM)를 제어할 수 있다. 더불어, 출력 데이터(Dout_1, Dout_2, …, Dout_N)들 각각의 사이에는 칩 인에이블 신호(/CE)가 비활성화될 수도 있다.
상술한 방식으로 스토리지 컨트롤러(110)는 복수의 쓰기 타이밍 오프셋 조정 동작과 조정된 쓰기 타이밍 오프셋 조건하에서 불휘발성 메모리 장치(NVM)에 데이터를 기입하고 독출한다. 하지만, 트레이닝 패턴을 불휘발성 메모리 장치(NVM)에 복수회 기입하고 독출하기 위해 사용되는 명령어 시퀀스는 2회만 사용된다. 따라서, 본 발명의 스토리지 장치(100)에 따르면, 쓰기 트레이닝을 위한 명령어 시퀀스의 입력 횟수가 최소화될 수 있고, 그에 따르는 AC 타이밍의 길이도 줄일 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 스토리지 컨트롤러 및 불휘발성 메모리 장치를 포함하는 스토리지 장치의 데이터 트레이닝 방법에 있어서:
    상기 불휘발성 메모리 장치에 읽기 트레이닝 명령어를 전달하는 단계;
    상기 읽기 트레이닝 명령어에 응답하여 상기 불휘발성 메모리 장치로부터 출력되는 제 1 트레이닝 패턴을 제 1 읽기 타이밍 오프셋 조건에서 수신하는 단계;
    추가적인 명령어 없이 상기 읽기 트레이닝 명령어에 응답하여 상기 불휘발성 메모리 장치로부터 출력되는 제 2 트레이닝 패턴을 제 2 읽기 타이밍 오프셋 조건에서 수신하는 단계; 그리고
    수신된 상기 제 1 트레이닝 패턴 및 상기 제 2 트레이닝 패턴과 레퍼런스 패턴을 비교하고, 상기 비교 결과에 따라 상기 스토리지 컨트롤러의 읽기 타이밍 오프셋을 결정하는 단계를 포함하는 데이터 트레이닝 방법.
  2. 제 1 항에 있어서,
    상기 불휘발성 메모리 장치의 읽기 트레이닝 수행을 위해 상기 읽기 트레이닝 명령어는 1회 전송되는 데이터 트레이닝 방법.
  3. 제 1 항에 있어서,
    상기 불휘발성 메모리 장치는 상기 읽기 트레이닝 명령어에 응답하여 상기 제 1 트레이닝 패턴의 출력 이후에 추가적인 명령어 없이 상기 제 2 트레이닝 패턴을 출력하는 데이터 트레이닝 방법.
  4. 제 1 항에 있어서,
    상기 스토리지 컨트롤러가 상기 제 1 트레이닝 패턴을 상기 제 1 읽기 타이밍 오프셋 조건에서 수신한 후에, 상기 불휘발성 메모리 장치로부터 출력되는 데이터를 수신하기 위한 샘플링 시점을 상기 제 2 읽기 타이밍 오프셋으로 변경하는 단계를 더 포함하는 데이터 트레이닝 방법.
  5. 제 1 항에 있어서,
    상기 불휘발성 메모리 장치에 상기 읽기 트레이닝 명령어가 전달된 후에, 상기 불휘발성 메모리 장치에 상기 트레이닝 패턴의 어드레스를 전달하는 단계를 더 포함하는 데이터 트레이닝 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 스토리지 컨트롤러 및 불휘발성 메모리 장치를 포함하는 스토리지 장치의 데이터 트레이닝 방법에 있어서:
    상기 불휘발성 메모리 장치에 쓰기 명령어를 입력하는 단계;
    추가적인 명령어 없이 상기 쓰기 명령어에 후속하여 복수의 서로 다른 쓰기 타이밍 오프셋 조건들로 트레이닝 패턴을 상기 불휘발성 메모리 장치에 복수회 기입하는 단계;
    상기 불휘발성 메모리 장치에 읽기 명령어를 입력하는 단계;
    추가적인 명령어 없이 상기 읽기 명령어에 응답하여 상기 불휘발성 메모리 장치로부터 출력되는 복수의 트레이닝 패턴들을 수신하는 단계; 그리고
    상기 수신된 트레이닝 패턴들을 사용하여 상기 스토리지 컨트롤러의 쓰기 타이밍 오프셋을 결정하는 단계를 포함하는 데이터 트레이닝 방법.
  10. 제 9 항에 있어서,
    상기 복수의 서로 다른 쓰기 타이밍 오프셋 조건들로 상기 트레이닝 패턴을 상기 불휘발성 메모리 장치에 복수회 기입하는 단계는:
    제 1 쓰기 타이밍 오프셋 조건에서 데이터 스트로브 신호를 사용하여 상기 트레이닝 패턴을 상기 불휘발성 메모리 장치에 입력하는 단계;
    제 2 쓰기 타이밍 오프셋 조건으로 상기 스토리지 컨트롤러의 타이밍 회로를 설정하는 단계; 그리고
    상기 데이터 스트로브 신호를 사용하여 상기 트레이닝 패턴을 상기 불휘발성 메모리 장치에 입력하는 단계를 포함하는 데이터 트레이닝 방법.
KR1020170084195A 2017-07-03 2017-07-03 스토리지 장치의 데이터 트레이닝 방법 KR102353027B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170084195A KR102353027B1 (ko) 2017-07-03 2017-07-03 스토리지 장치의 데이터 트레이닝 방법
US15/871,637 US10366022B2 (en) 2017-07-03 2018-01-15 Data training method of storage device
CN201810618463.2A CN109215701B (zh) 2017-07-03 2018-06-15 存储设备的数据训练方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170084195A KR102353027B1 (ko) 2017-07-03 2017-07-03 스토리지 장치의 데이터 트레이닝 방법

Publications (2)

Publication Number Publication Date
KR20190004398A KR20190004398A (ko) 2019-01-14
KR102353027B1 true KR102353027B1 (ko) 2022-01-20

Family

ID=64734825

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170084195A KR102353027B1 (ko) 2017-07-03 2017-07-03 스토리지 장치의 데이터 트레이닝 방법

Country Status (3)

Country Link
US (1) US10366022B2 (ko)
KR (1) KR102353027B1 (ko)
CN (1) CN109215701B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042492B2 (en) * 2017-10-24 2021-06-22 Rambus Inc. Memory module with programmable command buffer
KR102519572B1 (ko) 2018-05-11 2023-04-07 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102659892B1 (ko) * 2018-07-24 2024-04-24 삼성전자주식회사 객체 인식 장치, 이를 포함하는 전자 장치 및 객체 인식 방법
US11099778B2 (en) * 2018-08-08 2021-08-24 Micron Technology, Inc. Controller command scheduling in a memory system to increase command bus utilization
KR20200137548A (ko) 2019-05-30 2020-12-09 에스케이하이닉스 주식회사 메모리 장치 및 이의 테스트 동작 방법
KR20200126678A (ko) * 2019-04-30 2020-11-09 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20200124045A (ko) 2019-04-23 2020-11-02 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11139010B2 (en) 2018-12-11 2021-10-05 SK Hynix Inc. Memory system and operating method of the memory system
KR20200126666A (ko) 2019-04-30 2020-11-09 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11404097B2 (en) 2018-12-11 2022-08-02 SK Hynix Inc. Memory system and operating method of the memory system
FR3094829B1 (fr) * 2019-04-05 2021-03-12 St Microelectronics Rousset Procédé d’écriture de mémoire non-volatile électriquement effaçable et programmable et circuit intégré correspondant
KR20200124937A (ko) * 2019-04-25 2020-11-04 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US11294824B2 (en) * 2020-01-03 2022-04-05 Western Digital Technologies, Inc. System and method for reduced latency of read-modify-write operations
KR20220070613A (ko) * 2020-11-23 2022-05-31 삼성전자주식회사 호스트 장치, 메모리 장치의 구동 방법 및 메모리 시스템
KR20220085237A (ko) 2020-12-15 2022-06-22 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
KR20220121440A (ko) * 2021-02-25 2022-09-01 삼성전자주식회사 메모리 장치의 dq 캘리브레이션 패턴의 최적화 방법 및 이를 수행하는 컴퓨팅 시스템
US11450368B1 (en) * 2021-03-12 2022-09-20 Micron Technology, Inc. Systems and methods for adaptive write training of three dimensional memory
US20230105936A1 (en) * 2021-10-01 2023-04-06 Western Digital Technologies, Inc. Continuous nand data-transfer with dynamic tm
CN115344215A (zh) * 2022-08-29 2022-11-15 深圳市紫光同创电子有限公司 存储器训练方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008226423A (ja) 2007-03-09 2008-09-25 Hynix Semiconductor Inc ライトトレーニング機能を持つ半導体メモリ装置
US20090322770A1 (en) * 2008-06-30 2009-12-31 Hynix Semiconductor Inc. Data transfer circuit and semiconductor memory device including the same
WO2015047532A1 (en) 2013-09-27 2015-04-02 Intel Corporation Read training a memory controller

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5889728A (en) * 1998-02-10 1999-03-30 Cypress Semiconductor Corporation Write control method for memory devices
JP2002082830A (ja) * 2000-02-14 2002-03-22 Mitsubishi Electric Corp インターフェイス回路
US6898726B1 (en) * 2000-11-15 2005-05-24 Micron Technology, Inc. Memory system that sets a predetermined phase relationship between read and write clock signals at a bus midpoint for a plurality of spaced device locations
US6966009B1 (en) * 2001-08-28 2005-11-15 Tellabs Operations, Inc. System and method for aligning data in a network environment
US6941433B1 (en) * 2002-05-22 2005-09-06 Juniper Networks, Inc. Systems and methods for memory read response latency detection
EP1632825B1 (en) * 2004-09-03 2008-10-29 Derek Ward Improvements in or relating to programmable logic controller and related electronic devices
KR100618870B1 (ko) * 2004-10-23 2006-08-31 삼성전자주식회사 데이터 트레이닝 방법
US7415569B2 (en) * 2006-03-22 2008-08-19 Infineon Technologies Ag Memory including a write training block
US8504788B2 (en) * 2006-12-20 2013-08-06 Rambus Inc. Memory controller, system and method for read signal timing calibration
KR100891301B1 (ko) * 2007-09-03 2009-04-06 주식회사 하이닉스반도체 고속으로 데이터 송신할 수 있는 반도체 메모리 장치
KR100903385B1 (ko) * 2007-11-02 2009-06-23 주식회사 하이닉스반도체 고속으로 데이터 송신할 수 있는 반도체 메모리 장치
EP2232493B1 (en) * 2007-12-21 2018-05-09 Rambus Inc. Method and apparatus for calibrating write timing in a memory system
TW201013686A (en) 2008-09-26 2010-04-01 Asustek Comp Inc Method of detecting memory training result applied to a computer system
KR20100050881A (ko) 2008-11-06 2010-05-14 주식회사 하이닉스반도체 반도체 메모리 장치
US8819474B2 (en) 2009-04-03 2014-08-26 Intel Corporation Active training of memory command timing
KR101006088B1 (ko) * 2009-06-04 2011-01-06 주식회사 하이닉스반도체 데이터 전달의 신뢰성을 보장하기 위한 반도체 메모리 장치 및 이를 포함하는 반도체 시스템
TWI412036B (zh) 2009-07-22 2013-10-11 Silicon Motion Inc 資料讀取的方法及資料儲存裝置
US8578086B2 (en) * 2009-09-25 2013-11-05 Intel Corporation Memory link initialization
US8661184B2 (en) * 2010-01-27 2014-02-25 Fusion-Io, Inc. Managing non-volatile media
US9355051B2 (en) * 2010-09-10 2016-05-31 Cypress Semiconductor Corporation Apparatus, method, and manufacture for using a read preamble to optimize data capture
US8488729B1 (en) * 2010-09-10 2013-07-16 Altera Corporation Deskew across high speed data lanes
KR101791456B1 (ko) * 2010-10-11 2017-11-21 삼성전자주식회사 라이트 트레이닝 방법 및 이를 수행하는 반도체 장치
US9412428B2 (en) * 2011-04-22 2016-08-09 Rambus Inc. Memory components and controllers that calibrate multiphase synchronous timing references
US8880831B2 (en) * 2011-05-12 2014-11-04 Advanced Micro Devices, Inc. Method and apparatus to reduce memory read latency
WO2013186596A1 (en) * 2012-06-15 2013-12-19 Freescale Semiconductor, Inc. Memory controller, computing device with a memory controller, and method for calibrating data transfer of a memory system
US8867595B1 (en) * 2012-06-25 2014-10-21 Rambus Inc. Reference voltage generation and calibration for single-ended signaling
US9515204B2 (en) * 2012-08-07 2016-12-06 Rambus Inc. Synchronous wired-or ACK status for memory with variable write latency
US9443602B2 (en) * 2013-08-23 2016-09-13 Kabushiki Kaisha Toshiba Storage device and data latch timing adjustment method
US9287003B2 (en) * 2013-12-06 2016-03-15 Rambus Inc. Multi-cycle write leveling
US9811273B1 (en) * 2014-12-23 2017-11-07 Cadence Design Systems, Inc. System and method for reliable high-speed data transfer in multiple data rate nonvolatile memory
US9251906B1 (en) * 2015-05-18 2016-02-02 Freescale Semiconductor, Inc. Data strobe signal generation for flash memory
US9965438B2 (en) * 2015-12-14 2018-05-08 International Business Machines Corporation Dynamic clock lane assignment for increased performance and security
US10203875B1 (en) * 2016-06-30 2019-02-12 Cadence Design Systems, Inc. Methods and systems for implementing high bandwidth memory command address bus training

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008226423A (ja) 2007-03-09 2008-09-25 Hynix Semiconductor Inc ライトトレーニング機能を持つ半導体メモリ装置
US20090322770A1 (en) * 2008-06-30 2009-12-31 Hynix Semiconductor Inc. Data transfer circuit and semiconductor memory device including the same
WO2015047532A1 (en) 2013-09-27 2015-04-02 Intel Corporation Read training a memory controller

Also Published As

Publication number Publication date
CN109215701B (zh) 2024-03-12
US20190004984A1 (en) 2019-01-03
CN109215701A (zh) 2019-01-15
US10366022B2 (en) 2019-07-30
KR20190004398A (ko) 2019-01-14

Similar Documents

Publication Publication Date Title
KR102353027B1 (ko) 스토리지 장치의 데이터 트레이닝 방법
US10403375B2 (en) Storage device and data training method thereof
US9886378B2 (en) Nonvolatile memory system using control signals to transmit varied signals via data pins
KR101626084B1 (ko) 멀티 칩 메모리 시스템 및 그것의 데이터 전송 방법
US9601171B2 (en) Storage device including nonvolatile memory and memory controller and operating method of retiming circuit interfacing communication between nonvolatile memory and memory controller
US10795603B2 (en) Systems and methods for writing zeros to a memory array
US9524799B2 (en) Method and apparatus to tune a toggle mode interface
KR102375695B1 (ko) 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치
US9897650B2 (en) Integrated circuit and storage device including integrated circuit
US10902928B2 (en) Memory system, operation method thereof, and nonvolatile memory device
US10490238B2 (en) Serializer and memory device including the same
KR20120056113A (ko) 불휘발성 메모리 장치 및 그것의 프로그램 방법, 그리고 불휘발성 메모리 장치를 포함하는 메모리 시스템
US11763869B2 (en) Non-volatile memory device, controller and memory system
US20210208815A1 (en) Storage device and operating method thereof
KR20190132788A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20220391141A1 (en) Method of operating host device and memory device, and memory system comprising the host device and memory device
US10726889B2 (en) Semiconductor devices
US11023136B2 (en) Storage device and control method
KR20170031825A (ko) 랜덤 액세스 메모리 장치들 및 불휘발성 메모리 장치들을 포함하는 저장 장치
US11119692B2 (en) Storage device having wide input/output and method of operating the same
US11699469B2 (en) Operating method of host device and memory device and memory system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right