KR20210065455A - 메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법 - Google Patents

메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법 Download PDF

Info

Publication number
KR20210065455A
KR20210065455A KR1020190154216A KR20190154216A KR20210065455A KR 20210065455 A KR20210065455 A KR 20210065455A KR 1020190154216 A KR1020190154216 A KR 1020190154216A KR 20190154216 A KR20190154216 A KR 20190154216A KR 20210065455 A KR20210065455 A KR 20210065455A
Authority
KR
South Korea
Prior art keywords
memory
data
size
groups
group
Prior art date
Application number
KR1020190154216A
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 KR1020190154216A priority Critical patent/KR20210065455A/ko
Priority to US16/859,613 priority patent/US11275525B2/en
Priority to CN202010634077.XA priority patent/CN112860177A/zh
Publication of KR20210065455A publication Critical patent/KR20210065455A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0626Reducing size or complexity of storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0653Monitoring storage devices or systems
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

본 기술은 메모리 시스템에 포함된 다수의 메모리 장치에 대한 라이트 데이터의 효율적인 버퍼링 동작을 통해 라이트 성능을 향상시키는 장치 및 방법에 관한 것으로서, 다수의 메모리 장치와, 호스트로부터 입력된 라이트 데이터를 버퍼링하기 위한 버퍼메모리, 및 버퍼메모리에 버퍼링된 라이트 데이터를 대응하는 논리주소에 따라 N개의 데이터 그룹으로 분류하고, N개의 데이터 그룹 각각의 서로간 크기 차이가 설정된 크기 이상인 경우, N개의 데이터 그룹 각각의 크기를 균일화하기 위해 N개의 데이터 그룹 중 적어도 하나의 데이터 그룹을 선택하여 다수의 메모리 장치로 플러시(flush)시키는 컨트롤러를 포함한다.

Description

