KR102170644B1 - 낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용한 비휘발성 메모리 채널 제어 - Google Patents

낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용한 비휘발성 메모리 채널 제어 Download PDF

Info

Publication number
KR102170644B1
KR102170644B1 KR1020140011498A KR20140011498A KR102170644B1 KR 102170644 B1 KR102170644 B1 KR 102170644B1 KR 1020140011498 A KR1020140011498 A KR 1020140011498A KR 20140011498 A KR20140011498 A KR 20140011498A KR 102170644 B1 KR102170644 B1 KR 102170644B1
Authority
KR
South Korea
Prior art keywords
sequencer
nonvolatile memory
block
interface
low
Prior art date
Application number
KR1020140011498A
Other languages
English (en)
Other versions
KR20140103048A (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 KR20140103048A publication Critical patent/KR20140103048A/ko
Application granted granted Critical
Publication of KR102170644B1 publication Critical patent/KR102170644B1/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/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
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • 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

Landscapes

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

Abstract

시스템은 제어 프로세서, 비휘발성 메모리 디바이스 인터페이스, 및 마이크로-시퀀서를 포함한다. 제어 프로세서는 커맨드 인터페이스를 통해 커맨드를 수신하고 응답을 송신하도록 구성될 수 있다. 비휘발성 메모리 디바이스 인터페이스는 시스템을 하나 이상의 비휘발성 메모리 디바이스에 결합하도록 구성될 수 있다. 마이크로-시퀀서는 일반적으로 (i) 제어 프로세서 및 (ii) 비휘발성 메모리 디바이스 인터페이스에 결합된다. 마이크로-시퀀서는 마이크로-시퀀서에 의해 판독가능하고 제어 프로세서에 의해 기록가능한 제어 저장소를 포함한다. 커맨드 중 특정 커맨드를 수신한 것에 응답하여, 제어 프로세서는 상기 마이크로-시퀀서가 상기 특정 커맨드에 따라 상기 제어 저장소 내 위치에서 실행을 시작하도록 구성되고, 상기 마이크로-시퀀서는 상기 비휘발성 메모리 디바이스 인터페이스에 결합된 하나 이상의 비휘발성 메모리 디바이스의 프로토콜에 따라 상기 특정 커맨드의 적어도 일부를 수행하도록 구성된다.

Description

낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용한 비휘발성 메모리 채널 제어{NON-VOLATILE MEMORY CHANNEL CONTROL USING A GENERAL PURPOSE PROGRAMMABLE PROCESSOR IN COMBINATION WITH A LOW LEVEL PROGRAMMABLE SEQUENCER}
본 발명은 일반적으로 메모리 시스템에 관한 것이고, 보다 상세하게는, 낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용하여 비휘발성 메모리 채널 제어를 구현하는 방법 및/또는 장치에 관한 것이다.
종래의 비휘발성 메모리 제어 시스템은 다수의 상이한 프로토콜을 사용하여 시스템에 의해 사용될 수 있는 디바이스의 범위에 유연성을 제공하도록 한다. 다수의 상이한 프로토콜을 지원하는 것은, 인터페이스의 각 고려되는 유형에 대해, 그리고 각 요구되는 인터페이스 커맨드 유형에 대해 전용 제어로직(contol logic)을 갖는다. 각 인터페이스 프로토콜에서 전용 제어로직에 의존하는 것은 매우 유연한 방법이 아니고, 인터페이스 프로토콜의 버전을 새롭게 또는 약간 변경하려면 고가의 로직을 재설계하는 것이 필요하다. 대안적으로, 중앙 처리 유닛(CPU)은 비휘발성 메모리 인터페이스의 낮은 레벨 제어에 일부 유연성을 제공하는데 사용될 수 있다. 그러나, 이것은 CPU에 많은 부담을 주어 제한된 성능을 초래한다.
따라서 낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용하여 비휘발성 메모리 채널 제어를 구현하는 것이 바람직하다.
본 발명은 제어 프로세서, 비휘발성 메모리 디바이스 인터페이스, 및 마이크로-시퀀서를 포함하는 시스템에 관한 것이다. 제어 프로세서는 커맨드 인터페이스를 통해 커맨드를 수신하고 응답을 송신하도록 구성될 수 있다. 비휘발성 메모리 디바이스 인터페이스는 시스템을 하나 이상의 비휘발성 메모리 디바이스에 결합(couple)하도록 구성될 수 있다. 마이크로-시퀀서는 일반적으로 (i) 제어 프로세서에 및 (ii) 비휘발성 메모리 디바이스 인터페이스에 결합된다. 마이크로-시퀀서는 마이크로-시퀀서에 의해 판독가능하고 제어 프로세서에 의해 기록가능한 제어 저장소를 포함한다. 특정 커맨드를 수신한 것에 응답하여, 제어 프로세서는 마이크로-시퀀서가 특정 커맨드에 따라 제어 저장소 내 위치에서 실행을 시작하도록 구성되고, 마이크로-시퀀서는 비휘발성 메모리 디바이스 인터페이스에 결합된 하나 이상의 비휘발성 메모리 디바이스의 프로토콜에 따라 특정 커맨드의 적어도 일부를 수행하도록 구성된다.
본 발명의 시스템에 있어서, 비휘발성 메모리 디바이스 인터페이스는 복수의 데이터 I/O 핀 및 복수의 제어 I/O 핀을 포함하는 것을 특징으로 한다.
또한, 상기 마이크로-시퀀서는 상기 프로토콜에 따라 상기 특정 커맨드를 수행하도록 상기 제어 I/O 핀 및 상기 데이터 I/O 핀의 상태를 변화시키도록 구성된 것을 특징으로 한다.
또한, 상기 제어 저장소는 상기 비휘발성 메모리 디바이스 인터페이스에 부착된 상기 하나 이상의 비휘발성 메모리 디바이스와 연관된 하나 이상의 프로토콜을 수행하도록 상기 제어 프로세서에 의해 프로그래밍되는 것을 특징으로 한다.
본 발명의 시스템에 있어서, 상기 제어 프로세서는, 초기에 상기 제어 프로세서가 복수의 유형의 비휘발성 메모리 디바이스와 호환가능한 저속 프로토콜을 수행하도록 상기 제어 저장소를 프로그래밍하고, 후속하여 상기 제어 프로세서가 상기 하나 이상의 비휘발성 메모리 디바이스와 호환가능한 고속 프로토콜을 수행하도록 상기 제어 저장소를 프로그래밍하는 것이 더 포함되도록 구성된다.
또한 본 발명의 시스템에 있어서, 마이크로-시퀀서를 통해 비휘발성 메모리 디바이스 인터페이스에 결합된 출력 데이터 인터페이스, 및 마이크로-시퀀서를 통해 비휘발성 메모리 디바이스 인터페이스에 결합된 입력 데이터 인터페이스를 더 포함하며, 출력 데이터 인터페이스는 비휘발성 메모리 디바이스 인터페이스에 송신될 데이터를 수신하도록 구성된 출력 데이터 버퍼를 포함하고, 입력 데이터 인터페이스는 비휘발성 메모리 디바이스 인터페이스로부터 수신된 데이터를 수신하도록 구성된 입력 데이터 버퍼를 포함하는 것을 특징으로 한다.
또한, 마이크로-시퀀서는 (i) 입력 데이터 버퍼의 전체 조건(full condition)을 검출하고, (ii) 전체 조건을 검출한 것에 응답하여 제어 저장소 내 결정된 위치로 점프하는 것을 더 포함하여 구성된 것을 특징으로 한다.
본 발명의 시스템은 솔리드 스테이트 드라이브(solid state drive)(SSD) 디바이스의 일부인 것을 특징으로 한다.
또한 시스템은 하나 이상의 집적 회로로 구현되는 것을 특징으로 한다.
또한 본 발명은 비휘발성 메모리 채널을 제어하는 방법에 관한 것으로서, i)제어 프로세서에 결합된 커맨드 인터페이스를 통해 커맨드를 수신하고 응답을 송신하는 단계, 및 ii)제어 프로세서에 결합된 마이크로-시퀀서를 사용하여 제어 저장소 내 위치에서 명령의 실행을 시작하는 단계를 포함하며, 상기 위치는 수신된 상기 커맨드 중 특정 커맨드에 따라 상기 제어 프로세서에 의해 결정되고, 상기 마이크로-시퀀서는 비휘발성 메모리 디바이스 인터페이스에 의해 상기 마이크로-시퀀서에 결합된 하나 이상의 비휘발성 메모리 디바이스의 프로토콜에 따라 상기 특정 커맨드의 적어도 일부를 수행하는 것을 특징으로 한다.
본 발명의 방법은, 제어 프로세서를 사용하여 비휘발성 메모리 디바이스 인터페이스에 부착된 하나 이상의 비휘발성 메모리 디바이스와 연관된 하나 이상의 프로토콜을 수행하도록 제어 저장소를 프로그래밍하는 단계를 더 포함한다.
또한, 본 발명의 방법은, 초기에 상기 제어 프로세서가 복수의 유형의 비휘발성 메모리 디바이스와 호환가능한 저속 프로토콜을 수행하도록 상기 제어 저장소를 프로그래밍하는 단계, 및 후속하여 상기 제어 프로세서가 상기 하나 이상의 비휘발성 메모리 디바이스와 호환가능한 고속 프로토콜을 수행하도록 상기 제어 저장소를 프로그래밍하는 단계를 더 포함하는 것을 특징으로 한다.
본 발명의 실시예는 이하 상세한 설명 및 첨부 도면과 청구범위로부터 명백할 것이다:
도 1은 본 발명의 일 실시예에 따라 비휘발성 메모리 제어 시스템을 도시하는 도면;
도 2는 본 발명의 일 실시예에 따라 인터페이스 관리 프로세서를 도시하는 도면;
도 3은 도 2의 출력 데이터 버퍼의 예시적인 구현을 도시하는 도면;
도 4는 도 2의 입력 데이터 버퍼의 예시적인 구현을 도시하는 도면;
도 5는 도 2의 제어 유닛의 예시적인 구현을 도시하는 도면;
도 6은 도 2의 낮은-레벨 비휘발성 메모리 인터페이스의 예시적인 구현을 도시하는 도면;
도 7은 도 6의 낮은-레벨 비휘발성 메모리 인터페이스 시퀀서 유닛의 예시적인 구현을 도시하는 도면;
도 8은 도 6의 DQ 캡처 블록의 예시적인 구현을 도시하는 도면;
도 9는 도 8의 DQ 캡처 인근 패드 논리(near pad logic)(NPL) 블록의 예시적인 구현을 도시하는 도면;
도 10은 도 8의 DLL 블록의 예시적인 구현을 도시하는 도면;
도 11은 출력 인터페이스 인근 패드 논리 블록의 예시적인 구현을 도시하는 도면;
도 12는 본 발명의 일 실시예에 따라 다중 채널을 구비하는 비휘발성 메모리 제어 시스템을 도시하는 도면.
본 발명의 실시예는 낮은-레벨 프로그래밍가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용하여 비휘발성 메모리(예를 들어, 플래시 등) 채널 제어를 구현하는 방법(들) 및/또는 장치를 포함한다. 본 발명의 실시예는 (i) 높은 레벨 제어를 위해 고레벨(high-level) 범용 중앙 처리 유닛(CPU)을 결합하고 비휘발성 메모리 인터페이스의 낮은-레벨 제어를 위해 프로그래밍 가능한 저레벨(low-level) 마이크로-시퀀서로 스케줄링하며, (ii) 저레벨 마이크로-시퀀서를 사용하여, 시퀀스 프로그래밍에 의해 한정된 방식으로 비휘발성 메모리 인터페이스의 클록 사이클 마다 제어를 제공하고, (iii) 저레벨 마이크로-시퀀서가 임의의 계획된 비휘발성 메모리 인터페이스를 처리하도록 프로그래밍되게 하고, (iv) 아직 고려되지 않은 장래의 비휘발성 메모리 인터페이스의 프로그래밍을 허용하며, (v) 저레벨 마이크로-시퀀서를 사용하여, 비휘발성 메모리 핀 출력을 제어하고, 데이터 출력 및 데이터 캡처를 제어하며, 인터페이스 동작 모드를 구성하고, 및/또는 (파이프라인 지연을 초래함이 없이) 한정된 시퀀스를 구성된 횟수만큼 루프 수행하는 명령을 제공하고, (vi) 저레벨 마이크로-시퀀서를 사용하여, 구성가능한 방식으로 데이터 고갈 및 데이터 백 압력(back pressure)의 경우를 처리하는 능력을 제공하며, (vii) 고레벨 CPU 및 저레벨 마이크로-시퀀서 사이에 공유 메모리를 구현하여 시퀀스 파라미터를 전달하고 마이크로-시퀀스 제어 코드를 용이하게 변경할 수 있게 하며, (viii) 시퀀스를 실행하는 요청을 저레벨 마이크로-시퀀서에 전달하고 시퀀스가 완료될 때 또는 에러가 나타날 때에만 저레벨 마이크로-시퀀서로부터 응답을 생성하며, 및/또는 (ix) 고레벨 CPU를 자유롭게 하여 더 높은 레벨의 스케줄링, 관리 및 결정을 수행할 수 있게 한다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 비휘발성 메모리 제어 시스템(100)을 도시하는 다어어그램이 도시된다. 일부 실시예에서, 비휘발성 메모리 제어 시스템(100)은 블록(101) 및 블록(103)을 포함한다. 블록(101)은 인터페이스 관리 프로세서(interface management processor)(IMP)라고도 언급되는 메모리 채널 제어기를 구현할 수 있다. 블록(103)은 제어기 호스트를 구현할 수 있다. 제어기(101)는 하나 이상의 개별 비휘발성 메모리 채널을 제어하도록 구성될 수 있다. 일부 실시예에서, 다수의 제어기(101)의 경우는 복수의 비휘발성 메모리 채널을 제어하도록 구현될 수 있다. 제어기(101)는 커맨드를 수신하고 응답을 호스트(103)에 송신하도록 구성된 커맨드 인터페이스를 구비한다. 호스트(103)는 예를 들어, 백엔드 처리 유닛(back end processing unit)(BEPU)을 포함할 수 있다. 복수의 비휘발성 메모리 채널을 구현하는 실시예에서, 호스트(103)는 또한 다수의 제어기(101)를 BEPU에 결합하는 다중화 회로(multiplexing circuit)를 포함한다. 일부 실시예에서, 호스트(103)는 솔리드 스테이트 디스크(solid-state disk)(SSD) 제어기와 같은 I/O 디바이스 제어기이고, BEPU는 NAND 플래시 비휘발성 메모리 칩과 같은 복수의 비휘발성 메모리 디바이스의 스케줄링 및/또는 데이터 관리를 제공하는 제어기의 일부이다. 다른 실시예에서, BEPU는 데이터 또는 다른 정보를 저장하고 호스트(103) 및 제어기(101) 사이에 데이터 또는 다른 정보를 이동시키는 데이터 버퍼링 및 직접 메모리 액세스(direct memory access)(DMA) 엔진을 포함한다.
제어기(101)는 또한 시스템(100)을 비휘발성 메모리 매체(105)에 결합하도록 구성된 비휘발성 메모리 인터페이스를 구비한다. 비휘발성 메모리 매체(105)는 하나 이상의 비휘발성 메모리 디바이스(107)를 포함할 수 있다. 비휘발성 메모리 디바이스(107)는 일부 실시예에서, 하나 이상의 비휘발성 메모리 다이(memory die)(109)를 구비한다. 특정 비휘발성 메모리 디바이스(107)의 유형에 따라, 특정 비휘발성 메모리 디바이스(107) 내 복수의 비휘발성 메모리 다이(109)는 옵션으로 (optionally) 및/또는 선택적으로(selectively) 병렬로 액세스가능하다. 비휘발성 메모리 디바이스(107)는 일반적으로 제어기(101)에 통신가능하게 결합하도록 구성된 하나의 유형의 저장 디바이스를 나타낸다. 그러나, 여러 실시예에서, 임의의 유형의 저장 디바이스, 예를 들어 SLC(single level cell) NAND 플래시 메모리, MLC(multi-level cell) NAND 플래시 메모리, TLC(triple level cell) NAND 플래시 메모리, NOR 플래시 메모리, ROM(read-only memory), 정적 랜덤 액세스 메모리(static random access memory)(SRAM), 동적 랜덤 액세스 메모리(dynamic random access memory)(DRAM), 자기 저항 랜덤 액세스 메모리(magneto-resistive random-access memory)(MRAM), 강자성(ferromagnetic) 메모리(예를 들어, FeRAM; F-RAM FRAM 등), 상변환 메모리(예를 들어, PRAM, PCRAM 등), 레이스트랙(racetrack) 메모리(또는 도메인-월 메모리(domain-wall memory)(DWM)), 저항 랜덤-액세스 메모리(RRAM 또는 ReRAM), 또는 임의의 다른 유형의 메모리 디바이스 또는 저장 매체들이 사용가능하다.
일부 실시예에서, 제어기(101) 및 비휘발성 메모리 매체(105)는 별도의 집적 회로에 구현된다. 제어기(101) 및 비휘발성 메모리 매체(105)가 별도의 집적 회로(또는 디바이스)로 구현될 때, 제어기(101)의 비휘발성 메모리 인터페이스는 일반적으로 복수의 데이터 입력/출력(input/output)(I/O) 핀 및 복수의 제어 I/O 핀을 관리하도록 구성된다. 데이터 I/O 핀 및 제어 I/O 핀은 제어기(101)를 포함하는 디바이스를 비휘발성 메모리 매체(105)를 형성하는 외부 디바이스에 연결하도록 구성될 수 있다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 제어기(101)의 구현을 도시하는 다이어그램이 도시된다. 일부 실시예에서, 제어기(101)는 인터페이스 관리 프로세서(IMP)를 구현한다. 일부 실시예에서, 제어기(101)는 블록(또는 회로)(110), 블록(또는 회로)(112), 블록(또는 회로)(114), 블록(또는 회로)(116), 블록(또는 회로)(118), 블록(또는 회로)(120), 블록(또는 회로)(122), 및 블록(또는 회로)(124)을 포함한다. 블록(110)은 일반적으로, 구성가능하고, 유연하며 확장가능한 방식으로 다중 비휘발성 메모리 디바이스를 제어하도록 구성된 실리콘 논리(silicon logic) 및 펌웨어(firmware)를 구현한다. 블록(112)은 버스 인터페이스 블록(bus interface block)(BIB)을 구현한다. 블록(114)은 커맨드 버퍼(command buffer)(CB)를 구현한다. 블록(116)은 출력 데이터 버퍼(output data buffer)(ODB)를 구현한다. 블록(118)은 응답 버퍼(response buffer)(RB)를 구현한다. 블록(120)은 입력 데이터 버퍼(input data buffer)(IDB)를 구현한다. 블록(122)은 구성/상태 레지스터(configuration/status register)(CSR) 블록을 구현한다. 블록(124)은 동기화 블록을 구현한다.
버스 인터페이스 블록(BIB)(112)은 백엔드 처리 유닛(예를 들어, 호스트(103))으로 및 이로부터 통신을 처리한다. BIB(112)는 출력 버스(예를 들어, OB)를 통해 BEPU로부터 수신된 낮은 레벨 데이터 링크 커맨드를 처리하고 커맨드 및 데이터를 커맨드 버퍼(114) 및 출력 데이터 버퍼(116)에 전달한다. BIB(112)는 또한 응답 버퍼(RB)(118)로부터 커맨드 응답을 및 입력 데이터 버퍼(IDB)(120)로부터 입력 데이터를 입력 버스(예를 들어, IB)를 통해 백엔드 처리 유닛으로 송신한다. 커맨드 버퍼(CB)(114)는 출력 버스 워드(output bus word)를 하드웨어 제어 포트(hardware control port)(HCP) dword에 누적시키고 HCP dword를 CU(control unit)(130)에 공급한다. dword(또는 double-word)라는 용어는 단일 사이클(예를 들어, 8 바이트)에서 데이터 전송 유닛(unit)을 나타낸다. 응답 버퍼(RB)(118)는 CU(130)로부터 HCP dword를 취하고, HCP dword를 다중 입력 버스 워드로 분해하며, 이 다중 입력 버스 워드를 BIB(112)에 송신한다. 일부 실시예에서, HCP dword는 BEPU 및 CU(130) 사이에 송신된 메시지를 포함한다. 예를 들어, BEPU는 비휘발성 메모리 디바이스 액세스 동작을 CU(130)에 의해 유지되는 작업 큐(queue)에 추가하는 메시지를 CU(130)에 송신하며, CU(130)는 동작의 완료 및/또는 상태를 나타내는 메시지를 BEPU에 되송신한다. 다른 실시예에서, BEPU로부터 메시지는 동작의 데이터 전송과 연관된 각 태그(tag)를 포함하며, CU(130)는 비휘발성 메모리 디바이스에 기록되는 데이터의 페치(fetch)를 개시(initiate)하거나 또는 비휘발성 메모리 디바이스로부터 데이터 판독을 위한 동작 특정된 목적지를 나타내는 태그를 사용하도록 구성된다.
CSR 블록(122)은 시스템(100)의 CSR 링(ring) 상에 놓인다(sit on). CSR 블록(122)은 인터페이스 관리 프로세서(IMP) 정보에 액세스를 제공하고 CSR 블록(122)의 레지스터(register)를 통해 IMP 동작을 구성한다. 예를 들어, CSR 블록(122)의 레지스터는 CU(130)를 실행시켜, CU(130) 동작의 상태를 제공하고, 제어기(101)의 디버그(debug) 및/또는 진단 특징(diagnostic feature), 및 다른 관리 액세스 특징을 인에이블한다. CSR 링은 다수의 버스 사양(예를 들어, PalmBus, AMBA, AHB 등) 중 어느 것을 사용하여 구현될 수 있다. 여러 실시예에서, 특정수(예를 들어, 2)의 우선순위 인터럽트 신호(priority interrupt signal) 및 중지(halt) 신호(예를 들어, HALT/INTR)가 백엔드 처리 유닛에 송신될 수 있다. 백엔드 처리 유닛은 우선순위 인터럽트 신호 및 중지 신호를 코어 도메인(core domain)에 동기화하도록 구성될 수 있다. 블록(124)은 전역(global) 중지 입력(예를 들어, HALT IN)을 제어기(101)의 클록 도메인에 동기화하도록 구성될 수 있다. 동기화된 전역 중지 입력은, CSR 제어 하에서, 이후 제어기(101)를 중지시킬 수 있다.
블록(110)은 일반적으로 제어 유닛(control unit)(CU)(130) 및 낮은-레벨 비휘발성 메모리 인터페이스(low-level non-volatile memory interface)(LFI)(132)를 포함한다. CU(130)는 일반적으로 고레벨 범용 중앙 처리 유닛(central processing unit)(CPU)을 포함한다. LFI(132)는 낮은-레벨 프로그래밍 가능한 저레벨 마이크로 시퀀서를 포함한다. CU(130) 및 LFI(132)의 낮은-레벨 프로그래밍 가능한 저레벨 마이크로-시퀀서는 (예를 들어, 블록(134)으로 표시된) 공유 메모리에 의해 타이트하게 결합된다. CU(130) 및 LFI(132)의 낮은-레벨 프로그래밍 가능한 저레벨 마이크로-시퀀서는 하나 이상의 비휘발성 메모리 디바이스(예를 들어, 도 l의 비휘발성 메모리 매체(105))에 연결된 시스템 출력 및 입력(예를 들어, NVM I/O)을 제어하도록 구성된다. CU(130)는 전체(overall) 시스템 제어기로부터 커맨드를 수신할 수 있고, (i) LFI(132)의 낮은-레벨 프로그래밍 가능한 저레벨 마이크로-시퀀서로 발송(issue)될 커맨드를 결정하고, (ii) 중앙 시스템 데이터 레포지토리(repository)로/로부터 데이터의 흐름을 제어하고, (iii) 잠재적인 에러 조건을 처리하고, (iv) 커맨드의 완료를 나타내는 응답을 전체(overall) 시스템 제어기에 송신하는 일을 담당한다.
LFI(132)의 낮은-레벨 프로그래밍가능한 저레벨 마이크로-시퀀서는 부착된 특정 유형의 비휘발성 메모리 디바이스(들)를 어드레스지정하고 제어하도록 프로그램으로 구성될 수 있다. LFI(132)의 낮은-레벨 프로그래밍 가능한 저레벨 마이크로-시퀀서는 특정 비휘발성 메모리 인터페이스 프로토콜에 대한 상세를 CU(130)로부터 무시(abstract away from)하고, 더 높은 레벨의 시퀀스 호출(call)을 CU(130)에 제공할 수 있다. CU(130), LFI(132)의 낮은-레벨 프로그래밍 가능한 저레벨 마이크로-시퀀서 및 각각에 대한 프로그램은 일반적으로 전체(overall) 시스템 제어기가 높은 레벨의 커맨드를 비휘발성 메모리 제어기(101)에 발송하게 할 수 있다. CU(130)를 위한 프로그램은 (예를 들어, 하나 이상의 비휘발성 메모리 디바이스를 위한) 더 높은 레벨 커맨드의 스케줄링을 처리하고, 더 높은 레벨 커맨드를 더 낮은 레벨 커맨드로 분해하고, 더 낮은 레벨 커맨드를 LFI(132)의 낮은-레벨 프로그래밍 가능한 저레벨 마이크로-시퀀서에 발송한다. 커맨드가 완료될 때, 프로그램은 응답을 BEPU 제어기에 발송한다. 이것은 비휘발성 메모리 인터페이스의 상세를 처리해야 하는 것으로부터 호스트(103)의 BEPU 및/또는 다른 프로세서를 자유롭게 한다. 새로운 비휘발성 메모리 디바이스가 도입될 때, 새로운 디바이스는 CU(130) 및 LFI(132)의 낮은-레벨 프로그래밍 가능한 저레벨 마이크로-시퀀서를 위한 새로운 프로그램을 간단히 개발하는 것에 의해 전술된 유연한 스타일의 방법에 사용할 수 있다.
LFI(132)는, 예를 들어 비휘발성 메모리 매체로부터 데이터를 수신할 때 백압력(backpressure)으로 인해, 또는 데이터를 비휘발성 메모리 매체에 송신할 때 데이터의 부재로 인해 데이터 인터럽트(data interruption)를 검출할 수 있다. LFI(132)의 낮은-레벨 프로그래밍 가능한 저레벨 마이크로-시퀀서는 또한 프로그래밍 루프에서 "벗어나(break)" 예외 상태(exception state)에 진입할 수 있다. 예외 상태에서, LFI(132)의 낮은-레벨 프로그래밍 가능한 저레벨 마이크로-시퀀서는 제 1 모드에서, 데이터 및 연속 동작의 재개(resumption)를 검출하거나, 또는 제 2 모드에서, 더 높은-레벨의 재시작 동작을 가지게 CU(130)를 인터럽트할 수 있다. 제 2 모드에서, CU(130)는 LFI(132)의 낮은-레벨 프로그래밍 가능한 마이크로-시퀀서에 의해 전송된 일정 양의 데이터에 액세스를 하고, 예를 들어, 데이터 전송이 유보된 지점으로부터 데이터 전송을 재시작하도록 어드레스 및/또는 길이를 조절할 수 있다.
CU(130)는 인터페이스 관리 프로세서 커맨드를 해석하고 및 응답을 제공한다. CU(130)는 또한 입력 데이터 버퍼 및 출력 데이터 버퍼에 액세스를 하고, LFI(132)를 제어한다. LFI(132)는 비휘발성 메모리 I/O, 시퀀스 커맨드, 시퀀스 데이터 출력, 및 캡처 데이터 리턴(captures data return)을 액세스하고 제어한다. CU(130)의 기능의 대부분은 장래의 비휘발성 메모리 유형의 유연성과 지원을 허용하도록 펌웨어로 구현된다.
도 3을 참조하면, 도 2의 출력 데이터 버퍼(ODB)(116)의 예시적인 구현을 도시하는 다이어그램이 도시된다. 일부 실시예에서, ODB(116)는 블록(또는 회로)(150), 블록(또는 회로)(152), 블록(또는 회로)(154), 블록(또는 회로)(156), 및 블록(또는 회로)(158)을 포함한다. 블록(150)은 일반적으로 제어 인터페이스를 구현한다. 블록(152)은 일반적으로 라우팅 동작을 수행하도록 구성된다. 블록(154)은 선입선출(first-in-first-out)(FIFO) 버퍼를 구현한다. 블록(156)은 카운터(counter)를 구현한다. 블록(158)은 일반적으로 패리티 체크(parity check)를 수행하도록 구성된다.
제 1 (예를 들어, 일반) 동작 모드에서, 제어 및 라우팅은 인커밍 데이터(incoming data)를 직접 LFI(132)로 지향(direct)하도록 설정(setup)될 수 있다. 디버그 또는 다른 개선된 기능을 위하여, 제어 및 라우팅은 인커밍 데이터를 직접 CU 레지스터 인터페이스로 지향하도록 설정될 수 있다. CU 펌웨어 다운로드를 위하여, 제어 및 라우팅은 인커밍 데이터를 직접 CU(130)의 커맨드 인터프리터(command interpreter)로 지향하도록 설정될 수 있다. 일 예에서, 블록(154)은 8-비트 폭(wide), 4 엔트리(entry) 깊이(deep)의 FIFO 버퍼로 구현될 수 있다. 그러나, 다른 깊이 및 폭이 특정 구현의 설계 기준을 충족하도록 구현될 수 있다. 블록(154)은 시퀀스 제어의 일부로 사용되는, 구성가능한 Hi 레벨 및 Lo 레벨(예를 들어, FIFO 임계값)을 구비한다. 일반적으로, 4 깊이의 더블 데이터 속도(double data rate)(DDR) 시스템에서, Hi는 2로 설정되고 Lo는 to 1로 설정될 수 있다. 4 깊이의 단일 데이터 속도 시스템에서, Hi는 1로 설정되고 Lo는 O으로 설정될 수 있다. 블록(156)은 ODB(116)에 의해 수신된 바이트의 수를 카운트하도록 구성된 CU CSR 액세스가능한 카운터로 구현될 수 있다. 블록(156)은 또한 CU(130)에 의해 기록가능하고, 정확한 바이트의 수가 기록 데이터 경로로부터 수신되었는지 체크하는 디버깅시에 유리할 수 있다. 블록(158)은 데이터 인터페이스 패리티를 체크하고, 패리티 에러를 CSR 블록(122)에 보고하도록 구성되고, 이는 패리티 에러와 같은 예외 조건에서 BEPU에 인터럽트를 신호하도록 구성된다.
도 4를 참조하면, 도 2의 입력 데이터 버퍼(IDB)(120)의 예시적인 구현을 도시하는 다이어그램이 도시된다. 일부 실시예에서, IDB(120)는 블록(또는 회로)(160), 블록(또는 회로)(161), 블록(또는 회로)(163), 블록(또는 회로)(165), 블록(또는 회로)(167), 및 블록(또는 회로)(169)을 포함한다. 블록(160)은 일반적으로 제어 인터페이스를 구현한다. 블록(161)은 일반적으로 라우팅 동작을 수행하도록 구성된다. 블록(163)은 선입선출(FIFO) 버퍼를 구현한다. 블록(165)은 디스패리티 계산기(disparity calculator)를 구현한다. 블록(167)은 패리티 생성기(parity generator)를 구현한다. 블록(169)은 카운트다운 카운터(countdown counter)를 구현한다.
IDB(120)는 일반적으로 블록(163)을 통해 LFI로부터 인커밍 데이터를 수신한다. 일부 실시예에서, 블록(163)은 8-비트 폭의 40 엔트리(entry) FIFO 버퍼로서 구현될 수 있다. 그러나, 다른 깊이 및 폭이 특정 구현의 설계 기준을 충족하도록 구현될 수 있다. 블록(163)은 LFI(132)에서 흐름 제어에 사용하기 위해 구성가능한 Hi 레벨 및 Lo 레벨(예를 들어, FIFO 임계값)을 구비한다. 블록(163)은 고속 전송 속도에서 상당(예를 들어, 30ns)할 수 있는 시스템(100)에서 라운드 트립 레이턴시(round trip latency)를 허용하고, 또한 FIFO 버퍼에 인커밍 데이터를 버퍼링하면서 전송 시작시에 CU(130)로부터 메시지 헤더를 삽입하는 시간을 허용한다. 더블 데이터 속도 시스템에서 Hi 레벨 및 Lo 레벨(예를 들어, FIFO 임계값)의 예시적인 설정은 Hi에서는 22이고 Lo에서는 21일 수 있다.
LFI(132)로부터 데이터는 일반적으로 IDB(120)를 BIB(112)에 연결하는 아웃고잉(outgoing) FIFO 버퍼(미도시)로 지향된다. LFI(132)로부터 데이터는 또한 제어 인터페이스(160)의 CU 레지스터 인터페이스를 사용하여 CU(130)에 의해 판독될 수 있다(예를 들어, 이러한 특징은 비휘발성 메모리 디바이스 레지스터 판독, 스테이터스 판독 등에 사용될 수 있고, 여기서 데이터는 CU(130)에 의해 소비된다). CU 레지스터 인터페이스는 또한 데이터를 CU(130)로부터 BIB(112)로 송신하는데 사용될 수 있다(예를 들어, 이러한 특징은 데이터 헤더/트레일러(data header/trailer)에 사용될 수 있다).
블록(165)은 일반적으로 실행하는 디스패리티 계산기(running disparity calculator)를 구현한다. 일부 실시예에서, 실행하는 디스패리티 계산기는 판독 데이터 스트림에서 0비트에 비해 1비트를 초과하는 총 수를 실행하는 부호 있는 20-비트를 유지한다. 예시적인 디스패리티 계산은 다음 수학식 1에서 볼 수 있다:
디스패리티 = 1로 설정된 총 비트 - (총 비트/2) (수학식 1)
디스패리티 값은 디스패리티 값이 최대 양 또는 음의 20-비트 값에 도달하는 경우 포화되거나 고정된다. 비휘발성 메모리 디바이스로부터 판독된 데이터가 알려진 예상된 디스패리티를 가질 때, 디스패리티 계산이 적어도 부분적으로 사용되어, 판독 데이터가 유효한지 여부를 결정한다. 제 1 예에서, 비휘발성 메모리 디바이스로부터 판독된 데이터가 암호화된 및/또는 스크램블링된 경우 및 0 및 l의 분배가 통계적으로 알려진 50-50인 경우, 디스패리티는 0에 가까운 것으로 예상될 수 있다. 제 2 예에서, NAND 플래시와 같은 일부 비휘발성 메모리 디바이스는 모두 1인 소거된 상태를 구비한다. 디스패리티 계산이 실질적으로 모든 데이터 비트 판독값이 값 1을 가지는 것을 나타내는 경우, 소거된 페이지는 아마 판독되었을 것이다.
데이터 판독이 완료되면, 디스패리티 값은 CU(130)에 의해 판독되고 데이터 트레일러에 포함되거나, 또는 응답으로 BEPU에 리턴될 수 있다. CU(130)는 데이터 전송의 시작 전에 디스패리티 값을 통상적으로 소거(clear)하여야 한다. 아웃고잉 데이터 스트림은 블록(167)에 의해 패리티 보호된다.
블록(169)은 일반적으로 CSR 액세스가능한 다운-카운터(down-counter)를 구현한다. 블록(169)은 IDB(120)로부터 송신된 바이트의 수를 카운트 다운한다. 이것은 전송의 길이로 설정될 수 있고, 전송의 예상된 종료시에 제로로 카운트 다운될 것이다. 블록(169)은 또한 CU(130)의 CSR 레지스터에 의해 프로그래밍되어 전송의 시작/종료시에 처음/마지막 지시(indication)(예를 들어, 프레이밍(framing) 정보를 제공하는 측대역 신호(sideband signal))를 생성할 수 있다. 제 2 CSR 레지스터는 카운터가 제로 레벨에 도달한 후에 블록(169)을 프리셋(preset)하는데 사용된다.
BIB(112)에의 아웃고잉 데이터가 (예를 들어, 데이터 헤더 및 트레일러를 위한) CU(130)에 의해 생성된 경우, BIB(112)에의 처음 및 마지막 출력은 또한 CU(130)에 의해 제어된다. 일반적인 판독에서, CU(130)는 IDB(120)를 초기에"CU 모드로부터" 모드에 배치하고, LFI(132)에서 판독 커맨드를 시작한 다음, 헤더를 BIB(112)에 전송하고 나서, IDB(120)를 "일반" 모드에 배치하여 LFI(132)로부터 데이터가 블록(163)에서 BEPU로 전송되게 한다. 마지막으로 CU(130)는 필요한 경우 트레일러를 생성할 수 있다.
도 5를 참조하면, 도 2의 제어 유닛(CU)(130)의 예시적인 구현을 도시하는 다이어그램이 도시된다. CU(130)는 일반적으로 제어기(101)의 마이크로프로세서 기반 감독 제어 유닛을 구현한다. CU(130)는 출력 버스(OB)로부터 커맨드를 수신하고, 커맨드 스케줄링 및 우선순위화를 수행한다. 일부 실시예에서, CU(130)는 블록(또는 회로)(170), 블록(또는 회로)(172), 블록(또는 회로)(174), 블록(또는 회로)(176), 블록(또는 회로)(178), 블록(또는 회로)(180), 블록(또는 회로)(182), 및 블록(또는 회로)(184)을 포함한다. 블록(170)은 일반적으로 고레벨 중앙 처리 유닛(CPU) 코어를 포함한다. 블록(172)은 일반적으로 커맨드 인터프리터를 구현한다. 블록(174)은 아비터(arbiter)를 구현한다. 블록(176)은 데이터를 저장하는 랜덤 액세스 메모리(RAM)를 구현한다. 블록(178)은 국부적인 구성/상태 레지스터(CSR) 블록을 구현한다. 블록(180)은 LFI(132)에 인터페이스를 구현한다. 블록(182)은 아비터(arbiter)를 구현한다. 블록(184)은 명령을 저장하는 랜덤 액세스 메모리(RAM)를 구현한다.
스타트업시에 고레벨 CPU(170)는 블록(178)에서 CSR 레지스터에 의해 리셋으로 유지된다. IMP 커맨드는 BEPU에 의해 발송되어 명령 RAM(184), LFI(132)의 시퀀스 RAM, 및 데이터 RAM(176)의 초기 상태를 프로그래밍한다. 초기 상태는 일반적으로 시스템 ROM(미도시)으로부터 온다. 초기 프로그래밍 후에, 리셋이 해제(released)되고 고레벨 CPU(170)는 초기 펌웨어를 실행하기 시작한다. 펌웨어는 고레벨 CPU(170)가 BEPU로부터 발송된 커맨드에 응답하게 한다. 초기 동작 상태 동안, BEPU는 비휘발성 메모리 디바이스로부터 최종 동작 코드를 백엔드 버퍼(미도시)에 가져갈 수 있다. 최종 동작 코드는 시스템(100)에 있는 다른 CPU 및 고레벨 CPU(170)를 구성하는데 사용된다. 일 예에서, 이 단계에서 CU 코드는 비휘발성 메모리에 저장된 펌웨어의 성능 최적화된 버전으로 재로딩(reloaded)될 수 있을 것이다. 이것은 일반적으로 데이터 전송으로 발생하고, IMP 커맨드는 인커밍 IDB 데이터를 명령 RAM(184), 데이터 RAM(176), 및/또는 LFI(132)의 시퀀스 RAM로 지향하는데 사용된다. 일반적으로, CU(130)는 메인 동작 코드의 로딩 동안 리셋으로 배치될 수 있다.
아비터(arbiter)(182) 및 아비터(arbiter)(174)는 고레벨 CPU(170)의 RAM 인터페이스에 사용되어 IMP 커맨드가 데이터 RAM(176), 명령 RAM(184) 및 LFI(132)의 시퀀스 RAM에 액세스하게 할 수 있다. 일 예에서, 고레벨 CPU(170)의 스톨 메커니즘(stall mechanism)이 사용되어 IMP 커맨드 인터프리터(172)에 우선순위를 제공할 수 있다. 그러나, 고레벨 CPU(170)에 의한 것이 아닌, 데이터 RAM(176), 명령 RAM(184), 및 LFI(132)의 시퀀스 RAM에의 액세스는 초기 구성에서만 발생하는 것으로 예상된다.
고레벨 CPU(170)는 또한 BEPU로부터 메시지를 전달하고 응답을 BEPU에 다시 제공하는 입력 및 출력 FIFO 인터페이스를 포함할 수 있다. 출력 FIFO 인터페이스는 또한 데이터 전송 동작을 시작하는 메시지를 (예를 들어, 호스트(103)의) 직접 메모리 액세스(DMA) 엔진에 전달하는데 사용된다.
고레벨 CPU(170)의 인터페이스는 국부적인 CSR에 액세스하고 커맨드를 LFI(132)에 발송하는데 사용된다. Tensilica CPU를 사용하는 일부 실시예에서, 인터페이스는 TIE(Tensilica Instruction Extension) 룩업(look-up) 인터페이스이다. 글로벌 중지 신호 (예를 들어, 정전(power failure) 또는 다른 예외 조건의 이벤트시에 호스트(103)로부터 송신된 신호)는 고레벨 CPU 코어(170)에서 비-마스킹가능한 인터럽트(non-maskable interrupt)(NMI)를 트리거하는데 사용될 수 있다.
도 6을 참조하면, 도 2의 낮은-레벨 비휘발성 메모리 인터페이스(LFI)(132)의 예시적인 구현을 도시하는 다이어그램이 도시된다. LFI(132)는 비휘발성 메모리 인터페이스의 낮은-레벨 제어를 제공한다. LFI(132)는 임의의 비휘발성 메모리 인터페이스 프로토콜에 구성가능하도록 설계된 프로그래밍 가능한 시퀀스 엔진을 포함한다. 사용된 시퀀스는 CU(130)에 의해 구성되고, 이후 CU(130)에 의해 제공되는 커맨드로 실행된다. 또한 CU(130)에 의해 프로그래밍되고 시퀀스에 의해 액세스될 수 있는 시퀀스 데이터 영역이 있고, 이런 방식으로 일반적인 시퀀스는 설정될 수 있고, 이 시퀀스와 연관된 데이터는 시퀀스 자체를 변경함이 없이 제공될 수 있다.
일부 실시예에서, 단일 물리적 인터페이스만이 아니라 2개 이상의 물리적 인터페이스에 대해 지원이 제공된다. 예를 들어, 2개의 물리적 인터페이스(예를 들어, A 및 B)에서, LFI(132)는 블록(또는 회로)(190), 블록(또는 회로)(192a), 블록(또는 회로)(192b), 블록(또는 회로)(194a), 블록(또는 회로)(194b), 블록(또는 회로)(196), 및 블록(또는 회로)(198)을 포함할 수 있다. 블록(190)은 일반적으로 낮은-레벨 비휘발성 메모리 인터페이스(LFI) 시퀀서 유닛(LFI sequencer unit)(LSU)을 포함한다. 블록(192a 및 192b)은 일반적으로 DQ 캡처 블록을 구현한다. 블록(194a 및 194b)은 A 및 B 비휘발성 메모리 인터페이스를 각각 구현한다. 블록(196)은 칩 인에이블(chip enable)(CE) 인터페이스를 구현한다. 블록(198)은 2개의 DQ 캡처 블록(192a 및 192b) 사이를 선택하는 다중화 회로를 구현한다.
LFI 시퀀서 유닛(LSU)(190)은 시퀀스를 실행하고 비휘발성 메모리 커맨드의 출력, 기록 데이터 전송 및 판독 데이터 전송을 지향한다. 시퀀스 RAM 인터페이스는 시퀀싱이 시작되기 전에 LSU(190)의 내부 시퀀싱 메모리가 설정될 수 있게 하고, 또한 시퀀스를 CU(130)에 의해 동적으로 프로그래밍될 수 있게 한다. 시퀀스 커맨드는 LSU(190)의 시퀀스 커맨드 인터페이스에서 발송될 수 있다. 인터페이스(들) 커맨드가 지향하고 커맨드를 적절한 인터페이스(들)로 지향하는 인터페이스의 선택(예를 들어, 신호 I/F A EN 및 I/F B EN를 포함하는)이 프로그래밍된다. 일부 실시예 및/또는 사용 시나리오에서, 각 커맨드는 단일 인터페이스로 지향된다. 다른 실시예 및/또는 사용 시나리오에서, 적어도 일부 커맨드(예를 들어, 리셋 커맨드)는 다중 인터페이스로 지향된다. 칩 인에이블(CE) 인터페이스(예를 들어, 신호(들) CEN 출력을 포함하는)는 CE 출력의 전체 제어가 비휘발성 메모리 인터페이스들 중 하나에 부착된 다이(들)를 선택하게 한다. 일부 실시예에서, 최대 8개의 CE를 가지는 구성이 지원된다. 부착된 다이는 비휘발성 메모리 인터페이스의 어느 것에 있을 수 있다.
DQ 캡처 블록(192a 및 192b)은 DQS를 사용하여 고속 데이터 캡처, 및 또한 비동기 모드에서 순차 지연 캡처(sequential delay capture)를 제공한다. DQ 미러 신호는 DQ 출력 및 캡처된 데이터의 미러링(mirroring)을 제어한다. 미러링은 비트 0을 7로 교환(swap)하고, 1을 6으로 교환하고, 2를 5로 교환하고 3을 4로 교환한다. 이것은 일부 설계에서 수행되어 보드 레이아웃 문제를 용이하게 하고, 제어기에 의해 처리되어야 한다. 미러 모드는 커맨드가 LFI(132)에 발송되기 전에 CU(130)에 의해 선택된다. 아웃고잉 미러링은 아웃고잉 인터페이스에서 수행되고, 인커밍 미러링은 DQ 캡처 mux(198)에서 DQ 캡처 이후에 수행된다.
LFI(132)는 일반적으로 프로그래밍 가능한 시퀀스 엔진, I/O 핀 출력 블록의 세트 및 데이터 캡처 블록의 세트를 포함한다. 시퀀스 엔진은 일반적으로 I/O 핀에 부착된 특정 비휘발성 메모리 디바이스의 비휘발성 메모리 프로토콜을 실행할 수 있는 시퀀스의 세트로 프로그래밍된다. 시퀀스는 시퀀스 메모리에서 다수의 위치에서 시작하는 명령 세트를 포함한다. 예를 들어, LFI(132)가 수행하도록 프로그래밍된 각 동작에 대해 각 시작 위치가 있다. 일부 실시예에서, 시퀀스 메모리는 512 32-비트 위치로 구현된다. 시퀀스의 실행은 커맨드 인터페이스에 커맨드를 발송하는 것에 의해 개시된다. 커맨드는 일반적으로 시퀀스 RAM에서 점프할 어드레스 및 시퀀스에서 명령의 일부에 의해 사용될 수 있는 커맨드 데이터의 바이트를 포함하지만, 일부 시퀀스는 커맨드 데이터를 사용하지 않을 수 있다.
시퀀스 데이터 RAM는 또한 인덱스 레지스터(index register)를 사용하여 간접적으로 어드레스지정되어 제공된다. 인덱스는 모드 명령을 사용하여 설정되고, 일반적으로 커맨드 데이터로부터 주어진 값으로 설정될 수 있다. 이러한 방식으로 커맨드 시퀀스와 연관된 임의의 데이터는 시퀀스 데이터 RAM에서 설정될 수 있고, 시퀀스 자체는 변경될 필요가 없다. 일례로는 5바이트의 어드레스를 구비하는 판독 커맨드일 수 있다. 어드레스 바이트는 시퀀스 데이터 RAM에서 연속적인 위치에 배치될 수 있고, 커맨드는 시퀀스 RAM의 판독 커맨드 시퀀스의 어드레스, 및 시퀀스 데이터 RAM의 어드레스의 제 1 바이트의 어드레스로 발송될 수 있다. 시퀀스는 인덱스 레지스터를 설정한 다음, 어드레스를 송신하는데 요구되는 시퀀스를 수행하고, 어드레스의 각 바이트에 대해 어드레스 시퀀스를 반복할 수 있다. 명령은 인덱스 레지스터가 증분되게 하지만(메모리의 종료 후 랩핑(wrap)할 수 있다), WIG 명령(비휘발성 메모리 디바이스에 연결된 I/O 핀을 위글링(wiggle)하는데 사용되는)에서는 이 증분은 선택적이다.
시퀀스는 중지를 야기하는 명령이 나타날 때까지 실행된다. 중지는 시퀀스 실행을 종료하고, LFI는 LFI가 그 다음 커맨드가 도달하기를 기다리는 상태에 진입하고, 다른 액션을 수행하지 않는다. 비휘발성 메모리 디바이스에의 액션의 실행은 다중 시퀀스 호출로 구성될 수 있다. 예를 들어, 시퀀스는 디바이스를 선택하도록 호출될 수 있고, 별도의 시퀀스 호출은 판독을 발송할 수 있고, 최종 시퀀스는 디바이스를 선택 해제할 수 있다.
도 7을 참조하면, 도 6의 낮은-레벨 비휘발성 메모리 인터페이스(LFI) 마이크로-시퀀서 유닛(LSU)(190)의 예시적인 구현을 도시하는 다이어그램이 도시된다. 일부 실시예에서, LSU(190)는 블록(또는 회로)(200), 블록(또는 회로)(202), 블록(또는 회로)(204), 블록(또는 회로)(206), 블록(또는 회로)(208), 블록(또는 회로)(210), 블록(또는 회로)(212), 블록(또는 회로)(214), 블록(또는 회로)(216), 및 블록(또는 회로)(218)을 포함할 수 있다. 블록(200)은 일반적으로 시퀀스 실행 유닛(sequence execution unit)(SEU)을 포함한다. 블록(202)은 일반적으로 시퀀스 데이터(예를 들어, 시퀀스 데이터 RAM)를 저장하는 랜덤 액세스 메모리(RAM)를 구현한다. 일 예에서, 시퀀스 데이터 RAM(202)은 듀얼 포트 메모리로 구현될 수 있다. 블록(204)은 인덱스 레지스터를 구현한다. 블록(206)은 다수의 출력 레지스터를 구현한다. 블록(208)은 제로 오버헤드 루프(zero overhead loop)(ZOL) 레지스터를 구현한다. 블록(210)은 일반적으로 그 다음 프로그램 카운터(program counter)(PC) 계산을 수행하도록 구성된다. 블록(212)은 프로그램 카운터(PC) 레지스터를 구현한다. 블록(214)은 일반적으로 시퀀스를 저장하는 랜덤 액세스 메모리(RAM)(예를 들어, 시퀀스 RAM)를 구현한다. 일 예에서, 시퀀스 RAM(214)은 듀얼 포트 메모리로 구현될 수 있다. 블록(216)은 프리페치(prefetch) 레지스터를 구현한다. 블록(218)은 커맨드 레지스터를 구현한다.
시퀀스 RAM(214)은 임의의 커맨드가 실행될 수 있기 전에 초기화될 필요가 있다. 시퀀스 RAM(214)의 초기화는 일반적으로 초기 비휘발성 메모리 판독을 수행하는 스타트업시에 한번 발생하고 나서, 이후 두 번째로 메인 실행 코드가 비휘발성 메모리 디바이스로부터 로딩되었을 때 발생한다. 시퀀스 RAM(214)은, 일부 실시예에서, 32-비트 폭의 (플러스(plus) ECC 비트) 및 512 워드 깊이로, 듀얼 포트를 통해 시퀀스가 실행되는 동안 CU(130)로부터 액세스를 허용하도록 구현될 수 있다. 일부 실시예에서, 시퀀스 어드레스는 9-비트이다. 그러나, 다른 메모리 사양이 특정 구현의 설계 기준을 충족하도록 구현될 수 있다.
시퀀스 데이터 RAM(202)은 CU(130)가 인덱스 레지스터(204)를 사용하여 커맨드에 의해 액세스될 수 있는 여러 커맨드 값을 설정할 수 있게 한다. 여러 커맨드 값의 설정은 커맨드/어드레스 시퀀스를 설정하여 이러한 동작에 사용될 수 있다. 일부 실시예에서, 시퀀스 데이터 RAM(202)은 CU(130)로부터 32-비트 워드로 어드레스되지만, 인덱스 레지스터(204)에 의해 단일 바이트로 어드레스된다. 일부 실시예에서, 시퀀스 데이터 RAM(202)는 64 바이트(16 워드)로 구현된다. 그러나, 다른 메모리 사양이 특정 구현의 설계 기준을 충족하도록 구현될 수 있다. 데이터가 시퀀스 데이터 RAM(202)로부터 프리페치되기 때문에, 전체 시퀀스 데이터 RAM(202)은 잠재적으로 스퓨리어스(spurious) ECC 에러를 방지하는데 사용하기 전에 초기화되어야 한다.
PC 레지스터(212)는 현재 시퀀스 포인터를 포함한다. 현재 시퀀스 포인터는 통상적으로 그 다음 시퀀스 명령을 페치(fetch)하는 증분기(incrementer)(210))를 통과한다. ZOL 레지스터(208)는 단일 레벨의 제로-오버헤드 루프 수행을 지원한다. 출력 레지스터(206)는 비휘발성 메모리 인터페이스에 연결되어 그 동작을 제어한다.
시퀀스 RAM(214) 및 시퀀스 데이터 RAM(202)는 ECC 보호되고, CU(130)의 메모리 맵에 존재한다. ECC 에러는 CU(130)에 인터럽트를 야기하며, CU(130)는 레지스터를 판독하여 에러가 정정가능한지 아닌지를 결정하고 또한 RAM이 에러인지 여부를 결정한다. 임의의 정정가능한 에러는 통상적으로 메모리의 판독 스크럽(scrub)을 초래한다. 정정가능하지 않은 에러가 시퀀스 RAM 판독 동안 발생하는 경우, 시퀀스는 또한 즉시 중지된다.
외부 신호(예를 들어, HALT)는 CU(130)에 의해 선언(asserted)되어 임의의 시간에 시퀀스 실행 유닛(200)의 동작을 중지할 수 있다. 일반적으로, 시퀀스 실행 유닛(200)의 실행 중지는 현재 위치에서 현재 시퀀스를 즉시 종료한다. 새로운 시퀀스를 시작하기 위해, 새로운 커맨드는 발송될 필요가 있다. 시퀀스 실행 유닛(200)의 내부 스테이터스는 CU(130)에 이용가능하다.
도 8을 참조하면, DQ 캡처 블록(220)의 예시적인 구현을 도시하는 다이어그램이 도시된다. DQ 캡처 블록(220)은 도 6의 DQ 캡처 블록(109a 및 192b)을 구현하는데 사용될 수 있다. 일부 실시예에서, DQ 캡처 블록(220)은 클록 전송 블록(222), 다수의 DQ 인근 패드 논리 블록(224), DLL 블록(226), 및 다수의 매칭 셀(228)을 포함한다. 인근 패드 논리(NPL)는 패드에 가까이 놓여 있는 실리콘 매크로 블록(silicon macro block)을 포함한다. NPL 블록은 인터페이스 논리의 타이밍을 타이트하게 제어한다. 각 NPL 블록은 연관된 패드로부터 고정된 거리에 놓일 수 있다. DQS 입력은 DLL 블록(226)의 슬레이브 모듈(slave module)을 통해 전달된다. DLL 블록(226)의 슬레이브 모듈은 DQS 신호에 1/4(quarter) DQS 사이클 지연을 삽입한다. 각 DQ NPL 블록(224)에의 DQS 경로 지연은 DQ 지연을 동일한 NPL 블록에 매칭하여야 한다. DQ NPL 블록(224)은 후속 DQS 에지에 4개의 DQ 값을 캡처한다. 4개의 DQ 값은 클록 전송 블록(222)으로 공급되고, 여기서 이 값은 비휘발성 메모리 인터페이스의 클록 도메인으로 전송된다.
도 9를 참조하면, 도 8의 DQ 캡처 인근 패드 논리(DQ NPL) 블록(224)의 예시적인 구현을 도시하는 다이어그램이 도시된다. 일부 실시예에서, DQ NPL 블록(224)은 캡처 위상 플롭 및 다수의 DQ 캡처 플롭(예를 들어, DQ0P, DQ0N, DQ1P, DQ1N)을 포함한다. 판독 전송의 시작 전에, 신호(예를 들어, DQS EN)는 LOW이고, 이는 임의의 DQS 글리치(glitch)를 게이트 오프(gate off)하고 캡처 위상 플롭을 위상 O에 유지한다. 제 1 상승 DQS 에지는 DQ0P 플롭에 캡처되고 제 1 하강 에지는 DQ0N 플롭에 캡처된다. 제 1 하강 에지는 또한 캡처 위상을 스위칭하고, 그 다음 2개의 DQS 에지는 DQ1P 및 DQ1N 플롭에서 각각 캡처된다. 사이클은 데이터가 전송되는 동안 4개의 DQS 에지마다 반복한다.
도 10을 참조하면, 도 8의 DLL 블록(226)의 예시적인 구현을 도시하는 다이어그램이 도시된다. 일부 실시예에서, DLL 블록(226)은 지연-록킹 루프(delay-locked loop)(DLL)(230) 및 제어 유한 상태 기계(finite state machine)(FSM)(232)를 포함한다. DLL(230)은 마스터(master) 부분 및 슬레이브 부분을 포함한다. DLL(230)의 마스터 부분은 공급되는 레퍼런스 클록(reference clock)에 록킹된다. DLL(230)의 슬레이브 부분은 주어진 신호(예를 들어, DQS)를 마스터 레퍼런스 클록의 프로그래밍 가능한 비율(fraction)만큼 지연시킨다. 일부 실시예에서, 인커밍 DQS 신호는 에지 정렬된 DQ 데이터를 캡처하기 위해서는 DQS 기간의 1/4만큼 지연될 필요가 있다. DLL 블록(226)은 공급되는 레퍼런스 사이클에 록킹된다. 공급되는 레퍼런스 사이클은 (예를 들어, CLK) 또는 제어기 클록의 분할된 형태(예를 들어, 레퍼런스 클록 분할기(234)에 의해 생성된) 제어기(101)의 클록일 수 있다. 일반적으로 레퍼런스 클록은 아웃고잉 DQS와 동일한 주파수, 또는 2x 주파수로 설정된다. 삽입된 지연은 일반적으로 DQS 주파수의 약 1/4로 프로그래밍되어야 한다. DLL(230)의 슬레이브 부분을 통한 지연은 다음 수학식 2에 따라 계산될 수 있다:
지연 = Tf + Tref * ((ADJ +ADJoff)/MADJ) (수학식 2)
여기서 Tf는 고정된 오프셋 지연이고, Tref는 레퍼런스 클록 기간이고, ADJ는 프로그래밍된 조절 오프셋이고, ADJoff는 고정된 코드 오프셋(예를 들어, 34)이고, MADJ는 통상적으로 160으로 설정된(그러나, 76,... , 255의 범위 내 값으로 변경될 수 있는) 마스터 조절 오프셋이다. 일반적으로, 고정된 오프셋 지연 Tf은 DQ 라인에서 사용되는 매칭 셀(228)에 의해 매칭되고, 그래서 무시될 수 있다. 따라서, (예를 들어, 매칭 셀을 사용하여) Tf를 제거하고, ADJ를 풀면, 다음 수학식 3이 얻어진다:
ADJ = MADJ * (지연/Tref -ADJoff) (수학식 3)
400 MT/s 동작 조건을 가지는 예시적인 경우에, DQS 주파수는 200 MHz이고, 제어기 클록은 400MHz이다. 일부 실시예에서, 400MHz 클록은 DLL에 직접 공급되고 신호 DQS는 레퍼런스 클록의 1/2(one-half) 기간(DQS 기간의 1/4과 동등한)만큼 지연될 수 있다. 대안적인 실시예에서, 제어기 클록은 200MHz으로 분할되고 신호 DQS는 레퍼런스 클록 기간의 1/4만큼 지연될 수 있다.
또한 트레이닝 구조를 소프트웨어로 구현하는 것이 가능하다. 이러한 트레이닝 구조를 가지는 실시예에서, ADJ 값은 낮은 설정값으로부터 높은 설정값으로 스위프(sweep)되는 반면, 알려진 패턴이 비휘발성 메모리 디바이스로부터 판독된다. 최종 ADJ는 중간 값(mid value)으로 설정되어 정확한 데이터가 판독될 수 있게 한다. 레퍼런스 클록 분할기 또는 MADJ 또는 전력 다운에서 임의의 변화는 DLL이 1us의 최소값 동안 리셋될 필요가 있다. 제어 FSM(232)은 프로그래밍된 수(예를 들어, 디폴트는 400MHz에서 1us 기간 동안 400이다)의 클록 사이클 동안 DLL(230)을 리셋으로 유지한다. 록킹(locked)된 스테이터스는 DLL(230)이 실행된 후 500 refclks 선언되고, 스테이터스는 판독 동작이 개시되기 전에 펌웨어에 의해 체크될 수 있다.
DLL 블록(226)에서 제어 레지스터는 액세스되고, (예를 들어, BEPU로부터) CSR 링을 통해 또는 CU(130)로부터 논리적으로 설정될 수 있다. 국부적 액세스는 트레이닝 유형 기능(필요한 경우) 또는 정밀 전력 다운 제어에 사용된다. 일반적으로 DLL 값은 구성 레코드로부터 설정되고, 일반 동작 동안 조절될 필요가 없다. 전력을 절감하기 위하여, DLL 제어 FSM(232)과 연관된 전력 다운 요청 레지스터는 설정될 수 있다. DLL(230)은 DQS 입력을 사용하는 비휘발성 메모리 판독 모드(예를 들어, ONFI2/3의 DDR 모드 및 토글 모드)에서 판독 동작 동안에만 사용된다. 전력 다운으로부터 빠져나간 후 리셋 및 록킹(lock) 시퀀스가 작동되고, 그래서 동적 전력 다운이 판독 성능에 영향을 미칠 수 있다. 칩 리셋시에 DLL(230)은 일반적으로 전력 다운 모드에 있다.
도 11을 참조하면, 출력 인터페이스 인근 패드 논리(NPL) 블록(250)의 예시적인 구현을 도시하는 다이어그램이 도시된다. 각 아웃고잉 신호는 출력 인터페이스 NFL 블록(250)을 통해 전달된다. NFL 블록(250)은 아웃고잉 신호가 클록(예를 들어, CLK)과 재타이밍될 수 있게 하고, 선택적인 선택적인 1/2(one-half) 사이클 지연이 아웃고잉 신호의 상승 및/또는 하강 에지에 추가될 수 있게 한다. 각 아웃고잉 신호에 지연은 CSR로 구성가능하다. 각 NFL 블록(250)은 NFL 블록(250)으로부터 각 제어기(101)의 경우로부터 모든 출력에 걸쳐 패드로 매칭된 지연과 연관된 패드에 가까이 놓여야 한다. 일부 실시예에서, NPL(250)은 플립-플롭(260), 플립-플롭(262), 조합(combinatorial) 논리(264), 및 다중화기(266)를 포함한다. 일부 실시예에서, 플립-플롭(260 및 262)은 D-유형 플롭으로 구현된다. 일부 실시예에서, 조합 논리(264)는 AND, OR, 및/또는 NOT 게이트를 포함할 수 있다. NPL(250)에서 다중화기(266)에 각 가능한 경로는 가능한 한 가까이 매칭된 것이어야 한다.
도 12를 참조하면, 본 발명의 일 실시예에 따라 다중 채널을 포함하는 비휘발성 메모리 제어 시스템을 도시하는 다이어그램이 도시된다. 일부 실시예에서, 비휘발성 메모리 시스템(300)은 호스트(202), 비휘발성 메모리 제어기 서브시스템(304) 및 다수의 비휘발성 메모리 매체(306a-306n)를 포함할 수 있다. 호스트(302)는 호스트(302) 및 비휘발성 메모리 제어기 서브시스템(304) 사이에 커맨드 및 응답을 전송하도록 구성된 커맨드 인터페이스를 통해 비휘발성 메모리 제어기 서브시스템(304)과 통신할 수 있다. 각 비휘발성 메모리 매체(306a-306n)는 비휘발성 메모리 제어기 서브시스템(304)의 각 채널에 연결될 수 있다.
일부 실시예에서, 비휘발성 메모리 제어기 서브시스템(304)은 블록(310), 블록(312), 블록(314), 및 다수의 블록(316a-316n)을 포함할 수 있다. 블록(310)은 비휘발성 메모리 제어기 서브시스템(304)의 백엔드 처리 유닛(BEPU) 및/또는 다른 프로세서를 포함할 수 있다. 블록(312)은 비휘발성 메모리 제어기 서브시스템(304)의 직접 메모리 액세스(DNA) 엔진 또는 엔진들을 포함할 수 있다. 블록(314)은 비휘발성 메모리 제어기 서브시스템(304)의 다중화 서브시스템을 구현할 수 있다. 블록(314)은 블록(316a-316n)을 블록(310 및 312)에 결합하도록 구성될 수 있다. 블록(316a-316n)은 전술된 제어기(101)와 유사하게 구현된 인터페이스 관리 프로세서를 포함할 수 있다. 블록(316a-316n)은 CSR 링 및 각 커맨드 인터페이스에 의해 블록(314)에 결합될 수 있다. 블록(316a-316n)은 또한 각 블록(316a-316n)을 각 비휘발성 메모리 매체(306a-306n)에 결합하도록 구성된 비휘발성 메모리 인터페이스를 더 구비할 수 있다.
"이다(is(are))" 및 동사(verb)와 관련하여 본 명세서에서 사용된 "할 수 있다(may)" 및 "일반적으로"라는 용어는 본 상세한 설명이 예시적인 것이고 본 발명에 기초하여 유도될 수 있는 대안적인 예 분만 아니라 본 발명에 제시된 특정 예를 포함할 만큼 충분히 넓은 것을 의미하는 것으로 이해되는 것임을 전달하려는 것이다. 본 명세서에 사용된 "할 수 있다(may)" 및 "일반적으로" 라는 용어는 대응하는 요소를 생략할 가능이 있는 것이라거나 생략하기를 원한다는 것을 반드시 의미하는 것으로 해석되어서는 아니된다.
도 1-12의 도면에 도시된 기능은 이 기술 분야에 통상의 지식을 가진 자(들)에 명백한 바와 같이, 본 명세서의 개시 내용에 따라 프로그래밍된, 종래의 범용 프로세서, 디지털 컴퓨터, 마이크로프로세서, 마이크로제어기, RISC(reduced instruction set computer) 프로세서, CISC(complex instruction set computer) 프로세서, SIMD(single instruction multiple data) 프로세서, 신호 프로세서, 중앙 처리 유닛(CPU), 산술 논리 유닛(arithmetic logic unit)(ALU), 비디오 디지털 신호 프로세서(video digital signal processor)(VDSP) 및/또는 유사한 연산 기계 중 하나 이상을 사용하여 구현(예를 들어 시뮬레이션된)될 수 있다. 적절한 소프트웨어, 펌웨어, 코딩, 루틴, 명령, 옵코드(opcode), 마이크로코드, 및/또는 프로그램 모듈은 이 기술 분야에 통상의 지식을 가진 자(들)에게 명백한 바와 같이 본 발명의 개시 내용에 기초하여 통상의 프로그래머라면 용이하게 제조할 수 있을 것이다. 소프트웨어는 일반적으로 기계 구현의 하나 이상의 프로세서에 의하여 하나의 매체 또는 수 개의 매체로부터 실행된다.
본 발명의 실시예는 또한 ASIC(application specific integrated circuit), 플랫폼 ASIC, FPGA(field programmable gate array), PLD(programmable logic device), CPLD(complex programmable logic device), 씨오브게이트(sea-of-gate), RFIC(radio frequency integrated circuit), ASSP(application specific standard product), 하나 이상의 모노리틱 집적 회로, 플립-칩 모듈 및/또는 다중 칩 모듈로 배열된 하나 이상의 칩 또는 다이를 제조하는 것에 의해 또는 본 명세서에 설명된 바와 같이 종래의 성분 회로를 적절히 네트워크로 상호 연결하는 것에 의해 구현될 수 있고, 이들 변형은 이 기술 분야에 통상의 지식을 가진 자(들)에게 용이하게 가능한 것이다.
본 발명의 실시예는 또한 본 발명에 따라 하나 이상의 공정 또는 방법을 수행하도록 기계를 프로그래밍하는데 사용될 수 있는 명령을 포함하는 저장 매체 또는 매체 및/또는 송신 매체 또는 매체들일 수 있는 컴퓨터 프로그램 제품을 포함할 수 있다. 주변 회로의 동작과 함께 기계에 의해 컴퓨터 제품에 포함된 명령의 실행은 오디오 및/또는 시각적 묘사와 같은 물리적 대상 또는 물질을 나타내는 저장 매체 및/또는 하나 이상의 출력 신호에 하나 이상의 파일로 입력 데이터를 변환할 수 있다. 저장 매체는 플로피 디스크, 하드 드라이브, 자기 디스크, 광 디스크, CD-ROM, DVD 및 광자기 디스크를 포함하는 임의의 유형의 디스크 및 ROM(read-only memories), RAM(random access memory), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), UVPROM(ultra-violet erasable programmable ROM), 플래시 메모리, 자기 카드, 광학 카드, 및/또는 전자적 명령을 저장하는데 적절한 임의의 유형의 매체와 같은 회로를 포함할 수 있으나 이들로 제한되지 않는다.
본 발명의 요소는 하나 이상의 디바이스, 유닛, 성분, 시스템, 기계 및/또는 장치의 일부 또는 전부를 형성할 수 있다. 디바이스는 서버, 워크스테이션, 저장 어레이 제어기, 저장 시스템, 퍼스널 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 팜 컴퓨터, 퍼스널 디지털 어시스턴트(personal digital assistant)(PDA), 휴대용 전자적 디바이스, 배터리로 전력이 공급되는 디바이스, 셋톱 박스, 인코더, 디코더, 트랜스코더, 압축기, 압축해제기, 전치-프로세서(pre-processor), 후치-프로세서(post-processor), 송신기, 수신기, 트랜시버, 암호(cipher) 회로, 셀룰러폰, 디지털 카메라, 위치 및/또는 네비게이션 시스템, 의료 장비, 헤드업 디스플레이, 무선 디바이스, 오디오 레코딩, 오디오 저장 및/또는 오디오 플레이백 디바이스, 비디오 레코딩, 비디오 저장 및/또는 비디오 플레이백 디바이스, 게임 플랫폼, 주변장치 및/또는 다중 칩 모듈을 포함할 수 있으나 이들로 제한되지 않는다. 이 기술 분야에 통상의 지식을 가진 자(들)라면 본 발명의 요소들은 특정 응용의 기준을 충족하도록 다른 유형의 디바이스에 구현될 수 있다는 것을 이해할 수 있을 것이다.
본 발명의 예시는 실시예를 참조하여 설명되고 도시되었으나, 이 기술 분야에 통상의 지식을 가진 자라면 형태 및 상세에 있어 여러 변경이 본 발명의 범위를 벗어남이 없이 이루어질 수 있다는 것을 이해할 수 있을 것이다.

