KR20130009926A - 유연한 플래시 명령어 - Google Patents

유연한 플래시 명령어 Download PDF

Info

Publication number
KR20130009926A
KR20130009926A KR1020120076960A KR20120076960A KR20130009926A KR 20130009926 A KR20130009926 A KR 20130009926A KR 1020120076960 A KR1020120076960 A KR 1020120076960A KR 20120076960 A KR20120076960 A KR 20120076960A KR 20130009926 A KR20130009926 A KR 20130009926A
Authority
KR
South Korea
Prior art keywords
flash
context
soft
block
data
Prior art date
Application number
KR1020120076960A
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 KR20130009926A publication Critical patent/KR20130009926A/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
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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

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)
  • Stored Programmes (AREA)
  • Microcomputers (AREA)

Abstract

본 발명은 플래시 미디어 시스템을 제어하는 방법에 관한 것이다. 상기 방법은 프로세서 제어 모드를 가지는 플래시 레인 제어기를 제공하는 단계 및 소프트 컨텍스트(soft context)를 생성하고 제공하는 단계를 포함한다. 상기 소프트 컨텍스트는 일반적으로 상기 플래시 레인 제어기를 프로세서 제어 모드로 만든다. 상기 프로세서 제어 모드에서, 상기 플래시 레인 제어기는 전체 소프트 컨텍스트를 저장하고, 아직 처리되지 않은 모든 컨텍스트의 실행을 종료하고, 일반 하드웨어 자동 제어를 중지시킨 후 상기 소프트 컨텍스트를 실행한다.

Description

