KR101371815B1 - 다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이버들 및 방법들 - Google Patents

다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이버들 및 방법들 Download PDF

Info

Publication number
KR101371815B1
KR101371815B1 KR1020117026247A KR20117026247A KR101371815B1 KR 101371815 B1 KR101371815 B1 KR 101371815B1 KR 1020117026247 A KR1020117026247 A KR 1020117026247A KR 20117026247 A KR20117026247 A KR 20117026247A KR 101371815 B1 KR101371815 B1 KR 101371815B1
Authority
KR
South Korea
Prior art keywords
command
instructions
memory
back end
delete delete
Prior art date
Application number
KR1020117026247A
Other languages
English (en)
Other versions
KR20120015313A (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 KR20120015313A publication Critical patent/KR20120015313A/ko
Application granted granted Critical
Publication of KR101371815B1 publication Critical patent/KR101371815B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • 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

Abstract

본 발명은 메모리 제어기를 위한 방법들 및 장치들을 포함한다. 하나 이상의 실시예들에서, 메모리 제어기는 복수의 백 엔드 채널들, 및 복수의 백 엔드 채널들에 통신 가능하게 결합된 명령 큐를 포함한다. 명령 큐는 호스트로부터 수신된 호스트 명령들을 보유하게 구성된다. 회로는 명령 큐 내의 적어도 다수의 호스트 명령들에 응하여 다수의 백 엔드 명령들을 발생하고 다수의 백 엔드 명령들을 다수의 복수의 백 엔드 채널들에 분배하게 구성된다.

Description

다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이버들 및 방법들{MEMORY CONTROLLERS, MEMORY SYSTEMS, SOLID STATE DRIVERS AND METHODS FOR PROCESSING A NUMBER OF COMMANDS}
본 발명은 일반적으로 반도체 메모리 장치들, 방법들, 및 시스템들에 관한 것으로, 특히, 다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이브들 및 방법들에 관한 것이다.
메모리 장치들은 전형적으로 컴퓨터들 또는 그외 전자장치들 내에 내부 반도체 집적회로들로서 제공된다. 휘발성 및 비휘발성 메모리를 포함한 많은 서로 다른 유형들의 메모리가 있다. 휘발성 메모리는 자신의 데이터를 유지하기 위해 전력을 필요로 할 수 있으며, 특히 랜덤-액세스 메모리(RAM), 동적 랜덤-액세스 메모리(DRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함한다. 비휘발성 메모리는, 전원이 없을 때, 저장된 정보를 보존함으로써 영속적 데이터를 제공할 수 있고, 특히, NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적 소거가능 프로그램가능 ROM(EEPROM), 소거가능 프로그램가능 ROM(EPROM), 및 상변화 랜덤 액세스 메모리( PCRAM)를 포함할 수 있다.
메모리 장치들은 함께 결합되어 고체상태 드라이브(SSD : solid state drive)를 형성할 수 있다. SSD는 여러 다른 유형들의 비휘발성 및 휘발성 메모리 중에서도, 비휘발성 메모리, 예를 들면, NAND 플래시 메모리 및 NOR 플래시 메모리를 포함할 수 있고, 및/또는 휘발성 메모리, 예를 들면, DRAM 및 SRAM을 포함할 수 있다.
SSD는 SSD가 성능, 크기, 무게, 견고성, 동작온도 범위, 및 전력 소비면에서 하드드라이브들에 비해 잇점들을 가질 수 있기 때문에, 컴퓨터용 주 저장장치로서 하드디스크 드라이브들을 대체하기 위해 사용될 수 있다. 예를 들면, SSD들은 이들이 가동(moving) 부품들이 없어 자기 디스크 드라이브들에 연관된 탐색시간, 레이턴시(latency), 및 그외 전기-기계적 지연들을 회피할 수 있어 자기 디스크 드라이브들과 비교했을 때 우수한 성능을 가질 수 있다. SSD 제조업자들은 내부 배터리 서플라이를 사용하지 않을 수 있는 플래시 SSD들을 만들기 위해 비휘발성 플래시 메모리를 사용할 수 있어, 이에 따라 드라이브를 더 다목적이고 콤팩트하게 할 수 있다.
SSD는 다수의 메모리 장치들, 예를 들면, 하나 이상의 메모리 칩들을 포함할 수 있다(여기에서 사용되는 바와 같이, "다수의 어떤 것이란 하나 이상의 이러한 것들을 지칭할 수 있다; 예를 들면, 다수의 메모리 장치들은 하나 이상의 메모리 장치들을 지칭할 수 있다). 당업자가 알게 되는 바와 같이, 메모리 칩은 하나 이상의 다이들을 포함할 수 있다. 각각의 다이는 이에 다수의 메모리 어레이들 및 주변 회로를 포함할 수 있다. 메모리 어레이는 다수의 플레인(plane)들을 포함할 수 있고, 각각의 플레인은 다수의 물리 블록들의 메모리 셀들을 포함한다. 각각의 물리 블록은 다수의 섹터들의 데이터를 저장할 수 있는 다수의 페이지들을 포함할 수 있다.
메모리 시스템들, 예를 들면, SSD는 컴퓨팅 시스템에 탑재될 수 있고, 메모리 시스템은 통신 인터페이스, 예를 들면, 호스트와 이를테면 하드디스크 드라이브들, 광학 드라이브들, 및 SSD같은 대량 저장장치들 간에 명령들 및 데이터의 전송을 위해 주로 설계된 SATA(Serial Advanced Technology Attachment) 고속 직렬 버스에 의해 호스트에 통신 가능하게 결합될 수 있다.
다른 명령들 중에서도, 프로그램 명령들, 판독 명령들, 및 소거 명령들과 같은 명령들은 SSD의 동작 동안 사용될 수 있다. 예를 들면, 프로그램, 예를 들면 기입, 명령은 고체상태 드라이브 상에 데이터를 프로그램하기 위해 사용될 수 있고, 판독 명령은 고체상태 드라이브 상에 데이터를 판독하기 위해 사용될 수 있으며, 소거 명령은 고체상태 드라이브 상에 데이터를 소거하기 위해 사용될 수 있다.
도 1은 본 발명의 하나 이상의 실시예들에 따라 컴퓨팅 시스템의 기능 블록도이다.
도 2는 본 발명의 하나 이상의 실시예들에 따라 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템의 기능 블록도이다.
도 3은 본 발명의 하나 이상의 실시예들에 따라 다수의 메모리 장치들에 통신 가능하게 결합된 메모리 시스템 제어기의 기능 블록도이다.
도 4는 본 발명의 하나 이상의 실시예들에 따라 논리 대 물리 어드레스 맵(logical-to-physical address map)을 도시한 것이다.
도 5는 본 발명의 하나 이상의 실시예들에 따라 프론트 엔드 DMA의 명령 큐의 기능 블록도이다.
도 6a 및 도 6b는 본 발명의 하나 이상의 실시예들에 따라 프론트 엔드 DMA의 명령 큐의 동작을 도시한 것이다.
도 7은 본 발명의 하나 이상의 실시예들에 따라 다수의 백 엔드 채널들 간에 명령들을 분배하기 위한 흐름도이다.
도 8은 본 발명의 하나 이상의 실시예들에 따라 프론트 엔드와 다수의 채널들 간에 인터페이스를 도시한 기능 블록도이다.
도 9의 (a)는 본 발명의 하나 이상의 실시예들에 따라 구현된 다이렉트 메모리 액세스 모듈(DMA) 디스크립터 블록의 기능 블록도이다.
도 9의 (b)는 본 발명의 하나 이상의 실시예들에 따라 구현된 도 9의 (a)에 도시된 DMA 디스크립터 블록(DDB) 내의 엔트리를 도시한 것이다.
본 발명은 다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이브들 및 방법들을 포함한다. 하나 이상의 실시예들에서, 메모리 제어기는 복수의 백 엔드 채널들, 및 복수의 백 엔드 채널들에 통신 가능하게 결합된 명령 큐를 포함한다. 명령 큐는 호스트로부터 수신된 호스트 명령들을 보유하게 구성된다. 회로는 명령 큐 내의 적어도 다수의 호스트 명령들에 응하여 다수의 백 엔드 명령들을 발생하고 다수의 백 엔드 명령들을 다수의 복수의 백 엔드 채널들에 분배하게 구성된다.
또한, 본 발명은 메모리 제어기를 위한 방법들 및 장치들을 포함한다. 하나 이상의 실시예들에서, 메모리 제어기는 복수의 백 엔드 채널(back end channel)들, 및 복수의 백 엔드 채널들과 명령 큐에 통신 가능하게 결합된 프론트 엔드 명령 디스패처(front end command dispatcher)를 포함한다. 명령 디스패처는 다수의 명령들에 의해 달성될 메모리에 대한 순수 변화를 판정하고, 복수의 백 엔드 채널들 간에 다수의 명령들의 분배를 최적화하기 위해 다수의 명령들 중 하나 이상을 수정하게 구성될 수 있다.
여기에서 도면들에 번호를 매기는 관례에 따라 도면들에서 표시한 숫자에서 앞에 숫자 또는 숫자들은 도면 번호에 대응하는 것이고 그 뒤에 숫자들은 도면에서 소자 혹은 구성요소를 나타낸다. 도면들 간에 유사한 소자들 혹은 구성요소들은 비슷한 숫자들을 사용하여 확인될 수 있다. 예를 들어, 104는 도 1에서 참조소자가 "04"일 수 있고, 유사한 소자는 도 2에서는(204) 등등으로서 참조될 수 있으며, 이하 등등이다.
도 1은 본 발명의 하나 이상의 실시예들에 따라 컴퓨팅 시스템의 기능 블록도이다. 도 1의 실시예는 컴퓨팅 시스템(100)의 일실시예의 구성요소들 및 아키텍처를 도시한 것이다. 컴퓨팅 시스템(100)은 인터페이스(106), 예를 들면, 무엇보다도, USB, PCI, SATA/150, SATA/300, 또는 SATA/600 인터페이스를 통해, 호스트(102)와 같은 호스트에 통신 가능하게 결합된 메모리 시스템(104), 예를 들면 고체상태 드라이브(SSD)를 포함한다.
SATA는 흔히 병렬 ATA(PATA : parallel ATA)라고도 하는 ATA(Advanced Technology Attachment) 표준에 대한 계승자로서 설계되었다. SATA/150 또는 비공식적으로 SATA 1이라고 알려진 1세대 SATA 인터페이스들은 초당 약 1.5 기가비트(Gb/s), 또는 초당 150 메가바이트(MB/s)의 속도로 통신한다. 뒤이어, 3.0 Gb/s 시그널링 레이트가 물리층에 추가되었으며, 150 MB/s 내지 300 MB/s의 최대, 예를 들면, 최상의 데이터 스루풋(throughput)을 효과적으로 2배가 되게 하였다. SATA/300 혹은 비공식적으로 SATA II 또는 SATA2라고도 알려진, 3.0 Gb/s 사양. SATA/300의 전송 레이트는 얼마간은 자기 하드디스크 드라이브 스루풋 요건을 만족시킬 수 있으나, 복수의 채널들의 고속 플래시를 사용하는 고체상태 드라이브들은 훨씬 더 높은 데이터 전송 레이트들을 지원할 수 있고, 따라서 훨씬 더 빠른 SATA 표준들, 예를 들면, 6 Gb/s의 스루풋을 갖는 SATA/600은 플래시 고체상태 드라이브 판독 속도들을 지원하는데 구현될 수 있다.
호스트(102)는 다수의 개별적 집적회로들을 포함할 수 있고, 혹은 하나 이상의 구성요소 또는 기능이 동일 집적회로 상에 있을 수 있다. 하나 이상의 실시예들에 따르면, 호스트(102)는 적어도 부분적으로, 머더보드로서, 컴퓨팅 시스템(100) 내에 물리적으로 구현될 수 있고, SSD(104)는 별도의 카드 상에 물리적으로 구현되며, 머더보드 및 SSD는 버스를 통해 통신 가능하게 결합된다.
호스트(102)는 메모리 및 버스 제어(107)에 통신 가능하게 결합된 다수의 프로세서들(105), 예를 들면, 병렬 프로세서들, 코-프로세서(co-processor)들, 프로세서 코어(processor core)들, 등을 포함할 수 있다. 다수의 프로세서들(105)은 마이크로프로세서, 혹은 이외 어떤 다른 유형의 제어회로, 이를테면 주문형 반도체(ASIC)일 수 있다. 컴퓨팅 시스템의 그외 다른 구성요소들도 프로세서들을 구비할 수 있다. 메모리 및 버스 제어(107)는 메모리 및 이에 직접 통신 가능하게 결합된 그외 구성요소들, 예를 들면 동적 랜덤 액세스 메모리(DRAM)(111), 그래픽 사용자 인터페이스(113), 혹은 그외 사용자 인터페이스, 예를 들면, 디스플레이 모니터, 키보드, 마우스, 등을 구비할 수 있다.
메모리 및 버스 제어(107)는 이에 통신 가능하게 결합된 주변기기 및 버스 제어(109)를 구비할 수 있고, 이것은 USB(universal serial bus) 인터페이스를 사용하는 플래시 드라이브(115), 비휘발성 메모리 호스트 제어 인터페이스(NVMHCI : non-volatile memory host control interface) 플래시 메모리(117), 혹은 SSD(104)와 같은 다수의 장치들에 연결할 수 있다. 독자가 알게 되는 바와 같이, SSD(104)는 다수의 서로 다른 컴퓨팅 시스템들 내의 하드디스크 드라이브(HDD)에 더하여, 혹은 이를 대신하여 사용될 수 있다. 도 1에 도시된 컴퓨팅 시스템(100)은 이러한 시스템의 일예이다.
도 2는 본 발명의 하나 이상의 실시예들에 따라 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템의 기능 블록도이다. 컴퓨팅 시스템(200)은 호스트(202)에 통신 가능하게 결합된 메모리 시스템(204), 예를 들면, SSD를 포함한다. SSD(204)는 SATA 인터페이스와 같은 인터페이스(206), 예를 들면, 케이블, 버스를 통해 호스트(202)에 통신 가능하게 결합될 수 있다. SSD(204)는 도 1의 고체상태 드라이브(104)와 유사할 수 있다.
도 2는 제어기(210), 물리 인터페이스(208), 예를 들면, 커넥터, 및 제어기(210)(예를 들면, 특정 채널에 대응하는 하나 이상의 메모리 장치들)의 다수의 채널들에 대응하는 다수의 메모리 장치들(212-1,..., 212-N)을 포함하는 고체상태 드라이브(204)의 하나 이상의 실시예들의 구성요소들을 도시한 것이다. 따라서, 메모리 장치들(212-1,..., 212-N)은 "채널 번호 메모리"로서 도면들 상에 도시되었다. 여기에서 사용되는 바와 같이, 메모리 장치는, 제어 입력들을 공유하며 다수의 메모리 유형들, 예를 들면, NAND 플래시를 사용하여 제조될 수 있는 다수의 메모리 셀들, 예를 들면, 다이(die), 칩(chip), 어레이(array), 또는 그외 다른 그룹을 포함할 수 있다. 제어 입력들은 일반적으로 어드레스 래치 인에이블(ALE), 칩 인에이블(CE), 판독 인에이블(RE), 준비/비지(R/B), 기입 보호(WP), 및 핀들, 패드들 등과 같은 입력/출력(I/O) 연결들을 포함할 수 있다. 하나 이상의 실시예들에서, SSD(204)는 이러한 하우징이 필수는 아닐지라도, SSD(204)를 동봉하기 위한 하우징을 포함할 수 있고, 예를 들어, 호스트(202) 및 SSD(204) 둘 다는 컴퓨팅 시스템 하우징에 의해 동봉될 수 있다.
인터페이스(206)는 SSD(204)와 호스트(202)와 같은 또 다른 장치 간에 정보를 통신하기 위해 사용될 수 있다. 하나 이상의 실시예들에 따르면, SSD(204)는 컴퓨팅 시스템(200) 내의 저장장치로서 사용될 수 있다. 하나 이상의 실시예들에 따르면, SSD(204)는 예를 들면, 플러그-인(plug-in) 접속성을 갖춘, 컴퓨팅 시스템(200)을 위한 외부 혹은 휴대용 메모리 시스템으로서 구성될 수 있다.
제어기(210)는 메모리 장치들의 메모리 셀들을 동작시키기 위해서, 예를 들면, 판독, 프로그램(즉, 기입), 소거, 등을 행하기 위해서 메모리 장치들(212-1,..., 212-N)와 통신할 수 있다. 제어기(210)는 메모리 장치들(212-1,..., 212-N)과의 통신, 및 이들에 저장된 데이터를 관리하기 위해 사용될 수 있다. 제어기(210)는 다수의 집적회로들일 수 있는 회로를 구비할 수 있다. 또한, 제어기(210)는 다수의 이산 구성요소들일 수도 있는 회로를 구비할 수 있다. 하나 이상의 실시예들에 있어서, 제어기(210) 내의 회로는 다수의 채널들, 및 다수의 메모리 장치들(212-1,..., 212-N)에 걸친 액세스를 제어하기 위한 제어회로를 포함할 수 있다. 메모리 제어기(210)는 다수의 채널들을 통해 대응하는 메모리 장치(들)에 선택적으로 통신할 수 있다.
호스트(202)와 SSD(204) 간의 통신 프로토콜은 메모리 장치, 예를 들면, 메모리 장치들(212-1,..., 212-N)에 액세스하기 위해 요구되는 것과는 다를 수 있다. 메모리 제어기(210)는 호스트(202)로부터 수신된 명령들을 다수의 메모리 장치들(212-1,..., 212-N)에 걸쳐 의도된 메모리 동작을 달성하기 위해 적합한 명령들로 전환하게 구성된 제어 회로를 포함할 수 있다. 메모리 제어기(210)의 회로는 호스트(202)와 SSD(304) 간에 전환층을 제공할 수 있다. 또한, 메모리 제어기(210)는 예를 들면 데이터를 저장하고 인출하기 위해서 호스트 명령 시퀀스들, 연관된 데이터, 및 기타 정보, 예를 들면 신호들을 적합한 채널 명령 시퀀스들로 처리할 수 있다. 메모리 제어기(210)는 적합한 채널을 통해 적합한 시간에 대응하는 메모리 장치에 명령들을 선택적으로 분배하고, 연관된 데이터, 및 기타 정보를 통신(예를 들면, 수신, 발송, 및 송신)할 수 있다.
본 발명의 하나 이상의 실시예들에 따르면, 각각의 메모리 장치(212-1,..., 212-N)는 다수의 메모리 셀들을 포함할 수 있다. 메모리 장치들(212-1,..., 212-N)는 다양한 유형들의 휘발성 또는 비휘발성 메모리 어레이들, 예를 들면, 무엇보다도, NAND 플래시, DRAM을 사용하여 형성될 수 있다. 본 발명의 하나 이상의 실시예들에 따르면, 메모리 장치들(212-1,..., 212-N)은 모두 발명의 하나 이상의 실시예들을 구현하는데 사용될 수 있는 것들인, NAND 아키텍처, NOR 아키텍처, AND 아키텍처, 혹은 이외 어떤 다른 메모리 어레이 아키텍처로 구성된 다수의 플래시 메모리 셀들을 포함할 수 있다.
메모리 장치들(212-1,..., 212-N)은 페이지(page), 블록(block), 플레인(plane), 어레이(array), 혹은 그외 그룹(group)과 같은, 특정 물리적 혹은 논리적 구성들을 제공하게 구성될 수 있는 다수의 메모리 셀들을 포함할 수 있다. 페이지는 다수의 물리 섹터들의 데이터에 따라 데이터를 저장할 수 있다. 각각의 물리 섹터는 논리 섹터에 대응할 수 있고, 사용자 데이터뿐만 아니라, 오류 정정부호(ECC : error correction code) 정보 및 논리적 블록 어드레스(LBA : logical block address) 정보와 같은 오버헤드 정보를 포함할 수 있다. 당업자가 알게 되는 바와 같이, 논리적 블록 어드레싱은 정보의 논리 섹터를 확인하기 위해 호스트에 의해 자주 사용되는 수법이다. 예로서, 논리 섹터는 다수의 바이트들의 데이터, 예를 들면, 256 바이트들, 512 바이트들, 혹은 1,024 바이트들을 나타내는 정보를 저장할 수 있다. 여기에서 사용되는 바와 같이, 페이지는 함께 혹은 기능 그룹으로서 프로그램 및/또는 판독될 수 있는 프로그래밍 및/또는 판독 유닛, 예를 들면, 다수의 셀들, 혹은 이에 저장된 다수 부분들의 데이터를 말한다. 예를 들면, 일부 메모리 어레이들은 하나의 블록의 메모리 셀들을 구성하는 다수의 페이지들을 포함할 수 있는데, 하나의 블록은 유닛으로서 함께 소거될 수 있는 메모리 셀들을 포함하는 것으로, 예를 들면, 각각의 물리 블록 내의 셀들은 실질적으로 동시에 소거될 수 있다. 다수의 블록들은 메모리 셀들의 플레인 내에 포함될 수 있다. 메모리 셀들의 다수의 플레인들은 다이 상에 포함될 수 있다. 어레이는 다수의 다이를 포함할 수 있다. 예로서, 그리고 한정함이 없이, 128 Gb 메모리 장치는 페이지당 4314 바이트들의 데이터, 블록당 128 페이지들, 플레인 당 2048 블록들, 및 장치당 16 플레인들을 포함할 수 있다. 그러나, 실시예들은 이 예로 제한되지 않는다.
각각의 메모리 장치(212-1,..., 212-N)는 무엇보다도 다양한 유형들의 휘발성 및 비휘발성 메모리 어레이들, 예를 들면, 플래시 및 DRAM 어레이들을 포함할 수 있다. 하나 이상의 실시예들에서, 메모리 장치들(212-1,..., 212-N)은 고체상태(solid state) 메모리 어레이들일 수 있다. 메모리 장치들(212-1,..., 212-N)은 유닛들로 그룹화될 수 있는 다수의 메모리 셀들을 포함할 수 있다. 여기에서 사용되는 바와 같이, 유닛은 다수의 메모리 셀들, 이를테면 페이지, 물리 블록, 플레인, 전체 어레이, 혹은 그외 그룹들의 메모리 셀들을 포함할 수 있다. 예를 들면, 메모리 장치는 메모리 어레이이고 다수의 플레인들을 포함할 수 있으며 각각의 플레인은 다수의 물리 블록들을 포함한다. 각각의 물리 블록 내의 메모리 셀들은 유닛으로서 함께 소거될 수 있는데, 예를 들면, 각각의 물리 블록 내의 셀들은 실질적으로 동시에. 소거될 수 있다. 예를 들면, 각각의 물리 블록 내의 셀들은 단일 동작으로 함께 소거될 수 있다. 물리 블록은 다수의 페이지들을 포함할 수 있다. 각각의 페이지 내의 메모리 셀들은 유닛으로서 함께 프로그램될 수 있고, 예를 들면, 각각의 페이지 내의 셀들은 실질적으로 동시에 프로그램될 수 있다. 각각의 페이지 내의 메모리 셀들 또한 유닛으로서 함께 판독될 수 있다.
메모리 시스템의 물리 섹터는 논리 섹터에 대응할 수 있고, 사용자 데이터 뿐만 아니라, 오류 정정부호(ECC) 정보 및 논리적 블록 어드레스(LBA) 정보와 같은 오버헤드(overhead) 정보를 포함할 수 있다. 당업자가 알게 되는 바와 같이, 논리적 블록 어드레싱은 정보의 논리 섹터를 확인하기 위해 호스트에 의해 자주 사용되는 수법이다. 예로서, 각각의 물리 섹터는 다른 다수의 바이트들 중에서, 다수의 바이트들의 데이터, 예를 들면, 256 바이트들, 512 바이트들, 혹은 1,024 바이트들을 나타내는 정보를 저장할 수 있다. 그러나, 본 발명의 실시예들은 물리 섹터에 저장되거나 논리 섹터에 연관된 특정 수의 바이트들로 제한되지 않는다.
도 3은 본 발명의 하나 이상의 실시예들에 따라 다수의 메모리 장치들에 통신 가능하게 결합된 메모리 시스템 제어기의 기능 블록도이다. 도 3에 도시된 바와 같이, 메모리 제어기(310)는 다수의, 예를 들면, 8개의 메모리 장치들, 예를 들면, 312-1,..., 312-N에 통신 가능하게 결합될 수 있다. 하나 이상의 실시예들에서, 메모리 장치들은 도 2에서 212-1,..., 212-N으로 도시된 것들일 수 있다. 각각의 메모리 장치, 예를 들면, 312-1,..., 312-N은 제어기(310)의 채널, 예를 들면, 350-1,..., 350-N에 대응한다. 여기에서 사용되는 바와 같이, 메모리 장치는 앞에서 논한 바와 같이, 제어 입력들을 공유하는 다수의 메모리 셀들을 포함할 수 있다. 하나 이상의 실시예들에서, 메모리 제어기(310)는 SSD 제어기일 수 있다. 하나 이상의 실시예들에서, 메모리 제어기(310)는 도 2에 도시된 제어기(210)와 유사할 수 있다.
각각의 메모리 장치, 예를 들면, 312-1,..., 312-N는 메모리 장치들(212-1,..., 212-N)에 관하여 앞에서 기술된 바와 같이 구성될 수도 있고, 개개의 다이들 상에 제조될 수 있거나, 적층된 다이들 상에 제조될 수도 있다. 각각의 다이는 다수의 메모리 셀들의 어레이들을 포함할 수 있다. 메모리 제어기(310)는 프론트 엔드부(344) 및 백 엔드부(346)를 포함할 수 있다. 제어기(310)는 예를 들면 백 엔드부(346)에 전송되는 명령들의 분량을 감소시킴으로써, 복수의 백 엔드 채널들 간에 다수의 명령들의 분배를 최적화하기 위해, 프론트 엔드(344)에서 명령들 및 데이터를 처리할 수 있다. 제어기(310)는 특정 채널에 관하여 메모리 동작들의 추가적 효율을 달성하기 위해 백 엔드 채널들 각각에서 명령들 및 데이터를 더욱 처리할 수 있다. 이렇게 하여, 제어기(310)는 메모리 장치들(312-1,..., 312-N)과의 통신을 관리한다.
도 3에 도시된 바와 같이, 프론트 엔드부(344)는 애플리케이션층(320)의 작업 파일(315) 및 호스트 버퍼(322), 예를 들면, FIFO에 통신 가능하게 결합된 호스트 인터페이스(314)를 포함할 수 있다. 예를 들면, 호스트 인터페이스(314)는 입력 및 출력 정보, 예를 들면, 데이터 스트림들을, 도 2의 SSD 상의 물리적 인터페이스, 예를 들면, 208 및 도 2의 SATA 인터페이스, 예를 들면, 206을 통해 도 2의 호스트, 예를 들면, 202와 통신하게 구성될 수 있다. 하나 이상의 실시예들에 따르면, (명령 파라미터들을 포함하는) 명령, 예를 들면, 입력 정보의 명령 부분은 작업 파일(315)에 보내질 수 있고, 연관된 페이로드(payload), 예를 들면, 입력 정보의 데이터 부분은 호스트 FIFO(322)에 보내질 수 있다.
작업 파일(315)은 하나의 딥 큐(deep queue)일 수 있고 명령 프로세서 및 디스패처(318)(이하 "명령 디스패처(command dispatcher)")를 통해 프론트 엔드 다이렉트 메모리 액세스 모듈(DMA)(316)과 통신할 수 있다. 명령 디스패처(318)는, 호스트로부터 도착시 작업 파일(315) 내의 명령을 어떤 기준에 대해 체크할 수 있고(예를 들면, 무결성 체크), 일단 기준에 관하여 검증되면, 도착하는 명령을 받아들 수 있고 이를 작업 파일(315)로부터 프론트 엔드 DMA(316) 및 적합한 백 엔드 채널들에 분배할 수 있게 구성된다(예를 들면, 하드웨어를 포함한다). 무결성 체크에 대한 종래의 수법들은 펌웨어를 사용하여 수행되었지만, 하드웨어로 호스트 명령 무결성 체크를 수행하는 것이 더 빠르며, 따라서 명령 디스패처(318)에 의해 호스트 명령 처리 속도가 빨라지게 된다.
호스트 FIFO(322)는 다수의 암호화 엔진들, 예를 들면, AES 알고리즘을 구현하는 암호화 엔진들을 구비한 암호화 장치(324)에 통신 가능하게 결합될 수 있다. 암호화 장치(324)는 특정 명령에 연관된 페이로드를 처리, 예를 들면, 암호화하고 페이로드를 프론트 엔드 DMA(316)에 송신하게 구성될 수 있다. 암호화 장치(324)의 동작에 관한 추가적인 세부사항은 적어도 하나의 공동 발명자를 가지며 "Parallel Encryption/Decryption" 명칭으로 2008년 12월 12일에 출원된 본 출원인에게 양도된 미국 특허출원번호 12/333,822(대리인 관리번호 1002.0400001)에서 볼 수 있다.
또한, 프론트 엔드부(344)는 프론트 엔드 프로세서(FEP)(328), 메모리(336), 예를 들면, RAM, ROM, DMA(332), 및 주 버퍼(334)를 포함할 수 있는 다수의 다른 프로세서들(330)을 구비할 수 있다. 다수의 프로세서들(330)은 예를 들면, 통신 버스에 의해 프론트 엔드 DMA(316)에 통신 가능하게 결합될 수 있다.
프론트 엔드 DMA(316)는 DMA 디스크립터 블록(DDB) 및, 다수 워드들의 데이터를 담기 위한 연관된 레지스터들을 포함한 레지스터(340)를 포함할 수 있다. 또한, 프론트 엔드 DMA(316)는 이에 통신 가능하게 결합된 다수의 채널들 간을 중재하기 위한 중재자(342)를 포함할 수 있다. 또한, 암호화 장치(324)는 FEP(328)에 통신 가능하게 결합될 수 있다. 또한, FEP(328)는 호스트 FIFO(322)에, 그리고 프론트 엔드 DMA(316)에 직접 통신 가능하게 결합될 수 있다.
프론트 엔드 DMA(316)는 명령 디스패처(318)에 통신 가능하게 결합될 수 있다. 제어기(310)는 다수의 메모리 장치들, 예를 들면, 312-1,..., 312-N에 대응하는 다수의 채널들, 예를 들면, 1,..., N을 포함할 수 있다. 다수의 채널들과 다수의 메모리 장치들 간의 관계가 1 대 1 관계인 것으로서 여기에서 기술되며, 도면들에 도시되지만, 그러나, 본 발명의 실시예들은 이것으로 제한되는 것은 아니며, 다른 구성들이 고찰된다(예를 들면, 특정 채널에 대응하는 복수의 메모리 장치들, 복수의 채널들에 대응하는 특정 메모리 장치, 혹은 이들의 조합들). 프론트 엔드 DMA(316) 및 명령 디스패처(318)는 프론트 엔드(344) 회로를 백 엔드 회로(346), 예를 들면, 백 엔드 채널 1(350-1),..., 백 엔드 채널 N(350-N)에 효과적으로 통신 가능하게 결합한다. 본 발명의 하나 이상의 실시예들에 따르면, 제어기(310)는 8 개의 채널들, 예를 들면, 1,..., 8을 포함한다. 본 발명의 실시예들은 8 개의 채널들을 갖는 제어기들로 제한되는 것은 아니며, 따라서 8개보다 더 많거나 적은 수량의 채널들을 갖는 제어기들이 구현될 수 있다.
이제 제어기(310)의 백 엔드부(346)를 참조하면, 백 엔드부(346)는 다수의 채널들, 예를 들면, 350-1,..., 350-N을 포함한다. 각각의 백 엔드 채널은 채널 프로세서, 예를 들면, 356-1,..., 356-N, 및 각각이 프론트 엔드 DMA(316)에 통신 가능하게 결합될 수 있는 연관된 채널 DMA, 예를 들면, 354-1,..., 354-N을 포함할 수 있다. 명령 디스패처(318)는 채널 명령 큐, 예를 들면, 355-1,..., 355-N을 통해 각각의 채널 프로세서, 예를 들면, 356-1,..., 356-N에 명령들을 분배하게 구성될 수 있다. 하나 이상의 실시예들에서, 채널 명령 큐들, 예를 들면, 355-1,..., 355-N은 명령 디스패처(318)로부터 수신된 다수의 명령들을 유지할 수 있다.
프론트 엔드 DMA(316)는 특정 명령에 연관된 데이터를 대응하는 채널 DMA, 예를 들면, 354-1,..., 354-N에 분배하게 구성될 수 있다. 채널 DMA, 예를 들면, 354-1,..., 354-N은 채널 버퍼, 예를 들면, 358-1,..., 358-N에 통신 가능하게 결합될 수 있고, 이들은 오류 정정부호(ECC) 및 메모리 인터페이스 모듈, 예를 들면, 360-1,..., 360-N에 통신 가능하게 결합될 수 있다. 또한, 채널 프로세서, 예를 들면, 356-1,..., 356-N은 ECC/메모리 인터페이스, 예를 들면, 360-1,..., 360-N, 채널 DMA, 예를 들면, 354-1,..., 354-N, 및 채널 버퍼, 예를 들면, 358-1,..., 358-N에 통신 가능하게 결합될 수 있다.
도 3에 도시된 실시예가 각각의 백 엔드 채널 350-1,..., 350-N을 백 엔드 채널 프로세서, 예를 들면, 356-1,..., 356-N을 포함하는 것으로서 예시하였을지라도, 본 발명의 실시예들은 이것으로 제한되지 않는다. 예를 들면, 백 엔드부(346)는 다수의 백 엔드 채널들, 예를 들면, 350-1,..., 350-N 상에서 동작할 수 있는 예를 들어 주문형 반도체(ASIC)와 같은 하드웨어 로직을 포함하는 공유 백 엔드 프로세서와 같은 회로를 포함할 수 있다. 따라서, 공유 백 엔드 프로세서는 전용 채널 프로세서들, 예를 들면, 356-1,..., 356-N에 대해 기술된 것과 유사한 명령 디스패처(318) 및 프론트 엔드 DMA(316)와 통신하기 위해 통신 가능하게 결합될 수 있다. 도 3에 도시된 바와 같이, 특정 메모리 장치, 예를 들면, 312-1,..., 312-N는 특정 메모리 장치에의 액세스가 대응하는 채널을 통해 될 수 있게 각각의 채널, 예를 들면, 350-1,..., 350-N에 대응한다.
호스트 인터페이스(314)는 제어기(310) 및 호스트 간에 통신 인터페이스 일 수 있다. 하나 이상의 실시예들에서, 호스트 및 제어기 간에 통신된 정보는 프로그램(예를 들면, 기입) 명령들, 판독 명령들, 소거 명령들과 같은 다수의 명령들을 포함할 수 있다. 명령들은 연관된 메모리 장치를 동작시키기 위해 사용될 수 있다.
명령 디스패처(318)는 호스트 인터페이스(314) 및 애플리케이션층(320)을 통해, 호스트, 예를 들면, 도 2의 202로부터 다수의 명령들을 수신할 수 있다. 명령 디스패처(318)는 수신된 명령들을 유지할 수 있고, 명령들을 다수의 각각의 백 엔드 채널들, 예를 들면, 350-1,..., 350-N의 각각의 채널 명령 큐, 예를 들면, 355-1,..., 355-N에, 그리고 프론트 엔드 DMA(316)에 분배할 수 있다.
페이로드는 명령에 연관될 수 있다. 예를 들면, 메모리에 기입하라는 명령에 대해서, 연관된 페이로드는 기입될 데이터일 수 있다. 특정 명령에 연관된 페이로드는 호스트 FIFO(322) 및 AES(324)를 통해 프론트 엔드 DMA(316)에서 수신될 수 있다. 프론트 엔드 DMA(316)는 명령 디스패처(318)에서 특정 명령에 연관된 데이터 를 채널 DMA, 예를 들면, 354-1,..., 354-N에, 혹은 대응하는 채널 버퍼, 예를 들면, 358-1,..., 358-N에 직접 분배할 수 있다. 채널 DMA, 예를 들면, 354-1,..., 354-N은 특정 명령에 연관된 데이터를 대응하는 채널 버퍼, 예를 들면, 358-1,..., 358-N에 분배할 수 있다. 하나 이상의 실시예들에서, 채널 버퍼들, 예를 들면, 358-1,..., 358-N은 다수의 명령들에 대응하는 데이터를 유지할 수 있고, 데이터는 채널 DMA, 예를 들면, 354-1,..., 354-N을 통해, 프론트 엔드 DMA(316)로부터 수신된다.
하나 이상의 실시예들에서, 호스트, 예를 들면, 도 2의 202로부터 제어기(318)의 명령 디스패처(318)에 보내지는 정보는 무엇보다도, 프로그램 명령들, 판독 명령들, 및 소거 명령들과 같은 다수의 명령들을 포함할 수 있다. 프로그램 명령은 데이터를 메모리, 예를 들면, 메모리 장치들(312-1,..., 312-N)에 기입하기 위해 사용될 수 있고, 판독 명령은 데이터를 메모리로부터 판독하기 위해 사용될 수 있고, 소거 명령은 메모리 한 부분을 소거하기 위해 사용될 수 있다. 명령들은 시작 위치, 예를 들면, LBA, 및 분량, 예를 들면, 메모리 동작에 연루되는 메모리의 논리 섹터들의 수와 더불어 동작의 유형, 예를 들면, 프로그램, 판독, 소거를 나타낼 수 있다.
하나 이상의 실시예들에서, LBA는 호스트의 논리 섹터에 연관될 수 있고, 예를 들면, 호스트의 각각의 논리 섹터는 특정 LBA에 연관될 수 있다. 예를 들면, LBA 1000는 제 1 논리 섹터에 연관될 수 있고, LBA 1001는 제 2 논리 섹터에 연관될 수 있고, LBA 1002는 제 3 논리 섹터에 연관될 수 있으며, 이하 등등이다. 또 다른 예로서, LBA 1000에서 시작하여 16 논리 섹터들의 데이터에 대응하는 어레이 내의 메모리 셀들을 프로그램하라는 명령은 LBA 1000 내지 LBA 1015에 연관된 메모리 셀들, 예를 들면, LBA 1000 내지 LBA 1015에 연관된 논리 섹터들의 데이터에 대응하는 메모리 셀들을 프로그램할 수 있다. 따라서, 메모리 어레이 내의 각각의 논리 섹터의 데이터는 특정 LBA에 의해 참조될 수 있다. LBA는 백 엔드(346)에 의해 특정 블록의 메모리에 연관된 물리적 어드레스, 예를 들면, 특정 블록의 메모리의 시작 어드레스에 매핑될 수 있거나, LBA는 하나의 블록의 메모리 내에 특정 섹터에 연관된 물리적 어드레스, 예를 들면, 특정 섹터의 메모리의 시작 어드레스에 매핑될 수 있다.
도 4는 본 발명의 하나 이상의 실시예들에 따라 구현된 논리 대 물리 어드레스 맵을 도시한 것이다. 어드레스 맵(461)은 메모리 장치들, 예를 들면, 312-1,..., 312-N의 LBA와 물리 블록 어드레스(PBA : physical block address) 간의 상관을 예시한 것이다. 예를 들면, LBA 1(462-1)은 PBA A(464-1)에 대응하고, LBA 2(462-2)는 PBA B(464-2)에 대응하고, LBA 3(462-3)은 PBA C(464-3)에 대응하고, LBA 4(462-4)는 PBA D(464-4)에 대응하고,..., LBA M(462-M)은 PBA M(464-M)에 대응한다.
명령 수신
본 발명의 하나 이상의 실시예들에 따르면, 프론트 엔드 DMA, 예를 들면, 도 3의 316은 명령 큐(386)를 포함할 수 있다. 프론트 엔드 DMA, 예를 들면, 도 3의 316은 애플리케이션층(320) 및 명령 디스패처(318)를 통해 호스트로부터 수신된 다수의 명령들을 유지할 수 있다. 명령 디스패처(318)는 명령들을 처리하고, 명령들을 프론트 엔드 DMA(316) 및 다수의 적합한 백 엔드 채널들, 예를 들면, 도 3의 350-1,..., 350-N에 분배할 수 있다. 명령 디스패처, 예를 들면, 도 3의 318에 의해 수행되는 동작들은 하드웨어, 소프트웨어, 혹은 이들의 조합으로 구현될 수 있다. 명령 디스패처, 예를 들면, 도 3의 318은 명령 프로세서부 및 디스패처부를 포함할 수 있다. 명령 프로세서부 및 디스패처부는 이산 하드웨어 모듈들일 수 있거나, 각각의 기능들은 제어 회로에 의해 통합된 방식으로 구현될 수 있다.
호스트로부터의 명령(이하 "호스트 명령")을 수신하였을 때, 명령 디스패처, 예를 들면, 도 3의 318의 명령 프로세서부는 호스트 명령의 무결성을 체크하고, 이어서, 호스트 명령을 명령 디스패처의 디스패처부를 따라 전달할 수 있다. 본 발명의 하나 이상의 실시예들에 따르면, 명령 디스패처, 예를 들면, 도 3의 318의 명령 프로세서부는 명령들을 다른 무결성 테스트 중에서도, 수락가능한 LBA 범위에 대해서 그리고 유효한 태그(tag)에 대해서 체크하게 구성될 수 있다.
디스패처부는 호스트 명령을 프론트 엔드 DMA(316) 및 다수의 적합한 백 엔드 채널들, 예를 들면, 도 3의 350-1,..., 350-N에 분배할 수 있고, 다음 호스트 명령이 보내질 수 있음을 나타내기 위해 호스트에 전달될 수 있는 명령의 완료 상태, 예를 들면, 이것이 받아들여져 처리되었는지 여부를 애플리케이션층(320)에 표시할 수 있다. 명령 디스패처의 기능을 하드웨어로 구현하는 것은 호스트 명령 처리 시간, 예를 들면, 호스트로부터 호스트 명령의 수신 후에 명령을 처리하고 명령 완료 상태의 표시자를 전달(예를 들면, 송신 혹은 발송)하는 시간을 줄일 수 있다. 메모리 시스템 스루풋은 호스트와 메모리 시스템 간에 통신되는 호스트 명령들 간에 처리 시간을 감소시킴으로써 증가될 수 있다.
도 5는 본 발명의 하나 이상의 실시예들에 따라 프론트 엔드 DMA의 명령 큐의 블록도이다. 명령 큐(586)는 하나의 분량의 C 명령들을 보유하는 용량을 갖는데, 예를 들면, 명령 큐는 다수의 명령 슬롯들을 가질 수 있으며, 각각의 명령 슬롯은 하나의 명령을 보유할 수 있다. 도 5에 도시된 바와 같이, 명령 큐(586)는 다수의 명령 슬롯들, 예를 들면, 명령 슬롯 1(587-1), 명령 슬롯 2(587-2),..., 명령 슬롯 C(587-C)을 포함한다. 예를 들면, 하나 이상의 실시예들에서, 프론트 엔드 DMA, 예를 들면, 도 3의 316은 32 개의 명령들을 저장하는 용량을 가진 다수의 명령 큐들(386)을 포함할 수 있는데, 그러나, 본 발명의 실시예들은 특정 수의 명령 슬롯들, 명령 큐 용량, 혹은 명령 디스패처에 의해 동시에 처리될 수 있는 명령들의 수로 제한되지 않는다.
하나 이상의 실시예들에서, 프론트 엔드 DMA, 예를 들면, 도 3의 316은 초기 순서로 호스트로부터 호스트 명령들을 수신할 수 있다. 다수의 명령 큐들(386)은 다수의 호스트 명령들을 초기 순서로, 예를 들면, 이들이 호스트로부터 수신되는 순서로 유지할 수 있다. 명령 큐들(386)은 한번에 유한한 개수의 명령들을 유지할 수 있고, 따라서 명령 디스패처는 명령 큐(386)가 자신의 용량에 이르고 호스트로부터 또 다른 호스트 명령들을 일시적으로 수신할 수 없을 때 호스트에 알리게 구성된다.
하나 이상의 실시예들에서, 명령 디스패처, 예를 들면, 도 3의 318은 작업 파일(315)에 보유된 호스트 명령을 처리할 수 있고, 이를 프론트 엔드 DMA(316) 내의 명령 큐(386)에 분배할 수 있다. 이어서, 명령 디스패처(318)는 명령 큐(386)로부터의 호스트 명령들을, 이들이 수신되어 명령 큐(386)에 대기되었던 순서, 예를 들면, 호스트 명령들이 실행되는 순서, 혹은 호스트 명령들이 분배될 수 있는 순서, 혹은 전술한 순서들의 조합으로, 혹은 이외 어떤 다른 적합한 순서를 정하는 방법에 따라, 백 엔드 채널들에 분배할 수 있다.
하나 이상의 실시예들에서, 명령 디스패처의 명령 프로세서부는 예를 들면, 복수의 백 엔드 채널들 간에 다수의 명령들의 분배를 최적화하기 위해서, 그리고 호스트 명령들을 개별적으로 혹은 그룹으로서 수정하기 위해서 명령 큐(들)(386) 내에 보유된 명령들이 수정될 수 있는지 여부를 판정하게 구성된다. 분배를 절약하기 위해 명령들을 수정하는 것은, 예를 들면, 명령들을 인접한 메모리 위치들에 결합하는 것과, 및/또는 이어서 판독됨이 없이 덮어쓰기(over-write) 되는 명령들을 삭제하는 것을 포함할 수 있고, 따라서, 기입 동작들을 위한 메모리에 대한 동일한 순수 변화를 달성하거나, 판독 동작들을 위해 메모리로부터 동일한 순수 판독(net read)을 달성하기 위해 더 적은 명령들이 보내지므로, 무엇보다도 시간, 처리자원들, 및/또는 통신 대역폭을 절약한다. 여기에서 사용되는 바와 같이, 명령들은 호스트 명령들, 수정된 호스트 명령들, 및 그외 다른 유형들의 명령들을 포함할 수 있다. 명령 프로세서부는 명령들을 각각의 채널들에 보다 효율적으로 분배하거나, 개개의 명령들을 더 효율적이게 하거나, 메모리 시스템의 신뢰성을 개선하거나, 메모리 시스템의 성능을 개선하거나, 메모리 시스템의 마모를 줄이거나, 또, 각각의 백 엔드 채널들 간에 명령들의 질, 효율, 혹은 흐름을 개선하기 위해서, 명령 큐(386) 내의 명령들을 분석하고 수정할 수 있다. 예를 들면, 명령 프로세서부는, 다른 명령 최적화 기술들 중에서도, 명령들을 일그룹의 명령들 이내로 순서를 다시 정하거나, 복수의 명령들을 하나 이상의 명령들로 그룹화함으로써 명령들을 결합(예를 들면, 병합)하거나, 특정 명령이 실행되지 않을 것으로(예를 들면, 후속되는 명령이 특정 메모리 위치에 데이터를 수정할 것으로 판정될 수 있을 때) 판정할 수 있다. 하나 이상의 실시예들에서, 프론트 엔드 프로세서(FEP)(328)는 이들 작업들을 수행하고 이들 판정들을 행할 수 있다.
도 6a 및 도 6b는 본 발명의 하나 이상의 실시예들에 따라 프론트 엔드 DMA의 명령 큐의 동작을 도시한 것이다. 하나 이상의 실시예들에 따르면, 명령 디스패처, 예를 들면, 도 3의 318, 및/또는 FEP, 예를 들면, 도 3의 328은 프론트 엔드 DMA, 예를 들면, 도 3의 386의 명령 큐 내에 보유된 명령들이 수정될 수 있는지를 판정할 수 있고, 명령 디스패처는 제어기, 예를 들면, 도 3의 344의 프론트 엔드의 명령 스루풋을 진척시키게 의도된 방식으로 명령들을 수정하게 구성될 수 있다.
명령 스루풋을 증가시키기 위해서, 하나 이상의 실시예들에서, 명령 디스패처(318) 또는 FEP(328)는 백 엔드 채널들이 비지(busy) 상태일 때만(예를 들면, 연관된 채널 버퍼들이 다 채워졌을 때) 스루풋을 증가시키게 호스트 명령들을 처리한다. 연관된 채널 버퍼들(예를 들면, 각각, 358-1,..., 358-N)이 다 채워졌을 때와 같이, 백 엔드 채널들이 비지 상태일 때, 제어기의 프론트 엔드부는 명령들을 백 엔드 채널들로 분배하지 못하게 될 수 있다. 다수의 백 엔드 채널들이 추가의 명령들을 받아들 수 있고 받아들일 것이라는 점에서, 명령 큐(686A/B)를 비우는 것을 지연시키는 것은 명령 큐(686A/B) 내의 호스트 명령들의 완료를 지연시키며 이에 따라 호스트로부터 추가의 명령들의 전송을 지연시키게 되고, 명령들의 더욱 최적화는 명령들을 다른 백 엔드 채널들에 분배하는데 있어 지연을 야기시킴이 없이 각각의 채널 명령 큐 내에서 행해질 수 있기 때문에(아마도 훨씬 더 큰 효율을 갖고), 명령들은 명령 디스패처에 의한 더욱 최적화된 처리를 달성하기 위해 지연되지 않아야 한다. 백 엔드 채널들의 동작에 관한 추가적인 세부사항은 적어도 하나의 공동 발명자를 가지며 "Modifying Commands"라는 명칭의 본 출원인에 양도된 미국 특허출원번호 12/351,206(대리인 관리번호 1002.0430001)에서 볼 수 있다.
하나 이상의 실시예들에서, 명령 큐(686A)는 도 3에 관련하여 논한 명령 큐(386)와 유사할 수 있다. 명령 큐(686A)는 다수의, 예를 들면 C개의 명령 슬롯들, 예를 들면, 687-1A, 687-2A, 687-3A, 687-4A, 687-5A, 687-6A, 687-7A, 687-8A,..., 687-CA를 포함한다. C 개의 명령 슬롯들 각각은 일시적으로 명령, 예를 들면, 호스트 명령을 저장하게 구성될 수 있다. 예를 들면, 명령 슬롯(687-1A)은 제 1 명령을 저장할 수 있고, 명령 슬롯(687-2A)은 제 2 명령을 저장할 수 있으며, ㅇ이하 등등이다.
명령 큐(686A) 내에 명령들을 처리하는 프론트 엔드 명령 디스패처에 관련하여 이하 논의되고 도 6a에 도시된 예에서, 명령 슬롯 1, 예를 들면, 687-1A 내의 명령은 프로그램하라는 명령, 예를 들면, 데이터를 LBA 1000에서 시작하는 16 논리 섹터들을 포함하는 메모리 장치내 메모리 셀들에 기입하라는 명령일 수 있다. 명령 슬롯 2 예를 들면, 687-2A 내의 명령은 LBA 2000에서 시작하는 4 논리 섹터들을 포함하는 메모리 장치 내의 메모리 셀들로부터 데이터를 판독하라는 명령일 수 있다. 명령 슬롯 3 예를 들면, 687-3A 내의 명령은 LBA 1000에서 시작하는 48 논리 섹터들의 데이터를 포함하는 메모리 장치 내의 메모리 셀들에 데이터를 프로그램하라는 명령일 수 있다. 명령 슬롯 4 예를 들면, 687-4A 내의 명령은 LBA 2002에서 시작하는 10 논리 섹터들의 데이터를 포함하는 메모리 장치 내의 메모리 셀들에 데이터를 판독하라는 명령일 수 있다. 명령 슬롯 5 예를 들면, 687-5A 내의 명령은 LBA 2000에서 시작하는 16 논리 섹터들 데이터를 포함하는 메모리 장치 내의 메모리 셀들에 데이터를 판독하라는 명령일 수 있다. 명령 슬롯 6 예를 들면, 687-6A 내의 명령은 LBA 1040에서 시작하는 16 논리 섹터들의 데이터를 포함하는 메모리 장치 내의 메모리 셀들에 데이터를 프로그램하라는 명령일 수 있다. 명령 슬롯 7 예를 들면, 687-7A 내의 명령은 LBA 3000에서 시작하는 2 논리 섹터들의 데이터를 포함하는 메모리 장치 내의 메모리 셀들에 데이터를 프로그램하라는 명령일 수 있다. 명령 슬롯 8 예를 들면, 687-8A 내의 명령은 LBA 3002에서 시작하는 2 논리 섹터들의 데이터를 포함하는 메모리 장치 내의 메모리 셀들에 데이터를 프로그램하라는 명령일 수 있다.
임의의 특정 시간에 명령 큐(686A) 내에 보유된 명령들은 예를 들면, 모두 동일한 채널에 대응하는 것인 한 메모리 장치에 연관될 수 있거나, 예를 들면, 복수의 채널들에 대응하는 다수의 서로 다른 메모리 장치들에 연관될 수 있다. 명령이 연관되는 특정 채널은 논리 대 물리 어드레스 맵, 예를 들면, 도 4에 어드레스 맵(461)에 의해 매핑되는 바와 같이, 각각의 채널에 관하여 물리적 메모리의 양 및 분할에 따라, LBA로부터 결정될 수 있다. 예를 들면, 물리 블록 어드레스는 채널 식별 정보를 포함할 수 있다.
명령 큐(686A) 내에 보유된 명령들은 본 발명의 하나 이상의 실시예들에 따라 수정될 수 있다. 예를 들면, 명령 슬롯들(687-1, 687-3, 및 687-6) 내의 명령들은 LBA 1000에서 시작하는 56 논리 섹터들을 포함하는 메모리 셀들을 프로그램하기 위해 단일 명령으로 결합될 수 있다. 따라서, 명령 디스패처는 적어도 두 명령들이 논리적으로 인접한 메모리 위치들을 포함하지만 동일 동작, 예를 들면, 기입 동작에 대한 것임을 판정하게 구성될 수 있다. 명령 디스패처는 논리적으로 인접한 메모리 위치들의 조합을 포함하는 단일 명령으로 적어도 두 명령들을 결합함으로써 백 엔드 채널들에 명령들의 분배를 최적화할 수 있다. 결합된 명령은 논리적으로 인접한 메모리 위치들이 단일 채널에 연관되는 경우 가장 효율적이다.
도 6b는 본 발명의 하나 이상의 실시예들에 따라. 도 6a에 도시된 명령들이 수정된 후의 채널 명령 큐(686B)의 블록도이다. 도 6b에 도시된 바와 같이, 채널 명령 슬롯(687-1B) 내에 보유된 명령 1은 LBA 1000에서 시작하는 호스트의 56 논리 섹터들에 대응하는 어레이 내의 메모리 셀들을 프로그램하라는 명령이다. 채널 명령 슬롯(687-2B) 내에 보유된 명령 2는 LBA 2000에서 시작하는 호스트의 16 논리 섹터들에 대응하는 어레이 내의 메모리 셀들을 판독하라는 명령이며, 채널 명령 슬롯( 687-3B) 내에 보유된 명령 3은 LBA 3000에서 시작하는 호스트의 4 논리 섹터들에 대응하는 어레이 내의 메모리 셀들을 프로그램하라는 명령이다.
또한, 명령 디스패처는 적어도 두 명령들이 동일 동작, 예를 들면, 논리적으로 중첩하는 메모리 위치들을 포함하는 기입 동작으로서, 예를 들면, 하나의 명령에 포함되는 메모리 위치가 동일 유형의 또다른 명령에 포함된 적어도 메모리 위치의 부분을 포함하는 것으로 판정하게 구성될 수 있다. 명령 디스패처는 적어도 두 명령들을 논리적으로 중첩하는 메모리 위치들의 결합을 포함하는 단일 명령으로 결합함으로써 백 엔드 채널들에 명령들의 분배를 최적화할 수 있다.
이외 명령 수정들이 가능할 수 있다. 예를 들면, 특정 메모리 위치, 예를 들면, LBA를 포함하는 명령 큐(686A) 내의 제 1 명령이 특정 메모리 위치를 덮어쓸 제 2 명령 전에 실행될 수 있는 것으로 명령 프로세서부가 판정할 수 있는 경우에, 명령 프로세서부는 제 1 명령의 결과들이 예를 들면, 제 2 명령이 실행되기 전까지 단지 일시적일 것이기 때문에, 제 1 명령을 이의 목적지 채널에 분배하지 않을 수 있다(예를 들면, 삭제, 무시, 실행하지 않는다).
위에 언급된 예는 도 6에 관련하여 더욱 이해될 수 있다. 명령 큐(686A)의 맨 위, 예를 들면, 명령 슬롯(687-1)에 가까이 있는 명령들을 취하는 것은 명령 큐(686A)의 맨 아래, 예를 들면, 명령 슬롯(687-C)에 가까이 있는 명령들 전에 실행될 것이다. 명령 슬롯 1, 예를 들면, 687-1A, 및 명령 슬롯 3, 예를 들면, 687-3A 내의 명령들의 LBA는 둘 다 1000이다. 명령 1 및 명령 3은 둘 다 프로그램 동작들이다. 명령 3은 LBA 1000에서 시작하는 48 섹터들을 프로그램할 것이기 때문에, 명령 3은 명령 1의 결과로서 LBA 1000부터 시작하는 16 섹터들에서 프로그램되는 것은 무엇이든지 완전히 덮어쓸 것이다. 사이에 개재되는 판독 동작, 예를 들면, 명령 2가 있지만, 그러나, 명령 2는 LBA 1000부터 시작하는 16 섹터들을 포함하지 않는다. 그러므로, 명령 1은 분배될(예를 들면, 삭제, 무시, 실행되지 않을) 필요가 없고, 그럼으로써 명령 1을 채널에 전송할 필요가 없고 명령 큐(686A)로부터 명령들을 복수의 백 엔드 채널들 간에 분배, 및 명령 큐(686A)가 추가의 호스트 명령들을 받아들 수 있는 속도를 최적화하지 않음으로써 시간을 절약한다. 다수의 백 엔드 채널들에 명령 큐(686A)에 보인 명령들의 분배를 최적화, 예를 들면 절약하기 위해 다른 명령의 재순서화, 결합 및 삭제가 가능할 수 있다.
따라서, 명령 디스패처는 명령 큐(686A) 내의 다수의 명령들에 의해 달성될 메모리에 대한 순수 변화(net change)를 판정하고, 판정에 기초하여 명령 큐(686A) 내에 보유된 다수의 명령들을 수정하여, 복수의 백 엔드 채널들 간에 다수의 명령들의 분배를 최적화하게 구성될 수 있다. 명령 디스패처는 명령 큐(686A)로부터 다수의 명령들 중 하나를 분배하지 않아도(예를 들면, 삭제, 무시, 실행하지 않음) 다수의 명령들에 의한 메모리에 대한 판정된 순수 변화를 변경하지는 않을 것임을 명령 디스패처가 명령 큐(686A)에 보유된 명령들로부터 언제든 판정할 수 있을 때는 명령 큐(686A)로부터 다수의 명령들 중 하나를 분배하지 않게 구성될 수 있다. 예를 들면, 명령 디스패처는 명령 큐(686A) 내의 제 2 명령의 메모리 범위의 부분을 포함하게 명령 큐(686A) 내의 제 1 명령에 연관된 메모리 범위를 수정하고, 그후에 다수의 명령들에 달성될 메모리에 대한 판정된 순수 변화를 변경함이 없이 명령 큐(686A)로부터 제 2 명령을 삭제하게 구성될 수 있다.
위에 기술된 바와 같이, 명령 디스패처의 디스패처부는 명령들, 예를 들면, 호스트 명령들을 다수의 적합한 채널들에 분배할 수 있다. 디스패처부는 특정 명령을 예를 들면, 특정 명령에 연관된 페이로드가 단일 채널을 포함하는 적합한 채널에 분배할 수 있다. 복수의 채널들을 포함하는 페이로드에 대해서, 디스패처부는 명령에 연관된 특정 논리적 블록 어드레스 및 섹터 카운트에 대응하는 각각의 메모리 장치들을 동작시키기 위한 자신의 특정한 파라미터들을 포함한 특정 명령을 복수의 채널들에 분배함으로써 연관된 명령의 분배를 관리할 수 있다. 이어서, 명령에 연관된 페이로드는 분할(parsed)될 수 있고, 이의 부분들은 예를 들면, 라운드 로빈 방식으로, 복수의 채널들 간에 분배된다. 유사하게, 판독 동작에 있어서, 판독 명령에 연관된 페이로드는 복수의 백 엔드채널들 간에 분배될 수 있고, 대응하는 판독 명령은 복수의 채널들 중 이들로부터 데이터를 어셈블(assemble)하기 위해, 연관된 백 엔드 채널들에 분배될 수 있다.
각각의 백 엔드 채널은 예를 들면, R개의 연속한 논리적 블록 어드레스(LBA)들을 처리할 수 있으나, 호스트 명령(즉, 호스트로부터 수신된 명령)은 비교적 많은 수의 섹터들을 포함할 수 있다. 명령 디스패처는 백 엔드 명령들을 라운드 로빈(round robin) 방식으로 다수의 백 엔드 채널들 간에 분배할 수 있고, 여기에서 각각의 백 엔드 명령은 각각의 백 엔드 명령이 R개의 연속한 LBA들을 포함하는 것을 제외하곤 호스트 명령을 모방한다. 라운드 로빈 프로세스는 호스트 명령의 모든 섹터들이 백 엔드 채널들 간에 R-크기의 "청크(chunk)들"로 분배될 때까지 계속된다.
더 예시하기 위해서, 호스트 명령이 128 섹터들의 데이터를 기입하는 것이고 4 개의 백 엔드 채널들이 있고 각각의 백 엔드 채널이 8개의 연속 LBA들을 처리할 수 있는 수치적 예를 고찰한다. 간단하게 하기 위해서, 메모리 위치 오프셋들은 이 예에서 무시될 것이다. 128 섹터들을 포함하는 호스트 기입 명령을 수신하였을 때, 단일 호스트 기입 명령에 응하여 복수의 백 엔드 기입 명령들이 발생된다. 제 1 백 엔드 기입 명령은 백 엔드 채널 1로 가는 처음 8개의 LBA들을 포함할 수 있고, 이어서, 제 2 백 엔드 기입 명령은 백 엔드 채널 2로 가는 다음 8 LBA들을 포함할 수 있고, 제 3 백 엔드 기입 명령은 백 엔드 채널 3으로 가는 다음 8 LBA들을 포함할 수 있고, 제 4 백 엔드 기입 명령은 백 엔드 채널 4로 가는 다음 8 LBA들을 포함할 수 있다. 이 라운드 로빈 처리는 모든 128 섹터들이 4 채널들 간에 분배될 때까지, 백 엔드 채널 1로 가는 다음 8 LBA들을 포함하는 제 1 백 엔드 기입 명령으로 계속된다.
그 결과, 각각의 채널은 호스트 기입 명령에 대응하는 32 섹터들의 페이로드를 수신하였을 것이지만, 함께 이어진 일 군(collection)의 8 LBA 부분들로서 어셈블(assemble) 된다. 그 후에, 각각의 기입 명령은 32 섹터들의 데이터를 기입하기 위해 각각의 백 엔드 채널들에 분배된다. 따라서, 단일 호스트 명령은 N 백 엔드 명령들(N 백 엔드 채널들이 있는)을 야기할 수 있고, 각각은 호스트 명령 동작을 모방하나 호스트 명령에 연관된 페이로드의 근사적으로 1/N 번째를 포함한다. 호스트 명령에 연관된 페이로드의 각각의 부분과 더불어, 채널당 단지 하나의 명령만이 분배된다. 본 발명의 실시예들은 여기에 기술된 수치적 예의 양(quantity)들로 제한되지 않으며 기입 명령들로 제한되지 않는다. 당업자는 다른 명령들(예를 들면, 판독 명령들)이 유사하게 단일 호스트 명령으로부터 비롯된 복수의 채널들 간에 병렬로 분배될 수 있음을(예를 들면, 다수의 백 엔드 채널들 간에 이들로부터 데이터를 판독하기 위해) 알 것이다.
하나 이상의 실시예들에서, 명령 큐(686A) 내의 명령들은 부분적 페이지 프로그래밍 동작들을 제거 또는 감소시키기 위해서 다수의 명령들을 단일 명령으로 결합함으로써, 예를 들면 부분적 페이지들을 함께 단일 동작으로 결합함으로써 수정될 수 있다. 부분 페이지 프로그래밍에 연관된 마모를 감소시킴으로써 메모리 시스템의 성능 및 신뢰도를 개선시키는 것 외에도, 프론트 엔드 명령 큐(686A) 내의 명령들을 결합하는 것은 복수의 프로그래밍 명령들이 몇개의 명령들, 예를 들면, 단일 명령으로 줄어들 수 있기 때문에, 복수의 백 엔드 채널들 간에 다수의 명령들의 분배를 최적화한다.
부분 페이지 프로그래밍 동작들은 비어 있는 새로운 하나의 블록의 메모리 셀들을 발견하고, 구(old) 블록으로부터 하나의 페이지를 데이터 버퍼에 읽어들이고, 새로운 데이터를 데이터 버퍼 내에 병합하고, 전체 페이지(병합한 데이터를 포함하는)를 새로운 블록 내의 새로운 하나의 페이지의 메모리에 기입하고, 구 블록의 모든 다른 페이지들을 새로운 블록으로 이동시키고, 구 블록이 소거될 것임을 나타내게 이에 표시함으로써 수행된다. 복수의 백 엔드 채널들 간에 다수의 명령들의 분배를 최적화하는 명령들을 결합하기 위해 사용되는 알고리즘들을 예시하기 위해 몇개의 예들이 주어졌으나, 본 발명의 실시예들은 제공된 예들로 제한되지 않으며, 본 발명는 복수의 백 엔드 채널들 간에 분배되는 일분량의 명령들을 감소시키기 위해 프론트 엔드에서 명령들을 삭제하거나 재정렬하는 것을 포함하는 것들과 같은 그외 다른 최적화 기술들을 고찰한다.
하나 이상의 실시예들에서, 메모리 제어기는 복수의 백 엔드 채널들, 및 복수의 백 엔드 채널들에 통신 가능하게 결합된 명령 큐, 예를 들면, 도 3의 386을 포함한다. 명령 큐, 예를 들면, 도 3의 386은 호스트로부터 수신된 호스트 명령들을 유지하게 구성될 수 있다. 회로는 명령 큐, 예를 들면, 도 3의 386 내의 적어도 다수의 호스트 명령들에 응하여 다수의 백 엔드 명령들을 발생하고, 다수의 백 엔드 명령들을 다수의 복수의 백 엔드 채널들에 분배하게 구성된다.
다수의 백 엔드 명령들은 다수의 호스트 명령들보다 적거나 많을 수 있다. 예를 들면, 하나 이상의 실시예들에서, 회로는 단일 호스트 명령에 응하여 복수의 백 엔드 채널들 각각에 대응하는 백 엔드 명령을 발생하게 구성될 수 있다. 회로는 백 엔드 명령들이 실질적으로 병렬로 처리되게 대응하는 백 엔드 명령을 이의 각각의 백 엔드 채널에 분배하게 더욱 구성될 수 있다. 하나 이상의 실시예들에서, 회로는 복수의 호스트 명령들이 실질적으로 동시에 실행되게 복수의 호스트 명령들을 서로 다른 복수의 백 엔드 채널들 간에 분배하게 구성될 수 있다.
다수의 백 엔드 명령들을 발생하는 것은 다수의 호스트 명령들 중 적어도 하나를 수정하는 것과 다수의 호스트 명령들 중 또 다른 하나를 삭제하는 것의 조합을 포함할 수 있다. 다이렉트 메모리 액세스 모듈(DMA)은 발생된 다수의 백 엔드 명령들에 대응하는 호스트 명령에 연관된 데이터를 분배하게 구성될 수 있다.
각각의 백 엔드 명령의 완료시, 회로는 복수의 백 엔드 명령들 중 어떤 다른 것의 실행의 완료에 관계없이, 복수의 백 엔드 명령들 중 특정한 명령의 완료시 복수의 백 엔드 명령들 중 특정한 명령을 실행으로부터 결과들을 호스트에 알리게 구성될 수 있다.
도 7은 본 발명의 하나 이상의 실시예들에 따라 명령들을 다수의 백 엔드 채널들 간에 분배하기 위한 흐름도이다. 명령 분배는 766에서 시작한다. 767에서 분배된 명령의 시작 LBA는 명령 LBA와 LBA 오프셋과의 합으로 설정될 수 있다. 시작 채널 섹터 카운트, 끝 채널, 끝 채널 섹터 카운트, 잔여 섹터 카운트 및 채널 시작 LBA와 더불어, 시작 채널이 결정, 예를 들면, 계산될 수 있다. 768에서, 예를 들면, 명령이 초기에 분배되는 채널 번호는 시작 채널에 설정될 수 있다. 이어서 769에서, 현재 채널에 대해 시작 LBA 및 섹터 카운트가 결정, 예를 들면, 계산될 수 있고, 특정 채널이 특정 명령에 연루됨을 나타내기 위해 특정한 현재 채널 번호에 대해 채널 포함 상태 비트, 예를 들면, involved_ch이 발현될 수 있다.
다음에 770에서, 현재 채널에 대한 시작 LBA 및 섹터 카운트는 현재 채널의 인박스(inbox)(채널 인박스들은 이하 설명된다)에 로딩된다. 현재 채널이 끝 채널(767 참조)인지 여부는 771에서 결정될 수 있다. 현재 채널이 끝 채널이 아니라면, 분배 프로세스는 다음 채널로 이동하며, 예를 들면, 현재 채널 번호가 773에서 증분될 수 있고, 프로세스는 769에서 계속된다(현재 채널에 대한 시작 LBA 및 섹터 카운트는 현재 채널의 인박스에 로딩된다). 현재 채널이 끝 채널이라면, 772에서, 연루된 시작 채널, 채널 섹터 카운트 및 채널들이 DMA 디스크립터 블록(DDB; 이하 더욱 설명됨)에 로딩되며, 프로세스는 766에서 다음 명령 분배를 시작하게 위해 되돌아 간다.
도 8은 본 발명의 하나 이상의 실시예들에 따라 프론트 엔드 및 다수의 채널들 간에 인터페이스의 일실시예를 도시한 기능 블록도이다. 도 8은 도 3에 도시된 채널들(350-1,..., 350-N)과 유사할 수 있는 메모리 제어기의 백 엔드부(846) 내에 위치된 다수의 채널들, 예를 들면, 850-1,..., 850-N을 도시한 것으로, 그러나, 도 3에 도시된 채널 세부사항의 일부는 추가된 구조가 더 상세히 보여질 수 있게 도 8에선 명확성을 위해 생략되었다. 또한, 도 8은 메모리 제어기의 프론트 엔드부(844) 내에 위치된 프론트 엔드 DMA(816) 및 프론트 엔드 프로세서(828)(FEP)를 도시한다. 프론트 엔드 DMA(816)는 도 3의 프론트 엔드 DMA(316)와 유사할 수 있고, FEP(828)는 도 3의 FEP(328)와 유사할 수 있다. 프론트 엔드 DMA(816) 및 FEP(828)는 이하 더 상세히 기술되는 방법으로 다수의 채널들, 예를 들면, 850-1,..., 850-N, 각각에 통신 가능하게 결합된 것으로서 도 8에 각각 도시되었다.
각각의 채널은 채널 프로세서, 예를 들면, 856-1,..., 856-N, 채널 인-박스, 예를 들면, 874-1,..., 874-N, 채널 인-레지스터(in-register), 예를 들면, 876-1,..., 876-N, 및 채널 아웃-레지스터(out-register), 예를 들면, 878-1,..., 878-N을 포함한다. 채널 아웃-레지스터 및 인-박스 각각은 정보를 FEP(828)에 제공하기 위해 통신 가능하게 결합된다. 채널 인-박스 및 인-레지스터 각각은 프론트 엔드 DMA(816)로부터 정보를 수신하기 위해 통신 가능하게 결합된다.
프론트 엔드 다이렉트 메모리 액세스( DMA )
도 9의 (a)는 본 발명의 하나 이상의 실시예들에 따라 구현되는 다이렉트 메모리 액세스 모듈(DMA) 디스크립터 블록의 기능 블록도이다. DDB는 호스트와 백 엔드 채널들 간에 데이터 흐름을 제어하며, 명령 큐, 예를 들면, 도 3의 386으로부터 명령들을 여러 백 엔드 채널들에 분배하는 효율을 증가시켜 명령 큐, 예를 들면, 도 3의 386을 통한 명령들의 속도를 증가시키기 위해서, 명령 큐, 예를 들면, 도 3의 386 내에 보유된 명령들에 대한 지능형 의사결정을 사용하여 시스템 스루풋을 최적화하게 기능한다.
대응하는 채널들, 예를 들면, 고체상태 드라이브를 통해 액세스되는 다수의 메모리 장치들을 구비한 메모리 시스템에 대해서, 기입 명령에 연관된 페이로드는 다수의 채널들에 프로그램될 수 있고, 판독 명령에 연관된 페이로드는 다수의 채널들로부터 어셈블될 수 있다. 복수의 채널들을 포함하는 특정 명령에 연관된 페이로드를 관리함에 있어, DMA는 적합한 채널(들) 간에 데이터를 분배한다. 예를 들면, DMA는 기입 명령에 연관된 페이로드를 다수의 채널들에 분배하고, 판독 명령에 연관된 페이로드를 다수의 채널들로부터 어셈블하는 것을 관리한다. 또한, DMA는 호스트과 백 엔드 채널들 간에 복수의 명령들에 연관된 페이로드를 관리함으로써 병렬을 포함한 복수의 명령 실행을 용이하게 한다.
DDB, 예를 들면, 도 3의 340은 명령이 발행되었을 때 N 채널들메 및 이로부터 페이로드의 분배를 조정한다. 예를 들면, 기입 또는 판독 동작 동안, 다수의 N 채널들이 사용될 수 있다. DDB은 먼저, 명령 디스패처, 예를 들면, 도 3의 318, 또는 프론트 엔드 프로세서(FEP), 예를 들면, 도 3의 328에 의해 업데이트, 예를 들면, 로딩될 수 있고, DDB TAG는 각각의 호스트 명령에 대한 어드레스 일 수 있다. DDB는 FEP 또는 명령 디스패처에 의해 설정될 수 있다. "오류없음" 상태들 동안에는 I/O 프로세서의 FEP에 의해 어떠한 더 이상의 관리도 필요하지 않을 수 있다.
도 9의 (a)는 다수의 TAG 어드레스 엔트리(entry)들, 예를 들면, DDB 1,..., DDB 32를 가진 DDB(988)의 내용을 도시한 것이다. 각각의 TAG 어드레스 엔트리는 설정(990)에 연관된 파라미터들, 상태(992), 및 데이터 전송에 연관된 명령 정보(994)를 내포한다. 본 발명의 하나 이상의 실시예들에 따르면, TAG 어드레싱은 SATA(Serial Advanced Technology Attachment) 표준들에 따라 구현될 수 있다. 따라서, DDB 엔트리는 다른 정보 중에서도, 어떤 채널에 액세스할 것인지와, 특정 채널에 대해 얼마나 많은 섹터들을 전송할 것인지와, 연관된 상태를 판정할 수 있다. DDB는 복수의 명령 대기를 지원하지 않는 레거시 명령들에 대해 DDB 1만을 사용함으로써 역호환될 수 있는데, 예를 들면, DDB에서 동시에 관리되는 복수의 명령들 대신에 한번에 DDB를 통해 단지 하나의 레거시 명령만이 처리된다.
DDB(988) 내의 각각의 엔트리는 TAG를 가지며, 이것은 할당 또는 함축될 수 있다. 하나 이상의 실시예들에서, TAG는 엔트리 번호와 동일할 수 있는데, 예를 들면, DDB 내의 엔트리의 물리적 위치, 따라서, DDB 내의 엔트리의 물리적 위치는 실제 TAG 번호 필드가 각각의 엔트리와 함께 저장될 필요가 없게 TAG를 함축한다. 제어기가 호스트 명령을 수신할 때, 제어기는 각각의 엔트리는 TAG에 연관된 것으로 호스트 명령에 대응하는 DDB에 새로운 엔트리를 추가하고, 새로운 엔트리에 연관된 TAG를 출력한다. 제어기는 앞에서 기술된 바와 같이, 명령 큐, 예를 들면, 도 3의 386을 유지하며, 새로운 엔트리에 연관된 TAG를 수신하며, TAG에 대응하는 새로운 명령 큐 엔트리를 추가하며, 범위 동작 요청을 출력한다.
도 9의 (b)는 본 발명의 하나 이상의 실시예들에 따라 구현된 도 9의 (a)에 도시된 DMA 디스크립터 블록(DDB) 내의 엔트리를 도시한 것이다. 도 9의 (b)는 유형별 DDB 엔트리, (예를 들면, 설정, 상태, 정보), 디스크립션, 크기(예를 들면, 다수의 비트들), 및 엔트리 내의 위치(예를 들면, 비트 위치들)의 데이터 필드들을 나타낸다.
각각의 DDB 엔트리의 다음 카운트 데이터 필드(990A), 예를 들면, 비트 위치들(93 ~ 96)에서의 "next_cnt"는 하나의 주어진 채널에 대해 전송할 다수의 섹터들의 데이터를 나타낸다. 다음 카운트는 시작 채널의 제 1 전송 카운트를 명시하기 위해 명령 디스패처 또는 FEP에 의해 초기화될 수 있다. 다음 카운트는 선행 채널의 전송 카운트를 명시하기 위해 하드웨어에 의해 업데이트될 수 있다. 업데이트는 현재 채널이 이의 전송을 완료한 후에, 그러나 전체 전송이 완료되기 전에 행해진다. 전송할 남은 전체 섹터들 수가 채널이 전송할 수 있는 최대 섹터 양보다 크면, 예를 들면, 카운트가 페이지당 섹터 카운트와 플레인들 수를 곱한 것보다 크다면, 다음 카운트에는 이 최대 섹터량이 로딩될 수 있다. 그렇지 않다면, 다음 카운트에는 전송할 남은 전체 섹터 수가 로딩될 수 있다.
비트 위치들(80 ~ 95)에서 카운트 데이터 필드(990B), 예를 들면, "cnt"는 특정 명령에 대한 전체 전송 카운트일 수 있다. 카운트는 총 전송 카운트로 명령 디스패처 또는 FEP에 의해 초기화될 수 있고 전송할 남은 섹터 수를 나타내기 위해 하드웨어에 의해 업데이트될 수 있다. 하나 이상의 실시예들에 따르면, 비트 위치(79)는 사용되지 않는데, 예를 들면, 차후 사용을 위해 유보된다.
전송 완료 데이터 필드(990D), 예를 들면, 위치(78)에서의 "XC" 비트는 DMA 전송이 완료된 것을 나타낸다. 즉, 데이터 국면이 완료될 수 있는데, 그러나 명령 완료 상태의 표시자는 보내지지 않았을 수도 있다. 이 비트는 호스트 명령이 완료된 것을 나타내기 위해서, 일단 채널 상태("ch_status")가 특정 값과 같게 되면 하드웨어에 의해 설정될 수 있다. 이어서 하드웨어는 명령 완료 상태의 표시자의 발송을 스케쥴한다. 표시자가 호스트에 성공적으로 보내졌을 때, 하드웨어는 나중에 기술되는 바와 같이, 또 다른 호스트 명령이 수신될 수 있기 전에, 유효한 데이터 필드, 예를 들면, "V" 플래그를 클리어하게 동작한다.
호스트 오류 데이터 필드(992A), 예를 들면, 위치(77)에서의 "HE" 비트는 오류가 일어났음을 나타내기 위해 사용될 수 있다. 이 비트는 호스트 전송 동안 오류가 발생한다면, I/O 프로세서 또는 호스트 인터페이스, 예를 들면, 도 3의 314에 의해 설정될 수 있다. 플래시 오류 데이터 필드(992B), 예를 들면, 위치(76)에서의 "FE" 비트는 메모리 장치, 예를 들면, NAND 플래시 오류가 발생하였음을 나타내기 위해 사용될 수 있다.
유효 데이터 필드(992C), 예를 들면, 위치(75)에서의 "V" 비트는 유효 엔트리를 나타내기 위해 사용될 수 있다. 이 비트는 하드웨어가 DDB 엔트리에 액세스할 수 있음을 나타내기 위해, 명령 디스패처 또는 FEP에 의해 예를 들면, V = 1로 설정될 수 있고, 명령 디스패처 또는 FEP는 엔트리를 덮어쓰지 않을 수 있다. 이 비트는 호스트 명령이 완료되고 표시자가 성공적으로 호스트에 보내진 후에 하드웨어에 의해 클리어될 수 있거나, 호스트로부터 새로운 명령을 수신하기 위해 DDB 내의 엔트리가 사용될 수 있음을 나타내기 위해, 명령을 처리하는 중에 오류가 있을 때 FEP에 의해 클리어, 예를 들면, V = 0으로 될 수 있다.
다음 채널 데이터 필드(992D), 예를 들면, 비트 위치들(72 ~ 74)에서의 "nxt_ch"는 전송이 행해질 채널을 지칭한다. 이 필드는 전송을 위해 시작 채널을 명시하기 위해 명령 디스패처 또는 FEP에 의해 초기화될 수 있고 전송을 위해 다음 채널을 명시하기 위해 하드웨어에 의해 업데이트될 수 있다. 업데이트들은 채널이 처리할 수 있는 모든 연속된 LBA들의 전송을 이전 채널이 종료하였을 때 행해진다. 특정 명령에 대한 섹터 카운트는 위에 기술된 바와 같이, 라운드-로빈 분배의 부분으로서 채널에 추가의 라운드들을 포함하여, 특정 명령에 대한 전송할 섹터들이 남아 있을 수가 있기 때문에, 제로에 도달하지 않을 수도 있다. 하나의 채널에 있어서, 특정 명령, 예를 들면, 페이로드가 분배되는 라운드 로빈 시퀀스에서 마지막 채널에 대해 전송할 섹터들이 남아있지 않을 때 특정 명령에 대한 섹터 카운트는 제로로 도달할 것이다.
활성 채널 데이터 필드(992E), 예를 들면, 비트 위치들(64 ~ 71)에서의 "active_ch"는 N-비트 신호, 예를 들면, 8 개의 채널들에 대응하는 8-비트일 수 있고, 각각의 비트는 이의 각각의 채널의 완료 상태를 나타낸다. 전송이 일어나기 전에, 각각의 연루된 채널에 대응하는 비트들이 설정될 수 있다. 이어서, 각각의 비트는 일단 명령이 이 채널에 대해 완료되면 재설정될 수 있다.
명령 정보 데이터 필드(994), 예를 들면, 비트 위치들(0 ~ 63)에서의 "CMD_info"는 명령, 우선도 비트, FUA 비트, LBA, 및 섹터 카운트를 포함하는, 프레임 정보 구조(FIS) 레지스터로부터 4개의 워드들을 포함할 수 있다.
특정 데이터 필드 크기들, 예를 들면, 하나의 비트, 및 데이터 필드 위치들이 위에 예에서 기술되었을지라도, 본 발명의 실시예들은 모든 이러한 기술된 필드를 포함한 것으로, 혹은 특정 데이터 필드 크기들 또는 위치들로 제한되지 않으며, 추가의 혹은 대안적 필드들을 포함할 수 있다. 명령 디스패처가 DDB를 업데이트하고 있을 때, 입력 신호, 예를 들면, "xfer_TAG"는 DDB의 어드레스 포인터(address pointer)가 되고, 업데이트 신호, 예를 들면, "update_ddb_en"는 기입 인에이블 된다.
중재자, 예를 들면, 도 3의 342는 어느 채널이 특정 시간에 액세스될 수 있는지 판정하는 라운드 로빈 중재자일 수 있다. 중재자는 다음 가용한 채널을 탐색한다. 중재자는 채널들을 거쳐가며, 선택된 가용한 채널 번호를 특정 DDB 엔트리 내의 다음 채널과 대조를 시도한다. 가용 채널이 DDB 엔트리와 맞는 것이 없다면, 중재자는 계속하여, 선택된 가용한 채널 번호와 특정 DDB 엔트리 내의 다음 채널 간에 일치가 발견될 수 있을 때까지, 필요하다면 라운드 로빈 방식으로 반복한다. 일단 일치되는 것이 발견되면, 중재자는 전송을 시작하기 위해 통신 프로토콜을 개시한다. 전송 완료에서, 완료 프로토콜이 시그널링될 수 있고, DDB 엔트리들 내의 채널 정보가 업데이트되고, 중재자는 다음 가용한 채널을 탐색한다.
활성 채널 필드(992E), 예를 들면, 특정 TAG 엔트리의 레지스터의 N 비트들 각각은 N 채널들 각각에 대응한다. 일단 채널이 특정 호스트 명령에 대해 가용한 것으로 여겨질 수 있으면, 이 채널에 연관된 비트는 설정될 수 있다. 채널이 하나의 주어진 호스트 명령에 대해서 특정 채널에 전송들을 완료하였을 때, 채널의 명령 완료 상태가 설정될 수 있고, 그러면 이것은 DDB 엔트리의 활성 채널 필드 내의 각각의 비트를 재설정할 수 있다. 일단 활성 채널의 모든 비트들이 리셋되면, 호스트 명령의 "완료" 상태의 표시자가 애플리케이션층에 발행될 수 있다. 이어서, 애플리케이션층은 호스트 명령의 "완료" 상태의 표시자를 호스트에 보낼 수 있다. 엔트리의 유효 비트는 호스트 명령이 완료되고 "완료" 상태의 표시자가 호스트에 성공적으로 보내진 후에, 하드웨어에 의해 클리어될 수 있거나(예를 들면, V = 0), 예를 들면, 명령을 처리하는 중에 오류가 있을 때 호스트로부터 새로운 명령을 수신하기 위해 DDB 내의 엔트리가 가용함을 나타내기 위해 FEP에 의해 클리어될 수 있다.
명령 완료는 요청된 전송이 완료되었음을 나타내는 백 엔드 채널에 기초한다. 본 발명의 하나 이상의 실시예들에 따라, 복수의 채널들에 걸쳐 동시에 실행되는 복수의 명령들에 연관된 판독 동작들 동안에, DMA는 명령들이 호스트로부터 수신된 순서에 관계없이 데이터가 준비되는 즉시 채널들 중 하나의 채널로부터 데이터를 호스트에 송신한다. 메모리 시스템 데이터 스루풋은 명령들을 실행함으로써, 예를 들면, 명령들이 수신되었던 혹은 개시되었던 순서가 아니라, 명령들이 각각의 백 엔드 채널에 의해 적어도 부분적으로 완료된 순서로, 메모리 장치들로부터 판독된 데이터를 호스트에 다시 전송함으로써 실질적으로 증가될 수 있다.
예를 들면, 제 1 판독 명령은 호스트로부터 메모리 시스템에 의해 수신될 수 있고, 메모리 시스템에 의한 실행이 개시될 수 있고, 이어서 제 2 판독 명령이 호스트로부터 메모리 시스템에 의해 수신되고 메모리 시스템에 의한 이의 실행이 개시된다. 그러나, 제 2 판독 명령이 먼저 완료될 수 있다. 하나 이상의 실시예들에 따라, 제 1 판독 명령의 데이터가 먼저 호스트에 돌려보내질 수 있게 이 명령의 완료를 기다리기보다는, 제 2 판독 명령으로부터 기인된 데이터는 제 1 판독 명령으로부터 기인된 데이터가 호스트에 돌려보내질 수 있기 전에 호스트에 돌려보내질 수 있다.
또 다른 예를 들면, 제 1 판독 명령은 호스트로부터 메모리 시스템에 의해 수신될 수 있고, 이어서, 제 2 판독 명령이 호스트로부터 메모리 시스템에 의해 수신된다. 그러나, 효율성을 위해서, 예를 들면, 메모리 시스템은 앞에서 기술된 방식으로 명령들의 순서를 재정렬할 수 있고, 제 1 판독 명령을 실행하기 전에 제 2 판독 명령을 실행할 수 있으며, 이에 따라 제 2 판독 명령이 제 1 판독 명령 전에 완료된다. 하나 이상의 실시예들에 따라, 제 1 판독 명령의 완료를 기다리기보다는 제 2 판독 명령에 기인한 데이터는 이것이 완료되었을 때 호스트에 되돌려 보내질 수 있는데, 이것은 제 1 판독 명령에 기인한 데이터가 호스트에 되돌려 보내질 수 있기 전에 행해질 수 있다.
복수의 메모리 장치들을 동작시키는데 있어, 단일 명령에 연관된 페이로드 -이의 부분들은 이들을 서로 간에 관계된 어떤 순차적 순서를 갖는다- 는 서로 다른 채널들에 걸쳐 분배될 수 있는데, 예를 들면, 페이로드의 제 1 부분은 제 1 메모리 장치에 저장될 수 있고, 페이로드의 제 2 부분은 제 2 메모리 장치에 저장될 수 있다, 등등. 그러므로, 예를 들면, 판독 명령으로부터 기인된 데이터의 부분들은 순차적 순서없이 서로 다른 메모리 장치들(및 연관된 채널들)로부터 제어기의 프론트 엔드에 되돌려 보내질 수 있는데, 예를 들면, 제 2 부분은 제 1 부분이 제 1 메모리 장치로부터 인출될 수 있기 전에 제 2 메모리 장치로부터 인출될 수 있다. 하나 이상의 실시예들에 따라, DMA 버퍼 오프셋이 지원될 수 있을 때, 부분들은 부분들이 관계된 순차적 순서가 아니라, 각각의 백 엔드 채널들에 의해 명령들이 완료되는 순서로, 순차적 순서없이 호스트에 다시 전송될 수 있다.
즉, 단일 명령에 연관된 페이로드의 다수의 부분들은 고체상태 드라이브의 몇몇 메모리 장치들 중에 저장, 예를 들면, 상주된다. 페이로드의 부분들은 페이로드를 형성할 때 특정 순서로 서로에 관계된다. 몇몇 메모리 장치들 간에 이들로부터 페이로드를 어셈블하기 위해 단일 판독 명령이 사용될 수 있고, 판독 명령은 특정 메모리 위치에 관하여 적합한하게 커스터마이즈되며, 몇몇 메모리 장치들 각각으로부터 페이로드의 각각의 부분을 수신하기 위해 몇몇 메모리 장치들에 대응하는 몇몇 채널들 각각에 분배된다. 하나 이상의 실시예들에 따라, 부분들은 메모리 시스템 제어기에 의해 수신되고, 페이로드의 부분들이 페이로드를 형성시 서로 간에 관계된 특정 순서와는 다를 수 있는 순서로, 이들이 수신된 대로 호스트에 보내진다. 즉, 페이로드의 부분들은 호스트에 보내지지 전에 페이로드에 다시 어셈블되지 않고, 대신에 페이로드의 부분들은 이들이 몇몇 메모리 장치들로부터 제어기에 수신된 대로 보내진다.
본 발명의 하나 이상의 실시예들에 따라, 복수의 명령들, 예를 들면, 기입 명령들의 동작들이 예를 들면, 대응하는 복수의 메모리 장치들에 복수의 채널들에 걸쳐 동시에 실행되는 동안, DMA는 명령의 완료시 특정 명령에 대한 명령 완료 상태의 표시자를 호스트에 보낼 수 있고, 이는 호스트가 다음 계류중의 명령을 보낼 수 있게 한다. 하나 이상의 실시예들에서, 복수의 채널들은 비동기 채널들이며, 명령, 예를 들면, 호스트 명령, 실행은 명령이 호스트로부터 수신되었던 것과 동일한 순서로(호스트로부터 수신된 다른 명령들에 관하여) 행해지지 않을 수 있다.
예를 들면, 제 1 명령은 호스트로부터 메모리 시스템에 의해 수신될 수 있고 이의 실행은 메모리 시스템에 의해 개시되고, 이에 이어 제 2 명령이 호스트로부터 메모리 시스템에 의해 수신되고 이의 실행이 메모리 시스템에 의해 개시된다. 그러나, 제 2 판독 명령은 다수의 복수의 백 엔드 채널들에 의해 먼저 완료될 수 있다. 하나 이상의 실시예들에 따라, 제 2 명령의 완료 상태의 표시자가 호스트에 보내질 수 있기 전에 제 1 명령의 완료 상태의 표시자가 호스트에 보내질 수 있게 제 1 명령의 완료를 기다리기보다는, 제 1 명령의 완료 상태의 표시자가 호스트에 보내기지 전에 제 2 명령의 완료 상태의 표시자가 호스트에 보내질 수 있다.
또 다른 예를 들면, 가령, 메모리 시스템의 메모리 제어기는 호스트로부터 제 1 명령을 수신하고 이어서 호스트로부터 메모리 제어기에 의해 제 2 명령을 수신한다. 그러나, 메모리 시스템은 예를 들면, 앞에서 기술된 방식으로, 명령들의 순서를 재정렬하고, 제 1 명령을 실행하기 전에 제 2 명령을 실행하며, 이에 따라 제 1 명령 전에 제 2 명령이 완료된다. 하나 이상의 실시예들에 따라, 제 2 명령의 완료 상태의 표시자가 호스트에 보내질 수 있기 전에 제 1 명령의 완료 상태의 표시자가 호스트에 보내질 수 있게 제 1 명령의 완료를 기다리기보다는, 제 1 명령의 완료 상태의 표시자가 호스트에 보내기지 전에 제 2 명령의 완료 상태의 표시자가 호스트에 보내질 수 있다.
결론
본 발명은 다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이브들 및 방법들을 포함한다. 하나 이상의 실시예들에서, 메모리 제어기는 복수의 백 엔드 채널들, 및 복수의 백 엔드 채널들에 통신 가능하게 결합된 명령 큐, 예를 들면, 도 3에 386을 포함한다. 명령 큐는 호스트로부터 수신된 호스트 명령들을 보유하게 구성된다. 회로는 명령 큐(386) 내의 적어도 다수의 호스트 명령들에 응하여 다수의 백 엔드 명령들을 발생하고 다수의 백 엔드 명령들을 다수의 복수의 백 엔드 채널들에 분배하게 구성된다.
또한, 본 발명은 메모리 제어기를 위한 방법들 및 장치들을 포함한다. 하나 이상의 실시예들에서, 메모리 제어기는 복수의 백 엔드 채널들, 및 복수의 백 엔드 채널들에 통신 가능하게 결합된 프론트 엔드 명령 디스패처를 포함한다. 명령 디스패처는 다수의 명령들을 버퍼하게 구성된 명령 큐, 예를 들면, 도 3에 386에 통신 가능하게 결합된다. 명령 디스패처는 다수의 명령들에 의해 달성될 메모리에 대한 순수 변화를 판정하고, 복수의 백 엔드 채널들 간에 다수의 명령들의 분배를 최적화하기 위해 다수의 명령들 중 하나 이상을 수정하게 구성될 수 있다.
본 발명의 상세한 설명에서, 이의 일부를 이루며 본 발명의 하나 이상의 실시예들이 어떻게 실시될 수 있는가를 예시로서 도시한 동반된 도면들이 참조되었다. 이들 실시예들은 당업자들이 본 발명의 실시예를 실시할 수 있게 충분히 상세히 기술되었으며, 다른 실시예들이 이용될 수도 있다는 것과 본 발명의 범위 내에서 프로세스, 전기적, 또는 구조적 변경들이 행해질 수 있음이 이해될 것이다.
여기에서 사용되는 바와 같이, 도면들에서 특히 참조부호에 관련하여, "N", "M", 및 "C"로 나타낸 것은 이와 같이 표시된 다수의 특정한 특징이 본 발명의 하나 이상의 실시예들에 포함될 수 있음을 나타낸다. 알게 되는 바와 같이, 여기에 여러 실시예들에 보인 소자들은 본 발명의 추가의 다수의 실시예들을 제공하기 위해서 추가되고, 교환되고, 또는 제거될 수 있다. 또한, 알게 되는 바와 같이, 도면들에서 제공된 소자들의 부분 및 상대적 스케일은 본 발명의 실시예들을 예시하기 위한 것이며 제한하려고 취해진 것이 아니다.
제 1 소자가 다른 소자 "에 연결된" 혹은 "에 결합된"이라 언급될 때, 소자는 2개의 소자들 중 다른 소자에 물리적으로 부착될 수 있음이 이해될 것이다. 반대로, 소자들이 "에 통신 가능하게 결합된"이라고 언급될 때, 소자들은 유선 또는 무선 신호 경로들에 의해 -이것으로 한정되는 것은 아님- 서로 통신됨을 알 것이다.
요소가 다른 소자 "상에", "에 연결된" 혹은 "에 결합된"이라 언급될 때, 이것은 직접 다른 소자 또는 층 상에, 혹은 이에 연결되거나, 이에 결합될 수 있고 혹은 개재된 소자들 또는 층들이 있을 수 있음이 이해될 것이다. 반대로, 소자가 다른 소자 또는 층 "상에 직접", "에 직접 연결" 혹은 "에 직접 결합"되는 것으로 언급될 때, 개재되는 소자들 또는 층들은 없다. 여기에서 사용되는 바와 같이, "및/또는"이라는 용어는 연관된 나열된 항목들 중 다수의 어느 하나 및 모든 조합들을 포함한다.
제 1, 제 2, 등의 용어들이 여기에서 다양한 소자들, 구성요소들, 영역들, 층들, 및 섹션들을 기술하기 위해 사용될 수 있을지라도, 이들 소자들, 구성요소들, 영역들, 배선라인들, 층들, 및 섹션들은 이들 용어들에 의해 제한되는 것은 아님을 알 것이다. 이들 용어들은 단지 하나의 소자, 구성요소, 영역, 배선라인, 층, 또는 섹션을 다른 영역, 층, 또는 섹션과 구별하기 위해 사용될 뿐이다. 따라서, 이하 논의되는 제 1 소자, 구성요소, 영역, 배선라인, 층, 또는 섹션은 본 발명의 교시되는 범위 내에서 제 2 소자, 구성요소, 영역, 배선라인, 층, 또는 섹션이라는 용어가 사용될 수도 있을 것이다.
이를테면 "밑", "아래", "하부", "위", "상측" 등과 같은 공간적 상대적 용어들은 여기에서는 공간 내에 놓이는 절대적 방위보다는 도면들에서 도시된 바와 같은 다른 소자(들) 혹은 특징(들)에 대한 하나의 소자 혹은 특징의 관계를 기술하기 위해 설명을 용이하게 위해 사용된다. 공간적인 상대적 용어들은 도면들에 도시된 방위 외에도 사용 혹은 동작시 장치의 서로 다른 방위들을 포괄하기 위한 것임을 알 것이다. 예를 들어, 도면들에서 장치가 뒤집어 진다면, 다른 소자들 혹은 특징들 "아래" 혹은 "밑에"로서 기술된 소자들은 다른 소자들 혹은 특징들 "위"에 놓이는 방위가 될 것이다. 따라서, "아래"라는 용어의 예는 위 및 아래라는 방위 둘 다를 포괄할 수 있다. 장치는 다른 방위에 놓여질 수도 있는데(90도 회전되거나 다른 방위들에) 여기에서 사용되는 공간적 상대적 설명은 그에 따라 해석될 수 있다.
여기에서 사용되는 용어는 특정 실시예들을 설명할 목적을 위한 것일 뿐이며 개시된 바를 제한하려는 것이 아니다. 여기에서 사용되는 바와 같이, 문맥이 다른 것을 명학히 나타내지 않는 한 단수 형태들은 복수 형태도 포함하게 한 것이다. "포함하다"라는 용어가 이 명세서에서 사용될 때 이 용어는 언급된 특징들, 정수들, 단계들, 동작들, 소자들, 및/또는 구성요소들의 존재를 명시하는 것이며 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 소자들, 및/또는 구성요소들 및/또는 이들의 그룹들의 존재 혹은 이들의 추가를 배제하는 것은 아님을 알 것이다.
달리 정의되지 않는 한 여기에서 사용되는 모든 용어들(기술적 및 과학용어들 포함하여)은 본 발명이 관련된 당업자가 일반적으로 이해하는 바와 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전들에 정의된 것들과 같은 용어들은 관련 기술 및 본 발명의 맥락에서 이들의 의미와 일관된 의미를 갖는 것으로서 해석되어야 하며, 이상적인 혹은 지나치게 형식적 의미로 여기에 분명하게 정의되지 않는 한 이러한 의미로 해석되지 않아야 함을 알 것이다.
본 발명의 실시예들은 본 발명의 이상적인 실시예들을 개략적으로 도시한 기능 블록도를 참조로 여기에 기술된다. 따라서 예를 들어 제조 기술들 및 공차들의 결과로서 여기 도시된 바들의 형상들로부터 변동들이 예상될 것이다. 따라서, 본 발명의 실시예들은 여기에 도시된 영역들의 특정 형상들로 제한되는 것으로 해석되는 것이 아니라 예를 들어 제조에 기인하여 나타나는 형상들의 변화들도 포함하는 것으로 해석되어야 한다. 예를 들어, 평탄한 것으로서 예시 또는 기술된 영역은 전형적으로 기복이 있거나 비선형 특징들을 가질 수도 있다. 또한, 도시된 예리한 각들은 둥글 수도 있다. 따라서, 도면들에 도시된 영역들은 본질적으로 개략적인 것이고 이들의 형상들 및 상대적 크기들, 두께들 등은 영역의 정밀한 형상/크기/두께를 예시하려는 것이 아니며 본 발명의 범위를 제한하려는 것이 아니다.
특정한 실시예들이 여기에 도시되고 기술되었을지라도, 당업자들은 동일 결과들을 달성하기 위해 계획된 구성이 여기 도시된 구체적 실시예들을 대체할 수 있음을 알 것이다. 본 개시된 바는 본 발명의 하나 이상의 실시예들의 개조 혹은 변형들도 포함한다. 위에 기술된 바는 제약적 형태가 아니라 예시적 형태로 행해졌음을 알아야 한다. 위에 실시예들의 조합, 및 특정하게 여기 기술되지 않은 다른 실시예들의 조합은 위에 기술된 바를 검토하였을 때 당업자들에게 명백할 것이다. 본 발명의 하나 이상의 실시예들의 범위는 위에 구조들 및 방법들이 사용되는 다른 적용들을 포함한다. 그러므로, 본 발명의 하나 이상의 실시예들의 범위는 이러한 청구항들이 부여하는 일범위의 전체 등가물들과 더불어 첨부된 청구항들에 관련하여 판정되어야 한다.
전술한 상세한 설명에서, 일부 특징들은 효율적 설명을 위해 단일 실시예에 그룹화하였다. 개시된 이 방법은 본 발명의 개시된 실시예들이 각 청구항에 분명하게 인용된 것보다 더 많은 특징들을 사용해야 하는 의도를 반영하는 것으로 해석되지 않아야 한다. 그보다는, 다음 청구항들이 반영하는 바와 같이, 발명의 요체는 개시된 단일 실시예의 모든 특징들 미만의 특징들에 놓여 있다. 따라서, 다음 청구항들은 상세한 설명에 포함되고 각 청구항은 자체가 별도의 실시예를 구성한다.

Claims (68)

  1. 각각의 백 엔드 채널이 서로 다른 메모리 장치에 대응하는 복수의 백 엔드 채널들; 및
    상기 복수의 백 엔드 채널들 및 다수의 판독 명령들을 보유하게 구성된 명령 큐에 통신 가능하게 결합된 프론트 엔드 명령 디스패처를 포함하고,
    상기 프론트 엔드 명령 디스패처는 상기 다수의 판독 명령들에 의해 달성될 메모리로부터 순수 판독(net read)을 판정하고, 상기 다수의 판독 명령들을 상기 복수의 백 엔드 채널들 간에 분배를 최적화하기 위해 메모리로부터 동일한 순수 판독을 달성하는 데에 더 적은 명령들이 보내지도록 상기 다수의 판독 명령들 중 하나 이상을 수정하게 구성된, 메모리 제어기.
  2. 청구항 1에 있어서,
    상기 프론트 엔드 명령 디스패처는 상기 복수의 백 엔드 채널들 간에 상기 명령들의 분배를 최적화하기 위해 하나 이상의 명령들을 수정하게 구성된 명령 프로세서부, 및 상기 복수의 백 엔드 채널들 간에 명령들을 분배하게 구성된 디스패처부를 포함하는, 메모리 제어기.
  3. 청구항 2에 있어서,
    상기 프론트 엔드 명령 디스패처는 하드웨어에 있어서의 호스트 명령 무결성 체크를 수행하게 구성된, 메모리 제어기.
  4. 청구항 3에 있어서,
    상기 복수의 백 엔드 채널들에 통신 가능하게 결합된 프론트 엔드 프로세서(FEP)를 포함하고,
    상기 FEP는 상기 다수의 판독 명령들에 의해 달성될 메모리로부터 순수 판독을 판정하고, 상기 복수의 백 엔드 채널들 간에 상기 다수의 판독 명령들의 분배를 최적화하기 위해 상기 다수의 판독 명령들 중 하나 이상을 수정하게 구성된, 메모리 제어기.
  5. 각각의 백 엔드 채널이 서로 다른 메모리 장치에 대응하는 복수의 백 엔드 채널들; 및
    상기 복수의 백 엔드 채널들 및 다수의 판독 명령들을 보유하게 구성된 명령 큐에 통신 가능하게 결합된 프론트 엔드 명령 디스패처를 포함하고,
    상기 프론트 엔드 명령 디스패처는 상기 다수의 판독 명령들에 의해 달성될 메모리로부터 순수 판독(net read)을 판정하고, 상기 다수의 판독 명령들을 상기 복수의 백 엔드 채널들 간에 분배를 최적화하기 위해 메모리로부터 동일한 순수 판독을 달성하는 데에 더 적은 명령들이 보내지도록 상기 다수의 판독 명령들 중 하나 이상을 수정하게 구성된, 메모리 제어기.
  6. 청구항 5에 있어서,
    상기 메모리 제어기는 상기 프론트 엔드 명령 디스패처 및 상기 복수의 백 엔드 채널들에 통신 가능하게 결합된 프론트 엔드 다이렉트 메모리 액세스(DMA)를 더 포함하는, 메모리 제어기.
  7. 청구항 6에 있어서,
    상기 메모리 제어기는 SATA(Serial Advanced Technology Attachment) 인터페이스에 통신 가능하게 결합되는, 메모리 제어기.
  8. 각각의 백 엔드 채널이 서로 다른 메모리 장치에 대응하는 복수의 백 엔드 채널들; 및
    상기 복수의 백 엔드 채널들 및 다수의 기입 명령들을 보유하게 구성된 명령 큐에 통신 가능하게 결합된 프론트 엔드 명령 디스패처를 포함하고,
    상기 프론트 엔드 명령 디스패처는 상기 다수의 기입 명령들에 의해 달성될 메모리에 대한 순수 변화를 판정하고, 상기 복수의 백 엔드 채널들 간에 상기 다수의 기입 명령들의 분배를 최적화하기 위해 상기 메모리에 대한 동일한 순수 변화를 달성하는 데에 더 적은 명령들이 보내지도록 상기 다수의 기입 명령들 중 하나 이상을 수정하게 구성된, 메모리 제어기.
  9. 청구항 8에 있어서,
    상기 명령 디스패처는 상기 복수의 백 엔드 채널들이 비지(busy) 상태일 때만 분배를 최적화하기 위해 상기 다수의 기입 명령들 중 하나 이상을 수정하게 구성된, 메모리 제어기.
  10. 청구항 8에 있어서,
    상기 명령 디스패처는 상기 다수의 기입 명령들에 의한 메모리에 대한 상기 판정된 순수 변화를 변경함이 없이 상기 명령 큐로부터 상기 다수의 기입 명령들 중 하나를 분배하지 않게 구성된, 메모리 제어기.
  11. 청구항 10에 있어서,
    상기 명령 디스패처는 상기 명령 큐 내의 제 2 기입 명령의 상기 메모리 범위의 하나의 부분을 포함하고, 이후 상기 다수의 기입 명령들에 의한 메모리에 대한 상기 판정된 순수 변화를 변경함이 없이 상기 명령 큐로부터 상기 제 2 기입 명령을 분배하지 않기 위해서 상기 명령 큐 내의 제 1 기입 명령에 연관된 메모리 범위를 수정하게 구성된, 메모리 제어기.
  12. 청구항 8에 있어서,
    상기 다수의 기입 명령들은 초기 순서로 상기 명령 큐 내에 수신되며, 상기 명령 디스패처는 상기 명령 큐 내의 상기 다수의 기입 명령들의 순서를 상기 초기 순서로부터 변경된 순서로 변경하게 구성된, 메모리 제어기.
  13. 청구항 12에 있어서,
    상기 명령 디스패처는 상기 초기 순서에 따라서가 아니라 상기 명령 큐 내의 상기 다수의 기입 명령들의 상기 변경된 순서에 따라 명령들을 분배하게 구성된, 메모리 제어기.
  14. 청구항 8에 있어서,
    상기 명령 디스패처는 명령들을 중첩하는 메모리 위치들에 결합함으로써 상기 명령 큐 내의 상기 다수의 기입 명령들 중 적어도 하나를 수정하게 구성된, 메모리 제어기.
  15. 청구항 14에 있어서,
    상기 명령 디스패처는 상기 다수의 기입 명령 중 적어도 하나가 수정되는 것에 응하여 상기 명령 큐 내의 상기 다수의 기입 명령들의 순서를 변경된 순서로 변경하게 구성된, 메모리 제어기.
  16. 청구항 15에 있어서,
    상기 명령 디스패처는 상기 명령 큐 내의 후속 실행될 기입 명령에 의해 덮어쓰기 될 다수의 메모리 위치들을 포함하게 결정된 기입 명령을 분배하지 않게 구성된, 메모리 제어기.
  17. 청구항 16에 있어서,
    상기 명령 디스패처는 상기 다수의 메모리 위치들을 포함하는 중간에 개재되는 판독 동작없이 후속 실행되는 기입 명령에 의해 덮어쓰기 될 상기 다수의 메모리 위치들을 포함하게 결정된 기입 명령을 실행하지 않게 구성된, 메모리 제어기.
  18. 청구항 14에 있어서,
    상기 명령 디스패처는 복수의 기입 명령들을 단일 기입 명령으로 그룹화하게 구성된, 메모리 제어기.
  19. 청구항 18에 있어서,
    상기 명령 디스패처는 적어도 두 기입 명령들이 논리적으로 인접한 메모리 위치들을 포함하는 동일 동작이며 상기 적어도 두 기입 명령들을 상기 논리적으로 인접한 메모리 위치들을 포함하는 단일 기입 명령으로 결합한 것으로 판정하게 구성된, 메모리 제어기.
  20. 청구항 18에 있어서,
    상기 명령 디스패처는 적어도 두 기입 명령들이 논리적으로 중첩하는 메모리 위치들을 포함하는 동일 동작이며 상기 적어도 두 기입 명령들을 상기 논리적으로 인접한 메모리 위치들을 포함하는 단일 기입 명령으로 결합한 것으로 판정하게 구성된, 메모리 제어기.
  21. 청구항 8에 있어서,
    특정 기입 명령에 연관된 페이로드는 상기 복수의 백 엔드 채널들 중 하나 이상 간에 분배되고, 상기 명령 디스패처는 상기 복수의 백 엔드 채널들 중 하나 이상의 채널들 각각에 상기 특정 기입 명령을 분배하게 구성된, 메모리 제어기.
  22. 청구항 21에 있어서,
    상기 명령 디스패처는 상기 복수의 백 엔드 채널들 중 하나 이상의 채널들 각각에 연관된 상기 페이로드의 부분에 대한 연관된 논리적 블록 어드레스 및 섹터 카운트를 판정하고, 상기 페이로드의 상기 연관된 부분에 대한 상기 논리적 블록 어드레스 및 섹터 카운트로 각각의 백 엔드 채널에 분배된 상기 특정 기입 명령을 수정하게 구성된, 메모리 제어기.
  23. 청구항 8에 있어서,
    상기 명령 디스패처는 상기 명령 디스패처가 명령들을 상기 복수의 백 엔드 채널들에 분배되지 못하게 된 시간동안 상기 명령 큐 내에 기입 명령들을 수정하게 구성된, 메모리 제어기.
  24. 각각의 백 엔드 채널이 서로 다른 메모리 장치에 대응하는 복수의 백 엔드 채널들 간에 다수의 명령들을 분배하기 전에 상기 다수의 명령들을 처리하는 것을 포함하는 메모리 제어기의 동작 방법에 있어서,
    호스트로부터 다수의 명령들을 순서대로 수신하는 단계;
    프론트 엔드 스루풋을 개선하기 위해 상기 다수의 명령들을 처리하는 단계로서, 상기 처리하는 단계는,
    상기 명령들의 순서를 재순서화하는 단계;
    복수의 명령들을 단일 명령으로 결합하는 단계; 및
    후속 실행되는 명령에 의해 덮어쓰기 될 것으로 판정된 메모리 위치를 포함하는 중간에 개재되는 동작없이, 상기 메모리 위치를 포함하는 명령을 삭제하는 단계 중 하나 이상을 포함하고,
    상기 다수의 명령들 중 적어도 하나는 하나 이상의 백 엔드 채널에 분배되는, 메모리 제어기의 동작 방법.
  25. 청구항 24에 있어서,
    상기 처리하는 단계는 상기 백 엔드 채널들이 비지 상태일 때만 행해지는, 메모리 제어기의 동작 방법.
  26. 청구항 24에 있어서,
    상기 재순서화하는 단계는, 적어도 부분적으로 명령들을 결합하거나 명령들을 삭제한 것에 응한 것인, 메모리 제어기의 동작 방법.
  27. 청구항 24에 있어서,
    상기 복수의 명령들을 결합하는 단계는 이웃한 메모리 위치들을 포함하는 명령들을 단일 명령으로 그룹화하는 단계를 포함하는, 메모리 제어기의 동작 방법.
  28. 청구항 24에 있어서,
    상기 복수의 명령들을 결합하는 단계는 상기 다수의 동일 메모리 위치들을 포함하는 명령들을 단일 명령으로 그룹화하는 단계를 포함하는, 메모리 제어기의 동작 방법.
  29. 청구항 24에 있어서,
    상기 명령들을 결합하는 단계는 특정 메모리 장치 상에 순차적 메모리 위치들을 포함하는 명령들을 단일 명령으로 병합하는 단계를 포함하는, 메모리 제어기의 동작 방법.
  30. 청구항 24에 있어서,
    상기 명령들을 결합하는 단계는 특정 메모리 장치 상에 중첩하는 메모리 위치들을 포함하는 명령들을 단일 명령으로 병합하는 단계를 포함하는, 메모리 제어기의 동작 방법.
  31. 청구항 24에 있어서,
    상기 처리하는 단계는, 상기 다수의 명령들 중 적어도 하나의 명령에 대해서, 상기 다수의 명령들 중 적어도 하나의 명령에 연관된 페이로드의 각 부분에 대한 각각의 논리적 블록 어드레스 및 섹터 카운트를 판정하는 단계 및 상기 각각의 논리적 블록 어드레스 및 섹터 카운트로 상기 복수의 백 엔드 채널 중 특정 백 엔드 채널에 분배된 상기 다수의 명령들 중 상기 적어도 하나의 명령을 수정하는 단계를 포함하는, 메모리 제어기의 동작 방법.
  32. 청구항 24에 있어서,
    상기 다수의 명령들 중 하나에 연관된 페이로드를 상기 백 엔드 채널들로부터 수신하는 단계; 및
    상기 다수의 명령들이 상기 호스트에 의해 통신되었던 순서와는 다른 순서에 따라 상기 수신된 페이로드를 상기 호스트에 통신하는 단계를 포함하는, 메모리 제어기의 동작 방법.
  33. 청구항 24에 있어서,
    상기 다수의 명령들 중 특정 명령의 완료 상태의 표시자를, 상기 특정 명령의 완료시에, 상기 명령들이 상기 호스트에 의해 전달되었던 순서와는 무관하게, 상기 호스트에 전달하는 단계를 포함하는, 메모리 제어기의 동작 방법.
  34. 청구항 33에 있어서,
    상기 특정 명령을 수신하기 전에 제 1 명령을 수신하는 단계;
    상기 제 1 명령을 제 1 백 엔드 채널에 분배하는 단계;
    상기 특정 명령을 제 2 백 엔드 채널에 분배하는 단계; 및
    상기 특정 명령의 완료시에, 그리고 상기 제 1 명령의 완료와는 무관하게, 상기 특정 명령의 완료 상태의 표시자를 상기 호스트에 전달하는 단계를 포함하는, 메모리 제어기의 동작 방법.
  35. 청구항 24에 있어서,
    상기 다수의 명령들을 상기 복수의 백 엔드 채널들 간에 분배하기 전에 프론트 엔드 스루풋을 개선하기 위해 상기 다수의 명령들을 처리하는 단계를 포함하고,
    상기 명령을 처리하는 단계는,
    상기 명령들의 순서를 재순서화하는 단계;
    복수의 명령들을 결합하는 단계; 및
    명령들을 삭제하는 단계 중 하나 이상을 포함하는, 메모리 제어기의 동작 방법.
  36. 청구항 35에 있어서,
    적어도 하나의 결합된 명령에 연관된 페이로드를 상기 복수의 백 엔드 채널들 중 하나 이상 간에 분배하는 단계를 포함하고, 결합되는 명령들은 상기 복수의 백 엔드 채널들 중 특정 채널이 포함되는 이들 명령들의 페이로드 중 적어도 하나의 부분을 갖는, 메모리 제어기의 동작 방법.
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
KR1020117026247A 2009-04-09 2010-03-11 다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이버들 및 방법들 KR101371815B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/421,093 US8055816B2 (en) 2009-04-09 2009-04-09 Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US12/421,093 2009-04-09
PCT/US2010/000732 WO2010117404A2 (en) 2009-04-09 2010-03-11 Memory controllers, memory systems, solid state drivers and methods for processing a number of commands

Publications (2)

Publication Number Publication Date
KR20120015313A KR20120015313A (ko) 2012-02-21
KR101371815B1 true KR101371815B1 (ko) 2014-03-07

Family

ID=42935228

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117026247A KR101371815B1 (ko) 2009-04-09 2010-03-11 다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이버들 및 방법들

Country Status (7)

Country Link
US (7) US8055816B2 (ko)
EP (2) EP2958027B1 (ko)
JP (1) JP5729774B2 (ko)
KR (1) KR101371815B1 (ko)
CN (1) CN102439576B (ko)
TW (1) TWI418989B (ko)
WO (1) WO2010117404A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099776B2 (en) 2017-09-20 2021-08-24 SK Hynix Inc. Memory system having memory device queuing a plurality of commands and operating method thereof
US11321011B2 (en) 2018-03-20 2022-05-03 SK Hynix Inc. Controller for controlling command queue, system having the same, and method of operating the same

Families Citing this family (173)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8402201B2 (en) 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
KR101006748B1 (ko) * 2009-01-29 2011-01-10 (주)인디링스 패드들의 동시 스위칭을 제어하는 고체 상태 디스크를 위한컨트롤러
US8271720B1 (en) * 2009-03-02 2012-09-18 Marvell International Ltd. Adaptive physical allocation in solid-state drives
KR101662729B1 (ko) * 2009-05-08 2016-10-06 삼성전자주식회사 시리얼 인터페이스 프로토콜을 사용하여 호스트와 인터페이스하는 비휘발성 메모리 기반 저장 장치의 커맨드 처리 방법 및 상기 방법을 수행하기 위한 메모리 컨트롤러
US20110004742A1 (en) * 2009-07-06 2011-01-06 Eonsil, Inc. Variable-Cycle, Event-Driven Multi-Execution Flash Processor
WO2011019494A1 (en) * 2009-08-11 2011-02-17 Marvell World Trade Ltd. Controller for reading data from non-volatile memory
TW201111986A (en) * 2009-09-29 2011-04-01 Silicon Motion Inc Memory apparatus and data access method for memories
US9213628B2 (en) 2010-07-14 2015-12-15 Nimble Storage, Inc. Methods and systems for reducing churn in flash-based cache
JP4966404B2 (ja) * 2010-10-21 2012-07-04 株式会社東芝 メモリ制御装置、記憶装置、及びメモリ制御方法
JP2012128644A (ja) * 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
US20120233401A1 (en) * 2011-03-08 2012-09-13 Skymedi Corporation Embedded memory system
US8856482B2 (en) * 2011-03-11 2014-10-07 Micron Technology, Inc. Systems, devices, memory controllers, and methods for memory initialization
US9021215B2 (en) * 2011-03-21 2015-04-28 Apple Inc. Storage system exporting internal storage rules
US8924627B2 (en) 2011-03-28 2014-12-30 Western Digital Technologies, Inc. Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency
WO2012143944A2 (en) * 2011-04-18 2012-10-26 Ineda Systems Pvt. Ltd Multi-host nand flash controller
US9436594B2 (en) * 2011-05-27 2016-09-06 Seagate Technology Llc Write operation with immediate local destruction of old content in non-volatile memory
US8543758B2 (en) 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
KR101835604B1 (ko) * 2011-06-03 2018-03-07 삼성전자 주식회사 메모리를 위한 스케줄러
GB2494625A (en) * 2011-09-06 2013-03-20 St Microelectronics Grenoble 2 Minimizing the latency of a scrambled memory access by sending a memory access operation to the encryption engine and the memory controller in parallel
US8886872B1 (en) 2011-10-06 2014-11-11 Google Inc. Memory command dispatch in a data storage device
US8255618B1 (en) * 2011-10-06 2012-08-28 Google Inc. Performance isolation in a shared memory device
WO2013068862A1 (en) * 2011-11-11 2013-05-16 International Business Machines Corporation Memory module and memory controller for controlling a memory module
US9274937B2 (en) * 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US8904091B1 (en) * 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US8811913B2 (en) * 2012-02-21 2014-08-19 Htc Corporation RF calibration data management in portable device
US9146856B2 (en) * 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
US9141296B2 (en) 2012-05-31 2015-09-22 Sandisk Technologies Inc. Method and host device for packing and dispatching read and write commands
CN102789439B (zh) * 2012-06-16 2016-02-10 北京忆恒创源科技有限公司 控制数据传输过程中的中断的方法与存储设备
US9557800B2 (en) * 2012-08-31 2017-01-31 Micron Technology, Inc. Sequence power control
US10095433B1 (en) * 2012-10-24 2018-10-09 Western Digital Technologies, Inc. Out-of-order data transfer mechanisms for data storage systems
KR101988287B1 (ko) 2012-11-26 2019-06-12 삼성전자주식회사 저장 장치 및 그것을 포함하는 컴퓨팅 시스템, 및 그것의 데이터 전송 방법
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
US9244877B2 (en) 2013-03-14 2016-01-26 Intel Corporation Link layer virtualization in SATA controller
US9170755B2 (en) 2013-05-21 2015-10-27 Sandisk Technologies Inc. Command and data selection in storage controller systems
JP6160294B2 (ja) * 2013-06-24 2017-07-12 富士通株式会社 ストレージシステム、ストレージ装置及びストレージシステムの制御方法
TWI493455B (zh) * 2013-07-02 2015-07-21 Phison Electronics Corp 命令佇列管理方法、記憶體控制器及記憶體儲存裝置
WO2015025357A1 (ja) 2013-08-19 2015-02-26 株式会社 東芝 メモリシステム
US9304709B2 (en) 2013-09-06 2016-04-05 Western Digital Technologies, Inc. High performance system providing selective merging of dataframe segments in hardware
US10331583B2 (en) * 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9292903B2 (en) 2013-10-03 2016-03-22 Google Inc. Overlap aware reordering of rendering operations for efficiency
US8854385B1 (en) * 2013-10-03 2014-10-07 Google Inc. Merging rendering operations for graphics processing unit (GPU) performance
US9824004B2 (en) 2013-10-04 2017-11-21 Micron Technology, Inc. Methods and apparatuses for requesting ready status information from a memory
US9880777B1 (en) * 2013-12-23 2018-01-30 EMC IP Holding Company LLC Embedded synchronous replication for block and file objects
US10108372B2 (en) 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
TW201533657A (zh) * 2014-02-18 2015-09-01 Toshiba Kk 資訊處理系統及記憶體系統
US20150261473A1 (en) * 2014-03-11 2015-09-17 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
JP2015215774A (ja) * 2014-05-12 2015-12-03 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
US9563382B2 (en) 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US9507722B2 (en) 2014-06-05 2016-11-29 Sandisk Technologies Llc Methods, systems, and computer readable media for solid state drive caching across a host bus
US9652415B2 (en) 2014-07-09 2017-05-16 Sandisk Technologies Llc Atomic non-volatile memory data transfer
US9904621B2 (en) 2014-07-15 2018-02-27 Sandisk Technologies Llc Methods and systems for flash buffer sizing
US9645744B2 (en) 2014-07-22 2017-05-09 Sandisk Technologies Llc Suspending and resuming non-volatile memory operations
US10007442B2 (en) * 2014-08-20 2018-06-26 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically deriving hints from accesses to a storage device and from file system metadata and for optimizing utilization of the storage device based on the hints
US10268584B2 (en) 2014-08-20 2019-04-23 Sandisk Technologies Llc Adaptive host memory buffer (HMB) caching using unassisted hinting
US10228854B2 (en) 2014-08-20 2019-03-12 Sandisk Technologies Llc Storage devices and methods for optimizing use of storage devices based on storage device parsing of file system metadata in host write operations
US20160062729A1 (en) * 2014-09-03 2016-03-03 Qualcomm Incorporated Multi-channel audio communication in a serial low-power inter-chip media bus (slimbus) system
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置
US9760295B2 (en) 2014-09-05 2017-09-12 Toshiba Memory Corporation Atomic rights in a distributed memory system
US10101943B1 (en) * 2014-09-25 2018-10-16 EMC IP Holding Company LLC Realigning data in replication system
US20160094619A1 (en) * 2014-09-26 2016-03-31 Jawad B. Khan Technologies for accelerating compute intensive operations using solid state drives
US9910621B1 (en) 2014-09-29 2018-03-06 EMC IP Holding Company LLC Backlogging I/O metadata utilizing counters to monitor write acknowledgements and no acknowledgements
US9753649B2 (en) 2014-10-27 2017-09-05 Sandisk Technologies Llc Tracking intermix of writes and un-map commands across power cycles
US9952978B2 (en) 2014-10-27 2018-04-24 Sandisk Technologies, Llc Method for improving mixed random performance in low queue depth workloads
US9817752B2 (en) 2014-11-21 2017-11-14 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9824007B2 (en) 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
US9575669B2 (en) * 2014-12-09 2017-02-21 Western Digital Technologies, Inc. Programmable solid state drive controller and method for scheduling commands utilizing a data structure
US9778848B2 (en) * 2014-12-23 2017-10-03 Intel Corporation Method and apparatus for improving read performance of a solid state drive
TWI553476B (zh) 2015-03-05 2016-10-11 光寶電子(廣州)有限公司 區域描述元管理方法及其電子裝置
US9965323B2 (en) * 2015-03-11 2018-05-08 Western Digital Technologies, Inc. Task queues
US9652175B2 (en) 2015-04-09 2017-05-16 Sandisk Technologies Llc Locally generating and storing RAID stripe parity with single relative memory address for storing data segments and parity in multiple non-volatile memory portions
US10372529B2 (en) 2015-04-20 2019-08-06 Sandisk Technologies Llc Iterative soft information correction and decoding
US9778878B2 (en) * 2015-04-22 2017-10-03 Sandisk Technologies Llc Method and system for limiting write command execution
KR102398611B1 (ko) * 2015-05-07 2022-05-17 에스케이하이닉스 주식회사 메모리 시스템
US10698607B2 (en) * 2015-05-19 2020-06-30 Netapp Inc. Configuration update management
KR102367982B1 (ko) 2015-06-22 2022-02-25 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US9870149B2 (en) 2015-07-08 2018-01-16 Sandisk Technologies Llc Scheduling operations in non-volatile memory devices using preference values
JP2017027479A (ja) * 2015-07-24 2017-02-02 富士通株式会社 データ読出し方法及び情報処理システム
US9715939B2 (en) 2015-08-10 2017-07-25 Sandisk Technologies Llc Low read data storage management
US9904635B2 (en) * 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
CN106547701B (zh) * 2015-09-17 2020-01-10 慧荣科技股份有限公司 记忆装置及数据读取方法
TWI662413B (zh) * 2015-09-17 2019-06-11 慧榮科技股份有限公司 記憶裝置及資料讀取方法
US10108340B2 (en) 2015-10-21 2018-10-23 Western Digital Technologies, Inc. Method and system for a common processing framework for memory device controllers
US9886196B2 (en) 2015-10-21 2018-02-06 Western Digital Technologies, Inc. Method and system for efficient common processing in memory device controllers
US10452596B2 (en) * 2015-10-29 2019-10-22 Micron Technology, Inc. Memory cells configured in multiple configuration modes
US9904609B2 (en) * 2015-11-04 2018-02-27 Toshiba Memory Corporation Memory controller and memory device
US10228990B2 (en) 2015-11-12 2019-03-12 Sandisk Technologies Llc Variable-term error metrics adjustment
US10126970B2 (en) 2015-12-11 2018-11-13 Sandisk Technologies Llc Paired metablocks in non-volatile storage device
US10437483B2 (en) * 2015-12-17 2019-10-08 Samsung Electronics Co., Ltd. Computing system with communication mechanism and method of operation thereof
US9927997B2 (en) 2015-12-21 2018-03-27 Sandisk Technologies Llc Methods, systems, and computer readable media for automatically and selectively enabling burst mode operation in a storage device
US10275160B2 (en) 2015-12-21 2019-04-30 Intel Corporation Method and apparatus to enable individual non volatile memory express (NVME) input/output (IO) Queues on differing network addresses of an NVME controller
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US10732856B2 (en) 2016-03-03 2020-08-04 Sandisk Technologies Llc Erase health metric to rank memory portions
JP6502879B2 (ja) * 2016-03-08 2019-04-17 東芝メモリ株式会社 記憶装置
US20170344262A1 (en) * 2016-05-25 2017-11-30 SK Hynix Inc. Data processing system and method for operating the same
US10521118B2 (en) 2016-07-13 2019-12-31 Sandisk Technologies Llc Methods, systems, and computer readable media for write classification and aggregation using host memory buffer (HMB)
US10481830B2 (en) 2016-07-25 2019-11-19 Sandisk Technologies Llc Selectively throttling host reads for read disturbs in non-volatile memory system
US10200376B2 (en) 2016-08-24 2019-02-05 Intel Corporation Computer product, method, and system to dynamically provide discovery services for host nodes of target systems and storage resources in a network
WO2018042520A1 (ja) * 2016-08-30 2018-03-08 三菱電機株式会社 プログラム編集装置、プログラム編集方法及びプログラム編集プログラム
US10176116B2 (en) * 2016-09-28 2019-01-08 Intel Corporation Computer product, method, and system to provide discovery services to discover target storage resources and register a configuration of virtual target storage resources mapping to the target storage resources and an access control list of host nodes allowed to access the virtual target storage resources
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
KR102387922B1 (ko) * 2017-02-07 2022-04-15 삼성전자주식회사 솔리드 스테이트 드라이브의 비동기 이벤트 요청 명령 처리 방법 및 시스템
US20180336034A1 (en) * 2017-05-17 2018-11-22 Hewlett Packard Enterprise Development Lp Near memory computing architecture
US10621117B2 (en) * 2017-06-15 2020-04-14 Micron Technology, Inc. Controlling memory devices using a shared channel
US10521375B2 (en) * 2017-06-22 2019-12-31 Macronix International Co., Ltd. Controller for a memory system
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10409739B2 (en) * 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
CN108628759B (zh) * 2017-12-29 2020-09-01 贵阳忆芯科技有限公司 乱序执行nvm命令的方法与装置
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
KR102516547B1 (ko) * 2018-03-08 2023-04-03 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
JP7013294B2 (ja) 2018-03-19 2022-01-31 キオクシア株式会社 メモリシステム
JP2019175292A (ja) * 2018-03-29 2019-10-10 東芝メモリ株式会社 電子機器、コンピュータシステム、および制御方法
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
CN108874685B (zh) * 2018-06-21 2021-10-29 郑州云海信息技术有限公司 固态硬盘的数据处理方法以及固态硬盘
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
KR102649657B1 (ko) * 2018-07-17 2024-03-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10884920B2 (en) 2018-08-14 2021-01-05 Western Digital Technologies, Inc. Metadata-based operations for use with solid state devices
CN110851073B (zh) * 2018-08-20 2023-06-02 慧荣科技股份有限公司 储存装置及巨集指令的执行方法
CN110851372B (zh) 2018-08-20 2023-10-31 慧荣科技股份有限公司 储存装置及快取区定址方法
CN110858127B (zh) * 2018-08-22 2023-09-12 慧荣科技股份有限公司 数据存储装置
US11188496B2 (en) * 2018-09-13 2021-11-30 Toshiba Memory Corporation System and method for storing data using ethernet drives and ethernet open-channel drives
US11340810B2 (en) 2018-10-09 2022-05-24 Western Digital Technologies, Inc. Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints
US11249664B2 (en) 2018-10-09 2022-02-15 Western Digital Technologies, Inc. File system metadata decoding for optimizing flash translation layer operations
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US11455402B2 (en) 2019-01-30 2022-09-27 Seagate Technology Llc Non-volatile memory with precise write-once protection
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
CN110187835B (zh) * 2019-05-24 2023-02-03 北京百度网讯科技有限公司 用于管理访问请求的方法、装置、设备和存储介质
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US20210064368A1 (en) * 2019-08-28 2021-03-04 Micron Technology, Inc. Command tracking
CN110737540B (zh) * 2019-09-29 2023-06-06 深圳忆联信息系统有限公司 用于ssd读取异常的恢复优化方法、装置、设备、存储介质
KR20210053384A (ko) 2019-11-01 2021-05-12 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US11797188B2 (en) * 2019-12-12 2023-10-24 Sk Hynix Nand Product Solutions Corp. Solid state drive with multiplexed internal channel access during program data transfers
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11137943B2 (en) 2020-03-04 2021-10-05 Micron Technology, Inc. Internal commands for access operations
US11138115B2 (en) * 2020-03-04 2021-10-05 Micron Technology, Inc. Hardware-based coherency checking techniques
US11222258B2 (en) 2020-03-27 2022-01-11 Google Llc Load balancing for memory channel controllers
US11579801B2 (en) 2020-06-09 2023-02-14 Samsung Electronics Co., Ltd. Write ordering in SSDs
US11681465B2 (en) * 2020-06-12 2023-06-20 Advanced Micro Devices, Inc. Dynamic multi-bank memory command coalescing
US11307806B2 (en) 2020-07-22 2022-04-19 Seagate Technology Llc Controlling SSD performance by queue depth
US11347394B2 (en) 2020-08-03 2022-05-31 Seagate Technology Llc Controlling SSD performance by the number of active memory dies
US11507298B2 (en) * 2020-08-18 2022-11-22 PetaIO Inc. Computational storage systems and methods
US11847037B2 (en) * 2020-09-16 2023-12-19 Kioxia Corporation Device and method for high performance memory debug record generation and management
US11966343B2 (en) 2021-07-19 2024-04-23 Samsung Electronics Co., Ltd. Universal mechanism to access and control a computational device
US20230120600A1 (en) * 2021-10-20 2023-04-20 Western Digital Technologies, Inc. Data Storage Devices, Systems, and Related Methods for Grouping Commands of Doorbell Transactions from Host Devices
CN114416178A (zh) * 2021-12-16 2022-04-29 北京小米移动软件有限公司 数据访问方法、装置及非临时性计算机可读存储介质
CN114721984B (zh) * 2022-03-30 2024-03-26 湖南长城银河科技有限公司 面向低延时应用的sata接口数据传输方法和系统
US20230393784A1 (en) * 2022-06-03 2023-12-07 Micron Technology, Inc. Data path sequencing in memory systems
US20240004788A1 (en) * 2022-07-01 2024-01-04 Micron Technology, Inc. Adaptive configuration of memory devices using host profiling
US20240061615A1 (en) * 2022-08-22 2024-02-22 Micron Technology, Inc. Command scheduling for a memory system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078292A1 (en) 2000-12-19 2002-06-20 Chilton Kendell A. Methods and apparatus for transferring a data element within a data storage system
US20080177909A1 (en) 2007-01-24 2008-07-24 Kevin Allen Sapp Content Terminated DMA

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5924485A (ja) * 1982-07-30 1984-02-08 Toshiba Corp 入出力ペ−ジング機構
DE3241376A1 (de) * 1982-11-09 1984-05-10 Siemens AG, 1000 Berlin und 8000 München Dma-steuereinrichtung zur uebertragung von daten zwischen einem datensender und einem datenempfaenger
US4797812A (en) * 1985-06-19 1989-01-10 Kabushiki Kaisha Toshiba System for continuous DMA transfer of virtually addressed data blocks
JPS63175970A (ja) * 1987-01-16 1988-07-20 Hitachi Ltd 記憶制御方式
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5182800A (en) * 1990-11-16 1993-01-26 International Business Machines Corporation Direct memory access controller with adaptive pipelining and bus control features
US5640596A (en) * 1992-03-10 1997-06-17 Hitachi, Ltd. Input output control system for transferring control programs collectively as one transfer unit designated by plurality of input output requests to be executed
US5526484A (en) * 1992-12-10 1996-06-11 International Business Machines Corporation Method and system for pipelining the processing of channel command words
US5517670A (en) * 1992-12-30 1996-05-14 International Business Machines Corporation Adaptive data transfer channel employing extended data block capability
US5564055A (en) * 1994-08-30 1996-10-08 Lucent Technologies Inc. PCMCIA slot expander and method
US5717952A (en) * 1994-11-16 1998-02-10 Apple Computer, Inc. DMA controller with mechanism for conditional action under control of status register, prespecified parameters, and condition field of channel command
JPH09128159A (ja) * 1995-11-06 1997-05-16 Matsushita Electric Ind Co Ltd 記憶装置
JP3287203B2 (ja) * 1996-01-10 2002-06-04 株式会社日立製作所 外部記憶制御装置及び外部記憶制御装置間データ転送方法
US6233660B1 (en) * 1996-02-16 2001-05-15 Emc Corporation System and method for emulating mainframe channel programs by open systems computer systems
US5901327A (en) * 1996-05-28 1999-05-04 Emc Corporation Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring
US5928370A (en) * 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
US6034897A (en) * 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6012104A (en) * 1997-10-24 2000-01-04 International Business Machines Corporation Method and apparatus for dynamic extension of channel programs
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6192444B1 (en) * 1998-01-05 2001-02-20 International Business Machines Corporation Method and system for providing additional addressable functional space on a disk for use with a virtual data storage subsystem
US6038646A (en) * 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US8171204B2 (en) * 2000-01-06 2012-05-01 Super Talent Electronics, Inc. Intelligent solid-state non-volatile memory device (NVMD) system with multi-level caching of multiple channels
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
US7102671B1 (en) * 2000-02-08 2006-09-05 Lexar Media, Inc. Enhanced compact flash memory card
US20020120741A1 (en) * 2000-03-03 2002-08-29 Webb Theodore S. Systems and methods for using distributed interconnects in information management enviroments
US6684311B2 (en) * 2001-06-22 2004-01-27 Intel Corporation Method and mechanism for common scheduling in a RDRAM system
US7269709B2 (en) * 2002-05-15 2007-09-11 Broadcom Corporation Memory controller configurable to allow bandwidth/latency tradeoff
JP2004013473A (ja) * 2002-06-06 2004-01-15 Hitachi Ltd 磁気ディスク装置におけるデータ書き込み制御方法
US6915378B2 (en) * 2003-04-23 2005-07-05 Hypernova Technologies, Inc. Method and system for improving the performance of a processing system
US7058735B2 (en) * 2003-06-02 2006-06-06 Emulex Design & Manufacturing Corporation Method and apparatus for local and distributed data memory access (“DMA”) control
US7010654B2 (en) * 2003-07-24 2006-03-07 International Business Machines Corporation Methods and systems for re-ordering commands to access memory
TWI227894B (en) * 2003-08-15 2005-02-11 Via Tech Inc A method for detecting flash card
WO2005041207A2 (en) * 2003-10-29 2005-05-06 Matsushita Electric Industrial Co.,Ltd. Drive device and related computer program
KR100585136B1 (ko) * 2004-03-04 2006-05-30 삼성전자주식회사 메모리 시스템의 데이터 채널 초기화 방법
US7328317B2 (en) * 2004-10-21 2008-02-05 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
US7353301B2 (en) * 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
JP4366298B2 (ja) * 2004-12-02 2009-11-18 富士通株式会社 記憶装置、その制御方法及びプログラム
US8332526B2 (en) * 2005-05-25 2012-12-11 Microsoft Corporation Data communication protocol including negotiation and command compounding
JP2007058646A (ja) * 2005-08-25 2007-03-08 Hitachi Ltd データ処理システム
US20070162643A1 (en) * 2005-12-19 2007-07-12 Ivo Tousek Fixed offset scatter/gather dma controller and method thereof
JP2008021380A (ja) * 2006-07-14 2008-01-31 Fujitsu Ltd シーク制御装置、シーク制御方法、記憶装置
US7822887B2 (en) * 2006-10-27 2010-10-26 Stec, Inc. Multi-channel solid-state storage system
US20080107275A1 (en) * 2006-11-08 2008-05-08 Mehdi Asnaashari Method and system for encryption of information stored in an external nonvolatile memory
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
CN100458751C (zh) * 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
TW200844841A (en) * 2007-05-10 2008-11-16 Realtek Semiconductor Corp Method for expediting data access of universal serial bus stoarage device
JP5340658B2 (ja) * 2007-07-10 2013-11-13 インターナショナル・ビジネス・マシーンズ・コーポレーション コマンド選択のメモリ・コントローラ読み取りキュー動的最適化
JP4963088B2 (ja) * 2007-07-13 2012-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション データをキャッシュする技術
JP2009128159A (ja) 2007-11-22 2009-06-11 Ogata Institute For Medical & Chemical Research キャピラリ等電点電気泳動装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078292A1 (en) 2000-12-19 2002-06-20 Chilton Kendell A. Methods and apparatus for transferring a data element within a data storage system
US20080177909A1 (en) 2007-01-24 2008-07-24 Kevin Allen Sapp Content Terminated DMA

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099776B2 (en) 2017-09-20 2021-08-24 SK Hynix Inc. Memory system having memory device queuing a plurality of commands and operating method thereof
US11321011B2 (en) 2018-03-20 2022-05-03 SK Hynix Inc. Controller for controlling command queue, system having the same, and method of operating the same

Also Published As

Publication number Publication date
US20190265889A1 (en) 2019-08-29
US20130268701A1 (en) 2013-10-10
EP2417527B1 (en) 2015-09-23
TWI418989B (zh) 2013-12-11
US8751700B2 (en) 2014-06-10
KR20120015313A (ko) 2012-02-21
US10949091B2 (en) 2021-03-16
JP2012523612A (ja) 2012-10-04
JP5729774B2 (ja) 2015-06-03
TW201104440A (en) 2011-02-01
US20120011335A1 (en) 2012-01-12
CN102439576A (zh) 2012-05-02
US8055816B2 (en) 2011-11-08
US8260973B2 (en) 2012-09-04
EP2958027A1 (en) 2015-12-23
US8396995B2 (en) 2013-03-12
CN102439576B (zh) 2015-04-15
EP2417527A2 (en) 2012-02-15
US20150212734A1 (en) 2015-07-30
WO2010117404A2 (en) 2010-10-14
EP2417527A4 (en) 2012-12-19
WO2010117404A3 (en) 2011-03-31
US10331351B2 (en) 2019-06-25
EP2958027B1 (en) 2019-09-04
US20140310431A1 (en) 2014-10-16
US9015356B2 (en) 2015-04-21
US20120324180A1 (en) 2012-12-20
US20100262721A1 (en) 2010-10-14

Similar Documents

Publication Publication Date Title
KR101371815B1 (ko) 다수의 명령들을 처리하기 위한 메모리 제어기들, 메모리 시스템들, 고체상태 드라이버들 및 방법들
KR101821845B1 (ko) 백그라운드 동작을 수행하기 위한 제어기 및 방법
US9009391B2 (en) Solid state drive architecture
US7660911B2 (en) Block-based data striping to flash memory
EP2377028B1 (en) Modifying commands
US9606863B2 (en) Fabric-based solid state drive architecture
US8924627B2 (en) Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency
KR101560469B1 (ko) 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들
CN108885584A (zh) 使用主机存储器缓冲区的无序读取传输
KR20120098505A (ko) 비휘발성 메모리를 갖는 시스템에 대한 효율적인 버퍼링
JP2012513647A (ja) 管理型不揮発性メモリのアドレスマッピングのためのアーキテクチャー
CN103403681A (zh) 描述符调度器
JP2014517402A (ja) メモリシステムコントローラを含む装置および関連する方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20170202

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190218

Year of fee payment: 6