Claims (12)

  1. 시스템으로서,
    커맨드 인터페이스를 통해 커맨드를 수신하고 응답을 송신하도록 구성된, 고레벨(high-level) 제어 프로세서;
    상기 시스템을 하나 이상의 비휘발성 메모리 디바이스에 결합하도록 구성된 비휘발성 메모리 디바이스 인터페이스 ― 상기 비휘발성 메모리 디바이스 인터페이스는 복수의 데이터 I/O 핀 및 복수의 제어 I/O 핀을 포함함 ―; 및
    (i) 상기 고레벨 제어 프로세서 및 (ii) 상기 비휘발성 메모리 디바이스 인터페이스에 결합된, 저레벨(low-level) 마이크로-시퀀서를 포함하며,
    상기 저레벨 마이크로-시퀀서는, 상기 저레벨 마이크로-시퀀서에 의해 판독가능하고 상기 고레벨 제어 프로세서에 의해 기록가능한 제어 저장소를 포함하며,
    상기 커맨드의 특정 커맨드를 수신한 것에 응답하여,
    상기 고레벨 제어 프로세서는 상기 저레벨 마이크로-시퀀서가 상기 특정 커맨드에 따라 상기 제어 저장소 내 위치에서 실행을 시작하도록 할 수 있고,
    상기 저레벨 마이크로-시퀀서는 상기 비휘발성 메모리 디바이스 인터페이스에 결합된 상기 하나 이상의 비휘발성 메모리 디바이스의 프로토콜에 따라 상기 특정 커맨드의 적어도 일부를 수행할 수 있고,
    상기 저레벨 마이크로-시퀀서는 상기 프로토콜에 따라 상기 특정 커맨드를 수행하도록 상기 제어 I/O 핀 및 상기 데이터 I/O 핀의 상태를 변화시킬 수 있고,
    상기 제어 저장소는 상기 비휘발성 메모리 디바이스 인터페이스에 부착된 상기 하나 이상의 비휘발성 메모리 디바이스와 연관된 하나 이상의 프로토콜을 수행하도록 상기 고레벨 제어 프로세서에 의해 프로그래밍되고,
    상기 고레벨 제어 프로세서는,
    초기에 상기 고레벨 제어 프로세서가 복수의 유형의 비휘발성 메모리 디바이스와 호환가능한 저속 프로토콜을 수행하도록 상기 제어 저장소를 프로그래밍하고; 그리고
    후속하여 상기 고레벨 제어 프로세서가 상기 하나 이상의 비휘발성 메모리 디바이스와 호환가능한 고속 프로토콜을 수행하도록 상기 제어 저장소를 프로그래밍하도록 추가로 구성된 시스템.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 저레벨 마이크로-시퀀서를 통해 상기 비휘발성 메모리 디바이스 인터페이스에 결합된 출력 데이터 인터페이스; 및
    상기 저레벨 마이크로-시퀀서를 통해 상기 비휘발성 메모리 디바이스 인터페이스에 결합된 입력 데이터 인터페이스;를 더 포함하며,
    상기 출력 데이터 인터페이스는 상기 비휘발성 메모리 디바이스 인터페이스에 송신될 데이터를 수신하도록 구성된 출력 데이터 버퍼를 포함하고,
    상기 입력 데이터 인터페이스는 상기 비휘발성 메모리 디바이스 인터페이스로부터 수신된 데이터를 수신하도록 구성된 입력 데이터 버퍼를 포함하는 시스템.
  7. 제6항에 있어서,
    상기 저레벨 마이크로-시퀀서는 추가로,
    (i) 상기 입력 데이터 버퍼의 전체 조건(full condition)을 검출할 수 있고, 그리고
    (ii) 상기 전체 조건을 검출한 것에 응답하여 상기 제어 저장소 내 결정된 위치로 점프할 수 있는 시스템.
  8. 제1항에 있어서,
    상기 시스템은 솔리드 스테이트 드라이브(solid state drive, SSD) 디바이스의 일부인 시스템.
  9. 제1항에 있어서,
    상기 시스템은 하나 이상의 집적 회로로 구현되는 시스템.
  10. 비휘발성 메모리 채널을 제어하는 방법으로서,
    고레벨 제어 프로세서에 결합된 커맨드 인터페이스를 통해 커맨드를 수신하고 응답을 송신하는 단계;
    상기 고레벨 제어 프로세서에 결합된 저레벨 마이크로-시퀀서를 사용하여 제어 저장소 내 위치에서 명령의 실행을 시작하는 단계 ― 상기 위치는 수신된 상기 커맨드 중 특정 커맨드에 따라 상기 고레벨 제어 프로세서에 의해 결정되고, 상기 저레벨 마이크로-시퀀서는, 비휘발성 메모리 디바이스 인터페이스에 의해 상기 저레벨 마이크로-시퀀서에 결합된 하나 이상의 비휘발성 메모리 디바이스의 프로토콜에 따라 상기 특정 커맨드의 적어도 일부를 수행하도록 제어 I/O 핀 및 데이터 I/O 핀의 상태를 변경함 ―;
    상기 고레벨 제어 프로세서를 사용하여 상기 비휘발성 메모리 디바이스 인터페이스에 부착된 상기 하나 이상의 비휘발성 메모리 디바이스와 연관된 하나 이상의 프로토콜을 수행하도록 상기 제어 저장소를 프로그래밍하는 단계;
    초기에 상기 고레벨 제어 프로세서가 복수의 유형의 비휘발성 메모리 디바이스와 호환가능한 저속 프로토콜을 수행하도록 상기 제어 저장소를 프로그래밍하는 단계; 및
    후속하여 상기 고레벨 제어 프로세서가 상기 하나 이상의 비휘발성 메모리 디바이스와 호환가능한 고속 프로토콜을 수행하도록 상기 제어 저장소를 프로그래밍하는 단계
    를 포함하는 방법.
  11. 삭제
  12. 삭제