유연한 플래시 명령어{FLEXIBLE FLASH COMMANDS}
본 출원은 2011년 7월 14일 출원된 미국 특허 출원 61/507,665를 기초로 한 우선권을 수반하고 있으며, 상기 우선권 기초 출원은 본 출원에 모두 포함되어 있다.
본 발명은 일반적으로 플래시 매체 시스템에 관한 것으로서, 보다 구체적으로 유연한 플래시 명령어를 수행하는 방법 및/또는 장치에 관한 것이다.
플래시 메모리 인터페이스 명령어는 정보를 플래시 메모리 장치에 읽고 쓰는 작업을 제어하는데 사용된다. 플래시 메모리를 잠금, 잠금 해제, 프로그래밍 또는 삭제하는데 사용되는 특정 명령어들은 각각의 제조사 마다 서로 상이하다. 제조되는 모든 장치에 각각에 고유한 드라이버 소프트웨어가 요구되지 않도록 하기 위하여, 종래 플래시 미디어 컨트롤러는, 장치 스스로가 장치 자신과 장치의 핵심 작동 파라미터를 식별하도록 하는 공통 플래시 메모리 인터페이스(CFI, Common Flash Memory Interface) 세트를 지원한다. 상기 CFI 명령어는 하드웨어의 자동화 및 펌웨어 설계를 단순화키는 한편, 현존하는 플래시 장치들과의 정포 처리의 상호 운용을 가능하게 한다. 하지만, 상기 CFI 명령어는 특정 플래시 장치가 특정 성능을 발휘하게 만드는 명령어 세트를 지원할 뿐이다.
따라서, 유연한 플래시 명령어를 수행하는 방법 및/또는 장치가 요구되고 있다.
본 발명은 플래시 미디어 시스템을 제어하는 방법에 관한 것이다. 상기 방법은 프로세서 제어 모드를 가지는 플래시 레인 제어기를 제공하는 단계 및 소프트 컨텍스트(soft context)를 생성하고 제공하는 단계를 포함한다. 상기 소프트 컨텍스트는 일반적으로 상기 플래시 레인 제어기를 프로세서 제어 모드로 만든다. 상기 프로세서 제어 모드에서, 상기 플래시 레인 제어기는 전체 소프트 컨텍스트를 저장하고, 아직 처리되지 않은 모든 컨텍스트의 실행을 종료하고, 일반 하드웨어 자동 제어를 중지시키고, 그 후 상기 소프트 컨텍스트를 실행한다.
본 발명의 목적, 특징 및 효과는 유연한 플래시 명령어를 수행하는 방법 및/또는 장치를 제공하는 것으로서, 본 발명은 (i) 본래 하드웨어에서 지원되지 않는 명령어들이 플래시 유닛에 적용될 수 있게 하고, (ii) 플래시 레인 제어기에서만 식별할 수 있는 프로세서 제어 모드를 제공하고, (iii) 플래시 상에서 작동될 수 있는 거의 모든 원자 조작(atomic operation)을 수행하도록 하드웨어가 펌웨어를 통해서 관리되도록 하고, (iv) 플래시 미디어의 제어와 데이터의 이동을 원활하게 하기 위하여, 펌웨어가 플래시 미디어 제어기에 내장된 하드웨어 자원의 직접 제어를 할 수 있게 하고, 및/또는 (v) 플래시 메모리 제어기를 제어하는 소프트 컨텍스트를 생성하고 제공하는 것이다.
본 발명의 목적, 특징 및 효과는 이하 상세한 설명 및 첨부된 도면을 참조하여 설명될 것이다.
도 1은 단일 칩 시스템(SOC) 컨텍스트에서 수행되는 플래시 미디어 제어기를 도시한 블록 다이어그램이다.
도 2는 본 발명의 실시예를 따르는 예시적 플래시 미디어 제어기(FMC) 아키텍처를 도시한 블록 다이어그램이다.
도 3은 본 발명의 실시예를 따르는 예시적 플래시 레인 제어기 아키텍처를 도시한 블록 다이어그램이다.
도 4는 도 3의 컨텍스트 관리 모듈의 예시적 서브 모듈을 도시한 다이어그램이다.
도 5는 도 3의 다이 관리 모듈의 예시적 서브 모듈을 도시한 다이어그램이다.
도 6은 도 3의 플래시 동작 관리자 모듈의 예시적 서브 모듈을 도시한 다이어그램이다.
도 7은 도 3의 데이터 흐름 관리자 모듈의 예시적 서브 모듈을 도시한 다이어그램이다.
도 8은 도 3의 컨텍스트 관리자 모듈의 예시적 수행 상태를 도시한 다이어그램이다.
도 9는 도 3의 플래시 동작 관리자의 예시적 수행 상태를 도시한 다이어그램이다.
도 10은 도 9의 나노 순서기의 예시적 나노-지시 사항 세트를 도시한 다이어그램니다.
도 11은 본 발명에 따른 예시적 소프트 컨텍스트를 도시한 다이어그램이다.
일 실시예에 있어서, 본 발명에 따른 시스템은 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)에 전송하기 위하여 상기 플래시 동작 형식기(FOF)와 통신을 시작한다.
플래시 미디어 제어기(FMC)의 하드웨어 자동 제어 기술은 최상의 성능을 발휘할 때에만 요구되는 이들 명령어들에만 최적화되어 있다. 이러한 최적화의 목적은 상기 하드웨어 자동 제어를 단순화시키고 펌웨어 설계를 단순화시키는 한편 현존 플래시 장치들에 정보 처리의 상호 운용 기능을 제공하기 위한 것이다. 하지만, 하드웨어는 최상의 성능을 발휘할 때에만 요구되는 이들 명령어의 처리에만 제한되지 않는다. 이와는 반대로, 하드웨어는 플래시에서 동작될 수 있는 거의 모든 원자 조작을 수행하기 위하여 펌웨어를 통해 관리되고, 펌웨어는 상기 플래시의 제어 및 데이터의 움직임을 용이하게 하기 위하여 FMC 안에 내장된 하드웨어 자원을 직접적으로 제어한다. 상기 펌웨어가 FMC 안에 내장된 하드웨어 자원을 직접적으로 제어하는 모드를 일반적으로 프로세서 제어 모드(PCM)라 한다.
상기 프로세서 제어 모드(PCM)는 "소프트" 명령어(예를 들어, 하드웨어에 의하여 본래 지원되지 않는 명령어)를 플래시 유닛에 적용시키는데 사용될 수 있다. 일반적으로, 상기 프로세서 제어 모드는 플래시 레인 제어기(FLC)에서만 볼 수 있다. 상기 FLC의 외부의 논리 회로는 일반적으로 프로세서 제어 모드를 전혀 고려하지 않으며 상기 프로세서 제어 모드에 들어갔는지 관계없이 동일한 방법으로 상기 FLC를 지원한다.
"소프트" 명령어가 적용되는 상기 방식은 "소프트" 컨텍스트의 생성과 제출과 관련된다. 여기서 사용되는 소프트 컨텍스트는 일반적으로 "플래시 동작" 필드가 상기 프로세서 제어 모드와 연관된 값(예를 들어, 프로세서 제어 모드(PROCESSOR_CONTROL_MODE))으로 설정된 컨텍스트를 의미한다. 상기 플래시 동작 필드를 상기 PROCESSOR_CONTROL_MODE 값으로 설정함으로써, 일반적으로 (보통의 동작과 같이 상기 "플래시 컨텍스트" 서브셋 만을 저장하는 대신에) 상기 FLC가 전체 컨텍스트를 저장하려 하는 모드로 상기 FLC를 변화시키고 상기 FLC의 컨텍스트 표 내 실행 중인 아직 처리되지 않은 모든 컨텍스트를 종료시킨다. 그 후 상기 FLC는 상기 FLC의 보통 하드웨어 자동 제어를 중지시키고, 상기 컨텍스트의 리마인더 내 더블 워드로부터 지시를 내보내며, 여기서 각각의 더블 워드는 예를 들어 상기 나노 순서기(246)에 의하여 수행되는 동작을 의미한다.
PCM 명령어의 기본 흐름은 다음과 같다.
1. 우선 상기 FMC는 보통 동작 모드에 있다. 상기 보통 동작 모드에서, 각각의 FLC는 다이 각각에 대기되는 다중 컨텍스트를 가질 수 있다. 각각의 다이에 대한 이들 컨텍스트 중 첫 번째 1-2 컨텍스트는 실행을 위하여 상기 FLC에 프리페치된다.
2. 상기 펌웨어는 특정 플래시 레인 제어기에 의하여 지원되는 다이 중 하나에 대하여 연결 목록의 가장 마지막 위치에 PCM 컨텍스트를 삽입한다. 상기 펌웨어는 다이의 상기 연결 목록 또는 상기 또는 임의의 FLC에서 지원되는 그 밖의 다이들의 각각의 목록 내 상기 PCM 컨텍스트 뒤에 그 밖의 컨텍스트를 계속 삽입한다. PCM 컨텍스트는 PROCESSOR_CONTROL_MODE로 설정된 플래시 동작 코드를 가지고, 상기 컨텍스트의 플래시 행 어드레스 필드는 16 비트의 컨텍스트 지시자를 상기 제1 "소프트" 컨텍스트에 제공한다. 일 실시예에 있어서, PCM 컨텍스트의 그 밖의 모든 더블 워드는 남은 필드로서 여겨진다.
3. 상기 PCM 컨텍스트는 결국 상기 FLC 안으로 페치된다. 이 시점에서, 각각의 FLC는 PCM 모드로 들어가게 되고 새로운 컨텍스트를 상기 FLC 안으로 패칭하는 것을 멈춘다. 모든 그 밖의 FLC들은 영향을 받지 않고 정상적으로 계속해서 각각의 다이 목록을 페치하고 실행한다.
4. 상기 PCM 컨텍스트를 가지는 FLC는 상기 FLC에 의하여 지원되는 다이에 대하여 이전에 페치된 모든 컨텍스트가 실행을 완료하여 PCM 컨텍스트만이 각각의 FLC에 남아있을 때까지 대기한다.
5. PCM 컨텍스트의 상기 플래시 행 어드레스 필드는 첫 번째 "소프트" 컨텍스트를 상기 FLC 안에 페치하기 위하여 컨텍스트 지시자로서 사용된다. "소프트" 컨텍스트는 보통의 컨텍스트와 동일한 크기를 가지지만, 15 개의 더블 워드 각각은 다운 워드-0에서 시작하여 다운 워드-15까지의 순서대로 상기 나노 순서기(246)에서 실행되는 "소프트" 명령어를 포함하고 있다.
6. "소프트" 명령어들 중 일부는 버퍼 내에 위치한 그 밖의 "PCM DMA" 컨텍스트에 참조 표시를 한다. 상기 "PCM DMA" 컨텍스트는, 데이터 전송이 상기 LFC와 시스템 버퍼 사이에서 발생하도록 만드는 "소프트" 명령어에 의하여 상기 FMC 안으로 로딩된다. 그 밖의 "소프트" 명령어는 명령어 및 어드레스 주기 및/또는 플래시 레인에서 전송/수신된 바이트를 정의한다. 15 개의 "소프트" 명령어 중 마지막 명령어는 만약 필요하다면 15 개의 추가적인 "소프트" 명령어를 가지는 새로운 "소프트" 컨텍스트를 로드한다. 일 실시예에 있어서, 상기 "소프트" 명령어는 사용 가능한 칩을 특정하며, 이는 어떤 연결 목록이 초기 PCM 컨텍스트에 사용되었는지는 중요하지 않다.
7. 상기 "소프트" 플래시 동작이 완료된 때, 최종 "소프트" 명령어는 상기 PCM 모드가 완료되었다는 것을 나타낸다. 이 때, 상기 초기 PCM 컨텍스트는 완료되게 되고 펌웨어에 통지를 하기 위한 소모된 컨텍스트 관리자로 전송된다. 상기 FLC는 그 후 보통 모드로 되돌아오고 또 다시 상기 FLC에 의하여 지원되는 연결 목록으로부터 컨텍스트의 페치를 시작한다.
도 10을 보면, 나노 지시 사항 세트를 도시한 표(300)의 다이어그램이 나타나 있다. 일 실시예에 있어서, 상기 나노 순서기(246)는, 플래시 장치에 액세스하고 데이터가 데이터 경로로 들어가거나 데이터 경로에서 나가는데 사용되는 FLC 하드웨어 자원의 구동에 특히 맞춰진 동작들을 지원하는 단순한 순서기를 포함할 수 있다. 상기 나노-순서기(246)는 "소프트" 컨텍스트를 받고, 상기 제어기 펌웨어가 모든 임의의 플래시 명령어가 모든 컨텍스트 연결 목록의 일부분으로서 구동되도록 셋업한다. 상기 펌웨어는 명령어를 완성시키는데 필요한 연속 주기를 가지는 소프트 컨텍스트를 구축함으로써 명령어의 낮은 레벨의 타이밍 및 특성을 담당한다. (도 11에서 하단에 도시된) 소프트 컨텍스트는 컨텍스트의 연결 목록에 추가될 수 있고 보통 컨텍스트와 유사한 방법으로 구동되고 처분될 수 있다. 상기 소프트 컨텍스트는 이후 추가되는 모든 플래시 명령어를 수용하는데 사용될 수도 있다. 상기 나노-순서기(246)는 일반적으로 상기 컨텍스트 캐시로부터 나노-지시 사항을 읽어 들인다. 상기 프로세서 제어 모드에서, 상기 컨텍스트 캐시는 FLC 컨텍스트 보다는 일반적으로 32 비트 나노-지시 사항을 포함한다. 도 10에서 도시된 예시적인 지시 사항은 다음과 같다.
가장 흔한 프로세서 제어 모드 동작은 플래시 버스 동작(FLASH_BUS_OPERATION)이다. 상기 프로세서 제어 모드(FLASH_BUS_OPERATION) 지시는 상기 소프트 컨텍스트 더블 워드의 처음 두 비트가 1(예를 들어, 11)일 때 나타난다. 일반적으로 상기 플래시 버스 동작 지시는 적용되는 임의의 8 비트 플래시 버스 지시를 고려한다. 상기 플래시 버스 동작에서, 하위 30 비트(예를 들어, 비트 29:0)는플래서 버스 제어기(FBC) 블록(212)으로의 동작을 의미한다. 상기 하위 30 비트는 예를 들어 플래시 장치 또는 칩 인에이블(P를 들어, 비트 29:26), 동작 종류 필드(예를 들어, 비트 25:23), 동작 옵션 필드(예를 들어, 22:20), 동작 명령어 필드(예를 들어, 비트 19:12), 동작 길이 필드(예를 들어, 비트 11:9) 및 동작 데이터 길이 필드(예를 들어, 비트 8:0)를 포함하는 복수의 플래시 버스 동작 필드를 인코딩한다. 상기 칩 인에이블 필드는 일 실시예에 있어서, 플래시 동작이 적용되는 8개의 칩 인에이블 신호들 중 하나에서 16 개의 플래시 장치 중 하나를 선택할 수 있다. 상기 동작 종류 필드는 플래시 버스 제어기로 넘겨질 수 있다. 상기 동작 종류 필드는 일반적으로 동작의 종류를 나타낸다. 예를 들어, 상기 동작 종류 필드는 상기 동작이 명령어(예를 들어, 0으로 나타남), 주소(예를 들어, 1의 값으로 나타남), 읽기(예를 들어, 2로 나타남), 또는 쓰기(예를 들어, 3으로 나타남) 중 어느 것인지를 결정한다. 상기 동작 종류 필드의 남아 있는 값은 일반적으로 예비로 남겨진다.
상기 동작 옵션 필드는 일반적으로 결합되는 다양한 동작들을 결정한다. 예를 들어, 상기 동작 옵션 필드는 명령어 주기가 어드레스 주기를 포함하게 한다. 상기 동작 옵션 필드의 해석은 OPTYPE 필드 위쪽 필드에 따라서 달라진다. 명령어 동작 및 어드레스 동작의 경우, 비트 정의는 다음과 같다.
비트 22: 세트 시, 그 밖의 모든 주기 이후에 명령어 주기를 추가한다. 상기 동작 명령어 필드(예를 들어, OPCOMMAND)를 명령어를 위하여 사용한다. 어드레스 동작에만 사용될 수 있다;
비트 21: 세트 시, 처음 명령어 주기 이후에 어드레스 주기를 추가한다. 명령어 동작에서만 사용될 수 있다;
비트 20: 어드레스 중요선. 세트 시, 전송하기에 가장 덜 중요한 어드레스 필드의 바이트를 선택한다.
읽기 및 쓰기 동작의 경우, 상기 비트는 다음과 같이 정의된다.
비트 22: 세트 시, 즉시 데이터(immediate data)를 사용한다. 읽기 상태에서만 사용된다. 상태 데이터는 논리 회로에서 "즉시" 사용되고 데이터 흐름 관리자로 보내지지 않는다.
비트 21: 세트 시, 명령어 주기를 데이터 주기 뒤에 추가시킨다. 상기 동작 명령어 필드는 명령어에 사용된다.
비트 20: 바이트 전송을 반복한다. 세트 시, 동기식 플래시를 사용하고 있을 때, 데이터는 상향 클럭 에지와 하향 클럭 에지 양쪽 모두에서 반복된다.
상기 동작 명령어 필드는 일반적으로 명령어-종류별 동작을 위한 명령어 종류를 제공한다. 상기 동작 어드레스 길이 필드(예를 들어, 어드레스 길이(ADDRLEN))는 일반적으로 전송되는 어드레스 길이(예를 들어, 어드레스 바이트의 수)를 명령어에 제공한다. 상기 동작 데이터 길이 필드(예를 들어, 데이터 길이(DATA LANGTH))는 전송/읽히는 데이터 길이(예를 들어, 데이터 바이트의 수)를 명령어에 제공한다. 상기 동작 데이터 길이 필드는 일반적으로 동작에 대하여 길이가 512 바이트 미만이다. 길이가 512 바이트를 넘는 동작의 경우, 상기 필드는 일반적으로 모두 0으로 설정되고 PCM 데이터 길이 레지스터가 보통은 꽉 찬 페이지인 데이터 길이를 결정하기 위하여 사용된다. 일반적으로, 트랜잭션에 사용되는 40 비트 어드레스를 포함하고 본 동작을 사용하여 설정되지 않지만 SET_FLASH_ADDRESS 동작 코드 또는 SET DATA TRANSFER LENGTH 동작 코드를 사용하여 설정될 수 있는 FBC 내 동작 레지스터가 있을 수 있다.
일 실시예에 있어서, 상술한 FLASH_BUS_OPERATION 동작을 제외하고 상기 나노 순서기 동작 코드는 8비트의 길이로 수행될 수 있다. 상기 나노 순서기 동작 코드는 각각의 "소프트" 명령어의 비트 31:24에 위치할 수 있다. 상기 플래시 버스 제어기의 플래시 버스 레지스터에 특정 동작(예를 들어, 상기 플래시 버스 동작 지시)을 수행하기 위하여, 상기 나노 순서기 지시 사항은 복수의 특정 클럭 주기 동안 기다리는 (예를 들어, 주기를 기다리는) 단계, R/B 필드에서 정의되는 특정 상태로 이동하도록 준비/사용 라인을 기다리는 단계(예를 들어, R/b를 기다리는) 단계, 상태 레지스터를 폴링하면서 특정 상태를 기다리는 (예를 들어, 상태를 기다리는) 단계, 특정 상태에 도달하는 데이터 흐름 관리자 버퍼를 기다리는 (예를 들어, 버퍼 상태를 기다리는) 단계, 연속하는 상태 폴링 시도 사이로 복수의 클럭 주기를 설정하는 (예를 들어, 폴링 주기를 설정하는) 단계, 데이터 전송에 대한 복수의 기본 바이트를 설정하는 (예를 들어, 데이터 전송 길이를 설정하는) 단계, 플래시 트랜잭션에 있어서 40비트의 플래시 어드레스 중 가장 중요한 3 개의 비트를 설정하는 (예를 들어, 플래시 행 어드레스를 설정하는) 단계, 상기 플래시 트랜잭션에서 40 비트의 플래시 어드레스 중 가장 덜 중요한 2 개의 바이트를 설정하는 (예를 들어, 플래시 열 어드레스를 설정하는) 단계, 상태을 대기하는 동작에 의하여 사용되는 상태 폴링 명령어의 형식을 설정하는 (상태 명령어 형식을 설정하는) 단계, 가장 최근에 획득한 상태 레지스터를 읽어서 얻은 내용을 사용하여 동작의 성공(pass)/실패(fail) 상태를 얻는 (예를 들어, 성공/실패 상태를 획득하는) 단계, 데이터 흐름 관리자 내 두 개의 로컬 버퍼 중 하나를 사용하여 프로그램 트랜잭션을 위한 데이터 프리페치 동작을 시작하는 (예를 들어, 데이터를 프리페치 하는) 단계, 상기 로컬 데이터 버퍼의 설정을, 다음 읽기 전송이 관리되어야만 하고 버퍼 전송을 사용하여 DMA 컨텍스트 지시자와 관련되어 있도록 설정하는 (예를 들어, 읽기 데이터 버퍼를 설정하는) 단계, 주어진 동작에 대하여 DMA 컨텍스트 지시자를 처분하는 (컨텍스트 지시자를 처분하는) 단계, 펌웨어에 의하여 고유하게 식별될 수 있도록, 프로세서로의 인터럽트를 어서트하고 인터럽트 레지스터 내 변수(argument)를 위치시키는 (예를 들어, 인터럽트를 어서트하는) 단계, 프로세서 제어 모드에서 다음 소프트 컨텍스트 지사자를 페치하는 (예를 들어, 다음 소프트 컨텍스트를 페치하는) 단계, 및 상기 프로세서 제어 모드로부터 빠져나오는 (예를 들어, 프로세서 제어 모드를 완료하는) 단계를 포함할 수 있다.
버퍼 상태 지시를 대기함에 있어서, 마스크(mask) 필드는 완료 비트(비트 2) 용 마스크인 비트 4와 대기 비트(비트 1) 용 마스크인 비트 3을 비교하기 위하여 설정된다. 버퍼 상태의 경우, 완료란 전체 전송이 완료되었음(예를 들어, 데이터가 DMA 관리자로부터 회수되고 플래시 장치로 전송되거나, 데이터가 플래시 장치로부터 읽어들여지고, 상기 DMA 관리자가 데이터를 데이터 흐름 관리자 밖으로 이동시키는 것)을 의미한다. 대기란 데이터가 데이터 흐름 관리자 내에 있다는 것(예를 들어, 데이터가 DMA 관리자로부터 회수되고 플래시 장치로 전송될 준비가 완료되고 DMA 관리자 밖으로 이동될 준비가 완료되었다는 것)을 의미한다. Bn 필드는 일반적으로 데이터 흐름 관리자 내 버퍼가 사용되고 있다는 것을 의미한다. 상태 명령어 형식 지시를 설정함에 있어서, 비프맵(bitmap) 필드는 어떤 어드레스 바이트가 읽기 상태 명령어로 전달되었는지를 결정하는데 사용되고, 명령어 바이트(Command Byte) 필드는 일반적으로 어떤 읽기 상태 명령어가 있는지를 정의한다. 상기 성공/실패 상태 지시를 획득하는 것은 일반적으로 "필드"를 획득하기 위하여 비교값 및 마스크 필드를 사용하고, 그 후 초기 설정으로, 컨텍스트 관리자에 되돌려 주는 단일 비트 상태를 만들기 위하여 모든 비트를 "AND" 연산한다. 만약 "OR" 비트가 설정되었다면, 상기 나노 순서기는 결과를 얻기 위하여 상기 필드에 AND 연산을 하지 않고 OR 연산을 한다. 만약 NE 비트가 설정되었다면, 상기 나노 순서기는 상기 컨텍스트 관리자로 전송되는 결과 비트를 거꾸로 한다.
상기 데이터 프리페치 지시에 있어서, 비트 WI가 클리어 된 때, 데이터 흐름 관리자는 8비트 데이터를 사용한다. 상기 비트 WI가 설정된 때, 상기 데이터 흐름 관리자는 전송 폭을 결정하기 위하여 플래시 버스 폭 레지스터 비트의 값을 사용한다. 상기 비트 BN는 일반적으로 데이터 흐름 관리자 내 두 개의 컷-스루 버퍼 중 어느 것이 사용되는지를 결정한다. 상기 컨텍스트 지시자 필드는 데이터 흐름 관리자에 전송되는 컨텍스트 지시자를 포함한다. 컨텍스트 지시자의 처분 지시에 있어서, 만약 비트 W가 설정된다면 상기 순서는 컨텍스트 관리자가 컨텍스트의 처분을 보고할 때까지 멈춤(또는 대기)한다. 만약 상기 비트 W가 설정되지 않는다면, 상기 순서는 계속된다. 다음 소프트 컨텍스트 지시의 페치가 실행된 때, 상기 페치 동작은 컨텍스트 관리자에서 이루어진다. 상기 컨텍스트 관리자는, 일반적으로 상기 컨텍스트 표가 새로운 순거가 페치되고 컨텍스트 캐시 내에 위치할 때까지 유효하지 않음을 알려준다.
일반적으로, 프로세서 제어 모드 동작은 적어도 하드웨어의 관점에서 볼 때 플래시 레인 제어기(FLC)에 제한적이다. FLC 예시화의 바깥에 위치한 상기 플래시 미디어 제어기(FMC) 논리 회로는 일반적으로 어떻게 플래시 레인 제어기 내에서 제어가 일어나고 있는지 알지 못한다. 그래서, 상기 FMC의 DMA 자원은 계속해서 필수 서비스에 제공될 수 있고, 상기 DMA 자원은 여전히 FLC 내 소프트 컨텍스트에 의하여 발행되는 데이터 전송과 관련된 컨텍스트의 종래 "하드웨어 자동 제어" 형식을 생성하기 위하여 펌웨어를 이용한다. 상기 연관 관계는 PREFETCH_DATA 및 SET_READ_BUFFER 동작을 사용하여 이루어질 수 있고, 이 두 동작은 컨텍스트 지시자를 상기 데이터 흐름 관리자 안으로 도딩시킨다. 상기 데이터 흐름 관리자는 그 후 하드웨어 자동 제어 모드에서와 같이, 데이터 DMA 관리자(DDM)로 DMA가 요청할 때 컨텍스트 지시자를 사용한다. 상기 DDM은 컨텍스트를 페치하고, 상기 컨텍스트는 천크 기술자 위치(chunk descriptor location)에서의 지시 사항, 데이터 버퍼 어드레스, 생략 마스크 및 그 밖의 DMA의 실행에 사용되는 구성 정보를 제공한다.
도 11을 보면, 어떻게 단순한 플래시 프로그램 명령어가 본 발명에 따른 프로세서 제어 모드 및 소프트 컨텍스트를 사용하여 실행되는지를 도시한 소프트 컨텍스트(400)의 다이어그램이 나타나 있다. 단계에 지정된 각각의 번호는 일반적으로 소프트 컨텍스트(400) 내 더블 워드에 대응한다.
0. 데이터 프리페치(PREFETCH_DATA) 동작은 0으로 설정된 로컬 데이터 버퍼 번호 및 "보통" DMA 컨텍스트의 위치로 설정된 컨텍스트 지시자를 사용하여 적용된다. 더블 워드 0의 상기 지시 사항은 일반적으로 데이터 흐름 관리자가 데이터 DMA 관리자로의 요청을 어서트하도록 만들고, 이는 컨텍스트 지시자를 사용하여 상기 DMA 컨텍스트를 페치하고 데이터를 상기 데이터 흐름 관리자 내 로컬 데이터 버퍼로 이동시킨다.
1. 플래시 행 어드레스의 설정(SET_FLASH_ROW_ADDRESS) 동작은 변수에 지정된 행 어드레스를 사용하여 적용된다. 이는 프로그램 동작에 사용되는 FBC내 내부 행 어드레스 레지스터(예를 들어, op_addr)를 설정한다. 일반적으로, 플래시 열 어드레스의 설정(SET_FLASH_COLUMN_ADDRESS) 동작은 반드시 적용될 필요는 없으며, 상기 레지스터의 이전 값을 가지고 있는 것으로 달성될 수 있다. (일반적으로 패이지를 읽고 쓰는 경우 상기 플래시 열 어드레스는 모두 0이기 때문에, 상기 플래시 열 어드레스는 본 실시예에서 모두 0으로 가정하였다).
2. 데이터 전송 길이의 설정(SET_DATA_TRANSFER_LENGTH) 동작은 4320의 변수를 사용하여 적용되고, 상기 변수는 전송 길이를 전체 페이지에 설정한다. 일반적으로, 상기 레지스터 값은 중단될 때까지 유지되기 때문에 상기 전송 길이는 매 트랜잭션 마다 설정될 필요가 없다.
3. 버퍼 상태를 기다리는(WAIT_FOR_BUFFER_STATE) 동작은 1로 설정된 비트 1(꽉 차는 것을 기다림) 및 0으로 설정된 비트 0(버퍼 0을 기다림)을 사용하여 적용된다. 이는 데이터가 실제 프로그램 명령어를 적용하기 전에 버퍼 내에 있을 때까지 실행을 기다리게 만든다.
4. 동작(FLASH_BUS_OPERATION)은 다음과 같은 변수로 적용된다.
- 칩 인에이블 = 0
- 동작 형식 = 명령어
- 동작 옵션 = 0
- 동작 명령어 = 0x80
- 동작 어드레스 길이 = X
- 동작 데이터 길이 = X
더블 워드 4의 지시 사항은 프로그램 명령어 주기를 칩 인에이블 0의 플래시에 적용시키라고 플래시 버스 제어기에게 전한다.
5. 동작(FLASH_BUS_OPERATION)은 다음과 같은 변수로 적용된다.
- 칩 인에이블 = 0
- 동작 형식 = 어드레스
- 동작 옵션 = 0
- 동작 명령어 = X
- 동작 어드레스 길이 = 5
- 동작 데이터 길이 = X
더블 워드 5의 지시 사항은 플래시 버스 제어기 내에 있는 op_addr 레지스터의 5 개의 어드레스 주기를 칩 인에이블 0의 플래시에 적용시킨다.
6. 동작(FLASH_BUS_OPERATION)은 다음과 같은 변수로 적용된다.
- 칩 인에이블 = 0
- 동작 형식 = 쓰기
- 동작 옵션 = 0
- 동작 명령어 = 0
- 동작 어드레스 길이 = X
- 동작 데이터 길이 = 0
더블 워드 6의 지시 사항은 플래시 버스 제어기로 하여금 데이터를 플래시 레인 데이터 버퍼에서 칩 인에이블 0인 플래시 유닛으로 이동시키게 만든다. 동작 데이터 길이 필드가 0으로 설정되었기 때문에, 상기 플래시 버스 제어기는 (상기 데이터 전송 길이 레지스터에서 설명된 바와 같이) 모든 4320 바이트를 이동시킨다. (플래시 버스 제어기는 최적화를 위하여 명령어 사이클이 쓰기 동작을 사용하여 적용되게 만든다. 다음 단계에서 적용되는 0x10 명령어는 하나의 동작을 저장하기 위하여 선택적으로 적용될 수 있다).
7. 동작(FLASH_BUS_OPERATION)은 다음과 같은 변수로 적용될 수 있다.
- 칩 인에이블 = 0
- 동작 형식 = 명령어
- 동작 옵션 = 0
- 동작 명령어 = 0x10
- 동작 어드레스 길이 = X
- 동작 데이터 길이 = X
더블 워드 7의 지시 사항은 두 번째 및 마지막 명령어 주기(0x10)를 칩 인에이블 0의 플래시 장치에 적용시키라고 플래시 버스 제어기에 전한다.
8. RB 대기(WAIT_RB) 동작은 변수 1을 사용하여 적용된다.
더블 워드 8의 지시 사항은 플래시 버스가 또 다른 명령어를 적용하기 전에 준비될 때까지(R/B = 1) 나노 순서기를 대기시킨다.
9. 동작(FLASH_BUS_OPERATION)는 다음과 같은 변수로 적용된다.
- 칩 인에이블 = 0
- 동작 형식 = 명령어
- 동작 옵션 = 0
- 동작 명령어 = 0x70
- 동작 어드레스 길이 = X
- 동작 데이터 길이 = X
더블 워드 9의 지시 사항은 플래시 버스 제어기로 하여금 상태 읽기(READ_STATUS) 명령어를 칩 인에이블 0의 플래시 유닛에 적용시키도록 만든다.
10. 동작(FLASH_BUS_OPERATION)는 다음과 같은 변수로 적용된다.
- 칩 인에이블 = 0
- 동작 형식 = 읽기
- 동작 옵션 = '010'
- 동작 명령어 = 0x00
- 동작 어드레스 길이 = X
- 동작 데이터 길이 = 1
더블 워드 10의 지시 사항은 플래시 버스 제어기로 하여금 읽기 인에이블을 토글(toggle)시키고 플래시 유닛의 상태를 획득하게 한다. 옵션 비트 1은 데이터가 플래시 버스 제어기 메모리에 위치하지 않고 플래시 버스 제어기의 즉시 데이터 레지스터 내에 위치하도록 설정된다(또한, 동작 데이터 길이는 1로 설정된다). (플래시 버스 제어기는 최적화를 위하여 명령어 주기가 읽기(READ) 동작을 사용하여 적용되게 만든다. 이전 단계에서 적용된 상기 0x70 명령어는 하나의 동작을 저장하기 위하여 여기에 선택적으로 적용될 수 있다.)
11. 성공/실패 상태의 획득(GET_PASS/FAIL_STATUS) 동작은 다음과 같은 변수로 적용된다.
- 무효 또는 감소 = 0
- 비교값 = "00000001"
- 마스크 = "11111110"
더블 워드 11의 명령어는 상기 나노 순서기로 하여금 플래시 버스 제어기 내 즉시 데이터 레지스터의 마스크 되지 않은 비트 값(비트 0)을 비교값(1)의 비트 0과 비교하게 한다. 만약 비교 값이 서로 매치한다면, 결과는 1이 되고 이는 상태 레지스터 비트 0이 실패를 의미하는 실제 1이라는 것을 나타낸다. 만약 비교값이 매치하지 않는다면, 결과는 0이 되고 이는 명령어가 실패하지 않았다는 것을 의미한다. 상기 결과는 상기 컨텍스트 지시자가 처분된 때 소모된 컨텍스트 지시자를 따라서 CCM으로 전해지게 된다.
12. 컨텍스트 지시자의 처분(DISPOSE_OF_CONTEXT_POINTER) 동작은 변수로서 상기 컨텍스트 지시자(0xABCD)를 사용하여 적용된다.
더블 워드 12의 지시 사항은 상기 나노 순서기로 하여금 CCM에 지시자(및 이와 관련된 성공/실패 비트)를 보내도록 하는 것이다. 이는 본질적으로 플래시로의 프로그램 동작과 플래시 버스 제어기의 관계를 완료시킨다.
13. 완료(DONE) 동작은 상기 플래시 버스 제어기로 하여금 상기 프로세서 제어 모드를 떠나 "보통"의 하드웨어 자동 제어 모드로 되돌아가게 한다.
이 때, 상기 FOM은 상기 컨텍스트 표에 상기 소프트 컨텍스트 처리가 완료되었다는 것을 알린다. 이는, 상기 컨텍스트가 "보통"(또는 자동 제어되는) 컨텍스트에서와 동일한 방식으로 소모되는 경우, 프로세서 제어 모드로 설정된 "플래시 동작" 필드를 가지는 상기 "초기" PCM 컨텍스트가 상기 컨텍스트 표로부터 제거되고 상기 CCM으로 전달되게 만든다. 만약, 복수의 동작이 15 개를 넘어 존재하였다면, 다음 소프트 컨텍스트를 페치하는 동작이 적용될 것이고 상기 순서기는 새로운 소프트 컨텍스트를 수신한 이후 바로 실행을 계속할 것이다. 이러한 동작 모드는 무한히 계속될 수 있다.
도 1 내지 도 11의 다이어그램에서 수행되는 기능은 본 발명의 사상에 따라 프로그램된 종래 다목적 프로세서, 디지털 컴퓨터, 마이크로 프로세서, 마이크로 컨트롤러, 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 (20)

  1. 프로세서 제어 모드를 가지는 플래시 레인 제어기를 제공하는 단계; 및
    소프트 컨텍스트를 생성하고 제공하는 단계로서, 상기 소프트 컨텍스트는 상기 플래시 레인 제어기를 상기 프로세서 제어 모드로 만들고, 프로세서 제어 모드에서 상기 플래시 레인 제어기는 전체 소프트 컨텍스트를 저장하고 아직 처리되지 않은 모든 컨텍스트의 실행을 종료하고 하드웨어의 일반적인 자동 제어 동작을 중지시킨 후, 상기 소프트 컨텍스트를 실행하는, 단계;를 포함하는 것을 특징으로 하는 플래시 미디어 시스템의 제어 방법.
  2. 제1항에 있어서,
    상기 프로세서 제어 모드는 상기 플래시 레인 제어기 이외의 논리 회로에는 관여하지 않는 것을 특징으로 하는 플래시 미디어 시스템의 제어 방법.
  3. 제1항에 있어서,
    상기 소프트 컨텍스트는 소프트 명령어를 상기 플래시 레인 제어기에 제공하는 것을 특징으로 하는 플래시 미디어 시스템의 제어 방법.
  4. 제3항에 있어서,
    상기 소프트 명령어는 본래 하드웨어에서 지원되지 않는 동작을 수행하는 것을 특징으로 하는 플래시 미디어 시스템의 제어 방법.
  5. 제3항에 있어서,
    상기 소프트 명령어는 하나 이상의 비자동 명령어를 포함하는 것을 특징으로 하는 플래시 미디어 시스템의 제어 방법.
  6. 제3항에 있어서,
    상기 소프트 명령어는 하나 이상의 제조자 고유의 진단 명령어를 포함하는 것을 특징으로 하는 플래시 미디어 시스템의 제어 방법.
  7. 제3항에 있어서,
    상기 소프트 명령어는 하나 이상의 에러 처리 명령어를 포함하는 것을 특징으로 하는 플래시 미디어 시스템의 제어 방법.
  8. 제1항에 있어서,
    소프트 컨텍스트의 수신 시 상기 플래시 레인 제어기는 일반 동작 모드에서 프로세서 제어 모드로 변환되고, 하나 이상의 소프트 명령어로 특정되는 하나 이상의 소프트 플래시 동작을 수행하고, 상기 일반 동작 모드로 되돌아 가고, 상기 플래시 레인 제어기를 통해 지원되는 하나 이상의 컨텍스트 목록으로부터 컨텍스트의 페치를 시작하는 것을 특징으로 하는 플래시 미디어 시스템의 제어 방법.
  9. 플래시 레인 제어기에 부착된 복수의 플래시 장치 각각에서 컨텍스트를 실행하고 프로세서 제어 모드를 가지는, 플래시 레인 제어기; 및
    플래시 장치들 중 하나 이상에 액세스하도록 상기 플래시 레인 제어기의 하드웨어 자원을 구동시키는 프로세서 제어 모드로서, 데이터가 데이터 경로에 드나들 수 있도록 구성된 상기 프로세서 제어 모드 동작을 지원하는, 상기 플래시 레인 제어기 내에 배치되는 나노 순서기;를 포함하는 것을 특징으로 하는 장치.
  10. 제9항에 있어서,
    상기 프로세서 제어 모드 동작은 플래시 버스 동작에 대한 나노-지시 사항 세트의 응답으로 수행되고, 상기 나노-지시 사항 세트는,
    특정 수의 클럭 주기를 기다리고, 관련 필드에서 정의된 특정 상태로 이동하도록 준비/사용 라인을 기다리고, 상태 레지스터를 폴링(polling)하면서 특정 상태를 기다리고, 데이터 흐름 관리자 버퍼가 특정 상태에 도달하는 것을 기다리고, 연속하는 상태 폴링 시도 사이의 클럭 주기의 횟수를 설정하고, 데이터 전송에 대하여 기본 바이트 수를 설정하고, 플래시 트랜잭션에 있어서 40비트의 플래시 어드레스 중 가장 중요한 3 개의 비트를 설정하고, 플래시 트랜잭션에 있어서 40 비트의 플래시 어드레스 중 가장 덜 중요한 2 개의 바이트를 설정하고, 상태 폴링 명령어의 형식을 설정하고, 가장 최근에 획득한 상태 레지스터의 내용을 사용하여 동작의 성공/실패 상태를 획득하고, 데이터 흐름 관리자 내 두 개의 로컬 버퍼 중 하나를 사용하여 프로그램 트랜잭션을 위한 데이터 프리페치 동작을 시작하고, 다음 읽기 전송이 지시하는 대상으로 로컬 데이터 버퍼를 설정하고 버퍼 전송과 DMA 컨텍스트 지시자를 관련짓고, 주어진 동작에 대하여 DMA 컨텍스트 지시자를 처분하고, 펌웨어에 의하여 고유하게 식별될 수 있도록 프로세서에 인터럽트를 어서트하고 인터럽트 레지스터에 변수를 위치시키고, 프로세서 제어 모드에서 다음 소프트 컨텍스트 지시자를 페치하고, 상기 프로세서 제어 모드에서 빠져 나오는 것을 특징으로 하는 장치.
  11. 제9항에 있어서,
    상기 장치는 플래시 미디어 제어기인 것을 특징으로 하는 장치.
  12. 제11항에 있어서,
    상기 장치는 집적 회로인 것을 특징으로 하는 장치.
  13. 제12항에 있어서,
    상기 플래시 미디어 제어기는 상기 플래시 레인 제어기의 다중 인스턴스를 포함하는 것을 특징으로 하는 장치.
  14. 제13항에 있어서,
    상기 장치는 복수의 플래시 레인에 배치되는 복수의 플래시 장치를 포함하는 반도체(solid state) 저장 장치의 일 부분이고, 상기 플래시 레인 각각은 상기 플래시 레인 제어기의 다중 인스턴스 각각에 의하여 제어되는 것을 특징으로 하는 장치.
  15. 제11항에 있어서,
    상기 프로세서 제어 모드는 소프트 명령어를 상기 플래시 레인 제어기에 전달하는 소프트 컨텍스트를 실행하는 단계를 포함하는 것을 특징으로 하는 장치.
  16. 제15항에 있어서,
    상기 소프트 명령어는 상기 플래시 미디어 제어기의 하드웨어에서 본래 지원하지 않는 동작을 수행하도록 구성되어 있는 것을 특징으로 하는 장치.
  17. 제9항에 있어서,
    상기 프로세서 제어 모드는 상기 플래시 레인 제어기 이외의 논리 회로에는 관여하지 않는 것을 특징으로 하는 장치.
  18. 제16항에 있어서,
    상기 소프트 명령어는 하나 이상의 비자동 제어 명령어, 제조자 고유의 진단 명령어 및 에러 처리 명령어를 포함하는 것을 특징으로 하는 장치.
  19. 제16항에 있어서,
    상기 플래시 레인 제어기는 소프트 컨텍스트를 수신한 때 보통 동작 모드에서 프로세서 제어 모드로 전환하도록 구성되어 있고, 하나 이상의 소프트 명령어에 의하여 특정되는 하나 이상의 소프트 플래시 동작을 수행하고, 상기 소프트 컨텍스트가 완료된 때 보통 동작 모드로 되돌아가고, 상기 플래시 레인 제어기에서 지원되는 하나 이상의 컨텍스트 목록으로부터 컨텍스트의 페치를 시작하는 것을 특징으로 하는 장치.
  20. 플래시 레인 제어기의 다중 인스턴스를 포함하는 플래시 미디어 제어기로서, 상기 플래시 레인 제어기는 소프트 컨텍스트를 실행하는 프로세서 제어 모드를 가지고, 상기 소프트 컨텍스트는 상기 플래시 미디어 제어기의 하드웨어에서 본래 지원되지 않는 동작을 수행하도록 구성된, 플래시 미디어 제어기; 및
    복수의 플래시 레인에 배치된 복수의 플래시 장치로서, 상기 플래시 레인 각각은 상기 플래시 레인 제어기의 다중 인스턴스 각각에 의하여 제어되는, 플래시 장치;를 포함하는 것을 특징으로 하는 고체 상태 저장 장치.
