KR20130009927A - 플래시 미디어 제어기 내 메타 데이터 처리 방법 및 장치 - Google Patents

플래시 미디어 제어기 내 메타 데이터 처리 방법 및 장치 Download PDF

Info

Publication number
KR20130009927A
KR20130009927A KR1020120076961A KR20120076961A KR20130009927A KR 20130009927 A KR20130009927 A KR 20130009927A KR 1020120076961 A KR1020120076961 A KR 1020120076961A KR 20120076961 A KR20120076961 A KR 20120076961A KR 20130009927 A KR20130009927 A KR 20130009927A
Authority
KR
South Korea
Prior art keywords
context
flash
metadata
block
data
Prior art date
Application number
KR1020120076961A
Other languages
English (en)
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 KR20130009927A publication Critical patent/KR20130009927A/ko

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

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

Abstract

플래시 미디어 제어기 내부에서 플래시 메모리의 페이지에 저장된 메타 데이터를 처리하는 방법에 관한 것이다. 본 방법은 일반적으로 (i) 컨텍스트 마다 상기 메타 데이터를 정의하는 단계로서, 상기 컨텍스트는 페이지 마다 정의되는, 단계, (ii) 상기 메타 데이터의 크기가 소정의 임계 값 보다 작거나 동일할 때, 완성된 메타 데이터를 상기 컨텍스트 구조 안에 저장하는 단계, 및 (3) 상기 메타 데이터의 크기가 소정의 임계 값 보다 클 때, 상기 컨텍스트 안에서 메타 데이터 지시자를 정의하는 단계;를 포함한다.

Description