메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법{APPARATUS AND METHOD FOR IMPROVING WRITE THROUGHPUT OF MEMORY SYSTEM}
본 발명은 메모리 시스템에 관한 것으로서, 구체적으로 메모리 시스템에 포함된 다수의 메모리 장치에 대한 라이트 데이터의 효율적인 버퍼링 동작을 통해 라이트 성능을 향상시키는 장치 및 방법에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
비휘발성 메모리 장치를 이용한 데이터 저장 장치는 하드 디스크와 달리 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명의 실시 예들은, 메모리 시스템의 복잡도 및 성능 저하를 최소화하며, 메모리 장치의 사용 효율을 최대화하여, 메모리 장치로 데이터를 신속하게 안정적으로 처리할 수 있는 메모리 시스템, 데이터 처리 시스템, 및 그것의 동작 방법을 제공한다.
또한, 본 발명은 메모리 시스템에 포함된 다수의 메모리 장치에 대한 라이트 데이터의 효율적인 버퍼링 동작을 통해 메모리 시스템의 라이트 성능을 향상시킬 수 있는 장치 및 방법을 제공할 수 있다.
또한, 본 발명은 메모리 시스템에 포함된 다수의 메모리 장치 각각에 대응하여 독립적으로 버퍼링된 라이트 데이터 각각의 크기가 서로 설정된 크기 범위 이내의 차이를 유지하도록 라이트 데이터의 버퍼링 동작을 관리할 수 있는 장치 및 방법을 제공할 수 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예에 따른 메모리 시스템은, 다수의 메모리 장치; 호스트로부터 입력된 라이트 데이터를 버퍼링하기 위한 버퍼메모리; 및 상기 버퍼메모리에 버퍼링된 상기 라이트 데이터를 대응하는 논리주소에 따라 N개의 데이터 그룹으로 분류하고, 상기 N개의 데이터 그룹 각각의 서로간 크기 차이가 설정된 크기 이상인 경우, 상기 N개의 데이터 그룹 각각의 크기를 균일화하기 위해 상기 N개의 데이터 그룹 중 적어도 하나의 데이터 그룹을 선택하여 상기 다수의 메모리 장치로 플러시(flush)시키는 컨트롤러를 포함하며, N은 2이상의 자연수일 수 있다.
또한, 상기 컨트롤러는, 상기 N개의 데이터 그룹 중 가장 작은 크기를 갖는 데이터 그룹보다 상기 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하고, 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 상기 다수의 메모리 장치로 플러시시킬 수 있다.
또한, 상기 다수의 메모리 장치는, N개의 메모리 장치그룹으로 구분되며, 상기 컨트롤러는, 상기 N개의 메모리 장치그룹에 각각 대응하고, 상기 N개의 메모리 장치 그룹 각각의 동작을 독립적으로 제어하기 위한 N개의 서브 컨트롤러; 상기 버퍼메모리에 버퍼링된 상기 라이트 데이터의 논리주소를 확인하고, 상기 확인된 논리주소에 따라 상기 라이트 데이터를 상기 N개의 데이터 그룹으로 구분하여 상기 N개의 서브 컨트롤러에 각각 할당하는 할당부; 및 상기 N개의 데이터 그룹간의 크기 차이를 모니터링하기 위한 모니터링부를 포함할 수 있다.
또한, 상기 모니터링부는, 상기 N개의 데이터 그룹 각각의 크기를 확인하며, 확인결과 상기 N개의 데이터 그룹 중 가장 작은 크기를 갖는 데이터 그룹보다 상기 N개의 데이터 그룹 중 상기 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하고, 상기 N개의 서브 컨트롤러 중 상기 선택된 데이터 그룹이 할당된 서브 컨트롤러에 알림신호를 전송할 수 있다.
또한, 상기 N개의 서브 컨트롤러 각각은, 상기 알림신호를 수신하는 경우, 상기 N개의 데이터 그룹 중 할당된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 상기 N개의 메모리 장치그룹 중 대응하는 메모리 장치그룹으로 플러시시킬 수 있다.
또한, 상기 N개의 서브 컨트롤러 각각은, 상기 N개의 데이터 그룹 중 할당된 데이터 그룹의 크기가 임계 크기보다 작은 상태에서 상기 알림신호를 수신하는 경우, 상기 N개의 데이터 그룹 중 할당된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터에 더미(dummy)데이터를 결합시켜 상기 임계 크기만큼의 데이터를 상기 N개의 데이터 그룹 중 대응하는 장치그룹에 플러시시킬 수 있다.
또한, 상기 모니터링부는, 상기 N개의 데이터 그룹 각각이 상기 버퍼메모리에서 차지하는 점유율을 검출하고, 검출된 점유율 통해 상기 N개의 데이터 그룹 각각의 크기를 확인할 수 있다.
또한, 상기 할당부는, N개의 논리주소 범위를 설정한 뒤, 상기 버퍼메모리에 버퍼링된 상기 라이트 데이터에 대응하는 논리주소가 상기 N개의 논리주소 범위 중 어떤 범위에 포함되는지에 따라 상기 라이트 데이터를 상기 N개의 데이터 그룹으로 구분할 수 있다.
또한, 상기 N개의 데이터 그룹 각각에 포함된 데이터의 상기 버퍼메모리 내 물리적인 위치정보를 상기 N개의 데이터 그룹 각각에 대응하는 상기 N개의 서브 컨트롤러에 전달할 수 있다.
또한, 상기 컨트롤러는, 상기 선택된 데이터 그룹과 상기 가장 작은 크기를 갖는 데이터 그룹이 상기 설정된 크기 미만의 크기 차이를 가질 수 있도록 상기 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 선택하고, 선택된 데이터를 상기 다수의 메모리 장치로 플러시시킬 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 시스템의 동작방법은, 다수의 메모리 장치, 및 호스트로부터 입력된 라이트 데이터를 버퍼링하기 위한 버퍼메모리를 포함하는 메모리 시스템의 동작방법에 있어서, 상기 버퍼메모리에 버퍼링된 상기 라이트 데이터를 대응하는 논리주소에 따라 N개의 데이터 그룹으로 분류하는 단계; 상기 N개의 데이터 그룹 각각의 서로간 크기 차이가 설정된 크기 이상인 경우, 상기 N개의 데이터 그룹 각각의 크기를 균일화하기 위해 상기 N개의 데이터 그룹 중 적어도 하나의 데이터 그룹을 선택하여 상기 다수의 메모리 장치로 플러시(flush)시키는 제1플러시 단계를 포함하며, N은 2이상의 자연수일 수 있다.
또한, 상기 제1플러시 단계는, 상기 N개의 데이터 그룹 중 가장 작은 크기를 갖는 데이터 그룹보다 상기 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하는 단계; 및 상기 선택하는 단계에서 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 상기 다수의 메모리 장치로 플러시시키는 제2플러시 단계를 포함할 수 있다.
또한, 상기 선택하는 단계는, 상기 N개의 데이터 그룹 각각의 크기를 확인하는 단계; 및 상기 확인하는 단계의 결과 가장 작은 크기를 갖는 데이터 그룹보다 보다 상기 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하는 단계를 포함할 수 있다.
또한, 상기 확인하는 단계는, 상기 N개의 데이터 그룹 각각이 상기 버퍼메모리에서 차지하는 점유율을 검출하고, 검출된 점유율 통해 상기 N개의 데이터 그룹 각각의 크기를 확인할 수 있다.
또한, 상기 제2플러시 단계는, 상기 선택하는 단계에서 선택된 데이터 그룹의 크기가 임계 크기보다 작은 경우, 상기 선택하는 단계에서 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터에 더미(dummy)데이터를 결합시켜 상기 임계 크기만큼의 데이터를 상기 다수의 메모리 장치로 플러시시킬 수 있다.
또한, 상기 제2플러시 단계는, 상기 선택하는 단계에서 선택된 데이터 그룹과 상기 가장 작은 크기를 갖는 데이터 그룹이 상기 설정된 크기 미만의 크기 차이를 가질 수 있도록 상기 선택하는 단계에서 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 선택하고, 선택된 데이터를 상기 다수의 메모리 장치로 플러시시킬 수 있다.
또한, 상기 분류하는 단계는, N개의 논리주소 범위를 설정한 뒤, 상기 버퍼메모리에 버퍼링된 상기 라이트 데이터에 대응하는 논리주소가 상기 N개의 논리주소 범위 중 어떤 범위에 포함되는지에 따라 상기 라이트 데이터를 상기 N개의 데이터 그룹으로 구분할 수 있다.
본 발명에 따른 장치에 대한 효과에 대해 설명하면 다음과 같다.
본 발명의 실시 예들에 따른, 메모리 시스템, 및 그것의 동작 방법은 본 발명은 메모리 시스템에 포함된 다수의 메모리 장치 각각에 대응하여 독립적으로 버퍼링된 라이트 데이터 각각의 크기가 서로 설정된 크기 범위 이내의 차이를 유지하도록 라이트 데이터의 버퍼링 동작을 관리함으로써, 다수의 메모리 장치 각각에 대응하는 라이트 데이터의 버퍼링 공간을 예측 가능하게 계획적으로 운용할 수 있다.
이를 통해, 다수의 메모리 장치 각각에 대응하는 라이트 데이터의 버퍼링 공간 중 일부 버퍼링 공간에 대한 공간부족이 나머지 버퍼링 공간의 사용을 방해하는 것을 방지할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1a 내지 도 1j는 메모리 시스템에 포함된 다수의 메모리 장치에 대한 라이트 데이터의 버퍼링 동작을 설명한다.
도 2는 본 발명의 일 실시예에 따른 메모리 시스템을 설명한다.
도 3은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 설명한다.
도 4a 및 도 4b는 다수의 메모리 장치 각각에 대응하는 라이트 데이터에 대한 컨트롤러의 버퍼링 동작을 설명한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1a 내지 도 1j는 메모리 시스템에 포함된 다수의 메모리 장치에 대한 라이트 데이터의 버퍼링 동작을 설명한다.
예를 들어, 메모리 시스템(110)은 컴퓨팅 장치 또는 모바일 장치 등에 탑재된 후 호스트(102)와 연동하여 데이터를 송수신할 수 있다.
먼저, 도 1a를 참조하면, 메모리 시스템(110)은 컨트롤러(130)와 다수의 메모리 장치(MD<00, 01, 02, 03, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31, 32, 33>)를 포함할 수 있다. 컨트롤러(130)는 호스트(102)로부터 요구받은 데이터를 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에서 출력하거나, 호스트(102)로부터 전달된 데이터를 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에 저장할 수 있다. 또한, 컨트롤러(130)는, 호스트(102)의 데이터를 저장하거나 출력하는 동작을 관리하기 위해서 필요한 데이터를 내부에서 생성하여 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에 저장하거나 출력할 수 있다. 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>) 각각은, 데이터를 저장할 수 있는 다수의 셀을 포함하는 블록(미도시)을 다수개 포함할 수 있다. 여기서, 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>) 각각의 내부 구성은 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>) 각각의 특성, 메모리 시스템(110)이 사용되는 목적, 혹은 호스트(102)에서 요구하는 메모리 시스템(110)의 사양 등에 따라 설계 변경될 수 있다.
구체적으로, 컨트롤러(130)는, 버퍼 메모리(1306), 및 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)를 포함할 수 있다. 또한, 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)는, 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)으로 구분될 수 있다. 예컨대, 도면에서와 같이 4개의 메모리 장치(MD<00, 01, 02, 03> or MD<10, 11, 12, 13> or MD<20, 21, 22, 23> or MD<30, 31, 32, 33>)가 하나의 메모리 장치그룹(1500 or 1501 or 1502 or 1503)으로 그룹화될 수 있다.
또한, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각과 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각은 서로 대응되는 형태가 될 수 있다. 또한, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각은, 스스로에게 대응하는 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각에 대한 동작, 예컨대, 리드/라이트/이레이즈 등의 동작을 독립적으로 제어할 수 있다.
예컨대, 첫 번째 서브 컨트롤러(FCPU0, 1340)는, 첫 번째 메모리 장치그룹(1500)과 대응하여 첫 번째 메모리 장치그룹(1500)에 포함된 다수의 메모리 장치(MD<00, 01, 02, 03>) 각각에 대한 동작을 제어할 수 있다. 또한, 두 번째 서브 컨트롤러(FCPU1, 1341)는, 두 번째 메모리 장치그룹(1501)과 대응하여 두 번째 메모리 장치그룹(1501)에 포함된 다수의 메모리 장치(MD<10, 11, 12, 13>) 각각에 대한 동작을 제어할 수 있다. 또한, 세 번째 서브 컨트롤러(FCPU2, 1342)는, 세 번째 메모리 장치그룹(1502)과 대응하여 세 번째 메모리 장치그룹(1502)에 포함된 다수의 메모리 장치(MD<20, 21, 22, 23>) 각각에 대한 동작을 제어할 수 있다. 또한, 네 번째 서브 컨트롤러(FCPU3, 1343)는, 네 번째 메모리 장치그룹(1503)과 대응하여 네 번째 메모리 장치그룹(1503)에 포함된 다수의 메모리 장치(MD<30, 31, 32, 33>) 각각에 대한 동작을 제어할 수 있다.
그리고, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각과 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각은 다수의 데이터 경로를 통해 연결될 수 있다. 예를 들면, 도 1j에 도시된 것과 같이 첫 번째 메모리 장치그룹(1500)에 포함된 다수의 메모리 장치(MD<00, 01, 02, 03>)는 서로 다른 경로를 통해 첫 번째 서브 컨트롤러(1340)와 연결될 수 있다. 이때, 다수의 메모리 장치(MD<00, 01, 02, 03>) 중 첫 번째 메모리 장치(MD00)와 첫 번째 서브 컨트롤러(1340)는 제1 채널(CH1) 및 제1 웨이(W1)를 통해 연결되고, 두 번째 메모리 장치(MD01)와 첫 번째 서브 컨트롤러(1340)는 제1 채널(CH1) 및 제2 웨이(W2)를 통해 연결되며, 세 번째 메모리 장치(MD02)와 첫 번째 서브 컨트롤러(1340)는 제2 채널(CH2) 및 제1 웨이(W1)를 통해 연결되고, 네 번째 메모리 장치(MD03)와 첫 번째 서브 컨트롤러(1340)는 제2 채널(CH2) 및 제2 웨이(W2)를 통해 연결될 수 있다. 이와 같은 형태로 두 번째 내지 네 번째 메모리 장치그룹(1501, 1502, 1503)각각과 두 번째 내지 네 번째 서브 컨트롤러 각각이 다수의 데이터 경로를 통해 연결될 수 있다. 한편, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각과 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각을 연결하는 채널과 웨이의 수는 메모리 시스템(110)이 사용되는 목적, 혹은 호스트(102)에서 요구하는 메모리 시스템(110)의 사양 등에 따라 설계 변경될 수 있다.
그리고, 버퍼 메모리(1306)는, 호스트(102)와 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 사이에서 입/출력되는 커맨드 및 데이터를 버퍼링할 수 있다. 구체적으로, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)가 호스트(102)로부터의 요청에 응답하여 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)을 제어하는 과정 중 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)으로부터 리드된 데이터를 호스트(102)로 제공하기 전 임시 저장할 수 있다. 또한, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)는 호스트(102)로부터 제공된 데이터를 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)에 저장하기 전, 버퍼 메모리(1306)에 임시 저장할 수 있다. 또한, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)에서 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)의 리드, 라이트, 이레이즈 등의 동작을 제어하기 위해 생성되는 데이터가 버퍼 메모리(1306)에 저장될 수 있다.
특히, 버퍼 메모리(1306)는, 호스트(102)로부터 입력된 라이트 데이터를 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)에 라이트하기 전 버퍼링하기 위해 사용할 수 있다.
구체적으로, 호스트(102)로부터 입력된 다수의 라이트 데이터는 버퍼 메모리(1306)의 호스트 버퍼 영역(HOST BUFFER)에 입력 순서대로 버퍼링될 수 있다. 호스트 버퍼 영역(HOST BUFFER)에 버퍼링된 다수의 라이트 데이터는, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각에 대응하는 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)으로 분할되어 버퍼링될 수 있다. 이때, 호스트 버퍼 영역(HOST BUFFER)에 버퍼링된 다수의 라이트 데이터는 대응하는 논리주소에 따라 다수의 데이터 그룹으로 구분될 수 있다. 또한, 다수의 데이터 그룹 각각은 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 할당될 수 있다. 예컨대, 호스트 버퍼 영역(HOST BUFFER)에 버퍼링된 다수의 라이트 데이터 중 대응하는 논리주소 값이 0에서 100사이 값을 갖는 경우 제1 데이터 그룹으로 구분하고, 대응하는 논리주소 값이 101에서 200사이 값을 갖는 경우 제2 데이터 그룹으로 구분하며, 201에서 300사이 값을 갖는 경우 제3 데이터 그룹으로 구분하고, 301에서 400사이 값을 갖는 경우 제4 데이터 그룹으로 구분할 수 있다. 또한, 제1 데이터 그룹에 포함된 라이트 데이터는 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 할당되고, 제2 데이터 그룹에 포함된 라이트 데이터는 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 할당되며, 제3 데이터 그룹에 포함된 라이트 데이터는 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 할당되고, 제4 데이터 그룹에 포함된 라이트 데이터는 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 할당될 수 있다.
참고로, 도면에서 호스트 버퍼영역(HOST BUFFER) 내부에 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)이 포함된 것처럼 도시된 이유는, 호스트 버퍼영역(HOST BUFFER)에 버퍼링된 라이트 데이터와 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 할당되어 버퍼링된 라이트 데이터가 물리적으로는 동일한 데이터이기 때문이다. 즉, 전술한 설명과 같이 호스트 버퍼영역(HOST BUFFER)에 버퍼링된 라이트 데이터가 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 할당되는 동작이 논리적으로는 마치 데이터의 이동이 이뤄지는 것처럼 보이지만, 실제로는 버퍼 메모리(1306)에 라이트 데이터가 한번 버퍼링된 후 물리적인 데이터의 이동없이 호스트 버퍼영역(HOST BUFFER)에 버퍼링된 것으로 관리되다가 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 할당되어 관리되는 것이기 때문이다.
그리고, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)는, 대응하는 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링된 라이트 데이터를 대응하는 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각에 프로그램할 수 있다. 이때, 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)는, 비휘발성 메모리 장치이며, 페이지(page) 단위로 데이터를 입/출력하는 것이 일반적인 방식일 수 있다. 따라서, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각은, 대응하는 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 할당된 라이트 데이터를 미리 정의된 임계 크기 단위, 예컨대, 페이지 크기 단위로 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각에 프로그램하는 것이 일반적인 방식일 수 있다. 즉, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각은, 대응하는 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링된 다수의 데이터 그룹 각각의 크기가 임계 크기보다 작은 경우, 다른 데이터가 추가적으로 더 버퍼링되어 다수의 데이터 그룹 각각의 크기가 임계 크기를 넘어선 후, 임계 크기만큼씩 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각에 프로그램하는 것이 일반적인 방식일 수 있다.
전술한 것과 같이 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)에서 일반적인 방식으로 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)을 관리하는 경우, 다음과 같은 문제가 발생할 수 있다.
도 1b를 참조하면, 호스트(102)로부터 임계 크기보다 작은 크기를 갖는 라이트 데이터가 랜덤(random)하게 입력되어, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링되는 경우를 알 수 있다. 특히, 라이트 데이터의 논리주소에 따라 버퍼링되는 메모리 버퍼 영역이 결정되기 때문에, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링되는 라이트 데이터의 크기는 서로 큰 편차를 가질 수 있다. 예컨대, 도면에 도시된 것과 같이 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에 총 16개의 라이트 데이터가 버퍼링된 상태(Occupied)일 수 있다. 그 중 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에는 7개의 라이트 데이터가 버퍼링되고, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에는 3개의 라이트 데이터가 버퍼링되며, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에는 1개의 라이트 데이터가 버퍼링되고, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에는 5개의 라이트 데이터가 버퍼링된 상태 일 수 있다. 따라서, 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에는 17개의 라이트 데이터를 더 버퍼링할 수 있는 빈공간(Empty)이 있고, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에는 21개의 라이트 데이터를 더 버퍼링할 수 있는 빈공간이 있으며, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에는 23개의 라이트 데이터를 더 버퍼링할 수 있는 빈공간이 있고, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에는 19개의 라이트 데이터를 더 버퍼링할 수 있는 빈공간이 있는 상태일 수 있다.
이렇게, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링된 라이트 데이터의 크기는 서로 큰 편차를 갖는 상태일 수 있다. 한편, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)는, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링된 라이트 데이터가 임계 크기를 가질 때까지 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)에 프로그램하지 않는 것이 일반적인 방식일 수 있다. 예컨대, 도면에서와 같이 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)는, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링된 라이트 데이터의 개수가 임계 크기인 12개가 될 때, 해당 메모리 버퍼 영역을 플러시(Flush)하여 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)에 프로그램할 수 있다.
도 1c를 참조하면, 전술한 도 1b와 같은 상태에서 호스트(102)로부터 임계 크기보다 큰 크기를 갖는 라이트 데이터가 시리얼(serial)하게 입력되어, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 균일하게 버퍼링되는 경우를 알 수 있다. 즉, 전술한 1b와 같이 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링된 라이트 데이터의 크기가 서로 큰 편차를 갖는 상태에서 호스트(102)로부터 임계 크기보다 큰 크기를 갖는 라이트 데이터가 시리얼(serial)하게 입력되어 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 균일하게 버퍼링되는 경우가 도 1c에 도시된다.구체적으로 예를 들어 설명하면, 도면과 같이 호스트(102)로부터 68개의 라이트 데이터가 시리얼(serial)하게 입력되어, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 17개씩 균일하게 버퍼링될 수 있다. 따라서, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에는, 전술한 도 1b에서 이미 버퍼링된 16개의 라이트 데이터에 추가로 68개의 라이트 데이터가 버퍼링된 상태이므로, 총 84개의 라이트 데이터가 버퍼링된 상태일 수 있다. 그 중 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에는 24개의 라이트 데이터가 버퍼링되고, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에는 20개의 라이트 데이터가 버퍼링되며, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에는 18개의 라이트 데이터가 버퍼링되고, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에는 22개의 라이트 데이터가 버퍼링된 상태 일 수 있다.
이렇게, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링된 라이트 데이터의 크기는 모두 임계 크기인 12개보다 큰 상태가 될 수 있다.
특히, 도 1b에서 가장 많은 7개의 라이트 데이터가 버퍼링되어 있던 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)의 경우, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 5번째 라이트 데이터(5)가 버퍼링되는 시점에서 첫 번째로 임계 크기인 12개의 라이트 데이터가 버퍼링될 수 있으며, 그에 따라, 첫 번째 서브 컨트롤러(1340)가 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 대한 플러시(flush) 동작(F0/FLUSH0)을 첫 번째로 수행할 수 있다. 즉, 첫 번째 서브 컨트롤러(1340)가 가장 먼저 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에서 임계 크기의 라이트 데이터를 첫 번째 메모리 장치그룹(1500)에 프로그램하는 동작을 수행할 것이다.
이어서, 도 1b에서 두 번째 많은 5개의 라이트 데이터가 버퍼링되어 있던 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)의 경우, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 7번째 라이트 데이터(7)가 버퍼링되는 시점에서 두 번째로 임계 크기의 라이트 데이터가 버퍼링될 수 있으며, 그에 따라, 네 번째 서브 컨트롤러(1343)가 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 대한 플러시 동작(F3/FLUSH0)을 두 번째로 수행할 수 있다. 즉, 네 번째 서브 컨트롤러(1343)가 두 번째로 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에서 임계 크기의 라이트 데이터를 네 번째 메모리 장치그룹(1503)에 프로그램하는 동작을 수행할 것이다.
이어서, 도 1b에서 세 번째 많은 3개의 라이트 데이터가 버퍼링되어 있던 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)의 경우, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 9번째 라이트 데이터(9)가 버퍼링되는 시점에서 세 번째로 임계 크기의 라이트 데이터가 버퍼링될 수 있으며, 그에 따라, 두 번째 서브 컨트롤러(1341)가 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 대한 플러시 동작(F1/FLUSH0)을 세 번째로 수행할 수 있다. 즉, 두 번째 서브 컨트롤러(1341)가 세 번째로 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에서 임계 크기의 라이트 데이터를 두 번째 메모리 장치그룹(1501)에 프로그램하는 동작을 수행할 것이다.
이어서, 도 1b에서 네 번째 많은 1개의 라이트 데이터가 버퍼링되어 있던 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)의 경우, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 11번째 라이트 데이터(11)가 버퍼링되는 시점에서 네 번째로 임계 크기의 라이트 데이터가 버퍼링될 수 있으며, 그에 따라, 세 번째 서브 컨트롤러(1342)가 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 대한 플러시 동작(F2/FLUSH0)을 네 번째로 수행할 수 있다. 즉, 세 번째 서브 컨트롤러(1342)가 네 번째로 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에서 임계 크기의 라이트 데이터를 세 번째 메모리 장치그룹(1502)에 프로그램하는 동작을 수행할 것이다.
이렇게, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 대한 플러시 동작(F0, F1, F2, F3 / FLUSH0)이 수행되는 것과는 별개로, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에는 빈공간이 남아있기 때문에,라이트 데이터가 호스트(102)로부터 계속 입력되어 호스트 버퍼 영역(HOST BUFFER)에 버퍼링된 후, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각으로 할당될 수 있다.
따라서, 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)의 경우, 전술한 첫 번째 플러시 동작(F0/FLUSH0)의 수행과는 별개로 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 17번째 라이트 데이터(17)가 버퍼링되는 시점에서, 다시 한 번 임계 크기인 12개의 라이트 데이터가 버퍼링될 수 있다. 그에 따라, 첫 번째 서브 컨트롤러(1340)는 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 대한 두 번째 플러시 동작(F0/FLUSH1)을 다섯 번째로 수행할 수 있다. 즉, 첫 번째 서브 컨트롤러(1340)는 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에서 첫 번째 임계 크기인 12개의 라이트 데이터를 첫 번째 메모리 장치그룹(1500)에 프로그램하는 동작에 이어서 두 번째 임계 크기인 12개의 라이트 데이터를 첫 번째 메모리 장치그룹(1500)에 프로그램하는 동작을 수행할 것이다.
한편, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에서 수행되는 플러시 동작은, 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각에 대한 프로그램 동작을 의미하므로 라이트 데이터를 버퍼링하는 동작보다는 상대적으로 오랜 시간이 걸릴 수 있다. 즉, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 라이트 데이터가 할당되는 속도가 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에서 수행되는 플러시 동작의 속도보다 상대적으로 더 빠를 수 있다.
따라서, 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에서 두 번째 플러시 동작(F0, FLUSH1)이 시작되는 시점까지도 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 대한 첫 번째 플러시 동작(F0, FLUSH0)이 완료되지 않은 상태일 수 있다. 즉, 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 대한 첫 번째 플러시 동작(F0, FLUSH0)이 완료될 때까지 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에는 더 이상 라이트 데이터를 버퍼링할 수 있는 공간이 존재하지 않을 수 있다. 이렇게, 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 라이트 데이터를 버퍼링할 수 있는 공간이 존재하지 않는 상태가 되면, 나머지 두 번째 내지 네 번째 메모리 버퍼 영역(MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 대한 라이트 데이터의 버퍼링 동작도 중단될 수 있다.
다시 말하면, 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 대한 첫 번째 플러시 동작(F0, FLUSH0)이 완료되어 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 빈공간이 생길 때까지, 두 번째 내지 네 번째 메모리 버퍼 영역(MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에 라이트 데이터를 버퍼링하는 동작은 중단될 수 있다. 예컨대, 도면에서와 같이 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 대한 첫 번째 플러시 동작(F0, FLUSH0)이 완료되어 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 빈공간이 생길 때까지, 두 번째 내지 네 번째 메모리 버퍼 영역(MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에는 17번째 라이트 데이터(17)가 버퍼링된 상태를 유지할 수 있다.
도 1d를 참조하면, 전술한 도 1c와 같은 상태에서 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 대한 첫 번째 플러시 동작(F0, FLUSH0)이 완료되어 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 빈공간이 생긴 후, 다시 호스트(102)로부터 라이트 데이터를 버퍼링 받는 경우를 알 수 있다.
구체적으로, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)의 경우, 전술한 두 번째 플러시 동작(F3, FLUSH0)과는 별개로 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 19번째 라이트 데이터(19)가 버퍼링되는 시점에서, 다시 한 번 임계 크기인 12개의 라이트 데이터가 버퍼링될 수 있다. 그에 따라, 네 번째 서브 컨트롤러(1343)는 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 대한 두 번째 플러시 동작(F3/FLUSH1)을 여섯 번째로 수행할 수 있다. 즉, 네 번째 서브 컨트롤러(1343)는 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에서 첫 번째 임계 크기인 12개의 라이트 데이터를 네 번째 메모리 장치그룹(1503)에 프로그램하는 동작에 이어서 두 번째 임계 크기인 12개의 라이트 데이터를 네 번째 메모리 장치그룹(1503)에 프로그램하는 동작을 수행할 것이다.
이때, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에서 두 번째 플러시 동작(F3, FLUSH1)이 시작된 시점까지도 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 대한 첫 번째 플러시 동작(F3, FLUSH0)이 완료되지 않은 상태일 수 있다. 즉, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 대한 첫 번째 플러시 동작(F3, FLUSH0)이 완료될 때까지 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에는 더 이상 라이트 데이터를 버퍼링할 수 있는 공간이 존재하지 않을 수 있다. 이렇게, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 라이트 데이터를 버퍼링할 수 있는 공간이 존재하지 않는 상태가 되면, 나머지 첫 번째 내지 세 번째 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2) 각각에 대한 라이트 데이터의 버퍼링 동작도 중단될 수 있다.
다시 말하면, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 대한 첫 번째 플러시 동작(F3, FLUSH0)이 완료되어 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 빈공간이 생길 때까지, 첫 번째 내지 세 번째 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2)에 라이트 데이터를 버퍼링하는 동작은 중단될 수 있다. 예컨대, 도면에서와 같이 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 대한 첫 번째 플러시 동작(F3, FLUSH0)이 완료되어 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 빈공간이 생길 때까지, 첫 번째 내지 세 번째 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2) 각각에는 19번째 라이트 데이터(19)가 버퍼링된 상태를 유지할 수 있다.
한편, 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 대한 첫 번째 플러시 동작(F0, FLUSH0)이 완료되었음에도 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 버퍼링된 라이트 데이터 중 일부 데이터(1,2,3,4,5)가 해제되지 않을(Unreleased) 수 있다. 이는, 두 번째 내지 네 번째 메모리 버퍼 영역(MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 대한 플러시 동작(F1, F2, F3/FLUSH0)이 완료되지 않은 상태이기 때문이다. 즉, 호스트(102)로부터 시리얼하게 입력된 라이트 데이터의 경우, 서로 연관된 데이터일 가능성이 높기 때문에 프로그램 동작의 신뢰성을 위해서 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에 균일하게 버퍼링해야 할 뿐만 아니라, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에서 균일하게 해제해야 하기 때문이다.
도 1e를 참조하면, 전술한 도 1d와 같은 상태에서 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 대한 첫 번째 플러시 동작(F3, FLUSH0)이 완료되어 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 빈공간이 생긴 후, 다시 호스트(102)로부터 라이트 데이터를 버퍼링 받는 경우를 알 수 있다.
구체적으로, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)의 경우, 전술한 세 번째 플러시 동작(F1, FLUSH0)과는 별개로 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 21번째 라이트 데이터(21)가 버퍼링되는 시점에서, 다시 한 번 임계 크기인 12개의 라이트 데이터가 버퍼링될 수 있다. 그에 따라, 두 번째 서브 컨트롤러(1341)는 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 대한 두 번째 플러시 동작(F1/FLUSH1)을 일곱 번째로 수행할 수 있다. 즉, 두 번째 서브 컨트롤러(1341)는 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에서 첫 번째 임계 크기인 12개의 라이트 데이터를 두 번째 메모리 장치그룹(1501)에 프로그램하는 동작에 이어서 두 번째 임계 크기인 12개의 라이트 데이터를 두 번째 메모리 장치그룹(1501)에 프로그램하는 동작을 수행할 것이다.
이때, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에서 두 번째 플러시 동작(F1, FLUSH1)이 시작된 시점까지도 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 대한 첫 번째 플러시 동작(F1, FLUSH0)이 완료되지 않은 상태일 수 있다. 즉, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 대한 첫 번째 플러시 동작(F1, FLUSH0)이 완료될 때까지 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에는 더 이상 라이트 데이터를 버퍼링할 수 있는 공간이 존재하지 않을 수 있다. 이렇게, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 라이트 데이터를 버퍼링할 수 있는 공간이 존재하지 않는 상태가 되면, 나머지 첫 번째와 세 번째 및 네 번째 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 대한 라이트 데이터의 버퍼링 동작도 중단될 수 있다.
다시 말하면, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 대한 첫 번째 플러시 동작(F1, FLUSH0)이 완료되어 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 빈공간이 생길 때까지, 첫 번째와 세 번째 및 네 번째 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER2, MEMORY BUFFER3)에 라이트 데이터를 버퍼링하는 동작은 중단될 수 있다. 예컨대, 도면에서와 같이 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 대한 첫 번째 플러시 동작(F1, FLUSH0)이 완료되어 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 빈공간이 생길 때까지, 첫 번째와 세 번째 및 네 번째 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER2, MEMORY BUFFER3) 각각에는 21번째 라이트 데이터(21)가 버퍼링된 상태를 유지할 수 있다.
한편, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 대한 첫 번째 플러시 동작(F3, FLUSH0)이 완료되었음에도 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 버퍼링된 라이트 데이터 중 일부 데이터(1,2,3,4,5,6,7)가 해제되지 않을(Unreleased) 수 있다. 이는, 두 번째 및 세 번째 메모리 버퍼 영역(MEMORY BUFFER1, MEMORY BUFFER2) 각각에 대한 플러시 동작(F1, F2/FLUSH0)이 완료되지 않은 상태이기 때문이다. 즉, 호스트(102)로부터 시리얼하게 입력된 라이트 데이터의 경우, 서로 연관된 데이터일 가능성이 높기 때문에 프로그램 동작의 신뢰성을 위해서 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에 균일하게 버퍼링해야 할 뿐만 아니라, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에서 균일하게 해제해야 하기 때문이다.
도 1f를 참조하면, 전술한 도 1e와 같은 상태에서 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 대한 첫 번째 플러시 동작(F1, FLUSH0)이 완료되어 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 빈공간이 생긴 후, 다시 호스트(102)로부터 라이트 데이터를 버퍼링 받는 경우를 알 수 있다.
구체적으로, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)의 경우, 전술한 네 번째 플러시 동작(F2, FLUSH0)과는 별개로 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 23번째 라이트 데이터(23)가 버퍼링되는 시점에서, 다시 한 번 임계 크기인 12개의 라이트 데이터가 버퍼링될 수 있다. 그에 따라, 세 번째 서브 컨트롤러(1342)는 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 대한 두 번째 플러시 동작(F2/FLUSH1)을 일곱 번째로 수행할 수 있다. 즉, 세 번째 서브 컨트롤러(1342)는 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에서 첫 번째 임계 크기인 12개의 라이트 데이터를 세 번째 메모리 장치그룹(1502)에 프로그램하는 동작에 이어서 두 번째 임계 크기인 12개의 라이트 데이터를 세 번째 메모리 장치그룹(1502)에 프로그램하는 동작을 수행할 것이다.
이때, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에서 두 번째 플러시 동작(F2, FLUSH1)이 시작된 시점까지도 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 대한 첫 번째 플러시 동작(F2, FLUSH0)이 완료되지 않은 상태일 수 있다. 즉, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 대한 첫 번째 플러시 동작(F2, FLUSH0)이 완료될 때까지 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에는 더 이상 라이트 데이터를 버퍼링할 수 있는 공간이 존재하지 않을 수 있다. 이렇게, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 라이트 데이터를 버퍼링할 수 있는 공간이 존재하지 않는 상태가 되면, 나머지 첫 번째와 두 번째 및 네 번째 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER3) 각각에 대한 라이트 데이터의 버퍼링 동작도 중단될 수 있다.
다시 말하면, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 대한 첫 번째 플러시 동작(F2, FLUSH0)이 완료되어 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 빈공간이 생길 때까지, 첫 번째와 두 번째 및 네 번째 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER3)에 라이트 데이터를 버퍼링하는 동작은 중단될 수 있다. 예컨대, 도면에서와 같이 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 대한 첫 번째 플러시 동작(F2, FLUSH0)이 완료되어 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 빈공간이 생길 때까지, 첫 번째와 두 번째 및 네 번째 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER3) 각각에는 23번째 라이트 데이터(23)가 버퍼링된 상태를 유지할 수 있다.
한편, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 대한 첫 번째 플러시 동작(F1, FLUSH0)이 완료되었음에도 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 버퍼링된 라이트 데이터 중 일부 데이터(1,2,3,4,5,6,7,8,9)가 해제되지 않을(Unreleased) 수 있다. 이는, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 대한 플러시 동작(F2/FLUSH0)이 완료되지 않은 상태이기 때문이다. 즉, 호스트(102)로부터 시리얼하게 입력된 라이트 데이터의 경우, 서로 연관된 데이터일 가능성이 높기 때문에 프로그램 동작의 신뢰성을 위해서 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에 균일하게 버퍼링해야 할 뿐만 아니라, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에서 균일하게 해제해야 하기 때문이다.
도 1g를 참조하면, 전술한 도 1f와 같은 상태에서 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 대한 첫 번째 플러시 동작(F2, FLUSH0)이 완료되어 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 빈공간이 생긴 후, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에서 해제되지 않은(Unreleased) 일부 데이터(1,2,3,4,5)를 해제(Released)하는 경우를 알 수 있다.
구체적으로, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 대한 첫 번째 플러시 동작(F2, FLUSH0)이 완료되어 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 대한 첫 번째 플러시 동작(F0, F1, F2, F3/FLUSH0)이 모두 완료된 상태가 될 수 있다. 그에 따라, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에서 이미 플러시가 완료되고 서로 겹쳐지는 일부 데이터(1,2,3,4,5)를 해제(Released)할 수 있다.
이때, 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)의 경우, 내부에 버퍼링된 라이트 데이터 중 아직 플러시 되지 않은 데이터(18,19,20,21,22,23)을 제외한 나머지 모든 데이터(1,2,3,4,5)가 해제될 수 있다. 반면, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 버퍼링된 라이트 데이터 중 일부 데이터(6,7,8,9)와, 세 번째 메모리 버퍼영역(MEMORY BUFFER2)에 버퍼링된 라이트 데이터 중 일부 데이터(6,7,8,9,10,11), 및 네 번째 메모리 버퍼영역(MEMORY BUFFER3)에 버퍼링된 라이트 데이터 중 일부 데이터(6,7)는, 이미 플러시가 완료된 상태임에도 불구하고 해제되지 않을(Unreleased) 수 있다. 즉, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에서 이미 플러시가 완료되었어도 서로 겹쳐지지 않는 데이터(6,7,8,9,10,11)는 해제할 수 없기 때문이다.
이렇게, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에서 이미 플러시가 완료되었어도 해제되지 못하는 데이터가 존재하기 때문에, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각은 새로운 데이터를 버퍼링할 수 있는 공간이 서로 다른 상태(unbalance)가 될 수 있다.
도 1h를 참조하면, 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)의 경우, 플러시 완료된 모든 데이터가 해제되었으므로, 12개의 데이터를 새롭게 버퍼링할 수 있다. 반면, 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)의 경우, 플러시 완료된 데이터 중 4개의 데이터가 해제되지 못하였으므로, 8개의 데이터를 새롭게 버퍼링할 수 있다. 마찬가지로, 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)의 경우, 플러시 완료된 데이터 중 6개의 데이터가 해제되지 못하였으므로, 6개의 데이터를 새롭게 버퍼링할 수 있다. 또한, 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)의 경우, 플러시 완료된 데이터 중 2개의 데이터가 해제되지 못하였으므로, 10개의 데이터를 새롭게 버퍼링할 수 있다.
이렇게, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에서 새로운 데이터를 버퍼링할 수 있는 공간이 서로 다른 상태(unbalance)가 되었기 때문에, 전술한 도 1c 내지 도 1f에서와 같이 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 대해 플러시 동작이 수행되는 시점이 서로 시간차를 가질 수 있으며, 그로 인해 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 중 일부 메모리 버퍼 영역의 경우 빈공간이 남아 있음에도 라이트 데이터를 버퍼링하지 못하고 기다려야 하는 문제가 있을 수 있다.
도 1b 내지 도 1h를 통해 설명된 것과 같이, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)에서 일반적인 방식으로 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)을 관리하는 경우, 임계 크기보다 작은 크기를 갖는 라이트 데이터와 임계 크기보다 큰 크기를 갖는 라이트 데이터가 섞여서 입력될 때, 임계 크기보다 작은 크기를 갖는 라이트 데이터가 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에 불균형적으로 버퍼링되는 것으로 인해, 임계 크기보다 큰 크기를 갖는 라이트 데이터에 대한 버퍼링 동작이 지연될 수 있다.
참고로, 도 1i에 도시된 것과 같이 일반적인 메모리 시스템의 경우, 임계 크기보다 작은 크기를 갖는 라이트 데이터가 랜덤하게 입력되는 비율이 17%이고, 임계 크기보다 큰 크기를 갖는 라이트 데이터가 시리얼하게 입력되는 비율이 83%인 것을 알 수 있다. 즉, 임계 크기보다 작은 크기를 갖는 라이트 데이터가 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에 불균형적으로 버퍼링되는 것으로 인해, 임계 크기보다 큰 크기를 갖는 라이트 데이터에 대한 버퍼링 동작이 지연되는 경우, 메모리 시스템(110) 전체의 성능을 하락시키는 원인이 될 수 있다.
도 2는 본 발명의 일 실시예에 따른 메모리 시스템을 설명한다.
도 2를 참조하면, 본 발명의 실시예에 따른 메모리 시스템(110)은, 컨트롤러(130)와 다수의 메모리 장치(MD<00, 01, 02, 03, 10, 11, 12, 13, 20, 21, 22, 23, 30, 31, 32, 33>)를 포함할 수 있다. 컨트롤러(130)는 호스트(102)로부터 요구받은 데이터를 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에서 출력하거나, 호스트(102)로부터 전달된 데이터를 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에 저장할 수 있다. 또한, 컨트롤러(130)는, 호스트(102)의 데이터를 저장하거나 출력하는 동작을 관리하기 위해서 필요한 데이터를 내부에서 생성하여 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에 저장하거나 출력할 수 있다. 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>) 각각은, 데이터를 저장할 수 있는 다수의 셀을 포함하는 블록(미도시)을 다수개 포함할 수 있다. 여기서, 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>) 각각의 내부 구성은 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>) 각각의 특성, 메모리 시스템(110)이 사용되는 목적, 혹은 호스트(102)에서 요구하는 메모리 시스템(110)의 사양 등에 따라 설계 변경될 수 있다.
구체적으로, 컨트롤러(130)는, 호스트(102)로부터 입력된 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7)를 버퍼링하기 위한 버퍼 메모리(1306)를 더 포함할 수 있다. 참고로, 버퍼 메모리(1306)는, 도면에서와 같이 컨트롤러(130) 내부에 포함될 수도 있고, 도면과 다르게 컨트롤러(130)와 구분되는 형태로 메모리 시스템(110)에 포함될 수도 있다.
컨트롤러(130)는, 버퍼 메모리(1306)에 버퍼링된 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7)를 대응하는 논리주소(LA0, LA1, LA2, LA3, LA4, LA5, LA6, LA7)에 따라 다수의 데이터 그룹으로 분류할 수 있다. 또한, 컨트롤러(130)는, 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹간의 크기 차이가 설정된 크기 차이를 넘어서는 경우, 다수의 데이터 그룹 중 적어도 하나의 데이터 그룹을 선택하여 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에 강제로 플러시(flush)시킬 수 있다. 즉, 컨트롤러(130)는, 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹간의 크기 차이가 설정된 크기 차이 이내를 유지할 수 있도록 버퍼 메모리(1306)를 관리할 수 있다. 이를 위해, 컨트롤러(130)는, 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹 중 가장 작은 크기를 갖는 데이터 그룹보다 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하고, 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에 강제로 플러시시킬 수 있다. 이때, 컨트롤러(130)는, 선택된 데이터 그룹과 가장 작은 데이터 그룹이 설정된 크기 미만의 크기 차이를 가질 수 있도록 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 선택하고, 선택된 데이터를 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에 강제로 플러시시킬 수 있다.
좀 더 구체적으로, 컨트롤러(130)는, 버퍼 메모리(1306)와, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)와, 할당부(1302), 및 모니터링부(1304)를 포함할 수 있다. 또한, 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)는, 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)으로 구분될 수 있다. 예컨대, 도면에서와 같이 4개의 메모리 장치(MD<00, 01, 02, 03> or MD<10, 11, 12, 13> or MD<20, 21, 22, 23> or MD<30, 31, 32, 33>)가 하나의 메모리 장치그룹(1500 or 1501 or 1502 or 1503)으로 그룹화될 수 있다.
또한, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각과 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각은 서로 대응되는 형태가 될 수 있다. 또한, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각은, 스스로에게 대응하는 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각에 대한 동작, 예컨대, 리드/라이트/이레이즈 등의 동작을 독립적으로 제어할 수 있다.
예컨대, 첫 번째 서브 컨트롤러(FCPU0, 1340)는, 첫 번째 메모리 장치그룹(1500)과 대응하여 첫 번째 메모리 장치그룹(1500)에 포함된 다수의 메모리 장치(MD<00, 01, 02, 03>) 각각에 대한 동작을 제어할 수 있다. 또한, 두 번째 서브 컨트롤러(FCPU1, 1341)는, 두 번째 메모리 장치그룹(1501)과 대응하여 두 번째 메모리 장치그룹(1501)에 포함된 다수의 메모리 장치(MD<10, 11, 12, 13>) 각각에 대한 동작을 제어할 수 있다. 또한, 세 번째 서브 컨트롤러(FCPU2, 1342)는, 세 번째 메모리 장치그룹(1502)과 대응하여 세 번째 메모리 장치그룹(1502)에 포함된 다수의 메모리 장치(MD<20, 21, 22, 23>) 각각에 대한 동작을 제어할 수 있다. 또한, 네 번째 서브 컨트롤러(FCPU3, 1343)는, 네 번째 메모리 장치그룹(1503)과 대응하여 네 번째 메모리 장치그룹(1503)에 포함된 다수의 메모리 장치(MD<30, 31, 32, 33>) 각각에 대한 동작을 제어할 수 있다.
그리고, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각과 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각은 다수의 데이터 경로를 통해 연결될 수 있다. 예를 들면, 도 1j에 도시된 것과 같이 첫 번째 메모리 장치그룹(1500)에 포함된 다수의 메모리 장치(MD<00, 01, 02, 03>)는 서로 다른 경로를 통해 첫 번째 서브 컨트롤러(1340)와 연결될 수 있다. 이때, 다수의 메모리 장치(MD<00, 01, 02, 03>) 중 첫 번째 메모리 장치(MD00)와 첫 번째 서브 컨트롤러(1340)는 제1 채널(channel) 및 제1 웨이(way)를 통해 연결되고, 두 번째 메모리 장치(MD01)와 첫 번째 서브 컨트롤러(1340)는 제1 채널 및 제2 웨이를 통해 연결되며, 세 번째 메모리 장치(MD02)와 첫 번째 서브 컨트롤러(1340)는 제2 채널 및 제1 웨이를 통해 연결되고, 네 번째 메모리 장치(MD03)와 첫 번째 서브 컨트롤러(1340)는 제2 채널 및 제2 웨이를 통해 연결될 수 있다. 이와 같은 형태로 두 번째 내지 네 번째 메모리 장치그룹(1501, 1502, 1503)각각과 두 번째 내지 네 번째 서브 컨트롤러 각각이 다수의 데이터 경로를 통해 연결될 수 있다. 한편, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각과 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각을 연결하는 채널과 웨이의 수는 메모리 시스템(110)이 사용되는 목적, 혹은 호스트(102)에서 요구하는 메모리 시스템(110)의 사양 등에 따라 설계 변경될 수 있다.
그리고, 버퍼 메모리(1306)는, 호스트(102)와 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 사이에서 입/출력되는 커맨드 및 데이터를 버퍼링할 수 있다. 구체적으로, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)가 호스트(102)로부터의 요청에 응답하여 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)을 제어하는 과정 중 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)으로부터 리드된 데이터를 호스트(102)로 제공하기 전 임시 저장할 수 있다. 또한, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)는 호스트(102)로부터 제공된 데이터를 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)에 저장하기 전, 버퍼 메모리(1306)에 임시 저장할 수 있다. 또한, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)에서 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)의 리드, 라이트, 이레이즈 등의 동작을 제어하기 위해 생성되는 데이터가 버퍼 메모리(1306)에 저장될 수 있다.
특히, 버퍼 메모리(1306)는, 호스트(102)로부터 입력된 라이트 데이터를 다수의 메모리 장치그룹(1500, 1501, 1502, 1503)에 라이트하기 전 버퍼링하기 위해 사용할 수 있다.
구체적으로, 호스트(102)로부터 입력된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7)는 버퍼 메모리(1306)에 입력 순서대로 버퍼링될 수 있다. 도 1a 및 도 2를 함께 참조하면, 호스트(102)로부터 입력된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7)는 버퍼 메모리(1306)의 호스트 버퍼 영역(HOST BUFFER)에 입력 순서대로 버퍼링될 수 있다.
이렇게, 버퍼 메모리(1306)에 버퍼링된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7)는, 할당부(1302)에 의해 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각에 대응하는 다수의 데이터 그룹으로 구분될 수 있다. 도 1a 및 도 2를 함께 참조하면, 호스트 버퍼 영역(HOST BUFFER)에 버퍼링된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7)는, 할당부(1302)에 의해 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각에 대응하는 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)으로 분할되어 버퍼링될 수 있다.
할당부(1302)는, 버퍼 메모리(1306)에 버퍼링된 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7)의 논리주소(LA0, LA1, LA2, LA3, LA4, LA5, LA6, LA7)를 확인하고, 확인된 논리주소에 따라 라이트 데이터를 다수의 데이터 그룹으로 구분한 뒤, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)에 각각 할당할 수 있다. 도 1a 및 도 2를 함께 참조하면, 할당부(1302)는, 호스트 버퍼 영역(HOST BUFFER)에 버퍼링된 다수의 라이트 데이터에 대응하는 논리주소를 확인하고, 확인결과에 따라 다수의 데이터 그룹으로 구분할 수 있다. 또한, 할당부(1302)는, 다수의 데이터 그룹 각각을 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 할당할 수 있다. 예컨대, 할당부(1302)는, 호스트 버퍼 영역(HOST BUFFER)에 버퍼링된 다수의 라이트 데이터 중 대응하는 논리주소 값이 0에서 100사이 값을 갖는 경우 제1 데이터 그룹으로 구분하고, 대응하는 논리주소 값이 101에서 200사이 값을 갖는 경우 제2 데이터 그룹으로 구분하며, 201에서 300사이 값을 갖는 경우 제3 데이터 그룹으로 구분하고, 301에서 400사이 값을 갖는 경우 제4 데이터 그룹으로 구분할 수 있다. 또한, 할당부(1302)는, 제1 데이터 그룹에 포함된 라이트 데이터를 첫 번째 메모리 버퍼 영역(MEMORY BUFFER0)에 할당시키고, 제2 데이터 그룹에 포함된 라이트 데이터를 두 번째 메모리 버퍼 영역(MEMORY BUFFER1)에 할당시키며, 제3 데이터 그룹에 포함된 라이트 데이터를 세 번째 메모리 버퍼 영역(MEMORY BUFFER2)에 할당시키고, 제4 데이터 그룹에 포함된 라이트 데이터를 네 번째 메모리 버퍼 영역(MEMORY BUFFER3)에 할당시킬 수 있다.
이때, 할당부(1302)가 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹 각각을 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각에 할당하는 동작은, 다수의 데이터 그룹 각각에 포함된 데이터의 버퍼 메모리(1306) 내 물리적인 위치정보(PI0, PI1, PI2, PI3)를 다수의 데이터 그룹 각각에 대응하는 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)에 전달하는 동작을 통해 이뤄질 수 있다. 도 1a 및 도 2를 함께 참조하면, 할당부(1302)는, 호스트 버퍼 영역(HOST BUFFER)에 버퍼링된 다수의 라이트 데이터의 버퍼 메모리(1306) 내 물리적인 위치정보(PI0, PI1, PI2, PI3)를 다수의 데이터 그룹으로 구분한 뒤, 다수의 데이터 그룹 각각에 대응하는 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)에 전달하는 동작을 통해 다수의 데이터 그룹 각각을 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 할당할 수 있다. 즉, 호스트 버퍼 영역(HOST BUFFER)과 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)은, 물리적으로는 동일한 위치일 수 있다. 다만, 호스트 버퍼 영역(HOST BUFFER)에 대응하는 버퍼 메모리(1306) 내 물리적인 위치정보는 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)로 전달되지 않은 상태이기 때문에, 호스트 버퍼 영역(HOST BUFFER)에 버퍼링된 라이트 데이터는 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)에 할당되지 않은 상태라고 볼 수 있다. 반면, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3)에 대응하는 버퍼 메모리(1306) 내 물리적인 위치정보는 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)로 전달된 상태이기 때문에, 다수의 메모리 버퍼 영역(MEMORY BUFFER0, MEMORY BUFFER1, MEMORY BUFFER2, MEMORY BUFFER3) 각각에 버퍼링된 다수의 데이터 그룹 각각은 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)에 할당된 상태라고 볼 수 있다.
그리고, 모니터링부(1304)는, 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹간의 크기 차이를 모니터링할 수 있다. 즉, 모니터링부(1304)는, 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹 각각의 크기를 확인하며, 확인결과 가장 작은 크기를 갖는 데이터 그룹보다 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하고, 선택된 데이터 그룹이 할당된 서브 컨트롤러(1340 or 1341 or 1342 or 1343)에 알림신호(AK0 or AK1 or AK2 or AK3)를 전송할 수 있다. 예컨대, 모니터링부(1304)는, 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹 각각의 크기를 확인한 결과 세 번째 데이터 그룹의 크기가 가장 작은 경우, 세 번째 데이터 그룹의 크기보다 설정된 크기 이상 큰 크기를 갖는 데이터 그룹이 존재하는지 여부를 확인할 수 있다. 만약, 첫 번째 데이터 그룹의 크기가 세 번째 데이터 그룹의 크기보다 설정된 크기 이상 큰 크기를 갖는 경우, 첫 번째 데이터 그룹을 선택하고, 첫 번째 데이터 그룹이 할당된 첫 번째 서브 컨트롤러(1340)에 알림신호(AK0)를 전송할 수 있다.
그리고, 모니터링부(1304)는, 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹 각각이 버퍼 메모리(1306)에서 차지하는 점유율을 검출하고, 검출된 점유율을 통해 다수의 데이터 그룹 각각의 크기를 확인할 수 있다. 예컨대, 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹 각각이 버퍼 메모리(1306)에서 차지하는 점유율을 검출한 결과, 첫 번째 데이터 그룹은 15%를 차지하고, 두 번째 데이터 그룹은 2%를 차지하며, 세 번째 데이터 그룹은 0%를 차지하고, 네 번째 데이터 그룹은 8%를 차지하며, 75%는 빈공간일 수 있다. 이와 같은 경우, 가장 작은 크기를 갖는 데이터 그룹은 세 번째 데이터 그룹이고, 가장 큰 크기를 갖는 데이터 그룹은 첫 번째 데이터 그룹인 것을 알 수 있다. 또한, 첫 번째 데이터 그룹과 세 번째 데이터 그룹이 15%의 차이를 갖는 것을 알 수 있으며, 설정된 크기가 10%라고 가정하면, 첫 번째 데이터 그룹의 크기가 세 번째 데이터 그룹의 크기보다 설정된 크기 이상 큰 크기를 갖는 다는 것을 알 수 있다. 따라서, 모니터링부(1304)는, 첫 번째 데이터 그룹을 선택하고, 첫 번째 데이터 그룹이 할당된 첫 번째 서브 컨트롤러(1340)에 알림신호(AK0)를 전송할 수 있다.
그리고, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각은, 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹 각각을 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각에 프로그램할 수 있다.
구체적으로, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각은, 모니터링부(1304)로부터 알림신호(AK0, AK1, AK2, AK3)가 전송되지 않는 경우, 버퍼 메모리(1306)에 버퍼링되어 스스로에게 할당된 데이터 그룹을 임계 크기만큼씩 플러시하여 스스로에게 할당된 메모리 장치그룹(1500, 1501, 1502, 1503)에 프로그램할 수 있다.
그리고, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각은, 모니터링부(1304)로부터 알림신호(AK0, AK1, AK2, AK3)가 전송되는 경우, 버퍼 메모리(1306)에 버퍼링되어 스스로에게 할당된 데이터 그룹에 포함된 데이터 중 적어도 일부를 강제로 플러시하여 스스로에게 할당된 메모리 장치그룹(1500, 1501, 1502, 1503)에 프로그램할 수 있다. 이때, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각에 의해 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각으로 강제 플러시되는 데이터의 크기는 임계 크기보다 작을 것이다. 따라서, 다수의 메모리 장치그룹(1500, 1501, 1502, 1503) 각각에 포함된 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)는 내부에서, 프로그램을 위해 서브 컨트롤러로부터 입력된 임계 크기보다 작은 데이터에 더미(dummy) 데이터를 결합시켜 임계 크기의 데이터를 생성한 뒤, 프로그램 동작을 진행할 수 있다.
그리고, 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각은, 모니터링부(1304)로부터 알림신호(AK0, AK1, AK2, AK3)가 전송되는 경우, 버퍼 메모리(1306)에 버퍼링되어 스스로에게 할당된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터에 더미(dummy)데이터를 결합시켜 임계 크기만큼의 데이터를 플러시하여 스스로에게 할당된 메모리 장치그룹(1500, 1501, 1502, 1503)에 프로그램할 수 있다.
도 3은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 설명한다.
도 3을 참조하면, 데이터 처리 시스템(100)은, 호스트(Host)(102) 및 메모리 시스템(110)을 포함한다. 호스트(102)는 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함, 즉 컴퓨팅 장치 혹은 유무선 전자 장치들을 포함할 수 있다.
또한, 호스트(102)는, 적어도 하나의 운영 시스템(OS: operating system)을 포함하며, 운영 시스템은, 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 여기서, 운영 시스템은, 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 예컨대, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 또한, 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있으며, 일 예로, 개인용 운영 시스템은, 일반 사용자를 위한 서비스 제공 기능을 지원하도록 특성화된 시스템으로, 윈도우(windows) 및 크롬(chrome) 등을 포함하고, 기업용 운영 시스템은, 고성능을 확보 및 지원하도록 특성화된 시스템으로, 윈도 서버(windows server), 리눅스(linux) 및 유닉스(unix) 등을 포함할 수 있다. 아울러, 운영 시스템에서의 모바일 운영 시스템은, 사용자들에게 이동성 서비스 제공 기능 및 시스템의 절전 기능을 지원하도록 특성화된 시스템으로, 안드로이드(android), iOS, 윈도 모바일(windows mobile) 등을 포함할 수 있다. 이때, 호스트(102)는, 다수의 운영 시스템들을 포함할 수 있으며, 또한 사용자 요청(user request)에 상응한 메모리 시스템(110)과의 동작 수행을 위해 운영 시스템을 실행한다, 여기서, 호스트(102)는, 사용자 요청에 해당하는 다수의 커맨드들을 메모리 시스템(110)으로 전송하며, 그에 따라 메모리 시스템(110)에서는 커맨드들에 해당하는 동작들, 즉 사용자 요청에 상응하는 동작들을 수행한다.
또한, 메모리 시스템(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), 및 메모리 장치(150)로의 데이터 저장을 제어하는 컨트롤러(130)를 포함한다. 이때, 메모리 장치(150)는, 전술한 도 1a 내지 도 2에서 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>)에 대응하는 구성요소일 수 있다.
여기서, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 이용되는 경우, 메모리 시스템(110)에 연결되는 호스트(102)의 동작속도는 보다 개선될 수 있다. 아울러, 컨트롤러(130) 및 메모리 장치(150)는, 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있으며, 일 예로 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)에서의 메모리 장치(150)는, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있으며, 특히 라이트(write) 동작을 통해 호스트(102)로부터 제공된 데이터를 저장하고, 리드(read) 동작을 통해 저장된 데이터를 호스트(102)로 제공한다. 여기서, 메모리 장치(150)는, 다수의 메모리 블록(152, 154, 156)을 포함하며, 각각의 메모리 블록(152, 154, 156)은, 다수의 페이지(pages)을 포함하며, 또한 각각의 페이지들은, 다수의 워드라인(WL: Word Line)들이 연결된 다수의 메모리 셀들을 포함한다. 또한, 메모리 장치(150)는, 다수의 메모리 블록(152,154,156)이 각각 포함된 다수의 플래인(plane)을 포함하며, 특히 다수의 플래인들이 각각 포함된 다수의 메모리 다이(memory die)들을 포함할 수 있다. 아울러, 메모리 장치(150)는, 비휘발성 메모리 장치, 일 예로 플래시 메모리가 될 수 있으며, 이때 플래시 메모리는 3차원(dimension) 입체 스택(stack) 구조가 될 수 있다. 참고로, 도 1a 내지 도 2에서 설명된 다수의 메모리 장치(MD<00, 01, 02, ... , 32, 33>) 각각은, 도 3의 메모리 장치(150)와 유사한 형태의 구성, 즉, 다수의 메모리 블록이 포함되는 구성일 수 있다.
그리고, 메모리 시스템(110)에서의 컨트롤러(130)는, 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어한다. 예컨대, 컨트롤러(130)는, 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하며, 이를 위해 컨트롤러(130)는, 메모리 장치(150)의 리드, 라이트, 프로그램(program), 이레이즈(erase) 등의 동작을 제어한다.
보다 구체적으로 설명하면, 컨트롤러(130)는, 호스트 인터페이스(Host I/F) 유닛(132), 프로세서(Processor)(134), 에러 정정 코드(ECC: Error Correction Code) 유닛(138), 파워 관리 유닛(PMU: Power Management Unit)(140), 메모리 인터페이스(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), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다. 여기서, 호스트 인터페이스 유닛(132)은, 호스트(102)와 데이터를 주고 받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
아울러, ECC 유닛(138)은, 메모리 장치(150)에서 처리되는 데이터의 에러 비트를 정정하며, ECC 인코더와 ECC 디코더를 포함할 수 있다. 여기서, ECC 인코더(ECC encoder)는 메모리 장치(150)에 프로그램될 데이터를 에러 정정 인코딩(error correction encoding)하여, 패리티(parity) 비트가 부가된 데이터를 생성하며, 패리티 비트가 부가된 데이터는, 메모리 장치(150)에 저장될 수 있다. 그리고, ECC 디코더(ECC decoder)는, 메모리 장치(150)에 저장된 데이터를 리드할 경우, 메모리 장치(150)로부터 리드된 데이터에 포함되는 에러를 검출 및 정정한다. 다시 말해, ECC 유닛(138)은, 메모리 장치(150)로부터 리드한 데이터를 에러 정정 디코딩(error correction decoding)한 후, 에러 정정 디코딩의 성공 여부를 판단하고, 판단 결과에 따라 지시 신호, 예컨대 에러 정정 성공(success)/실패(fail) 신호를 출력하며, ECC 인코딩 과정에서 생성된 패리티(parity) 비트를 사용하여 리드된 데이터의 에러 비트를 정정할 수 있다. 이때, ECC 유닛(138)은, 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없으며, 에러 비트를 정정하지 못함에 상응하는 에러 정정 실패 신호를 출력할 수 있다.
여기서, ECC 유닛(138)은, LDPC(low density parity check) 코드(code), BCH(Bose, Chaudhri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며, 이에 한정되는 것은 아니다. 또한, ECC 유닛(138)는 오류 정정을 위한 회로, 모듈, 시스템, 또는 장치를 모두 포함할 수 있다.
그리고, PMU(140)는, 컨트롤러(130)의 파워, 즉 컨트롤러(130)에 포함된 구성 요소들의 파워를 제공 및 관리한다.
또한, 메모리 인터페이스 유닛(142)은, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(150) 간의 인터페이싱을 수행하는 메모리/스토리지(storage) 인터페이스가 된다. 여기서, 메모리 인터페이스 유닛(142)은, 메모리 장치(150)가 플래시 메모리, 특히 일 예로 메모리 장치(150)가 NAND 플래시 메모리일 경우에 NAND 플래시 컨트롤러(NFC: NAND Flash Controller)로서, 프로세서(134)의 제어에 따라, 메모리 장치(150)의 제어 신호를 생성하고 데이터를 처리한다. 그리고, 메모리 인터페이스 유닛(142)은, 컨트롤러(130)와 메모리 장치(150) 간의 커맨드 및 데이터를 처리하는 인터페이스, 일 예로 NAND 플래시 인터페이스의 동작, 특히 컨트롤러(130)와 메모리 장치(150) 간 데이터 입출력을 지원하며, 메모리 장치(150)와 데이터를 주고 받는 영역으로 플래시 인터페이스 계층(FIL: Flash Interface Layer, 이하 'FIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
아울러, 메모리(144)는, 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장할 수 있다. 보다 구체적으로 설명하면, 메모리(144)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하는 과정 중 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하기 전 임시 저장할 수 있다. 또한, 컨트롤러(130)는 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하기 전, 메모리(144)에 임시 저장할 수 있다. 메모리 장치(150)의 리드, 라이트, 프로그램, 이레이즈(erase) 등의 동작을 제어할 경우, 메모리 시스템(110) 내 컨트롤러(130)와 메모리 장치(150) 사이에 전달되거나 발생하는 데이터는 메모리(144)에 저장될 수 있다. 예를 들어, 메모리(144)는 호스트(102)와 메모리 장치(150) 간 데이터 라이트 및 리드 등의 동작을 수행하기 위해 필요한 데이터, 및 데이터 라이트 및 리드 등의 동작 수행 시의 데이터를 저장할 수 있다. 이러한 데이터 저장을 위해, 메모리(144)는 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다. 또한, 메모리(144)는 도 1a 내지 도 2에서 설명한 버퍼 메모리(1306)를 포함할 수 있다.
여기서, 메모리(144)는, 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 아울러, 메모리(144)는, 도 3에서 도시한 바와 같이, 컨트롤러(130)의 내부에 존재하거나, 또는 컨트롤러(130)의 외부에 존재할 수 있으며, 이때 메모리 인터페이스를 통해 컨트롤러(130)로부터 데이터가 입출력되는 외부 휘발성 메모리로 구현될 수도 있다.
그리고, 프로세서(134)는, 메모리 시스템(110)의 전체적인 동작을 제어하며, 특히 호스트(102)로부터의 라이트 요청 또는 리드 요청에 응답하여, 메모리 장치(150)에 대한 프로그램 동작 또는 리드 동작을 제어한다. 여기서, 프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동한다. 또한, 프로세서(134)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
또한, 실시예에 따라, 프로세서(134)와 호스트 인터페이스 유닛(132)와 메모리 인터페이스 유닛(142)은, 도 1a 내지 도 2에서 설명한 다수의 서브 컨트롤러(1340, 1341, 1342, 1343)의 동작을 수행하는 데 사용될 수 있다. 또한, 실시예에 따라, 프로세서(134)와 호스트 인터페이스 유닛(132)와 메모리 인터페이스 유닛(142)은, 도 2에서 설명한 모니터링부(1304)의 동작을 수행하는데 사용될 수 있다. 또한, 실시예에 따라, 프로세서(134)와 호스트 인터페이스 유닛(132)와 메모리 인터페이스 유닛(142)은, 도 2에서 설명한 모니터링부(1304)의 동작을 수행하는데 사용될 수 있다.
일 예로, 컨트롤러(130)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해, 호스트(102)로부터 요청된 동작을 메모리 장치(150)에서 수행, 다시 말해 호스트(102)로부터 수신된 커맨드에 해당하는 커맨드 동작을, 메모리 장치(150)와 수행한다. 여기서, 컨트롤러(130)는, 호스트(102)로부터 수신된 커맨드에 해당하는 커맨드 동작으로 포그라운드(foreground) 동작을 수행, 예컨대 라이트 커맨드에 해당하는 프로그램 동작, 리드 커맨드에 해당하는 리드 동작, 이레이즈 커맨드(erase command)에 해당하는 이레이즈 동작, 셋 커맨드(set command)로 셋 파라미터 커맨드(set parameter command) 또는 셋 픽쳐 커맨드(set feature command)에 해당하는 파라미터 셋 동작 등을 수행할 수 있다.
마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해, 컨트롤러(130)는 메모리 장치(150)에 대한 백그라운드(background) 동작을 수행할 수도 있다. 메모리 장치(150)에 대한 백그라운드 동작은, 메모리 장치(150)의 메모리 블록(152, 154, 156)에서 임의의 메모리 블록에 저장된 데이터를 다른 임의의 메모리 블록으로 카피(copy)하여 처리하는 동작, 일 예로 가비지 컬렉션(GC: Garbage Collection) 동작, 메모리 장치(150)의 메모리 블록(152, 154, 156) 간 또는 메모리 블록(152, 154, 156)에 저장된 데이터 간을 스왑(swap)하여 처리하는 동작, 일 예로 웨어 레벨링(WL: Wear Leveling) 동작, 컨트롤러(130)에 저장된 맵 데이터를 메모리 장치(150)의 메모리 블록(152, 154, 156)로 저장하는 동작, 일 예로 맵 플러시(map flush) 동작, 또는 메모리 장치(150)에 대한 배드 관리(bad management)하는 동작, 일 예로 메모리 장치(150)에 포함된 다수의 메모리 블록(152, 154, 156)에서 배드 블록을 확인하여 처리하는 배드 블록 관리(bad block management) 동작 등을 포함할 수 있다.
호스트(102)로부터 수신된 다수의 커맨드들에 해당하는 다수의 커맨드 동작들에 대해, 컨트롤러(130)는 메모리 장치(150)에 포함된 다수의 메모리 다이들과 연결된 다수의 채널(channel)들 또는 웨이(way)들 중 적어도 하나를 선택하여 다수의 커맨드 동작들을 원할히 수행할 수 있다. 컨트롤러(130)는 호스트(102)로부터 전달되는 다수의 커맨드들에 해당하는 다수의 커맨드 동작들, 예컨대 다수의 라이트 커맨드들에 해당하는 다수의 프로그램 동작들, 다수의 리드 커맨드들에 해당하는 다수의 리드 동작들, 및 다수의 이레이즈 커맨드들에 해당하는 다수의 이레이즈 동작들을 수신할 수 있다. 다수의 동작들을 메모리 장치(150)에서 수행할 경우, 컨트롤러(130)는 다수의 채널(channel)들 또는 웨이(way)들의 상태를 바탕으로, 적합한 채널(또는 웨이들)을 결정할 수 있다. 결정된 최상의 채널(또는 웨이들)을 통해, 컨트롤러(130)는 호스트(102)로부터 수신된 커맨드들 해당하는 메모리 다이들로 전송할 수 있고, 커맨드들에 해당하는 커맨드 동작들을 수행한 메모리 다이들로부터 커맨드 동작들의 수행 결과들을 수신할 수 있다. 이후, 컨트롤러(130)는 커맨드 동작들의 수행 결과들을 호스트(120)로 제공할 수 있다.
컨트롤러(130)는 메모리 장치(150)에 포함된 다수의 메모리 다이들과 연결된 다수의 채널(또는 웨이들)의 상태를 확인할 수 있다. 예컨대, 채널들 또는 웨이들의 상태는 비지(busy) 상태, 레디(ready) 상태, 액티브(active) 상태, 아이(idle) 상태, 정상(normal) 상태, 비정상(abnormal) 상태 등으로 구분할 수 있다. 명령어 (및/또는 데이터)가 전달되는 채널 또는 방법의 컨트롤러 결정은 명령 (및/또는 데이터)이 전달되는 물리적 블록 어드레스와 연관될 수 있다. 컨트롤러(130)는 메모리 디바이스 (150)로부터 전달된 디스크립터(descriptor)를 참조할 수 있다. 디스크립터는 미리 결정된 포맷 또는 구조를 갖는 데이터로서, 메모리 장치(150)에 관한 무언가를 기술하는 파라미터의 블록 또는 페이지를 포함할 수 있다. 예를 들어, 디스크립터는 장치 디스크립터, 구성 디스크립터, 유닛 디스크립터 등을 포함할 수 있다. 컨트롤러(130)는 명령 또는 데이터가 어떤 채널(들) 또는 방법(들)을 통해 교환되는지를 결정하기 위해 디스크립터를 참조하거나 사용한다.
컨트롤러(130)의 프로세서(134)에는 메모리 장치(150)의 배드 관리를 수행하기 위한 관리 유닛(도시하지 않음)이 포함될 수 있다. 관리 유닛은, 메모리 장치(150)에 포함된 다수의 메모리 블록(152,154,156)에서 배드 블록을 확인한 후, 확인된 배드 블록을 배드 처리하는 배드 블록 관리를 수행할 수 있다. 여기서, 배드 블록 관리는, 메모리 장치(150)가 플래시 메모리, 예컨대 낸드 플래시 메모리일 경우, 낸드의 특성으로 인해 데이터 라이트, 예컨대 데이터 프로그램(program) 시에 프로그램 실패(program fail)가 발생할 수 있으며, 프로그램 실패가 발생한 메모리 블록을 배드(bad) 처리한 후, 프로그램 실패된 데이터를 새로운 메모리 블록에 라이트, 즉 프로그램하는 것을 의미한다. 또한, 메모리 장치(150)가, 전술한 바와 같이, 3차원 입체 스택 구조를 가질 경우에는, 프로그램 실패에 따라 해당 블록을 배드 블록으로 처리하면, 메모리 장치(150)의 사용 효율 및 메모리 시스템(100)의 신뢰성이 급격하게 저하되므로, 보다 신뢰성 있는 배드 블록 관리 수행이 필요하다.
도 4a 및 도 4b는 다수의 메모리 장치 각각에 대응하는 라이트 데이터에 대한 컨트롤러의 버퍼링 동작을 설명한다.
먼저, 도 4a의 <A>를 참조하면, 호스트(102)로부터 입력된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7)가 버퍼 메모리(1306)에 입력된 순서대로 버퍼링되는 것을 알 수 있다.
도 4a의 <B>를 참조하면, 버퍼 메모리(1306)에 버퍼링된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7)가 대응하는 논리주소(LA0, LA1, LA2, LA3, LA4, LA5, LA6, LA7)에 따라 다수의 데이터 그룹(DG0, DG1, DG2, DG3)으로 구분되는 것을 알 수 있다. 이때, 다수의 데이터 그룹(DG0, DG1, DG2, DG3) 각각은 다수의 서브 컨트롤러(1340, 1341, 1342, 1343) 각각에 대응할 수 있다. 예컨대, 버퍼 메모리(1306)에 버퍼링된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7) 중 0번 데이터(DATA0)에 대응하는 0번 논리주소(LA0)의 값과, 3번 데이터(DATA3)에 대응하는 3번 논리주소(LA3)의 값, 및 7번 데이터(DATA7)에 대응하는 7번 논리주소(LA7)의 값이 첫 번째 서브 컨트롤러(1340)에 대응하는 논리주소 값 범위에 포함될 수 있다. 따라서, 0번 데이터(DATA0)와, 3번 데이터(DATA3), 및 7번 데이터(DATA7)는, 0번 데이터 그룹(DG0)으로 구분될 수 있다. 또한, 버퍼 메모리(1306)에 버퍼링된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7) 중 2번 데이터(DATA2)에 대응하는 2번 논리주소(LA2)의 값이 두 번째 서브 컨트롤러(1341)에 대응하는 논리주소 값 범위에 포함될 수 있다. 따라서, 2번 데이터(DATA2)는, 1번 데이터 그룹(DG1)으로 구분될 수 있다. 또한, 버퍼 메모리(1306)에 버퍼링된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7) 중 1번 데이터(DATA1)에 대응하는 1번 논리주소(LA1)의 값, 및 5번 데이터(DATA5)에 대응하는 5번 논리주소(LA5)의 값이 세 번째 서브 컨트롤러(1342)에 대응하는 논리주소 값 범위에 포함될 수 있다. 따라서, 1번 데이터(DATA1) 및 5번 데이터(DATA5)는, 2번 데이터 그룹(DG2)으로 구분될 수 있다. 또한, 버퍼 메모리(1306)에 버퍼링된 다수의 라이트 데이터(DATA0, DATA1, DATA2, DATA3, DATA4, DATA5, DATA6, DATA7) 중 4번 데이터(DATA4)에 대응하는 4번 논리주소(LA4)의 값, 및 6번 데이터(DATA6)에 대응하는 6번 논리주소(LA6)의 값이 네 번째 서브 컨트롤러(1343)에 대응하는 논리주소 값 범위에 포함될 수 있다. 따라서, 4번 데이터(DATA4) 및 6번 데이터(DATA6)는, 3번 데이터 그룹(DG3)으로 구분될 수 있다.
도 4b의 <A>를 참조하면, 전술한 도 4a의 <B>와 같이 다수의 데이터 그룹(DG0, DG1, DG2, DG3)으로 구분된 상태에서, 가장 작은 크기를 갖는 데이터 그룹보다 설정된 크기 이상 큰 데이터 그룹이 존재하는지 여부를 확인할 수 있다. 다수의 데이터 그룹(DG0, DG1, DG2, DG3) 중 0번 데이터 그룹(DG0)에는 0번 데이터(DATA0)와 3번 데이터(DATA3) 및 7번 데이터(DATA7)가 포함되어 세 개의 데이터가 포함되고, 1번 데이터 그룹(DG1)에는 2번 데이터(DATA2)만 포함되어 한 개의 데이터만 포함되며, 2번 데이터 그룹(DG2)에는 1번 데이터(DATA1) 및 5번 데이터(DATA5)가 포함되어 두 개의 데이터가 포함되고, 3번 데이터 그룹(DG3)에는, 4번 데이터(DATA4) 및 6번 데이터(DATA6)가 포함되어 두 개의 데이터가 포함되는 확인할 수 있다. 이와 같은 확인결과에 따라, 1번 데이터 그룹(DG1)이 가장 작은 크기를 갖는 데이터 그룹인 것을 알 수 있다. 또한, 설정된 크기가 두 개의 데이터에 대응한다고 가정할 때, 가장 작은 크기를 갖는 1번 데이터 그룹(DG1)보다 두 개의 데이터가 더 포함된 0번 데이터 그룹(DG0)이 설정된 크기 이상 큰 데이터 그룹으로 선택될 수 있다. 이때, 2번 데이터 그룹(DG2) 및 3번 데이터 그룹(DG3)은, 1번 데이터 그룹(DG1)의 크기보다 한 개의 데이터가 더 포함된 상태이므로, 설정된 크기 이상 큰 데이터 그룹으로 선택되지 않을 수 있다.
이렇게, 가장 작은 크기를 갖는 1번 데이터 그룹(DG1)보다 설정된 크기 이상 큰 크기를 갖는 데이터 그룹으로 0번 데이터 그룹(DG0)이 선택되었으므로, 0번 데이터 그룹(DG0)에 포함된 데이터 중 적어도 일부를 강제로 플러시하여 0번 메모리 장치그룹(1500)에 프로그램할 수 있다. 예컨대, 0번 데이터 그룹(DG0)에 포함된 0번 데이터(DATA0)와 3번 데이터(DATA3) 및 7번 데이터(DATA7) 중 3번 데이터(DATA3) 및 7번 데이터(DATA7)를 강제로 플러시하여 0번 메모리 장치그룹(1500)에 프로그램할 수 있다.
도 4b의 <B>를 참조하면, 도 4b의 <A>에서 0번 데이터 그룹(DG0)에 포함된 일부 데이터(DATA3, DATA7)를 강제로 플러시하는 동작을 통해 버퍼 메모리(1306)에 버퍼링된 다수의 데이터 그룹(DG0, DG1, DG2, DG3)이 서로 간에 설정된 크기 미만의 크기 차이를 갖는 상태가 되는 것을 알 수 있다. 구체적으로, 도 4b의 <A>에서 0번 데이터 그룹(DG0)에 포함된 0번 데이터(DATA0)와 3번 데이터(DATA3) 및 7번 데이터(DATA7) 중 3번 데이터(DATA3) 및 7번 데이터(DATA7)가 0번 메모리 장치그룹(1500)에 프로그램되면서, 도 4b의 <B>에서는 0번 데이터 그룹(DG0)에 0번 데이터(DATA0)만 포함되어 한 개의 데이터가 포함되고, 1번 데이터 그룹(DG1)에는 2번 데이터(DATA2)만 포함되어 한 개의 데이터만 포함되며, 2번 데이터 그룹(DG2)에는 1번 데이터(DATA1) 및 5번 데이터(DATA5)가 포함되어 두 개의 데이터가 포함되고, 3번 데이터 그룹(DG3)에는, 4번 데이터(DATA4) 및 6번 데이터(DATA6)가 포함되어 두 개의 데이터가 포함되는 상태가 될 수 있다. 설정된 크기가 두 개의 데이터에 대응한다고 가정할 때, 가장 작은 크기를 갖는 0번 데이터 그룹(DG0) 또는 1번 데이터 그룹(DG1)보다 두 개의 데이터가 더 포함된 데이터 그룹은 존재하지 않는 것을 알 수 있다.
이상에서 살펴본 바와 같이 본 발명의 실시예를 적용하면, 메모리 시스템에 포함된 다수의 메모리 장치 각각에 대응하여 독립적으로 버퍼링된 라이트 데이터 각각의 크기가 서로 설정된 크기 범위 이내의 차이를 유지하도록 라이트 데이터의 버퍼링 동작을 관리할 수 있다.
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속한 기술분야에서 통상의 지식을 가진자에게 있어 명백할 것이다.