KR1020140011498A 2013-02-15 2014-01-29 낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용한 비휘발성 메모리 채널 제어 KR102170644B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/768,215 2013-02-15
US13/768,215 US9081666B2 (en) 2013-02-15 2013-02-15 Non-volatile memory channel control using a general purpose programmable processor in combination with a low level programmable sequencer

Publications (2)

Publication Number Publication Date
KR20140103048A KR20140103048A (ko) 2014-08-25
KR102170644B1 true KR102170644B1 (ko) 2020-10-27

Family

ID=50097556

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140011498A KR102170644B1 (ko) 2013-02-15 2014-01-29 낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용한 비휘발성 메모리 채널 제어

Country Status (6)

Country Link
US (2) US9081666B2 (ko)
EP (1) EP2767899A3 (ko)
JP (1) JP6577166B2 (ko)
KR (1) KR102170644B1 (ko)
CN (2) CN103995686B (ko)
TW (1) TWI633433B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102081588B1 (ko) * 2013-08-08 2020-02-26 삼성전자 주식회사 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러
SG11201702739VA (en) * 2014-10-03 2017-04-27 Agency Science Tech & Res Active storage unit and array
US20160179388A1 (en) * 2014-12-18 2016-06-23 CNEXLABS, Inc. Method and apparatus for providing programmable nvm interface using sequencers
US20170046102A1 (en) * 2015-08-14 2017-02-16 Marvell World Trade Ltd. Flexible interface for nand flash memory
US10175902B2 (en) * 2016-06-27 2019-01-08 Micron Technology, Inc.. Managing host communication with a regulator in a low power mode
SG11201900499SA (en) * 2016-07-29 2019-02-27 Razer Asia Pacific Pte Ltd Interface devices, methods for controlling an interface device, and computer-readable media
WO2018039855A1 (zh) * 2016-08-29 2018-03-08 华为技术有限公司 内存装置、内存控制器、数据缓存装置及计算机系统
US10261876B2 (en) 2016-11-08 2019-04-16 Micron Technology, Inc. Memory management
US10430085B2 (en) * 2016-11-08 2019-10-01 Micron Technology, Inc. Memory operations on data
US10628049B2 (en) 2017-07-12 2020-04-21 Sandisk Technologies Llc Systems and methods for on-die control of memory command, timing, and/or control signals
JP2020046918A (ja) 2018-09-19 2020-03-26 キオクシア株式会社 記憶装置及び制御方法
WO2020223849A1 (en) 2019-05-05 2020-11-12 Yangtze Memory Technologies Co., Ltd. Memory control system with a sequence processing unit
EP3751572B1 (en) * 2019-06-13 2021-12-01 Melexis Technologies NV Memory device
US11200000B2 (en) 2019-07-17 2021-12-14 Samsung Electronics Co., Ltd. Memory controller and storage device including the same
US11249674B2 (en) * 2020-06-03 2022-02-15 Innogrit Technologies Co., Ltd. Electrical mirroring by NAND flash controller
DE102020207616A1 (de) * 2020-06-19 2021-12-23 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Betreiben einer Recheneinheit
US11755208B2 (en) 2021-10-12 2023-09-12 Western Digital Technologies, Inc. Hybrid memory management of non-volatile memory (NVM) devices for use with recurrent neural networks
US11893244B2 (en) * 2021-10-12 2024-02-06 Western Digital Technologies, Inc. Hybrid memory management of non-volatile memory (NVM) devices for use with recurrent neural networks
WO2023091377A1 (en) * 2021-11-22 2023-05-25 Rambus Inc. Logging burst error information of a dynamic random access memory (dram) using a buffer structure and signaling

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070271423A1 (en) * 2006-05-16 2007-11-22 Ite Tech. Inc. Control device and control method for memory

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994009436A1 (en) 1992-10-13 1994-04-28 Compaq Computer Corporation Disk array controller having advanced internal bus protocol
US5448709A (en) 1992-10-13 1995-09-05 Compaq Computer Corporation Disk array controller having command descriptor blocks utilized by bus master and bus slave for respectively performing data transfer operations
US5918242A (en) * 1994-03-14 1999-06-29 International Business Machines Corporation General-purpose customizable memory controller
US5721860A (en) * 1994-05-24 1998-02-24 Intel Corporation Memory controller for independently supporting synchronous and asynchronous DRAM memories
US6505282B1 (en) * 1994-11-30 2003-01-07 Intel Corporation Method and apparatus for determining memory types of a multi-type memory subsystem where memory of the different types are accessed using column control signals with different timing characteristics
US5719880A (en) * 1996-09-20 1998-02-17 Texas Instruments Incorporated, A Delaware Corporation On-chip operation for memories
US6336174B1 (en) * 1999-08-09 2002-01-01 Maxtor Corporation Hardware assisted memory backup system and method
US6668308B2 (en) * 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
JP2002007200A (ja) * 2000-06-16 2002-01-11 Nec Corp メモリ制御装置及び動作切替方法並びにインターフェース装置、半導体集積チップ、記録媒体
DE10031223A1 (de) * 2000-06-27 2002-01-10 Philips Corp Intellectual Pty Mikrocontroller
JP4722305B2 (ja) * 2001-02-27 2011-07-13 富士通セミコンダクター株式会社 メモリシステム
JP2003131940A (ja) * 2001-10-25 2003-05-09 Hitachi Ltd メモリコントローラ装置
JP3756818B2 (ja) * 2002-01-09 2006-03-15 株式会社メガチップス メモリ制御回路および制御システム
US20040054864A1 (en) * 2002-09-13 2004-03-18 Jameson Neil Andrew Memory controller
US7277995B2 (en) * 2003-10-29 2007-10-02 Dot Hill Systems Corporation Storage controller and method for performing host access control in the host interface adapter
JP4357331B2 (ja) * 2004-03-24 2009-11-04 東芝メモリシステムズ株式会社 マイクロプロセッサブートアップ制御装置、及び情報処理システム
US7308526B2 (en) * 2004-06-02 2007-12-11 Intel Corporation Memory controller module having independent memory controllers for different memory types
GB2421092B (en) * 2004-12-07 2008-12-03 Hewlett Packard Development Co Bufferless writing of data to memory
US7680967B2 (en) 2005-01-27 2010-03-16 Innovasic, Inc. Configurable application specific standard product with configurable I/O
US7406550B2 (en) * 2005-01-27 2008-07-29 Innovasic, Inc Deterministic microcontroller with configurable input/output interface
US7526579B2 (en) 2005-01-27 2009-04-28 Innovasic, Inc. Configurable input/output interface for an application specific product
US7673190B1 (en) * 2005-09-14 2010-03-02 Unisys Corporation System and method for detecting and recovering from errors in an instruction stream of an electronic data processing system
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7574611B2 (en) * 2005-11-28 2009-08-11 Atmel Corporation Command decoder for microcontroller based flash memory digital controller system
US8762620B2 (en) 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
US7808807B2 (en) 2008-02-26 2010-10-05 Ovonyx, Inc. Method and apparatus for accessing a multi-mode programmable resistance memory
CN102047229A (zh) * 2008-05-29 2011-05-04 先进微装置公司 用于存储装置训练的嵌入式可编程元件
US8321647B2 (en) * 2009-05-06 2012-11-27 Apple Inc. Multipage preparation commands for non-volatile memory systems
US8180981B2 (en) 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US8266369B2 (en) * 2009-12-18 2012-09-11 Nxp B.V. Flash memory interface
WO2011106049A1 (en) * 2010-02-23 2011-09-01 Rambus Inc. Time multiplexing at different rates to access different memory types
US9529712B2 (en) * 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types
US9348774B2 (en) * 2013-01-25 2016-05-24 Seagate Technology Llc Controller-opaque communication with non-volatile memory devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070271423A1 (en) * 2006-05-16 2007-11-22 Ite Tech. Inc. Control device and control method for memory

