KR101560469B1 - 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들 - Google Patents

메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들 Download PDF

Info

Publication number
KR101560469B1
KR101560469B1 KR1020137034532A KR20137034532A KR101560469B1 KR 101560469 B1 KR101560469 B1 KR 101560469B1 KR 1020137034532 A KR1020137034532 A KR 1020137034532A KR 20137034532 A KR20137034532 A KR 20137034532A KR 101560469 B1 KR101560469 B1 KR 101560469B1
Authority
KR
South Korea
Prior art keywords
instructions
logical
instruction
logical units
lrq
Prior art date
Application number
KR1020137034532A
Other languages
English (en)
Other versions
KR20140013098A (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 KR20140013098A publication Critical patent/KR20140013098A/ko
Application granted granted Critical
Publication of KR101560469B1 publication Critical patent/KR101560469B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles

Landscapes

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

Abstract

메모리 시스템 컨트롤러들은 스위치 및 스위치에 결합되는 비휘발성 메모리 제어 회로부를 포함할 수 있다. 비휘발성 메모리 제어 회로부는 논리 유닛들에 결합되는 채널 제어 회로를 포함할 수 있다. 채널 제어 회로부는 소거 명령을 논리 유닛들 중 제 1 논리 유닛에 중계하고 소거 명령이 복수의 논리 유닛들 중 제 1 논리 유닛 상에 실행되고 있는 동안 특정 명령을 스위치로부터 논리 유닛들 중 제 2 논리 유닛로 중계하도록 구성된다.

Description

메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들{APPARATUS INCLUDING MEMORY SYSTEM CONTROLLERS AND RELATED METHODS}
본 개시는 전반적으로 반도체 메모리 장치들, 시스템들, 및 컨트롤러들과 같은 장치, 및 관련 방법들에 관한 것이고, 특히 예를 들어 메모리 시스템 컨트롤러들에 관한 것이다.
메모리 장치들은 전형적으로 컴퓨터들 또는 다른 전자 장치들 내의 내부, 반도체, 집적 회로들로 제공된다. 휘발성 및 비휘발성 메모리를 포함하는 많은 상이한 타입들의 메모리가 있다. 휘발성 메모리는 그의 정보, 예를 들어 데이터를 유지하기 위해 전력을 필요로 하고, 다른 것들 중에서 랜덤 액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 동기 동적 랜덤 액세스 메모리(SDRAM), 및 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있다. 비휘발성 메모리는 전력이 공급되지 않을 때 저장된 정보를 유지함으로써 지속적인 정보를 제공할 수 있고 다른 것들 중에서 NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적 소거가능 프로그램가능 ROM(EEPROM), 소거가능 프로그램가능 ROM(EPROM), 및 상 변화 랜덤 액세스 메모리(PCRAM)를 포함할 수 있다.
메모리 장치들은 고체 상태 드라이브(SSD)를 형성하기 위해 함께 결합될 수 있다. 고체 상태 드라이브는 예를 들어 NAND 플래시 메모리 및 NOR 플래시 메모리를 포함할 수 있으며/있거나, 다양한 다른 타입들의 비휘발성 및 휘발성 메모리 중에서 휘발성 메모리, 예를 들어 DRAM 및 SRAM을 포함할 수 있다. 부동 게이트 플래시 장치(float gate flash device)들을 포함하는 플래시 메모리 장치들 및 정보를 질화물 층 내의 전하 트랩(trap)들에 저장하는 반도체-산화-질화-산화-반도체(semiconductor-oxide-nitride-oxide-semiconductor) 및 금속-산화-질화-산화-반도체(metal-oxide-nitride-oxide-semiconductor) 커패시터 구조들을 사용하는 CTF(charge trap flash) 장치들은 광범위한 전자 응용들을 위한 비휘발성 메모리로 이용될 수 있다. 플래시 메모리 장치들은 전형적으로 고 메모리 밀도, 고 신뢰성, 및 저전력 소모를 허용하는 단일 트랜지스터 메모리 셀을 사용한다.
SSD는 고체 상태 드라이브가 성능, 크기, 중량, 견고성(ruggedness), 동작 온도 범위, 및 전력 소모에 관하여 하드 드라이브들에 비해 장점들을 가질 수 있으므로, 컴퓨팅 시스템에 대한 주요 저장 장치로서 하드 디스크 드라이브들을 대체하기 위해 사용될 수 있다. 예를 들어, SSD들은 이동성 부품들의 부족으로 인해 자기 디스크 드라이브들과 비교될 때 우수한 성능을 가질 수 있으며, 이는 탐색 시간, 레이턴시, 및 자기 디스크 드라이브들과 연관되는 다른 전기 기계 지연들을 회피할 수 있다. SSD 제조사들은 내부 배터리 전원을 사용하지 않을 수 있는 플래시 SSD들을 생성하기 위해 비휘발성 플래시 메모리를 사용할 수 있으므로, 드라이브가 더 다목적이고 소형인 것을 허용한다.
SSD는 다수의 메모리 장치들, 예를 들어 다수의 메모리 칩들을 포함할 수 있다(본 명세서에 사용되는 바와 같이, "다수의" 어떤 것은 그러한 것들 중 1개 이상을 지칭할 수 있으며, 예를 들어 다수의 메모리 장치들은 1개 이상의 메모리 장치들을 지칭할 수 있음). 당해 기술에서 통상의 기술자가 이해하는 바와 같이, 메모리 칩은 예를 들어 다수의 다이(die)들 및/또는 논리 유닛(logical unit: LUN)들을 포함할 수 있으며, LUN은 1개 이상의 다이일 수 있다. 각각의 다이는 다수의 메모리 어레이들 및 주변 회로부를 그 위에 포함할 수 있다. 메모리 어레이들은 다수의 물리 페이지들로 조직되는 다수의 메모리 셀들을 포함할 수 있고, 물리 페이지들은 다수의 블록들로 조직될 수 있다. 플래시 메모리 셀들의 어레이는 한번에 한 페이지로 프로그래밍되고 한번에 한 블록으로 소거될 수 있다. SSD 컨트롤러들은 내장 프로세서를 사용하여 메모리 관리 및 할당을 수행할 수 있다.
도 1은 본 개시의 다수의 실시예들에 따른 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템의 기능 블록도이다.
도 2는 본 개시의 다수의 실시예들에 따른 메모리 시스템의 기능 블록도이다.
도 3a는 본 개시의 다수의 실시예들에 따른 호스트 버스 어댑터(host bus adapter: HBA)와 직렬 부착(serial attachment: SA) 프로그래밍 컴플라이언트(compliant) 장치 사이의 전송 계층 인터페이스의 기능 블록도이다.
도 3b는 본 개시의 다수의 실시예들에 따른 HBA 및 SA 프로그래밍 컴플라이언트 장치의 기능 블록도이다.
도 4는 본 개시의 다수의 실시예들에 따른 블록 관리 장치의 기능 블록도를 예시한다.
본 개시는 메모리 시스템 컨트롤러들을 포함한다. 메모리 시스템 컨트롤러들은 스위치 및 스위치에 결합되는 비휘발성 메모리 제어 회로부를 포함할 수 있다. 비휘발성 메모리 제어 회로부는 논리 유닛들에 결합되는 채널 제어 회로를 포함할 수 있다. 채널 제어 회로부는 소거 명령을 논리 유닛들 중 제 1 논리 유닛에 중계하고 소거 명령이 복수의 논리 유닛들 중 제 1 논리 유닛 상에 실행되고 있는 동안 특정 명령을 스위치로부터 논리 유닛들 중 제 2 논리 유닛으로 중계하도록 구성될 수 있다.
본 개시의 이하의 상세한 설명에서, 그의 일부를 형성하는 첨부 도면들이 참조되고, 여기서 본 개시의 다수의 실시예들이 어떻게 실시될 수 있는지가 예시로서 도시된다. 이 실시예들은 당해 기술에서 통상의 기술자들이 본 개시의 실시예들을 실시할 수 있게 하기 위해 충분히 상세하게 설명되고, 다른 실시예들이 이용될 수 있고 프로세스, 전기적, 및/또는 구조적 변경들은 본 개시의 범위로부터 벗어나는 것 없이 이루어질 수 있다는 점이 이해되어야 한다. 본 명세서에 사용되는 바와 같이, 지시어 "N"은, 특히 도면들의 참조 번호들에 대해, 그렇게 지정되는 다수의 특정 특징이 본 개시의 다수의 실시예들에 포함될 수 있는 것을 표시한다.
본 명세서의 도면은 처음 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자들이 도면 내의 요소 또는 구성요소를 식별하는 번호 부여 규정을 따른다. 상이한 도면들 사이의 유사한 요소들 또는 구성요소들은 유사한 숫자들의 사용에 의해 식별될 수 있다. 예를 들어, 108은 도 1의 요소 "08"을 참조할 수 있고, 유사한 요소는 도 2의 208로 참조될 수 있다. 이해되는 바와 같이, 본 명세서의 다양한 실시예들에 도시된 요소들은 본 개시의 다수의 부가 실시예들을 제공하기 위해 부가, 교환, 및/또는 제거될 수 있다. 게다가, 이해되는 바와 같이, 도면에 제공되는 요소들의 비율 및 비교 축척은 본 발명의 실시예들을 예시하도록 의도되고, 제한적인 의미로 해석되지 않아야 한다.
도 1은 본 개시의 다수의 실시예들에 따른 적어도 하나의 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100)의 기능 블록도이다. 도 1에 예시된 실시예에서, 메모리 시스템(104), 예를 들어 고체 상태 드라이브(SSD)는 물리 호스트 인터페이스(106), 메모리 시스템 컨트롤러(108), 예를 들어 SSD 컨트롤러, 및 다수의 고체 상태 메모리 장치들(110-1,..., 110-N)을 포함할 수 있다. 고체 상태 메모리 장치들(110-1,..., 110-N)은 메모리 시스템을 위한 저장 볼륨을 제공할 수 있다. 다수의 실시예들에서, 고체 상태 메모리 시스템 컨트롤러(108)는 ASIC(application specific integrated circuit)일 수 있으며, 컨트롤러(108)는 예를 들어 ASIC의 형태로, 물리 인터페이스(106) 및 고체 상태 메모리 장치들(110-1,..., 110-N)을 포함하는 인쇄 회로 기판에 결합된다.
도 1에 예시된 바와 같이, 메모리 시스템 컨트롤러(108), 예를 들어 고체 상태 메모리 시스템 컨트롤러는 물리 호스트 인터페이스(106) 및 고체 상태 메모리 장치들(110-1,..., 110-N)에 결합될 수 있다. 물리 호스트 인터페이스(106)는 메모리 시스템(104)과 호스트(102)와 같은 다른 장치 사이에서 정보를 전달하기 위해 사용될 수 있다. 호스트(102)는 메모리 액세스 장치, 예를 들어 프로세서를 포함할 수 있다. 당해 기술에서 통상의 기술자는 "프로세서"가 병렬 처리 시스템과 같은 다수의 프로세서들, 다수의 코프로세서들 등을 의도할 수 있다는 점을 이해할 것이다. 대표적인 호스트들은 랩톱 컴퓨터들, 개인용 컴퓨터들, 디지털 카메라들, 디지털 레코딩 및 플레이백 장치들, 이동 전화들, PDA들, 메모리 카드 리더들, 인터페이스 허브들 등을 포함한다. 다수의 실시예들에 대해, 물리 호스트 인터페이스(106)는 표준화된 물리 인터페이스의 형태일 수 있다. 예를 들어, 메모리 시스템(104)이 컴퓨팅 시스템(100) 내의 정보 저장에 사용될 때, 물리 호스트 인터페이스(106)는 다른 인터페이스들 중에서, 직렬 고급 기술 부착(serial advanced technology attachment: SATA) 물리 인터페이스, 주변 구성요소 상호연결 익스프레스(peripheral component interconnect express: PCIe) 물리 인터페이스, 소형 컴퓨터 시스템 인터페이스(small computer system interface: SCSI) 인터페이스, 직렬 부착 SCSI(serial attachment SCSI: SAS) 인터페이스, 또는 USB(universal serial bus) 물리 인터페이스일 수 있다. 그러나, 일반적으로, 물리 호스트 인터페이스(106)는 컨트롤, 어드레스, 정보, 예를 들어 데이터, 및 물리 호스트 인터페이스(106)에 대한 호환성 리셉터들을 갖는 메모리 시스템(104)과 호스트(102) 사이의 다른 신호들을 통과시키는 인터페이스를 제공할 수 있다.
고체 상태 메모리 시스템 컨트롤러(108)는 다른 동작들 중에서, 정보를 판독, 기록, 및 소거하기 위해 고체 상태 메모리 장치들(110-1,..., 110-N)과 통신할 수 있다. 고체 상태 메모리 시스템 컨트롤러(108)는 펌웨어 및/또는 다수의 집적 회로들일 수 있는 회로부 및/또는 개별 구성요소들을 가질 수 있다. 다수의 실시예들에 대해, 고체 상태 메모리 시스템 컨트롤러(108) 내의 회로부는 고체 상태 메모리 장치들(110-1,..., 110-N)에 걸쳐 액세스를 제어하는 제어 회로부 및 호스트(102)와 메모리 시스템(104) 사이에 변환 계층을 제공하는 회로부를 포함할 수 있다. 따라서, 메모리 컨트롤러는 고체 상태 메모리 장치(110-1,..., 110-N)의 I/O 연결(도 1에 도시되지 않음)을 선택적으로 결합하여 적절한 신호를 적절한 I/O 연결에서 적절한 시간에 수신할 수 있다. 유사하게, 호스트(102)와 메모리 시스템(104) 사이의 통신 프로토콜은 고체 상태 메모리 장치(110-1,..., 110-N)의 액세스를 위해 요구되는 것과 상이할 수 있다. 그 다음, 고체 상태 메모리 시스템 컨트롤러(108)는 호스트(102)로부터 수신되는 명령들을 적절한 명령들로 변환하여 고체 상태 메모리 장치(110-1,..., 110-N)에 원하는 액세스를 달성할 수 있다.
고체 상태 메모리 장치(110-1,..., 110-N)는 메모리 셀들, 예를 들어 비휘발성 메모리 셀들의 다수의 어레이들을 포함할 수 있다. 어레이들은 예를 들어 NAND 아키텍처를 갖는 플래시 어레이들일 수 있다. NAND 아키텍처에서, "행(row)"의 메모리 셀들의 제어 게이트들은 액세스, 예를 들어 워드, 라인과 결합될 수 있는 한편, 메모리 셀들은 선택 게이트 소스 트랜지스터와 선택 게이트 드레인 트랜지스터 사이의 "스트링(string)"에서 직렬로 소스 대(to) 드레인에 결합될 수 있다. 스트링은 선택 게이트 드레인 트랜지스터에 의해 데이터, 예를 들어 비트, 라인에 연결될 수 있다. "행" 및 "스트링"이라는 용어들의 사용은 메모리 셀들의 선형 배열도 아니고 직교 배열도 아닌 것을 나타낸다. 당해 기술에서 통상의 기술자들에 의해 이해되는 바와 같이, 메모리 셀들을 비트 라인들 및 소스 라인들에 연결하는 방식은 어레이가 NAND 아키텍처, NOR 아키텍처, 또는 일부 다른 메모리 어레이 아키텍처인지에 의존한다.
고체 상태 메모리 장치들(110-1,..., 110-N)은 그룹화될 수 있는 다수의 메모리 셀들을 포함할 수 있다. 본 명세서에 사용되는 바와 같이, 그룹은 페이지(page), 블록, 평면(plane), 다이, 전체 어레이와 같은 다수의 메모리 셀들, 또는 다른 그룹들의 메모리 셀들을 포함할 수 있다. 예를 들어, 일부 메모리 어레이들은 메모리 셀들의 블록을 구성하는 메모리 셀들의 다수의 페이지들을 포함할 수 있다. 다수의 블록들은 메모리 셀들의 평면에 포함될 수 있다. 메모리 셀들의 다수의 평면들은 다이 상에 포함될 수 있다. 일 예로서, 128 GB 메모리 장치는 페이지 당 4320 바이트의 정보, 블록 당 128 페이지들, 평면 당 2048 블록들, 및 장치 당 16 평면들을 포함할 수 있다.
메모리 시스템(104)은 예를 들어 가비지 컬렉션(garbage collection) 및/또는 회수(reclamation)와 같은 웨어 레벨링(wear leveling)을 구현하여, 웨어 레이트(wear rate)를 고체 상태 메모리 장치들(110-1,..., 110-N) 상에서 제어할 수 있다. 고체 상태 메모리 어레이는 다수의 프로그램 및/또는 소거 사이클들 후에, 에러들, 예를 들어 장애들을 경험할 수 있다. 웨어 레벨링은 사이클들을 전체 어레이에 걸쳐 더 균일하게 확산시킴으로써 특정 그룹 상에 수행되는 다수의 프로그램 및/또는 소거 사이클들을 감소시킬 수 있다. 웨어 레벨링은 블록을 회수하기 위해 이동되는 유효 블록들의 양을 최소화하는 동적 웨어 레벨링을 포함할 수 있다. 동적 웨어 레벨링은 가비지 컬렉션으로 불려지는 기술을 포함할 수 있다. 가비지 컬렉션은 예를 들어 "그리디 알고리즘(greedy algorithm)"에 따라 최대 무효 페이지들을 갖는 블록들을 회수하는 것, 예를 들어 소거하는 것 및 기록에 이용가능한 것을 포함할 수 있다. 대안적으로, 가비지 컬렉션은 무효 페이지들의 임계량보다 더 많은 블록들을 회수하는 것을 포함할 수 있다. 충분한 프리 블록들이 기록 동작을 위해 존재하면, 이 때 가비지 컬렉션 동작이 발생하지 않을 수 있다. 무효 페이지는 예를 들어 상이한 페이지에 갱신되었던 정보의 페이지일 수 있다. 정적 웨어 레벨링은 블록의 수명을 연장하기 위해 높은 소거 카운트들을 갖는 블록들에 정적 정보를 기록하는 것을 포함한다.
기록 증폭(write amplification)은 정보를 고체 상태 메모리 장치들(110-1,..., 110-N)에 기록할 때 발생할 수 있는 프로세스이다. 정보를 메모리 어레이에 랜덤하게 기록할 때, 고체 상태 메모리 시스템 컨트롤러(108)는 어레이 내의 이용가능한 공간을 스캔한다. 메모리 어레이 내의 이용가능한 공간은 개별 셀들, 페이지들, 및/또는 정보를 저장하고 있지 않으며/않거나 소거되었던 메모리 셀들의 블록들일 수 있다. 정보를 선택된 위치에 기록하기 위해 충분히 이용가능한 공간이 있으면, 이 때 정보는 메모리 어레이의 선택된 위치에 기록된다. 선택된 위치에 충분히 이용가능한 공간이 없으면, 메모리 어레이 내의 정보는 선택된 위치에 이미 존재하는 정보를 판독하거나, 복사하거나, 새로운 위치에 이동시키거나, 그렇지 않으면 재기록하여, 선택된 위치에 재기록될 새로운 정보에 대한 이용가능한 공간을 남김으로써 재배열된다. 메모리 어레이에서 이전 정보의 재배열은 선택된 위치에 충분히 이용가능한 공간이 있었으면 발생하는 기록의 양을 통해 메모리 장치에 의해 수행되는 기록의 양이 증폭되기 때문에 기록 증폭으로 불려진다.
도 1에 예시된 컴퓨팅 시스템(100)은 예시된 것 이외에 부가 회로부를 포함할 수 있다. 도 1에 예시된 컴퓨팅 시스템(100)의 상세는 본 개시의 실시예들을 모호하게 하지 않도록 감소되었다. 예를 들어, 메모리 시스템(104)은 I/O 회로부에 의해 I/O 연결들을 통하여 제공되는 어드레스 신호들을 래치하는 어드레스 회로부를 포함할 수 있다. 어드레스 신호들이 수신되고 행 디코더 및 열 디코더에 의해 디코딩되어 고체 상태 메모리 장치들(110-1,..., 110-N)에 액세스할 수 있다. 어드레스 입력 연결들의 수는 고체 상태 메모리 장치들(110-1,..., 110-N)의 밀도 및 아키텍처에 의존할 수 있다는 점이 당해 기술에서 통상의 기술자들에 의해 이해될 것이다.
도 2는 본 개시의 다수의 실시예들에 따른 메모리 시스템(204)의 기능 블록도이다. 메모리 시스템(204)은 고체 상태 메모리 시스템 컨트롤러(208)를 포함할 수 있다. 고체 상태 메모리 시스템 컨트롤러(208)는 다수의 고체 상태 메모리 장치들, 예를 들어 도 1에 예시된 고체 상태 메모리 장치들(110-1,..., 110-N)에 결합될 수 있다. 도 2에 도시된 예에서, 다수의 메모리 장치들은 다수의 논리 유닛들(LUN들)(250)을 포함하는 비휘발성 메모리를 포함하고 컨트롤러(208)는 휘발성 메모리(212)를 포함한다. LUN(250)은 독립적으로 제어가능할 수 있는 비휘발성 메모리의 일부일 수 있다. 메모리 시스템(204) 및 고체 상태 메모리 시스템 컨트롤러(208)는 도 1에 예시된 메모리 시스템(104) 및 고체 상태 메모리 시스템 컨트롤러(108) 각각과 유사할 수 있다.
고체 상태 메모리 시스템 컨트롤러(208)는 물리 호스트 인터페이스(206)를 통해 호스트, 예를 들어 도 1에 예시된 호스트(102)와 인터페이스하는 호스트 인터페이스(I/F) 회로부(214)를 포함할 수 있다. 고체 상태 메모리 시스템 컨트롤러(208)는 호스트 메모리 변환(translation) 회로부(216), 메모리 관리 회로부(218), 스위치(220), 비휘발성 메모리 제어 회로부(222), 및/또는 휘발성 메모리 제어 회로부(224)를 포함할 수 있다. 본 명세서에 설명된 바와 같이, 고체 상태 메모리 시스템 컨트롤러(208)는 ASIC의 형태로 제공될 수 있지만, 실시예들은 그와 같이 제한되지 않는다.
호스트 I/F 회로부(214)는 호스트 메모리 변환 회로부(216)에 결합될 수 있다. 호스트 I/F 회로부(214)는 물리 인터페이스(206)와 같은 호스트의 물리 인터페이스에 결합되며/되거나 물리 인터페이스와 통합될 수 있다. 호스트 I/F 회로부(214)는 호스트, 예를 들어 도 1의 호스트(102)와 인터페이스될 수 있다. 호스트 I/F 회로부(214)는 예를 들어 물리 계층, 링크 계층, 및 전송 또는 트랜잭션 계층 인터페이스를 제공하는 주변 구성요소 상호연결 익스프레스(PCIe) 회로(230)를 포함할 수 있으며, 호스트는 PCIe 표준에 따라 정보를 송신하도록 구성된다. 직렬 고급 기술 부착(SATA) 표준 및/또는 직렬 부착 SCSI(SAS) 표준에 따른 전송 계층은 PCIe 표준에 따른 트랜잭션 계층과 유사할 수 있다. PCIe 회로(230)는 호스트 버스 어댑터(HBA)(234), 예를 들어 고급 호스트 컨트롤러 인터페이스(advanced host controller interface: AHCI) 호환 HBA에 결합될 수 있다. HBA(234)는 SA 컴플라이언트 장치(compliant device)(236)에 결합될 수 있으며, 이 컴플라이언트 장치는 호스트 메모리 변환 회로부(216)에 결합될 수 있다.
일반적으로, 호스트 I/F 회로부(214)는 호스트, 예를 들어 PCIe 버스로부터 수신되는 명령 패킷들을 호스트 메모리 변환 회로부(216)를 위한 명령 인스트럭션(instruction)들로 변환하는 책임이 있고 호스트 메모리 변환 응답들을 요청 호스트에 송신을 위한 호스트 명령들로 변환하는 책임이 있다. 예를 들어, 호스트 I/F 회로부(214)는 PCIe 기반 트랜잭션 계층 패킷들로부터 SA 명령 패킷들을 구성할 수 있다. HBA(234) 및 SA 컴플라이언트 장치(236)는 아래의 도 3a-도 3b를 참조하여 더 상세히 설명된다.
호스트 메모리 변환 회로부(216)는 호스트 I/F 회로부(214), 메모리 관리 회로부(218), 및/또는 스위치(220)에 결합될 수 있다. 호스트 메모리 변환 회로부(216)는 호스트 어드레스들을 메모리 어드레스들, 예를 들어 판독 및/또는 기록 명령과 같은 수신된 명령과 연관되는 어드레스들로 변환하도록 구성될 수 있다. 예를 들어, 그러한 변환은 SATA 대 메모리 회로부(238)에 의해 수행될 수 있다. "SATA 대 메모리" 회로부(238)로 식별될지라도, 회로부는 본 명세서에 설명되는 바와 같이, SAS와 같은 다른 직렬 부착들을 위해 구성될 수 있다. 호스트 메모리 변환 회로부(216)는 예를 들어 호스트 섹터 판독 및 기록 동작들을 특정 LUN들(250)에 전송되는 명령들로 변환할 수 있다. 호스트 메모리 변환 회로부(216)는 RAID 배타적 논리합(XOR) 회로부(226)와 같은 에러 검출/정정 회로부를 포함할 수 있다. RAID XOR 회로부(226)는 호스트 I/F 회로부(214)로부터 수신되는 정보에 기초하여 패리티 정보를 계산할 수 있다.
메모리 관리 회로부(218)는 호스트 메모리 변환 회로부(216) 및 스위치(220)에 결합될 수 있다. 메모리 관리 회로부(218)는 초기화, 웨어 레벨링, 예를 들어 가비지 컬렉션 및/또는 회수, 및/또는 에러 검출/정정을 포함하지만 이들에 제한되지 않는 다수의 메모리 동작들을 제어할 수 있다. 메모리 관리 회로부(218)가 프로세서(228)를 포함할 수 있을지라도, 본 개시의 다수의 실시예들은 프로세서(228)에 의해, 인스트럭션들의 실행, 예를 들어 소프트웨어 및/또는 펌웨어에 의존하는 것 없이 메모리 동작들의 제어를 회로부, 예를 들어 하드웨어에서 제공한다. 그러한 실시예들은 메모리 동작들을 제어하기 위해 프로세서에 더 많이 의존하는 어떤 이전 접근법들에 비해 더 빠른 메모리 동작들을 제공할 수 있다. 메모리 관리 회로부(218)는 블록 관리 회로부(240)를 포함할 수 있으며, 블록 관리 회로부는 도 4에 더 상세히 설명된다.
스위치(220)는 호스트 메모리 변환 회로부(216), 메모리 관리 회로부(218), 비휘발성 제어 회로부(222), 및/또는 휘발성 메모리 제어 회로부(224)에 결합될 수 있다. 스위치(220)는 크로스바 스위치일 수 있고 다수의 버퍼들을 포함하며/하거나 버퍼들에 결합될 수 있다. 예를 들어, 스위치(220)는 ISB들(internal SRAM(static random access memory) buffers)(225)을 포함할 수 있다. 스위치는 휘발성 메모리(212)에 포함되는 복수의 동적 랜덤 액세스 메모리(DRAM) 버퍼들(227)에 결합될 수 있다. 스위치는 버퍼 할당 관리(buffer allocation management: BAM) 회로(221)를 포함할 수 있으며, 버퍼 할당 관리 회로는 버퍼 태그 풀(buffer tag pool)(223)을 포함할 수 있다. 스위치(220)는 고체 상태 메모리 시스템 컨트롤러(208)의 다양한 구성요소들 사이에 인터페이스를 제공할 수 있다. 스위치(220)는 구성요소들 사이의 일관된 액세스 및 구현을 제공하기 위해 고체 상태 메모리 시스템 컨트롤러(208)의 상이한 구성요소들과 연관될 수 있는 정의된 시그널링 프로토콜들에서 변화들을 설명할 수 있다. 다수의 실시예들에서, 스위치(220)는 직접 메모리 액세스(direct memory access: DMA) 모듈일 수 있다.
BAM 회로(221) 내의 버퍼 태그 풀(223)에서의 복수의 태그들은 복수의 DRAM 버퍼들(227) 또는 복수의 ISB들(225) 중 각각의 하나를 각각 식별할 수 있다. 특정 태그가 DRAM 버퍼(227)에 지시될 때, 프로그램가능 "BAR" 어드레스는 휘발성 메모리(212)에 대한 어드레스를 기입하기 위해 버퍼 태그에 첨부될 수 있다. BAM 회로(221)는 다수의 하드웨어 마스터들 중 하나로부터의 할당 요청에 대응하여 태그를 다수의 하드웨어 마스터들 중 하나에 할당하도록 구성될 수 있다. 하드웨어 마스터들은 메모리에 액세스할 수 있는 그의 하드웨어 구성요소들을 포함할 수 있다.
BAM 회로(221)는 복수의 DRAM 버퍼들(227) 중 하나를 식별하는 태그를 통해 복수의 ISB들(225) 중 하나를 식별하는 태그의 할당을 우선하도록 구성될 수 있다. ISB들(225)은 DRAM 버퍼들(227)보다 더 빠르고 저전력 공급될 수 있고, 따라서 그것에 바람직하다. 따라서, BAM 회로(221)는 ISB들(225)을 식별하는 모든 태그들이 할당된 후에만 복수의 DRAM 버퍼들(227) 중 하나를 식별하는 태그가 할당되기 위해 태그들의 할당을 우선하도록 구성될 수 있다. 다수의 실시예들에서, 고체 상태 메모리 시스템 컨트롤러(208)는 전체 1024 버퍼들에 대한 768 DRAM 버퍼들(227) 및 256 ISB들(225)을 포함할 수 있다. 그러한 실시예들에서, 버퍼 태그들은 1024 버퍼들 중 하나를 식별하는 10 비트 태그들일 수 있다. 버퍼 태그는 하드웨어 마스터에 어떤 특정 의미를 가지지 않을 수 있지만, 명령들, 예를 들어 판독 및/또는 기록 명령들의 처리 동안 하드웨어 마스터에 의해 전달되어, 정확한 버퍼가 참조되는 것을 허용한다. 다수의 하드웨어 마스터들은 복수의 ISB들(225) 중 하나 또는 복수의 DRAM 버퍼들(227) 중 하나에 특정되는 태그의 할당을 요청하는 것 없이 태그의 할당을 일반적으로 요청하도록 구성될 수 있다. 다수의 실시예들에서, DRAM 버퍼들(227) 및 ISB들(225) 각각은 가장 큰 지원 메모리 페이지의 크기와 같은 크기, 예를 들어 4KB일 수 있다.
BAM 회로(221)는 비-기능(non-functioning) 버퍼들과 연관되는 태그들을 버퍼 풀(223)로부터 제거하도록 구성될 수 있다. 프로세서(228)는 BAM 회로(221)에 액세스하고 비기능 버퍼들과 연관되는 태그들을 버퍼 풀(223)로부터 제거하도록 구성될 수 있다. 그러한 실시예들은 1개 이상의 ISB들(225)이 동작하지 않을지라도 고체 상태 메모리 시스템 컨트롤러(208)가 적절히 기능하는 것을 도울 수 있다. 일부 실시예들에서, "부적당한(bad)" 버퍼들을 제거하는, 예를 들어 "맵 아웃(map out)"하는 능력은 제조 동안 ISB들(225)을 테스트하는 대신에 사용될 수 있다. 스위치(220)는 다수의 ISB들(225)을 유실하는 것이 고체 상태 메모리 시스템 컨트롤러(208)의 동작에 현저한 영향을 미치지 않도록 ISB들(225)과 "오버 프로비젼될(over-provisioned)" 수 있다.
다수의 하드웨어 마스터들은 판독 명령 또는 기록 명령과 함께 BAM 회로(221)로부터 태그의 할당을 요청하고 판독 명령 또는 기록 명령의 완료와 함께 BAM 회로(221)로부터 할당된 태그의 반납을 요청하도록 구성될 수 있다. 하드웨어 마스터들은 다수의 명령들에 대한 동일한 태그들을 사용하지 않고 따라서 각각의 명령에 대한 새로운 태그를 요청한다. 하드웨어 마스터들은 할당 요청들에 비해 반납 요청들을 우선하도록, 예를 들어 충분한 버퍼들, 특히 ISB들(225)이 다수의 하드웨어 마스터들로부터의 다수의 명령들에 이용가능한 것을 보장하는데 도움이 되도록 구성될 수 있다.
버퍼 태그들의 사용은 판독 동작들을 용이하게 할 수 있다. 하드웨어 마스터들은 할당된 태그와 함께 판독 명령을 비휘발성 메모리 제어 회로부(222)에 송신하도록 구성될 수 있다. 비휘발성 메모리 제어 회로부(222)는 판독 명령에 대응하는 정보를 할당된 태그에 의해 식별되는 버퍼에 저장하고 판독 명령을 송신한 특정 하드웨어 마스터에게 정보가 준비된 것을 통지하도록 구성될 수 있다.
버퍼 태그들의 사용은 기록 동작들을 용이하게 할 수 있다. 하드웨어 마스터들은 할당된 태그와 함께 기록 명령을 비휘발성 메모리 제어 회로부(222)에 송신하고 기록 명령에 대응하는 정보를 할당된 태그에 의해 식별되는 버퍼에 저장하도록 구성될 수 있다. 비휘발성 메모리 제어 회로부(222)는 할당된 태그에 의해 식별되는 버퍼로부터 정보를 검색하고, 정보를 비휘발성 메모리, 예를 들어 적절한 LUN(250)에 기록하며, 기록 명령을 송신하는 하드웨어 마스터에게 정보가 기록되었던 것을 통지하도록 구성될 수 있다.
메모리 관리 회로부(218) 내의 프로세서(228)는 하드웨어 마스터일 수 있다. 프로세서(228)는 복수의 태그들을 고려하지 않고 비휘발성 메모리 제어 회로부(222)와 전체 휘발성 메모리(212) 공간에 액세스를 갖는 휘발성 메모리 제어 회로부(224) 사이에서 직접 메모리 액세스(DMA) 동작들을 가능하게 하도록 구성될 수 있다. 다른 하드웨어 마스터들은 DMA 특징을 가능하게 하지 않을 수 있고 따라서 메모리 공간에 직접 액세스하는 것보다는 오히려 버퍼들에 액세스하는 태그들에 의존한다. 프로세서(228)는 버퍼가 메모리 공간에 액세스하는 요구를 우회시키는 명령 파이프라인을 통해 송신되는 명령들과 함께 사용되는 필드에서 DMA 동작들을 정보를 통해 가능하게 할 수 있다. 예를 들어, 본 명세서에 설명된 바와 같이, 정보 "DMA_En BARSEL"은 명령과 함께 사용되는 필드에 포함될 수 있으며, "DMA_En"은 수신기에 DMA 동작이 가능하게 되었던 것을 표시하고, "BARSEL"은 버퍼 태그 대신에 어드레스가 DRAM을 위해 포함되어야 하는 것을 표시한다. 따라서, 프로세서(228)는 다른 하드웨어 마스터들에 대한 버퍼 기반 액세스와 동일한 로직을 사용하여 휘발성 메모리(212)와 LUN들(250) 사이에서 정보를 이동시킬 수 있다. "DMA_En"은 LUN(250)에 액세스할 때 채널 제어 회로부(248)에 의해 스위치(220)에 에코될 수 있다. 채널 제어 회로(248)의 관점에서, DMA 액세스는 버퍼 기반 액세스와 사실상 동일하다. "DMA_En"이 어서트(assert)되면, 스위치(220)는 요청을 휘발성 메모리(212)에 밀어 넣을 수 있다. "BARSEL"은 스위치(220)에 의해 사용되어 버퍼 태그가 DRAM 버퍼(227)에 지시될 때 버퍼 태그에 첨부되는 "BAR" 어드레스와 유사한 고유 "BAR"을 교환한다. 예를 들어, "BAR" 어드레스는 4개의 위치들 중 하나에 지시되는 2 비트 어드레스일 수 있지만, 실시예들은 그와 같이 제한되지 않는다. "BAR" 어드레스의 사용은 상이한 동시 DMA들을 허용할 수 있다.
비휘발성 메모리 제어 회로부(222)는 스위치(220)에 결합될 수 있다. 비휘발성 메모리 제어 회로부(222)는 비휘발성 메모리 장치들에 결합될 수 있다. 도 2는 다수의 LUN들(250)을 포함하는 비휘발성 메모리 장치들을 도시한다. 다수의 LUN들(250)은 다수의 채널들에 의해 비휘발성 메모리 제어 회로부(222)에 결합될 수 있다. 일부 실시예들에서, 다수의 채널들은 비휘발성 메모리 제어 회로부(222)에 의해 집합적으로 제어될 수 있다. 다수의 실시예들에서, 각각의 메모리 채널은 도 2에 예시된 바와 같이, 개별 채널 제어 회로(248)에 결합된다. 특정 채널 제어 회로(248)는 단일 채널에 의해 하나보다 많은 LUN(250)을 제어하고 LUN에 결합될 수 있다. 다수의 실시예들에서, 채널 제어 회로들(248)은 오픈 NAND 플래시 인터페이스(Open NAND Flash Interface: ONFI) 컴플라이언트 버스에 의해 복수의 LUN들(250)에 결합될 수 있다.
비휘발성 메모리 제어 회로부(222)는 채널 제어 회로(248)에 의해 실행되기를 대기하는 동안 명령들이 상주하는 명령 파이프라인의 적어도 일부를 포함한다. 요청들을 LUN들(250)에 개시(initiate)하는 모든 하드웨어 마스터들은 동일한 명령 파이프라인을 스위치(220)를 통해 공유할 수 있다. 호스트로부터의 판독 명령들(호스트 판독들)에 대하여, 호스트가 특정 정보를 요구하기 때문에 LUN(250)이 액세스되는 어떤 제어도 없으며, 특정 정보는 1개 이상의 LUN들(250)에 저장된다. 마찬가지로, 호스트 트래픽의 볼륨을 통한 어떤 제어도 없다. 본 명세서에 설명되는 명령 파이프라인은 LUN들(250) 사이에 프로그램 시간, 판독 시간, 및 소거 시간 충돌들을 숨기는 데 있어 유연성을 제공할 수 있다. 예를 들어, 소거 시간은 프로그램 시간 또는 판독 시간보다 더 길 수 있다. 각각의 채널 제어 회로(248)는 복수의 채널들에 의해 복수의 LUN들(250)에 결합될 수 있다. 그러므로, 소거 명령이 특정 LUN에 대한 특정 채널 제어 회로(248)에 의해 실행되고 있을지라도, 특정 채널 제어 회로(248)는 상이한 LUN(250)에 대한 다른 명령을 동일한 채널 상에 실행할 수 있다.
비휘발성 메모리 제어 회로부(222)는 채널 제어 회로들(248) 각각에 결합되는 채널 요청 큐(channel request queue: CRQ)(242)를 포함할 수 있다. 각각의 채널 제어 회로(248)는 복수의 LUN 명령 큐(LUN command queue: LCQ)들(246)에 결합되는 LUN 요청 큐(LUN request queue: LRQ)(244)를 포함할 수 있다. LRQ(244)는 L-넘버-디프(number-deep) 큐 회로일 수 있으며, L은 채널 제어 회로(248) 당 LUN들(250)의 수와 같다. CRQ(242)는 C-넘버-디프 큐 회로일 수 있으며, C는 예를 들어 x*(복수의 채널 제어 회로들(248))와 같으며, x는 전체 수, 예를 들어 4이다. 예를 들어, 비휘발성 메모리 제어 회로부(222)는 채널 당 16 LUN들을 갖는 32 채널들, 채널들 사이에 공유되는 명령 저장을 위해 128 엔트리들까지 저장하도록 구성되는 하나의 128-디프 CRQ(242), 특정 채널 상의 LUN들(250) 사이에 16 명령들까지 저장하도록 구성되는 채널 당 하나의 16-디프 LRQ(244), 및 채널 당 2-디프 LCQ(246)를 포함할 수 있으며, LCQ(246)는 선입 선출(first-in-first-out: FIFO) 회로이다. 예를 들어, 2-디프 FIFO는 현재 명령 및 현재 명령에 후속 실행되는 다음 명령을 큐잉하도록 구성될 수 있다. 그러한 실시예들은 1024 엔트리들을 위한 (512 LUN들 * 2-디프 LCQ), 플러스 512 엔트리들를 위한 (채널 당 하나의 16-디프 LRQ * 32 채널들), 플러스 전체 (1024+512+128) = 1664 명령 저장 엔트리들을 위한 (하나의 128-디프 CRQ)를 제공한다. 본 명세서에 설명된 바와 같이, 그러한 명령 파이프라인 구조는 524,288 명령 저장 엔트리들(채널 당 32 LUN들 * 16 채널들 * LUN 당 1024-디프 FIFO = 524,288)과 동일한 성능을 몇 분의 1 크기로 제공할 수 있다.
CRQ(242)는 스위치(220)로부터 명령을 수신하고 명령을 LRQ들(244) 중 하나, 예를 들어 명령이 타겟팅되는 특정 LUN(250)과 연관되는 채널과 연관되는 LRQ(244)에 중계하도록 구성될 수 있다. LRQ(244)는 제 1 복수의 명령들이 LRQ(244)에 의해 수신된 순서로 특정 LUN(250)에 대한 제 1 복수의 명령들을 특정 LUN(250)과 연관되는 LCQ(246)에 중계하도록 구성될 수 있다. 명령 파이프라인은 동일한 LUN(250)에 대한 명령들이 차례로, 예를 들어 LRQ(244)에 의해 수신된 순서로 이동하도록 구조화된다. LRQ(244)는 특정 LUN(250)과 연관되는 LCQ(246)가 풀(full)인 것에 대응하여 특정 LUN(250)에 대한 명령을 큐잉하도록 구성될 수 있고 CRQ(242)는 특정 LRQ(244)가 풀인 것에 대응하여 특정 LRQ(244)에 대한 명령을 큐잉하도록 구성될 수 있다.
LRQ(244)는 상이한 LUN들(250)에 대한 제 2 복수의 명령들을 상이한 LUN들(250)과 연관되는 LCQ들(246)에 상이한 LUN들(250)의 상태에 따른 순서로 중계하도록 구성될 수 있다. 예를 들어, 상이한 LUN들(250)의 상태는 준비/비지 상태일 수 있다. 명령 파이프라인은 상이한 LUN들(250) 사이의 명령들이 순서 외로, 예를 들어 그 당시에 전체 메모리 동작에 효율적인 것에 따라 LRQ(244)에 의해 수신된 순서로부터 이동할 수 있도록 구조화된다. 예를 들어, LRQ(244)는 제 2 LCQ(246)와 연관되는 상이한 LUN(250)의 상태가 비지인 것에 대응하여 제 2 복수의 명령들 중 제 2 명령을 제 2 LCQ(246)에 중계하기 전에 제 2 복수의 명령들 중 제 1 명령을 제 1 LCQ(246)에 중계하도록 구성될 수 있으며, 제 2 복수의 명령들 중 제 1 명령은 제 2 복수의 명령들 중 제 2 명령보다 더 늦게 수신된다. LRQ(244)는 제 2 LCQ(246)와 연관되는 LUN(250)의 상태가 준비인 것에 대응하여 예를 들어 제 2 복수의 명령들 중 제 1 명령을 중계한 다음에 제 2 복수의 명령들 중 제 2 명령을 제 2 LCQ(246)에 중계하도록 구성될 수 있다.
각각의 채널에 대한 개별 비휘발성 메모리 채널 제어 회로들을 포함하는 다수의 실시예들은 각각의 채널 제어 회로(248)에 결합되는 개별 에러 검출 정정 회로부(232), 예를 들어 ECC(error correction code) 회로부 및/또는 하나보다 많은 채널과 함께 사용될 수 있는 다수의 에러 검출/정정 회로들(232)을 포함할 수 있다. 에러 검출/정정 회로부(232)는 당해 기술에서 통상의 기술자에 의해 이해되는 바와 같이, BCH 에러 정정과 같은 에러 정정을 적용하고 LUN들(250)에 저장되는 정보와 연관되는 에러들을 검출하며/하거나 정정하도록 구성될 수 있다. 예를 들어, 에러 검출/정정 회로부는 1080-비트 코드 워드에 비해 29 비트의 에러 정정을 제공할 수 있다. 에러 검출/정정 회로부(232)는 상이한 에러 정정 방식들을 단일 및/또는 멀티 레벨 셀(SLC/MLC) 동작에 제공하도록 구성될 수 있다.
휘발성 메모리 제어 회로부(224)는 스위치(220) 및 휘발성 메모리(212), 예를 들어 다수의 휘발성 메모리 장치들에 결합될 수 있다. 다른 정보 중에서, 다수의 휘발성 메모리 장치들은 도 4에 더 상세히 설명되는 바와 같은 LBA 테이블 및/또는 블록 테이블을 저장할 수 있다.
도 3a는 본 개시의 다수의 실시예들에 따른 호스트 버스 어댑터(HBA)(334)와 직렬 부착(SA) 프로그래밍 컴플라이언트 장치(336) 사이의 전송 계층 인터페이스의 기능 블록도이다. HBA(334)는 도 2에 예시된 HBA(234)와 유사할 수 있다. SA 프로그래밍 컴플라이언트 장치(336)는 도 2에 예시된 SA 프로그래밍 컴플라이언트 장치(236)와 유사할 수 있다. 다수의 실시예들에서, SA 프로그래밍 컴플라이언트 장치(336)는 직렬 고급 기술(SATA) 프로그래밍 컴플라이언트 장치일 수 있다. 다수의 실시예들에서, SA 프로그래밍 컴플라이언트 장치(336)는 직렬 부착 SCSI(SAS) 프로그래밍 컴플라이언트 장치일 수 있다.
SA 프로토콜들은 계층들을 사용하여 개념적으로 정의된다. 낮은 것으로부터 높은 것으로의 순서에서, SATA에 대해, 이들은 물리 계층, 링크 계층, 전송 계층, 및 명령 계층을 포함한다. 낮은 것으로부터 높은 것으로의 순서에서, SAS에 대해, 이들은 물리 계층, PHY 계층, 링크 계층, 포트 계층, 전송 계층, 및 응용 계층을 포함한다. 명령 계층 및/또는 응용 계층 정보는 명령들을 프레임 정보 구조(frame information structure: FIS)들로 분산시킴으로써 전송 계층 상에 전달될 수 있다. 어떤 이전 접근법들에 따르면, FIS들은 프리미티브(primitive)들을 사용하여 링크 계층 상에 전달되었다. 프리미티브들은 코드워드들을 사용하여 물리 계층 상에 전달되었으며, 코드워드들은 8b10b 인코딩을 사용하여 SATA 또는 SAS 케이블 상에 송신되었다. SATA 또는 SAS 케이블 상의 통신은 송신(Tx) 및 수신(Rx)으로서 호스트의 관점에서 참조되는 2개의 차별적인 와이어 쌍으로 구성되었다. 이 와이어들은 명령들 또는 정보를 송신할 수 있었으며, 제어를 위해 조정되었다. 이 방식의 하나의 제한은 통신이 케이블 상에서 조정되면, 이것이 발생하는 유일한 통신이라는 것이다. 즉, SATA 또는 SAS는 단일 FIS을 주어진 시간에 단지 송신할 수 있다.
HBA(334) - SA 프로그래밍 컴플라이언트 장치(336) 인터페이스가 전적으로 컨트롤러 내에 있으면, 예를 들어 도 2에 예시된 고체 상태 메모리 시스템 컨트롤러(208)의 경우에서와 같이, 정보 흐름은 케이블 연결 SA 물리 계층의 제약들에서 자유롭다. 본 개시의 다수의 실시예들은 명령 계층(352) 및 전송 계층(354)에 의해 지원되는 FIS들 및 명령들의 사용을 보존하면서 물리 및 링크 계층들의 사용을 포기한다. 동시성은 4개의 세트 입력/출력들, 예를 들어 명령(Cmd), 응답(Rsp), 기록 데이터(write data)(WrData), 및 판독 데이터(read data)(RdData)로 물리 통신을 정의함으로써 달성될 수 있다. 따라서, 기능 특정 상호연결을 이용함으로써, 충돌들은 명령들, 응답들, 및 정보 전달 사이에서 더 길게 존재하지 않는다. 그들은 파이프라인되고 동시에 동작될 수 있다. 즉, 기능 특정 상호연결은 HBA(334)와 SA 프로그래밍 컴플라이언트 장치(336) 사이에서 명령, 응답, 및 정보를 동시에 전송하도록 구성될 수 있다. 기능 특정 상호연결은 SA 프로그래밍 컴플라이언트 장치(336) 상의 Cmd 입력에 결합되는 HBA(334) 상의 Cmd 출력, HBA(334) 상의 Rsp 입력에 결합되는 SA 프로그래밍 컴플라이언트 장치(336) 상의 Rsp 출력, SA 프로그래밍 컴플라이언트 장치(336) 상의 WrData 입력에 결합되는 HBA(334) 상의 WrData 출력, 및 HBA(334) 상의 RdData 입력에 결합되는 SA 프로그래밍 컴플라이언트 장치(336) 상의 RdData 출력을 포함할 수 있다. 다수의 실시예들에서, Cmd, Rsp, WrData, 및 RdData 입력/출력 쌍 각각은 단방향성이고 8b10b 인코딩도 프리미티브들로 이용할 수 없다.
기능 특정 상호연결은 다른 것들 중에서, 제 1 명령 프로토콜, 예를 들어 NCQ(native command queuing) 및/또는 TCQ(tagged command queuing)에 대응하여 명령 인터페이스(HBA(334) 상의 Cmd 출력 및 SA 프로그래밍 컴플라이언트 장치(336) 상의 Cmd 입력), 응답 인터페이스(HBA(334) 상의 Rsp 입력 및 SA 프로그래밍 컴플라이언트 장치(336) 상의 Rsp 출력), 및 정보 인터페이스(HBA(334) 상의 WrData 출력 및 SA 프로그래밍 컴플라이언트 장치(336) 상의 WrData 입력 및/또는 HBA(334) 상의 RdData 입력 및 SA 프로그래밍 컴플라이언트 장치(336) 상의 RdData 출력)을 동시에 동작시키도록 구성될 수 있다. 기능 특정 상호연결은 다른 것들 중에서, 제 2 명령 프로토콜, 예를 들어 NonData, PIO(programmed input/output), 및/또는 직접 메모리 액세스(DMA)에 대응하여 명령 인터페이스, 응답 인터페이스, 및 정보 인터페이스를 극소로(atomically) 동작시키도록 구성될 수 있다.
명령 인터페이스는 HD(host-device) FIS들을 HBA(334)로부터 SA 프로그래밍 컴플라이언트 장치(336)로 전달하기 위해 사용될 수 있다. HBA(334) 상의 WrData 출력은 정보를 SA 프로그래밍 컴플라이언트 장치(336) 상의 WrData 입력에 전달하기 위해 사용될 수 있다. SA 프로그래밍 컴플라이언트 장치(336) 상의 RdData 출력은 정보를 HBA(334) 상의 RdData 입력에 전달하기 위해 사용될 수 있다. 응답 인터페이스는 정보 전달, 예를 들어 PIOSetups, DMAActivates, DMASetups 등을 사용하여 정보 전달을 한정하고(qualify), 종료들, 예를 들어 DH(device-host) 및/또는 SDB(set device bits) 등을 전달하기 위해 사용될 수 있다. 정보 전달을 한정하는 것은 정보가 전달되는 순서를 정의하는 것을 포함할 수 있다. 버퍼링의 사용은 대응하는 응답 FIS 전에 정보의 이동이 개시되는 것을 허용할 수 있다.
도 3b는 본 개시의 다수의 실시예들에 따른 HBA(334) 및 SA 프로그래밍 컴플라이언트 장치(336)의 기능 블록도이다. HBA(334)는 도 3a에 예시되고, 더 상세히 도시된 HBA(234)와 유사할 수 있다. SA 프로그래밍 컴플라이언트 장치(336)는 도 3a에 예시되고, 더 상세히 도시된 SA 프로그래밍 컴플라이언트 장치(236)와 유사할 수 있다.
HBA(334)는 Cmd 출력을 SA 프로그래밍 컴플라이언트 장치(336)에 제공하는 명령 페처(fetcher)(356)를 포함할 수 있다. HBA(334)는 SA 프로그래밍 컴플라이언트 장치(336)로부터 Rsp 입력을 수신하는 응답 수신기(358)를 포함할 수 있다. HBA(334)는 WrData 출력을 SA 프로그래밍 컴플라이언트 장치(336)에 제공하는 다운스트림 DMA 장치(360)를 포함할 수 있다. HBA(334)는 SA 프로그래밍 컴플라이언트 장치(336)로부터 RdData 입력을 수신하는 업스트림 DMA 장치(362)를 포함할 수 있다. Cmd 페처(356), Rsp 수신기(358), 다운스트림 DMA(360), 및 업스트림 DMA(362) 각각은 서로 독립적으로 동작할 수 있는 하드웨어 구성요소들일 수 있지만, 다수의 실시예들에서, AHCI 프로토콜이 집행될 수 있도록 동작을 HBA FSM(372), 예를 들어 고급 호스트 컨트롤러 인터페이스(AHCI) 상태 기계와 동기시킬 수 있다.
다운스트림 DMA 장치(360) 및 Cmd 페처(356)는 다운스트림 기록들 및/또는 업스트림 판독들을 위한 버스 인터페이스(I/F)(364)에 결합될 수 있다. 버스 I/F(364)는 Cmd 페처(356)로부터 요청들을 수신하고, 요청들을 PCIe I/F, 예를 들어 도 2에 예시된 PCIe 회로(230)를 갖는 인터페이스에 전달하며, 적절할 때 응답들을 Cmd 페처(356)에 리턴하도록 구성될 수 있다. 버스 I/F(364)는 PCIe I/F로부터 정보를 수신하고 요청들, 예를 들어 기록 정보 페치들을 그것에 송신하도록 구성될 수도 있다. 다운스트림 DMA 장치(360)는 적절한 버퍼링이 기록 정보를 수신하기 위해 존재할 때 다수의 PCIe 판독 요청들을 버스 I/F(364)를 통해 파이프라인하도록 구성될 수 있다. 버스 I/F(364)를 통해 PCIe I/F에 송신되는 각각의 요청은 정보를 PCIe I/F로부터 각각의 기록 버퍼로 전송하는 회전 버퍼 태그의 할당을 야기할 수 있다. 그 다음, 정보는 SA 프로그래밍 컴플라이언트 장치(336)에 송신되는 회전 방식으로 기록 버퍼들로부터 제거될 수 있다. Rsp 수신기(358) 및 업스트림 DMA 장치(362)는 다운스트림 판독들 및/또는 업스트림 기록들을 위한 버스 I/F(366)에 결합될 수 있다. 버스 I/F(366)는 정보 및/또는 요청들을 PCIe I/F를 통해 송신하도록 구성될 수 있다.
HBA(334) 아키텍처는 단일 AHCI 포트를 호스트 장치 드라이버 소프트웨어에 제공할 수 있지만, 포트 내의 명령 슬롯들의 수를 예를 들어 256으로 확장할 수 있다. 사유 호스트 장치 드라이버들은 제어 레지스터들(370), 예를 들어 8개의 32-비트 명령 이슈 레지스터(command-issue register)들에 의해 슬롯들에 액세스할 수 있다. 제어 레지스터들(370)은 기록 제어 정보의 입력 및 판독 제어 정보의 출력을 위한 제어 인터페이스들(368)을 통해 PCIe I/F에 연결될 수 있다. 다수의 실시예들에서, Cmd 페처(356)는 명령들이 이슈되는 순서로 명령들을 검색하고 SA 프로그래밍 컴플라이언트 장치(336)에 전송할 수 있다. 다수의 명령들, 예를 들어 32 명령들은 제어 레지스터들(370) 내에 동시에 수신되고 cmd 페처(356)를 위해 인큐잉(enqueue)될 수 있다.
다수의 명령 슬롯들은 명령 슬롯 그룹들로 그룹화되고 MSI(message signaled interrupt), 예를 들어 MSI-X, 그것에 할당된 벡터를 가질 수 있다. 그러한 실시예들은 다수의 포트들의 명령들에 대한 32b AHCI 레지스터들을 포함하는 어떤 이전 접근법들에 비해 유익할 수 있다. 본 개시의 다수의 실시예들은 명령들에 대한 256b 레지스터들을 갖는 하나의 포트를 포함하며, 이는 인터럽트 수행이 호스트, 예를 들어 도 1에 예시된 호스트(102)에서 최적화될 수 있다는 가능성을 개선하기 위해서와 같이, MSI 벡터들을 갖는 명령 그룹화를 유리하게 할 수 있다.
HBA(334)는 NCQ 판독들이 인터리브 방식으로 리턴되도록 컨텍스트 어레이들을 사용할 수 있다. 특정 판독 명령 내의 정보는 차례로 처리되지만, 다수의 중요한 판독 명령들의 부분들은 서로 인터리브될 수 있다. 판독 컨텍스트가 SA 프로그래밍 컴플라이언트 장치(336)에 의해 개시될 때, HBA(334)는 컨텍스트 어레이들로부터 판독 명령의 현재 상태의 레코드를 검색하고 그것이 마지막 중단된 지점으로부터 계속될 수 있다. 판독 컨텍스트가 완료될 때, HBA(334)는 갱신된 명령 진행 값들을 컨텍스트 어레이들에 저장할 수 있다. 컨텍스트 어레이 위치는 각각 가능한 중요한 판독 명령, 예를 들어 256 중요한 판독 명령들을 위해 존재할 수 있다. 유사한 컨텍스트 어레이는 기록들에 사용될 수 있다.
SA 프로그래밍 컴플라이언트 장치(336)는 HBA(334), 예를 들어 HBA(334)의 명령 페처(356)로부터 Cmd 입력을 수신하는 명령 FSM(finite state machine)(374)을 포함할 수 있다. SA 프로그래밍 컴플라이언트 장치(336)는 Rsp 출력을 HBA(334), 예를 들어 HBA(334)의 응답 수신기(358)에 제공하는 DH ARB(device-host arbiter)(376)를 포함할 수 있다. SA 프로그래밍 컴플라이언트 장치(336)는 HBA(334), 예를 들어 HBA(334)의 다운스트림 DMA(360)로부터 WrData 입력을 수신하는 기록 FSM(378)을 포함할 수 있다. SA 프로그래밍 컴플라이언트 장치(336)는 RdData 출력을 HBA(334), 예를 들어 HBA(334)의 업스트림 DMA(362)에 제공하는 판독 FSM(380)을 포함할 수 있다. Wr FSM(378)은 출력을 메모리에 제공할 수 있고, Rd FSM(380)은 메모리로부터 입력을 예를 들어 도 2에 예시된 호스트 메모리 변환 회로부(216)를 통해 제공할 수 있다.
DH ARB(376)는 예를 들어 DH들, SDB들 등의 통신을 위해 Cmd FSM(374)로부터 입력을 가질 수 있다. DH ARB(376)는 예를 들어 기록 DMASetups를 위해 Wr FSM(378)으로부터 입력을 포함할 수 있다. DH ARB(376)는 예를 들어 판독 DMASetups를 위해 Rd FSM(380)으로부터 입력을 포함할 수 있다. DH ARB(376)는 정보 전달의 순서를 한정하고 Cmd FSM(374), Wr FSM(378), 및 Rd FSM(380)으로부터의 입력에 기초하여 완료들을 HBA(334)에 전달하도록 구성될 수 있다. Wr FSM(378)은 DH ARB(376)가 기록 정보 전달의 순서를 한정하기 전에 기록 정보를 버퍼링하도록 구성되는 기록 버퍼를 포함할 수 있다. Rd FSM(380)은 DH ARB(376)가 판독 정보 전달의 순서를 한정하기 전에 판독 정보를 버퍼링하도록 구성되는 판독 버퍼를 포함할 수 있다.
다수의 실시예들에서, Cmd FSM(374)은 디폴트에 의해 동시에 동작하도록 구성될 수 있다. Cmd FSM(374)은 PIO 또는 DMA와 같은 단일 컨텍스트 명령 프로토콜의 검출에 대응하여 예를 들어 "CurrencyDisabled" 모드에서 극소로 동작하도록 구성될 수 있다. 극소로 동작할 때, Cmd FSM(374)은 2개의 "PassControl" 신호들 중 하나를 어서트하도록 구성될 수 있으며, 하나는 Wr FSM(378)에 대한 것이고 하나는 Rd FSM(380)에 대한 것이다. 그 다음에, Cmd FSM(374)은 리셋 명령이 수신되거나 "RetrunControl" 신호가 Wr FSM(378) 또는 Rd FSM(380)로부터 어서트될 때까지 "WaitForCtl" 상태에 진입할 수 있다. 검출된 프로토콜이 NonData이면, 이 때 어느 쪽의 PassControl 신호도 어서트되지 않는다. Cmd FSM(374)은 명령 자체를 서비스하고 완료 시에 아이들(idle)로 리턴될 수 있다. 로직은 명령 태그들이 퇴거된 것으로 준비된 것을 표시하면, Cmd FSM은 적절한 SDB FIS를 발생시키고 아이들로 리턴될 수 있다.
다수의 실시예들에서, Wr FSM(378) 및 Rd FSM(380)은 디폴트에 의해 동시에 동작하도록 구성될 수 있다. Wr FSM(378) 및 Rd FSM(380)은 Cmd FSM(374)으로부터의 PassControl 신호의 수신 및/또는 PIO 또는 DMA와 같은 단일 컨텍스트 명령 프로토콜의 검출 시에 극소로 동작하도록 구성될 수 있다. Wr FSM(378) 및/또는 Rd FSM(380)은 명령 카운트가 완료되거나 에러 조건이 충족될 때까지 SA 프로토콜, 예를 들어 SATA 프로토콜 또는 SAS 프로토콜에 이어 극소로 동작할 수 있으며, 그 경우에 각각의 FSM은 그의 RtnCtl 신호를 어서트할 수 있으며, 이는 그의 WaitForCtl 상태로부터 Cmd FSM(374)을 해제할 수 있다. 역으로, 동시 동작은 각각의 FSM이 독립적으로 정보를 이동시키는 것을 허용한다.
도 4는 본 개시의 다수의 실시예들에 따른 블록 관리 장치(440)의 기능 블록도를 예시한다. 블록 관리 장치(440)는 도 2에 예시된 블록 관리 장치(240)와 유사할 수 있고 메모리 관리 회로부에 포함될 수 있다. 블록 관리 장치(440)는 도 2에 예시된 휘발성 메모리(212)와 유사할 수 있는 휘발성 메모리(412), 예를 들어 DRAM과 통신할 수 있다. 따라서, 예를 들어, 블록 관리 장치(440)는 스위치 및 휘발성 메모리 제어 회로부를 통해 휘발성 메모리(412)와 통신할 수 있다. 휘발성 메모리(412)는 다른 정보 중에서, LBA(logical block address) 테이블(482), 블록 테이블(484), 및/또는 트랜잭션 로그(transaction log)(486)를 저장할 수 있다.
LBA 테이블(482)은 페이지들의 물리 페이지 어드레스를 LUN들, 예를 들어 도 2에 예시된 LUN들(250)에 저장하고, 대응하는 논리 어드레스들을 포함할 수 있다. 즉, LBA 테이블(482)은 논리 대 물리 및/또는 물리 대 논리 어드레스 변환들을 저장할 수 있다. 따라서, LBA 테이블(482)은 대응하는 정보가 저장될 수 있는 논리 블록 어드레스들에 대응하는 물리 페이지 어드레스들을 룩업(lookup)하기 위해 사용될 수 있다. LBA 테이블(482)은 연관된 SA 명령에 포함되는 LBA에 의해 인덱싱될 수 있다. 블록 테이블(484)은 소거가능 블록들을 위한 정보를 다수의 LUN들에 저장할 수 있다. 블록 테이블(484)에 저장되는 정보는 유효 페이지 정보, 소거 카운트, 및 다른 헬스(health) 및/또는 상태 정보를 포함할 수 있다. 블록 테이블(484)로부터 액세스되는 정보는 물리 블록 어드레스에 의해 인덱싱될 수 있다. 트랜잭션 로그(486)는 LUN들에서 발생하는 기록들에 관한 정보를 레코딩하기 위해 사용될 수 있다. 다수의 실시예들에서, 트랜잭션 로그(486)는 LUN들에 대한 기록들에 의해 동시에 갱신될 수 있다. 트랜잭션 로그(486)는 예를 들어 갑작스러운 전력 손실 또는 비휘발성 메모리에 대한 LBA 테이블(482)의 갱신들 사이의 다른 에러들로 인해 손실될 수 있는 LBA 테이블(482)의 일부들의 재생성을 용이하게 하기 위해, LBA 테이블(482)이 비휘발성 메모리에 저장된 마지막 시간 이후로 발생했던 LUN들에 기록들에 관한 정보를 포함할 수 있다.
블록 관리 장치(440) 내에 도시된 객체들 중 일부는 블록 관리 장치(440)에 의해 제공되는 기능성을 나타낸다. LBA 테이블 룩업 기능(490)은 휘발성 메모리(412) 내의 LBA 테이블(482)을 참조하여 논리 대 물리 어드레스 변환을 수행할 수 있다. LBA 테이블 룩업 기능(490)은 논리 어드레스와 연관되는 정보가 갱신될 때 새로운 물리 어드레스가 논리 어드레스에 대응하는 상태에서 LBA 테이블(482)을 갱신할 수 있다. 블록 테이블 룩업 기능(491)은 예를 들어 휘발성 메모리(412) 내의 블록 테이블(484)을 참조하여 회수 및/또는 가비지 컬렉션과 같은 웨어 레벨링을 위한 후보들을 결정할 수 있다. 회수는 블록이 소거되기 전에 모든 유효 페이지들을 소거되는 블록으로부터 새로운 위치들로 이동시키는 것을 포함할 수 있다. 블록 회수 기능(493)은 휘발성 메모리(412) 내의 트랜잭션 로그(486)를 참조할 수 있다.
메모리 관리 회로부, 예를 들어 블록 관리 장치(440)의 로컬 메모리에 저장되는 블록 어레이(492)는 예를 들어 LBA 테이블 룩업 기능(490) 및/또는 블록 테이블 룩업 기능(491)에 의해 블록 어레이(492)에 참조되는 바와 같이, 회수 페이지 후보들(494), 소거 블록 후보들(495), 회수 기록 블록 후보들(496), 및/또는 호스트 기록 블록 후보들(497)을 추적할 수 있다. 그러한 후보들은 그것이 휘발성 메모리 속도로 판독되거나 휘발성 메모리(412), 예를 들어 DRAM에 기록될 때 각 블록의 헬스 및/또는 상태 정보를 분석하기 위해 전용 하드웨어를 사용하여 시스템 내의 각각의 LUN에 대해 선택될 수 있다. 각각의 LUN에 대한 현재 후보들은 블록 어레이(492)에 저장될 수 있다. 블록 테이블(484)이 액세스될 때마다, 파이프라인 구조는 블록 어레이(492)로부터 현재 최상의 후보를 검색하고 그것을 새로운 블록 테이블(484) 액세스와 비교할 수 있다. 새로운 블록 테이블(484) 액세스가 예를 들어 기록, 소거, 또는 에러 이벤트의 결과로서, 블록 어레이(492)에 저장되는 현재 후보보다 더 좋은 후보를 나타내면, 이 때 새로운 블록은 그 후보를 블록 어레이(492)에서 교체할 수 있다. 후보 선택은 휘발성 메모리(412)에 대한 액세스를 지연시키는 것 없이 발생할 수 있으며, 휘발성 메모리는 프로세스가 파이프라인 구조를 사용하여 휘발성 메모리(412) 속도로 진행하는 것을 허용한다.
블록 관리 장치(440)는 복수의 블록들 각각에 대한 헬스 및 상태 정보를 휘발성 메모리(412) 내의 블록 테이블(484)에 저장하도록 구성될 수 있다. 블록 관리 장치(440)는 후보 블록 테이블, 예를 들어 회수 페이지 후보들(494), 소거 블록 후보들(495), 회수 기록 블록 후보들(496), 및/또는 호스트 기록 블록 후보들(497)을 포함하는 블록 어레이(492)를 로컬 메모리에 저장하도록 구성될 수 있다. 후보 블록 테이블은 특정 동작에 대한 다수의 기준에 기초하여, 특정 동작, 예를 들어 호스트 기록, 회수 판독, 회수 기록, 및/또는 소거에 대한 후보 블록을 식별할 수 있다. 블록 관리 장치(440)는 예를 들어 특정 블록에 대한 기록, 소거, 또는 에러 이벤트에 대응하여, 블록 테이블(484) 내의 특정 블록에 대한 헬스 및 상태 정보를 갱신하도록 구성될 수 있다. 블록 관리 장치(440)는 특정 블록에 대한 갱신된 헬스 및 상태 정보를 다수의 기준에 따른 후보 블록과 비교하도록 구성될 수 있다. 블록 관리 장치(440)는 예를 들어 특정 블록에 대한 헬스 및 상태 정보가 휘발성 메모리(412)에서 갱신되는 동일한 클록 사이클로, 특정 블록이 다수의 기준을 더 좋게 충족시킨다는 것을 비교가 표시하는 것에 대응하여 후보 블록 테이블을 갱신해서 특정 블록을 적어도 부분적으로 식별하도록 구성될 수 있다.
상술한 후보 선택 프로세스는 예를 들어 기록, 소거, 또는 에러 이벤트의 결과로서 새로운 블록 테이블(484)에 의존하지 않는 테이블 워킹 프로세스(table walking process)에 보충될 수 있다. 테이블 워킹 프로세스는 블록 관리 장치(440) 내의 블록 어레이(492)에 국부적으로 저장되지 않은 블록 정보의 이력을 복구할 수 있다. 테이블 워킹은 기록, 소거, 또는 에러 이벤트의 결과로서 블록 테이블(484) 액세스들에 대한 더 느린 배경 프로세스일 수 있다. 전체 블록 테이블(484)이 워킹되었다면, 테이블 워킹 프로세스는 예를 들어 휘발성 메모리(412) 전력 소모를 감소시키기 위해 중단될 수 있다. 일부 경우들에서, 새로운 블록 테이블(484) 액세스는 테이블 워킹 프로세스를 재개시할 수 있다. 따라서, 블록 관리 장치(440)는 휘발성 메모리(412) 내의 블록 테이블(484)에서의 복수의 블록들 각각에 대한 갱신된 헬스 및 상태 정보를 복수의 블록들 중 어느 하나에 대한 기록, 소거, 또는 에러 이벤트와 관계없는 다수의 기준에 따른 후보 블록과 비교하도록 구성될 수 있다. 블록들의 비교는 복수의 블록들 각각이 비교된 후에 중단될 수 있다.
본 개시의 다수의 실시예들에서, 호스트 동작들은 LBA 테이블(482)을 갱신하기 위해 간섭 지점의 사용에 따른 회수 프로세스 동안 지연되지 않는다. 회수 프로세스 동안, 예를 들어 회수 페이지 후보들(494)로부터의 회수 페이지 후보는 제 1 위치로부터 판독되고 제 2 위치에 기록된다. 이 판독 및 기록 동안, 호스트는 새로운 정보를 회수 동안 현재 처리되는 LBA에 기록하고 LBA 테이블(482)을 새로운 물리 어드레스에 의해 갱신할 수 있었다. 회수가 페이지 판독 및 기록을 종료했을 때, LBA 테이블(482)은 회수 하의 LBA에 대한 LBA 테이블(482) 엔트리가 제 1 위치로부터 판독되는 정보와 동일한 물리 어드레스를 갖기만 하면, 예를 들어 호스트가 LBA 테이블(482) 내의 엔트리를 갱신하지 않았다면 새로운 물리 어드레스에 의해 갱신될 수 있다. 회수 판독에 대응하는 페이지는 무효, 예를 들어 스테일(stale) 정보를 블록 테이블(484)에 저장하는 것으로 표시될 수 있다. 물리 어드레스가 회수 판독에 대응하는 어드레스와 상이하면, 그것은 호스트가 갱신을 이룬 것을 표시하고, LBA 테이블은 회수 기록 당 새로운 물리 어드레스에 의해 갱신되지 않을 것이다. 회수 기록은 회수 기록에 대응하는 물리 위치가 무효 정보를 저장하는 것을 표시하기 위해 블록 테이블(484)에서 무효화될 수 있다.
메모리 관리 회로부, 예를 들어 블록 관리 장치(440)는 정보가 특정 블록에 관한 회수 동작 동안 특정 블록으로부터 판독되기 전에 블록 테이블(484)로부터 특정 블록에 대한 논리 어드레스에 대응하는 제 1 물리 어드레스를 검색하도록 구성될 수 있다. 블록 관리 장치(440)는 정보가 회수 동작 동안 상이한 블록에 기록된 후에 LBA 테이블(482)로부터 논리 어드레스에 대응하는 제 2 물리 어드레스를 검색하도록 구성될 수 있다. 블록 관리 장치(440)는 제 2 물리 어드레스가 제 1 물리 어드레스와 같은 것에 대응하여 적어도 부분적으로 LBA 테이블(482)을 상이한 블록에 대응하는 제 3 물리 어드레스에 의해 갱신하도록 구성될 수 있다. 블록 관리 장치(440)는 제 2 물리 어드레스가 제 1 물리 어드레스와 상이한 것에 대응하여 적어도 부분적으로 회수 동작을 무효화하도록 구성될 수 있다.
블록 관리 장치(440)는 호스트 명령 큐(498)와 메모리 명령 큐(499) 사이에 결합될 수 있다. 호스트 명령 큐(498)는 도 1에 예시된 호스트(102)와 같은 호스트, 도 2에 예시된 바와 같은 SA 대 메모리 회로부(238), 및/또는 도 2에 예시된 호스트 인터페이스(214)의 다수의 구성요소들과 연관될 수 있다. 메모리 명령 큐(499)는 도 2에 예시된 CRQ(242), LRQ(244), 및 LCQ들(246) 중 1개 이상, 및/또는 다른 구성요소들과 유사할 수 있다.
메모리 관리 회로부, 예를 들어 블록 관리 장치(440)는 스위치, 예를 들어 도 2에 예시된 스위치(220)를 통해 비휘발성 메모리 제어 회로부, 예를 들어 도 2에 예시된 비휘발성 메모리 제어 회로부(222)에 결합될 수 있다. 메모리 관리 회로부는 호스트 버스의 정보 폭 및 호스트 버스의 프로토콜에 기초하여 호스트 기록들에 대한 기록 블록 클러스터를 할당하도록 구성될 수 있다. 기록 블록 클러스터는 다수의 LUN들(250)로부터 다수의 블록들을 포함할 수 있다. 호스트 버스는 호스트, 예를 들어 도 1에 예시된 호스트(102)의 일부일 수 있다. 예를 들어, 호스트 버스는 다른 것들 중에서 x1, x2, x4, x8, x16, x32 등의 버스 폭들, 및 PCIe 세대들 1-3의 프로토콜들을 갖는 PCIe 버스일 수 있다. 기록 블록 클러스터는 비휘발성 메모리 제어 회로부 내의 복수의 채널 제어 회로들에 결합되는 LUN들 모두보다 더 적은 것으로부터 하나의 블록을 포함할 수 있다. 다수의 실시예들에서, 메모리 관리 회로부는 호스트 버스의 정보 폭 및 호스트 버스의 프로토콜에 따라 최대 호스트 버스 대역폭을 지원하기 위해 사용되는 최소 수의 LUN들에 기록 블록 클러스터의 크기를 제한하도록 구성될 수 있다.
메모리 시스템 컨트롤러의 기록 대역폭은 호스트 버스, 시스템 내의 다수의 메모리 채널들, 및 채널 당 다수의 LUN들에 의해 지원되는 최대 대역폭의 함수일 수 있다. 호스트 버스보다 더 많은 LUN들을 할당하는 것은 회수 동작들에 달리 사용될 수 있는 자원들의 낭비일 수 있다. 따라서, 본 개시의 다수의 실시예들에 따르면, 호스트 기록 블록 클러스터 크기는 메모리 시스템 내의 LUN들의 전체 수보다 더 적은 어떤 것에 제한될 수 있다.
LUN들로부터의 블록들의 나머지, 예를 들어 기록 블록 클러스터에 할당되지 않는 것들은 회수 동작들 동안 할당될 수 있다. 메모리 관리 회로부는 회수 동작들로부터 다수의 할당된 LUN들을 일시적으로 반납하도록 구성될 수 있다. 기록 블록 클러스터는 기록 블록 클러스터의 블록들이 특정 시퀀스의 LUN들에 기록되도록 호스트 기록들을 위해 할당될 수 있다. 회수 대역폭은 가까운 장래에 기록들에 사용될 수 있는 회수 동작들을 LUN들에 보류함으로써 메모리 시스템 컨트롤러의 기록 대역폭을 개선하기 위해 제한될 수 있다. 할당된 LUN들 중 적어도 하나는 LUN가 호스트 기록 동안 특정 시퀀스의 LUN들 다음에 있는 임계 수의 LUN들 내에 있는 것을 특정 시퀀스의 LUN들이 표시하는 것에 대응하여 적어도 부분적으로 회수 동작들로부터 반납될 수 있다. 임계 수는 회수 판독 동작, 회수 기록 동작, 및 회수 소거 동작 각각에 대해 상이할 수 있다. 임계 수는 어떤 회수 동작들이 기록 동작 전에 발생할 수 없는 다수의 LUN들인 "배제 영역"을 나타낼 수 있다.
채널 당 다수의 LUN들을 사용하는 것은 예를 들어 도 2의 CRQ(242), LRQ(244), 및 LCQ들(246)에 대해 설명된 바와 같이, 특정 채널이 취급할 수 있는 것보다 더 많은 명령들이 이슈되는 상황들을 초래하여 명령들이 메모리 채널에 대해 큐잉되는 것을 초래할 수 있다. 메모리 관리 회로부는 특정 LUN과 연관되는 큐들의 수가 풀인 임계값 내에 있는 것에 대응하여 적어도 부분적으로 회수 동작들에 대해 이슈되는 다수의 명령들을 특정 LUN에 제한하도록 구성될 수 있다. 채널 당 최대 수의 명령들은 원하는 전력 포락선에서 벗어나지 않도록 제한될 수도 있다. 회수 동작들에 대해 이슈되는 다수의 명령들은 메모리 시스템 컨트롤러에 의해 사용되는 전력의 양이 전력의 임계량을 초과하는 것에 대응하여 적어도 부분적으로 제한될 수 있다. 채널 당 최대 수의 명령들은 예를 들어 동일한 채널 및/또는 LUN에 대한 백-투-백(back-to-back) 명령들이 효율적인 동작을 위해 충분히 이격되는 것을 보장하는데 도움이 되기 위해 제한될 수도 있다. 메모리 관리 회로부는 회수 동작들 동안 제 1 명령 및 제 2 명령의 발행 사이에서 적어도 최소 시간, 예를 들어 클록들의 수를 집행하도록 구성될 수 있다. 최소 시간은 예를 들어 소거된 블록들의 수가 감소할수록 회수 대역폭이 증가할 수 있기 때문에, LUN들 내의 소거된 블록들의 전체 수에 기초할 수 있다.
최대 호스트 기록 대역폭은 이용가능한 소거된 블록들의 적절한 공급이 있으면 단기간에 유지될 수 있다. 소거된 블록들의 공급이 거의 소모된다면, 기록 대역폭은 증가된 회수 동작들로 인해 감소할 수 있다. 메모리 관리 회로부는 예를 들어 블록 테이블(484)을 참조하여 LUN들의 범위에 대한 소거된 블록들의 수를 추적하도록 구성될 수 있다. 메모리 관리 회로부는 특정 LUN 내의 소거된 블록들의 수가 회수 임계 수를 초과하며, 예를 들어 임계 수를 하회하는 것에 대응하여 적어도 부분적으로 특정 LUN에 대한 회수 동작들을 시작하도록 구성될 수 있다. 메모리 관리 회로부는 특정 LUN 내의 소거된 블록들의 수가 회수 임계 수를 초과하며, 예를 들어 임계 수를 넘는 것에 대응하여 적어도 부분적으로 특정 LUN에 대한 회수 동작들을 보류하도록 구성될 수 있다. 호스트 기록들은 특정 LUN 내의 소거된 블록들의 수가 호스트 기록 임계 수를 하회하는 것에 대응하여 적어도 부분적으로 특정 LUN에 대해 보류될 수 있다. 메모리 관리 회로부는 특정 LUN 내의 소거된 블록들의 수가 기록 임계 수를 초과하며, 예를 들어 임계 수를 하회하는 것에 대응하여 적어도 부분적으로 특정 LUN에 대한 기록들을 보류하도록 구성될 수 있다. 메모리 관리 회로부는 특정 LUN 내의 소거된 블록들의 수가 회수 임계 수를 초과하며, 예를 들어 임계 수를 넘는 것에 대응하여 적어도 부분적으로 특정 LUN에 대한 기록들을 재시작하도록 구성될 수 있다. 그러한 실시예들은 회수 동작들과 기록 동작들 사이의 평형, 예를 들어 동적 로드 밸런싱을 제공하는데 도움이 될 수 있다.
일부 메모리 동작들은 긴 지속 기간들을 갖는다. 채널 제어 회로들, 예를 들어 도 2에 예시된 채널 제어 회로들(248)은 상태 판독을 LUN들에 이슈하도록, 예를 들어 특정 메모리 동작이 완료된 때를 결정하도록 구성되는 폴링(polling) 로직을 포함할 수 있다. 일부 경우들에서, 그러한 폴링은 LUN이 폴링되는 것과 동일한 채널을 사용하여 다른 명령들과 인터페이스할 수 있다. 본 개시의 다수의 실시예들에 따르면, 폴링 로직은 LUN에 이슈되는 명령에 의해 표시되는 동작의 타입에 따라 특정 시간 동안 아이들될 수 있다. 아이들 시간은 동작들, 예를 들어 다른 것들 중에서 판독, 기록, 및/또는 소거 동작과 같은 특정 동작이 취하는 것으로 예상되는 시간에 따라 특정 동작들에 대해 설정될 수 있다.
결론
본 개시는 메모리 시스템 컨트롤러들을 포함하는 다양한 장치의 예들을 포함한다. 하나의 그러한 메모리 시스템 컨트롤러는 스위치 및 스위치에 결합되는 비휘발성 메모리 제어 회로부를 포함할 수 있다. 비휘발성 메모리 제어 회로부는 논리 유닛들에 결합되는 채널 제어 회로를 포함할 수 있다. 채널 제어 회로부는 소거 명령을 논리 유닛들 중 제 1 논리 유닛에 중계하고 소거 명령이 복수의 논리 유닛들 중 제 1 논리 유닛 상에 실행되고 있는 동안 특정 명령을 스위치로부터 논리 유닛들 중 제 2 논리 유닛으로 중계하도록 구성될 수 있다.
일 요소가 다른 요소 "상에", "에 연결되는" 또는 "와 결합되는"으로 언급될 때, 그것은 직접 다른 요소 상에 있거나, 다른 요소에 연결되거나, 다른 요소와 결합될 수 있거나 개재 요소가 존재할 수 있다는 점이 이해될 것이다. 대조적으로, 일 요소가 다른 요소 "상에 직접", "에 직접 연결되는" 또는 "와 직접 결합되는"으로 언급될 때, 존재하는 개재 요소들 또는 계층들이 없다. 본 명세서에 사용되는 바와 같이, "및/또는"이라는 용어는 다수의 연관 리스트 항목들 중 어느 하나 및 모든 결합들을 포함한다.
본 명세서에 사용되는 바와 같이, "및/또는"이라는 용어는 다수의 연관 항목들 중 어느 하나 및 모든 결합들을 포함한다. 본 명세서에 사용되는 바와 같이, "또는"이라는 용어는, 다르게 언급되지 않으면, 논리 포함적 논리합을 의미한다. 즉, "A 또는 B"는 (A만), (B만), 또는 (A 및 B 둘 다)를 포함할 수 있다. 다시 말하면, "A 또는 B"는 "A 및/또는 B" 또는 "A 및 B 중 1개 이상"을 의미할 수 있다.
제 1, 제 2, 제 3 등이라는 용어들은 다양한 요소들을 설명하기 위해 본 명세서에 사용될 수 있을지라도, 이 요소들은 이 용어들에 의해 제한되지 않아야 한다는 점이 이해될 것이다. 이 용어들은 일 요소와 다른 요소를 구별하기 위해 단지 사용된다. 따라서, 제 1 요소는 본 개시의 교시들로부터 벗어나는 것 없이 제 2 요소로 칭해질 수 있다.
특정 실시예들이 본 명세서에 예시되고 설명되었을지라도, 당해 기술에서 통상의 기술자들은 동일한 결과들을 달성하기 위해 계산되는 배열이 도시된 특정 실시예들에 대체될 수 있다는 점을 이해할 것이다. 본 명세서는 본 개시의 다수의 실시예들의 개조들 또는 변형들을 커버하도록 의도된다. 상기 설명은 예시적 방식으로 이루어지고, 제한적 방식으로 이루어지지 않았다는 점이 이해되어야 한다. 상기 실시예들, 및 본 명세서에 구체적으로 설명되지 않은 다른 실시예들의 결합은 상기 설명을 검토하면 당해 기술에서 통상의 기술자에게 분명할 것이다. 본 개시의 실시예들의 수의 범위는 상기 구조들 및 방법들이 사용되는 다른 적용들을 포함한다. 그러므로, 본 개시의 다수의 실시예들의 범위는 첨부된 청구항들이 권리가 있는 등가물들의 전체 범위와 함께, 첨부된 청구항들을 참조하여 결정되어야 한다.
이전 상세한 설명에서, 일부 특징들은 본 개시를 간소화하기 위해 단일 실시예에서 함께 그룹화된다. 본 개시의 방법은 본 개시의 개시된 실시예들이 각각의 청구항에 분명히 인용되는 더 많은 특징들을 사용해야 한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 오히려, 이하의 청구항들이 반영될 때, 본 발명의 대상은 단일 개시 실시예의 모든 특징들보다 더 적은 것에 있다. 따라서, 이하의 청구항들은 이로써 각각의 청구항이 개별 실시예로서 그 자체에 기초하는 상태에서, 상세한 설명에 통합된다.