Claims (17)

  1. 다수의 메모리 장치;
    호스트로부터 입력된 라이트 데이터를 버퍼링하기 위한 버퍼메모리; 및
    상기 버퍼메모리에 버퍼링된 상기 라이트 데이터를 대응하는 논리주소에 따라 N개의 데이터 그룹으로 분류하고, 상기 N개의 데이터 그룹 각각의 서로간 크기 차이가 설정된 크기 이상인 경우, 상기 N개의 데이터 그룹 각각의 크기를 균일화하기 위해 상기 N개의 데이터 그룹 중 적어도 하나의 데이터 그룹을 선택하여 상기 다수의 메모리 장치로 플러시(flush)시키는 컨트롤러를 포함하며, N은 2이상의 자연수인 메모리 시스템.
  2. 제1항에 있어서,
    상기 컨트롤러는,
    상기 N개의 데이터 그룹 중 가장 작은 크기를 갖는 데이터 그룹보다 상기 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하고, 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 상기 다수의 메모리 장치로 플러시시키는 메모리 시스템.
  3. 제2항에 있어서,
    상기 다수의 메모리 장치는, N개의 메모리 장치그룹으로 구분되며,
    상기 컨트롤러는,
    상기 N개의 메모리 장치그룹에 각각 대응하고, 상기 N개의 메모리 장치 그룹 각각의 동작을 독립적으로 제어하기 위한 N개의 서브 컨트롤러;
    상기 버퍼메모리에 버퍼링된 상기 라이트 데이터의 논리주소를 확인하고, 상기 확인된 논리주소에 따라 상기 라이트 데이터를 상기 N개의 데이터 그룹으로 구분하여 상기 N개의 서브 컨트롤러에 각각 할당하는 할당부; 및
    상기 N개의 데이터 그룹간의 크기 차이를 모니터링하기 위한 모니터링부를 포함하는 메모리 시스템.
  4. 제3항에 있어서,
    상기 모니터링부는,
    상기 N개의 데이터 그룹 각각의 크기를 확인하며, 확인결과 상기 N개의 데이터 그룹 중 가장 작은 크기를 갖는 데이터 그룹보다 상기 N개의 데이터 그룹 중 상기 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하고, 상기 N개의 서브 컨트롤러 중 상기 선택된 데이터 그룹이 할당된 서브 컨트롤러에 알림신호를 전송하는 메모리 시스템.
  5. 제4항에 있어서,
    상기 N개의 서브 컨트롤러 각각은,
    상기 알림신호를 수신하는 경우, 상기 N개의 데이터 그룹 중 할당된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 상기 N개의 메모리 장치그룹 중 대응하는 메모리 장치그룹으로 플러시시키는 메모리 시스템.
  6. 제4항에 있어서,
    상기 N개의 서브 컨트롤러 각각은,
    상기 N개의 데이터 그룹 중 할당된 데이터 그룹의 크기가 임계 크기보다 작은 상태에서 상기 알림신호를 수신하는 경우, 상기 N개의 데이터 그룹 중 할당된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터에 더미(dummy)데이터를 결합시켜 상기 임계 크기만큼의 데이터를 상기 N개의 데이터 그룹 중 대응하는 장치그룹에 플러시시키는 메모리 시스템.
  7. 제4항에 있어서,
    상기 모니터링부는,
    상기 N개의 데이터 그룹 각각이 상기 버퍼메모리에서 차지하는 점유율을 검출하고, 검출된 점유율 통해 상기 N개의 데이터 그룹 각각의 크기를 확인하는 메모리 시스템.
  8. 제3항에 있어서,
    상기 할당부는,
    N개의 논리주소 범위를 설정한 뒤, 상기 버퍼메모리에 버퍼링된 상기 라이트 데이터에 대응하는 논리주소가 상기 N개의 논리주소 범위 중 어떤 범위에 포함되는지에 따라 상기 라이트 데이터를 상기 N개의 데이터 그룹으로 구분하는 메모리 시스템.
  9. 제8항에 있어서,
    상기 할당부는,
    상기 N개의 데이터 그룹 각각에 포함된 데이터의 상기 버퍼메모리 내 물리적인 위치정보를 상기 N개의 데이터 그룹 각각에 대응하는 상기 N개의 서브 컨트롤러에 전달하는 메모리 시스템.
  10. 제2항에 있어서,
    상기 컨트롤러는,
    상기 선택된 데이터 그룹과 상기 가장 작은 크기를 갖는 데이터 그룹이 상기 설정된 크기 미만의 크기 차이를 가질 수 있도록 상기 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 선택하고, 선택된 데이터를 상기 다수의 메모리 장치로 플러시시키는 메모리 시스템.
  11. 다수의 메모리 장치, 및 호스트로부터 입력된 라이트 데이터를 버퍼링하기 위한 버퍼메모리를 포함하는 메모리 시스템의 동작방법에 있어서,
    상기 버퍼메모리에 버퍼링된 상기 라이트 데이터를 대응하는 논리주소에 따라 N개의 데이터 그룹으로 분류하는 단계;
    상기 N개의 데이터 그룹 각각의 서로간 크기 차이가 설정된 크기 이상인 경우, 상기 N개의 데이터 그룹 각각의 크기를 균일화하기 위해 상기 N개의 데이터 그룹 중 적어도 하나의 데이터 그룹을 선택하여 상기 다수의 메모리 장치로 플러시(flush)시키는 제1플러시 단계를 포함하며, N은 2이상의 자연수인 메모리 시스템의 동작방법.
  12. 제11항에 있어서,
    상기 제1플러시 단계는,
    상기 N개의 데이터 그룹 중 가장 작은 크기를 갖는 데이터 그룹보다 상기 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하는 단계; 및
    상기 선택하는 단계에서 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 상기 다수의 메모리 장치로 플러시시키는 제2플러시 단계를 포함하는 메모리 시스템의 동작방법.
  13. 제12항에 있어서,
    상기 선택하는 단계는,
    상기 N개의 데이터 그룹 각각의 크기를 확인하는 단계; 및
    상기 확인하는 단계의 결과 가장 작은 크기를 갖는 데이터 그룹보다 보다 상기 설정된 크기 이상 큰 크기를 갖는 데이터 그룹을 선택하는 단계를 포함하는 메모리 시스템의 동작방법.
  14. 제13항에 있어서,
    상기 확인하는 단계는,
    상기 N개의 데이터 그룹 각각이 상기 버퍼메모리에서 차지하는 점유율을 검출하고, 검출된 점유율 통해 상기 N개의 데이터 그룹 각각의 크기를 확인하는 메모리 시스템의 동작방법.
  15. 제12항에 있어서,
    상기 제2플러시 단계는,
    상기 선택하는 단계에서 선택된 데이터 그룹의 크기가 임계 크기보다 작은 경우, 상기 선택하는 단계에서 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터에 더미(dummy)데이터를 결합시켜 상기 임계 크기만큼의 데이터를 상기 다수의 메모리 장치로 플러시시키는 메모리 시스템의 동작방법.
  16. 제12항에 있어서,
    상기 제2플러시 단계는,
    상기 선택하는 단계에서 선택된 데이터 그룹과 상기 가장 작은 크기를 갖는 데이터 그룹이 상기 설정된 크기 미만의 크기 차이를 가질 수 있도록 상기 선택하는 단계에서 선택된 데이터 그룹에 포함된 데이터 중 적어도 일부의 데이터를 선택하고, 선택된 데이터를 상기 다수의 메모리 장치로 플러시시키는 메모리 시스템의 동작방법.
  17. 제11항에 있어서,
    상기 분류하는 단계는,
    N개의 논리주소 범위를 설정한 뒤, 상기 버퍼메모리에 버퍼링된 상기 라이트 데이터에 대응하는 논리주소가 상기 N개의 논리주소 범위 중 어떤 범위에 포함되는지에 따라 상기 라이트 데이터를 상기 N개의 데이터 그룹으로 구분하는 메모리 시스템의 동작방법.
