KR20230132139A - 리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법 - Google Patents

리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법 Download PDF

Info

Publication number
KR20230132139A
KR20230132139A KR1020220029293A KR20220029293A KR20230132139A KR 20230132139 A KR20230132139 A KR 20230132139A KR 1020220029293 A KR1020220029293 A KR 1020220029293A KR 20220029293 A KR20220029293 A KR 20220029293A KR 20230132139 A KR20230132139 A KR 20230132139A
Authority
KR
South Korea
Prior art keywords
plane
data
read
memory device
command
Prior art date
Application number
KR1020220029293A
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 KR1020220029293A priority Critical patent/KR20230132139A/ko
Priority to US17/864,094 priority patent/US20230289083A1/en
Priority to CN202310104105.0A priority patent/CN116741245A/zh
Publication of KR20230132139A publication Critical patent/KR20230132139A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 기술은 리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법에 관한 것으로서, 각각 페이지 단위로 데이터를 입/출력하는 다수의 플래인(plane)과, 적어도 하나 이상의 리드 커맨드에 응답하여 상기 다수의 플래인 중 적어도 하나 이상의 플래인에서 각각 리드동작을 수행하며 어느 하나의 플래인으로부터 데이터를 전달받아 저장하는 래치와, 상기 리드 커맨드가 수신된 이후 수신되는 출력 커맨드에 응답하여 래치에 저장된 데이터에 대응하는 제1플래인 정보와, 출력 커맨드에 대응하는 제2플래인 정보를 비교하여 래치의 데이터를 선택적으로 출력하도록 제어하는 로직 컨트롤러를 포함한다.

Description