플래시 미디어 제어기 내 메타 데이터 처리 방법 및 장치{META DATA HANDLING WITHIN A FLASH MEDIA CONTROLLER}
본 출원은 2011년 7월 14일 출원된 미국 특허 출원 61/507,659를 기초로 우선권을 수반하고 있으며, 상기 우선권 기초 출원은 본 출원에 모두 포함되어 있다.
본 출원은 공동 진행중인 2011년 12월 21일 출원된 미국 출원 13/332,849에 관련된 것으로서, 상기 미국 출원은 본 출원에 모두 포함되어 있다.
본 발명은 일반적으로 플래시 미디어 시스템에 관한 것으로서, 보다 구체적으로는 플래시 미디어 제어기 내에서 메타 데이터를 처리하는 방법 및/또는 장치에 관한 것이다.
플래시 메모리 시스템은 하드웨어 드라이버와 관련된 기계적인 지연 현상을 가지지 않기 때문에, 플래시 메모리는 대용량 저장 환경에 있어서 매우 매력적인 장치이다. 이와 같이, 상기 플래시 메모리 시스템은 더 높은 성능을 가지고 더 낮은 가격, 전력, 발열 및 필요 공간을 차지한다. 그럼에도 불구하고, 플래시 메모리는 종래 특정의 기술적 제한 사항 때문에 상기 대용량 저장 환경에 사용되어 오지 못했다. 그 첫 번째 기술적 문제점은 기계적인 하드 드라이브의 순차 접근 속도의 1/10정도로 느린 쓰기 속도이다. 이와 같이 느린 쓰기 속도는 데이터가 쓰기 동작에 앞서 긴 삭제 주기를 가지지 않고 NAND 플래시 장치에 덧쓰여지지 못하기 때문이다. 상기 삭제 주기가 쓰기 성능에 직접적으로 영향을 주기 때문에, 대부분의 플래시 장치의 설계 형태는 쓰기 데이터를 새로운 위치에 이동시키고 그 때까지 삭제 주기를 지연시키고 있다. 사용 중에 있는 시스템에서, 지연된 삭제 주기는 프로세서가 빈 플래시 페이지를 다 써서 새로운 사항을 생성하는 것을 멈추어야 할 때까지 이루어질 수 있고, 이는 시스템 성능에 상당한 영향을 준다. 두 번째 기술적 문제점은 단일 레벨 셀(Single Level Cell, "SLC")) 장치에 대한 100,000 개의 삭제 주기 및 다중 레벨 셀(Multi-Level Cell ("MLC")) 장치에 대한 10,000 개의 삭제 주기의 각각의 플래시 메모리 페이지에 특정 한계가 존재한다는 것이다. 삭제 주기의 상기 한계 수는 예상치 못한 데이터 스트림이 매우 많이 삭제 동작의 대상이 된 사용 빈도가 높은 메모리의 특정 영역이 발생될 수 있게 하는 데이터 집중 문제를 야기한다. 이와 같이 플래시 메모리에 영향을 주는 여러 요소의 결과로서 데이터 손실이 발생할 수 있고, 상기 여러 요소로서 읽기 동작 방해 현상 또는 프로그램 방해 현상을 포함하며, 이로써 상기 방해 받은 셀에 인접한 메모리 셀의 읽기 동작 또는 쓰기 동작을 통해서 발생되는 데이터 비트의 손실이 야기된다. 또한, 플래시 메모리 셀의 상태가 시간이 지남에 따라서 예상치 못한 상태로 변할 수 있다.
플래시 기술에 있어서, 플래시 관리 기능은 펌웨어에서 수행된다. 플래시 관리 기능은 플래시 버퍼 관리 기능, 결함 관리 기능 및 사용 균일화 기능을 포함한다. 이러한 모든 관리 기능은 임시 데이터 또는 펌웨어를 통해 이용되는 그 밖의 정보를 저장하기 위한 플래시 장치 내 특정 저장부를 이용한다. 상기 임시 데이터 및 상기 펌웨어를 통해 이용되는 그 밖의 정보는 플래시 페이지에 저장되고 일반적으로 메타 데이터라고 불린다.
따라서, 플래시 미디어 제어기 내에서 메타 데이터를 처리하는 방법 및/또는 장치가 요구되고 있다.
플래시 미디어 제어기 내부에서 플래시 메모리의 페이지에 저장된 메타 데이터를 처리하는 방법에 관한 것이다. 본 방법은 일반적으로 (i) 컨텍스트 마다 상기 메타 데이터를 정의하는 단계로서, 상기 컨텍스트는 페이지 당 정의되는, 단계, (ii) 상기 메타 데이터의 크기가 소정의 임계 값 보다 작거나 동일할 때, 완성된 메타 데이터를 상기 컨텍스트 구조 안에 저장하는 단계, 및 (3) 상기 메타 데이터의 크기가 소정의 임계 값 보다 클 때, 상기 컨텍스트 안에서 메타 데이터 지시자를 정의하는 단계;를 포함한다.
본 발명의 목적, 특징 및 효과는 플래시 미디어 제어기 내에서 메타 데이터를 처리하는 방법 및/또는 장치를 제공하는 것으로서, 본 발명은 (i) 컨텍스트 마다 상기 메타 데이터 정보를 정의하고, 상기 컨텍스트는 페이지 마다 정의되고, (ii) 상기 메타 데이터의 크기가 소정의 임계 값 보다 작거나 동일할 때, 완성된 메타 데이터를 상기 컨텍스트 구조 안에 저장하고, (3) 상기 메타 데이터의 크기가 소정의 임계 값 보다 클 때, 상기 컨텍스트 안에서 메타 데이터 지시자를 정의하고, (iv) 호스트 사용자 데이터를 가지는 메타 데이터를 분배하고, 및/또는 에러 정정 코딩, 완전성 검사 및 정정 기능을 사용하여 메타 데이터를 보호한다.
본 발명의 목적, 특징 및 효과는 이하 상세한 설명 및 첨부된 도면을 참조하여 설명될 것이다.
도 1은 단일 칩 시스템(SOC) 컨텍스트에서 수행되는 플래시 미디어 제어기를 도시한 블록 다이어그램이다.
도 2는 본 발명의 실시예를 따르는 예시적 플래시 미디어 제어기(FMC) 아키텍처를 도시한 블록 다이어그램이다.
도 3은 본 발명의 실시예를 따르는 예시적 플래시 레인 제어기 아키텍처를 도시한 블록 다이어그램이다.
도 4는 도 3의 컨텍스트 관리 모듈의 예시적 서브 모듈을 도시한 다이어그램이다.
도 5는 도 3의 다이 관리 모듈의 예시적 서브 모듈을 도시한 다이어그램이다.
도 6은 도 3의 플래시 동작 관리자 모듈의 예시적 서브 모듈을 도시한 다이어그램이다.
도 7은 도 3의 데이터 흐름 관리자 모듈의 예시적 서브 모듈을 도시한 다이어그램이다.
도 8은 도 3의 컨텍스트 관리자 모듈의 예시적 수행 상태를 도시한 다이어그램이다.
도 9는 도 3의 플래시 동작 관리자의 예시적 수행 상태를 도시한 다이어그램이다.
도 10은 본 발명의 실시예를 따르는 예시적 플래시 미디어 컨텍스트 레이아웃을 도시한 다이어그램이다.
도 11은 본 발명의 실시예를 따르는 플래시 페이지 내 영역 분할 상태를 도시한 다이어그램이다.
도 12a 및 도 12b는 본 발명의 실시예를 따르는 예시적 FMC 플래시 페이지 구조를 도시한 다이어그램이다.
도 13은 본 발명의 실시예를 따르는 과정을 도시한 플로우 다이어그램이다.
일 실시예에 있어서, 본 발명에 따른 시스템은 SAS("Serial Attached SACSI"), FC("Fibre Channel"), 및 FC-AL("Fibre Channel Arbitrated Loop")를 포함하는 다양한 대용량 저장 프로토콜로 작동될 수 있으며, 상기 프로토콜들은 소형 컴퓨터 시스템 인터페이스("SCSI(Small Computer Systems Interface)"), 및 직렬 ATA("SATA")를 기반으로 한다. 당해 업계의 당업자라면 상기 대용량 저장 프로토콜을 잘 알고 있을 것이기 때문에 이러한 프로토콜은 여기서 상세히 설명하지 않는다. 특정 프로토콜의 경우를 제외하고, 여기서 설명되는 시스템 및 방법은 사용되는 특정 프로토콜에 의존하지 않으며 모든 프로토콜에 대하여 올바르게 작동될 수 있다. 더 나아가, 본 발명의 실시예를 따르는 시스템 및 방법은, 기업용 어플리케이션의 프로토콜뿐 아니라 최종 사용자용 어플리케이션의 프로토콜과 같이 그 밖의 유사한 프로토콜, 현재 사용 중이거나 아직 개발중인 프로토콜을 통한 사용에 적용될 수 있다. 여기서 설명되는 시스템은 플래시 페이지에 저장되는 펌웨어에 의하여 이용되는 임시 데이터 및 정보(예를 들어, 메타 데이터)와 같은 펌웨어 데이터를 다루는 새로운 방법 및/또는 아키택쳐를 포함하고 있다.
도 1을 보면, 본 발명의 바람직한 실시예를 따른 플래시 미디어 제어기를 통해서 작동되는 시스템(100)의 블록 다이어그램이 도시되어 있다. 일 실시예에 있어서, 상기 시스템(또는 아키텍쳐)(100)은 블록(또는 회로)(102), 복수의 블록(또는 회로)(104a 내지 104n), 복수의 블록(또는 회로)(106a 내지 106n), 블록(또는 회로)(108), 블록(또는 회로)(110), 블록(또는 회로)(112), 블록(또는 회로)(114), 및 블록(또는 회로)(116)을 포함한다. 상기 회로(102) 내지 회로(116)는 하드웨어, 펌웨어, 소프트웨어, 하드웨어, 펌웨어 및/또는 소프트웨어의 조합, 또는 그 밖의 수행 수단을 통해 기능할 수 있는 모듈 및/또는 블록을 의미한다.
일 실시예에 있어서, 상기 블록(102)은 본 발명의 실시예를 따르는 플래시 미디어 제어기(FMC, Flash Media Controller)로서 수행될 수 있다. 상기 블록(104a 내지 104n)은 복수의 제1 플래시 저장 장치 또는 요소로서 수행될 수 있다. 상기 블록(104a 내지 104n)은 상기 블록(102)의 제1 플래시 레인(lane)에 결합되어 있을 수 있다. 상기 블록(102)의 제1 플래시 레인은 독립적인 칩 인에이블(Chip Enable, CE) 신호를 상기 블록(104a 내지 104n) 각각에 제공한다. 상기 블록(106a 내지 106b)은 복수의 제2 플래시 저장 장치 또는 요소로서 수행될 수 있다. 상기 블록(106a 내지 106b)은 상기 블록(102)의 제2 플래시 레인에 결합되어 있을 수 있다. 상기 블록(102)의 제2 플래시 레인은 독립적인 칩 인에이블(CE) 신호를 상기 블록(106a 내지 106n) 각각에 제공한다. 비록 도 1에서는 상기 FMC(102)가 두 개의 플래시 레인 인스턴스를 가지도록 도시되었지만, 특정 실시예를 위한 설계 기준을 만족하여 수행될 수 있도록 추가적인 플래시 레인이 있을 수 있다는 것은 당업자에게 있어서 자명할 것이다. 상기 플래시 요소(104a 내지 104n) 및 요소(106a 내지 106n)는 하나 이상의 다이(die)를 포함하는 단일 플래시 패키지로서 수행될 수 있다. 상기 플래시 요소(104a 내지 104n) 및 요소(106a 내지 106n)는 NAND 및/또는 NOR 플래시 장치를 사용하여 수행될 수 있다. 상기 블록(102)은 적절한 NAND 플래시 및/또는 NOR 플래시용 물리 계층 지원(PHY)을 포함할 수 있다.
상기 블록(108)은 상기 블록(102)와 결합되어 있는 외부 FMC 프로세서(FARM)로서 수행될 수 있다. 상기 블록(110)은 정적 랜덤 액세스 메모리(SRAM) 및/또는 동적 랜덤 액세스 메모리(DRAM)를 블록(102)과 결합시키는 메모리 제어기로서 수행될 수 있다. 상기 블록(112)은 하나 이상의 SRAM 장치로서 수행될 수 있다. 상기 블록(114)은 하나 이상의 DRAM 장치로서 수행될 수 있다. 상기 블록(116)은 블록(110)과 블록(114)을 결합하는 이중 데이터 전송률(DDR, Double Data Rate) 물리 계층(PHY) 인터페이스로서 수행될 수 있다. 일 실시예에 있어서, 상기 블록(102), 블록(108), 블록(110), 블록(112), 블록(114), 및 블록(116)은 SOC(System on Chip) 아키택쳐로서 수행될 수 있다.
상기 블록(102)은 상기 플래시 장치(104a 내지 104n) 및 장치(106a 내지 106n)를 사용하는 다양한 적용 방법을 지원하도록 구성된 소프트 IP 블록으로서 수행될 수 있다. 여기서 사용되는 바와 같이, 소프트 IP 블록이란 용어는 일반적으로 소프트웨어(예를 들어, HDL 코드, RTL 코드 등등)로 제공되는 집적 회로의 구성 요소를 의미한다. 상기 블록(102)은 일반적으로 플래시 장치들과의 다중 플래시 인터페이스를 지원한다. 상기 블록(102)은 일반적으로 프로세서(예를 들어, ARM)를 포함하지 않는다. 하지만, 상기 블록(102)은 일 실시예에 있어서 상기 블록(102)을 외부 프로세서(108)와 결합시키는 인터페이스(예를 들어, 32비트 AHB 등) 기능을 수행할 수 있다. 상기 블록(102)은 일반적으로 상기 블록(104a 내지 104n) 및 블록(106a 내지 106n)을 통해 형성된 플래시 미디어 대용량 저장 집합체를 관리하는 기능을 가진다. 일 실시예에 있어서, 상기 블록(102)은 다양하게 구현된 플래시 레인 제어기(FLC)를 이용할 수 있고, 이는 독립적인 다중 플래시 요소가 부착된 단일 플래시 데이터 레인과 관련된 대부분의 관리 기능을 수행할 수 있다. 상기 블록(102)은 대략 플래시 액세스 기능을 가지는 것으로 이해될 수 있다. 상기 블록(102)은 일반적으로 플래시-인지 레인을 단일의 하드웨어 실체에 끼워 넣는 단계와 관련되어 있다. 일 실시예에 있어서, 블록(102)의 기능을 수행하는 상기 소프트 IP는 적용 방법에 따라서 최대 가능 레인 수를 지원하기 위하여 파라미터로 표시될 수 있다. 예를 들어, 일 실시예에 있어서 레인의 수는 2개일 수 있다. 또 다른 실시예에 있어서 레인의 수는 8개일 수 있다.
일 실시예에 있어서, 상기 블록(102)은 (i) 두 개의 플래시 레인; (ii) 각각의 플래시 레인에서 최대 9개의 칩 인에이블(CE) 신호; (iii) 비동기식 일반 모드, 비동기식 확장 모드, Toggle 1.0, ONFI 2.1, ONFI 2.3 및 Toggle 2.0를 포함하는 플래시 인터페이스; (iv) 하드웨어로 구성될 수 있는 다중 레인들 사이에 위치한 전용의 EEC 또는 공유 EEC(예를 들어, 파라미터로 표시되고 상기 블록(102)를 수행하는 소프트 IP 블록의 특징); (v) 플래시 인터페이스 상의 8비트 데이터; (vi) 상기 Toggle 2.0 또는 ONFI 2.3 플래시 인터페이스 세목에 있어서 플래시 인터페이스 상의 최대 200MHz DDR 속도; (vii) 부분적인 읽기 명령어, (viii) 랜덤 읽기 명령어; (ix) 플래시 읽기/쓰기에서 CRC 스트립/인서트(Strip/Insert) 옵션; (x) 4K 바이트 데이터에 대하여 최대 64비트 정정 기능; (xi) 512, 2K, 4K 바이트 데이터에 대하여 조절 가능한 n-비트 정정 기능(최대 n = 64); (xii) 레지스터 프로그래밍에 대한 32비트 AHB 인터페이스; (xiii) 외부 메모리(예를 들어, DRAM 또는 SRAM) 상에 컨텍스트 명령어를 저장; (xiv) 플래시 레인 제어기 내 컷스루 버퍼(cut-through buffer); (xv) 더 좋은 성능을 제공하기 위한 독립적인 플래시 읽기 및 쓰기 데이터 통로; (xvi) 매 플래시 유닛 번호(FUN, Flash Unit Number) 당 보고되는 유효(in-order) 상태; (xvii) 플래시 레인 당 데이터 패스에 대한 하나의 읽기 및 하나의 쓰기 버퍼 제어기(BC)를 지원하는 것; (xviii) 컨텍스트 복구를 위한 읽기 BC 인터페이스를 지원하는 것; (xix) 컨텍스트 갱신을 위한 쓰기 BC 인터페이스를 지원하는 것; (xx) 컨텍스트 프리 자원 지시자(CFRP, Context Free Resource Pointer)용 읽기/쓰기 BC 인터페이스를 지원하는 특징을 가질 수 있다.
도 2를 보면, 본 발명의 실시예를 따른 도 1의 예시적 플래시 미디어 제어기(FMC) 아키택쳐를 보다 상세하게 나타낸 블록(102)의 블록 다이어그램이 도시되어 있다. 일 실시예에 있어서, 상기 블록(102)은 주요 기능을 가지는 3 개의 인터페이스로서, 버퍼 제어기(BC) 인터페이스, 플래시 장치 인터페이스 및 프로세서 인터페이스(예를 들어, 32비트 AHB 등) 기능을 수행할 수 있다. 상기 버퍼 제어기(BC) 인터페이스는 블록 다이어그램의 왼편 및 좌측 윗편에 도시되어 있다. 일 실시예에 있어서, 7개의 버퍼 제어기 인터페이스(예를 들어, 3 개의 읽기 인터페이스(BC_RD_I/F), 세 개의 쓰기 인터페이스(BC_WR_I/F), 및 한 개의 읽기/쓰기 인터페이스(BC_RD/WR_I/F))로 수행될 수 있다. 상기 플래시 장치 인터페이스는 블록 다이어그램의 오른편에 도시되어 있다. 일 실시예에 있어서, 두 개의 플래시 레인 인터페이스(예를 들어, FLASH_I/F_0 및 FLASH_I/F_1)로 수행될 수 있다. 상기 32 비트 AHB 인터페이스는 블록 다이어그램의 우측 윗편에 도시되어 있다. 상기 32 비트 AHB 인터페이스는 일 실시예에 있어서 블록(102) 내에서 레지스터(register)를 프로그램하고 상태를 읽고 진단 레지스터를 이용하는데 사용될 수 있다.
상기 블록(102)은 일반적으로 블록(또는 회로)(150), 블록(또는 회로)(152), 복수의 블록(또는 회로)(154a 내지 154n), 복수의 블록(또는 회로)(156a 내지 156n), 복수의 블록(또는 회로)(158a 내지 158n), 블록(또는 회로)(160), 블록(또는 회로)(162), 블록(또는 회로)(164), 블록(또는 회로)(166), 블록(또는 회로)(168), 블록(또는 회로)(170), 복수의 블록(또는 회로)(172a 내지 172n), 및 복수의 블록(또는 회로)(174a 내지 174n)를 포함한다. 상기 회로(150) 내지 회로(174a 내지 174n)는 하드웨어, 펌웨어, 소프트웨어, 하드웨어, 펌웨어 및/또는 소프트웨어의 조합, 또는 그 밖의 수행 수단으로서 수행될 수 있다. 상기 블록(150)은 프로세서 인터페이스 논리 회로(PIL)로서 수행될 수 있다. 상기 블록(152)은 데이터 DMA 관리자(DDM)로서 수행될 수 있다. 상기 블록(154a 내지 154n)은 플래시 버스 제어기(FBC)로서 수행될 수 있다. 상기 블록(156a 내지 156n)은 플래시 레인 제어기(FLC)로서 수행될 수 있다. 상기 블록(158a 내지 158n)은 데이터 전송 통로(DTP)로서 수행될 수 있다. 상기 블록 (160)은 컨텍스트 페치(fetch) 중재기(arbiter)(CA)로서 수행될 수 있다. 상기 블록(162)은 컨텍스트 프리 지시자 자원(CFPM)으로서 수행될 수 있다. 상기 블록(164)은 소모된 컨텍스트 관리자(CCM)로서 수행될 수 있다. 상기 블록(166)은 컨텍스트 회수 포트(CRP)로서 수행될 수 있다. 상기 블록(168)은 컨텍스트 갱신 포트(CUP)로서 수행될 수 있다. 상기 블록(170)은 컨텍스트 지시자 목록 포트(CPLP)로서 수행될 수 있다. 상기 블록(170)은 보통 선택적 구성이다. 상기 블록(172a 내지 172n)은 데이터 DMA 읽기 인터페이스 포트(DDRIP)로서 수행될 수 있다. 상기 블록(174a 내지 174n)은 데이터 DMA 쓰기 인터페이스 포트(DDWIP)로서 수행될 수 있다. 전체적으로, 상기 블록(172a 내지 172n) 및 블록(174a 내지 174n)은 일반적으로 데이터 DMA 인터페이스 포트(DDIP)를 형성한다.
일 실시예에 있어서, 상기 블록(150)은 (예를 들어, AMBA AHB-라이트 인터페이스를 통해서) 블록(108)에서 블록(102)의 어드레스(address) 가능한 자원까지의 인터페이스를 제공한다. 상기 블록(160)은 블록(156a 내지 156n) 내에 존재하지 않는, 모든 어드레스 가능한 자원으로의 인터페이스, 구성(configuration)으로의 직접적 인터페이스, 및 블록(102) 내 서브 모둘의 상태 레지스터를 제공한다. 상기 블록(150)은 개개의 블록(156a 내지 156n) 내에 존재하는 어드레스 가능한 자원으로의 인터페이스를 제공할 수 있다. 또한, 프로세서 펌웨어가 블록(168)을 통해서 시스템 버퍼 안에 저장을 하도록 실제 미디어 컨텍스트를 상기 블록(102) 안에 기록하는 경우, 상기 블록(150)은 컨텍스트 구조 버퍼(CCB)를 포함할 수 있다. 일 실시예에 있어서, 상기 블록(150)은, 블록(108)로의 32비트 AMBA AHB-라이트 슬레이브 인터페이스, 인입 클럭(예를 들어, HCLK) 중 일부 분할된 값(도는 인읍 클럭과 동일한 값)을 가지는 시스템 클럭(예를 들어, SYS_CLK), 모든 구성 및 상태 레지스터로의 액세스뿐 아니라 블록(102)에서 모든 프로세서에 의한 어드레스가 가능한 공간으로의 액세스, 시스템 버퍼 내에 저장되는 컨텍스트를 구축하기 위하여 프로세서 펌웨어에서 사용되는 상기 컨텍스트 구조 버퍼(CCB), 블록(156a 내지 156n) 각각에 분포되어 있는 프로세서 인터페이스, 어드레스 가능한 자원의 접근은 프로세서 접근 포트(PAP)에 의하여 처리되고 블록(102) 내 다중 서브 모듈을 통해서 사용될 수 있는 레지스터를 포함한다는 특징을 포함할 수 있다. 상기 블록(150)은 블록(156a 내지 156n)에 논리적으로 저장되지 않는 모든 어드레스 가능한 자원에 대하여 모든 레지스터 디코딩 기능 및 모든 읽기 데이터 다중화 기능을 수행할 수 있다.
상기 블록(152)은 일반적으로 두 개의 데이터 전송을 관리하며, 상기 데이터 전송 중 하나는 플래시 프로그램(예를 들어, 버퍼에서 플래시 장치로의 데이터 트랜잭션)에 대한 것이고 나머지 하나는 플래시 읽기(예를 들어, 플래시 장치에서 버퍼로의 데이터 트랜잭션)에 대한 것이다. 상기 DMA 데이터 통로는 일반적으로 개별적인 블록(158a 내지 158n)을 통해서 블록(156a 내지 156n)과는 분리된 32비트 읽기 데이터 버스 및 쓰기 데이터 버스, 및 블록(172a 내지 172n) 및 블록(174a 내지 174n)의 데이터 DMA 인터페이스 포트(DDIP)를 포함한다. 상기 블록(158a 내지 158n)은 ECC 기능을 가지고 있다. DMA 데이터 전송은 일반적으로 블록(102)의 나머지 서브 블록(또는 포트 블록)을 통한 대응 컨텍스트로의 다중 접속 이벤트를 포함하는 이벤트 순서를 포함한다. 일 실시예에 있어서, DMA 전송은 FLC 요청, 컨텍스트 회수 동작, 데이터 전송 및 FLC 완료 단계를 포함한다.
FLC 요청 단계에 있어서, 데이터 전송은 각각의 요청 라인을 구축하면서 블록(156a 내지 156n)중 하나에서 시작한다. 상기 컨텍스트 회수 동작 단계에 있어서, 대응 컨텍스트는 컨텍스트 회수 포트(CRP)인터페이스(166)를 통해서 버퍼 제어기로부터 회수될 수 있다. 상기 컨텍스트가 DDIP에 전송되거나 상기 컨텍스트가 되돌려지거나 되돌려지지 않는 동안에, 데이터 전송은 상기 DDIP, DTP 및 FLC 블록 사이에서 발생될 수 있다. 상기 FLC 완료 단계에 있어서, 선택된 블록(156a 내지 156n)으로의 완료 라인은 전송 종료를 지시하도록 만들어 질 수 있다. 상기 DDM(152)은 컨텍스트를 회수하는 역할을 할 수 있고 데이터 트랜잭션을 용이하게 하기 위하여 상기 DTP블록과의 입력부를 제공할 수 있다.
블록(154a 내지 154n)들은 일반적으로 각각의 플래시 레인에서 NAND 플래시 장치 세트로의 저 레벨 인터페이스 신호 처리를 수행한다. 일반적으로 각각의 플래시 레인 제어기(FLC)(156a 내지 156n)에 대하여 하나의 플래시 버스 제어기(FBC)(154a 내지 154n)가 존재한다. 상기 블록(154a 내지 154n)들은 일반적으로 여러 종류의 인터페이스에 대한 플래시 인터페이스 프로토콜의 각각의 주기 타이밍을 관리할 뿐 아니라 일정한 종류의 인터페이스(예를 들면, 비동기식, ONFI 2.0 동기식, ONFI 2.3 동기식, 삼성 Toggle 1.0, 삼성 Toggle 2.0 등)에 대한 서로 다른 타이밍 모드를 관리한다. 주기 타이밍은 일 실시예에 있어서 내부 타이밍 레지스터 그룹에 저장된 타이밍 카운트를 통해서 제어될 수 있다. 상기 블록(154a 내지 154n)의 핵심 논리 회로는 블록(102)의 나머지 회로의 클럭 도메인과는 다른 클럭 도메인으로 작동한다. 일반적으로, 타이밍 레지스터만이 블록(156a 내지 156n) 중 나머지와 동일한 클럭 도메인에 있도록 설정된다. 레지스터는 상기 FBC가 비활성일 때(예를 들어, 처리중인 작업이 없을 때)에만 기록되어 상기 레지스터는 정적(static)으로 취급되기 때문에, 비동기식 논리 회로는 일반적으로 이들 레지스터들과 상기 FBC 코어 사이에서 필요하게 된다.
상기 블록(156a 내지 156n)은 일반적으로 각각의 다이(die)에 명령어 스케쥴링을 수행한다. 상기 블록(156a 내지 156n)은 각각의 플래시 레인에서 명령어의 순서를 관리한다. 상기 블록(156a 내지 156n)은 제어 기능을 가지고 상태 레지스터를 제공하며, 상기 상태 레지스터를 통해서 펌웨어는 상기 다이를 프로그램하고 상태를 관찰한다. 블록(156a 내지 156n) 각각은 컨텍스트 관리 기능 및 다이 관리 기능을 포함한다. 상기 블록(156a 내지 156n)은 일반적으로 컨텍스트의 처리를 담당한다.
블록(158a 내지 158n) 각각은 블록(154a 내지 154n)들 중 한 블록과 선택적 내부 ECC 인코더/디코더와 각각의 데이터 DMA 인터페이스 포트(DDIP) 사이에서 데이터 트래픽을 발생시키고 데이터 흐름에 대한 각각의 인터페이스의 데이터 흐름 제어를 가능하게 한다. 일 실시예에 있어서, 상기 내부 ECC 인코더/디코더는 블록(158a 내지 158n) 내에서 수행될 수 있다. 이와는 달리, 블록(158a 내지 158n) 각각은 단일 ECC 인코더/디코더 모듈을 공유하도록 구성될 수 있다. 상기 블록(158a 내지 158n)은 각각의 데이터 DMA 관리자(DDM) 모듈(152)과 각각의 데이터 DMA 인터페이스 포트(DDIP)블록(172a 내지 172n 및 174a 내지 174n) 모두를 통해서 각각의 전송 시 마다 프로그램 될 수 있다. 블록(158a 내지 158n) 각각은 독립적인 플래시 읽기 및 쓰기 통로를 포함하고, 이는 양방향 동시 통신 모드로서 작동한다. 상기 블록(158a 내지 158n)은 데이터 전송 중에 현재 영역의 총합뿐 아니라 각각의 영역 내에 있는 현재 더블 워드(dword)의 총합을 유지하고 있다. 상기 블록(158a 내지 158n)은 일반적으로 상기 DDIP와 ECC 인코더/디코더와 FLC 블록 사이의 흐름 제어의 중계(translation)를 수행한다. 상기 블록(158a 내지 158n)은 각각의 전송 시 마다 진행중인 수정 가능한 ECC 에러의 합을 유지하고 전송을 종료할 때 블록(152)으로 최종 값을 전송한다. 상기 블록(158a 내지 158n)은 ECC 인코더/디코더를 프로그래밍 하는데 사용되는 FMC 레지스터를 포함한다. 레지스터는 레지스터 인터페이스를 통해서 블록(150)으로부터 액세스될 수 있다. 상기 ECC 모듈은 일반적으로 4K 바이트의 데이터 마다 64비트의 정정 기능을 수행할 수 있다. 하지만, 정정 기능에 있어 그 밖의 레벨 기준이 특정 수행 방법에 대한 기준을 만족하면서 수행될 수 있다. 일 실시예에 있어서, 디코더 게이트의 총합은 415K개일 수 있고 인코더 게이트의 총합은 75K개 일 수 있다.
상기 블록(160)은 일반적으로 상기 블록(156a 내지 156n)으로부터 컨텍스트 요청을 받아들이고 상기 시스템 버퍼(예를 들어, 버퍼 제어기를 통하여 액세스 되는 DRAM)로부터 상기 요청된 컨텍스트를 회수하고 그 후 상기 컨텍스트를 블록(156a 내지 156n)으로 전달하는 역할을 담당한다. 상기 회수 기능은 실제로 컨텍스트 회수 액세스 포트(CRP)(166)로의 요청을 통해서 작동될 수 있다. 컨텍스트는 FMC내 제어의 기본 단위이다. 컨텍스트는 일반적으로 명령어를 실행하기 위하여 FLC에서 필요한 모든 정보, 및 시스템 버퍼로 또는 시스템 버퍼로부터 관련 데이터 전송(DMA)을 수행하기 위하여 FMC에 필요한 모든 정보를 포함하고 있다. 상기 FLC는 완전히 자동으로 작동되고, 그 결과 상기 FLC는 버퍼 제어기를 통해 시스템 버퍼에 액세스하기 위한 중재(arbitration) 기능을 필요로 하고, 상기 시스템 버퍼는 펌웨어에 의하여 형성된 컨텍스트의 연결 목록을 포함하고 있다. 상기 블록(160)은 일반적으로 중재 기능을 제공할 뿐 아니라 블록(166)으로 요청을 개시한다. 그 후, 상기 블록(160)은 회수된 컨텍스트를 각각의 FLC 목적지로 투명하게 전달한다. 일반적으로 상기 블록(162)은 빈칸 지시자(free pointer)가 펌웨어에 이용될 수 있는 단일 지점을 제공하기 위하여 블록(102)의 서브-블록으로서 수행된다.
블록(164)은 일반적으로 완료된 컨텍스트가 완료 후 펌웨어에 의하여 검사된 다면 단일 포인트를 제공하기 위하여 블록(102)의 서브 블록으로서 수행될 수 있다. 상기 블록(164)은 일반적으로 다중 FLC 출처 사이의 중재 기능을 수행할 수 있다. 상기 FLC는 상기 컨텍스트 지시자와 관련된 성공(PASS)/실패(FAIL) ECC 상태 기능을 제공한다. 상기 블록(164)은 상기 컨텍스트가 페치(fetch)될 때마다 컨텍스트 상태 필드를 갱신하고, 그 후 펌웨어에 상기 컨텍스트를 전송한다. 상기 펌웨어가 완료된 컨텍스트를 읽는데 긴 시간이 걸리고 블록(164)의 내부 메모리가 거의 꽉 차게 된다면, 현재 전송된 컨텍스트 이후에 대기 행렬에 들어가게된(enqueue) 상기 완료된 컨텍스트를 저장하기 위하여 상기 블록(164)은 버퍼를 사용할 수 있다.
상기 블록(166 내지 174n)은 일반적으로 포트 인터페이스로서 수행된다. 상기 포트 인터페이스는 상기 버퍼 제어기와의 통신에 사용된다. 일 실시예에 있어서, QBFIFO블록이 상기 포트 인터페이스 내에서 작동될 수 있다. 컨텍스트 회수 포트(CRP)(166), 컨텍스트 갱신 포트(CUP)(168), 컨텍스트 지시자 목록 인터페이스(CPLIP)(170)(생략 가능함), 데이터 DMA 읽기 인터페이스 포트(DDRIP)(172a 내지 172n) 및 데이터 DMA 쓰기 인터페이스 포트(DDWIP)(174a 내지 174n)와 같은 포트 인터페이스는 상기 포트 인터페이스의 일 부분으로서 수행될 수 있다. 일 실시예에 있어서, 블록(102)의 인터페이스 신호는 AHB 인터페이스와 버퍼 제어기 인터페이스와 NAND 및/또는 NOR 플래시 물리 계층(PHY) 인터페이스와 기타(MISC) 인터페이스와 같이 4 개의 주요 인터페이스로 그룹 지어질 수 있다. 상기 버퍼 제어기 인터페이스는 (i) 레인 0 및 레인 1용 DDIP BC 쓰기 인터페이스, (ii) 레인 0 및 레인 1용 DDIP BC 읽기 인터페이스, (iii) CRP BC 읽기 인터페이스, (iv) CUP BC 쓰기 인터페이스 및 (v) CPLIP BC 읽기/쓰기 인터페이스를 포함할 수 있다.
일 실시예에 있어서, 상기 블록(102)은 3 개의 클럭을 사용하여 수행될 수 있다. 블록(102) 내 논리 회로의 대부분은 시스템 클럭(예를 들어, SYS_CLK)이라 불리는 클럭 도메인으로 작동할 수 있다. 상기 시스템 클럭은 AHB 클럭일 수 있다. 상기 시스템 클럭은 일반적으로 FMC 프로세서(FARM)(112)의 작동 주파수의 절반에 해당하는 주파수를 가질 수 있다. 제2 주파수는 플래시 주파수(예를 들어, FBC_CLK)로 불린다. 상기 플래시 버스 제어기(FBC)(154a 내지 154n)는 플래시 클럭 도메인으로 완전히 작동할 수 있다. 일 실시예에 있어서, 선입선출 버퍼(first-in first-out buffer)(FIFO)는 클럭(FBC_CLK)과 클럭(SYS_CLK) 사이의 주파수를 관리하기 위하여 블록(154a 내지 154n)의 데이터 흐름 관리자(DM) 모듈에서 수행될 수 있다. 제3 클럭은 버퍼 제어기 클럭(예를 들어, BC_CLK)일 수 있다. BC와의 모든 인터페이스 포트는 상기 버퍼 제어기 클럭 도메인에 영향을 미치고 있다. 버퍼링 요소(예를 들어, QBFIFO)는 상기 버퍼 제어기 클럭(BC CLK)과 시스템 클럭(SYS_CLK) 사이에서 수행될 수 있다.
도 3을 보면, 본 발명의 일 실시예를 따른 플래시 레인 제어기 아키택쳐를 도시한 블록(200)의 예시적 다이어그램이 나타나 있다. 상기 블록(200)은 일 실시예에 있어서, 도 2의 블록(154a 내지 154n) 및 블록(156a 내지 156n)의 기능을 수행한다. 일 실시예에 있어서, 블록(또는 회로)(200)은 블록(또는 회로)(202), 블록(또는 회로)(204), 블록(또는 회로)(206), 블록(또는 회로)(208), 블록(또는 회로)(210), 블록(또는 회로)(212) 및 블록(또는 회로)(214)을 포함한다. 상기 회로(202) 내지 회로(210)는 하드웨어, 펌웨어, 소프트웨어, 하드웨어, 펌웨어 및 소프트웨어의 조합, 또는 그 밖의 수행 수단으로 수행될 수 있는 모듈 및/또는 블록을 의미한다. 상기 블록(202)은 일 실시예에 있어서 컨텍스트 처리 조정기(CPC) 기능을 수행한다. 상기 블록(204)은 일 실시예에 있어서, 컨텍스트 관리자(CM) 기능을 수행한다. 상기 블록(206)은 일 실시예에 있어서, 다이 관리 모듈(DMM) 기능을 수행한다. 상기 블록(208)은 일 실시예에 있어서, 플래시 작동 관리자(FOM) 기능을 수행한다. 상기 블록(210)은 프로세서 액세스 포트(PAP) 기능을 수행한다. 상기 블록(212)은 일 실시예에 있어서, 플래시 버스 제어기(FBC) 기능을 수행한다. 상기 블록(214)은 일 실시예에 있어서, 데이터 흐름 관리자(DFM) 기능을 수행한다.
상기 블록(202)은 상기 블록(200)의 안밖으로 컨텍스트 정보가 흐르는 것을 보조할 수 있다. 컨텍스트의 흐름은 블록(204)에서 시작된다. 상기 블록(202)은 주로 컨텍스트의 획득 또는 배치를 위한 요청에 대한 응답에 관여한다. 컨텍스트를 획득하기 위하여, 상기 블록(202)은 블록(204)를 통해서 새로운 컨텍스트에 대한 요청에 응답한다. 우선, 상기 블록(202)은 블록(206)으로의 응답을 개시하고, 상기 블록(206)은 블록(200)에 의하여 관리되는 다이를 중재하고 선택된 다이 또는 논리 유닛 번호(LUN)에 대한 컨텍스트를 블록(202)로 전달한다. 그 후 상기 블록(202)은 컨텍스트 페치 중재기(CFA)(예를 들어, 도 2의 블록(160))로 페치를 내보내고, 이는 시스템 버퍼로부터 컨텍스트의 회수를 시도한다.
일단 페치가 된다면, 상기 컨텍스트는 블록(202)으로 전달되게 된다. 상기 블록(202)은 상기 컨텍스트에 대하여 약간의 해석 작업을 수행하고 상기 컨텍스트를 블록(204)에 전달한다. 만약 상기 블록(206)이 컨텍스트 실행을 시작할 수 있는 다이(LUN)를 가지지 않는다면, 상기 블록(206)은 시작 가능한 다이의 부족을 블록(202)에 알리고 블록(202)는 블록(204)에 상기 시작 가능한 다이의 부족을 알린다. 상기 블록(202)은 또한 블록(200)이 완료된 컨텍스트를 처분하는 것을 도와준다. 그리고, 이러한 흐름은 블록(204)에서 시작하고 상기 블록(202)은 상기 처분 메시지를 소모된 컨텍스트 관리자(CCM) 기능을 수행하는 블록(예를 들어, 도 2의 블록(164))으로 보낸다. 상기 처분 메시지가 수신되고 CCM에 의하여 작용하게 될 때, 상기 블록(202)은 블록(204)에 이를 알리고, 상기 블록(204)은 그 후 컨텍스트 처리 실행을 계속한다.
상기 블록(202)은 일반적으로 컨텍스트에 대하여 약간의 해석 기능을 수행한다. 특히, 상기 블록(202)은 컨텍스트가 프로세서 제어 모드(PCM) 컨텍스트인지 아닌지를 결정하기 위하여 컨텍스트를 해석할 수 있다. PCM 컨텍스트를 수신하였을 때, 컨텍스트 페치(첨가) 작업은 중지되어야만 한다. 상기 블록(202)은 그 후 상기 PCM 컨텍스트의 실행을 개시시키고 상기 프로세서 제어 모드가 완료된 때 "표준" 동작을 재시작하기 위하여 블록(204)를 기다린다. 상기 프로세서 제어 모드의 시간 간격(interval) 동안에, 상기 블록(202)은 페치된 컨텍스트가 4 개의 더블 워드 플래시 컨텍스트가 아닌 15 개의 꽉 찬 더블 워드 컨텍스트인지 여부를 결정하고, "표준" 동작 상태에서 블록(202)은 상기 더블 워드 컨텍스트를 블록(204)으로 전달한다.
상기 블록(204)은 일 실시예에 있어서 컨텍스트 상태기(CSM), 컨텍스트 페치 관리자(CFM), 컨텍스트 처분 엔진(CDE) 및 컨텍스트 해석기(CI) 기능을 가진다. 상기 블록(204)은 일반적으로 상기 블록(200)을 통해 활발히 처리되는 컨텍스트를 관리하는 역할을 가진다. 상기 블록(204)은 일반적으로 활성 컨텍스트의 "부기(bookkeeping)" 기능을 수행한다. 컨텍스트는 시스템 버퍼로의 플래시 트랜잭션 및 DMA를 실행하기 위하여 플래시 미디어 제어기(FMC)에서 필요한 모든 정보를 제공하는 데이터 구조이다. 상기 블록(204)은 플래시 레인 제어기의 레벨에 맞춰 상기 컨텍스트를 관리하기 때문에, 플래시 트랜잭션과 관련된 컨텍스트 관리에 주로 관여한다. 상기 블록(204)은 명령어를 처리하고 플래시 레인 상의 플래시 다이로의 데이터 전송을 수행하기 위하여 블록(208)에서 사용된 정보를 유지한다.
상기 블록(206)은 일반적으로 블록(200)의 작동에 필요한 다이-기반 정보의 유지를 담당한다. 상기 블록(206)은 다이 관리 표 내 다이당 정보를 관리하고 상기 컨텍스트 표에 접속하기 위하여 대기(queue)하는 다이들을 중재한다. 상기 블록(206)은 일 실시예에 있어서, 다이의 상태를 갱신하는 다이 상태기를 포함할 수 있다. 상기 블록(206)은 다중 다이 작업을 수행/모니터링 할 수 있다. 상기 블록(206)은 일반적으로 읽기(READ), 카피백 읽기/카피백 쓰기(COPYBACK READ/COPYBACK WRITE), 블록 삭제(BLOCK ERASE), 페이지 프로그램(PAGE PROGRAM) 명령어를 포함하는 플래시 명령어를 담당하고, ID 읽기(READ ID), 파라미터 페이지 읽기(READ PARAMETER PAGE), 특징 획득(GET FEATURES), 특징 설정(SET FEATURES), 동기식 리셋(SYNCHRONOUS RESET) 및 리셋(RESET) 명령어를 포함하는 목표 레벨 명령어를 담당하지만 이에 한정되지 않는다.
상기 블록(208)은 일반적으로 상기 플래시 레인에 적용되는 각각의 플래시 동작의 순서를 담당한다. 하나의 블록(208)은 일반적으로 상기 플래시 미디어 제어기의 각각의 플래시 레인 제어기(FLC) 마다 수행된다. 상기 블록(208)은 블록(204)의 컨텍스트 표 내에 있는 명령어들 사이를 중재하고, 상기 명령어를 블록(212)에 적용한다. 일 실시예에 있어서, 상기 블록(208)은 ONFI 2.0 명령어 목록 중에서 본래 가장 공통되는 명령어를 지원할 뿐 아니라 삼성 NAND 플래시 장치 내에서 얻을 수 있는 특정(및 유사한) 명령어를 지원한다. 또한, 그 밖의 현존하거나 장래 존재할 명령어들은 나노-순서기(이하 도 9 내지 도 11에서 보다 상세히 설명된다)를 통해서 지원된다. 본래 지원되던 명령어들은 프로세서 조정 작업 없이 실행되지만, 그 밖의 명령어들은 일반적으로 프로세서 지원을 어느 정도 받는다.
상기 플래시 명령어는 원자 "주기"로 쪼개어 질 수 있고, 상기 원자 주기는 블록(208)에 의하여 제어되는 실제 플래시 다이들에 연속적으로 적용될 수 있다. 상기 플래시 명령어는 종래에 긴 대기 시간(예를 들어, 데이터가 칩에서 읽혀 지기 전에, 페이지를 읽는데 25 μs가 걸림)을 수반하기 때문에, "명령어 주기"는 종종 플래시 레인 상의 서로 다른 다이로 "연속하여" 실행되어 그 효율을 떨어트리고, 대기 시간을 누적시킨다. 상기 블록(208)은 일반적으로 각각의 플래시 "주기"가 적용될 때 상기 다이의 상태를 갱신함으로써 플래시 다이를 관리한다. 상기 블록(208)은 그 후 어떤 "주기"가 다음에 실행되어야만 하는지(또는 실행될 수 있는지)를 결정하기 위하여, 갱신된 컨텍스트 표를 읽어 들인다. NAND 플래시 동작은 일반적으로 하나 이상의 플래시 주기로 구성되어 있다. 일반적으로 명령어, 주소, (플래시 장치 - 예를 들어, 읽기용 장치 - 에 관한) 데이터 출력 및 (플래시 장치 - 예를 들어 쓰기용 장치 - 에 관한) 데이터 입력와 같이 4 종류의 플래시 주기가 존재한다. 상기 주기의 종류는 대략 상기 블록(208) 및 블록(212) 사이에서 정의된 동작 종류로 변환된다.
상기 블록(210)은 일반적으로 FMC(100)의 AHB-라이트 슬레이브 인터페이스(AHB-Lite slave interface)에서 블록(200) 내 어드레스 가능한 자원으로의 프로세서 액세스를 제공하는 인터페이스 블록의 기능을 수행할 수 있다. 모든 구성 신호는 (공유된 구성 레지스터 블록의 일 부분으로서) 전체 레벨로 전송되기 때문에, 여기서 어드레스된 대부분의 자원들은 주로 진단 목적으로 액세스 가능하다. 예를 들어, 플래시 레인 데이터 버퍼로의 전체 액세스는 블록(210)을 통해서 이용될 수 있다. 이러한 액세스는 순전히 초기 확인을 위한 발판으로서 제공될 수 있다. 하지만, 상기 플래시 레인 데이터 버퍼로의 액세스는 내부 표로의 직접적인 액세스가 필요한 펌웨어 페치를 지원할 수도 있다. 이러한 액세스는 블록(210)을 통해서 제공될 수 있다.
블록(210)은, AHB-라이트 슬레이브 프로토콜을 따르고 FMC 내 프로세서 인터페이스 논리 회로(PIL)에 의하여 버퍼링되는 단순 액세스 인터페이스; 레지스터 자원, 컨텍스트 표, 컨텍스트 캐시 및 다이 관리 표에 제공되는 읽기 및 쓰기 액세스; 블록(214)에 위치하는 플래시 레인 데이터 버퍼 메모리 자원에 제공되는 읽기 및 쓰기 액세스;와 같은 특징을 포함할 수 있다. 상기 블록(210)은 일반적으로 블록(200)으로의 입력부로서 제공되는 대부분의 구성 레지스터를 통해서 레인 마다 구성 레지스터를 더하는 기능을 지원한다. 이와 유사하게, 대부분의 상태 및 인터럽트 레지스터가 블록(200) 밖에서 만들어지지만, 상태 및 인터럽트 레지스터 액세스가 지원될 수 있다. 블록(210)의 첫 번째 논리 그룹은, 인터페이스 관리자(IF_MGR), 데이터 흐름 관리자 인터페이스(DM_IF), 레지스터 블록 디코더(REG_DEC), 레지스터 블록 다중화기(REG_MUX), 중단 처리기(INIT_HND) 및 FLC 글로벌 레지스터(GLOB_REG)를 포함할 수 있다.
도 4를 보면, 도 3의 컨텍스트 관리자 모듈(204)의 서브 모듈을 도시한 다이어그램이 나타나 있다. 일 실시예에 있어서, 상기 블록(204)은 컨텍스트 표(CT)(220), 컨텍스트 상태기(CSM)(222), 컨텍스트 캐시(CC)(224) 및 컨텍스트 대기 행렬(queue) 제어기(CQC)(226)를 포함한다. 상기 블록(204)은, 일반적으로 플래시 레인 제어기의 동작 단계를 저장하고 실행하고, 플래시 레인 상의 모든 활성 컨텍스트의 우선 순서를 유지하고, 플래시 레인 상의 각각의 컨텍스트의 상태를 유지하고, (예를 들어, 상기 컨텍스트 캐시를 통해서) 모든 트랜잭션을 실행하는데 필요한 컨텍스트가 일시적으로 저장되는 최소 량의 온칩(on-chip) 저장부를 제공하고, 실행되는 처리 과정 중에 있는 각각의 컨텍스트의 버퍼 지시자를 유지하고, 상기 컨텍스트 상태기(CSM)(222)를 사용하여 컨텍스트의 다음 상태를 결정함으로써 각각의 컨텍스트에 대한 중개 기능을 제공한다. 최소 량의 컨텍스트 정보가 컨텍스트 표(CT)(220)에서 유지될 수 있다. 상기 컨텍스트 표(220)는 일반적으로 현재 실행되고 있는 컨텍스트의 우선 순위가 정해진 대기 행렬(priority queue)을 제공한다. 상기 컨텍스트 대기 행렬 제어기(CQC)(226)는 완료된 컨텍스트를 컨텍스트 표(220)에서 제거하고 사이 간격(gap)을 제거하기 위하여 상기 컨텍스트 표(220)를 압축할 수 있다.
도 5를 보면, 도 3의 다이 관리 모듈(206)의 서브 모듈을 도시한 다이어그램이 나타나 있다. 일 실시예에 있어서, 상기 블록(206)은 다이 상태기(230), 다이 서비스 중재기(232) 및 다이 관리 표(234)를 포함할 수 있다.
도 6을 보면, 도 3의 플래시 작동 관리자(FOM)(208)의 서브 모듈을 도시한 다이어그램이 나타나 있다. 일 실시예에 있어서, 상기 블록(208)은 4 개의 서브 모듈로서, 명령어 중재기(CA)(240), 데이터 전송 중재기(DTA)(242), 플래시 작동 형식기(FOF)(244) 및 나노 순서기(246)로 나뉘어 진다. 상기 명령어 중재기(240)는 일반적으로 이후 적용을 위하여 명령어에 대한 컨텍스트 표를 스캔하고, 그 후 신호를 플래시 버퍼 제어기(FBC)에 전달하기 위하여 플래시 작동 형식기(FOF)(244)와 통신한다. 일단 모든 "명령어" 부분이 실행되고 상기 플래시가 "데이터 단계"에 대한 준비가 완료되면, 상기 데이터 전송 중재기(242)는 상기 FBC와 데이터 흐름 관리자(DM)(214) 사이의 데이터 전송을 개시한다. 마지막으로, 명령어 순서가 원래 지원되지 않는다고 할지라도, 상기 나노 순서기(246)는 플래시에서 필요로 하는 모든 명령어에 적용되도록 특수한 "소프트 컨텍스트"를 해석한다.
도 7을 보면, 도 3의 데이터 흐름 관리자(214)의 서브 모듈을 도시한 다이어그램이 나타나 있다. 상기 데이터 흐름 관리자(214)는 일반적으로 플래시 레인 데이터 버퍼 메모리 자원을 제공한다. 일 실시예에 있어서, 상기 플래시 레인 데이터 버퍼 메모리 자원은 컷-스루 버퍼(250 및 252)를 포함할 수 있다. 일 실시예에 있어서, 상기 컷-스루 버퍼(250 및 252)는 프로그램 가능한 크기로 수행될 수 있다. 예를 들어, 상기 버퍼(250 및 252)의 크기는 대역폭 사양을 만족시키기 위하여 조절될 수 있다. 일 실시예에 있어서, 상기 버퍼(250 및 252)는 정적 랜덤 액세스 메모리(SRAM)를 포함할 수 있다. 하지만, 그 밖의 종류의 메모리가 특정 실시예를 수행하기 위하여 사용될 수 있다. 일반적으로, 두 개의 컷-스루 버퍼가 하나의 플래시 레인 마다 사용된다.
도 8을 보면, 도 3의 컨텍스트 관리자(CM)(204)의 예시적 수행 상황을 도시한 다이어그램이 나타나 있다. 상기 컨텍스트 관리자(CM)(204)는 일반적으로 상기 각각의 플래시 레인 제어기(FLC)에 의하여 활발히 처리되고 있는 컨텍스트의 관리를 담당한다. 상기 CM(204)은 일반적으로 활성 컨텍스트의 "부기(bookkeeping)" 기능을 수행한다. 위에서 언급한 바와 같이, 컨텍스트는 시스템 버퍼로의 플래시 트랜잭션 및 DMA를 실행하기 위하여 상기 플래시 미디어 제어기(FMC)(102)에서 사용되는 모든 정보를 제공하는 데이터 구조이다. 상기 CM(204)은 FLC의 레벨에 맞춰 상기 컨텍스트를 관리하기 때문에, 플래시 트랜잭션과 관련된 컨텍스트 관리에 주로 관여한다. 상기 CM(204)은 상기 플래시 레인 상의 플래시 다이로의 명령어 수행 및 데이터 전송을 위하여 상기 플래시 작동 관리자(FOM)에서 사용되는 정보를 유지한다.
상기 CM(204)은 일반적으로 (i) 각각의 플래시 레인 제어기 상의 작동 단계를 저장하고 실행하고, (ii) 각각의 플래시 레인 상의 모든 활성 컨텍스트의 우선 순서를 유지하고, (iii) 각각의 플래시 레인 상의 각각의 컨텍스트 상태를 유지하고, (iv) (예를 들어, 컨텍스트 캐시(224)를 통해서) 모든 트랜잭션을 실행하는데 사용되는 컨택스트의 일시적인 최소 저장 공간을 온-칩 상에서 제공하고(또는 일시적인 온-칩 저장 공간을 최소화 시키고), (v) 실행 중에 있는 각각의 컨텍스트의 버퍼 지시자를 유지하고, (vi) 상기 컨텍스트 상태기(CSM)(222)를 사용하여 상기 컨텍스트의 다음 상태를 결정함으로써 각각의 컨텍스트에 대한 중개 기능을 제공하고, (vii) 현재 실행되는 컨텍스트의 우선 순위가 결정된 대기 행렬에서 최소 량의 컨텍스트 정보(예를 들어, 컨텍스트 표(220))를 유지한다. 상기 컨텍스트 대기 행렬 제어기(226)는 일반적으로 완료된 컨텍스트를 상기 컨텍스트 표(220)에서 제거하고 상기 컨텍스트 표(224)의 사이 간격을 제거하기 위하여 상기 컨텍스트 표를 압축한다.
상기 컨텍스트 대기 행렬 제어기(CQC)(226)는 상기 컨텍스트 표(CT)(220)의 수행 작업을 수행하는 논리 블록이다. 상기 CT(220)는 일 실시예에 있어서, 대기 행렬에 들어가게 된(enqueue) 컨텍스트 당 하나의 정보 입력으로 구성되어 있는 레지스터의 블록으로서 수행된다. 상기 CQC(226)은 상기 표에서의 동작을 수행하는 블록으로서, 상기 표는 우선 순위가 결정된 대기 행렬로 구성되어 있다. 상기 CQC(226)는 일반적으로 컨텍스트 처리를 개시하고 실행하며, 상기 컨텍스트 표 상에서의 처리 과정의 실행을 담당한다. 주요 처리 과정으로서, 일반적으로 첨부(Append), 대기(Wait), 수정(Modify), 처분(Dispose) 및 압축(Compress)이 있다. 상기 처리 과정은 CQC(226)에 의하여 저장되고 실행된다.
상기 첨부 단계는 새로운 컨텍스트가 상기 FMC에 의하여 페치되고 이들 컨텍스트를 입력하는 행위가 상기 컨텍스트 표(220)에 추가되는 단계를 의미한다. 상기 CQC(226)는 상기 플래시 컨텍스트의 내용을 검사하고 상기 내용과 컨텍스트 정보에 기초한 입력을 첨부하고 생성한다. 일 실시예에 있어서, 상기 컨텍스트 표의 입력 행위는 컨텍스트 표의 기입이 활성화되었는지 아닌지, 컨텍스트 표를 나타내는 값인지 아닌지, 상기 컨텍스트 캐시 인덱스를 나타내는 값인지 아닌지, 상기 플래시 동작을 나타내는 값인지 아닌지, 컨텍스트 포인터인지 아닌지를 의미하는 비트(또는 플래그), 및 데이터 전송을 불가능하게 하고 평면 어드레스(plane address)를 나타내는 값을 의미하는 비트(또는 플래그)를 포함한다. 새로운 입력 내용은 일반적으로 "활성" 비트 세트(예를 들어, 논리 값 '1') 및 "대기(queue)" 값으로 설정된 "컨텍스트 단계"로 시작한다. 만약 상기 플래시가 부적절하게 동작한다면, 상기 개시 단계는 "부적절" 값으로 설정되게 되고, 상기 컨텍스트 표의 입력 내용은 상기 처분 단계에서 제거된다. 그 밖의 영역은 일반적으로 상기 CQC(226)에 의하여 제공되는 컨텍스트 및 정보에 의하여 결정된다. 새로운 입력 내용은 일반적으로 압축된 컨텍스트 표(220)의 마지막 부분에 첨부된다. 이와 같이, 상기 CQC(226)는 일반적으로 상기 컨텍스트 표(220)의 열의 깊이를 알 수 있게 된다.
상기 CQC(226)는 일반적으로, 상기 CQC(226)가 더 이상 완성 진행중인 데이터 전송을 기다리지 않고 주어진 플래시 동작 주기 동안에 하나 이상의 첨부 작업을 시도할 때 상기 "첨부" 단계를 종료한다. 상기 CQC(226)는 컨텍스트 표(220)나 상기 컨텍스트 캐시(224) 안에 더 이상 사용 가능한 공간이 없을 때에도 상기 "첨부" 단계를 종료한다.
상기 컨텍스트 관리자(204)는 플래시 작동 주기의 사이에서 대기되거나 대기되지 않을 수 있다. 상기 컨텍스트 관리자(204)는 일반적으로 (예를 들어, 플래시 작동 기간 레지스터를 통해서) 최소 량의 플래시 작동 기간을 강제시키는 기능을 가진다. 이러한 최소 량의 기간은, 상기 플래시 레인이 프로그램(PROGRAM) 또는 삭제(ERASE) 명령어 이후에 폴링(polling)하는 경우를 제외하고 대부분 아이들 상태에 있는 경우 바람직하다. 이러한 경우에 첨부 또는 처분 단계가 존재하지 않기 때문에, 상기 컨텍스트 단계는 실행에 있어 매우 짧은 시간이 걸린다. 이와 같이, 레인이 계속해서 사용 중인 플래시 다이를 폴링하는 상태에 있도록 하는 경향이 상기 레인 상에서 일어난다면, 이로써 전력 소모가 허가되지 않을 때에 플래시 인터페이스 상의 전력을 소모시킬 수 있게 한다. 상기 CQC(226)는 일반적으로 사전 결정된 시간이 경과할 때까지(예를 들어, 상기 사전 결정된 시간은 "플래시 작동 타이머" 레지스터에서 특정될 수 있다) 대기 상태에 놓여 있게 된다. 상기 사전 결정된 시간이 경과된 때, 상기 CQC(226)는 "수정" 단계로 들어가게 된다.
상기 CQC에 의하여 개시되는 다음 단계는 일반적으로 "수정" 단계이다. 상기 수정 단계에서, 상기 컨텍스트 표(220)는 플래시 동작 관리자(FOM)에 의하여 작동되는 플래시 동작 및 데이터 경로로부터의 전송에 기초하여 수정된다. 상기 갱신 단계는 일반적으로 컨텍스트의 상태에 관련되기 때문에 일반적으로 컨텍스트 상태기(CSM)(222)에 의하여 개시된다. 상태 갱신이 발생한 때, 상기 CSM(222)은 갱신된 상태 및 컨텍스트 표의 인덱스를 상기 CQC(226)에 전송한다. 상기 CQC(226)는 그 후 상기 컨텍스트 표(220)으로의 입력 내용을 갱신한다. 상기 수정 단계는 상기 FOM이 플래시 인터페이스 과정의 주기가 완료된 때 종료한다. 상기 FOM은 상기 컨텍스트 관리자(204)에게 상기 플래시 인터페이스 처리가 신호(예를 들어, FOM_CM_FLASH_PROC_CMPLT)를 어서트(assert)함으로써 완료된다는 것을 알린다. 일단 상기 수정 과정이 완료되면, 상기 CQC(226)는 컨텍스트 표(220)에 있는 컨텍스트의 처분, 압축 및 첨부를 수행한다. 이러한 시간 동안에, 상기 컨텍스트 표(220)는 상기 FOM에 액세스할 수 없다. 상기 CQC(226)는, FOM에게 상기 컨텍스트 표 읽기 입력 내용 및 상기 컨텍스트 캐시 읽기 데이터가 특정 클럭 주기 동안에 유효하다는 것을 나타내는 신호(예를 들어, CM_FOM_CT_VALID)를 디어서트(deassert)함으로써, 상기 FOM에 액세스 할 수 없는 상태에 있는 상기 컨택스 표(220)를 실시한다.
상기 수정 단계가 완료된 때, 상기 CPC(202)는 "처분" 행동을 개시한다. 상기 처분 행동이란 상기 CQC(226)가 실행을 완료한 입력 내용을 찾기 위하여 상기 CQC(226)의 상태를 상기 컨텍스트 표(220)를 검색하는 모드로 전환시키는 것이다. 상기 CQC(226)는 입력 내용이 컨텍스트의 상태에 대한 실행을 완료하였는지에 대한 결정에 기초한다. 상기 컨텍스트가 "완료된" 상태에 있을 때, 상기 컨텍스트는 상기 CQC(226)에 의하여 처분된다. 일 실시예에 있어서, 컨텍스트는, 컨텍스트의 완료 상태에 따라서 상기 CQC(226)가 데이터 경로로부터의 통지를 대기하는 상태에 있을 수 있다. 예를 들어, READ 동작의 경우에, 상기 컨텍스트는 데이터_전송_완료(DATA_TRANSPER_DONE) 상태에 있고 상기 ECC 검사의 결과를 대기하고 있을 수 있다. 이 경우, 상기 CQC(226)는 일시적으로 상기 처분 처리를 정지시키고 상기 데이터 경로로부터 되돌아오는 상태를 기다릴 수 있다. 이 시간 동안에, 상기 CQC(226)는 "첨부" 작업이 이루어지도록 할 수 있다. 하지만, 일단 대기 상태가 되돌아오면, 상기 컨텍스트는 CQC(226)에 의하여 처분되고, 소모된 컨텍스트 기록은 CPC(202)로 전달된다(그리고 최종적으로는 소모된 컨텍스트 관리자(CCM)(164)로 전달된다).
상기 CQC(226)가 컨텍스트를 처분한 때, 상기 CQC(226)는 상기 컨텍스트 표(220) 내 대응 입력 내용에 대한 "활성" 비트를 클리어 시킨다. 상기 처리 과정은 상기 CQC(226)가 컨텍스트 표(220) 내 모든 컨텍스트를 리뷰할 때까지 계속된다. 상기 CQC(226)가 컨텍스트 표(220) 내 활성 컨텍스트의 마지막에 도달할 때, 상기 처분 단계는 완료된다.
상기 CQC(226)에 의하여 처분되는 컨텍스트는 클리어된 각각의 표 기입 사항에서 "활성" 비트를 가진다. 상기 표에서 빈 공간이 모두 찰 때까지 표를 이동시키는 메커니즘 없이, 상기 활성 입력 내용은 상기 컨텍스트 표(220)에 분배(또는 분열)되게 될 것이다. 분배된 컨텍스트는, 보다 복잡한 상기 "첨부" 단계를 스캔하고 생성하기 어려운 상기 컨텍스트 표를 만든다. 상기 컨텍스트 표(220)가 우선 순위를 가지는 대기 행렬과 같은 특징을 유지하도록, 상기 컨텍스트 표(220)는 압축될 수 있다. 상기 압축 과정에 있어서, 상기 CQC(226)는 컨텍스트를 처분하고 상기 CQC(226)는 모든 빈 입력 내용이 한 위치에 입력된 후 모든 입력 내용을 즉시 변이 시킨다. 상기 압축 과정이 완료된 때, 모든 활성 입력 내용은 우선 순서에 따라서 목록의 앞부분에 위치하게 되고, 모든 "공란"은 제거된다. 다른 실시예에 있어서, 상기 압축 과정이 완료된 때 상기 CQC(226)는 "완료" 신호(또는 비트)를 어서트한다. 마지막 압축 단계의 마지막 과정에서, 상기 CQC(226)는 첨부 단계를 시작할 수 있다.
상기 CQC(226)는 일반적으로 프로세서 제어 모드를 인지할 수 있다. 상기 프로세서 제어 모드에서, 모든 DM(204)은, 플래시 작동 관리자(208) 내부에 위치한 나노 순서기(246)에 의하여 실행되는 "소프트 컨텍스트"를 통해 FLC 동작이 본질적으로 구동되는 작동 모드에서의 표준 동작 및 처리 결과를 중단시킨다. 상기 소프트 컨텍스트는 상기 표준 플래시 컨텍스트와 상이한 크기를 가진다. 일 실시예에 있어서, 소프트 컨텍스트는 최대 15개의 32비트 더블 워드를 포함할 수 있고, 이에 반하여 상기 FLC에 의하여 실행되는 최대 크기의 미디어 컨텍스트의 부분인 "플래시 컨텍스트"는 일반적으로 4 개의 32비트 더블 워드를 포함할 뿐이다.
상기 프로세서 제어 모드(PCM)는 일반적으로 "플래시 동작" 필드가 프로세서_제어_모드(PROCESSOR_CONTROL_MODE)로 설정된 컨텍스트가 컨텍스트 대기 행렬의 우선 순위에 나타날 때, 시작된다. 일반적으로, 일단 상기 CQC(226)가 PCM 컨텍스트를 대기 행렬 안에 집어 넣는다면 상기 CQC(226)은 표준 컨텍스트의 회수를 중지하여야만 하기 때문에, 상기 컨텍스트 표(220) 내 PCM 컨텍스트 뒤에는 어떠한 활성 입력 내용도 존재하지 않는다. 상기 PCM이 시작된 때, 상기 CQC(226)는 신호(예를 들어, CM_CPC_PROC_CNTL_MODE)를 통해서 상기 CPC(202)를 통지한다. 상기 통지에 대한 응답으로, 상기 CPC(202)는 PCM 컨텍스트에서 주어진 위치에서 찾은 상기 "소프트 컨텍스트"를 페치한다. 상기 FOM에 전송되는 것이 어떤 것이냐는 관점에서 볼 때, 상기 FOM은 일반적으로 컨텍스트 표(220) 내 PCM 컨텍스트의 존재에 대한 어떠한 정보도 가지고 있지 않는 한편, PCM 컨텍스트는 상기 컨텍스트 표(220) 내 그 밖의 활성 입력 내용의 뒤에 위치한다. 상기 컨텍스트 표(220)로의 PCM 컨텍스트 입력은, 상기 CM(204)이 FOM에 대하여 소프트 컨텍스트의 실행을 시작할 준비가 될 때까지, "활성" 비트로서 0을 상기 FOM에 전송한다.
상기 FOM이 소프트 컨텍스트를 읽기 시작한 때, 작동 상태가 컨텍스트 캐시(224)에 의하여 상기 FOM(208)으로 전송되기 때문에 상기 CQC(226)는 작동 상태를 감시한다. 작동 내용(예를 들어, 데이터의 프리페치(prefatch), 읽기 데이터 버퍼의 세팅, 또는 컨텍스트 지시자의 처분)이 DMA 컨텍스트와 관계가 있을 때, 상기 CQC(226)는 상기 컨텍스트 표(220) 내에 현재 사용되지 않는 저장 공간을 할당하고 이후 추적을 위하여 상기 컨텍스트 표 안에 지시자를 위치시킨다. 이들 DMA 컨텍스트가 완료된 때, 상기 FOM(208)은 상기 컨텍스트 관리자(204)에 통지하고, 그 후 상기 컨텍스트 관리자는 표준 방식으로 상기 컨텍스트를 처분한다.
감시하는 동안에, 상기 CQC(226)는 "다음 소프트 컨텍스트의 페치" 동작을 찾는다. 상기 CQC(226)가 이를 찾을 때, 상기 CQC(226)는 상기 CPC(202)로 신호(예를 들어, CM_CQC_PCM_NEXT_CONTEXT)를 어서트하고, 상기 CPC는 다음 소프트 컨텍스트를 페치한다. 상기 FOM(208)은 상기 CM(204)에 FOM/CM 명령어 인터페이스를 알려준다. 상기 CQC(226)는 그 후 상기 CPC에 신호(예를 들어, CM_CPC_PROC_CNTL_MODE)를 디어서트하고, 표준 동작을 계속한다. 일 실시예에 있어서, 상기 신호(CM_CPC_PROC_CNTL_MODE)는 상기 CM(204)이 상기 프로세서 제어 모드에 들어가고 현재 소프트 컨텍스트를 받을 준비가 되어 있다는 것을 지시하는 레벨로 어서트될 수 있다.
상기 CQC(225)의 또 다른 중요한 기능으로서 타임아웃 상태를 감시하는 것이 있다. 일 실시예에 있어서, 상기 CQC(226)는, 동일한 컨텍스트 표의 입력 내용이 상기 컨텍스트 표(220)의 최상단(예를 들어, 인덱스:0)에 위치하도록 만드는 시스템 클럭(SYS_CLK) 주기의 수를 카운트 하는 카운터를 포함할 수 있다. 만약 상기 카운트 값이 프로그램될 수 있는 "타임아웃" 카운터 값에 도달한다면, 상기 컨텍스트 표(220)의 최상단에 위치한 입력 내용은 타임 아웃되었다고 생각될 수 있다. 입력 내용이 타임 아웃되었다고 생각되는 때, 상기 입력 내용은 컨텍스트 표(22)에서 삭제되고, 상기 컨텍스트 지시자는 소멸된 컨텍스트 인터페이스에서 컨텍스트 처리 조정기(CPC)(202)로 복귀한다.
상기 컨텍스트에 대한 복귀 상태는 두 개의 "타임아웃" 상태 중 하나 일 수 있다. 첫 번째 경우로서, 상기 타임아웃은 플래시 레인 상의 또 다른 다이가 사용 중이고 R/B 라인을 억제하고 있는 상황에서 잠재적으로 발생할 수 있다. 이 경우, 상기 상태는 상기 타임아웃이 또 다른 다이에 의한 타임아웃 때문일 수 있다고 알려준다. 두 번째 경우로서, 상기 컨텍스트에 대한 다이가 문제의 원인으로서 알려져 있다. 여기서, 서로 다른 상태는 상기 다이가 문제의 원인이라고 알려주면서 복귀될 수 있다.
상기 컨텍스트 표(220)는 본질적으로 입력 내용을 저장하는 저장 매체이다. 상기 컨텍스트 표의 행의 깊이는 수치화될 수 있다. 예를 들어, 1개의 레인 당 16개의 칩을 지원할 수 있는 칩의 경우 16개의 입력 내용이 처리될 수 있다. 만약 둘 이상의 작업이 다이 마다 처리된다면, 상기 깊이가 증가할수록 유리할 것이다. 상기 컨텍스트 표(220)는 최소한의 기능만을 가지고 있다. 상기 컨텍스트 표(220)에서 처리되는 작업의 대부분은 상기 CQC(226)에 의하여 수행된다. 하지만, 상기 컨텍스트 표(220)는 다중 읽기 인터페이스 및 상기 읽기 인터페이스 각각에 대한 다중화된 논리 회로를 사용하여 수행된다. 일 실시예에 있어서, 상기 컨텍스트 표(220)는 FOM(208)으로의 인터페이스 및 읽기 액세스가 가능한 컨텍스트 상태기(CSM)(222)로의 인터페이스를 사용하여 수행될 수 있다. 상기 컨텍스트 표(220)는 상기 CQC(226)로의 읽기 인터페이스를 가질 수도 있다. 또한, 상기 컨텍스트 표(220)는 프로세서를 통해서 액세스될 수 있다.
또한, 컨텍스트 표(220)는 상기 컨텍스트 표의 압축 단계 동안에 사용되는 "변위" 기능을 가진다. 이와는 별도로, 상기 CQC(226)는 단순한 쓰기 인터페이스를 사용하여 상기 컨텍스트 표(220)를 갱신할 수 있다. 일 실시예에 있어서, 상기 컨텍스트 표(220)는 플립-플롭(flip-flop)에서 수행될 수 있다. 상기 컨텍스트 표(220)이 플립-플롭에서 수행되는 경우, 읽기 액세스에 필요한 중재 기능을 가지지 않는다. 만약 상기 컨텍스트 표(220)의 크기가 1000개의 플립-플롭 이상으로 커진다면, 상기 컨텍스트 표(220)는 레지스터 파일 또는 SRAM에서 수행될 수 있지만, 추가적인 관리 작업 및 액세스 중재 기능 역시 수행되어야만 한다.
상기 컨텍스트 캐시(224)는 상기 컨텍스트 표(220)과 유사한 또 다른 컨텍스트 데이터 저장 요소이다. 상기 컨텍스트 캐시(224)는 일반적으로 파라미터로 표시될 수 있는 복수의 입력 내용을 포함한다. 일 실시예에 있어서, 입력 내용의 수는 8 개일 수 있다. 하지만, 그 밖의 입력 내용의 수가 특정 실시예를 만족시키기 위하여 적용될 수 있다. 예를 들어, 상기 입력 내용의 수는 완전히 파이프라인된 동작(fully-pipelined operation)에 실제로 요구되는 하나 또는 둘 이상으로 설정될 수 있다. 상기 입력 내용의 수는 일반적으로 프로세서 제어 모드에서 전체 "소프트 컨텍스트"에 충분한 공간을 허용하기에 충분히 큰 공간으로 설정되어야만 한다. 위에서 언급하였듯이, 전체 컨텍스트는 15 개의 32비트 더블 워드를 포함할 수 있다. 전체 미디어 컨텍스트의 부분 집합을 "플래시 컨텍스트"라 한다. 상기 플래시 컨텍스트는 일반적으로 전체 미디어 컨텍스트의 첫번째 4 개의 더블 워드(또는 d워드)이다. 플래시 컨텍스트의 상기 4 개의 더블 워드는 일반적으로 펌웨어에 의하여 특정된 전체 동작을 실행하기 위하여 상기 FLKC에서 사용되는 모든 정보를 포함하고 있다. 표준 동작 중(예를 들어, 상기 FLC가 프로세서 제어 모드에 있지 않을 때), 상기 플래시 컨텍스트의 첫 번째 2 개의 더블 워드만이 컨텍스트 캐시(224)에 저장된다. 상기 플래시 컨텍스트의 리마인더(reminder)는 일반적으로 컨텍스트 표(220)에 저장된다.
상기 컨텍스트 캐시(224)는 일반적으로 각각의 입력 시 마다 상태를 유지한다. 일 실시예에 있어서, 상기 상태는 입력 내용이 비어 있는지(FREE) 또는 사용 중인지(USED)를 나타내는 비트를 포함할 수 있다. 일 실시예에 있어서, 8 개의 비트가 컨텍스트 캐시(224)에서 수행될 수 있다. 플래시 컨텍스트가 컨텍스트 캐시(224) 내 어느 한 위치에 쓰여질 때, 상기 위치의 상태는 사용 중(USED)이 된다. 상기 CQC(226)가 상기 위치를 클리어 시키는 상태 변화 정보를 수신한 때, 상기 위치의 상태는 빈 상태(FREE)로 되돌아간다. 표준 동작 중, 상기 컨텍스트 캐시(224)는 상기 상태 비트를 기초로 하여 상기 컨텍스트 캐시(224)가 자유롭게 입력할 수 있는 공간을 가지는지를 상기 CQC(226)에게 통지한다. 만약 빈 공간이 존재한다면, 상기 CQC(226)는 상기 CPC(220)로부터 자유롭게 컨텍스트를 요청한다. 상기 CPC(202)가 새로운 플래시 컨텍스트를 페치한 때, 상기 CPC(202)는 상기 플래시 컨텍스트를 32비트 더블 워드의 데이터 버스트로서 상기 컨텍스트 캐시(224)에 전달한다. 신호(예를 들어, CPC_CM_ENQ_CTX_VALID)는 상기 데이터가 유효할 때 어서트될 수 있다. 상기 컨텍스트 캐시(224)는 상기 데이터를 빈 위치에 기록한다. 상기 컨텍스트 캐시(224)는 상기 CPC(202)가 하나의 플래시 컨텍스트만 기록할 것이라고 예상한다.
상기 컨텍스트 표(220)의 최상단에 위치한 입력 내용이 PROCESSOR_CONTROL_MODE 동작을 나타내고 있을 때 작동하는 프로세서 제어 모드에 있어서, 상기 컨텍스트 캐시(224)는 완전히 비어 있게 된다. 상기 프로세서 제어 모드에서, 상기 컨텍스트 캐시(224)는 상기 CPC(202)로부터 소프트 컨텍스트를 수신할 것을 예상하고 있어야만 한다. 상기 컨텍스트 캐시(224) 또한 소프트 컨텍스트가 15 개의 더블 워드를 포함한다고 예상할 수 있다. 본래, 상기 컨텍스트 캐시(224)는 종속적으로 작동하며 상기 CPC(202)로부터 전송된 모든 데이터를 수신한다. 상기 CPC(202)는 적절한 양의 데이터를 상기 컨텍스트 캐시(224)에 기록하는 것을 담당한다. 상기 컨텍스트 캐시(224)는 상기 FOM(208)에 의하여 액세스될 수 있고, 상기 FOM은 실제 명령어가 플래시 유닛에 동작할 때 전체 플래시 컨텍스트 정보를 사용한다. 상기 FOM(208)은 주소를 32 비트의 더블 워드에 제공하고, 상기 컨텍스트 캐시(224)는 다음 클럭 주기 시 요청된 더블 워드로 응답한다. 상기 프로세서 제어 모드 동안에, 상기 컨텍스트 캐시(224)로부터의 읽기 응답은 컨텍스트 대기 행렬 제어기(CQC)(226)에 의하여 감시되며, 상기 CQC는 동작 내용에 기초하여 작동한다. 상기 컨텍스트 캐시(224)는 컨텍스트 표(220)와 같이 프로세서 인터페이스를 통해서 액세스될 수도 있다.
상기 컨텍스트 상태기(CSM)(222)는 일반적으로 입력 내용의 현재 상태, 및 상기 FOM(208)에 의하여 수행되는 동작 또는 데이터 경로 동작의 상태에 기초하여 상기 컨텍스트 표(220) 내 각각의 컨텍스트의 실행 상태를 결정하도록 구성되어 있다. 수정 단계에 있어서, 상기 CSM(222)은 상기 FOM(208)이 명령어를 적용하거나 결과를 되돌려 줄때마다 상기 CQC(226)에 의하여 호출된다. 상기 FOM 명령어 통지 인터페이스 및 상기 FOM 컨텍스트 표 읽기 인터페이스의 내용은 일반적으로 다음 상태를 결정하기 위하여 상기 CSM(22)에서 필요로하는 모든 정보를 제공한다.
처분 단계에서 상기 CSM(222)은, 상기 CQC(226)가 컨텍스트 표(220)를 스캔할 때, 및 상기 CQC(226)가 컨텍스트 표의 입력 내용이 활동을 기다리고 있는 상태에 있는 컨텍스트 표의 입력 내용과 만났을 때(예를 들어, 데이터 전송(TRANSFER_DATA) 상태 또는 데이터 프리페치(PREFETCH_DATA) 상태), 상기 CQC(226)에 의하여 호출된다. 상기 데이터 전송 상태 또는 데이터 프리페치 상태를 만난다면, 상기 CQC(226)는 데이터 전송 상태와 관련된 데이터 경로(예를 들어, DM, DDM 또는 DTP)로부터 정보를 기다린다. 어떤 경우라도, 상기 CSM(222)은 일반적으로 당해 컨텍스트 표 입력 내용의 다음 상태를 결정하기 위하여 호출된다. 상기 CSM(222)은 컨텍스트 표의 입력 내용이 완료 상태(예를 들어, 완료됨(COMPLETED) 또는 에러를 포함한 체로 완료됨(COMPLETED WITH ERROR))로 이동할 때 이를 다이 관리 모듈(206)에 통지하는 역할을 한다.
도 9를 보면, 도 6의 플래시 동작 관리자(208)의 예시적 수행 상태를 도시한 블록다이어그램이 나타나 있다. 일 실시예에 있어서, 상기 블록(208)은 5 개의 서브 모듈로 수행될 수 있다. 예를 들어, 상기 블록(208)은 블록(또는 회로)(240), 블록(또는 회로)(242), 블록(또는 회로)(244), 블록(또는 회로)(246) 및 블록(또는 회로)(248)을 포함할 수 있다. 상기 회로(240) 내지 회로(248)는 하드웨어, 펌웨어, 소프트웨어, 하드웨어, 펌웨어 및/또는 소프트웨어의 조합, 또는 그 밖의 수행 수단으로 수행될 수 있는 모듈 및/똔느 블록을 나타낸다. 상기 블록(240)은 일 실시예에 있어서 명령어 중재기(CA)로서 수행될 수 있다. 상기 블록(242)은 일 실시예에 있어서 데이터 전송 중재기(DTA)로서 수행될 수 있다. 상기 블록(244)은 일 실시예에 있어서 플래시 동작 형식기(FOF)로서 수행될 수 있다. 상기 블록(246)은 일 실시예에 있어서 나노 순서기로서 수행될 수 있다. 상기 블록(248)은 일 실시예에 있어서 제어 상태기(FOMCSM)로서 수행될 수 있다.
상기 데이터 전송 중재기(242)는 일반적으로 상기 플래시 동작 관리자(208)를 데이터 흐름 관리자(214)에 연결시킨다. 상기 플래시 동작 형식기(244)는 일반적으로 상기 플래시 동작 관리자(208)를 플래시 버스 제어기(212)에 연결시킨다. 상기 제어 상태기(248)는 일반적으로 상기 플래시 동작 관리자(208)를 컨텍스트 관리자(204)에 연결시킨다. 상기 명령어 중재기(240)는 일반적으로 상기 플래시 동작 형식기(FOM)(244)와 상기 제어 상태기(248) 사이에 연결되어 있다. 상기 데이터 전송 중재기(242)는 일반적으로 프랠시 동작 형식기(244)와 제어 상태기(248) 사이에 연결되어 있다. 상기 나노 순서기(246)는 일반적으로 상기 플래시 동작 형식기(244)와 상기 제어 상태기(248) 사이에 연결되어 있다. 상기 명령어 중재기(240)는 일반적으로 적용할 명령어를 찾기 위하여 컨텍스트 관리자 내 컨텍스트 표를 스캔하고, 그 후 신호를 상기 플래시 버퍼 제어기(FBC)(212)에 전송하기 위하여 상기 플래시 동작 형식기(FOF)와 통신을 시작한다.
도 10을 보면, 본 발명의 실시예를 따르는 플래시 미디어 컨텍스트 레이아웃(300)을 도시한 다이어그램이 나타나 있다. 각각의 플래시 트랜잭션은 일반적으로 컨텍스트에 의하여 표현된다. 상기 컨텍스트는 플래시 뱅크(flash bank)와 트랜잭션을 수행하고 시스템 버퍼 내 위치에 데이터를 보내고 받기 위한 시스템 하드웨어를 통해 사용되는 모든 정보를 포함하는 데이터 구조를 가진다. 컨텍스트는 일반적으로 펌웨어에 의하여 구성되고 플래시 레인 제어기(FLC)에 전달되고 컨텍스트의 내용이 실제로 위치하는 곳의 지시자로서 버퍼 제어기(BC)로 들어간다. 플래시 동작에 있어서 더 큰 하드웨어적 자동 제어 기능을 발휘하도록, 펌웨어는 상기 컨텍스트의 연결 목록(예를 들어, 컨텍스트 목록)을 구성한다. 일반적으로 관리되는 플래시 유닛(예를 들어, 다이, LUN 등) 당 하나의 컨텍스트 목록이 존재한다.
일반적으로, 보통의 동작 중에 전체 컨텍스트 중 일부분만이 상기 플래시 트랜잭션을 실행시키기 위하여 FLC에 의하여 사용된다. 이와 같이, 상기 FLC에 의하여 사용되는 일부분만이 상기 FLC의 컨텍스트 캐쉬에 저장된다. 보통의 동작 중에 FLC의 컨텍스트 캐쉬에 저장되는 상기 전체 컨텍스트 중 일 부분을 일반적으로 "플래시 컨텍스트"라 한다. 플래시 미디어 컨텍스트 레이아웃(300)에서 볼 수 있듯이, 상기 플래시 컨텍스트는 전체 15 개의 더블 워드 컨텍스트 중 첫 번째 4 개의 더블 워드만을 포함할 수 있다.
일 실시예에 있어서, 본 발명의 실시예를 따라 수행되는 컨텍스트는, 플래시 동작 필드, 플래시 행 어드레스 필드, 천크 기술자 지시자(chunk description pointer)/카피백 행 어드레스 필드(copyback row address field), 구성 비트(configuration bit) 필드, 다음 컨텍스트 지시자 필드, DMA 스킵 마스크 필드, 데이터 버퍼 지시자 필드, 대체적 데이터 버퍼 지시자 필드, 논리적 블록 어드레스(LBA) 필드, 상태 필드, 플래시 유닛 번호(FUN) 필드, 메나 데이터 또는 구성 데이터 지시자 중 하나를 포함하는 필드, 메타 데이터, 및/또는 플래시 구성 데이터, 메타 데이터 또는 플래시 구성 데이터 중 하나를 포함하는 필드, 64비트 LBA 모드가 사용되는 경우 메타 데이터 또는 논리적 블록 주소(LBA)의 상위 부분 중 하나를 포함하는 필드, 및 컨텍스트에 대한 에러 정정 코드(ECC)를 포함하는 필드와 같이, 필드 및/또는 내용을 포함할 수 있다. 상기 플래시 동작 필드는 동작 코드를 포함한다. 일 실시예에 있어서, 상기 동작 코드는 8 개의 비트를 포함한다. 상기 동작 코드는 실행 동작을 상기 하드웨어와 통신 연결하기 위하여 상기 펌웨어에 의하여 생성된다. 일반적으로, 상기 동작은 상기 플래시 집합체로의 하나 이상의 액세스와 관련되어 있다. 상기 펌웨어에서 사용 가능한 기본 동작 코드는, 예를 들어 리셋(RESET), 동기식 리셋(SYNCHRONOUS_RESET), ID 읽기(READ_ID), 파라미터 페이지 읽기(READ_PARAMETER_PAGE), 특징 획득(GET_FEATURES), 특징 설정(SET_FEATURES), 페이지 읽기(READ_PAGE), 페이지 프로그램(PROGRAM_PAGE), 블록 삭제(ERASE_BLOCK), 읽기 카피백/프로그램(COPYBACK_READ/PROGRAM), 상태 읽기(READ_STATUS), 강화된 상태 읽기(READ_STATUS_ENHANCED), 프로세서 제어 모드(PROCESSOR_CONTROL_MODE), 다면 프로그램 페이지(MULTIPLANE PROGRAM PAGE), 및 다면 프로그램 종료(MULTIPLANE PROGRAM END) 동작을 나타내는 값을 포함할 수 있다.
상기 플래시 열 어드레스 필드는 플래시 메모리 내 액세스 페이지의 행 어드레스를 포함한다. 일 실시예에 있어서, 플래시 행 어드레스 필드는 페이지 어드레스와 연결된 블록 어드레스를 포함할 수 있다. 상기 플래시 행 어드레스는 세 개(3)의 행 어드레스 동작 주기 동안에 플래시 집합체로 전달된다. 삭제 동작의 경우, 플래시 메모리 내 액세스의 블록 어드레스가 전달된다. READ_ID 동작의 경우, 오직 하나의 어드레스 바이트를 사용하고, 상기 바이트는 일 실시예에 있어서 상기 플래시 행 어드레스의 가장 좌측 바이트(MSB)에 배치된다. 또한, 상기 플래시 행 어드레스 필드는 상기 플래시 동작이 프로세서 제어 모드(PROCESSOR_CONTROL_MODE)일 때 소프트 컨텍스트 지시자로서 사용될 수 있다. 프로세서 제어 모드 동작에 들어갈 때, 상기 FLC는 플래시 행 어드레스 필드 내 값을 상기 소프트 컨텍스트의 시스템 버퍼 어드레스로서 사용한다.
상기 DMA 스킵 마스크 필드는, 데이터가 시스템 버퍼로 이동하거나 시스템 버퍼로부터 올 때, 비트 상태(예를 들어, '1' 또는 '0')에 기초하여 페이지의 섹터(영역)가 전달되거나 생략(스킵)되게 하는 비트를 포함할 수 있다. 일 실시예에 있어서, 상기 DMA 스킵 마스크 필드는 활성 로우 스킵 마스크(active low skip mask) 또는 전달 마스크(예를 들어, 전달을 의미하는 '1' 및 각각의 페이지를 생략하는 것을 의미하는 '0')로서 수행될 수 있다. 상기 DMA 스킵 마스크 필드는 본래 읽기/수정/쓰기(RMW) 동작에 사용되고, 이는 적은 수의 섹터의 트랜잭션에 있어 공통되는 것이다. 예를 들어, 8K 페이지 장치에서, 페이지는 보통 16개의 섹터로 나뉘어 지게 된다. 상기 DMA 스킵 마스크 필드 중 특정 비트가 1일 때, 이에 대응하는 섹터는 상기 시스템 버퍼에 기록되거나 상기 시스템 버퍼로부터 읽혀지게 된다. 상기 비트가 0일 때, 이에 대응하는 섹터는 시스템 버퍼로 기록하는 동작 또는 시스템 버퍼로부터 읽어 들이는 동작으로부터 생략될 수 있다. 일 실시예에 있어서, 데이터가 두 개의 서로 분리된 출처(수정되지 않은 페이지 데이터를 포함하는 버퍼 천크 및 갱신된 페이지 데이터를 포함하는 버퍼 천크)로부터 쓰여지게 만드는 모드가 존재한다. 이들 경우에 있어서, 한 상태(예를 들어, '0')는 섹터가 갱신된 페이지 데이터를 포함하는 상기 천크로부터 기록되는 것을 나타내는데 사용될 수 있고, 또 다른 상태(예를 들어, '1')는 상기 섹터가 수정되지 않은 페이지 데이터를 포함하는 버퍼 천크로부터 기록되는 것을 나타내는데 사용될 수 있다. 상기 비트 위치 또한 중요할 수 있다. 예를 들어, 상기 가장 좌측 바이트(MSB)는 일반적으로 페이지 내 첫 번째 또는 가장 작은 수를 가지는 섹터 에 대응하는 비트일 수 있다. 가장 우측 비트(LSB)는 일반적으로 페이지 내 가장 높은 수에 대응한다. 만약 페이지 내에 영역이 16개 영역보다 작다면, 가장 우측 바이트는 돈케어(don't cares)로서 처리될 수 있다. 하지만, 그 밖의 배치 형태 역시 특정 실시예의 기준을 만족하기 위하여 사용될 수 있다. 일 실시예에 있어서, BCH(Bose Chaudhuri Hocquenghem) 에러 정정 코드(ECC)가 사용될 때, 마스크의 입도 정도는 하나(1)의 정보 단어로 표현될 수 있다.
상기 다음 컨텍스트 지시자 필드는 상기 펌웨어에 의하여 형성된 컨텍스트 목록(예를 들어, 컨텍스트의 연결 목록) 내 다음 컨텍스트를 지시하는 지시자를 포함할 수 있다. 만약 상기 "다음 컨텍스트 지시자"가 상기 펌웨어에 의하여 FLC에 프로그램된 "목록 지시자의 마지막"과 일치한다면, 상기 하드웨어는 검색 종료에 도달하였다고 여긴다. 상기 하드웨어는 상기 연결 목록을 넘어가기 전에 상기 "목록 지시자의 마지막" 값이 변하는 것을 기다린다. 또한, "널 지시자(Null Pointer" 값은 하드웨어에 의하여 목록 검색이 정지될 수 있다는 것을 의미한다.
일 실시예에 있어서, 상기 천크 기술자 지시자/카피백 행 어드레스 필드는 일반적으로 카피백 명령어에 의하여 다시 쓰여지게 된 캐시 데이터(cached data)에 대한 플래시 메모리의 페이지의 행 어드레스를 제공한다. 상기 행 어드레스는 블록 어드레스 및 페이지 어드레스의 연속이다. 또 다른 실시예에 있어서, 상기 카피백 플래시 행 어드레스 필드는 비-카피백 컨텍스트를 위한 사용되지 않는 필드를 통해 공유된다. 예를 들어, 상기 천크 기술자 지시자/카피백 행 어드레스 필드는 버퍼 할당 지시자(BAM) 지원 필드를 제공하기 위하여 사용될 수 있다. 상기 BAM 지원 필드는 상기 버퍼 할당 지시자(BAM)에 의하여 관리되는 데이터 버퍼 내부의 데이터 천크에 대한 기술자를 지시하는 지시자를 포함할 수 있다.
상기 천크 기술자 필드는 캐시 관리를 위하여 사용될 수 있다. 상기 천크 기술자는 천크 어드레스(예를 들어, 시스템 버퍼 내 어드레스), 유효 비트, 더티 비트(dirty bits), 전송 중 카운트, 상태, LBA 및 버퍼 관리에 사용되는 지시자를 포함할 수 있다. 상기 천크 기술자 지시자는 일반적으로 상기 DMA가 완료된 이후에 상기 플래시 미디어 제어기(FMC) 내 DMA 관리자에 의하여 BAM로 건내지게 된다. 상기 천크 기술자 지시자는 만약 플래그(예를 들어, BAM 룩업(lookup) 요청 비트)가 설정되는 경우 상기 DMA를 시작하는 버퍼 데이터 지시자를 획득하기 위하여 상기 BAM에 건내질 수 있다. 또한, 상기 천크 기술자 지시자/BAM 지원 필드는 펌웨어에 의하여 포괄적 BAM 지원 필드로 설정될 수 있고, 그 내용은 상기 BAM 순서기의 특정 프로그래밍에 따라서 펌웨어에 의하여 결정될 수 있다. 일반적으로, 상기 천크 기술자 지시자/BAM 지원 필드는 하드웨어에 대하여 완전히 관여하지 않는다.
상기 데이터 버퍼 지시자 필드는 일반적으로 상기 버퍼 제어기와 상기 플래시 미디어 사이를 오가는 실제 데이터를 지시하는 지시자를 제공할 수 있다. 상기 데이터 버퍼 지시자 필드는 상기 컨텍스트가 처음에 페치된 때 컨텍스트에 존재하거나, 상기 BAM 룩업 요청 비트가 설정된 경우 BAM 룩업를 통해 상기 데이터 버퍼 지시자 필드가 상기 BAM에 의히여 덧붙여진다. 상기 데이터 버퍼 지시자 필드는 일반적으로 상기 천크 내 첫 번째 바이트의 주소를 제공하지만, 천크 내 첫 번째 유효 LBA를 반드시 제공하지는 않는다.
상기 대체적 데이터 버퍼 지시자 필드는 버퍼 제어기와 플래시 미디어 사이를 오고 가는 데이터를 지시하는 지시자를 포함할 수 있다. 상기 대체적 데이터 버퍼 지시자 필드는 상기 동작이 버퍼로부터의 다중 출처 또는 버퍼로의 다중 목적지를 사용할 때 사용된다. 상기 대체적 데이터 버퍼 지시자는 주로 동작을 읽고/수정하고/쓰는데(RMW) 사용된다. 호스트가 전체 페이지 보다 작은 동작을 수행할 때, 상기 호스트는 페이지를 갱신하기 위하여 RMW 동작을 한다. 상기 대체적 데이터 버퍼 지시자는 기존 페이지 데이터를 임시 천크에 저장하기 위하여 읽기 동작에 사용된다. 그 후, 쓰기 동작이 수행될 때, 수정되지 않은 페이지 데이터를 포함하는 미디어 천크 또는 갱신된 데이터를 포함하는 호스트 천크 중 어느 하나에서 섹터(또는 영역)의 쓰기 출처를 선택하기 위하여 상기 스킵 마스크가 사용될 수 있다.
상기 메타 데이터 필드는 일반적으로 플래시 페이지와 관련된 메타 데이터(예를 들어, LBA, 순서 번호, 불량 블록 지시자 등과 같은 관리 정보)를 포함한다. 일반적으로 모든 메타 데이터가 컨텍스트 내부에 고정되어 있을 것이라고 예상된다. 만약 그렇지 않다면, 상기 메타 데이터가 시스템 버퍼에 저장되거나 시스템 버퍼로부터 회수되도록, 메타 데이터 버퍼 지시자는 메타 데이터 그 자체가 아닌 컨텍스트 내에 포함되게 된다. 쓰기 동작의 경우, 상기 메타 데이터 필드는 일반적으로 펌웨어에 의하여 페이지에 덧붙여지거나 하드웨어에 의하여 삽입된다. 읽기 동작의 경우, 펌웨어가 읽기 페이지로부터 메타 데이터의 내용을 요청하는 것이 바람직하다. 이들 경우에 있어서, 상기 컨텍스트는 페이지로부터 상기 메타 데이터를 컨텍스트 안으로 읽어 들이도록 구성될 수 있다. 일 실시예에 있어서, 상기 메타 데이터의 바이트 크기는 메타 데이터 크기 레지스터에 의하여 결정될 수 있다.
상기 플래시 구성 데이터 필드는 일반적으로 메타 데이터와 바이트 위치를 공유하고 일반적으로 제한된 수의 바이트가 전송되는 동작(예를 들어, ID 읽기(READ_ID), 특징 획득(GET_FEATURES), 특징 설정(SET_FEATURES), 상태 읽기(READ_STATUS) 동작 등)에 사용된다. 상기 전송에 관련된 복수의 바이트는 일반적으로 그 크기가 작기 때문에(예를 들어, 특징 설정(SET_FEATURES) 및 특징 획득(GET_FEATURES) 동작은 4 바이트가 사용되고, ID 읽기(READ ID) 동작은 일반적으로 5 바이트가 사용되고, 상태 읽기(READ_STATUS) 동작은 1 바이트만 사용될 수 있다), 데이터는 개개의 버퍼 위치에 전송되는 않고 단순히 상기 컨텍스트에 전송되게 된다. 만약 전송과 관련된 상기 데이터가 상기 컨텍스트에 할당된 공간을 초과한다면, 상기 플래시 구성 데이터 지시자 필드가 사용될 수 있다. 상기 특징 획득(GET_FEATURES) 및 특징 설정(SET_FEATURES) 명령어는 항상 4 비트를 사용한다고 가정한다. ID 읽기(READ_IOD) 명령어에 필요한 복수의 바이트는 예를 들어 ID 읽기 명령어 레지스터를 위한 복수의 읽기 바이트로부터 획득될 수 있다. 상기 플래시 구성 데이터 필드가 구성 데이터에 사용된 때, 7 개의 더블 워드 모두는 하드웨어에 의하여 갱신되고, 상기 펌웨어는 적절한 바이트를 읽기만 하면 된다.
상기 메타 데이터 버퍼 지시자 필드는 페이지 메타 데이터(예를 들어, 플래시 페이지 내 사용자 데이터로 포함되어 있는 관리 데이터)의 위치의 어드레스를 포함한다. 모든 메타 데이터가 상기 컨텍스트 자체에 저장되어 있다고 예상되기 때문에, 상기 메타 데이터 버퍼 지시자 필드는 다른 실시예에서 생략될 수 있다. 상기 메타 데이터 버퍼 지시자 필드는 상기 메타 데이터 버퍼 지시자 필드가 외부 시스템 버퍼로부터 회수된 것일 때 사용될 수 있다. 상기 메타 데이터 버퍼 지시자 필드는 일반적으로 상기 메타 데이터가 외부에 저장되고 컨텍스트 내에 저장되지 않은 경우에만 사용될 수 있다. 일 실시예에 있어서, 구성 비트는 메타 데이터가 외부에 저장되어있는 것인지 또는 컨텍스트 내부에 저장되어 있는 것인지를 명확하게 하기 위하여 수행될 수 있다. 일 실시예에 있어서, 상기 외부 시스템 버퍼는 플래시 미디어 제어기(FMC)를 포함하는 칩 외부에 위치한 메모리(예를 들어, DDR RAM)로서 작동할 수 있다. 또 다른 실시예에 있어서, 상기 외부 시스템 버퍼는 FMC IP 외부에 위치한 온-칩 RAM으로서 작동할 수 있다. 더 나아간 실시예에 있어서, 상기 외부 시스템 버퍼는 FMC IP 내에 있는 메모리를 포함할 수 있다. 일반적으로, 상기 외부 시스템 버퍼는 컨텍스트 외부에 있는 모든 저장 장치일 수 있다.
상기 플래시 구성 데이터 지시자 필드는 일반적으로 플래시 유닛에서 획득되거나 플래시 유닛에 기록될 필요가 있는 구성 데이터의 위치의 어드레스를 제공한다. ID 읽기(READ_ID), 특징 획득(GET_FEATURES) 및 특징 설정(SET_FEATURES) 명령어와 관련된 상기 플래시 구성 데이터는, 메타 데이터가 데이터 트랜잭션을 위한 컨텍스트 필드에 할당되는 것과 같이, 컨텍스트 자체에 저장된다. 하지만, 메타 데이터의 경우에서와 같이, 만약 상기 데이터 크기가 컨텍스트 내 플래시 구성 데이터에 할당된 공간을 초과하는 경우, 시스템 버퍼 내 데이터의 지시자가 액세스에 사용될 수 있다.
상기 논리 블록 어드레스(LBA) 필드는 일반적으로 페이지 내 첫 번째 데이터 영역의 LBA를 제공한다. 상기 LBA는 일반적으로 시스템 버퍼 및 플래시 내에 있는 각각의 섹터에 대한 데이터 보호 구성으로 인코딩된다. 페이지는 LBA의 연속적 그룹이기 때문에, 그룹 내 첫 번째 LBA 만이 컨텍스트의 일부분으로서 사용된다. 상기 LBA는 상기 섹터 페이지에 대한 버퍼 CRC를 배포하는데 사용될 수 있다. 상기 LBA는 또한 상기 메타 데이터 중 LBA 부분에 대비하여 선택적으로 검사될 수 있다. 예를 들어, 구성 비트는 상기 LBA가 상기 메타 데이터 중 LBA 부분에 대비하여 검사되었는지를 선택하도록 수행될 수 있다. 예를 들어, 상기 LBA는 상기 구성 비트가 설정되었을 때 상기 메타 데이터 중 LBA 부분에 대비하여 검사될 수 있다. 일 실시예에 있어서, 낮은 차수의 32 비트 만이 배포에 사용될 수 있다.
상기 플래시 유닛 번호(FUN) 필드는 펌웨어에 의하여 상기 컨텍스트가 적용되는 플래시 유닛을 결정하기 위한 식별자로서 사용될 수 있다. 상기 결정은 하드웨어에 대하여 투명하다. 상기 컨텍스트가 하드웨어에 의하여 소모된 이후 일단 상기 식별자가 다시 펌웨어에 전송되게 되는 경우 상기 펌웨어가 컨텍스트를 중재시키기도록, 상기 플래시 유닛 번호 필드는 관리 목적을 달성하기 위하여 펌웨어에 의하여 단독으로 사용될 수 있다.
상기 구성 비트 필드는 일반적으로 컨텍스트를 구성하는데 사용되는 모든 비트를 포함하고 있으며 하드웨어 흐름 내 여러 지점에서 컨텍스트의 처분을 결정(그리고 상기 컨텍스트 전송을 표시)한다. 일 실시예에 있어서, 컨텍스트의 구성 비트 필드에서 사용 가능한 상기 컨텍스트 비트 및 필드는, 소모된 컨텍스트 관리자 인터럽트 인에이블; 플래시 인터페이스에서 부분적 명령어를 사용하여 DMA 스킵 마스크 특징의 실행일 인에이블/디스에이블 시키는 부분적 명령어 인에이블 비트; DMA를 시스템 버퍼에 디스에이블 시키는 것; FLC 로컬 버퍼로 오고 가는 모든 데이터 전송의 디스에이블; 스크램블 기능을 가능하게하거나 불가능하게 하는 스크램블 기능 인에이블; ECC 에러 탐지 인터럽트 인에이블; 읽기 데이터의 디코딩 또는 쓰기 데이터에 패리티를 첨부시키는 동작을 인에이블/디스에이블 시키는 ECC 매크로 바이패스; 버퍼 CRC 인에이블; 메타 데이터로 하여금 시스템 데이터 버퍼, 시스템 버퍼 또는 읽기 컨텍스트로 전송되지 않도록 만들고, 임의의 쓰기 출처로부터 온 메타 데이터의 삽입 동작을 방지하는 메타 데이터 무시 신호(비트)(예를 들어, 메타 데이터 필드를 빈칸으로 남겨둔다); DMA에 대한 사용자 데이터를 사용하여 메타 데이터를 유지시키는 신호(비트)(예를 들어, 메타 데이터를 읽기 데이터 버퍼에 전달하고 쓰기 데이터 버퍼로부터의 메타 데이터를 받아 들이는 것); 메타 데이터 내 상기 "시작 LBA" 필드가 컨텍스트 내 상기 "시작 LBA"에 대하여 검사되었는지 여부를 skxksosmss 신호(비트); 버퍼 내 ECC 패리티 필드가 유지되고 있는지를 나타내는 신호(비트)(예를 들어, ECC 패리티 바이트를 읽기 시스템 버퍼에 전송하고, 시스템 버퍼로부터의 ECC를 쓰기 플래시에 전송하는 것); (얼마나 많은 데이터가 퀀텀 버스트(quantum burst)에서 시스템 버퍼로 전송되는지를 결정하기 위하여 사용되는) 관리된 데이터 버퍼 대신에 (예를 들어, 메모리 내 관리되지 않는 영역에서/영역으로 데이터를 전송/수신하는) 플랫 버퍼를 사용하는지를 나타내는 신호(비트); 섹터 데이터 길이를 결정하기 위하여 사용자 데이터 섹터 길이 구성을 사용하는지를 나타내는 신호(비트)(예를 들어, 만약 상기 비트가 클리어되면, 상기 섹터 데이터 길이는 여분의 에리어 섹터 길이 구성으로부터 결정될 수 있다); 플래시 구성 데이터의 전송여부를 나타내는 신호(비트)(예를 들어, 컨텍스트 안으로 플래시 데이터를 읽기, 또는 컨텍스트로부터 플래시 데이터를 쓰기); 전체 비처리 플래시 페이지를 시스템 버퍼에 또는 시스템 버퍼로 전송하였는지를 나타내는 신호(비트); (예를 들어, 상기 스킵 마스크로 하여금 섹터 전송을 생략하는 대신에 대체적 데이터 버퍼 지시자에 의하여 지정된 버퍼 천크로/버퍼 천트로부터 전송되는 섹터(영역)을 마크하는데 사용되게 만드는) 대체적 버퍼를 가지는 스킵 마스크를 사용하는지를 나타내는 신호(비트); 스크램블러가 인에이블되었을 때 각각의 영역에 대하여 스크램블러의 분포를 정의하는 필드를 포함하지만, 이에 한정되는 것은 아니다. 전체 미처리 플래시 페이지를 시스템 버퍼 사이에서 주고 받는지를 나타내는 신호는, 그 특성 때문에 그 밖의 대부분의 옵션들과 상호 배타적이다. 전체 미처리 플래시 페이지를 시스템 버퍼 사이에서 주고 받는지를 나타내는 신호는 일반적으로 그 밖의 비트 설정을 무효로 한다. 전체 미처리 플래시 페이지를 시스템 버퍼 사이에서 주고 받는 동작의 특성은 일반적으로 펌웨어가 페이지의 미사용 영역을 획득하게 만들고, 여기서 상기 미사용 영역이란 어떤 영역에도 속해있지 않는 영역을 말한다. 전송 플래시 구성 데이터 신호는 ops나 ID 읽기(READ ID), 특성 획득(GET FEATURES) 및 특성 설정(SET FEATURE)과 같은 명령어에 사용될 수 있다. 상기 데이터의 크기는 구성 데이터 길이 레지스터에 의하여 결정된다. 상기 데이터는 일반적으로 상기 메타 데이터가 컨텍스트 내에서 차지하는 위치에서 나타난다.
상태 필드는 일반적으로 펌웨어로 되돌아가는 상태를 나타내는데 사용될 수 있다. 일 실시예에 있어서, 상기 상태 필드는 프로그램 동작/삭제 동작에 대한 통과/실패 상태를 포함할 수 있다. 또 다른 예로서, 상기 상태 필드는 읽기 동작에서 ECC 논리 회로에 의하여 탐지된 복수의 에러를 포함할 수 있다. 하지만, 상기 필드의 또 다른 사용 방안이 특정 실시예를 수행하는 기준을 만족하기 위하여 수행될 수 있다. 일 실시예에 있어서, 상기 상태 필드는 플래시 페이지 내 복수의 에러 및 상기 컨텍스트 관리자에 대한 완성 코드(예를 들어, 클린, 프로그램 에러/삭제 에러, 정정된 읽기 에러, 수정 불가능한 읽기 에러, 시스템 버퍼로부터의 프리페치의 버퍼 CRC 에러, 동작 타임아웃, LBA/메타 데이터 미스매치, 불법 동작 등등)를 나타낼 수 있다.
위에서 언급한 바와 같이, 컨텍스트는 명령어의 실행을 결정하는 데이터 구조이다. 상기 컨텍스트는 펌웨어와 하드웨어 사이의 통신 유닛이다. 일반적 컨텍스트 흐름은 도 2 및 도 3으로 요약될 수 있다. 상기 펌웨어는 메모리 지시자를 따라 컨텍스트를 FMC(201)의 프로세서 인터페이스 논리 회로(PIL)(150)의 컨텍스트 구조 버퍼(CCB)에 기록한다. 다중 컨텍스트는 펌웨어에 의하여 컨텍스트 구조 내 다음 지시자 필드를 사용함으로써 상기 컨텍스트 목록 안에서 연결되어 있다. 상기 하드웨어는 컨텍스트 갱신 포트(CUP)(168)를 통해서 메모리 지시자와 관련된 위치에 컨텍스트의 메모리 기록을 수행한다. 상기 펌웨어는 각각의 플래시 레인 제어기(FLC)(156a 내지 156n)에서 다이 관리 모듈(DMM)(206) 내 다이 관리 레지스터를 통해서 특정 다이의 실행을 가능하게 할 수 있다. 다이 관리 레지스터의 각각의 세트는 각각의 다이 마다 존재할 수 있다. 상기 DMM(206)은 레지스터 내 정보를 각각의 플래시 레인 제어기(FLC)(156a 내지 156n) 내 컨텍스트 관리자(CM)(204)와 통신할 수 있다. 상기 CM(204)은 그 후 컨텍스트 회수 포트(CRP)(166)을 통한 처리를 위하여 메모리로부터 인에이블된 컨텍스트 및 각각의 플래시 레인 버스 상에서의 명령어 실행 스케쥴을 페치한다. 상기 CM(204)은 일반적으로 명령어의 계획표를 만들고 데이터 지향 동작을 위하여 데이터 DMA 관리자(DDM) 블록(152)에 지시를 내린다. 상기 DDM 블록(152)은 일반적으로 CRP를 통해서 컨텍스트로부터 데이터 파라미터를 추출하기 위하여 메모리로부터 컨텍스트를 페치한다. 상기 DDM(152) 및 상기 CM(204)에 의하여 상기 컨텍스트가 성공적으로 작업 완료된 때, 소모된 컨텍스트 관리자(CCM)(164)로 상태가 갱신된다. 완료 시, 인터럽트가 하드웨어에 의하여 생성되고 펌웨어는 주어진 컨텍스트의 완료 상태를 읽을 수 있다.
블록(172a 내지 172n) 및 블록(174a 내지 174n)을 포함하는 데이터 DMA 인터페이스 포트(DDIP)는 일반적으로 DTP(158a 내지 158n), 시스템 버퍼 제어기 및 이와 관련된 컨텍스트 사이의 실시간 데이터 라우팅을 담당한다. 각각의 데이터 전송은 하나 이상의 영역을 포함한다. 각각의 영역은 하나 이상의 지역을 포함한다. 실제 형식은 FMC(예를 들어, 레지스터를 사용) 및 이와 관련된 컨텍스트로부터 구성을 설정함으로써 결정될 수 있다. 상기 설정은 전송 별, 영역 별, 및 지역 별을 기반으로 분류될 수 있다. 라우팅은 데이터 전송 형식의 지역 형식뿐 아니라 추가적인 구성 설정의 지역 형식을 따라 결정될 수 있다. 라우팅은 일반적으로 기능성을 추가(padding)하는 단계 및 분리(stripping)하는 단계를 포함한다. 각각의 데이터 전송은 모든 컨텍스트 더블 워드를 수반한다. 따라서, 상기 DDIP가 실제 데이터 이동에 앞서 모든 컨텍스트 더블 워드를 해당 컨텍스트 캐시 지역으로 읽어 들어가는 경우 상기 DDM(152)은 DDIP와의 컨텍스트 액세스를 개시한다. 일단 관련 컨텍스트가 회수된다면, 상기 DDIP는 그 내부 제어 논리를 적절한 구성 설정을 사용하여 프로그램하고, 어떤 구성 정보를 각각의 DTP(158a 내지 158n)에 제공한다. 그 후 상기 DDIp는 각각의 영역 내 각각의 지역을 추적하고 적절한 라우팅을 위하여 논리를 설정한다. 실제 데이터 전송 중, 데이터가 컨텍스트로 다시 향하게 된다면, DDIP는 컨텍스트 액세스를 쓰기 모드로 전환한다. 전송이 완료 된 때, 상기 DDIP는 전송 및 컨텍스트 액세스가 모두 완료되었다고 DDM(152)에 통지한다. 상기 DDIP는 에러 검사 기능을 수행할 수 있다. 예를 들어, 상기 DDIP는 시스템 버퍼 CRC 검사를 수행하거나 수신된 LBA가 컨텍스트로부터 예상된 LBA와 일치하는지를 확인하도록 구성될 수 있다. 이들 검사 결과뿐 아니라 시스템 버퍼 ECC 바이트 에러(인에이블 되었을 때)는 일반적으로 상기 DDM 블록(152)에 되돌아오게 된다. 상기 DDM 블록(152)은 선택된 FLC(156a 내지 156n)로 정보를 순차적으로 되돌려 보낸다. DDIP는 CRC를 생성하고 삽입할 수 있다. 전체 사용자 데이터는 각각의 영역으로부터 모든 사용자 데이터 바이트를 수집함으로써 구축될 수 있다. 이와 유사하게, 전체 메타 데이터 역시 각각의 영역으로부터 모든 메타 데이터 바이트를 수집함으로써 구축될 수 있다. 일 실시예에 있어서, 상기 메타 데이터는 사전 결정된 상한에 도달할 때까지 수집될 수 있다. 일 실시예에 있어서, 상기 DDIP는, DDIP가 상기 사용자 데이터 영역 중 사용 부분과 시스템 버퍼 사이에서만 오고 가고 메타 데이터 영역 중 사용 부분과 컨텍스트 사이를 오고 가는 경우를 기본 구성으로 할 수 있다. 상기 ECC 영역은 잘려지거나 첨부될 수 있다. 상기 기본 구성은 여러 변형 구성을 제공하기 위하여 변경될 수 있다. 예를 들어, 상기 DDIP는 (1) 비사용 바이트를 포함하는 전체 사용자 데이터 영역이 계속 손상되지 않도록 유지되고, (2) 메타 데이터 영역이 사용자 데이터 영역과 시스템 버퍼 사이를 계속 오고 갈 수 있고, (3) 상기 메타 데이터를 자르고 첨부시킬 수 있고, 및/또는 (5) 전체 영역이 계속 손상되지 않고(예를 들어, 잘리거나/첨부되지 않고) 유지되도록 구성될 수 있다.
(도 10에서 설명된) 상기 컨텍스트 레이아웃 구조(300)는 목표물 내 모든 페이지를 프로그램하는데 사용될 수 있다. 최상단 모듈들 사이를 흐르는 예시적 프로그램 데이터 흐름은 다음과 같이 간략화될 수 있다. 상기 펌웨어는 상기 프로세서 논리 인터페이스(PIL)(150) 내부에 있는 상기 CCB내 메모리 지시자와 관련된 프로그램 명령어를 사용하여 상기 컨텍스트를 프로그램한다. 상기 CCB는 상기 CUP(168)를 통해서 상기 메모리에 쓰기 동작을 수행한다. 상기 펌웨어는 컨텍스트를 실행시키기 위하여 각각의 FLC(156a 내지 156n) 내부에 있는 상기 DMM(206)을 인에이블시킨다. 각각의 FLC(156a 내지 156n) 내부에 있는 상기 CM(204)은 CRP(166)를 통해서 메모리로부터 컨텍스트를 페치하고 각각의 플래시 버스 제어기(FBC)(154a 내지 154n) 상에 있는 명령어의 스케쥴링에 사용되는 컨텍스트의 부분을 처리한다. 상기 FLC는 상기 컨텍스트에 관하여 DDM(152)과 통신 연결되고, 상기 DDM(152)은 CRP(166)을 통해서 컨텍스트를 페치하고 데이터 천크의 지시자를 각각의 DTP 블록(158a 내지 158n)에 제공한다. 상기 각각의 DTP 블록(158a 내지 158n)은 상기 컨텍스트로부터 디코딩된 지시자를 사용하여 메모리에게 데이터를 요청한다. 이러한 요청 동작은 블록(172a 내지 172m) 및 블록(174a 내지 174n)으로 구성된 데이터 DMA 인터페이스 포트(DDIP)를 통해서 이루어질 수 있다. 상기 데이터 DMA 인터페이스 포트(DDIP)는 퀀텀 버스트(quantum burst)로 상기 데이터를 메모리로부터 읽어 들인다.
상기 메모리로부터 읽어 들인 데이터는 일반적으로 블록(172a 내지 172m) 및 블록(174a 내지 174n)으로 구성된 상기 DDIP에 의하여 상기 DTP로 전달된다. 상기 DTP에서, 데이터는 인에이블 된 경우 CRC가 검사될 수 있고, 인에이블된 경우 사용자 데이터에 ECC가 첨부될 수 있고 상기 ECC가 각각의 FLC(156a 내지 156n)으로 전해질 수 있다. 만약 데이터의 완전성(data integrity)이 달성되지 않은 경우, 상태가 CCM 블록(164)에 갱신되게 된다. 상기 각각의 FLC(156a 내지 156n)에 있는 플래시 동작 관리자(FOM)(208)는 프로그램 주기와 관련된 명령어 및 데이터를 각각의 플래시 버스 제어기(FBC)(154a 내지 154n)에 스케쥴링 한다. 각각의 FBC(154a 내지 154n)는 플래시 인터페이스 명세서에 따라서 상기 플래시 버스 인터페이스에서 프로그램 동작을 실행한다. 상기 각각의 FBC(154a 내지 154n)는 동작의 완성을 위하여 상기 플래시로부터 상태 정보를 읽어 들인다. 상기 각각의 FBC(154a 내지 154n)는 각각의 FLC(156a 내지 156n)과 통신 연결되어 있고 상기 각각의 FBC(154a 내지 154n)는 동작의 완성을 위하여 상기 각각의 FLC(156a 내지 156n)와 통신 연결되어 있다. 상기 CCM(164)은, 상기 CCM(164)과 관련된 컨텍스트 레지스터에 위치한 상기 컨텍스트가 완성되었고 펌웨어를 검사할 준비가 되어 있다는 것을 펌웨어에게 통지하기 위하여 펌웨어에 인터럽트를 어서트시킨다. 그 후 상기 펌웨어는 CCM(164)으로부터 컨텍스트를 읽어 들인다. 펌웨어가 컨텍스트를 읽어 들이고 처리하는 동작을 완료한 때, 상기 펌웨어는 또 다른 소모된 컨텍스트가 로딩되게 만드는 신호(예를 들어, 비트)를 어서트시킬 수 있다.
기본적인 플래시 읽기 데이터 흐름이 이하 설명된다. 컨텍스트 구조는 목표물 내 모든 페이지를 읽는데 사용된다. 펌웨어는 프로세서 논리 인터페이스(PIL)(150) 내에 있는 CCB내 관련 메모리 지시자를 사용하여 읽기 명령어를 가지는 컨텍스트를 프로그램한다. 상기 CCB는 CUP(168)를 통해서 상기 메모리에 쓰기 작업을 수행한다. 상기 펌웨어는 컨텍스트를 실행시키기 위하여 각각의 FLC(156a 내지 156n) 내에 있는 상기 DMM(206)을 인에이블시킨다. 각각의 FLC(156a 내지 156n) 내에 있는 상기 CM(204)은 CRP(166)를 통해서 메모리로부터 컨텍스트를 페치하고 각각의 FBC(154a 내지 154n)에서 명령어의 스케쥴링에 필요한 컨텍스트 부분을 처리한다. 상기 각각의 FLC(156a 내지 156n)는 목표물로의 읽기 명령어 실행을 위하여 각각의 FBC(154a 내지 154n)와 통신 연결된다. 상기 각각의 FLC(156a 내지 156n)는 DDM(152)과 컨텍스트에 관하여 통신 연결되고, 상기 DDM(152)은 CRP(166)를 통해서 컨텍스트를 페치하고 각각의 DTP(158a 내지 158n)에 데이터 천크의 지시자를 제공한다.
각각의 FBC(154a 내지 154n)를 통해서 플래시에서 각각의 DTP(158a 내지 158n)로의 데이터가 수신된 때, 상기 각각의 DTP(158a 내지 158n)는 컨텍스트로부터 디코딩된 지시자를 사용하여 메모리에 쓰여지는 데이터를 요청한다. 상기 각각의 DTP(158a 내지 158n)는 블록(172a 내지 172n) 및 블록(174a 내지 174n)를 통해서 형성되는 데이터 DMA 인터페이스 포트(DDIP)를 통해서 동작한다. 상기 DDIP는 퀀텀 버스트로 상기 데이터를 메모리에 기록한다. DTP에서, 인에이블 된 경우 데이터는 ECC가 검사되고, 인에이블된 경우 CRC가 상요자 데이터에 첨부되고 데이터는 DDIP에 전달된다. 만약 상기 데이터 완성도가 달성되지 않는다면, 상태 정보가 CCM(164)에 갱신되게 된다. 상기 읽기 동작의 상태는 동작 완료 시 CCM 블록(164)에 제공된다. 상기 CCM 블록(164)은 CCM 블록(164)의 컨텍스트 레지스터에 위치한 컨텍스트가 완료되었고 펌웨어의 검사 준비가 완료되었다는 것을 펌웨어에 통지하기 위하여 인터럽트를 펌웨어어 어서트시킨다. 상기 펌웨어는 CCM 블록(164)에서 컨텍스트를 읽어 들인다. 상기 펌웨어가 컨텍스트를 읽어 들이고 처리하는 동작이 완료시킨 때, 상기 펌웨어는 또 다른 소모 컨텍스트가 로딩되게 만드는 신호(예를 들어, 비트)를 어서트시킨다.
도 11을 보면, 본 발명의 실시예를 따르는 플래시 페이지 내 예시적 영역 분할 상태를 도시하고 있다. NAND 플래시 메모리는 일반적으로 사용자 데이터를 포함하는 페이지들로 구성되어 있다. 일반적으로, 가장 흔한 페이지 크기는 8KB이다. 또한, 8K의 사용자 데이터를 더하여, NAND 플래시 메모리는 여분의 영역을 가지고 있으며, 상기 여분의 영역은 다양한 목적에 사용되는 추가적인 바이트를 포함할 수 있다. 우선, 상기 여분의 영역은 플래시 관리 정보(에를 들어, LBA, 순서 번호, 불량 블록 지시자 등)을 포함하고, 상기 관리 정보는 일반적으로 페이지 메타 데이터라 한다. 다음으로, 상기 여분의 영역은 에러 정정 코드(ECC) 패리티 및/또는 이와 맞닿아 있는 데이터 완전성 검사(EDC) 정보를 포함할 수 있다. 상기 ECC 패리티는 사용자 데이터 및 메타 데이터를 보호(예를 들어, 에러의 탐지 및 정정)하는데 사용될 수 있다. 일 실시예에 있어서, 8KB의 사용자 데이터와 별개로, 메타 데이터와 ECC와 EDC 사이에서 공유되는 512 바이트의 추가적인 여분의 영역이 존재한다.
물리 페이지는 복수의 영역을 포함한다. 본 발명의 실시예를 따르는 플래시 미디어 제어기는 종래의 페이지 영역 방식을 사용할 수 있지만, 상기 영역 방식은 (예를 들어, 레지스터 등을 통해서) 구성될 수 있게 한다. 일 실시예에 있어서, 영역은 영역 레이아웃(400)을 사용하여 배치될 수 있다. 또 다른 실시예에 있어서, 영역은 영역 레이아웃(410)을 사용하여 배치될 수 있다.
상기 영역 레이아웃(400)이 사용된 때, 각각의 영역은 ECC(406) 영역 및 메타 데이터(404)가 뒤에 배치되는 사용자 데이터 필드(402)를 포함할 수 있다. 상기 ECC(406)는 일반적으로 사용자 데이터(402) 및 메타 데이터(404)를 보호한다. 영역(400)의 크기는 일반적으로 사용자 데이터(402) 및 메타 데이터(404)의 크기에 따라서 구성될 수 있다. 상기 ECC 영역(406)의 크기는 그 후 사용자 데이터(402) 및 메타 데이터(4040)의 크기를 따라간다. 본 발명의 실시예를 따라 수행되는 플래시 미디어 제어기는 일반적으로 종래 페이지 형식 구조에서와 같이 인접 페이지 영역 방식을 지원한다. 인접 페이지 영역 방식은 다중 영역의 인접 방식이라 불린다. 하지만, 상기 영역은 크기가 2n승으로 고정되어 있지 않으며 임의의 크기를 가질 수 있다. 상기 영역이 임의의 크기로 구성됨으로써, 본 발명의 실시예를 따라 수행되는 상기 플래시 미디어 제어기는 더 큰 섹터, DIF, CRC 및/또는 추가적인 메타 데이터를 지원할 수 있다. 일반적으로 모든 크기가 프로그램 될 수 있다.
영역 레이아웃(410)이 사용된 때, 각각의 영역은 제1 필드(412) 및 제2 필드(414)를 포함할 수 있다. 상기 제1 필드(412)는 일반적으로 호스트 섹터 데이터를 포함하고, 상기 호스트 섹터 데이터는 비처리, (인에이블된 경우) 스크램블, 및/또는 (인에이블된 경우) 암호화될 수 있다. 일 실시예에 있어서, 사용자 데이터의 크기는 512/1K/2K/4K 바이트 + n개의 더블 워드일 수 있고, 여기서 n은 0 내지 32이다. 일 실시예에 있어서, 현재 LBA는 스크램블 및 암호 엔진에 대한 분포에 사용될 수 있다. 상기 제2 필드(414)는 플래시 관리 정보(P를 들어, LBA, 순서 번호, 불량 블록 지시자 등)를 포함할 수 있고, 상기 플래시 관리 정보는 일반적으로 페이지 메타 데이터라 불린다. 영역 레이아웃(410)을 사용하는 경우, 메타 데이터가 물리 페이지에 배치되는 두 개의 방법으로서, (1) 상기 메타 데이터가 영역들에 걸쳐서 분배되는 방법, 및 (2) 전체 메타 데이터가 마지막 영역에만 배치되는 방법이 존재한다. 상기 메타 데이터가 영역들에 걸쳐 분배되어 있을 때, 상기 메타 데이터는 일반적으로 영역의 부분으로서 간주된다. 상기 영역의 크기는 일반적으로 사용자 데이터 및 메타 데이터의 크기에 따라서 구성될 수 있다. 일 실시예에 있어서, 상기 사용자 데이터 및 메타 데이터의 크기는 (예를 들어, 레지스터를 통해서) 프로그램 될 수 있다. 일반적으로, 펌웨어는 상기 프로그램된 크기가 물리 페이지 크기의 한계 내에 있도록 보장하는 역할을 한다.
도 12a 및 12b를 보면, 예시적 플래시 페이지 구조의 다이어그램이 도시되어 있다. 본 발명의 실시예를 따라 수행되는 플래시 미디어 제어기는 일반적으로 종래의 페이지 영역 방식을 사용하지만, (예를 들어, 레지스터를 통해서) 상기 페이지 영역 방식을 구성 가능하게 한다. 일 실시예에 있어서, 플래시 페이지 구조(500)는 영역 레이아웃(400)을 사용하여 수행된다. 또 다른 실시예에 있어서, 복수의 플래시 페이지 구조(510, 520, 525, 530, 535)는 영역 레이아웃(410)을 사용하여 수행된다.
일 실시예에 있어서, 메타 데이터는 페이지 구조(500) 내 영역의 메타 데이터 영역에서 왼쪽에서 오른쪽으로 전달될 수 있다. 예를 들어, 8k바이트의 페이지 크기 및 512 바이트의 여분의 영역을 가지는 플래시 장치를 사용한다면, 512 바이트의 크기를 가지는 호스트 섹터는 16 개의 영역으로 수용될 수 있고, 각각의 영역은 최대 544 바이트이다. 일 실시예에 있어서, 각각의 영역은 512 바이트의 사용자 데이터, 4(4) 바이트의 메타 데이터 및 최대 28 바이트의 ECC를 포함한다. 만약 총 메타 데이터의 총합이 28 바이트라면, 4 바이트의 메타 데이터가 첫 번째 7 개의 영역의 각각의 메타 데이터 영역 안으로 들어가고 남아 있는 9 개의 메타 데이터 영역(예를 들어, 영역(7) 내지 영역(15) 에서의 메타 데이터 영역)은 0으로 채워져 있거나 그 밖의 사용에 이용 될 수 있는 상태에 놓일 수 있다. 상기 데이터 DMA 인터페이스 포트가 페이지를 처리하고 있을 때, 데이터 DMA 인터페이스 포트가 메타 데이터의 삽입 및 수집을 시작한 위치를 알고 영역 경계인 코드 워드 경계의 위치를 알 수 있도록, 상기 데이터 DMA 인터페이스 포트는 처리가 페이지의 처리 상태에 계속 유지될 수 있게 한다. 영역 크기가 프로그램 가능한데 반하여, 영역 크기는 상기 ECC 코덱이 작동할 수 있게 하는 가장 큰 코드 워드보다 더 크게 만들어 져서는 안된다. 예를 들어, BCH ECC는 1K + 80 정보 워드에 대하여 최대 48 비트 정정 기능을 지원한다. 각각의 정보 비트 마다, 16 비트의 패리티가 추가된다.
영역 레이아웃(410)을 사용하는 경우, 다양한 플래시 페이지 구조(510, 515, 520, 530, 535)가 수행될 수 있다. 일 실시예에 있어서, 각각의 영역이 영역 레이아웃(410)을 사용하여 구성되는 경우, 상기 플래시 페이지는 9 개의 영역으로 나뉘어 질 수 있다. 플래시 페이지 내 미사용 여분 영역은 다음의 두 가지 방법으로 사용될 수 있다. 첫 번째 실시예로서, (구조(510, 520, 530)에 도시되는 바와 같이) 상기 메타 데이터는 영역의 일 부분으로서 영역들 사이에 걸쳐 분배될 수 있다. 두 번째 실시예로서, (구조(515, 525, 535)에 도시되는 바와 같이) 전체 메타 데이터가 페이지의 마지막 영역에만 배치될 수 있다. (구조(510) 및 구조(515)에 도시된) 첫 번째 실시예에 있어서, LDPC의 정보 워드는 호스트 섹터 크기와 동일하다. 이 실시예에 있어서, 모든 영역은 첨부된 독립된 EDC 및 ECC 패리티 영역을 가진다. 상기 EDC는 영역 내 호스트 섹터의 BA를 사용하여 분포된다. (구조(520) 및 구조(525)에 도시된) 두 번째 실시예에 있어서, LDPC의 정보 워드는 호스트 섹터 크기보다 크다. 이 실시예에 있어서, 두 개의 영역 마다 첨부되는 독립된 EDC 및 ECC 패리티를 가진다. 상기 EDC는 영역 내 마지막 호스트 섹터의 LBA를 사용하여 분포된다. (구조(530) 및 구조(535)에 도시된) 세 번째 실시예에 있어서, LDPC의 정보 워드는 호스트 섹터 크기보다 작다. 이 실시예에 있어서, 하나의 영역 내에는 첨부된 두 개의 ECC 패리티가 존재하고 첨부된 하나의 EDC가 존재한다. 상기 EDC는 영역 내 호스트 섹터의 LBA를 사용하여 분포된다. 페이지 영역 방식을 변경 구성할 수 있기 때문에, 그 밖의 페이지 구조가 특정 실시예를 수행하는 기준을 만족하기 위하여 수행될 수 있다.
도 13을 보면, 본 발명의 실시예를 따른 과정(600)을 도시한 플로우 다이어그램이 나타나 있다. 상기 과정(또는 방법)(600)은 일반적으로 본 발명의 실시ㅖ를 따라서 메타 데이터를 다루는 단계를 제공한다. 일 실시예에 있어서, 상기 과정(600)은 단계(또는 상태)(602), 단계(또는 상태)(604), 단계(또는 상태)(606), 단계(또는 상태)(608) 및 단계(또는 상태)(610)를 포함한다. 단계(602)에서, 상기 과정(602)은 컨텍스트에 저장될 수 있는 소정의 메타 데이터 크기에 대응하는 임계 값을 정의한다. 단계(604)에서, 상기 과정(600)은 플래시 장치로부터 메타 데이터를 읽어 들이거나 플레시 장치로 메타 데이터를 기록하는 요청을 기다린다. 읽기 또는 쓰기 동작이 수행된 때, 과정(600)은 단계(606)으로 이동한다. 단계(606)에서, 과정(600)은 상기 메타 데이터의 크기가 상기 소정의 임계 값보다 큰지 여부를 결정할 수 있다. 상기 메타 데이터의 크기가 상기 소정의 임계 값보다 큰 경우, 상기 과정(600)은 단계(608)로 이동한다. 상기 메타 데이터의 크기가 상기 소정의 임계 값보다 작거나 같은 경우, 상기 과정(600)은 단계(610)로 이동한다.
단계(608)에서, 상기 과정(600)은 플래시 장치로부터 읽어 들인 메타 데이터를 (예를 들어, 컨텍스트 갱신 포트(CUP)(168)를 통해서) 읽기 트랜잭션과 관련된 상기 컨텍스트 구조에 저장하거나, (예를 들어, 컨텍스트 회수 포트(CRP)(166) 및 BC_RD_I/F를 통해서) 상기 플래시 장치로 프로그램된 메타 데이터를 쓰기 트랜잭션과 관련된 컨텍스트 구조로부터 회수한다. 단계(610)에서, 상기 과정(600)은, 상기 플래시 장치로부터 읽어 들인 메타 데이터를 읽기 트랜잭션과 관련된 컨텍스트 구조에서 정의된 메타 데이터 지시자를 통해 확인되는 위치(예를 들어, 외부 시스템 버퍼)에 저장하거나, 상기 플래시 장치로 프로그램된 메타 데이터를 쓰기 트랜잭션과 관련된 컨텍스트 구조에서 정의된 메타 데이터 지시자를 통해 확인된 위치(예를 들어, 외부 시스템 버퍼)로부터 회수한다. 예를 들어, 프로그램 명령 중에, 상기 메타 데이터는 각각의 데이터 DMA 읽기 인터페이스 포트(DDRIP)(172a 내지 172n 및 BC_RD_I/F)를 통해서 회수될 수 있고, 읽기 명령 중에 상기 메타 데이터는 각각의 데이터 DMA 쓰기 인터페이스 포트(DDWIP)(174a 내지 174n 및 BC_WR_I/F)를 통해서 갱신될 수 있다. 상기 단계(608) 또는 단계(610)에서의 트랜잭션이 완료된 때, 상기 과정(600)은 단계(604)로 되돌아 간다.
본 발명의 실시예에 따른 플래시 미디어 제어기(FMC)는 시스템 버퍼 및/또는 플래시 미디어 제어기에서 메타 데이터 저장을 처리하는 다양한 방법을 제공한다. 본 발명의 실시예에 따른 상기 플래시 미디어 제어기는 메타 데이터를 처리하기 위하여 다음의 특징을 포함할 수 있다. 메타 데이터 정보는 컨텍스트 마다 정의될 수 있고, 여기서 상기 컨텍스트는 페이지 마다 정의될 수 있다. 상기 메타 데이터의 크기가 소정의 임계 값보다 작을 때, 완성된 메타 데이터는 컨텍스트 구조 안에 저장될 수 있다. 플래시 프로그램 주기 동안에, (예를 들어, CRP(166) 및 BC_RD_I/F를 통해서) 상기 컨텍스트로부터 온 메타 데이터는 플래시 목표물에 저장될 수 있고, 읽기 주기 동안에 상기 플래시 목표물로부터 온 메타 데이터는 (예를 들어, CUP(168)를 통해서) 컨텍스트 구조에 되돌아가 저장될 수 있다. 상기 메타 데이터의 크기가 소정의 임계 값보다 클 때, 컨텍스트 구조에 상기 메타 데이터를 저장하는 대신에, 메타 데이터 지시자가 컨텍스트 내에서 정의된다. 상기 메타 데이터 지시자는 플래시 프로그램 주기 동안에 (예를 들어, 각각의 DDRIP 및 BC_RD_I/F를 통해서) 외부 시스템 메모리로부터 상기 메타 데이터를 회수하고 (예를 들어, 각각의 DWIP 및 BC_WR_I/F를 통해서) 읽기 데이터를 상기 플래시 읽기 명령어로부터 상기 컨텍스트에 의하여 특정된 메타 데이터 지시자에 의하여 지시되는 외부 시스템 메모리 내 위치 안에 저장하기 위하여 어드레스 지시자를 제공한다. 또 다른 실시예에 있어서, 상기 FMC는 메타 데이터의 일 부분이 컨텍스트에 의하여 처리되는 한편 상기 메타 데이터의 또 다른 부분이 외부 시스템 메모리에 의하여 처리되도록 구성될 수 있다.
메타 데이터의 크기는 일반적으로 플래시 트랜잭션 계층(FTL)에 의하여 정의된다. 일 실시예에 있어서, 상기 FTL은 거의 12 바이트의 메타 데이터를 사용한다. 도 10에서 최대 사용 가능한 컨텍스트(300) 내 여분의 영역은 28 바이트이다. 컨텍스트(300)의 FTL 메타 데이터 크기 파라미터 및 여분 영역 파라미터 양쪽 모두를 고려하여, 28 바이트의 소정의 임계 값이 선택될 수 있다. 예를 들어, 상기 메타 데이터의 크기가 28 바이트보다 작거나 같을 때, 완성된 메타 데이터는 플래시 미디어 제어기의 플래시 레인 제어기 내에 위치한 컨텍스트 구조에 저장될 수 있다. 플래시 프로그램 주기 동안에, 컨텍스트로부터 온 상기 메타 데이터는 플래시 목표물에 저장되고, 읽기 주기 동안에, 플래시 목표물로부터 읽어 들인 메타 데이터는 컨텍스트 구조로 되돌아가 저장된다. 상기 메타 데이터의 크기가 28 바이트보다 클 때, 컨텍스트 구조 안에 메타 데이터를 저장하는 대신에, 상기 플래시 레인 제어기는 메타 데이터가 저장되는 외부 메모리 내 위치를 지시하는 컨텍스트 내 메타 데이터 지시자를 정의한다. (예를 들어, 도 12에서 도시된 바와 같이) 페이지 크기가 호스트 크기의 여러 배인 경우, 상기 메타 데이터는 일반적으로 호스트 데이터 각각에 관하여 분포되어 있다. 예를 들어, 1K 바이트의 페이지 크기 및 1024 바이트의 호스트 크기의 경우, 플래시 프로그램 명령어 동안에, 컨텍스트로부터 온 28 바이트의 메타 데이터가 두 개의 호스트 사용자 데이터 사이에서 분배(예를 들어, 14 바이트의 메타 데이터가 각각의 사용자 데이터에 분배됨)될 수 있다.
호스트 사용자 데이터 1 (512 바이트) + 메타 데이터 1(14 바이트) + ECC +
호스트 사용자 데이터 2(512 바이트) + 메타 데이터 2(14바이트) + ECC.
메타 데이터는 일반적으로 ECC의 사용에 의하여 보호되게 된다. ECC의 사용은 일반적으로 무결성 검사 기능 및 메타 데이터 부분의 정정 기능을 제공한다.
본 발명의 다양한 신호 형태는 일반적으로 "온(on)"(예를 들어, 디지털적으로 높은 상태, 또는 1) 또는 "오프(off)"(예를 들어, 디지털적으로 낮은 상태, 또는 0)일 수 있다. 하지만, 상기 신호의 온(예를 들어, 어서트된 온) 및 오프(예를 들어, 디-어서트된 온)의 특정 대립 상태는 특정 실시예의 특정 실시예를 수행하는 기준을 만족하기 위하여 변경(예를 들어, 거꾸로 뒤집히게) 될 수 있다.
도 1 내지 도 9의 다이어그램에서 수행되는 기능은 본 발명의 사상에 따라 프로그램된 종래 다목적 프로세서, 디지털 컴퓨터, 마이크로 프로세서, 마이크로 컨트롤러, RISC(reduced instruction set computer) 프로세서, CISC(complex instruction set computer) processor) 프로세서, SIMD(single instruction multiple data), 단일 프로세서, 중앙 처리 유닛(CPU), 산술 논리 유닛(ALU), 비디오 디지털 신호 프로세서(VDSP) 및/또는 이와 유사한 컴퓨터 장치 중 하나 이상을 사용하여 수행될 수 있으며, 이는 본 발명의 기술 분야의 당업자가 용이하게 이해할 수 있다. 적절한 소프트웨어, 펌웨어, 코딩, 루틴(routine), 명령어, 연산 코드(opcode), 마이크로 코드 및/또는 프로그램 모듈은 상기 기재 내용에 기초하여 숙련된 프로그래머에 의하여 용이하게 마련될 수 있고, 이는 당업자에게 있어 용이한 것이다. 일반적으로 상기 소프트웨어는 기계적으로 작동하는 상기 프로세서들 중 하나 이상에 의하여 매체 또는 여러 미디어로부터 실행될 수 있다.
또한, 본 발명은 ASIC(application specific integrated circuits), 플랫폼 ASIC, FPGA(field programmable gate arrays), PLD(programmable logic devices), CPLD(complex programmable logic device), 시 오브 게이트(sea-of-gate), RFIC(radio frequency integrated circuits), ASSP(application specific standard products), 하나 이상의 단일 칩 집적 회로, 플립-칩(flip-chip) 모듈 및/또는 다중 칩 모듈로서 배치된 하나 이상의 칩 또는 다이의 조합을 통해서 수행되거나 종래 회로의 적절한 네트워크 연결을 통해서 수행될 수 있으며, 상기 설명한 바와 같이 본 발명을 이와 같이 수정하는 것은 당해 업계의 당업자에게 있어서 용이하다.
이와 같이, 본 발명은 명령어를 포함하는 저장 매체 또는 미디어 및/또는 전송 매체 또는 미디어인 컴퓨터 제품을 포함할 수 있고, 상기 명령어는 본 발명에 따른 하나 이상의 과정 또는 방법을 수행하도록 장치를 프로그램하는데 사용될 수 있다. 상기 장치를 통해서 컴퓨터 제품에 저장된 명령어의 실행은 주변 회로의 동작을 따라서 입력 데이터를 저장 매체 내 하나 이상의 파일에 전송하거나, 음향 및/또는 영상과 같이 물리적 물체 또는 물질을 표현하는 하나 이상의 출력 신호를 전송할 수 있다. 상기 저장 매체는, 플로피 디스크, 하드 디스크, 자기 디스크, 광학 디스크, CD-ROM, DVD와 같은 광-자기 디스크, ROM(읽기 전용 메모리), RAM(랜덤 액세스 메모리), EPROM(전기적으로 프로그램 가능한 ROM), EEPROM(전기적으로 삭제 가능한 ROM), UVPROM(자외선-삭제 가능의 ROM), 플레쉬 메모리와 같은 회로, 자기 카드, 광학 카드, 및/또는 전자 명령어를 저장하는데 적합한 모든 종류의 매체를 포함하지만, 이에 한정되는 것은 아니다.
본 발명의 구성 요소는 하나 이상의 장치, 유닛, 구성, 시스템, 기계 및/또는 장비의 부분 또는 전체로서 형성될 수 있다. 상기 장치는 서버, 워크스테이션, 저장 배열 제어기, 저장 시스템, 개인용 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 손바닥 컴퓨터(palm computer), 개인용 디지털 보조 장치, 휴대용 전자 장치, 베터리 탑제형 장치, 셋탑 박스, 인코더, 디코더, 트랜스코더, 압축기, 압축해제기, 전(pre) 처리장치, 후(post) 처리장치, 송신기, 수신기, 송수신기, 암호 회로, 휴대 전화, 디지털 카메라, 위치 및/또는 안내 시스템, 의료 장비, 헤드업 디스플레이, 무선 장치, 오디오 녹음, 저장 및/또는 재생 장치, 비디오 녹화, 저장 및/또는 재생 장치, 게임 플렛폼, 주변 장치 및/또는 멀티칩 모듈을 포함할 수 있다. 당업자는 특정 기준을 만족하는 그 밖의 장치들로 상기 발명의 구성들이 수행될 수 있다는 것을 알 수 있을 것이다.
본 발명은 첨부된 실시예에 따라서 도시되고 설명되었지만, 당업자라면 본 발명의 사상을 벗어 나지 않는 범위에서 본 발명을 다양하게 변화시키고 보다 구체적으로 만들 수 있을 것이다.

