KR20190037668A - 메모리 시스템 및 그것의 동작 방법 - Google Patents

메모리 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20190037668A
KR20190037668A KR1020170127241A KR20170127241A KR20190037668A KR 20190037668 A KR20190037668 A KR 20190037668A KR 1020170127241 A KR1020170127241 A KR 1020170127241A KR 20170127241 A KR20170127241 A KR 20170127241A KR 20190037668 A KR20190037668 A KR 20190037668A
Authority
KR
South Korea
Prior art keywords
read
size
clusters
buffer
read request
Prior art date
Application number
KR1020170127241A
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 KR1020170127241A priority Critical patent/KR20190037668A/ko
Priority to US15/977,827 priority patent/US10867644B2/en
Priority to CN201810676715.7A priority patent/CN109582218B/zh
Publication of KR20190037668A publication Critical patent/KR20190037668A/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

메모리 시스템은 통신 라인을 공유하는 복수의 비휘발성 메모리 장치들; 및 버퍼 및 코어를 포함하고, 상기 통신 라인을 통해 상기 비휘발성 메모리 장치들을 제어하도록 구성된 컨트롤러를 포함하되, 상기 코어는 상기 비휘발성 메모리 장치들에 대한 복수의 리드 요청들의 타입을 판단하고, 상기 타입에 따라 상기 버퍼의 가용 크기를 설정한다.

Description