리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법{APPARATUS AND METHOD FOR EFFECTIVELY PERFORMING A READ OPERATION}
본 발명은 저장장치에 관한 것으로서, 구체적으로 리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법에 관한 것이다.
저장장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 저장장치는 데이터가 저장되는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치(Volatile Memory)와 비휘발성 메모리 장치(Non-Volatile Memory)로 구분된다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 메모리 셀들을 포함하고, 메모리 셀들에 데이터를 저장하는 프로그램 동작, 저장된 데이터를 리드하는 리드동작 및 저장된 데이터를 삭제하는 소거동작을 수행할 수 있다.
본 발명의 실시예는 리드동작을 효과적으로 수행하여 리드 레이턴시를 최소화할 수 있는 메모리 장치 및 메모리 장치의 동작방법을 제공한다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예에 따른 메모리 장치는, 각각 페이지 단위로 데이터를 입/출력하는 다수의 플래인(plane); 적어도 하나 이상의 리드 커맨드에 응답하여 상기 다수의 플래인 중 적어도 하나 이상의 플래인에서 각각 리드동작을 수행하며 어느 하나의 플래인으로부터 데이터를 전달받아 저장하는 래치; 상기 리드 커맨드가 수신된 이후 수신되는 출력 커맨드에 응답하여 상기 래치에 저장된 데이터에 대응하는 제1플래인 정보와, 상기 출력 커맨드에 대응하는 제2플래인 정보를 비교하여 상기 래치의 데이터를 선택적으로 출력하도록 제어하는 로직 컨트롤러를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 장치의 동작방법은, 각각 페이지 단위로 데이터를 입/출력하는 다수의 플래인(plane) 및 상기 다수의 플래인이 공유하는 래치를 포함하는 메모리 장치의 동작 방법에 있어서: 적어도 하나 이상의 리드 커맨드에 응답하여 상기 다수의 플래인 중 적어도 하나 이상의 플래인에서 각각 리드동작을 수행하며 어느 하나의 플래인으로부터 데이터를 전달받아 상기 래치에 저장하는 제1저장단계; 및 상기 리드 커맨드가 수신된 후 수신되는 출력 커맨드에 응답하여 상기 래치에 저장된 데이터에 대응하는 제1플래인 정보와, 출력 커맨드에 대응하는 제2플래인 정보를 비교하여 상기 데이터를 선택적으로 출력하는 선택출력단계를 포함할 수 있다.
본 기술은 리드 커맨드에 응답하여 다수의 플래인 각각에서 리드된 다수의 데이터 중 하나를 출력 커맨드의 입력보다 앞선 시점에서 다수의 플래인이 공유하는 래치에 복사한 뒤, 출력 커맨드의 입력에 응답하여 래치의 데이터를 선택적으로 출력할 수 있다.
이를 통해, 출력 커맨드의 입력보다 앞선 시점에서 래치에 데이터를 복사할 수 있으므로, 리드동작의 레이턴시를 최소화시킬 수 있다.
도 1a 및 도 1b는 본 발명의 실시예에 따른 메모리 장치를 포함하는 메모리 시스템을 설명하기 위한 도면이다.
도 2a 및 도 2b는 본 발명의 실시예에 따른 메모리 장치에서 수행되는 리드동작의 일 예를 설명하기 위한 타이밍 다이어그램이다.
도 3은 본 발명의 실시예에 따른 메모리 장치에서 수행되는 리드동작의 일 예를 설명하기 위한 순서도이다.
도 4는 본 발명의 실시예에 따른 메모리 장치의 상세한 구성을 설명하기 위해 도시한 도면이다.
도 5는 도 4에 개시된 메모리 장치의 구성요소 중 로직 컨트롤러의 상세한 구성을 설명하기 위해 도시한 도면이다.
도 6a 및 도 6b는 본 발명의 실시예에 따른 메모리 장치에서 수행되는 리드동작의 다른 예를 설명하기 위한 타이밍 다이어그램이다.
도 7 및 도 8은 본 발명의 실시예에 따른 메모리 장치에서 수행되는 리드동작의 다른 예를 설명하기 위한 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1a 및 도 1b는 본 발명의 실시예에 따른 메모리 장치를 포함하는 메모리 시스템을 설명하기 위한 도면이다.
도 1a 및 도 1b를 함께 참조하면, 데이터 처리 시스템은, 호스트(102) 및 메모리 시스템(110)을 포함할 수 있다.
그리고, 호스트(102)는, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
또한, 메모리 시스템(110)은, 호스트(102)의 요청에 응답하여 동작하며, 특히 호스트(102)에 의해서 액세스되는 데이터를 저장할 수 있다. 다시 말해, 메모리 시스템(110)은, 호스트(102)의 주 기억 장치 또는 보조 기억 장치로 사용될 수 있다. 여기서, 메모리 시스템(110)은 호스트(102)와 연결되는 호스트 인터페이스 프로토콜에 따라, 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다. 예를 들면, 메모리 시스템(110)은, 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
아울러, 메모리 시스템(110)을 구현하는 저장 장치들은, DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구현될 수 있다.
메모리 시스템(110)은, 호스트(102)에 의해서 액세스되는 데이터를 저장하는 다수의 메모리 장치(150, 151, 152, 153), 및 다수의 메모리 장치(150, 151, 152, 153)로의 데이터 저장을 제어하는 컨트롤러(130)를 포함할 수 있다.
여기서, 메모리 시스템(110)은, 하나의 반도체 장치로 집적될 수 있다. 일 예로, 메모리 시스템(110)은, 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 이용되는 경우, 메모리 시스템(110)에 연결되는 호스트(102)의 동작 속도는 획기적으로 개선될 수 있다.
메모리 시스템(110)은, 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 시스템(110)은, 하나의 반도체 장치로 집적되어, PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
또 다른 일 예로, 메모리 시스템(110)은, 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 태블릿 컴퓨터(tablet computer), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB(Digital Multimedia Broadcasting) 재생기, 3차원 텔레비전(3-dimensional television), 스마트 텔레비전(smart television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 데이터 센터를 구성하는 스토리지, 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID(radio frequency identification) 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등을 구성할 수 있다.
메모리 시스템(110)에 포함된 컨트롤러(130)는, 호스트(102)로부터의 요청에 응답하여 다수의 메모리 장치(150, 151, 152, 153)를 제어할 수 있다. 예컨대, 컨트롤러(130)는, 다수의 메모리 장치(150, 151, 152, 153)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 다수의 메모리 장치(150, 151, 152, 153)에 저장할 수 있으며, 이를 위해 컨트롤러(130)는, 다수의 메모리 장치(150, 151, 152, 153)의 리드, 라이트, 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다.
보다 구체적으로 설명하면, 컨트롤러(130)는, 호스트 인터페이스(HOST I/F, 132), 프로세서(PROCESSOR, 134), 에러 정정 코드(ECC: Error Correction Code, 138), 메모리 인터페이스(MEMORY I/F, 142), 및 메모리(MEMORY, 144)를 포함할 수 있다.
또한, 호스트 인터페이스(132)은, 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다.
ECC(138)는, 다수의 메모리 장치(150, 151, 152, 153)에 저장된 데이터를 리드할 경우, 다수의 메모리 장치(150, 151, 152, 153)로부터 리드된 데이터에 포함되는 에러를 검출 및 정정할 수 있다. 다시 말해, ECC(138)는, 다수의 메모리 장치(150, 151, 152, 153)로부터 리드한 데이터에 대하여 에러 정정 디코딩을 수행한 후, 에러 정정 디코딩의 성공 여부를 판단하고 판단 결과에 따라 지시 신호를 출력하며, ECC 인코딩 과정에서 생성된 패리티(parity) 비트를 사용하여 리드된 데이터의 에러 비트를 정정할 수 있다. 이때, ECC(138)는, 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없으며, 에러 비트를 정정하지 못함에 상응하는 에러 정정 실패(fail) 신호를 출력할 수 있다.
여기서, ECC(138)는, LDPC(low density parity check) code, BCH(Bose, Chaudhri, Hocquenghem) code, turbo code, 리드-솔로몬 코드(Reed-Solomon code), convolution code, RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며 이에 한정되는 것은 아니다. 또한, ECC(138)는, 오류 정정을 위한 회로, 시스템 또는 장치를 모두 포함할 수 있다.
메모리 인터페이스(142)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 다수의 메모리 장치(150, 151, 152, 153)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(142) 간의 인터페이싱을 수행할 수 있다. 메모리 인터페이스(142)는, 프로세서(134)의 제어에 따라 다수의 메모리 장치(150, 151, 152, 153)의 제어 신호를 생성하고 데이터를 처리할 수 있다.
메모리(144)는, 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장한다. 보다 구체적으로 설명하면, 메모리(144)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 다수의 메모리 장치(150, 151, 152, 153)를 제어, 예컨대 컨트롤러(130)가, 다수의 메모리 장치(150, 151, 152, 153)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 다수의 메모리 장치(150, 151, 152, 153)에 저장하며, 이를 위해 컨트롤러(130)가, 다수의 메모리 장치(150, 151, 152, 153)의 리드, 라이트, 프로그램, 이레이즈(erase) 등의 동작을 제어할 경우, 이러한 동작을 메모리 시스템(110), 즉 컨트롤러(130)와 다수의 메모리 장치(150, 151, 152, 153) 간이 수행하기 위해 필요한 데이터를 저장한다.
여기서, 메모리(144)는, 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 또한, 메모리(144)는, 호스트(102)와 다수의 메모리 장치(150, 151, 152, 153) 간 데이터 라이트 및 리드 등의 동작을 수행하기 위해 필요한 데이터, 및 데이터 라이트 및 리드 등의 동작 수행 시의 데이터를 저장할 수 있으며, 이러한 데이터 저장을 위해, 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다.
프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어할 수 있으며, 호스트(102)로부터의 라이트 요청 또는 리드 요청에 응답하여, 다수의 메모리 장치(150, 151, 152, 153)에 대한 라이트 동작 또는 리드동작을 제어할 수 있다. 여기서, 프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동할 수 있다. 또한, 프로세서(134)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
메모리 시스템(110)에 포함된 다수의 메모리 장치(150, 151, 152, 153)는, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있으며, 특히 라이트(write) 동작을 통해 호스트(102)로부터 제공된 데이터를 저장하고, 리드(read) 동작을 통해 저장된 데이터를 호스트(102)로 제공할 수 있다.
다수의 메모리 장치(150, 151, 152, 153) 각각은, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 및 파이프 래치(One of P_LATCH<0:3>)을 포함할 수 있다. 도면에 구체화되지 않았지만, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각은, 다수의 워드라인(Word Line)이 연결된 다수의 메모리 셀들을 각각 포함하는 다수의 페이지를 각각 포함하는 다수의 메모리 블록들을 포함할 수 있다. 다수의 메모리 장치(150, 151, 152, 153)는, 비휘발성 메모리 장치, 일 예로 플래시 메모리가 될 수 있으며, 이때 플래시 메모리는 3차원(dimension) 입체 스택(stack) 구조가 될 수 있다. 또한, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 포함된 다수의 메모리 블록들은, 하나의 메모리 셀에 저장 또는 표현할 수 있는 비트의 수에 따라, 단일 레벨 셀(SLC: Single Level Cell) 메모리 블록 및 멀티 레벨 셀(MLC: Multi Level Cell) 메모리 블록 등으로 구분될 수 있다. 여기서, SLC 메모리 블록은, 하나의 메모리 셀에 1 비트 데이터를 저장하는 메모리 셀들에 의해 구현된 다수의 페이지들을 포함할 수 있으며, 데이터 연산 성능이 빠르며 내구성이 높다. 그리고, MLC 메모리 블록은, 하나의 메모리 셀에 멀티 비트 데이터(예를 들면, 2 비트 이상)를 저장하는 메모리 셀들에 의해 구현된 다수의 페이지들을 포함할 수 있으며, SLC 메모리 블록보다 큰 데이터 저장 공간을 가질 수, 다시 말해 고집적화 할 수 있다. 여기서, 하나의 메모리 셀에 3 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 다수의 페이지들을 포함하는 MLC 메모리 블록을, 트리플 레벨 셀(TLC: Triple Level Cell) 메모리 블록으로 구분할 수도 있다. 또한, 하나의 메모리 셀에 4 비트 데이터를 저장할 수 있는 메모리 셀들에 의해 구현된 다수의 페이지들을 포함하는 MLC 메모리 블록을, 쿼드러플 레벨 셀(QLC: Quadruple Level Cell) 메모리 블록으로 구분할 수도 있다.
다수의 메모리 장치(150, 151, 152, 153)에 각각 포함된 하나의 파이프 래치(One of P_LATCH<0:3>)는, 다수의 메모리 장치(150, 151, 152, 153)에 각각 포함된 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)이 공유할 수 있다. 실시예에 따라, 첫 번째 메모리 장치(150) 포함된 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)이 한 개의 파이프 래치(P_LATCH0)를 공유하고, 두 번째 메모리 장치(151)에 포함된 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)이 한 개의 파이프 래치(P_LATCH1)를 공유하며, 세 번째 메모리 장치(152)에 포함된 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)이 한 개의 파이프 래치(P_LATCH2)를 공유하며, 네 번째 메모리 장치(153)에 포함된 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)이 한 개의 파이프 래치(P_LATCH3)를 공유할 수 있다. 이때, 네 개의 플래인이 한 개의 파이프 래치를 공유한다는 것은, 프로그램 동작시 컨트롤러(130)로부터 입력된 데이터를 한 개의 파이프 래치로 전달하여 저장한 뒤, 한 개의 파이프 래치에 저장된 데이터를 네 개의 플래인 중 어느 하나의 플래인으로 전달하여 프로그램하는 것을 의미할 수 있다. 리드동작시 네 개의 플래인 중 어느 하나의 플래인으로부터 리드된 데이터를 하나의 파이프 래치로 전달하여 저장한 뒤, 하나의 파이프 래치에 저장된 데이터를 컨트롤러(130)로 출력하는 것을 의미할 수 있다.
다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)은, 각각 다수의 페이지 버퍼(PB0, PB1, PB2, PB3)와, 다수의 캐시버퍼(CACHE0, CACHE1, CACHE2, CACHE3)를 포함할 수 있다. 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대해 리드동작을 수행하는 경우, 다수의 페이지 버퍼(PB0, PB1, PB2, PB3) 각각으로 리드된 다수의 데이터를 다수의 캐시버퍼(CACHE0, CACHE1, CACHE2, CACHE3)로 각각 이동한 후, 다수의 캐시버퍼(CACHE0, CACHE1, CACHE2, CACHE3)에 저장된 다수의 데이터를 순차적으로 하나의 파이프 래치에 전달하여 컨트롤러(130)로 출력할 수 있다.
참고로, 도면에서는 메모리 시스템(110)에 네 개의 메모리 장치(150, 151, 152, 153)이 포함되는 것을 예시하고 있는데, 이는 어디까지나 하나의 실시예일 뿐이며 실제로는 더 많거나 더 적은 개수의 메모리 장치가 하나의 메모리 시스템에 포함되는 것도 얼마든지 가능하다. 또한, 도면에서는 하나의 메모리 장치(150, 151, 152, 153)에 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)이 포함되는 것을 예시하고 있는데, 이는 어디까지나 하나의 실시예일 뿐이며 실제로는 더 많거나 더 적은 개수의 플래인이 하나의 메모리 장치에 포함되는 것도 얼마든지 가능하다.
도 2a 및 도 2b는 본 발명의 실시예에 따른 메모리 장치에서 수행되는 리드동작의 일 예를 설명하기 위한 타이밍 다이어그램이다.
도 2a 및 도 2b를 참조하면, 다수의 메모리 장치(150, 151, 152, 153) 중 어느 하나의 메모리 장치에 포함된 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대한 리드동작이 어떻게 순차적으로 수행되는지 알 수 있다. 이하에서는 다수의 메모리 장치(150, 151, 152, 153) 중 첫 번째 메모리 장치(150)의 동작을 '메모리 장치'로서 설명하지만, 다른 메모리 장치(151, 152, 153) 각각에도 첫 번째 메모리 장치(150)와 동일한 형태의 동작이 수행될 수 있다.
도 2a를 참조하면, 컨트롤러(130)는, 호스트(102)로부터 요청된 리드동작에 대응하여 리드 커맨드(RD_CMD)와 상태 커맨드(STATUS_CMD) 및 출력 커맨드(OUT_CMD)를 생성하여 메모리 장치(150)으로 전달할 수 있다.
메모리 장치(150)는, 리드 커맨드(RD_CMD)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 어느 하나의 플래인으로부터 데이터를 리드할 수 있다. 즉, 리드 커맨드(RD_CMD)에 대응하여 리드 대상으로 선택된 어느 하나의 플래인은, 리드 커맨드(RD_CMD)에 응답하여 내부에 저장된 데이터를 페이지 버퍼로 리드한 뒤, 페이지 버퍼의 데이터를 캐시버퍼로 이동시킬 수 있다.
메모리 장치(150)는, 상태 커맨드(STATUS_CMD)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 리드 대상인 어느 하나의 플래인에서 리드동작이 완료되었는지 여부, 즉, 리드 대상인 플래인의 캐시버퍼에 데이터가 저장되어 있는지를 확인하고, 확인결과를 컨트롤러(130)에 알려줄 수 있다.
메모리 장치(150)는, 출력 커맨드(OUT_CMD)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 리드 대상인 플래인의 캐시버퍼에 저장된 데이터를 파이프 래치(P_LATCH0)로 전달한 뒤, 파이프 래치(P_LATCH0)를 통해 컨트롤러(130)로 출력할 수 있다.
실시예에 따라, 메모리 장치(150)에 포함된 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대해 순차적으로 리드 요청이 발생하는 것을 가정할 수 있다. 즉, 도면에서와 같이, 첫 번째 플래인(PLANE0)에 대한 리드 커맨드(P0, RD_CMD)와, 두 번째 플래인(PLANE1)에 대한 리드 커맨드(P1, RD_CMD)와, 세 번째 플래인(PLANE2)에 대한 리드 커맨드(P2, RD_CMD), 및 네 번째 플래인(PLANE3)에 대한 리드 커맨드(P3, RD_CMD)가 순차적으로 입력될 수 있다. 그에 따라, 메모리 장치(150)에 포함된 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)에서 순차적으로 내부에 저장된 데이터를 페이지 버퍼로 리드(CELL->PB0, CELL->PB1, CELL->PB2, CELL->PB3)한 뒤, 다수의 페이지 버퍼에 저장된 데이터를 캐시버퍼로 이동(PB0->CACHE0, PB1->CACHE1, PB2->CACHE2, PB3->CACHE3)시킬 수 있다.
첫 번째 플래인(PLANE0)에 대한 리드동작이 완료되었는지를 확인하기 위해 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)가 입력될 수 있다. 도면에서 메모리 장치(150)는, 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)에 응답하여 첫 번째 플래인(PLANE0)에서 리드동작이 완료되었음을 확인하고, 이를 컨트롤러(130)에 알려줄 수 있다. 따라서, 컨트롤러(130)는, 첫 번째 플래인(PLANE0)에 대한 출력 커맨드(P0, OUT_CMD)를 메모리 장치(150)로 전달할 수 있다. 만약, 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)가 입력되는 시점에서 첫 번째 플래인(PLANE0)에서 리드동작이 완료되지 않은 경우, 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)가 반복적으로 입력될 수 있다.
메모리 장치(150)는, 첫 번째 플래인(PLANE0)에 대한 출력 커맨드(P0, OUT_CMD)에 응답하여 첫 번째 플래인(PLANE0)의 캐시버퍼에 저장된 데이터를 파이프 래치로 복사(CACHE0->P_LATCH0)하는 동작을 시작할 수 있다. 파이프 래치(P_LATCH0)에 저장된 데이터는 컨트롤러(130)로 출력(P0 DATA OUT)될 수 있다. 이때, 첫 번째 플래인(PLANE0)에 대한 출력 커맨드(P0, OUT_CMD)가 입력되는 시점과, 파이프 래치(P_LATCH0)에서 컨트롤러(130)로 데이터가 출력되는 시점 간에 차이(tST0)가 존재하는 것은, 첫 번째 플래인(PLANE0)에 대한 출력 커맨드(P0, OUT_CMD)가 입력되면, 파이프 래치(P_LATCH0)를 리셋하기 위한 시간과, 캐시 버퍼(CACHE0)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 시간이 필요하기 때문이다.
첫 번째 플래인(PLANE0)에서 리드된 데이터의 출력(P0 DATA OUT)이 완료되면, 두 번째 플래인(PLANE1)에 대한 상태 커맨드(P1, STATUS_CMD)가 입력될 수 있다. 첫 번째 플래인(PLANE0)에서 리드된 데이터가 출력(P0 DATA OUT)되는 동안, 두 번째 플래인(PLANE1)에 대한 리드동작이 완료된 상태이기 때문에, 메모리 장치(150)는, 두 번째 플래인(PLANE1)에 대한 상태 커맨드(P1, STATUS_CMD)에 응답하여 두 번째 플래인(PLANE1)에서 리드동작이 완료되었음을 확인하고, 이를 컨트롤러(130)에 알려줄 수 있다. 따라서, 컨트롤러(130)는, 두 번째 플래인(PLANE1)에 대한 출력 커맨드(P1, OUT_CMD)를 메모리 장치(150)로 전달할 수 있다.
메모리 장치(150)는, 두 번째 플래인(PLANE1)에 대한 출력 커맨드(P1, OUT_CMD)에 응답하여 두 번째 플래인(PLANE1)의 캐시버퍼에 저장된 데이터를 파이프 래치로 복사(CACHE1->P_LATCH0)하는 동작을 시작할 수 있다. 파이프 래치(P_LATCH0)에 저장된 데이터는 컨트롤러(130)로 출력(P1 DATA OUT)될 수 있다. 이때, 두 번째 플래인(PLANE1)에 대한 출력 커맨드(P1, OUT_CMD)가 입력되는 시점과, 파이프 래치(P_LATCH0)에서 컨트롤러(130)로 데이터가 출력되는 시점 간에 차이(tST1)가 존재하는 것은, 두 번째 플래인(PLANE1)에 대한 출력 커맨드(P1, OUT_CMD)가 입력되면, 파이프 래치(P_LATCH0)를 리셋하기 위한 시간과, 캐시 버퍼(CACHE1)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 시간이 필요하기 때문이다.
두 번째 플래인(PLANE1)에서 리드된 데이터의 출력(P1 DATA OUT)이 완료되면, 세 번째 플래인(PLANE2)에 대한 상태 커맨드(P2, STATUS_CMD)가 입력될 수 있다. 첫 번째 플래인(PLANE0)에서 리드된 데이터가 출력(P0 DATA OUT)되는 동안, 세 번째 플래인(PLANE2)에 대한 리드동작이 완료된 상태이기 때문에, 메모리 장치(150)는, 세 번째 플래인(PLANE2)에 대한 상태 커맨드(P2, STATUS_CMD)에 응답하여 세 번째 플래인(PLANE2)에서 리드동작이 완료되었음을 확인하고, 이를 컨트롤러(130)에 알려줄 수 있다. 따라서, 컨트롤러(130)는, 세 번째 플래인(PLANE2)에 대한 출력 커맨드(P2, OUT_CMD)를 메모리 장치(150)로 전달할 수 있다.
메모리 장치(150)는, 세 번째 플래인(PLANE2)에 대한 출력 커맨드(P2, OUT_CMD)에 응답하여 세 번째 플래인(PLANE2)의 캐시버퍼에 저장된 데이터를 파이프 래치로 복사(CACHE2->P_LATCH0)하는 동작을 시작할 수 있다. 파이프 래치(P_LATCH0)에 저장된 데이터는 컨트롤러(130)로 출력(P2 DATA OUT)될 수 있다. 이때, 세 번째 플래인(PLANE2)에 대한 출력 커맨드(P2, OUT_CMD)가 입력되는 시점과, 파이프 래치(P_LATCH0)에서 컨트롤러(130)로 데이터가 출력되는 시점 간에 차이(tST2)가 존재하는 것은, 세 번째 플래인(PLANE2)에 대한 출력 커맨드(P2, OUT_CMD)가 입력되면, 파이프 래치(P_LATCH0)를 리셋하는 시간과, 캐시 버퍼(CACHE2)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 시간이 필요하기 때문이다.
세 번째 플래인(PLANE2)에서 리드된 데이터의 출력(P2 DATA OUT)이 완료되면, 네 번째 플래인(PLANE3)에 대한 상태 커맨드(P3, STATUS_CMD)가 입력될 수 있다. 첫 번째 플래인(PLANE0)에서 리드된 데이터가 출력(P0 DATA OUT)되는 동안, 네 번째 플래인(PLANE3)에 대한 리드동작이 완료된 상태이기 때문에, 메모리 장치(150)는, 네 번째 플래인(PLANE3)에 대한 상태 커맨드(P3, STATUS_CMD)에 응답하여 네 번째 플래인(PLANE3)에서 리드동작이 완료되었음을 확인하고, 이를 컨트롤러(130)에 알려줄 수 있다. 따라서, 컨트롤러(130)는, 네 번째 플래인(PLANE3)에 대한 출력 커맨드(P3, OUT_CMD)를 메모리 장치(150)로 전달할 수 있다.
메모리 장치(150)는, 네 번째 플래인(PLANE3)에 대한 출력 커맨드(P3, OUT_CMD)에 응답하여 네 번째 플래인(PLANE3)의 캐시버퍼에 저장된 데이터를 파이프 래치로 복사(CACHE3->P_LATCH0)하는 동작을 시작할 수 있다. 파이프 래치(P_LATCH0)에 저장된 데이터는 컨트롤러(130)로 출력(P3 DATA OUT)될 수 있다. 이때, 네 번째 플래인(PLANE3)에 대한 출력 커맨드(P3, OUT_CMD)가 입력되는 시점과, 파이프 래치(P_LATCH0)에서 컨트롤러(130)로 데이터가 출력되는 시점 간에 차이(tST3)가 존재하는 것은, 네 번째 플래인(PLANE3)에 대한 출력 커맨드(P3, OUT_CMD)가 입력되면, 파이프 래치(P_LATCH0)를 리셋하는 시간과, 캐시 버퍼(CACHE3)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 시간이 필요하기 때문이다.
참고로, 첫 번째 플래인(PLANE0) 에서 리드된 데이터의 출력(P0 DATA OUT)이 완료되면, 다른 플래인(PLANE1, PLANE2, PLANE3)에 대한 상태 커맨드(P1, STATUS_CMD / P2, STATUS_CMD / P3, STATUS_CMD)가 입력되는 것과는 별개로 첫 번째 플래인(PLANE0)에 대한 리드 커맨드(P0, RD_CMD)가 다시 입력될 수 있다. 그에 따라, 첫 번째 플래인(PLANE0) 내부에 저장된 데이터를 페이지 버퍼로 리드(CELL->PB0)하는 동작과, 페이지 버퍼에 저장된 데이터를 캐시버퍼로 이동(PB0->CACHE0)하는 동작을 다시 수행할 수 있다.
또한, 두 번째 플래인(PLANE1) 에서 리드된 데이터의 출력(P1 DATA OUT)이 완료되면, 다른 플래인(PLANE0, PLANE2, PLANE3)에 대한 상태 커맨드(P0, STATUS_CMD / P2, STATUS_CMD / P3, STATUS_CMD)가 입력되는 것과는 별개로 두 번째 플래인(PLANE1)에 대한 리드 커맨드(P1, RD_CMD)가 다시 입력될 수 있다. 그에 따라, 두 번째 플래인(PLANE1) 내부에 저장된 데이터를 페이지 버퍼로 리드(CELL->PB1)하는 동작과, 페이지 버퍼에 저장된 데이터를 캐시버퍼로 이동(PB1->CACHE1)하는 동작을 다시 수행할 수 있다.
마찬가지로, 세 번째 플래인(PLANE2) 에서 리드된 데이터의 출력(P2 DATA OUT)이 완료되면, 다른 플래인(PLANE0, PLANE1, PLANE3)에 대한 상태 커맨드(P0, STATUS_CMD / P1, STATUS_CMD / P3, STATUS_CMD)가 입력되는 것과는 별개로 세 번째 플래인(PLANE2)에 대한 리드 커맨드(P2, RD_CMD)가 다시 입력될 수 있다. 그에 따라, 세 번째 플래인(PLANE2) 내부에 저장된 데이터를 페이지 버퍼로 리드(CELL->PB2)하는 동작과, 페이지 버퍼에 저장된 데이터를 캐시버퍼로 이동(PB2->CACHE2)하는 동작을 다시 수행할 수 있다.
도 2b를 참조하면, 도 2a에서 도면부호 '200'을 통해 표시한 점선 박스의 동작을 좀 더 구체적으로 도시한 타이밍 다이어그램인 것을 알 수 있다.
즉, 도 2b에는, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 첫 번째 데이터를 출력(P0 DATA OUT)하는 동작과, 메모리 장치(150)의 두 번째 플래인(PLANE1)에서 리드된 두 번째 데이터를 출력(P1 DATA OUT)하는 동작이 도 2a보다 구체적으로 도시된 것을 알 수 있다.
특히, 도 2b에서는, 실장에서 메모리 장치(150)에 포함된 캐시버퍼(CACHE0 or CACHE1 or CACHE2 or CACHE3)의 크기보다 파이프 래치(P_LATCH0)의 크기가 더 작다는 점을 고려하여 캐시버퍼(CACHE0 or CACHE1 or CACHE2 or CACHE3)에 저장된 데이터를 분할한 뒤, 순차적으로 파이프 래치(P_LATCH0)에 전송하는 것을 가정하였다. 또한, 실장에서 파이프 래치(P_LATCH0)에는 데이터 패드(DQ)와의 사이에서 병렬 동작하는 적어도 두 개 이상의 서브 파이프 래치가 포함되는 점을 고려하여 파이프 래치(P_LATCH0)에 병렬 동작하는 다수의 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)가 포함된 것을 가정하였다.
예컨대, 파이프 래치(P_LATCH0)에 4개의 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)가 포함되고, 캐시버퍼(CACHE0 or CACHE1 or CACHE2 or CACHE3)에 저장된 데이터 크기가 4KByte이며, 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)에서 한 번에 처리하는 데이터의 크기가 512Byte인 것을 가정할 수 있다. 이와 같은 경우, 캐시버퍼(CACHE0 or CACHE1 or CACHE2 or CACHE3)에 저장된 4Kbyte의 데이터는 512Byte의 데이터 8개(D0, D1, D2, D3, D4, D5, D6, D7)로 분할된 뒤, 4개의 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)를 거쳐서 1개 데이터 패드(DQ)를 통해 순차적으로 출력될 수 있다. 참고로, 예시에 사용한 숫자, 즉, 4KByte와 512Byte와 4개 및 1개 등은, 어디까지나 설명의 편의를 위해 하나의 실시예로서 제시한 값일 뿐이며, 실제로는 메모리 장치의 종류나 설계자의 선택에 따라 얼마든지 다른 값으로 정해질 수 있다.
도 2a 및 도 2b를 함께 참조하면, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 첫 번째 1/8 데이터(D0)를 첫 번째 서브 파이프 래치(P_LATCH0_0)를 통해 데이터 패드(DQ)로 출력하고, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 두 번째 1/8 데이터(D1)를 두 번째 서브 파이프 래치(P_LATCH0_1)를 통해 데이터 패드(DQ)로 출력하며, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 세 번째 1/8 데이터(D2)를 세 번째 서브 파이프 래치(P_LATCH0_2)를 통해 데이터 패드(DQ)로 출력하고, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 네 번째 1/8 데이터(D3)를 네 번째 서브 파이프 래치(P_LATCH0_3)를 통해 데이터 패드(DQ)로 출력할 수 있다. 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 다섯 번째 1/8 데이터(D4)를 다시 첫 번째 서브 파이프 래치(P_LATCH0_0)를 통해 데이터 패드(DQ)로 출력하고, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 여섯 번째 1/8 데이터(D5)를 다시 두 번째 서브 파이프 래치(P_LATCH0_1)를 통해 데이터 패드(DQ)로 출력하며, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 일곱 번째 1/8 데이터(D6)를 다시 세 번째 서브 파이프 래치(P_LATCH0_2)를 통해 데이터 패드(DQ)로 출력하고, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 여덟 번째 1/8 데이터(D7)를 다시 네 번째 서브 파이프 래치(P_LATCH0_3)를 통해 데이터 패드(DQ)로 출력할 수 있다.
메모리 장치(150)에 포함된 첫 번째 플래인(PLANE0)에서 리드된 첫 번째 데이터의 출력(P0 DATA OUT, D0~D7)이 완료되면, 두 번째 플래인(PLANE1)에 대한 상태 커맨드(P1, STATUS_CMD)에 이어서 출력 커맨드(P1, OUT_CMD)가 입력될 수 있다.
이렇게, 두 번째 플래인(PLANE1)에 대한 출력 커맨드(P1, OUT_CMD)가 입력되는 시점에서, 메모리 장치(150)에 포함된 파이프 래치(P_LATCH0)에는 첫 번째 플래인(PLANE0)에서 리드된 첫 번째 데이터를 출력(P0 DATA OUT, D0~D7)할 때, 저장되었던 데이터(D4, D5, D6, D7)이 그대로 남아있는 상태일 수 있다. 따라서, 메모리 장치(150)는, 두 번째 플래인(PLANE1)에 대한 출력 커맨드(P1, OUT_CMD)가 입력되는 것에 응답하여 파이프 래치(P_LATCH0)를 리셋시키는 동작(pipe latch reset)을 먼저 수행한 뒤, 두 번째 플래인(PLANE1)의 캐시 버퍼(P2, CACHE1)에 저장된 데이터를 순차적으로 파이프 래치(P_LATCH0)로 복사하는 동작(CACHE1->P_LATCH0)을 수행할 수 있다.
두 번째 플래인(PLANE1)에서 리드된 두 번째 데이터(P1 DATA OUT)를 파이프 래치(P_LATCH0)를 통해 데이터 패드(DQ)로 출력하는 경우에도, 첫 번째 데이터(P0 DATA OUT)와 마찬가지로 8개의 데이터로 분할(D0, D1, D2, D3, D4, D5, D6, D7)로 분할한 뒤, 4개의 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)를 거쳐서 1개 데이터 패드(DQ)를 통해 순차적으로 출력할 수 있다.
전술한 설명과 같이, 메모리 장치(150)에 포함된 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)으로부터 인터리빙 방식으로 데이터를 리드할 때, 메모리 장치(150)에서 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)이 공유하여 사용하는 파이프 래치(P_LATCH0)를 리셋시키는 동작으로 인해, 출력 커맨드(OUT_CMD)가 입력되는 시점과 파이프 래치(P_LATCH0,)에서 컨트롤러(130)로 데이터가 출력되는 시점 간에 차이(tST0, tST1, tST2, tST3)가 존재할 수밖에 없는 것을 알 수 있다.
도 3은 본 발명의 실시예에 따른 메모리 장치에서 수행되는 리드동작의 일 예를 설명하기 위한 순서도이다.
도 3을 참조하면, 도 2a 및 도 2b에서 설명한 바와 같이 메모리 장치(150)는, 컨트롤러(130)로부터 리드 커맨드(RD_CMD)를 입력받아 리드동작을 수행한 후, 출력 커맨드(OUT_CMD)가 입력될 때까지 어떠한 동작도 수행하지 않고 대기하는 것을 알 수 있다.
구체적으로, 도 2a 및 도 2b에서 설명한 바와 같이 메모리 장치(150)는, 컨트롤러(130)로부터 수신된 리드 커맨드(RD_CMD)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에서 병렬로 리드동작을 수행할 수 있다. 이때, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에서 리드된 데이터를 캐시 버퍼(CACHE0, CACHE1, CACHE2, CACHE3)에 저장하는 동작이 완료되면, 출력 커맨드(OUT_CMD)가 입력될 때까지 대기할 수 있다. 즉, 출력 커맨드(OUT_CMD)가 입력되었는지 확인하는 동작(S31)을 수행하되, 출력 커맨드(OUT_CMD)가 입력되지 않은 경우(S31의 NO) 어떠한 동작도 수행하지 않고 대기할 수 있다. 예컨대, 도 2a 및 도 2b에서, 두 번째 플래인(PLANE1)의 경우, 리드 커맨드(P1, RD_CMD)에 응답하여 리드동작이 완료된 후, 출력 커맨드(P1, OUT_CMD)가 입력될 때까지 어떠한 동작도 수행하지 않고 대기하는 것을 알 수 있다.
출력 커맨드(OUT_CMD)가 입력되면(S31의 YES), 파이프 래치(P_LATCH)를 리셋 시킬 수 있다(S32). 예컨대, 메모리 장치(150)는, 두 번째 플래인(PLANE1)에 대응하는 출력 커맨드(P1, OUT_CMD)가 입력되는 것에 응답하여 파이프 래치(P_LATCH0)를 리셋시킬 수 있다.
S32동작 이후, 출력 커맨드(OUT_CMD)에 대응하는 플래인의 캐시 버퍼(CACHE)에 저장된 데이터를 파이프 래치(P_LATCH)로 복사할 수 있다(S33). 예컨대, 메모리 장치(150)는, 파이프 래치(P_LATCH0)를 리셋시키는 동작이 완료된 후, 두 번째 플래인(PLANE1)의 데이터를 파이프 래치(P_LATCH0)에 복사하는 동작을 수행할 수 있다.
S33동작 이후, 파이프 래치(P_LATCH)에 저장된 데이터를 컨트롤러(130)로 출력할 수 있다(S34). 예컨대, 메모리 장치(150)는, 파이프 래치(P_LATCH0)에 데이터가 저장된 후, 저장된 데이터를 컨트롤러(130)로 출력할 수 있다.
도 4는 본 발명의 실시예에 따른 메모리 장치의 상세한 구성을 설명하기 위해 도시한 도면이다.
도 4를 참조하면, 도 1a 및 도 1b에서 설명된 본 발명의 실시예에 따른 다수의 메모리 장치(150, 151, 152, 153) 중 첫 번째 메모리 장치(150)의 상세한 구성이 도시된 것을 알 수 있다. 참고로, 도 4에서는, 첫 번째 메모리 장치(150)에 대한 상세한 구성만 개시되지만, 이는 설명의 편의를 위한 것이며, 나머지 메모리 장치(151, 152, 153) 각각도 첫 번째 메모리 장치(150)와 동일한 형태의 구성을 가질 수 있다. 따라서, 하기의 설명에서 첫 번째 메모리 장치(150)에 대응하는 동작은, 나머지 메모리 장치(151, 152, 153) 각각에도 그대로 적용될 수 있다.
구체적으로, 메모리 장치(150)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)과, 파이프 래치(P_LATCH0)와, 로직 컨트롤러(401)를 포함할 수 있다.
여기서, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각은, 각각 페이지 단위로 다수의 데이터를 입/출력할 수 있다. 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)은, 다수의 페이지 버퍼(PB0, PB1, PB2, PB3)와 다수의 캐시버퍼(CACHE0, CACHE1, CACHE2, CACHE3)를 포함할 수 있다.
파이프 래치(P_LATCH0)는, 적어도 하나 이상의 리드 커맨드에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나 이상의 플래인 각각에서 리드동작을 수행할 수 있으며, 리드동작이 완료된 적어도 하나 이상의 플래인 중 어느 하나의 플래인으로부터 데이터를 전달받아 저장할 수 있다.
로직 컨트롤러(401)는, 적어도 하나 이상의 리드 커맨드가 수신된 이후 수신되는 출력 커맨드에 응답하여, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 파이프 래치(P_LATCH0)의 데이터에 대응하는 플래인을 가리키는 제1플래인 정보와, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 출력 커맨드에 대응하는 플래인을 가리키는 제2플래인 정보를 비교하고, 비교결과에 따라 파이프 래치(P_LATCH0)의 데이터를 선택적으로 출력할 수 있다.
로직 컨트롤러(130)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나 이상의 리드 커맨드 각각에 대응하는 적어도 하나 이상의 플래인 각각에 대한 리드동작을 수행할 수 있다.
실시예에 따라, 다수의 리드 커맨드가 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)으로부터 각각 데이터를 하나씩 리드하기 위한 커맨드일 경우, 로직 컨트롤러(401)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대한 리드동작을 수행하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 저장된 다수의 데이터를 다수의 페이지 버퍼(PB0, PB1, PB2, PB3) 각각으로 리드하고, 다수의 페이지 버퍼(PB0, PB1, PB2, PB3) 각각에 저장된 다수의 데이터를 다수의 캐시버퍼(CACHE0, CACHE1, CACHE2, CACHE3) 각각으로 이동시킬 수 있다.
로직 컨트롤러(130)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나의 플래인에 대한 리드동작이 완료된 경우, 즉, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나의 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)에 데이터의 저장이 완료된 경우, 적어도 하나 이상의 플래인 중 어느 하나의 플래인으로부터 데이터를 전달받아 파이프 래치(P_LATCH0)에 저장할 수 있다.
로직 컨트롤러(401)는, 다수의 리드 커맨드에 대응하는 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 리드동작이 완료된 어느 하나의 리드 커맨드에 대응하는 어느 하나의 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)의 데이터를 파이프 래치(P_LATCH0)로 복사할 수 있다.
이때, 로직 컨트롤러(130)는, 적어도 하나 이상의 플래인 중 어느 하나의 플래인으로부터 데이터를 전달받아 파이프 래치(P_LATCH0)에 저장하는 의 동작을 시작하는 것과 상관없이 적어도 하나 이상의 리드 커맨드에 대응하는 적어도 하나 이상의 플래인 각각에서 데이터를 리드하여 대응하는 캐시버퍼(One of CACHE<0:3>)에 저장하는 동작을 계속 수행, 즉, 리드 커맨드에 대응하는 플래인에 대한 리드동작을 계속 수행할 수 있다.
실시예에 따라, 순차적으로 입력된 두 개의 리드 커맨드가 첫 번째 및 두 번째 플래인(PLANE0, PLANE1)으로부터 각각 데이터를 하나씩 리드하기 위한 커맨드일 경우, 로직 컨트롤러(401)는, 첫 번째 플래인(PLANE0)에 대한 리드동작을 먼저 수행하고, 두 번째 플래인(PLANE1)에 대한 리드동작을 나중에 수행할 수 있다. 이와 같은 경우, 로직 컨트롤러(401)는, 첫 번째 플래인(PLANE0)에 대한 리드동작이 먼저 완료된 것을 확인하고 첫 번째 플래인(PLANE0)의 캐시버퍼(CACHE<0>)에 저장된 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작을 시작할 수 있지만, 첫 번째 플래인(PLANE0)의 캐시버퍼(CACHE<0>)에 저장된 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작을 시작하는 것과 상관없이 두 번째 플래인(PLANE1)에 대한 리드동작을 계속 수행할 수 있다. 로직 컨트롤러(401)는, 두 번째 플래인(PLANE1)에 대한 리드동작이 완료되고, 더 이상 처리할 리드 커맨드가 존재하지 않는 경우, 리드동작을 종료할 수 있다.
로직 컨트롤러(401)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 어느 하나의 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작을 완료한 후, 출력 커맨드가 수신되는 것에 응답하여 제1플래인 정보와 제2플래인 정보를 비교하고, 비교결과에 따라 파이프 래치(P_LATCH0)의 데이터를 선택적으로 출력하는 동작을 시작할 수 있다.
구체적으로, 로직 컨트롤러(401)는, 파이프 래치(P_LATCH0)에 저장된 데이터가 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 어떤 플래인으로부터 리드된 데이터인지를 나타내는 제1플래인 정보와, 출력 커맨드에 대응하는 플래인을 가리키는 제2플래인 정보를 비교할 수 있다.
비교결과, 제1플래인 정보와 제2플래인 정보가 동일할 경우, 파이프 래치(P_LATCH0)에 저장된 데이터를 그대로 컨트롤러(130)로 출력할 수 있다.
비교결과, 제1플래인 정보와 제2플래인 정보가 동일하지 않을 경우, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 출력 커맨드에 대응하는 플래인으로부터 리드된 데이터, 즉, 출력 커맨드에 대응하는 플래인의 캐시버퍼(One of CACHE<0:3>)에 저장된 데이터를 전달받아 파이프 래치(P_LATCH0)에 저장한 뒤, 파이프 래치(P_LATCH0)의 데이터를 컨트롤러(130)로 출력할 수 있다.
도 5는 도 4에 개시된 메모리 장치의 구성요소 중 로직 컨트롤러의 상세한 구성을 설명하기 위해 도시한 도면이다.
도 5를 참조하면, 도 4에 상세하게 개시된 첫 번째 메모리 장치(150)의 구성요소 중 로직 컨트롤러(401)의 상세한 구성이 도시된 것을 알 수 있다. 참고로, 도 5에서는, 첫 번째 메모리 장치(150)에 포함된 로직 컨트롤러(401)의 상세한 구성만 개시되지만, 이는 설명의 편의를 위한 것이며, 나머지 메모리 장치(151, 152, 153) 각각에도 첫 번째 메모리 장치(150)와 동일한 형태의 구성을 갖는 로직 컨트롤러(401)가 포함될 수 있다. 따라서, 하기의 설명에서 첫 번째 메모리 장치(150)에 대응하는 동작은, 나머지 메모리 장치(151, 152, 153) 각각에도 그대로 적용될 수 있다.
먼저, 로직 컨트롤러(401)는, 적어도 하나 이상의 리드 커맨드(RD_CMD)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나 이상의 플래인 각각에서 리드동작을 수행할 수 있으며, 리드동작이 완료된 적어도 하나 이상의 플래인 중 어느 하나의 플래인 포함된 캐시버퍼(One of CACHE<0:3>)의 데이터를 파이프 래치(P_LATCH0)로 복사할 수 있다.
이어서, 로직 컨트롤러(401)는, 적어도 하나 이상의 리드 커맨드(RD_CMD)가 수신된 이후 수신되는 출력 커맨드(OUT_CMD)에 응답하여, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 파이프 래치(P_LATCH0)의 데이터에 대응하는 플래인을 가리키는 제1플래인 정보(PL_IP1)와, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 제2플래인 정보(PL_IP2)를 비교하고, 비교결과에 따라 파이프 래치(P_LATCH0)의 데이터를 선택적으로 출력할 수 있다.
구체적으로, 로직 컨트롤러(401)는, 플래인 큐(510)와, 준비 레지스터(520)와, 상태 레지스터(530), 및 제어회로(500)를 포함할 수 있다. 제어회로(500)는, 선택저장부(501), 및 비교출력부(502)를 포함할 수 있다.
로직 컨트롤러(401)에 포함된 제어회로(500)는, 로직 컨트롤러(401)의 전반적인 동작을 제어할 수 있다. 제어회로(500)는, 커맨드 패스(CMD PATH)를 통해 컨트롤러(130)로부터 수신되는 리드 커맨드(RD_CMD)와 상태 커맨드(STATUS_CMD) 및 출력 커맨드(OUT_CMD)에 응답하여 플래인 큐(510)와 준비 레지스터(520) 및 상태 레지스터(530)의 동작을 제어할 수 있다. 또한, 제어회로(500)는, 커맨드 패스(CMD PATH)를 통해 컨트롤러(130)로부터 수신되는 리드 커맨드(RD_CMD)와 상태 커맨드(STATUS_CMD) 및 출력 커맨드(OUT_CMD)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각의 동작을 제어하기 위한 제어신호를 생성하여 내부 커맨드 패스(INTERNAL CMD PATH)로 출력할 수 있다. 즉, 제어회로(500)는, 내부에 포함된 선택저장부(501) 및 비교출력부(502)의 동작을 통해 플래인 큐(510)와 준비 레지스터(520) 및 상태 레지스터(530) 및 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각의 동작을 제어할 수 있다.
플래인 큐(510)에는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 리드 커맨드(RD_CMD)에 대응하는 플래인을 가리키는 제3플래인 정보(PL_IP3)가 저장될 수 있다. 컨트롤러(130)로부터 다수의 리드 커맨드(RD_CMD)가 순차적으로 수신되는 경우, 플래인 큐(510)에는, 다수의 리드 커맨드(RD_CMD)가 수신되는 순서에 따라 다수의 제3플래인 정보(PL_IP3)가 순차적으로 저장될 수 있다.
실시예에 따라, 첫 번째 수신되는 리드 커맨드(RD_CMD)가 두 번째 플래인(PLANE1)에 대응하고, 두 번째 수신되는 리드 커맨드(RD_CMD)가 첫 번째 플래인(PLANE0)에 대응하며, 세 번째 수신되는 리드 커맨드(RD_CMD)가 세 번째 플래인(PLANE2)에 대응하고, 네 번째 수신되는 리드 커맨드(RD_CMD)가 네 번째 플래인(PLANE3)에 대응할 수 있다. 이와 같은 경우, 플래인 큐(510)의 첫 번째 슬롯(0)에는 두 번째 플래인(PLANE1)을 가리키는 제3플래인 정보(PL_IP3, P1)가 저장되고, 두 번째 슬롯(1)에는 첫 번째 플래인(PLANE0)을 가리키는 제3플래인 정보(PL_IP3, P0)가 저장되며, 세 번째 슬롯(2)에는 세 번째 플래인(PLANE2)을 가리키는 제3플래인 정보(PL_IP3, P2)가 저장되고, 네 번째 슬롯(3)에는 네 번째 플래인(PLANE3)을 가리키는 제3플래인 정보(PL_IP3, P3)가 저장될 수 있다.
플래인 큐(510)는, 컨트롤러(130)로부터 출력 커맨드(OUT_CMD)수신된 후, 내부에 저장된 저장된 다수의 제3플래인 정보(PL_IP3) 중 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 제2플래인 정보(PL_IP2)에 대응하는 값을 제거할 수 있다. 이렇게, 플래인 큐(510)에서 제거된 제3플래인 정보(PL_IP3)는, 리드 커맨드(RD_CMD)가 수신되는 것에 응답하여 다시 생성될 수 있다.
참고로, 플래인 큐(510)에 제3플래인 정보(PL_IP3)를 저장하는 동작은, 제어회로(500)에 의해 수행될 수 있다.
플래인 큐(510)의 저장공간 개수는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)의 개수에 대응할 수 있다.
실시예에 따라, 메모리 장치(150)에 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)이 포함되므로, 플래인 큐(510)에는 네 개의 저장공간이 포함될 수 있다.
상태 레지스터(530)에는, 제1플래인 정보(PL_IP1)가 저장될 수 있다. 이때, 제1플래인 정보(PL_IP1)는, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 선택된 어느 하나의 플래인을 가리키는 어느 하나의 정보를 의미할 수 있다.
실시예에 따라, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 두 번째 플래인(PLANE1)이 선택된 경우, 제1플래인 정보(PL_IP1)는, 두 번째 플래인(PLANE1)을 가리키는 제3플래인 정보(PL_IP3)와 동일한 값을 가질 수 있다.
참고로, 상태 레지스터(530)에 제1플래인 정보(PL_IP1)를 저장하는 동작은, 제어회로(500)에 의해 수행될 수 있다.
준비 레지스터(520)에는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 리드 커맨드(RD_CMD)에 대응하는 플래인의 리드동작 완료 여부를 나타내는 완료정보(CP_IP)가 저장될 수 있다.
실시예에 따라, 다수의 리드 커맨드(RD_CMD)가 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3)으로부터 각각 데이터를 하나씩 리드하기 위한 커맨드이고 첫 번째 및 두 번째 플래인(PLANE0, PLANE1)에 대한 리드 동작은 완료되었지만 세 번째 및 네 번째 플래인(PLANE2, PLANE3)에 대한 리드 동작은 완료되지 않은 경우, 첫 번째 및 두 번째 플래인(PLANE0, PLANE1)에 대한 완료정보(CP_IP)는 준비(READY) 값을 갖고 세 번째 및 네 번째 플래인(PLANE2, PLANE3)에 대한 완료정보(CP_IP)는 비지(BUSY) 값을 가질 수 있다.
참고로, 준비 레지스터(520)에 완료정보(CP_IP)를 저장하는 동작은, 제어회로(500)에 의해 수행될 수 있다.
로직 컨트롤러(401)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에서 리드 동작이 완료되는 것에 응답하여 완료정보(CP_IP)를 생성할 수 있다.
로직 컨트롤러(401)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각의 리드동작이 완료되는 것에 응답하여 생성된 완료정보(CP_IP)를 준비 레지스터(520)에 저장할 수 있다.
실시예에 따라, 다수의 리드 커맨드(RD_CMD)에 응답하여 메모리 장치(150)에 포함된 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대해 리드동작의 수행이 시작되면, 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대한 완료정보(CP_IP)가 비지(BUSY)값으로 설정될 수 있다. 이후, 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각의 리드동작이 완료되는 순서대로 완료정보(CP_IP)가 비지(BUSY)값에서 준비(READY) 값으로 변경될 수 있다. 예컨대, 두 번째 플래인(PLANE1)에 대한 완료정보(CP_IP)가 비지(BUSY)값에서 준비(READY) 값으로 변경되고, 이어서 첫 번째 플래인(PLANE0)에 대한 완료정보(CP_IP)가 비지(BUSY)값에서 준비(READY) 값으로 변경되며, 이어서 세 번째 플래인(PLANE2)에 대한 완료정보(CP_IP)가 비지(BUSY)값에서 준비(READY) 값으로 변경되고, 네 번째 플래인(PLANE3)에 대한 완료정보(CP_IP)가 비지(BUSY)값에서 준비(READY) 값으로 변경될 수 있다.
로직 컨트롤러(401)는, 컨트롤러(130)로부터 리드 커맨드(RD_CMD)의 수신시점과 출력 커맨드(OUT_CMD)의 수신시점 사이에 수신되는 상태 커맨드(STATUS_CMD)에 응답하여 준비 레지스터(520)에 저장된 완료정보(CP_IP)를 컨트롤러(130)에 전달할 수 있다.
로직 컨트롤러(401)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에서 리드 동작이 완료되었는지 여부에 응답하여 완료정보(CP_IP)를 생성한 뒤, 생성된 완료정보(CP_IP)를 상태 커맨드(STATUS_CMD)에 대한 응답(ack)으로 컨트롤러(130)에 송신할 수 있다. 따라서, 컨트롤러(130)는, 상태 커맨드(STATUS_CMD)를 통해 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 리드 동작이 완료된 플래인을 구분할 수 있다. 이렇게, 컨트롤러(130)에서 리드 동작이 완료된 플래인을 구분할 수 있기 때문에, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 리드 동작이 완료된 플래인에 대해서만 출력 커맨드(OUT_CMD)를 생성할 수 있다. 따라서, 출력 커맨드(OUT_CMD)에 대응하는 제2플래인 정보(PL_IP2)가 가리키는 플래인의 경우, 항상 리드 동작이 완료될 상태일 수 있다.
선택저장부(501)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나 이상의 리드 커맨드(RD_CMD)에 대응하는 적어도 하나 이상의 플래인 각각의 리드동작 완료 여부를 나타내는 완료정보(CP_IP) 및 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 어느 하나의 플래인을 선택하고, 선택된 플래인으로부터 리드된 데이터를 파이프 래치(P_LATCH0)에 저장할 수 있다.
선택저장부(501)는, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 대응하는 리드 커맨드(RD_CMD)의 수신순서대로 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대응하는 완료정보(CP_IP)를 확인하고, 확인결과에 따라 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 리드 커맨드(RD_CMD)가 상대적으로 먼저 수신되고 리드동작이 완료된 어느 하나의 플래인을 선택된 플래인으로 선택한 뒤, 선택된 플래인으로부터 리드된 데이터를 파이프 래치(P_LATCH0)에 저장할 수 있다.
선택저장부(501)는, 준비 레지스터(520)에 저장된 완료정보(CP_IP) 및 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 어느 하나의 플래인을 선택하고, 선택된 플래인을 가리키는 제1플래인 정보(PL_IP1)를 생성할 수 있다.
선택저장부(501)는, 제1플래인 정보(PL_IP1)를 생성하여 상태 레지스터(530)에 저장할 수 있다. 선택저장부(501)는, 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)가 가리키는 선택된 플래인으로부터 리드된 데이터를 파이프 래치(P_LATCH0)에 저장할 수 있다.
선택저장부(501)는, 적어도 하나 이상의 리드 커맨드(RD_CMD)가 수신된 후 출력 커맨드(OUT_CMD)의 수신여부와 상관없이 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 포함된 다수의 캐시버퍼(CACHE0, CACHE1, CACHE2, CACHE3) 중 선택된 플래인의 캐시 버퍼(One of CACHE<0:3>)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사할 수 있다.
선택저장부(501)는, 적어도 하나 이상의 리드 커맨드(RD_CMD)가 수신된 후 출력 커맨드(OUT_CMD)의 수신여부와 상관없이 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)가 가리키는 선택된 플래인의 캐시 버퍼(One of CACHE<0:3>)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사할 수 있다.
실시예에 따라, 선택저장부(501)는, 준비 레지스터(520)에 저장된 완료정보(CP_IP) 및 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 두 번째 플래인(PLANE1)을 선택하고, 선택된 두 번째 플래인(PLANE1)으로부터 리드된 데이터를 파이프 래치(P_LATCH0)에 저장할 수 있다.
실시예에 따라, 선택저장부(501)는, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 대응하는 리드 커맨드(RD_CMD)의 순서대로 두 번째 플래인(PLANE1)에 대응하는 완료정보(CP_IP)를 준비 레지스터(520)에서 확인하고, 이어서 첫 번째 플래인(PLANE0)에 대응하는 완료정보(CP_IP)를 준비 레지스터(520)에서 확인하며, 이어서 세 번째 플래인(PLANE2)에 대응하는 완료정보(CP_IP)를 준비 레지스터(520)에서 확인하고, 이어서 네 번째 플래인(PLANE3)에 대응하는 완료정보(CP_IP)를 준비 레지스터(520)에서 확인할 수 있다. 물론, 도면에서는 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 대응하는 리드 커맨드(RD_CMD)의 순서에 따라 두 번째 플래인(PLANE1)에 대응하는 완료정보(CP_IP)를 준비 레지스터(520)에서 확인한 결과, 준비(READY) 값을 갖는 것을 알 수 있다. 따라서, 도면에서는 두 번째 플래인(PLANE1)에 대응하는 완료정보(CP_IP)를 준비 레지스터(520)에서 확인하여 두 번째 플래인(PLANE1)을 선택된 플래인으로 설정할 수 있으므로, 나머지 플래인(PLANE0, PLANE2, PLANE3)에 대응하는 완료정보(CP_IP)는 준비 레지스터(520)에서 확인하지 않을 수 있다.
실시예에 따라, 선택저장부(501)는, 준비 레지스터(520)에 저장된 완료정보(CP_IP) 및 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 두 번째 플래인(PLANE1)을 선택하고, 두 번째 플래인(PLANE1)을 가리키는 제1플래인 정보(PL_IP1)를 생성할 수 있다. 선택저장부(501)는, 두 번째 플래인(PLANE1)을 가리키는 제1플래인 정보(PL_IP1)를 생성하여 상태 레지스터(530)에 저장할 수 있다.
실시예에 따라, 선택저장부(501)는, 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)가 가리키는 두 번째 플래인(PLANE1)으로부터 리드된 데이터를 파이프 래치(P_LATCH0)에 저장할 수 있다.
실시예에 따라, 선택저장부(501)는, 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)가 가리키는 두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사할 수 있다.
비교출력부(502)는, 적어도 하나 이상의 리드 커맨드(RD_CMD)가 수신된 이후 수신되는 출력 커맨드(OUT_CMD)에 응답하여 선택저장부(501)를 통해 선택된 플래인을 가리키는 제1플래인 정보(PL_IP1)와 제2플래인 정보(PL_IP2)를 비교하여 일치할 경우, 파이프 래치(P_LATCH0)의 데이터를 컨트롤러(130)로 출력할 수 있다.
비교출력부(502)는, 상태 레지스터(530)로부터 전달받은 제1플래인 정보(PL_IP1)와 제2플래인 정보(PL_IP2)를 비교하여 일치할 경우, 파이프 래치(P_LATCH0)의 데이터를 컨트롤러(130)로 출력할 수 있다. 여기서, 제1플래인 정보(PL_IP1)는, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 선택저장부(501)를 통해 선택된 어느 하나의 플래인을 가리키는 어느 하나의 정보를 의미할 수 있다.
실시예에 따라, 플래인 큐(510)에 저장된 4개의 제3플래인 정보(PL_IP3, P0~P3) 중 선택저장부(501)를 통해 선택된 두 번째 플래인(PLANE1)을 가리키는 제3플래인 정보(PL_IP3, P1)가 제1플래인 정보(PL_IP1, P1)일 수 있다.
비교출력부(502)는, 적어도 하나 이상의 리드 커맨드(RD_CMD)가 수신된 이후 수신되는 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 제2플래인 정보(PL_IP2)를 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)와 비교하여 동일할 경우, 파이프 래치(P_LATCH0)에 저장된 데이터를 컨트롤러(130)에 그대로 출력할 수 있다.
실시예에 따라, 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)가 두 번째 플래인(PLANE1)을 가리키는 경우, 두 번째 플래인(PLANE1)으로부터 리드된 데이터가 파이프 래치(P_LATCH0)에 저장되어 있는 상태일 수 있다. 이와 같은 상태에서, 출력 커맨드(OUT_CMD)에 대응하는 제2플래인 정보(PL_IP2)가 두 번째 플래인(PLANE1)을 가리키는 경우, 비교출력부(502)는, 제1플래인 정보(PL_IP1)와 제2플래인 정보(PL_IP2)가 일치한다는 것을 확인하고, 파이프 래치(P_LATCH0)에 저장된 데이터, 즉, 두 번째 플래인(PLANE1)으로부터 리드된 데이터이므로, 파이프 래치(P_LATCH0)의 데이터를 그대로 컨트롤러(130)에 출력할 수 있다.
비교출력부(502)는, 적어도 하나 이상의 리드 커맨드(RD_CMD)가 수신된 이후 수신되는 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 제2플래인 정보(PL_IP2)를 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)와 비교하여 동일하지 않을 경우, 출력 커맨드(OUT_CMD)에 대응하는 플래인으로부터 리드된 데이터를 파이프 래치(P_LATCH0)에 저장한 후, 파이프 래치(P_LATCH0)에 저장된 데이터를 컨트롤러(130)에 출력할 수 있다.
실시예에 따라, 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)가 두 번째 플래인(PLANE1)을 가리키는 경우, 두 번째 플래인(PLANE1)으로부터 리드된 데이터가 파이프 래치(P_LATCH0)에 저장되어 있는 상태일 수 있다. 이와 같은 상태에서, 출력 커맨드(OUT_CMD)에 대응하는 제2플래인 정보(PL_IP2)가 첫 번째 플래인(PLANE0)을 가리키는 경우, 비교출력부(502)는, 제1플래인 정보(PL_IP1)와 제2플래인 정보(PL_IP2)가 일치하지 않다는 것을 확인하여 파이프 래치(P_LATCH0)를 리셋시키고, 출력 커맨드(OUT_CMD)에 대응하는 첫 번째 플래인(PLANE0)으로부터 리드된 데이터를 파이프 래치(P_LATCH0)에 저장한 뒤, 파이프 래치(P_LATCH0)에 저장된 데이터, 즉, 첫 번째 플래인(PLANE0)으로부터 리드된 데이터를 컨트롤러(130)에 출력할 수 있다.
비교출력부(502)는, 적어도 하나 이상의 리드 커맨드(RD_CMD)가 수신된 이후 수신되는 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 제2플래인 정보(PL_IP2)를 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)와 비교하는 동작을 수행한 후, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 제2플래인 정보(PL_IP2)에 대응하는 값을 제거할 수 있다.
실시예에 따라, 출력 커맨드(OUT_CMD)에 대응하는 제2플래인 정보(PL_IP2)가 두 번째 플래인(PLANE1)을 가리키는 경우, 적어도 하나 이상의 리드 커맨드(RD_CMD)가 수신된 이후 수신되는 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 제2플래인 정보(PL_IP2)를 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)와 비교하는 동작을 수행한 후, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 두 번째 플래인(PLANE1)을 가리키는 값을 제거할 수 있다.
도 6a 및 도 6b는 본 발명의 실시예에 따른 메모리 장치에서 수행되는 리드동작의 다른 예를 설명하기 위한 타이밍 다이어그램이다.
도 6a 및 도 6b를 참조하면, 메모리 장치(150)에 포함된 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대한 리드동작이 어떻게 순차적으로 수행되는지 알 수 있다. 이하에서는 다수의 메모리 장치(150, 151, 152, 153) 중 첫 번째 메모리 장치(150)의 동작을 '메모리 장치'로서 설명하지만, 다른 메모리 장치(151, 152, 153) 각각에도 첫 번째 메모리 장치(150)와 동일한 형태의 동작이 수행될 수 있다.
도 6a를 참조하면, 컨트롤러(130)는, 호스트(102)로부터 요청된 리드동작에 대응하여 리드 커맨드(RD_CMD)와 상태 커맨드(STATUS_CMD) 및 출력 커맨드(OUT_CMD)를 생성하여 메모리 장치(150)로 전달할 수 있다.
메모리 장치(150)는, 적어도 하나 이상의 리드 커맨드(RD_CMD)가 수신되는 것에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나 이상의 플래인으로부터 데이터를 리드할 수 있다. 즉, 수신된 어느 하나의 리드 커맨드(RD_CMD)에 대응하여 리드 대상으로 선택된 어느 하나의 플래인 내부에 저장된 데이터를 페이지 버퍼로 리드한 뒤, 페이지 버퍼의 데이터를 캐시버퍼로 이동시킬 수 있다.
실시예에 따라, 메모리 장치(150)에 포함된 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대해 순차적으로 리드 요청이 발생하는 것을 가정할 수 있다. 즉, 도면에서와 같이, 첫 번째 플래인(PLANE0)에 대한 리드 커맨드(P0, RD_CMD)와, 두 번째 플래인(PLANE1)에 대한 리드 커맨드(P1, RD_CMD)와, 세 번째 플래인(PLANE2)에 대한 리드 커맨드(P2, RD_CMD), 및 네 번째 플래인(PLANE3)에 대한 리드 커맨드(P3, RD_CMD)이 순차적으로 입력될 수 있다. 그에 따라, 메모리 장치(150)에 각각 네 개의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에서 순차적으로 내부에 저장된 데이터를 페이지 버퍼로 리드(CELL->PB0, CELL->PB1, CELL->PB2, CELL->PB3)한 뒤, 다수의 페이지 버퍼에 저장된 데이터를 캐시버퍼로 이동(PB0->CACHE0, PB1->CACHE1, PB2->CACHE2, PB3->CACHE3)시킬 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 순차적으로 입력된 리드 커맨드(RD_CMD)가 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 어떤 플래인에 대응하는지를 나타내는 제3플래인 정보(PL_IP3)를 생성하여 플래인 큐(510)에 저장할 수 있다.
실시예에 따라, 첫 번째 플래인(PLANE0)에 대한 리드 커맨드(P0, RD_CMD)와, 두 번째 플래인(PLANE1)에 대한 리드 커맨드(P1, RD_CMD)와, 세 번째 플래인(PLANE2)에 대한 리드 커맨드(P2, RD_CMD), 및 네 번째 플래인(PLANE3)에 대한 리드 커맨드(P3, RD_CMD)이 순차적으로 입력될 수 있다. 그에 따라, 메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 플래인 큐(510)의 첫 번째 슬롯에는 첫 번째 플래인(PLANE0)에 대응하는 제3플래인 정보(PL_IP3)를 저장하고, 플래인 큐(510)의 두 번째 슬롯에는 두 번째 플래인(PLANE1)에 대응하는 제3플래인 정보(PL_IP3)를 저장하며, 플래인 큐(510)의 세 번째 슬롯에는 세 번째 플래인(PLANE2)에 대응하는 제3플래인 정보(PL_IP3)를 저장하고, 플래인 큐(510)의 네 번째 슬롯에는 네 번째 플래인(PLANE3)에 대응하는 제3플래인 정보(PL_IP3)를 저장할 수 있다.
메모리 장치(150)는, 컨트롤러(130)로부터 수신된 상태 커맨드(STATUS_CMD)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 리드 대상인 어느 하나의 플래인에서 리드동작이 완료되었는지 여부, 즉, 리드 대상인 플래인의 캐시버퍼에 데이터가 저장되어 있는지를 확인하고, 확인결과를 컨트롤러(130)에 알려줄 수 있다.
첫 번째 플래인(PLANE0)에 대한 리드동작이 완료되었는지를 확인하기 위해 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)가 입력될 수 있다. 도면에서 메모리 장치(150)는, 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)에 응답하여 첫 번째 플래인(PLANE0)에서 리드동작이 완료되었음을 확인하고, 이를 컨트롤러(130)에 알려줄 수 있다. 따라서, 컨트롤러(130)는, 첫 번째 플래인(PLANE0)에 대한 출력 커맨드(P0, OUT_CMD)를 메모리 장치(150)로 전달할 수 있다. 만약, 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)가 입력되는 시점에서 첫 번째 플래인(PLANE0)에서 리드동작이 완료되지 않은 경우, 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)가 반복적으로 입력될 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나의 플래인으로부터 데이터 리드동작이 완료된 경우, 즉, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나의 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)에 데이터의 저장이 완료된 경우, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 어느 하나의 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)의 데이터를 파이프 래치(P_LATCH0)로 복사할 수 있다. 이때, 어느 하나의 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작은 컨트롤러(130)로부터 상태 커맨드(STATUS_CMD)가 입력되는 것과는 상관없이 수행될 수 있다.
좀 더 구체적으로, 메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 대응하는 리드 커맨드(RD_CMD)의 수신순서대로 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각의 리드동작의 완료되었는지 여부를 확인할 수 있다. 확인결과, 적어도 하나 이상의 플래인에서 리드동작이 완료된 경우, 해당 플래인을 선택하고, 선택된 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작을 시작할 수 있다.
실시예에 따라, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)에 대한 리드 커맨드(P0, RD_CMD)와, 두 번째 플래인(PLANE1)에 대한 리드 커맨드(P1, RD_CMD)와, 세 번째 플래인(PLANE2)에 대한 리드 커맨드(P2, RD_CMD), 및 네 번째 플래인(PLANE3)에 대한 리드 커맨드(P3, RD_CMD)이 순차적으로 입력되었다는 내용이 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 저장될 수 있다. 따라서, 로직 컨트롤러(401)는, 제3플래인 정보(PL_IP3)에 따라 첫 번째 플래인(PLANE0)에 대한 리드동작이 완료되었는지 여부를 가장 먼저 확인하고, 이어서, 두 번째 플래인(PLANE1)에 대한 리드동작이 완료되었는지 여부를 확인하며, 이어서 세 번째 플래인(PLANE2)에 대한 리드동작이 완료되었는지 여부를 확인하고, 이어서 네 번째 플래인(PLANE3)에 대한 리드동작이 완료되었는지 여부를 확인할 수 있다. 만약, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 전체에 대한 리드동작이 완료되지 않은 경우, 다시 처음부터, 즉, 첫 번째 플래인(PLANE0)부터 순서대로 리드동작이 완료되었는지 여부를 확인할 수 있다.
이때, 로직 컨트롤러(401)는, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각의 리드동작의 완료여부를 확인하는 동작을 컨트롤러(130)에서 상태 커맨드(STATUS_CMD)가 입력되는 것과 상관없이 수행할 수 있다. 예컨대, 로직 컨트롤러(401)는, 리드 커맨드(RD_CMD)가 입력된 이후, 미리 정해진 일정 시점마다 해당 리드 커맨드(RD_CMD)에 대응하는 리드동작이 완료되었는지 여부를 확인하는 동작을 수행할 수 있다.
전술한 설명과 같이, 상태 커맨드(STATUS_CMD)가 입력되는 것과 상관없이 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각의 리드동작의 완료되었는지 여부를 확인한 결과에 따라 어느 하나의 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작을 시작할 수 있다. 따라서, 도면에서와 같이 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)에 대한 리드 동작이 완료되는 것에 응답하여, 즉, 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 데이터가 저장(PB0->CACHE0)되는 것에 응답하여 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE0->P_LATCH0)할 수 있다.
참고로, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 어느 하나의 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작의 시작시점에서 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)을 제외한 나머지 플래인(PLANE1, PLANE2, PLANE3)에 대한 리드동작은 완료되지 않은 상태이므로, 나머지 플래인(PLANE1, PLANE2, PLANE3)에 대한 리드동작은 계속 수행되고 있는 상태일 수 있다. 따라서, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에 대한 리드동작과 리드동작이 완료된 어느 하나의 플래인에 포함된 캐시버퍼(One of CACHE<0:3>)의 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작은 서로 겹쳐질 수 있다.
첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE0->P_LATCH0)하는 동작을 수행하는 중간에 컨트롤러(130)로부터 첫 번째 플래인(PLANE0)에 대한 리드동작이 완료되었는지를 확인하기 위해 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)가 입력될 수 있다. 도면에서 메모리 장치(150)는, 첫 번째 플래인(PLANE0)에 대한 상태 커맨드(P0, STATUS_CMD)에 응답하여 첫 번째 플래인(PLANE0)에서 리드동작이 완료되었음을 확인하고, 이를 컨트롤러(130)에 알려줄 수 있다. 따라서, 컨트롤러(130)는, 첫 번째 플래인(PLANE0)에 대한 출력 커맨드(P0, OUT_CMD)를 메모리 장치(150)로 전달할 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 컨트롤러(130)로부터 출력 커맨드(OUT_CMD)가 입력되는 것에 따라 출력 커맨드(OUT_CMD)에 대응하는 플래인이 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인과 동일한지 여부를 확인하고, 확인결과에 따라 파이프 래치(P_LATCH0)에 저장된 데이터를 컨트롤러(130)에 선택적으로 출력할 수 있다.
실시예에 따라, 첫 번째 플래인(PLANE0)에 대응하는 출력 커맨드(OUT_CMD, P0)가 입력되는 시점은, 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE0->P_LATCH0)하는 동작을 수행 중인 상태일 수 있다. 즉, 출력 커맨드(OUT_CMD)에 대응하는 플래인이 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인이 동일한 상태일 수 있다. 따라서, 첫 번째 플래인(PLANE0)에 대응하는 출력 커맨드(OUT_CMD, P0)가 입력되는 것에 응답하여 파이프 래치(P_LATCH0)에 저장된 첫 번째 플래인(PLANE0)의 데이터를 그대로 컨트롤러(130)로 출력할 수 있다.
도면과 다르게, 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE0->P_LATCH0)하는 동작을 수행 중에 두 번째 플래인(PLANE1)에 대응하는 출력 커맨드(OUT_CMD)가 입력되는 경우, 수행 중이었던 첫 번째 플래인(PLANE0)의 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE0->P_LATCH0)하는 동작은 즉시 중단되고, 파이프 래치(P_LATCH0)를 리셋하는 동작을 수행한 뒤, 두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작과 파이프 래치(P_LATCH0)에 저장되는 데이터를 컨트롤러(130)로 출력하는 동작이 연속으로 수행될 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 컨트롤러(130)로부터 출력 커맨드(OUT_CMD)가 입력되는 것에 따라 출력 커맨드(OUT_CMD)에 대응하는 플래인이 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인과 동일한지 여부를 확인하고, 확인결과에 따라 파이프 래치(P_LATCH0)에 저장된 데이터를 컨트롤러(130)에 선택적으로 출력하는 동작을 시작한 후, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 값을 제거할 수 있다.
실시예에 따라, 로직 컨트롤러(130)는, 첫 번째 플래인(PLANE0)에 대응하는 출력 커맨드(OUT_CMD, P0)가 입력되어 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인이 첫 번째 플래인(PLANE0)과 동일한지 여부를 확인하는 동작을 시작한 후, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 첫 번째 플래인(PLANE0)에 대응하는 값을 제거할 수 있다.
참고로, 출력 커맨드(OUT_CMD)에 대응하는 플래인이 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인과 동일한지 여부를 확인하는 동작은 출력 커맨드(OUT_CMD)의 입력에 응답하여 시작될 수 있으며, 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE0->P_LATCH0)하는 동작을 수행하는 중에 출력 커맨드(OUT_CMD)가 입력될 수 있다.
또한, 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE0->P_LATCH0)하는 동작은, 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 저장된 데이터가 파이프 래치(P_LATCH0)에 모두 복사되는 시점에서 종료될 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 첫 번째 플래인(PLANE0)에서 리드된 데이터의 출력(P0 DATA OUT)이 완료되면, 다시 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 대응하는 리드 커맨드(RD_CMD)의 수신순서대로 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각의 리드동작의 완료되었는지 여부를 확인할 수 있다. 이때, 로직 컨트롤러(130)는, 첫 번째 플래인(PLANE0)에 대응하는 출력 커맨드(OUT_CMD, P0)가 입력된 후, 첫 번째 플래인(PLANE0)에서 리드된 데이터의 출력(P0 DATA OUT)하는 동작이 완료되기 이전에, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 첫 번째 플래인(PLANE0)에 대응하는 값을 제거한 상태일 수 있다.
도면에서 첫 번째 플래인(PLANE0)에서 리드된 데이터의 출력(P0 DATA OUT)이 완료된 직후, 첫 번째 플래인(PLANE0)에 대한 리드 커맨드(P0, RD_CMD)가 다시 입력될 수 있지만, 이전에 이미 입력된 두 번째 내지 네 번째 플래인(PLANE1, PLANE2, PLANE3)에 대한 리드 커맨드(P1~P3, RD_CMD)가 존재하기 때문에, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 첫 번째 플래인(PLANE0)에 대응하는 값은 가장 마지막 슬롯에 저장될 수 있다. 즉, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에는, 두 번째 플래인(PLANE1)에 대한 리드 커맨드(P1, RD_CMD)와, 세 번째 플래인(PLANE2)에 대한 리드 커맨드(P2, RD_CMD)와, 네 번째 플래인(PLANE3)에 대한 리드 커맨드(P3, RD_CMD), 및 첫 번째 플래인(PLANE0)에 대한 리드 커맨드(P0, RD_CMD)가 순차적으로 입력되었다는 내용이 저장된 상태일 수 있다.
따라서, 로직 컨트롤러(401)는, 제3플래인 정보(PL_IP3)에 따라 두 번째 플래인(PLANE1)에 대한 리드동작이 완료되었는지 여부를 가장 먼저 확인하고, 이어서 세 번째 플래인(PLANE2)에 대한 리드동작이 완료되었는지 여부를 확인하며, 이어서 네 번째 플래인(PLANE3)에 대한 리드동작이 완료되었는지 여부를 확인하며, 이어서 첫 번째 플래인(PLANE0)에 대한 리드동작이 완료되었는지 여부를 확인할 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 첫 번째 플래인(PLANE0)에서 리드된 데이터의 출력(P0 DATA OUT)이 완료된 후, 제3플래인 정보(PL_IP3)에 따라 두 번째 플래인(PLANE1)에 대한 리드동작이 완료되었는지 확인하고, 확인결과에 따라 두 번째 플래인(PLANE1)으로부터 데이터를 전달받아 파이프 래치(P_LATCH0)에 저장하는 동작을 시작할 수 있다. 즉, 로직 컨트롤러(401)는, 첫 번째 플래인(PLANE0)에서 리드된 데이터의 출력(P0 DATA OUT)이 완료된 후, 두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE1->P_LATCH0)하는 동작을 수행할 수 있다.
두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE1->P_LATCH0)하는 동작을 수행하는 중간에 컨트롤러(130)로부터 두 번째 플래인(PLANE1)에 대한 리드동작이 완료되었는지를 확인하기 위해 두 번째 플래인(PLANE1)에 대한 상태 커맨드(P1, STATUS_CMD)가 입력될 수 있다. 도면에서 메모리 장치(150)는, 두 번째 플래인(PLANE1)에 대한 상태 커맨드(P1, STATUS_CMD)에 응답하여 두 번째 플래인(PLANE1)에서 리드동작이 완료되었음을 확인하고, 이를 컨트롤러(130)에 알려줄 수 있다. 따라서, 컨트롤러(130)는, 두 번째 플래인(PLANE1)에 대한 출력 커맨드(P1, OUT_CMD)를 메모리 장치(150)로 전달할 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 컨트롤러(130)로부터 출력 커맨드(OUT_CMD)가 입력되는 것에 따라 출력 커맨드(OUT_CMD)에 대응하는 플래인이 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인과 동일한지 여부를 확인하고, 확인결과에 따라 파이프 래치(P_LATCH0)에 저장된 데이터를 컨트롤러(130)에 선택적으로 출력할 수 있다.
실시예에 따라, 두 번째 플래인(PLANE1)에 대응하는 출력 커맨드(OUT_CMD, P1)가 입력되는 시점은, 두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE1->P_LATCH0)하는 동작을 수행 중인 상태일 수 있다. 즉, 출력 커맨드(OUT_CMD)에 대응하는 플래인이 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인이 동일한 상태일 수 있다. 따라서, 두 번째 플래인(PLANE1)에 대응하는 출력 커맨드(OUT_CMD, P1)가 입력되는 것에 응답하여 파이프 래치(P_LATCH1)에 저장된 두 번째 플래인(PLANE1)의 데이터를 그대로 컨트롤러(130)로 출력할 수 있다.
도면과 다르게, 두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE1->P_LATCH0)하는 동작을 수행 중에 첫 번째 플래인(PLANE0)에 대응하는 출력 커맨드(OUT_CMD)가 입력되는 경우, 수행 중이었던 두 번째 플래인(PLANE1)의 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE1->P_LATCH0)하는 동작은 즉시 중단되고, 파이프 래치(P_LATCH0)를 리셋하는 동작을 수행한 뒤, 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 저장된 데이터를 파이프 래치(P_LATCH0)로 복사하는 동작과 파이프 래치(P_LATCH0)에 저장되는 데이터를 컨트롤러(130)로 출력하는 동작이 연속으로 수행될 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 컨트롤러(130)로부터 출력 커맨드(OUT_CMD)가 입력되는 것에 따라 출력 커맨드(OUT_CMD)에 대응하는 플래인이 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인과 동일한지 여부를 확인하고, 확인결과에 따라 파이프 래치(P_LATCH0)에 저장된 데이터를 컨트롤러(130)에 선택적으로 출력하는 동작을 시작한 후, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 값을 제거할 수 있다.
실시예에 따라, 로직 컨트롤러(130)는, 두 번째 플래인(PLANE1)에 대응하는 출력 커맨드(OUT_CMD, P1)가 입력되어 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인이 두 번째 플래인(PLANE1)과 동일한지 여부를 확인하는 동작을 시작한 후, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 두 번째 플래인(PLANE1)에 대응하는 값을 제거할 수 있다.
참고로, 출력 커맨드(OUT_CMD)에 대응하는 플래인이 파이프 래치(P_LATCH0)에 저장된 데이터에 대응하는 플래인과 동일한지 여부를 확인하는 동작은 출력 커맨드(OUT_CMD)의 입력에 응답하여 시작될 수 있으며, 두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE1->P_LATCH0)하는 동작을 수행하는 중에 출력 커맨드(OUT_CMD)가 입력될 수 있다.
또한, 두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE1->P_LATCH0)하는 동작은, 두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터가 파이프 래치(P_LATCH0)에 모두 복사되는 시점에서 종료될 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 두 번째 플래인(PLANE1)에서 리드된 데이터의 출력(P1 DATA OUT)이 완료되면, 다시 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 대응하는 리드 커맨드(RD_CMD)의 수신순서대로 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각의 리드동작의 완료되었는지 여부를 확인할 수 있다. 이때, 로직 컨트롤러(130)는, 두 번째 플래인(PLANE1)에 대응하는 출력 커맨드(OUT_CMD, P1)가 입력된 후, 두 번째 플래인(PLANE1)에서 리드된 데이터를 출력(P1 DATA OUT)하는 동작이 완료되기 이전에, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 두 번째 플래인(PLANE1)에 대응하는 값을 제거한 상태일 수 있다.
도면에서 두 번째 플래인(PLANE1)에서 리드된 데이터의 출력(P1 DATA OUT)이 완료된 직후, 두 번째 플래인(PLANE1)에 대한 리드 커맨드(P1, RD_CMD)가 다시 입력될 수 있지만, 이전에 이미 입력된 세 번째와 네 번째 및 첫 번째 플래인(PLANE2, PLANE3, PLANE0)에 대한 리드 커맨드(P2, P3, P0, RD_CMD)가 존재하기 때문에, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 두 번째 플래인(PLANE1)에 대응하는 값은 가장 마지막 슬롯에 저장될 수 있다. 즉, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에는, 세 번째 플래인(PLANE2)에 대한 리드 커맨드(P2, RD_CMD)와, 네 번째 플래인(PLANE3)에 대한 리드 커맨드(P3, RD_CMD)와, 첫 번째 플래인(PLANE0)에 대한 리드 커맨드(P0, RD_CMD), 및 두 번째 플래인(PLANE1)에 대한 리드 커맨드(P1, RD_CMD)가 순차적으로 입력되었다는 내용이 저장된 상태일 수 있다.
따라서, 로직 컨트롤러(401)는, 제3플래인 정보(PL_IP3)에 따라 세 번째 플래인(PLANE2)에 대한 리드동작이 완료되었는지 여부를 가장 먼저 확인하고, 이어서 네 번째 플래인(PLANE1)에 대한 리드동작이 완료되었는지 여부를 확인하며, 이어서 첫 번째 플래인(PLANE0)에 대한 리드동작이 완료되었는지 여부를 확인하며, 이어서 두 번째 플래인(PLANE1)에 대한 리드동작이 완료되었는지 여부를 확인할 수 있다.
메모리 장치(150)에 포함된 로직 컨트롤러(401)는, 두 번째 플래인(PLANE1)에서 리드된 데이터의 출력(P1 DATA OUT)이 완료된 후, 제3플래인 정보(PL_IP3)에 따라 세 번째 플래인(PLANE2)에 대한 리드동작이 완료되었는지 확인하고, 확인결과에 따라 세 번째 플래인(PLANE2)으로부터 데이터를 전달받아 파이프 래치(P_LATCH0)에 저장하는 동작을 시작할 수 있다. 즉, 로직 컨트롤러(401)는, 두 번째 플래인(PLANE1)에서 리드된 데이터의 출력(P1 DATA OUT)이 완료된 후, 세 번째 플래인(PLANE2)의 캐시 버퍼(CACHE2)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE2->P_LATCH0)하는 동작을 수행할 수 있다.
전술한 설명과 같은 방식으로 세 번째 플래인(PLANE2)에서 리드된 데이터의 출력(P2 DATA OUT)이 완료되는 것에 응답하여 네 번째 플래인(PLANE3)의 캐시 버퍼(CACHE3)에 저장된 데이터를 파이프 래치(P_LATCH0)에 복사(CACHE3->P_LATCH0)하는 동작이 수행될 수 있다.
참고로, 첫 번째 플래인(PLANE0) 내지 세 번째 플래인(PLANE2) 각각에서 리드된 데이터의 출력(P0 DATA OUT, P1 DATA OUT, P2 DATA OUT)이 완료된 직후, 첫 번째 플래인(PLANE0) 내지 세 번째 플래인(PLANE2) 각각에 대한 리드 커맨드(P0, RD_CMD / P1, RD_CMD / P2, RD_CMD)가 다시 입력될 수 있다. 그에 따라, 첫 번째 플래인(PLANE0) 내지 세 번째 플래인(PLANE2) 내부에 각각 저장된 데이터를 페이지 버퍼로 리드(CELL->PB0, CELL->PB1, CELL->PB1)하는 동작과, 다수의 페이지 버퍼에 저장된 데이터를 캐시버퍼로 이동(PB0->CACHE0, PB1->CACHE1, PB2->CACHE2)하는 동작을 다시 수행할 수 있다. 다만, 도면에서는 첫 번째 플래인(PLANE0) 내지 세 번째 플래인(PLANE2) 각각에 대한 리드 커맨드(P0, RD_CMD / P1, RD_CMD / P2, RD_CMD)가 다시 입력되는 것에 대응하는 동작을 도시하지 않았다.
도 6b를 참조하면, 도 6a에서 도면부호 '600'을 통해 표시한 점선 박스의 동작을 좀 더 구체적으로 도시한 타이밍 다이어그램인 것을 알 수 있다.
즉, 도 6b에는, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 첫 번째 데이터를 출력(P0 DATA OUT)하는 동작과, 메모리 장치(150)의 두 번째 플래인(PLANE1)에서 리드된 두 번째 데이터를 출력(P1 DATA OUT)하는 동작이 도 6a보다 구체적으로 도시된 것을 알 수 있다.
특히, 도 6b에서는, 실장에서 메모리 장치(150)에 포함된 캐시버퍼(CACHE0 or CACHE1 or CACHE2 or CACHE3)의 크기보다 파이프 래치(P_LATCH0)의 크기가 더 작다는 점을 고려하여 캐시버퍼(CACHE0 or CACHE1 or CACHE2 or CACHE3)에 저장된 데이터를 분할한 뒤, 순차적으로 파이프 래치(P_LATCH0)에 전송하는 것을 가정하였다. 또한, 실장에서 파이프 래치(P_LATCH0)의 개수보다 데이터 패드(DQ)의 개수가 더 작다는 점을 고려하여 파이프 래치(P_LATCH0)에 병렬 동작하는 다수의 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)가 포함된 것을 가정하였다.
예컨대, 파이프 래치(P_LATCH0)에 4개의 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)가 포함되고, 캐시버퍼(CACHE0 or CACHE1 or CACHE2 or CACHE3)에 저장된 데이터 크기가 4KByte이며, 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)에서 한 번에 처리하는 데이터의 크기가 512Byte인 것을 가정할 수 있다. 이와 같은 경우, 캐시버퍼(CACHE0 or CACHE1 or CACHE2 or CACHE3)에 저장된 4Kbyte의 데이터는 512Byte의 데이터 8개(D0, D1, D2, D3, D4, D5, D6, D7)로 분할된 뒤, 4개의 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)를 거쳐서 1개 데이터 패드(DQ)를 통해 순차적으로 출력될 수 있다. 참고로, 예시에 사용한 숫자, 즉, 4KByte와 512Byte와 4개 및 1개 등은, 어디까지나 설명의 편의를 위해 하나의 실시예로서 제시한 값일 뿐이며, 실제로는 메모리 장치의 종류나 설계자의 선택에 따라 얼마든지 다른 값으로 정해질 수 있다.
도 6a 및 도 6b를 함께 참조하면, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 첫 번째 1/8 데이터(D0)를 첫 번째 서브 파이프 래치(P_LATCH0_0)를 통해 데이터 패드(DQ)로 출력하고, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 두 번째 1/8 데이터(D1)를 두 번째 서브 파이프 래치(P_LATCH0_1)를 통해 데이터 패드(DQ)로 출력하며, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 세 번째 1/8 데이터(D2)를 세 번째 서브 파이프 래치(P_LATCH0_2)를 통해 데이터 패드(DQ)로 출력하고, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 네 번째 1/8 데이터(D3)를 네 번째 서브 파이프 래치(P_LATCH0_3)를 통해 데이터 패드(DQ)로 출력할 수 있다. 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 다섯 번째 1/8 데이터(D4)를 다시 첫 번째 서브 파이프 래치(P_LATCH0_0)를 통해 데이터 패드(DQ)로 출력하고, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 여섯 번째 1/8 데이터(D5)를 다시 두 번째 서브 파이프 래치(P_LATCH0_1)를 통해 데이터 패드(DQ)로 출력하며, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 일곱 번째 1/8 데이터(D6)를 다시 세 번째 서브 파이프 래치(P_LATCH0_2)를 통해 데이터 패드(DQ)로 출력하고, 이어서, 메모리 장치(150)의 첫 번째 플래인(PLANE0)에서 리드된 여덟 번째 1/8 데이터(D7)를 다시 네 번째 서브 파이프 래치(P_LATCH0_3)를 통해 데이터 패드(DQ)로 출력할 수 있다.
메모리 장치(150)에 포함된 첫 번째 플래인(PLANE0)에서 리드된 첫 번째 데이터의 출력(P0 DATA OUT, D0~D7)이 완료되면, 두 번째 플래인(PLANE1)에 대한 상태 커맨드(P1, STATUS_CMD)가 입력되는 것과 상관없이 메모리 장치(150)에 포함된 파이프 래치(P_LATCH0)가 리셋될 수 있다.
이렇게, 메모리 장치(150)에 포함된 파이프 래치(P_LATCH0)가 리셋된 후, 메모리 장치(150)의 두 번째 플래인(PLANE1)에서 리드된 데이터(D0, D4)가 첫 번째 파이프 래치(P_LATCH0)로 복사될 수 있다. 또한, 출력 커맨드(P1, OUT_CMD)에 응답하여 메모리 장치(150)에 포함된 파이프 래치(P_LATCH0)에 저장된 데이터(D0~D7)가 순차적으로 출력될 수 있다.
두 번째 플래인(PLANE1)에서 리드된 두 번째 데이터(P1 DATA OUT)를 파이프 래치(P_LATCH0)를 통해 데이터 패드(DQ)로 출력하는 경우에도, 첫 번째 데이터(P0 DATA OUT)와 마찬가지로 8개의 데이터로 분할(D0, D1, D2, D3, D4, D5, D6, D7)로 분할한 뒤, 4개의 서브 파이프 래치(P_LATCH0_0, P_LATCH0_1, P_LATCH0_2, P_LATCH0_3)를 거쳐서 1개 데이터 패드(DQ)를 통해 순차적으로 출력할 수 있다.
도 7 및 도 8은 본 발명의 실시예에 따른 메모리 장치에서 수행되는 리드동작의 다른 예를 설명하기 위한 순서도이다.
먼저, 도 7을 참조하면, 도 6a 및 도 6b에서 설명한 바와 같이 메모리 장치(150)는, 컨트롤러(130)로부터 리드 커맨드(RD_CMD)를 입력받아 리드동작을 수행할 때, 출력 커맨드(OUT_CMD)가 입력되지 않은 상태에서도 리드 완료된 플래인이 존재하는 경우, 해당 플래인의 데이터를 파이프 래치(P_LATCH0)에 복사하는 것을 알 수 있다.
구체적으로, 도 6a 및 도 6b에서 설명한 바와 같이 메모리 장치(150)는, 컨트롤러(130)로부터 수신된 리드 커맨드(RD_CMD)에 응답하여 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에서 병렬로 리드동작을 수행할 수 있다. 이때, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나의 플래인에서 리드 동작이 완료되었는지 여부를 확인할 수 있다(S71). 즉, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 적어도 하나의 플래인에서 리드된 데이터가 해당 플래인의 캐시 버퍼(One of CACHE<0:3>)로 이동하였는지 여부를 확인할 수 있다(S71).
S71동작의 결과 리드 완료된 플래인이 존재하지 않는 경우(S71의 NO), 리드 완료된 플래인이 존재할 때까지 대기할 수 있다.
S71동작의 결과 리드 완료된 플래인이 존재하는 경우(S71의 YES), 준비 레지스터(520)에 저장된 완료정보(CP_IP) 및 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3)에 응답하여 리드 완료된 플래인 중 어느 하나의 플래인을 선택된 플래인으로 결정할 수 있다(S72). 예컨대, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)만 리드 완료되고 나머지 플래인(PLANE1, PLANE2, PLANE3)은 리드 완료되지 않은 경우, 완료정보(CP_IP)에 따라 첫 번째 플래인(PLANE0)만을 선택된 플래인으로 결정할 수 있다. 다른 예를 들면, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 두 번째 내지 네 번째 플래인(PLANE1, PLANE2, PLANE3)에서 리드 완료된 경우, 제3플래인 정보(PL_IP3)에 따라 두 번째 내지 네 번째 플래인(PLANE1, PLANE2, PLANE3) 중 리드 커맨드(RD_CMD)가 가장 먼저 수신된 플래인을 선택된 플래인으로 결정할 수 있다.
S72동작이후, 메모리 장치(150)의 파이프 래치(P_LATCH0)를 리셋시킬 수 있다(S73).
S73동작이후, S72동작에서 결정된 선택된 플래인의 캐시 버퍼(One of CACHE<0:3>)에 저장된 데이터를 메모리 장치(150)의 파이프 래치(P_LATCH0)로 복사할 수 있다(S74). 예컨대, S72동작에서 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)이 선택된 플래인으로 결정된 경우, 메모리 장치(150)의 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 저장된 데이터를 메모리 장치(150)의 파이프 래치(P_LATCH0)에 복사할 수 있다.
S74동작이후, S72동작에서 결정된 선택된 플래인을 가리키는 제1플래인 정보(PL_IP1)를 생성하여 상태 레지스터(530)에 저장할 수 있다(S75). 예컨대, S72동작에서 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)이 선택된 플래인으로 결정된 경우, 첫 번째 플래인(PLANE0)을 가리키는 제1플래인 정보(PL_IP1)를 생성할 수 있다.
S75동작이후, 출력 커맨드(OUT_CMD)가 입력되었는지 확인하는 동작을 수행할 수 있다(S77).
S77동작에서 출력 커맨드(OUT_CMD)가 입력되지 않은 경우(S77의 NO), 아무런 동작도 수행하지 않고 대기할 수 있다. 그 이유는, S71 내지 S75동작의 수행을 통해 메모리 장치(150)의 파이프 래치(P_LATCH0)에 데이터가 저장된 상태이기 때문이다.
S77동작에서 출력 커맨드(OUT_CMD)가 입력된 경우(S77의 YES), 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 제2플래인 정보(PL_IP2)와 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)의 값이 동일한지 여부를 확인할 수 있다(S78). 예컨대, 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)가 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)을 가리키고, 제2플래인 정보(PL_IP2)가 첫 번째 플래인(PLANE0)을 가리키는 경우, 제1플래인 정보(PL_IP1)와 제2플래인 정보(PL_IP2)가 서로 동일하다고 판단할 수 있다.
S78동작에서 제1플래인 정보(PL_IP1)와 제2플래인 정보(PL_IP2)의 값이 동일한 경우(S78의 YES), 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 제2플래인 정보(PL_IP2)에 대응하는 값을 제거할 수 있다(S7B). 예컨대, 제2플래인 정보(PL_IP2)가 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)을 가리키는 정보인 경우, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 첫 번째 플래인(PLANE0)을 가리키는 정보를 제거할 수 있다. 이렇게, 플래인 큐(510)에 제거된 첫 번째 플래인(PLANE0)을 가리키는 제3플래인 정보(PL_IP3)는, 첫 번째 플래인(PLANE0)에 대응하는 리드 커맨드(RD_CMD)가 수신되는 것에 응답하여 다시 생성될 수 있다.
S7B동작이후, 메모리 장치(150)의 파이프 래치(P_LATCH0)에 저장된 데이터를 컨트롤러(130)로 출력할 수 있다(S7C).
S78동작에서 제1플래인 정보(PL_IP1)와 제2플래인 정보(PL_IP2)의 값이 동일하지 않은 경우(S78의 NO), 메모리 장치(150)의 파이프 래치(P_LATCH0)를 리셋시킬 수 있다(S79). 예컨대, 상태 레지스터(530)에 저장된 제1플래인 정보(PL_IP1)가 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)을 가리키고, 제2플래인 정보(PL_IP2)가 두 번째 플래인(PLANE1)을 가리키는 경우, 제1플래인 정보(PL_IP1)와 제2플래인 정보(PL_IP2)가 서로 동일하지 않다고 판단할 수 있다.
전술한 것과 같이 S79동작에서 파이프 래치(P_LATCH)를 리셋시킨다는 것은, S71 내지 S75동작의 수행을 통해 메모리 장치(150)의 파이프 래치(P_LATCH0)에 저장된 데이터를 폐기한다는 것을 의미할 수 있다.
S79동작이후, 제2플래인 정보(PL_IP2)가 가리키는 플래인, 즉, 출력 커맨드(OUT_CMD)에 대응하는 플래인의 캐시 버퍼(CACHE)에 저장된 데이터를 파이프 래치(P_LATCH0)로 복사할 수 있다(S7A). 예컨대, 제2플래인 정보(PL_IP2)가 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 두 번째 플래인(PLANE1)을 가리키는 경우, 두 번째 플래인(PLANE1)의 캐시 버퍼(CACHE1)에 저장된 데이터를 파이프 래치(P_LATCH)로 복사할 수 있다.
S7A동작이후, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 출력 커맨드(OUT_CMD)에 대응하는 플래인을 가리키는 제2플래인 정보(PL_IP2)에 대응하는 값을 제거할 수 있다(S7B). 예컨대, 제2플래인 정보(PL_IP2)가 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 두 번째 플래인(PLANE1)을 가리키는 정보인 경우, 플래인 큐(510)에 저장된 제3플래인 정보(PL_IP3) 중 두 번째 플래인(PLANE1)을 가리키는 정보를 제거할 수 있다. 이렇게, 플래인 큐(510)에 제거된 두 번째 플래인(PLANE1)을 가리키는 제3플래인 정보(PL_IP3)는, 두 번째 플래인(PLANE1)에 대응하는 리드 커맨드(RD_CMD)가 수신되는 것에 응답하여 다시 생성될 수 있다.
S7B동작이후, 메모리 장치(150)의 파이프 래치(P_LATCH0)에 저장된 데이터를 컨트롤러(130)로 출력할 수 있다(S7C).
도 8을 참조하면, 메모리 장치(150)는, 컨트롤러(130)로부터 리드 커맨드(RD_CMD)를 입력받아 리드동작을 수행할 때, 플래인 큐(510)와 준비 레지스터(520)를 설정하는 것을 알 수 있다. 이때, 도 7과 도 8의 동작은 완전히 병렬로 수행될 수 있는 동작이다.
구체적으로, 메모리 장치(150)는, 컨트롤러(130)로부터 입력되어 처리되지 않은 리드 커맨드(RD_CMD)가 존재하는지 여부를 확인할 수 있다(S81).
S81동작에서 처리되지 않은 리드 커맨드(RD_CMD)가 존재하지 않는 경우(S81의 NO), 리드동작을 수행을 종료할 수 있다. 이때, 도 8에서 리드 동작의 수행을 종료한다는 것은, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 각각에서 리드동작을 수행하여 다수의 캐시 버퍼(CACHE0, CACHE1, CACHE2, CACHE3) 각각으로 이동시키는 동작이 완료된다는 것을 의미할 수 있다.
S81동작에서 처리되지 않은 리드 커맨드(RD_CMD)가 존재하는 경우(S81의 YES), 리드 커맨드(RD_CMD)에 대응하는 플래인을 가리키는 제3플래인 정보(PL_IP3)를 플래인 큐(510)에 저장할 수 있다(S82). 예컨대, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)이 리드 커맨드(RD_CMD)에 대응하는 플래인인 경우, 첫 번째 플래인(PLANE0)을 가리키는 제3플래인 정보(PL_IP3)를 플래인 큐(510)에 저장할 수 있다.
S82동작이후, 리드 커맨드(RD_CMD)에 대응하는 플래인에서 데이터를 페이지 버퍼(PB)로 리드하여 캐시 버퍼(CACHE)로 이동시킬 수 있다(S83). 예컨대, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)이 리드 커맨드(RD_CMD)에 대응하는 플래인인 경우, 첫 번째 플래인(PLANE0)으로부터 데이터를 첫 번째 플래인(PLANE0)의 페이지 버퍼(PB0)로 리드하여 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)로 이동시킬 수 있다.
S83동작을 통해 리드 커맨드(RD_CMD)에 대응하는 플래인의 캐시 버퍼(CACHE)에 데이터가 저장되기 때문에 리드 커맨드(RD_CMD)에 대응하는 플래인의 리드동작이 완료되었다고 할 수 있다. 따라서, S83동작이후, 리드 완료된 플래인에 대응하는 완료정보(CP_IP)를 생성하여 준비 레지스터(520)에 저장할 수 있다(S84). 예컨대, 다수의 플래인(PLANE0, PLANE1, PLANE2, PLANE3) 중 첫 번째 플래인(PLANE0)이 리드 커맨드(RD_CMD)에 대응하는 플래인인 경우, S83동작을 통해 첫 번째 플래인(PLANE0)의 캐시 버퍼(CACHE0)에 데이터가 저장되어 리드완료될 수 있다. 따라서, S84동작에서 첫 번째 플래인(PLANE0)에 대응하는 완료정보(CP_IP)를 준비(READY)값으로 생성하여 준비 레지스터(520)에 저장할 수 있다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속한 기술분야에서 통상의 지식을 가진자에게 있어 명백할 것이다.