Claims (17)

  1. 플래시 미디어 제어기 내에서 플래시 메모리의 페이지에 저장된 메타 데이터를 처리하는 방법으로서,
    컨텍스트 마다 상기 메타 데이터를 정의하는 단계로서, 상기 컨텍스트는 페이지 마다 정의되는, 단계;
    상기 메타 데이터의 크기가 소정의 임계 값 보다 작거나 동일할 때, 완성된 메타 데이터를 상기 컨텍스트 구조 안에 저장하는 단계; 및
    상기 메타 데이터의 크기가 소정의 임계 값 보다 클 때, 상기 컨텍스트 안에서 메타 데이터 지시자를 정의하는 단계;를 포함하는 것을 특징으로 하는 메타 데이터 처리 방법.
  2. 제1항에 있어서,
    에러 정정 코드를 사용하여 상기 메타 데이터를 보호하는 단계를 더 포함하는 것을 특징으로 하는 메타 데이터 처리 방법.
  3. 제1항에 있어서,
    상기 메타 데이터는 관리 데이터를 포함하는 것을 특징으로 하는 메타 데이터 처리 방법.
  4. 제1항에 있어서,
    상기 소정의 임계 값은 페이지 마다 복수의 바이트로 설정되는 것을 특징으로 하는 메타 데이터 처리 방법.
  5. 제1항에 있어서,
    플래시 프로그램 주기 동안에 상기 컨텍스트 구조로부터 읽어 들인 상기 메타 데이터가 플래시 목표물에 저장되고, 읽기 주기 동안에 상기 플래시 목표물로부터 읽어 들인 상기 메타 데이터가 상기 컨텍스트 구조에 다시 저장되는 것을 특징으로 하는 메타 데이터 처리 방법.
  6. 제1항에 있어서,
    플래시 프로그램 주기 동안에 외부 시스템 메모리로부터 메타 데이터를 회수하고 플래시 읽기 명령어로부터 나온 상기 메타 데이터를 상기 컨텍스트를 통해 특정된 메타 데이터 지시자가 지시하는 상기 외부 시스템 메모리 내 위치에 저장하기 위하여, 상기 메타 데이터 지시자는 어드레스 지시자를 제공하는 것을 특징으로 하는 메타 데이터 처리 방법.
  7. 제1항에 있어서,
    플래시 프로그램 주기 동안에, 플래시 목표물에 저장되는 메타 데이터의 제1 부분은 상기 컨텍스트 구조로부터 오고 플래시 목표물에 저장되는 상기 메타 데이터의 제2 부분은 상기 컨텍스트를 통해 특정된 상기 메타 데이터 지시자가 지시하는 외부 시스템 메모리 내 위치로부터 오고,
    읽기 주기 동안에, 상기 플래시 목표물로부터 읽어 들인 메타 데이터의 상기 제1 부분은 상기 컨텍스트 구조에 다시 저장되고 상기 제2 부분은 상기 컨텍스트를 통해 특정된 상기 메타 데이터 지시자가 지시하는 외부 시스템 메모리 내 위치에 저장되는 것을 특징으로 하는 메타 데이터 처리 방법.
  8. 제1항에 있어서,
    페이지의 크기가 호스트의 크기의 배수인 경우, 상기 메타 데이터는 복수의 호스트 사용자 데이터 섹터 각각에 분배되는 것을 특징으로 하는 메타 데이터 처리 방법.
  9. 복수의 플래시 미디어 장치를 포함하는 플래시 메모리로서, 복수의 페이지로 구성되는 플래시 메모리; 및
    메타 데이터를 상기 플래시 메모리의 하나 이상의 페이지에 저장하는 플래시 미디어 제어기로서, (i) 상기 플래시 미디어 제어기는 페이지 마다 컨텍스트를 정의하고 컨텍스트 마다 메타 데이터를 정의하고, (ii) 상기 메타 데이터의 크기가 소정의 임계 값보다 작거나 같을 때, 상기 플래시 미디어 제어기는 완성된 메타 데이터를 컨텍스트 구조 안에 저장하고, (iii) 상기 메타 데이터의 크기가 소정의 임계 값보다 클 때, 상기 플래시 미디어 제어기는 상기 컨텍스트 안에서 메타 데이터 지시자를 정의하는, 플래시 미디어 제어기;를 포함하는 것을 특징으로 하는 장치.
  10. 제9항에 있어서,
    상기 플래시 미디어 제어기는 에러 정정 코드를 사용하여 상기 메타 데이터를 보호하는 것을 특징으로 하는 장치.
  11. 제9항에 있어서,
    상기 메타 데이터는 관리 데이터를 포함하는 것을 특징으로 하는 장치.
  12. 제9항에 있어서,
    메타 데이터의 크기가 소정의 임계 값보다 작거나 같은 경우,
    플래시 프로그램 주기 동안에, 상기 플래시 미디어 제어기는 컨텍스트 구조로부터 읽어 들인 상기 메타 데이터를 플래시 목표물에 저장하고;
    읽기 주기 동안에, 상기 플래시 미디어 제어기는 상기 플래시 목표물로부터 읽어 들인 상기 메타 데이터를 컨텍스트 구조에 다시 저장하는 것을 특징으로 하는 장치.
  13. 제9항에 있어서,
    상기 소정의 임계 값은 페이지 마다 복수 바이트로 설정되는 것을 특징으로 하는 장치.
  14. 제9항에 있어서,
    플래시 프로그램 주기 동안에 외부 시스템 메모리로부터 메타 데이터를 회수하고 플래시 읽기 명령어로부터 나온 상기 메타 데이터를 상기 컨텍스트를 통해 특정된 메타 데이터 지시자가 지시하는 외부 시스템 메모리 내 위치에 저장하기 위하여, 상기 메타 데이터 지시자는 상기 메타 데이터 지시자에 의하여 사용되는 어드레스 지시자를 제공하는 것을 특징으로 하는 장치.
  15. 제9항에 있어서,
    플래시 프로그램 주기 동안에, 플래시 목표물에 저장되는 메타 데이터의 제1 부분은 상기 컨텍스트 구조로부터 오고 플래시 목표물에 저장되는 상기 메타 데이터의 제2 부분은 상기 컨텍스트를 통해 특정된 상기 메타 데이터 지시자가 지시하는 외부 시스템 메모리 내 위치로부터 오고,
    읽기 주기 동안에, 상기 플래시 목표물로부터 읽어 들인 메타 데이터의 상기 제1 부분은 상기 컨텍스트 구조에 다시 저장되고 상기 제2 부분은 상기 컨텍스트를 통해 특정된 상기 메타 데이터 지시자가 지시하는 외부 시스템 메모리 내 위치에 저장되는 것을 특징으로 하는 장치.
  16. 제9항에 있어서,
    상기 플래시 메모리의 페이지 크기가 호스트 크기의 배수인 경우, 상기 플래시 미디어 제어기는 복수의 호스트 사용자 데이터 섹터 각각에 메타 데이터를 분배하는 것을 특징으로 하는 장치.
  17. 컨텍스트 마다 메타 데이터를 정의하는 수단으로서, 상기 컨텍스트는 페이지 마다 정의되는, 수단;
    상기 메타 데이터의 크기가 소정의 임계 값 보다 작거나 동일할 때, 완성된 메타 데이터를 상기 컨텍스트 구조 안에 저장하는 수단; 및
    상기 메타 데이터의 크기가 소정의 임계 값 보다 클 때, 상기 컨텍스트 안에서 메타 데이터 지시자를 정의하는 수단;를 포함하는 것을 특징으로 하는 플래시 메모리 시스템.