메모리 시스템 및 그것의 동작 방법{MEMORY SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 메모리 시스템에 관한 것으로, 더욱 상세하게는 비휘발성 메모리 장치를 포함하는 메모리 시스템에 관한 것이다.
메모리 시스템은 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 메모리 시스템은 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 메모리 시스템은 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
본 발명의 실시 예는 오더링된 리드 요청들을 오더를 유지하며 효율적으로 처리할 수 있는 메모리 시스템 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 메모리 시스템은 통신 라인을 공유하는 복수의 비휘발성 메모리 장치들; 및 버퍼 및 코어를 포함하고, 상기 통신 라인을 통해 상기 비휘발성 메모리 장치들을 제어하도록 구성된 컨트롤러를 포함하되, 상기 코어는 상기 비휘발성 메모리 장치들에 대한 복수의 리드 요청들의 타입을 판단하고, 상기 타입에 따라 상기 버퍼의 가용 크기를 설정할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템의 동작 방법은 복수의 비휘발성 메모리 장치들에 대한 복수의 리드 요청들의 타입을 판단하는 단계; 및 상기 타입에 따라 버퍼의 가용 크기를 설정하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템의 동작 방법은 버퍼의 가용 크기를 조정하는 단계; 복수의 리드 요청들 각각을 위한 클러스터들의 할당을 요청하는 단계; 상기 가용 크기에 근거하여 계산된 상기 버퍼의 프리 크기에 근거하여, 상기 클러스터들을 할당하는 단계; 및 상기 클러스터들이 할당된 리드 요청을 처리하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 시스템 및 그것의 동작 방법은 오더링된 리드 요청들을 오더를 유지하며 효율적으로 처리할 수 있다.
도1은 본 발명의 실시 예에 따른 메모리 시스템을 도시하는 블록도,
도2는 본 발명의 실시 예에 따라 제1 내지 제3 리드 요청들을 처리하는 방법을 도시하는 도면,
도3a 및 도3b는 본 발명의 실시 예에 따라 버퍼의 가용 크기를 설정함으로써 인 오더 리드 요청들을 처리하는 방법을 도시하는 도면들,
도4는 본 발명의 실시 예에 따른 메모리 시스템의 동작 방법을 예시적으로 도시한 순서도,
도5는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면,
도6은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면,
도7은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면,
도8은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 네트워크 시스템을 예시적으로 도시하는 도면,
도9는 본 발명의 실시 예에 따른 메모리 시스템에 포함된 비휘발성 메모리 장치를 예시적으로 도시하는 블럭도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 메모리 시스템(100)을 도시하는 블록도이다.
메모리 시스템(100)은 호스트 장치의 라이트 요청에 응답하여, 호스트 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 메모리 시스템(100)은 호스트 장치의 리드 요청에 응답하여, 저장된 데이터를 호스트 장치로 제공하도록 구성될 수 있다.
메모리 시스템(100)은 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
메모리 시스템(100)은 컨트롤러(110) 및 저장 매체(120)를 포함할 수 있다.
컨트롤러(110)는 저장 매체(120)를 제어함으로써 저장 매체(120)에 데이터를 저장할 수 있다. 컨트롤러(110)는 코어(CORE), 버퍼(BUF), 버퍼 매니저(BM) 및 액세스부(ACU)를 포함할 수 있다.
코어(CORE)는 컨트롤러(110)의 전반적인 동작들을 제어할 수 있다. 코어(CORE)는 호스트 장치로부터 리드 요청을 수신할 때, 버퍼 매니저(BM)에게 버퍼(BUF)의 클러스터들의 할당을 요청할 수 있다. 클러스터들은 리드 요청에 따라 저장 매체(120)로부터 리드된 데이터를 호스트 장치로 전송하기 전까지 저장하기 위해서 필요할 수 있다. 코어(CORE)는 리드 요청을 위한 클러스터들이 할당되면 액세스부(ACU)에게 리드 요청의 처리를 지시할 수 있다.
코어(CORE)는 호스트 장치로부터 복수의 리드 요청들을 수신할 때, 리드 요청들의 타입을 판단할 수 있다. 구체적으로, 코어(CORE)는 리드 요청들의 타입이 인 오더인지 또는 아웃 오브 오더인지 판단할 수 있다. 리드 요청들이 오더링된 "인 오더 리드 요청들"일 때, 인 오더 리드 요청들에 따라 각각 리드된 데이터는 해당 오더를 유지하면서 호스트 장치로 전송되어야 할 것이다. 리드 요청들이 오더링되지 않은 "아웃 오브 오더 리드 요청들"일 때, 아웃 오브 오더 리드 요청들에 따라 각각 리드된 데이터는 저장 매체(120)로부터 리드된 순서대로 호스트 장치로 전송되어도 무관할 수 있다.
리드 요청들의 타입이 인 오더일 때, 코어(CORE)는 버퍼(BUF)의 가용 크기를 설정할 수 있다. 구체적으로, 코어(CORE)는 비휘발성 메모리 장치의 단일 리드 동작을 통해 버퍼(BUF)로 전송가능한 최대 데이터 크기의 2배로 가용 크기를 설정할 수 있다. 다른 말로 하면, 버퍼(BUF)의 가용 크기는 2개의 비휘발성 메모리 장치들에 대한 2개의 리드 요청들을 위해 필요한 크기로 설정될 수 있다. 가용 크기를 이와 같이 설정하는 것은, 후술될 바와 같이, 리드 요청이 비휘발성 메모리 장치에 대해 리드 요청들의 오더를 유지하면서 처리되도록 할 수 있다.
버퍼(BUF)의 가용 크기는 소정 크기로 이미 설정되어 있을 수 있다. 소정 크기는, 예를 들어, 제1 내지 제4 비휘발성 메모리 장치들(M1~M4)에 대한 리드 요청들을 위해 필요한 크기로 설정될 수 있다. 실시 예에 따라, 코어(CORE)는 복수의 채널들에 대해 버퍼(BUF)의 클러스터들을 고르게 사용하기 위해 버퍼(BUF)의 가용 크기를 앞서 소정 크기로 설정할 수 있다. 이때, 코어(CORE)는 리드 요청들의 타입이 인 오더일 때, 설정된 가용 크기를 조정할 수 있다. 즉, 코어(CORE)는 비휘발성 메모리 장치의 단일 리드 동작을 통해 버퍼(BUF)로 전송가능한 최대 데이터 크기의 2배로 버퍼(BUF)의 가용 크기를 축소할 수 있다.
그러나, 리드 요청들의 타입이 아웃 오브 오더일 때, 코어(CORE)는 버퍼(BUF)의 가용 크기를 설정하지 않을 수 있다. 만일 버퍼(BUF)의 가용 크기가 소정 크기로 이미 설정되어 있는 경우, 코어(CORE)는 해당 가용 크기를 유지할 수 있다.
그리고, 리드 요청들의 타입이 인 오더일 때 버퍼(BUF)의 가용 크기를 설정한 뒤, 코어(CORE)는 리드 요청들 중에서 오더에 따라 선택된 리드 요청을 위해 클러스터들의 할당을 버퍼 매니저(BM)에게 요청할 수 있다. 리드 요청을 위해 클러스터들이 할당된 뒤, 코어(CORE)는 해당 리드 요청의 처리를 액세스부(ACU)에게 지시할 수 있다.
버퍼(BUF)는 복수의 클러스터들을 포함할 수 있다. 클러스터들은 호스트 장치와 저장 매체(120) 간에 전송되는 데이터를 임시 저장할 수 있다. 클러스터들 각각은 소정 크기의 데이터를 저장할 수 있다. 예를 들어, 클러스터들 각각은 4k 바이트의 데이터를 저장할 수 있지만, 본 발명의 실시 예는 이에 제한되지 않는다.
버퍼 매니저(BM)는 버퍼(BUF)의 클러스터들의 할당 및 해제를 관리할 수 있다. 구체적으로, 버퍼 매니저(BM)는 코어(CORE)의 요청에 따라 버퍼(BUF)의 클러스터들을 리드 요청에 할당할 수 있다. 리드 요청에 따라 저장 매체(120)로부터 리드된 데이터가 클러스터들로 전송되고 클러스터들로부터 호스트 장치로 전송되면, 버퍼 매니저(BM)는 리드 요청에 할당된 클러스터들을 해제할 수 있다.
또한, 버퍼 매니저(BM)는 코어(CORE)의 제어에 따라 가용 크기를 설정하고, 코어(CORE)가 클러스터들의 할당을 요청할 때 설정된 가용 크기에 근거하여 클러스터들을 할당할 수 있다.
한편, 버퍼(BUF)의 가용 크기는, 채널(CH)에 대해 최대한 할당가능한 클러스터들의 크기일 수 있다. 즉, 버퍼(BUF)의 가용 크기는 채널(CH)에 관련될 수 있다. 예를 들어, 저장 매체(120)가 미도시된 다른 채널 및 다른 채널에 연결된 복수의 비휘발성 메모리 장치들을 포함할 때, 버퍼 매니저(BM)는 그 다른 채널에 대한 리드 요청에 대해 채널(CH)에 관해 설정된 가용 크기에 무관하게 클러스터들을 할당할 수 있다.
이제 버퍼 매니저(BM)의 클러스터 할당 방법을 구체적으로 살펴보면, 버퍼 매니저(BM)는 채널(CH)에 대한 버퍼(BUF)의 가용 크기와 현재 할당된 크기의 차이가 리드 요청의 필요 크기 이상일 때, 리드 요청을 위해 클러스터들을 할당할 수 있다. 현재 할당된 크기란, 채널(CH)에 대해 현재 할당된 클러스터들의 크기를 의미할 수 있다. 가용 크기와 현재 할당된 크기의 차이는 이하에서 현재 프리 크기로 언급될 수 있다. 리드 요청의 필요 크기란, 리드 요청의 처리를 위해 필요한 클러스터들의 크기를 의미할 수 있다. 따라서, 클러스터들은 리드 요청의 필요 크기만큼 할당될 수 있다.
액세스부(ACU)는 코어(CORE)의 지시에 따라 리드 요청을 처리할 수 있다. 리드 요청의 처리는 리드 요청을 큐에 삽입하고, 큐에 삽입된 리드 요청에 대응하는 리드 명령을 저장 매체(120)의 비휘발성 메모리 장치로 전송하고, 리드 명령에 따라 비휘발성 메모리 장치로부터 전송된 데이터를 리드 요청을 위해 할당된 클러스터들에 저장하는 일련의 과정일 수 있다.
액세스부(ACU)는 제1 내지 제4 큐들(Q1~Q4)을 포함할 수 있다. 제1 내지 제4 큐들(Q1~Q4)은 제1 내지 제4 비휘발성 메모리 장치들(M1~M4)에 각각 대응할 수 있다. 제1 내지 제4 큐들(Q1~Q4) 각각은 대응하는 비휘발성 메모리 장치에 대해 처리될 리드 요청들을 저장할 수 있다. 한편, 제1 내지 제4 큐들(Q1~Q4)에 삽입된 리드 요청들은 실질적으로 제1 내지 제4 비휘발성 메모리 장치들(M1~M4)의 상태 및 채널(CH)의 상태에 따라 아웃 오브 오더로 처리되기 시작할 수 있다.
본 발명에 따르면, 버퍼(BUF)의 가용 크기를 설정함으로써 결과적으로 인 오더 리드 요청들은 오더를 유지하면서 처리될 수 있다. 본 발명의 동작 방법은 아래에서 자세하게 설명될 것이다.
저장 매체(120)는 액세스부(ACU)의 제어에 따라, 데이터를 저장하고, 저장된 데이터를 리드하여 액세스부(ACU)로 전송할 수 있다.
저장 매체(120)는 제1 내지 제4 비휘발성 메모리 장치들(M1~M4)을 포함할 수 있다. 제1 내지 제4 비휘발성 메모리 장치들(M1~M4)은 액세스부(ACU)와 연결된 채널(CH)을 공유할 수 있다. 채널(CH)은 리드 명령 전송 라인 및 데이터 전송 라인을 포함할 수 있다.
미도시되었지만, 제1 내지 제4 비휘발성 메모리 장치들(M1~M4)은 액세스부(ACU)로부터 별도의 선택 라인들을 통해 개별적으로 선택되어 액세스부(ACU)에 의해 제어될 수 있다. 제1 내지 제4 비휘발성 메모리 장치들(M1~M4) 각각은 채널(CH)을 통해 액세스부(ACU)로부터 리드 명령을 전송받고 리드 명령에 응답하여 데이터를 출력할 수 있다.
비휘발성 메모리 장치는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다.
한편, 도1은 저장 매체(120)가 1개의 채널(CH)에 연결된 4개의 제1 내지 제4 비휘발성 메모리 장치들(M1~M4)을 포함하는 것으로 도시하나, 저장 매체(120)에 포함되는 채널들의 개수 및 단일의 채널에 연결되는 비휘발성 메모리 장치들의 개수는 이에 제한되지 않는다.
도2는 본 발명의 실시 예에 따라 제1 내지 제3 리드 요청들(RQ1~RQ3)을 처리하는 방법을 도시하는 도면이다. 이하에서, 1개의 비휘발성 메모리 장치로부터 단일의 리드 동작을 통해, 예를 들어, 최대 32k 바이트의 데이터가 리드될 수 있고, 제1 내지 제3 리드 요청들(RQ1~RQ3)은 제1 내지 제3 비휘발성 메모리 장치들(M1~M3)로부터 32k 바이트의 데이터를 각각 리드하기 위한 것으로 가정될 것이다.
도2를 참조하면, 호스트 장치는 제1 내지 제3 리드 요청들(RQ1~RQ3)을 메모리 시스템(100)으로 전송할 수 있다.
코어(CORE)는 버퍼 매니저(BM)에게 제1 내지 제3 리드 요청들(RQ1~RQ3)을 위한 클러스터들의 할당을 요청할 수 있다. 채널(CH)에 대한 버퍼(BUF)의 가용 크기는, 예를 들어, 96k 바이트로 설정된 것으로 가정할 것이다. 실시 예에 따라 버퍼(BUF)의 가용 크기는 설정되지 않았을 수 있다.
버퍼(BUF)는 클러스터들(C1~C3)을 포함할 수 있다. 클러스터들(C1~C3) 각각은 32k의 데이터를 저장할 수 있다. 현재 채널(CH)에 대한 버퍼(BUF)의 프리 크기는 96k 바이트일 수 있다. 즉, 채널(CH)에 대해 현재 할당된 클러스터들이 없을 수 있다. 즉, 현재 프리 크기는 제1 내지 제3 리드 요청들(RQ1~RQ3)을 처리하는 데 충분할 수 있다. 따라서, 버퍼 매니저(BM)를 통해 클러스터들(C1~C3)이 제1 내지 제3 리드 요청들(RQ1~RQ3)에 각각 할당될 수 있다. 코어(CORE)는 클러스터들(C1~C3)이 할당된 뒤 액세스부(ACU)로 제1 내지 제3 리드 요청들(RQ1~RQ3)의 처리를 지시할 수 있다.
액세스부(ACU)는 코어(CORE)의 제어에 따라 제1 내지 제3 리드 요청들(RQ1~RQ3)을 제1 내지 제3 큐들(Q1~Q3)에 삽입할 수 있다. 제1 내지 제3 큐들(Q1~Q3)에 삽입된 제1 내지 제3 리드 요청들(RQ1~RQ3)은 제1 내지 제3 비휘발성 메모리 장치들(M1~M3)의 상태 및 채널(CH)의 상태에 따라 아웃 오브 오더로 처리되기 시작할 수 있다. 즉, 제1 내지 제3 리드 요청들(RQ1~RQ3)이 실제로 처리되는 순서는 제1 내지 제3 리드 요청들(RQ1~RQ3)이 제1 내지 제3 큐들(Q1~Q3)에 삽입된 순서와 일치하지 않을 수 있다.
예를 들어, 제1 비휘발성 메모리 장치(M1)가 먼저 아이들 상태가 되고 채널(CH)이 프리일 때, 제1 리드 요청(RQ1)에 대응하는 리드 명령이 제1 비휘발성 메모리 장치(M1)로 먼저 전송될 수 있다. 이어서, 제3 비휘발성 메모리 장치(M3)가 아이들 상태가 되고 채널(CH)이 프리일 때, 제3 리드 요청(RQ3)에 대응하는 리드 명령이 제3 비휘발성 메모리 장치(M3)로 전송될 수 있다. 이어서, 제2 비휘발성 메모리 장치(M2)가 아이들 상태가 되고 채널(CH)이 프리일 때, 제2 리드 요청(RQ2)에 대응하는 리드 명령이 제2 비휘발성 메모리 장치(M2)로 전송될 수 있다.
제1 내지 제3 비휘발성 메모리 장치들(M1~M3)은 리드 명령들에 각각 응답하여 리드 동작들을 부분적으로 병렬적으로 수행할 수 있다. 다만, 제1 내지 제3 비휘발성 메모리 장치들(M1~M3)은 채널(CH)을 공유하므로, 리드 명령을 수신한 순서대로 데이터를 출력할 수 있다. 즉, 제1 비휘발성 메모리 장치(M1), 제3 비휘발성 메모리 장치(M3), 및 제2 비휘발성 메모리 장치(M2)가 데이터를 순차적으로 출력할 수 있다.
이때, 만일 제1 내지 내3 리드 요청들(RQ1~RQ3)이 아웃 오브 오더 리드 요청들이라면, 제1 내지 제3 비휘발성 메모리 장치(M1~M3)로부터 리드된 데이터는 클러스터들(C1~C3)에 전송되는 대로 호스트 장치로 전송될 수 있을 것이다.
다만, 제1 내지 제3 리드 요청들(RQ1~RQ3)이 제1 리드 요청(RQ1)부터 제3 리드 요청(RQ3)까지 오더링된 인 오더 리드 요청들이라면, 도2와 같이 제1 리드 요청(RQ1), 제3 리드 요청(RQ3) 그리고 제2 리드 요청(RQ2)의 순서로 처리될 경우 동작 성능이 하락할 수 있다.
구체적으로, 예를 들어, 제1 내지 제3 리드 요청들(RQ1~RQ3)은 제1 내지 제3 비휘발성 메모리 장치들(M1~M3)에 대해 각각 처리되어야 할 시퀀셜 리드 요청들일 수 있다. 즉, 제1 내지 제3 리드 요청들(RQ1~RQ3)에 의해 제1 내지 제3 비휘발성 메모리 장치들(M1~M3)로부터 리드된 데이터는 오더를 유지하여 호스트 장치로 전송되어야 할 것이다. 따라서, 도2와 같이, 제3 리드 요청(RQ3)이 제2 리드 요청(RQ2)보다 먼저 처리된다면, 제3 리드 요청(RQ3)에 따라 리드된 데이터는 호스트 장치로 전송되지 못하고 클러스터들(C3)에 머물러야 할 수 있다. 그리고, 제2 리드 요청(RQ2)은 제3 리드 요청(RQ3)보다 먼저 처리되어야 바람직할 것이나 제2 큐(Q2)로 일단 입력되면 제2 비휘발성 메모리 장치(M2)의 상태 및 채널(CH)의 상태에 따라 도2와 같이 제3 리드 요청(RQ3)보다 먼저 처리되지 못할 수 있다. 결국, 제2 리드 요청(RQ2)에 따라 리드된 데이터는 클러스터들(C2)로 늦게 전송되고, 호스트 장치로도 늦게 전송되므로, 메모리 시스템(100)의 리드 성능은 하락될 수 있다.
도3a 및 도3b는 본 발명의 실시 예에 따라 버퍼(BUF)의 가용 크기를 설정함으로써 인 오더 리드 요청들(RQ1~RQ3)을 처리하는 방법을 도시하는 도면들이다. 도3a 및 도3b에서 제1 내지 제3 리드 요청들(RQ1~RQ3)은 제1 리드 요청(RQ1)부터 제3 리드 요청(RQ3)까지 오더링된 "인 오더 리드 요청들"로 가정할 것이다.
도3a를 참조하면, 호스트 장치는 제1 내지 제3 리드 요청들(RQ1~RQ3)을 메모리 시스템(100)으로 전송할 수 있다.
코어(CORE)는 제1 내지 제3 리드 요청들(RQ1~RQ3)의 타입이 인 오더인 것으로 판단할 수 있다. 그리고, 제1 내지 제3 리드 요청들(RQ1~RQ3)은 채널(CH)에 대해 처리될 것이므로, 코어(CORE)는 채널(CH)에 대해 버퍼(BUF)의 가용 크기를 설정할 수 있다.
또한, 상술한 바와 같이, 버퍼(BUF)의 가용 크기는 예를 들어, 비휘발성 메모리 장치의 단일의 리드 동작을 통해 버퍼(BUF)로 전송가능한 최대 데이터 크기의 2배로 설정될 수 있다. 따라서, 1개의 비휘발성 메모리 장치로부터, 예를 들어, 최대 32k 바이트의 데이터가 리드될 수 있을 때, 가용 크기는 64k 바이트로 설정될 수 있다. 이러한 경우, 2개의 비휘발성 메모리 장치들에 대한 리드 동작들이 계속 오버랩되면서 처리될 수 있으므로, 결과적으로 제1 내지 제3 리드 요청들(RQ1~RQ3)은 오더를 유지하면서 처리될 수 있다.
버퍼 매니저(BM)는 코어(CORE)의 제어에 따라 채널(CH)에 대한 버퍼(BUF)의 가용 크기를 64k 바이트로 설정/조정할 수 있다.
그리고, 현재 채널(CH)에 대한 버퍼(BUF)의 프리 크기는 64k 바이트일 수 있다. 즉, 채널(CH)에 대해 현재 할당된 클러스터들이 없을 수 있다. 즉, 현재 프리 크기는 제1 및 제2 리드 요청들(RQ1, RQ2)을 처리하는 데 충분할 수 있다. 따라서, 버퍼 매니저(BM)를 통해 클러스터들(C1, C2)이 제1 및 제2 리드 요청들(RQ1, RQ2)에 각각 할당될 수 있다. 코어(CORE)는 클러스터들(C1, C2)이 할당된 뒤 액세스부(ACU)로 제1 및 제2 리드 요청들(RQ1, RQ2)의 처리를 지시할 수 있다.
이때, 만일 코어(CORE)가 버퍼 매니저(BM)에게 제3 리드 요청(RQ3)을 위한 클러스터들의 할당을 요청하더라도 채널(CH)에 대한 가용 크기에 근거하여 제3 리드 요청(RQ3)을 위한 클러스터들은 할당되지 못할 것이다. 즉, 제1 및 제2 리드 요청들(RQ1, RQ2)을 위해 클러스터들(C1, C2)이 가용 크기만큼 이미 할당되었으므로, 즉, 현재 프리 크기가 0 바이트이므로, 제3 리드 요청(RQ3)을 위한 클러스터들은 할당되지 못한다. 따라서, 코어(CORE)는 액세스부(ACU)로 제3 리드 요청(RQ3)을 전달하지 못한다. 즉, 이러한 방식은 제3 리드 요청(RQ3)이 액세스부(ACU)에 의해 처리되는 것을 막을 수 있다.
액세스부(ACU)는 코어(CORE)의 제어에 따라 제1 및 제2 리드 요청들(RQ1, RQ2)을 제1 및 제2 큐들(Q1, Q2)에 삽입할 수 있다. 제1 및 제2 큐들(Q1, Q2)에 삽입된 제1 및 제2 리드 요청들(RQ1, RQ2)은 제1 및 제2 비휘발성 메모리 장치들(M1, M2)의 상태 및 채널(CH)의 상태에 따라 처리되기 시작할 수 있다.
예를 들어, 제1 및 제2 리드 요청들(RQ1, RQ2)은 순차적으로 제1 및 제2 비휘발성 메모리 장치들(M1, M2)에 대해 처리될 수 있다. 즉, 제1 비휘발성 메모리 장치(M1)가 먼저 아이들 상태가 되고 채널(CH)이 프리일 때, 제1 리드 요청(RQ1)에 대응하는 리드 명령이 제1 비휘발성 메모리 장치(M1)로 먼저 전송될 수 있다. 결국 제1 리드 요청(RQ1)이 먼저 처리될 수 있다. 즉, 제1 리드 요청(RQ1)에 따라 제1 비휘발성 메모리 장치(M1)로부터 리드된 데이터는 클러스터들(C1)로 전송되고 오더에 따라 호스트 장치로 전송될 수 있다.
한편, 제1 및 제2 비휘발성 메모리 장치들(M1, M2)은 리드 명령들에 각각 응답하여 리드 동작들을 부분적으로 병렬적으로 수행할 수 있다. 다만, 제1 및 제2 비휘발성 메모리 장치들(M1, M2)은 채널(CH)을 공유하므로, 리드 명령을 먼저 수신한 제1 비휘발성 메모리 장치(M1)가 데이터를 먼저 출력하고 따라서, 제1 리드 요청이 먼저 처리될 수 있다.
이어서, 도3b를 참조하면, 제1 리드 요청(RQ1)의 처리가 완료될 때 제1 리드 요청(RQ1)은 제1 큐(Q1)에서 제거될 수 있다. 또한, 제1 리드 요청(RQ1)에 따라 리드된 데이터가 호스트 장치로 완전히 전송되면 버퍼 매니저(BM)는 클러스터들(C1)을 해제할 수 있다.
코어(CORE)는 버퍼 매니저(BM)에게 제3 리드 요청(RQ3)을 위한 클러스터들의 할당을 요청할 수 있다. 클러스터 할당이 요청되는 제3 리드 요청(RQ3)은 오더에 따라 선택될 수 있다. 즉, 만일 제3 리드 요청(RQ3)에 이어서 오더링된 리드 요청들이 더 존재한다면, 오더에 따라 제3 리드 요청(RQ3)이 우선적으로 선택될 수 있다.
그리고, 클러스터들(C1)이 해제됨으로써, 현재 프리 크기가 제3 리드 요청(RQ3)을 처리하는 데 충분할 것이므로, 제3 리드 요청(RQ3)을 위해 클러스터들(C1)이 버퍼 매니저(BM)를 통해 할당될 수 있다. 코어(CORE)는 클러스터들(C1)이 할당된 뒤 액세스부(ACU)로 제3 리드 요청(RQ3)의 처리를 지시할 수 있다.
액세스부(ACU)는 코어(CORE)의 제어에 따라 제3 리드 요청(RQ3)을 제3 큐(Q3)에 삽입할 수 있다. 제3 큐(Q3)에 삽입된 제3 리드 요청(RQ3)은 제3 비휘발성 메모리 장치(M3)의 상태 및 채널(CH)의 상태에 따라 처리될 수 있다.
한편, 제2 리드 요청(RQ2)은 처리 중일 수 있다. 즉, 제2 리드 요청(RQ2)에 따라 제2 비휘발성 메모리 장치(M2)로부터 리드된 데이터는 클러스터(C2)로 전송되고, 오더에 따라 호스트 장치로 전송될 수 있다.
제2 리드 요청(RQ2)이 처리 중인 사이에, 제3 비휘발성 메모리 장치(M3)가 아이들 상태이고 채널(CH)이 프리일 때, 제3 리드 요청(RQ3)에 대응하는 리드 명령이 제3 비휘발성 메모리 장치(M3)로 전송될 수 있고 제3 리드 요청(RQ3)이 처리될 수 있다. 즉, 제3 리드 요청(RQ3)에 따라 제3 비휘발성 메모리 장치(M3)로부터 리드된 데이터는 클러스터로 전송되고, 오더에 따라 호스트 장치로 전송될 수 있다.
정리하면, 본 발명은, 인 오더 리드 요청들에 응답하여 버퍼(BUF)의 가용 크기를 축소함으로써, 결과적으로 인 오더 리드 요청들을 오더를 유지하며 처리할 수 있다. 따라서, 메모리 시스템(100)의 리드 속도가 향상될 수 있다.
도4는 본 발명의 실시 예에 따른 메모리 시스템(100)의 동작 방법을 예시적으로 도시한 순서도이다. 도4는 코어(CORE)가 호스트 장치로부터 복수의 리드 요청들을 수신할 경우의 동작 방법을 도시한다.
도4를 참조하면, 단계(S110)에서, 코어(CORE)는 호스트 장치로부터 전송된 리드 요청들의 타입을 판단할 수 있다.
단계(S120)에서, 리드 요청들이 인 오더 리드 요청들로 판단될 때 절차는 단계(S130)로 진행될 수 있다. 반면에, 리드 요청들이 아웃 오브 오더 리드 요청들로 판단될 때 절차는 단계(S140)로 진행될 수 있다.
단계(S130)에서, 코어(CORE)는 버퍼(BUF)의 가용 크기를 설정할 수 있다. 예를 들어, 코어(CORE)는 비휘발성 메모리 장치의 단일 리드 동작을 통해 버퍼(BUF)로 전송가능한 최대 데이터 크기의 2배로 가용 크기를 설정할 수 있다. 이때, 설정되는 버퍼(BUF)의 가용 크기는 인 오더 리드 요청들이 처리될 채널(CH)에 관한 것이다.
단계(S140)에서, 코어(CORE)는 리드 요청들 중에서 오더에 따라 선택된 리드 요청의 처리를 위해 클러스터들의 할당을 버퍼 매니저(BM)에게 요청할 수 있다.
단계(S150)에서, 버퍼 매니저(BM)는 버퍼(BUF)의 가용 크기에 근거하여, 클러스터들을 할당할 수 있다. 구체적으로, 버퍼 매니저(BM)는 버퍼(BUF)의 가용 크기와 현재 할당된 크기의 차이가 리드 요청의 필요 크기 이상일 때, 필요 크기의 클러스터들을 리드 요청에 할당할 수 있다.
한편, 버퍼(BUF)의 가용 크기가 설정되어 있지 않을 때, 버퍼 매니저(BM)는 클러스터들을 바로 할당할 수 있다.
단계(S160)에서, 코어(CORE)는 리드 요청의 처리를 액세스부(ACU)에게 지시할 수 있다. 액세스부(ACU)는 지시에 응답하여 리드 요청을 대응하는 비휘발성 메모리 장치에 대해 처리할 수 있다. 액세스부(ACU)는 리드 요청들은 비휘발성 메모리 장치들에 대해 실질적으로 아웃 오브 오더로 처리할 수 있다. 그러나, 버퍼(BUF)의 가용 크기가 상술한 바와 같이 설정될 때, 결과적으로 액세스부(ACU)는 리드 요청을 오더에 따라 비휘발성 메모리 장치에 대해 처리할 수 있다.
한편, 리드 요청의 처리가 완료되고, 리드 요청에 따라 리드된 데이터가 호스트 장치로 완전히 전송되었을 때, 버퍼 매니저(BM)는 리드 요청에 할당된 클러스터들을 해제할 것이다.
단계(S170)에서, 코어(CORE)는 클러스터들을 할당받을 리드 요청이 더 존재하는지 여부를 판단할 수 있다. 리드 요청이 더 존재할 때, 절차는 단계(S140)로 진행될 수 있다. 리드 요청이 더 존재하지 않을 때, 절차는 종료할 수 있다.
도 5는 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브(SSD)를 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다. 도 5를 참조하면, 데이터 처리 시스템(1000)은 호스트 장치(1100)와 솔리드 스테이트 드라이브(solid state drive)(1200)(이하, SSD라 칭함)를 포함할 수 있다.
SSD(1200)는 컨트롤러(1210), 버퍼 메모리 장치(1220), 비휘발성 메모리 장치들(1231~123n), 전원 공급기(1240), 신호 커넥터(1250) 및 전원 커넥터(1260)를 포함할 수 있다.
컨트롤러(1210)는 SSD(1200)의 제반 동작을 제어할 수 있다. 컨트롤러(1210)는 호스트 인터페이스 유닛(1211), 컨트롤 유닛(1212), 랜덤 액세스 메모리(1213), 에러 정정 코드(ECC) 유닛(1214) 및 메모리 인터페이스 유닛(1215)을 포함할 수 있다.
호스트 인터페이스 유닛(1211)은 신호 커넥터(1250)를 통해서 호스트 장치(1100)와 신호(SGL)를 주고 받을 수 있다. 여기에서, 신호(SGL)는 커맨드, 어드레스, 데이터 등을 포함할 수 있다. 호스트 인터페이스 유닛(1211)은, 호스트 장치(1100)의 프로토콜에 따라서, 호스트 장치(1100)와 SSD(1200)를 인터페이싱할 수 있다. 예를 들면, 호스트 인터페이스 유닛(1211)은, 시큐어 디지털(secure digital), USB(universal serial bus), MMC(multi-media card), eMMC(embedded MMC), PCMCIA(personal computer memory card international association), PATA(parallel advanced technology attachment), SATA(serial advanced technology attachment), SCSI(small computer system interface), SAS(serial attached SCSI), PCI(peripheral component interconnection), PCI-E(PCI Expresss), UFS(universal flash storage)와 같은 표준 인터페이스 프로토콜들 중 어느 하나를 통해서 호스트 장치(1100)와 통신할 수 있다.
컨트롤 유닛(1212)은 호스트 장치(1100)로부터 입력된 신호(SGL)를 분석하고 처리할 수 있다. 컨트롤 유닛(1212)은 SSD(1200)를 구동하기 위한 펌웨어 또는 소프트웨어에 따라서 백그라운드 기능 블럭들의 동작을 제어할 수 있다. 랜덤 액세스 메모리(1213)는 이러한 펌웨어 또는 소프트웨어를 구동하기 위한 동작 메모리로서 사용될 수 있다.
에러 정정 코드(ECC) 유닛(1214)은 비휘발성 메모리 장치들(1231~123n)로 전송될 데이터의 패리티 데이터를 생성할 수 있다. 생성된 패리티 데이터는 데이터와 함께 비휘발성 메모리 장치들(1231~123n)에 저장될 수 있다. 에러 정정 코드(ECC) 유닛(1214)은 패리티 데이터에 근거하여 비휘발성 메모리 장치들(1231~123n)로부터 독출된 데이터의 에러를 검출할 수 있다. 만약, 검출된 에러가 정정 범위 내이면, 에러 정정 코드(ECC) 유닛(1214)은 검출된 에러를 정정할 수 있다.
메모리 인터페이스 유닛(1215)은, 컨트롤 유닛(1212)의 제어에 따라서, 비휘발성 메모리 장치들(1231~123n)에 커맨드 및 어드레스와 같은 제어 신호를 제공할 수 있다. 그리고 메모리 인터페이스 유닛(1215)은, 컨트롤 유닛(1212)의 제어에 따라서, 비휘발성 메모리 장치들(1231~123n)과 데이터를 주고받을 수 있다. 예를 들면, 메모리 인터페이스 유닛(1215)은 버퍼 메모리 장치(1220)에 저장된 데이터를 비휘발성 메모리 장치들(1231~123n)로 제공하거나, 비휘발성 메모리 장치들(1231~123n)로부터 읽혀진 데이터를 버퍼 메모리 장치(1220)로 제공할 수 있다.
버퍼 메모리 장치(1220)는 비휘발성 메모리 장치들(1231~123n)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(1220)는 비휘발성 메모리 장치들(1231~123n)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(1220)에 임시 저장된 데이터는 컨트롤러(1210)의 제어에 따라 호스트 장치(1100) 또는 비휘발성 메모리 장치들(1231~123n)로 전송될 수 있다.
비휘발성 메모리 장치들(1231~123n)은 SSD(1200)의 저장 매체로 사용될 수 있다. 비휘발성 메모리 장치들(1231~123n) 각각은 복수의 채널들(CH1~CHn)을 통해 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 비휘발성 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 비휘발성 메모리 장치들은 동일한 신호 버스 및 데이터 버스에 연결될 수 있다.
전원 공급기(1240)는 전원 커넥터(1260)를 통해 입력된 전원(PWR)을 SSD(1200) 백그라운드에 제공할 수 있다. 전원 공급기(1240)는 보조 전원 공급기(1241)를 포함할 수 있다. 보조 전원 공급기(1241)는 서든 파워 오프(sudden power off)가 발생되는 경우, SSD(1200)가 정상적으로 종료될 수 있도록 전원을 공급할 수 있다. 보조 전원 공급기(1241)는 대용량 캐패시터들(capacitors)을 포함할 수 있다.
신호 커넥터(1250)는 호스트 장치(1100)와 SSD(1200)의 인터페이스 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있다.
전원 커넥터(1260)는 호스트 장치(1100)의 전원 공급 방식에 따라서 다양한 형태의 커넥터로 구성될 수 있다.
도 6은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다. 도 6을 참조하면, 데이터 처리 시스템(2000)은 호스트 장치(2100)와 메모리 시스템(2200)을 포함할 수 있다.
호스트 장치(2100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(2100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
호스트 장치(2100)는 소켓(socket), 슬롯(slot) 또는 커넥터(connector)와 같은 접속 터미널(2110)을 포함할 수 있다. 메모리 시스템(2200)은 접속 터미널(2110)에 마운트(mount)될 수 있다.
메모리 시스템(2200)은 인쇄 회로 기판과 같은 기판 형태로 구성될 수 있다. 메모리 시스템(2200)은 메모리 모듈 또는 메모리 카드로 불릴 수 있다. 메모리 시스템(2200)은 컨트롤러(2210), 버퍼 메모리 장치(2220), 비휘발성 메모리 장치(2231~2232), PMIC(power management integrated circuit)(2240) 및 접속 터미널(2250)을 포함할 수 있다.
컨트롤러(2210)는 메모리 시스템(2200)의 제반 동작을 제어할 수 있다. 컨트롤러(2210)는 도 5에 도시된 컨트롤러(1210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(2220)는 비휘발성 메모리 장치들(2231~2232)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(2220)는 비휘발성 메모리 장치들(2231~2232)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(2220)에 임시 저장된 데이터는 컨트롤러(2210)의 제어에 따라 호스트 장치(2100) 또는 비휘발성 메모리 장치들(2231~2232)로 전송될 수 있다.
비휘발성 메모리 장치들(2231~2232)은 메모리 시스템(2200)의 저장 매체로 사용될 수 있다.
PMIC(2240)는 접속 터미널(2250)을 통해 입력된 전원을 메모리 시스템(2200) 백그라운드에 제공할 수 있다. PMIC(2240)는, 컨트롤러(2210)의 제어에 따라서, 메모리 시스템(2200)의 전원을 관리할 수 있다.
접속 터미널(2250)은 호스트 장치의 접속 터미널(2110)에 연결될 수 있다. 접속 터미널(2250)을 통해서, 호스트 장치(2100)와 메모리 시스템(2200) 간에 커맨드, 어드레스, 데이터 등과 같은 신호와, 전원이 전달될 수 있다. 접속 터미널(2250)은 호스트 장치(2100)와 메모리 시스템(2200)의 인터페이스 방식에 따라 다양한 형태로 구성될 수 있다. 접속 터미널(2250)은 메모리 시스템(2200)의 어느 한 변에 배치될 수 있다.
도 7은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템을 예시적으로 도시하는 도면이다. 도 7을 참조하면, 데이터 처리 시스템(3000)은 호스트 장치(3100)와 메모리 시스템(3200)을 포함할 수 있다.
호스트 장치(3100)는 인쇄 회로 기판(printed circuit board)과 같은 기판(board) 형태로 구성될 수 있다. 비록 도시되지 않았지만, 호스트 장치(3100)는 호스트 장치의 기능을 수행하기 위한 백그라운드 기능 블럭들을 포함할 수 있다.
메모리 시스템(3200)은 표면 실장형 패키지 형태로 구성될 수 있다. 메모리 시스템(3200)은 솔더 볼(solder ball)(3250)을 통해서 호스트 장치(3100)에 마운트될 수 있다. 메모리 시스템(3200)은 컨트롤러(3210), 버퍼 메모리 장치(3220) 및 비휘발성 메모리 장치(3230)를 포함할 수 있다.
컨트롤러(3210)는 메모리 시스템(3200)의 제반 동작을 제어할 수 있다. 컨트롤러(3210)는 도 5에 도시된 컨트롤러(1210)와 동일하게 구성될 수 있다.
버퍼 메모리 장치(3220)는 비휘발성 메모리 장치(3230)에 저장될 데이터를 임시 저장할 수 있다. 또한, 버퍼 메모리 장치(3220)는 비휘발성 메모리 장치들(3230)로부터 읽혀진 데이터를 임시 저장할 수 있다. 버퍼 메모리 장치(3220)에 임시 저장된 데이터는 컨트롤러(3210)의 제어에 따라 호스트 장치(3100) 또는 비휘발성 메모리 장치(3230)로 전송될 수 있다.
비휘발성 메모리 장치(3230)는 메모리 시스템(3200)의 저장 매체로 사용될 수 있다.
도 8은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 네트워크 시스템을 예시적으로 도시하는 도면이다. 도 8을 참조하면, 네트워크 시스템(4000)은 네트워크(4500)를 통해서 연결된 서버 시스템(4300) 및 복수의 클라이언트 시스템들(4410~4430)을 포함할 수 있다.
서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)의 요청에 응답하여 데이터를 서비스할 수 있다. 예를 들면, 서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)로부터 제공된 데이터를 저장할 수 있다. 다른 예로서, 서버 시스템(4300)은 복수의 클라이언트 시스템들(4410~4430)로 데이터를 제공할 수 있다.
서버 시스템(4300)은 호스트 장치(4100) 및 메모리 시스템(4200)을 포함할 수 있다. 메모리 시스템(4200)은 도 1의 메모리 시스템(100), 도 5의 SSD(1200), 도 6의 메모리 시스템(2200), 도 7의 메모리 시스템(3200)으로 구성될 수 있다.
도 9는 본 발명의 실시 예에 따른 메모리 시스템에 포함된 비휘발성 메모리 장치를 예시적으로 도시하는 블럭도이다. 도 9를 참조하면, 비휘발성 메모리 장치(300)는 메모리 셀 어레이(310), 행 디코더(320), 데이터 읽기/쓰기 블럭(330), 열 디코더(340), 전압 발생기(350) 및 제어 로직(360)을 포함할 수 있다.
메모리 셀 어레이(310)는 워드 라인들(WL1~WLm)과 비트 라인들(BL1~BLn)이 서로 교차된 영역에 배열된 메모리 셀(MC)들을 포함할 수 있다.
행 디코더(320)는 워드 라인들(WL1~WLm)을 통해서 메모리 셀 어레이(310)와 연결될 수 있다. 행 디코더(320)는 제어 로직(360)의 제어에 따라 동작할 수 있다. 행 디코더(320)는 외부 장치(도시되지 않음)로부터 제공된 어드레스를 디코딩할 수 있다. 행 디코더(320)는 디코딩 결과에 근거하여 워드 라인들(WL1~WLm)을 선택하고, 구동할 수 있다. 예시적으로, 행 디코더(320)는 전압 발생기(350)로부터 제공된 워드 라인 전압을 워드 라인들(WL1~WLm)에 제공할 수 있다.
데이터 읽기/쓰기 블럭(330)은 비트 라인들(BL1~BLn)을 통해서 메모리 셀 어레이(310)와 연결될 수 있다. 데이터 읽기/쓰기 블럭(330)은 비트 라인들(BL1~BLn) 각각에 대응하는 읽기/쓰기 회로들(RW1~RWn)을 포함할 수 있다. 데이터 읽기/쓰기 블럭(330)은 제어 로직(360)의 제어에 따라 동작할 수 있다. 데이터 읽기/쓰기 블럭(330)은 동작 모드에 따라서 쓰기 드라이버로서 또는 감지 증폭기로서 동작할 수 있다. 예를 들면, 데이터 읽기/쓰기 블럭(330)은 쓰기 동작 시 외부 장치로부터 제공된 데이터를 메모리 셀 어레이(310)에 저장하는 쓰기 드라이버로서 동작할 수 있다. 다른 예로서, 데이터 읽기/쓰기 블럭(330)은 읽기 동작 시 메모리 셀 어레이(310)로부터 데이터를 독출하는 감지 증폭기로서 동작할 수 있다.
열 디코더(340)는 제어 로직(360)의 제어에 따라 동작할 수 있다. 열 디코더(340)는 외부 장치로부터 제공된 어드레스를 디코딩할 수 있다. 열 디코더(340)는 디코딩 결과에 근거하여 비트 라인들(BL1~BLn) 각각에 대응하는 데이터 읽기/쓰기 블럭(330)의 읽기/쓰기 회로들(RW1~RWn)과 데이터 입출력 라인(또는 데이터 입출력 버퍼)을 연결할 수 있다.
전압 발생기(350)는 비휘발성 메모리 장치(300)의 백그라운드 동작에 사용되는 전압을 생성할 수 있다. 전압 발생기(350)에 의해서 생성된 전압들은 메모리 셀 어레이(310)의 메모리 셀들에 인가될 수 있다. 예를 들면, 프로그램 동작 시 생성된 프로그램 전압은 프로그램 동작이 수행될 메모리 셀들의 워드 라인에 인가될 수 있다. 다른 예로서, 소거 동작 시 생성된 소거 전압은 소거 동작이 수행될 메모리 셀들의 웰-영역에 인가될 수 있다. 다른 예로서, 읽기 동작 시 생성된 읽기 전압은 읽기 동작이 수행될 메모리 셀들의 워드 라인에 인가될 수 있다.
제어 로직(360)은 외부 장치로부터 제공된 제어 신호에 근거하여 비휘발성 메모리 장치(300)의 제반 동작을 제어할 수 있다. 예를 들면, 제어 로직(360)은 비휘발성 메모리 장치(300)의 읽기, 쓰기, 소거 동작을 제어할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 메모리 시스템
110: 컨트롤러
CORE: 코어
BUF: 버퍼
BM: 버퍼 매니저
ACU: 액세스부
Q1~Q4: 제1 내지 제4 큐들
120: 저장 매체
M1~M4: 제1 내지 제4 비휘발성 메모리 장치들

Claims (19)

  1. 통신 라인을 공유하는 복수의 비휘발성 메모리 장치들; 및
    버퍼 및 코어를 포함하고, 상기 통신 라인을 통해 상기 비휘발성 메모리 장치들을 제어하도록 구성된 컨트롤러를 포함하되,
    상기 코어는 상기 비휘발성 메모리 장치들에 대한 복수의 리드 요청들의 타입을 판단하고, 상기 타입에 따라 상기 버퍼의 가용 크기를 설정하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 코어는, 상기 타입이 인 오더일 때 상기 가용 크기를 설정하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 코어는, 비휘발성 메모리 장치의 단일 리드 동작을 통해 상기 버퍼로 전송가능한 최대 데이터 크기의 2배로 상기 가용 크기를 설정하는 메모리 시스템.
  4. 제1항에 있어서,
    상기 컨트롤러는, 버퍼 매니저 및 액세스부를 더 포함하고,
    상기 코어는, 상기 리드 요청들의 오더에 따라 선택된 리드 요청의 처리를 위해 클러스터들의 할당을 상기 버퍼 매니저에게 요청하고, 상기 클러스터들이 할당된 뒤 상기 리드 요청의 처리를 액세스부에게 지시하고,
    상기 버퍼 매니저는, 상기 가용 크기에 근거하여, 상기 클러스터들을 할당하는 메모리 시스템.
  5. 제4항에 있어서,
    상기 버퍼 매니저는, 상기 가용 크기와 현재 할당된 크기의 차이가 상기 리드 요청의 필요 크기 이상일 때, 상기 필요 크기의 클러스터들을 할당하는 메모리 시스템.
  6. 제4항에 있어서,
    상기 액세스부는 상기 비휘발성 메모리 장치들에 각각 대응하는 복수의 큐들을 포함하고, 상기 리드 요청이 전송될 비휘발성 메모리 장치에 대응하는 큐에 상기 리드 요청을 삽입하는 메모리 시스템.
  7. 제4항에 있어서,
    상기 액세스부는 상기 복수의 큐들에 삽입된 리드 요청들을 상기 비휘발성 메모리 장치들에 대해 아웃 오브 오더로 처리하는 메모리 시스템.
  8. 제4항에 있어서,
    상기 버퍼 매니저는, 상기 리드 요청의 처리가 완료되었을 때, 상기 클러스터들을 해제하는 메모리 시스템.
  9. 복수의 비휘발성 메모리 장치들에 대한 복수의 리드 요청들의 타입을 판단하는 단계; 및
    상기 타입에 따라 버퍼의 가용 크기를 설정하는 단계를 포함하는 메모리 시스템의 동작 방법.
  10. 제9항에 있어서,
    상기 가용 크기를 설정하는 단계는,
    상기 타입이 인 오더일 때 상기 가용 크기를 설정하는 단계를 포함하는 메모리 시스템의 동작 방법.
  11. 제9항에 있어서,
    상기 가용 크기를 설정하는 단계는,
    비휘발성 메모리 장치의 단일 리드 동작을 통해 상기 버퍼로 전송가능한 최대 데이터 크기의 2배로 상기 가용 크기를 설정하는 단계를 포함하는 메모리 시스템의 동작 방법.
  12. 제9항에 있어서,
    상기 리드 요청들의 오더에 따라 선택된 리드 요청의 처리를 위해 클러스터들의 할당을 버퍼 매니저에게 요청하는 단계;
    상기 버퍼 매니저가 상기 가용 크기에 근거하여, 상기 클러스터들을 할당하는 단계; 및
    상기 클러스터들이 할당된 뒤, 상기 리드 요청의 처리를 액세스부에게 지시하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  13. 제12항에 있어서,
    상기 클러스터들을 할당하는 단계는,
    상기 가용 크기와 현재 할당된 크기의 차이가 상기 리드 요청의 필요 크기 이상일 때, 상기 필요 크기의 클러스터들을 할당하는 단계를 포함하는 메모리 시스템의 동작 방법.
  14. 제12항에 있어서,
    상기 액세스부가 상기 리드 요청을 복수의 큐들 중 대응하는 큐에 삽입하는 단계; 및
    상기 액세스부가 상기 리드 요청에 대응하는 명령을 상기 큐에 대응하는 비휘발성 메모리 장치로 전송하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  15. 제12항에 있어서,
    상기 리드 요청의 처리가 완료되었을 때, 상기 버퍼 매니저가 상기 클러스터들을 해제하는 단계를 더 포함하는 메모리 시스템의 동작 방법.
  16. 제9항에 있어서,
    상기 복수의 비휘발성 메모리 장치들은 통신 라인을 공유하는 메모리 시스템의 동작 방법.
  17. 버퍼의 가용 크기를 조정하는 단계;
    복수의 리드 요청들 각각을 위한 클러스터들의 할당을 요청하는 단계;
    상기 가용 크기에 근거하여 계산된 상기 버퍼의 프리 크기에 근거하여, 상기 클러스터들을 할당하는 단계; 및
    상기 클러스터들이 할당된 리드 요청을 처리하는 단계를 포함하는 메모리 시스템의 동작 방법.
  18. 제17항에 있어서,
    상기 가용 크기를 조정하는 단계는,
    상기 리드 요청들이 인 오더 리드 요청들일 때 상기 가용 크기를 조정하는 단계를 포함하는 메모리 시스템의 동작 방법.
  19. 제18항에 있어서,
    상기 가용 크기를 조정하는 단계는,
    비휘발성 메모리 장치의 단일 리드 동작을 통해 상기 버퍼로 전송가능한 최대 데이터 크기의 2배로 상기 가용 크기를 설정하는 단계를 포함하는 메모리 시스템의 동작 방법.
KR1020170127241A 2017-09-29 2017-09-29 메모리 시스템 및 그것의 동작 방법 KR20190037668A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170127241A KR20190037668A (ko) 2017-09-29 2017-09-29 메모리 시스템 및 그것의 동작 방법
US15/977,827 US10867644B2 (en) 2017-09-29 2018-05-11 Memory system and operating method thereof
CN201810676715.7A CN109582218B (zh) 2017-09-29 2018-06-27 存储器系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170127241A KR20190037668A (ko) 2017-09-29 2017-09-29 메모리 시스템 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20190037668A true KR20190037668A (ko) 2019-04-08

Family

ID=65896214

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170127241A KR20190037668A (ko) 2017-09-29 2017-09-29 메모리 시스템 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US10867644B2 (ko)
KR (1) KR20190037668A (ko)
CN (1) CN109582218B (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101562559B (zh) * 2008-04-15 2011-12-07 大唐移动通信设备有限公司 一种串行Rapid IO链路数据传输的方法及装置
TWI409633B (zh) * 2010-02-04 2013-09-21 Phison Electronics Corp 快閃記憶體儲存裝置、其控制器與資料寫入方法
JP2012221038A (ja) * 2011-04-05 2012-11-12 Toshiba Corp メモリシステム
US9274964B2 (en) * 2012-02-02 2016-03-01 Qualcomm Incorporated Multi-bank cache memory
KR102130578B1 (ko) 2014-12-02 2020-07-06 에스케이하이닉스 주식회사 반도체 장치
US10262712B2 (en) * 2015-03-09 2019-04-16 Toshiba Memory Corporation Memory device with a control circuit to control data reads

Also Published As

Publication number Publication date
CN109582218B (zh) 2022-03-22
US10867644B2 (en) 2020-12-15
CN109582218A (zh) 2019-04-05
US20190103144A1 (en) 2019-04-04

Similar Documents

Publication Publication Date Title
KR20190019712A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102381233B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20220104486A (ko) 메모리 시스템, 그것의 동작 방법 및 컴퓨팅 시스템
KR20190087072A (ko) 데이터 저장 장치, 그것의 동작 방법 및 비휘발성 메모리 장치
KR20190076296A (ko) 메모리 시스템 및 그것의 동작 방법
KR20190032104A (ko) 비휘발성 메모리 장치, 비휘발성 메모리 장치를 포함하는 데이터 저장 장치 및 그것의 동작 방법
KR20190019721A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200054534A (ko) 메모리 시스템 및 그것의 동작 방법
KR20190023296A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200043814A (ko) 메모리 시스템 및 그것의 동작 방법
US11263126B2 (en) Data storage device and operating method thereof
KR20210056628A (ko) 메모리 시스템
KR102527925B1 (ko) 메모리 시스템 및 그것의 동작 방법
KR20210063724A (ko) 메모리 시스템
US11467910B2 (en) Memory system re-performing access operation and operating method thereof
KR102545229B1 (ko) 메모리 시스템 및 그것의 동작 방법
KR20180077872A (ko) 불휘발성 메모리 장치의 동작 방법 및 그것을 포함하는 데이터 저장 장치의 동작 방법
US10628067B2 (en) Memory system and operating method thereof
KR20220080254A (ko) 메모리 시스템 및 메모리 시스템의 컨트롤러
KR20190037668A (ko) 메모리 시스템 및 그것의 동작 방법
KR20210055448A (ko) 데이터 저장 장치 및 그 동작 방법
KR20200073016A (ko) 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법
KR20190070092A (ko) 메모리 시스템 및 그것의 동작 방법
KR20190069966A (ko) 비휘발성 메모리 장치, 이를 이용하는 메모리 시스템 및 그것의 동작 방법
US12026398B2 (en) Memory system performing flush operation for buffer region