Claims (20)

  1. 각각 페이지 단위로 데이터를 입/출력하는 다수의 플래인(plane);
    적어도 하나 이상의 리드 커맨드에 응답하여 상기 다수의 플래인 중 적어도 하나 이상의 플래인에서 각각 리드동작을 수행하며 어느 하나의 플래인으로부터 데이터를 전달받아 저장하는 래치;
    상기 리드 커맨드가 수신된 이후 수신되는 출력 커맨드에 응답하여 상기 래치에 저장된 데이터에 대응하는 제1플래인 정보와, 상기 출력 커맨드에 대응하는 제2플래인 정보를 비교하여 상기 래치의 데이터를 선택적으로 출력하도록 제어하는 로직 컨트롤러;
    를 포함하는 메모리 장치.
  2. 제1항에 있어서,
    상기 로직 컨트롤러는,
    적어도 하나 이상의 상기 리드 커맨드에 대응하는 플래인 정보인 제3플래인 정보가 수신되는 순서에 따라 저장되는 플래인 큐;
    적어도 하나 이상의 플래인 각각에서 수행되는 리드동작의 완료 여부를 나타내는 완료정보 및 상기 플래인 큐에 저장된 상기 제3플래인 정보에 응답하여 결정된 상기 제1플래인 정보가 가리키는 선택된 플래인의 데이터를 상기 래치에 저장하는 선택저장부; 및
    상기 출력 커맨드에 응답하여 상기 제1플래인 정보와 상기 제2플래인 정보를 비교한 상기 비교결과에서 값이 서로 일치할 경우, 상기 래치의 데이터를 출력하는 비교출력부를 포함하는 메모리 장치.
  3. 제2항에 있어서,
    상기 로직 컨트롤러는, 상기 제1플래인 정보가 저장되는 상태 레지스터를 더 포함하며,
    상기 비교출력부는, 상기 상태 레지스터로부터 전달받은 상기 제1플래인 정보와 상기 제2플래인의 정보를 비교하는 메모리 장치.
  4. 제2항에 있어서,
    상기 다수의 플래인에 각각 대응하는 다수의 페이지 버퍼와 다수의 캐시버퍼를 더 포함하며,
    상기 로직 컨트롤러는,
    적어도 하나 이상의 상기 리드 커맨드 각각에 대응하는 적어도 하나 이상의 플래인 각각에 대한 리드동작을 수행하여 적어도 하나 이상의 페이지 버퍼 각각으로 리드된 데이터를 적어도 하나 이상의 캐시버퍼로 이동시키는 메모리 장치.
  5. 제4항에 있어서,
    상기 선택저장부는,
    상기 출력 커맨드의 수신여부와 상관없이 상기 다수의 캐시버퍼 중 상기 선택된 플래인에 대응하는 캐시버퍼에 저장된 데이터를 상기 래치에 복사하는 메모리 장치.
  6. 제2항에 있어서,
    상기 선택저장부는,
    상기 플래인 큐에 저장된 상기 제3플래인 정보에 대응하는 적어도 하나 이상의 상기 리드 커맨드의 수신순서대로 적어도 하나 이상의 플래인 각각에 대응하는 상기 완료정보를 확인하고, 확인결과에 따라 적어도 하나 이상의 플래인 중 상기 리드 커맨드가 상대적으로 먼저 수신되고 리드동작이 완료된 어느 하나의 플래인을 상기 선택된 플래인으로 선택하여 상기 제1플래인 정보를 생성하는 메모리 장치.
  7. 제6항에 있어서,
    상기 로직 컨트롤러는, 상기 완료정보가 저장되는 준비 레지스터를 더 포함하며,
    상기 선택저장부는, 상기 플래인 큐에 저장된 상기 제3플래인 정보에 대응하는 적어도 하나 이상의 상기 리드 커맨드의 수신순서대로 적어도 하나 이상의 플래인 각각에 대응하는 상기 완료정보를 상기 준비 레지스터에서 확인하는 메모리 장치.
  8. 제7항에 있어서,
    상기 로직 컨트롤러는,
    적어도 하나 이상의 상기 리드 커맨드 각각에 대응하는 적어도 하나 이상의 플래인 각각의 리드동작이 완료되는 것에 응답하여 생성된 상기 완료정보를 상기 준비 레지스터에 저장하며, 상기 리드 커맨드와 상기 출력 커맨드 사이에 수신되는 상태 커맨드에 응답하여 상기 준비 레지스터에 저장된 상기 완료정보를 출력하는 메모리 장치.
  9. 제2항에 있어서,
    상기 비교출력부는,
    상기 제1플래인 정보와 상기 제2플래인 정보를 비교한 상기 비교결과에서 값이 서로 일치하지 않을 경우, 상기 다수의 플래인 중 상기 제2플래인 정보가 가리키는 플래인으로부터 리드된 데이터를 전달받아 상기 래치에 저장한 뒤, 상기 래치의 데이터를 출력하는 메모리 장치.
  10. 제9항에 있어서,
    상기 비교출력부는,
    상기 비교결과를 확인한 후, 상기 플래인 큐에 저장된 상기 제3플래인 정보 중 상기 제2플래인 정보에 대응하는 값을 제거하는 메모리 장치.
  11. 각각 페이지 단위로 데이터를 입/출력하는 다수의 플래인(plane) 및 상기 다수의 플래인이 공유하는 래치를 포함하는 메모리 장치의 동작 방법에 있어서:
    적어도 하나 이상의 리드 커맨드에 응답하여 상기 다수의 플래인 중 적어도 하나 이상의 플래인에서 각각 리드동작을 수행하며 어느 하나의 플래인으로부터 데이터를 전달받아 상기 래치에 저장하는 제1저장단계; 및
    상기 리드 커맨드가 수신된 후 수신되는 출력 커맨드에 응답하여 상기 래치에 저장된 데이터에 대응하는 제1플래인 정보와, 출력 커맨드에 대응하는 제2플래인 정보를 비교하여 상기 데이터를 선택적으로 출력하는 선택출력단계를 포함하는 메모리 장치의 동작 방법.
  12. 제11항에 있어서,
    상기 메모리 장치는, 플래인 큐를 더 포함하며,
    상기 제1저장단계는,
    적어도 하나 이상의 상기 리드 커맨드에 대응하는 플래인 정보인 제3플래인 정보가 수신되는 순서에 따라 상기 플래인 큐에 저장하는 제2저장단계;
    적어도 하나 이상의 플래인 각각에서 수행되는 리드동작의 완료 여부를 나타내는 완료정보 및 상기 플래인 큐에 저장된 상기 제3플래인 정보에 응답하여 결정된 상기 제1플래인 정보가 가리키는 선택된 플래인의 데이터를 상기 래치에 저장하는 선택저장단계를 포함하는 메모리 장치의 동작방법.
  13. 제12항에 있어서,
    상기 선택출력단계는,
    상기 출력 커맨드에 응답하여 상기 플래인 큐에 저장된 상기 제3플래인 정보 중 상기 선택된 플래인을 가리키는 상기 제1플래인 정보와 상기 제2플래인 정보를 비교하는 단계; 및
    상기 비교하는 단계에서 값이 서로 일치할 경우, 상기 래치의 데이터를 출력하는 메모리 장치의 동작방법.
  14. 제13항에 있어서,
    상기 선택저장단계는,
    상기 플래인 큐에 저장된 상기 제3플래인 정보에 대응하는 적어도 하나 이상의 상기 리드 커맨드의 수신순서대로 적어도 하나 이상의 플래인 각각에 대응하는 상기 완료정보를 확인하는 확인단계; 및
    상기 확인단계의 결과에 따라 적어도 하나 이상의 플래인 중 상기 리드 커맨드가 상대적으로 먼저 수신되고 리드동작이 완료된 어느 하나의 플래인을 상기 선택된 플래인으로 선택하여 상기 제1플래인 정보를 생성하는 단계를 포함하는 메모리 장치의 동작방법.
  15. 제14항에 있어서,
    상기 메모리 장치는, 상기 제1플래인 정보를 저장하기 위한 상태 레지스터를 더 포함하며,
    상기 비교하는 단계는,
    상기 상태 레지스터로부터 전달받은 상기 제1플래인 정보와 상기 제2플래인 정보를 비교하는 메모리 장치의 동작방법.
  16. 제12항에 있어서,
    상기 메모리 장치는, 상기 다수의 플래인에 각각 대응하는 다수의 페이지 버퍼와 다수의 캐시버퍼를 더 포함하며,
    적어도 하나 이상의 상기 리드 커맨드 각각에 대응하는 적어도 하나 이상의 플래인 각각에 대한 리드동작을 수행하여 적어도 하나 이상의 페이지 버퍼 각각으로 리드된 데이터를 적어도 하나 이상의 캐시버퍼로 이동시키는 단계를 더 포함하는 메모리 장치의 동작방법.
  17. 제16항에 있어서,
    상기 선택저장단계는,
    상기 출력 커맨드의 수신여부와 상관없이 상기 다수의 캐시버퍼 중 상기 선택된 플래인에 대응하는 캐시버퍼에 저장된 데이터를 상기 래치에 복사하는 메모리 장치의 동작방법.
  18. 제14항에 있어서,
    상기 메모리 장치는, 상기 완료정보를 저장하기 위한 준비 레지스터를 더 포함하며,
    상기 확인단계는,
    상기 플래인 큐에 저장된 상기 제3플래인 정보에 대응하는 적어도 하나 이상의 상기 리드 커맨드의 수신순서대로 적어도 하나 이상의 플래인 각각에 대응하는 상기 완료정보를 상기 준비 레지스터에서 확인하는 메모리 장치의 동작방법.
  19. 제18항에 있어서,
    상기 제1저장단계는,
    적어도 하나 이상의 상기 리드 커맨드 각각에 대응하는 적어도 하나 이상의 플래인 각각의 리드동작이 완료되는 것에 응답하여 생성된 상기 완료정보를 상기 준비 레지스터에 저장하는 단계; 및
    상기 리드 커맨드와 상기 출력 커맨드 사이에 수신되는 상태 커맨드에 응답하여 상기 준비 레지스터에 저장된 상기 완료정보를 출력하는 단계를 더 포함하는 메모리 장치의 동작방법.
  20. 제13항에 있어서,
    상기 선택출력단계는,
    상기 비교하는 단계에서 값이 서로 일치하지 않을 경우, 상기 다수의 플래인 중 상기 제2플래인 정보가 가리키는 플래인으로부터 리드된 데이터를 전달받아 상기 래치에 저장한 뒤, 상기 래치의 데이터를 출력하는 단계; 및
    상기 비교하는 단계 이후, 상기 플래인 큐에 저장된 상기 제3플래인 정보 중 상기 제2플래인 정보에 대응하는 값을 제거하는 단계를 더 포함하는 메모리 장치의 동작방법.
