KR20220085237A - 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법 - Google Patents

스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법 Download PDF

Info

Publication number
KR20220085237A
KR20220085237A KR1020200175139A KR20200175139A KR20220085237A KR 20220085237 A KR20220085237 A KR 20220085237A KR 1020200175139 A KR1020200175139 A KR 1020200175139A KR 20200175139 A KR20200175139 A KR 20200175139A KR 20220085237 A KR20220085237 A KR 20220085237A
Authority
KR
South Korea
Prior art keywords
data
training
storage controller
left edge
nonvolatile memory
Prior art date
Application number
KR1020200175139A
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 KR1020200175139A priority Critical patent/KR20220085237A/ko
Priority to US17/523,369 priority patent/US11756599B2/en
Priority to CN202111464545.4A priority patent/CN114637460A/zh
Publication of KR20220085237A publication Critical patent/KR20220085237A/ko
Priority to US18/356,274 priority patent/US20230368825A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1673Details of memory controller using buffers
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/022Detection or location of defective auxiliary circuits, e.g. defective refresh counters in I/O circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/023Detection or location of defective auxiliary circuits, e.g. defective refresh counters in clock generator or timing circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • 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/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • G11C7/1012Data reordering during input/output, e.g. crossbars, layers of multiplexers, shifting or rotating
    • 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/1069I/O lines read out arrangements
    • 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/1093Input 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/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1096Write circuits, e.g. I/O line write drivers
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/18Address timing or clocking circuits; Address control signal generation or management, e.g. for row address strobe [RAS] or column address strobe [CAS] signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2207/00Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
    • G11C2207/22Control and timing of internal memory operations
    • G11C2207/2254Calibration
    • 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/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/46Test trigger logic

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System (AREA)
  • Dram (AREA)

Abstract

본 발명의 실시 예에 따른, 스토리지 컨트롤러 및 불휘발성 메모리 장치를 포함하는 스토리지 장치의 동작 방법에 있어서, 제1 부트-업을 수행하는 단계, 단위 구간 전체에 대하여 검출 스텝을 반복 수행하는 복수의 데이터 신호들의 제1 트레이닝을 수행하는 단계, 제1 트레이닝의 결과를 기반으로 생성된 오프셋 정보들을 저장하는 단계, 제1 트레이닝 결과를 기반으로 정상 동작을 수행하는 단계, 제2 부트-업을 수행하는 단계, 제1 트레이닝에서 생성된 오프셋 정보들을 기반으로, 단위 구간 중 좌측 에지 구간 및 우측 에지 구간에 대하여 검출 스텝을 반복 수행하는 복수의 데이터 신호들의 제2 트레이닝을 수행하는 단계, 및 제2 트레이닝 결과를 기반으로 정상 동작을 수행하는 단계를 포함하고, 검출 스텝은, 스토리지 컨트롤러에 의해, 불휘발성 메모리 장치로 복수의 데이터 신호들 통해 읽기 커맨드 및 어드레스를 전송하는 단계, 스토리지 컨트롤러에 의해, 복수의 데이터 신호들 및 복수의 데이터 신호들과 동기된 데이터 스트로브 신호를 통해 불휘발성 메모리 장치로부터 패턴 데이터를 수신하는 단계, 및 스토리지 컨트롤러에 의해, 패턴 데이터가 미리 정해진 기준 데이터와 일치 하지 않는 경우, 데이터 스트로브 신호의 지연량을 조정하는 단계를 포함한다.

Description