Claims (20)

  1. 장치로서,
    상기 장치 내부의 호스트 인터페이스에 결합되는, 상기 장치 내부의 스위치; 및
    상기 스위치에 결합되고, 복수의 논리 유닛들에 결합되는 채널 제어 회로를 포함하는 상기 장치 내부의 비휘발성 메모리 제어 회로부로서, 상기 채널 제어 회로는,
    소거 명령을 상기 복수의 논리 유닛들 중 제 1 논리 유닛에 중계하고; 및
    상기 소거 명령이 상기 복수의 논리 유닛들 중 상기 제 1 논리 유닛 상에 실행되고 있는 동안 특정 명령을 상기 호스트 인터페이스로부터 상기 스위치를 통해 상기 복수의 논리 유닛들 중 제 2 논리 유닛으로 중계하도록 구성되는 상기 비휘발성 메모리 제어 회로부를 포함하는 장치.
  2. 청구항 1에 있어서,
    상기 채널 제어 회로는,
    복수의 논리 유닛 명령 큐(logical unit command queue: LCQ)들; 및
    상기 복수의 LCQ들에 결합되는 논리 유닛 요청 큐(logical unit request queue: LRQ)로서,
    상기 복수의 논리 유닛들 중 특정 논리 유닛에 대한 제 1 복수의 명령들을 상기 제 1 복수의 명령들이 수신된 순서로 상기 복수의 논리 유닛들 중 상기 특정 논리 유닛과 연관되는 상기 복수의 LCQ들 중 하나에 중계하고;
    상기 복수의 논리 유닛들 중 다른 논리 유닛들에 대한 제 2 복수의 명령들을 상기 다른 논리 유닛들의 상태에 따른 순서로 상기 복수의 논리 유닛들 중 상기 다른 논리 유닛들과 연관되는 상기 LCQ들에 중계하도록 구성되는 상기 논리 유닛 요청 큐(LRQ)를 포함하는 장치.
  3. 청구항 2에 있어서,
    상기 비휘발성 메모리 제어 회로부는,
    개별 복수의 논리 유닛들에 각각 결합되는 복수의 채널 제어 회로들; 및
    상기 복수의 채널 제어 회로들에 결합되고, 상기 스위치로부터 명령을 수신하고 상기 명령을 상기 LRQ들 중 하나에 중계하도록 구성되는 채널 요청 큐(channel request queue: CRQ)를 포함하는 장치.
  4. 청구항 2에 있어서,
    상기 LRQ는 상기 소거 명령을 상기 복수의 논리 유닛들 중 상기 제 1 논리 유닛과 연관되는 상기 복수의 LCQ들 중 제 1 LCQ에 중계하고, 상기 특정 명령을 상기 복수의 논리 유닛들 중 상기 제 2 논리 유닛과 연관되는 상기 복수의 LCQ들 중 제 2 LCQ에 중계하도록 구성되는 장치.
  5. 청구항 1 내지 청구항 4 중 어느 한 항에 있어서,
    상기 특정 명령은 판독 명령 및 기록 명령 중 하나인 장치.
  6. 채널 제어 회로를 이용해, 소거 명령을 복수의 논리 유닛들 중 제 1 논리 유닛에 중계하는 단계; 및
    상기 소거 명령이 상기 복수의 논리 유닛들 중 상기 제 1 논리 유닛 상에 실행되고 있는 동안, 상기 채널 제어 회로를 이용해, 특정 명령을 호스트로부터 상기 채널 제어 회로에 결합된 스위치를 통해 상기 복수의 논리 유닛들 중 제 2 논리 유닛에 중계하는 단계를 포함하는 방법.
  7. 청구항 6에 있어서,
    상기 복수의 논리 유닛들 중 특정 논리 유닛에 대한 제 1 복수의 명령들을 상기 제 1 복수의 명령들이 수신된 순서로 상기 복수의 논리 유닛들 중 상기 특정 논리 유닛과 연관되는 복수의 논리 유닛 명령 큐(logical unit command queue: LCQ)들 중 하나에 중계하는 단계; 및
    상기 복수의 논리 유닛들 중 다른 논리 유닛들에 대한 제 2 복수의 명령들을 상기 다른 논리 유닛들의 상태에 따른 순서로 상기 복수의 논리 유닛들 중 상기 다른 논리 유닛들과 연관되는 상기 LCQ들에 중계하는 단계를 포함하는 방법.
  8. 청구항 6 내지 청구항 7 중 어느 한 항에 있어서,
    메모리 관리 회로부로부터 상기 소거 명령을 중계하는 단계를 포함하는 방법.
  9. 청구항 8에 있어서,
    호스트로부터 상기 특정 명령을 수신하는 단계를 포함하는 방법.
  10. 특정 논리 유닛에 대한 제 1 복수의 명령들을 논리 유닛 요청 큐(LRQ)를 통해 상기 제 1 복수의 명령들이 수신된 순서로 상기 특정 논리 유닛과 연관되는 복수의 논리 유닛 명령 큐들(LCQ들) 중 하나에 중계하는 단계; 및
    다른 논리 유닛들에 대한 제 2 복수의 명령들을 상기 LRQ를 통해 상기 다른 논리 유닛들의 상태에 따른 순서로 상기 다른 논리 유닛들과 연관되는 상기 복수의 LCQ들에 중계하는 단계를 포함하는 방법.
  11. 청구항 10에 있어서,
    채널 요청 큐(CRQ)에서 스위치로부터 상기 제 1 복수의 명령들을 수신하고 상기 제 1 복수의 명령들을 상기 LRQ에 중계하는 단계; 및
    상기 CRQ에서 상기 스위치로부터 상기 제 2 복수의 명령들을 수신하고 상기 제 2 복수의 명령들을 상기 LRQ에 중계하는 단계를 포함하는 방법.
  12. 청구항 10 내지 청구항 11 중 어느 한 항에 있어서,
    상기 다른 논리 유닛들의 상태는 준비(ready)/비지(busy) 상태이고,
    상기 방법은,
    제 2 LCQ와 연관되는 상기 다른 논리 유닛의 상태가 비지인 것에 대응하여 상기 제 2 복수의 명령들 중 제 2 명령을 상기 제 2 LCQ에 중계하기 전에 상기 제 2 복수의 명령들 중 제 1 명령을 제 1 LCQ에 중계하는 단계로서, 상기 제 2 복수의 명령들의 상기 제 1 명령은 상기 제 2 복수의 명령의 상기 제 2 명령보다 더 늦게 수신되는 상기 단계;
    상기 연관된 다른 논리 유닛의 상태가 준비인 것에 대응하여 상기 제 2 복수의 명령들의 상기 제 2 명령을 상기 제 2 LCQ에 중계하는 단계를 포함하는 방법.
  13. 스위치; 및
    상기 스위치에 결합되는 비휘발성 메모리 제어 회로부를 포함하며, 상기 비휘발성 메모리 제어 회로부는,
    복수의 채널 제어 회로들로서, 상기 복수의 채널 제어 회로들의 각각이:
    복수의 논리 유닛 명령 큐들(LCQ들); 및
    상기 복수의 LCQ들에 결합되는 논리 유닛 요청 큐(LRQ)로서,
    특정 논리 유닛에 대한 제 1 복수의 명령들을 상기 제 1 복수의 명령들이 수신된 순서로 상기 특정 논리 유닛과 연관되는 상기 복수의 LCQ들 중 하나에 중계하고; 및
    다른 논리 유닛들에 대한 제 2 복수의 명령들을 상기 다른 논리 유닛들의 상태에 따른 순서로 상기 다른 논리 유닛들과 연관되는 상기 LCQ들에 중계하도록 구성되는 상기 논리 유닛 요청 큐(LRQ)를 포함하는, 상기 복수의 채널 제어 회로들; 및
    상기 복수의 채널 제어 회로들에 결합되는 채널 요청 큐(CRQ)로서, 상기 스위치로부터 명령을 수신하고 상기 명령을 상기 LRQ들 중 하나에 중계하도록 구성되는 상기 채널 요청 큐(CRQ)를 포함하는 장치.
  14. 청구항 13에 있어서,
    상기 다른 논리 유닛들의 상기 상태는 상기 다른 논리 유닛들의 준비/비지 상태이고; 및
    상기 LRQ는 제 2 LCQ와 연관되는 상기 다른 논리 유닛의 상기 상태가 비지인 것에 대응하여 상기 제 2 복수의 명령들 중 제 2 명령을 상기 제 2 LCQ에 중계하기 전에 상기 제 2 복수의 명령들 중 제 1 명령을 제 1 LCQ에 중계하도록 구성되고, 상기 제 2 복수의 명령들 중 상기 제 1 명령은 상기 제 2 복수의 명령들 중 상기 제 2 명령보다 더 늦게 수신되는 장치.
  15. 청구항 14에 있어서,
    상기 LRQ는 상기 연관된 다른 논리 유닛의 상기 상태가 준비인 것에 대응하여 상기 제 2 복수의 명령들 중 상기 제 2 명령을 상기 제 2 LCQ에 중계하도록 구성되는 장치.
  16. 청구항 13 내지 청구항 15 중 어느 한 항에 있어서,
    상기 LRQ는 특정 논리 유닛과 연관되는 LCQ가 풀(full)인 것에 대응하여 상기 특정 논리 유닛에 대한 명령을 큐잉(queue)하도록 구성되고; 및
    상기 CRQ는 특정 LRQ가 풀인 것에 대응하여 상기 특정 LRQ에 대한 명령을 큐잉하도록 구성되는 장치.
  17. 청구항 13 내지 청구항 15 중 어느 한 항에 있어서,
    각각의 채널 제어 회로는 오픈 NAND 플래시 인터페이스(Open NAND Flash Interface: ONFI) 컴플라이언트 버스에 의해 복수의 논리 유닛들에 결합되도록 구성되는 장치.
  18. 청구항 13 내지 청구항 15 중 어느 한 항에 있어서,
    상기 복수의 LCQ들 각각은 현재 명령 및 상기 현재 명령에 후속 실행될 다음 명령을 큐잉하도록 구성되는 2-디프(deep) 선입 선출(FIFO) 회로를 포함하고, 및 상기 복수의 LCQ들 각각은 상이한 논리 유닛에 결합되도록 구성되는 장치.
  19. 청구항 13 내지 청구항 15 중 어느 한 항에 있어서,
    상기 LRQ는 L-넘버-디프 큐 회로(L-number-deep queue circuit)를 포함하며, L은 채널 제어 회로 당 논리 유닛들의 수와 같은 장치.
  20. 청구항 13 내지 청구항 15 중 어느 한 항에 있어서,
    상기 CRQ는 C-넘버-디프 큐 회로(C-number-deep queue circuit)를 포함하고, C는 x*(상기 복수의 채널 제어 회로들)과 같으며, x는 자연수인 장치.