KR1020220029293A 2022-03-08 2022-03-08 리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법 KR20230132139A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020220029293A KR20230132139A (ko) 2022-03-08 2022-03-08 리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법
US17/864,094 US20230289083A1 (en) 2022-03-08 2022-07-13 Memory device for effectively performing read operation, and operation method thereof
CN202310104105.0A CN116741245A (zh) 2022-03-08 2023-01-31 用于有效地执行读取操作的存储器装置及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220029293A KR20230132139A (ko) 2022-03-08 2022-03-08 리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법

Publications (1)

Publication Number Publication Date
KR20230132139A true KR20230132139A (ko) 2023-09-15

Family

ID=87915747

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220029293A KR20230132139A (ko) 2022-03-08 2022-03-08 리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법

Country Status (3)

Country Link
US (1) US20230289083A1 (ko)
KR (1) KR20230132139A (ko)
CN (1) CN116741245A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118656032A (zh) * 2024-08-19 2024-09-17 珠海妙存科技有限公司 存储器读任务的处理方法、装置、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644224B2 (en) * 2005-11-15 2010-01-05 Sandisk Il Ltd. Flash memory device and method
KR20160007972A (ko) * 2014-07-10 2016-01-21 삼성전자주식회사 불 휘발성 메모리 장치 및 메모리 컨트롤러, 그리고 그것의 동작 방법
US9626106B2 (en) * 2015-01-13 2017-04-18 Sandisk Technologies Llc System and method for memory command queue management and configurable memory status checking
KR102427638B1 (ko) * 2018-01-10 2022-08-01 삼성전자주식회사 비휘발성 메모리 장치 및 이의 읽기 방법
WO2022126418A1 (en) * 2020-12-16 2022-06-23 Yangtze Memory Technologies Co., Ltd. Page buffer circuit with bit line select transistor