스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법{STORAGE CONTROLLER, STORAGE DEVICE, AND OPERATION METHOD OF STORAGE DEVICE}
본 발명은 반도체 메모리에 관한 것으로, 좀 더 상세하게는 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법에 관한 것이다.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
스토리지 컨트롤러와 불휘발성 메모리 장치는 데이터 신호들을 통해 서로 통신한다. 스토리지 컨트롤러와 불휘발성 메모리 장치 사이에서 데이터 신호들 통한 데이터 전송의 신뢰성을 높이기 위하여, 트레이닝이 수행될 수 있다. 트레이닝은 데이터 신호들을 통해 병렬로 전송되는 데이터들의 전송 또는 도달 타이밍들을 정렬하는 것을 포함한다.
본 발명은 향상된 트레이닝 속도를 갖는 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른, 스토리지 컨트롤러 및 불휘발성 메모리 장치를 포함하는 스토리지 장치의 동작 방법에 있어서, 제1 부트-업을 수행하는 단계, 단위 구간 전체에 대하여 검출 스텝을 반복 수행하는 복수의 데이터 신호들의 제1 트레이닝을 수행하는 단계, 제1 트레이닝의 결과를 기반으로 생성된 오프셋 정보들을 저장하는 단계, 제1 트레이닝 결과를 기반으로 정상 동작을 수행하는 단계, 제2 부트-업을 수행하는 단계, 제1 트레이닝에서 생성된 오프셋 정보들을 기반으로, 단위 구간 중 좌측 에지 구간 및 우측 에지 구간에 대하여 검출 스텝을 반복 수행하는 복수의 데이터 신호들의 제2 트레이닝을 수행하는 단계, 및 제2 트레이닝 결과를 기반으로 정상 동작을 수행하는 단계를 포함하고, 검출 스텝은, 스토리지 컨트롤러에 의해, 불휘발성 메모리 장치로 복수의 데이터 신호들 통해 읽기 커맨드 및 어드레스를 전송하는 단계, 스토리지 컨트롤러에 의해, 복수의 데이터 신호들 및 복수의 데이터 신호들과 동기된 데이터 스트로브 신호를 통해 불휘발성 메모리 장치로부터 패턴 데이터를 수신하는 단계, 및 스토리지 컨트롤러에 의해, 패턴 데이터가 미리 정해진 기준 데이터와 일치 하지 않는 경우, 데이터 스트로브 신호의 지연량을 조정하는 단계를 포함한다.
본 발명의 실시 예에 따른 스토리지 장치는 불휘발성 메모리 장치, 및 복수의 데이터 신호들을 통해 불휘발성 메모리 장치에 연결되고, 제1 부트-업 동작 수행 시, 불휘발성 메모리 장치와 복수의 데이터 신호들의 제1 트레이닝을 수행하고, 제1 트레이닝 결과를 기반으로 오프셋 정보들을 생성하고, 제2 부트-업 동작 수행 시, 오프셋 정보들을 기반으로 단위 구간 중 좌측 에지 구간 및 우측 에지 구간에 대하여 불휘발성 메모리 장치와 복수의 데이터 신호들의 제2 트레이닝을 수행하는 스토리지 컨트롤러를 포함하고, 제1 부트-업 동작은 첫 번째 부트-업 동작을 가리키고, 제2 부트-업 동작은 첫 번째 부트-업 동작 이외의 부트-업 동작을 가리킨다.
본 발명의 실시 예에 따른 스토리지 컨트롤러는 복수의 데이터 신호들을 수신하는 복수의 데이터 입출력 패드들, 데이터 스트로브 신호를 수신하는 데이터 스르토브 패드, 및 제1 부트-업의 경우, 제1 시간 동안 복수의 데이터 신호들의 제1 트레이닝을 수행하고, 제1 트레이닝 결과를 기반으로 오프셋 정보들을 생성하고, 제2 부트-업의 경우, 제2 시간 동안 오프셋 정보들을 기반으로 단위 구간 중 좌측 에지 구간 및 우측 에지 구간에 대하여 복수의 데이터 신호들의 제2 트레이닝을 수행하는 트레이닝 회로를 포함하고, 제1 부트-업은 첫 번째 부트-업을 가리키고, 제2 부트-업은 첫 번째 부트-업 이외의 부트-업을 가리키고, 제2 시간은 제1 시간 보다 짧다.
본 발명의 실시 예들에 따르면, 제1 부트-업에서 불휘발성 메모리 장치에 대해 풀(full) 트레이닝이 수행되고, 이후의 제2 부트-업에서 제1 부트-업의 오프셋 정보들을 이용한 부분 또는 빠른(fast) 트레이닝이 수행된다. 따라서, 향상된 트레이닝 속도를 갖는 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 저장 장치를 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다.
도 3은 도 1의 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다.
도 4는 도 1의 스토리지 장치의 동작을 보여주는 순서도이다.
도 5a는 도 1의 불휘발성 메모리 장치가 데이터 비트들을 출력하는 예를 보여준다.
도 5b는 도 5a의 데이터 비트들이 도 1의 스토리지 컨트롤러에서 수신된 예를 보여준다.
도 6은 도 2의 스토리지 컨트롤러의 NVM 인터페이스 회로를 예시적으로 보여주는 블록도이다.
도 7은 도 6의 NVM 인터페이스 회로를 좀더 구체적으로 보여주는 블록도이다.
도 8a 및 도 8b는 오프셋 정보들을 예시적으로 보여주는 도면들이다.
도 9는 도 1의 스토리지 컨트롤러의 동작을 예시적으로 보여주는 순서도이다.
도 10은 본 발명의 실시 예에 따른 제2 트레이닝 동작을 보여주는 순서도이다.
도 11은 제1 트레이닝 방법을 예시적으로 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 제2 트레이닝을 예시적으로 보여주는 도면들이다.
도 13은 도 1의 스토리지 컨트롤러의 동작을 예시적으로 보여주는 순서도이다.
도 14는 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 SSD 시스템을 보여주는 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
여기서, 본 발명에서 사용되는 용어 '데이터 트레이닝(Data Training)'은 데이터 신호(DQ)의 윈도우(window)의 센터(Center)를 탐색하고 조정하는 동작을 가리킨다. 그리고, '좌측 에지(LE; Left Edge)'는 데이터 신호(DQ)의 윈도우를 구성하는 단위 구간(UI; Unit Interval)의 좌측(또는, 시간적으로 먼저)의 닫힌 부분을 가리킨다. '우측 에지(RE; Right Edge)'는 데이터 신호(DQ)의 단위 구간(UI)의 우측(또는, 시간적으로 나중)의 닫힌 부분을 가리킨다. 더불어, 단위 구간(UI)이란 표현은 데이터 신호의 윈도우(Window)라는 용어와 병행하여 사용될 수 있다.
도 1은 본 발명의 실시 예에 따른 저장 장치를 보여주는 블록도이다. 도 1을 참조하면, 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 불휘발성 메모리 장치(120)를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 장치(100)는 SSD, 메모리 카드 등과 같이, 컴퓨팅 장치에서 사용되는 대용량 저장 매체일 수 있다.
스토리지 컨트롤러(110)는 외부 장치(예를 들어, 호스트, CPU(Central Processing Unit), AP(Application Processor) 등)의 요청 또는 제어에 따라 불휘발성 메모리 장치(120)를 제어하도록 구성될 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)를 제어하기 위하여, 제어 신호 라인들(CTRL) 및 데이터 신호들(DQ), 및 데이터 스트로브 신호(DQS)를 통해 다양한 신호들을 주고받을 수 있다.
예시적으로, 제어 신호(CTRL), 데이터 스트로브 신호(DQS), 및 복수의 데이터 신호들(DQ)은 각각 서로 다른 신호 라인 또는 서로 다른 신호 핀을 통해 불휘발성 메모리 장치(120)로 제공될 수 있다. 제어 신호(CTRL) 및 데이터 스트로브 신호(DQS)는 복수의 데이터 신호들(DQ)을 통해 불휘발성 메모리 장치(120)로 제공되는 신호들(예를 들어, 커맨드(CMD), 어드레스(ADDR), 또는 데이터(DATA))을 구분하기 위한 신호들일 수 있다. 예시적으로, 데이터 신호(DQ)는 데이터 핀(DQ pin)을 통해 송수신되는 신호를 가리키고, 데이터 스트로브 신호(DQS)는 데이터 스트로브 핀(DQS pin)을 통해 송수신되는 신호를 가리킨다.
불휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)로부터의 다양한 신호에 응답하여, 스토리지 컨트롤러(110)로부터 수신된 데이터(DATA)를 저장하거나 또는 저장된 데이터(DATA)를 스토리지 컨트롤러(110)로 전송할 수 있다. 예를 들어, 불휘발성 메모리 장치(120)는 제어 신호들(CTRL)을 기반으로, 복수의 데이터 신호들(DQ)을 통해 제공되는 신호가 커맨드(CMD)인지, 어드레스(ADDR)인지, 또는 데이터(DATA)인지 구분할 수 있다. 예시적인 실시 예에서, 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 읽기 인에이블 신호(RE/), 또는 쓰기 인에이블 신호(WE/) 등과 같은 다양한 신호들이 제어 신호 라인들(CTRL)을 통해 불휘발성 메모리 장치(120)로 제공될 수 있다.
불휘발성 메모리 장치(120)는 데이터 스트로브 신호(DQS)를 기반으로, 복수의 데이터 신호들(DQ)을 통해 제공되는 데이터(DATA)를 식별(또는 캡쳐)하도록 구성될 수 있다. 불휘발성 메모리 장치(120)는 수신된 커맨드(CMD) 및 어드레스(ADDR)를 기반으로, 식별된 데이터(DATA)를 저장할 수 있다.
예시적으로, 불휘발성 메모리 장치(120)는 낸드 플래시 메모리를 포함할 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 장치(120)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM), ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 휘발성 또는 불휘발성 메모리들 중 적어도 하나를 포함할 수 있다.
스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)를 제어하도록 구성될 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 쓰기, 읽기 또는 소거 동작을 수행하도록 불휘발성 메모리 장치(120)를 제어할 수 있다. 또한, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)와 트레이닝을 수행할 수 있다.
스토리지 컨트롤러(110)는 스토리지 장치(100)의 부트-업(boot-up) 또는 초기화와 같은 특정 상황에서 불휘발성 메모리 장치(120)와 트레이닝을 수행할 수 있다. 예를 들어, 트레이닝은 스토리지 장치(100)에 전원이 공급된 후에 또는 스토리지 장치(100)가 절전 모드로부터 복원된 후에 수행될 수 있다. 트레이닝은 스토리지 컨트롤러(110)가 불휘발성 메모리 장치(120)를 통상적으로 제어(예를 들어, 쓰기, 읽기 또는 소거를 수행하도록 제어)하기 전에 수행될 수 있다.
트레이닝을 통해서 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)와의 데이터 교환의 신뢰성을 높일 수 있다. 예를 들면, 스토리지 컨트롤러(110)는 트레이닝 패턴(Training Pattern)을 다양한 조건에서 불휘발성 메모리 장치(120)에 기입하거나 독출하여 데이터 신호(DQ) 윈도우의 센터(Center)를 검출할 수 있다. 스토리지 컨트롤러(110)는 검출된 데이터 신호(DQ) 윈도우의 센터를 정렬하기 위하여 지연 고정 루프(DLL)나 위상 고정 루프(PLL) 등의 오프셋 값(Offset value)을 조정할 수 있다.
본 발명에 스토리지 컨트롤러(110)는 트레이닝 회로(111)를 포함할 수 있다. 트레이닝 회로(111)는 불휘발성 메모리 장치(120)와 트레이닝을 수행할 수 있다. 트레이닝 회로(111)는 트레이닝이 필요한 정보들 또는 트레이닝에 의해 획득되는 정보들(예를 들어, 후술되는 오프셋 정보들)을 메모리에 저장할 수 있다. 트레이닝 회로(111)는 메모리를 이용하여 불휘발성 메모리 장치(120)와 트레이닝을 수행할 수 있다.
예시적인 실시 예에서, 트레이닝 회로(111)는 처음 부팅 동작 수행 시 최초 트레이닝(또는, 제1 트레이닝) 동작을 수행할 수 있다. 트레이닝 회로(111)는 제1 트레이닝 동작을 통해 오프셋 정보들을 생성하고, 이를 메모리에 저장할 수 있다. 트레이닝 회로(111)는 처음 부팅 이외에 부팅 동작 수행 시 빠른(fast) 트레이닝(또는, 제2 트레이닝) 동작을 수행할 수 있다.
예를 들어, 제1 트레이닝 동작은 오프셋 정보들을 사용하지 않고, 단위 구간(UI) 전체에 대하여 검출 동작을 수행하는 트레이닝 동작을 가리킬 수 있다. 제2 트레이닝 동작은 제1 트레이닝 동작에서 생성된 오프셋 정보들을 기반으로 단위 구간(UI) 일부에 대하여 검출 동작 또는 검출 스텝을 수행하는 트레이닝 동작을 가리킬 수 있다.
트레이닝 회로(111)는 오프셋 정보들을 기반으로 제2 트레이닝 동작을 수행하여 부트-업 시간을 감소시킬 수 있다. 본 발명에 따른 스토리지 컨트롤러(110)의 동작은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
도 2는 도 1의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(110)는 CPU(112)(central processing unit), 호스트 인터페이스 회로(115), NVM 인터페이스 회로(119)를 포함할 수 있다. 또한, 스토리지 컨트롤러(110)는 플래시 변환 레이어(113)(Flash Translation Layer(FTL)), 패킷 매니저(114), 버퍼 메모리(116), ECC(117)(Error Correction Code) 엔진 및 AES(118)(Advanced Encryption Standard) 엔진을 더 포함할 수 있다. 스토리지 컨트롤러(110)는 플래시 변환 레이어(113)(FTL)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, CPU(112)가 플래시 변환 레이어를 실행하는 것에 의해 불휘발성 메모리 장치에 대한 데이터 기록 및 독출 동작이 제어될 수 있다.
예시적인 실시 예에서, 호스트 인터페이스 회로(115)는 DDR(Double Data Rate), LPDDR(Low-Power DDR), USB(Universal Serial Bus), MMC(multimedia card), PCI(peripheral component interconnection), PCI-E(PCI-express), ATA(Advanced Technology Attachment), SATA(Serial-ATA), PATA(Parallel-ATA), SCSI(small computer small interface), ESDI(enhanced small disk interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface), NVM-e(Nonvolatile Memory-express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다.
호스트 인터페이스 회로(115)는 호스트(미도시)와 패킷(packet)을 송수신할 수 있다. 호스트로부터 호스트 인터페이스 회로(115)로 전송되는 패킷은 커맨드(command) 혹은 불휘발성 메모리 장치(120)에 기록될 데이터 등을 포함할 수 있으며, 호스트 인터페이스 회로(115)로부터 호스트로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 불휘발성 메모리 장치(120)로부터 독출된 데이터 등을 포함할 수 있다. NVM 인터페이스 회로(119)는 불휘발성 메모리 장치(120)에 기록될 데이터를 불휘발성 메모리 장치(120)로 송신하거나, 불휘발성 메모리 장치(120)로부터 독출된 데이터를 수신할 수 있다. 이러한 NVM 인터페이스 회로(119)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
FTL(113)은 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트로부터 수신한 논리 어드레스(logical address)를, 불휘발성 메모리 장치(120) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 불휘발성 메모리 장치(120) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 불휘발성 메모리 장치(120) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(114)는 호스트와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 버퍼 메모리(116)는 불휘발성 메모리 장치(120)에 기록될 데이터 혹은 불휘발성 메모리 장치(120)로부터 독출될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(116)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(110)의 외부에 배치되어도 무방하다.
ECC 엔진(117)은 불휘발성 메모리 장치(120)로부터 독출되는 독출 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(117)은 불휘발성 메모리 장치(120)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 기입 데이터와 함께 불휘발성 메모리 장치(120) 내에 저장될 수 있다. 불휘발성 메모리 장치(120)로부터의 데이터 독출 시, ECC 엔진(117)은 독출 데이터와 함께 불휘발성 메모리 장치(120)로부터 독출되는 패리티 비트들을 이용하여 독출 데이터의 에러를 정정하고, 에러가 정정된 독출 데이터를 출력할 수 있다.
AES 엔진(118)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)를 이용하여 수행할 수 있다.
예시적인 실시 예에서, NVM 인터페이스 회로(119)는 트레이닝 회로(111)를 포함할 수 있다. 트레이닝 회로(111)는 불휘발성 메모리 장치(120)와 트레이닝을 수행할 수 있다. 트레이닝 회로(111)는 트레이닝이 필요한 정보들 또는 트레이닝에 의해 획득되는 정보들(예를 들어, 후술되는 오프셋 정보들)을 메모리에 저장할 수 있다. 예시적으로 메모리는 Serial NOR로 구현될 수 있으나, 실시 예들이 이에 제한되는 것은 아니다. 오프셋 정보들은 EFuse, EEPROM, MASKROM, Serial PROM, Flash Memory, OTP(One Time Programming) 메모리, Serial NOR에 저장될 수 있다.
본 발명의 실시 예에 따른 트레이닝 회로(111)는 제2 트레이닝 동작 수행 시, 불휘발성 메모리 장치(120)로의 접근 횟수를 최소화할 수 있다. 쓰기 트레이닝을 위해서 트레이닝 회로(111)는 불휘발성 메모리 장치(120)에 패턴 데이터를 기입하고, 기입된 패턴 데이터를 독출할 수 있다. 읽기 트레이닝을 위해서 트레이닝 회로(111)는 불휘발성 메모리 장치(120)에 저장된 패턴 데이터를 독출할 수 있다. 트레이닝 회로(111)는 독출된 패턴 데이터를 미리 결정된 기준 데이터와 비교하고, 그 결과에 따라 윈도우의 센터 위치를 판별할 수 있다.
즉, 트레이닝 회로(111)는 비교 결과를 기반으로 데이터 신호(DQ) 윈도우의 좌측 에지(LE) 및 우측 에지(RE)를 검출할 수 있다. 트레이닝 회로(111)는 좌측 에지(LE) 및 우측 에지(RE)를 기반으로 데이터 신호(DQ) 윈도우의 센터를 판별할 수 있다. 검출 스텝(또는 검출 동작)은 트레이닝을 위한 불휘발성 메모리 장치(120)로의 접근 동작 및 독출된 패턴 데이터와 기준 데이터를 비교하는 동작을 결합한 동작을 가리킬 수 있다.
일반적으로 스토리지 컨트롤러(110)는 트레이닝을 위해서 적어도 하나의 단위 구간(UI) 동안 수많은 검출 스텝을 수행할 수 있다. 예를 들면, 단위 구간(UI)의 길이가 1000ps이고, 하나의 검출 스텝에 소요되는 시간이 10ps 경우, 적어도 하나의 단위 구간(1 UI) 또는 데이터 신호의 윈도우의 센터(Center)를 검출하기 위해서는 적어도 110회의 검출 스텝이 수행될 수 있다. 이러한 트레이닝 방식을 적용하면, 많은 수의 불휘발성 메모리 장치들을 트레이닝 해야 하는 상황에서는 스토리지 장치(100)의 오픈 타이밍(Open timing)이 증가할 수밖에 없다.
스토리지 컨트롤러(110)는 제1 트레이닝 결과 생성된 오프셋 정보들을 사용하여 데이터 신호(DQ)의 센터(Center) 또는 에지(Edge)를 검출하기 위한 검출 스텝의 수를 줄일 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 좌측 에지 구간 및 우측 에지 구간에 대해서만 검출 스텝들을 수행할 수 있다. 스토리지 컨트롤러(110)는 단위 구간 중 좌측 에지 구간 및 우측 에지 구간을 제외한 구간에 대해서 검출 스텝들을 생략할 수 있다.
본 발명의 실시 예에 따른 스토리지 컨트롤러는 상대적으로 많은 수의 검출 스텝들을 생략 또는 스킵할 수 있다. 따라서, 복수의 불휘발성 메모리 장치들을 포함하는 스토리지 장치(100)의 부팅 시 트레이닝에 소요되는 시간을 최소화할 수 있다. 따라서, 본 발명의 스토리지 장치(100)는 부팅 시 오픈 타이밍(Open timing)이 짧아져 신속하게 접근될 수 있다.
도 3은 도 1의 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다. 도 1 및 도 3을 참조하면, 불휘발성 메모리 장치(120)는 메모리 셀 어레이(121), 어드레스 디코더(122), 페이지 버퍼 회로(123), 입출력 회로(124), 및 제어 로직 회로(125)를 포함할 수 있다.
예시적으로, 도면의 간결성 및 설명의 편의를 위하여, 커맨드(CMD), 어드레스(ADDR), 데이터(DT) 등이 별도로 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 커맨드(CMD), 어드레스(ADDR), 데이터(DATA) 등은 데이터 신호들(DQ)을 통해 스토리지 컨트롤러(110)로부터 수신될 수 있고, 제어 신호들(CTRL)(예를 들어, CLE, ALE, RE/, WE/ 등)을 기반으로 서로 구분될 수 있다.
메모리 셀 어레이(121)는 복수의 메모리 블록들을 포함할 수 있다. 복수의 메모리 블록들은 복수의 셀 스트링들을 포함할 수 있고, 복수의 셀 스트링들 각각은 비트 라인들(BL) 각각과 연결되고, 직렬 연결된 복수의 셀 트랜지스터들을 포함할 수 있다. 복수의 셀 트랜지스터들 각각은 워드라인들(WL), 스트링 선택 라인들(SSL), 또는 접지 선택 라인들(GSL)과 연결될 수 있다.
어드레스 디코더(122)는 스트링 선택 라인들(SSL), 워드라인들(WL), 및 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(121)와 연결될 수 있다. 어드레스 디코더(122)는 스토리지 컨트롤러(110)로부터 어드레스(ADDR)를 수신할 수 있다. 어드레스 디코더(122)는 어드레스(ADDR)를 디코딩하고, 디코딩된 결과를 기반으로 스트링 선택 라인들(SSL), 워드라인들(WL), 및 접지 선택 라인들(GSL)의 전압을 제어할 수 있다.
페이지 버퍼 회로(123)는 비트 라인들(BL)을 통해 메모리 셀 어레이(121)와 연결된다. 페이지 버퍼 회로(123)는 메모리 셀 어레이(121)로부터 읽은 데이터 또는 메모리 셀 어레이(121)에 저장될 데이터를 임시 저장하도록 구성될 수 있다.
입출력 회로(124)는 스토리지 컨트롤러(110)로부터 수신된 데이터(DATA)를 페이지 버퍼 회로(123)로 제공할 수 있다. 입출력 회로(124)는 페이지 버퍼 회로(123)로부터 수신된 데이터(DATA)를 스토리지 컨트롤러(110)로 제공할 수 있다.
제어 로직 회로(125)는 스토리지 컨트롤러(110)로부터의 커맨드(CMD)를 수신하고, 수신된 커맨드(CMD)에 대응하는 동작이 수행되도록 불휘발성 메모리 장치(120)의 다양한 구성 요소들을 제어할 수 있다.
도 4는 도 1의 스토리지 장치의 동작을 보여주는 순서도이다. 도 4를 참조하여, 스토리지 장치(100)의 초기화 동작 또는 부트-업 동작이 설명된다. 도 1 및 도 4를 참조하면, S11 단계 스토리지 장치(100)는 파워-업을 할 수 있다. S12 단계에서, 스토리지 장치(100)는 초기화 동작을 수행할 수 있다. 스토리지 컨트롤러(110) 및 불휘발성 메모리 장치(120)는 미리 정해진 방식에 따라 초기화를 수행할 수 있다. 초기화 도중에, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로 전원 전압을 제공하고, 다양한 초기 설정 동작을 수행하고, 불휘발성 메모리 장치(120)로부터 필요한 정보를 읽거나 또는 설정할 수 있다.
초기화 동작은 ZQ 캘리브레이션 동작을 포함할 수 있다. 스토리지 장치(100)는 ZQ 캘리브레이션 동작을 수행할 수 있다. ZQ 캘리브레이션 동작은 높은 데이터 무결성(Data Integrity)을 제공하도록 데이터 신호(DQ) 또는 다른 신호 라인과 연결된 출력 드라이버들의 강도(strength)를 조정하는 동작 또는 ODT(On-die Termination) 값을 설정하는 동작을 가리킬 수 있다.
S13 단계에서, 스토리지 장치(100)는 DCC(Duty Correction Circuit) 트레이닝 동작(DCC training operation)을 수행할 수 있다. 불휘발성 메모리 장치(120)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에 동기되어 데이터 신호(DQ)를 통해 데이터를 출력할 수 있다. 데이터 신호(DQ)의 윈도우들은 데이터 스트로브 신호(DQS)의 로직 하이 구간 및 로직 로우 구간에 각각 대응할 수 있다. 데이터 스트로브 신호는 읽기 인에이블 신호(/RE)를 기반으로 생성되므로, 읽기 인에이블 신호(/RE)의 로직 하이 구간과 로직 로우 구간의 비율에 따라 데이터 신호(DQ)의 윈도우가 결정될 수 있다.
듀티 미스 매치가 발생될 수 있다. 즉, 읽기 인에이블 신호(/RE)의 로직 하이 구간과 로직 로우 구간이 서로 다름으로써, 데이터 신호(DQ)의 데이터 윈도우들이 달라질 수 있다. 따라서 DCC 트레이닝 동작을 수행하여, 읽기 인에이블 신호(/RE)와 같은 클럭 신호에 대한 듀티 정정을 수행하여 유효 데이터 윈도우를 확보할 수 있다.
S14 단계에서, 스토리지 장치(100)는 읽기 트레이닝 동작(Read Training operation)을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로부터 읽은 데이터의 신호 신뢰성(signal integrity) 또는 데이터-아이(data-eye)가 최적이 되도록 불휘발성 메모리 장치(120) 및 스토리지 컨트롤러(110)의 설정 값들을 조절할 수 있다. 예시적으로 읽기 트레이닝 동작은 복수의 데이터 라인들(DQ1~DQn) 각각에 대하여 독립적으로 수행될 수 있다.
S15 단계에서, 스토리지 장치(100)는 쓰기 트레이닝 동작(Write Training operation)을 수행할 수 있다. 쓰기 트레이닝 동작은 송신 측(TX side) 쓰기 트레이닝 및 수신 측(RX side) 쓰기 트레이닝을 포함할 수 있다. 송신 측 쓰게 트레이닝은 생략될 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로 데이터를 전송하고, 전송된 데이터의 신호 신뢰성 또는 데이터-아이가 최적이 되도록 스토리지 컨트롤러(110) 및 불휘발성 메모리 장치(120)의 설정 값들을 조절할 수 있다. 예시적으로, 쓰기 트레이닝 동작은 복수의 데이터 라인들(DQ1~DQn) 각각에 대하여 독립적으로 수행될 수 있다. 상술된 S11 단계 내지 S15 단계의 초기화 또는 트레이닝 동작이 수행된 이후에, S16 단계에서, 트레이닝 결과를 기반으로 스토리지 장치(100)는 정상 동작을 수행할 수 있다.
S13 단계, S14 단계, 및 S15 단계를 통해 수행되는 트레이닝들은 데이터 트레이닝(DQ Training)을 가리킬 수 있다. 이하의 도면들을 통해 설명되는 트레이닝 들은 S13 단계, S14 단계, 및 S15 단계에 적용될 수 있다.
예시적인 실시 예에서, S13 단계, S14 단계 및 S15 단계에서 수행되는 트레이닝들은 그 결과를 서로 참조할 수 있다. 예를 들어, S15 단계에서 쓰기 트레이닝 수행 시, S14 단계에서 수행된 읽기 트레이닝 결과를 기반으로 읽기 동작을 수행하여 데이터 무결성을 보장할 수 있다.
도 5a는 도 1의 불휘발성 메모리 장치가 데이터 비트들을 출력하는 예를 보여준다. 도 1 및 도 5a를 참조하면, 불휘발성 메모리 장치(120)는 읽기 커맨드에 응답하여, 데이터 신호들(DQ1~DQ8)을 통해 패턴 데이터 또는 데이터 비트들(DB, DB1~DB4)을 출력할 수 있다. 스토리지 컨트롤러(110)는 읽기 인에이블 신호(/RE)를 하이 레벨과 로우 레벨로 주기적으로 토글할 수 있다. 읽기 인에이블 신호(/RE)에 응답하여, 불휘발성 메모리 장치(120)는 데이터 스트로브 신호(DQS)를 하이 레벨과 로우 레벨로 주기적으로 토글할 수 있다.
불휘발성 메모리 장치(120)는 데이터 스트로브 신호(DQS)에 동기되어 데이터 비트들(DB)을 출력할 수 있다. 불휘발성 메모리 장치(120)는 데이터 스트로브 신호(DQS)의 상승 에지들 및 하강 에지들 각각에 동기되어 데이터 비트들(DB)을 출력할 수 있다. 데이터 비트들(DB)은 데이터 스트로브 신호(DQSD)에 정렬되며, 상호간에 정렬될 수 있다.
도 5b는 도 5a의 데이터 비트들이 도 1의 스토리지 컨트롤러에서 수신된 예를 보여준다. 예시적으로, 기생 저항, 기생 커패시터, 기생 인덕터, 온도 또는 습도의 영향 등과 같은 다양한 환경 요소들에 의해, 스토리지 컨트롤러(110)에서 수신되는 패턴 데이터인 데이터 비트들(DB)의 타이밍들은 불휘발성 메모리 장치(120)가 전송한 데이터 비트들(DB)의 타이밍들(도 5a)과 다를 수 있다.
도 1 및 도 5b를 참조하면, 제1 데이터 신호(DQ1)를 통해 전송되는 비트들(DB1_1~DB4_1)의 타이밍들은 데이터 스트로브 신호(DQS)의 에지들의 타이밍들보다 늦을(delay) 수 있다. 제2 데이터 신호(DQ2)를 통해 전송되는 비트들(DB1_2~DB4_2)의 타이밍들은 데이터 스트로브 신호(DQS)의 에지들의 타이밍들보다 앞설(leading) 수 있다. 제3 데이터 신호(DQ3)를 통해 전송되는 비트들(DB1_3~DB4_3)의 타이밍들은 데이터 스트로브 신호(DQS)의 에지들의 타이밍들과 일치할 수 있다.
제4 데이터 신호(DQ4)를 통해 전송되는 비트들(DB1_4~DB4_4)의 타이밍들은 데이터 스트로브 신호(DQS)의 에지들의 타이밍들과 늦을 수 있다. 제5 데이터 신호(DQ5)를 통해 전송되는 비트들(DB1_5~DB4_5)의 타이밍들은 데이터 스트로브 신호(DQS)의 에지들의 타이밍들보다 늦을 수 있다. 제6 데이터 신호(DQ6)를 통해 전송되는 비트들(DB1_6~DB4_6)의 타이밍들은 데이터 스트로브 신호(DQS)의 에지들의 타이밍들보다 늦을 수 있다.
제7 데이터 신호(DQ7)를 통해 전송되는 비트들(DB1_7~DB4_7)의 타이밍들은 데이터 스트로브 신호(DQS)의 에지들의 타이밍들보다 늦을 수 있다. 제8 데이터 신호(DQ8)를 통해 전송되는 비트들(DB1_8~DB4_8)의 타이밍들은 데이터 스트로브 신호(DQS)의 에지들의 타이밍들보다 앞설 수 있다. 이와 같이 복수의 데이터 신호들(DQ1~DQ8)을 통해 전송되는 데이터 비트들의 타이밍들은 서로 일치하지 않을 수 있다.
도 5a 및 도 5b에 도시된 타이밍들의 차이들을 보상하기 위하여, 스토리지 컨트롤러(110)는 데이터 비트들(DB)(또는 패턴 데이터)을 래치하는 타이밍들(또는 샘플링 시점)을 조절할 수 있다.
도 6은 도 2의 스토리지 컨트롤러의 NVM 인터페이스 회로를 예시적으로 보여주는 블록도이다. NVM 인터페이스 회로(119)는 복수의 데이터 입출력 패드들(DQP), 데이터 스트로브 패드(DQSP), 트레이닝 회로(111), 지연 고정 루프(119a), 복수의 입력 지연 회로들(119b), 및 버퍼(119c)를 포함할 수 있다.
데이터 스트로브 패드(DQSP)는 불휘발성 메모리 장치(120)로부터 데이터 스트로브 신호(DQS)를 수신할 수 있다. 단, 본 발명의 범위가 이에 한정되는 것은 아니며, 데이터 스트로브 패드(DQSP)는 불휘발성 메모리 장치(120)로 데이터 스트로브 신호(DQS)를 출력할 수 있으며, 데이터 스트로브 신호(DQS)를 출력하기 위한 구성 요소들이 NVM 인터페이스 회로(119)에 구비될 수 있다. 데이터 스트로브 패드(DQSP)는 수신한 데이터 스트로브 신호(DQS)를 지연 고정 루프(119a)로 전달할 수 있다.
복수의 데이터 입출력 패드들(DQP)은 불휘발성 메모리 장치(120)로부터 복수의 데이터 신호들(DQ)을 수신할 수 있다. 단, 본 발명의 범위가 이에 한정되는 것은 아니며, 데이터 입출력 패드들(DQP1~DQP8)은 불휘발성 메모리 장치(120)로 데이터 신호들(DQ1~DQ8)을 출력할 수 있으며, 데이터 신호들(DQ1~DQ8)을 출력하기 위한 구성 요소들이 NVM 인터페이스 회로(119)에 구비될 수 있다. 복수의 데이터 입출력 패드들(DQP)은 복수의 데이터 신호들(DQ)을 통해 수신한 패턴 데이터인 데이터 비트들(DB)을 입력 지연 회로(119b)로 전달할 수 있다. 복수의 데이터 신호들(DQ1~DQ8)은 도 5b에서 상술한 바와 같이, 잡음이나 지연 특성의 차이로 인하여 데이터 신호 별로 서로 다른 지연을 가질 수 있다. 따라서 트레이닝을 통해 데이터 스트로브 신호(DQS) 및 데이터 복수의 데이터 신호들(DQ1~DQ8) 간의 정렬이 필요할 수 있다.
트레이닝 회로(111)는 버퍼(119c)로부터 데이터(DATA)를 수신할 수 있다. 트레이닝 회로(111)는 클럭 제어 신호(CC)를 출력하여 지연 고정 루프(119a)로 전송할 수 있다. 트레이닝 회로(111)는 입력 데이터 제어 신호(IDC)를 출력하여 복수의 입력 지연 회로들(119b)로 전송할 수 있다.
예시적인 실시 예에서, 트레이닝 회로(111)는 트레이닝 동작을 수행하도록 구성될 수 있다. 트레이닝 회로(111)는 읽기 트레이닝을 통해 불휘발성 메모리 장치(120)로부터 제공되는 데이터 신호들(DQ1~DQ8) 각각의 샘플링 시점을 센터로 조정할 수 있다. 데이터 신호들(DQ1~DQ8)의 샘플링 시점을 센터로 조정하기 위해서, 트레이닝 회로(1110)는 데이터 신호들(DQ1~DQ8) 각각의 센터를 검출하는 동작이 선행될 수 있다. 트레이닝 회로(111)는 데이터 신호들(DQ1~DQ8) 각각의 좌측 에지(LE) 및 우측 에지(RE)를 검출하여, 이를 기반으로 데이터 신호들(DQ1~DQ8) 각각의 센터를 검출할 수 있다.
트레이닝 회로(111)는 클럭 제어 신호(CC)를 통해 지연 고정 루프(DLL)를 제어할 수 있다. 예를 들어, 트레이닝 회로(111)는 데이터 스트로브 신호(DQS)를 틱 시간만큼 시프트 시키면서 검출 스텝을 반복 수행할 수 있다. 트레이닝 회로(111)는 클럭 제어 신호(CC)를 제어하여, 데이터 스트로브 신호(DQS)의 지연량을 조절할 수 있다. 이를 통해, 트레이닝 회로(111)는 데이터 신호들(DQ1~DQ8) 각각의 좌측 에지 오프셋 및 우측 에지 오프셋을 검출할 수 있다.
트레이닝 회로(111)는 입력 데이터 제어 신호(IDC)를 통해 데이터 신호(DQ)의 타이밍 또는 지연량을 조절할 수 있다. 트레이닝 회로(111)는 검출된 데이터 신호들(DQ1~DQ8) 각각의 좌측 에지 오프셋 및 우측 에지 오프셋을 기반으로 데이터 신호(DQ) 윈도우의 센터를 검출할 수 있다. 트레이닝 회로(111)는 검출된 데이터 신호들(DQ1~DQ8) 각각의 좌측 에지 오프셋 및 우측 에지 오프셋을 기반으로 데이터 신호(DQ)들 간의 정렬을 맞출 수 있다. 트레이닝 회로(111)는 좌측 에지 오프셋 및 우측 에지 오프셋을 기반으로 입력 데이터 제어 신호(IDC)를 생성할 수 있다.
지연 고정 루프(119a)는 데이터 스트로브 패드(DQSP)로부터 데이터 스트로브 신호(DQS)를 수신할 수 있다. 지연 고정 루프(119a)는 트레이닝 회로(111)로부터 클럭 제어 신호(CC)를 수신할 수 있다. 지연 고정 루프(119a)는 클럭 제어 신호(CC)를 기반으로 데이터 스트로브 신호(DQS)를 지연시켜 출력할 수 있다. 지연 고정 루프(119a)는 지연된 데이터 스트로브 신호(DQS)를 버퍼(119c)로 제공할 수 있다. 예를 들어, 지연 고정 루프(119a)는 데이터 스트로브 신호(DQS)의 타이밍을 조절하기 위한 복수의 지연 셀들을 포함할 수 있다. 지연 고정 루프(119a)는 클럭 제어 신호의 제어에 따라 복수의 지연 셀들을 활성화 시킴으로써, 데이터 스트로브 신호(DQS)의 타이밍을 조절할 수 있다. 단, 본 발명의 범위가 이에 한정되지 아니하며, 스토리지 컨트롤러(110)는 지연 고정 루프 대신에 위상 고정 루프를 포함할 수 있다.
복수의 입력 지연 회로들(119b)은 복수의 데이터 입출력 패드들(DQP)로부터 복수의 데이터 비트들(DB)을 수신할 수 있다. 복수의 입력 지연 회로들(119b)은 트레이닝 회로(111)로부터 복수의 입력 데이터 제어 신호들(IDC)을 수신할 수 있다. 복수의 입력 지연 회로들(119b)은 복수의 입력 데이터 제어 신호들(IDC)에 응답하여, 수신한 데이터 비트들(DB)을 지연시켜 출력할 수 있다.
예를 들어, 복수의 입력 지연 회로들(119b) 각각은 대응하는 데이터 신호의타이밍을 조절하기 위한 복수의 지연 셀들을 포함할 수 있다. 복수의 입력 지연 회로들(119b)은 복수의 입력 데이터 제어 신호들(IDC)에 응답하여, 복수의 지연 셀들을 활성화시킴으로써 데이터 신호들(DQ1~DQ8) 각각을 샘플링하는 타이밍(또는 지연량들)을 각각 개별적으로 제어할 수 있다. 복수의 입력 지연 회로들(119b)은 지연된 복수의 데이터 신호들(DQ1~DQ8)을 버퍼(119c)로 제공할 수 있다.
버퍼(119c)는 지연 고정 루프(119a)로부터 클럭 또는 지연된 데이터 스트로브 신호를 수신할 수 있다. 버퍼(119c)는 입력 지연 회로(119b)로부터 복수의 데이터 신호들(DQ1~DQ8)을 수신할 수 있다. 버퍼(119c)는 복수의 데이터 신호들(DQ1~DQ8)을 통해 수신한 복수의 데이터 비트들을 데이터(DATA)로 저장하고 이를 출력할 수 있다. 버퍼(119c)는 데이터(DATA)를 트레이닝 회로(111)로 제공할 수 있다.
예를 들어, 트레이닝 시에, 입력 지연 회로들(119b_1~119b_8)로부터 전달되는 데이터(DATA)가 버퍼(119c)에 저장되고, 그리고 트레이닝 회로(111)로 전달될 수 있다. 트레이닝을 수행하지 않는 통상적인 동작 시에, 버퍼(119c)에 저장된 데이터(DATA)는 버퍼 메모리로 전달될 수 있다.
도 7은 도 6의 NVM 인터페이스 회로를 좀더 구체적으로 보여주는 블록도이다. 도 3 및 도 4를 참조하면, 복수의 데이터 입출력 패드들(DQP)은 제1 내지 제8 데이터 입출력 패드들(DQP1~DQP8)을 포함할 수 있다. 복수의 입력 지연 회로(119b)는 제1 내지 제8 입력 지연 회로들(119b_1~119b_8)을 포함할 수 있다. 복수의 데이터 신호들(DQ)은 제1 내지 제8 데이터 신호들(DQ1~DQ8)을 포함할 수 있다. 복수의 입력 데이터 제어 신호들(IDC)은 제1 내지 제8 입력 데이터 제어 신호들(IDC1~IDC8)을 포함할 수 있다.
복수의 입력 지연 회로들(119b_1~119b_8)은 복수의 데이터 입출력 패드들(DQP1~DQP8)에 각각 연결된다. 예를 들어, 제1 입력 지연 회로(119b_1)는 제1 데이터 입출력 패드(DQP1)와 연결되고, 제2 입력 지연 회로(119b_2)는 제2 데이터 입출력 패드(DQP2)와 연결되고, 제3 입력 지연 회로(119b_3)는 제3 데이터 입출력 패드(DQP3)와 연결되고, 제4 입력 지연 회로(119b_4)는 제4 데이터 입출력 패드(DQP4)와 연결될 수 있다. 이와 유사하게 나머지 입력 지연 회로들(119b_5~119b_8)은 대응하는 데이터 입출력 패드들(DQP5~DQP8)과 연결될 수 있으며, 이에 대한 상세한 설명은 생략된다.
복수의 입력 지연 회로들(119b_1~119b_8) 각각은 대응하는 입력 데이터 제어 신호들(IDC1~IDC8)을 수신할 수 있다. 복수의 입력 지연 회로들(119b_1~119b_8) 각각은 대응하는 입력 데이터 제어 신호들(IDC1~IDC8)에 응답하여, 데이터 신호들의 타이밍들(예를 들어, 지연량들)을 각각 개별적으로 제어할 수 있다. 예를 들어, 제1 입력 지연 회로(119b_1)는 제1 입력 데이터 제어 신호(IDC1)에 응답하여, 데이터 신호(DQ)를 전송하는 타이밍(지연량)을 조절할 수 있다. 이와 유사하게 나머지 입력 지연 회로들(119b_2~119b_8)은 대응하는 입력 데이터 제어 신호들(IDC2~IDC8)을 수신하고, 이에 응답하여 데이터 신호들의 타이밍을 조절할 수 있으며, 이에 대한 자세한 설명은 생략된다.
도 8a 및 도8b는 오프셋 정보들을 예시적으로 보여주는 도면들이다. 도 1 도 8a, 및 도8b을 참조하면, 복수의 데이터 신호들(DQ1~DQ8)들의 타이밍들은 서로 일치하지 않을 수 있다. 따라서, 복수의 데이터 신호들(DQ1~DQ8) 각각에 대하여 좌측 에지 오프셋 및 우측 에지 오프셋을 포함하는 오프셋 정보들(OI)이 필요할 수 있다. 좌측 에지 오프셋은 데이터 스트로브 신호(DQS)의 좌측 에지 및 데이터 신호(DQ)의 좌측 에지 간의 차이를 가리키고, 우측 에지 오프셋은 데이터 스트로브 신호(DQS)의 우측 에지 및 데이터 신호(DQ)의 우측 에지 간의 차이를 가리킬 수 있다.
도면의 간결성을 위하여, 제1 데이터 비트들(DB1)만 도시하고, 나머지 데이터 비트들(DB2~DB4)은 생략된다. 데이터 스트로브 신호(DQS)의 좌측 에지는 제3 시점(t3)에서 형성되고, 우측 에지는 제11 시점(t11)에서 형성되는 것으로 가정한다. 도 8에서 제1 내지 제16 시점들(t1~t16)의 간격은 틱(tick) 시간(△t)에 대응할 수 있다. 예를 들어, 틱 시간은 트레이닝 회로(111)에 의해 데이터 스트로브 신호(DQS) 또는 데이터 신호(DQ)의 지연량의 최소 단위 일 수 있다. 또는 틱 시간은 트레이닝 회로(111)에 의해 데이터 스트로브 신호(DQS) 또는 데이터 신호(DQ)의 시프트 되는 최소 단위일 수 있다.
예를 들어, 제1 데이터 신호(DQ1)를 통해 수신된 비트(DB1_1)의 좌측 에지는 제4 시점(t4)에서 형성될 수 있다. 제1 데이터 신호(DQ1)를 통해 수신된 비트(DB1_1)의 타이밍은 데이터 스트로브 신호(DQS)의 에지 타이밍보다 늦을 수 있다. 제1 데이터 신호(DQ1)의 좌측 에지 오프셋(LO1)은 제3 시점(t3) 및 제4 시점(t4)의 차이에 대응할 수 있다. 즉, 제1 데이터 신호(DQ1)의 좌측 에지 오프셋(LO1)은 +△t 일 수 있다.
제2 데이터 신호(DQ2)를 통해 수신된 비트(DB1_2)의 좌측 에지는 제2 시점(t2)에서 형성될 수 있다. 제2 데이터 신호(DQ2)를 통해 수신된 비트(DB1_2)의 타이밍은 데이터 스트로브 신호(DQS)의 에지 타이밍 보다 앞설 수 있다. 제2 데이터 신호(DQ2)의 좌측 에지 오프셋(LO2)은 제3 시점(t3) 및 제2 시점(t2)의 차이에 대응할 수 있다. 즉, 제2 데이터 신호(DQ2)의 좌측 에지 오프셋(LO2)은 -△t 일 수 있다.
제3 데이터 신호(DQ3)를 통해 수신된 비트(DB1_3)의 좌측 에지는 제3 시점(t3)에서 형성될 수 있다. 제3 데이터 신호(DQ3)를 통해 수신된 비트(DB1_3)의 타이밍은 데이터 스트로브 신호(DQS)의 에지 타이밍과 일치할 수 있다. 제3 데이터 신호(DQ3)를 통해 수신된 비트(DB1_3)의 좌측 에지 오프셋(LO3)은 제3 시점(t3) 및 제3 시점(t3)의 차이에 대응할 수 있다. 즉, 제3 데이터 신호(DQ3)의 좌측 에지 오프셋(LO3)은 0일 수 있다.
제4 데이터 신호(DQ4)를 통해 수신된 비트(DB1_4)의 좌측 에지는 제5 시점(t5)에서 형성될 수 있다. 제4 데이터 신호(DQ4)를 통해 수신된 비트(DB1_4)의 타이밍은 데이터 스트로브 신호(DQS)의 에지 타이밍보다 늦을 수 있다. 제4 데이터 신호(DQ4)를 통해 수신된 비트(DB1_4)의 좌측 에지 오프셋(LO4)은 제3 시점(t3) 및 제5 시점(t5)의 차이에 대응할 수 있다. 즉, 제4 데이터 신호(DQ4)를 통해 수신된 비트(DB1_4)의 좌측 에지 오프셋(LO4)은 +2△t 일 수 있다.
이와 유사하게 나머지 데이터 신호들(DQ5~DQ8)에 각각 대하여 좌측 에지 오프셋들을 검출할 수 있다. 제5 데이터 신호(DQ5)의 좌측 에지는 제8 시점(t8)에서 형성되므로, 제5 데이터 신호(DQ5)의 좌측 에지 오프셋(LO5)은 +5△t 일 수 있다. 제6 데이터 신호(DQ6)의 좌측 에지는 제6 시점(t6)에서 형성되므로, 제6 데이터 신호(DQ6)의 좌측 에지 오프셋(LO6)은 +3△t 일 수 있다. 제7 데이터 신호(DQ7)의 좌측 에지는 제7 시점(t7)에서 형성되므로, 제7 데이터 신호(DQ7)의 좌측 에지 오프셋(LO7)은 +4△t일 수 있다. 제8 데이터 신호(DQ8)의 좌측 에지는 제1 시점(t1)에서 형성되므로, 제8 데이터 신호(DQ8)의 좌측 에지 오프셋(LO8)은 -2△t일 수 있다.
제1 데이터 신호(DQ1)를 통해 수신된 비트(DB1_1)의 우측 에지는 제12 시점(t12)에서 형성될 수 있다. 제1 데이터 신호(DQ1)를 통해 수신된 비트(DB1_1)의 타이밍은 데이터 스트로브 신호(DQS)의 에지 타이밍보다 늦을 수 있다. 제1 데이터 신호(DQ1)의 우측 에지 오프셋(RO1)은 제11 시점(t11) 및 제12 시점(t12)의 차이에 대응할 수 있다. 즉, 제1 데이터 신호(DQ1)의 좌측 에지 오프셋(LO1)은 +△t 일 수 있다.
이와 유사하게 나머지 데이터 신호들(DQ2~DQ8)에 각각 대하여 우측 에지 오프셋들을 검출할 수 있다. 제2 데이터 신호(DQ2)의 우측 에지는 제10 시점(t10)에서 형성되므로, 제2 데이터 신호(DQ2)의 우측 에지 오프셋(RO2)은 -△t 일 수 있다. 제3 데이터 신호(DQ3)의 우측 에지는 제11 시점(t11)에서 형성되므로, 제3 데이터 신호(DQ3)의 좌측 에지 오프셋(RO3)은 0 일 수 있다. 제4 데이터 신호(DQ4)의 우측 에지는 제13 시점(t13)에서 형성되므로, 제4 데이터 신호(DQ4)의 우측 에지 오프셋(LO4)은 +2△t 일 수 있다. 제5 데이터 신호(DQ5)의 우측 에지는 제16 시점(t16)에서 형성되므로, 제5 데이터 신호(DQ5)의 우측 에지 오프셋(RO5)은 +5△t 일 수 있다. 제6 데이터 신호(DQ6)의 우측 에지는 제14 시점(t14)에서 형성되므로, 제6 데이터 신호(DQ6)의 우측 에지 오프셋(RO6)은 +3△t 일 수 있다. 제7 데이터 신호(DQ7)의 우측 에지는 제15 시점(t15)에서 형성되므로, 제7 데이터 신호(DQ7)의 우측 에지 오프셋(RO7)은 +4△t일 수 있다. 제8 데이터 신호(DQ8)의 우측 에지는 제9 시점(t9)에서 형성되므로, 제8 데이터 신호(DQ8)의 우측 에지 오프셋(RO8)은 -2△t일 수 있다.
오프셋 정보들(OI)은 제1 내지 제8 좌측 에지 오프셋들(LO1~LO8) 및 제1 내지 제8 우측 에지 오프셋들(RO1~RO8)을 포함할 수 있다. 트레이닝 회로(111)는 제1 트레이닝 수행 시, 제1 트레이닝 결과를 기반으로 오프셋 정보들을 생성할 수 있다. 트레이닝 회로(111)는 상술한 바와 같이, 제1 내지 제8 좌측 에지 오프셋들(LO1~LO8) 및 제1 내지 제8 우측 에지 오프셋들(RO1~RO8)을 기반으로 오프셋 정보들을 생성할 수 있다. 트레이닝 회로(111)는 오프셋 정보들을 메모리에 저장하고, 제2 트레이닝 수행 시 오프셋 정보들을 로드하여, 이를 기반으로 제2 트레이닝 동작을 수행할 수 있다.
도 9는 도 1의 스토리지 컨트롤러의 동작을 예시적으로 보여주는 순서도이다. 도 1 및 도 9을 참조하면, 스토리지 컨트롤러(110)는 S110 단계에서, 스토리지 컨트롤러(110)는 첫 번째 부트-업 동작을 수행하는 지 판별할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 이전의 부트 동작을 통해 저장된 오프셋 정보들이 존재하는지 판별할 수 있다. 첫 번째 부트 동작 수행 중인 경우, S120 단계를 진행하고, 첫 번째 부트 동작이 아닌 경우, S140 단계를 진행한다.
S120 단계에서, 스토리지 컨트롤러(110)는 최초 트레이닝 또는 제1 트레이닝동작을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 데이터 신호들(DQ1~DQ8)의 제1 트레이닝을 수행할 수 있다. 스토리지 컨트롤러(110)는 단위 구간 전체에 대하여, 데이터 스트로브 신호(DQS)를 틱(tick) 시간만큼 시프트 시키면서 검출 동작을 반복할 수 있다.
S130 단계에서, 스토리지 컨트롤러(110)는 제1 트레이닝의 결과를 오프셋 정보들로 메모리에 저장할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 복수의 데이터 신호들(DQ1~DQ8) 각각에 대한 좌측 에지 오프셋 및 우측 에지 오프셋을 포함하는 오프셋 정보들을 메모리에 저장할 수 있다.
S140 단계에서, 스토리지 컨트롤러(110)는 메모리로부터 오프셋 정보들을 로드(load)할 수 있다. 첫 번째 부트 동작이 아닌 경우, 스토리지 컨트롤러(110)는 첫 번째 부트 동작 수행 시 저장된 오프셋 정보들을 메모리로부터 로드할 수 있다.
S150 단계에서, 스토리지 컨트롤러(110)는 로드한 오프셋 정보들을 기반으로, 빠른(fast) 트레이닝 또는 제2 트레이닝을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 오프셋 정보들에 포함된 복수의 데이터 신호들(DQ1~DQ8) 각각에 대한 좌측 에지 오프셋 및 우측 에지 오프셋을 기반으로 데이터 신호들(DQ1~DQ8) 각각에 대한 좌측 에지 구간 및 우측 에지 구간을 설정할 수 있다. 스토리지 컨트롤러(110)는 단위 구간 전체에 대하여 검출 동작을 수행하지 않고, 좌측 에지 구간 및 우측 에지 구간에 대해서만 검출 동작을 수행할 수 있다. 이하의 도면들을 통해 제2 트레이닝 동작이 보다 자세하게 설명된다.
도 10은 본 발명의 실시 예에 따른 제2 트레이닝 동작을 보여주는 순서도이다. 도 1 및 도 10를 참조하면, S151 단계에서, 스토리지 컨트롤러(110)는 좌측 에지(LE) 검출 동작을 수행할 수 있다. S152 단계에서, 스토리지 컨트롤러(110)는 우측 에지(RE) 검출 동작을 수행할 수 있다. S153 단계에서, 스토리지 컨트롤러(110)는 좌측 에지(LE) 오프셋 및 우측 에지(RE) 오프셋을 기반으로 데이터 신호(DQ) 윈도우의 센터를 연산할 수 있다.
S151 단계를 구체적으로 살펴보면, S151_1단계에서, 스토리지 컨트롤러(110)는 좌측 에지(LE) 구간을 설정할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 데이터 신호(DQ)의 단위 구간(UI) 중 좌측 에지(LE) 구간을 오프셋 정보들을 기반으로 설정할 수 있다. 스토리지 컨트롤러(110)는 오프셋 정보들 중 좌측 에지(LE) 오프셋을 기준으로 앞/뒤로 복수의 틱 구간을 좌측 에지 구간으로 설정할 수 있다.
예시적인 실시 예에서, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)의 지연량을 제1 트레이닝에서 시작 시점과 다른 지점으로 설정할 수 있다. 즉, 스토리지 컨트롤러(110)는 좌측 에지 구간내의 처음 시점을 검출 스텝의 시작 시점으로 설정할 수 있다.
S151_2 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로 읽기 커맨드(CMD_R), 및 어드레스(ADDR)를 전송할 수 있다. 예시적으로, 읽기 커맨드(CMD_R)는 읽기 DQ 트레이닝 커맨드의 제1 세트(예를 들어, 62h)일 수 있고, 어드레스(ADDR)는 논리적 유닛 넘버(LUN) 어드레스, 데이터 반전 정보(Invert mask), 제1 패턴(1st pattern) 및 제2 패턴(2nd pattern)일 수 있다.
S151_3 단계에서, 불휘발성 메모리 장치(120)는 읽기 커맨드(CMD_R) 및 어드레스(ADDR)에 응답하여, 패턴 데이터(DATA)를 스토리지 컨트롤러(110)로 제공할 수 있다.
S151_4 단계에서, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)의 상승 에지가 좌측 에지(LE)에 대응하는지 판별할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로부터 수신한 패턴 데이터(DATA)를 기준 데이터(제1 패턴 및 제2 패턴) 또는 전송한 데이터와 일치하는지 판별할 수 있다. 스토리지 컨트롤러(110)는 판별 결과를 기반으로 데이터 스트로브 신호(DQS)의 상승 에지가 데이터 신호(DQ)의 좌측 에지(LE)와 대응하는지 판별할 수 있다.
데이터 스트로브 신호(DQS)의 상승 에지 및 데이터 신호(DQ)의 좌측 에지(LE)가 대응하지 않는 경우, S151_5 단계를 진행한다. S151_5 단계에서, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)의 지연량을 조절할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)를 틱 시간만큼 시프트 시킬 수 있다. 이후에 스토리지 컨트롤러(110)는 S151_2 단계 내지 S151_4 단계의 동작들을 반복 수행할 수 있다. 데이터 스트로브 신호(DQS)의 상승 에지 및 데이터 신호(DQ)의 좌측 에지(LE)가 대응하는 경우, S151_6 단계를 진행한다. S151_6 단계에서, 스토리지 컨트롤러(110)는 좌측 에지(LE) 오프셋을 설정 또는 저장할 수 있다. 예를 들어, 좌측 에지(LE) 오프셋은 디지털 코드를 가리킬 수 있다. 좌측 에지 오프셋을 기반으로 지연 셀들의 활성화 개수를 조절함으로써, 데이터 신호를 정렬시킬 수 있다.
예시적인 실시 예에서, 좌측 에지(LE) 오프셋 및 우측 에지(RE) 오프셋과 같은트레이닝 결과값은 PVT(Process, voltage, temperature)를 기반으로 변경될 수 있다. 예를 들어, 트레이닝 결과값은 온도에 따라 변경될 수 있다. 온도가 상승하는 경우, 지연 셀들의 지연량이 증가하고, 온도가 하강하는 경우, 지연 셀들의 지연량이 감소할 수 있다.
S152 단계를 구체적으로 살펴보면, S152_1단계에서, 스토리지 컨트롤러(110)는 우측 에지(RE) 구간을 설정할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 데이터 신호(DQ)의 단위 구간(UI) 중 우측 에지(RE) 구간을 오프셋 정보들을 기반으로 설정할 수 있다. 스토리지 컨트롤러(110)는 오프셋 정보들 중 우측 에지(RE) 오프셋을 기준으로 우측 에지 구간을 설정할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 오프셋 정보들 중 우측 에지(RE) 오프셋을 기준으로 앞/뒤고 복수의 틱 구간을 우측 에지 구간으로 설정할 수 있다. 예시적인 실시 예에서, 스토리지 컨트롤러(110)는 우측 에지 구간내의 처음 시점을 검출 스텝의 시작 시점으로 설정할 수 있다.
S152_2 단계에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로 읽기 커맨드(CMD_R) 및 어드레스(ADDR)를 전송할 수 있다. 예시적으로, 읽기 커맨드(CMD_R)는 읽기 DQ 트레이닝 커맨드의 제1 세트(예를 들어, 62h)일 수 있고, 어드레스(ADDR)는 논리적 유닛 넘버(LUN) 어드레스, 데이터 반전 정보(Invert mask), 제1 패턴(1st pattern) 및 제2 패턴(2nd pattern)일 수 있다.
S152_3 단계에서, 불휘발성 메모리 장치(120)는 읽기 커맨드(CMD_R) 및 어드레스(ADDR)에 응답하여, 패턴 데이터(DATA)를 스토리지 컨트롤러(110)로 제공할 수 있다.
S152_4 단계에서, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)의 상승 에지가 데이터 신호(DQ)의 우측 에지에 대응하는지 판별할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로부터 수신한 패턴 데이터(DATA)를 기준 데이터(또는 전송한 데이터)와 일치하는지 판별할 수 있다. 스토리지 컨트롤러(110)는 판별 결과를 기반으로 데이터 스트로브 신호(DQS)의 상승 에지가 데이터 신호(DQ)의 우측 에지와 대응하는지 판별할 수 있다.
데이터 스트로브 신호(DQS)의 상승 에지 및 데이터 신호(DQ)의 우측 에지가 대응하지 않는 경우, S152_5 단계를 진행한다. S152_5 단계에서, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)의 지연량을 조절할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)를 틱 시간만큼 시프트 시킬 수 있다. 이후에 스토리지 컨트롤러(110)는 S152_2 단계 내지 S152_4 단계의 동작들을 반복 수행할 수 있다. 데이터 스트로브 신호(DQS)의 상승 에지 및 데이터 신호(DQ)의 우측 에지(RE)가 대응하는 경우, S152_6 단계를 진행한다. S152_6 단계에서, 스토리지 컨트롤러(110)는 우측 에지(RE) 오프셋을 설정 또는 저장할 수 있다. 예를 들어, 우측 에지(RE) 오프셋은 디지털 코드를 가리킬 수 있다. 우측 에지 오프셋을 기반으로 지연 셀들의 활성화 개수를 조절함으로써, 데이터 신호를 정렬시킬 수 있다.
도 11은 제1 트레이닝 방법을 예시적으로 보여주는 도면이다. 도 1 및 도 11을 참조하면, 스토리지 컨트롤러(110)는 데이터 신호들(DQ) 각각의 좌측 에지(LE)(예를 들어, 시작 경계) 및 우측 에지(RE)(예를 들어, 종료 경계)를 검출하기 위해 검출 동작을 반복 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제1 내지 제n 검출 스텝(STEP1~STEPn)을 수행할 수 있다. 즉, 스토리지 컨트롤러(110)는 단위 구간(UI) 전체(예를 들어, 제1 구간(S1))에 대하여 데이터 스트로브 신호(DQS)를 틱 시간(△t)만큼 시프트 시키면서 검출 스텝을 반복 수행할 수 있다. 예시적으로 제5 검출 스텝(STEP5)에서 좌측 에지(LE)가 검출되는 경우를 가정한다. 제n-3 검출 스텝(STEPn-3)에서 우측 에지(RE)가 검출되는 경우를 가정한다.
스토리지 컨트롤러(110)는 데이터 신호(DQ)의 좌측 및 우측 에지(LE, RE)들을 검출할 시작 시점(SP; Start Point)을 결정할 수 있다. 시작 시점은 스토리지 컨트롤러(110)에서 불휘발성 메모리 장치(120)로 전달되는 읽기 인에이블 신호(/RE)의 천이 시점을 참조하여 결정될 수 있다.
시작 시점이 결정된 후에, 스토리지 컨트롤러(110)는 제1 검출 스텝(STEP1)을 수행할 수 있다. 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로 읽기 커맨드(CMD_R) 및 어드레스(ADDR)를 전송할 수 있다. 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로부터 데이터 신호(DQ) 및 데이터 스트로브 신호(DQS)를 수신할 수 있다.
제1 검출 스텝(STEP1)에서 데이터 스트로브 신호(DQS)의 상승 에지는 단위 구간(UI)의 좌측 에지(LE) 보다 복수의 틱(tick) 구간(kΔt, k는 자연수) 이전에 발생할 수 있다. 스토리지 컨트롤러(110)는 데이터 신호들(DQ) 통해 제공된 패턴 데이터 및 미리 결정된 기준 데이터를 비교할 수 있다. 스토리지 컨트롤러(110)는 비교 결과를 기반으로 데이터 스트로브 신호(DQS)의 상승 에지가 데이터 신호(DQ)의 좌측 에지(LE)에 대응하는지 판별할 수 있다. 데이터 스트로브 신호(DQS)의 상승 에지가 좌측 에지(LE)에 대응하지 않는 것으로 판별된 경우, 스토리지 컨트롤러(110)는 후속되는 제2 검출 스텝(STEP2)을 수행할 수 있다.
제2 검출 스텝(STEP2)에서, 스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)로 읽기 커맨드(CMD_R) 및 어드레스를 전송할 수 있다. 스토리지 컨트롤러(110)는 데이터 신호들(DQ) 및 데이터 스트로브 신호(DQS)를 수신할 수 있다. 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)를 틱 시간만큼 시프트 시킬 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 지연 셀들의 활성화 개수를 조절함으로써, 데이터 스트로브 신호(DQS)를 틱 시간만큼 지연시킬 수 있다. 즉, 제2 검출 스텝(STEP2)의 데이터 스트로브 신호(DQS)는 시작 시점(SP) 보다 틱 구간 이후에 천이될 수 있다.
스토리지 컨트롤러(110)는 데이터 신호들(DQ) 통해 제공된 패턴 데이터 및 미리 결정된 기준 데이터를 비교하여 데이터 스트로브 신호(DQS)의 상승 에지가 좌측 에지(LE)에 대응하는지 판별할 수 있다. 제2 검출 스텝(STEP2)에서 데이터 스트로브 신호(DQS)의 상승 에지가 좌측 에지(LE)에 대응하지 않는다고 판별된 경우, 스토리지 컨트롤러(110)는 후속되는 제3 검출 스텝(STEP3)을 진행할 수 있다.
제3 검출 스텝(STEP3)에서, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)를 틱 시간의 2배에 대응하는 시간만큼 시프트시킬 수 있다. 즉, 제3 검출 스텝(STEP3)의 데이터 스트로브 신호(DQS)는 시작 시점(SP) 보다 2개의 틱 구간 이후에 천이될 수 있다. 이외에 동작들은 상술한 제2 검출 스텝(STEP2)과 유사한 방식으로 진행될 수 있다. 이에 대한 상세한 설명은 생략된다. 이와 같이, 스토리지 컨트롤러(110)는 데이터 스트로브 신호(DQS)의 지연량을 조절하면서, 나머지 검출 스텝들(STEP4~STEPn)을 수행할 수 있다. 이에 대한 상세한 설명은 생략된다.
제5 검출 스텝(STEP5)에서, 스토리지 컨트롤러(110)는 데이터 신호들(DQ) 통해 제공된 패턴 데이터 및 미리 결정된 기준 데이터를 비교하여, 데이터 스트로브 신호(DQS)의 상승 에지가 좌측 에지(LE)에 대응하는지 판별할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 틱 시간의 4배에 대응하는 시간을 좌측 에지 오프셋으로 설정할 수 있다.
제n-3 검출 스텝(STEPn-3)에서, 스토리지 컨트롤러(110)는 데이터 신호들(DQ) 통해 제공된 패턴 데이터 및 미리 결정된 기준 데이터를 비교하여, 데이터 스트로브 신호(DQS)의 상승 에지가 우측 에지(RE)에 대응하는지 판별할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 틱 시간의 n-2배에 대응하는 시간을 우측 에지 오프셋으로 설정할 수 있다.
도 12는 본 발명의 실시 예에 따른 제2 트레이닝을 예시적으로 보여주는 도면들이다. 도 1 및 도 12을 참조하면, 스토리지 컨트롤러(110)는 제1 트레이닝 결과를 기반으로 생성된 오프셋 정보들을 기반으로 제2 트레이닝을 수행할 수 있다. 스토리지 컨트롤러(110)는 단위 구간(UI) 전체에 대하여 검출 동작을 수행하지 않고, 단위 구간(UI) 중 좌측 에지 구간 및 우측 에지 구간에 대해서 검출 동작을 수행할 수 있다. 즉, 스토리지 컨트롤러(110)는 좌측 에지 구간(LE section)에 대하여 틱 시간만큼 데이터 스트로브 신호(DQS)를 시프트 시키면서 좌측 에지(LE)를 검출할 수 있다. 스토리지 컨트롤러(110)는 우측 에지 구간(RE section)에 대하여 틱 시간만큼 데이터 스트로브 신호(DQS)를 시프트 시키면서 우측 에지(RE)를 검출할 수 있다.
예시적인 실시 예에서, 스토리지 컨트롤러(110)는 오프셋 정보들을 기반으로 좌측 에지 구간(LE section) 및 우측 에지 구간(RE section)을 설정할 수 있다. 스토리지 컨트롤러(110)는 오프셋 정보들 중 좌측 에지 오프셋을 기반으로 좌측 에지 구간을 설정하고, 오프셋 정보들 중 우측 에지 오프셋을 기반으로 우측 에지 구간을 설정할 수 있다.
예시적인 실시 예에서, 스토리지 컨트롤러(110)는 마진을 두기 위해서, 좌측 에지 오프셋을 기준으로 앞/뒤로 복수의 틱 구간을 좌측 에지 구간으로 설정할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 좌측 에지 오프셋을 기준으로 앞/뒤로 2개의 틱 구간을 좌측 에지 구간으로 설정할 수 있다. 즉, 제5 시점(t5)은 데이터 신호(DQ)의 좌측 에지 오프셋과 대응할 수 있다. 제3 시점(t3)은 제5 시점(t5)부터 틱 시간의 2배에 대응하는 시간이 앞서고, 제7 시점(t7)은 제5 시점(t5)부터 틱 시간의 2배에 대응하는 시간이 늦을 수 있다. 제3 구간(S3)은 좌측 에지 구간과 대응할 수 있다.
스토리지 컨트롤러(110)는 우측 에지 오프셋을 기준으로 앞/뒤로 복수의 틱 구간을 우측 에지 구간으로 설정할 수 있다. 예를 들어, 제10 시점(t10)은 데이터 신호(DQ)의 우측 에지 오프셋과 대응할 수 있다. 제8 시점(t8)은 제10 시점(t10)부터 틱 시간의 2배에 대응하는 시간이 앞서고, 제12 시점(t12)은 제10 시점(t10)부터 틱 시간의 2배에 대응하는 시간이 늦을 수 있다. 제5 구간(S5)은 우측 에지 구간과 대응할 수 있다.
예시적인 실시 예에서, 스토리지 컨트롤러(110)는 제2 구간(S2), 제4 구간(S4), 및 제6 구간(S6)에 대하여 검출 스텝을 수행하지 않을 수 있다. 이에 따라, 검출 스텝의 횟수가 감소하면서, 트레이닝 시간이 감소할 수 있다.
스토리지 컨트롤러(110)는 데이터 신호(DQ)의 좌측 에지 구간에 대해 검출 스텝을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제1 내지 제5 검출 스텝(STEP1~STEP5)을 수행할 수 있다. 예시적으로 제3 검출 스텝(STEP3)에서 좌측 에지(LE)가 검출되는 경우를 가정한다.
스토리지 컨트롤러(110)는 데이터 신호(DQ)의 우측 에지 구간에 대해 검출 스텝을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제6 내지 제10 검출 스텝(STEP6~STEP10)을 수행할 수 있다. 예시적으로 제8 검출 스텝(STEP8)에서 우측 에지(RE)가 검출되는 경우를 가정한다.
제1 내지 제10 검출 스텝(STEP1~STEP10)들 각각에 대한 상세한 설명은 도 11에서 설명한 검출 스텝과 유사한 방식으로 동작하므로, 이에 대한 자세한 설명은 생략된다.
도 13은 도 1의 스토리지 컨트롤러의 동작을 예시적으로 보여주는 순서도이다. 도 1 및 도 13를 참조하면, 스토리지 컨트롤러(110)는 S210 단계에서, 스토리지 컨트롤러(110)는 첫 번째 부트-업 동작을 수행하는 지 판별할 수 있다. 첫 번째 부트 동작 수행 중인 경우, S220 단계를 진행하고, 첫 번째 부트 동작이 아닌 경우, S240 단계를 진행한다.
S220 단계에서, 스토리지 컨트롤러(110)는 제1 트레이닝동작을 수행할 수 있다. S230 단계에서, 스토리지 컨트롤러(110)는 제1 트레이닝의 결과를 오프셋 정보들로 메모리에 저장할 수 있다. S240 단계에서, 스토리지 컨트롤러(110)는 메모리로부터 오프셋 정보들을 로드(load)할 수 있다. S250 단계에서, 스토리지 컨트롤러(110)는 로드한 오프셋 정보들을 기반으로, 제2 트레이닝을 수행할 수 있다. 각 단계들은 도 9에서 설명하였으므로, 상세한 설명은 생략된다.
예시적인 실시 예에서, S250 단계에서, 온도를 기반으로 보상된 오프셋 정보들을 기반으로 제2 트레이닝을 수행할 수 있다. 도 10에서 상술한 바와 같이, 온도가 상승하는 경우, 지연 셀들의 지연량이 증가하고, 온도가 하강하는 경우, 지연 셀들의 지연량이 감소할 수 있다.
제1 트레이닝 수행 시 또는 이전 제2 트레이닝 수행 시 제1 온도이고, 현재 제2 트레이닝 수행 시 제2 온도라고 가정한다. 제1 온도와 제2 온도가 동일한 경우, 스토리지 컨트롤러(110)는 오프셋 정보들에 대한 보상없이 그대로 사용하여 제2 트레이닝을 수행할 수 있다. 그러나, 제1 온도와 제2 온도가 상이한 경우, 스토리지 컨트롤러(110)는 보상된 오프셋 정보들을 사용하여 제2 트레이닝을 수행할 수 있다.
제2 온도가 제1 온도 보다 높은 경우, 오프셋 정보들은 그 값들이 감소하는 방향으로 보상되고, 제2 온도가 제1 온도 보다 낮은 경우, 오프셋 정보들은 그 값들이 증가하는 방향으로 보상될 수 있다.
S260 단계에서, 스토리지 컨트롤러(110)는 제2 트레이닝의 결과를 기반으로 오프셋 정보를 갱신할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제2 트레이닝 동작을 수행하여, 검출한 좌측 에지 오프셋들 및 우측 에지 오프셋들을 새로운 오프셋 정보들로 갱신할 수 있다. 제2 트레이닝 결과를 기반으로 갱신된 오프셋 정보들을 새로운 오프셋 정보로 메모리에 저장할 수 있다. 갱신된 오프셋 정보들은 EFuse, EEPROM, MASKROM, Serial PROM, Flash Memory, OTP(One Time Programming) 메모리, Serial NOR에 저장될 수 있다.
도 9의 스토리지 컨트롤러(110)는 제2 트레이닝 수행 시, 제1 트레이닝 결과를 기반으로 생성된 오프셋 정보들을 사용할 수 있다. 반면에, 도 13의 스토리지 컨트롤러(110)는 제2 트레이닝 수행 시, 제1 트레이닝 결과 또는 제2 트레이닝 결과를 기반으로 생성된 오프셋 정보들을 사용할 수 있다.
도 14는 본 발명의 실시 예에 따른 스토리지 시스템이 적용된 SSD 시스템을 보여주는 블록도이다. 도 14을 참조하면, SSD 시스템(1000)은 호스트(1100) 및 SSD(1200)를 포함한다.
SSD(1200)는 신호 커넥터(1201)를 통해 호스트(1100)와 신호(SIG)를 주고받고, 전원 커넥터(1202)를 통해 전원(PWR)을 입력 받는다. 예시적으로, 신호 커넥터(1201)는 PCIe 포트일 수 있고, 신호(SIG)는 NVMe 규약에 정의된 신호일 수 있으며, SSD(1200)는 NVMe 기반의 스토리지 장치일 수 있다. SSD(1200)는 SSD 컨트롤러(1210), 복수의 플래시 메모리들(1221~122n), 보조 전원 장치(1230), 및 버퍼 메모리(1240)를 포함한다. 예시적으로, 복수의 플래시 메모리들(1221~122n) 각각은 별도의 칩, 또는 별도의 패키지로 구현될 수 있다.
SSD 컨트롤러(1210)는 호스트(1100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(1221~122n)을 제어할 수 있다. 예시적으로, SSD 컨트롤러(1210)는 도 1 내지 도 13를 참조하여 설명된 동작 방법을 기반으로 동작할 수 있다. 복수의 플래시 메모리들(1221~122n)은 SSD 컨트롤러(1210)의 제어에 따라 동작할 수 있다. 보조 전원 장치(1230)는 전원 커넥터(1002)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1230)는 호스트(1100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(1230)는 호스트(1100)로부터의 전원 공급이 원활하지 않을 경우, SSD(1200)의 전원을 제공할 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (10)

  1. 스토리지 컨트롤러 및 불휘발성 메모리 장치를 포함하는 스토리지 장치의 동작 방법에 있어서,
    제1 부트-업을 수행하는 단계;
    단위 구간 전체에 대하여 검출 스텝을 반복 수행하는 복수의 데이터 신호들의 제1 트레이닝을 수행하는 단계;
    상기 제1 트레이닝의 결과를 기반으로 생성된 오프셋 정보들을 저장하는 단계;
    상기 제1 트레이닝 결과를 기반으로 정상 동작을 수행하는 단계;
    제2 부트-업을 수행하는 단계;
    상기 제1 트레이닝에서 생성된 오프셋 정보들을 기반으로, 단위 구간 중 좌측 에지 구간 및 우측 에지 구간에 대하여 상기 검출 스텝을 반복 수행하는 상기 복수의 데이터 신호들의 제2 트레이닝을 수행하는 단계; 및
    상기 제2 트레이닝 결과를 기반으로 정상 동작을 수행하는 단계를 포함하고,
    상기 검출 스텝은,
    상기 스토리지 컨트롤러에 의해, 상기 불휘발성 메모리 장치로 상기 복수의 데이터 신호들 통해 읽기 커맨드 및 어드레스를 전송하는 단계;
    상기 스토리지 컨트롤러에 의해, 상기 복수의 데이터 신호들 및 상기 복수의 데이터 신호들과 동기된 데이터 스트로브 신호를 통해 상기 불휘발성 메모리 장치로부터 패턴 데이터를 수신하는 단계; 및
    상기 스토리지 컨트롤러에 의해, 상기 패턴 데이터가 미리 정해진 기준 데이터와 일치하지 않는 경우, 상기 데이터 스트로브 신호의 지연량을 조정하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 제2 트레이닝 수행 전, 상기 오프셋 정보들을 로드(load)하는 단계를 더 포함하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 제2 트레이닝 수행 후, 상기 제2 트레이닝 수행 결과를 기반으로 상기 오프셋 정보들을 갱신하는 단계를 더 포함하는 동작 방법.
  4. 제 1 항에 있어서,
    상기 복수의 데이터 신호들의 제2 트레이닝을 수행하는 단계는,
    상기 스토리지 컨트롤러에 의해, 상기 검출 스텝을 반복 수행하여, 좌측 에지(LE) 검출하는 단계;
    상기 스토리지 컨트롤러에 의해, 상기 검출 스텝을 반복 수행하여, 우측 에지(RE) 검출하는 단계; 및
    상기 우측 에지 및 상기 좌측 에지를 기반으로 데이터 신호의 윈도우를 검출하는 단계를 포함하는 동작 방법.
  5. 제 4 항에 있어서,
    상기 좌측 에지(LE) 검출하는 단계,
    상기 오프셋 정보들 중 좌측 에지 오프셋들을 기반으로 좌측 에지 구간을 설정하는 단계; 및
    상기 좌측 에지 구간에 대해 상기 검출 스텝을 수행하는 단계; 및
    상기 패턴 데이터가 미리 정해진 기준 데이터와 일치하는 경우, 최종 좌측 에지 오프셋을 설정하는 단계를 포함하는 동작 방법.
  6. 제 1 항에 있어서,
    상기 오프셋 정보들은 복수의 데이터 신호들 각각에 대하여 좌측 에지(LE) 오프셋 및 우측 에지(RE) 오프셋을 포함하는 동작 방법.
  7. 제 1 항에 있어서,
    상기 스토리지 컨트롤러에 의해, 상기 오프셋 정보들을 기반으로 상기 데이터 신호들 및 데이터 스트로브 신호를 정렬하는 동작 방법.
  8. 불휘발성 메모리 장치; 및
    복수의 데이터 신호들을 통해 상기 불휘발성 메모리 장치에 연결되고, 제1 부트-업 동작 수행 시, 상기 불휘발성 메모리 장치와 상기 복수의 데이터 신호들의 제1 트레이닝을 수행하고, 상기 제1 트레이닝 결과를 기반으로 오프셋 정보들을 생성하고, 제2 부트-업 동작 수행 시, 상기 오프셋 정보들을 기반으로 단위 구간 중 좌측 에지 구간 및 우측 에지 구간에 대하여 상기 불휘발성 메모리 장치와 상기 복수의 데이터 신호들의 제2 트레이닝을 수행하는 스토리지 컨트롤러를 포함하고,
    상기 제1 부트-업 동작은 첫 번째 부트-업 동작을 가리키고, 상기 제2 부트-업 동작은 상기 첫 번째 부트-업 동작 이외의 부트-업 동작을 가리키는 스토리지 장치.
  9. 제 8 항에 있어서,
    상기 제1 트레이닝에서, 상기 스토리지 컨트롤러는 데이터 스트로브 신호를 단위 구간 전체에 대하여 틱(tick) 시간만큼 시프트 시키면서 좌측 에지(LE) 및 우측 에지를 검출하고,
    상기 제2 트레이닝에서, 상기 스토리지 컨트롤러는 상기 오프셋 정보들을 기반으로 상기 단위 구간 중 좌측 에지(LE) 구간 및 우측 에지(RE) 구간을 설정하고, 상기 데이터 스트로브 신호를 상기 좌측 에지(LE) 구간에 대하여 상기 틱 시간만큼 시프트 시키면서 좌측 에지를 검출하고, 상기 데이터 스트로브 신호를 상기 우측 에지(RE) 구간에 대하여 상기 틱 시간만큼 시프트 시키면서 우측 에지를 검출하는 스토리지 장치.
  10. 제 8 항에 있어서,
    상기 스토리지 컨트롤러는 상기 제1 트레이닝 수행 후, 상기 오프셋 정보들을 저장하고, 상기 제2 트레이닝 수행 시, 상기 오프셋 정보들을 로드하는 스토리지 장치.
KR1020200175139A 2020-12-15 2020-12-15 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법 KR20220085237A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200175139A KR20220085237A (ko) 2020-12-15 2020-12-15 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
US17/523,369 US11756599B2 (en) 2020-12-15 2021-11-10 Storage controller, storage device, and operation method of storage device
CN202111464545.4A CN114637460A (zh) 2020-12-15 2021-12-03 存储控制器、存储设备和存储设备的操作方法
US18/356,274 US20230368825A1 (en) 2020-12-15 2023-07-21 Storage controller, storage device, and operation method of storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200175139A KR20220085237A (ko) 2020-12-15 2020-12-15 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR20220085237A true KR20220085237A (ko) 2022-06-22

Family

ID=81942853

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200175139A KR20220085237A (ko) 2020-12-15 2020-12-15 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법

Country Status (3)

Country Link
US (2) US11756599B2 (ko)
KR (1) KR20220085237A (ko)
CN (1) CN114637460A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220139063A (ko) * 2021-04-07 2022-10-14 에스케이하이닉스 주식회사 클럭 신호 처리 회로, 반도체 장치 및 반도체 시스템
KR20230103130A (ko) * 2021-12-31 2023-07-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201013686A (en) * 2008-09-26 2010-04-01 Asustek Comp Inc Method of detecting memory training result applied to a computer system
US9594910B2 (en) 2014-03-28 2017-03-14 Intel Corporation In-system provisioning of firmware for a hardware platform
KR20160075094A (ko) 2014-12-19 2016-06-29 삼성전자주식회사 메모리 컨트롤러와 이를 포함하는 메모리 시스템
US9886285B2 (en) 2015-03-31 2018-02-06 Western Digital Technologies, Inc. Communication interface initialization
US9563439B2 (en) 2015-04-27 2017-02-07 Dell Products, L.P. Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS)
US10346177B2 (en) 2016-12-14 2019-07-09 Intel Corporation Boot process with parallel memory initialization
KR20180083975A (ko) * 2017-01-13 2018-07-24 삼성전자주식회사 트레이닝 동작을 수행하는 메모리 시스템
US10474473B2 (en) 2017-04-11 2019-11-12 Intel Corporation Technology to facilitate rapid booting with high-speed and low-speed nonvolatile memory
KR20180126321A (ko) * 2017-05-17 2018-11-27 에스케이하이닉스 주식회사 메모리 장치 및 그것의 동작 방법
KR102353027B1 (ko) 2017-07-03 2022-01-20 삼성전자주식회사 스토리지 장치의 데이터 트레이닝 방법
KR102273191B1 (ko) * 2017-09-08 2021-07-06 삼성전자주식회사 스토리지 장치 및 그것의 데이터 트레이닝 방법
KR102340446B1 (ko) 2017-09-08 2021-12-21 삼성전자주식회사 스토리지 장치 및 그것의 데이터 트레이닝 방법
KR102365110B1 (ko) * 2017-09-13 2022-02-18 삼성전자주식회사 복수의 메모리 장치들에 대한 트레이닝 동작을 지원하는 버퍼 장치를 포함하는 메모리 모듈 및 이를 포함하는 메모리 시스템
KR102368966B1 (ko) 2017-10-23 2022-03-03 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치들을 포함하는 스토리지 장치, 그리고 제어기와 불휘발성 메모리 장치들 사이에서 데이터 입력 및 출력 라인들을 트레이닝하는 방법
KR102447493B1 (ko) * 2017-12-04 2022-09-26 삼성전자주식회사 랭크 단위로 메모리 장치를 트레이닝하는 전자 장치 및 그것의 메모리 트레이닝 방법
KR102445674B1 (ko) 2017-12-18 2022-09-22 삼성전자주식회사 선택적으로 메모리를 부팅시키도록 구성되는 램 컨트롤러 및 그 동작 방법
JP2020047340A (ja) * 2018-09-19 2020-03-26 キオクシア株式会社 不揮発性メモリ及びメモリシステム
KR20200052562A (ko) 2018-11-07 2020-05-15 삼성전자주식회사 스토리지 장치
US11139010B2 (en) * 2018-12-11 2021-10-05 SK Hynix Inc. Memory system and operating method of the memory system
US11270745B2 (en) * 2019-07-24 2022-03-08 Realtek Semiconductor Corp. Method of foreground auto-calibrating data reception window and related device
KR20220022407A (ko) * 2020-08-18 2022-02-25 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US20230368825A1 (en) 2023-11-16
US11756599B2 (en) 2023-09-12
CN114637460A (zh) 2022-06-17
US20220189521A1 (en) 2022-06-16

