KR101608910B1 - 비휘발성 메모리의 데이터 판독용 제어기 - Google Patents

비휘발성 메모리의 데이터 판독용 제어기 Download PDF

Info

Publication number
KR101608910B1
KR101608910B1 KR1020127004159A KR20127004159A KR101608910B1 KR 101608910 B1 KR101608910 B1 KR 101608910B1 KR 1020127004159 A KR1020127004159 A KR 1020127004159A KR 20127004159 A KR20127004159 A KR 20127004159A KR 101608910 B1 KR101608910 B1 KR 101608910B1
Authority
KR
South Korea
Prior art keywords
group
data units
data
sequence
retrieved
Prior art date
Application number
KR1020127004159A
Other languages
English (en)
Other versions
KR20120055563A (ko
Inventor
쳉 쿠오 후앙
시우-헝 프레드 오우
라우 응우옌
페리 니오스
Original Assignee
마벨 월드 트레이드 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마벨 월드 트레이드 리미티드 filed Critical 마벨 월드 트레이드 리미티드
Publication of KR20120055563A publication Critical patent/KR20120055563A/ko
Application granted granted Critical
Publication of KR101608910B1 publication Critical patent/KR101608910B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0689Disk arrays, e.g. RAID, JBOD

Abstract

본 개시는 솔리드 스테이트 드라이브 제어기에 관한 시스템 및 기법들을 포함한다. 일부 구현예들에서, 디바이스는 호스트로부터의 명령에 대응되는 데이터 블록을 보유하는 버퍼를 포함한다. 명령은 데이터 블록과 논리적 시퀀스를 식별하게 하며, 논리적 시퀀스는 데이터 블록이 송신되는 시퀀스이다. 명령에 응답하여, 디바이스에 포함된 데이터 검색기는 상기 논리적 시퀀스와 상이한 검색 시퀀스로 데이터 블록의 부분들을 비휘발성 메모리 유닛들로부터 검색한다. 디바이스가 복수의 데이터 블록들을 식별하게 하는 복수의 명령들을 수신하면, 디바이스는 모든 명령들에 의해 식별되는 데이터 블록들의 부분들을 검색함으로써 명령들을 병렬적으로 처리한다.

Description

비휘발성 메모리의 데이터 판독용 제어기{CONTROLLER FOR READING DATA FROM NON-VOLATILE MEMORY}
본 개시는 솔리드 스테이트 드라이브(solid state drive, SSD)에 관한 시스템 및 기법들을 서술한 것이다.
본 출원은 2009년 8월 11일에 출원된 명칭을 "An Efficient Random Read Strategy and Implementation for Solid-State Devices"로 하는 미국 특허출원 제61/233,118호와, 2009년 10월 30일에 출원된 명칭을 "A Method for Maximizing the Read Performance of A Set of Large Unbalanced Commands"로 하는 미국 특허출원 제61/256,502호에 대하여 미국 특허법 제119조(e)에 따른 우선권을 향유한다. 상기 특허출원들의 개시들은 본 명세서에서 그 전체가 참조로서 포함된다.
SSD는 데이터를 저장하기 위해 솔리드 스테이트(solid state) 메모리를 사용하는 데이터 저장 디바이스이다. 비휘발성 메모리, 예컨대 NAND 기반의 플래쉬 메모리가 SSD의 저장 디바이스로서 종종 사용된다. SSD는 비휘발성 메모리 디바이스에 동작시 연결되며, 비휘발성 메모리 디바이스에 데이터를 기록(write)하고 그로부터 데이터를 검색(retrieve)하도록 구성되는 제어기를 포함한다. 종종, SSD를 통한 데이터 처리량(data throughput)을 증가시키기 위해 복수의 비휘발성 메모리 디바이스들이 SSD 제어기에 연결된다. 한 데이터 블록은 비휘발성 메모리 유닛들의 섹터들에 저장된다. SSD 제어기는 SSD 제어기의 각 채널에 동작시 연결되는 비휘발성 메모리 유닛들의 섹터들을 스캔(scan)함으로써 SSD 제어기의 채널들을 통해 데이터 블록의 부분들을 검색할 수 있다. 일부 상황들에서, 데이터 블록의 전부 또는 부분들은 하나의 채널에 동작시 연결되는 비휘발성 메모리 유닛들의 섹터들에 집중될 수 있다.
본 명세서는 비휘발성 메모리로부터 데이터를 판독하기 위한 제어기에 관한 기술들을 설명한다. 설명되는 시스템 및 기법들의 획기적인 양상은 버퍼를 포함하는 디바이스로서 구현될 수 있으며 버퍼는 명령에 대응되는 데이터 블록을 보유하도록 구성된다. 명령은 데이터 블록과 제1 시퀀스를 식별하게 하며, 제1 시퀀스는 식별된 데이터 블록이 송신되는 시퀀스이다. 데이터 블록의 부분들은 각각의 비휘발성 메모리 유닛들에 저장된다. 디바이스는 명령에 응답하여 각각의 비휘발성 메모리 유닛들로부터 데이터 블록의 부분들을 검색하도록 구성되는 데이터 검색기를 포함한다. 데이터 검색기는 제1 시퀀스와 상이한 제2 시퀀스로 부분들을 검색하고 데이터 블록의 검색된 부분들을 버퍼로 송신하도록 구성된다. 제2 시퀀스로 검색된 데이터 블록이 추적된다. 버퍼는 데이터 검색기가 데이터 블록에 포함된 모든 부분들을 검색하였다는 표시에 응답하여 데이터 블록을 송신한다.
이 양상 및 다른 양상들은 다음의 특징들을 하나 이상 포함할 수 있다. 데이터 검색기는 제1 명령에 대응되는 데이터 블록의 부분들과 제2 명령에 대응되는 데이터 블록의 부분들을 인터리브하도록 구성될 수 있다. 각 비휘발성 메모리 유닛은 복수의 섹터들을 포함할 수 있다. 데이터 블록의 부분들은 비휘발성 메모리 유닛들의 섹터들에 걸쳐 저장될 수 있다. 데이터 검색기는 섹터들로부터 데이터 블록들의 부분들을 제2 시퀀스로 검색하도록 구성될 수 있다. 디바이스는 시퀀서를 더 포함할 수 있으며, 시퀀서는 제1 시퀀스를 수신하고, 제2 시퀀스로 검색된 데이터 블록을 추적하고, 데이터 검색기가 데이터 블록에 포함된 모든 부분들을 검색하였다는 표시를 제공하도록 구성될 수 있다. 디바이스는 에러 검사 및 정정 유닛을 더 포함할 수 있으며, 에러 검사 및 정정 유닛은 데이터 검색기에 동작시 연결되며 데이터 검색기에 의해 검색된 데이터 블록의 하나 이상의 부분들을 검사하도록 구성되고, 데이터 검색기는 제2 시퀀스로 데이터 블록의 부분들을 에러 검사 및 정정 유닛으로 송신한다. 에러 검사 및 정정 유닛은 시퀀서에 동작시 연결될 수 있으며 데이터 블록의 부분에 에러가 없다는 것을 표시하는 신호를 시퀀서로 송신하도록 구성될 수 있다. 시퀀서는 데이터 블록의 각 부분에 대해 에러 검사 및 정정 유닛이 데이터 블록의 부분의 지시자와 그 부분에 에러가 없다는 것을 표시하는 신호를 송신하는지를 결정함으로써 제2 시퀀스로 검색된 데이터 블록을 추적할 수 있다.
설명된 시스템 및 기법들의 또 다른 획기적인 양상은 방법으로서 구현될 수 있으며, 상기 방법은 데이터 블록에 대한 명령을 수신하는 것을 포함한다. 명령은 데이터 블록과 제1 시퀀스를 식별하게 하며, 제1 시퀀스는 식별된 데이터 블록이 송신되는 시퀀스이다. 데이터 블록의 부분들은 각각의 비휘발성 메모리 유닛들에 저장된다. 상기 방법은 프로세싱 회로들에 의해 제1 시퀀스와 상이한 제2 시퀀스로 각각의 비휘발성 메모리 유닛들로부터 데이터 블록의 부분들을 검색하는 것을 포함한다. 검색된 데이터 블록은 버퍼에 저장된다. 상기 방법은 검색된 데이터가 제2 시퀀스에 따라 데이터 블록의 모든 부분들을 포함하는지를 결정하는 것과 상기 결정에 응답하여 버퍼에게 데이터 블록을 송신할 것을 지시하는 것을 포함한다.
이 양상 및 다른 양상들은 다음의 특징들을 하나 이상 포함할 수 있다. 제2 시퀀스로 검색된 데이터 블록의 부분들은 추적될 수 있다. 추가적인 데이터 블록들을 송신하라는 추가적인 명령이 수신될 수 있다. 명령에 대응되는 데이터 블록과 추가적인 명령에 대응되는 추가적인 데이터 블록은 병렬적으로 검색될 수 있다. 데이터 블록의 부분들은 추가적인 데이터 블록의 부분들과 인터리브될 수 있다. 인터리브된 부분들은 버퍼에 저장될 수 있다. 데이터 블록의 검색된 부분들은 버퍼로 송신될 수 있다. 각 비휘발성 메모리 유닛은 복수의 섹터들을 포함할 수 있다. 데이터 블록의 부분들은 비휘발성 메모리 유닛들의 섹터들에 걸쳐 저장될 수 있다. 데이터 블록의 부분들을 검색하는 것은 제2 시퀀스로 데이터 블록의 부분들을 섹터들로부터 검색하는 것을 포함할 수 있다. 데이터 블록의 하나 이상의 부분들은 검색된 데이터 블록에 에러가 없는지를 결정하기 위해 검사될 수 있다. 데이터 블록의 부분에 에러가 없다는 것을 표시하는 신호가 송신될 수 있다. 상기 추적은 데이터 블록의 각 부분에 대해 블록의 부분에 대한 식별자와 그 부분에 에러가 없다는 것을 표시하는 신호가 송신될 수 있는지를 결정함으로써 제2 시퀀스로 검색된 데이터 블록을 추적하는 것을 포함할 수 있다.
설명된 시스템 및 기법들은 본 명세서에서 개시된 구조적 수단들 및 그것들의 구조적 균등물들과 같이 전자 회로, 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 또는 그들의 조합으로 구현될 수 있다. 이는 하나 이상의 데이터 처리 장치(예를 들어, 프로그램가능한 프로세서를 포함하는 신호 처리 디바이스)로 하여금 설명된 동작들을 수행하게 하도록 동작가능한 프로그램을 포함하는 적어도 하나의 컴퓨터 판독가능한 매체를 포함할 수 있다. 따라서, 프로그램 구현예들은 개시된 방법, 시스템, 또는 장치로부터 실현될 수 있고, 장치 구현예들은 개시된 시스템, 컴퓨터 판독가능한 매체, 또는 방법으로부터 실현될 수 있다. 유사하게, 방법 구현예들은 개시된 시스템, 컴퓨터 판독가능한 매체, 또는 장치로부터 실현될 수 있고, 시스템 구현예들은 개시된 방법, 컴퓨터 판독가능한 매체, 또는 장치로부터 실현될 수 있다.
예를 들어, 아래의 개시된 실시예(들)는 전용 데이터 처리 장치(예를 들어, 무선 액세스 포인트, 원격 환경 모니터(remote environment monitor), 라우터, 스위치, 컴퓨터 시스템 컴포넌트, 매체 액세스 유닛(medium access unit)), 모바일 데이터 처리 장치(예를 들어, 무선 클라이언트, 휴대폰, PDA(personal digital assistant), 모바일 컴퓨터, 디지털 카메라), 범용 데이터 처리 장치(예를 들어, 미니컴퓨터, 서버, 메인프레임, 슈퍼컴퓨터), 또는 이들의 조합(다만 이들로만 제한되는 것은 아님)을 포함하여 다양한 시스템 및 장치로 구현될 수 있다.
따라서, 설명된 시스템 및 기법들의 또 다른 양상에 따라, 시스템은 데이터 블록의 부분들을 저장하도록 구성되는 복수의 비휘발성 메모리 유닛들, 하나 이상의 비휘발성 메모리 유닛들에 저장된 하나 이상의 데이터 블록들을 수신하기 위해 명령들을 송신하도록 구성되는 호스트, 및 비휘발성 메모리 유닛들과 호스트 사이에 데이터를 송신하도록 구성되는 제어기를 포함할 수 있다. 상기 제어기는 호스트로부터 명령들을 수신하고, 각 명령은 데이터 블록과 제1 시퀀스를 식별하게 하고, 제1 시퀀스는 데이터 블록이 호스트로 송신되는 시퀀스이며, 비휘발성 메모리 유닛들에 저장된 데이터 블록들을 병렬적으로 검색하고, 하나 이상의 데이터 블록들의 부분들은 대응되는 명령에 의해 식별되는 제1 시퀀스와 상이한 제2 시퀀스로 검색되며, 각 명령에 대해 데이터 블록의 검색된 부분들이 블록의 모든 데이터를 포함하는지를 결정하고, 상기 결정에 응답하여 검색된 데이터 블록을 송신하도록 구성될 수 있다.
본 명세서에 설명된 발명의 특정한 실시예들은 다음의 장점들을 하나 이상 실현하도록 구현될 수 있다. 본 명세서에서 설명된 기법들은 제어기가 데이터 블록들을 검색하는 채널들에서 대역폭의 낭비를 줄일 수 있다. 또한, 상기 기법들은 데이터 블록들이 비휘발성 메모리 유닛들로부터 검색되는 효율을 증가시킬 수 있다. 게다가, 복수의 데이터 블록들을 요청하는 명령들이 병렬적으로 서비스될 수 있다. 구체적으로, 예를 들어, 큰 데이터 블록들이 전부보다 적은 개수의 채널들에 고르게 분산되거나 하나의 채널에 집중될 때, 큰 데이터 블록에 대한 명령 이외에도 복수의 명령들이 병렬적으로 실행될 수 있다. 이렇게 함으로써, 단일의 큰 명령을 복수의 패스들로 서비스하는 것과 동시에, 추가적인 명령들이 또한 서비스될 수 있다. 이는 큰 명령들의 소정의 그룹에 대해 실행 시간을 최소화하는 결과가 될 수 있다. 뿐만 아니라, SSD 제어기의 처리량이 부스트될 수 있다.
하나 이상의 구현예들에 대한 상세한 내용이 첨부된 도면들과 아래의 상세한 설명에서 제시된다. 다른 특징들, 목적들 및 장점들은 상세한 설명, 도면들, 및 특허청구범위로부터 명백할 수 있다.
도 1은 솔리드 스테이트 메모리 서브시스템을 포함하는 컴퓨팅 시스템의 한 예를 도시한 것이다.
도 2는 솔리드 스테이트 제어기의 한 예를 도시한 것이다.
도 3은 2개의 데이터 블록들을 검색하는 동안 데이터 흐름의 한 예를 도시한 것이다.
도 4는 솔리드 스테이트 제어기에 의해 실행되는 데이터 송신 전략의 한 예를 도시한 것이다.
도 5는 데이터 블록들을 식별하게 하는 명령들에 할당된 영역들을 포함하는 솔리드 스테이트 제어기의 버퍼의 한 예를 도시한 것이다.
도 6은 호스트로부터의 명령들에 응답하여 비휘발성 메모리 유닛들로부터 데이터를 검색하는 절차의 한 예를 도시한 것이다.
도 7은 채널들로부터 버퍼로의 데이터 흐름의 한 예를 도시한 것이다.
도 1은 솔리드 스테이트 메모리 서브시스템(150)을 포함하는 컴퓨팅 시스템(100)의 한 예를 도시한 것이다. 시스템(100)은 중앙 처리 유닛(CPU)(105), 디스플레이 디바이스(110)(예를 들어, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터), 그리고 키보드(115) 및 포인팅 디바이스(120)(도 1에서는 마우스 디바이스로서 도시되어 있지만 다른 포인팅 디바이스들일 수 있음)와 같은 입력 디바이스를 포함한다. 시스템(100)은 하나 이상의 추가적인 프로세서들과 마이크, 스피커, 프린터 등과 같은 하나 이상의 추가적인 입력/출력 디바이스들을 포함할 수 있다.
솔리드 스테이트 메모리 서브시스템(150)은 솔리드 스테이트 제어기(155)와 NAND 플래쉬 메모리와 같은 플래쉬 메모리(160)를 포함한다. 플래쉬 메모리(160)는 하나 이상의 단일 레벨 셀(SLC) 디바이스들 및/또는 다중 레벨 셀(MLC) 디바이스들을 포함할 수 있다. 솔리드 스테이트 메모리 서브시스템(150)은 제어 로직을 포함할 수 있으며, 이는 솔리드 스테이트 메모리 서브시스템(150)으로 하여금 운영체제 및 애플리케이션 소프트웨어를 시스템(100)으로 로드(load)할 수 있도록 설계될 수 있다.
솔리드 스테이트 메모리 서브시스템(150)은 솔리드 스테이트 제어기(155)가 다중 채널 구성으로 동작하도록 구성된다. 이러한 제어기(155) 구성에서, 호스트로부터의 명령들을 수신한 것에 응답하여, 예를 들어 CPU(105)는 CPU(105)와 플래쉬 메모리(160) 사이에서 높은 데이터 처리량(data throughput)을 제공하도록 다중 채널을 통해 병렬적으로 데이터를 송신한다. 예를 들어, 플래쉬 메모리(160)는 복수의 NAND 플래쉬 메모리 유닛들에 동작시 연결되는 4개의 채널들을 포함할 수 있으며(도 2 및 도 3과 관련하여 설명됨), 각 채널은 약 1.6 Gbps의 속도(rate)로 데이터를 전송할 수 있다. 이러한 배치에서, 솔리드 스테이트 제어기(155)가 달성할 수 있는 처리량은 만일 플래쉬 메모리(160)가 데이터를 4개의 NAND 플래쉬 메모리 유닛들로부터 직렬적으로 송신하는 경우에 제어기(155)가 달성할 수 있는 처리량보다 4배 더 크다. 본 명세서에서 설명되는 기법들을 사용할 때, 솔리드 스테이트 제어기(155)가 제어기(155)에 연결된 복수의 NAND 플래쉬 메모리 유닛들로부터 데이터를 검색(retrieve)하는 효율이 증가될 수 있다.
인지될 바와 같이, 시스템(100)은 데스크톱 개인용 컴퓨터를 나타낸 것이며, 이는 하드디스크 드라이브, 네트워크 인터페이스, 마더보드 등과 같은 도시되지 않은 많은 다른 디바이스들과 서브시스템들을 포함할 수 있다. 하지만, 이것은 본 개시된 발명이 구현될 수 있는 더 큰 시스템의 단지 하나의 예일 뿐이다. 이러한 더 큰 디바이스 및 시스템들의 다른 예들은 랩톱, 노트북, 디스크가 없는 서브-노트북, 그리고 PCI ExpressCard, 랩톱 상의 PCIeMini 슬롯, 또는 데스크톱 상의 PCIe 슬롯에 맞는 초슬림 드라이브들을 포함한다. 예들은 또한 비휘발성 메모리 디바이스들을 채용하는 스마트폰, 넷북, 미디어 플레이어 등을 포함한다.
하지만, 이들 특정 예들과 관계없이, 본 명세서에서 개시된 발명은 많은 상이한 유형의 컴퓨팅 시스템들과 호환되도록 만들어질 수 있다는 것이 인지될 것이다. 게다가, 플래쉬 메모리(160)는 어떠한 외부 전원 없이도 그 데이터를 유지할 수 있는 많은 상이한 유형의 솔리드 스테이트 저장 디바이스들을 포함할 수 있다. 이러한 디바이스들은 BIOS 칩, CompactFlash, SmartMedia, 메모리 스틱, PCMCIA 타입 I 및 타입 Ⅱ 메모리 카드, 및 비디오 게임 콘솔용 메모리 카드를 포함할 수 있다. 이러한 디바이스들은 또한 상변화 메모리(phase change memory) 디바이스들을 포함할 수 있다.
도 2는 솔리드 스테이트 제어기(250)의 한 예를 도시한 것이다. 제어기(250)는 예를 들어 컴퓨터 시스템의 CPU(105)와 같은 호스트에 동작시 연결하도록 구성된다. 제어기는 호스트로부터 데이터 블록들에 대한 명령을 수신하고, 그 명령에 의해 식별되는 데이터 블록들을 호스트로 송신한다. 예를 들어, CPU(105)는 데이터 블록을 식별하게 하는 명령을 제어기(250)로 송신하고, 이에 응답하여 제어기(250)는 본 명세서에서 설명되는 기법들을 사용하여 복수의 비휘발성 메모리 유닛들로부터 데이터 블록을 검색한다.
제어기(250)는 예를 들어 NFLASH와 같은 데이터 검색기(data retriever) (210)를 포함하며, 이는 데이터 블록들을 검색하도록 구성된다. 데이터는 예를 들어 NVM 1, NVM 2, NVM 3, NVM 4, ... NVM n과 같은 복수의 비휘발성 메모리 유닛들(NVM들)(214)에 저장된다. 예를 들어, 각 데이터 블록은 복수의 부분들로 나뉘며, 각 부분은 해당 NVM의 섹터에 저장된다. 단일 데이터 블록의 모든 부분들이 동일한 NVM에 저장될 필요는 없다. 오히려, 그 부분들은 복수의 NVM들에 걸쳐 분산될 수 있다.
데이터 검색기(210)는 NVM들(214)에 동작시 연결되는 복수의 채널들(216)을 포함한다. 예를 들어, 도 2에 도시된 바와 같이, 데이터 검색기(210)는 4개의 채널들(216)을 포함한다. 데이터 검색기(210)가 예를 들어 5개 내지 6개와 같은 더 많은 개수의 채널들을 가지거나 또는 예를 들어 2개 내지 3개와 같은 더 적은 개수의 채널들을 가질 수 있다는 것은 인지될 것이다. 채널(216)은 하나 이상의 NVM들(214)에 동작시 연결될 수 있다. 예를 들어, 채널 1(216)은 NVM 1 및 NVM 2(214)에 연결되고 채널 2(216)는 NVM 3 및 NVM 4(214)에 연결된다. 채널 3(216)은 하나 이상의 NVM들(214)(미도시됨)에 연결되고 채널 4(216)는 NVM n(214)에 연결된다. 각 NVM(214)은 데이터 블록의 부분이 물리적으로 저장될 수 있는 복수의 섹터들을 포함할 수 있다. 데이터 검색기(210)는 데이터 블록의 부분이 저장되어 있는 NVM(214)의 섹터로부터 그 부분을 검색하도록 구성된다.
제어기(250)는 검색된 데이터 블록의 부분들을 저장하도록 구성되는 버퍼(212)를 더 포함한다. 예를 들어, 데이터 검색기(210)는 채널(216)을 통해 NVM들로부터 데이터 블록의 부분들을 검색하고, 검색된 부분들을 버퍼(212)로 송신한다. 버퍼(212)는 그 부분들의 임시 저장 유닛으로서 역할한다.
게다가 제어기(250)는 NVM들(214)로부터 검색된 데이터 블록의 부분들을 추적(track)하도록 구성되는 시퀀서(sequencer)(218)를 포함한다. 특히, 시퀀서(218)는 데이터 검색기(210)에 의해 검색되고 버퍼(212)로 송신되는 부분들을 추적하도록 구성된다. 시퀀서(218)는 데이터 블록의 모든 부분들이 NVM들(214)로부터 검색이 완료될 때까지 추적한다. 그 뒤에 이어서, 시퀀서(218)는 예를 들어 블록의 모든 부분들이 검색되었다는 것을 표시하는 신호와 같은 표시(indication)를 버퍼(212)로 송신한다. 시퀀서(218)로부터 표시를 수신하는 것에 응답하여, 버퍼(212)는 데이터 블록의 검색된 부분들을 호스트로 송신한다.
일부 구현예들에서, 제어기(250)는 데이터 검색기(210)에 동작시 연결되는 에러 검사 및 정정(error checking and correction unit) 유닛(220)을 포함한다. 에러 검사 및 정정 유닛(220)은 데이터 검색기(210)에 의해 검색된 부분에 에러가 없는지를 결정하기 위해 검색된 데이터 블록의 각 부분을 검사한다. 에러 검사 및 정정 유닛(220)은 또한 시퀀서(218)에 연결되며 검색된 부분에 에러가 없다는 것을 표시하는 신호를 송신한다.
데이터 블록의 각 부분은 논리 블록 어드레스(logical block address, LBA)를 할당받을 수 있으며, 이는 어떻게 데이터가 호스트에 의해 사용 순으로 저장되는지를 정의한다. 일부 구현예들에서, 연속적인 부분들은 연속적인 NVM들에 저장될 수 있다. 대체가능한 것으로, 연속적인 부분들은 동일한 NVM들에 저장될 수 있다. 또 다른 대체가능한 것으로, 그 부분들은 NVM들에 걸쳐 분산될 수 있다. 또한, 각 NVM은 복수의 섹터들을 포함하며 각 섹터는 데이터 블록의 부분을 물리적으로 저장하도록 구성된다. 따라서, 데이터 블록의 부분들은 복수의 NVM들에 포함되는 복수의 섹터들에 걸쳐 분산될 수 있다.
복수의 NVM들에 걸쳐 저장되는 2개의 데이터 블록들을 병렬적으로 검색하는 방법이 아래의 표 2를 참조하여 설명될 것이다. 2개의 데이터 블록들을 병렬적으로 검색한다는 것은 각 패스에서 데이터 블록의 부분들이 NVM들의 섹터들을 통해 검색되는 것을 의미한다. 다시 말해, 데이터 검색기(210)는 제2 블록의 부분들을 검색하기 전에 제1 블록의 모든 부분들을 검색하기를 기다리지 않는다. 대신에, 데이터 검색기(210)는 양 데이터 블록들의 부분들을 NVM들의 섹터들로부터 검색한다. 아래의 표 2에서, 데이터 블록의 부분들은 "블록 번호_부분 번호"의 표기 방식에 따라 표현된다. 블록 번호(block number)는 명령에 해당하고, 부분 번호(portion number)는 데이터 블록의 부분에 대한 식별자에 해당한다. 일부 구현예들에서, 부분 번호는 아래에서 설명될 기술자(descriptor)에 의해 표현될 수 있다.
2개의 데이터 블록들의 검색
채널 0 (216) 채널 1 (216) 채널 2 (216) 채널 3 (216)
1_0 2_1 1_2 1_3
1_1 2_5 2_2 2_3
1_4 2_6
2_0
2_4
표 2를 참조하여 설명될 예에서, 블록 1은 5개의 부분들(1_0 내지 1_4)로 구성되고 블록 2는 7개의 부분들(2_0 내지 2_6)로 구성된다. 블록 1과 블록 2를 검색하는 하나의 방법은 먼저 블록 1에서 모든 블록_부분들을 검색한 다음 블록 2에서 모든 블록_부분들을 검색하는 것이다. 따라서, 블록_부분 검색 시퀀스는 채널 0으로부터 1_0; (채널들 1, 2, 3을 스킵); 1_1; (채널 1을 스킵); 1_2; 1_3; 1_4; (채널들 1, 2, 3을 스킵); 2_0; 2_1; 2_2; 2_3; 2_4; 2_5; 2_6일 것이다. 블록 2의 임의의 블록_부분을 검색하기 전에 블록 1의 모든 블록_부분들을 검색하는 것은 채널들을 스킵(skip)하는 것을 수반하기 때문에, 채널들의 대역폭은 미사용으로 남아있고 검색 동안 지연(delay)이 생긴다.
대체가능한 것으로, 대역폭 사용을 최대화하고 지연들을 감소시키기 위해, 데이터 검색기(210)는 채널 0을 통해 제1 섹터로부터 블록_부분 1_0을 검색하고, 그 다음 채널 1을 통해 제1 섹터로부터 블록_부분 2_1을 검색하고, 그 다음 채널 2를 통해 제1 섹터로부터 블록_부분 1_2를 검색하고, 그 다음 채널 3을 통해 제1 섹터로부터 블록_부분 1_3을 검색한다. 데이터 검색기(210)는 모든 데이터 블록들이 모든 4개의 채널들을 통해 검색될 때까지 제2 섹터들, 제3 섹터들 등에 대해 이들 단계들을 반복한다. 다시 말해, 데이터 검색기(210)는 채널들을 스킵하지 않고, 대신에 채널의 섹터에서 발견되는 임의의 블록_부분을 검색한다. 아무런 부분도 저장되어 있지 않은 섹터들로부터는 어떠한 부분도 검색되지 않는다.
이런 검색 패턴은 각 데이터 블록의 부분들을 식별하게 하는 기술자(descriptor)들을 기반으로 결정된다(아래의 표 3과 관련하여 설명됨). 제어기(250)는 호스트로부터 수신되는 기술자들을 기반으로 검색되어야 하는 데이터 블록들의 부분들을 식별한다. 예를 들어, 호스트가 명령에서 블록_부분 1_0과 블록_부분 2_1을 식별하게 하는 기술자를 제공하였기 때문에, 데이터 검색기(210)는 호스트가 이들 블록_부분들을 요청하였다고 결정하고 그것들을 검색한다. 데이터 검색기(210)는 블록_부분 1_0의 뒤를 잇는 부분, 즉 블록_부분 1_1을 검색하기 위해 블록_부분 2_1이나 다른 블록_부분들을 스킵할 필요가 없다. 대신에, 데이터 검색기(210)는 호스트에 의해 특정된 모든 블록_부분들을 식별하는 대로 이러한 블록_부분들을 검색할 수 있다.
도 3은 2개의 데이터 블록들을 검색하는 동안 데이터 흐름의 한 예를 도시한 것이다. 도 3의 예에서, 2개의 데이터 블록들을 검색하는 동안 데이터 흐름은 1_0, 1_2, 1_3, 2_1, 1_1, 2_5, 2_2, 2_3, 1_4, 2_6, 2_0, 2_4의 순이다. 도 3에 도시된 데이터 흐름은 데이터 부분들이 채널 0 내지 채널 3(216)을 통해 NVM들(214)로부터 검색될 수 있는 많은 가능한 시퀀스들 중 하나이다. 대체가능한 데이터 흐름은 예를 들어 2_0, 2_1, 2_2, 2_3, 2_4, 2_5, 2_6, 1_3, 1_0, 1_2, 1_1, 1_4의 순일 수 있다. 특히, 데이터 검색기(210)가 다른 데이터 블록의 부분들을 제외하고 데이터 블록의 연속적인 부분들을 검색해야될 필요가 없기 때문에, 데이터 흐름은 예를 들어 1_0 다음 1_2와 같이 동일한 데이터 블록_부분의 불연속적인 부분들을 포함한다. 또한, 데이터 검색기(210)는 제2 데이터 블록의 부분들을 검색하기 전에 제1 데이터 블록의 모든 부분들을 검색하지 않아도 되므로, 데이터 흐름은 예를 들어 1_3 다음 2_1 다음 1_1과 같이 블록 1의 부분들이 블록 2의 부분들과 인터리브(interleave)되는 것을 포함한다.
데이터 검색기(210)는 데이터 블록 부분들이 NVM들(214)의 섹터들에 저장되는 순으로 데이터 블록 부분들을 검색할 수 있다. 이와 같이, 데이터 블록의 부분들이 검색되는 시퀀스는 데이터 블록의 연속적인 부분들의 시퀀스와 상이하다. 또한, 데이터 검색기(210)는 블록 1의 부분들을 블록 2의 부분들과 인터리브하여 양 데이터 블록들을 채널들(216)을 통해 병렬적으로 검색할 수 있다. 도 3에 대하여 도시된 데이터 흐름과 블록의 연속적인 부분들이 검색되는 데이터 흐름을 비교한 것이 아래에 도시되어 있다.
Figure 112012012633316-pct00001
앞서 설명된 바와 같이, 데이터 검색기(210)는 예를 들어 CPU(105)와 같은 호스트로부터 명령을 수신한 것에 응답하여 데이터 블록들을 NVM들(214)로부터 검색한다. 데이터 블록들을 요청하는 이외에도, CPU(105)는 데이터 블록이 CPU(105)로 송신될 시퀀스를 특정한다. 예를 들어, CPU(105)는 블록 1(표 2와 관련하여 설명됨)이 연속적인 부분들의 시퀀스로, 즉 1_0, 1_1, 1_2, 1_3, 1_4로 송신되도록 특정한다. 부분들이 NVM들의 섹터들에 저장되는 순으로 데이터 블록들을 검색함으로써, 데이터 검색기(210)는 데이터 블록들의 부분들이 CPU(105)로 송신되는 시퀀스와 상이한 시퀀스로 데이터 블록들의 부분들을 검색할 수 있다. 제어기(250)는 도 4와 관련하여 설명되는 방식으로 데이터 검색기(210)에 의해 검색되는 부분들을 송신한다.
도 4는 솔리드 스테이트 제어기(250)에 의해 실행되는 데이터 송신 전략의 한 예를 도시한 것이다. 시퀀서(218)는 예를 들어 CPU(105)와 같은 호스트로부터 데이터 블록에 대한 명령을 수신한다. 일부 구현예들에서, 명령은 데이터 블록, 구체적으로 데이터 블록들의 부분들을 식별하게 하는 복수의 기술자(descriptor)들을 포함한다. CPU(205)는 데이터 블록들의 부분들을 식별하게 하는 기술자들을 논리적인 시퀀스로 시퀀서(218)로 송신하며, 이 시퀀스는 상기 부분들이 제어기(250)에 의해 CPU(205)로 송신되는 시퀀스를 나타낸다. 도 4에 도시된 제어기(250)는 CPU(205)에 동작시 연결된다. CPU(205)는 몇 개의 호스트들에 동작시 연결될 수 있으며, 각 호스트는 데이터 블록들을 수신하기 위해 명령들을 송신할 수 있다는 것이 인지될 것이다. 기술자는 아래에서 그림으로 표현되어 있다.
Figure 112012012633316-pct00002
시퀀서(218)는 데이터 블록의 해당 부분들(할당 유닛(allocation unit, AU)으로서도 알려짐)이 데이터 검색기(210)에 의해 검색되고 버퍼(212)로 송신될 때까지 기술자들을 저장한다. 일부 구현예들에서, 데이터 검색기(210)는 데이터 블록의 검색된 부분을 에러 검사 및 정정 유닛(220)으로 송신한다. 이러한 구현예들에서, 시퀀서(218)는 부분들이 에러 검사 및 정정 유닛(220)에 의해 처리되고 버퍼(212)로 전송될 때까지 기술자들을 저장할 수 있다.
시퀀서(218)는 기술자 ID(descriptor ID)를 각 기술자에 추가하여 새로운 기술자를 발생시킬 수 있으며, 이는 아래에서 그림으로 표현되어 있다. 데이터 검색기(210)는 해당 부분들이 NVM들(214)로부터 검색되고 버퍼(212)나 에러 검사 및 정정 유닛(220)으로 송신될 때까지 새로운 기술자들을 저장한다.
Figure 112012012633316-pct00003
데이터 검색기(210)는 앞서 설명된 시퀀스(검색 시퀀스)로 NVM들로부터 검색된 부분들을 버퍼(212) 또는 에러 검사 및 정정 유닛(220)으로 송신한다. 검색 시퀀스는 논리적 시퀀스와 상이할 수 있다. 각 검색된 부분과 함께, 데이터 검색기(210)는 해당 기술자를 에러 검사 및 정정 유닛(220)으로 송신한다. 예를 들어, 데이터 검색기(210)로부터 에러 검사 및 정정 유닛(220)으로 송신되는 기술자의 내용이 아래에 그림으로 표현되어 있다.
Figure 112012012633316-pct00004
에러 검사 및 정정 유닛(220)은 데이터 검색기(210)로부터 부분들을 수신하는 대로 하나씩 부분들을 처리할 수 있다. 에러 검사 및 정정 유닛(220)은 각 부분을 버퍼(212)의 올바른 위치로 전송하기 위해 기술자의 "버퍼 어드레스" 필드를 사용할 수 있다. 에러 검사 및 정정 유닛(220)은 또한 해당 부분에 대한 에러 검사가 완료되었다는 것을 표시하는 신호를 시퀀서(218)로 송신하기 위해 기술자의 "ID" 필드를 사용할 수 있다.
시퀀서(218)는 에러 검사 및 정정 유닛(220)에 의해 송신되는 "ID" 필드의 식별자들을 수집한다. 일부 구현예들에서, 시퀀서(218)는 기술자 식별자(descriptor identifier)들의 긴 리스트를 저장하도록 구성될 수 있다. 이런 방식으로, 시퀀서는 데이터 검색기(210)가 검색 시퀀스로 검색한 데이터 블록의 부분들을 추적한다. 시퀀서(218)가 에러 검사 및 정정 유닛(220)이 CPU(205)로부터 수신된 논리적 시퀀스로 특정된 데이터 블록의 모든 부분들을 버퍼(212)로 송신하였다고 결정하면, 시퀀서(218)는 데이터 블록을 CPU(205)로 송신하라는 표시를 버퍼(212)로 송신한다. 이런 방식으로, 제어기(250)는 데이터 송신 전략을 실행한다. 구체적으로, 제어기(250)는 데이터 블록의 부분들의 논리적 시퀀스를 특정하는 명령을 호스트로부터 수신하고, 데이터 블록을 논리적 시퀀스와 상이할 수 있는 검색 시퀀스로 데이터 블록을 검색하고, 데이터 블록을 논리적 시퀀스로 호스트로 송신하도록 구성될 수 있다.
예를 들어 CPU(205)와 같은 호스트에 의해 발생되고 논리적 시퀀스로 시퀀서(218)로 송신되는 기술자들의 예들이 표 3(아래)에 도시되어 있다.
2개의 데이터 블록들에 대해 발생된 기술자들
호스트 명령 번호 기술자 번호 기술자 필드들
LBA 버퍼 어드레스 CH# (PBA의 일부)
1 0 110 0x1000_0000 0
1 111 0x1000_1000 0
2 112 0x1000_2000 2
3 113 0x1000_3000 3
4 114 0x1000_4000 0
2 0 210 0x2000_0000 0
1 211 0x2000_1000 1
2 212 0x2000_2000 2
3 213 0x2000_3000 3
4 214 0x2000_4000 0
5 215 0x2000_5000 1
6 216 0x2000_6000 2
표 2는 블록 1이나 블록 2에서 데이터 블록의 각 부분이 차지하는 채널들(216)을 도시한 것이다. 위에서 설명된 바와 같이, 블록 1 및 블록 2의 부분들은 블록 1 및 블록 2가 호스트로 송신될 논리적 시퀀스와 상이할 수 있는 검색 시퀀스로 병렬적으로 검색된다. 또한, 검색된 부분들은 논리적 시퀀스와 상이한 시퀀스로 버퍼(212)로 송신된다. 예를 들어, 검색된 부분들은 그 부분들이 검색된 시퀀스로 버퍼(212)로 송신될 수 있다.
일부 상황들에서, 제어기(250)는 각각 블록 1과 블록 2를 요청하는 2개의 호스트 명령들(명령 1과 명령 2)를 수신한다. 명령 1과 명령 2 각각은 또한 각각 블록 1과 블록 2에 대해 해당 논리적 시퀀스를 특정한다. 버퍼(212)는 블록 1의 모든 부분들 전에 블록 2의 모든 부분들을 수신할 수 있다. 이러한 시나리오들에서, 제어기(250)는 호스트 명령들이 수신된 순으로 검색된 블록들을 호스트로 송신하도록 구성될 수 있다. 다시 말해, 만일 호스트 명령 1이 호스트 명령 2 전에 수신되었다면, 제어기(250)는 먼저 블록 1의 부분들을 송신한 다음 블록 2의 부분들을 송신할 수 있다. 이 때문에, 제어기(250)는 데이터의 모든 부분들이 검색되어 버퍼(212)에 저장되었더라도 데이터 블록의 송신을 지연시킬 수 있다.
대체가능한 것으로, 제어기(250)는 검색된 블록들이 호스트로 송신되는 시퀀스를 변경하도록 구성될 수 있다. 예를 들어, 만일 호스트 명령 1이 호스트 명령 2 전에 수신되었고 만일 제어기(250)가 블록 1의 모든 부분들을 검색하기 전에 블록 2의 모든 부분들을 검색하였다면, 제어기(250)는 먼저 블록 2의 부분들을 호스트로 송신한 다음 블록 1의 부분들을 송신함으로써 검색된 블록들이 호스트로 송신되는 시퀀스를 변경할 수 있다. 나아가, 만일 제어기(250)가 블록 1의 모든 블록들 및 블록 2의 모든 부분들보다 적게 검색하였다면, 제어기(250)는 블록 1의 모든 블록들이 검색될 때까지 블록 2의 부분들의 송신을 지연시킬 수 있다.
도 5는 데이터 블록들을 식별하게 하는 명령들에 대해 할당된 영역들을 포함하는 솔리드 스테이트 제어기(250)의 버퍼(212)의 한 예를 도시한 것이다. 일부 구현예들에서, 각 데이터 블록에 대하여, 버퍼(212)는 데이터 블록의 부분들에 대한 버퍼 어드레스들을 해당 리스트에 저장한다. 데이터 블록들의 버퍼 어드레스들을 저장하는 리스트들은 링크(link)될 수 있다. 리스트의 각 엔트리는 데이터 블록의 부분을 저장하기 위한 버퍼 공간이다. 각 엔트리는 또한 해당 버퍼 어드레스로 표시된다. 버퍼(212)가 데이터 검색기(210)에 의해 검색되고 에러 검사 및 정정 유닛(220)에 의해 검사된 블록_부분들을 수신하는 대로, 버퍼(212)는 각 블록_부분을 그 블록_부분의 어드레스를 기반으로 식별되는 해당 버퍼 어드레스에 저장함으로써 링크드 리스트(linked list)들을 채운다.
도 6은 호스트로부터의 명령들에 응답하여 비휘발성 메모리 유닛들로부터 데이터를 검색하는 절차(600)의 한 예를 도시한 것이다. 605에서, 데이터 블록을 식별하게 하는 명령이 수신된다. 명령은 또한 식별된 블록에 포함된 데이터 블록들의 부분들이 송신되는 제1 시퀀스를 식별하게 한다. 610에서, 데이터 블록의 부분들이 제1 시퀀스와 상이한 제2 시퀀스로 각각의 비휘발성 메모리 유닛들로부터 검색된다. 615에서, 검색된 부분들이 버퍼에 저장된다. 620에서, 제2 시퀀스로 검색된 데이터 블록의 부분들이 추적된다. 625에서, 검색된 데이터가 데이터 블록의 모든 부분들을 포함하는지가 결정된다. 630에서, 상기 결정에 응답하여 버퍼에게 데이터 블록을 송신하도록 지시한다.
절차(600)는 하드웨어, 펌웨어, 또는 그들의 조합을 포함하여 프로세싱 회로들을 사용하여 구현될 수 있다. 일부 구현예들에서, 추가적인 데이터 블록을 식별하게 하는 추가적인 명령이 동일한 호스트 또는 상이한 호스트로부터 수신될 수 있다. 이에 응답하여, 데이터 블록 및 추가적인 데이터 블록에 해당하는 부분들이 검색될 수 있다. 또한, 검색된 부분들은 인터리브되고 버퍼로 송신될 수 있다. 구체적으로, 검색된 부분들은 추가적인 데이터 블록의 부분들이 데이터 블록의 부분들과 함께 송신될 수 있도록 인터리브될 수 있다.
위에서 몇몇 실시예들이 상세히 설명되었지만, 다양한 수정들이 가능하다. 일부 구현예들에서, 큰 데이터 블록들이 복수의 채널들에 걸쳐 고르게 분산되는 것이 아니라 오히려 단일 채널에 집중될 때, 제어기(250)는 복수의 명령들을 병렬적으로 실행하여 큰 데이터 블록들의 소정의 그룹에 대한 실행 시간을 최소화할 수 있다. 표 4는 3개의 큰 데이터 블록들(블록 1은 부분들 102 내지 105를 포함하고, 블록 2는 부분들 207 내지 209를 포함하고, 블록 4는 부분들 404 내지 407을 포함)을 액세스하기 위해 비휘발성 메모리 유닛들의 해당 섹터들에 각각 동작시 연결되는 4개의 채널들을 도시한 것이다.
3개의 큰 데이터 블록들을 액세스하기 위한 4개의 채널들(216)
CH 0 CH 1 CH 2 CH 3
104 209
404 105 406 207
407 103 206
102 405 208
...
블록 1을 식별하게 하는 명령과 병렬적으로 블록 2 및 블록 4를 식별하게 하는 명령들을 서비스함으로써, 채널들(216)에서 가용 대역폭이 사용될 수 있고, 데이터 블록들의 그룹에 대한 판독 성능이 최대화될 수 있다. 데이터 검색기(210)가 4개의 패스들/동작들로 블록들을 판독하지만, 그 기간에 3개의 명령들이 서비스되었다.
이렇게 하기 위해, 데이터 블록의 부분이 예를 들어 버퍼(212)의 섹터와 같은 적절한 위치로 전송될 수 있다. 전형적으로, 하나의 동작으로 판독된 부분들은 버퍼의 동일한 논리적 세그먼트(logical segment)로 전송되며, 이는 데이터 블록들의 부분들을 저장하도록 예약된 버퍼(212)의 물리적 영역이다. 논리적 세그먼트들은 연속된 어드레스 공간들일 수 있거나 또는 제어기(250)에 의해 물리적으로 산포되어 링크되고 관리될 수 있다.
도 7은 채널들(216)로부터 버퍼(212)로의 데이터 흐름의 한 예를 도시한 것이다. 데이터 검색 동작은 데이터 검색기(210)에 의해 수행되며, 버퍼(212)에 복수의 목적지 세그먼트들(destination segments)(705, 710, 715)을 가질 수 있다. 각 목적지 세그먼트는 서비스될 명령에 대응될 수 있으며, 이러한 명령은 데이터 블록을 식별하게 한다. CPU(205)는 목적지 위치를 제어할 수 있다. 예를 들어, CPU(205)는 버퍼 산포 리스트(buffer scatter list)를 이용하여 목적지 세그먼트를 제어할 수 있다. 각 패스가 실행되면서, CPU(205)는 데이터 블록 부분을 올바른 목적지 세그먼트로, 나아가 각 세그먼트 내에서 적절한 옵셋으로 분산시키는 버퍼 산포 리스트를 만들 수 있다.
본 명세서에서 설명된 기능적 동작들을 포함하여 개시된 발명은 본 명세서에서 개시된 구조적 수단들 및 그 구조적 균등물들과 같은 전자 회로, 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 또는 그들의 조합으로 구현될 수 있으며, 가능하게는 하나 이상의 데이터 처리 장치들로 하여금 전술된 동작들을 수행하게 하도록 동작가능한 프로그램(예컨대, 메모리 디바이스, 저장 디바이스, 기계 판독가능한 저장 기판, 또는 다른 물리적, 기계 판독가능한 매체, 또는 그들의 하나 이상의 조합일 수 있는 컴퓨터 판독가능한 매체에 인코딩된 프로그램)을 포함할 수 있다.
본 개시가 많은 구체적인 사항들을 포함하고 있지만, 이들은 청구될 수 있는 발명의 범위에 대한 한정사항들로서 이해되어서는 안 되며, 오히려 특정한 실시예들에 특유할 수 있는 특징들에 대한 설명들로서 이해되어야 한다. 본 명세서에서 별개의 실시예들의 맥락에서 설명되는 일정한 특징들은 또한 단일의 실시예에서 조합으로 구현될 수 있다. 반대로, 단일의 실시예의 맥락에서 설명되는 다양한 특징들은 또한 복수의 실시예들에서 별개로 구현되거나 임의의 적합한 하위 조합으로 구현될 수 있다. 게다가, 특징들이 일정한 조합들로 작용하는 것으로서 상술되고 심지어 최초에 이와 같이 청구될 수도 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우들에서 그 조합으로부터 삭제될 수 있으며, 청구된 조합은 하위 조합이나 하위 조합의 변형을 겨냥한 것일 수도 있다.
마찬가지로, 도면들에서 동작들이 특정 시퀀스로 도시되어 있지만, 이것은 바람직한 결과들을 달성하기 위해 이러한 동작들이 반드시 도시된 특정 시퀀스로 수행되어야 하거나 순차적으로 수행되어야 할 필요가 있다는 것이라거나, 또는 모든 예시된 동작들이 반드시 수행되어야 할 필요가 있다는 것으로서 이해되어서는 안 된다. 게다가, 상술된 실시예들에서 다양한 시스템 컴포넌트들을 분리하는 것은 모든 실시예들에서 반드시 이러한 분리를 필요로 하는 것으로서 이해되어서는 안 된다.
다른 실시예들도 다음의 특허청구범위에 속한다.

Claims (21)

  1. 방법에 있어서,
    제1 시퀀스에서 호스트에 전송될 데이터 유닛들의 그룹에 대한 명령(command)을 수신하는 단계와;
    상기 데이터 유닛들의 그룹의 각 데이터 유닛에 대해, 상기 데이터 유닛의 식별자와 그리고 상기 데이터 유닛이 에러들에 대해 검색 및 처리되었음을 표시하는 신호를 수신하는 단계와, 상기 식별자들 및 신호들은 상기 데이터 유닛들의 그룹이 상기 제1 시퀀스와는 상이한 제2 시퀀스에서 하나 이상의 메모리 디바이스로부터 검색됨에 따라 수신되며;
    상기 수신된 식별자들 및 신호들에 기초하여 상기 제2 시퀀스에서 검색된 상기 데이터 유닛들의 그룹을 추적(tracking)하는 단계와;
    처리 회로에 의해, 상기 데이터 유닛들의 그룹에 대한 상기 식별자들 및 신호들을 수신함에 기초하여 상기 데이터 유닛들의 그룹이 상기 에러들에 대해 검색 및 처리되었음을 결정하는 단계와; 그리고
    상기 데이터 유닛들의 그룹이 상기 에러들에 대해 검색 및 처리되었음을 결정함에 응답하여, 상기 제1 시퀀스에 따라 상기 데이터 유닛들의 그룹을 상기 호스트에 전송하는 것을 개시하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    제1 시퀀스에서 호스트에 전송될 데이터 유닛들의 그룹에 대한 명령을 수신하는 단계는 상기 데이터 유닛들의 그룹의 각 데이터 유닛에 대해 상기 데이터 유닛을 식별하는 기술자(descriptor)를 수신하는 것을 포함하고, 데이터 유닛들의 그룹의 기술자들은 상기 제1 시퀀스에 따라 수신되는 것을 특징으로 하는 방법.
  3. 제2항에 있어서,
    상기 데이터 유닛들의 그룹을 상기 호스트에 전송하는 것을 개시하는 단계는 상기 데이터 유닛들의 그룹을 저장하는 버퍼에 상기 데이터 유닛들의 그룹이 검색되었음을 표시하는 신호를 전송하는 것을 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    상기 데이터 유닛들의 그룹은 복수의 데이터 채널을 통해 제2 시퀀스에서 검색되는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 데이터 유닛들의 그룹에 대한 명령은 데이터 유닛들의 제1 그룹에 대한 제 1 명령이며,
    상기 방법은 또한:
    제3 시퀀스에서 상기 호스트에 전송될 데이터 유닛들의 제2 그룹에 대한 제2 명령을 수신하는 단계와;
    상기 데이터 유닛들의 제1 그룹의 식별자들과 그리고 상기 데이터 유닛들의 제1 그룹의 데이터 유닛들이 에러들에 대해 검색 및 처리되었음을 표시하는 신호들을 수신하는 동안, 상기 제2 명령에 대응하는 상기 데이터 유닛들의 제2 그룹의 식별자들과 그리고 상기 데이터 유닛들의 제2 그룹의 데이터 유닛들이 에러들에 대해 검색 및 처리되었음을 표시하는 신호들을 수신하는 단계와, 상기 데이터 유닛들의 제2 그룹에 대응하는 상기 식별자들 및 신호들은 상기 데이터 유닛들의 제2 그룹이 상기 제3 시퀀스와는 상이한 제4 시퀀스에서 검색됨에 따라 수신되며;
    상기 데이터 유닛들의 제2 그룹에 대응하는 상기 수신된 식별자들 및 신호들에 기초하여 상기 제4 시퀀스에서 검색된 상기 데이터 유닛들의 제2 그룹을 추적하는 단계와;
    상기 데이터 유닛들의 제2 그룹에 대한 상기 식별자들 및 신호들을 수신함에 기초하여 상기 데이터 유닛들의 제2 그룹이 상기 에러들에 대해 검색 및 처리되었음을 결정하는 단계와; 그리고
    상기 데이터 유닛들의 제2 그룹이 상기 에러들에 대해 검색 및 처리되었음이 결정된 후, 상기 제3 시퀀스에 따라 상기 데이터 유닛들의 제2 그룹을 상기 호스트에 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 데이터 유닛들의 제2 그룹을 상기 호스트에 전송하는 단계는 상기 제 1 명령에 대응하는 상기 데이터 유닛들의 제 1 그룹이 상기 제 1 시퀀스에 따라 상기 호스트에 전송될 때까지 상기 호스트에의 상기 데이터 유닛들의 제 2 그룹의 전송을 지연시키는 것을 포함하는 것을 특징으로 하는 방법.
  7. 제5항에 있어서,
    상기 제 1 명령에 대응하는 상기 데이터 유닛들의 제 1 그룹은 복수의 데이터 채널의 일 서브세트를 통해 상기 제 2 시퀀스에서 검색되고, 상기 제 2 명령에 대응하는 상기 데이터 유닛들의 제 2 그룹은 상기 복수의 데이터 채널의 타 서브세트를 통해 상기 제 4 시퀀스에서 검색되는 것을 특징으로 하는 방법.
  8. 장치에 있어서,
    시퀀서 회로와;
    상기 시퀀서 회로에 결합되는 데이터 검색 회로와; 그리고
    상기 데이터 검색 회로 및 상기 시퀀서 회로에 결합되는 에러 처리 회로를 포함하여 구성되며,
    상기 시퀀서 회로는:
    제1 시퀀스에서 호스트에 전송될 데이터 유닛들의 그룹에 대한 명령을 수신하고;
    상기 데이터 유닛들의 그룹의 각 데이터 유닛에 대해, 상기 데이터 유닛의 식별자와 그리고 상기 데이터 유닛이 에러들에 대해 검색 및 처리되었음을 표시하는 신호를 수신 - 상기 식별자들 및 신호들은 상기 데이터 유닛들의 그룹이 상기 제1 시퀀스와는 상이한 제2 시퀀스에서 하나 이상의 메모리 디바이스로부터 검색됨에 따라 수신된다 - 하고;
    상기 수신된 식별자들 및 신호들에 기초하여 상기 제2 시퀀스에서 검색된 상기 데이터 유닛들의 그룹을 추적하고;
    상기 데이터 유닛들의 그룹에 대한 상기 식별자들 및 신호들을 수신함에 기초하여 상기 데이터 유닛들의 그룹이 상기 에러들에 대해 검색 및 처리되었음을 결정하고; 그리고
    상기 데이터 유닛들의 그룹이 상기 에러들에 대해 검색 및 처리되었음을 결정함에 응답하여, 상기 제1 시퀀스에 따라 상기 데이터 유닛들의 그룹을 상기 호스트에 전송하는 것을 개시하도록 구성되며,
    상기 데이터 검색 회로는:
    상기 하나 이상의 메모리 디바이스로부터, 상기 제 2 시퀀스에 따라 상기 데이터 유닛들의 그룹을 검색하도록 구성되며,
    상기 에러 처리 회로는:
    상기 데이터 검색 회로로부터, 상기 데이터 유닛들의 그룹을 상기 제 2 시퀀스에서 수신하고;
    상기 데이터 유닛들의 그룹이 상기 제 2 시퀀스에서 수신될 때 상기 데이터 유닛들의 그룹의 각 데이터 유닛을 에러에 대해 검사하고; 그리고
    상기 데이터 유닛의 식별자 및 상기 데이터 유닛이 에러에 대해 검색 및 처리되었음을 표시하는 상기 신호를 상기 시퀀서 회로에 전송하도록 구성된 것을 특징으로 하는 장치.
  9. 제8항에 있어서,
    상기 시퀀서 회로는 상기 데이터 유닛들의 그룹의 각 데이터 유닛에 대해 상기 데이터 유닛을 식별하는 기술자를 수신하도록 구성되고, 상기 데이터 유닛들의 그룹의 기술자들은 상기 제1 시퀀스에 따라 수신되는 것을 특징으로 하는 장치.
  10. 제8항에 있어서,
    상기 시퀀서 회로는 상기 데이터 유닛들의 그룹을 저장하는 버퍼에 상기 데이터 유닛들의 그룹이 검색되었음을 표시하는 신호를 전송하도록 구성된 것을 특징으로 하는 장치.
  11. 제8항에 있어서,
    상기 데이터 검색 회로는 복수의 데이터 채널을 통해 상기 제2 시퀀스에서 상기 데이터 유닛들의 그룹을 검색하도록 구성된 것을 특징으로 하는 장치.
  12. 제8항에 있어서,
    상기 데이터 유닛들의 그룹에 대한 명령은 데이터 유닛들의 제1 그룹에 대한 제 1 명령이며,
    상기 시퀀서 회로는 또한:
    제3 시퀀스에서 상기 호스트에 전송될 데이터 유닛들의 제2 그룹에 대한 제2 명령을 수신하고;
    상기 데이터 유닛들의 제1 그룹의 식별자들과 그리고 상기 데이터 유닛들의 제1 그룹의 데이터 유닛들이 에러들에 대해 검색 및 처리되었음을 표시하는 신호들을 수신하는 동안, 상기 제2 명령에 대응하는 상기 데이터 유닛들의 제2 그룹의 식별자들과 그리고 상기 데이터 유닛들의 제2 그룹의 데이터 유닛들이 에러들에 대해 검색 및 처리되었음을 표시하는 신호들을 수신 - 상기 데이터 유닛들의 제2 그룹에 대응하는 상기 식별자들 및 신호들은 상기 데이터 유닛들의 제2 그룹이 상기 제3 시퀀스와는 상이한 제4 시퀀스에서 검색됨에 따라 수신된다 - 하고;
    상기 데이터 유닛들의 제2 그룹에 대응하는 상기 수신된 식별자들 및 신호들에 기초하여 상기 제4 시퀀스에서 검색된 상기 데이터 유닛들의 제2 그룹을 추적하고;
    상기 데이터 유닛들의 제2 그룹에 대한 상기 식별자들 및 신호들을 수신함에 기초하여 상기 데이터 유닛들의 제2 그룹이 상기 에러들에 대해 검색 및 처리되었음을 결정하고; 그리고
    상기 데이터 유닛들의 제2 그룹이 상기 에러들에 대해 검색 및 처리되었음이 결정된 후, 상기 제3 시퀀스에 따라 상기 데이터 유닛들의 제2 그룹을 상기 호스트에 전송하도록 구성되며,
    상기 데이터 검색 회로는:
    상기 하나 이상의 메모리 디바이스로부터, 상기 제 2 시퀀스에 따라 상기 데이터 유닛들의 제 1 그룹을 검색함과 병행하여 상기 제 4 시퀀스에 따라 상기 데이터 유닛들의 제 2 그룹을 검색하도록 구성된 것을 특징으로 하는 장치.
  13. 제12항에 있어서,
    상기 시퀀서 회로는 상기 제 1 명령에 대응하는 상기 데이터 유닛들의 제 1 그룹이 상기 제 1 시퀀스에 따라 상기 호스트에 전송될 때까지 상기 호스트에의 상기 데이터 유닛들의 제 2 그룹의 전송을 지연시키도록 구성된 것을 특징으로 하는 장치.
  14. 제12항에 있어서,
    상기 데이터 검색 회로는:
    복수의 데이터 채널의 일 서브세트를 통해 상기 제 2 시퀀스에서 상기 제 1 명령에 대응하는 상기 데이터 유닛들의 제 1 그룹을 검색하고,
    상기 복수의 데이터 채널의 타 서브세트를 통해 상기 제 4 시퀀스에서 상기 제 2 명령에 대응하는 상기 데이터 유닛들의 제 2 그룹을 검색하도록 구성된 것을 특징으로 하는 장치.
  15. 시스템에 있어서,
    호스트와;
    복수의 메모리 디바이스와; 그리고
    상기 호스트 및 상기 복수의 메모리 디바이스에 결합된 메모리 제어기를 포함하여 구성되며,
    상기 메모리 제어기는:
    제1 시퀀스에서 호스트에 전송될 데이터 유닛들의 그룹에 대한 명령을 상기 호스트로부터 수신하고;
    상기 복수의 메모리 디바이스 중 하나 이상의 메모리 디바이스로부터, 상기 제1 시퀀스와는 상이한 제2 시퀀스에 따라 상기 데이터 유닛들의 그룹을 검색하고;
    상기 데이터 유닛들의 그룹의 데이터 유닛들이 상기 제2 시퀀스에서 상기 하나 이상의 메모리 디바이스로부터 검색될 때 상기 데이터 유닛들의 그룹의 각 데이터 유닛을 에러들에 대해 검사하고;
    상기 데이터 유닛들의 그룹의 각 데이터 유닛에 대해, 상기 데이터 유닛의 식별자와 그리고 상기 데이터 유닛이 에러들에 대해 검색 및 처리되었음을 표시하는 신호를 수신 - 상기 식별자들 및 신호들은 상기 데이터 유닛들의 그룹이 상기 제2 시퀀스에서 하나 이상의 메모리 디바이스로부터 검색됨에 따라 수신된다 - 하고;
    상기 수신된 식별자들 및 신호들에 기초하여 상기 제2 시퀀스에서 검색된 상기 데이터 유닛들의 그룹을 추적하고;
    상기 데이터 유닛들의 그룹에 대한 상기 식별자들 및 신호들을 수신함에 기초하여 상기 데이터 유닛들의 그룹이 상기 에러들에 대해 검색 및 처리되었음을 결정하고; 그리고
    상기 데이터 유닛들의 그룹이 상기 에러들에 대해 검색 및 처리되었음을 결정함에 응답하여, 상기 제1 시퀀스에 따라 상기 데이터 유닛들의 그룹을 상기 호스트에 전송하는 것을 개시하도록 구성된 것을 특징으로 하는 시스템.
  16. 제15항에 있어서,
    상기 메모리 제어기는:
    상기 데이터 유닛들의 그룹의 각 데이터 유닛에 대해 상기 데이터 유닛을 식별하는 기술자를 수신하도록 구성되고, 상기 데이터 유닛들의 그룹의 기술자들은 상기 제1 시퀀스에 따라 수신되는 것을 특징으로 하는 시스템.
  17. 제15항에 있어서,
    상기 메모리 제어기는:
    상기 데이터 유닛들의 그룹을 저장하는 버퍼에 상기 데이터 유닛들의 그룹이 검색되었음을 표시하는 신호를 전송하도록 구성된 것을 특징으로 하는 시스템.
  18. 제15항에 있어서,
    상기 메모리 제어기는:
    복수의 데이터 채널을 통해 상기 제2 시퀀스에서 상기 데이터 유닛들의 그룹을 검색하도록 구성된 것을 특징으로 하는 시스템.
  19. 제15항에 있어서,
    상기 데이터 유닛들의 그룹에 대한 명령은 데이터 유닛들의 제1 그룹에 대한 제 1 명령이며,
    상기 메모리 제어기는:
    제3 시퀀스에서 상기 호스트에 전송될 데이터 유닛들의 제2 그룹에 대한 제2 명령을 수신하고;
    상기 하나 이상의 메모리 디바이스로부터, 상기 제 2 시퀀스에 따라 상기 데이터 유닛들의 제 1 그룹을 검색함과 병행하여 상기 제3 시퀀스와는 상이한 제4 시퀀스에 따라 상기 데이터 유닛들의 제 2 그룹을 검색하고;
    상기 데이터 유닛들의 제1 그룹의 식별자들과 그리고 상기 데이터 유닛들의 제1 그룹의 데이터 유닛들이 에러들에 대해 검색 및 처리되었음을 표시하는 신호들을 수신하는 동안, 상기 제2 명령에 대응하는 상기 데이터 유닛들의 제2 그룹의 식별자들과 그리고 상기 데이터 유닛들의 제2 그룹의 데이터 유닛들이 에러들에 대해 검색 및 처리되었음을 표시하는 신호들을 수신 - 상기 데이터 유닛들의 제2 그룹에 대응하는 상기 식별자들 및 신호들은 상기 데이터 유닛들의 제2 그룹이 상기 제3 시퀀스와는 상이한 상기 제4 시퀀스에서 검색됨에 따라 수신된다 - 하고;
    상기 데이터 유닛들의 제2 그룹에 대응하는 상기 수신된 식별자들 및 신호들에 기초하여 상기 제4 시퀀스에서 검색된 상기 데이터 유닛들의 제2 그룹을 추적하고;
    상기 데이터 유닛들의 제2 그룹에 대한 상기 식별자들 및 신호들을 수신함에 기초하여 상기 데이터 유닛들의 제2 그룹이 상기 에러들에 대해 검색 및 처리되었음을 결정하고; 그리고
    상기 데이터 유닛들의 제2 그룹이 상기 에러들에 대해 검색 및 처리되었음이 결정된 후, 상기 제3 시퀀스에 따라 상기 데이터 유닛들의 제2 그룹을 상기 호스트에 전송하도록 구성된 것을 특징으로 시스템.
  20. 제19항에 있어서,
    상기 메모리 제어기는 상기 제 1 명령에 대응하는 상기 데이터 유닛들의 제 1 그룹이 상기 제 1 시퀀스에 따라 상기 호스트에 전송될 때까지 상기 호스트에의 상기 데이터 유닛들의 제 2 그룹의 전송을 지연시키도록 구성된 것을 특징으로 하는 시스템.
  21. 제19항에 있어서,
    상기 메모리 제어기는:
    복수의 데이터 채널의 일 서브세트를 통해 상기 제 2 시퀀스에서 상기 제 1 명령에 대응하는 상기 데이터 유닛들의 제 1 그룹을 검색하고; 그리고
    상기 복수의 데이터 채널의 타 서브세트를 통해 상기 제 4 시퀀스에서 상기 제 2 명령에 대응하는 상기 데이터 유닛들의 제 2 그룹을 검색하도록 구성된 것을 특징으로 하는 시스템.
KR1020127004159A 2009-08-11 2010-07-23 비휘발성 메모리의 데이터 판독용 제어기 KR101608910B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US23311809P 2009-08-11 2009-08-11
US61/233,118 2009-08-11
US25650209P 2009-10-30 2009-10-30
US61/256,502 2009-10-30

Publications (2)

Publication Number Publication Date
KR20120055563A KR20120055563A (ko) 2012-05-31
KR101608910B1 true KR101608910B1 (ko) 2016-04-04

Family

ID=42710582

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127004159A KR101608910B1 (ko) 2009-08-11 2010-07-23 비휘발성 메모리의 데이터 판독용 제어기

Country Status (6)

Country Link
US (2) US8650438B2 (ko)
EP (1) EP2465027B1 (ko)
JP (1) JP5732708B2 (ko)
KR (1) KR101608910B1 (ko)
CN (1) CN102473078B (ko)
WO (1) WO2011019494A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101008923B1 (ko) * 2010-01-15 2011-01-17 주식회사 노바칩스 다양한 종류의 반도체 메모리 장치들을 구비하는 반도체 메모리 시스템 및 이의 제어 방법
US9176810B2 (en) * 2011-05-27 2015-11-03 SanDisk Technologies, Inc. Bit error reduction through varied data positioning
DE102012218363A1 (de) * 2012-10-09 2014-04-10 Continental Automotive Gmbh Verfahren zur Steuerung eines getrennten Ablaufs von verknüpften Programmblöcken und Steuergerät
EP3268864B1 (en) 2015-03-11 2021-01-27 Rambus Inc. High performance non-volatile memory module
US9904609B2 (en) * 2015-11-04 2018-02-27 Toshiba Memory Corporation Memory controller and memory device
KR102468698B1 (ko) * 2015-12-23 2022-11-22 에스케이하이닉스 주식회사 메모리 장치
KR102530889B1 (ko) 2016-04-06 2023-05-11 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
KR102646252B1 (ko) 2016-11-30 2024-03-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN109709902B (zh) * 2017-10-25 2022-01-21 富泰华精密电子(郑州)有限公司 数据交互方法、系统和存储器
CN108519859B (zh) * 2018-03-30 2021-04-20 深圳忆联信息系统有限公司 数据读取方法、装置、设备及介质
US11599481B2 (en) * 2019-12-12 2023-03-07 Western Digital Technologies, Inc. Error recovery from submission queue fetching errors

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3419547B2 (ja) * 1994-06-08 2003-06-23 富士フイルムマイクロデバイス株式会社 不揮発性メモリ
JP3095638B2 (ja) * 1994-10-03 2000-10-10 株式会社東芝 データ処理装置
US5754565A (en) * 1996-10-15 1998-05-19 Quantum Corporation Reconstruction of syndromes for bi-level on-the-fly error correction in disk drive systems
US7047391B2 (en) * 1998-09-14 2006-05-16 The Massachusetts Institute Of Technology System and method for re-ordering memory references for access to memory
US7093094B2 (en) * 2001-08-09 2006-08-15 Mobilygen Corporation Random access memory controller with out of order execution
US7149857B2 (en) 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
JP2005115600A (ja) 2003-10-07 2005-04-28 Hitachi Ltd 情報処理装置及び方法
JP4661566B2 (ja) * 2005-11-30 2011-03-30 Tdk株式会社 アクセスコントローラ、フラッシュメモリシステム及びアクセス制御方法
CN100530070C (zh) * 2006-11-24 2009-08-19 骆建军 基于flash的硬盘
US20080244244A1 (en) * 2007-03-30 2008-10-02 Advanced Micro Devices, Inc. Parallel instruction processing and operand integrity verification
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US9495116B2 (en) 2007-12-26 2016-11-15 Sandisk Il Ltd. Storage device coordinator and a host device that includes the same
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands

Also Published As

Publication number Publication date
JP2013502001A (ja) 2013-01-17
US20110041007A1 (en) 2011-02-17
KR20120055563A (ko) 2012-05-31
EP2465027A1 (en) 2012-06-20
US20140149807A1 (en) 2014-05-29
JP5732708B2 (ja) 2015-06-10
EP2465027B1 (en) 2019-03-20
US8650438B2 (en) 2014-02-11
CN102473078A (zh) 2012-05-23
WO2011019494A1 (en) 2011-02-17
CN102473078B (zh) 2016-01-20
US8892940B2 (en) 2014-11-18

Similar Documents

Publication Publication Date Title
KR101608910B1 (ko) 비휘발성 메모리의 데이터 판독용 제어기
US8489803B2 (en) Efficient use of flash memory in flash drives
JP5519779B2 (ja) 不揮発性メモリシステムのためのマルチページ準備コマンド
US9146691B2 (en) Method for managing commands in command queue, memory control circuit unit and memory storage apparatus
US20150052415A1 (en) Data storage device, operating method thereof and data processing system including the same
CN108153482B (zh) Io命令处理方法与介质接口控制器
US20130326169A1 (en) Method and Storage Device for Detection of Streaming Data Based on Logged Read/Write Transactions
US9965194B2 (en) Data writing method, memory control circuit unit and memory storage apparatus which performs data arrangement operation according to usage frequency of physical erasing unit of memory storage apparatus
CN106339178B (zh) 存储器控制单元及包括该存储器控制单元的数据存储设备
CN111258496B (zh) 动态分配数据路径的装置和方法
US20230161589A1 (en) Memory controller and memory system for generating instruction set based on non-interleaving block group information
US10089039B2 (en) Memory controller, memory device having the same, and memory control method
KR20190083150A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11822426B2 (en) Memory system, data processing system and operation method of the same
KR20150020384A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11550502B2 (en) Apparatus and method for controlling multi-stream program operations performed in a memory block included in a memory system
KR20150116627A (ko) 컨트롤러 및 그것을 포함하는 데이터 저장 장치
CN113157205B (zh) 一种nand阵列的控制方法、控制器、电子设备及存储介质
US11567667B2 (en) Apparatus and method for improving input/output throughput of memory system
US11429282B2 (en) Apparatus and method for improving Input/Output throughput of memory system
US20230305711A1 (en) Memory controller and data processing method for processing disordered read-out data
KR20220135786A (ko) 메모리 시스템에 포함된 복수의 메모리 장치에서 수행되는 동작에 대해 스케줄링하는 장치 및 방법
KR20210085269A (ko) 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법
CN112230841A (zh) 提高存储器系统的输入/输出吞吐量的设备和方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190315

Year of fee payment: 4