KR1020137034532A 2011-05-31 2012-05-24 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들 KR101560469B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/149,461 2011-05-31
US13/149,461 US8543758B2 (en) 2011-05-31 2011-05-31 Apparatus including memory channel control circuit and related methods for relaying commands to logical units
PCT/US2012/039364 WO2012166522A2 (en) 2011-05-31 2012-05-24 Apparatus including memory system controllers and related methods

Publications (2)

Publication Number Publication Date
KR20140013098A KR20140013098A (ko) 2014-02-04
KR101560469B1 true KR101560469B1 (ko) 2015-10-14

Family

ID=47260199

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137034532A KR101560469B1 (ko) 2011-05-31 2012-05-24 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들

Country Status (7)

Country Link
US (2) US8543758B2 (ko)
EP (1) EP2715732B1 (ko)
JP (2) JP2014515533A (ko)
KR (1) KR101560469B1 (ko)
CN (1) CN103650054B (ko)
TW (1) TWI477965B (ko)
WO (1) WO2012166522A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9146688B2 (en) * 2012-12-05 2015-09-29 SanDisk Technologies, Inc. Advanced groomer for storage array
US10067829B2 (en) 2013-12-13 2018-09-04 Intel Corporation Managing redundancy information in a non-volatile memory
KR102164617B1 (ko) 2014-03-24 2020-10-12 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
US9582211B2 (en) * 2014-04-29 2017-02-28 Sandisk Technologies Llc Throttling command execution in non-volatile memory systems based on power usage
KR102211709B1 (ko) 2014-05-19 2021-02-02 삼성전자주식회사 신호 송수신 특성을 향상한 불휘발성 메모리 시스템, 호스트 장치, 불휘발성 메모리 시스템 및 호스트의 동작방법
CN104156432A (zh) * 2014-08-08 2014-11-19 四川九成信息技术有限公司 一种文件访问方法
US9679658B2 (en) * 2015-06-26 2017-06-13 Intel Corporation Method and apparatus for reducing read latency for a block erasable non-volatile memory
US10719237B2 (en) 2016-01-11 2020-07-21 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple partitions of a non-volatile memory
JP2018073038A (ja) 2016-10-27 2018-05-10 東芝メモリ株式会社 メモリシステム
JP6915093B2 (ja) 2017-06-05 2021-08-04 キオクシア株式会社 メモリカード、ホスト機器、メモリカード用コネクタおよびメモリカード用アダプタ
TWI640920B (zh) 2017-06-30 2018-11-11 慧榮科技股份有限公司 資料儲存裝置、非揮發式記憶體操作方法及操作指令執行方法
CN110908591B (zh) * 2018-09-17 2023-05-30 群联电子股份有限公司 存储器管理方法、存储器储存装置及存储器控制电路单元
US11386004B2 (en) 2019-02-22 2022-07-12 Micron Technology, Inc. Memory device interface and method
US11036633B2 (en) * 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory apparatus
JP2022550983A (ja) 2019-10-09 2022-12-06 マイクロン テクノロジー,インク. データ保護スキームを備えるメモリデバイス
US11989141B2 (en) 2019-12-27 2024-05-21 Micron Technology, Inc. Neuromorphic memory device and method
CN114930452A (zh) 2019-12-30 2022-08-19 美光科技公司 存储器装置接口和方法
TWI761992B (zh) 2020-10-16 2022-04-21 創鑫智慧股份有限公司 資料計算裝置及其操作方法
KR20220167077A (ko) * 2021-06-11 2022-12-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US20240028259A1 (en) * 2022-07-21 2024-01-25 Micron Technology, Inc. Buffer allocation for reducing block transit penalty

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090125671A1 (en) 2006-12-06 2009-05-14 David Flynn Apparatus, system, and method for storage space recovery after reaching a read count limit
WO2009064793A1 (en) 2007-11-15 2009-05-22 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
WO2010080142A2 (en) 2009-01-09 2010-07-15 Micron Technology, Inc. Modifying commands
US20110082963A1 (en) 2009-10-01 2011-04-07 Micron Technology, Inc. Power interrupt management

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2711831B1 (fr) * 1993-10-26 1997-09-26 Intel Corp Procédé et circuit de mémorisation et de hiérarchisation d'ordres d'effacement dans un dispositif de mémoire.
JPH1063442A (ja) * 1996-08-22 1998-03-06 Toshiba Corp 半導体ディスク装置
US6662262B1 (en) * 1999-10-19 2003-12-09 Advanced Micro Devices, Inc. OTP sector double protection for a simultaneous operation flash memory
US6654848B1 (en) * 2000-09-15 2003-11-25 Advanced Micro Devices, Inc. Simultaneous execution command modes in a flash memory device
US7003621B2 (en) * 2003-03-25 2006-02-21 M-System Flash Disk Pioneers Ltd. Methods of sanitizing a flash-based data storage device
US8176238B2 (en) * 2003-12-02 2012-05-08 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US20050198186A1 (en) 2004-01-20 2005-09-08 Mor Griv Method for automatic discovering of logical units and storage devices connected to a virtualization switch
US8060670B2 (en) * 2004-03-17 2011-11-15 Super Talent Electronics, Inc. Method and systems for storing and accessing data in USB attached-SCSI (UAS) and bulk-only-transfer (BOT) based flash-memory device
JP4643198B2 (ja) 2004-07-28 2011-03-02 株式会社日立製作所 負荷分散コンピュータシステム、経路設定プログラム及びその方法
JP2006092154A (ja) * 2004-09-22 2006-04-06 Hitachi Ltd ストレージシステム及びストレージ制御方法
KR100672992B1 (ko) * 2005-01-04 2007-01-24 삼성전자주식회사 반도체 메모리 장치의 동작 방법
US7904639B2 (en) * 2006-08-22 2011-03-08 Mosaid Technologies Incorporated Modular command structure for memory and memory system
CN101681282A (zh) * 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US8762620B2 (en) * 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
CN102027455A (zh) * 2008-05-13 2011-04-20 拉姆伯斯公司 用于存储器器件的分式编程命令
US7970978B2 (en) * 2008-05-27 2011-06-28 Initio Corporation SSD with SATA and USB interfaces
US20100115172A1 (en) * 2008-11-04 2010-05-06 Mosaid Technologies Incorporated Bridge device having a virtual page buffer
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
US8850103B2 (en) * 2009-08-28 2014-09-30 Microsoft Corporation Interruptible NAND flash memory
US20110060869A1 (en) 2009-09-08 2011-03-10 Ocz Technology Group, Inc. Large capacity solid-state storage devices and methods therefor
US8331123B2 (en) * 2009-09-21 2012-12-11 Ocz Technology Group, Inc. High performance solid-state drives and methods therefor
US8681546B2 (en) * 2011-02-22 2014-03-25 Apple Inc. Variable impedance control for memory devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090125671A1 (en) 2006-12-06 2009-05-14 David Flynn Apparatus, system, and method for storage space recovery after reaching a read count limit
WO2009064793A1 (en) 2007-11-15 2009-05-22 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
WO2010080142A2 (en) 2009-01-09 2010-07-15 Micron Technology, Inc. Modifying commands
US20110082963A1 (en) 2009-10-01 2011-04-07 Micron Technology, Inc. Power interrupt management