KR1020120076961A 2011-07-14 2012-07-13 플래시 미디어 제어기 내 메타 데이터 처리 방법 및 장치 KR20130009927A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161507659P 2011-07-14 2011-07-14
US61/507,659 2011-07-14
US13/334,599 2011-12-22
US13/334,599 US8806112B2 (en) 2011-07-14 2011-12-22 Meta data handling within a flash media controller

Publications (1)

Publication Number Publication Date
KR20130009927A true KR20130009927A (ko) 2013-01-24

Family

ID=46548248

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120076961A KR20130009927A (ko) 2011-07-14 2012-07-13 플래시 미디어 제어기 내 메타 데이터 처리 방법 및 장치

Country Status (6)

Country Link
US (1) US8806112B2 (ko)
EP (1) EP2546751A1 (ko)
JP (1) JP5960517B2 (ko)
KR (1) KR20130009927A (ko)
CN (1) CN103034562A (ko)
TW (1) TW201303587A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11928056B2 (en) 2020-08-21 2024-03-12 SK Hynix Inc. Memory controller for allocating cache lines and method of operating the same

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101678919B1 (ko) * 2011-05-02 2016-11-24 삼성전자주식회사 메모리 시스템 및 에러 정정 방법
US20130124778A1 (en) * 2011-11-10 2013-05-16 Greenliant Llc Method of storing host data and meta data in a nand memory, a memory controller and a memory system
KR101888009B1 (ko) * 2012-02-28 2018-09-07 삼성전자주식회사 저장 장치
US9921954B1 (en) * 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US8972826B2 (en) * 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9734911B2 (en) * 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
KR102050729B1 (ko) * 2013-02-12 2019-12-02 삼성전자 주식회사 메모리 시스템
JP6038292B2 (ja) 2013-04-10 2016-12-07 三菱電機株式会社 データ転送装置及びデータ転送方法
US9575884B2 (en) 2013-05-13 2017-02-21 Qualcomm Incorporated System and method for high performance and low cost flash translation layer
JPWO2015029230A1 (ja) * 2013-08-30 2017-03-02 株式会社日立製作所 記憶装置及びデータ制御方法
JP6028709B2 (ja) * 2013-10-18 2016-11-16 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
US9798493B2 (en) 2013-12-16 2017-10-24 International Business Machines Corporation Firmware bypass for medium-access commands
US9633749B2 (en) 2013-12-19 2017-04-25 Sandisk Technologies Llc System and method of managing tags associated with read voltages
TWI523025B (zh) * 2013-12-27 2016-02-21 慧榮科技股份有限公司 資料儲存裝置及其錯誤校正方法
US20150199282A1 (en) * 2014-01-16 2015-07-16 Storart Technology Co., Ltd. Scramble random seed prediction method with storage device built-in data copy back procedure
US9535785B2 (en) 2014-01-17 2017-01-03 Macronix International Co., Ltd. ECC method for flash memory
US9921909B2 (en) * 2015-07-03 2018-03-20 Qualcomm Incorporated Systems and methods for providing error code detection using non-power-of-two flash cell mapping
US20170017414A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices
US20170017567A1 (en) * 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Implementing Distributed-Linked Lists For Network Devices
US20170017420A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US20170017419A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US10209891B2 (en) * 2015-08-24 2019-02-19 Western Digital Technologies, Inc. Methods and systems for improving flash memory flushing
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
CN106845289A (zh) * 2015-12-07 2017-06-13 国民技术股份有限公司 一种安全芯片及其非易失性存储控制装置、方法
US10467092B2 (en) * 2016-03-30 2019-11-05 Qualcomm Incorporated Providing space-efficient storage for dynamic random access memory (DRAM) cache tags
US10509742B2 (en) 2016-05-16 2019-12-17 Hewlett Packard Enterprise Development Lp Logical memory buffers for a media controller
US9983930B2 (en) * 2016-07-28 2018-05-29 Qualcomm Incorporated Systems and methods for implementing error correcting code regions in a memory
KR20180047778A (ko) * 2016-11-01 2018-05-10 삼성전자주식회사 단계별 저전력 상태들을 갖는 메모리 장치
CN108255464B (zh) * 2016-12-28 2021-09-28 北京忆恒创源科技股份有限公司 数据加扰方法、解扰方法及其装置
TWI721565B (zh) * 2017-10-20 2021-03-11 慧榮科技股份有限公司 儲存裝置以及其介面晶片
TWI658363B (zh) * 2017-10-20 2019-05-01 慧榮科技股份有限公司 儲存裝置以及其介面晶片
TWI680374B (zh) * 2017-10-20 2019-12-21 慧榮科技股份有限公司 儲存裝置以及其介面晶片
TWI639157B (zh) 2017-10-30 2018-10-21 新唐科技股份有限公司 半導體裝置及其快閃記憶體的存取週期的自動調節方法
CN111435331B (zh) * 2019-01-14 2022-08-26 杭州宏杉科技股份有限公司 存储卷写数据方法、装置、电子设备及机器可读存储介质
TWI719654B (zh) * 2019-06-21 2021-02-21 慧榮科技股份有限公司 閃存實體資源集合管理裝置及方法以及電腦程式產品
US11379752B1 (en) * 2021-05-27 2022-07-05 Red Hat, Inc. Qubit reservation service
US11714692B2 (en) 2021-05-27 2023-08-01 Red Hat, Inc. Classical management of qubit requests

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4030072A (en) 1974-12-18 1977-06-14 Xerox Corporation Computer system operation and control
US4766533A (en) 1984-03-09 1988-08-23 The United States Of America As Represented By The United States National Aeronautics And Space Administration Nanosequencer digital logic controller
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5430841A (en) 1992-10-29 1995-07-04 International Business Machines Corporation Context management in a graphics system
FR2708763B1 (fr) 1993-06-30 2002-04-05 Intel Corp Dispositif de mémoire flash, procédé et circuit de traitement d'un ordre d'utilisateur dans un dispositif de mémoire flash et système d'ordinateur comprenant un dispositif de mémoire flash.
US5802553A (en) 1995-12-19 1998-09-01 Intel Corporation File system configured to support variable density storage and data compression within a nonvolatile memory
US6157963A (en) 1998-03-24 2000-12-05 Lsi Logic Corp. System controller with plurality of memory queues for prioritized scheduling of I/O requests from priority assigned clients
US8452912B2 (en) * 2007-10-11 2013-05-28 Super Talent Electronics, Inc. Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read
US7149846B2 (en) 2002-04-17 2006-12-12 Lsi Logic Corporation RAID protected external secondary memory
US7277978B2 (en) 2003-09-16 2007-10-02 Micron Technology, Inc. Runtime flash device detection and configuration for flash data management software
US7596639B2 (en) * 2004-09-01 2009-09-29 Lsi Corporation Skip mask table automated context generation
US7817767B2 (en) 2004-12-23 2010-10-19 Rambus Inc. Processor-controlled clock-data recovery
KR100772376B1 (ko) * 2005-06-23 2007-11-01 삼성전자주식회사 화상형성장치 및 방법
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US20070094445A1 (en) 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks
GB0606012D0 (en) 2006-03-25 2006-05-03 Zenopia Ltd Data storage
US8751467B2 (en) * 2007-01-18 2014-06-10 Dot Hill Systems Corporation Method and apparatus for quickly accessing backing store metadata
KR100823171B1 (ko) 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
CN100458751C (zh) 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
US8572310B2 (en) * 2007-11-06 2013-10-29 Samsung Electronics Co., Ltd. Invalidating storage area of non-volatile storage medium based on metadata
US7870351B2 (en) 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US9152496B2 (en) 2007-12-21 2015-10-06 Cypress Semiconductor Corporation High performance flash channel interface
US8775717B2 (en) 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
EP2079203A1 (en) * 2008-01-08 2009-07-15 Axis AB Network offloading with reduced packet loss.
US7873619B1 (en) 2008-03-31 2011-01-18 Emc Corporation Managing metadata
KR101486987B1 (ko) 2008-05-21 2015-01-30 삼성전자주식회사 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법
CN101676882B (zh) 2008-09-16 2013-01-16 美光科技公司 存储器装置的内嵌映射信息
US8732388B2 (en) * 2008-09-16 2014-05-20 Micron Technology, Inc. Embedded mapping information for memory devices
US20100083247A1 (en) 2008-09-26 2010-04-01 Netapp, Inc. System And Method Of Providing Multiple Virtual Machines With Shared Access To Non-Volatile Solid-State Memory Using RDMA
WO2010038736A1 (ja) * 2008-10-01 2010-04-08 株式会社日立製作所 半導体装置
KR101543431B1 (ko) * 2008-11-20 2015-08-11 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 액세스 방법
US20110289112A1 (en) * 2009-01-26 2011-11-24 Junpei Kamimura Database system, database management method, database structure, and storage medium
US8832023B2 (en) * 2009-01-30 2014-09-09 Apple Inc. System for managing distributed assets and metadata
US8566507B2 (en) 2009-04-08 2013-10-22 Google Inc. Data storage device capable of recognizing and controlling multiple types of memory chips
US9063561B2 (en) 2009-05-06 2015-06-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct memory access for loopback transfers in a media controller architecture
US8706727B2 (en) * 2009-06-19 2014-04-22 Sybase, Inc. Data compression for reducing storage requirements in a database system
US20110041039A1 (en) 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
WO2011070526A1 (en) 2009-12-11 2011-06-16 International Business Machines Corporation Flash memory controller
US8611678B2 (en) * 2010-03-25 2013-12-17 Apple Inc. Grouping digital media items based on shared features
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11928056B2 (en) 2020-08-21 2024-03-12 SK Hynix Inc. Memory controller for allocating cache lines and method of operating the same