Similar Documents

Publication Publication Date Title
US11862234B2 (en) Memory device and operation method thereof
CN109471591B (zh) 存储设备及其数据训练方法
US20230368825A1 (en) Storage controller, storage device, and operation method of storage device
TWI537965B (zh) 取樣電路模組、記憶體控制電路單元及資料取樣方法
US10749728B1 (en) Signal calibration circuit, memory storage device and signal calibration method
CN105654986B (zh) 取样电路模块、存储器控制电路单元及数据取样方法
US10319455B2 (en) Semiconductor device
US10872645B1 (en) Semiconductor devices
US12008242B2 (en) Signal calibration method, memory storage device, and memory control circuit unit
CN113741602B (zh) 校准电路和该校准电路的操作方法
US10861518B2 (en) Delay control circuit and memory device having the same
TWI743538B (zh) 連接介面電路、記憶體儲存裝置及訊號產生方法
US11329641B2 (en) Buffer circuit and operating method thereof
US11276444B2 (en) Memory device and operating method thereof
CN112447210B (zh) 连接接口电路、存储器存储装置及信号产生方法
CN111585547B (zh) 信号校正电路、存储器存储装置及信号校正方法
TW202416273A (zh) 訊號校準方法、記憶體儲存裝置及記憶體控制電路單元
CN112309444A (zh) 存储器接口电路、存储器存储装置及设定状态检测方法