Also Published As

Publication number Publication date
TWI633433B (zh) 2018-08-21
TW201502775A (zh) 2015-01-16
US9262084B2 (en) 2016-02-16
US20140237162A1 (en) 2014-08-21
CN103995686B (zh) 2019-06-28
CN103995686A (zh) 2014-08-20
JP6577166B2 (ja) 2019-09-18
US20150268870A1 (en) 2015-09-24
CN110134442A (zh) 2019-08-16
JP2014157603A (ja) 2014-08-28
EP2767899A3 (en) 2016-08-17
KR20140103048A (ko) 2014-08-25
US9081666B2 (en) 2015-07-14
EP2767899A2 (en) 2014-08-20

Similar Documents

Publication Publication Date Title
KR102170644B1 (ko) 낮은 레벨 프로그래밍 가능한 시퀀서와 조합한 범용 프로그래밍 가능한 프로세서를 사용한 비휘발성 메모리 채널 제어
US10942737B2 (en) Method, device and system for control signalling in a data path module of a data stream processing engine
US9348783B2 (en) Apparatus and method emulating a parallel interface to effect parallel data transfer from serial flash memory
US6449709B1 (en) Fast stack save and restore system and method
EP2565795B1 (en) High priority command queue for peripheral component
US9405552B2 (en) Method, device and system for controlling execution of an instruction sequence in a data stream accelerator
US20060059286A1 (en) Multi-core debugger
US12001689B2 (en) Transparently attached flash memory security
US20130179614A1 (en) Command Abort to Reduce Latency in Flash Memory Access
US9529686B1 (en) Error protection for bus interconnect circuits
US8918680B2 (en) Trace queue for peripheral component
KR20170078697A (ko) 교착상태 방지를 위한 방법들 및 회로들
TWI534615B (zh) 串列周邊介面控制器、串列周邊介面快閃記憶體及其存取方法和存取控制方法
US11127442B2 (en) Data transfers between a memory and a distributed compute array
US9830154B2 (en) Method, apparatus and system for data stream processing with a programmable accelerator
JP2010277142A (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