Also Published As

Publication number Publication date
US20120311230A1 (en) 2012-12-06
EP2715732B1 (en) 2018-11-21
TW201310233A (zh) 2013-03-01
CN103650054A (zh) 2014-03-19
US8543758B2 (en) 2013-09-24
KR20140013098A (ko) 2014-02-04
CN103650054B (zh) 2017-02-15
US20140025876A1 (en) 2014-01-23
WO2012166522A3 (en) 2013-03-21
JP2014515533A (ja) 2014-06-30
EP2715732A4 (en) 2015-02-18
EP2715732A2 (en) 2014-04-09
JP2016053983A (ja) 2016-04-14
JP6163532B2 (ja) 2017-07-12
US9430373B2 (en) 2016-08-30
TWI477965B (zh) 2015-03-21
WO2012166522A2 (en) 2012-12-06

Similar Documents

Publication Publication Date Title
KR101560469B1 (ko) 메모리 시스템 컨트롤러들을 포함하는 장치 및 관련 방법들
US8949492B2 (en) Apparatus including buffer allocation management and related methods
US9747029B2 (en) Apparatus including memory management control circuitry and related methods for allocation of a write block cluster
KR101573591B1 (ko) 메모리 시스템 제어기를 구비하는 장치 및 관련 방법
JP5918359B2 (ja) メモリシステムコントローラを含む装置および関連する方法

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: 20180920

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 5