Also Published As

Publication number Publication date
US20130019051A1 (en) 2013-01-17
TW201303587A (zh) 2013-01-16
CN103034562A (zh) 2013-04-10
US8806112B2 (en) 2014-08-12
JP2013025793A (ja) 2013-02-04
EP2546751A1 (en) 2013-01-16
JP5960517B2 (ja) 2016-08-02

Similar Documents

Publication Publication Date Title
KR20130009927A (ko) 플래시 미디어 제어기 내 메타 데이터 처리 방법 및 장치
KR20130056811A (ko) 플래시 장치에 사용되는 플래시 제어기의 하드웨어 구조
US8645618B2 (en) Flexible flash commands
US10025735B2 (en) Decoupled locking DMA architecture
US8977833B2 (en) Memory system
US20170286311A1 (en) Repetitive address indirection in a memory
US9170941B2 (en) Data hardening in a storage system
US11263149B2 (en) Cache management of logical-physical translation metadata
US20140297929A1 (en) Non-volatile memory interface
CN108153482B (zh) Io命令处理方法与介质接口控制器
US10754785B2 (en) Checkpointing for DRAM-less SSD
US10048867B2 (en) Method to shorten hash chains in lempel-ziv compression of data with repetitive symbols
KR20130009928A (ko) 플래시 인터페이스의 효율적인 활용
WO2012174043A1 (en) Methods and apparatus for data access by a reprogrammable circuit module
CN108877862B (zh) 页条带的数据组织以及向页条带写入数据的方法与装置
WO2023033955A1 (en) Dynamic allocation of cache memory as ram

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid