KR102514772B1 - 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법 - Google Patents

비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법 Download PDF

Info

Publication number
KR102514772B1
KR102514772B1 KR1020170181828A KR20170181828A KR102514772B1 KR 102514772 B1 KR102514772 B1 KR 102514772B1 KR 1020170181828 A KR1020170181828 A KR 1020170181828A KR 20170181828 A KR20170181828 A KR 20170181828A KR 102514772 B1 KR102514772 B1 KR 102514772B1
Authority
KR
South Korea
Prior art keywords
controller
data
volatile memory
memory device
command
Prior art date
Application number
KR1020170181828A
Other languages
English (en)
Other versions
KR20190079831A (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 KR1020170181828A priority Critical patent/KR102514772B1/ko
Priority to US16/174,839 priority patent/US10790026B2/en
Priority to CN201811653997.5A priority patent/CN109976666B/zh
Publication of KR20190079831A publication Critical patent/KR20190079831A/ko
Application granted granted Critical
Publication of KR102514772B1 publication Critical patent/KR102514772B1/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/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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/0658Controller construction 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/08Address circuits; Decoders; Word-line control 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/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1063Control signal output circuits, e.g. status or busy flags, feedback command signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • G11C7/1066Output synchronization
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1078Data input circuits, e.g. write amplifiers, data input buffers, data input registers, data input level conversion circuits
    • G11C7/1093Input synchronization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5648Multilevel memory programming, reading or erasing operations wherein the order or sequence of the operations is relevant
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2216/00Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
    • G11C2216/12Reading and writing aspects of erasable programmable read-only memories
    • G11C2216/14Circuits or methods to write a page or sector of information simultaneously into a nonvolatile memory, typically a complete row or word line in flash memory

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)
  • Software Systems (AREA)
  • Read Only Memory (AREA)

Abstract

비휘발성 메모리 장치는 비휘발성 메모리 셀 어레이, 입출력 패드부, 그리고 주변 회로부를 포함한다. 비휘발성 메모리 셀 어레이는 데이터를 비휘발적으로 저장한다. 입출력 패드부는 외부의 콘트롤러가 요청하는 동작들에 관련된 명령어들 및 데이터가 입력되고, 요청된 동작들의 수행 결과들을 콘트롤러로 출력하는 통로를 제공한다. 주변 회로부는 콘트롤러가 제공하는 복수 개의 명령어들을 적재해두고, 콘트롤러가 제공한 프로그램 데이터와 비휘발성 메모리 셀 어레이로부터 독출한 데이터를 임시로 저장하면서, 복수 개의 명령어들을 비휘발성 메모리 장치 내부의 동작 상태에 기초하여 상기 콘트롤러와 비동기적으로 순서를 조정하여 수행한다.

Description

비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법 {NONVOLATILE MEMORY DEVICE CAPABLE OF PERFORMING ASYNCHRONOUS OPERATIONS, NONVOLATILE MEMORY SYSTEM INCLUDING THE SAME, AND OPERATION PERFORMING METHOD OF THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 호스트의 요청을 비휘발성 메모리 장치에서 비동기적 수행을 통해 성능 개선을 할 수 있는 비휘발성 메모리 장치와 이의 동작 수행 방법에 관한 것이다.
반도체 메모리 장치는 전원 공급이 중단될 때 저장된 데이터를 상실하는지 여부에 따라 휘발성 메모리 장치(volatile memory device)와 비휘발성 메모리 장치(nonvolatile memory device)로 구분될 수 있다. 비휘발성 메모리 장치는 전원이 차단되어도 데이터를 그대로 유지할 수 있다. 비휘발성 메모리 장치의 대표적인 예로 플래시 메모리 장치가 있다. 플래시 메모리 장치는 컴퓨터, 휴대폰, PDA, 디지털카메라, 캠코더, 보이스 리코더, MP3 플레이어, 개인용 휴대 단말기(PDA), 휴대용 컴퓨터(Handheld PC), 게임기, 팩스, 스캐너, 프린터 등과 같은 다양한 전자 기기에서 프로그램 및 데이터를 저장하는 대용량 데이터 스토리지 수단으로서 널리 사용되고 있다.
컴퓨팅 시스템에서 데이터 스토리지는 비휘발성 메모리 장치와 컨트롤러를 포함할 수 있다. 비휘발성 메모리 장치는 일반적으로 그 시스템의 최하위 레이어에 위치하고, 컨트롤러는 비휘발성 메모리 장치의 상위 레이어에 위치한다. 기존의 비휘발성 메모리 장치는 자신의 상위 블록인 컨트롤러의 명령에 따라 수동적으로 동작을 수행한다. 즉, 기존의 플래시 메모리 장치는 컨트롤러가 지시하는 기입(Program) 동작, 독출(Read) 동작, 소거(Erase) 동작 등을 주어진 순서에 따라 수동적으로 수행할 뿐이다. 순차적인 동작 수행으로 인해 플래시 메모리 장치에서는 수행하는 동작들 간에 아이들 타임(Idle Time)이 자주 발생한다. 그에 따라 전체 동작의 수행 시간이 늘어나서 플래시 메모리 장치의 성능, 이를 채용한 컴퓨팅 시스템의 성능을 저하시킨다.
본 발명의 일 목적은 외부의 호스트 또는 콘트롤러가 제공하는 데이터와 다수의 명령어들을 내부에 적재해두고 내부의 동작 상태에 따라 수행 순서를 비동기적으로 조정하여 수행함으로써 데이터 입출력(data in-out)의 효율적 관리와 아이들 타임의 최소화를 도모할 수 있는 비휘발성 메모리 장치 및 이를 포함하는 비휘발성 메모리 시스템을 제공하는 것이다.
본 발명의 다른 목적은 외부의 호스트 또는 콘트롤러가 제공하는 데이터와 다수의 명령어들을 비휘발성 메모리 장치 내부에 적재해두고 동작 상태에 따라 수행 순서를 비동기적으로 조정하여 수행함으로써 데이터 입출력의 효율적인 관리와 아이들 타임의 최소화를 도모할 수 있는 비휘발성 메모리 장치의 동작 수행 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 과제는 상술한 과제들에 한정되는 것이 아니며, 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위에서 다양하게 확장될 수 있을 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 비휘발성 메모리 장치는 외부의 콘트롤러가 요청하는 동작을 수행하는 것으로서, 비휘발성 메모리 셀 어레이, 입출력 패드부, 그리고 주변 회로부를 포함한다. 상기 비휘발성 메모리 셀 어레이는 데이터를 비휘발적으로 저장한다. 상기 입출력 패드부는 상기 콘트롤러가 요청하는 동작들에 관련된 명령어들 및 데이터가 입력되고, 요청된 동작들의 수행 결과들을 상기 콘트롤러로 출력하는 통로를 제공한다. 상기 주변 회로부는 상기 콘트롤러가 제공하는 복수 개의 명령어들을 적재해두고, 상기 콘트롤러가 제공한 프로그램 데이터와 상기 비휘발성 메모리 셀 어레이로부터 독출한 데이터를 임시로 저장하면서, 상기 복수 개의 명령어들을 상기 비휘발성 메모리 장치 내부의 동작 상태에 기초하여 상기 콘트롤러와 비동기적으로 순서를 조정하여 수행한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 비휘발성 메모리 시스템은 비휘발성 메모리 장치와, 상기 비휘발성 메모리 장치에 대하여 소정의 동작 수행을 요청하고 그 동작 수행에 관한 응답을 제공받기 위한 제어를 수행하는 콘트롤러를 포함한다. 상기 비휘발성 메모리 장치는 비휘발성 메모리 셀 어레이, 입출력 패드부, 그리고 주변회로부를 포함한다. 상기 비휘발성 메모리 셀 어레이는 데이터를 비휘발적으로 저장한다. 상기 입출력 패드부는 상기 콘트롤러가 요청하는 동작들에 관련된 명령어들 및 데이터가 입력되고, 요청된 동작들의 수행 결과들을 상기 콘트롤러로 출력하는 통로를 제공한다. 상기 주변 회로부는 상기 콘트롤러가 제공하는 복수 개의 명령어들을 적재해두고, 상기 콘트롤러가 제공한 프로그램 데이터와 상기 비휘발성 메모리 셀 어레이로부터 독출한 데이터를 임시로 저장하면서, 상기 복수 개의 명령어들을 상기 비휘발성 메모리 장치 내부의 동작 상태에 기초하여 상기 콘트롤러와 비동기적으로 순서를 조정하여 수행한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 동작 수행 방법은, 입출력 패드부, 비휘발성 메모리 셀 어레이, 그리고 큐, 데이터 버퍼부, 그리고 명령어 파싱부를 포함하는 주변 회로부를 포함하는 비휘발성 메모리 장치에 있어서, 외부의 콘트롤러가 상기 입출력 패드부를 통해 제공하는 명령어들을 상기 명령어 파싱부가 파싱하여 상기 큐에 적재하는 단계를 포함한다. 상기 비휘발성 메모리 장치의 동작 수행 방법은 상기 콘트롤러가 상기 입출력 패드부를 통해 제공하는 프로그램 데이터 및/또는 상기 비휘발성 메모리 셀 어레이로부터 독출한 독출 데이터를 상기 데이터 버퍼부의 데이터 영역에 임시로 저장하는 단계와, 상기 데이터 버퍼부에 저장된 데이터에 관한 정보를 상기 데이터 버퍼부의 맵 영역에 업데이트 하는 단계를 포함한다. 또한, 상기 비휘발성 메모리 장치의 동작 수행 방법은 상기 큐에 적재된 복수의 명령어들을 상기 비휘발성 메모리 장치의 정책에 기초하여 내부의 동작 상태에 따라 상기 콘트롤러와 비동기적으로 순서를 조정하여 수행하는 단계를 포함한다.
상기와 같은 본 발명의 실시예들에 따른 비휘발성 메모리 장치는 다수의 명령어를 적재할 수 있는 큐와 다량의 데이터를 임시로 저장할 수 있는 데이터 버퍼부를 구비하므로, 외부의 호스트(콘트롤러)가 지시하는 동작들을 그 큐와 데이터 버퍼부를 활용하여 능동적으로 스마트하게 제어할 수 있다. 그런 제어를 통해 비휘발성 메모리 장치의 아이들 타임(Idle Time)을 최소화할 수 있으므로 장치의 성능을 향상시킬 수 있다. 또한, 외부의 호스트와 비휘발성 메모리 장치 간의 데이터의 입출력(data in-out)을 효율적으로 관리하여 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 구성을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 비휘발성 메모리 장치를 포함하는 비휘발성 메모리 시스템의 구성을 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 비휘발성 메모리 장치를 씨오피(COP: CELL OVER PEROPHERAL) 구조로 구성한 것을 나타내는 사시도이다.
도 4는 호스트가 요청한 동작들을 비휘발성 메모리 장치에서 동기적으로 수행하는 경우의 타이밍 다이어그램을 예시한다.
도 5는 호스트가 요청한 동작들을 본 발명에 실시예들에 따라 비휘발성 메모리 장치에서 상기 콘트롤러와 비동기적으로 수행하는 경우의 타이밍 다이어그램을 예시한다.
도 6은 본 발명의 실시예들에 따른 비휘발성 메모리 장치가 외부 콘트롤러(호스트)의 명령을 수행하는 절차를 개략적으로 나타내는 흐름도이다.
도 7은 본 발명의 실시예들에 따라 비휘발성 메모리 장치 내에 마련되는 데이터 버퍼부 내의 유효 데이터 매핑 방법을 설명하기 위한 도면이다.
도 8은 본 발명의 실시예들에 따라 외부 콘트롤러(호스트)와 비휘발성 메모리 장치 간의 인터페이스 프로토콜을 설명하기 위한 흐름도이다.
도 9는 본 발명의 실시예에 따라 외부 콘트롤러(호스트)와 비휘발성 메모리 장치 각각에 마련되는 태스크 상태 레지스터(TASK STATUS REGISTER)용 테이블을 예시한다.
도 10은 본 발명의 실시예에 따라 외부 콘트롤러(호스트)가 비휘발성 메모리 장치에 명령어를 전달하고 수행 완료를 확인하는 명령어 시퀀스를 예시한다.
도 11은 본 발명의 실시예에 따라 비휘발성 메모리 장치에서 수행될 수 있는 플러싱 동작에 관련된 데이터 및 명령어의 흐름을 나타낸 도면이다.
도 12는 본 발명의 실시예에 따라 비휘발성 메모리 장치에서 수행될 수 있는 프리-페칭 동작에 관련된 데이터와 명령어의 흐름을 나타낸 도면이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 장치(100)의 개략적인 구성을 나타내는 블록도이다.
도 1을 참조하면, 비휘발성 메모리 장치(100)는 비휘발성 메모리 셀 어레이(110), 입출력 패드부(130), 그리고 주변 회로부(200)를 포함할 수 있다. 비휘발성 메모리 장치(100)는 외부의 호스트 또는 콘트롤러의 데이터 독출 또는 기입 요청에 응답하여 데이터의 독출 또는 기입 동작들을 수행할 수 있다. 여기서, 호스트 또는 콘트롤러는 비휘발성 메모리 장치(100)의 외부에 위치할 수 있으며, 비휘발성 메모리 장치(100)에 대하여 데이터의 독출 및 기입 요청들을 생성하는 장치를 말한다. 콘트롤러는 외부의 호스트의 역할을 직접 또는 간접적으로 수행하는 것으로서, 콘트롤러는 호스트의 일부 또는 일 예로 볼 수 있다. 따라서, 이하에서 언급하는 콘트롤러는 비휘발성 메모리 장치(100)에 대하여 외부의 호스트로도 볼 수 있다.
비휘발성 메모리 셀 어레이(110)는 데이터가 최종 저장되는 기록 매체로서, 전원의 온/오프에 상관없이 기록된 데이터를 유지할 수 있는 복수의 비휘발성 메모리 셀들을 포함할 수 있다. 복수의 메모리 셀들은 매트릭스 형태로 배치되고, 복수의 워드 라인들 및 복수의 비트 라인들에 연결될 수 있다. 비휘발성 메모리 셀들은 전체가 하나의 평면에 배치되는 평면형 구조일 수 있다. 전체 비휘발성 메모리 셀들은 복수의 평면에 분산 배치될 수 있다. 도 1은 전체 비휘발성 메모리 셀들이 제1 평면(112A)과 제2 평면(112B)에 분산 배치된 경우를 예시한다. 비휘발성 메모리 셀 어레이(110)는 제1 평면(112A)과 제2 평면(112B)이 동일 평면에 위치한 2차원 어레이(또는 평면형) 구조일 수도 있다. 비휘발성 메모리 셀 어레이(110)는 상하관계로 배치된 3차원 수직 어레이 구조일 수도 있다. 전체 비휘발성 메모리 셀들이 분산 배치되는 평면의 수는 3개 이상일 수 있다.
예시적인 실시예에 따르면, 비휘발성 메모리 셀들은 NAND 플래시 메모리 셀 어레이일 수 있다. 다른 실시예에서, 비휘발성 메모리 셀들은 PRAM(Phase Change Random Access Memory) 셀, RRAM(Resistance Random Access Memory) 셀, NFGM(Nano Floating Gate Memory) 셀, PoRAM(Polymer Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀 등과 같은 임의의 비휘발성 메모리 셀일 수 있다.
입출력 패드부(I/O PAD)(130)는 외부의 호스트나 외부 콘트롤러가 요청하는 동작들에 관련된 명령어들(어드레스, 제어신호 등을 포함)(COMMAND) 및 데이터(DATA)를 입력받고, 요청된 동작들의 수행에 필요한 데이터, 어드레스, 명령 요청된 동작들의 수행 결과들을 외부 호스트나 콘트롤러로 출력하는 통로를 제공할 수 있다. 입출력 패드부(130)는 다수의 DQ(132)를 포함할 수 있다. 입출력 패드는 외부의 호스트 또는 콘트롤러에 연결될 수 있다. 또한, 입출력 패드부(130)로 들어온 명령어는 명령어 파싱부(250) 또는 큐(270)에 전달될 수 있다. 입출력 패드부(130)로 들어온 기입 데이터는 데이터 버퍼(210, 후술함)에 전달될 수 있다. 데이터 버퍼(210)에 저장된 독출 데이터는 입출력 패드부(130)를 통해 외부의 호스트나 콘트롤러로 전달될 수 있다. 즉, 입출력 패드부(130)는 외부의 호스트나 콘트롤러와 연결되는 명령어 파싱부(250)와 데이터 버퍼(210)의 인터페이스 역할을 할 수 있다.
주변 회로부(200)는 외부의 호스트나 외부의 콘트롤러가 제공하는 복수 개의 명령어들을 식별 가능하게 적재할 수 있다. 주변 회로부(200)는 상기 콘트롤러가 제공하는 비휘발성 메모리 셀 어레이(110)에 기입할 데이터와 비휘발성 메모리 셀 어레이(110)로부터 독출한 데이터를 임시로 저장할 수 있다. 주변 회로부(200)는 복수 개의 명령어들을, 상기 호스트나 콘트롤러로부터 제공된 순서와는 다르게 즉, 상기 콘트롤러와 비동기적으로 수행할 수 있다. 그 명령어들의 수행순서는 비휘발성 메모리 장치(100) 내부의 동작 상태에 따라 아이들 타임을 최소화 할 수 있는 순서로 조정될 수 있다.
예시적인 실시예에 따르면, 주변 회로부(200)는 데이터 버퍼부(210), 페이지 버퍼부(230), 명령어 파싱부(250), 큐(270), 그리고 스케줄러(290)를 포함할 수 있다.
페이지 버퍼부(230)는 복수의 비트 라인들을 통해 비휘발성 메모리 셀 어레이(110)와 연결될 수 있다. 페이지 버퍼 회로(230)는 복수의 페이지 버퍼들을 포함할 수 있다. 일 실시예에서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다. 또한, 페이지 버퍼부(230)는 데이터 버퍼부(210)에 연결될 수 있다. 페이지 버퍼부(230)는 기입 동작 시 컬럼 어드레스에 응답하여, 비휘발성 메모리 셀 어레이(110)의 선택된 페이지에 프로그램 될 기입 데이터를 데이터 버퍼부(210)로부터 전달받아 비휘발성 메모리 셀 어레이(110)의 지정된 주소에 기입되기까지 임시로 저장할 수 있다. 페이지 버퍼부(230)는 또한, 독출 동작 시 비휘발성 메모리 셀 어레이(110)의 선택된 페이지로부터 감지된 독출 데이터를 데이터 버퍼부(210)로 전달하기까지 임시적으로 저장할 수 있다. 즉, 페이지 버퍼부(230)는 비휘발성 메모리 장치(100)의 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다. 또한, 페이지 버퍼부(230)는 데이터가 1 스텝 동안 잠시 머무를 수 있는 임시 저장공간으로서 제공될 수 있다. 페이지 버퍼부(230)는 페이지 사이즈만큼의 데이터 저장 공간을 가질 수 있다. 페이지 버퍼부(230)는 예컨대 DRAM으로 구현될 수 있다. NAND 플래시 메모리의 경우, 페이지 사이즈는 일반적으로 예컨대 16K 비트일 수 있다.
명령어 파싱부(250)는 외부의 호스트나 콘트롤러가 입출력 패드부(130)를 통해 제공하는 명령어 시퀀스를 파싱할 수 있다. 외부의 호스트나 콘트롤러의 명령어를 전달받기 위해, 명령어 파싱부(250)는 입출력 패드부(130)에 연결될 수 있다. 명령어 파싱부(250)는 큐(270)에 액세스 할 수 있다. 명령어 파싱부(250)는 파싱한 명령어를 큐(270)에 전달할 수 있다.
큐(270)는 외부의 호스트나 콘트롤러가 입출력 패드부(130)를 통해 제공하는 복수 개의 명령어들을 임시로 적재할 수 있다. 큐(270)는 명령어 파싱부(250)에 연결될 수 있다. 이에 의해, 큐(270)는 명령어들을 명령어 파싱부(250)를 통해 전달받을 수 있다. 이와 달리, 큐(270)는 입출력 패드부(130)에 연결될 수도 있다. 이에 의해, 큐(270)는 외부의 호스트나 콘트롤러가 입출력 패드부(130)를 통해 제공하는 명령어 시퀀스를 명령어 파싱부(250)를 거치지 않고 직접 전달받아 적재할 수도 있다. 명령어 파싱부(250)는 큐(270)에 명령어 시퀀스의 적재가 이루어진 후, 큐(270)에 액세스하여 명령어를 파싱할 수도 있다.
큐(270)는 순환 큐(circular queue)로 구현될 수 있다. 예시적인 실시예에 따르면, 큐(270)는 순환 버퍼(circular buffer), 또는 순환 레지스터(circular resister)로 구현할 수 있다. 큐(270)는 로직 회로로 구현할 수도 있다. 큐(270)의 깊이(Depth)는 적재하고자 하는 명령어들의 개수에 대응될 수 있다. 예컨대, 큐(270)의 깊이 즉, 저장요소를 8로 하면, 8개의 명령어들을 저장할 수 있다. 큐(270)의 깊이를 더 깊게 하면, 실행해야 할 명령어들을 더 많이 살펴보고 그것들의 실행순서를 정할 수 있다. 이 경우, 큐(270)를 마련하기 위한 공간은 더 필요로 하지만, 명령어들의 동작 수행의 효율성은 더 높일 수 있을 것이다.
비휘발성 메모리 장치(100)가 외부의 호스트나 콘트롤러의 명령어를 제공된 순서에 따라 동기적으로 수행하는 경우에는 큐(270)와 데이터 버퍼부(210)가 필요하지 않을 수도 있다. 하지만, 다수의 명령어들을 큐(270)에 적재해두고, 그 적재된 명령어들을 상기 콘트롤러와 비동기적으로 아이들 타임을 최소화 할 수 있는 순서로 조정하여 수행하려면, 큐(270)에 저장된 명령어들을 수행하는 데 관련되는 많은 양의 데이터를 임시로 저장하고 유지하기 위한 저장 공간 즉, 데이터 버퍼부(210)가 필요할 수 있다.
데이터 버퍼부(210)는 페이지 버퍼부(230)와 입출력 패드부(130) 사이에 제공될 수 있다. 데이터 버퍼부(210)는 데이터 전달을 위해 앞에서 언급한 입출력 패드부(130)에 연결될 수 있다. 데이터 버퍼부(210)는 외부의 호스트나 콘트롤러가 입출력 패드부(130)를 통해 전달하는 프로그램용 데이터를 임시로 저장하면서, 큐(270)에 적재된 소정 명령어의 동작을 수행하기 위해 비휘발성 메모리 셀 어레이(100)에 기입할 데이터를 페이지 버퍼부(230)로 전달할 수 있다. 또한, 데이터 버퍼부(210)는 비휘발성 메모리 셀 어레이(110)로부터 독출된 데이터를 페이지 버퍼부(230)로부터 전달받아 임시로 저장하다가 입출력 패드부(130)를 통해 외부의 호스트나 콘트롤러로 전달할 수 있다.
데이터 버퍼부(210)는 데이터 영역(210A)과 맵(MAP) 영역(210B)을 포함할 수 있다. 데이터 영역(210A)은 프로그램용 데이터 및/또는 독출 데이터를 임시로 저장하는 영역이다. 맵 영역(210B)은 데이터 영역(210A)에 임시 저장된 데이터의 목록(저장 주소, 데이터 사이즈, 관련 동작 정보 등) 과 데이터의 유효성을 관리하는 정보가 저장되는 영역이다.
예시적인 실시예에 따르면, 데이터 버퍼부(210)는 임시적인 데이터 저장공간의 역할을 하면 충분하므로, 데이터의 쓰기와 읽기 속도가 빠른 DRAM으로 구현될 수 있다. 데이터 버퍼부(210)가 많은 양의 데이터를 버퍼링 할수록 비휘발성 메모리 장치(100)의 성능은 더 좋아질 수 있다. 따라서 데이터 버퍼부(210)는 원하는 성능을 발휘할 수 있도록 충분히 큰 사이즈의 저장공간을 가질 수 있다. 데이터 버퍼부(210)는 페이지 버퍼부(230)보다 훨씬 큰 사이즈의 저장공간을 가질 수 있다.
데이터 버퍼부(210)는 비휘발성 메모리 장치(100)의 내부에 마련되되, 기존의 주변 회로들이 모여 있는 영역이 아닌 제3의 영역에 마련될 수도 있다. 본 발명에서는 주변 회로부(200)의 영역은 기존의 주변 회로 영역과 상기 제3의 영역을 모두 포함하는 영역으로 볼 수도 있다. 즉, 본 발명에서의 주변 회로부(200)의 영역은 비휘발성 메모리 장치(100)의 전체 영역 중 비휘발성 메모리 셀 어레이(110) 영역과 입출력 패드부(130) 영역을 제외한 나머지 영역 전체에 해당하는 영역으로 정의될 수 있다.
스케줄러(290)는 큐(270)에 적재된 다수의 명령어들을 수행하는 로직을 포함할 수 있다. 이 로직은 비휘발성 메모리 장치(110)의 소정의 스케줄링 정책에 기초하여 비휘발성 메모리 장치(100)의 동작 상태(operation status)에 따라 수행 순서를 조정할 수 있다. 스케줄러(290)는 큐(270)에 액세스 할 수 있다. 스케줄러(290)는 큐(270)에 적재되어 있는 전체 명령어들이 어떤 동작에 관한 명령어인지 파악할 수 있다. 수행해야 할 명령들의 내용을 알 수 있으므로, 스케줄러(290)는 자체의 스케줄링 정책에 기초하여 그것들을 어떤 순서로 수행하는 것이 성능을 극대화할 수 있는지 판단할 수 있다. 그 스케줄링 정책의 지향점은 비휘발성 메모리 장치(100)의 아이들 타임을 최소화 하는 것이다. 또한, 데이터의 입출력 관리의 효율성을 극대화하는 것일 수 있다. 스케줄러(290)가 조정한 명령어 수행 순서는 외부의 호스트 또는 콘트롤러가 제공하는 명령어 수행 순서와 다를 수 있다. 즉, 스케줄러(290)는 큐(270)에 적재된 다수의 명령어들을, 외부의 호스트 또는 콘트롤러가 제공한 순서와는 비동기적으로 수행할 수 있다. 즉, 아이들 타임의 최소화 및 데이터 입출력 관리의 효율화 관점에서 수행순서를 조정하여 수행되도록 할 수 있다. 스케줄러(290)는 큐(270)의 상태를 관리하기 위한 제1 태스크 상태 레지스터(292)를 유지 관리할 수 있다(이에 관해서는 후술함).
주변 회로부(200)는 어드레스 디코더(240)를 더 포함할 수 있다. 어드레스 디코더(240)는 스트링 선택 라인, 복수의 워드 라인들 및 접지 선택 라인을 통해 메모리 셀 어레이(110)와 연결될 수 있다. 비휘발성 메모리 셀 어레이(110)로의/로부터의 프로그램 동작 시 또는 독출 동작 시, 어드레스 디코더(240)는 외부의 콘트롤러로부터 제공되는 로우 어드레스에 기초하여 복수의 워드 라인들 중의 하나를 선택 워드 라인으로 결정하고, 복수의 워드 라인들 중에서 상기 선택 워드 라인을 제외한 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다. 비휘발성 메모리 장치(100)의 동작에 필요한 워드 라인 전압들은 어드레스 디코더(240)를 통해 복수의 워드 라인들에 인가될 수 있다. 워드 라인 전압들은 외부의 콘트롤러로부터 제공되는 제어 신호들에 기초하여 전압 생성기(비도시)에 의해 생성될 수 있는데, 이는 기존에 알려진 기술이므로 여기서는 그에 관한 설명은 생략한다.
주변 회로부(200) 영역에는 위에서 설명되지 않은 다른 보조 회로들을 더 포함될 수 있다. 그 예로는, 커맨드(CMD) 및 어드레스(ADDR)에 기초하여 메모리 셀 어레이(110)에 대한 데이터 기입/독출/소거 동작을 수행하도록 제어하는 제어회로, 전원 전압에 기초하여 비휘발성 메모리 장치(100)의 동작에 필요한 워드 라인 전압들(VWL)을 발생하여 어드레스 디코더(240)에 제공하는 전압발생회로 등을 들 수 있다. 이 주변회로들의 동작들은 이미 잘 알려져 있고, 본 발명의 중심 개념과 직접적인 연관성이 낮으므로, 여기서는 그에 관한 구체적인 설명을 생략하기로 한다.
주변 회로부(200)는 구조적인 제한을 갖지 않는다. 즉, 비휘발성 메모리 장치(100)의 구조적 형태에 특별한 제한을 받지 않는다. 비휘발성 메모리 어레이(110)가 하나의 기판 상에 2차원적으로 형성되는 평면형 구조(PLANAR STRUCTURE)인 경우와 하나의 기판 상에 삼차원 구조 (또는 수직형 구조(VERTICAL STRUCTURE))로 형성되는 경우의 어느 경우에도, 본 발명의 실시예에 따른 주변 회로부(200)는 적용될 수 있다. 비휘발성 메모리 어레이(110)가 평면형 구조인 경우, 주변 회로부(200)는 비휘발성 메모리 어레이(110)의 영역과 동일 평면상에 배치될 수 있다. 이 경우, 주변 회로부(200)가 차지할 수 있는 공간적인 제약이 상대적으로 클 수 있다.
반면에, 비휘발성 메모리 어레이(110)가 상하 관계에 있는 다수의 층에 적층되어 형성되는 수직형 구조인 경우, 주변 회로부(200)는 비휘발성 메모리 어레이(110)의 영역과는 상하 관계로 배치될 수 있다. 예시적인 실시예에 따르면, 주변 회로부(200)는 비휘발성 메모리 어레이(110) 영역의 하부에 배치될 수 있다. 즉, 주변 회로부(200)는 씨오피(CELL OVER PERIPHERAL: COP) 구조로 제공될 수 있다. 도 3은 COP 구조로 구성한 비휘발성 메모리 장치(100)를 개념적으로 도시한다. 본 발명의 실시예들에 따른 주변 회로부(200)는 기존에 비해 데이터 버퍼(210)와 큐(270)와 같은 신규의 리소스를 더 포함하므로 기존의 주변 회로부에 비해 더 넓은 영역을 필요로 할 수 있다. COP 구조는 하나의 평면 영역 전체를 주변 회로부(200)용으로 할당할 수 있다. 즉, COP 구조는 주변 회로부(200)에 새로운 로직을 넣을 수 있는 공간을 제공해줄 수 있기 때문에, 본 발명을 구현하여 원하는 성능 향상을 도모하기에 적합한 구조일 수 있다.
도 2는 본 발명의 실시예들에 따른 비휘발성 메모리 장치(100)를 포함하는 비휘발성 메모리 시스템(500)의 구성을 나타낸다.
도 2를 참조하면, 비휘발성 메모리 시스템(500)은, 위에서 설명한 비휘발성 메모리 장치(100) 외에, 상기 비휘발성 메모리 장치(100)에 대하여 소정의 동작 수행을 요청하고 그 동작 수행의 응답을 제공받기 위한 제어를 수행하는 콘트롤러(300)를 더 포함할 수 있다. 상기 소정의 동작은 외부의 다른 호스트(700)가 요청한 것일 수 있다. 비휘발성 메모리 시스템(500)의 대표적인 예는 NAND 플래시 메모리와 같은 복수의 비휘발성 메모리 장치들을 포함하는 솔리드 스테이트 드라이브(SOLID STATE DRIVE: SSD)일 수 있으나, 이것에 한정되는 것은 아니다.
콘트롤러(300)는 복수의 채널들을 통해 비휘발성 메모리 장치(100)에 연결될 수 있다. 콘트롤러(300)는 버퍼부(310), 큐(330), 그리고 코어 로직부(350)를 포함할 수 있다.
버퍼부(310)는 외부의 호스트가 기입 요청한 프로그램 데이터, 상기 비휘발성 메모리 장치가 전달하는 독출 데이터를 임시로 저장할 수 있다. 또한, 버퍼부(310)는 지시에 따라 저장 중인 프로그램 데이터를 DQ(132)를 통해 비휘발성 메모리 장치(100)로 전달할 수 있다. 버퍼부(310)는 콘트롤러(300)의 구동에 필요한 데이터를 임시로 저장할 수 있다. 버퍼부(310)는 예컨대 DRAM으로 구현할 수 있다.
큐(330)는 외부의 호스트가 제공하는 다수의 명령어들을 임시로 저장할 수 있다. 예시적인 실시예에 따르면, 큐(330)는 순환 큐로 구현될 수 있다. 순환 큐는 순환 버퍼, 또는 순환 레지스터 또는 로직 회로로 구현할 수 있다. 큐(330)의 깊이 즉, 저장 요소의 개수는 적재하고자 하는 명령어들의 개수에 대응될 수 있다. 예시적인 실시예에 따르면, 큐(330)는 비휘발성 메모리 장치(100)의 큐(270)와 같은 깊이를 가질 수 있다.
버퍼부(310)와 큐(330)는 호스트 인터페이스(비도시)를 통해 외부 호스트의 프로세서에 연결될 수 있다. 또한, 버퍼부(310)와 큐(330)는 메모리 인터페이스(비도시)를 통해 비휘발성 메모리 장치(100)와 연결될 수 있다.
코어 로직부(350)는 큐(330)에 저장된 명령어들을 비휘발성 메모리 장치(100)로 전달하는 순서를 조정하여 내보낼 수 있다. 큐(330)에 저장된 명령어들을 비휘발성 메모리 장치(100)로 제공하는 순서는 외부의 호스트 명령어들을 콘트롤러(300)에 제공한 순서와 같거나 또는 다를 수 있다. 코어 로직부(350)는 미리 정해진 정책에 따라 큐(330)에 저장된 명령어들의 종류, 각 명령어의 예상 수행 시간, 비휘발성 메모리 장치(100)의 동작 상태 등을 고려하여 가장 효율적으로 처리할 수 있는 명령어 처리 순서를 정할 수 있다. 코어 로직부(350)는 이렇게 정한 순서에 따라 큐(330)에 저장된 명령어들을 비휘발성 메모리 장치(100)에 전달되게 할 수 있다. 예시적인 실시예에 따르면, 코어 로직부(350)는 큐(330)의 상태를 관리하기 위한 제2 태스크 상태 레지스터(352)를 유지 관리할 수 있다(이에 관해서는 후술함).
콘트롤러(300)는 후술하는 소정의 인터페이스 프로토콜에 따라 비휘발성 메모리 장치(100)와 통신할 수 있다. 비휘발성 메모리 장치(100)는 콘트롤러(300)의 제어에 따라 프로그램/독출/소거 등의 동작을 수행할 수 있다. 비휘발성 메모리 장치(100)는 페이지(page), 블록(block) 및/또는 매트 단위로 미리 정해진 동작들을 수행할 수 있다.
도 4는 외부의 호스트(700)가 요청하는 동작들을 수행 순서 조정기능이 없는 비휘발성 메모리 장치(90)에서 '동기적으로' 수행하는 경우의 타이밍 다이어그램을 예시한다. 도 5는 외부의 호스트(700)가 요청한 동작들을 수행 순서 조정 기능을 갖는 비휘발성 메모리 장치(100)에서 '비동기적으로' 수행하는 경우의 타이밍 다이어그램을 예시한다
도 1 및 2, 도 4 및 5를 함께 참조하면, 본 발명에 따른 비휘발성 메모리 장치(100)와 이를 채용한 비휘발성 메모리 시스템(500)은 큐(270)와 데이터 버퍼(210)를 활용하여 아이들 타임의 최소화 및 입출력 데이터 관리의 효율성을 크게 개선할 수 있음을 확인할 수 있다.
구체적으로, 도 4에 도시된 기존의 비활성 메모리 장치(90)와 도 5에 도시된 비활성 메모리 장치(100) 간의 중요한 차이점은 호스트(700)가 콘트롤러(300)를 통해 요청하는 명령어 동작들의 수행 순서를 조정할 수 있는지 여부이다. 즉, 도 5에 도시된 비활성 메모리 장치(100)는 앞서 설명한 것과 같이 큐(270)와 데이터 버퍼(210)를 구비하여, 호스트(700)가 콘트롤러(300)를 통해 요청하는 명령어 동작들의 수행 순서를 조정할 수 있다. 이에 비해, 도 4에 도시된 비활성 메모리 장치(90)는 큐(270) 및 데이터 버퍼(210)를 갖지 않고, 호스트(700)가 콘트롤러(300)를 통해 요청하는 명령어 동작들의 수행 순서를 조정할 수 없다.
도 2와 4를 참조하면, 호스트(700)는 콘트롤러(300)에 여러 가지 명령들을 보낼 수 있다. 도 4에 예시된 것은 호스트(700)가 제1 프로그램 명령(WRITE1 CMD), 제2 프로그램 명령(WRITE2 CMD), 제1 독출 명령(READ1 CMD), 제2 독출 명령(READ2 CMD)를 순차적으로 콘트롤러(300)에 제공한 경우이다. 콘트롤러(300)는 호스트(700)가 보낸 명령들을 큐(330)에 적재해둘 수 있다. 코어 로직부(350)는 큐(330)에 적재된 명령들의 수행순서를 조정하여 비휘발성 메모리 장치(90)로 전달할 수 있다.
도 4에서, 코어 로직부(350)는 제1 독출 명령(READ1 CMD)의 수행 순서를 제2 프로그램 명령(WRITE2 CMD)보다 앞서도록 조정할 수 있다. 비휘발성 메모리 장치(90)는 명령어 수행 순서를 조정하는 기능이 없다. 따라서 콘트롤러(300)가 제공하는 명령어들을 제공받은 수행 순서와 동기적으로 수행할 뿐이다. 즉, 콘트롤러(300)가 어느 하나의 명령(예: 제1 프로그램 명령(WRITE CMD1))을 비휘발성 메모리 장치(90)에 제공하고 나면, 비휘발성 메모리 장치(90)가 그 명령(예: 제1 프로그램 명령(WRITE CMD1))의 수행을 완료하여 수행 결과를 보고하기 전까지 콘트롤러(300)는 새로운 명령(예: 제1 독출 명령(READ CMD 1))을 비휘발성 메모리 장치(90)에 제공할 수 없다. 따라서 비휘발성 메모리 장치(90)는 먼저 받은 명령의 수행결과를 콘트롤러(300)에게 보고한 후 콘트롤러(300)로부터 새로운 명령을 받기까지 아무것도 할 수 없는 아이들 타임(IDLE TIME)이 발생한다. 도 4에서 비휘발성 메모리 장치(90)가 제1 독출 명령(READ CMD1)의 수행 결과를 콘트롤러(300)에 보고한 후 새로운 명령 즉, 제2 프로그램 명령(WRITE CMD2)를 받기까지의 시간도 비휘발성 메모리 장치(90)의 아이들 타임이 될 수 있다. 이처럼, 비휘발성 메모리 장치(90)가 콘트롤러(300)로부터 제공하는 명령어들을 동기적으로 수행하는 방식은 잦은 아이들 타임의 발생으로 인한 레이턴시(LATENCY) 때문에 시스템의 성능이 저하될 수 있다.
이에 비해, 도 2 및 도 5를 참조하면, 본 발명의 실시예에 따른 비휘발성 메모리 장치(100)에서는 콘트롤러(300)가 제공하는 명령들을 큐(270)에 적재해두고, 스케줄러(290)가 그 명령들의 수행 순서를 아이들 타임을 최소화 할 수 있도록 스마트하게 조정할 수 있다. 조정된 순서로 명령들을 수행함에 있어서, 큐(270)에 다수의 명령들이 적재되어 있으므로 어느 하나의 명령어 동작을 수행하고 나서 콘트롤러(300)로부터 새로운 명령을 전달받기 위해 기다릴 필요 없이 곧바로 다음 명령어 동작의 수행을 개시할 수 있다. 따라서 아이들 타임은 거의 무시할 수 있는 수준으로 최소화될 수 있다.
또한, 큐(270)에는 예컨대 제1 프로그램 명령(WRITE CMD 1), 제1 독출 명령(READ CMD 1), 제2 프로그램 명령(WRITE CMD 2), 제2 독출 명령(READ CMD 2)의 순서로 적재되지만, 스케줄러(290)에 의해 수행 순서는 아이들 타임을 줄이고 데이터 입출력 관리를 효율적으로 수행하는 데 최선인 순서로 조정되어 수행될 수 있다. 도 5에서는 그렇게 조정된 수행 순서가 예컨대 제1 프로그램 명령(WRITE CMD 1), 제1 독출 명령(READ CMD 1), 제2 독출 명령(READ CMD 2), 그리고 제2 프로그램 명령(WRITE CMD 2)의 순서인 것을 예시적으로 보여준다. 명령어들의 수행 순서가, 콘트롤러(300)에 의해 제공된 순서와는 다르게, 비휘발성 메모리 장치(100) 내부의 동작 상태에 따라 아이들 타임을 최소화 할 수 있도록 스마트하게 조정될 수 있다. 그에 따라, 비휘발성 메모리 장치(100)는 아이들 타임 발생에 따른 레이턴시를 최소화 할 수 있다. 그 결과, 비휘발성 메모리 시스템(500)의 성능도 크게 향상될 수 있다.
도 6은 본 발명의 실시예에 따른 비휘발성 메모리 장치가 외부 콘트롤러(호스트)의 명령을 수행하는 절차를 개략적으로 나타낸 흐름도이다.
콘트롤러(300)는 외부의 호스트가 요청한 작업을 수행하기 위한 소정의 명령어(프로그램, 독출, 소거 등)를 비휘발성 메모리 장치(100)에 전달할 수 있다(S100).
그 명령어는 IO 패드부(130)의 DQ(132)를 통해 입력되어, 명령어 파싱부(250)에 전달될 수 있다.
명령어 파싱부(250)는 그 명령어를 파싱하여 큐(270)에 순차적으로 적재할 수 있다(S102).
콘트롤러(300)는 명령어 수행에 필요한 프로그램 데이터를 비휘발성 메모리 장치(100)에 전달할 수 있다(S104).
그 프로그램 데이터는 IO 패드부(130)의 DQ(132)를 통해 입력되어, 데이터 버퍼부(210)에 저장될 수 있다(S106).
데이터 버퍼부(210)는 그 프로그램 데이터를 데이터 영역(210A)에 저장함과 동시에, 그 저장된 프로그램 데이터의 목록(저장 어드레스, 데이터 량, 관련 동작에 관한 정보 등)과 유효성을 관리하는 정보를 맵 영역(210B)에 반영하기 위한 업데이트를 할 수 있다(S108).
스케줄러(290)는 비휘발성 메모리 장치(100) 내부의 동작 상태에 따라 동작의 종류, 중요도 등을 고려하여 큐(270)에 적재된 명령어들의 수행 순서를 조정하여 수행할 수 있다(S110).
호스트(또는 콘트롤러(300))는 비휘발성 메모리 장치(100)의 상태 체크를 하여 명령어 동작의 수행이 완료되었는지 여부를 확인할 수 있다. 상태 체크를 통해 명령어 수행이 완료된 것이 확인되면, 비휘발성 메모리 장치(100)는 호스트(또는 콘트롤러(300))에게 명령어 수행 결과를 보고할 수 있다(S112).
비휘발성 메모리 장치(100)가 콘트롤러(300)의 지시를 받아 수행하는 여러 태스크들에 관한 정보는 맵 영역(210B)에 저장되어 관리되고, 활용될 수 있다. 도 7은 이와 관련된 데이터 버퍼부(210) 내의 유효 데이터 매핑 방법을 설명하기 위한 도면이다.
도 7을 참조하면, 맵 영역(210B)에는 수행해야 하는 태스크들 각각에 관한 정보(TASK Information)가 저장될 수 있다. 각 태스크 정보는 Operation Type, Buffer Data Base Address, Buffer Data Offset, NAND Start Address, Operation Status, 그리고 미정 영역(TBD)을 포함할 수 있다. Operation Type은 수행해야 할 동작(operation)의 종류(예: Program 또는 Read 등)를 나타내며, NAND Start Address는 콘트롤러(300)가 지정한 비휘발성 메모리 셀 어레이(110) 내의 제공한 프로그램 데이터 기입 어드레스를 나타낸다. 이 두 정보는 콘트롤러(300)가 제공할 수 있다. Buffer Data Base Address는 해당 태스크에 관련된 데이터가 저장된 데이터 영역(210A)의 시작점 어드레스를 나타내며, Buffer Data Offset는 해당 태스크에 관련된 데이터의 양을 나타내고, Operation Status는 태스크의 수행 상태를 나타낸다. 이 세 가지 정보는 비휘발성 메모리 장치(100)가 자체적으로 생성하는 정보일 수 있다. Operation Status는 태스크 상태를 여러 가지 코드로 나타낼 수 있다. 예컨대, 코드 값 00h은 프로그램 데이터의 메모리 셀 어레이(110)에 대한 기입 동작이 성공적으로 완료된(Programmed) 상태 또는 독출 데이터가 콘트롤러(300)에 성공적으로 전달된(Dout) 상태를 나타낼 수 있다. 코드값 01h는 프로그램 데이터를 콘트롤러(300)로부터 받았지만(Din) 아직 메모리 셀 어레이(110)에 기입하지는 않은 (no Programmed) 상태를 나타낼 수 있다. 코드 값 02h은 비휘발성 메모리 셀 어레이(110)로부터 데이터를 읽어왔으나(Fetched) 아직 콘트롤러(300)로 내보내지는 않은(no Dout) 상태를 나타낼 수 있다. 코드 값 03h은 제1 큐(270)의 상태 정보값을 제1 TSR(292)에 업데이트한 상태를 나타낼 수 있다. 코드값 04h는 태스크 수행 중 실패가 발생한 상태(Failure case 1)를 나타낼 수 있다. 예시한 것 이외에도 필요한 태스크 상태를 더 정의하여 사용할 수 있다.
도 8은 본 발명의 실시예들에 따라 외부 콘트롤러(300)(호스트)와 비휘발성 메모리 장치(100) 간의 호스트 인터페이스 프로토콜을 설명하기 위한 흐름도이다. 도 9는 제1 및 제2 TSR(292, 352)에 저장된 상태값을 각각 나타내는 제1 및 제2 TSR 테이블(354, 294)을 예시한다. 도 10은 본 발명의 실시예들에 따라 외부 콘트롤러(300)(호스트)가 비휘발성 메모리 장치(100)에 명령어를 전달하고 수행 완료를 확인하는 명령어 시퀀스를 예시한다.
도 3과 도 8 내지 10을 함께 참조하면서 상기 호스트 인터페이스 프로토콜(또는 큐잉 프로토콜)을 설명한다.
비휘발성 메모리 장치(100)는 콘트롤러(300)가 전달한 명령어들을 큐(270)에 다수 개 적재해두고 상기 콘트롤러와 비동기적으로 수행할 수 있으므로, 외부 콘트롤러(300)(또는 호스트)와 비휘발성 메모리 장치(100) 간에 명령어와 데이터 전달, 요청과 응답이 혼선을 야기하지 않으면서 효율적으로 수행될 필요가 있다. 이를 위한 호스트 인터페이스 프로토콜 또는 큐잉 프로토콜(QUEUING PROTOCOL)이 필요할 수 있다.
비휘발성 메모리 장치(100)는 큐(270)에 다수의 명령어들을 적재시켜두고 수행하므로 그 명령어들을 서로 식별할 수 있어야 한다. 이를 위해, 각 명령어들마다 고유의 이름표, 즉 태스크 ID를 부가할 수 있다. 호스트가 요청하는 명령어들은 콘트롤러(300)의 큐(330)에 적재되어 있다가 비휘발성 메모리 장치(100)의 큐(270)로 전달될 수 있다. 예시적인 실시예에 따르면, 태스크 ID 1 바이트 사이클당 큐(270, 300)의 사이즈(Depth)가 8-Depth(DQ0 DQ7)로 할 수 있다.
콘트롤러(300)와 비휘발성 메모리 장치(100) 간의 명령어 전달 및 수행 완료 확인이 효율적으로 이루어지도록 양쪽 큐(270, 330)의 상태 정보를 저장, 관리할 수 있다. 이를 위해, 예시적인 실시예에 따르면 제1 태스크 상태 레지스터(TASK STATUS REGISTER: TSR)(292)와 제2 태스크 상태 레지스터(TASK STATUS REGISTER: TSR)(352)가 비휘발성 메모리 장치(100)와 콘트롤러(300)에 각각 마련될 수 있다. 제1 TSR(292)과 제2 TSR(352)은 제1 큐(270)와 제2 큐(330)의 상태 정보 값을 저장할 수 있다. 제1 TSR(292)과 제2 TSR(352)은 다른 종류의 임시 저장수단으로 대체될 수 있다.
제1 및 제2 TSR(292, 352)의 사이즈는 큐(270, 330)의 사이즈(Depth)를 고려하여 정할 수 있다. 예컨대, 큐(270, 330)의 사이즈가 8-Depth (DQ0 DQ7)이면, 제1 및 제2 TSR(292, 352)의 사이즈는 1 바이트로 정할 수 있다. 큐(270, 330)의 깊이를 늘이거나 줄이면, 그에 맞추어 제1 및 제2 TSR(292, 352)의 사이즈도 그에 비례하여 변경시킬 수 있다. 도 9에 도시된 제1 및 제2 TSR 테이블(294, 354)은 제1 및 제2 TSR(292, 352)의 사이즈가 1 바이트인 경우를 가정한 것이다.
예시적인 실시예에 따르면, 제1 및 제2 TSR(292, 352)은 예컨대 스케줄러(290)와 코어 로직부(350)에 각각 마련될 수 있다. 제1 TSR(292)과 제2 TSR(352)에 저장된 큐(270, 330)의 상태 정보 값에 기초하여, 각 명령어들의 수행 완료 여부 확인할 수 있다. 제1 TSR(292)에 저장된 제1 큐(270)의 상태 정보 값은 거기에 저장된 명령어들의 수행 완료에 따라 계속 업데이트될 수 있다. 그리고 제1 TSR(292)에 업데이트된 상태 정보 값은 콘트롤러(300)에 전달되어 제2 TSR(352)에 업데이트될 수 있다. 이를 통해, 콘트롤러(300)는 비휘발성 메모리 장치(100)에 요청한 명령어들의 수행 완료 여부를 확인할 수 있다.
도 8을 참조하면서 좀 더 구체적으로 설명하면, 콘트롤러(300)와 비휘발성 메모리 장치(100)는 제1 TSR(292) 1 바이트와 제2 TSR(352) 1바이트를 각각 할당하여 제1 큐(270)와 제2 큐(330)의 태스크 상태 정보 값을 유지할 수 있다(S200, S202).
콘트롤러(300)는 명령어를 비휘발성 메모리 장치(100)에 보낼 수 있는지 여부에 관한 상태를 체크할 수 있다. 이를 위해, 제2 TSR(353)의 전체 비트에 저장된 상태 정보 값들 중 0의 값이 있는지를 확인할 수 있다(S204). 예를 들어, 도 9에서, 제2 TSR(352)의 전체 8 비트의 저장 값들 중에서 제1 큐(270)의 3번째 저장요소(DQ2)의 값이 0이므로, 제1 큐(270)의 그 3번째 저장요소(DQ2)가 비어있음(EMPTY)을 나타낸다. 이 상태에서는 제1 TSR(292)의 8비트 값들도 제2 TSR(352)의 8비트 값들과 동일할 수 있다. 제1 및 제2 TSR(292, 352)에 저장된 상태 정보 값에 있어서, '0'과 '1'은 그것들의 위치에 대응하는 큐의 저장요소가 비어있는 상태(EMPTY)와 비어있지 않은 상태(BUSY 상태)를 각각 나타낼 수 있다.
확인 결과 0의 값인 비트가 있는 경우, 콘트롤러(300)는 비휘발성 메모리 장치(100)에 명령어를 보낼 수 있다. 이 경우, 콘트롤러(300)는 원하는 명령어(예: 삭제(ERASE), 기입(PROGRAM), 또는 독출(READ) 명령어)를 발행하면서 그 명령어에 태스크 ID 1사이클을 부가할 수 있다(S206). 이에 의해, 발행되는 명령어마다 태스크 ID가 지정되어 명령어들을 식별할 수 있다. 도 9에 도시된 예에 있어서, 태스크 ID는 예컨대 '11011111'의 값으로 발행될 수 있다.
콘트롤러(300)는 발행된 명령어들을 큐(330)에 저장해두면서, 코어 로직부(350)가 지정하는 순서에 따라 명령어들을 비휘발성 메모리 장치(100)로 전달할 수 있다(S208). 예를 들면, 프로그램 명령을 요청하기 위한 프로그램 명령어 시퀀스는 도 10의 (A)에 예시된 것처럼 프로그램 명령어(Program Command) +(Add) 태스크 ID, 기입할 프로그램 데이터(W-Data), 그리고 전송 완료 확인 명령어(Confirm Command)를 포함할 수 있다. '프로그램 명령어(Program Command) +(Add) 태스크 ID'와 전송 완료 확인 명령어(Confirm Command)는 명령어 파싱부(250)에 전달될 수 있고, 기입할 프로그램 데이터(W-Data)는 데이터 버퍼부(210)에 전달될 수 있다.
이러한 프로그램 명령어의 일련의 동작 시퀀스는 콘트롤러(300)에서 비휘발성 메모리 장치(100)의 데이터 버퍼(210)까지 분리 불가한 단일 동작(atomic operation)처럼 수행될 수 있다. 데이터 버퍼부(210)에서부터 비휘발성 메모리 셀 어레이(110)로 프로그램하는 동작은 콘트롤러(300)와는 무관하게 비휘발성 메모리 장치(100)가 독립적으로 수행할 수 있다.
마찬가지로 도 10의 (B)에 예시된 것처럼, 독출 명령을 요청하기 위한 독출 명령어 시퀀스도 비슷한 포맷으로 구성될 수 있다. 독출 명령어의 일련의 동작 시퀀스 역시 콘트롤러(300)에서 비휘발성 메모리 장치(100)의 데이터 버퍼(210)까지 분리 불가한 단일 동작(atomic operation)처럼 수행될 수 있다. 비휘발성 메모리 장치(100)가 언제 독출 데이터를 콘트롤러(300)에 보낼 것인지는 미리 정해둔 우선순위에 따르는 방식 또는 콘트롤러(300)가 비휘발성 메모리 장치(100)에 명령어를 한 번 더 보내는 방식에 따라 정할 수 있을 것이다.
비휘발성 메모리 장치(100)의 명령어 파싱부(250)는 명령어를 파싱하여 명령어 뒤에 들어온 태스크 ID 1사이클을 통해 태스크를 식별할 수 있다. 명령어 파싱부(250)는 식별된 그 명령어를 그 태스크 ID에 기초하여 제1 큐(270)의 대응 위치에 저장할 수 있고, 제1 TSR(292)의 해당 비트를 1로 업데이트 할 수 있다. 예컨대, 도 9의 (A)에서, 제1 큐(270)의 3번째 저장요소(DQ2)에 해당하는 제1 TSR(292)의 상태 정보 값을 0에서 1로 업데이트할 수 있다.
비휘발성 메모리 장치(100)에서는 이런 과정을 통해 제1 큐(270)에 적재된 명령어들이 앞에서 설명한 방식에 따라 상기 콘트롤러와 비동기적으로 수행될 수 있다(S214).
비휘발성 메모리 장치(100)는 수행이 완료된 명령어가 있으면 그 명령어에 대응하는 제1 TSR(292)의 해당 비트의 값을 0으로 업데이트 할 수 있다(S216). 이는 그 해당 비트에 대응하는 제1 큐(270)의 저장요소가 비어있음을 의미한다. 즉, 그 저장요소는 새로운 명령어를 받아들일 수 있는 상태라는 의이다.
단계 S214와 S216은 반복적으로 수행될 수 있다. 그런 와중에, 콘트롤러(300)는 비휘발성 메모리 장치(100)에게 명령어들의 수행을 완료하였는지 여부를 확인해줄 것을 요청할 수 있다(S218).
예시적인 실시예에 따르면, 이 확인 요청은 주기적으로 확인 요청을 비휘발성 메모리 장치(100)에 보내는 폴링(Polling) 방식으로 수행할 수 있다. 만약, 콘트롤러(300)와 비휘발성 메모리 장치(100) 간의 Rx 라인과 Tx 라인이 별도의 라인인 경우, 비휘발성 메모리 장치(100)는 호스트인 콘트롤러(300)의 요청 없이도 명령어 수행 완료 시 그 사실을 콘트롤러(300)에 확인시켜줄 수 있을 것이다.
예시적인 실시예에 따르면, 콘트롤러(300)는 명령어의 수행 완료 여부에 관한 상태 체크를 위한 상태 확인 시퀀스(Read Status Sequence)를 비휘발성 메모리 장치(100)에 보낼 수 있다. 이를 통해, 콘트롤러(300)는 제1 TSR(292)에 저장된 값 즉, 제1 큐(270)의 상태 정보 값(명령어 수행 완료 여부)을 받을 수 있다. 콘트롤러(300)가 비휘발성 메모리 장치(100)에게 명령어 수행 완료 여부를 확인하기 위해 보내는 상태 확인 시퀀스는 예컨대 도 10의 (C)에 예시된 것처럼, 'Read Status + TSR[x]'의 형태로 구성될 수 있다. 이 상태 확인 시퀀스는 제1 TSR(292)에 저장된 상태 정보 값을 보내줄 것을 요청하는 의미를 갖는다.
상기 요청에 응하여, 비휘발성 메모리 장치(100)는 제1 TSR(292)에 현재 저장된 값 즉, 현재의 제1 큐(270)의 상태 정보 값을 콘트롤러(300)로 보낼 수 있다(S220).
콘트롤러(300)는 비휘발성 메모리 장치(100)로부터 전달받은 제1 TSR(292)의 현재 저장 값에 기초하여, 제1 큐(270)에 저장되어 있는 명령어들의 수행 완료 여부를 확인할 수 있다(S222). 예컨대, 전달받은 제1 TSR(292)의 8비트의 값들 중에서 0이 포함되어 있으면, 그 0에 대응하는 명령어는 수행이 완료되었고, 그에 대응하는 제1 큐(270)의 저장요소는 비어있음을 의미할 수 있다.
콘트롤러(300)는 비휘발성 메모리 장치(100)로부터 전달받은 제1 TSR(292)의 현재 저장 값을 제2 TSR(352)에 업데이트 할 수 있다. 이에 의해, 제1 TSR(292)과 제2 TSR(352)는 동일한 값을 유지할 수 있다. 이로써, 콘트롤러(300)는 비휘발성 메모리 장치(100)의 제1 큐(270)의 상태, 즉 거기에 저장된 명령어들의 수행 완료 상태를 실시간으로 정확하게 파악할 수 있다.
다음으로, 비휘발성 메모리 장치(100)가 데이터 버퍼부(200)를 포함하므로 여러 가지 부가적인 동작들도 지원할 수 있다. 이의 예로서 플러싱(Flushing)과 프리-페칭(Pre-fetching) 동작을 들 수 있다.
도 11은 본 발명의 실시예에 따라 비휘발성 메모리 장치(100)에서 수행될 수 있는 플러싱 동작에 관련된 데이터 및 명령어의 흐름을 나타낸다.
도 11을 참조하면, 비휘발성 메모리 장치(100)는 콘트롤러(300)가 프로그램 동작을 요청하면서 보내준 프로그램 데이터를 받아서 데이터 버퍼부(200)에 임시로 저장해두기만 하고 아직 비휘발성 메모리 셀 어레이(110)에는 기입하지 않은 상태를 고려할 수 있다. 그 프로그램 데이터는 손실되면 절대 아니 되는 중요한 데이터일 수 있다. 데이터 버퍼부(210)는 전원이 오프되면 거기에 저장된 데이터들은 모두 손실되는 위험이 있다. 중요한 데이터는 데이터 버퍼부(210)에 오래 유지하지 않고 곧바로 비휘발성 메모리 셀 어레이(110)에 빨리 기입하는 것이 안전할 수 있다.
호스트(700)(또는 콘트롤러(300))는 손실되어서는 아니 되는 중요한 데이터를 비휘발성 메모리 어레이(110)에 기입하고자 할 때는, 플러싱을 비휘발성 메모리 장치(100)에 요청할 수 있다. 또한, 데이터 버퍼부(210)에 캐쉬된 데이터가 머물러있는 시간이 어느 정도 이상이 되는 경우에도 플러싱을 요청할 수 있다.
예시적인 실시예에 따르면, 플러싱 요청은 콘트롤러(300)가 플러싱 명령어를 IO 패드부(130)의 DQ(132)를 통해 제공하는 방법으로 이루어질 수 있다. 플러싱 요청을 위한 명령어는 비휘발성 메모리 셀 어레이(110)의 어드레스를 포함할 수 있다. 콘트롤러(300)로부터 플러싱 요청을 위한 명령이 데이터 버퍼부(210)에 전달되면, 비휘발성 메모리 장치(100)의 데이터 버퍼부(210)는 해당 어드레스와 매칭되는 데이터 버퍼부(210)의 임시 저장된 데이터를 상기 비휘발성 메모리 셀 어레이(110)의 어드레스에 강제로 프로그램(FORCED PROGRAMMING)할 수 있다. 어드레스가 매칭되는 데이터는 맵 영역(210B)의 태스크 정보에 기초하여 찾을 수 있다. 또한, 호스트(700)(또는 콘트롤러(300))는 페이지 버퍼부(230)에 임시로 저장된 데이터도 비휘발성 메모리 셀 어레이(110)에 플러싱(FLUSHING)하도록 명할 수 있다.
다른 예시적인 실시예에 따르면, IO 패드부(130)에 플러싱 요청을 위한 전용의 플러싱 핀(135)을 마련해두고, 콘트롤러(300)가 그 플러싱 핀(135)을 작동시켜 플러싱을 요청할 수도 있다. 플러싱 핀(135)은 프로그램을 위해 임시 보관된 데이터 버퍼부(210) 내의 모든 데이터를 비휘발성 메모리 셀 어레이(110)에 강제로 프로그램 되게 할 수 있다.
예시적인 실시예에 따르면, 플러싱 요청은 콘트롤러(300)의 코어 로직부(350)가 할 수 있다. 콘트롤러(300)에 별도의 NAND 관리자 로직을 마련하여, 그것을 통해 플러싱 요청을 할 수도 있을 것이다.
플러싱 요청 명령어는 항상 최우선권을 가질 수 있다. 플러싱 요청 명령어가 접수되면, 비휘발성 메모리 장치(100)는 그 명령어를 최우선적으로 처리할 수 있다.
도 12는 본 발명의 실시예에 따라 비휘발성 메모리 장치(100)에서 수행될 수 있는 프리-페치 동작에 관련된 데이터와 명령어의 흐름을 나타낸 도면이다.
비휘발성 메모리 셀 어레이(110)에 저장된 데이터 중 순차적으로 독출 해야 할 구간에 있는 데이터를 미리 읽어와서 데이터 버퍼부(210)에 임시로 저장해두면 시스템의 성능을 향상시킬 수 있다.
예시적인 실시예에 따르면, 이와 같은 프리-페치 동작은 호스트(700)(또는 콘트롤러(300))의 명령(요청)에 의해 수행될 수 있다. 프리-페치 명령어는 비휘발성 메모리 셀 어레이(110)의 어드레스와 오프셋(즉, 프리-페치 해야 할 데이터 량)에 관한 정보를 포함할 수 있다. 콘트롤러(300)가 프리-페치 명령어를 보내면, 명령어 파싱부(250)가 파싱하여 큐(270)에 저장할 수 있다. 프리-페치 명령을 수행 시, 프리-페치 해야 할 어드레스와 매칭되는 데이터를 비휘발성 메모리 셀 어레이(110)로부터 읽어와서 페이지 버퍼부(230)를 통해 데이터 버퍼부(210)의 데이터 영역(210A)으로 이동시킬 수 있다.
예시적인 다른 실시예에 따르면, 프리-페치 동작은 비휘발성 메모리 장치(100)의 자체적인 판단에 따라 수행할 수 있다. 여기서, 비휘발성 메모리 장치(100)의 자체적인 판단으로 프리-페치하는 경우의 예로는 아이들 타임이 길어질 것으로 예상되는 경우, 어느 하나의 플레인(112A)에 프로그램 동작이 수행 중이어서 다른 하나의 플레인(112B)에 대한 독출 동작의 수행이 가능한 경우 등을 들 수 있다.
프리-페치된 독출 데이터는 대용량의 데이터 버퍼부(210)에 저장해두고, 그 프리-페치된 독출 데이터를 활용한 효율적인 동작을 수행할 수 있다. 일반적으로, 셀 당 저장할 수 있는 비트 수가 1 비트에서 3 비트인 SLC(SINGLE-LEVEL CELL)부터 TLC (TRIPLE-LEVEL CELL)까지는, 페이지 버퍼부(230)에 있는 독출 데이터를 DQ(132)를 통해 콘트롤러(300)에 내보내는 데 걸리는 시간(T1)(이를 DMA 타임이라 함)은 비휘발성 메모리 셀 어레이(110)의 데이터를 페이지 버퍼부(230)로 읽어오는 데 걸리는 시간(T2)(이를 tR 타임이라 함) 보다 길다. 그러나 한 셀에 4 비트를 저장할 수 있는 QLC(QUAD-LEVEL CELL) 또는 이보다 더 많은 비트를 저장할 수 있는 셀 구조인 경우에는, 반대로 tR 타임(T2)이 DMA 타임(T1)보다 길어질 수 있다. 이런 경우에는 비휘발성 메모리 셀 어레이(110)에 저장된 데이터를 미리 읽어오는 프리-페치 기능이 유용할 수 있다.
본 발명은 비휘발성 메모리 장치를 포함하는 다양한 장치 및 시스템에 유용하게 적용될 수 있으며, 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트폰(smart phone), MP3 플레이어, PDA(personal digital assistants), PMP(portable multimedia player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, 사물 인터넷(internet of things; IoT) 기기, VR(virtual reality) 기기, AR(augmented reality) 기기 등과 같은 다양한 전자 기기에 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 외부의 콘트롤러가 요청하는 동작을 수행하는 비휘발성 메모리 장치에 있어서,
    데이터를 비휘발적으로 저장하는 비휘발성 메모리 셀 어레이;
    상기 콘트롤러가 요청하는 동작들에 관련된 명령어들 및 데이터가 입력되고, 요청된 동작들의 수행 결과들을 상기 콘트롤러로 출력하는 통로를 제공하는 입출력 패드부; 및
    상기 콘트롤러가 제공하는 복수 개의 명령어들을 적재해두고, 상기 콘트롤러가 제공한 프로그램 데이터와 상기 비휘발성 메모리 셀 어레이로부터 독출한 데이터를 임시로 저장하면서, 상기 복수 개의 명령어들을 상기 비휘발성 메모리 장치 내부의 동작 상태에 기초하여 상기 콘트롤러와 비동기적으로 순서를 조정하여 수행하는 주변 회로부를 포함하며,
    상기 주변 회로부는, 상기 비휘발성 메모리 셀 어레이에 기입할 프로그램 데이터와 상기 비휘발성 메모리 셀 어레이로부터 독출된 독출 데이터를 저장하는 페이지 버퍼부; 상기 콘트롤러가 상기 입출력 패드부를 통해 제공하는 명령어를 파싱하는 명령어 파싱부; 상기 콘트롤러가 상기 입출력 패드부를 통해 제공하는 복수 개의 명령어들을 임시로 적재하는 큐; 상기 큐에 적재된 소정 명령어의 동작을 수행하기 위해, 상기 콘트롤러가 상기 입출력 패드부를 통해 제공하는 프로그램 데이터를 임시로 저장하다가 상기 페이지 버퍼부로 전달하거나 또는 상기 페이지 버퍼부로부터 독출 데이터를 전달받아 임시로 저장하다가 상기 입출력 패드부를 통해 상기 콘트롤러로 전달하는 데이터 버퍼부; 및 상기 큐에 적재된 복수 개의 명령어들을, 상기 콘트롤러가 제공한 순서와는 다르게, 소정의 스케줄링 정책에 기초하여 상기 비휘발성 메모리 장치 내부의 동작 상태(operation status)에 따라 수행 순서를 조정하여 수행하는 스케줄러를 포함하는 것을 특징으로 하는 비휘발성 메모리 장치.
  2. 제 1 항에 있어서, 상기 주변 회로부가 배치되는 영역은 상기 비휘발성 메모리 셀 어레이가 배치되는 영역에 대하여 상하 관계로 배치되는 것을 특징으로 하는 비휘발성 메모리 장치.
  3. 삭제
  4. 비휘발성 메모리 장치; 및
    상기 비휘발성 메모리 장치에 대하여 소정의 동작 수행을 요청하고 그 동작 수행에 관한 응답을 제공받기 위한 제어를 수행하는 콘트롤러를 포함하고,
    상기 비휘발성 메모리 장치는,
    데이터를 비휘발적으로 저장하는 비휘발성 메모리 셀 어레이;
    상기 콘트롤러가 요청하는 동작들에 관련된 명령어들 및 데이터가 입력되고, 요청된 동작들의 수행 결과들을 상기 콘트롤러로 출력하는 통로를 제공하는 입출력 패드부; 및
    상기 콘트롤러가 제공하는 복수 개의 명령어들을 적재해두고, 상기 콘트롤러가 제공한 프로그램 데이터와 상기 비휘발성 메모리 셀 어레이로부터 독출한 데이터를 임시로 저장하면서, 상기 복수 개의 명령어들을 상기 비휘발성 메모리 장치 내부의 동작 상태에 기초하여 상기 콘트롤러와 비동기적으로 순서를 조정하여 수행하는 주변 회로부를 포함하며,
    상기 주변 회로부는, 상기 비휘발성 메모리 셀 어레이에 기입할 프로그램 데이터와 상기 비휘발성 메모리 셀 어레이로부터 독출된 독출 데이터를 저장하는 페이지 버퍼부; 상기 콘트롤러가 상기 입출력 패드부를 통해 제공하는 명령어를 파싱하는 명령어 파싱부; 상기 콘트롤러가 상기 입출력 패드부를 통해 제공하는 복수 개의 명령어들을 임시로 적재하는 제1 큐; 상기 제1 큐에 적재된 소정 명령어의 동작을 수행하기 위해, 상기 콘트롤러가 상기 입출력 패드부를 통해 제공하는 프로그램 데이터를 임시로 저장하다가 상기 페이지 버퍼부로 전달하거나 또는 상기 페이지 버퍼부로부터 독출 데이터를 전달받아 임시로 저장하다가 상기 입출력 패드부를 통해 상기 콘트롤러로 전달하는 데이터 버퍼부; 및 상기 제1 큐에 적재된 복수 개의 명령어들을, 상기 콘트롤러가 제공한 순서와는 다르게, 소정의 스케줄링 정책에 기초하여 상기 비휘발성 메모리 장치 내부의 동작 상태에 따라 수행 순서를 조정하여 수행하는 스케줄러를 포함하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  5. 삭제
  6. 제 4 항에 있어서, 상기 콘트롤러가 명령어의 발행 또는 핀 컨트롤을 통해 플러싱(flushing)을 요청하면, 상기 비휘발성 메모리 장치는 상기 데이터 버퍼부에 임시 저장된 데이터 중 특정된 데이터를 상기 비휘발성 메모리 셀 어레이의 지정된 위치에 강제로 프로그램 하는 플러싱 동작을 최우선적으로 수행하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  7. 제 4 항에 있어서, 상기 콘트롤러가 프리-페칭을 요청하거나 또는 상기 비휘발성 메모리 장치의 로직에 의한 자체적인 판단에 따라, 상기 비휘발성 메모리 셀 어레이에 기록된 데이터 중 순차적인 독출 구간(Sequential Read Section)의 데이터를 상기 데이터 버퍼부에 미리 읽어오는 프리-페치(pre-fetch) 기능을 지원하는 것을 특징으로 하는 비휘발성 메모리 시스템.
  8. 입출력 패드부, 비휘발성 메모리 셀 어레이, 그리고 큐, 데이터 버퍼부, 그리고 명령어 파싱부를 포함하는 주변 회로부를 포함하는 비휘발성 메모리 장치의 동작 수행 방법에 있어서,
    외부의 콘트롤러가 상기 입출력 패드부를 통해 제공하는 명령어들을 상기 명령어 파싱부가 파싱하여 상기 큐에 적재하는 단계;
    상기 콘트롤러가 상기 입출력 패드부를 통해 제공하는 프로그램 데이터 및/또는 상기 비휘발성 메모리 셀 어레이로부터 독출한 독출 데이터를 상기 데이터 버퍼부의 데이터 영역에 임시로 저장하는 단계;
    상기 데이터 버퍼부에 저장된 데이터의 어드레스와 사이즈 정보를 상기 데이터 버퍼부의 맵 영역에 업데이트 하는 단계; 및
    상기 큐에 적재된 복수의 명령어들을 상기 비휘발성 메모리 장치의 정책에 기초하여 내부의 동작 상태에 따라 상기 콘트롤러와 비동기적으로 순서를 조정하여 수행하는 단계를 포함하며,
    상기 비휘발성 메모리 장치가 상기 큐에 적재된 상기 명령어들 각각의 수행 완료 여부에 관한 태스크 상태 정보를 유지 관리하는 단계를 더 포함하고,
    상기 콘트롤러는 상기 비휘발성 메모리 장치가 관리하는 상기 태스크 상태 정보를 체크하는 것을 통해 상기 명령어들 각각의 수행 완료 여부를 확인할 수 있는 것을 특징으로 하는 비휘발성 메모리 장치의 동작 수행 방법.
  9. 삭제
  10. 제 8 항에 있어서, 상기 유지 관리하는 단계는, 상기 비휘발성 메모리 장치가 상기 콘트롤러로부터 태스크 ID가 부여된 소정의 명령어를 전달받으면 자체적으로 관리하는 제1 태스크 상태 레지스터의 저장 값을 상기 태스크 ID에 기초하여 업데이트 하는 단계; 상기 비휘발성 메모리 장치가 수행 완료한 명령어에 대응하는 상기 제1 태스크 상태 레지스터의 저장 값을 0으로 업데이트 하는 단계; 및 명령어 수행 완료 여부에 관한 상기 콘트롤러의 확인 요청에 응하여, 상기 비휘발성 메모리 장치가 상기 제1 태스크 상태 레지스터의 저장 값을 상기 콘트롤러에 전달하는 단계를 포함하며,
    상기 콘트롤러가 전달받은 상기 제1 태스크 상태 레지스터의 저장 값을 통해 명령어의 수행 완료가 확인되면, 상기 제1 태스크 상태 레지스터의 저장값을 제2 태스크 상태 레지스터에 업데이트 하고, 상기 제2 태스크 상태 레지스터의 전체 비트 값 중 0의 값이 존재할 때 상기 콘트롤러가 상기 비휘발성 메모리 장치로 태스크 ID가 부여된 새로운 명령어를 발행할 수 있는 것을 특징으로 하는 비휘발성 메모리 장치의 동작 수행 방법.
KR1020170181828A 2017-12-28 2017-12-28 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법 KR102514772B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170181828A KR102514772B1 (ko) 2017-12-28 2017-12-28 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법
US16/174,839 US10790026B2 (en) 2017-12-28 2018-10-30 Non-volatile memory device and system capable of executing operations asynchronously, and operation execution method of the same
CN201811653997.5A CN109976666B (zh) 2017-12-28 2018-12-27 非易失性存储器装置和系统及其操作执行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170181828A KR102514772B1 (ko) 2017-12-28 2017-12-28 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법

Publications (2)

Publication Number Publication Date
KR20190079831A KR20190079831A (ko) 2019-07-08
KR102514772B1 true KR102514772B1 (ko) 2023-03-28

Family

ID=67058468

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170181828A KR102514772B1 (ko) 2017-12-28 2017-12-28 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법

Country Status (3)

Country Link
US (1) US10790026B2 (ko)
KR (1) KR102514772B1 (ko)
CN (1) CN109976666B (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190371405A1 (en) * 2018-05-30 2019-12-05 Circuit Blvd., Inc. Method of filling up data on open-channel solid state drive (ssd) and an apparatus performing the same
US10990317B2 (en) * 2019-08-28 2021-04-27 Micron Technology, Inc. Memory with automatic background precondition upon powerup
US11144450B2 (en) 2019-12-19 2021-10-12 Micron Technology, Inc. Maintaining sequentiality for media management of a memory sub-system
US10910048B1 (en) * 2020-01-16 2021-02-02 Micron Technology, Inc. Extended memory communication
TWI748550B (zh) * 2020-07-08 2021-12-01 慧榮科技股份有限公司 組態可靠命令的方法及裝置以及電腦程式產品
CN113918082B (zh) 2020-07-08 2024-03-08 慧荣科技股份有限公司 计算机可读取存储介质、配置可靠命令的方法及装置
US11449269B2 (en) * 2020-07-22 2022-09-20 Micron Technology, Inc. Edge compute components under a memory array
US20220066698A1 (en) * 2020-08-26 2022-03-03 Micron Technology, Inc. Efficient command scheduling for multiple memories
KR20220046211A (ko) * 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 저항성 메모리 장치를 제어하기 위한 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN112908379B (zh) * 2021-01-26 2023-05-23 北京航空航天大学 一种异步电路及系统
WO2022160114A1 (en) * 2021-01-27 2022-08-04 Yangtze Memory Technologies Co., Ltd. Method and system for asynchronous multi-plane independent (ampi) memory read operation
US20220318603A1 (en) * 2021-03-31 2022-10-06 International Business Machines Corporation Nvm-based high-capacity neural network inference engine
WO2023141992A1 (zh) * 2022-01-28 2023-08-03 长江存储科技有限责任公司 存储器、存储器的控制方法及存储器系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160364345A1 (en) * 2015-06-12 2016-12-15 Apple Inc. Memory interface system

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
US8037235B2 (en) * 2008-12-18 2011-10-11 Mosaid Technologies Incorporated Device and method for transferring data to a non-volatile memory device
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
KR101682666B1 (ko) 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
WO2012050934A2 (en) * 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
JP2012128644A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
KR102083490B1 (ko) * 2012-08-08 2020-03-03 삼성전자 주식회사 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 커맨드 실행 제어 방법
US10014282B2 (en) * 2012-12-22 2018-07-03 Monolithic 3D Inc. 3D semiconductor device and structure
KR101481898B1 (ko) * 2013-06-25 2015-01-14 광운대학교 산학협력단 Ssd의 명령어 큐 스케줄링 장치 및 방법
SG11201507090PA (en) * 2013-08-19 2015-10-29 Toshiba Kk Memory system
US20150067291A1 (en) 2013-08-30 2015-03-05 Kabushiki Kaisha Toshiba Controller, memory system, and method
US9582211B2 (en) 2014-04-29 2017-02-28 Sandisk Technologies Llc Throttling command execution in non-volatile memory systems based on power usage
KR102229970B1 (ko) * 2014-06-27 2021-03-22 삼성전자주식회사 불휘발성 메모리, 랜덤 액세스 메모리 및 메모리 컨트롤러를 포함하는 솔리드 스테이트 드라이브
KR102259943B1 (ko) 2014-12-08 2021-06-04 삼성전자주식회사 멀티 플래인을 포함하는 불 휘발성 메모리 장치
US9626106B2 (en) 2015-01-13 2017-04-18 Sandisk Technologies Llc System and method for memory command queue management and configurable memory status checking
KR20160108052A (ko) 2015-03-06 2016-09-19 에스케이하이닉스 주식회사 반도체 소자
KR20160118836A (ko) * 2015-04-03 2016-10-12 에스케이하이닉스 주식회사 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법
US9679658B2 (en) 2015-06-26 2017-06-13 Intel Corporation Method and apparatus for reducing read latency for a block erasable non-volatile memory
US20170123666A1 (en) * 2015-10-30 2017-05-04 Sandisk Technologies Inc. System and method for managing maintenance scheduling in a non-volatile memory
US10120613B2 (en) * 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10254967B2 (en) * 2016-01-13 2019-04-09 Sandisk Technologies Llc Data path control for non-volatile memory
KR102516547B1 (ko) * 2018-03-08 2023-04-03 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160364345A1 (en) * 2015-06-12 2016-12-15 Apple Inc. Memory interface system

Also Published As

Publication number Publication date
US10790026B2 (en) 2020-09-29
KR20190079831A (ko) 2019-07-08
CN109976666A (zh) 2019-07-05
US20190206494A1 (en) 2019-07-04
CN109976666B (zh) 2023-09-29

Similar Documents

Publication Publication Date Title
KR102514772B1 (ko) 비동기적 동작 수행이 가능한 비휘발성 메모리 장치와 이를 포함하는 메모리 시스템, 그리고 이의 동작 수행 방법
US10877696B2 (en) Independent NAND memory operations by plane
CN108572933B (zh) 用于直接存储器存取的数据缓冲器指针找取
US10466903B2 (en) System and method for dynamic and adaptive interrupt coalescing
US10025522B2 (en) Memory interface command queue throttling
US7441070B2 (en) Method for accessing a non-volatile memory via a volatile memory interface
US11487666B2 (en) Timed data transfer between a host system and a memory sub-system
US11669272B2 (en) Predictive data transfer based on availability of media units in memory sub-systems
US20050055493A1 (en) [method for accessing large block flash memory]
US20110093659A1 (en) Data storage device and data storing method thereof
JP2011118469A (ja) メモリ管理装置およびメモリ管理方法
KR102526608B1 (ko) 전자 장치 및 그것의 동작 방법
US20080010419A1 (en) System and Method for Issuing Commands
US11782841B2 (en) Management of programming mode transitions to accommodate a constant size of data transfer between a host system and a memory sub-system
KR20190010335A (ko) 레이턴시 정보를 저장하는 저장 장치, 프로세서 및 컴퓨팅 시스템
KR20160098839A (ko) 메시지 전송 플로우 관리 방법 및 이를 적용하는 스토리지 디바이스
KR20230142795A (ko) Zns 디바이스들에서의 상이한 기입 우선순위화
US9507710B2 (en) Command execution using existing address information
US20080007569A1 (en) Control protocol and signaling in a new memory architecture
KR20210060253A (ko) 메모리 컨트롤러, 메모리 시스템 및 이의 동작 방법
US20180196768A1 (en) Semiconductor memory device with data buffering
CN109542336B (zh) 存储设备及其操作方法
US11256423B2 (en) Efficiently identifying command readiness based on system state and data spread in multi queue depth environment
US11782635B2 (en) Method to ensure message arrival before a message pointer

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