KR1020190154216A 2019-11-27 2019-11-27 메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법 KR20210065455A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190154216A KR20210065455A (ko) 2019-11-27 2019-11-27 메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법
US16/859,613 US11275525B2 (en) 2019-11-27 2020-04-27 Apparatus and method for improving write throughput of memory system
CN202010634077.XA CN112860177A (zh) 2019-11-27 2020-07-02 提高存储器系统的写入吞吐量的设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190154216A KR20210065455A (ko) 2019-11-27 2019-11-27 메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20210065455A true KR20210065455A (ko) 2021-06-04

Family

ID=75974880

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190154216A KR20210065455A (ko) 2019-11-27 2019-11-27 메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법

Country Status (3)

Country Link
US (1) US11275525B2 (ko)
KR (1) KR20210065455A (ko)
CN (1) CN112860177A (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11144203B2 (en) * 2019-12-03 2021-10-12 Micron Technology, Inc. Selectively operable memory device
US11245915B1 (en) * 2020-09-18 2022-02-08 Xilinx, Inc. Conversion between raster and coded formats
US11550718B2 (en) * 2020-11-10 2023-01-10 Alibaba Group Holding Limited Method and system for condensed cache and acceleration layer integrated in servers
US11983440B2 (en) * 2020-12-30 2024-05-14 Samsung Electronics Co., Ltd. Storage device including memory controller implementing journaling and operating method of the memory controller
JP2023000031A (ja) * 2021-06-17 2023-01-04 富士通株式会社 データ配置プログラム、プロセッサ、及びデータ配置方法
WO2024103347A1 (en) * 2022-11-17 2024-05-23 Yangtze Memory Technologies Co., Ltd. Memory device, memory system, and operation method thereof

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5526507A (en) * 1992-01-06 1996-06-11 Hill; Andrew J. W. Computer memory array control for accessing different memory banks simullaneously
DE69632424T2 (de) * 1995-02-17 2005-05-12 Kabushiki Kaisha Toshiba, Kawasaki Server für kontinuierliche Daten und Datentransferschema für mehrfache gleichzeitige Datenzugriffe
KR101425620B1 (ko) 2007-12-17 2014-07-31 삼성전자주식회사 멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치
US8738841B2 (en) * 2007-12-27 2014-05-27 Sandisk Enterprise IP LLC. Flash memory controller and system including data pipelines incorporating multiple buffers
US11016829B2 (en) * 2019-07-26 2021-05-25 Toshiba Memory Corporation Two-layered deterministic interprocess communication scheduler for input output determinism in solid state drives

Also Published As

Publication number Publication date
CN112860177A (zh) 2021-05-28
US20210157514A1 (en) 2021-05-27
US11275525B2 (en) 2022-03-15

Similar Documents

Publication Publication Date Title
KR20210065455A (ko) 메모리 시스템의 라이트 성능을 향상시키는 장치 및 방법
KR20210027642A (ko) 메모리 시스템에서 맵 정보를 전송하는 방법 및 장치
CN110806837B (zh) 数据处理系统及其操作方法
US11354250B2 (en) Apparatus for transmitting map information in memory system
KR20210000877A (ko) 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법
US20200310677A1 (en) Apparatus and method for controlling write operation of memory system
KR20210030599A (ko) 데이터를 분산 리드할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법
KR102373315B1 (ko) 메모리 시스템 및 그것의 동작방법
KR20200122685A (ko) 메모리 시스템 내에서 서로 다른 종류의 데이터를 처리하기 위한 장치 및 방법
KR102652293B1 (ko) 메모리 관리방법
KR20210079611A (ko) 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법
KR102653235B1 (ko) 메모리 블록을 효율적으로 관리할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법
KR20200058867A (ko) 메모리 시스템의 복구 동작 중 비휘발성 메모리 블록의 반복 접근을 줄이는 방법 및 장치
US11360898B2 (en) Apparatus and method for improving input/output throughput of memory system
KR20210152738A (ko) 스트라이프 형태로 데이터를 액세스하는 메모리 시스템 및 메모리 시스템의 동작방법
KR20230081505A (ko) 메모리 컨트롤러 및 그의 동작 방법
US20220012180A1 (en) Memory system for meta data management and operating method of memory system
KR20190069803A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20220036559A (ko) 가속 테스트 동작을 효과적으로 수행하기 위한 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템
CN111857565A (zh) 存储器系统、数据处理系统及其操作方法
KR20210083941A (ko) 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법
KR20210083888A (ko) 입출력 성능이 향상된 메모리 시스템 및 그의 동작 방법
US11366611B2 (en) Apparatus for transmitting map information in a memory system
US11379378B2 (en) Apparatus and method for improving input and output throughput of memory system
KR20210122461A (ko) 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법