KR1020120076960A 2011-07-14 2012-07-13 유연한 플래시 명령어 KR20130009926A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161507665P 2011-07-14 2011-07-14
US61/507,665 2011-07-14
US13/332,849 2011-12-21
US13/332,849 US8645618B2 (en) 2011-07-14 2011-12-21 Flexible flash commands

Publications (1)

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

Family

ID=46548249

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120076960A KR20130009926A (ko) 2011-07-14 2012-07-13 유연한 플래시 명령어

Country Status (6)

Country Link
US (1) US8645618B2 (ko)
EP (1) EP2546757B1 (ko)
JP (1) JP5977094B2 (ko)
KR (1) KR20130009926A (ko)
CN (1) CN103034454B (ko)
TW (1) TW201305821A (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318308B2 (en) * 2012-10-31 2019-06-11 Mobileye Vision Technologies Ltd. Arithmetic logic unit
US9176877B2 (en) * 2013-04-15 2015-11-03 International Business Machines Corporation Provision of early data from a lower level cache memory
TWI467578B (zh) * 2014-01-09 2015-01-01 Phison Electronics Corp 錯誤處理方法、記憶體儲存裝置與記憶體控制電路單元
US11437094B2 (en) 2015-08-13 2022-09-06 Samsung Electronics Co., Ltd. Nonvolatile memory device, storage device, and operation method of storage device
US10193746B2 (en) * 2016-12-21 2019-01-29 Juniper Networks, Inc. Deadlock avoidance using modified ethernet connectivity fault management signaling
CN108228493B (zh) 2016-12-21 2019-11-26 深圳市海思半导体有限公司 闪存接口控制器及操作命令处理方法
TWI696078B (zh) * 2017-05-26 2020-06-11 旺宏電子股份有限公司 記憶體裝置及其操作方法
CN109213425B (zh) * 2017-06-30 2023-10-31 北京忆恒创源科技股份有限公司 利用分布式缓存在固态存储设备中处理原子命令
JP2019175292A (ja) 2018-03-29 2019-10-10 東芝メモリ株式会社 電子機器、コンピュータシステム、および制御方法
US10802756B1 (en) 2018-07-12 2020-10-13 Seagate Technology Llc Flash queue status polling
CN109656626B (zh) * 2018-12-11 2022-05-17 中国航空工业集团公司西安航空计算技术研究所 一种基于ahb总线sd卡数据自搬运方法及装置
US10795767B2 (en) * 2018-12-26 2020-10-06 M31 Technology Corporation Error correcting system shared by multiple memory devices
CN112328509A (zh) * 2020-11-26 2021-02-05 北京泽石科技有限公司 一种基于硬件实现的用于闪存控制器的快速控制方法
CN114296639B (zh) * 2021-12-10 2024-02-20 深圳大普微电子科技有限公司 命令处理方法及闪存设备

Family Cites Families (23)

* 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
US4776533A (en) 1987-03-20 1988-10-11 The Jepson Burns Corporation Aircraft seat track fitting assembly
JPH0642207B2 (ja) * 1987-04-21 1994-06-01 富士電機株式会社 マルチレベルプログラミング方式
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.
AU7098500A (en) * 1999-09-01 2001-03-26 Intel Corporation Branch instruction for processor
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
GB2372348B (en) * 2001-02-20 2003-06-04 Siroyan Ltd Context preservation
JP2004258946A (ja) * 2003-02-26 2004-09-16 Renesas Technology Corp メモリカード
US7277978B2 (en) * 2003-09-16 2007-10-02 Micron Technology, Inc. Runtime flash device detection and configuration for flash data management software
US7817767B2 (en) 2004-12-23 2010-10-19 Rambus Inc. Processor-controlled clock-data recovery
JP5008845B2 (ja) * 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
JP2007179669A (ja) * 2005-12-28 2007-07-12 Toshiba Corp メモリシステム
US7702885B2 (en) * 2006-03-02 2010-04-20 Atmel Corporation Firmware extendable commands including a test mode command for a microcontroller-based flash memory controller
GB0606012D0 (en) 2006-03-25 2006-05-03 Zenopia Ltd Data storage
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
CN100458751C (zh) * 2007-05-10 2009-02-04 忆正存储技术(深圳)有限公司 并行闪存控制器
US9152496B2 (en) * 2007-12-21 2015-10-06 Cypress Semiconductor Corporation High performance flash channel interface
CN101330760B (zh) 2008-07-11 2013-02-27 华为技术有限公司 通信业务实现方法和网络侧设备
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
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

Also Published As

Publication number Publication date
CN103034454B (zh) 2015-08-26
JP2013025792A (ja) 2013-02-04
US8645618B2 (en) 2014-02-04
CN103034454A (zh) 2013-04-10
JP5977094B2 (ja) 2016-08-24
EP2546757B1 (en) 2015-06-24
TW201305821A (zh) 2013-02-01
EP2546757A2 (en) 2013-01-16
EP2546757A3 (en) 2013-10-23
US20130019050A1 (en) 2013-01-17

Similar Documents

Publication Publication Date Title
KR20130009926A (ko) 유연한 플래시 명령어
KR20130056811A (ko) 플래시 장치에 사용되는 플래시 제어기의 하드웨어 구조
US8806112B2 (en) Meta data handling within a flash media controller
CN112256601B (zh) 数据存取控制方法、嵌入式存储系统及嵌入式设备
US7523228B2 (en) Method for performing a direct memory access block move in a direct memory access device
KR20130009928A (ko) 플래시 인터페이스의 효율적인 활용
CN113468097B (zh) 基于片上系统的数据交换方法
US9690720B2 (en) Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
JP2003114864A (ja) データ転送制御回路
US7130932B1 (en) Method and apparatus for increasing the performance of communications between a host processor and a SATA or ATA device
JP2002543489A (ja) グラフィックスエンジンマスターモード動作の改良
WO2020106482A1 (en) Programming and controlling compute units in an integrated circuit
US20060179172A1 (en) Method and system for reducing power consumption of a direct memory access controller
US6938118B1 (en) Controlling access to a primary memory
Bougioukou et al. Prototyping and performance evaluation of a dynamically adaptable block device driver for PCIe-based SSDs
US20070234098A1 (en) Self-timed clock-controlled wait states
KR102656104B1 (ko) 비휘발성 메모리 제어 장치 및 비휘발성 메모리 장치
US20120303840A1 (en) Dma data transfer mechanism to reduce system latencies and improve performance

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