KR20140025541A - 메모리 시스템 제어기를 구비하는 장치 및 관련 방법 - Google Patents

메모리 시스템 제어기를 구비하는 장치 및 관련 방법 Download PDF

Info

Publication number
KR20140025541A
KR20140025541A KR1020137034538A KR20137034538A KR20140025541A KR 20140025541 A KR20140025541 A KR 20140025541A KR 1020137034538 A KR1020137034538 A KR 1020137034538A KR 20137034538 A KR20137034538 A KR 20137034538A KR 20140025541 A KR20140025541 A KR 20140025541A
Authority
KR
South Korea
Prior art keywords
command
information
hba
response
compliant device
Prior art date
Application number
KR1020137034538A
Other languages
English (en)
Other versions
KR101532863B1 (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 KR20140025541A publication Critical patent/KR20140025541A/ko
Application granted granted Critical
Publication of KR101532863B1 publication Critical patent/KR101532863B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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/38Information transfer, e.g. on 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/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

메모리 시스템 제어기는 호스트 버스 어댑터(HBA) 및 직렬 부착(SA) 프로그래밍 순응 디바이스를 포함할 수 있고, 상기 SA 프로그래밍 순응 디바이스는 상기 HBA와 상기 SA 프로그래밍 순응 디바이스 사이에 커맨드, 응답, 및 다른 정보를 동시에 전송하도록 구성된 기능 특정 상호연결을 통해 상기 HBA에 연결된다.

Description

메모리 시스템 제어기를 구비하는 장치 및 관련 방법{APPARATUS INCLUDING MEMORY SYSTEM CONTROLLERS AND RELATED METHODS}
본 발명은 일반적으로 반도체 메모리 디바이스, 시스템 및 제어기와 같은 장치, 및 관련된 방법에 관한 것으로, 보다 상세하게는, 예를 들어 메모리 시스템 제어기에 관한 것이다.
메모리 디바이스는 일반적으로 컴퓨터 또는 다른 전자 디바이스에서 내부, 반도체, 집적 회로로 제공된다. 여기에는 휘발성 메모리와 비 휘발성 메모리를 포함하는 많은 상이한 유형의 메모리들이 있다. 휘발성 메모리는 그 정보, 예를 들어, 데이터를 유지하는데 전력을 요구하는 것으로, 특히 RAM(random-access memory), DRAM(dynamic random access memory), SDRAM(synchronous dynamic random access memory) 및 SRAM(static random access memory)을 포함할 수 있다. 비 휘발성 메모리는 전력 투입이 없을 때에도 저장된 정보를 유지하는 것에 의해 영구적으로 정보를 제공할 수 있는 것으로, 특히 NAND 플래시 메모리, NOR 플래시 메모리, ROM(read only memory), EEPROM(Electrically Erasable Programmable ROM), EPROM(Erasable Programmable ROM) 및 PCRAM(phase change random access memory)를 포함할 수 있다.
메모리 디바이스는 솔리드 스테이트 드라이브(solid state drive: SSD)를 형성하도록 서로 결합될 수 있다. 솔리드 스테이트 드라이브는 여러 다른 유형의 비 휘발성 메모리 및 휘발성 메모리 중에서 특히 비 휘발성 메모리, 예를 들어, NAND 플래시 메모리 및 NOR 플래시 메모리를 포함하고/하거나, 휘발성 메모리, 예를 들어, DRAM 및 SRAM을 포함할 수 있다. 질화물 층에 전하 트랩으로 정보를 저장하는 반도체-산화물-질화물-산화물-반도체 및 금속-산화물-질화물-산화물-반도체 커패시터 구조를 사용하는 플로팅 게이트(floating gate) 플래시 디바이스 및 전하 트랩 플래시(charge trap flash: CTF) 디바이스를 포함하는 플래시 메모리 디바이스는 광범위한 전자 애플리케이션을 위한 비휘발성 메모리로서 사용될 수 있다. 플래시 메모리 디바이스는 일반적으로 높은 메모리 밀도, 높은 신뢰성 및 낮은 전력 소비를 가능하게 하는 하나의 트랜지스터 메모리 셀을 사용한다.
솔리드 스테이트 드라이브(SSD)는 성능, 사이즈, 중량, 러기드니스(ruggedness), 동작 온도 범위 및 전력 소비량 면에서 하드 드라이브에 비해 장점을 가질 수 있으므로 SSD는 컴퓨팅 시스템을 위한 메인 저장 디바이스로서 하드 디스크 드라이브를 대체하는데 사용될 수 있다. 예를 들어, SSD는 이동 부분이 없는 것으로 인해 자기 디스크 드라이브에 비해 탐색 시간, 지체, 및 자기 디스크 드라이브와 연관된 다른 전기-기계 지연을 피할 수 있는 우수한 성능을 구비할 수 있다. SSD 제조사는 플래시 SSD를 생성하는데 비 휘발성 플래시 메모리를 사용하여 내부 배터리 공급원을 사용하지 않아 드라이브를 보다 다양하고 콤팩트하게 할 수 있다.
SSD는 다수의 메모리 디바이스, 예를 들어, 다수의 메모리 칩을 포함할 수 있다(본 명세서에서 사용된 바와 같이, "다수의" 것이란 이러한 것의 하나 이상을 말할 수 있다, 예를 들어, 다수의 메모리 디바이스는 하나 이상의 메모리 디바이스를 말할 수 있다). 이 기술 분야에 통상의 지식을 가진 자라면 이해할 수 있는 바와 같이, 메모리 칩은 다수의 다이(die) 및/또는 논리적 유닛(logical unit: LUN)을 포함할 수 있고, 여기서 LUN는 예를 들어, 하나 이상의 다이일 수 있다. 각 다이는 다수의 메모리 어레이 및 그 위에 주변 회로를 포함할 수 있다. 메모리 어레이는 다수의 물리적 페이지로 구성된 다수의 메모리 셀을 포함할 수 있고, 이 물리적 페이지는 다수의 블록으로 구성될 수 있다. 플래시 메모리 셀의 어레이는 한번에 하나의 페이지로 프로그래밍되거나 한번에 블록으로 소거될 수 있다. SSD 제어기는 내장된 프로세서를 사용하여 메모리 관리 및 할당을 수행할 수 있다.
도 1은 본 발명의 다수의 실시예에 따라 적어도 하나의 메모리 시스템을 구비하는 컴퓨팅 시스템의 기능 블록도.
도 2는 본 발명의 다수의 실시예에 따라 메모리 시스템의 기능 블록도.
도 3a는 본 발명의 다수의 실시예에 따라 호스트 버스 어댑터(host bus adapter: HBA)와 직렬 부착(serial attachment: SA) 프로그래밍 순응 디바이스 사이에 전송 층 인터페이스의 기능 블록도.
도 3b는 본 발명의 다수의 실시예에 따라 HBA 및 SA 프로그래밍 순응 디바이스의 기능 블록도.
도 4는 본 발명의 다수의 실시예에 따라 블록 관리 디바이스의 기능 블록도.
본 발명은 메모리 시스템 제어기를 포함한다. 메모리 시스템 제어기는 호스트 버스 어댑터(HBA) 및 직렬 부착(SA) 프로그래밍 순응 디바이스를 포함할 수 있고, 상기 SA 프로그래밍 순응 디바이스는 상기 HBA와 상기 SA 프로그래밍 순응 디바이스 사이에 커맨드, 응답, 및 다른 정보를 동시에 전송하도록 구성된 기능 특정 상호연결부(function-specific interconnect)를 통해 상기 HBA에 연결된다.
본 발명의 이하 상세한 설명에서는, 본 발명을 실시할 수 있는 다수의 실시예를 예를 들어 도시하고 본 명세서의 일부를 형성하는 첨부 도면을 참조한다. 이들 실시예는 이 기술 분야에 통상의 지식을 가진 자라면 본 발명의 실시예를 실시할 수 있을 만큼 충분히 상세히 설명되고, 다른 실시예들이 사용될 수도 있으며 본 발명의 범위를 벗어남이 없이 공정, 전기적 및/또는 구조적 변경이 이루어질 수 있는 것으로 이해된다. 본 명세서에 사용된 바와 같이, 특히 도면에 있는 참조 부호에서 지시자 "N"은 이렇게 지시된 다수의 특정 특징부가 본 발명의 다수의 실시예에 포함될 수 있다는 것을 나타낸다.
본 명세서에 있는 도면은 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자는 도면에서 요소 또는 부품을 식별하는 도면 부호 부여 규정을 따른다. 상이한 도면들 사이에서 유사한 요소 또는 부품은 유사한 숫자를 사용하여 식별될 수 있다. 예를 들어, (108)은 도 1에서 요소 "08"을 나타낼 수 있고, 도 2에 있는 유사한 요소는(208)로 지칭될 수 있다. 이해되는 바와 같이, 본 명세서에서 여러 실시예에 도시된 요소는 본 발명의 다수의 추가적인 실시예를 제공하도록 추가, 교환 및/또는 제거될 수 있다. 나아가, 이해되는 바와 같이, 도면에 제공된 요소의 비율과 상대적인 스케일은 본 발명의 특정 실시예를 예시하려고 의도된 것이므로 발명을 제한하는 것으로 해석되어서는 안 된다.
도 1은 본 발명의 다수의 실시예에 따라 적어도 하나의 메모리 시스템(104)을 구비하는 컴퓨팅 시스템(100)의 기능 블록도이다. 도 1에 도시된 실시예에서, 메모리 시스템(104), 예를 들어, 솔리드 스테이트 드라이브(SSD)는 물리적 호스트 인터페이스(106), 메모리 시스템 제어기(108), 예를 들어, SSD 제어기, 및 다수의 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)를 포함할 수 있다. 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)는 메모리 시스템을 위한 저장 볼륨(volume)을 제공할 수 있다. 다수의 실시예에서, 솔리드 스테이트 메모리 시스템 제어기(108)는 응용 특정 집적 회로(ASIC)일 수 있고, 여기서는 예를 들어, ASIC 형태인 제어기(108)는 물리적 인터페이스(106) 및 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)를 모두 포함하는 인쇄 회로 기판에 연결된다.
도 1에 도시된 바와 같이, 메모리 시스템 제어기(108), 예를 들어, 솔리드 스테이트 메모리 시스템 제어기는 물리적 호스트 인터페이스(106)에 및 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)에 연결될 수 있다. 물리적 호스트 인터페이스(106)는 메모리 시스템(104)과 다른 디바이스, 예를 들어 호스트(102) 사이에 정보를 통신하는데 사용될 수 있다. 호스트(102)는 메모리 액세스 디바이스, 예를 들어, 프로세서를 포함할 수 있다. 이 기술 분야에 통상의 지식을 가진 자라면 "프로세서"는 다수의 프로세서, 예를 들어 병렬 프로세싱 시스템, 다수의 코프로세서 등을 의도할 수 있다는 것을 이해할 수 있을 것이다. 예시적인 호스트는 랩탑 컴퓨터, 퍼스널 컴퓨터, 디지털 카메라, 디지털 레코딩 및 플레이백 디바이스, 모바일 전화, PDA, 메모리 카드 판독기, 인터페이스 허브 등을 포함한다. 다수의 실시예를 위해, 물리적 호스트 인터페이스(106)는 표준화된 물리적 인터페이스의 형태일 수 있다. 예를 들어, 메모리 시스템(104)가 컴퓨팅 시스템(100)에서 정보를 저장하는데 사용될 때, 물리적 호스트 인터페이스(106)는 다른 인터페이스 중에서 특히 SATA(serial advanced technology attachment) 물리적 인터페이스, PCIe(peripheral component interconnect express) 물리적 인터페이스, SCSI(small computer system interface) 인터페이스, SAS(serial attachment SCSI) 인터페이스, 또는 USB(universal serial bus) 물리적 인터페이스일 수 있다. 그러나, 일반적으로, 물리적 호스트 인터페이스(106)는 물리적 호스트 인터페이스(106)를 위한 호환 수용체(compatible receptor)를 구비하는 호스트(102)와 메모리 시스템(104) 사이에 제어, 어드레스, 정보, 예를 들어, 데이터, 및 다른 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
솔리드 스테이트 메모리 시스템 제어기(108)는 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)와 통신하며 다른 동작 중에서 특히 정보를 판독, 기록, 및 소거할 수 있다. 솔리드 스테이트 메모리 시스템 제어기(108)는 다수의 집적 회로 및/또는 이산 구성요소(discrete component)일 수 있는 펌웨어 및/또는 회로를 구비할 수 있다. 다수의 실시예를 위해, 솔리드 스테이트 메모리 시스템 제어기(108)에서 회로는 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)에 걸친 액세스를 제어하는 제어 회로, 그리고 호스트(102)와 메모리 시스템(104) 사이에 변환 층(translation layer)을 제공하는 회로를 포함할 수 있다. 따라서, 메모리 제어기는 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)의 I/O 연결부(도 1에 미도시)를 선택적으로 연결시켜 적절한 시간에 적절한 I/O 연결부에서 적절한 신호를 수신할 수 있게 한다. 유사하게, 호스트(102)와 메모리 시스템(104) 사이에 통신 프로토콜은 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)에 액세스하는데 필요한 것보다 상이할 수 있다. 솔리드 스테이트 메모리 시스템 제어기(108)는 호스트(102)로부터 수신된 커맨드를 적절한 커맨드(command)로 변환하여 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)에 원하는 액세스를 달성하도록 할 수 있다.
솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)는 메모리 셀, 예를 들어, 비휘발성 메모리 셀의 다수의 어레이를 포함할 수 있다. 어레이는 예를 들어 NAND 아키텍처를 구비하는 플래시 어레이일 수 있다. NAND 아키텍처에서, "행(row)"의 메모리 셀의 제어 게이트는 액세스 라인, 예를 들어, 워드 라인에 연결될 수 있는 반면, 메모리 셀은 선택 게이트 소스 트랜지스터와 선택 게이트 드레인 트랜지스터 사이에 "스트링(string)"으로 소스가 드레인에 직렬 연결될 수 있다. 스트링은 선택 게이트 드레인 트랜지스터에 의해 데이터 라인, 예를 들어, 비트 라인에 연결될 수 있다. "행" 및 "스트링"이라는 용어의 사용은 메모리 셀이 선형인 것을 의미하거나 직교 배열인 것을 의미하는 것이 전혀 아니다. 이 기술 분야에 통상의 지식을 가진 자라면 이해할 수 있는 바와 같이, 메모리 셀을 비트 라인 및 소스 라인에 연결하는 방식은 어레이가 NAND 아키텍처인지, NOR 아키텍처인지, 또는 일부 다른 메모리 어레이 아키텍처인지 여부에 따라 달라진다.
솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)는 그룹화될 수 있는 다수의 메모리 셀을 포함할 수 있다. 본 명세서에 사용된 바와 같이, 그룹은 다수의 메모리 셀, 예를 들어, 페이지, 블록, 플랜(plane), 다이, 전체 어레이, 또는 다른 그룹의 메모리 셀을 포함할 수 있다. 예를 들어, 일부 메모리 어레이는 메모리 셀의 블록을 구성하는 메모리 셀의 다수의 페이지를 포함할 수 있다. 다수의 블록은 메모리 셀의 플랜에 포함될 수 있다. 메모리 셀의 다수의 플랜은 다이(die) 상에 포함될 수 있다. 일례로서, 128 GB 메모리 디바이스는 페이지당 4320 바이트의 정보, 블록당 128개의 페이지, 플랜당 2048개의 블록, 및 디바이스당 16개의 플랜을 포함할 수 있다.
메모리 시스템(104)은 마모 레벨링(wear leveling), 예를 들어, 가비지 수집(garbage collection) 및/또는 재사용(reclamation)을 구현하여 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N) 상에 마모 율(wear rate)을 제어할 수 있다. 솔리드 스테이트 메모리 어레이는 다수의 프로그램 및/또는 소거 사이클 후에 에러, 예를 들어, 고장(failure)을 나타낼 수 있다. 마모 레벨링은 사이클을 전체 어레이에 걸쳐 보다 균일하게 확산시키는 것에 의해 특정 그룹에 수행되는 프로그램 및/또는 소거 사이클의 수를 감소시킬 수 있다. 마모 레벨링은 블록을 재사용하기 위해 이동되는 유효 블록의 양을 최소화하도록 동적 마모 레벨링을 포함할 수 있다. 동적 마모 레벨링은 가비지 수집이라고 불리우는 기술을 포함할 수 있다. 가비지 수집은 예를 들어, "그리디 알고리즘(greedy algorithm)"에 따라 대부분 무효 페이지(invalid page)를 구비하는 블록을 재사용, 예를 들어, 소거 및 기록하는데 이용가능하게 하는 것을 포함할 수 있다. 대안적으로, 가비지 수집은 무효 페이지의 임계량을 초과하는 양을 구비하는 블록을 재사용하는 것을 포함할 수 있다. 충분한 자유 블록이 기록 동작에 존재하는 경우, 가비지 수집 동작이 발생하지 않을 수 있다. 예를 들어, 무효 페이지는 상이한 페이지로 업데이트된 정보의 페이지일 수 있다. 정적 마모 레벨링은 블록의 수명을 연장시키기 위해 높은 소거 카운트를 구비하는 블록에 정적 정보를 기록하는 것을 포함한다.
기록 증폭(write amplification)은 정보를 솔리드 스테이트 메모리 디바이스(110-1, . . ., 110-N)에 기록할 때 발생할 수 있는 프로세스이다. 정보를 메모리 어레이에 랜덤하게 기록할 때, 솔리드 스테이트 메모리 시스템 제어기(108)는 어레이에서 이용가능한 공간을 스캔(scan)한다. 메모리 어레이에서 이용가능한 공간은 정보를 저장하지 않고/않거나 소거된 메모리 셀의 개별 셀, 페이지, 및/또는 블록일 수 있다. 선택된 위치에 정보를 기록하는데 이용가능한 공간이 충분한 경우, 정보는 메모리 어레이의 선택된 위치에 기록된다. 선택된 위치에서 이용가능한 공간이 충분치 않은 경우, 메모리 어레이에서 정보는 선택된 위치에 이미 존재하는 정보를 새로운 위치로 판독, 복사, 이동, 또는 다른 방식으로 재기록 및 소거하여, 선택된 위치에 기록될 새로운(new) 정보에 이용가능한 공간을 남기는 것에 의해 재배열된다. 메모리 어레이에서 오래된(old) 정보를 재배열하는 것은, 메모리 디바이스에 의해 수행되는 기록의 양이 선택된 위치에서 이용가능한 공간이 충분한 경우에, 발생할 수 있는 기록의 양에 비해 증폭되기 때문에 기록 증폭이라고 불린다.
도 1에 도시된 컴퓨팅 시스템(100)은 도시된 것을 넘어 추가적인 회로를 포함할 수 있다. 도 1에 도시된 컴퓨팅 시스템(100)의 상세는 본 발명의 실시예를 불명확하게 하지 않게 하기 위하여 감소되어 있다. 예를 들어, 메모리 시스템(104)은 I/O 회로를 통해 I/O 연결부를 통해 제공되는 어드레스 신호를 래치(latch)하는 어드레스 회로를 포함할 수 있다. 어드레스 신호는 행 디코더 및 열 디코더에 의해 수신되고 디코딩되어 솔리드 스테이트 메모리 디바이스(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)는 호스트-메모리 변환 회로(216), 메모리 관리 회로(218), 스위치(220), 비휘발성 메모리 제어 회로(222) 및/또는 휘발성 메모리 제어 회로(224)를 포함할 수 있다. 본 명세서에 설명된 바와 같이, 솔리드 스테이트 메모리 시스템 제어기(208)는 ASIC의 형태로 제공될 수 있으나, 실시예는 이것으로 제한되지 않는다.
호스트 I/F 회로(214)는 호스트-메모리 변환 회로(216)에 연결될 수 있다. 호스트 I/F 회로(214)는 호스트와의 물리적 인터페이스, 예를 들어 물리적 인터페이스(206)와 연결되고/되거나 병합될 수 있다. 호스트 I/F 회로(214)는 호스트, 예를 들어, 도 1에 있는 호스트(102)와 인터페이싱할 수 있다. 호스트 I/F 회로(214)는 예를 들어, 물리적 층, 링크 층, 및 전송 또는 트랜잭션 층 인터페이스를 제공하는 PCIe(peripheral component interconnect express) 회로(230)를 포함할 수 있고, 여기서 호스트는 PCIe 표준에 따라 정보를 송신하도록 구성된다. SATA(serial advanced technology attachment) 표준 및/또는 SAS(serial attachment SCSI) 표준에 따라 전송 층은 PCIe 표준에 따라 트랜잭션 층과 유사할 수 있다. PCIe 회로(230)는 호스트 버스 어댑터(HBA)(234), 예를 들어, 어드밴스트 호스트 제어기 인터페이스(AHCI) 호환 HBA에 연결될 수 있다. HBA(234)는 호스트-메모리 변환 회로(216)에 연결될 수 있는 SA 순응 디바이스(236)에 연결될 수 있다.
일반적으로, 호스트 I/F 회로(214)는 호스트로부터, 예를 들어, PCIe 버스로부터 수신된 커맨드 패킷을 호스트-메모리 변환 회로(216)를 위한 커맨드 명령으로 변환하고 호스트-메모리 변환 응답을 요청한 호스트로 송신하기 위한 호스트 커맨드로 변환하는 일을 담당한다. 예를 들어, 호스트 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 배타적 OR(XOR) 회로(226)를 포함할 수 있다. RAID XOR 회로(226)는 호스트 I/F 회로(214)로부터 수신된 정보에 기초하여 패리티(parity) 정보를 계산할 수 있다.
메모리 관리 회로(218)는 호스트-메모리 변환 회로(216)에 및 스위치(220)에 연결될 수 있다. 메모리 관리 회로(218)는 초기화(initialization), 마모 레벨링, 예를 들어, 가비지 수집 및/또는 재사용, 및/또는 에러 검출/정정을 포함하지만 이들로 제한되지 않는 다수의 메모리 동작을 제어할 수 있다. 메모리 관리 회로(218)가 프로세서(228)를 포함할 수 있으나, 본 발명의 다수의 실시예는 프로세서(228)에 의해, 명령, 예를 들어, 소프트웨어 및/또는 펌웨어를 실행하는 것에 의존함이 없이, 회로, 예를 들어, 하드웨어에서 메모리 동작을 제어한다. 이러한 실시예는 메모리 동작을 제어하기 위해 프로세서에 보다 많이 의존하는 일부 이전의 방법에 비해 더 빠른 메모리 동작을 제공할 수 있다. 메모리 관리 회로(218)는 도 4에 대해 보다 상세히 설명된 블록 관리 회로(240)를 포함할 수 있다.
스위치(220)는 호스트-메모리 변환 회로(216), 메모리 관리 회로(218), 비휘발성 제어 회로(222) 및/또는 휘발성 메모리 제어 회로(224)에 연결될 수 있다. 스위치(220)는 크로스바(crossbar) 스위치일 수 있고 다수의 버퍼를 포함하고/하거나 이에 연결될 수 있다. 예를 들어, 스위치(220)는 내부 정적 랜덤 액세스 메모리(SRAM) 버퍼(internal SRAM buffer: ISB)(225)를 포함할 수 있다. 스위치는 휘발성 메모리(212)에 포함된 복수의 동적 랜덤 액세스 메모리(DRAM) 버퍼(227)에 연결될 수 있다. 스위치는 버퍼 태그 풀(buffer tag pool)(223)을 포함할 수 있는 버퍼 할당 관리(buffer allocation management: BAM) 회로(221)를 포함할 수 있다. 스위치(220)는 솔리드 스테이트 메모리 시스템 제어기(208)의 여러 구성요소들 사이에 인터페이스를 제공할 수 있다. 스위치(220)는 구성요소들 사이에 일관된 액세스 및 구현을 제공하기 위하여 솔리드 스테이트 메모리 시스템 제어기(208)의 상이한 구성요소와 연관될 수 있는 한정된 신호 프로토콜의 변동을 고려할 수 있다. 다수의 실시예에서, 스위치(220)는 직접 메모리 액세스(direct memory access: DMA) 모듈일 수 있다.
BAM 회로(221) 내 버퍼 태그 풀(223)에 있는 복수의 태그는 복수의 DRAM 버퍼(227) 또는 복수의 ISB(225)를 각각 식별할 수 있다. 특정 태그가 DRAM 버퍼(227)를 지시(point)할 때, 프로그래밍가능한 "BAR" 어드레스는 버퍼 태그에 부착(appended)되어 휘발성 메모리(212)를 위한 어드레스를 채울 수 있다(fill out). BAM 회로(221)는 다수의 하드웨어 마스터 중 하나로부터의 할당 요청에 응답하여 태그를 다수의 하드웨어 마스터 중 하나에 할당하도록 구성될 수 있다. 하드웨어 마스터는 메모리에 액세스할 수 있는 하드웨어 구성요소를 포함할 수 있다.
BAM 회로(221)는 복수의 DRAM 버퍼(227) 중 하나를 식별하는 태그에 비해 복수의 ISB(225) 중 하나를 식별하는 태그의 할당을 우선(prioritize)하도록 구성될 수 있다. 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)는 비-기능적인 버퍼와 연관된 버퍼 풀(223)로부터 태그를 제거하도록 구성될 수 있다. 프로세서(228)는 BAM 회로(221)에 액세스하고 비-기능적인 버퍼와 연관된 버퍼 풀(223)로부터 태그를 제거하도록 구성될 수 있다. 이러한 실시예는 하나 이상의 ISB(225)가 실패하는 경우에도 솔리드 스테이트 메모리 시스템 제어기(208)가 적절히 기능할 수 있는 것을 도와줄 수 있다. 일부 실시예에서, 예를 들어, "맵핑 아웃(map out)", "불량(bad)" 버퍼를 제거하는 능력은 제조 동안 ISB(225)를 테스트하는 대신에 사용될 수 있다. 스위치(220)는 ISB(225)를 "과다 제공(over-provisioned)"하여 다수의 ISB(225)를 잃어버리더라도 솔리드 스테이트 메모리 시스템 제어기(208)의 동작에 눈에 띄게 영향을 미치지 않게 할 수 있다.
다수의 하드웨어 마스터는 판독 커맨드 또는 기록 커맨드와 함께 BAM 회로(221)로부터 태그의 할당을 요청하고 판독 커맨드 또는 기록 커맨드의 완료(completion)와 함께 BAM 회로(221)로부터 할당된 태그의 할당 해제를 요청하도록 구성될 수 있다. 하드웨어 마스터는 다수의 커맨드에 대해 동일한 태그를 사용하지 않고 각 커맨드에 대해 새로운 태그를 요청한다. 하드웨어 마스터는 할당 요청에 비해 할당 해제 요청을 우선하도록 구성되어, 예를 들어, 충분한 버퍼, 특히 ISB(225)가 다수의 하드웨어 마스터로부터 다수의 커맨드에 이용가능한 것을 보장하는 것을 도와줄 수 있다.
버퍼 태그의 사용은 판독 동작을 용이하게 할 수 있다. 하드웨어 마스터는 할당된 태그와 함께 판독 커맨드를 비휘발성 메모리 제어 회로(222)에 송신하도록 구성될 수 있다. 비휘발성 메모리 제어 회로(222)는 할당된 태그에 의해 식별된 버퍼에 판독 커맨드에 대응하는 정보를 저장하고 정보가 준비되었다는 것을 판독 커맨드를 송신한 특정 하드웨어 마스터에 통지하도록 구성될 수 있다.
버퍼 태그의 사용은 기록 동작을 용이하게 할 수 있다. 하드웨어 마스터는 할당된 태그와 함께 기록 커맨드를 비휘발성 메모리 제어 회로(222)에 송신하고 할당된 태그에 의해 식별된 버퍼에 기록 커맨드에 대응하는 정보를 저장하도록 구성될 수 있다. 비휘발성 메모리 제어 회로(222)는 할당된 태그에 의해 식별된 버퍼로부터 정보를 검색하고, 정보를 비휘발성 메모리에, 예를 들어, 적절한 LUN(250)에 기록하고, 정보가 기록되었다는 것을 기록 커맨드를 송신한 하드웨어 마스터에 통지하도록 구성될 수 있다.
메모리 관리 회로(218)에 있는 프로세서(228)는 하드웨어 마스터일 수 있다. 프로세서(228)는 복수의 태그를 참조함이 없이 전체 휘발성 메모리(212) 공간에 액세스하여 비휘발성 메모리 제어 회로(222)와 휘발성 메모리 제어 회로(224) 사이에 직접 메모리 액세스(DMA) 동작을 인에이블하도록 구성될 수 있다. 다른 하드웨어 마스터는 DMA 특징을 인에이블하지 않을 수 있고 그리하여 메모리 공간에 직접 액세스하는 대신에 버퍼에 액세스하는데 태그에 의존할 수 있다. 프로세서(228)는 버퍼가 메모리 공간에 액세스할 필요성을 바이패스시키는 커맨드 파이프라인을 통해 송신된 커맨드와 함께 사용된 필드에 있는 정보를 통해 DMA 동작을 인에이블할 수 있다. 예를 들어, 정보 "DMA_En BARSEL"은 커맨드에 사용되는 필드에 포함될 수 있고, 여기서 본 명세서에 설명된 바와 같이 "DMA_En"은 DMA 동작이 인에이블되었다는 것을 수신기에 나타내고, "BARSEL"은 어드레스가 버퍼 태그 대신에 DRAM에 포함되어야 하는 것을 나타낸다. 따라서, 프로세서(228)른 하드웨어 마스터에 대한 버퍼 기반 액세스와 동일한 논리를 사용하여 휘발성 메모리(212)와 LUN(250) 사이에 정보를 이동시킬 수 있다. "DMA_En"은 LUN(250)에 액세스할 때 채널 제어 회로(248)에 의해 스위치(220)로 반향(echoed)될 수 있다. 채널 제어 회로(248)의 관점으로부터, DMA 액세스는 버퍼 기반 액세스와 사실상 동일하다. "MA_En"이 선언되면, 스위치(220)는 휘발성 메모리(212)에 요청을 강제(force)할 수 있다. "BARSEL"은 스위치(220)에 의해 사용되어 DRAM 버퍼(227)를 지시할 때 버퍼 태그에 부착된 "BAR" 어드레스와 유사한 고유한 "BAR"를 교환(swap)한다. 예를 들어, "BAR" 어드레스는 4개의 위치 중 하나를 지시하는 2비트 어드레스일 수 있으나, 실시예는 이것으로 제한되지 않는다. "BAR" 어드레스를 사용하면 상이한 동시적인 DMA를 가능하게 한다.
비휘발성 메모리 제어 회로(222)는 스위치(220)에 연결될 수 있다. 비휘발성 메모리 제어 회로(222)는 비휘발성 메모리 디바이스에 연결될 수 있다. 도 2는 다수의 LUN(250)을 포함하는 비휘발성 메모리 디바이스를 도시한다. 다수의 LUN(250)은 다수의 채널에 의하여 비휘발성 메모리 제어 회로(222)에 연결될 수 있다. 일부 실시예에서, 다수의 채널은 비휘발성 메모리 제어 회로(222)에 의해 집합적으로 제어될 수 있다. 다수의 실시예에서, 각 메모리 채널은 도 2에 도시된 바와 같이 이산 채널 제어 회로(248)에 연결된다. 특정 채널 제어 회로(248)는 단일 채널에 의해 하나를 초과하는 LUN(250)을 제어하고 이에 연결될 수 있다. 다수의 실시예에서, 채널 제어 회로(248)는 개방 NAND 플래시 인터페이스(ONFI) 순응 버스에 의해 복수의 LUN(250)에 연결될 수 있다.
비휘발성 메모리 제어 회로(222)는 채널 제어 회로(248)에 의해 실행될 것을 기다리는 동안 커맨드가 존재하는 커맨드 파이프라인의 적어도 일부분을 포함한다. LUN(250)에 요청을 개시하는 모든 하드웨어 마스터는 스위치(220)를 통해 동일한 커맨드 파이프라인을 공유할 수 있다. 호스트로부터의 판독 커맨드(호스트 판독)에는, LUN(250)에 액세스하는 것을 제어하는 일이 없는데, 그 이유는 호스트가 하나 이상의 LUN(250)에 저장된 특정 정보를 필요로 하기 때문이다. 마찬가지로, 호스트 트래픽의 볼륨을 제어하는 일이 없다. 본 명세서에 설명된 커맨드 파이프라인은 LUN(250)들 사이에 프로그램 시간, 판독 시간, 및 소거 시간의 충돌을 은닉하는데 융통성을 제공할 수 있다. 예를 들어, 소거 시간은 프로그램 시간 또는 판독 시간보다 더 길 수 있다. 각 채널 제어 회로(248)는 복수의 채널에 의해 복수의 LUN(250)에 연결될 수 있다. 그리하여, 소거 커맨드가 특정 LUN을 위한 특정 채널 제어 회로(248)에 의해 실행되고 있는 동안, 특정 채널 제어 회로(248)는 동일한 채널에서 상이한 LUN(250)을 위한 다른 커맨드를 실행할 수 있다.
비휘발성 메모리 제어 회로(222)는 각 채널 제어 회로(248)에 연결된 채널 요청 큐(channel request queue: CRQ)(242)를 포함할 수 있다. 각 채널 제어 회로(248)는 복수의 LUN 커맨드 큐(LCQ)(246)에 연결된 LUN 요청 큐(LRQ)(244)를 포함할 수 있다. LRQ(244)는 L 수(number)-깊이의 큐 회로(L-number-deep queue circuit)일 수 있는데, 여기서 L은 채널 제어 회로(248)마다 LUN(250)의 수와 동일하다. CRQ(242)는 C 수-깊이의 큐 회로일 수 있는데, 여기서 C는 예를 들어 x*(복수의 채널 제어 회로(248))와 동일하고, x는 범자연수(whole number), 예를 들어, 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는 현재 커맨드 및 현재 커맨드에 후속하여 실행될 그 다음 커맨드를 큐잉(queue)하도록 구성될 수 있다. 이러한 실시예는 1024개의 엔트리에서 (512개의 LUN * 2-깊이의 LCQ), 플러스 512 엔트리에서 (채널당 하나의 16-깊이의 LRQ * 32 채널), 플러스 총 (1024+512+128) = 1664개의 커맨드 저장 엔트리에서 (하나의 128-깊이의 CRQ)를 제공한다. 본 명세서에 설명된 바와 같이, 이러한 커맨드 파이프라인 구조는 사이즈의 비율(fraction)에서 524,288개의 커맨드 저장 엔트리(채널당 32개의 LUN * 16 채널 * LUN당 1024-깊이의 FIFO = 524,288)와 동일한 성능을 제공할 수 있다.
CRQ(242)는 스위치(220)로부터 커맨드를 수신하고 이 커맨드를 LRQ(244) 중 하나, 예를 들어, 이 커맨드에서 타깃 지정된 특정 LUN(250)과 연관된 채널과 연관된 LRQ(244)로 중계(relay)하도록 구성될 수 있다. 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)의 스테이터스에 따른 순서로 상이한 LUN(250)와 연관된 LCQ(246)로 중계하도록 구성될 수 있다. 예를 들어, 상이한 LUN(250)의 스테이터스는 준비/사용 상태(ready/busy status)일 수 있다. 커맨드 파이프라인은 상이한 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 복수의 커맨드 중 제1 커맨드를 중계한 후에 제2 LCQ(246)와 연관된 LUN(250)의 스테이터스가 준비 중인 것에 응답하여 제2 복수의 커맨드 중 제2 커맨드를 제2 LCQ(246)로 중계하도록 구성될 수 있다.
각 채널에 대해 이산 비휘발성 메모리 채널 제어 회로를 포함하는 다수의 실시예는 각 채널 제어 회로(248)에 연결된 이산 에러 검출/정정 회로(232), 예를 들어, 에러 정정 코드(ECC) 회로 및/또는 하나를 초과하는 채널에 사용될 수 있는 다수의 에러 검출/정정 회로(232)를 포함할 수 있다. 에러 검출/정정 회로(232)는 이 기술 분야에 통상의 지식을 가진 자라면 이해할 수 있는 바와 같이 BCH 에러 정정과 같은 에러 정정을 적용하여 LUN(250)에 저장된 정보와 연관된 에러를 검출 및/또는 정정하도록 구성될 수 있다. 예를 들어, 에러 검출/정정 회로는 1080-비트 코드 워드(code word)에 걸쳐 29비트의 에러 정정을 제공할 수 있다. 에러 검출/정정 회로(232)는 단일 레벨 셀(single level cell: SLC) 및/또는 다중 레벨 셀(multi level cell: MLC)(SLC/MLC) 동작에 상이한 에러 정정 방식을 제공하도록 구성될 수 있다.
휘발성 메모리 제어 회로(224)는 스위치(220)에 및 휘발성 메모리(212)에, 예를 들어, 다수의 휘발성 메모리 디바이스에 연결될 수 있다. 다른 정보 중에서 특히, 다수의 휘발성 메모리 디바이스는 도 4에 대해 보다 상세히 설명된 바와 같이 LBA 테이블 및/또는 블록 테이블을 저장할 수 있다.
도 3a는 본 발명의 다수의 실시예에 따라 호스트 버스 어댑터(HBA)(334)와 직렬 부착(SA) 프로그래밍 순응 디바이스(336) 사이에 전송 층 인터페이스의 기능 블록도이다. HBA(334)는 도 2에 도시된 HBA(234) 와 유사할 수 있다. SA 프로그래밍 순응 디바이스(336)는 도 2에 도시된 SA 프로그래밍 순응 디바이스(236)와 유사할 수 있다. 다수의 실시예에서, SA 프로그래밍 순응 디바이스(336)는 직렬 어드밴스트 기술(serial advanced technology: SATA) 프로그래밍 순응 디바이스일 수 있다. 다수의 실시예에서, SA 프로그래밍 순응 디바이스(336)는 직렬 부착 SCSI(SAS) 프로그래밍 순응 디바이스일 수 있다.
SA 프로토콜은 층을 사용하여 개념적으로 한정된다. 낮은 것에서 높은 것으로의 순서로, SATA에서, 이들은 물리적 층, 링크 층, 전송 층 및 커맨드 층을 포함한다. 낮은 것에서 높은 것으로의 순서로, SAS에서, 이들은 물리적 층, PHY 층, 링크 층, 포트 층, 전송 층 및 애플리케이션 층을 포함한다. 커맨드 층 및/또는 애플리케이션 층 정보는 커맨드를 프레임 정보 구조(frame information structure: FIS)로 분산하는 것에 의해 전송 층에서 통신될 수 있다. 일부 이전의 방법에 따르면, FIS는 프리미티브(primitive)를 사용하여 링크 층에서 통신된다. 프리미티브는 8b10b 인코딩을 사용하여 SATA 또는 SAS 케이블에서 송신되는 코드 워드를 사용하여 물리적 층에서 통신된다. SATA 또는 SAS 케이블에서 통신은 송신(Tx) 및 수신(Rx)으로서 호스트의 관점으로부터 언급된 2개의 차동 와이어 쌍(differential pairs of wires)으로 구성된다. 이들 와이어는 커맨드 또는 정보를 송신할 수 있고, 제어를 위해 중재(arbitrated)된다. 이런 방식의 하나의 제한사항은 통신이 케이블에서 중재되면, 유일한 통신이 발생한다는 것이다. 즉, SATA 또는 SAS는 단일 FIS 소정의 시간에 단일 FIS만을 송신할 수 있다.
HBA(334)-SA 프로그래밍 순응 디바이스(336) 인터페이스가 제어기 내에 완전히 있다면, 예를 들어, 도 2에 도시된 솔리드 스테이트 메모리 시스템 제어기(208)의 경우에서와 같이, 정보 흐름은 케이블-연결된 SA 물리적 층에 제한사항이 없다. 본 발명의 다수의 실시예는 커맨드 층(352) 및 전송 층(354)에 의해 지원되는 FIS 및 커맨드의 사용을 보존하면서 물리적 층 및 링크 층의 사용을 포기한다. 동시성(Concurrency)은 4개의 세트 입력/출력, 예를 들어, 커맨드(Cmd), 응답(Rsp), 기록 데이터(Wr데이터), 및 판독 데이터(Rd데이터)와 같은 물리적 통신을 한정하는 것에 의해 달성될 수 있다. 따라서, 기능-특정 상호연결을 사용하는 것에 의해, 커맨드와 응답과 정보 전달 사이에 더 이상 충돌이 존재하지 않는다. 이들은 파이프라이닝되거나 동시에 동작될 수 있다. 즉, 기능-특정 상호연결은 HBA(334)와 SA 프로그래밍 순응 디바이스(336) 사이에 커맨드, 응답 및 정보를 동시에 전송하도록 구성될 수 있다. 기능-특정 상호연결은 SA 프로그래밍 순응 디바이스(336)에서 Cmd 입력에 연결된 HBA(334) 상의 Cmd 출력, HBA(334) 상의 Rsp 입력에 연결된 SA 프로그래밍 순응 디바이스(336) 상의 Rsp 출력, SA 프로그래밍 순응 디바이스(336) 상의 Wr데이터 입력에 연결된 HBA(334) 상의 Wr데이터 출력, 및 HBA(334) 상의 Rd 데이터 입력에 연결된 SA 프로그래밍 순응 디바이스(336) 상의 Rd 데이터 출력을 포함할 수 있다. 다수의 실시예에서, Cmd, Rsp, Wr데이터 및 Rd데이터 입력/출력 쌍 각각은 양방향일 수 있고, 8b10b 인코딩을 사용하지도 않고 프리미티브를 사용하지도 않을 수 있다.
기능-특정 상호연결은 제1 커맨드 프로토콜, 예를 들어, 특히 네이티브 커맨드 큐잉(native command queuing: NCQ) 및/또는 태그된 커맨드 큐잉(tagged command queuing: TCQ)에 응답하여 커맨드 인터페이스(HBA(334) 상의 Cmd 출력 및 SA 프로그래밍 순응 디바이스(336) 상의 Cmd 입력), 응답 인터페이스(HBA(334) 상의 Rsp 입력 및 SA 프로그래밍 순응 디바이스(336)에서 Rsp 출력) 및 정보 인터페이스(HBA(334) 상의 Wr데이터 출력 및 SA 프로그래밍 순응 디바이스(336) 상의 Wr데이터 입력 및/또는 HBA(334) 상의 Rd데이터 입력 및 SA 프로그래밍 순응 디바이스(336) 상의 Rd데이터 출력)를 동시에 동작시키도록 구성될 수 있다. 기능-특정 상호연결은 제2 커맨드 프로토콜, 예를 들어, 특히 비데이터, 프로그래밍된 입력/출력(programmed input/output: PIO) 및/또는 직접 메모리 액세스(DMA)에 응답하여 원자적으로 커맨드 인터페이스, 응답 인터페이스, 및 정보 인터페이스를 동작시키도록 구성될 수 있다.
커맨드 인터페이스는 호스트-디바이스(Host-Device: HD) FIS를 HBA(334)로부터 SA 프로그래밍 순응 디바이스(336)로 전달하는데 사용될 수 있다. HBA(334) 상의 Wr데이터 출력은 정보를 SA 프로그래밍 순응 디바이스(336) 상의 Wr데이터 입력으로 전달하는데 사용될 수 있다. SA 프로그래밍 순응 디바이스(336) 상의 Rd데이터 출력은 정보를 HBA(334) 상의 Rd데이터 입력으로 전달하는데 사용될 수 있다. 응답 인터페이스는 예를 들어, PIOSetup, DMAActivate, DMASetup 등을 사용하여 정보 전달을 한정하고(qualify), 완료, 예를 들어, 디바이스-호스트(DH) 및/또는 세트 디바이스 비트(set device bit: SDB) 등을 통신하는데 사용될 수 있다. 정보 전달을 한정하는 것은 정보를 전달하는 순서를 한정(defining)하는 것을 포함할 수 있다. 버퍼를 사용하면 대응하는 응답 FIS 전에 정보 이동을 시작할 수 있다.
도 3b는 본 발명의 다수의 실시예에 따라 HBA(334) 및 SA 프로그래밍 순응 디바이스(336)의 기능 블록도이다. HBA(334)는 보다 상세히 도시된 도 3a 에 도시된 HBA(234)와 유사할 수 있다. SA 프로그래밍 순응 디바이스(336)는 보다 상세히 도시된 도 3a에 도시된 SA 프로그래밍 순응 디바이스(236)와 유사할 수 있다.
HBA(334)는 Cmd 출력을 SA 프로그래밍 순응 디바이스(336)에 제공하는 커맨드 페처(command fetcher)(356)를 포함할 수 있다. HBA(334)는 SA 프로그래밍 순응 디바이스(336)로부터 Rsp 입력을 수신하는 응답 수신기(358)를 포함할 수 있다. HBA(334)는 Wr데이터 출력을 SA 프로그래밍 순응 디바이스(336)에 제공하는 다운스트림 DMA 디바이스(360)를 포함할 수 있다. HBA(334)는 SA 프로그래밍 순응 디바이스(336)로부터 Rd데이터 입력을 수신하는 업스트림 DMA 디바이스(362)를 포함할 수 있다. Cmd 페처(356), Rsp 수신기(358), 다운스트림 DMA(360), 및 업스트림 DMA(362) 각각은 서로 독립적으로 동작할 수 있는 하드웨어 구성요소일 수 있으나, 다수의 실시예에서, HBA FSM(372), 예를 들어, 어드밴스트 호스트 제어기 인터페이스(AHCI) 상태 기계와 동작을 동기화하여 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로부터 정보를 수신하고, 요청, 예를 들어, 기록 정보 페치(fetch)를 이에 송신하도록 구성될 수 있다. 다운스트림 DMA 디바이스(360)는 기록 정보를 수신하기 위해 적절한 버퍼링이 존재할 때 버스 I/F(364)를 통해 다수의 PCIe 판독 요청을 파이프라이닝하도록 구성될 수 있다. 버스 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-비트 커맨드-발행 레지스터에 의해 슬롯에 액세스할 수 있다. 제어 레지스터(370)는 기록 제어 정보의 입력 및 판독 제어 정보의 출력을 위해 제어 인터페이스(368)를 통해 PCIe I/F에 연결될 수 있다. 다수의 실시예에서, Cmd 페처(356)는 커맨드를 검색하고 이 커맨드를 SA 프로그래밍 순응 디바이스(336)에 커맨드가 발행된 순서대로 전송할 수 있다. 다수의 커맨드, 예를 들어, 32개의 커맨드가 제어 레지스터(370) 내에서 동시에 수신될 수 있고, Cmd 페처(356)에 인큐잉(enqueued)될 수 있다.
다수의 커맨드 슬롯은 커맨드 슬롯 그룹으로 그룹화될 수 있고, 이에 할당된 메시지 신호 인터럽트(MSI), 예를 들어, MSI-X, 벡터를 구비할 수 있다. 이러한 실시예는 다수의 포트를 위한 커맨드에 대해 32b AHCI 레지스터를 포함하는 일부 이전의 방법에 비하여 유리할 수 있다. 본 발명의 다수의 실시예는, 예를 들어 호스트, 예를 들어, 도 1에 도시된 호스트(102)에서 인터럽트 성능이 최적화될 수 있을 가능성을 개선시킬 수 있는, MSI 벡터와 함께 커맨드 그룹을 유리하게 만들 수 있는, 커맨드에 대해 256b 레지스터를 구비하는 하나의 포트를 포함한다.
HBA(334)는 인터리빙된 방식으로 리턴될 NCQ 판독을 위한 컨텍스트 어레이를 사용할 수 있다. 특정 판독 커맨드 내 정보는 순서대로 처리되지만, 다수의 계류 중인(outstanding) 판독 커맨드 중 일부분은 서로 인터리빙될 수 있다. 판독 컨텍스트가 SA 프로그래밍 순응 디바이스(336)에 의해 개시되면, HBA(334)는 컨텍스트 어레이로부터 판독 커맨드의 현재 스테이터스의 레코드를 검색하고 마지막으로 중단된 지점으로부터 계속될 수 있다. 판독 컨텍스트가 완료되면, HBA(334)는 업데이트된 커맨드 진행 값을 컨텍스트 어레이에 저장할 수 있다. 컨텍스트 어레이 위치는 각 가능한 계류 중인 판독 커맨드, 예를 들어, 256개의 계류 중인 판독 커맨드에 존재할 수 있다. 유사한 컨텍스트 어레이는 기록에 사용될 수 있다.
SA 프로그래밍 순응 디바이스(336)는 HBA(334), 예를 들어, HBA(334)의 커맨드 페처(356)로부터 Cmd 입력을 수신하는 커맨드 유한 상태 기계(finite state machine: FSM)(374)를 포함할 수 있다. SA 프로그래밍 순응 디바이스(336)는 Rsp 출력을 HBA(334), 예를 들어, HBA(334)의 응답 수신기(358)에 제공하는 디바이스-호스트 아비터(device-host arbiter: DH ARB)(376)를 포함할 수 있다. SA 프로그래밍 순응 디바이스(336)는 HBA(334), 예를 들어, HBA(334)의 다운스트림 DMA(360)로부터 Wr데이터 입력을 수신하는 기록 FSM(378)을 포함할 수 있다. SA 프로그래밍 순응 디바이스(336)는 Rd데이터 출력을 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)는 예를 들어, 기록 DMASetup을 위해 Wr FSM(378)로부터의 입력을 포함할 수 있다. DH ARB(376)는 예를 들어, 판독 DMASetup을 위해 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" 모드에서 원자적으로(atomically) 동작하도록 구성될 수 있다. 원자적으로 동작할 때, Cmd FSM(374)은 2개의 "PassControl" 신호, 즉 Wr FSM(378)에 대한 것과 Rd FSM(380)에 대한 것 중 하나를 선언하도록 구성될 수 있다. 이후, Cmd FSM(374)는 리셋 커맨드가 수신되거나 또는 "RetrunControl" 신호가 Wr FSM(378) 또는 Rd FSM(380)로부터 선언될 때까지 "WaitForCtl" 상태에 진입할 수 있다. 검출된 프로토콜이 비-데이터라면, PassControl 신호는 선언되지 않는다. Cmd FSM(374)은 커맨드 그 자체를 제공하고 완료시에 아이들 상태(idle)로 리턴할 수 있다. 커맨드 태그가 퇴거(retired) 준비된 것이라고 논리가 나타내는 경우, 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)는 휘발성 메모리(412), 예를 들어, 도 2에 도시된 휘발성 메모리(212)와 유사할 수 있는 DRAM과 통신할 수 있다. 따라서, 예를 들어, 블록 관리 디바이스(440)는 스위치 및 휘발성 메모리 제어 회로를 통해 휘발성 메모리(412)와 통신할 수 있다. 휘발성 메모리(412)는 다른 정보 중에서 특히 논리적 블록 어드레스(logical block address: LBA) 테이블(482), 블록 테이블(484) 및/또는 트랜잭션 로그(486)를 저장할 수 있다.
LBA 테이블(482)은 LUN, 예를 들어, 도 2에 도시된 LUN(250)에 페이지의 물리적 페이지 어드레스를 저장할 수 있고, 대응하는 논리적 어드레스를 포함할 수 있다. 즉, LBA 테이블(482)은 논리적-물리적 어드레스 변환(logical to physical address translation) 및/또는 물리적-논리적 어드레스 변환(physical to logical address translation)을 저장할 수 있다. 따라서, LBA 테이블(482)은 대응하는 정보가 저장될 수 있는 논리적 블록 어드레스에 대응하는 물리적 페이지 어드레스를 룩업(look-up)하는데 사용될 수 있다. LBA 테이블(482)은 연관된 SA 커맨드에 포함된 LBA에 의해 인덱스될 수 있다. 블록 테이블(484)은 소거가능한 블록을 위한 정보를 다수의 LUN에 저장할 수 있다. 블록 테이블(484)에 저장된 정보는 유효 페이지 정보, 소거 카운트, 및 다른 헬스 및/또는 스테이터스 정보를 포함할 수 있다. 블록 테이블(484)로부터 액세스된 정보는 물리적 블록 어드레스에 의해 인덱스될 수 있다. 트랜잭션 로그(486)는 LUN에서 발생하는 기록에 대해 정보를 레코드하는데 사용될 수 있다. 다수의 실시예에서, 트랜잭션 로그(486)는 LUN에 기록함과 동시에 업데이트될 수 있다. 트랜잭션 로그(486)는 예를 들어, 비휘발성 메모리에의 LBA 테이블(482)의 업데이트들 사이에 급격한 전력 손실 또는 다른 에러로 인해 손실될 수 있는 LBA 테이블(482)의 일부분의 재생성을 용이하게 하기 위해 LBA 테이블(482)이 비휘발성 메모리에 저장된 마지막 시간 이후 발생한 LUN에의 기록에 대한 정보를 포함할 수 있다.
블록 관리 디바이스(440) 내에 도시된 객체(object) 중 일부는 블록 관리 디바이스(440)에 의해 제공되는 기능을 나타낸다. LBA 테이블 룩업 기능(490)은 논리적-물리적 어드레스 변환을 수행하기 위해 휘발성 메모리(412)에 있는 LBA 테이블(482)을 참조(reference)할 수 있다. 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)에의 액세스를 스톨(stall)함이 없이 발생할 수 있어, 프로세스가 파이프라이닝된 구조를 사용하여 휘발성 메모리(412) 속도에서 진행할 수 있게 한다.
블록 관리 디바이스(440)는 휘발성 메모리(412)에 있는 블록 테이블(484) 내 복수의 블록 각각에 대한 헬스 및 스테이터스 정보를 저장하도록 구성될 수 있다. 블록 관리 디바이스(440)는 재사용 페이지 후보(494), 소거 블록 후보(495), 재사용 기록 블록 후보(496) 및/또는 호스트 기록 블록 후보(497)를 포함하는 후보 블록 테이블, 예를 들어, 블록 어레이(492)를 국부 메모리에 저장하도록 구성될 수 있다. 후보 블록 테이블은 특정 동작을 위한 다수의 기준에 기초하여 특정 동작, 예를 들어, 호스트 기록, 재사용 판독, 재사용 기록 및/또는 소거를 위한 후보 블록을 식별할 수 있다. 블록 관리 디바이스(440)는 예를 들어, 특정 블록에 대한 기록, 소거, 또는 에러 이벤트에 응답하여 블록 테이블(484)에 있는 특정 블록에 대한 헬스 및 스테이터스 정보를 업데이트하도록 구성될 수 있다. 블록 관리 디바이스(440)는 특정 블록을 위한 업데이트된 헬스 및 스테이터스 정보를 다수의 기준에 따라 후보 블록과 비교하도록 구성될 수 있다. 블록 관리 디바이스(440)는, 예를 들어, 특정 블록에 대한 헬스 및 스테이터스 정보가 휘발성 메모리(412)에서 업데이트되는 것과 동일한 클록 사이클에서 특정 블록이 다수의 기준을 더 우수하게 만족하는 것으로 비교가 나타내는 것에 적어도 부분적으로 응답하여 특정 블록을 식별하는 후보 블록 테이블을 업데이트하도록 구성될 수 있다.
전술된 후보 선택 프로세스는 예를 들어 기록, 소거, 또는 에러 이벤트의 결과 새로운 블록 테이블(484) 액세스에 의존하지 않는 테이블 워킹 프로세스(table walking process)로 보충될 수 있다. 테이블 워킹 프로세스는 블록 관리 디바이스(440)에 있는 블록 어레이(492)에 국부적으로 저장되지 않은 블록 정보의 이력을 복구(recover)할 수 있다. 테이블 워킹은 기록, 소거, 또는 에러 이벤트의 결과 블록 테이블(484) 액세스에 비해 더 느린 배경 프로세스(background process)일 수 있다. 전체 블록 테이블(484)이 워킹(work)되면, 테이블 워킹 프로세스는 예를 들어, 휘발성 메모리(412) 전력 소비를 감소시키기 위해 중단될 수 있다. 일부 경우에, 새로운 블록 테이블(484) 액세스는 테이블 워킹 프로세스를 재개시할 수 있다. 따라서, 블록 관리 디바이스(440)는 휘발성 메모리(412)에 있는 블록 테이블(484) 내 복수의 블록 각각에 대한 업데이트된 헬스 및 스테이터스 정보를 복수의 블록 중 임의의 블록에 대하여 기록, 소거 또는 에러 이벤트에 상관없이 다수의 기준에 따라 후보 블록과 비교하도록 구성될 수 있다. 블록을 비교하는 것은 복수의 블록 각각이 비교된 후에 중단될 수 있다.
본 발명의 다수의 실시예에서, 호스트 동작은 LBA 테이블(482)을 업데이트하기 위해 코히런시 포인트의 사용에 따라 재사용 프로세스 동안 스톨되지 않는다. 재사용 프로세스 동안, 예를 들어, 재사용 페이지 후보(494)로부터 재사용 페이지 후보는 제1 위치로부터 판독되고 제2 위치로 기록된다. 이 판독 및 기록 동안, 호스트는 새로운 정보를, 현재 재사용을 위해 프로세싱되고 LBA 테이블(482)을 새로운 물리적 어드레스로 업데이트되는 LBA에 기록할 수 있다. 재사용이 페이지 판독 및 기록을 종료하면, LBA 테이블(482)은 재사용되는 LBA를 위한 LBA 테이블(482) 엔트리가 제1 위치로부터 정보 판독과 동일한 물리적 어드레스를 구비하는 경우에만, 예를 들어, 호스트가 LBA 테이블(482)에 있는 엔트리를 업데이트하지 않은 경우 새로운 물리적 어드레스로 업데이트될 수 있다. 재사용 판독에 대응하는 페이지는 무효로 마크되어, 예를 들어, 도난된 정보를 블록 테이블(484)에 저장할 수 있다. 물리적 어드레스가 재사용 판독에 대응하는 어드레스와 상이한 경우, 이는 호스트가 업데이트된 것을 나타내고, LBA 테이블은 재사용 기록마다 새로운 물리적 어드레스로 업데이트되지 않는다. 재사용 기록이 블록 테이블(484)에서 무효화되면 재사용 기록에 대응하는 물리적 위치는 무효 정보를 저장하는 것을 나타낸다.
메모리 관리 회로, 예를 들어, 블록 관리 디바이스(440)는 정보가 특정 블록에 재사용 동작 동안 특정 블록으로부터 판독되기 전에 블록 테이블(484)로부터 특정 블록에 대한 논리적 어드레스에 대응하는 제1 물리적 어드레스를 검색하도록 구성될 수 있다. 블록 관리 디바이스(440)는 정보가 재사용 동작 동안 상이한 블록에 기록된 후 LBA 테이블(482)로부터 논리적 어드레스에 대응하는 제2 물리적 어드레스를 검색하도록 구성될 수 있다. 블록 관리 디바이스(440)는 제2 물리적 어드레스가 제1 물리적 어드레스와 동일한 것에 적어도 부분적으로 응답하여 상이한 블록에 대응하는 제3 물리적 어드레스로 업데이트하도록 LBA 테이블(482)을 구성될 수 있다. 블록 관리 디바이스(440)는 제2 물리적 어드레스가 제1 물리적 어드레스와는 상이한 것에 적어도 부분적으로 응답하여 재사용 동작을 무효화하도록 구성될 수 있다.
블록 관리 디바이스(440)는 호스트 커맨드 큐(498)와 메모리 커맨드 큐(499) 사이에 연결될 수 있다. 호스트 커맨드 큐(498)는 도 1에 도시된 호스트(102)와 같은 호스트, 도 2에 도시된 메모리 회로(238)에 대한 SA 및/또는 도 2에 도시된 호스트 인터페이스(214)의 다수의 구성요소와 연관될 수 있다. 메모리 커맨드 큐(499)는 도 2에 도시된 CRQ(242), LRQ(244) 및 LCQ(246), 및/또는 다른 구성요소 중 하나 이상과 유사할 수 있다.
메모리 관리 회로, 예를 들어, 블록 관리 디바이스(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에 재사용 동작을 보류(suspend)하는 것에 의해 메모리 시스템 제어기의 기록 대역폭을 개선하도록 제한될 수 있다. 할당된 LUN 중 적어도 하나는 LUN이 호스트 기록을 위한 LUN의 특정 시퀀스에서 그 다음의 LUN의 임계수 내에 있다는 것을 나타내는 LUN의 특정 시퀀스에 적어도 부분적으로 응답하여 재사용 동작으로부터 할당해제될 수 있다. 임계 수는 재사용 판독 동작, 재사용 기록 동작, 및 재사용 소거 동작 각각에 대해 상이할 수 있다. 임계 수는 재사용 동작이 기록 동작 이전에 발생하지 않는 LUN의 수가 존재하는 "배타적 영역(exclusion zone)"을 나타낼 수 있다.
채널당 다수의 LUN를 사용하면 특정 채널이 처리할 수 있는 것보다 더 많은 커맨드들이 발행되는 상황을 초래할 수 있고 이는 예를 들어, 도 2에 있는 CRQ(242), LRQ(244), 및 LCQ(246)에 대해 전술된 바와 같이 메모리 채널에 대해 커맨드의 큐잉을 초래할 수 있다. 메모리 관리 회로는 임계값 내에 있는 특정 LUN과 연관된 큐의 수가 가득 찬 것에 적어도 부분적으로 응답하여 재사용 동작을 위해 발행된 커맨드의 수를 특정 LUN으로 제한하도록 구성될 수 있다. 채널당 커맨드의 최대 수는 또한 원하는 전력 포락선(power envelope) 내에 머무르도록 제한될 수 있다. 재사용 동작을 위해 발행된 커맨드의 수는 메모리 시스템 제어기에 의해 사용될 전력의 양이 전력 임계량을 초과하는 것에 적어도 부분적으로 응답하여 제한될 수 있다. 채널당 커맨드의 최대 수는 또한 예를 들어 동일한 채널 및/또는 LUN를 위한 백-투-백(back-to-back) 커맨드가 효율적인 동작을 위해 충분히 이격된 것을 보장하기 위하여 제한될 수 있다. 메모리 관리 회로는 적어도 최소 시간, 예를 들어, 재사용 동작을 위한 제1 커맨드와 제2 커맨드의 발행 사이에 클록의 수를 강제하도록 구성될 수 있다. 최소 시간은 예를 들어, 소거된 블록의 수가 감소함에 따라 재사용 대역폭이 증가될 수 있으므로 LUN에서 소거된 블록의 총 수에 기초할 수 있다.
최대 호스트 기록 대역폭은 소거된 블록의 적절한 공급이 이용가능한 경우 단기적으로 유지될 수 있다. 소거된 블록의 공급이 거의 소비되면, 기록 대역폭은 재사용 동작의 증가로 인해 감소할 수 있다. 메모리 관리 회로는 예를 들어, 블록 테이블(484)를 참조하여 LUN의 도달범위에 소거된 블록의 수를 추적하도록 구성될 수 있다. 메모리 관리 회로는 특정 LUN에서 소거된 블록의 수가 재사용 임계 수를 초과하는 것, 예를 들어, 임계 수 미만으로 떨어지는 것에 적어도 부분적으로 응답하여 특정 LUN을 위한 재사용 동작을 수행하도록 구성될 수 있다. 메모리 관리 회로는 특정 LUN에서 소거된 블록의 수가 재사용 임계 수를 초과하는 것, 예를 들어, 임계 수를 넘는 것에 적어도 부분적으로 응답하여 특정 LUN을 위한 재사용 동작을 보류하도록 구성될 수 있다. 호스트 기록은 특정 LUN에서 소거된 블록의 수가 호스트 기록 임계 수 미만으로 떨어지는 것에 적어도 부분적으로 응답하여 특정 LUN에 대해 보류될 수 있다. 메모리 관리 회로는 특정 LUN에서 소거된 블록의 수가 기록 임계 수를 초과하는 것, 예를 들어, 임계 수 미만으로 떨어지는 것에 적어도 부분적으로 응답하여 특정 LUN에 기록을 보류하도록 구성될 수 있다. 메모리 관리 회로는 특정 LUN에서 소거된 블록의 수가 재사용 임계 수를 초과하는 것, 예를 들어, 임계 수를 넘어 가는 것에 적어도 부분적으로 응답하여 특정 LUN에 기록을 재수행하도록 구성될 수 있다. 이 실시예는 재사용 동작과 기록 동작 사이에 평형, 예를 들어, 동적 부하 밸런싱을 제공하는 것을 도와줄 수 있다.
일부 메모리 동작은 긴 지속기간을 구비한다. 채널 제어 회로, 예를 들어, 도 2에 도시된 채널 제어 회로(248)는 스테이터스 판독을 LUN에 발행하여, 예를 들어, 특정 메모리 동작이 완료된 때를 결정하도록 구성된 폴링 논리(polling logic)를 포함할 수 있다. 일부 경우에, 이러한 폴링은 폴링된 LUN과 동일한 채널을 사용하여 다른 커맨드와 간섭할 수 있다. 본 발명의 다수의 실시예에 따르면, 폴링 논리는 LUN으로 발행된 커맨드에 의해 지시된 동작의 유형에 따라 특정 시간 동안 아이들 상태에 있을 수 있다. 아이들 상태 시간은, 예를 들어, 특정 동작이 특히 판독, 기록 및/또는 소거 동작과 같은 특정 동작이 취할 것으로 예상되는 시간에 따라 특정 동작에 대해 설정될 수 있다.
결론
본 발명은 메모리 시스템 제어기를 구비하는 여러 장치의 예를 포함한다. 하나의 이러한 메모리 시스템 제어기는 호스트 버스 어댑터(HBA) 및 직렬 부착(SA) 프로그래밍 순응 디바이스를 포함할 수 있고, 상기 SA 프로그래밍 순응 디바이스는 상기 HBA와 상기 SA 프로그래밍 순응 디바이스 사이에 커맨드, 응답, 및 정보를 동시에 전송하도록 구성된 기능 특정 상호연결부를 통해 상기 HBA에 연결된다.
하나의 요소가 다른 요소의 "위에" 있거나, 다른 요소에 "연결"되거나 또는 다른 요소와 "결합"된 것으로 지칭될 때, 이 하나의 요소는 다른 요소의 바로 위에 있거나, 다른 요소에 직접 연결되거나, 또는 다른 요소와 직접 결합되거나 또는 개재 요소들이 존재할 수 있는 것으로 이해된다. 이와 대조적으로, 하나의 요소가 다른 요소의 "바로 위에" 있거나, 다른 요소에 "직접 연결"되거나 또는 다른 요소와 "직접 결합"된 것으로 지칭될 때에는, 개재 요소나 층이 존재하지 않는다. 본 명세서에 사용된 바와 같이 "및/또는"이라는 용어는 다수의 연관된 리스트 항목 중 어느 하나 및 모든 조합을 포함한다.
본 명세서에 사용된 바와 같이 "및/또는"이라는 용어는 다수의 연관된 리스트 항목 중 어느 하나 및 모든 조합을 포함한다. 본 명세서에 사용된 바와 같이, 달리 언급되지 않는 한, "또는"이라는 용어는 논리적으로 포함적 논리합(inclusive or)을 의미한다. 즉, "A 또는 B"는 (A만), (B만), 또는 (A 및 B 모두)를 포함할 수 있다. 다시 말해, "A 또는 B"는 "A 및/또는 B" 또는 "A 및 B 중 하나 이상"을 의미할 수 있다.
제1, 제2, 제3 등이 여러 요소를 나타내는데 본 명세서에서 사용될 수 있으나, 이들 요소는 이들 용어로만 제한되는 것은 아닌 것으로 이해된다. 이들 용어는 하나의 요소를 다른 요소와 구별하는 데에만 사용된다. 따라서, 제1 요소는 본 발명의 개시 내용을 벗어남이 없이 제2 요소로 명명될 수 있다.
특정 실시예들이 본 명세서에 도시되고 설명되었으나, 이 기술 분야에 통상의 지식을 가진 자라면 동일한 결과를 달성하도록 계산된 배열이 도시된 특정 실시예 대신에 사용될 수 있다는 것을 이해할 수 있을 것이다. 본 발명은 본 발명의 하나 이상의 실시예의 변형이나 변경을 커버하도록 의도된다. 상기 상세한 설명은 예시적인 방식으로 이루어진 것이지 발명을 제한하는 것으로 이루어진 것이 아닌 것으로 이해된다. 상기 실시예와 본 명세서에 구체적으로 설명되지 않은 다른 실시예의 조합은 상기 상세한 설명을 검토할 때 이 기술 분야에 통상의 지식을 가진 자에게는 명백할 것이다. 본 발명의 하나 이상의 실시예의 범위는 상기 구조 및 방법이 사용되는 다른 응용을 포함한다. 그리하여, 본 발명의 다수의 실시예의 범위는 첨부된 청구범위와 이 청구범위에 주어진 것과 균등한 범위를 참조하여 결정되어야 한다.
상기 상세한 설명에서, 일부 특징은 본 발명을 간결하게 하기 위하여 단일 실시예로 서로 그룹화되어 있다. 이러한 설명 방법은 본 발명의 개시된 실시예가 각 청구범위에 명시적으로 언급된 것보다 더 많은 특징을 사용하여야 하는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 이하 특허청구범위에서 나타나듯이, 본 발명의 주제는 단일 개시된 실시예의 모든 특징보다 더 적다. 따라서, 이하 청구범위는 본 상세한 설명에 포함되며, 각 청구항은 별도의 실시예로서 각기 존재한다.

Claims (20)

  1. 장치로서,
    호스트 버스 어댑터(host bus adapter: HBA); 및
    직렬 부착(serial attachment: SA) 프로그래밍 순응 디바이스를 포함하되,상기 SA 프로그래밍 순응 디바이스는 상기 HBA와 상기 SA 프로그래밍 순응 디바이스 사이에 커맨드, 응답 및 다른 정보를 동시에 전송하도록 구성된 기능 특정 상호연결부를 통해 상기 HBA에 연결된 것인 장치.
  2. 제1항에 있어서, 상기 기능 특정 상호연결부는,
    상기 SA 프로그래밍 순응 디바이스 상의 커맨드 입력에 연결된 상기 HBA 상의 커맨드 출력;
    상기 HBA 상의 응답 입력에 연결된 상기 SA 프로그래밍 순응 디바이스 상의 응답 출력;
    상기 SA 프로그래밍 순응 디바이스 상의 기록 정보 입력에 연결된 상기 HBA 상의 기록 정보 출력; 및
    상기 HBA 상의 판독 정보 입력에 연결된 상기 SA 프로그래밍 순응 디바이스 상의 판독 정보 출력을 포함하는 것인 장치.
  3. 제2항에 있어서, 상기 커맨드, 응답, 기록 정보, 및 판독 정보 입력/출력 쌍은 일방향이고, 8b10b 인코딩도 사용하지 않고 프리미티브(primitive)도 사용하지 않는 것인 장치.
  4. 제1항에 있어서, 상기 기능 특정 상호연결부는 제1 커맨드 프로토콜에 응답하여 커맨드 인터페이스, 응답 인터페이스 및 정보 인터페이스를 동시에 동작시키도록 구성된 것인 장치.
  5. 제4항에 있어서, 상기 기능 특정 상호연결부는 제2 커맨드 프로토콜에 응답하여 원자적으로(atomically) 상기 커맨드 인터페이스, 상기 응답 인터페이스 및 상기 정보 인터페이스를 동작시키도록 구성된 것인 장치.
  6. 제1항에 있어서, 상기 HBA는,
    커맨드 페처(command fetcher);
    응답 수신기;
    다운스트림 직접 메모리 액세스(direct memory access: DMA) 디바이스; 및
    업스트림 DMA 디바이스를 포함하는 것인 장치.
  7. 제6항에 있어서, 상기 SA 프로그래밍 순응 디바이스는,
    디바이스-호스트(device-host: DH) 아비터(arbiter);
    상기 DH 아비터에 연결된 커맨드 유한 상태 기계(finite state machine: FSM);
    상기 DH 아비터에 연결된 기록 FSM; 및
    상기 DH 아비터에 연결된 판독 FSM을 포함하며;
    상기 DH 아비터는, 정보 전달 순서를 한정하고(qualify), 상기 커맨드 FSM, 상기 기록 FSM 및 상기 판독 FSM으로부터의 입력에 기초하여 상기 HBA에 완료(completion)를 통지하도록 구성된 것인 장치.
  8. 제7항에 있어서, 상기 기록 FSM은, 상기 DH 아비터가 기록 정보 전달 순서를 한정하기 전에, 기록 정보를 버퍼링하도록 구성된 기록 버퍼를 포함하는 것인 장치.
  9. 제7항에 있어서, 상기 판독 FSM은, 상기 DH 아비터가 판독 정보 전달 순서를 한정하기 전에, 판독 정보를 버퍼링하도록 구성된 판독 버퍼를 포함하는 것인 장치.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 SA 프로그래밍 순응 디바이스는 SATA(serial advanced technology attachment) 프로그래밍 순응 디바이스를 포함하는 것인 장치.
  11. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 SA 프로그래밍 순응 디바이스는 직렬 부착된 소형 컴퓨터 시스템 인터페이스(serial attached small computer system interface: SAS) 프로그래밍 순응 디바이스를 포함하는 것인 장치.
  12. 방법으로서,
    호스트 버스 어댑터(HBA)와 직렬 부착(SA) 프로그래밍 순응 디바이스 사이에 커맨드를 전송하는 단계;
    상기 HBA와 상기 SA 프로그래밍 순응 디바이스 사이에 응답을 상기 커맨드와 동시에 전송하는 단계; 및
    상기 HBA와 상기 SA 프로그래밍 순응 디바이스 사이에 다른 정보를 상기 커맨드와 동시에 전송하는 단계를 포함하는 방법.
  13. 제12항에 있어서, 상기 방법은,
    상기 HBA와 상기 SA 프로그래밍 순응 디바이스 사이에 커맨드 인터페이스를 통해 상기 커맨드를 전송하는 단계;
    상기 HBA와 상기 SA 프로그래밍 순응 디바이스 사이에 응답 인터페이스를 통해 상기 응답을 전송하는 단계; 및
    상기 HBA와 상기 SA 프로그래밍 순응 디바이스 사이에 정보 인터페이스를 통해 다른 정보를 전송하는 단계를 포함하는 것인 방법.
  14. 제13항에 있어서, 상기 방법은 제1 커맨드 프로토콜에 응답하여 상기 커맨드 인터페이스, 상기 응답 인터페이스 및 상기 정보 인터페이스를 동시에 동작시키는 단계를 포함하는 것인 방법.
  15. 제13항에 있어서, 상기 방법은 제2 커맨드 프로토콜에 응답하여 원자적으로, 상기 커맨드 인터페이스, 상기 응답 인터페이스, 및 상기 정보 인터페이스를 동작시키는 단계를 포함하는 것인 방법.
  16. 제12항 내지 제15항 중 어느 한 항에 있어서, 상기 방법은 정보 전달 순서를 한정하는 단계, 및 커맨드 유한 상태 기계, 기록 유한 상태 기계, 및 판독 유한 상태 기계로부터의 입력에 기초하여 상기 HBA에 완료를 통지하는 단계를 포함하는 것인 방법.
  17. 제16항에 있어서, 상기 방법은,
    판독 정보 전달 순서를 한정하기 전에 판독 정보를 버퍼링하는 단계; 및
    기록 정보 전달 순서를 한정하기 전에 기록 정보를 버퍼링하는 단계를 포함하는 것인 방법.
  18. 장치로서,
    호스트 버스 어댑터(HBA); 및
    SA 프로그래밍 순응 디바이스를 포함하되,
    상기 HBA는,
    커맨드 출력;
    응답 입력;
    기록 정보 출력; 및
    판독 정보 입력을 포함하며,
    상기 SA 프로그래밍 순응 디바이스는,
    상기 커맨드 출력에 연결된 커맨드 입력;
    상기 응답 입력에 연결된 응답 출력;
    상기 기록 정보 출력에 연결된 기록 정보 입력; 및
    상기 판독 정보 입력에 연결된 판독 정보 출력을 포함하는 것인 장치.
  19. 제18항에 있어서, 상기 HBA는 커맨드의 동시 전달, 응답의 수신, 기록 정보의 전달 및 판독 정보의 수신을 제공하도록 구성된 복수의 직접 메모리 액세스(DMA) 디바이스를 포함하는 것인 장치.
  20. 제18항 또는 제19항에 있어서, 상기 SA 프로그래밍 순응 디바이스는 커맨드의 동시 수신, 응답의 전달, 기록 정보의 수신 및 판독 정보의 전달을 제공하도록 구성된 복수의 유한 상태 기계(FSM)를 포함하는 것인 장치.
KR1020137034538A 2011-05-31 2012-05-24 메모리 시스템 제어기를 구비하는 장치 및 관련 방법 KR101532863B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/149,447 US8621113B2 (en) 2011-05-31 2011-05-31 Apparatus including host bus adapter and serial attachment programming compliant device and related methods
US13/149,447 2011-05-31
PCT/US2012/039439 WO2012166548A2 (en) 2011-05-31 2012-05-24 Apparatus including memory system controllers and related methods

Publications (2)

Publication Number Publication Date
KR20140025541A true KR20140025541A (ko) 2014-03-04
KR101532863B1 KR101532863B1 (ko) 2015-06-30

Family

ID=47260205

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137034538A KR101532863B1 (ko) 2011-05-31 2012-05-24 메모리 시스템 제어기를 구비하는 장치 및 관련 방법

Country Status (7)

Country Link
US (2) US8621113B2 (ko)
EP (1) EP2715729B1 (ko)
JP (1) JP5918359B2 (ko)
KR (1) KR101532863B1 (ko)
CN (1) CN103635969B (ko)
TW (1) TWI463314B (ko)
WO (1) WO2012166548A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210143102A (ko) * 2020-05-19 2021-11-26 웨스턴 디지털 테크놀로지스, 인코포레이티드 보안 키에 의한 커맨드 실행 순서화를 위한 저장 시스템 및 방법
KR20220037518A (ko) * 2019-08-12 2022-03-24 어드밴스드 마이크로 디바이시즈, 인코포레이티드 영구 메모리 시스템 등을 위한 데이터 무결성

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201790B2 (en) * 2007-10-09 2015-12-01 Seagate Technology Llc System and method of matching data rates
US9405027B2 (en) 2012-01-12 2016-08-02 Westerngeco L.L.C. Attentuating noise acquired in an energy measurement
US20140032820A1 (en) * 2012-07-25 2014-01-30 Akinori Harasawa Data storage apparatus, memory control method and electronic device with data storage apparatus
US20150074293A1 (en) * 2013-09-10 2015-03-12 Kabushiki Kaisha Toshiba Information processing system, storage device and controlling method of storage device
US10073731B2 (en) * 2013-11-27 2018-09-11 Intel Corporation Error correction in memory
US9933980B2 (en) 2014-02-24 2018-04-03 Toshiba Memory Corporation NAND raid controller for connection between an SSD controller and multiple non-volatile storage units
KR102211709B1 (ko) 2014-05-19 2021-02-02 삼성전자주식회사 신호 송수신 특성을 향상한 불휘발성 메모리 시스템, 호스트 장치, 불휘발성 메모리 시스템 및 호스트의 동작방법
CN106257434B (zh) * 2015-06-16 2019-04-30 深圳市中兴微电子技术有限公司 一种基于增强型外设互连协议总线的数据传输方法及装置
WO2017113329A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 一种主机集群中缓存管理方法及主机
US10140057B2 (en) * 2016-02-18 2018-11-27 Micron Technology, Inc. Apparatuses and methods for multiple address registers for a solid state device
KR102466239B1 (ko) * 2016-04-05 2022-11-14 에스케이하이닉스 주식회사 메모리 컨트롤러를 포함하는 메모리 시스템 및 그의 동작 방법
US10152237B2 (en) * 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
CN107479824B (zh) * 2016-06-08 2020-03-06 宜鼎国际股份有限公司 冗余磁盘阵列系统及其数据储存方法
US10318185B2 (en) * 2016-07-01 2019-06-11 Intel Corporation Method and apparatus to provide both storage mode and memory mode access to non-volatile memory within a solid state drive
US10613772B2 (en) * 2017-03-16 2020-04-07 Qualcomm Incorporated Methods and apparatuses for copying a data page in an unmanaged flash memory device
KR102385541B1 (ko) * 2017-09-29 2022-04-11 삼성전자주식회사 버스 시스템
TWI680375B (zh) * 2018-08-23 2019-12-21 慧榮科技股份有限公司 具有分散式信箱架構的多處理器系統及其處理器錯誤檢查方法
CN114721978B (zh) * 2022-03-04 2023-08-25 成都储迅科技有限责任公司 一种加快Nand Flash控制命令执行速度的方法及系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784390A (en) * 1995-06-19 1998-07-21 Seagate Technology, Inc. Fast AtA-compatible drive interface with error detection and/or error correction
JPH11242632A (ja) * 1998-02-26 1999-09-07 Hitachi Ltd メモリ装置
US8006001B2 (en) * 2004-09-22 2011-08-23 Lsi Corporation Method and apparatus for manipulating direct memory access transfers
CN103744790B (zh) * 2005-08-25 2017-05-10 美国莱迪思半导体公司 智能可缩放存储切换架构
US7809068B2 (en) * 2005-12-28 2010-10-05 Intel Corporation Integrated circuit capable of independently operating a plurality of communication channels
US8635376B2 (en) 2006-02-22 2014-01-21 Emulex Design & Manufacturing Corporation Computer system input/output management
US20070294459A1 (en) * 2006-06-16 2007-12-20 Acard Technology Corp. Apparatus for bridging a host to a SAN
US7502874B2 (en) 2006-11-21 2009-03-10 Lsi Corporation Methods and systems for integrating unique information in SAS interface components
US7627709B2 (en) 2006-12-12 2009-12-01 Spectra Logic Corporation Computer bus power consuming device
JP4445535B2 (ja) * 2007-09-19 2010-04-07 富士通株式会社 データ転送装置,情報処理システム,データ転送プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
US20090119452A1 (en) * 2007-11-02 2009-05-07 Crossroads Systems, Inc. Method and system for a sharable storage device
US8225019B2 (en) * 2008-09-22 2012-07-17 Micron Technology, Inc. SATA mass storage device emulation on a PCIe interface
US7886105B2 (en) * 2008-12-04 2011-02-08 Lsi Corporation Combined fibre channel and SAS host bus adapter
US9176883B2 (en) * 2009-04-30 2015-11-03 HGST Netherlands B.V. Storage of data reference blocks and deltas in different storage devices
US20110040924A1 (en) 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8694723B2 (en) * 2011-04-28 2014-04-08 Lsi Corporation Method and system for coupling serial attached SCSI (SAS) devices and internet small computer system internet (iSCSI) devices through single host bus adapter

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220037518A (ko) * 2019-08-12 2022-03-24 어드밴스드 마이크로 디바이시즈, 인코포레이티드 영구 메모리 시스템 등을 위한 데이터 무결성
KR20210143102A (ko) * 2020-05-19 2021-11-26 웨스턴 디지털 테크놀로지스, 인코포레이티드 보안 키에 의한 커맨드 실행 순서화를 위한 저장 시스템 및 방법
US11563570B2 (en) 2020-05-19 2023-01-24 Western Digital Technologies, Inc. Storage system and method for command execution ordering by security key

Also Published As

Publication number Publication date
US20140189163A1 (en) 2014-07-03
TWI463314B (zh) 2014-12-01
CN103635969B (zh) 2017-02-15
EP2715729A4 (en) 2015-10-07
US20120311193A1 (en) 2012-12-06
US8621113B2 (en) 2013-12-31
CN103635969A (zh) 2014-03-12
EP2715729A2 (en) 2014-04-09
EP2715729B1 (en) 2017-02-08
JP5918359B2 (ja) 2016-05-18
TW201303586A (zh) 2013-01-16
JP2014517402A (ja) 2014-07-17
WO2012166548A3 (en) 2013-02-28
WO2012166548A2 (en) 2012-12-06
KR101532863B1 (ko) 2015-06-30

Similar Documents

Publication Publication Date Title
KR101573591B1 (ko) 메모리 시스템 제어기를 구비하는 장치 및 관련 방법
US8949492B2 (en) Apparatus including buffer allocation management and related methods
KR101532863B1 (ko) 메모리 시스템 제어기를 구비하는 장치 및 관련 방법
US9747029B2 (en) Apparatus including memory management control circuitry and related methods for allocation of a write block cluster
JP6163532B2 (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: 20180618

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190619

Year of fee payment: 5