Also Published As

Publication number Publication date
CN116741245A (zh) 2023-09-12
US20230289083A1 (en) 2023-09-14

Similar Documents

Publication Publication Date Title
US11204846B2 (en) Memory system and method for operating the same
KR102571747B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20180069960A (ko) 메모리 시스템 및 그의 동작 방법
US20180373629A1 (en) Memory system and operating method thereof
KR20170095524A (ko) 메모리 시스템 및 그의 동작 방법
KR20180014994A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN108932202B (zh) 存储器系统及其操作方法
KR20210001508A (ko) 메모리 시스템의 MLC(Multi Level Cell)영역에 데이터를 안전하게 저장하기 위한 장치 및 그 방법
CN110910941B (zh) 存储器系统及其操作方法
KR102371264B1 (ko) 메모리 시스템
KR20180076715A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20190000562A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US20230068089A1 (en) Memory system and operation method thereof
KR20180046405A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN113314179A (zh) 用于执行读取操作的存储器系统及其操作方法
KR20190108788A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR102652293B1 (ko) 메모리 관리방법
CN110196816B (zh) 控制器、其操作方法以及包括控制器的存储器系统
KR20190031692A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
KR102389542B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20230132139A (ko) 리드동작을 효과적으로 수행하기 위한 메모리 장치 및 메모리 장치의 동작방법
KR20210152738A (ko) 스트라이프 형태로 데이터를 액세스하는 메모리 시스템 및 메모리 시스템의 동작방법
US11422889B2 (en) Memory system and controller for storing map data of volatile memory into nonvolatile memory device during power off operation
KR20190046169A (ko) 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
KR20190099590A (ko) 메모리 시스템 및 메모리 시스템의 동작방법