KR20130111622A - 확장 기능이 용이하게 설정될 수 있는 메모리 시스템 - Google Patents

확장 기능이 용이하게 설정될 수 있는 메모리 시스템 Download PDF

Info

Publication number
KR20130111622A
KR20130111622A KR1020137020444A KR20137020444A KR20130111622A KR 20130111622 A KR20130111622 A KR 20130111622A KR 1020137020444 A KR1020137020444 A KR 1020137020444A KR 20137020444 A KR20137020444 A KR 20137020444A KR 20130111622 A KR20130111622 A KR 20130111622A
Authority
KR
South Korea
Prior art keywords
function
data
command
extension
register
Prior art date
Application number
KR1020137020444A
Other languages
English (en)
Other versions
KR101493633B1 (ko
Inventor
아키히사 후지모토
히로유키 사카모토
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20130111622A publication Critical patent/KR20130111622A/ko
Application granted granted Critical
Publication of KR101493633B1 publication Critical patent/KR101493633B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

실시 형태에 따르면, SDIO 카드와 같은 메모리 시스템은 불휘발성 반도체 기억 장치(18), 제어부(11a), 메모리(14, 15), 확장 기능부(19) 및 확장 레지스터를 포함한다. 확장 기능부(19)는, 제어부(11a)에 의해 제어된다. 확장 레지스터는, 메모리(14, 15) 또는 제어부(11a)에 설치된다. 제1 커맨드는, 확장 레지스터를 소정의 데이터 길이 단위로 판독한다. 제2 커맨드는, 확장 레지스터를 소정의 데이터 길이 단위로 기입한다. 상기 확장 레지스터는 제1 영역, 상기 제1 영역과 상이한 제2 영역을 포함하고, 상기 확장 기능의 종별 및 제어 가능한 드라이버를 특정하도록 구성된 정보와, 상기 확장 기능이 할당되는 확장 레지스터 상에 있는 장소를 나타내는 어드레스 정보는 상기 제1 영역에 기록되고, 상기 제2 영역은 확장 기능을 포함한다.

Description

확장 기능이 용이하게 설정될 수 있는 메모리 시스템{MEMORY SYSTEM IN WHICH EXTENDED FUNCTION CAN EASILY BE SET}
관련 출원의 상호 참조
본 출원은 2011년 2월 4일 출원된 이전의 일본 특허 출원 제2011-023217호 및 2011년 5월 17일 출원된 제2011-110242호에 기초하여 그로부터의 잇점을 청구하고, 그 전체 요지는 본 명세서에 참조로 원용된다.
본 발명에 기재된 실시 형태는 일반적으로 예를 들어, 반도체 불활성 메모리를 사용하는 메모리 시스템에 관한 것이다.
최근, 메모리 카드는, 단순한 메모리 장치로서 뿐만아니라, 메모리 카드에 부가 가치를 갖게 하기 위해 여러가지 기능이 추가될 수 있는 메모리 장치가 요망된다. 또한, 추가 기능을 플러그 앤 플레이에서 사용 가능하게 하기 위해서, 범용적인 초기화 수단이 요망되고 있다.
도 1은 실시 형태에 적용되는 메모리 시스템을 개략적으로 도시하는 구성도.
도 2는 도 1에 도시하는 메모리 시스템의 펌웨어의 일례를 나타내는 구성도.
도 3은 확장 레지스터의 판독 커맨드의 일례를 나타내는 구성도.
도 4는 판독 커맨드에 의한 확장 레지스터의 판독 동작을 나타내는 타이밍도.
도 5는 판독 커맨드에 의한 데이터 포트의 판독 동작을 나타내는 타이밍도.
도 6은 확장 레지스터의 기입 커맨드의 일례를 나타내는 구성도.
도 7a, 도 7b 및 도 7c는 마스크 레지스터의 동작을 도시하는 도면.
도 8은 기입 커맨드에 의한 확장 레지스터의 기입 동작을 나타내는 타이밍도.
도 9는 기입 커맨드에 의한 데이터 포트의 기입 동작을 나타내는 타이밍도.
도 10은 확장 레지스터의 선두 페이지에 설정되는 범용 정보(general information) 필드의 일례를 나타내는 도면.
도 11은 판독 커맨드에 일치하는 메모리 시스템의 동작의 일례를 나타내는 흐름도.
도 12는 기입 커맨드에 일치하는 메모리 시스템의 동작의 일례를 나타내는 흐름도.
도 13은 호스트 드라이버의 동작의 일례를 나타내는 흐름도.
도 14는 호스트 드라이버의 동작의 다른 예를 나타내는 흐름도.
도 15는 SDIO에서의 확장 레지스터의 액세스 동작을 개략적으로 도시하는 도면.
도 16은 리비젼 관리의 일례를 나타내는 도면.
도 17은 제2 실시 형태에 관한 확장 레지스터의 판독 커맨드의 일례를 나타내는 도면.
도 18은 제2 실시 형태에 관한 확장 레지스터의 기입 커맨드의 일례를 나타내는 도면.
도 19는 판독 커맨드에 의한 확장 레지스터의 판독 동작을 나타내는 타이밍도.
도 20은 판독 커맨드에 의한 데이터 포트의 판독 동작을 나타내는 타이밍도.
도 21은 기입 커맨드에 의한 확장 레지스터의 기입 동작을 나타내는 타이밍도.
도 22는 기입 커맨드에 의한 데이터 포트의 기입 동작을 나타내는 타이밍도.
도 23은 확장 레지스터의 선두 페이지에 설정되는 범용 정보 필드의 일례를 나타내는 도면.
도 24는 제2 실시 형태에 관한 판독 커맨드에 일치하는 메모리 시스템의 동작의 일례를 나타내는 흐름도.
도 25는 제2 실시 형태에 관한 기입 커맨드에 일치하는 메모리 시스템의 동작의 일례를 나타내는 흐름도.
도 26은 제2 실시 형태에 관한 확장 레지스터의 멀티 블록 판독 커맨드의 일례를 나타내는 도면.
도 27은 제2 실시 형태에 관한 확장 레지스터의 멀티 블록 기입 커맨드의 일례를 나타내는 도면.
도 28a 및 도 28b는 제2 실시 형태에 관한 범용 정보의 표시 위치의 일례를 나타내는 도면.
도 29는 제2 실시 형태에 관한 메모리 공간과 SDIO 공간 사이 관계의 일례를 나타내는 도면.
도 30은 제2 실시 형태에 관한 SDIO의 초기화의 간소화를 설명하기 위해 나타낸 흐름도.
도 31은 제2 실시 형태에 관한 메모리 장치와 호스트의 기능 인터페이스 사이의 관계를 개략적으로 도시하는 도면.
도 32는 제2 실시 형태에 관한 버퍼의 제어를 설명하기 위해 나타낸 개략 구성도.
도 33은 기능 식별 코드의 일례를 나타내는 도면.
일반적으로, 실시 형태에 따르면, 메모리 시스템은, 불휘발성 반도체 기억 장치와, 제어부와, 메모리와, 확장 기능부와, 확장 레지스터를 포함한다. 제어부는, 불휘발성 반도체 기억 장치를 제어한다. 메모리는, 제어부에 접속된 작업 에리어이다. 확장 기능부는, 제어부에 의해 제어된다. 확장 레지스터는, 메모리 상에 설치되고, 확장 기능부의 확장 기능을 정의가능한 일정한 블록 길이를 갖는다. 상기 제어부는, 확장 레지스터로부터의 데이터를 일정한 길이 단위로 판독하는 제1 커맨드와, 확장 레지스터에 일정한 길이 단위로 데이터를 기입하는 제2 커맨드를 처리하고, 확장 레지스터는 제1 영역 및 제1 영역과 상이한 제2 영역을 포함하고, 상기 확장 기능의 종별 및 제어 가능한 드라이버를 특정하도록 구성된 정보와, 상기 확장 기능이 할당되는 확장 레지스터 상에 있는 장소를 나타내는 어드레스 정보는 상기 제1 영역에 기록되고, 상기 제2 영역은 확장 기능을 포함한다.
SD 카드와 같은 메모리 장치는, 기능을 확장할 경우, 새로운 규격이 설정되고, 그 규격에 따라, 기능이 확장된다. 이로 인해, 규격이 정해지지 않으면, 기능을 확장하는 것이 어려웠다.
예를 들어 SD 카드와 같은 메모리 장치나 호스트 기기에는, 표준적인 기능의 확장 방법이 정의되어 있지 않았다. 이로 인해, 특수한 호스트 디바이스 이외에, 메모리 장치에 추가된 기능을 간단하게 사용할 수 있도록 할 수 없었다. 이는 메모리 장치에 새로운 기능의 추가에 장애가 있었다.
또한, 호스트 컨트롤러의 기능에 제한이 있기 때문에, 메모리 장치에 추가된 기능을 사용할 수 없는 경우가 있었다. 구체적으로는, 많은 경우, 메모리용의 호스트 컨트롤러는, 인터럽트를 서포트하지 않거나, 512 바이트보다 작은 데이터의 판독/기입에 대응하지 않는다. 특히 SDIO 규격에서는, 가변 길이 블록의 멀티 블록 전송이 정의되어 있지만, 메모리 전용 호스트에는, 이러한 데이터 전송이 행할 수 없을 경우가 많다. 이로 인해, 디지털 카메라 및 PHS 등의 주변 기기에서, 인터페이스의 기능을 갖는 SDIO 카드나, SD 카드에 SDIO 카드가 내장된 콤보 카드의 기능을 확장했을 경우, 확장된 기능에 대응하는 기능 드라이버를 호스트 시스템에 설치할 필요가 있고, 또한 호스트 드라이버를 변경하지 않으면 기능 드라이버를 인식할 수 없었다.
또한, 호스트는 카드/디바이스를 특정하도록 구성된 카드 어드레스(RCA) 및 디바이스 ID를 사용한다. 단일 기능 카드/디바이스의 경우에는 이들 정보 항목을 사용하여 기능을 특정할 수 있지만, 카드 어드레스만을 사용함으로써 멀티 기능 디바이스의 기능 중 하나를 특정할 수 없는 문제가 있었다. 그 때문에 호스트 시스템을 관리하도록 구성된 소프트웨어를 멀티 기능 카드/디바이스에 대응될 수 있도록 변경하지 않으면 멀티 기능 디바이스를 사용할 수 없었다.
또한, 일반적으로 메모리 내의 컨트롤러는, 512 바이트 단위로 메모리에 액세스한다. 이로 인해, 512 바이트 단위의 데이터의 일부의 데이터를 재기입할 경우, 판독-변경-기입 동작이 필요해진다. 즉, 예를 들어 512 바이트의 데이터 중 1 바이트의 데이터를 재기입할 경우, 512 바이트의 데이터를 버퍼 안으로 판독하고, 버퍼 상에서 1 바이트의 데이터를 갱신하고, 이 갱신된 512 바이트의 데이터를 기입하는 동작이 필요하다. 이로 인해, 제어 효율이 나빴다.
또한, 일반적으로, 레지스터를 사용해서 카드의 기능을 확장할 경우, 제어 레지스터가 특정 어드레스에 할당되고 있었다. 이로 인해, 카드 벤더는, 자유롭게 기능 확장에 사용하는 어드레스 위치를 정할 수 없었다. 확장 기능을 표준화할 경우, 복수의 기능이 중복식으로 할당되지 않도록 복수의 기능을 레지스터 어드레스에 할당할 필요가 있고, 기능의 서포트 상황에 따라서 어드레스 공간이 띄엄 띄엄 불연속적으로 되는 문제가 있었다. 또한, 벤더의 원래 기능을 실행할 경우, 자유롭게 기능을 추가할 수 없는 문제가 있었다.
따라서, 본 실시 형태는, 가상적인 확장 레지스터를 사용함으로써, 기능 확장을 가능하게 하고, 대응하는 기능 드라이버를 찾아낼 수 있는 정보를 표준화함으로써 유연한 기능 확장 수단을 제공한다.
본 실시 형태를 개략적으로 설명하면 다음과 같다.
(기능 확장 방법)
호스트 드라이버가, 추가 기능을 제어하도록 구성된 기능 드라이버를 찾고, 대응하는 기능 드라이버가 호스트에 설치될 경우, 그 기능 드라이버로의 제어를 전송하도록 구성된 구조를 도입함으로써, 기능 확장을 용이하게 행할 수 있게 된다. 기능 고유의 제어는, 기능 드라이버에 은폐되기 때문에, 호스트 드라이버는 최소한의 정보만으로 추가 기능을 실현 가능하게 된다. 예를 들어 펌웨어는 펌웨어가 관리하는 복수 페이지의 확장 레지스터를 포함하고, 확장 레지스터의 페이지 0에, 특정한 드라이버를 인식하도록 구성된 표준적인 범용 정보(general information) 필드를 제공한다. 이에 의해 호스트 시스템은, 플러그 앤 플레이 기능을 실현 가능하게 된다. 또한, 멀티 기능 카드/디바이스를 서포트하기 위해서, 개개의 기능을 지시할 수 있도록 호스트 시스템에 의해 행해지는 관리에 의해, 호스트 소프트웨어의 변경없이 멀티 기능 카드/디바이스를 사용 가능하게 한다.
(SD 메모리 또는 SDIO 호스트 컨트롤러의 대응)
SD 메모리용의 호스트 컨트롤러에서도, 추가 기능의 제어를 효율적으로 행할 수 있는 확장 레지스터에 액세스하도록 구성된 전용 커맨드를 정의한다. 512 바이트의 고정 길이 블록의 전송에 의해, 종래의 SD 메모리용 호스트 컨트롤러로부터 전용 커맨드를 발행할 수 있다. 또한, 커맨드의 인수로서 유효 데이터 길이에 대한 정보나, 기입시의 마스크 기능을 갖는 것에 의해, 판독-변경-기입을 불필요하게 하는 것이 가능하게 된다.
SDIO 카드 대응의 호스트 컨트롤러에 있어서는, SDIO의 액세스 커맨드로부터 확장 레지스터에 액세스할 수 있도록 함으로써, 작은 길이 블록 전송과 멀티 블록 전송에 대응 가능하게 되기 때문에, 더 최적화한 드라이버를 만드는 것이 가능하게 된다.
데이터 전송용 포트로 기능하는 데이터 포트를 서포트함으로써, 확장 레지스터 공간량이 적게 요구되는 실장이 가능하게 된다. 또한, 데이터 포트를 사용함으로써, 확장 레지스터 이외의 디바이스에의 데이터 전송도 효율적으로 행하는 것이 가능하게 된다. 복수 블록을 사용함으로써 버스트 전송 커맨드를 서포트할 수 있다. 데이터 포트와 관련하여, 기능의 실장시에 확장 레지스터의 임의의 어드레스를 데이터 포트로서 정의할 수 있다. 카드는 어드레스를 해독해서 그 어드레스가 데이터 포트와 관련되느지 또는 확장 레지스터와 관련되는지를 판단한다.
(재배치가능한 어드레스에 의한 확장 레지스터 정의)
카드 벤더에 의해, 확장 레지스터 상의 임의의 위치에 추가 기능을 제어하도록 구성된 레지스터를 할당하는 것을 가능하게 하고, 실장한 레지스터에 대한 어드레스 정보를 범용 정보 필드로부터 제공함으로써, 레지스터 배치를 재배치하는 것을 가능하게 한다. 이로 인해, 종래 표준화가 필요했던 어드레스 배치는 불필요하게 되고, 메모리 장치를 제조하기 쉬워진다. 재배치가 가능하기 때문에, 레지스터를 확장해도 용이하게 대응을 할 수 있다.
이하, 실시 형태에 대해서, 도면을 참조하여 설명한다.
도 1은, 본 실시 형태에 관한 메모리 시스템을 개략적으로 나타낸다.
메모리 시스템은, SD 카드와 같은 메모리 장치(11)와, 호스트(20)로 구성된다.
메모리 장치(11)는, 호스트(20)에 접속되었을 때에, 메모리 장치(11)는 전원 공급을 받아서 동작하고, 호스트(20)로부터의 액세스에 대응하는 처리를 행한다. 이 메모리 장치(11)은, 컨트롤러(11a)를 포함한다.
컨트롤러(11a)는, 예를 들어 호스트 인터페이스(12), CPU(13), ROM(read only memory)(14), RAM(random access memory)(15), 버퍼(16), 메모리 인터페이스(17)로 구성된다. 이들은, 버스에 의해 서로 접속된다. 메모리 인터페이스(17)에는, 예를 들어 NAND형 플래시 메모리(18)와 확장 기능부로서의 SDIO(19)가 접속된다. 확장 기능부로서, 예를 들어 무선 LAN 장치 등을 적용하는 것이 가능하다.
호스트 인터페이스(12)은, 컨트롤러(11a)와 호스트(20) 사이의 인터페이스 처리를 행한다.
메모리 인터페이스(17)는, 컨트롤러(11a)와 NAND형 플래시 메모리(18), 또는 SDIO(19) 사이의 인터페이스 처리를 행한다.
CPU(13)는, 메모리 장치(11) 전체의 동작을 담당하도록 구성된 유닛이다. 이 CPU(13)를 제어하도록 구성된 프로그램은, ROM(14) 내에 저장되어 있는 펌웨어(제어 프로그램 등)을 사용하거나, RAM(15)으로 펌웨어를 로드해서 소정의 처리를 실행한다. 즉, CPU(13)는, 각종 테이블 및 후술하는 확장 레지스터를 RAM(15) 상에 작성하고, 호스트(20)로부터 기입 커맨드, 판독 커맨드, 소거 커맨드를 받아 NAND형 플래시 메모리(18) 상의 영역을 액세스하고, 버퍼(16)를 통해 데이터 전송 처리를 제어한다.
ROM(14)은, CPU(13)에 의해 사용되는 제어 프로그램 등의 펌웨어를 저장한다. RAM(15)은, CPU(13)의 작업 에리어로서 사용되고, 제어 프로그램, 각종 테이블 및 후술하는 확장 레지스터를 기억한다.
버퍼(16)는, 호스트(20)로부터 전송된 데이터를, 예를 들어 NAND형 플래시 메모리(18)에 기입할 때, 일정량의 데이터(예를 들어 1 페이지의 데이터)를 일시적으로 기억하고, NAND형 플래시 메모리(18)로부터 판독된 데이터를 호스트(20)에 송출할 때, 버퍼(16)는 일정량의 데이터를 일시적으로 기억한다. 또한 버퍼를 통해 제어를 행함으로써, 버퍼(16)는 SD 버스 인터페이스와 백 엔드(back-end)를 비동기식으로 제어할 수 있다.
NAND형 플래시 메모리(18)는, 예를 들어 적층 게이트 구조의 메모리 셀, 또는 MONOS 구조의 메모리 셀로 구성된다.
SDIO(19)는, 디지털 카메라 및 PHS 등의 주변 기기, 및 인터페이스로서의 기능을 갖고 있다. SDIO(19)로서 무선 LAN 장치를 적용함으로써, 무선 통신 기능을 갖지 않은 디지털 카메라에서도 그 자신, 외부 서버, 외부 PC 등 사이에서 무선에 의한 데이터 통신을 행하는 것이 가능하게 된다.
호스트(20)로서, 예를 들어 디지털 카메라 및 PHS 등이 적용 가능하다. 호스트(20)는, 호스트 컨트롤러(21), CPU(22), ROM(23), RAM(24), 및 예를 들어 하드 디스크(25)(SSD를 포함한다)로 구성된다. 이들은 버스에 의해 접속된다.
CPU(22)은, 호스트 전체를 제어한다. ROM(23)은, CPU(22)의 동작에 필요한 펌웨어를 기억한다. RAM(24)은, 예를 들어 CPU(22)의 작업 영역으로서 사용되지만, CPU(22)가 실행 가능한 프로그램도 여기에 로드되어 실행된다. 하드 디스크(25)는 각종 데이터 항목을 유지한다. 호스트 컨트롤러(21)는, 메모리 장치(11)가 호스트 컨트롤러(21)에 접속된 상태에서, 그 자신과 메모리 장치(11) 사이의 인터페이스 처리를 행한다. 또한, 호스트 컨트롤러(21)는 CPU(22)의 지시에 따라 후술하는 각종 커맨드를 발행한다.
(펌웨어의 구성)
도 2는, 메모리 장치(11)의 ROM(14)에 기억된 펌웨어의 기능 구성의 일례를 나타낸다. 이들 기능은 컨트롤러(11a)를 구성하는 CPU(13 등의 하드웨어 항목의 조합에 의해 실현된다. 펌웨어는, 예를 들어 커맨드 처리부(14a), 플래시 메모리 제어부(14b), 확장 레지스터 처리부(14c), 기능 처리 프로그램(14d)으로 구성된다. 확장 레지스터 처리부(14c)는, 메모리 장치(11)가 기동되었을 때, RAM(15) 내에 확장 레지스터(31)를 생성한다. 이 확장 레지스터(31)는, 가상 레지스터이며, 확장 기능을 정의 가능하게 된다. 본 실시 형태에서, 확장 레지스터는 가상 레지스터에 제한되지 않는다. 에를 들어, CPU(13) 내에 하드웨어로서 확장 레지스터를 제공할 수 있다.
(확장 레지스터의 구성)
도 2에 도시한 바와 같이, 확장 레지스터(31)는, 예를 들어 8 페이지로 구성되어 있다. 1 페이지는, 512 바이트로 구성된다. 512 바이트의 확장 레지스터를 1 바이트 단위로 액세스하기 위해서, 적어도 9 비트의 어드레스가 필요하고, 8 페이지를 액세스하기 위해서, 적어도 3 비트의 어드레스가 필요하다. 합계 12 비트의 어드레스에 의해, 확장 레지스터의 전 공간이 액세스 가능하게 된다. 512 바이트는 대부분의 호스트가 서포트가능한 액세스 단위이지만, 액세스 단위는 512 바이트에 한정되지 않고 512 바이트보다 크게 해도 좋다. 확장 레지스터(31)가 긴 비트 길이의 어드레스 필드로 구성되는 경우, 하위 몇 비트는 액세스 단위로서 사용되고, 나머지의 상위의 비트는, 복수 페이지 중 하나를 선택하기 위해 사용된다.
512 바이트 단위로 하는 이유는, 다수의 메모리 카드 호스트 컨트롤러가, 1 블록(=512 바이트)을 단위로서 판독/기입 전송을 행하는 방식으로 구성되어 있기 때문에다. SDIO 대응의 호스트 컨트롤러가 1 바이트 단위의 판독/기입을 행하는 것이 가능하지만, 모든 호스트 컨트롤러가 상기 판독/기입을 서포트하고 있는 것은 아니다. 대다수의 호스트 컨트롤러가 확장 기능을 제어할 수 있도록 하기 위해서는, 512 바이트 단위의 액세스를 행할 수 있으면 편리하다.
8 페이지(페이지 0 내지 페이지 7) 중, 페이지 0은 확장 기능의 플러그 앤 플레이를 행하기 위해서 범용 정보 필드를 기록하도록 구성된 영역이다. 범용 정보 필드의 상세한 내용에 대해서는 후술한다. 페이지 1 내지 페이지 7에서, 확장 기능을 제어하도록 구성된 레지스터가 정의된다. 페이지 0에서 위치를 특정하기 쉽기 때문에, 페이지 0은 범용 정보 필드를 기록해 두는 장소로서 적절하지만, 범용 정보 필드를 기록해 두는 페이지가 반드시 페이지 0일 필요는 없고, 특정한 페이지의 위치를 범용 정보 필드를 기재하도록 구성된 장소로서 정의할 수도 있다.
확장 레지스터의 판독/기입을 위해, 이하에 정의되는 전용의 판독/기입 커맨드가 사용된다. 이들 커맨드 각각은 확장 레지스터를 판독/기입하는 제1 동작 모드와, 데이터 포트를 구성하는 제2 동작 모드를 갖고 있다.
(확장 레지스터의 판독 커맨드(CMD 48))
도 3은, 확장 레지스터의 판독 커맨드(CMD 48)의 필드 구성의 일례를 나타낸다. "S"는, 커맨드의 스타트 비트를 나타내고, "T"는 전송 방향을 나타내는 비트이며, "index"는, 커맨드 번호를 나타낸다. "RS"(레지스터 셀렉트)는 확장 레지스터(31) 내의 페이지를 나타내고, "OFS"은 선택된 페이지 내에서의 데이터의 위치(페이지의 선두로부터의 오프셋)을 나타낸다. 3 비트의 "RS"와, 9 비트의 "OFS"를 사용함으로써, 512 바이트의 확장 레지스터의 8 페이지 분의 공간을 1 바이트 단위로 지정할 수 있다. 구체적으로는, 선택된 확장 레지스터 내의 판독 개시 위치가 "RS"과 "OFS"에 의해 지정된다.
"LEN"은 데이터 길이를 나타낸다. 9 비트의 LEN 필드에 의해, 512 바이트의 확장 레지스터 내의 판독에 필요한 유효한 데이터 길이가 지정된다.
"CRC7"은, 순회 용장 검사(cyclic redundancy check) 코드를 나타내고, "E"는, 커맨드의 엔드 비트를 나타낸다. "rsv"은, 예비의 비트를 나타낸다.
(확장 레지스터의 판독 커맨드, 제1 동작 모드)
도 4는, 제1 동작 모드에 의한 확장 레지스터의 판독 동작의 예를 나타낸다. 도 4에 도시한 바와 같이, 메모리 장치(11)는, 호스트(20)로부터 커맨드(CMD 48)를 수취하면, 응답(R1)을 호스트(20)에 되돌리고, 그 후, 확장 레지스터(31)로부터 512 바이트의 데이터 블록을 판독한다.
구체적으로는, 커맨드(CMD 48)의 인수에 의해, 확장 레지스터의 페이지와, 페이지 내의 판독해야 할 데이터의 위치, 즉, "RS"과 "OFS"에 의해 지정되고, 데이터 길이가 "LEN"으로 지정된다. 이와 같이 하여, 지정된 확장 레지스터 내의 데이터가 512 바이트의 데이터 블록의 선두에 설정되고, 판독된다. 512 바이트의 데이터 블록의 데이터 항목 중, "LEN"에 의해 지정된 데이터 길이를 초과하는 데이터를 갖는 데이터 항목은 무효 데이터 항목이 된다. 데이터 블록의 마지막 부분에 CRC 코드가 부가되어, 정확하게 데이터를 받을 수 있었는지를 체크하는 것이 가능하게 된다(무효 데이터를 포함해서 데이터 체크를 행한다). 유효 데이터 항목이 선두로부터 배치되어 있기 때문에, 호스트(20)는, 유효 데이터를 찾기 위해서, 데이터 시프트 등의 조작을 행할 필요가 없다.
(확장 레지스터의 판독 커맨드, 제2 동작 모드)
도 5는, 제2 동작 모드에 의한 데이터 포트 리드의 동작의 예를 나타낸다.
메모리 장치(11)는,이 커맨드(CMD 48)를 수취하면, 응답(R1)을 되돌리고, 그 후에 512 바이트의 데이터 블록을 되돌린다.
커맨드의 인수 "RS", "OFS"에 의해, 확장 레지스터의 선택된 페이지 내의 정도 위치가 지정된다. 도 5에서는 길이가 "1"인 경우의 데이터 포트 예가 나타나 있다. 즉, 데이터 포트는, 확장 레지스터 맵 상에 1 바이트의 어드레스만을 점유하는 것으로 충분하다. 어드레스가 데이터 포트 인지의 여부를 어드레스의 디코드에 의해 식별할 수 있으면 좋고, 실제로 1 바이트 폭의 포트를 통해서 데이터가 전송될 필요는 없으므로, 데이터 전송 성능에는 영향을 미치지 않는다. 이 데이터 포트에 할당된 디바이스로부터 1 블록(512 바이트 단위)의 데이터를 판독할 수 있다. 즉, 1회당 1 블록(512 바이트 단위)의 데이터를 판독할 수 있다. 이 판독된 데이터는, 예를 들어 버퍼(16)에 유지되고, 그 후 호스트(20)에 의해 판독된다.
계속해서 동일한 데이터 포트를 판독하면, 후속의 512 바이트의 데이터를 판독할 수 있다. 데이터 포트로부터 데이터가 판독되는 장소는 확장 기능의 사양에 의해 자유롭게 정의될 수 있다. 데이터 포트 제어와 관련하여, 예를 들어 확장 레지스터 위에 제어 레지스터를 정의해서 제어할 수 있다. 512 바이트의 데이터 블록의 마지막 부분에 CRC 코드가 부가되어, 정확하게 데이터를 받을 수 있었는지 여부가 체크 가능하게 된다.
(확장 레지스터의 기입 커맨드(CMD 49))
도 6은, 확장 레지스터의 기입 커맨드의 일례를 나타낸다. 기입 커맨드(CMD 49)에서, 판독 커맨드(CMD 48)와 동일 부분에는 동일 부호를 붙이고 있다. 기입 커맨드와 판독 커맨드는, "index"에 의해 서로 구별된다. 3 비트의 "RS"와, 9 비트의 "OFS"에 의해, 확장 레지스터의 페이지와 선택된 페이지 내의 데이터의 위치가 지정된다. 9 비트의 "LEN" 필드에 의해, 512 바이트의 확장 레지스터에 기입되는 데이터 길이가 지정된다. 따라서, 512 바이트 내의 임의의 데이터 길이(바이트 단위)의 데이터를 확장 레지스터의 임의의 페이지와 장소에 기입하는 것이 가능하다.
기입 커맨드(CMD 49)는, 커맨드의 인수 중에 마스크 레지스터가 설치된다. 즉, "Mask"는, 8 비트 길이의 마스크 레지스터를 나타낸다. 이 마스크 레지스터에 의해, 1 바이트의 데이터의 기입에서, 1 비트 단위로 동작이 가능하게 되고, 특정한 비트에만 데이터를 기입하는 것이 가능하게 된다. 이로 인해, 1 바이트 내의 비트 동작에서, 판독-변경-기입을 행할 필요가 없다.
마스크 레지스터는, 데이터 길이가 1 바이트일 때, 즉, "LEN=0"(길이 1)의 경우 유효해진다. 데이터가 "1"인 마스크 레지스터 "Mask"의 비트와 관련하여, 데이터가 비트에 기입되고, 데이터가 "0"인 마스크 레지스터 "Mask"의 비트와 관련하여, 이미 세트된 값이 보존된다.
즉, 도 7a에 도시된 데이터를 유지하고 있는 확장 레지스터를 가정하면, 마스크 레지스터의 데이터가 도 7b에 나타내는 바와 같을 경우, 기입 커맨드가 실행 됨으로써, 도 7c에 도시한 바와 같이, 마스크 레지스터의 데이터가 "1"인 비트에 데이터가 기입되고, 데이터가 "0"인 비트에서, 원래의 데이터가 유지된다. 이로 인해, 판독-변경-기입을 행하지 않고, 필요한 비트만 재기입하는 것이 가능하게 된다. "x"로 각각 나타내는 부분이, 새로운 데이터가 기입되는 비트를 나타낸다.
또한, 보다 긴 마스크 데이터를 다른 수단에 의해 공급할 수 있을 경우, 1보다 큰 LEN(LEN>1)의 경우에도 마스크 기입이 가능하지만, 도 7a, 도 7b 및 도 7c에 나타내는 예에서는, 커맨드 인수에 마스크 데이터를 할당하고 있기 때문에, 8 비트 마스트가 사용된다.
(확장 레지스터의 기입 커맨드, 제1 동작 모드)
도 8은, 제1 동작 모드에서 확장 레지스터의 기입 동작의 예를 나타낸다.
메모리 장치(11)은, 이 커맨드(CMD 49)을 수취하면, 응답(R1)을 되돌리고, 그 후, 512 바이트의 데이터 블록을 수취한다.
메모리 장치(11)는, 데이터 블록이 정확하게 받을 수 있었는지 여부를 나타내는 CRC 코드를 호스트(20)에 되돌린다. 그 후, 메모리 장치(11)는 이 커맨드의 처리가 종료될 때까지 비지 상태(busy state)를 나타내는 정보를 되돌리고, 호스트(20)에게 호스트(20)가 다음 커맨드를 발행할 수 있는 타이밍을 통지한다. 데이터 블록은, 버퍼(16)에 보유된다.
커맨드 처리에서, 커맨드의 인수 "RS", "OFS"에 의해, 확장 레지스터 내의 페이지와 위치가 지정되고, "LEN"에 의해 데이터 길이가 지정된다. 버퍼(16)에 유지된 데이터 블록 중, 선두로부터 "LEN"에 의해 지정된 길이의 데이터 항목 각각이 확장 레지스터에 기입된다. "LEN"에 의해 지정된 데이터 길이를 초과하는 길이를 갖는 데이터 블록의 데이터는 무효 데이터로서 파기된다.
유효 데이터 항목을 데이터 블록의 선두로부터 배치함으로써, 호스트 시스템은 유효 데이터 항목을 데이터 블록의 중간에 배치하는 조작이 불필요하게 된다.
(확장 레지스터의 기입 커맨드, 제2 동작 모드)
도 9는, 제2 동작 모드에서 기입 데이터 포트의 동작의 예를 나타낸다.
메모리 장치(11)는, 이 커맨드(CMD 49)를 수취하면, 응답(R1)을 되돌리고, 그 후, 512 바이트의 데이터 블록을 수취한다.
메모리 장치(11)는, 데이터 블록이 정확하게 받을 수 있는지 여부를 나타내는 CRC 코드를 호스트(20)에 돌려준다. 그 후, 메모리 장치(11)는 이 커맨드 처리가 종료될 때까지 비지 상태를 나타내는 정보를 되돌리고, 호스트(20)에게 다음 커맨드를 발행할 수 있는 타이밍을 알린다. 데이터 블록은, 버퍼(16)에 보유된다.
커맨드 처리에서, 커맨드의 인수 "RS", "OFS"에 의해, 확장 레지스터 내의 페이지와 위치가 지정되고, 데이터 포트가 지정된다. 데이터 포트는, 확장 레지스터 맵 상에 1 바이트의 어드레스만을 점유한다면 충분하다. 이 데이터 포트에 할당된 임의의 디바이스에, 버퍼(16)에 유지된 1 블록(512 바이트 단위)의 데이터를 기입할 수 있다. 즉, 1회당 1 블록의 데이터를 기입할 수 있다.
계속해서 동일한 데이터 포트를 기입하면, 후속의 512 바이트의 데이터를 데이터가 할당되는 디바이스에 기입할 수 있다. 데이터 포트의 데이터가 전달되는 장소는, 확장 기능의 사양에 의해 자유롭게 정의를 할 수 있다. 데이터 포트 제어와 관련하여 , 예를 들어 확장 레지스터 위에 제어 레지스터를 정의해서 제어할 수 있다.
(범용 정보 필드의 사용예)
도 10은, 확장 레지스터(31)의 페이지 0에 나타난 범용 정보 필드의 예를 나타낸다. 이 범용 정보 필드를 사용하여, 호스트(20)가 확장 기능을 제어하도록 구성된 드라이버를 특정할 수 있게 함으로써, 확장 기능을 추가했을 경우, 호스트 시스템이 용이하게 확장 기능을 사용할 수 있고, 플러그 앤 플레이를 실현할 수 있다.
도 10을 참조하여, 표준의 호스트 드라이버가 처리해야 할 시퀀스 예를 설명한다.
(스트럭처 리비젼)
스트럭처 리비젼은, 확장 레지스터(31)의 페이지 0의 포맷을 정의하도록 구성된 리비젼이다. 범용 정보 필드에 새로운 정보를 추가했을 경우, 스트럭처 리비젼을 갱신함으로써, 어느 버전의 범용 정보 필드를 유지하고 있을지를 나타낸다. 이전 버전의 기능 호스트 드라이버는, 새로운 필드를 무시한다.
(데이터 길이)
데이터 길이는, 페이지 0에 기록되어 있는 유효 데이터 길이를 나타낸다.
(확장 기능수(= N))
확장 기능수는, 디바이스에 의해 서포트되는 확장 기능수를 나타낸다. 호스트 드라이버는, 기동 시에, 서포트된 기능 수에 상응하는 횟수만큼 확장 기능용의 드라이버가 설치되어 있는지의 여부를 반복적으로 체크한다.
(디바이스(1) 기능 식별 코드)
디바이스(1) 기능 식별 코드에 코드가 설정된 경우, 표준 드라이버를 사용할 수 있는 것을 나타낸다. OS가 표준 드라이버를 서포트하고 있을 경우, 전용 드라이버를 설치하지 않고, 이 디바이스를 사용할 수 있다. 전용 드라이버가 설치되어 있는 경우, 전용 드라이버를 우선 사용한다. 비표준의 기능의 경우, 이 필드에 "0"이 설정된다. 이 경우는, 전용 드라이버에 의해서만 이 기능이 제어된다.
(디바이스(1) 제조자 식별 정보, 디바이스(1) 기능 식별 정보)
디바이스(1) 제조자 식별 정보 및 디바이스(1) 기능 식별 정보는 각각 전용 드라이버를 특정하도록 구성된 정보이며, 이들의 필드에는, 예를 들어 ASCII 문자열을 사용하여 제조자명이나 판매자명, 또는 확장 기능의 식별 정보가 기재된다. 호스트 드라이버는, 이들 정보를 기초로 디바이스(1)의 전용 드라이버가 설치되어 있는지의 여부를 체크한다.
기능 식별 정보로서, 예를 들어 ASCII 문자열을 사용하여 디바이스의 모델 번호, 리비젼 등이 기재된다.
(다음 디바이스의 선두 어드레스)
다음 디바이스의 선두 어드레스는, 다음 디바이스의 디바이스 정보가 기재되어 있는 페이지 0 내의 어드레스를 나타낸다. 호스트 시스템이 이 디바이스를 서포트하고 있지 않은 경우, 이 디바이스는 사용 할 수 없기 때문에, 다음의 디바이스가 체크된다. 이것 이후의 필드는 가변 길이이기 때문에, 이 위치에 정의가 설정된다.
(디바이스(1) 어드레스 포인터 1 내지 X, 길이 필드 1 내지 X)
디바이스(1) 어드레스 포인터 1 내지 X, 및 길이 필드 1 내지 X는, 하나의 기능에 복수의 확장 레지스터 영역을 정의할 수 있는 것을 나타낸다. 각각의 어드레스와 길이를 하기에 열거한다. 길이 필드는 반드시 필수적인 정보일 필요는 없고 이 필드는 생략될 수 있다.
(디바이스(1) 어드레스 포인터 1(개시 어드레스), 길이 1)
디바이스(1)가 사용하는 확장 레지스터의 제1 영역, 확장 레지스터의 페이지 1 내지 7의 공간 내의 선두 어드레스와, 사용되는 확장 레지스터 영역의 크기를 나타낸다.
즉, 1개의 디바이스에, 1개 또는 복수의 확장 레지스터 영역을 할당할 수 있고, 어드레스 포인터는, 페이지 0 이외의 임의의 확장 영역의 장소(개시 어드레스)를 나타낸다. 길이는, 포인터를 선두 어드레스에 가진 확장 레지스터를 점유하는 크기를 나타낸다.
(디바이스(1) 어드레스 포인터 2(개시 어드레스), 길이 2)
디바이스(1)에 할당된 확장 레지스터 내의 제2 영역의 위치와 영역의 크기를 나타낸다. 이에 의해, 예를 들어 표준 드라이버는, 제1 영역만으로 제어하지만, 전용 드라이버는, 제1 영역과 제2 영역을 사용해서 효율적으로 제어하는 것이 가능한 응용이 가능하게 된다.
(디바이스(1) 어드레스 포인터 X(개시 어드레스), 길이 X)
디바이스(1)에 할당된 제X 영역의 위치와 영역의 크기를 나타낸다.
이와 같이, 확장 레지스터 내에 복수의 영역을 정의할 수 있다. 각 영역은 서로 중첩하지 않도록 배치된다. 길이 정보를 사용하여 영역 사이에 중첩이 있는 지의 여부를 체크할 수 있다.
추가 필드가 필요하게 된 경우, 이것 이후에 추가 필드가 추가 정의된다. 새로운 필드를 인식할 수 없는 호스트는, 인식가능한 필드까지 판독하고, 추가 필드는 무시한다. 상기(다음 디바이스의 선두 어드레스)의 필드를 사용하여 스킵할 수 있다.
(판독 커맨드(CMD 48)의 동작)
도 11은, 상기 판독 커맨드(CMD 48)에 대응하는 메모리 장치(11) 내의 컨트롤러(11a)의 동작을 나타낸다.
판독 커맨드를 수신하면, CPU(13)에 의해 커맨드의 인수 "RS", "OFS"가 해석되고, 판독 커맨드가 데이터 포트로부터 판독되는지 여부가 판별된다(ST11). 즉, 확장 레지스터 내의 페이지 "RS"와, 페이지 내의 데이터의 위치가 판별된다. 그 결과, 판독 커맨드가 확장 레지스터로부터 판독된 것이라 판별되었을 경우, 확장 레지스터(31)의 선택된 페이지의 "OFS"에 의해 나타낸 위치로부터 데이터 길이 "LEN"의 데이터가 취득된다(ST12). 이 취득된 데이터는, 버퍼(16)에 세트된다(ST13).
한편, 스텝 ST11에서, 판독 커맨드가 데이터 포트로부터 판별되었을 경우, 제2 동작 모드에서, 확장 레지스터(31)의 선택된 페이지의 "OFS"에 의해 나타낸 위치의 데이터 포트를 통해 예를 들어 SDIO(19)의 특정한 기능으로부터 512 바이트의 데이터가 취득된다(ST14). 이 취득된 데이터는, 버퍼(16)에 세트된다(ST15).
(기입 커맨드(CMD 49)의 동작)
도 12는, 상기 기입 커맨드(CMD 49)에 대응하는 메모리 장치(11) 내의 컨트롤러(11a)의 동작을 나타낸다.
기입 커맨드를 수신하면, CPU(13)(커맨드 처리부(14a))에 의해, 커맨드의 인수 "RS", "OFS"가 해석되고, 기입 커맨드가 데이터 포트에 기입되는지 여부를 판별된다(ST21). 즉, 확장 레지스터 내의 페이지 "RS"와, 페이지 내의 데이터의 위치가 판별된다. 그 결과, 기입 커맨드가 데이터 포트이외의 부분에 기입된 것이라고 판별되었을 경우, 커맨드의 인수 "LEN"이 0("LEN=0")(길이 1)인지의 여부, 즉, 마스크가 유효인지의 여부가 판별된다(ST22). 이 판별의 결과, "LEN"이 0이 아니다(길이가 1보다 크다)고 판별되었을 경우, 확장 레지스터 처리부(14c)에 의해 확장 레지스터의 기입 처리가 행해진다. 즉, 버퍼(16)로부터 "LEN"에 의해 지정된 길이의 데이터가 취득된다(ST23). 이 취득된 데이터는, "RS"에 의해 선택된 확장 레지스터의 페이지의 "OFS"에 의해 지정된 위치에 세트된다.
한편, 상기 스텝 ST22에서, "LEN"이 0이고("LEN=0")(길이가 1), 마스크가 유효하다고 판별되었을 경우, 확장 레지스터 처리부(14c)에 의해 버퍼(16)로부터 1 바이트의 데이터와, 1 바이트의 마스크가 취득된다(ST25). 이 1 바이트의 데이터와, 1 바이트의 마스크에 의해, 도 7a, 도 7b 및 도 7c에 나타내는 마스크 동작이 실행되고, "RS"에 의해 선택된 확장 레지스터의 페이지의 "OFS"에 의해 지정된 위치의 데이터의 일부가 재기입된다(ST26).
또한, 상기 스텝(ST21)에서, 기입 커맨드가 데이터 포트에 기입된다고 판별되었을 경우, 버퍼(16)로부터 512 바이트의 데이터가 취득된다(ST27). 이 취득된 데이터는, 확장 레지스터(31)의 선택된 페이지의 "OFS"에 의해 나타낸 위치의 데이터 포트를 통해 예를 들어 SDIO(19)의 특정한 기능에 전송된다(ST28).
(호스트 드라이버 처리)
도 13는, 호스트(20)의 처리를 나타낸다. 호스트(20)에 메모리 장치(11)가 접속되는 경우, 메모리 장치(11)가 기동되고, 메모리 장치(11)의 RAM(15)에 확장 레지스터(31)가 전개된다. 호스트 디바이스(11)는, 호스트 드라이버를 사용하여 우선 판독 커맨드(CMD48)를 발행하고, 확장 레지스터(31)의 페이지 0의 데이터를 취득한다(ST31). 이어서, 취득한 페이지 0의 스트럭처 리비젼이 확인되고, 어느 버전의 범용 정보 필드를 유지하고 있을지가 확인된다(ST32). 이 후, 서포트 기능수 N과, 디바이스 정보의 선두 어드레스가 취득된다(ST33, ST34).
계속해서, 호스트(20) 내에, 취득한 확장 기능에 대응하는 전용 기능 드라이버가 설치되어 있는지의 여부가 체크된다(ST35, ST36). 이 체크의 결과, 전용 기능 드라이버가 없을 경우, 확장 레지스터의 페이지 0에 기재된 기능 식별 코드가 "0"인지의 여부가 더 판별된다(ST37). 그 결과, 기능 식별 코드가 "0"일 경우,이 확장 기능은 서포트되지 않기 때문에, 이 디바이스는 사용할 수 없다고 인식되어, 다음 디바이스에 대한 드라이버의 검색으로 처리가 시프트된다(ST34).
또한, 스텝 ST37의 판별의 결과, 기능 식별 코드가 "0"이 아닐 경우, 호스트(20)에 설치되어 있는 표준 기능 드라이버가 검색된다(ST38, ST39). 그 결과, 표준 기능 드라이버가 없을 경우, 이 확장 기능은 서포트되지 않기 때문에, 디바이스는 사용할 수 없다고 인식되어, 다음 디바이스에 대한 드라이버의 검색으로 처리가 시프트된다(ST34).
또한, 스텝 ST35, ST36의 검색의 결과, 표준 기능 드라이버가 있을 경우 및 스텝 ST35, ST36의 검색의 결과, 전용 기능 드라이버가 있을 경우, 페이지 0에 기재된 디바이스의 어드레스 및 길이수가 취득된다(ST40). 이 동작이 어드레스 및 길이수에 대응하는 수만큼 실행된다(ST41).
이 후, 검색된 전용 기능 드라이버 또는 표준 기능 드라이버가 호스트(20)의 예를 들어 하드 디스크(25)로부터 RAM(24)에 로드되고, 페이지 0에 기재된 1개 또는 복수의 확장 영역의 어드레스 포인터(개시 어드레스)가 기능 드라이버에 전달되고 확장 기능이 초기화된다(ST42). 상기 어드레스 및 길이 정보는, 상기 RAM(24)에 로드된 기능 드라이버를 실행할 때에 전달된다. 표준 기능 드라이버와 전용 기능 드라이버는, 전달 가능한 어드레스, 길이 정보 항목의 수가 서로 상이할 가능성이 있지만, 페이지 0에 등록된 순서대로 전달할수 있는 항목의 수만큼 전달된다. 따라서, 최초에 등록된 어드레스 및 길이 영역은, 공통적인 기능 레지스터로서 작용하고, 후에 등록될 어드레스 및 길이 영역은 옵션적인 역할을 할 수 있다.
초기화는 기능 드라이버가 행한다. 즉, 기능 드라이버는, 호스트 드라이버로부터 전달된 개시 어드레스를 기초로, 그 기능에 할당된 확장 레지스터에 액세스해서 디바이스를 초기화한다. 초기화 동작에서는, 디바이스의 소비 전력을 고려 할 필요가 있다. 이는, 호스트가 공급 가능한 전력의 범위 내에서 디바이스를 사용할 필요가 있기 때문이다. 디바이스가 복수의 파워 모드를 갖고 있는 경우, 호스트가 공급 가능한 디바이스 파워보다 작은 파워 모드를 선택할 필요가 있다. 호스트 시스템은, 별개의 수단에 의해 호스트 시스템이 공급 가능한 전력을 기능 드라이버에 공급하여, 파워 모드의 선택이 가능하게 된다.
상기 스텝 ST34 내지 ST43의 동작이, 서포트 기능수 N에 도달할 때까지 반복된다(ST43).
또한, 페이지 0에 예를 들어 새로운 필드가 추가되었을 경우, 새로운 필드의 처리가 스텝 ST40 및 ST41 사이에 추가되는 점에 주목해야 한다. 새로운 필드를 식별할 수 없는 호스트 드라이버는 그 필드를 스킵하도록 구성된다.
상기한 바와 같이 호스트(20)는 확장 레지스터(31)의 페이지 0의 정보를 취득하고, 이 정보에 기초하여, 드라이버를 검색함으로써, 플러그 앤 플레이를 실현할 수 있다. 또한, 종래 경우와 달리 확장 레지스터의 고정 위치를 결정할 필요가 없이 디바이스 벤더는 임의의 확장 레지스터 위치에 기능을 정의할 수 있기 때문에, 기능 확장을 용이하게 실현할 수 있다.
도 14는 도 13의 변형예를 나타내는 것이며, 도 13과 동일 부분에는 동일 부호를 붙이고, 상이한 부분에 대해서만 설명한다.
도 14에서, 전용 기능 드라이버와, 표준 기능 드라이버의 검색 처리가 서로 상이하다. 즉, 스텝 ST34에서, 디바이스 정보의 선두 어드레스가 취득된 후, 우선, 기능 식별 코드가 "0"인지의 여부가 판별된다(ST51). 판별의 결과, 기능 식별 코드가 "0"이 아닐 경우, 즉, 기능이 표준 기능일 경우, 전용 드라이버를 사용할 지의 여부가 판별된다(ST53). 이 결과, 전용 드라이버를 사용하지 않는 경우, 표준 기능 드라이버가 검색된다(ST54, ST55). 이 검색의 결과, 표준 기능 드라이버가 없을 경우 또는 스텝 ST53에서, 전용 기능 드라이버를 사용한다고 판별되었을 경우, 전용 기능 드라이버가 검색된다(ST52, ST56). 이 검색의 결과, 전용 기능 드라이버가 있을 경우 또는 스텝 ST55에서, 표준 기능 드라이버가 있을 경우, 전술한 바와 같이, 어드레스 및 길이수가 취득된다(ST40).
상기 동작에 의해서도, 도 13의 경우와 마찬가지로, 플러그 앤 플레이를 실현할 수 있다.
또한, 상기 설명에서, 확장 기능 드라이버는, 호스트(20) 내에 설치되고, 호스트(20) 내측를 검색한다고 설명했다. 그러나, 구성은 이것에 한정되는 것이 아니라, 확장 기능 드라이버는, 메모리 카드(11)에 저장되어 있어도 좋다. 이 경우, 메모리 카드(11)도 확장 기능 드라이버의 검색 대상으로 된다.
도 33은 카드가 옵션을 갖고 기능 드라이버가 옵션에 따라 상이할 때의 기능 드라이버를 즉정하는 정보를 도시한다. 도 33에 도시된 바와 같이, 기능 식별 코드는 2 종류의 정보, 옵션 코드 및 기능 코드를 나타낸다. 기능 코드는 표준화된 특정 기능 사양을 나타내고, 옵션의 종류는 기능 사양에 의해서도 정의된다. 옵션 코드는 카드에서 실행되는 옵션이 기능 드라이버에 영향을 미칠지의 여부를 나타내는 정보이다. 이러한 예는 CMD 48/49가 서포트되는지의 여부에 대한 정보 및 CMD 52/53가 서포트되는지의 여부에 대한 정보를 도시한다. 옵션 코드가 1 바이트인 경우, CMD 48/49를 사용하는 드라이버는 "01h"("h"는 16진수를 나타냄)로 나타내고, CMD 52/53을 사용하는 드라이버는 "02h"로 나타낸다. 호스트 시스템에 기능 드라이버를 설치하는 경우, 이러한 코드는 코드를 실행하는 기능 드라이버로서 등록된다. 2개의 드라이버가 설치된 호스트 시스템은 양쪽 옵션 코드 "01h" 및 "02h"를 갖는다.
CMD 48/49를 사용하기 위해 설계된 카드에서, "01h"는 옵션 코드에 나타낸다. 호스트 시스템은 이 옵션 코드에 기초한 CMD 48/49에 대해 드라이버를 선택한다. 또한, CMD 52/53을 사용하기 위해 설계된 카드에서, "02h"는 옵션 코드에 나타낸다. 호스트 시스템은 이 옵션 코드에 기초한 CMD 52/53에 대해 드라이버를 선택한다.
호스트 드라이버가 옵션에 대한 정보를 가질 필요가 없고, 범용 호스트 드라이버가 형성될 수 있는 것은 중요하다. 옵션에 대한 정보는 기능 드라이버가 설치되는 경우 호스트 시스템에 제공된다. 호스트 드라이버가 옵션에 대한 정보를 필요치 않으므로, 호스트 드라이버는 새로운 카드가 설치되는 경우 호스트 드라이버를 갱신할 필요가 없다. 기능 사양은 옵션의 내용을 자유롭게 결정할 수 있고, 호스트 시스템에 옵션의 조합에 대응하는 2개 이상의 기능 드라이버를 설치함으로써, 옵션 기능 드라이버는 카드의 서포트 상태에 따라 선택될 수 있다.
(SDIO에서의 확장 레지스터에 대한 액세스)
도 15는 SDIO에서의 확장 레지스터에 대한 액세스를 나타낸다.
SD 메모리 카드와 호환가능한 호스트 컨트롤러는 커맨드 CMD 48, CMD 49를 사용해서 확장 레지스터를 액세스하고, 확장 기능을 제어할 수 있다. 즉, 호스트 컨트롤러는 고정 길이 블록 전송 및 싱글 블록 전송을 서포트하고 있다.
한편, SDIO 카드와 호환가능한 호스트 컨트롤러는 커맨드 CMD 48 및 CMD 49를 사용해서 확장 레지스터를 액세스할 수 있으며, 확장 레지스터가 SDIO의 각 펑션 영역에 맵핑됨으로써, 호스트 컨트롤러가 SDIO 커맨드 CMD 52(기입 커맨드), CMD 53(데이터 전송 커맨드)로부터도 액세스하는 것이 가능하게 된다. SDIO 커맨드를 사용함으로써, 가변 블록 길이 전송, 멀티 블록 전송을 서포트할 수 있고, 드라이버의 최적화를 도모할 수 있다. 커맨드 CMD 48, CMD 49를 사용하여 액세스할 경우, SDIO의 공간상의 맵핑에 관계없이, 확장 레지스터를 액세스할 수 있다.
구체적으로는, 확장 레지스터를 SDIO에서 사용하는 경우, 확장 레지스터의 각 페이지는 각 펑션 영역에 맵핑된다. 도 15에 도시한 예의 경우, 확장 레지스터의 페이지 0은 펑션 영역(61)의 펑션 0에 맵핑되고, 페이지 1 및 페이지 2는 펑션 1에 맵핑되며, 페이지 3은 펑션 2에 맵핑된다. 펑션 0은 각 페이지의 기능 레지스터가 SDIO 맵의 어디에 배치되어 있을지를 나타내는 어드레스 정보를 보유하고 있다. 따라서, 이 어드레스 정보를 사용함으로써, 커맨드 CMD 48 및 CMD 49을 사용한 드라이버뿐만 아니라, 커맨드 CMD 52 및 CMD 53을 사용한 드라이버에 의해, 확장 레지스터의 각 페이지를 액세스하는 것이 가능하다.
또한, 호스트(20)는 확장 레지스터의 제1 페이지에 기재된 범용 정보 필드로부터, 확장 기능에 할당된 확장 레지스터의 위치 정보를 드라이버에 전달한다는 것에 유의하여야 한다. 이에 의해, 확장 기능이 임의의 위치에 배치되어 있어도 제어 가능하게 된다.
또한, 호스트(20)가 전술한 플러그 앤 플레이에 의해, 메모리 장치(11)과 데이터 전송이 가능하게 된 상태에서, 상기 커맨드 CMD 48, CMD 49, CMD 52, CMD 53을 사용하여, 확장 기능부로서의 SDIO와 호스트(20)간의 데이터 전송이 가능하게 된다.
상술한 실시 형태에 따르면, 메모리 장치(11)의 RAM(15) 내에 복수 페이지의 확장 레지스터가 제공되고, 이들 확장 레지스터(31)의 페이지 0에, 특정 드라이버를 인식하도록 구성된 표준적인 범용 정보 필드가 설정된다. 따라서, 호스트(20)는 확장 레지스터(31)의 페이지 0의 범용 정보 필드를 참조하여 드라이버를 설정함으로써, 플러그 앤 플레이를 실현할 수 있다.
또한, 확장 레지스터를 액세스하기 위한 전용의 커맨드 CMD 48 및 CMD 49를 정의함으로써, 메모리용 호스트 컨트롤러도 추가 기능을 효율적으로 제어할 수 있다.
게다가, 데이터의 전송은 512 바이트의 고정 블록 길이의 전송으로 이루어져 있기 때문에, 종래의 메모리용 호스트 컨트롤러로부터 확장 레지스터를 액세스하기 위한 전용 커맨드를 발행할 수 있다.
또한, 커맨드의 인수로서 유효 데이터 길이의 정보 또는 기입시의 마스크 기능을 설정하고 있기 때문에, 데이터의 일부를 재기입할 때, 판독-변경-기입이 불필요하게 되어, 용이하게 데이터의 일부를 재기입할 수 있다.
또한, SDIO 카드와 호환가능한 호스트 컨트롤러는 데이터 포트를 서포트하고 있기 때문에, 어떤 특정 디바이스에 대한 데이터 전송을 행할 수 있고, 확장 레지스터 공간의 소비량을 저감할 수 있다.
또한, 데이터 포트를 사용함으로써, SDIO에서 복수 블록에 기초한 버스트 전송 커맨드를 서포트할 수 있고, 메모리 이외의 디바이스의 데이터 전송을 효율적으로 행할 수 있다.(본 실시 형태에서는 기재되어 있지 않다고 할지라도, 메모리에 있어서도, 복수 블록에 기초한 버스트 전송 커맨드를 정의하면, 복수 블록 전송은 가능하게 된다.)
또한, SDIO 카드와 호환가능한 호스트 컨트롤러에 있어서는, SDIO의 액세스 커맨드를 사용하여, 확장 레지스터를 액세스함으로써, 짧은 길이 블록 전송과 멀티 블록 전송과 호환가능하게 된다. 따라서, 추가로 최적화한 드라이버를 생성하는 것이 가능하게 된다.
또한, 카드 벤더에 의해, 확장 레지스터상의 임의의 위치에 추가 기능을 제어하는 레지스터를 할당하는 것을 가능하게 하고, 실장한 레지스터의 어드레스 정보를 페이지 0의 범용 정보 필드로부터 제공하고 있다. 따라서, 정의된 기능 레지스터를 재배치할 수 있다. 따라서, 종래 표준화가 필요했던 어드레스 할당을 정하는 작업이 불필요하게 되어, 디바이스의 제조를 용이하게 할 수 있다.
또한, 확장 레지스터의 구성은 복수 페이지에 한정되는 것이 아니라, 1 페이지로 구성된 확장 레지스터로 작성할 수 있고, 1 페이지 내에서, 상기 페이지 0과 페이지 1 내지 7에 대응하는 영역을 설정하는 것도 가능하다.
(리비젼 확인에 의한 사용 가능한 기능의 결정)
상술한 각 기능은, 그 기능에서 정의한 확장 레지스터 세트에 리비젼을 나타내는 레지스터를 구비한다. 또한, 기능 드라이버는 대응하는 리비젼을 드라이버 자신이 알고 있다. 어떤 기능을 리비젼 향상에 의해 확장할 경우, 종래의 기능과 호환성을 유지하면서 기능을 확장함으로써 호환성을 유지할 수 있다. 리무버블 카드를 사용하는 경우, 카드의 기능 리비젼과, 호스트 시스템에 설치되어 있는 기능 드라이버의 리비젼의 조합에 의해 사용 가능한 기능이 결정된다.
도 16은 리비젼 관리의 예를 나타낸다. 도 16은 카드와 기능 드라이버의 리비젼에 따라, 이용 가능한 기능의 예를 나타낸다. 예를 들어, 3개의 리비젼(A<B<C)이 있을 경우를 설명한다. 이 경우, C는 B의 기능을 포함하고, B은 A의 기능을 포함하는 확장이 행해진다. 리비젼 관리는 기능 드라이버에 의해 행해진다. 기능 드라이버 자신은 자신의 리비젼을 알고 있다. 이용 가능한 기능은 도 16에 도시한 바와 같은 조합에 기초하여 결정된다. 모든 기능 드라이버 리비젼에서, 리비젼 A의 기능은 사용할 수 있고, 리비젼 B의 기능을 사용하기 위해서는, 기능 드라이버 리비젼이 B이상일 필요가 있다.
(제2 실시 형태)
도 17 및 도 18은 각기 제2 실시 형태에 관한 판독 커맨드 CMD 48 및 기입 커맨드 CMD 49의 필드 구성의 일례를 나타낸다. 또한, 도 17 및 도 18에서, 도 3 및 도 6과 동일 부분에는 동일 부호를 부여하고, 설명은 생략한다.
도 17 및 도 18에 나타내는 CMD 48 및 CMD 49는 도 3 및 도 6에 나타내는 CMD 48 및 CMD 49이고, "RS"과 "OFS"의 12 비트로 구성된 어드레스 필드를 "FNO", "Addr"로 구성되는 20 비트로 확장함으로써, SDIO와의 친화성/호환성을 고려하고 있다.
"MIO" 필드는 메모리 공간과 SDIO 공간을 서로 분리하는 비트이며, 서로 독립하여 확장 레지스터를 정의할 수 있다. 따라서, 확장 레지스터를 정의할 때에 양쪽의 간섭을 방지할 수 있다. "MIO"가 0(MIO=0)일 때, 메모리용의 확장 레지스터를 액세스할 수 있고, "MIO"가 1(MIO=1)일 때, SDIO용의 확장 레지스터를 액세스할 수 있다.
"FNO/FID" 필드는 "MIO" 필드의 값에 의해, "FNO"과 "FID" 중 한쪽에 설정된다. "MIO"가 1(MIO=1)인 경우, "FNO"는 기능 번호를 나타내는 3 비트 필드이며, "MIO"가 0(MIO=0)인 경우, "FID"는 기능 식별 정보를 나타내는 4비트 필드이다. 비트수가 다르기 때문에, 다른 심볼로 표기되어 있다. 상기 범용 정보 필드를 판독하는 경우에는, "FNO/FID"는 0으로 설정된다("FNO/FID"=0). 호스트 드라이버가 이 필드를 0으로 설정하면 충분하다. "FID"가 메모리 공간에서는 사용되지 않지만, "FNO"는 SDIO 공간에서 8개의 기능 공간을 구별하기 위해서 사용된다.
즉, "FNO/FID"(4비트)에 관련하여, "MIO"가 1일 때("MIO"=1), 비트 38 내지 36은 "FNO"를 나타내고, 비트 35는 항상 "0"으로 여겨진다.
또한, "FNO/FID"에 관련하여, "MIO"가 0(MIO=0)일 때, 비트 38 내지 36은 "FID"를 나타낸다. "FID"는 메모리 공간을 증가시키지 않고, 기능을 식별하기 위해서 사용된다.
(메모리 공간을 "FID"에 의해 증가시킬 수도 있으며, 이에 제한되지 않는다.)
카드에 기능을 실장할 때, "FID/FNO"에 고유한 값이 할당되고, 후술하는 바와 같이, 범용 정보의 필드 정의에 표시된다. 따라서, 데이터 포트에 커맨드가 발행시, 기능 드라이버가 인수로서 "FID/FNO"를 설정함으로써, 카드는 커맨드가 지정한 기능에 대한 커맨드인 것을 확인할 수 있다. 따라서, 잘못된 데이터 포트의 지정에 의해, 오기입에 의한 데이터 파괴 및 오동작을 방지할 수 있고, 안전성이 보장된다.
호스트가 어드레스 정보로부터 기능을 특정하려고 하면, 호스트는 어드레스 정보를 디코드를 해야만 하지만, "FID/FNO"만 사용하여 기능 식별이 가능하고, 호스트 드라이버의 제어를 간소화할 수 있다. 즉, 동일한 커맨드가 복수의 기능에 의해 혼재해서 사용되기 때문에, 호스트 및 카드에서, 각 기능을 식별하는 것이 가능하도록, "FID/FNO"가 설정되어 있다.
"Addr" 필드(17비트)는 어드레스이며, 128KB의 공간을 액세스할 수 있다. "Addr"의 상위 8 비트는, 페이지 번호로서 사용된다. 8 비트에 의해 페이지 0 내지 페이지 7 중 한 페이지가 선택된다. 하위 9 비트에 의해, 선택된 페이지 내의 512 바이트의 블록이 액세스된다. 즉, "MIO", "FNO"("MIO"=1), "Addr"을 사용함으로써, 확장 레지스터의 위치가 지정된다.
도 17에 나타내는 "Len" 필드(8 비트)는 유효 데이터 길이를 나타낸다.
또한, 도 18에 나타내는 기입 커맨드(CMD 49)에 있어서, "MW"는, 마스크 기입 모드를 지정하는 비트이다. "MW"가 0일 때("MW"=0), 마스크는 디세이블되고, "MW"가 1일 때("MW"=1), 마스크는 인에이블된다.
또한, "Len/Mask" 필드에서, 마스크가 디세이블("MW"=0)일 때, 데이터 길이가 9 비트(16 내지 08)로 설정된다. 또한, 마스크가 인에이블("MW"=1)일 때, 데이터 길이는 1로 설정되고, 9 비트(16 내지 08) 중 하위 8 비트에 의해 기입 동작이 상술한 바와 같이 제어된다. 즉, 8 비트의 각 비트가 "1"일 때, 레지스터의 데이터가 기입되고, 각 비트가 "0"일 때, 레지스터의 비트는 변화되지 않고, 이미 설정된 값이 유지된다.
제2 실시 형태에서는, SDIO 커맨드 CMD 52, CMD 53에 의해 액세스 가능한 공간과, CMD 48, CMD 49에 의해 액세스 가능한 SDIO 공간을 서로 일치시킬 수 있다. 즉, 어느쪽의 커맨드를 사용해도 같은 확장 레지스터 세트를 액세스하는 것이 가능하게 된다.
(확장 레지스터의 판독 커맨드, 제1 동작 모드)
도 19는 확장 레지스터의 판독 커맨드(CMD 48)의 제1 동작 모드에 의한 확장 레지스터의 판독 동작의 예를 나타낸다.
도 19에 도시한 바와 같이, 메모리 장치(11)는 호스트(20)로부터 커맨드(CMD 48)를 수신하면, 응답(R1)을 호스트(20)에 되돌려 보내고, 그 후, 확장 레지스터(31)로부터 512 바이트의 데이터 블록을 판독한다.
구체적으로는, "FNO"(MIO=1), "Addr"에 의해, 페이지 내의 판독해야 할 데이터의 위치가 지정되고, 판독해야 할 유효 데이터 길이가 "Len"에 의해 지정된다. 이와 같이 하여, 지정된 확장 레지스터 내의 데이터가, 512 바이트의 데이터 블록의 선두에 설정되고나서, 판독된다. 512 바이트의 데이터 블록 중에서, "Len"에 의해 지정된 데이터 길이를 초과하는 데이터는 무효 데이터가 된다. 데이터 블록의 마지막에는 CRC 코드가 부가되어, 정확하게 데이터를 받을 수 있었는지를 체크하는 것이 가능하게 되어 있다(무효 데이터를 포함해서 데이터 체크를 행한다).
도 20은 제2 동작 모드에 의한 데이터 포트의 판독 동작의 예를 나타낸다.
메모리 장치(11)는 이 커맨드(CMD 48)를 수취하면, 응답(R1)을 되돌려 보내고, 그 후에 512 바이트의 데이터 블록을 되돌려 보낸다.
메모리 장치(11)는 커맨드의 인수 "FID/FNO"가 할당된 확장 레지스터 세트와 일치하는지의 여부를 검증한다. 확장 레지스터 세트는 "FNO"("MIO"=1)과 "Addr"에 의해 특정된다. "FID/FNO"와 확장 레지스터 세트가 서로 일치할 경우, 커맨드의 인수 "Addr"에 의해, 확장 레지스터의 선택된 페이지 내의 위치가 지정된다. 데이터 포트는 확장 레지스터 맵 상에서, 1 바이트의 어드레스를 점유하기만 하면 충분하다. 어드레스가 데이터 포트 인지의 여부는 어드레스의 디코드에 의해 식별하면 충분하고, 실제로 1 바이트 폭의 포트를 통해서 데이터가 전송될 필요는 없으므로, 데이터 전송 성능에는 영향을 미치지 않는다. 이 데이터 포트에 할당된 디바이스로부터 한 블록(512 바이트 단위)의 데이터를 판독할 수 있다. 즉, 1회당, 1블록(512 바이트 단위)의 데이터를 판독할 수 있다. 이 판독된 데이터는 예를 들어, 버퍼(16)에 보유되고나서, 호스트(20)에 의해 판독된다.
계속해서 동일한 데이터 포트를 판독하면, 계속된 512 바이트의 데이터를 판독할 수 있다. 데이터 포트로부터 판독하는 데이터를 어디로부터 가져올지는, 확장 기능의 사양에 의해 자유롭게 정의를 할 수 있다. 데이터 포트 제어에 관련하여, 예를 들어 확장 레지스터상에 제어 레지스터를 정의해서 제어할 수 있다. 512 바이트의 데이터 블록의 마지막 부분에 CRC 코드가 부가되어, 정확하게 데이터를 수신할 수 있었던 것인지의 여부를 체크할 수 있다.
또한, 상기 검증의 결과로서, "FID/FNO"가 기능에 할당된 값과 불일치할 경우, 데이터 전송 동작은 실행되지 않고, 데이터 블록은 전송되지 않는다.
(확장 레지스터의 기입 커맨드, 제1 동작 모드)
도 21은 확장 레지스터의 기입 커맨드의 일례를 나타낸다.
메모리 장치(11)는 이 커맨드(CMD 49)를 수취하면, 응답(R1)을 되돌려 보내고, 그 후, 512 바이트의 데이터 블록을 수신한다.
메모리 장치(11)는 데이터 블록이 정확하게 받을 수 있었던 것인지의 여부를 나타내는 CRC 코드를 호스트(20)에 복귀시킨다. 그 후, 메모리 장치(11)는 이 커맨드의 처리가 종료될 때까지 비지 상태를 나타내는 정보를 복귀시키고, 호스트(20)가 다음 커맨드를 발행할 수 있는 타이밍을 호스트(20)에 알린다. 데이터 블록은 버퍼(16)에 보유된다.
기입 커맨드(CMD 49)에 있어서, 판독 커맨드(CMD 48)와 동일 부분에는 동일 부호를 붙이고 있다. 기입 커맨드와 판독 커맨드는 "index"에 의해 서로 구별된다. 확장 레지스터에서, "FNO"("MIO"=1)과 17비트의 "Addr"에 의해, 선택된 페이지 내의 데이터의 위치가 지정된다. 또한, 9 비트의 "Len" 필드에 의해, 512 바이트의 확장 레지스터에 기입될 데이터 길이가 지정된다. 따라서, 512 바이트 내의 임의의 데이터 길이(바이트 단위)의 데이터를 확장 레지스터의 임의의 페이지와 위치에 기입하는 것이 가능하다.
기입 커맨드(CMD 49)에서, 상술한 바와 같이, 커맨드의 인수내에 마스크 레지스터가 제공된다. 즉, "Mask"는 8 비트 길이의 마스크 레지스터를 나타낸다. 이 마스크 레지스터에 의해, 1 바이트의 데이터 기입에 있어서, 비트 단위의동작이 가능하게 되고, 특정한 비트에만 데이터를 기입하는 것이 가능하게 된다. 따라서, 1 바이트 내의 비트 동작시, 판독-변경-기입을 행할 필요가 없다. 마스크 레지스터는, 데이터 길이가 1 바이트일 때, 즉, "Mask"의 상위 1비트가 "1"일 때 유효하게 된다.
(확장 레지스터의 기입 커맨드, 제2 동작 모드)
도 22는 제2 동작 모드시 수행되는 기입 데이터 포트의 동작예를 나타낸다. 메모리 장치(11)는, 커맨드(CMD 49)의 수신시, 응답(R1)을 되돌려 보낸다. 그 후, 메모리 장치(11)는, 커맨드의 인수 "FID/FNO"가 확장 레지스터 세트와 일치하는지의 여부를 검증한다. 확장 레지스터 세트는 "FNO"("MIO"=1)와 "Addr"에 의해 특정된다. "FID/FNO"와 확장 레지스터 세트가 서로 일치하고 있을 경우, 커맨드의 인수 "Addr"에 의해, 확장 레지스터의 선택된 페이지 내의 위치를 지정하고, 512 바이트의 데이터 블록을 수신한다.
계속해서, 메모리 장치(11)는 데이터 블록이 정확하게 받을 수 있었던 것인지의 여부를 나타내는 CRC 코드를 호스트에게 되돌려 보낸다. 그 후, 메모리 장치(11)는 커맨드 처리가 끝날 때까지 비지 상태를 나타내는 정보를 되돌려 보내고, 호스트(20)에게 호스트(20)가 다음 커맨드를 발행할 수 있는 타이밍을 알린다. 데이터 블록은 버퍼(16)에 보유된다.
커맨드 처리에 있어서, 커맨드의 인수 "Addr"에 의해, 확장 레지스터 내의 페이지 및 위치가 지정되고, 데이터 포트가 지정된다. 데이터 포트가 확장 레지스터 맵 상에서, 1 바이트의 어드레스를 점유하는 것만으로도 충분하다. 이 데이터 포트에, 버퍼(16)에 보유된 1블록(512 바이트 단위)의 데이터를 어떤 할당된 디바이스에 기입할 수 있다. 즉, 1회당 1 블록의 데이터를 기입할 수 있다.
계속해서 동일한 데이터 포트를 기입하면, 계속되는 512 바이트의 데이터를 할당한 디바이스에 기입할 수 있다. 데이터 포트의 데이터를 전달될 위치는 확장 기능의 사양에 의해 자유롭게 정의를 할 수 있다. 데이터 포트 제어는 예를 들어, 확장 레지스터상에 제어 레지스터를 정의함으로써 제어할 수 있다.
또한, 상기 검증의 결과, "FID/FNO"가 기능에 할당된 값과 불일치할 경우, 데이터 전송 동작은 실행되지 않고, 데이터 블록은 파기된다.
(범용 정보 필드의 사용예)
도 23은 제2 실시 형태에 관한 FID의 지정에 관한 예를 나타낸 도면이다. 범용 정보 필드의 의미는 도 10과 같다. 도 10과 상이한 점은, 확장 어드레스, 길이 필드의 포맷에서, "FID/FNO"의 값을 설정하기 위해서 4비트 필드가 확보되어 있는 것에 있다. 각 기능마다 고유한 "FID/FNO"가 설정된다. 카드에 실장된 각 기능은 자신의 "FID/FNO"을 인식하고 있다.
(판독 커맨드(CMD 48)의 동작)
도 24는 도 19 및 도 20에 나타내는 판독 커맨드(CMD 48)에 대응하는 메모리 장치(11) 내의 컨트롤러(11a)의 동작을 나타낸다.
판독 커맨드가 수신될 때, CPU(13)에 의해, 커맨드의 인수 "FID/FNO"가 할당된 확장 레지스터 세트와 일치하는지의 여부가 검증된다(ST51). 확장 레지스터 세트는 "FNO"("MIO"=1)와 "Addr"에 의해 특정된다. 검증의 결과, 이들 양자가 서로 일치하고 있을 경우, 커맨드의 인수 "Addr"가 해석되고, 판독 커맨드가 데이터 포트로부터 판독되는지의 여부가 판별된다(ST52). 즉, "FNO"("MIO"=1)와 "Addr"에 의해 데이터 포트로서 정의된 어드레스인지의 여부가 판별된다.
이 결과, 어드레스가 데이터 포트로서의 어드레스가 아니고, 커맨드가 확장 레지스터의 판독이라고 판별되었을 경우, 제1 동작 모드에서, 위치 "Addr"에 기초하여, 확장 레지스터(31)의 선택된 페이지로부터 데이터 길이 "Len"의 데이터가 취득된다(ST53). 이 취득된 데이터 길이 "Len"의 데이터는 버퍼(16)의 512 바이트의 데이터 블록에 세트된다(ST54).
한편, 스텝 ST52에서, 판독 커맨드가 데이터 포트로부터 판독되었다고 판별되었을 경우, 제2 동작 모드에서 확장 레지스터의 선택된 페이지의 미리 설정된 위치의 데이터 포트를 거쳐, 예를 들어 SDIO(19)의 특정한 기능으로부터 512 바이트의 데이터가 취득된다(ST55). 이 취득된 데이터는 버퍼(16)의 512 바이트의 데이터 블록에 설정된다(ST56).
상기 스텝 ST51의 판별의 결과, 상술한 커멘트가 데이터 포트와 관련된 커멘트가 아닐 경우, 처리가 종료된다.
(기입 커맨드(CMD 49)의 동작)
도 25는 상기 기입 커맨드(CMD 49)에 대응하는 메모리 장치(11) 내의 컨트롤러의 동작을 나타낸다.
기입 커맨드가 수신될 때, CPU(13)(커맨드 처리부(14a))에 의해, 커맨드의 인수 "FID/FNO"가 할당된 확장 레지스터 세트와 일치하는지의 여부를 검증한다(ST61). 확장 레지스터 세트는 "FNO"("MIO"=1)와 "Addr"에 의해 특정된다. 검증의 결과, 이들 양자가 일치하고 있을 경우, 커맨드의 인수 "Addr"가 해석되고, 기입 커맨드가 데이터 포트에 기입되는지의 여부가 판별된다(ST62). 즉, 위치가 "FNO"("MIO"=1)와 "Addr"에 의해 미리 설정된 데이터 포트의 위치인지의 여부가 판별된다.
이 결과, 기입 커맨드가 데이터 포트이외라고 판별되었을 경우, 커맨드의 인수 "MW"가 "1"인지의 여부, 즉, 기입이 마스크 기입인지의 여부가 판별된다(ST63).
이 판별의 결과, 기입이 마스크 기입이 아니다고 판별되었을 경우, 확장 레지스터 처리부(14c)에 의해 확장 레지스터의 기입 처리가 행해진다. 즉, 버퍼(16)의 데이터 블록으로부터 "Len"에 의해 지정된 길이의 데이터가 취득된다(ST64). 이 취득된 데이터는 "Addr"에 기초하여, 확장 레지스터의 선택된 페이지의 지정된 위치에 설정된다(ST65).
한편, 상기 스텝 ST63에서, "MW"는 1("MW"="1")이며, 기입이 마스크 기입이라고 판별되었을 경우, 확장 레지스터 처리부(14c)에 의해 버퍼(16)의 데이터 블록으로부터 1 바이트의 데이터가 취득되고, 인수로부터 1 바이트의 마스크가 취득된다(ST66).
계속해서, 1 바이트의 데이터와, 1 바이트의 마스크에 의해, 도7의 (a), (b) 및 (c)에 나타내는 마스크 동작이 실행되고, "Addr"에 의해 지정된 확장 레지스터의 소정 페이지의 소정의 위치에 1 바이트의 마스크 동작이 실행될 때 구해진 데이터가 설정된다(ST67).
또한, 상기 스텝 ST62에서, 기입 커맨드가 데이터 포트라고 판별되었을 경우, 버퍼(16)의 데이터 블록으로부터 512 바이트의 데이터가 취득된다(ST68). 이 취득된 데이터는, 확장 레지스터의 지정된 페이지의 위치의 데이터 포트를 거쳐, 예를 들어 SDIO(19)의 특정한 기능에 전송된다(ST69).
상기 스텝 ST61의 판별의 결과, 기입 커맨드가 데이터 포트와 관련된 커맨드가 아닐 경우, 처리가 종료된다.
(CMD 58, CMD 59)
도 26 및 도 27은 데이터의 전송 효율을 좋게 하기 위한 멀티 블록 전송 커맨드를 나타내는 것이며, 도 26은 멀티-블록 판독(CMD 58)을 나타내고, 도 27은 멀티-블록 기입(CMD 59)을 나타낸다.
커맨트 CMD 58, CMD 59의 인수는, CMD 48, CMD 49와 유사하지만, 일부 정의가 상이하다. 또한, 커맨드 CMD 58에는, 커맨드 CMD 48의 인수 "Len"이 없고, 커맨드 CMD 59에는, 커맨드 CMD 49의 인수 "MW" 및 "Len/Mask"가 없다. 이것은 멀티 블록 전송이 데이터 포트에 대한 전송을 상정하고 있기 때문이다. 커맨드 CMD 58, CMD 59는 옵션 커맨드이며, 데이터 포트는 복수의 싱글 블록 전송 커맨드 CMD 48, CMD 49가 커맨드 CMD 58 또는 CMD 59용으로 대체될 수 있도록 구성되어 있다.
멀티 블록 전송은, 데이터 포트를 경유한 데이터 전송을 상정하고 있다. 따라서, 이 커맨드의 어드레스가 확장 레지스터 공간 중 데이터 포트로서 정의된 어드레스와 일치한 경우에만, 커맨드가 유효하게 된다. 따라서, 이 커맨드가 통상의 확장 레지스터에 대하여 실행되었을 경우, 에러가 되어 데이터 전송은 실행되지 않는다.
"FID/FNO" 필드(4비트)에는, 발행된 커맨드가 사용되는 기능을 식별하도록 구성된 코드가 설정된다. 따라서, "FID" 필드를 사용함으로써, 이 값에 의해 기능을 식별할 수 있고, 구현이 용이해진다. "Addr"(어드레스) 필드를 사용함으로써 또한 펑션은 식별가능하다. 그러나, 카드에 따라, 할당되는 어드레스가 상이하기 때문에, 호스트 드라이버가 어드레스로부터 기능을 인식하는 것을 관리하기 어렵다라고 하는 문제가 있다.
호스트 드라이버는, 기능마다 호스트 시스템에서 구현되는 데이터 버퍼 등을 전환 제어하여 사용할 수 있다.
커맨트 CMD 58/59의 인수에는, 데이터 길이를 지정하는 "Len" 필드가 포함되어 있지 않다. 이 이유는, 긴 데이터 전송은 긴 블록수를 지정할 필요가 있고, 이 정보는 판독/기입 커맨드의 인수에 너무 많이 지정할 수 없기 때문이다. 따라서, 커맨드 CMD 58/59를 발행하기 전에 데이터 전송에 필요한 블록수를 지정해서 둘 필요가 있다. 따라서, 예를 들어 확장 레지스터에 블록수를 설정하는 레지스터를 정의하고, CMD 49를 사용하여 설정하는 방법이나, 블록수를 설정하는 커맨드를, 커맨드 CMD 58/59를 발행하는 직전에 발행하는 등의 방법이 사용된다.
확장 레지스터에 블록수를 설정하는 경우, 설정하는 CMD 49의 "FID/FNO"와 데이터 전송을 실행하는 CMD 58/59의 "FID/FNO"는 일치될 필요가 있다. 데이터 전송은 이들 양측이 일치하지 않을 때에는 수행되지 않는다.
데이터가 확장 레지스터에 설정될 때, 데이터는 각 기능마다 독립하여 설정할 수 있고, 각 기능은 다른 기능으로부터 영향받지 않는다. 공통인 블록수 커맨드를 사용하는 경우, 메모리 멀티-블록 커맨드에 대한 블록수의 설정과, 그에 대한 구별이 필요하다. 따라서, 각 커맨드 CMD 58/59의 직전에 커맨드를 발행할 필요가 있고, 호스트 드라이버는 커맨드의 발행 직후에 다른 커맨드가 발행되지 않도록 순서를 관리할 필요가 있다.
호스트가 복수 기능 카드/디바이스의 하나의 기능을 특정하기 위해서는, 초기화에 의해 얻어지는 카드 고유 어드레스(RCA), 디바이스 ID, 상기 "MIO" 정보 및 상기 "FNO/FID" 정보가 필요하다.
도 28a 및 도 28b는 제2 실시 형태에 관한 범용 정보 필드의 표시 위치의 예를 나타낸다. 도 28a에 나타내는 메모리 공간에는, 확장 레지스터의 페이지 0에 배치되고, 도 28b에 나타내는 SDIO 공간에는, 필드가 종래의 레지스터와 충돌하지 않는 특정한 위치에 배치된다. 예를 들어, 도 28b에서, SDIO용 범용 정보는 "008FFh"-"00800h"(512 바이트)("h"는 16진수를 나타낸다)에 배치되어 있다.
도 29는 제2 실시 형태에 관한 메모리 공간과 SDIO 공간간의 대응 관계의 일례를 나타낸다. 도 29에서, 도 15와 동일한 부분에는 동일 참조 부호를 붙이고 있다.
메모리 확장 레지스터는 커맨드 CMD 48/49를 사용하여 액세스될 수 있다. 구체적으로는, 512 바이트의 고정 블록 길이를 사용하여, 싱글 블록 전송이 행해진다. 또한, 데이터 포트의 경우, 커맨드 CMD 58/59를 사용하여 멀티 블록 전송을 행할 수 있다. SDIO 확장 레지스터는 커맨드 CMD 48/49 뿐만아니라, 커맨드 CMD 52/53에 의해도 액세스가 가능하다. 커맨드 CMD 53은 가변 길이 커맨드이기 때문에, 데이터 포트와 상관없이 SDIO 확장 레지스터에 액세스하는데 사용될 수 있다.
(기능 드라이버 설치)
SDIO 기능(CMD 52/53)이 사용가능한지의 여부는, 호스트 시스템이 서포트하는 기능으로 의해 결정된다. SDIO를 서포트하지 않는 호스트는 커맨드 CMD 48/49, CMD 58/59를 사용하는 기능 드라이버를 설치한다. SDIO를 서포트하는 호스트 시스템은, 또한 커맨드 CMD 52/53을 사용하는 기능 드라이버도 설치하는 것이 가능하게 된다.
또한, 커맨드 CMD 53은 예를 들어 가변 길이 블록 전송 및 복수 블록 전송을 서포트하며 판독 또는 기입이 가능한 커맨드이며, 커맨드 CMD 52는 예를 들어 데이터를 갖지 않고, 인수 및 응답에 의해 1 바이트 데이터의 판독 또는 기입을 가능하게 하는 커맨드임에 유의하여야 한다.
커맨드 CMD 48/49의 SDIO 확장 레지스터 공간은 커맨드 CMD 52/53의 공간과 등가이다. 커맨드 CMD 53은 가변 길이 블록 전송과 멀티 블록 전송을 서포트하기 때문에, 데이터 전송은 최적화된 SDIO 드라이버를 사용함으로써 한층 효율적으로 실행된다.
카드 정보 구조(CIS)를 참조하지 않고, 커맨드 CMD 48/49가 서포트된 호스트가, 그 정보를 참조하는 것과 같이, SDIO의 범용 정보는 상기한 기능 0의 특정 위치로부터 볼 수 있다.
(기능 드라이버의 선택)
SDIO 호환 카드에 관련하여, 커맨드 CMD 52/53을 사용하는 기능 드라이버가 설치되어 있는 경우, 그 기능 드라이버가 사용되고, 기능 드라이버가 설치되어 있지 않은 경우, 커맨드 CMD 48/49, CMD 58/59를 사용하는 기능 드라이버가 사용된다.
SDIO 비호환 카드에 관련하여, 커맨드 CMD 48/49, CMD 58/59를 사용하는 기능 드라이버가 사용된다.
(SDIO의 초기화 동작)
도 30은 콤보 카드에서의 SDIO의 제2 초기화 동작을 개략적으로 나타낸다.
종래, SDIO의 초기화 시퀀스(제1 초기화 동작)는 최초에 SDIO 초기화 커맨드(CMD 5)를 실행하지 않으면 SDIO 기능이 활성화되지 않도록 정의되어 있다. 따라서, 콤보 카드로 메모리를 사용하고 있는 경우에서도, SDIO를 사용하는 시점에서 재초기화가 필요하기 때문에, 호스트에서 쓰기 어려운 사양이 되고 있다.
통상, I/O 기능은 그 기능을 사용하는 직전에 초기화하는 것이 시스템 리소스를 헛되지 않도록 하기 위해서, 또는 소비 전력을 불필요하게 소비하지 않기 위해서 바람직하다. 기능이 초기화되는 타이밍에 관련하여, 기능을 사용하는 어플리케이션이 기동되는 타이밍에 초기화를 행하는 것이 바람직하다.
또한, 재초기화에서는, 카드 고유 어드레스(RCA)의 변경이 행해지기 때문에, 메모리의 액세스 방법에도 영향을 준다. 메모리 제어에 영향을 주지 않고, SDIO 기능을 활성화하기 위해서, 메모리 초기화 시퀀스를 기본으로 하고, SDIO 기능은 나중에 추가하는 것이 바람직하다.
따라서, 도 30에 도시한 바와 같이, 메모리 장치(11)가 기동되어, 초기화되면(ST71), 커맨드(CMD 3)가 발행되고, 카드 고유 어드레스(RCA)가 취득된다(ST72). 이 후, 커맨드(CMD 7)가 발행되고(ST73), 메모리 장치(11)가 전송 상태, 즉, 메모리가 사용 가능한 상태로 설정된다(ST74). 다음으로, 패스 모드 및 전원 소비 설정과 같은 카드의 공통 리소스는 셋업된다(ST75). 이러한 상태에서, SDIO의 초기화 커맨드(CMD 5)가 발행된다(ST76). 이에 의해, SDIO가 초기화되어, 커맨드 CMD 52과 CMD 53의 접수가 가능하게 된다(ST77).
스텝 ST76에서, SDIO의 공통 리소스를 자동적으로 셋업할 수도 있다. 통상적으로, 메모리 및 I/O는 공통 리소스를 제어하기 위하여 독립적인 설정 방법을 갖는다. 이로 인해, 메모리 및 I/O에 포함된 드라이버들은 유사하게 조정될 필요가 있다. 제2 초기화 동작에서, CMD 5를 수신한 카드는 ST75에서 설정한 메모리의 콩통 리소스를 I/O에 복사한다. 따라서, 각 드라이버를 조정할 필요는 없다. 공통 리소스는 예를 들어, 버스 속도 모드, RCA, 전류 제한, 전력 제한 및 구동 능력의 셋업 등을 포함한다.
이것은 초기화 방법의 추가이며, 종래의 SDIO 초기화 시퀀스에서도 초기화는 가능하며, 종래의 시퀀스는 호환성이 있다.
상기 구성에 의하면, 기능을 사용하는 어플리케이션이 기동되는 타이밍에서, 기능이 초기화되기 때문에, 메모리 제어에 영향을 주는 일없이, 각 기능을 초기화할 수 있다.
(기능 드라이버 인터페이스)
종래, SDIO는 공통 레지스터에 필요한 제어 비트를 할당해서 제어하고 있었다. 카드가 레지스터에 값을 설정함으로써 제어하기 위해서, 카드는 처리 기능을 수행할 필요가 있다. 기능 드라이버를 호출함으로써, 특정 처리를 수행할 경우, 카드 내부에서의 처리 대신에 기능 드라이버에 의해 처리할 수 있게 된다. 보다 구체적으로, 호스트에 의해 처리가 수행된다.
통상적으로 공통 레지스터를 통해 카드에 의해 행하고 있었던 제어를 기능 드라이버의 어플리케이션 프로그램 인터페이스(API)로서 정의하면, 제어를 소프트웨어화할 수 있다. API 레벨을 표준화함으로써, 카드의 구현은 유용하게 될 수 있다.
API의 예를 이하에 나타낸다.
(1) 기능 초기화
기능을 초기화하기 위해서, 호스트 드라이버로부터 기능을 호출한다.
(2) 중단/리셋 기능
기능의 중단 또는 리셋
(3) 기능 정보를 취득
기능 리비젼의 판독
기능 정보의 판독(서포트 정보 등)
인터럽트 정보의 판독(폴링).
(4) 전원 소비 제어
기능에서 구현되는 파워 모드 정보
(5) 전원 오프 통지
전원을 꺼도 좋은 타이밍을 통지한다
(6) 어플리케이션 인터페이스
어플리케이션과의 사이의 제어 인터페이스
특히, 복수 기능이 구현되어 있는 카드에서, 카드의 전원을 끌 경우, 호스트가 각 기능이 전원 차단되게 하는 상태로 된 후 전원을 턴오프시킬 필요가 있다. 전원 오프 통지는 제어에 사용되는 API이다.
도 31은 메모리 장치(11)로서의 SD 카드와 호스트(20)의 기능 인터페이스간의 관계를 개략적으로 나타낸다.
호스트(20)는 호스트 컨트롤러(21), 호스트 드라이버(71), 파일 시스템(72), 메모리 어플리케이션(73), 기능 드라이버(74), 기능 어플리케이션(75)에 의해 구성되어 있다. 또한, 메모리 장치(11)로서의 SD 카드는 확장 레지스터(31), 예를 들어 SDIO로부터 이루어지는 기능 하드웨어(19)를 포함하고 있다.
호스트(20)에서, 호스트 드라이버(71)는 기능 드라이버(74)를 검색하고, 로드하는 기능이 서포트하고 있다. 즉, 호스트 드라이버(71)는 확장 레지스터의 범용 정보 필드를 참조하여, 기능 드라이버(74)을 검출하고, 그 기능 드라이버를 실행함으로써, 호스트 드라이버(71)가 확장 기능을 사용할 수 있게 한다. 또한, 확장 기능 레지스터(31)를 제어하는 기능 드라이버(74)와 기능 어플리케이션(75)과의 사이는, 기능 사양에 의해 정의된 API에 의해 통신한다.
SD 카드는 표준화를 위하여, 기능 사양에 의해 정의된 확장 기능 레지스터(31)와 호스트 드라이버(71)가 기능 드라이버(74)을 찾아서 로드할 수 있도록 상술한 범용 정보 필드를 포함한다.
호스트 컨트롤러(21)와 메모리 장치(11)는 상술한 커맨드 CMD 48/49 등을 사용해서 서로 통신한다.
상기 구성에 의하면, 종래 카드에서 행하고 있었던 제어를 기능 드라이버의 API로서 정의함으로써, 제어를 소프트웨어화할 수 있다. 또한, API 레벨을 표준화 함으로써, 카드의 구현은 용이하게 될 수 있다.
또한, 호스트 드라이버(71)는 확장 레지스터의 범용 정보 필드를 참조하여, 기능 드라이버(74)를 검출하고, 그 기능 드라이버를 실행함으로써, 호스트 드라이버(71)가 확장 기능을 사용할 수 있게 한다. 따라서, 호스트(20)는 용이하게 확장 기능을 사용하는 것이 가능하다.
("FID"에 의한 데이터 버퍼의 제어)
메모리 장치(11)는 어드레스 정보를 식별함으로써, 어느 기능에 대한 커맨드인지를 판별하는 것이 가능하다. 그러나, 어드레스 범위는 기능에 따라 상이하기 때문에, 호스트(20)는 어드레스로부터 기능을 식별하는 것이 어렵다.
따라서, 상술한 바와 같이, "FID/FNO"를 사용함으로써, 호스트(20)는 간단하게 기능을 식별하는 것이 가능하다.
또한, "FID/FNO"을 사용함으로써, 예를 들어 호스트(20)의 복수의 버퍼를 제어하는 것이 가능하다.
도 32에 도시한 바와 같이, 호스트(20)는 메모리 장치(11)로서의 SD 카드의 복수의 기능에 대하여 데이터 전송을 행하는 경우, 각 기능에 독립적으로 대응하는 버퍼들(81, 82)을 가지고 있다. 이들 버퍼들(81, 82)은 멀티플렉서(MUX)(83)를 개재해서 호스트 컨트롤러(21)에 접속되어 있다. 버퍼(81, 82) 및 멀티플렉서(83)은 가상 구성요소에 의해 구성되며, 버퍼(81, 82)는 시스템 메모리 상에 구성되고, 멀티플렉서(83)의 기능은 드라이버에 의해 소프트웨어로 구현된다. 멀티플렉서(83)에 의해 선택된 버퍼의 어드레스는 호스트 제어기에 공급된다. 멀티플렉서(83)를 "FID/FNO"에 의해 제어함으로써, 각 기능에 대응하는 버퍼(81 또는 82)를 선택할 수 있다.
즉, 호스트(20)는 커맨드 CMD 58/59에 설정한 "FID/FNO"에 따라, 대응하는 버퍼(81 또는 82)를 멀티플렉서(83)를 사용하여 선택할 수 있다.
호스트 컨트롤러(21)로부터 예를 들어 판독 커맨드 CMD 58이 발행되었을 경우, 메모리 장치(11)의 대응하는 기능의 확장 레지스터로부터 판독된 데이터는, 호스트 컨트롤러(21)을 통해 멀티플렉서(83)에 공급된다. 멀티플렉서(83)는 "FID/FNO"에 기초하여, 수취한 데이터를 버퍼(81, 82) 중 한쪽에 공급한다.
또한, 호스트 컨트롤러(21)로부터 예를 들어 기입 커맨드 CMD 59가 발행되었을 경우, 멀티플렉서(83)는 "FID/FNO"에 기초하여, 버퍼(81, 82) 중 한쪽으로부터 선택된 데이터를 호스트 컨트롤러(21)에 공급하고, 호스트 컨트롤러(21)는 메모리 장치(11)에 데이터를 전송한다. 메모리 장치(11)는 "FID/FNO"에 기초하여, 대응하는 기능의 확장 레지스터에 데이터를 공급한다.
상술한 바와 같이, "FID/FNO"을 사용하여, 멀티플렉서(83)를 제어함으로써, 각 기능에 대응하는 버퍼(82 또는 83)를 확실하게 선택하는 것이 가능하다.
임의 실시 형태들이 기술되었지만, 이들 실시 형태는 단지 일례로서 제시된 것이며, 본 발명의 범위를 제한하려는 의도는 아니다. 실제로, 본 명세서에서 기술된 신규한 실시 형태는 다양한 다른 형태로 구현될 수 있으며; 또한 본 명세서에 기술된 실시 형태의 다양한 생략, 대체 및 변경은 본 발명의 기술적 사상으로부터 동떨어짐없이 구현될 수 있다. 첨부된 청구범위 및 이들의 등가물은 본 발명의 범위 및 기술적 사상에 부합되는 한 형태 또는 변경을 커버한다.

Claims (14)

  1. 불휘발성 반도체 기억 장치와,
    상기 불휘발성 반도체 기억 장치를 제어하도록 구성된 제어부와,
    상기 제어부에 접속된 작업 에리어로서 기능하는 메모리와,
    상기 제어부에 의해 제어되는 확장 기능부와,
    상기 메모리 또는 상기 제어부 상에 구비되고, 상기 확장 기능부의 확장 기능을 제어하는 인터페이스를 정의할 수 있는 확장 레지스터를 포함하고,
    상기 제어부는, 상기 확장 레지스터를 미리결정된 데이터 길이 단위로 판독하는 제1 커맨드와, 상기 확장 레지스터에 데이터를 상기 미리결정된 데이터 길이 단위로 기입하는 제2 커맨드를 처리하고,
    상기 확장 레지스터는 제1 영역, 상기 제1 영역과 상이한 제2 영역을 포함하고, 상기 확장 기능의 종별 및 제어 가능한 드라이버를 특정하도록 구성된 정보와, 상기 확장 기능이 할당되는 확장 레지스터 상에 있는 장소를 나타내는 어드레스 정보는 상기 제1 영역에 기록되고, 상기 제2 영역은 확장 기능을 포함하는, 메모리 시스템.
  2. 제1항에 있어서,
    상기 제1 및 제2 커맨드 각각은 복수 페이지로 구성되는 확장 레지스터공간의 특정한 1 페이지 내의 데이터에 액세스하는데 필요한 길이의 어드레스 필드와, 유효한 데이터 길이를 나타내는 길이 필드를 인수(arguments)로서 포함하고,
    상기 제1 및 제2 커맨드 각각의 상기 어드레스 필드의 값은, 제1 및 제2 동작 모드를 포함하고,
    상기 제1 커맨드의 상기 제1 동작 모드는, 상기 어드레스 필드가 나타내는 확장 레지스터의 위치로부터 길이 필드가 나타내는 데이터 길이의 데이터를 판독하는 판독 동작에 상응하고,
    상기 제2 커맨드의 상기 제1 동작 모드는, 상기 어드레스 필드가 나타내는 확장 레지스터의 위치에, 길이 필드가 나타내는 데이터 길이의 데이터를 기입하는 기입 동작에 상응하고, 상기 제1 및 제2 커맨드 각각의 상기 제2 동작 모드에서, 상기 어드레스 필드가 나타내는 특정한 어드레스를 확장 레지스터의 데이터 포트로 해석하고, 데이터 포트와, 상기 데이터 포트와 관계된 상기 확장 기능부 사이에 데이터 전송을 행하는, 메모리 시스템.
  3. 제2항에 있어서,
    상기 제1 커맨드의 상기 제1 동작 모드에서, 상기 확장 레지스터의 지정된 페이지로부터 판독된 데이터 항목은, 데이터 블록의 선두로부터 배치되고,
    상기 제2 커맨드의 상기 제1 동작 모드에서, 상기 데이터 블록의 선두로부터 배치된 데이터 항목을 상기 확장 레지스터의 지정된 페이지의 지정된 위치에 지정된 길이만큼 상기 확장 레지스터에 기입하는, 메모리 시스템.
  4. 제2항에 있어서,
    상기 제2 커맨드는, 인수에 마스크 기입을 행할지의 여부를 선택하는데 사용되는 비트를 포함하고, 마스크 기입을 행하지 않는 경우, 상기 길이 필드는 유효한 기입 데이터 길이를 나타내고, 마스크 기입을 행하는 경우, 기입 데이터 길이는 고정값이 되고, 상기 길이 필드는 1 비트 단위로 기입할지 또는 원래의 데이터를 유지할지를 선택하는데 사용되는 마스크 정보를 나타내고, 상기 마스크 정보는 고정 데이터 길이와 동일한 길이를 갖는, 메모리 시스템.
  5. 제2항에 있어서,
    복수의 기능 각각에 할당된 확장 레지스터 세트를 더 포함하고,
    각 기능에 단일적으로 할당된 값은 제1 영역의 기능 식별 정보에 표시되고,
    상기 제1 및 제2 커맨드 각각의 인수는 기능 식별 정보를 포함하고, 상기 기능 식별 정보가 어드레스 필드에 의해 특정되는 확장 레지스터 세트와 대응 관계에 있을 경우, 커맨드가 실행되는, 메모리 시스템.
  6. 제2항에 있어서,
    고정 길이 블록 전송 및 멀티 블록 전송을 서포트하는 판독 커맨드로 사용되는 제3 커맨드와, 기입 커맨드로 사용되는 제4 커맨드를 더 포함하고,
    상기 제3 및 제4 커맨드 각각은 인수로서 어드레스 필드를 포함하고, 상기 어드레스 필드가 확장 레지스터의 데이터 포트를 지정할 경우만 데이터 전송이 실행되고, 데이터 전송량을 지정하도록 구성된 블록수는 확장 레지스터에 사전에 설정되거나 블록수를 설정하는 커맨드에 의해 사전에 설정되는, 메모리 시스템.
  7. 제6항에 있어서,
    복수의 기능 각각에 할당된 확장 레지스터 세트를 더 포함하고,
    각 기능에 단일적으로 할당된 값은 제1 영역의 기능 식별 정보에 표시되고,
    상기 제3 및 제4 커맨드 각각의 인수는 기능 식별 정보를 포함하고, 상기 기능 식별 정보가 어드레스 필드에 의해 특정되는 확장 레지스터 세트와 대응 관계에 있을 경우, 커맨드가 실행되는, 메모리 시스템.
  8. 제1항에 있어서,
    상기 확장 레지스터의 제1 영역인 범용 정보 필드는 표준 확장 기능을 식별하도록 구성된 기능 식별 코드, 제조자를 식별하도록 구성된 제조자 식별 정보, 및 확장 기능에 대한 분류를 식별하는 기능 식별 정보를 포함하고, 상기 범용 정보 필드는 범용 드라이버 또는 전용 드라이버를 선택하는 정보로서 사용되는, 메모리 시스템.
  9. 제8항에 있어서,
    호스트 드라이버를 포함하는 호스트를 더 포함하고,
    상기 호스트 드라이버는 상기 제1 커맨드를 사용하여, 상기 확장 레지스터의 상기 제1 영역에 기재된 상기 기능 식별 코드, 상기 제조자 식별 정보, 상기 기능 식별 정보를 판독하고, 사용 가능한 범용 기능 드라이버 또는 전용 기능 드라이버를 특정하고, 드라이버가 존재하는 경우, 호스트는 상기 드라이버를 로드하고, 기능 드라이버는 확장 기능을 초기화하는, 메모리 시스템.
  10. 제9항에 있어서,
    상기 호스트 드라이버는 확장 기능에 할당된 확장 레지스터에 대한 위치 정보를 상기 범용 정보 필드로부터, 로드된 기능 드라이버에 전달함으로써, 확장 기능이 임의의 위치에 배치된 경우에도 상기 확장 기능을 제어 가능하게 하는, 메모리 시스템.
  11. 제2항에 있어서,
    가변 길이 블록 전송 및 멀티 블록 전송을 서포트하는 판독/기입을 가능하게 하는 제5 커맨드와,
    인수와 응답에 의해 1 바이트 데이터의 판독/기입을 가능하게 하는 제6 커맨드와,
    상기 제5 및 제6 커맨드에 의해 액세스될 수 있는 복수의 기능 영역을 더 포함하고,
    상기 제1 영역은 선두의 기능 영역의 일부에 할당되고, 제2 영역은 상기 기능 영역의 나머지 일부에 할당되고, 상기 제5 및 제6 커맨드에 의해 액세스 가능한 확장 레지스터 영역은 또한 상기 제1 및 제2 커맨드에 의해 액세스될 수 있는, 메모리 시스템.
  12. 제9항에 있어서,
    상기 호스트 드라이버는, 상기 제1 및 제2 커맨드, 또는 상기 제3 및 제4 커맨드에 의해 상기 제1 동작 모드에서 상기 확장 레지스터에 액세스하고, 상기 제2 동작 모드에서 상기 호스트 드라이버와 상기 확장 기능부 사이의 데이터 전송을 행하는, 메모리 시스템.
  13. 제9항에 있어서,
    상기 호스트 드라이버는, 메모리 또는 디바이스를 특정하도록 구성된 어드레스 정보와, 상기 제1 영역으로부터 판독되는 각 기능에 단일적으로 할당된 값을 포함하는 기능 식별 정보를 사용함으로써, 복수의 멀티 기능 디바이스로부터 하나의 기능을 특정하는, 메모리 시스템.
  14. 제9항에 있어서,
    상기 호스트 드라이버는, 상기 제1 영역으로부터 판독되는 각 기능에 단일적으로 할당되는 값을 포함하는 기능 식별 정보와, 복수의 기능 디바이스와 일 대 일 대응 관계로 배치된 복수의 버퍼와, 상기 제1 커맨드, 제2 커맨드, 제3 커맨드 또는 제4 커맨드에 설정되는 기능 식별 정보에 기초하여, 상기 복수의 버퍼 중 1개를 선택하는, 메모리 시스템.
KR1020137020444A 2011-02-04 2011-09-16 확장 기능이 용이하게 설정될 수 있는 메모리 시스템 KR101493633B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JPJP-P-2011-023217 2011-02-04
JP2011023217 2011-02-04
JPJP-P-2011-110242 2011-05-17
JP2011110242A JP5728292B2 (ja) 2011-02-04 2011-05-17 メモリデバイス及びホストシステム
PCT/JP2011/071776 WO2012105084A1 (en) 2011-02-04 2011-09-16 Memory system in which extended function can easily be set

Publications (2)

Publication Number Publication Date
KR20130111622A true KR20130111622A (ko) 2013-10-10
KR101493633B1 KR101493633B1 (ko) 2015-02-13

Family

ID=44993823

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137020444A KR101493633B1 (ko) 2011-02-04 2011-09-16 확장 기능이 용이하게 설정될 수 있는 메모리 시스템

Country Status (7)

Country Link
US (4) US9104539B2 (ko)
EP (2) EP2955716B1 (ko)
JP (1) JP5728292B2 (ko)
KR (1) KR101493633B1 (ko)
CN (1) CN103403803B (ko)
TW (1) TWI460589B (ko)
WO (1) WO2012105084A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5398761B2 (ja) 2011-02-28 2014-01-29 株式会社東芝 メモリシステム
JP5832963B2 (ja) 2012-06-29 2015-12-16 株式会社東芝 メモリシステム
JP5814871B2 (ja) * 2012-07-06 2015-11-17 株式会社東芝 メモリシステム
JP5779148B2 (ja) * 2012-07-06 2015-09-16 株式会社東芝 メモリシステム
JP5976608B2 (ja) 2012-10-30 2016-08-23 株式会社東芝 メモリデバイス
US9612773B2 (en) * 2013-11-21 2017-04-04 Samsung Electronics Co., Ltd. User device having a host flash translation layer (FTL), a method for transferring an erase count thereof, a method for transferring reprogram information thereof, and a method for transferring a page offset of an open block thereof
US9933976B2 (en) * 2014-04-28 2018-04-03 Hitachi, Ltd. Storage apparatus and data processing method thereof, and storage system
US10616033B2 (en) * 2017-11-06 2020-04-07 Honda Motor Co., Ltd. Different perspectives from a common virtual environment
US10795576B2 (en) * 2018-11-01 2020-10-06 Micron Technology, Inc. Data relocation in memory
CN111240582B (zh) * 2018-11-29 2022-01-28 长鑫存储技术有限公司 数据读写方法、读写装置和动态随机存储器
JP2020154584A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム
US11334402B2 (en) * 2019-09-10 2022-05-17 Qualcomm Incorporated SDIO chip-to-chip interconnect protocol extension for slow devices and power savings
CN110971621B (zh) * 2020-01-09 2023-07-11 成都三零嘉微电子有限公司 基于sdio接口的嵌入式多cpu互联电路、互联方法及驱动方法
JP7366765B2 (ja) * 2020-01-20 2023-10-23 株式会社東芝 Icカード、icカード処理システム、及びicカード処理装置の制御プログラム
CN111818060B (zh) * 2020-07-09 2023-04-07 厦门海为科技有限公司 一种支持混合及离散数据传输的通讯协议、方法及系统
CN114461566A (zh) * 2022-01-10 2022-05-10 武汉海微科技有限公司 基于单片机i2c接口的协议扩展与移植方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5280599A (en) * 1989-01-09 1994-01-18 Kabushiki Kaisha Toshiba Computer system with memory expansion function and expansion memory setting method
US6122669A (en) * 1997-02-14 2000-09-19 Advanced Micro Devices, Inc. Method and apparatus for auto-incrementing through table and updating single register in memory
JP3609389B2 (ja) * 1999-09-30 2005-01-12 富士通株式会社 プロトコル変換装置、通信装置、通信プログラム記憶媒体、および通信システム
JP4649009B2 (ja) * 2000-03-08 2011-03-09 株式会社東芝 カードインタフェースを備えた情報処理装置、同装置に装着可能なカード型電子機器、及び同装置におけ動作モード設定方法
JP5090591B2 (ja) 2000-04-12 2012-12-05 ソニー株式会社 電子装置の制御方法,電子装置及び電子装置の機能の認識方法
US6820148B1 (en) * 2000-08-17 2004-11-16 Sandisk Corporation Multiple removable non-volatile memory cards serially communicating with a host
JP2002091709A (ja) * 2000-09-18 2002-03-29 Toshiba Corp 電子機器システム、カード型電子部品及び通信方法
JP4102018B2 (ja) * 2000-11-30 2008-06-18 株式会社東芝 無線通信カードおよびシステム
JP3641230B2 (ja) * 2001-10-22 2005-04-20 株式会社東芝 メモリカードを制御するための装置および方法
JP2004046498A (ja) 2002-07-11 2004-02-12 Toshiba Corp 情報処理装置
US7197583B2 (en) 2003-01-21 2007-03-27 Zentek Technology Japan, Inc. SDIO controller
WO2004084127A1 (ja) * 2003-03-20 2004-09-30 Renesas Technology Corp. メモリカードおよびその初期化設定方法
TW594478B (en) * 2003-05-05 2004-06-21 Winbond Electronics Corp Device to extend an address space by inserting a waiting state and operation method for the device
KR100596410B1 (ko) * 2004-11-04 2006-07-03 한국전자통신연구원 기능 확장용 에스디 메모리 카드
JP2005322109A (ja) * 2004-05-11 2005-11-17 Renesas Technology Corp Icカードモジュール
JP2006018610A (ja) * 2004-07-01 2006-01-19 Matsushita Electric Ind Co Ltd デジタルデータ処理カード、及びデジタルデータ処理システムの制御方法
US7660938B1 (en) * 2004-10-01 2010-02-09 Super Talent Electronics, Inc. Flash card reader and data exchanger utilizing low power extended USB protocol without polling
JP2006236200A (ja) * 2005-02-28 2006-09-07 Toshiba Corp カード状記憶装置とそのホスト装置
US20060218324A1 (en) * 2005-03-25 2006-09-28 Matsushita Electrical Industrial Co., Ltd Systems and methods for flexible data transfers in SDIO and/or MMC
JPWO2006117966A1 (ja) * 2005-04-27 2008-12-18 松下電器産業株式会社 カード型電子装置及びホスト装置
TW200719141A (en) * 2005-11-07 2007-05-16 Cheertek Inc Flash memory access method and circuit of an embedded system
JP2008269380A (ja) * 2007-04-23 2008-11-06 Matsushita Electric Ind Co Ltd 情報処理装置
JP2009026296A (ja) * 2007-06-21 2009-02-05 Toshiba Corp 電子デバイス、メモリデバイス、ホスト装置
JP2009157493A (ja) * 2007-12-25 2009-07-16 Sharp Corp データ転送制御装置及びicカード
JP5324908B2 (ja) * 2008-08-22 2013-10-23 パナソニック株式会社 カードホストlsiを有するセット機器、およびカードホストlsi
US8219922B2 (en) * 2008-12-30 2012-07-10 International Business Machines Corporation Dynamic point and extend user interface
US20100268897A1 (en) * 2009-04-16 2010-10-21 Keishi Okamoto Memory device and memory device controller
JP2010272701A (ja) * 2009-05-21 2010-12-02 Fujitsu Ltd 情報処理装置、情報処理装置搭載ラックおよび空間制御システム
US8370535B2 (en) * 2010-10-27 2013-02-05 Sandisk Il Ltd. Routing commands within a multifunctional device
JP5395824B2 (ja) * 2011-02-16 2014-01-22 株式会社東芝 メモリシステム
JP5398761B2 (ja) 2011-02-28 2014-01-29 株式会社東芝 メモリシステム

Also Published As

Publication number Publication date
JP2012178132A (ja) 2012-09-13
USRE48997E1 (en) 2022-03-29
US9335953B2 (en) 2016-05-10
TWI460589B (zh) 2014-11-11
CN103403803A (zh) 2013-11-20
EP2671226B1 (en) 2015-08-26
CN103403803B (zh) 2016-08-10
EP2955716B1 (en) 2018-10-24
JP5728292B2 (ja) 2015-06-03
USRE47542E1 (en) 2019-07-30
WO2012105084A1 (en) 2012-08-09
EP2671226A1 (en) 2013-12-11
EP2955716A1 (en) 2015-12-16
US20150317102A1 (en) 2015-11-05
US20130318281A1 (en) 2013-11-28
US9104539B2 (en) 2015-08-11
TW201234178A (en) 2012-08-16
KR101493633B1 (ko) 2015-02-13

Similar Documents

Publication Publication Date Title
USRE48997E1 (en) Memory system in which extended function can easily be set
JP5220747B2 (ja) 不揮発性記憶装置および不揮発性記憶システム
EP2396728B1 (en) System and method of host request mapping
KR101395778B1 (ko) 메모리 카드 및 그것을 포함하는 메모리 시스템 그리고그것의 동작 방법
JP5065297B2 (ja) Mmc/sdデバイスからホストデバイスをブートする方法,mmc/sdデバイスからブート可能なホストデバイス及びホストデバイスをブートできるmmc/sdデバイス
JP5814871B2 (ja) メモリシステム
US9052836B2 (en) Memory system in which extension function can easily be set
JP5779147B2 (ja) メモリシステム
JP6017379B2 (ja) メモリシステム及びホスト機器
JP5779148B2 (ja) メモリシステム
JP2024065449A (ja) 周辺機器

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 5