KR20180104839A - 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치 - Google Patents

데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치 Download PDF

Info

Publication number
KR20180104839A
KR20180104839A KR1020170031623A KR20170031623A KR20180104839A KR 20180104839 A KR20180104839 A KR 20180104839A KR 1020170031623 A KR1020170031623 A KR 1020170031623A KR 20170031623 A KR20170031623 A KR 20170031623A KR 20180104839 A KR20180104839 A KR 20180104839A
Authority
KR
South Korea
Prior art keywords
training
data transfer
program
read
timing
Prior art date
Application number
KR1020170031623A
Other languages
English (en)
Other versions
KR102375695B1 (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 KR1020170031623A priority Critical patent/KR102375695B1/ko
Priority to US15/785,617 priority patent/US10497451B2/en
Priority to CN201711242385.2A priority patent/CN108573730B/zh
Publication of KR20180104839A publication Critical patent/KR20180104839A/ko
Application granted granted Critical
Publication of KR102375695B1 publication Critical patent/KR102375695B1/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
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/32Timing circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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
    • 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/1694Configuration of memory controller to different memory types
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명의 실시 예에 따른 데이터 전송 트레이닝 방법은 호스트 장치로부터 프로그램 데이터 전송 트레이닝 커맨드가 수신되는지 또는 리드 데이터 전송 트레이닝 커맨드가 수신되는지 여부를 판단하는 단계; 프로그램 데이터 전송 트레이닝 커맨드가 수신되면, 비트레이닝 메모리 장치들로 노멀 프로그램 신호들을 전송하고, 상기 비트레이닝 메모리 장치들에서 노멀 프로그램 동작이 수행되는 동안 트레이닝 메모리 장치에 대한 프로그램 데이터 전송 트레이닝을 수행하는 단계; 및 리드 데이터 전송 트레이닝 커맨드가 수신되면, 상기 비트레이닝 메모리 장치들로 노멀 리드 신호들을 전송하고, 상기 비트레이닝 메모리 장치들에서 노멀 리드 동작이 수행되는 동안 상기 트레이닝 메모리 장치에 대한 리드 데이터 전송 트레이닝을 수행하는 단계를 포함한다.

Description

데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치{Data transfer training method and data storage device performing the same}
본 발명은 반도체 장치에 관한 것으로, 보다 구체적으로는 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치에서 사용되는 데이터를 저장하기 위해서 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 데이터 저장 장치는 USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, UFS(Universal Flash Storage) 장치, 솔리드 스테이트 드라이브(Solid State Drive)를 포함한다.
본 발명의 실시 예는 컨트롤러와 메모리 장치 간의 데이터 전송 페일을 방지할 수 있는 데이터 전송 트레이닝 방법 이를 수행하는 데이터 저장 장치를 제공하는 것이다.
본 발명의 실시 예에 따른 복수의 메모리 장치들 및 컨트롤러를 포함하는 데이터 저장 장치에서 수행되는 데이터 전송 트레이닝 방법은 호스트 장치로부터 프로그램 데이터 전송 트레이닝 커맨드가 수신되는지 또는 리드 데이터 전송 트레이닝 커맨드가 수신되는지 여부를 판단하는 단계; 상기 프로그램 데이터 전송 트레이닝 커맨드가 수신되면, 상기 복수의 메모리 장치들 중 비트레이닝 메모리 장치들로 노멀 프로그램 신호들을 전송하고, 상기 비트레이닝 메모리 장치들에서 노멀 프로그램 동작이 수행되는 동안 트레이닝 메모리 장치에 대한 프로그램 데이터 전송 트레이닝을 수행하는 단계; 및 상기 리드 데이터 전송 트레이닝 커맨드가 수신되면, 상기 비트레이닝 메모리 장치들로 노멀 리드 신호들을 전송하고, 상기 비트레이닝 메모리 장치들에서 노멀 리드 동작이 수행되는 동안 상기 트레이닝 메모리 장치에 대한 리드 데이터 전송 트레이닝을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 불휘발성 메모리 장치들을 포함하는 메모리 장치; 및 호스트 장치로부터 프로그램 데이터 전송 트레이닝 커맨드가 수신되면, 상기 복수의 불휘발성 메모리 장치들 중 비트레이닝 메모리 장치들에 대해서는 노멀 프로그램 동작들을 수행하고 및 상기 비트레이닝 메모리 장치들에서 상기 노멀 프로그램 동작들이 수행되는 동안 트레이닝 메모리 장치에 대해서는 프로그램 데이터 전송 트레이닝을 수행하는 컨트롤러를 포함한다. 상기 컨트롤러는 데이터 전송 타이밍 레지스터를 포함하는 랜덤 액세스 메모리; 상기 비트레이닝 메모리 장치들로 제공할 노멀 프로그램 신호들 및 상기 트레이닝 메모리 장치에 대한 상기 프로그램 데이터 전송 트레이닝을 수행하기 위한 버퍼 프로그램 신호를 생성하고, 생성된 신호들을 상기 메모리 장치로 제공하는 메모리 컨트롤 유닛; 및 상기 호스트 장치로부터의 상기 프로그램 데이터 전송 트레이닝 커맨드에 응답하여 상기 불휘발성 메모리 장치들에 대한 프로그램 데이터 전송 트레이닝을 수행하도록 상기 메모리 컨트롤 유닛을 제어하는 프로세서를 포함한다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 불휘발성 메모리 장치들을 포함하는 메모리 장치; 및 호스트 장치로부터 리드 데이터 전송 트레이닝 커맨드가 수신되면, 상기 복수의 불휘발성 메모리 장치들 중 비트레이닝 메모리 장치들에 대해서는 노멀 리드 동작들을 수행하고 및 상기 비트레이닝 메모리 장치들에서 상기 노멀 리드 동작들이 수행되는 동안 트레이닝 메모리 장치에 대한 리드 데이터 전송 트레이닝을 수행하는 컨트롤러를 포함한다. 상기 컨트롤러는 데이터 전송 타이밍 레지스터를 포함하는 랜덤 액세스 메모리; 상기 비트레이닝 메모리 장치들로 제공할 노멀 리드 신호들 및 상기 트레이닝 메모리 장치에 대한 상기 리드 데이터 전송 트레이닝을 수행하기 위한 버퍼 리드 신호를 생성하고, 생성된 신호들을 상기 메모리 장치로 제공하는 메모리 컨트롤 유닛; 및 상기 호스트 장치로부터의 상기 리드 데이터 전송 트레이닝 커맨드에 응답하여 상기 불휘발성 메모리 장치들에 대한 리드 데이터 전송 트레이닝을 수행하도록 상기 메모리 컨트롤 유닛을 제어하는 프로세서를 포함한다.
본 실시 예들에 따르면, 데이터 저장 장치에 포함된 모든 메모리 장치들에 대한 데이터의 유효성을 보장할 수 있는 공통 데이터 전송 윈도우를 설정할 수 있다.
이에 따라, 호스트 장치로부터의 프로그램 요청 또는 리드 요청에 대응하여 컨트롤러와 각 메모리 장치 사이에서 수행되는 데이터 전송의 페일 발생을 방지할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 개략적으로 도시한 블록도이다.
도 2는 데이터 전송 타이밍 레지스터의 일 예를 도시한 도면이다.
도 3은 도 1의 메모리 장치를 개략적으로 도시한 블록도이다.
도 4는 도 3의 메모리 장치에 포함된 하나의 불휘발성 메모리 장치를 개략적으로 도시한 블록도이다.
도 5는 본 발명의 실시 예에 따른 데이터 전송 트레이닝 방법을 도시한 순서도이다.
도 6은 도 5의 프로그램 데이터 전송 트레이닝 방법을 구체적으로 도시한 순서도이다.
도 7은 프로그램 데이터 전송 트레이닝 동작 시 컨트롤러에서 메모리 장치들로 프로그램 신호들이 제공되는 것을 예시적으로 도시한 도면이다.
도 8은 데이터 전송 타이밍 레지스터에 정의된 타이밍에 따라 프로그램 데이터 전송 트레이닝 동작이 수행되는 예를 나타내는 타이밍도이다.
도 9는 피크 전류 발생 시 프로그램 데이터 전송 트레이닝 동작이 시작되는 예를 나타내는 타이밍도이다.
도 10은 프로그램 데이터 전송 트레이닝 동작 시 저장된 프로그램 데이터를 리드하기 위한 신호가 컨트롤러에서 메모리 장치로 제공되는 것을 예시적으로 도시한 도면이다.
도 11은 트레이닝 메모리 장치에 저장된 프로그램 데이터를 리드하는 동작을 나타내는 타이밍도이다.
도 12는 복수의 메모리 장치들에 대한 공통 프로그램 데이터 전송 윈도우를 설정하는 것을 나타내는 도면이다.
도 13은 도 5의 리드 데이터 전송 트레이닝 방법을 구체적으로 도시한 순서도이다.
도 14는 리드 데이터 전송 트레이닝 동작 시 컨트롤러에서 메모리 장치들로 프로그램 신호들이 제공되는 것을 예시적으로 도시한 도면이다.
도 15는 메모리 장치들에서 프로그램 동작이 수행되는 것을 나타내는 타이밍도이다.
도 16은 리드 데이터 전송 트레이닝 동작 시 컨트롤러에서 메모리 장치들로 리드 신호들이 제공되는 것을 예시적으로 도시한 도면이다.
도 17은 데이터 전송 타이밍 레지스터에 정의된 타이밍에 따라 리드 데이터 전송 트레이닝 동작이 수행되는 예를 나타내는 타이밍도이다.
도 18은 피크 전류 발생 시 리드 데이터 전송 트레이닝 동작이 시작되는 예를 나타내는 타이밍도이다.
도 19는 복수의 메모리 장치들에 대한 공통 리드 데이터 전송 윈도우를 설정하는 것을 나타내는 도면이다.
도 20은 데이터 전송 윈도우를 나타내는 도면이다.
도 21은 피크 전류 발생 시점을 나타내는 도면이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 장치를 개략적으로 도시한 블록도이다.
본 실시 예에 따른 데이터 저장 장치(10)는 휴대폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트 장치(도시되지 않음)에 의해서 액세스되는 데이터를 저장할 수 있다. 데이터 저장 장치(10)는 메모리 시스템으로 불릴 수 있다.
데이터 저장 장치(10)는 호스트 장치(도시되지 않음)와 연결되는 인터페이스 프로토콜에 따라서 다양한 종류의 저장 장치들 중 어느 하나로 제조될 수 있다. 예를 들어, 데이터 저장 장치(10)는 솔리드 스테이트 드라이브(solid state drive, SSD), MMC, eMMC, RS-MMC, micro-MMC 형태의 멀티미디어 카드(multimedia card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(secure digital) 카드, USB(universal storage bus) 저장 장치, UFS(universal flash storage) 장치, PCMCIA(personal computer memory card international association) 카드 형태의 저장 장치, PCI(peripheral component interconnection) 카드 형태의 저장 장치, PCI-E(PCI-express) 카드 형태의 저장 장치, CF(compact flash) 카드, 스마트 미디어(smart media) 카드, 메모리 스틱(memory stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구성될 수 있다.
데이터 저장 장치(10)는 다양한 종류의 패키지(package) 형태들 중 어느 하나로 제조될 수 있다. 예를 들어, 데이터 저장 장치(10)는 POP(package on package), SIP(system in package), SOC(system on chip), MCP(multi-chip package), COB(chip on board), WFP(wafer-level fabricated package), WSP(wafer-level stack package) 등과 같은 다양한 종류의 패키지 형태들 중 어느 하나로 제조될 수 있다.
도 1을 참조하면, 데이터 저장 장치(10)는 메모리 장치(100) 및 컨트롤러(200)를 포함할 수 있다.
컨트롤러(200)는 데이터 저장 장치(10)의 제반 동작을 제어할 수 있다. 컨트롤러(200)는 펌웨어 또는 소프트웨어와 같은 코드 형태의 명령(instruction) 또는 알고리즘을 해독하고 구동할 수 있다. 컨트롤러(200)는 하드웨어, 또는 하드웨어와 소프트웨어가 조합된 형태로 구현될 수 있다.
컨트롤러(200)는 외부 장치, 예를 들어, 호스트 장치(도시되지 않음)로부터 커맨드(CMD) 및 어드레스(ADDR)와 같은 신호들을 수신하고, 수신된 신호들에 응답하여 메모리 장치(100)를 제어할 수 있다. 예를 들어, 컨트롤러(200)는 호스트 장치로부터 수신된 신호들에 응답하여 메모리 장치(100)에 저장된 데이터(DATA)를 독출하여 호스트 장치로 제공하거나 또는 호스트 장치로부터 수신된 데이터(DATA)를 메모리 장치(100)에 저장할 수 있다.
컨트롤러(200)는 호스트 인터페이스(Host I/F)(210), 프로세서(Processor)(220), 메모리 컨트롤 유닛(NFC)(230), 랜덤 액세스 메모리(RAM)(240), 및 데이터 비교기(Data comparator)(250)를 포함할 수 있다. 도 1에 도시하지는 않았으나, 컨트롤러(200)는 에러 정정 코드(error correction code, ECC) 유닛을 더 포함할 수 있다. 에러 정정 코드(ECC) 유닛은 호스트 장치로부터 수신된 데이터(DATA)에 대한 패리티 데이터를 생성하고, 패리티 데이터를 이용하여 메모리 장치(100)로부터 독출된 데이터(DATA)의 에러를 검출 및 정정할 수 있다.
호스트 인터페이스(210)는 호스트 장치의 프로토콜에 따라서, 호스트 장치와 컨트롤러(200)를 인터페이싱할 수 있다. 예를 들어, 호스트 인터페이스(210)는 DDR(double data rate), DDR2, DDR3, DDR4, LPDDR(low power DDR), USB(universal serial bus), UFS(universal flash storage), MMC(multimedia card), embedded MMC, ATA(advanced technology attachment), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), ESDI(enhanced small disk interface), IDE(integrated drive electronics), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI express) 프로토콜, 파이어와이어(firewire), NVMe(nonvolatile memory express) 등과 같은 다양한 인터페이스들 중 적어도 하나를 포함할 수 있다.
호스트 인터페이스(210)는 호스트 장치로부터 전송된 데이터 전송 트레이닝 커맨드(CMD_DTT, 도 7 참조)를 수신할 수 있다. 호스트 장치로부터 수신된 데이터 전송 트레이닝 커맨드(CMD_DTT)는 해당 커맨드가 프로그램 데이터 전송 트레이닝에 관한 것인지 또는 리드 데이터 전송 트레이닝에 관한 것인지에 대한 정보, 데이터 전송 타이밍에 대한 정보 등을 포함할 수 있으나, 특별히 이에 한정되는 것은 아니다. 여기에서, 프로그램 데이터 전송 트레이닝은 메모리 장치(100)에 저장될 프로그램 데이터를 컨트롤러(200)에서 메모리 장치(100)로 전송하는 트레이닝을 의미할 수 있다. 또한, 리드 데이터 전송 트레이닝은 메모리 장치(100)로부터 독출되어 컨트롤러(200)로 제공되는 리드 데이터를 컨트롤러(200)가 페치(fetch)하는 트레이닝을 의미할 수 있다.
프로세서(220)는 컨트롤러(200)의 제반 동작을 제어할 수 있다. 프로세서(220)는 랜덤 액세스 메모리(240)에 로딩된 코드 형태의 명령(instruction) 또는 알고리즘, 즉, 소프트웨어를 구동하고, 내부의 기능 블럭들의 동작을 제어할 수 있다. 프로세서(220)는 소프트웨어의 구동에 필요한 기능 블록들(도시되지 않음)을 포함할 수 있다. 프로세서(220)는 마이크로 컨트롤 유닛(micro control unit)(MCU), 중앙 처리 장치(central processing unit)(CPU)로 구성될 수 있다.
프로세서(220)는 호스트 장치로부터 데이터 전송 트레이닝 동작을 수행하기 위한 데이터 전송 트레이닝 커맨드(CMD_DTT)가 수신되는지 여부를 판단할 수 있다. 호스트 장치로부터 데이터 전송 트레이닝 커맨드(CMD_DTT)가 수신되면, 프로세서(220)는 해당 커맨드가 프로그램 데이터 전송 트레이닝 동작을 위한 커맨드인지 또는 리드 데이터 전송 트레이닝 동작을 위한 커맨드인지 여부를 판단할 수 있다.
호스트 장치로부터 수신된 데이터 전송 트레이닝 커맨드(CMD_DTT)가 프로그램 데이터 전송 트레이닝 커맨드이면, 프로세서(220)는 메모리 장치(100)와 프로그램 데이터 전송 트레이닝을 수행하도록 메모리 컨트롤 유닛(230)을 제어할 수 있다. 또한, 프로세서(220)는 호스트 장치로부터 수신된 데이터 전송 트레이닝 커맨드(CMD_DTT)가 리드 데이터 전송 트레이닝 커맨드이면, 프로세서(220)는 메모리 장치(100)와 리드 데이터 전송 트레이닝을 수행하도록 메모리 컨트롤 유닛(230)을 제어할 수 있다.
메모리 컨트롤 유닛(230)은 프로세서(220)의 제어에 따라서 메모리 장치(100)를 제어할 수 있다. 메모리 컨트롤 유닛(230)은 프로세서(220)의 제어에 따라 호스트 장치로부터 수신된 요청에 대응하는 제어 신호들을 생성하고, 생성된 제어 신호들을 메모리 장치(100)로 제공할 수 있다. 제어 신호들은 메모리 장치(100)를 제어하기 위한 명령 및 어드레스 등을 포함할 수 있다.
예를 들어, 메모리 컨트롤 유닛(230)은 호스트 장치의 프로그램 요청 및 프로그램할 논리 어드레스에 대응하는 제어 신호를 생성하고, 생성된 제어 신호와 호스트 장치로부터 전송된 프로그램 데이터를 함께 메모리 장치(100)로 제공할 수 있다. 또한, 메모리 컨트롤 유닛(230)은 호스트 장치의 리드 요청 및 리드할 논리 어드레스에 대응하는 제어 신호를 생성하고, 생성된 제어 신호를 메모리 장치(100)로 제공하고, 및 메모리 장치(100)로부터 독출된 리드 데이터를 제공받을 수 있다.
본 실시 예에서 메모리 컨트롤 유닛(230)은 프로세서(220)의 제어에 의해 메모리 장치(100)와의 데이터 전송 트레이닝, 예를 들어, 프로그램 데이터 전송 트레이닝 또는 리드 데이터 전송 트레이닝을 수행할 수 있다.
일반적으로, 컨트롤러(200)의 메모리 컨트롤 유닛(230)으로부터 메모리 장치(100)로 데이터(DATA)가 전송되거나 또는, 메모리 장치(100)로부터 메모리 컨트롤 유닛(230)으로 데이터(DATA)가 전송될 때, 전송되는 데이터(DATA)의 유효성이 보장되기 위해서는 도 20에 도시된 바와 같이, 데이터(DATA)의 레벨이 셋업 타임(setup time, ts) 및 홀드 타임(hold time, th) 동안 일정하게 유지되어야 한다. 이때, 셋업 타임(ts)의 시작 시점부터 홀드 타임(th)의 종료 시점까지를 데이터 전송 윈도우(data transfer window, DTW)라 한다. 즉, 데이터(DATA) 페일(fail) 발생되지 않기 위해서는 메모리 컨트롤 유닛(230)으로 전송되거나 또는, 메모리 장치(100)로 전송되는 데이터(DATA)는 데이터 전송 윈도우 범위 내에서 일정 레벨을 유지해야만 한다.
일반적으로, 컨트롤러(200)는 메모리 장치(100)에 포함된 복수의 불휘발성 메모리 장치(NVM, 도 3 참조)들에 대하여 하나의 데이터 전송 윈도우(DTW)를 적용한다. 이에 따라, 모든 불휘발성 메모리 장치(NVM)들에 대하여 데이터(DATA)의 유효성이 보장될 수 있는 최적의 공통 데이터 전송 윈도우(CDTW)를 설정하는 것이 중요하다. 공통 데이터 전송 윈도우(CDTW)는 복수의 불휘발성 메모리 장치(NVM)들 각각에 대한 데이터 전송 트레이닝을 수행하여 각 불휘발성 메모리 장치(NVM)에 대한 데이터 전송 윈도우(DTW)를 복수 개 획득하고, 복수의 데이터 전송 윈도우(DTW)들이 중첩되는 구간으로 설정될 수 있다.
본 실시 예에서는 데이터 저장 장치(10)가 사용자에 의해 사용되는 실제 상황과 유사한 상황에서 데이터 전송 트레이닝을 수행하여 각 불휘발성 메모리 장치(NVM)에 대하여 실질적으로 적용 가능한 데이터 전송 윈도우(DTW)를 획득할 수 있다.
이를 위해, 메모리 장치(100)에 포함된 복수의 불휘발성 메모리 장치(NVM)들 중 트레이닝할 하나의 불휘발성 메모리 장치(NVM)(이하, ‘트레이닝 메모리 장치’라 함)를 제외한 나머지 불휘발성 메모리 장치(NVM)들(이하, ‘비트레이닝 메모리 장치’라 함)에서 노멀 프로그램 동작 또는 노멀 리드 동작이 수행되는 동안 즉, 워스트(worst)한 상황에서 트레이닝 메모리 장치에 대한 프로그램 데이터 전송 트레이닝 또는 리드 데이터 전송 트레이닝을 수행하여 최적의 데이터 전송 윈도우(DTW)를 찾을 수 있는 방안을 제안한다.
호스트 장치로부터 프로그램 데이터 전송 트레이닝 요청 신호가 제공되면, 메모리 컨트롤 유닛(230)은 프로그램 데이터 전송 트레이닝을 수행하기 위한 트레이닝 제어 신호들을 생성하고, 생성된 제어 신호들을 이용하여 메모리 장치(100)와의 프로그램 데이터 전송 트레이닝을 수행할 수 있다.
프로그램 데이터 전송 트레이닝을 위한 제어 신호들은 메모리 장치(100)에 포함된 복수의 메모리 장치(NVM)들 중 비트레이닝 메모리 장치들로 전송될 노멀 프로그램 신호들, 트레이닝 메모리 장치로 전송될 버퍼 프로그램 신호, 및 트레이닝 메모리 장치로 전송될 버퍼 리드 신호 등을 포함할 수 있다.
노멀 프로그램 신호는 메모리 셀에 데이터를 저장하기 위한 프로그램 신호를 의미할 수 있다. 이에 따라, 노멀 프로그램 신호는 노멀 프로그램 커맨드, 메모리 셀에 대한 어드레스 정보(로우 어드레스 및 컬럼 어드레스), 및 프로그램 데이터 등을 포함할 수 있다.
버퍼 프로그램 신호는 페이지 버퍼에 데이터를 저장하기 위한 프로그램 신호를 의미할 수 있다. 이에 따라, 버퍼 프로그램 신호는 버퍼 프로그램 커맨드, 페이지 버퍼에 대한 어드레스 정보(컬럼 어드레스 및 플레인 어드레스 등)(이하, ‘버퍼 어드레스’라 함), 및 프로그램 데이터 등을 포함할 수 있다.
버퍼 리드 신호는 페이지 버퍼로부터 저장된 데이터를 독출하기 위한 리드 신호를 의미할 수 있다. 이에 따라, 버퍼 리드 신호는 버퍼 리드 커맨드, 및 버퍼 어드레스 등을 포함할 수 있다.
전술한 바와 같이, 비트레이닝 메모리 장치들에서 노멀 프로그램 동작이 수행되는 동안 트레이닝 메모리 장치에 대한 프로그램 데이터 전송 트레이닝을 수행하기 위하여 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들로 먼저 노멀 프로그램 신호들을 전송한 다음 트레이닝 메모리 장치로 버퍼 프로그램 신호를 전송할 수 있다.
구체적으로, 트레이닝 메모리 장치로 버퍼 프로그램 신호를 전송할 때, 메모리 컨트롤 유닛(230)은 트레이닝 메모리 장치로 버퍼 프로그램 신호 중 버퍼 프로그램 커맨드 및 버퍼 어드레스를 전송한 후, 랜덤 액세스 메모리(240)에 저장된 데이터 전송 타이밍 레지스터(DTTR)에 정의된 복수의 타이밍 세트(TS)들 중 선택된 하나의 타이밍 세트(S)에 포함된 타이밍들 각각에 맞춰 프로그램 데이터를 트레이닝 메모리 장치로 제공할 수 있다. 이때, 메모리 컨트롤 유닛(230)은 호스트 장치로부터 수신된 데이터 전송 타이밍 정보에 근거하여 데이터 전송 타이밍 레지스터(DTTR)에서 대응하는 하나의 타이밍 세트(TS)를 선택할 수 있다. 트레이닝 메모리 장치로 제공된 프로그램 데이터는 해당 트레이닝 메모리 장치의 페이지 버퍼에 저장될 수 있다.
메모리 컨트롤 유닛(230)은 트레이닝 메모리 장치로 버퍼 리드 신호를 전송하고, 트레이닝 메모리 장치는 수신된 버퍼 리드 신호에 응답하여 페이지 버퍼에 저장된 프로그램 데이터를 메모리 컨트롤 유닛(230)으로 제공할 수 있다. 메모리 컨트롤 유닛(230)은 트레이닝 메모리 장치로부터 제공된 프로그램 데이터를 대응하는 타이밍 정보와 매칭하여 랜덤 액세스 메모리(240)에 저장할 수 있다.
비트레이닝 메모리 장치들로 노멀 프로그램 신호들이 전송되고, 트레이닝 메모리 장치로 버퍼 프로그램 신호가 전송되고, 트레이닝 메모리 장치로부터 프로그램 데이터가 리드되고, 리드한 프로그램 데이터가 대응하는 타이밍 정보와 매칭되어 저장되는 일련의 동작들은 선택된 타이밍 세트(TS)에 포함된 각 타이밍 별로 반복하여 수행될 수 있으나, 특별히 이에 한정되는 것은 아니다.
예를 들어, 타이밍 세트(TS)가 제1 전송 타이밍 및 제2 전송 타이밍을 포함하는 것으로 가정하자.
이런 경우, 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들로 노멀 프로그램 신호들을 먼저 전송하고, 트레이닝 메모리 장치로 버퍼 프로그램 커맨드, 및 버퍼 어드레스를 전송하고, 제1 전송 타이밍에 프로그램 데이터를 트레이닝 메모리 장치로 전송하고, 트레이닝 메모리 장치로부터 프로그램 데이터를 리드하고, 리드한 프로그램 데이터를 제1 전송 타이밍과 매칭하여 저장할 수 있다.
이후, 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들로 노멀 프로그램 신호들을 먼저 전송하고, 트레이닝 메모리 장치로 버퍼 프로그램 커맨드, 버퍼 어드레스를 전송하고, 제2 전송 타이밍에 프로그램 데이터를 트레이닝 메모리 장치로 전송하고, 트레이닝 메모리 장치로부터 프로그램 데이터를 리드하고, 리드한 프로그램 데이터를 제2 전송 타이밍과 매칭하여 저장할 수 있다.
한편, 호스트 장치로부터 리드 데이터 전송 트레이닝 요청 신호가 제공되면, 메모리 컨트롤 유닛(230)은 리드 데이터 전송 트레이닝을 수행하기 위한 트레이닝 제어 신호들을 생성하고, 생성된 제어 신호들을 이용하여 메모리 장치(100)와의 리드 데이터 전송 트레이닝을 수행할 수 있다.
리드 데이터 전송 트레이닝을 위한 제어 신호들은 메모리 장치(100)에 포함된 복수의 메모리 장치(NVM)들 중 비트레이닝 메모리 장치들로 전송될 노멀 프로그램 신호들 및 노멀 리드 신호들, 트레이닝 메모리 장치로 전송될 버퍼 프로그램 신호 및 버퍼 리드 신호 등을 포함할 수 있다.
노멀 리드 신호는 메모리 셀로부터 데이터를 독출하기 위한 리드 신호를 의미할 수 있다. 이에 따라 노멀 리드 신호는 노멀 리드 커맨드, 및 메모리 셀에 대한 어드레스 정보(로우 어드레스 및 컬럼 어드레스) 등을 포함할 수 있다. 이외, 노멀 프로그램 신호, 버퍼 프로그램 신호, 및 버퍼 리드 신호는 위에서 설명하였으므로 이에 대한 구체적인 설명은 생략한다.
메모리 컨트롤 유닛(230)은 트레이닝 메모리 장치 및 비트레이닝 메모리 장치들에 각각 버퍼 프로그램 신호 및 노멀 프로그램 신호들을 전송하여 트레이닝 메모리 장치의 페이지 버퍼 및 비트레이닝 메모리 장치들의 메모리 셀들에 데이터(즉, 리드 데이터 전송 트레이닝 수행을 위한 데이터)를 저장할 수 있다.
이후, 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들에서 각각 노멀 리드 동작이 수행되도록 비트레이닝 메모리 장치들에 노멀 리드 커맨드를 전송하고, 트레이닝 메모리 장치로 버퍼 리드 신호를 전송하고, 트레이닝 메모리 장치로부터 제공되는 리드 데이터를 데이터 전송 타이밍 레지스터(DTTR)의 복수의 타이밍 세트(TS)들 중 선택된 하나의 타이밍 세트(TS)에 포함된 타이밍들 각각에 맞춰 페치할 수 있다.
메모리 컨트롤 유닛(230)은 각 타이밍 별로 페치된 리드 데이터들을 각각 대응하는 타이밍 정보들과 매칭하여 랜덤 액세스 메모리(240)에 저장할 수 있다.
비트레이닝 메모리 장치들 각각에서 한 번의 노멀 리드 동작이 수행되는 동안 트레이닝 메모리 장치로부터 제공되는 리드 데이터는 선택된 타이밍 세트(TS)에 포함된 타이밍들의 수만큼 반복하여 페치될 수 있으나, 특별히 이에 한정되는 것은 아니다.
즉, 프로그램 데이터 전송 트레이닝을 수행할 때 비트레이닝 메모리 장치들에서는 타이밍 세트(TS)에 포함된 타이밍들의 수만큼 노멀 프로그램 동작이 수행되는 반면, 리드 데이터 전송 트레이닝을 수행할 때 비트레이닝 메모리 장치들에서는 한 번의 노멀 리드 동작이 수행될 수 있다.
랜덤 액세스 메모리(240)는 프로세서(220)에 의해 구동되는 펌웨어 또는 소프트웨어를 저장할 수 있다. 또한, 랜덤 액세스 메모리(240)는 펌웨어 또는 소프트웨어의 구동에 필요한 데이터들을 저장하도록 구성될 수 있다. 즉, 랜덤 액세스 메모리(240)는 프로세서(220)의 동작 메모리(working memory)로서 동작할 수 있다.
랜덤 액세스 메모리(240)는 호스트 장치로부터 저장 장치(100)로 전송될 데이터 즉, 프로그램 데이터 또는 메모리 장치(100)로부터 호스트 장치로 전송될 데이터 즉, 리드 데이터를 임시 저장하도록 구성될 수 있다. 즉, 랜덤 액세스 메모리(240)는 버퍼 메모리(buffer memory)로서 동작할 수 있다.
랜덤 액세스 메모리(240)는 데이터 전송 타이밍 레지스터(DTTR)를 포함할 수 있다. 데이터 전송 타이밍 레지스터(DTTR)는 컨트롤러(200)와 메모리 장치(100) 간의 데이터 전송 트레이닝 시 컨트롤러(200)에서 메모리 장치(100)로 프로그램 데이터가 제공되는 복수의 타이밍들 또는 메모리 장치(100)로부터 제공되는 리드 데이터를 컨트롤러(200)가 페치하는 복수의 타이밍들을 저장할 수 있다.
도 2에 데이터 전송 타이밍 레지스터(DTTR)를 예시적으로 도시하였다.
도 2를 참조하면, 데이터 전송 타이밍 레지스터(DTTR)는 복수의 타이밍 세트들(TS1 ~ TSi)을 포함할 수 있다. 각 타이밍 세트(TS)는 전송 시작 타이밍(tsrt), 전송 간격(titv), 및 전송 종료 타이밍(tend)를 포함할 수 있다. 예를 들어, 전송 시작 타이밍(tsrt)은 데이터의 제공(또는 페치)이 시작되는 타이밍을 의미할 수 있다. 전송 종료 타이밍(tend)은 데이터의 제공(또는 페치)가 종료되는 타이밍을 의미할 수 있다. 전송 간격(titv)은 전송 시작 타이밍(tsrt)과 전송 종료 타이밍(tend) 사이에 존재하는 복수의 데이터의 제공(또는 페치) 타이밍들 간의 간격을 의미할 수 있다.
전송 시작 타이밍(tsrt)은 데이터 스트로브 신호(DQS, 도 20 참조)가 ‘로우’에서 ‘하이’로 천이되는 시점을 기준으로 설정될 수 있다. 예를 들어, 전송 시작 타이밍(tsrt)은 데이터 스트로브 신호(DQS)가 ‘하이’가 되는 시점부터 일정 시간이 지연된 시점으로 설정될 수 있으나, 특별히 이에 한정되는 것은 아니다.
데이터 전송 트레이닝 시 컨트롤러(200)와 메모리 장치(100) 간의 데이터 제공(또는 페치) 횟수는 전송 간격(titv)에 의해 조절될 수 있다. 예를 들어, 전송 간격(titv)을 감소시키면 데이터 제공(또는 페치) 횟수는 증가될 수 있고, 전송 간격(titv)을 증가시키면 데이터 제공(또는 페치) 횟수는 감소될 수 있다.
데이터 전송 타이밍 레지스터(DTTR)에 포함된 각 타이밍 세트(TS)는 서로 같거나 또는, 서로 다른 전송 시작 타이밍(tsrt), 전송 간격(titv), 및 전송 종료 타이밍(tend)을 포함할 수 있다.
데이터 비교기(250)는 랜덤 액세스 메모리(240)에 저장된 리드한 프로그램 데이터들(또는 페치한 리드 데이터들)과 기준 데이터를 각각 비교하여 리드한 프로그램 데이터들(또는 페치한 리드 데이터들) 각각의 페일 비트 수를 연산할 수 있다. 테스트 대상 데이터와 기준 데이터를 비교하여 테스트 대상 데이터의 페일 비트 수를 연산하는 기술은 당 기술 분야에서 널리 알려진 기술에 해당하므로, 이에 대한 상세한 설명은 생략한다.
프로세서(220)는 데이터 비교기(250)에서 연산된 리드한 프로그램 데이터들(또는 페치한 리드 데이터들) 각각의 페일 비트 수를 기 설정된 임계 값과 비교할 수 있다. 프로세서(220)는 페일 비트 수가 기 설정된 임계 값 이하인 리드한 프로그램 데이터들(또는 페치한 리드 데이터들) 각각에 대응하는 프로그램 데이터 전송 타이밍들(또는 리드 데이터 전송 타이밍들)을 모두 포함하는 프로그램 데이터 전송 윈도우(또는 리드 데이터 전송 윈도우)를 대응하는 트레이닝 메모리 장치에 대한 정보(예를 들어, 식별 정보)와 매칭하여 랜덤 액세스 메모리(240)에 저장할 수 있다.
또한, 프로세서(220)는 메모리 장치(100)에 포함된 모든 불휘발성 메모리 장치(NVM)들 각각에 대한 프로그램 데이터 전송 트레이닝(또는 리드 데이터 전송 트레이닝)이 완료될 때마다, 각 불휘발성 메모리 장치에 대한 정보 및 대응하는 프로그램 데이터 전송 윈도우(또는 리드 데이터 전송 윈도우)를 매칭하여 랜덤 액세스 메모리(240)에 저장할 수 있다.
또한, 프로세서(220)는 메모리 장치(100)의 모든 불휘발성 메모리 장치(NVM)들에 대한 프로그램 데이터 전송 트레이닝(또는 리드 데이터 전송 트레이닝)이 완료되면, 랜덤 액세스 메모리(240)에 저장된 각 불휘발성 메모리 장치(NVM) 별 프로그램 데이터 전송 윈도우들(또는 리드 데이터 전송 윈도우들)이 중첩하는 구간을 메모리 장치(100)에 대한 공통 프로그램 데이터 전송 윈도우(또는 공통 리드 데이터 전송 윈도우)로 설정할 수 있다.
이와 같이 설정된 공통 프로그램 데이터 전송 윈도우 및 공통 리드 데이터 전송 윈도우는 메모리 장치(100)에 포함된 적어도 하나의 불휘발성 메모리 장치(NVM)의 시스템 데이터 영역(도시되지 않음)에 저장될 수 있으며, 이후 데이터 저장 장치(10)의 실제 동작 시 적용될 수 있다.
프로세서(220)는 비트레이닝 메모리 장치들로 피크 전류 발생 여부를 나타내는 상태 정보를 요청하도록 메모리 컨트롤 유닛(230)을 제어할 수 있다. 일반적으로, 불휘발성 메모리 장치(NVM)들은 도 21에 도시한 바와 같이, 프로그램 동작 시에는 검증 바이어스(verify bias)가 인가되는 시점 및 리드 동작 시에는 리드 바이어스(read bias)가 인가되는 시점에서 피크 전류가 발생할 수 있다. 피크 전류가 발생되는 것은 데이터 저장 장치(10)의 전력 소모가 증가하는 것을 의미하므로, 이런 경우 컨트롤러(200)와 메모리 장치(100) 중 일부의 불휘발성 메모리 장치(NVM)들 간의 데이터(DATA) 전송이 실패할 가능성이 높을 수 있다.
본 실시 예에서는 보다 워스트(worst)한 상황에서 컨트롤러(200)와 메모리 장치(100) 간의 데이터 전송 트레이닝을 수행하기 위하여 비트레이닝 메모리 장치들로부터 피크 전류 발생 여부에 대한 상태 정보를 요청하고, 피크 전류 발생 정보가 수신되면, 트레이닝 메모리 장치에 프로그램 데이터를 제공하는 동작 또는 트레이닝 메모리 장치로부터 제공되는 리드 데이터를 페치하는 동작의 수행을 시작할 수 있다.
이를 위해, 불휘발성 메모리 장치(NVM)들은 각각 피크 전류 발생 여부를 나타내는 상태 정보를 저장하기 위한 상태 레지스터(도시되지 않음)를 포함할 수 있으며, 메모리 컨트롤 유닛(230)으로부터 피크 전류 발생 여부에 대한 상태 정보를 요청하는 신호가 수신될 때마다 해당 상태 정보를 제공할 수 있다.
메모리 장치(100)는 데이터 저장 장치(10)의 저장 매체로서 동작할 수 있다. 메모리 장치(100)는 채널(CH)을 통해 컨트롤러(200), 예를 들어, 메모리 컨트롤 유닛(230)과 통신할 수 있다.
도 3은 도 1의 메모리 장치를 개략적으로 도시한 블록도이다.
도 3을 참조하면, 메모리 장치(100)는 복수의 불휘발성 메모리 장치(NVM)들을 포함할 수 있다. 메모리 장치(100)와 메모리 컨트롤 유닛(230)을 연결하는 채널(CH)은 복수 개일 수 있다. 복수의 채널(CH1 ~ CHn)에는 복수의 불휘발성 메모리 장치(NVM)들을 포함하는 복수의 메모리 그룹들(NVMG1 ~ NVMGm)들이 각각 연결될 수 있다.
예를 들어, 제1 메모리 그룹(NVMG1)은 제1 채널(CH1)을 통해 메모리 컨트롤 유닛(230)과 통신할 수 있다. 제1 메모리 그룹(NVMG1)에 포함된 복수의 불휘발성 메모리 장치(NVM)들은 제1 채널(CH1)을 통해 수신되는 복수의 칩 활성화 신호들에 의해 각각 동작할 수 있다.
복수의 불휘발성 메모리 장치(NVM)들은 각각 메모리 셀에 따라서 낸드(NAND) 플래시 메모리 장치, 노어(NOR) 플래시 메모리 장치, 강유전체 커패시터를 이용한 강유전체 램(ferroelectric random access memory, FRAM), 티엠알(tunneling magneto-resistive, TMR) 막을 이용한 마그네틱 램(magnetic random access memory, MRAM), 칼코겐 화합물(chalcogenide alloys)을 이용한 상 변화 램(phase change random access memory, PRAM), 전이 금속 화합물(transition metal oxide)을 이용한 저항성 램(resistive random access memory, RERAM) 등과 같은 다양한 형태의 불휘발성 메모리 소자들 중 어느 하나로 구성될 수 있다.
도 4는 도 3의 메모리 장치에 포함된 하나의 불휘발성 메모리 장치를 개략적으로 도시한 블록도이다.
도 4를 참조하면, 불휘발성 메모리 장치(NVM)는 메모리 셀 어레이(110), 주변 회로(120) 및 제어 로직(130)를 포함할 수 있다.
메모리 셀 어레이(110)는 복수의 플레인(plane)들을 포함할 수 있다. 예를 들어, 메모리 셀 어레이(110)는 제1 플레인(PL1) 및 제2 플레인(PL2)을 포함할 수 있으나, 특별히 이에 한정되는 것은 아니다. 제1 및 제2 플레인들(PL1, PL2)은 각각 복수의 메모리 블록들(도시되지 않음)을 포함할 수 있다. 복수의 메모리 블록들은 각각 복수의 메모리 셀들(도시되지 않음)을 포함할 수 있다.
제1 플레인(PL1)에 포함된 복수의 메모리 블록들은 복수의 제1 비트 라인들(BL1)을 공유할 수 있다. 제2 플레인(PL2)에 포함된 복수의 메모리 블록들은 제1 비트 라인들(BL1)과 다른 복수의 제2 비트 라인들(BL2)을 공유할 수 있다.
주변 회로(120)는 전압 생성 회로(121), 로우 디코더(122), 페이지 버퍼부(123), 컬럼 디코더(124), 및 입출력 회로(125)를 포함할 수 있다.
전압 생성 회로(121)는 프로그램 신호(PGM) 또는 리드 신호(READ)에 응답하여 프로그램 전압(VP) 또는 리드 전압(VR)을 생성할 수 있다. 프로그램 전압(VP) 또는 리드 전압(VR) 외에도, 전압 생성 회로(121)는 각종 동작에 필요한 다양한 전압들을 생성할 수 있다.
로우 디코더(122)는 전압 생성 회로(121)에서 출력된 전압들을 로우 어드레스(ADDR_R)에 응답하여 선택된 메모리 블록에 전달할 수 있다. 예를 들어, 로우 디코더(122)는 프로그램 전압(VP) 또는 리드 전압(VR)을 선택된 메모리 블록에 연결된 워드 라인들(WL)에 전달할 수 있다.
페이지 버퍼부(123)는 복수의 페이지 버퍼(PB)들을 포함할 수 있다. 예를 들어, 페이지 버퍼부(123)는 메모리 셀 어레이(110)의 제1 플레인(PL1)에 연결된 제1 페이지 버퍼(PB1) 및 제2 플레인(PL2)에 연결된 제2 페이지 버퍼(PB2)를 포함할 수 있다. 제1 페이지 버퍼(PB1)는 제1 플레인(PL1)에 연결된 제1 비트 라인들(BL1)에 연결될 수 있다. 제2 페이지 버퍼(PB2)는 제2 플레인(PL2)에 연결된 제2 비트 라인들(BL2)에 연결될 수 있다.
페이지 버퍼부(123)에 포함된 제1 페이지 버퍼(PB1) 및 제2 페이지 버퍼(PB2)는 제어 로직(130)으로부터 제공되는 페이지 버퍼 제어 신호들(PBS)에 의해 동작할 수 있다. 페이지 버퍼 제어 신호들(PBS)은 상술한 버퍼 프로그램 신호 및 버퍼 리드 신호와 관련된 신호들일 수 있다.
컬럼 디코더(124)는 컬럼 어드레스(ADDR_C)에 응답하여 컬럼 라인들(CL)을 통해 인가된 데이터를 페이지 라인들(PL)을 통해 페이지 버퍼부(123)에 전달할 수 있다.
입출력 회로(225)는 제어 로직(130)으로부터 제공되는 입출력 신호(IOS)에 응답하여 데이터(DATA)를 입출력할 수 있다. 예를 들어, 입출력 회로(125)는 외부로부터 입력된 데이터(DATA)를 컬럼 라인들(CL)을 통해 컬럼 디코더(124)에 전달하거나 또는, 메모리 셀 어레이(110)로부터 컬럼 라인들(CL)을 통해 전달받은 데이터(DATA)를 외부로 출력할 수 있다. 여기에서, 외부는 호스트 장치를 의미할 수 있다.
제어 로직(130)은 프로세서(220)로부터 전달되는 프로그램 커맨드(CMD_P), 리드 커맨드(CMD_R), 및 어드레스(ADDR)에 응답하여 주변 회로(120)를 제어할 수 있다.
도 4에 도시된 바와 같이, 불휘발성 메모리 장치(NVM)의 메모리 셀 어레이(110)가 두 개의 플레인 즉, 제1 플레인(PL1) 및 제2 플레인(PL2)으로 구성되는 경우, 본 실시 예에 따른 데이터 전송 트레이닝은 각 플레인 별로 수행될 수 있다.
예를 들어, 트레이닝 메모리 장치의 제1 플레인(PL1)에 대하여 프로그램 데이터 전송 트레이닝을 수행하는 경우, 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들뿐만 아니라 트레이닝 메모리 장치의 제2 플레인(PL2)에도 노멀 프로그램 신호를 전송하고, 비트레이닝 메모리 장치들 및 트레이닝 메모리 장치의 제2 플레인(PL2)에서 노멀 프로그램 동작이 수행되는 동안 트레이닝 메모리 장치의 제1 플레인(PL1)에 대한 프로그램 데이터 전송 트레이닝을 수행할 수 있다.
또한, 트레이닝 메모리 장치의 제1 플레인(PL1)에 대하여 리드 데이터 전송 트레이닝을 수행하는 경우, 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들 및 트레이닝 메모리 장치의 제2 플레인(PL2)에는 노멀 프로그램 신호를 전송하고, 트레이닝 메모리 장치의 제1 플레인(PL1)에는 버퍼 프로그램 신호를 전송하여 데이터를 저장할 수 있다. 이후, 비트레이닝 메모리 장치들 및 트레이닝 메모리 장치의 제2 플레인(PL2)에 노멀 리드 신호를 전송하여 비트레이닝 메모리 장치들 및 트레이닝 메모리 장치의 제2 플레인(PL2)에서 노멀 리드 동작이 수행되는 동안 트레이닝 메모리 장치의 제1 플레인(PL1)에 대한 리드 데이터 전송 트레이닝을 수행할 수 있다.
본 실시 예에서는 설명의 편의를 위하여 불휘발성 메모리 장치(NVM)가 하나의 플레인으로 구성된 것을 예를 들어 설명할 것이다.
도 5는 본 발명의 실시 예에 따른 데이터 전송 트레이닝 방법을 도시한 순서도이다.
S100 단계에서, 컨트롤러(200)의 프로세서(220)는 호스트 장치로부터 데이터 전송 트레이닝 커맨드가 수신되는지 여부를 판단할 수 있다. 호스트 장치로부터 데이터 전송 트레이닝 커맨드가 수신되면, S200 단계가 수행될 수 있다.
S200 단계에서, 프로세서(220)는 호스트 장치로부터 수신된 데이터 전송 트레이닝 커맨드가 프로그램 데이터 전송 트레이닝 커맨드인지 또는 리드 데이터 전송 트레이닝 커맨드인지 여부를 판단할 수 있다. 호스트 장치로부터 수신되는 데이터 전송 트레이닝 커맨드는 커맨드 종류에 대한 정보 및 전송 타이밍에 대한 정보 등을 포함할 수 있다. 이에 따라, 프로세서(220)는 해당 정보들에 근거하여 호스트 장치로부터 수신된 데이터 전송 트레이닝 커맨드가 프로그램 데이터 전송 트레이닝 커맨드인지 또는 리드 데이터 전송 트레이닝 커맨드인지 여부를 판단할 수 있다.
호스트 장치로부터 수신된 데이터 전송 트레이닝 커맨드가 프로그램 데이터 전송 트레이닝 커맨드이면, 프로세서(220)는 S300 단계를 수행할 수 있다. 한편, 호스트 장치로부터 수신된 데이터 전송 트레이닝 커맨드가 리드 데이터 전송 트레이닝 커맨드이면, 프로세서(220)는 S400 단계를 수행할 수 있다.
S300 단계에서, 컨트롤러(200)는 메모리 장치(100)에 포함된 복수의 불휘발성 메모리 장치(NVM)들 중 비트레이닝 메모리 장치들로 노멀 프로그램 신호들을 먼저 전송하고, 비트레이닝 메모리 장치들에서 노멀 프로그램 동작들이 수행되는 동안 트레이닝 메모리 장치에 대한 프로그램 데이터 전송 트레이닝을 수행할 수 있다. 트레이닝 메모리 장치에 대한 프로그램 데이터 전송 트레이닝의 구체적인 방법은 이후 도 6 내지 12를 참조하여 상세하게 설명될 것이다.
S400 단계에서, 컨트롤러(200)는 메모리 장치(100)에 포함된 복수의 불휘발성 메모리 장치(NVM)들 중 비트레이닝 메모리 장치들로 노멀 리드 신호들을 먼저 전송하고, 비트레이닝 메모리 장치들에서 노멀 리드 동작들이 수행되는 동안 트레이닝 메모리 장치에 대한 리드 데이터 전송 트레이닝을 수행할 수 있다. 트레이닝 메모리 장치에 대한 리드 데이터 전송 트레이닝의 구체적인 방법은 이후 도 13 내지 19를 참조하여 상세하게 설명될 것이다.
도 6은 도 5의 프로그램 데이터 전송 트레이닝 방법을 구체적으로 도시한 순서도이고, 도 7은 프로그램 데이터 전송 트레이닝 동작 시 컨트롤러에서 메모리 장치들로 프로그램 신호들이 제공되는 것을 예시적으로 도시한 도면이다.
도 8은 데이터 전송 타이밍 레지스터에 정의된 타이밍에 따라 프로그램 데이터 전송 트레이닝 동작이 수행되는 예를 나타내는 타이밍도이고, 도 9는 피크 전류 발생 시 프로그램 데이터 전송 트레이닝 동작이 시작되는 예를 나타내는 타이밍도이다.
도 10은 프로그램 데이터 전송 트레이닝 동작 시 저장된 프로그램 데이터를 리드하기 위한 신호가 컨트롤러에서 메모리 장치로 제공되는 것을 예시적으로 도시한 도면이고, 도 11은 트레이닝 메모리 장치에 저장된 프로그램 데이터를 리드하는 동작을 나타내는 타이밍도이고, 및 도 12는 복수의 메모리 장치들에 대한 공통 프로그램 데이터 전송 윈도우를 설정하는 것을 나타내는 도면이다.
도 6을 참조하여 프로그램 데이터 전송 트레이닝 방법을 설명함에 있어서, 도 7 내지 도 12가 참조될 것이다. 또한, 설명의 편의를 위하여 도 6에서는 메모리 장치(100)가 제1 내지 제4 불휘발성 메모리 장치들(NVM1 내지 NVM4)를 포함하는 것으로 가정한다. 또한, 제1 내지 제4 불휘발성 메모리 장치들(NVM1 ~ NVM4) 중 제1 불휘발성 메모리 장치(NVM1)를 트레이닝 메모리 장치로 가정하고, 나머지 제2 내지 제4 불휘발성 메모리 장치들(NVM2 ~ NVM4)를 비트레이닝 메모리 장치들로 가정한다. 도 6을 참조하여 설명되는 프로그램 데이터 전송 트레이닝은 제1 불휘발성 메모리 장치(NVM1)부터 제4 불휘발성 메모리 장치(NVM4)까지 순차적으로 수행될 수 있으나, 특별히 이에 한정되는 것은 아니다.
S301 단계에서, 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들(NVM2 ~ NVM4)로 노멀 프로그램 신호들(NPS1 ~ NPS3)을 전송할 수 있다. 도 7에서는 제2 불휘발성 메모리 장치(NVM2)부터 제4 불휘발성 메모리 장치(NVM4)까지 순차적으로 노멀 프로그램 신호가 전송되는 것으로 도시하였으나, 비트레이닝 메모리 장치들(NVM2 ~ NVM4)에 대한 노멀 프로그램 신호의 전송 순서가 특별히 이에 한정되는 것은 아니다.
S303 단계에서, 메모리 컨트롤 유닛(230)은 트레이닝 메모리 장치(NVM1)로 버퍼 프로그램 신호(BPS)를 전송할 수 있다. 즉, 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들(NVM2 ~ NVM4)로의 노멀 프로그램 신호들(NPS1 ~ NPS3)의 전송이 완료된 후 트레이닝 메모리 장치(NVM1)로 버퍼 프로그램 신호(BPS)를 전송할 수 있다.
또한, S301 단계에서 노멀 프로그램 신호들(NPS1 ~ NPS3)을 수신한 비트레이닝 메모리 장치들(NVM2 ~ NVM4)에서 노멀 프로그램 동작들이 수행되는 동안 메모리 컨트롤 유닛(230)은 데이터 전송 타이밍 레지스터(DTTR)에서 선택된 타이밍 세트(TS)의 타이밍들에 따라 트레이닝 메모리 장치(NVM1)로의 프로그램 데이터 제공을 시작할 수 있다.
이때, 메모리 컨트롤 유닛(230)은 데이터 스트로브 신호(DQS)를 생성 및 출력할 수 있으며, 데이터 스트로브 신호(DQS)에 동기하여 프로그램 데이터 제공을 시작할 수 있다.
예를 들어, 도 8에 도시된 바와 같이, 메모리 컨트롤 유닛(230)은 데이터 스트로브 신호(DQS)가 ‘로우’에서 ‘하이’로 천이된 시점부터 일정 시간 지연된 시점으로 설정된 전송 시작 타이밍(tsrt)에 맞춰 트레이닝 메모리 장치(NVM1)로의 프로그램 데이터 제공을 시작할 수 있다. 이와 같이 제공된 프로그램 데이터는 트레이닝 메모리 장치(NVM1)의 페이지 버퍼(123)에 저장될 수 있다. 설명의 편의를 위하여 전송 시작 타이밍(tsrt)에 메모리 컨트롤 유닛(230)으로부터 트레이닝 메모리 장치(NVM1)로 제공된 프로그램 데이터를 제1 데이터(D1, 도 8 참조)라 한다.
한편, 메모리 컨트롤 유닛(230)은 도 9에 도시된 바와 같이, 비트레이닝 메모리 장치들(NVM2 ~ NVM4) 중 적어도 하나의 비트레이닝 메모리 장치로부터 피크 전류의 발생을 나타내는 상태 정보가 수신될 때까지 프로그램 데이터를 트레이닝 메모리 장치(NVM1)로 제공하지 않을 수 있다. 즉, 메모리 컨트롤 유닛(230)은 데이터 스트로브 신호(DQS)가 ‘로우’에서 ‘하이’로 천이된 시점부터 트레이닝 메모리 장치(NVM1)로부터 수신된 피크 전류 신호(PCS)가 ‘로우’에서 ‘하이’가 될 때까지 프로그램 데이터를 트레이닝 메모리 장치(NVM1)로 제공하지 않을 수 있다. 이후, 피크 전류 신호(PCS)가 ‘로우’에서 ‘하이’로 천이되면, 메모리 컨트롤 유닛(230)은 그 시점을 전송 시작 타이밍(tsrt)으로 하여 프로그램 데이터의 제공을 시작할 수 있다.
S305 단계에서, 메모리 컨트롤 유닛(230)은 트레이닝 메모리 장치(NVM1)의 페이지 버퍼(123)로부터 제1 데이터(D1)를 리드하고, 리드한 제1 데이터(D1)를 대응하는 전송 타이밍과 매칭하여 랜덤 액세스 메모리(240)의 임의의 영역에 저장할 수 있다.
예를 들어, 도 10에 도시한 바와 같이, 메모리 컨트롤 유닛(230)은 트레이닝 메모리 장치(NVM1)로 버퍼 리드 신호(BRS)를 전송할 수 있다. 버퍼 리드 신호(BRS)를 수신한 트레이닝 메모리 장치(NVM1)는 도 11에 도시한 바와 같이, 데이터 스트로브 신호(DQS)에 동기하여 제1 데이터(D1)를 메모리 컨트롤 유닛(230)으로 전송할 수 있다.
S307 단계에서, 메모리 컨트롤 유닛(230)은 프로그램 데이터를 트레이닝 메모리 장치(NVM1)로 제공한 현재의 타이밍이 전송 종료 타이밍(tend)인지 여부를 판단할 수 있다. 전송 종료 타이밍(tend)으로 판단되면, 메모리 컨트롤 유닛(230)은 S309 단계를 수행할 수 있다. 전송 종료 타이밍(tend)이 아닌 것으로 판단되면, 메모리 컨트롤 유닛(230)은 S301 단계로 돌아가 다음 타이밍에 대한 프로그램 데이터 전송 트레이닝을 수행할 수 있다.
프로그램 데이터 전송 트레이닝을 위한 데이터 전송 타이밍 세트(TS)는 도 8에 도시한 바와 같이, 전송 시작 타이밍(tsrt), 전송 종료 타이밍(tend), 및 전송 시작 타이밍(tsrt)과 전송 종료 타이밍(tend) 사이에 일정한 전송 간격(titv)으로 존재하는 복수의 타이밍들을 포함할 수 있다.
이에 따라, 하나의 불휘발성 메모리 장치(NVM)에 대하여 S301 내지 S307 단계들은 타이밍 세트(TS)에 포함된 타이밍들의 수만큼 반복하여 수행될 수 있다. 예를 들어, 타이밍 세트(TS)가 전송 시작 타이밍(tsrt)과 전송 종료 타이밍(tend)을 포함하여 총 6번의 전송 타이밍을 포함한다고 가정할 때, 하나의 불휘발성 메모리 장치(NVM)에 대하여 S301 내지 S307 단계들은 총 6회 반복하여 수행될 수 있다. 도 8 및 도 9에서는 S301 내지 S307 단계들이 총 6회 반복하여 수행된 것을 도시하였다. 이에 따라, 랜덤 액세스 메모리(240)에는 제1 내지 제6 데이터들(D1 ~ D6)과 제1 내지 제6 데이터들(D1 ~ D6) 각각에 대응하는 전송 타이밍들(t1 ~ t6)이 매칭되어 저장될 수 있다.
S309 단계에서, 컨트롤러(200)의 데이터 비교기(250)는 랜덤 액세스 메모리(240)에 저장된 제1 내지 제6 데이터들(D1 ~ D6)을 각각 기 설정된 기준 데이터와 비교하고, 제1 내지 제6 데이터들(D1 ~ D6) 각각에 대한 페일 비트 수를 연산할 수 있다.
S311 단계에서, 컨트롤러(200)의 프로세서(220)는 데이터 비교기(250)에서 연산된 제1 내지 제6 데이터들(D1 ~ D6) 각각의 페일 비트 수와 기 설정된 임계 값을 비교하고, 제1 내지 제6 데이터들(D1 ~ D6) 중 페일 비트 수가 기 설정된 임계 값 이하인 데이터들을 추출하고, 추출된 데이터들에 대응하는 전송 타이밍들을 모두 포함하는 프로그램 데이터 전송 윈도우(DTW_P, 도 12 참조)를 얻을 수 있다. 또한, 프로세서(220)는 프로그램 데이터 전송 윈도우(DTW_P)와 대응하는 트레이닝 메모리 장치(예를 들어, NVM1)의 정보(예를 들어, 식별 정보 등)을 매칭하여 랜덤 액세스 메모리(240)의 임의의 영역에 저장할 수 있다.
S313 단계에서, 프로세서(220)는 모든 불휘발성 메모리 장치들(NVM1 ~ NVM4)에 대한 프로그램 데이터 전송 트레이닝이 완료되었는지 여부를 판단할 수 있다. 완료된 것으로 판단되면, 프로세서(220)는 S317 단계를 수행할 수 있다. 완료되지 않은 것으로 판단되면, 프로세서(220)는 S315 단계를 수행할 수 있다.
S315 단계에서, 프로세서(220)는 다음 순서의 트레이닝 메모리 장치(예를 들어, 제2 메모리 장치(NVM2))를 제외한 나머지 비트레이닝 메모리 장치들(NVM1, NVM3, NVM4)로 노멀 프로그램 신호들을 전송할 수 있다. 이후, 프로세서(220)는 S303 단계를 수행할 수 있다.
S317 단계에서, 프로세서(220)는 랜덤 액세스 메모리(240)에 저장된 불휘발성 메모리 장치들 각각에 대응하는 프로그램 데이터 전송 윈도우들 중첩 구간을 추출하고, 추출된 중첩 구간을 메모리 장치(100)에 대한 공통 프로그램 데이터 전송 윈도우로 설정할 수 있다. 또한, 프로세서(220)는 이후 데이터 저장 장치(10)의 실제 동작 시 적용할 수 있도록 설정된 공통 프로그램 데이터 전송 윈도우를 메모리 장치(100) 내의 임의의 불휘발성 메모리 장치(NVM)의 시스템 데이터 영역 내에 저장할 수 있다.
예를 들어, 도 12를 참조하면, 제1 내지 제4 불휘발성 메모리 장치들(NVM1 ~ NVM4)에 대한 프로그램 데이터 전송 트레이닝이 완료되면, 랜덤 액세스 메모리(240)에는 제1 내지 제4 불휘발성 메모리 장치들(NVM1 ~ NVM4) 각각에 대응하는 제1 내지 제4 프로그램 데이터 전송 윈도우들(DTW_P1 ~ DTW_P4)이 저장되어 있을 수 있다. 프로세서(220)는 제1 내지 제4 프로그램 데이터 전송 윈도우들(DTW_P1 ~ DTW_P4)의 중첩 구간이 제2 타이밍(t2)부터 제5 타이밍(t5)임을 추출할 수 있고, 제2 타이밍(t2)부터 제5 타이밍(t5)까지의 구간을 제1 내지 제4 메모리 장치들(NVM1 ~ NVM4)에 공통으로 적용할 수 있는 공통 프로그램 데이터 전송 윈도우(CDTW_P)로서 설정할 수 있다. 또한, 프로세서(220)는 설정된 공통 프로그램 데이터 전송 윈도우(CDTW_P)를 제1 내지 제4 불휘발성 메모리 장치들(NVM1 ~ NVM4) 중 적어도 하나의 불휘발성 메모리 장치에 저장할 수 있다. 또한, 데이터 저장 장치(10)가 파워-온 되면, 프로세서(220)는 해당 불휘발성 메모리 장치로부터 공통 프로그램 데이터 전송 윈도우(CDTW_P)를 리드하여 랜덤 액세스 메모리(240)에 로딩하고, 호스트 장치로부터 프로그램 요청이 수신되면 로딩된 공통 프로그램 데이터 전송 윈도우(CDTW_P)에 따라 메모리 장치(100)로 데이터를 전송하도록 메모리 컨트롤 유닛(230)을 제어할 수 있다.
도 13은 도 5의 리드 데이터 전송 트레이닝 방법을 구체적으로 도시한 순서도이고, 도 14는 리드 데이터 전송 트레이닝 동작 시 컨트롤러에서 메모리 장치들로 프로그램 신호들이 제공되는 것을 예시적으로 도시한 도면이고, 및 도 15는 메모리 장치들에서 프로그램 동작이 수행되는 것을 나타내는 타이밍도이다.
도 16은 리드 데이터 전송 트레이닝 동작 시 컨트롤러에서 메모리 장치들로 리드 신호들이 제공되는 것을 예시적으로 도시한 도면이고, 도 17은 데이터 전송 타이밍 레지스터에 정의된 타이밍에 따라 리드 데이터 전송 트레이닝 동작이 수행되는 예를 나타내는 타이밍도이고, 및 도 18은 피크 전류 발생 시 리드 데이터 전송 트레이닝 동작이 시작되는 예를 나타내는 타이밍도이다. 도 19는 복수의 메모리 장치들에 대한 공통 리드 데이터 전송 윈도우를 설정하는 것을 나타내는 도면이다.
도 13을 참조하여 리드 프로그램 데이터 전송 트레이닝 방법을 설명함에 있어서, 도 14 내지 도 19가 참조될 것이다. 또한, 설명의 편의를 위하여 도 13에서는 메모리 장치(100)가 제1 내지 제4 불휘발성 메모리 장치들(NVM1 내지 NVM4)를 포함하는 것으로 가정한다. 또한, 제1 내지 제4 불휘발성 메모리 장치들(NVM1 ~ NVM4) 중 제1 불휘발성 메모리 장치(NVM1)를 트레이닝 메모리 장치로 가정하고, 나머지 제2 내지 제4 불휘발성 메모리 장치들(NVM2 ~ NVM4)를 비트레이닝 메모리 장치들로 가정한다. 도 13을 참조하여 설명되는 리드 데이터 전송 트레이닝은 제1 불휘발성 메모리 장치(NVM1)부터 제4 불휘발성 메모리 장치(NVM4)까지 순차적으로 수행될 수 있으나, 특별히 이에 한정되는 것은 아니다.
S401 단계에서, 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들(NVM2 ~ NVM4) 및 트레이닝 메모리 장치(NVM1)로 각각 노멀 프로그램 신호들(NPS1 ~ NPS3) 및 버퍼 프로그램 신호(BPS)를 전송할 수 있다. 도 14에서는 제1 메모리 장치(NVM1)부터 제4 메모리 장치(NVM4)의 순서로 프로그램 신호들이 전송된 것으로 도시하였으나, 프로그램 신호들의 전송 순서가 특별히 이에 한정되는 것은 아니다.
트레이닝 메모리 장치(NVM1)에는 버퍼 프로그램 신호(BPS)가 전송되고, 비트레이닝 메모리 장치들(NVM2 ~ NVM4)로는 노멀 프로그램 신호들(NPS1 ~ NPS3)이 전송됨에 따라, 도 15에 도시된 바와 같이, 트레이닝 메모리 장치(NVM1)에서는 셀 프로그램 동작이 수행되지 않고, 나머지 비트레이닝 메모리 장치들(NVM2 ~ NVM4)은 신호가 수신된 순서대로 셀 프로그램 동작들이 수행될 수 있다.
S403 단계에서, 메모리 컨트롤 유닛(230)은 비트레이닝 메모리 장치들(NVM2 ~ NVM4)로 노멀 리드 신호들(NRS1 ~ NRS3)을 전송할 수 있다. 도 16에서는 제2 메모리 장치(NVM2)부터 제4 메모리 장치(NVM4)의 순서로 노멀 리드 신호가 전송된 것으로 도시하였으나, 노멀 리드 신호의 전송 순서가 특별히 이에 한정되는 것은 아니다.
S405 단계에서, 메모리 컨트롤 유닛(230)은 트레이닝 메모리 장치(NVM1)로 버퍼 리드 신호(BRS)를 전송할 수 있다. 버퍼 리드 신호(BRS)를 수신한 트레이닝 메모리 장치(NVM1)는 메모리 컨트롤 유닛(230)으로 리드 데이터를 제공할 수 있다.
또한, S403 단계에서 먼저 노멀 리드 신호들(NRS1 ~ NRS3)을 수신한 비트레이닝 메모리 장치들(NVM2 ~ NVM4)에서 노멀 리드 동작이 수행되는 동안 메모리 컨트롤 유닛(230)은 데이터 전송 타이밍 레지스터(DTTR)에서 선택된 타이밍 세트(TS)의 타이밍들에 맞춰 트레이닝 메모리 장치(NVM1)로부터 제공되는 리드 데이터를 페치할 수 있다.
이때, 메모리 컨트롤 유닛(230)은 데이터 스트로브 신호(DQS)를 생성 및 출력할 수 있고, 데이터 스트로브 신호(DQS)에 동기하여 트레이닝 메모리 장치(NVM1)로부터 제공되는 리드 데이터 페치를 시작할 수 있다. 또한, 메모리 컨트롤 유닛(230)은 트레이닝 메모리 장치(NVM1)로부터 제공되는 리드 데이터 페치를 타이밍 세트(TS)에 포함된 타이밍들의 수만큼 반복하여 수행할 수 있다.
예를 들어, 타이밍 세트(TS)가 전송 시작 타이밍(tsrt)과 전송 종료 타이밍(tend)을 포함하여 총 6번의 전송 타이밍을 포함한다고 가정할 때, 비트레이닝 메모리 장치들(NVM2 ~ NVM4)이 1회의 셀 리드 동작을 수행하는 동안 트레이닝 메모리 장치에 대하여 총 6회의 리드 데이터 페치가 수행될 수 있다. 도 17 및 도 18에서 총 6회의 리드 데이터 페치가 수행되는 것을 도시하였다. 메모리 컨트롤 유닛(230)은 페치된 제1 내지 제6 데이터들(D1 ~ D6)을 각각 대응하는 전송 타이밍과 매칭하여 랜덤 액세스 메모리(240)에 저장할 수 있다.
한편, 메모리 컨트롤 유닛(230)은 도 18에 도시된 바와 같이, 비트레이닝 메모리 장치들(NVM2 ~ NVM4) 중 적어도 하나의 비트레이닝 메모리 장치로부터 피크 전류의 발생을 나타내는 상태 정보가 수신될 때까지는 데이터 스트로브 신호(DQS)가 ‘하이’로 천이되어도 트레이닝 메모리 장치(NVM1)로부터 제공되는 리드 데이터를 페치하지 않을 수 있다. 이후, 피크 전류 신호(PCS)가 ‘로우’에서 ‘하이’로 천이되면, 메모리 컨트롤 유닛(230)은 그 시점을 전송 시작 타이밍(tsrt)으로 하여 트레이닝 메모리 장치(NVM1)로부터 제공되는 리드 데이터의 페치를 시작할 수 있다.
S407 단계에서, 컨트롤러(200)의 데이터 비교기(250)는 랜덤 액세스 메모리(240)에 저장된 제1 내지 제6 데이터들(D1 ~ D6)을 각각 기 설정된 기준 데이터와 비교하고, 제1 내지 제6 데이터들(D1 ~ D6) 각각에 대한 페일 비트 수를 연산할 수 있다.
S409 단계에서, 컨트롤러(200)의 프로세서(220)는 데이터 비교기(250)에서 연산된 제1 내지 제6 데이터들(D1 ~ D6) 각각의 페일 비트 수와 기 설정된 임계 값을 비교하고, 제1 내지 제6 데이터들(D1 ~ D6) 중 페일 비트 수가 기 설정된 임계 값 이하인 데이터들을 추출하고, 추출된 데이터들에 대응하는 전송 타이밍들을 모두 포함하는 리드 데이터 전송 윈도우(DTW_R, 도 19 참조)를 얻을 수 있다. 또한, 프로세서(220)는 리드 데이터 전송 윈도우(DTW_R)와 대응하는 트레이닝 메모리 장치(예를 들어, NVM1)에 대한 정보(예를 들어, 식별 정보)를 매칭하여 랜덤 액세스 메모리(240)의 임의의 영역에 저장할 수 있다.
S411 단계에서, 프로세서(220)는 메모리 장치(100)에 포함된 모든 불휘발성 메모리 장치들(NVM1 ~ NVM4)에 대한 리드 데이터 전송 트레이닝이 완료되었는지 여부를 판단할 수 있다. 완료된 것으로 판단되면, 프로세서(220)는 S415 단계를 수행할 수 있다. 완료되지 않은 것으로 판단되면, 프로세서(220)는 S413 단계를 수행할 수 있다.
S413 단계에서, 프로세서(220)는 다음 순서의 트레이닝 메모리 장치(예를 들어, 제2 메모리 장치(NVM2)) 및 나머지 비트레이닝 메모리 장치들(NVM1, NVM3, NVM4)로 각각 버퍼 프로그램 신호 및 노멀 프로그램 신호들을 전송할 수 있다. 이후, 프로세서(220)는 S403 단계를 수행할 수 있다.
S415 단계에서, 프로세서(220)는 랜덤 액세스 메모리(240)에 저장된 불휘발성 메모리 장치들 각각에 대응하는 리드 데이터 전송 윈도우들의 중첩 구간을 추출하고, 추출된 중첩 구간을 메모리 장치(100)에 대한 공통 리드 데이터 전송 윈도우로 설정할 수 있다. 또한, 프로세서(220)는 이후 실제 동작 시 적용할 수 있도록 설정된 공통 리드 데이터 전송 윈도우를 메모리 장치(100) 내의 임의의 불휘발성 메모리 장치(NVM)의 시스템 데이터 영역 내에 저장할 수 있다.
예를 들어, 도 19를 참조하면, 제1 내지 제4 불휘발성 메모리 장치들(NVM1 ~ NVM4) 각각에 대한 리드 데이터 전송 트레이닝이 완료되면, 랜덤 액세스 메모리(240)에는 제1 내지 제4 메모리 장치들(NVM1 ~ NVM4) 각각에 대응하는 제1 내지 제4 리드 데이터 전송 윈도우들(DTW_R1 ~ DTW_R4)이 저장되어 있을 수 있다. 프로세서(220)는 제1 내지 제4 프로그램 데이터 전송 윈도우들(DTW_R1 ~ DTW_R4)이 중첩하는 구간이 제2 타이밍(t2)부터 제5 타이밍(t5)임을 추출할 수 있고, 제2 타이밍(t2)부터 제5 타이밍(t5)까지의 구간을 제1 내지 제4 메모리 장치들(NVM1 ~ NVM4)에 공통으로 적용할 수 있는 공통 리드 데이터 전송 윈도우(CDTW_R)로 설정할 수 있다.
또한, 프로세서(220)는 설정된 공통 리드 데이터 전송 윈도우(CDTW_R)를 제1 내지 제4 불휘발성 메모리 장치들(NVM1 ~ NVM4) 중 적어도 하나의 불휘발성 메모리 장치에 저장할 수 있다. 또한, 데이터 저장 장치(10)가 파워-온 되면, 프로세서(220)는 해당 불휘발성 메모리 장치로부터 공통 리드 데이터 전송 윈도우(CDTW_R)를 리드하여 랜덤 액세스 메모리(240)에 로딩하고, 호스트 장치로부터 리드 요청이 수신되면 로딩된 공통 리드 데이터 전송 윈도우(CDTW_R)에 따라 메모리 장치(100)로부터 제공된 리드 데이터를 페치하도록 메모리 컨트롤 유닛(230)을 제어할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 저장 장치 100: 메모리 장치
200: 컨트롤러 210: 호스트 인터페이스 유닛
220: 프로세서 230: 메모리 컨트롤 유닛
240: 랜덤 액세스 메모리 250: 데이터 비교기

Claims (20)

  1. 복수의 메모리 장치들 및 컨트롤러를 포함하는 데이터 저장 장치에서 수행되는 데이터 전송 트레이닝 방법으로서,
    호스트 장치로부터 프로그램 데이터 전송 트레이닝 커맨드가 수신되는지 또는 리드 데이터 전송 트레이닝 커맨드가 수신되는지 여부를 판단하는 단계;
    상기 프로그램 데이터 전송 트레이닝 커맨드가 수신되면, 상기 복수의 메모리 장치들 중 비트레이닝 메모리 장치들로 노멀 프로그램 신호들을 전송하고, 상기 비트레이닝 메모리 장치들에서 노멀 프로그램 동작들이 수행되는 동안 트레이닝 메모리 장치에 대한 프로그램 데이터 전송 트레이닝을 수행하는 단계; 및
    상기 리드 데이터 전송 트레이닝 커맨드가 수신되면, 상기 비트레이닝 메모리 장치들로 노멀 리드 신호들을 전송하고, 상기 비트레이닝 메모리 장치들에서 노멀 리드 동작이 수행되는 동안 상기 트레이닝 메모리 장치에 대한 리드 데이터 전송 트레이닝을 수행하는 단계
    를 포함하는 데이터 전송 트레이닝 방법.
  2. 제1항에 있어서,
    상기 트레이닝 메모리 장치에 대한 프로그램 데이터 전송 트레이닝을 수행하는 단계는,
    상기 비트레이닝 메모리 장치들로 상기 노멀 프로그램 신호들을 전송하는 제1 단계;
    상기 비트레이닝 메모리 장치들에서 상기 노멀 프로그램 동작들이 수행되는 동안 상기 트레이닝 메모리 장치의 페이지 버퍼로 기 설정된 프로그램 데이터 전송 타이밍에 맞춰 프로그램 데이터의 제공을 시작하는 제2 단계;
    상기 트레이닝 메모리 장치의 상기 페이지 버퍼로부터 상기 프로그램 데이터를 리드하는 제3 단계; 및
    상기 리드한 프로그램 데이터를 상기 트레이닝 메모리 장치의 상기 페이지 버퍼로 전송된 타이밍과 매칭하여 저장하는 제4 단계
    를 포함하는 데이터 전송 트레이닝 방법.
  3. 제2항에 있어서,
    상기 기 설정된 프로그램 데이터 전송 타이밍은 전송 시작 타이밍, 전송 종료 타이밍 및 상기 전송 시작 타이밍과 상기 전송 종료 타이밍 사이에 일정 간격으로 존재하는 복수의 전송 타이밍들을 포함하고,
    상기 제1 단계 내지 상기 제4 단계는 상기 전송 시작 타이밍부터 상기 전송 종료 타이밍까지의 각 전송 타이밍마다 순차적으로 반복하여 수행되는 데이터 전송 트레이닝 방법.
  4. 제3항에 있어서,
    상기 제4 단계 이후,
    각 전송 타이밍 별 프로그램 데이터들을 각각 기 설정된 기준 데이터와 비교하여 상기 리드한 프로그램 데이터들 각각의 페일 비트 수를 연산하는 단계;
    상기 프로그램 데이터들 중 상기 페일 비트 수가 기 설정된 임계 값 이하인 프로그램 데이터들을 추출하는 단계; 및
    상기 추출된 프로그램 데이터들 각각에 대응하는 프로그램 데이터 전송 타이밍들을 모두 포함하는 프로그램 데이터 전송 윈도우를 대응하는 트레이닝 메모리 장치와 매칭시켜 저장하는 단계
    를 더 포함하는 데이터 전송 트레이닝 방법.
  5. 제4항에 있어서,
    상기 복수의 메모리 장치들 각각에 대한 프로그램 데이터 전송 트레이닝이 완료되었는지 여부를 판단하는 단계;
    상기 복수의 메모리 장치들에 대한 프로그램 데이터 전송 트레이닝이 모두 완료되었으면, 각 메모리 장치 별 프로그램 데이터 전송 윈도우들의 중첩 구간을 추출하고, 추출된 중첩 구간을 상기 복수의 메모리 장치들에 대한 공통 프로그램 데이터 전송 윈도우로 설정하는 단계
    를 더 포함하는 데이터 전송 트레이닝 방법.
  6. 제2항에 있어서,
    상기 제2 단계는 상기 비트레이닝 메모리 장치들 중 적어도 하나의 비트레이닝 메모리 장치로부터 피크 전류의 발생을 나타내는 상태 정보가 수신되면 수행되는 데이터 전송 트레이닝 방법.
  7. 제1항에 있어서,
    상기 트레이닝 메모리 장치에 대한 리드 데이터 전송 트레이닝을 수행하는 단계는,
    상기 비트레이닝 메모리 장치들 및 상기 트레이닝 메모리 장치에 각각 상기 노멀 프로그램 신호들 및 버퍼 프로그램 신호를 전송하는 단계;
    상기 비트레이닝 메모리 장치들로 상기 노멀 리드 신호들을 전송하는 단계; 및
    상기 트레이닝 메모리 장치로 버퍼 리드 신호를 전송하고, 상기 비트레이닝 메모리 장치들에서 노멀 리드 동작들이 수행되는 동안 상기 트레이닝 메모리 장치로부터 제공되는 리드 데이터를 기 설정된 리드 데이터 전송 타이밍마다 페치하여 저장하는 단계
    를 포함하는 데이터 전송 트레이닝 방법.
  8. 제7항에 있어서,
    각 타이밍 별로 페치한 상기 리드 데이터들을 각각 기 설정된 기준 데이터와 비교하여 상기 페치한 리드 데이터들 각각의 페일 비트 수를 연산하는 단계;
    상기 리드 데이터들 중 상기 페일 비트 수가 기 설정된 임계 값 이하인 리드 데이터들을 추출하는 단계; 및
    상기 추출된 리드 데이터들 각각에 대응하는 리드 데이터 전송 타이밍들을 모두 포함하는 리드 데이터 전송 윈도우를 대응하는 트레이닝 메모리 장치와 매칭시켜 저장하는 단계
    를 포함하는 데이터 전송 트레이닝 방법.
  9. 제8항에 있어서,
    상기 복수의 메모리 장치들 각각에 대한 리드 데이터 전송 트레이닝이 완료되었는지 여부를 판단하는 단계;
    상기 복수의 메모리 장치들에 대한 리드 데이터 전송 트레이닝이 모두 완료되었으면, 각 메모리 장치 별 리드 데이터 전송 윈도우들의 중첩 구간을 추출하고, 추출된 중첩 구간을 상기 복수의 메모리 장치들에 대한 공통 리드 데이터 전송 윈도우로 설정하는 단계
    를 더 포함하는 데이터 전송 트레이닝 방법.
  10. 제7항에 있어서,
    상기 리드 데이터를 페치하여 저장하는 단계는,
    상기 비트레이닝 메모리 장치들 중 적어도 하나의 비트레이닝 메모리 장치로부터 피크 전류의 발생을 나타내는 상태 정보가 수신되면 수행되는 데이터 전송 트레이닝 방법.
  11. 제7항에 있어서,
    상기 기 설정된 리드 데이터 전송 타이밍은 전송 시작 타이밍, 전송 종료 타이밍 및 상기 전송 시작 타이밍과 상기 전송 종료 타이밍 사이에 일정 간격으로 존재하는 복수의 전송 타이밍들을 포함하고,
    상기 리드 데이터를 페치하는 것은 상기 비트레이닝 메모리 장치들에서 1 회의 노멀 리드 동작들이 수행되는 동안 상기 전송 시작 타이밍부터 상기 전송 종료 타이밍까지의 각 전송 타이밍마다 반복적으로 수행되는 데이터 전송 트레이닝 방법.
  12. 복수의 불휘발성 메모리 장치들을 포함하는 메모리 장치; 및
    호스트 장치로부터 프로그램 데이터 전송 트레이닝 커맨드가 수신되면, 상기 복수의 불휘발성 메모리 장치들 중 비트레이닝 메모리 장치들에 대해서는 노멀 프로그램 동작들을 수행하고 및 상기 비트레이닝 메모리 장치들에서 상기 노멀 프로그램 동작들이 수행되는 동안 트레이닝 메모리 장치에 대해서는 프로그램 데이터 전송 트레이닝을 수행하는 컨트롤러를 포함하고,
    상기 컨트롤러는,
    데이터 전송 타이밍 레지스터를 포함하는 랜덤 액세스 메모리;
    상기 비트레이닝 메모리 장치들로 제공할 노멀 프로그램 신호들 및 상기 트레이닝 메모리 장치에 대한 상기 프로그램 데이터 전송 트레이닝을 수행하기 위한 버퍼 프로그램 신호를 생성하고, 생성된 신호들을 상기 메모리 장치로 제공하는 메모리 컨트롤 유닛; 및
    상기 호스트 장치로부터의 상기 프로그램 데이터 전송 트레이닝 커맨드에 응답하여 상기 불휘발성 메모리 장치들에 대한 프로그램 데이터 전송 트레이닝을 수행하도록 상기 메모리 컨트롤 유닛을 제어하는 프로세서
    를 포함하는 데이터 저장 장치.
  13. 제12항에 있어서,
    상기 데이터 전송 타이밍 레지스터는 복수의 타이밍 세트들을 포함하고,
    각 타이밍 세트는 데이터 전송 시작을 나타내는 전송 시작 타이밍, 데이터 전송 종료를 나타내는 전송 종료 타이밍, 및 상기 전송 시작 타이밍과 상기 전송 종료 타이밍 사이에 일정 간격으로 존재하는 하나 또는 그 이상의 전송 타이밍들을 포함하는 데이터 저장 장치.
  14. 제13항에 있어서,
    상기 메모리 컨트롤 유닛은 상기 비트레이닝 메모리 장치들로 상기 노멀 프로그램 신호들을 먼저 전송하고, 상기 비트레이닝 메모리 장치들에서 노멀 프로그램 동작들이 수행되는 동안 상기 버퍼 프로그램 신호 및 상기 복수의 타이밍 세트들 중 선택된 타이밍 세트에 근거하여 상기 트레이닝 메모리 장치의 페이지 버퍼로 프로그램 데이터를 전송하고, 상기 트레이닝 메모리 장치의 상기 페이지 버퍼로부터 상기 프로그램 데이터를 리드하고, 및 상기 리드한 프로그램 데이터와 상기 페이지 버퍼로 전송한 타이밍을 매칭하여 저장하는 데이터 저장 장치.
  15. 제14항에 있어서,
    상기 프로세서는 상기 트레이닝 메모리 장치에 대한 상기 프로그램 데이터 전송 트레이닝이 완료되면 각 전송 타이밍 별 프로그램 데이터들을 각각 기 설정된 기준 데이터와 비교하여 상기 리드한 프로그램 데이터들 각각의 페일 비트 수를 연산하고, 상기 프로그램 데이터들 중 상기 페일 비트 수가 기 설정된 임계 값 이하인 프로그램 데이터들 각각에 대응하는 프로그램 데이터 전송 타이밍들을 모두 포함하는 프로그램 데이터 전송 윈도우를 대응하는 트레이닝 메모리 장치와 매칭시켜 저장하고, 및
    상기 프로세서는 상기 복수의 메모리 장치들 각각에 대한 상기 프로그램 데이터 전송 트레이닝이 완료되면 각 메모리 장치 별 프로그램 데이터 전송 윈도우들의 중첩 구간을 추출하고, 추출된 중첩 구간을 상기 복수의 메모리 장치들에 대한 공통 프로그램 데이터 전송 윈도우로 설정하는 데이터 저장 장치.
  16. 제12항에 있어서,
    각 불휘발성 메모리 장치는 피크 전류 발생을 나타내는 상태 정보를 상기 컨트롤러의 요청에 응답하여 상기 컨트롤러로 제공하고,
    상기 컨트롤러는 상기 복수의 불휘발성 메모리 장치들 중 적어도 하나 이상의 불휘발성 메모리 장치로부터 상기 상태 정보가 수신되면, 상기 트레이닝 메모리 장치에 대한 프로그램 데이터 전송 트레이닝의 수행을 시작하는 데이터 저장 장치.
  17. 복수의 불휘발성 메모리 장치들을 포함하는 메모리 장치; 및
    호스트 장치로부터 리드 데이터 전송 트레이닝 커맨드가 수신되면, 상기 복수의 불휘발성 메모리 장치들 중 비트레이닝 메모리 장치들에 대해서는 노멀 리드 동작들을 수행하고 및 상기 비트레이닝 메모리 장치들에서 상기 노멀 리드 동작들이 수행되는 동안 트레이닝 메모리 장치에 대한 리드 데이터 전송 트레이닝을 수행하는 컨트롤러를 포함하고,
    상기 컨트롤러는,
    데이터 전송 타이밍 레지스터를 포함하는 랜덤 액세스 메모리;
    상기 비트레이닝 메모리 장치들로 제공할 노멀 리드 신호들 및 상기 트레이닝 메모리 장치에 대한 상기 리드 데이터 전송 트레이닝을 수행하기 위한 버퍼 리드 신호를 생성하고, 생성된 신호들을 상기 메모리 장치로 제공하는 메모리 컨트롤 유닛; 및
    상기 호스트 장치로부터의 상기 리드 데이터 전송 트레이닝 커맨드에 응답하여 상기 불휘발성 메모리 장치들에 대한 리드 데이터 전송 트레이닝을 수행하도록 상기 메모리 컨트롤 유닛을 제어하는 프로세서
    를 포함하는 데이터 저장 장치.
  18. 제17항에 있어서,
    상기 데이터 전송 타이밍 레지스터는 복수의 타이밍 세트들을 포함하고,
    각 타이밍 세트는 데이터 전송 시작을 나타내는 전송 시작 타이밍, 데이터 전송 종료를 나타내는 전송 종료 타이밍, 및 상기 전송 시작 타이밍과 상기 전송 종료 타이밍 사이에 일정 간격으로 존재하는 하나 또는 그 이상의 전송 타이밍들을 포함하는 데이터 저장 장치.
  19. 제18항에 있어서,
    상기 메모리 컨트롤 유닛은 상기 비트레이닝 메모리 장치들 및 상기 트레이닝 장치로 각각 노멀 프로그램 신호들 및 버퍼 프로그램 신호를 전송하고, 상기 비트레이닝 메모리 장치들에서 상기 노멀 리드 동작들이 수행되도록 상기 비트레이닝 메모리 장치들로 상기 노멀 리드 신호들을 먼저 전송하고, 상기 비트레이닝 메모리 장치들에서 상기 노멀 리드 동작들이 수행되는 동안 상기 버퍼 리드 신호 및 상기 복수의 타이밍 세트들 중 선택된 타이밍 세트에 근거하여 상기 트레이닝 메모리 장치로부터 제공된 리드 데이터를 페치하고, 및 상기 페치된 리드 데이터와 페치한 타이밍을 매칭하여 저장하는 데이터 저장 장치.
  20. 제19항에 있어서,
    상기 프로세서는 상기 트레이닝 메모리 장치에 대한 상기 리드 데이터 전송 트레이닝이 완료되면 각 전송 타이밍 별 리드 데이터들을 각각 기 설정된 기준 데이터와 비교하여 상기 리드 데이터들 각각의 페일 비트 수를 연산하고, 상기 리드 데이터들 중 상기 페일 비트 수가 기 설정된 임계 값 이하인 리드 데이터들 각각에 대응하는 프로그램 데이터 전송 타이밍들을 모두 포함하는 프로그램 데이터 전송 윈도우를 대응하는 트레이닝 메모리 장치와 매칭시켜 저장하고, 및
    상기 프로세서는 상기 복수의 메모리 장치들 각각에 대한 상기 리드 데이터 전송 트레이닝이 완료되면 각 메모리 장치 별 리드 데이터 전송 윈도우들의 중첩 구간을 추출하고, 추출된 중첩 구간을 상기 복수의 메모리 장치들에 대한 공통 리드 데이터 전송 윈도우로 설정하는 데이터 저장 장치.
KR1020170031623A 2017-03-14 2017-03-14 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치 KR102375695B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170031623A KR102375695B1 (ko) 2017-03-14 2017-03-14 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치
US15/785,617 US10497451B2 (en) 2017-03-14 2017-10-17 Data transfer training method and data storage device performing the same
CN201711242385.2A CN108573730B (zh) 2017-03-14 2017-11-30 数据传输训练方法及执行该方法的数据存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170031623A KR102375695B1 (ko) 2017-03-14 2017-03-14 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치

Publications (2)

Publication Number Publication Date
KR20180104839A true KR20180104839A (ko) 2018-09-27
KR102375695B1 KR102375695B1 (ko) 2022-03-18

Family

ID=63519894

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170031623A KR102375695B1 (ko) 2017-03-14 2017-03-14 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치

Country Status (3)

Country Link
US (1) US10497451B2 (ko)
KR (1) KR102375695B1 (ko)
CN (1) CN108573730B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11521123B2 (en) 2019-04-25 2022-12-06 SK Hynix Inc. Controller and operating method thereof

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020046918A (ja) * 2018-09-19 2020-03-26 キオクシア株式会社 記憶装置及び制御方法
CN109634826B (zh) * 2018-12-12 2022-06-07 深圳忆联信息系统有限公司 控制器极限性能分析方法、装置、计算机设备及存储介质
KR20210033719A (ko) * 2019-09-19 2021-03-29 에스케이하이닉스 주식회사 메모리 장치 및 그 동작 방법
US11017856B1 (en) * 2020-02-18 2021-05-25 Applied Materials, Inc. Soft reset for multi-level programming of memory cells in non-Von Neumann architectures
US11334259B2 (en) * 2020-04-22 2022-05-17 Micron Technology, Inc. Power management based on detected voltage parameter levels in a memory sub-system
US11127458B1 (en) 2020-04-28 2021-09-21 Applied Materials, Inc. Non-uniform state spacing in multi-state memory element for low-power operation
US11579804B2 (en) * 2020-08-06 2023-02-14 Western Digital Technologies, Inc. Device interrupt coalescing with various host behaviors
CN116737472B (zh) * 2022-10-27 2024-05-03 荣耀终端有限公司 一种测试存储器时序训练过程的方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100185803A1 (en) * 2009-01-22 2010-07-22 Infineon Technologies Ag Method and apparatus for adaptive data chunk transfer
US20110066900A1 (en) * 2009-09-11 2011-03-17 Kabushiki Kaisha Toshiba Non-volatile memory device and programming method thereof
US20120087194A1 (en) * 2010-10-11 2012-04-12 Tae-Young Oh Data write training method and semiconductor device performing the same
US20120221880A1 (en) * 2011-02-25 2012-08-30 Samsung Electronics Co., Ltd. Memory system and method of controlling same
US20150067201A1 (en) * 2013-09-02 2015-03-05 SK Hynix Inc. Semiconductor device and method of operating the same
US20160141013A1 (en) * 2014-11-14 2016-05-19 Cavium, Inc. Managing skew in data signals with adjustable strobe
US20170031626A1 (en) * 2015-07-30 2017-02-02 Samsung Electronics Co., Ltd. Storage device including non-volatile memory device and program method thereof

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100520224B1 (ko) * 2003-12-23 2005-10-11 삼성전자주식회사 반도체 메모리 장치에서의 isi 제거장치 및 그에 따른isi 제거방법
KR100903367B1 (ko) 2007-11-02 2009-06-23 주식회사 하이닉스반도체 고속으로 데이터 송신할 수 있는 반도체 메모리 장치 및 그를 포함하는 시스템
US8683164B2 (en) * 2009-02-04 2014-03-25 Micron Technology, Inc. Stacked-die memory systems and methods for training stacked-die memory systems
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

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100185803A1 (en) * 2009-01-22 2010-07-22 Infineon Technologies Ag Method and apparatus for adaptive data chunk transfer
US20110066900A1 (en) * 2009-09-11 2011-03-17 Kabushiki Kaisha Toshiba Non-volatile memory device and programming method thereof
US20120087194A1 (en) * 2010-10-11 2012-04-12 Tae-Young Oh Data write training method and semiconductor device performing the same
US20120221880A1 (en) * 2011-02-25 2012-08-30 Samsung Electronics Co., Ltd. Memory system and method of controlling same
US20150067201A1 (en) * 2013-09-02 2015-03-05 SK Hynix Inc. Semiconductor device and method of operating the same
US20160141013A1 (en) * 2014-11-14 2016-05-19 Cavium, Inc. Managing skew in data signals with adjustable strobe
US20170031626A1 (en) * 2015-07-30 2017-02-02 Samsung Electronics Co., Ltd. Storage device including non-volatile memory device and program method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11521123B2 (en) 2019-04-25 2022-12-06 SK Hynix Inc. Controller and operating method thereof

Also Published As

Publication number Publication date
CN108573730A (zh) 2018-09-25
CN108573730B (zh) 2022-02-25
US10497451B2 (en) 2019-12-03
US20180267724A1 (en) 2018-09-20
KR102375695B1 (ko) 2022-03-18

Similar Documents

Publication Publication Date Title
KR102375695B1 (ko) 데이터 전송 트레이닝 방법 및 이를 수행하는 데이터 저장 장치
US9666249B1 (en) Data storage device with temperature compensation and operating method thereof
US10303378B2 (en) Data storage device
KR20190028605A (ko) 스토리지 장치 및 그것의 데이터 트레이닝 방법
KR102235521B1 (ko) 특정 패턴을 갖는 저장 장치 및 그것의 동작 방법
US10748626B2 (en) Data storage device and operating method thereof
US10902928B2 (en) Memory system, operation method thereof, and nonvolatile memory device
TWI754050B (zh) 微控制器、具有該微控制器的記憶系統及其操作方法
US10916277B2 (en) Memory device and operating method thereof
US20200342919A1 (en) Memory system and method of operating the memory system
US9785584B2 (en) Data storage device and method thereof
US20210326060A1 (en) Nonvolatile memory device, data storage device including the same and operating method thereof
US20150019886A1 (en) Integrated circuit, semiconductor memory device, and operating method thereof
US9588708B2 (en) Semiconductor memory device, operating method thereof, and data storage device including the same
US9837166B2 (en) Data storage device and operating method thereof
US20150169235A1 (en) Data storage device and operating method thereof
KR20180092430A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10353611B2 (en) Data storage device and operating method thereof
US11782644B2 (en) Memory system and method of operating the same
US20240203505A1 (en) Memory device and method of managing temperature of the same
US10719270B2 (en) Raising usage rates of memory blocks with a free MSB page list
KR20200073122A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20170212816A1 (en) Semiconductor memory device and data storage device including the same
CN114863965A (zh) 存储器装置及其操作方法以及半导体设备
KR20150082930A (ko) 데이터 저장 장치 및 그것의 동작 방법

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
GRNT Written decision to grant