JP5728292B2 - メモリデバイス及びホストシステム - Google Patents

メモリデバイス及びホストシステム Download PDF

Info

Publication number
JP5728292B2
JP5728292B2 JP2011110242A JP2011110242A JP5728292B2 JP 5728292 B2 JP5728292 B2 JP 5728292B2 JP 2011110242 A JP2011110242 A JP 2011110242A JP 2011110242 A JP2011110242 A JP 2011110242A JP 5728292 B2 JP5728292 B2 JP 5728292B2
Authority
JP
Japan
Prior art keywords
data
command
function
extension register
driver
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2011110242A
Other languages
English (en)
Other versions
JP2012178132A (ja
Inventor
曜久 藤本
曜久 藤本
広幸 坂本
広幸 坂本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011110242A priority Critical patent/JP5728292B2/ja
Priority to EP11784802.8A priority patent/EP2671226B1/en
Priority to KR1020137020444A priority patent/KR101493633B1/ko
Priority to CN201180068856.7A priority patent/CN103403803B/zh
Priority to EP15176252.3A priority patent/EP2955716B1/en
Priority to PCT/JP2011/071776 priority patent/WO2012105084A1/en
Priority to TW100133693A priority patent/TWI460589B/zh
Publication of JP2012178132A publication Critical patent/JP2012178132A/ja
Priority to US13/956,825 priority patent/US9104539B2/en
Application granted granted Critical
Publication of JP5728292B2 publication Critical patent/JP5728292B2/ja
Priority to US14/797,867 priority patent/US9335953B2/en
Priority to US15/463,765 priority patent/USRE47542E1/en
Priority to US16/452,252 priority patent/USRE48997E1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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)

Description

本発明の実施形態は、メモリシステムに関する。
近時、メモリカードは、単なるメモリデバイスとしてだけでなく、付加価値を持たせるため様々な機能の追加が要望されている。また、追加機能をプラグ・アンド・プレイで使用可能にするために、汎用的な初期化手段が望まれている。
特開2004−46498号公報
Part 1 Physical Layer Simplified Specification Ver3.01 May 18, 2010(URL:http://www.sdcard.org/home/) Part E1 SDIO Simplified Specification Ver2.00 Feb. 8, 2007(URL:http://www.sdcard.org/home/)
本実施形態は、拡張機能を容易に設定することが可能なメモリシステムを提供しようとするものである。
実施形態によれば、メモリデバイスは、不揮発性半導体記憶装置と、制御部と、メモリと、拡張機能部と、拡張レジスタとを含んでいる。制御部は、不揮発性半導体記憶装置を制御する。メモリは、制御部に接続された作業エリアである。拡張機能部は、制御部により制御される。拡張レジスタは、メモリ上に仮想的に、また制御部にハードウェアとして設けられ、前記拡張機能部の拡張機能を定義可能な一定のブロック長を有する。前記制御部は、前記拡張レジスタを前記一定のデータ長単位でリードする第1のコマンドと、前記拡張レジスタを前記一定のデータ長単位でライトする第2のコマンドとを処理し、前記拡張レジスタは、第1の領域、前記第1の領域と異なる第2の領域を含む。前記第1の領域は、前記拡張機能の種別及び制御可能なドライバを特定する第1情報と、前記拡張機能を制御する第2情報が記録された、前記第2の領域内の位置を示すアドレス情報とを記録する。前記第1、第2のコマンドは、前記複数ページで構成される拡張レジスタの1ページ内のデータをアクセスするために必要なアドレスフィールドと、有効なデータ長を示すレングスフィールドを引数として有する。前記第1、第2のコマンドの前記アドレスフィールドの値は、それぞれ第1、第2の動作モードを有する。前記第1のコマンドの前記第1の動作モードは、前記アドレスフィールドが示す拡張レジスタの位置から、レングスフィールドで示されたデータ長のデータを読み出すリード動作である。前記第2のコマンドの前記第1の動作モードは、前記アドレスフィールドが示す拡張レジスタの位置に、レングスフィールドで示されたデータ長のデータを書き込むライト動作であり、前記第1、第2のコマンドの前記第2の動作モードは、前記アドレスフィールドが示す特定のアドレスを拡張レジスタのデータポートと解釈し、データポートと関係付けられた前記拡張機能部とのデータ転送を行う。
実施形態に適用されるメモリシステムを概略的に示す構成図。 図1に示すメモリシステムのファームウェの一例を示す構成図。 拡張レジスタのリードコマンドの一例を示す構成図。 リードコマンドによる拡張レジスタのリード動作を示すタイミング図。 リードコマンドによるデータポートのリード動作を示すタイミング図。 拡張レジスタのライトコマンドの一例を示す構成図。 図7(a)(b)(c)はマスクレジスタの動作を示す図。 ライトコマンドによる拡張レジスタのライト動作を示すタイミング図。 ライトコマンドによるデータポートのライト動作を示すタイミング図。 拡張レジスタの先頭ページに設定される汎用情報(General Information)フィールドの一例を示す図。 リードコマンドに従ったメモリシステムの動作の一例を示すフローチャート。 ライトコマンドに従ったメモリシステムの動作の一例を示すフローチャート。 ホストドライバの動作の一例を示すフローチャート。 ホストドライバの動作の他の例を示すフローチャート。 SDIOにおける拡張レジスタのアクセス動作を概略的に示す図。 レビジョン管理の一例を示す図。 第2の実施形態に係る拡張レジスタのリードコマンドの一例を示す図。 第2の実施形態に係る拡張レジスタのライトコマンドの一例を示す図。 リードコマンドによる拡張レジスタのリード動作を示すタイミング図。 リードコマンドによるデータポートのリード動作を示すタイミング図。 ライトコマンドによる拡張レジスタのライト動作を示すタイミング図。 ライトコマンドによるデータポートのライト動作を示すタイミング図。 拡張レジスタの先頭ページに設定される汎用情報フィールドの一例を示す図。 第2の実施形態に係るリードコマンドに従ったメモリシステムの動作の一例を示すフローチャート。 第2の実施形態に係るライトコマンドに従ったメモリシステムの動作の一例を示すフローチャート。 第2の実施形態に係る拡張レジスタのマルチブロックリードコマンドの一例を示す図。 第2の実施形態に係る拡張レジスタのマルチブロックライトコマンドの一例を示す図。 第2の実施形態に係る汎用情報の表示位置の一例を示す図。 第2の実施形態に係るメモリ空間とSDIO空間の関係の一例を示す図。 第2の実施形態に係るSDIOの初期化の簡素化を説明するために示すフローチャート。 第2の実施形態に係るメモリデバイスとホストの機能インターフェースの関係を概略的に示す図。 第2の実施形態に係り、バッファの制御を説明するために示す概略構成図。
例えばSDカードのようなメモリデバイスは、機能を拡張する場合、新たな規格が定められ、その規格に従って、機能が拡張されていた。このため、規格が定まらないと、機能を拡張することが難しかった。
例えばSDカードのようなメモリデバイスやホスト機器には、標準的な機能の拡張方法が定義されていなかった。このため、特殊なホストデバイス以外は、メモリデバイスに追加された機能を簡単に使用できるようにすることができなかった。これはメモリデバイスに新しい機能を追加した場合における普及の妨げとなっていた。
また、ホストコントローラの機能に制限があるため、メモリデバイスに追加された機能が使用できない場合があった。具体的には、メモリ用のホストコントローラは、割り込みをサポートしていない場合や、512バイトより小さなデータのリード/ライトに対応していない場合が多い。特にSDIO規格では、可変ブロック長のマルチブロック転送が定義されているが、メモリ専用ホストでは、このようなデータ転送が行えない場合が多い。このため、例えばデジタルカメラやPHSなどの周辺機器やインターフェースとしての機能を有するSDIOカードや、SDカードにSDIOカードが組み込まれたコンボ(combo)カードの機能を拡張した場合、拡張された機能に対応する機能ドライバをホストシステムにインストールする必要があり、またホストドライバを改変しないと機能ドライバを認識することができなかった。
また、ホストはカード/デバイスを特定するカードアドレス(RCA)やDevice IDを使用している。単機能カード/デバイスの場合はこれらの情報で機能が特定できるが、カードアドレスだけでは複数機能デバイスの機能のひとつを特定することができないという問題があった。そのためホストシステムを管理するソフトウエアをマルチファンションカード/デバイス対応ができるように改変しないと複数機能デバイス使用することができなかった。
また、多くのメモリ内のコントローラは、512バイト単位にメモリをアクセスする。このため、512バイト単位のデータの一部のデータを書き換える場合、リード・モディファイ・ライトが必要となっていた。すなわち、例えば、512バイトのデータのうち、1バイトのデータを書き換える場合、512バイトのデータがバッファに読み込まれ、バッファ上で1バイトのデータが更新され、この更新された512バイトのデータを書き込むという動作が必要である。このため、制御効率が悪かった。
また、一般に、レジスタを用いてカードの機能を拡張する場合、制御レジスタが特定アドレスに割り当てられていた。このため、カードベンダーは、自由に機能拡張に用いるアドレス位置を決めることができなかった。拡張機能を標準化する場合、複数の機能が重複しないようにレジスタアドレスを割り当てする必要があり、機能のサポート状況によっては、アドレス空間が飛び飛びになってしまうという問題があった。ベンダー独自機能を実装する場合においても、自由に追加ができないという問題があった。
そこで、本実施形態は、仮想的な拡張レジスタを用いることにより、機能拡張を可能とし、対応する機能ドライバを探しだすことができる情報を標準化することでフレキシブルな機能拡張手段を提供する。
本実施形態を概略的に説明すると、次のようである。
(機能拡張方法)
ホストドライバが、追加機能を制御する機能ドライバを探して、対応する機能ドライバがホストにインストールされていた場合、その機能ドライバに制御を渡す仕組みを取り入れることにより、機能拡張が容易に行えるようになる。機能固有の制御は、機能ドライバの中に隠蔽されるため、ホストドライバは最小限の情報のみで追加機能を実装可能となる。例えばファームウェアが管理する複数ページの拡張レジスタを有し、これら拡張レジスタのページ0に、特定のドライバを認識するための標準的な汎用情報(general information)フィールドを提供する。これによりホストシステムは、プラグ・アンド・プレイの実装が可能となる。また、マルチ機能カード/デバイスをサポートするために、個々の機能を指し示すことができるようにホストシステムが管理しておくことで、ホストソフトウエアの改変なしにマルチ機能カード/デバイスを使用可能にする。
(SDメモリ又はSDIOホストコントローラの対応)
SDメモリ用のホストコントローラにおいても、追加機能の制御を効率良く行える拡張レジスタをアクセスするための専用コマンドを定義する。512バイトの固定ブロック長の転送とすることにより、従来のSDメモリ用ホストコントローラからこの専用コマンドを発行できる。さらに、コマンドの引数として有効データ長の情報や、ライト時のマスク機能を持つことにより、リード・モディファイ・ライトを不要にすることが可能となる。
SDIOカード対応のホストコントローラにおいては、SDIOのアクセスコマンドからも、拡張レジスタをアクセスできるようにすることにより、小さいブロック長転送とマルチブロック転送に対応可能となるため、さらに最適化したドライバを作ることが可能になる。
データの転送用ポートとしてのデータポートをサポートすることで、拡張レジスタ空間の消費量が少ない実装が可能となる。また、データポートを用いることにより、拡張レジスタ以外のデバイスへのデータ転送も効率良く行うことが可能となる。複数ブロックによるバースト転送コマンドをサポートすることができる。データポートは、機能の実装時に拡張レジスタの任意のアドレスをデータポートとして定義できる。カードはアドレスを解読してデータポートか拡張レジスタかを判断する。
(リロケータブルアドレスによる拡張レジスタ定義)
カードベンダーにより、拡張レジスタ上の任意の位置に追加機能を制御するレジスタを割り当てることを可能とし、実装したレジスタのアドレス情報を汎用情報フィールドから提供することにより、レジスタ配置をリロケータブルとすることを可能としている。このため、従来標準化が必要であったアドレス配置は不要となり、メモリデバイスを製造し易くなる。再配置が可能であるため、レジスタを拡張しても容易に対応ができる。
以下、実施の形態について、図面を参照して説明する。
図1は、本実施形態に係るメモリシステムを概略的に示している。
メモリシステムは、例えばSDカードのようなメモリデバイス11と、ホスト20により構成される。
メモリデバイス11は、ホスト20に接続されたときに電源供給を受けて動作し、ホスト20からのアクセスに応じた処理を行う。このメモリデバイス11は、コントローラ11aを有している。
コントローラ11aは、例えばホストインタフェース(I/F)12、CPU13、ROM(Read only Memory)14、RAM(Random Access Memory)15、バッファ16、メモリインターフェース(I/F)17により構成されている。これらは、バスにより接続されている。メモリインターフェース17には、例えばNAND型フラッシュメモリ18と、拡張機能部としてのSDIO19が接続されている。拡張機能部は、例えば無線LAN装置などを適用することが可能である。
ホストインタフェース12は、コントローラ11aとホスト20との間のインターフェース処理を行う。
メモリインターフェース17は、コントローラ11aとNAND型フラッシュメモリ18、又はSDIO19との間のインターフェース処理を行う。
CPU13は、メモリデバイス11全体の動作を司るものである。このCPU13を正制御するプログラムは、ROM14の中に格納されているファームウェア(制御プログラム等)を用いるかあるいは、RAM115上にロードして所定の処理を実行する。すなわち、CPU13は、各種のテーブルや後述する拡張レジスタをRAM18上に作成したり、ホスト20からライト(書き込み)コマンド、リード(読み出し)コマンド、イレース(消去)コマンドを受けてNAND型フラッシュメモリ18上の領域をアクセスしたり、バッファ16を介してデータ転送処理を制御したりする。
ROM14は、CPU13により使用される制御プログラムなどのファームウェアを格納する。RAM15は、CPU13の作業エリアとして使用され、制御プログラムや各種のテーブルや後述する拡張レジスタを記憶する。
バッファ16は、ホスト20から送られてくるデータを、例えばNAND型フラッシュメモリ18へ書き込む際、一定量のデータ(例えば1ページ分)を一時的に記憶したり、NAND型フラッシュメモリ18から読み出されたデータをホスト20へ送り出す際、一定量のデータを一時的に記憶したりする。またバッファを介することにより、SDバスインターフェースとバックエンドを非同期に制御することができる。
NAND型フラッシュメモリ18は、例えば積層ゲート構造のメモリセル、又はMONOS構造のメモリセルにより構成されている。
SDIO19は、例えばデジタルカメラやPHSなどの周辺機器やインターフェースとしての機能を有している。例えば、SDIO19として無線LAN装置を適用することで、無線通信機能を有さないデジタルカメラでも外部サーバ、外部PC等との間で無線によるデータ通信を行うことが可能となる。
ホスト20は、例えばデジタルカメラやPHSなどが適用可能である。ホスト20は、ホストコントローラ21、CPU22、ROM23、RAM24、例えばハードディスク25(SSDを含む)により構成されている。これらはバスにより接続されている。
CPU22は、ホスト全体を制御する。ROM23は、CPU22の動作に必要なファームウェアを記憶している。RAM24は、例えばCPU22の作業領域として使用されるが、CPU22が実行可能なプログラムもここにロードされ実行される。ハードディスク25は、各種データを保持する。ホストコントローラ21は、メモリデバイス11が接続された状態において、メモリデバイス11とのインターフェース処理を行う。さらに、CPU22の指示に従って、後述する各種コマンドを発行する。
(ファームウェアの構成)
図2は、メモリデバイス11のROM14に記憶されたファームウェアの機能構成の一例を示している。これらの機能はコントローラ11aを構成するCPU13等の各ハードウェアとの組み合わせにより実現されるものである。ファームウェアは、例えばコマンド処理部14a、フラッシュメモリ制御部14b、拡張レジスタ処理部14c、機能処理プログラム14dにより構成されている。拡張レジスタ処理部14cは、メモリデバイス11が起動された際、RAM15内に拡張レジスタ31を生成する。この拡張レジスタ31は、仮想レジスタであり、拡張機能を定義可能とされている。
(拡張レジスタの構成)
図2に示すように、拡張レジスタ31は、例えば8ページにより構成されている、1ページは、512バイトにより構成されている。512バイトの拡張レジスタをバイト単位にアクセスするため、最低9ビットのアドレスが必要となり、8ページアクセスするために、最低3ビットのアドレスが必要となる。合計12ビットのアドレスにより、拡張レジスタの全空間がアクセス可能となる。512バイトは殆どのホストがサポート可能なアクセス単位であるが、512バイトに限定されず大きくしても良い。長いビット長のアドレスフィールドで構成される場合は、下位何ビットかがアクセス単位として使用され、残りの上位のビットは、複数ページのひとつを選択するために使用される。
512バイト単位とする理由は、多数のメモリカードホストコントローラが、1ブロック=512バイトを単位としてリード/ライト転送を行う構成になっているためである。SDIO対応のホストコントローラであれば、1バイト単位のリード/ライトが可能であるが、全てのホストコントローラがこれをサポートしているわけではない。大多数のホストコントローラで拡張機能を制御できるようにするためには、512バイト単位のアクセスが行えると都合が良い。
8ページ(ページ0〜ページ7)の内、ページ0は、拡張機能のプラグ・アンド・プレイを行うために汎用情報フィールドを記録しておくための領域である。汎用情報フィールドの詳細については後述する。ページ1〜ページ7は、拡張機能を制御するためのレジスタが定義される。ページ0は位置が特定し易いために、汎用情報フィールドを記録しておく場所としては適切であるが、必ずしもページ0である必要はなく、特定のページ位置を汎用情報フィールドの記載する場所として定義することもできる。
拡張レジスタのリード/ライトは、以下に定義される専用のリード/ライトコマンドが用いられる。これらのコマンドは、拡張レジスタをリード/ライトする第1の動作モードと、データポートを構成する第2の動作モードを有している。
(拡張レジスタのリードコマンド(CMD48))
図3は、拡張レジスタのリードコマンド(CMD48)のフィールド構成の一例を示している。“S”は、コマンドのスタートビットを示し、“T”は転送方向を示すビットであり、“index”は、コマンド番号を示している。“RS”(レジスタセレクト)は拡張レジスタ31内のページを示し、“OFS”は選択されたページ内におけるデータの位置(ページの先頭からのオフセット)を示している。3ビットの“RS”と、9ビットの“OFS”で、512バイトの拡張レジスタ8ページ分の空間をバイト単位に指定することができる。具体的には、選択された拡張レジスタ内のリード開始位置が“RS”と“OFS”により指定される。
“LEN”はデータ長を示している。9ビットのLENフィールドにより、512バイトの拡張レジスタ内の読み出しに必要な有効なデータ長が指定される。
“CRC7”は、巡回冗長検査(cyclic redundancy check)コードを示し、“E”は、コマンドのエンドビットを示している。“rsv”は、予備のビットを示している。
(拡張レジスタのリードコマンド、第1の動作モード)
図4は、第1の動作モードによる拡張レジスタのリード動作の例を示している。
図4に示すように、メモリデバイス11は、ホスト20からコマンド(CMD48)を受け取ると、レスポンス(R1)をホスト20に返し、その後、拡張レジスタ31から512バイトのデータブロックを読み出す。
具他的には、コマンド(CMD48)の引数で、拡張レジスタのページと、ページ内の読み出すべきデータの位置が、“RS”と“OFS”で指定され、データ長が“LEN”で指定される。このようにして指定された拡張レジスタ内のデータが、512バイトのデータブロックの先頭にセットされ、読み出される。512バイトのデータブロックのうち、“LEN”で指定されたデータ長を超えるデータは、無効データとなる。データブロックの最後にはCRCコードが付加され、正しくデータが受け取れたかをチェックすることが可能とされている(無効データを含めてチェックを行う)。有効データが先頭から配置されているため、ホスト20は、有効データを探すために、データシフトなどの操作を行う必要がない。
(拡張レジスタのリードコマンド、第2の動作モード)
図5は、第2の動作モードによるデータポートリードの動作の例を示している。
メモリデバイス11は、このコマンド(CMD48)を受け取ると、レスポンス(R1)を返し、その後に512バイトのデータブロックを返す。
コマンドの引数“RS”,“OFS”により、拡張レジスタの選択されたページ内の位
置が指定される。図5ではレングスが1の場合のデータポート例が示されている。すなわち、データポートは、拡張レジスタマップ上において、1バイトのアドレスを占有するだけで良い。データポートであるかどうかをアドレスのデコードによって識別できれば良く、実際に1バイト幅のポートを通してデータが伝送される必要はないので、データ伝送性能には影響しない。このデータポートに割り当てられたデバイスから1ブロック(512バイト単位)のデータをリードすることができる。すなわち、1回当たり、1ブロック(512バイト単位)のデータをリードすることができる。この読み出されたデータは、例えばバッファ16に保持され、ホスト20によって読み出される。
続いて同じデータポートをリードすると、続きの512バイトのデータを読み出すことができる。データポートから読み出すデータを何処から取ってくるかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。512バイトのデータブロックの最後にCRCコードが付加され、正しくデータが受け取れたか否かがチェック可能とされている。
(拡張レジスタのライトコマンド(CMD49))
図6は、拡張レジスタのライトコマンドの一例を示している。ライトコマンド(CMD49)において、リードコマンド(CMD48)と同一部分には同一符号を付している。ライトコマンドとリードコマンドは、“index”により区別される。3ビットの“RS”と、9ビットの“OFS”により、拡張レジスタのページと選択されたページ内のデータの位置が指定される。9ビットの“LEN”フィールドにより、512バイトの拡張レジスタに書き込むデータ長が指定される。したがって、512バイト内の任意のデータ長(バイト単位)のデータを拡張レジスタの任意のページと場所に書き込むことが可能である。
ライトコマンド(CMD49)は、コマンドの引数の中にマスクレジスタが設けられている。すなわち、“Mask”は、8ビット長のマスクレジスタを示している。このマスクレジスタにより、1バイトのデータのライトにおいて、ビット単位のオペレーションが可能となり、特定のビットにのみデータを書き込むことが可能となる。このため、1バイト内のビットオペレーションであれば、リード・モディファイ・ライトを行う必要がない。マスクレジスタは、データ長が1バイトのとき、すなわち、“LEN=0”(レングス1)のとき有効となる。マスクレジスタ“Mask”のデータが“1”のビットは、データが書き込まれ、マスクレジスタ“Mask”のデータが“0”のビットは、既にセットされた値が保存される。
すなわち、図7(a)に示すようなデータを保持している拡張レジスタを仮定した場合において、マスクレジスタのデータが、図7(b)に示すようである場合、ライトコマンドが実行されることにより、図7(c)に示すように、マスクレジスタのデータが“1”のビットはデータが書き込まれ、データが“0”のビットは、元のデータが保持される。このため、リード・モディファイ・ライトを行うことなく、所要のビットのみデータを書き換えることが可能となる。“x”で示す部分が、新しいデータが書き込まれたビットを示す。
また、より長いマスクデータを別の手段によって供給できる場合、LEN>1でもマスクライトが可能であるが、図7に示す例では、コマンド引数にマスクデータを割り当てているため、8ビットマストとしている。
(拡張レジスタのライトコマンド、第1の動作モード)
図8は、第1の動作モードによる拡張レジスタのライト動作の例を示している。
メモリデバイス11は、このコマンド(CMD49)を受け取ると、レスポンス(R1)を返し、その後、512バイトのデータブロックを受け取る。
メモリデバイス11は、データブロックが正しく受け取れたかどうかを示すCRCコードをホスト20に返す。その後、このコマンドの処理が終了するまでビジーを返し、ホスト20が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ16に保持されている。
コマンド処理において、コマンドの引数“RS”、“OFS”により、拡張レジスタ内のページと位置が指定され、“LEN”によりデータ長が指定される。バッファ16に保持されたデータブロックのうち、先頭から“LEN”で指定した長さのデータが拡張レジスタに書き込まれる。“LEN”で指定されたデータ長を超えるデータブロック中のデータは無効データとして破棄される。
有効データをデータブロックの先頭から配置することにより、ホストシステムは有効データをデータブロックの途中に配置する操作が不要となる。
(拡張レジスタのライトコマンド、第2の動作モード)
図9は、第2の動作モードによるライトデータポートの動作の例を示している。
メモリデバイス11は、このコマンド(CMD49)を受け取ると、レスポンス(R1)を返し、その後、512バイトのデータブロックを受け取る。
メモリデバイス11は、データブロックが正しく受け取れたかどうかを示すCRCコードをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホスト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領域の位置と領域の大きさを示している。
このように、拡張レジスタ内に複数の領域を定義できる。各領域はオーバーラップしないように配置される。レングス情報によりオーバーラップがあるかどうかをチェックすることができる。
追加フィールドが必要になった場合、これ以降に追加定義していく。新しいフィールドが認識できないホストは、認識可能なフィールドまで読み出し、追加フィールドは無視する。上記の(次デバイスの先頭アドレス)フィールドによりスキップすることができる。
(リードコマンド(CMD48)の動作)
図11は、上記リードコマンド(CMD48)に対応するメモリデバイス11内のコントローラ11aの動作を示している。
リードコマンドを受けると、CPU13により、コマンドの引数“RS”、“OFS”が解析され、リードコマンドがデータポートかどうか判別される(ST11)。すなわち、拡張レジスタ内のページ“RS”と、ページ内におけるデータの位置が判別される。この結果、コマンドが拡張レジスタのリードであると判別された場合、第1の動作モードにより、拡張レジスタ31の選択されたページの“OFS”で示された位置からデータ長“LEN”のデータが取得される(ST12)。この取得されたデータは、バッファ16にセットされる(ST13)。
一方、ステップST11において、リードコマンドがデータポートであると判別された場合、第2の動作モードにより、拡張レジスタ31の選択されたページの“OFS”で示された位置のデータポートを介して、例えばSDIO19の特定のファンクションから512バイトのデータが取得される(ST14)。この取得されたデータは、バッファ16にセットされる(ST15)。
(ライトコマンド(CMD49)の動作)
図12は、上記ライトコマンド(CMD49)に対応するメモリデバイス11内のコントローラ11aの動作を示している。
ライトコマンドを受けると、CPU13(コマンド処理部14a)により、コマンドの引数“RS”、“OFS”が解析され、ライトコマンドがデータポートかどうか判別される(ST21)。すなわち、拡張レジスタ内のページ“RS”と、ページ内におけるデータの位置が判別される。この結果、ライトコマンドがデータポート以外と判別された場合、コマンドの引数“LEN=0”(レングス1)であるかどうか、すなわち、マスクが有効かどうか判別される(ST22)。この判別の結果、“LEN=0”ではないと判別された場合(レングスが1より大きい)、拡張レジスタ処理部14cにより拡張レジスタのライト処理が行われる。すなわち、バッファ16から“LEN”により指定された長さのデータが取得される(ST23)。この取得されたデータは、拡張レジスタの“RS”で選択されたページの“OFS”で指定された位置にセットされる。
一方、上記ステップST22において、“LEN=0”であり(レングスが1)、マスクが有効であると判別された場合、拡張レジスタ処理部14cによりバッファ16から1バイトのデータと、1バイトのマスクが取得される(ST25)。この1バイトのデータと、1バイトのマスクにより、図7(a)(b)(c)に示すマスク動作が実行され、拡張レジスタの“RS”で選択されたページの“OFS”で指定された位置のデータの一部が書き換えられる(ST26)。
また、上記ステップ21において、データポートであると判別された場合、バッファ16から512バイトのデータが取得される(ST27)。この取得されたデータは、拡張レジスタ31の選択されたページの“OFS”で示された位置のデータポートを介して、例えばSDIO19の特定のファンクションに転送される(ST28)。
(ホストドライバ処理)
図13は、ホスト20の処理を示している。ホスト20に、メモリデバイス11が接続されると、メモリデバイス11が起動され、メモリデバイス11のRAM15に拡張レジスタ31が展開される。ホストデバイス11は、ホストドライバによって先ず、リードコマンド(CM48)を発行して、拡張レジスタ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からRAM24にロードされ、ページ0に記載された1つ又は複数の拡張領域のアドレスポインタ(開始アドレス)が機能ドライバに渡され、その拡張機能が初期化される(ST42)。上記アドレス、レングス情報は、前記RAM24にロードした機能ドライバを実行するときに渡される。標準機能ドライバと専用機能ドライバでは、受け渡しできるアドレス、レングス情報の数が異なる可能性があるが、ページ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も拡張機能用のドライバの検索対象とされる。
(SDIOにおける拡張レジスタアクセス)
図15は、SDIOにおける拡張レジスタアクセスを示している。
SDメモリカードに対応するホストコントローラは、コマンドCMD48、CMD49を用いて拡張レジスタをアクセスして、拡張機能を制御することができる。すなわち、固定長ブロック、シングルブロック転送をサポートしている。
これに対して、SDIOカードに対応するホストコントローラでもコマンドCMD48、CMD49を用いて拡張レジスタをアクセスできるようにするとともに、拡張レジスタをSDIOの各ファンクション領域にマッピングすることで、SDIOコマンドCMD52(ライトコマンド)、CMD53(データ転送コマンド)からもアクセスすることが可能となる。SDIOコマンドを用いると、可変ブロック長、マルチブロック転送をサポートでき、ドライバの最適化を図ることができる。コマンドCMD48、CMD49でアクセスする場合、上記SDIO空間上のマッピングに関係なく、拡張レジスタをアクセスすることができる。
具体的には、拡張レジスタをSDIOで使用する場合、拡張レジスタの各ページは、各ファンクション領域にマッピングされる。図15に示す例の場合、拡張レジスタのページ0は、ファンクション領域61のファンクション0にマッピングされ、ページ1、ページ2はファンクション1にマッピングされ、ページ3はファンクション2にマッピングされている。ファンクション0は、各ページの機能レジスタがSDIOマップのどこに配置されているかを示すアドレス情報を保持している。このため、このアドレス情報を用いることにより、コマンドCMD48、CMD49を用いたドライバだけでなく、コマンドCMD52、CMD53を用いたドライバにより、拡張レジスタの各ページをアクセスすることが可能である。
尚、ホスト20は、拡張レジスタの第1ページに記載された汎用情報フィールドから、拡張機能に割り当てられた拡張レジスタの位置情報をドライバに渡す。これにより、拡張機能が任意の位置に配置されていても制御可能となる。
また、ホスト20は、前述したプラグ・アンド・プレイにより、メモリデバイス11とデータ転送が可能となった状態において、前記コマンドCMD48、CMD49、CMD52、CMD53を用いて、拡張機能部としてのSDIOとデータ伝送が可能となる。
上記実施形態によれば、メモリデバイス11のRAM15内に複数ページの拡張レジスタ31を設け、これら拡張レジスタ31のページ0に、特定のドライバを認識するための標準的な汎用情報フィールドを設定している。このため、ホスト20は、拡張レジスタ31のページ0の汎用情報フィールドを参照してドライバを設定することにより、プラグ・アンド・プレイを実現することができる。
また、拡張レジスタをアクセスするための専用のコマンドCMD48、CMD49を定義することにより、メモリ用のホストコントローラにおいても、追加機能を効率良く制御することができる。
しかも、データの転送は、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の実施形態に係るリードコマンドCMD48、及びライトコマンドCMD49のフィールド構成の一例を示している。尚、図17、図18において、図3、図6と同一部分には同一符号を付し、説明は省略する。
図17、図18に示すCMD48、CMD49は、図3、図6に示すCMD48、CMD49において、“RS”と“OFS”の12ビットで構成していたアドレスフィールドを “FNO”、“Addr”により構成される20ビットに拡張し、SDIOとの親和性・互換性を考慮している。
“MIO”フィールドは、メモリ空間と、SDIO空間を分離するビットであり、相互に独立して拡張レジスタを定義できる。このため、拡張レジスタを定義するときに双方の干渉を防ぐことができる。“MIO”=0のとき、メモリ用の拡張レジスタをアクセスでき、“MIO”=1のとき、SDIO用の拡張レジスタをアクセスできる。
“FNO/FID”フィールドは、“MIO”フィールドの値により、“FNO”と“FID”の一方に設定される。“MIO”=1の場合“FNO”は、機能番号を示す3ビットのフィールドであり、“MIO”=0の場合“FID”は、機能識別情報を示す4ビットのフィールドである。ビット数が異なるため別なシンボルで表記している。前記汎用情報フィールを読む場合は、“FNO/FID”=0を設定する。ホストドライバは、このフィールドを0にセットしておけば良い。“FID”は、メモリ空間では使用しないが、“FNO”はSDIO空間において8個の機能空間を区別するために使用される。
すなわち、“FNO/FID”(4ビット)は、“MIO”=1のとき、ビット38〜36は、“FNO”を示し、ビット35は、常に“0”とされる。
また、“FNO/FID”は、“MIO”=0のとき、ビット38〜36は、“FID”を示す。“FID”は、メモリ空間を増加せず、機能を識別するために使用される。
(メモリ空間を“FID”によって増やしても良く、これは制約ではない。)
カードに機能を実装するとき、“FID/FNO”にユニークな値が割り当てられ、後述するように、汎用情報のフィールド定義に表示される。このため、機能ドライバがデータポートへのコマンド発行時、引数に“FID/FNO”を設定することにより、カードは、コマンドが指定した機能に対するコマンドであることが確認できる。したがって、間違ったデータポートの指定により、誤書き込みによるデータ破壊、誤動作などを防止でき、安全性が担保される。
また、ホストはアドレス情報から機能を特定しようとするとアドレス情報をデコードをしなければならないが、“FID/FNO”だけでも機能識別が可能となり、ホストドライバの制御を簡素化できる。すなわち、同じコマンドが複数の機能により混在して使用されるため、ホストおよびカードにおいて、各機能を識別することが可能なように、“FID/FNO”が設定されている。
“Addr”フィールド(17ビット)は、アドレスであり、128KBの空間をアクセスできる。“Addr”の上位8ビットは、ページ番号として用いられ、8ビットにより0〜7ページのうちの1ページが選択される。下位9ビットで選択されたページ内の512バイトのブロックがアクセスされる。すなわち、“MIO”、“FNO”(“MIO”=1)、“Addr”を用いることにより、拡張レジスタの位置が指定される。
図17に示す“Len”フィールド(8ビット)は、有効データ長を示している。
また、図18に示すライトコマンド(CMD49)において、“MW”は、マスクライトモードを指定するビットである。“MW”=0のとき、マスクがディスエーブルとされ、“MW”=1のとき、マスクがイネーブルとされる。
また、“Len/Mask”フィールドは、マスクがディスエーブル(“MW”=0)のとき、データ長が16−08ビットの9ビットに設定される。また、マスクがイネーブル(“MW”=1)のとき、データ長は1に設定され、16−08ビットのうちの下位8ビットにより書き込み動作が上述したように制御される。すなわち、8ビットの各ビットは、“1”のとき、レジスタのデータが書き込まれ、“0”のとき、レジスタのビットは変化されず、既にセットされた値が保存される。
第2の実施形態では、SDIOコマンドCMD52、CMD53がアクセス可能な空間と、CMD48、CMD49がアクセス可能なSDIO空間を一致させることができる。すなわち、どちらのコマンドを用いても同じ拡張レジスタ・セットをアクセスすることが可能になる。
(拡張レジスタのリードコマンド、第1の動作モード)
図19は、拡張レジスタのリードコマンド(CMD48)の第1の動作モードによる拡張レジスタのリード動作の例を示している。
図19に示すように、メモリデバイス11は、ホスト20からコマンド(CMD48)を受け取ると、レスポンス(R1)をホスト20に返し、その後、拡張レジスタ31から512バイトのデータブロックを読み出す。
具体的には、コマンド(CMD48)の引数としての“FNO”(MIO=1)、“Addr”により、ページ内の読み出すべきデータの位置が指定され、読み出すべき有効データ長が“Len”で指定される。このようにして指定された拡張レジスタ内のデータが、512バイトのデータブロックの先頭にセットされ、読み出される。512バイトのデータブロックのうち、“Len”で指定されたデータ長を超えるデータは、無効データとなる。データブロックの最後にはCRCコードが付加され、正しくデータが受け取れたかをチェックすることが可能とされている(無効データを含めてチェックを行う)。
図20は、第2の動作モードによるデータポートリードの動作の例を示している。
メモリデバイス11は、このコマンド(CMD48)を受け取ると、レスポンス(R1)を返し、その後に512バイトのデータブロックを返す。
メモリデバイス11は、コマンドの引数の“FID/FNO”が割り当てられた拡張レジスタ・セットに一致するかどうかを検証する。拡張レジスタ・セットは、“FNO”(“MIO”=1)と“Addr”によって特定される。これらが一致している場合、コマンドの引数“Addr”により、拡張レジスタの選択されたページ内の位置が指定される。データポートは、拡張レジスタマップ上において、1バイトのアドレスを占有するだけで良い。データポートであるかどうかはアドレスのデコードによって識別すれば良く、実際に1バイト幅のポートを通してデータが伝送される必要はないので、データ伝送性能には影響しない。このデータポートに割り当てられたデバイスから1ブロック(512バイト単位)のデータをリードすることができる。すなわち、1回当たり、1ブロック(512バイト単位)のデータをリードすることができる。この読み出されたデータは、例えばバッファ16に保持され、ホスト20によって読み出される。
続いて同じデータポートをリードすると、続きの512バイトのデータを読み出すことができる。データポートから読み出すデータを何処から取ってくるかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。512バイトのデータブロックの最後にCRCコードが付加され、正しくデータが受け取れたか否かがチェック可能とされている。
また、上記検証の結果、“FID/FNO”が機能に割り当てられた値と不一致である場合、データ転送動作は実行されず、データブロックは転送されない。
(拡張レジスタのライトコマンド、第1の動作モード)
図21は、拡張レジスタのライトコマンドの一例を示している。
メモリデバイス11は、このコマンド(CMD49)を受け取ると、レスポンス(R1)を返し、その後、512バイトのデータブロックを受け取る。
メモリデバイス11は、データブロックが正しく受け取れたかどうかを示すCRCコードをホスト20に返す。その後、このコマンドの処理が終了するまでビジーを返し、ホスト20が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ16に保持されている。
ライトコマンド(CMD49)において、リードコマンド(CMD48)と同一部分には同一符号を付している。ライトコマンドとリードコマンドは、“index”により区別される。“FNO”(“MIO”=1)と17ビットの“Addr”により、拡張レジスタのページと選択されたページ内のデータの位置が指定される。さらに、9ビットの“Len”フィールドにより、512バイトの拡張レジスタに書き込むデータ長が指定される。したがって、512バイト内の任意のデータ長(バイト単位)のデータを拡張レジスタの任意のページと場所に書き込むことが可能である。
ライトコマンド(CMD49)は、上記のように、コマンドの引数の中にマスクレジスタが設けられている。すなわち、“Mask”は、8ビット長のマスクレジスタを示している。このマスクレジスタにより、1バイトのデータのライトにおいて、ビット単位のオペレーションが可能となり、特定のビットにのみデータを書き込むことが可能となる。このため、1バイト内のビットオペレーションであれば、リード・モディファイ・ライトを行う必要がない。マスクレジスタは、データ長が1バイトのとき、すなわち、“Mask”の上位1ビットが“1”のとき有効となる。
(拡張レジスタのライトコマンド、第2の動作モード)
図22は、第2の動作モードによるライトデータポートの動作の例を示している。
メモリデバイス11は、このコマンド(CMD49)を受け取ると、レスポンス(R1)を返す。その後、メモリデバイス11は、コマンドの引数の“FID/FNO”が拡張レジスタ・セットに一致するかどうかを検証する。拡張レジスタ・セットは、“FNO”(“MIO”=1)と“Addr”によって特定される。これらが一致している場合、コマンドの引数“Addr”により、拡張レジスタの選択されたページ内の位置を指定し、512バイトのデータブロックを受け取る。
次いで、メモリデバイス11は、データブロックが正しく受け取れたかどうかを示すCRCコードをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホスト20が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ16に保持されている。
コマンド処理において、コマンドの引数“Addr”により、拡張レジスタ内のページと位置が指定され、データポートが指定される。データポートは、拡張レジスタマップ上において、1バイトのアドレスを占有するだけでよい。このデータポートに、バッファ16に保持された1ブロック(512バイト単位)のデータをある割り当てたデバイスにライトすることができる。すなわち、1回当たり、1ブロックのデータをライトすることができる。
続いて同じデータポートをライトすると、続く512バイトのデータを割り当てたデバイスに書き込むことができる。データポートのデータを何処に渡すかは、拡張機能の仕様によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジスタを定義して制御することができる。
また、上記検証の結果、“FID/FNO”が機能に割り当てられた値と不一致である場合、データ転送動作は実行されず、データブロックは破棄される。
(汎用情報フィールドの使用例)
図23は、第2の実施形態に係るFIDの指定に関する例を示した図である。汎用情報フィールドの意味は、図10と同じである。異なる点は、拡張アドレス、長さフィールドのフォーマットで、“FID/FNO”の値を設定するために4ビットフィールドが確保されていることにある。各機能毎にユニークな“FID/FNO”が設定される。カードに実装された各機能は自分の“FID/FNO”を認識している。
(リードコマンド(CMD48)の動作)
図24は、図19、図20に示すリードコマンド(CMD48)に対応するメモリデバイス11内のコントローラ11aの動作を示している。
リードコマンドを受けると、CPU13により、コマンドの引数“FID/FNO”が割り当てられた拡張レジスタ・セットに一致するかどうかが検証される(ST51)。拡張レジスタ・セットは、“FNO”(“MIO”=1)と“Addr”によって特定される。検証の結果、両者が一致している場合、コマンドの引数の“Addr”が解析され、リードコマンドがデータポートかどうか判別される(ST52)。すなわち、“FNO”(“MIO”=1)と“Addr”でデータポートとして定義されたアドレスであるかどうかが判別される。
この結果、アドレスがデータポートとしてのアドレスではなく、コマンドが拡張レジスタのリードであると判別された場合、第1の動作モードにより、位置“Addr”に基づき、拡張レジスタ31の選択されたページからデータ長“Len”のデータが取得される(ST53)。この取得されたデータ長“Len”のデータは、バッファ16の512バイトのデータブロックにセットされる(ST54)。
一方、ステップST52において、リードコマンドがデータポートであると判別された場合、第2の動作モードにより、拡張レジスタ31の選択されたページの予め設定された位置のデータポートを介して、例えばSDIO19の特定の機能(ファンクション)から512バイトのデータが取得される(ST55)。この取得されたデータは、バッファ16の512バイトのデータブロックにセットされる(ST56)。
上記ステップST51の判別の結果、データポートのコマンドでは無い場合、処理が終了される。
(ライトコマンド(CMD49)の動作)
図25は、上記ライトコマンド(CMD49)に対応するメモリデバイス11内のコントローラ11aの動作を示している。
ライトコマンドを受けると、CPU13(コマンド処理部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”であり、マスクライトであると判別された場合、拡張レジスタ処理部14cによりバッファ16のデータブロックから1バイトのデータが取得されるとともに、引数から1バイトのマスクが取得される(ST66)。
次いで、1バイトのデータと、1バイトのマスクにより、図7(a)(b)(c)に示すマスク動作が実行され、“Addr”で指定された拡張レジスタの所定のページ、所定の位置に1バイトのマスク動作が実行されたデータがセットされる(ST67)。
また、上記ステップST62において、ライトコマンドがデータポートであると判別された場合、バッファ16のデータブロックから512バイトのデータが取得される(ST68)。この取得されたデータは、拡張レジスタ31の指定されたページの位置のデータポートを介して、例えばSDIO19の特定の機能に送られる(ST69)。
上記ステップST61の判別の結果、データポートのコマンドでは無い場合、処理が終了される。
(CMD58、CMD59)
図26、図27は、データの転送効率を良くするためのマルチブロック転送コマンドを示すものであり、図26は、CMD58(Multi-Block Read)、図27は、CMD59(Multi-Block Write)を示している。
CMD58、CMD59の引数は、CMD48、CMD49と類似しているが一部定義が異なる。また、CMD58には、CMD48の引数“Len”がなく、CMD59には、CMD49の引数“MW”及び“Len/Mask”がない。これは、マルチブロック転送がデータポートに対する転送を想定しているためである。CMD58、CMD59はオプションコマンドであり、データポートは、複数のシングルブロック転送コマンドCMD48、CMD49で代替できるようになっている。
マルチブロック転送は、データポートを経由したデータ転送を想定している。したがって、このコマンドのアドレスが、拡張レジスタ空間の中のデータポートとして定義されたアドレスと一致した場合のみ、このコマンドが有効になる。このため、このコマンドが通常の拡張レジスタに対して実行された場合、エラーとなりデータ転送は実行されない。
“FID/FNO”フィールド(4ビット)には、発行されたコマンドがどの機能で用いるコマンドであるかを識別するためのコードが設定される。このため、“FID”フィールドを用いることにより、この値で機能を識別することができ、実装が容易になる。アドレス“Addr”フィールドでもファンクションは識別可能である。しかし、カードによって割り当てられるアドレスが異なるため、ホストドライバがアドレスから機能を特定することは管理がし難いという問題がある。
ホストドライバは、“FID”フィールドの値に基づき、機能毎にホストシステムに実装されているデータバッファなどを切り替え制御に用いることができる。
CMD58/59の引数には、データ長を指定する“Len”フィールドがない。この理由は、長いデータ伝送は、長いブロック数を指定する必要があり、この情報はリード/ライトコマンドの引数には指定しきれないためである。したがって、CMD58/59を発行する前にデータ転送に必要なブロック数を指定しておく必要がある。このため、例えば拡張レジスタにブロック数を設定するレジスタ定義し、CMD49で設定する方法や、ブロック数を設定するコマンド(CMD23)を、CMD58/59を発行する直前に発行する、などの方法が用いられる。
拡張レジスタにデータを設定する場合、各機能で独立して設定することができ、他の機能から影響されない。共通のブロック数コマンド(CMD23)を用いる場合、メモリマルチブロックコマンドに対するブロック数の設定と区別が必要である。このため、各CMD58/59の直前に発行する必要があり、ホストドライバは、CMD23の直後に他のコマンドが発行されないように順番を管理する必要がある。
ホストは、複数機能カード/デバイスのひとつの機能を特定するためには、初期化で得られるカード固有アドレス(RCA:Relative Card Address)やデバイスID、前記“MIO”と前記“FID/FNO”情報が必要である。
図28は、第2の実施形態に係る汎用情報フィールドの表示位置を示している。図28(a)に示すメモリ空間では、拡張レジスタのページ0に配置され、図28(b)に示すSDIO空間では、従来のレジスタとコンフリクトしない特定の位置に配置される。例えば図28(b)において、汎用情報SDIO用汎用情報は、機能(ファンクション)0の“008FFh”−“00800h”(512バイト)(“h”は16進数を示す)0に配置されている。
図29は、第2の実施形態に係るメモリ空間とSDIO空間の対応関係の一例を示している。図29において、図15と同一部分には同一符号を付している。
メモリ拡張レジスタは、CMD48/49によりアクセスが可能である。具体的には、512バイトの固定ブロック長で、シングルブロック転送が行われる。さらにデータポートの場合、CMD58/59でマルチブロック転送を行うことができる。SDIO拡張レジスタは、CMD48/49だけでなく、CMD52/53によってもアクセスが可能である。CMD53は可変長コマンドのため、データポートでなくてもSDIO拡張レジスタのアクセスに用いることができる。
(機能ドライバインストール)
SDIO機能(CMD52/53)が使用可能かどうかは、ホストシステムがサポートする機能によって決まる。SDIOをサポートしないホストは、CMD48/49、CMD58/59を用いた機能ドライバをインストールする。SDIOをサポートするホストシステムは、さらにCMD52/53を用いた機能ドライバもインストールすることが可能となる。
尚、CMD53は、例えば可変ブロック長、及び複数ブロック転送をサポートするリード又はライトが可能なコマンドであり、CMD52は、例えばデータを持たず、引数とレスポンスで1バイトのデータのリード、ライトを可能とするコマンドである。
CMD48/49のSDIO拡張レジスタ空間は、CMD52/53の空間と等価である。CMD53が可変ブロック長とマルチブロック転送をサポートするため、データ転送は最適化されたSDIOドライバを使用することにより一層効率的に実行される。
CIS(Card Information Structure)を参照することなく、CMD48/49がサポートされたホストが、その情報を参照するように、SDIOの汎用情報は、前記した機能0の特定の位置から見られる。
(機能ドライバの選択)
SDIO対応カードに関して、CMD52/53を用いた機能ドライバがインストールされている場合、その機能ドライバが使用され、インストールされていない場合、CMD48/49、CMD58/59を用いた機能ドライバが使用される。
SDIO非対応カードに関して、CMD48/49、CMD58/59を用いた機能ドライバが使用される。
(SDIOの初期化動作)
図30は、コンボカードにおけるSDIOの初期化動作を概略的に示している。
従来、SDIOの初期化シーケンスは、最初にSDIO初期化コマンド(CMD5)を実行しないとSDIO機能が有効にならないという定義になっている。このため、コンボカードでメモリを使用している場合でも、SDIOを使用する時点で再初期化が必要になるため、ホストにとって使いにくい仕様となっていた。
通常、I/O機能は、その機能を使う直前に初期化するのがシステムリソースを無駄にしないためや、消費電力を無駄に消費しないために好ましい。機能が初期化されるタイミングとしては、機能を用いるアプリケーションが起動したタイミングで行うのが良い。
また、再初期化では、カード固有アドレス(RCA)の変更が行われるため、メモリのアクセス方法にも影響を与えてしまう。メモリ制御に影響を与えず、SDIO機能を有効にするため、メモリ初期化シーケンスを基本として、SDIO機能は後で追加できることが望ましい。
そのため、図30に示すように、メモリデバイス11が起動され、初期化されると(ST71)、コマンド(CMD3)が発行され、カード固有アドレス(RCA)が取得される(ST72)。この後、コマンド(CMD7)が発行され(ST73)、メモリデバイス11が転送状態、すなわち、メモリが使用可能な状態に設定される(ST74)。この状態にいて、SDIOの初期化コマンド(CMD5)が発行される(ST75)。これにより、SDIOが初期化され、CMD52とCMD53の受付が可能とされる(ST76)。
尚、カード固有アドレス(RCA)はメモリの初期化で取得した値を維持する。これは初期化方法の追加であり、従来のSDIO初期化シーケンスでも初期化は可能であり互換性がある。
上記構成によれば、機能を用いるアプリケーションが起動したタイミングにおいて、機能が初期化されるため、メモリ制御に影響を与えることなく、各機能を初期化することができる。
(機能ドライバインターフェース)
従来、SDIOは、共通レジスタに必要な制御ビットを割り当てて制御していた。これを行うためハードウェアを実装する必要がある。専用の機能ドライバで機能を制御する場合、実装は自由に行うことができる。このため、必ずしも共通レジスタで制御を行う必要はない。従来共通レジスタで行っていた制御を機能ドライバのAPI(Application Program Interface)として定義すれば、制御をソフトウエア化することができる。APIレベルを標準化することにより、ハードウェアによる標準化は不要であり、実装を容易化することができる。
APIの例を以下に示す。
(1) Initialize Function
機能を初期化するために、ホストドライバから呼び出す。
(2) Abort/Reset Function
機能のアボート、又はリセット。
(3) Get Function Information
機能レビジョンの読み出し。
機能情報の読み出し(サポート情報など)。
割り込み情報の読み出し (ポーリング)。
(4) Power Consumption Control
機能が実装しているパワーモード情報。
(5) Power Off Notification
電源を切っても良いタイミングを通知する。
(6) Application Interface
アプリケーションとの間の制御インターフェース。
特に、複数機能が実装されているカードにおいて、カードの電源を切る場合、各機能が電源を停止できる状態としてから、ホストはカード電源を切る必要がある。Power Off Notificationはこの制御に用いられるAPIである。
図31は、メモリデバイス11としてのSDカードとホスト20の機能インターフェースの関係を概略的に示している。
ホスト20は、ホストコントローラ21、ホストドライバ71、ファイルシステム72、メモリアプリケーション73、機能ドライバ74、機能アプリケーション75により構成されている。また、メモリデバイス11としてのSDカードは、拡張レジスタ31、例えばSDIOからなる機能ハードウェア19を含んでいる。
ホスト20において、ホストドライバ71は、機能ドライバ74を見つけ、ロードする機能がサポートしている。すなわち、ホストドライバ71は、拡張レジスタの汎用情報フィールドを参照して、機能ドライバ74を検出し、その機能ドライバを実行することにより、拡張機能を使用することができる。また、拡張機能レジスタ31を制御する機能ドライバ74と機能アプリケーション74との間は、機能仕様により定義されたAPIによりコミュニケートされる。
SDカードは、標準化のため、機能仕様により定義された拡張機能レジスタ31と、ホストドライバ71が機能ドライバ74を見つけてロードすることができるように、上述した汎用情報フィールドを有している。
ホストコントローラ21とメモリデバイス11は、上述したコマンドCMD48/49等を用いてコミュニケートされる。
上記構成によれば、従来共通レジスタで行っていた制御を機能ドライバのAPIとして定義することにより、制御をソフトウエア化することができる。また、APIレベルを標準化することにより、ハードウェアによる標準化が不要であり、実装を容易化することができる。
また、ホストドライバ71は、拡張レジスタの汎用情報フィールドを参照して、機能ドライバ74を検出し、その機能ドライバを実行することにより、拡張機能を使用することができる。したがって、ホスト20は、容易に拡張機能を使用することが可能である。
(“FID”によるデータバッファの制御)
メモリデバイス11は、アドレス情報を識別することにより、どの機能に対するコマンドであるかを判別することが可能ではある。しかし、アドレス範囲は機能によって異なるため、ホスト20はアドレスから機能を識別するのが難しい。
このため、上述したように、“FID/FNO”を用いることにより、ホスト20は簡単に機能を識別することが可能である。
また、“FID/FNO”を用いることにより、例えばホスト20の複数のバッファを制御することが可能である。
図32に示すように、ホスト20は、メモリデバイス11としてのSDカードの複数の機能に対してデータ転送を行う場合、各機能に対応して独立したバッファ81、82を持っている。これらバッファ81、82は、マルチプレクサ(MUX)83を介してホストコントローラ21に接続されている。このマルチプレクサ83を“FID/FNO”により制御することにより、各機能に対応したバッファ81、82を選択することができる。
すなわち、ホスト20は、CMD58/59に設定した“FID/FNO”に応じて、対応するバッファ81、82をマルチプレクサ83により選択することができる。
ホストコントローラ21から例えばリードコマンドCMD58が発行された場合、メモリデバイス11の対応する機能の拡張レジスタから読み出されたデータは、ホストコントローラ21を介してマルチプレクサ83に供給される。マルチプレクサ83は、“FID/FNO”に基づき、受け取ったデータをバッファ81、82のうちの一方に供給する。
また、ホストコントローラ21から例えばライトデータコマンドCMD59が発行された場合、マルチプレクサ83は、“FID/FNO”に基づき、バッファ81、82のうちの一方から選択されたデータをホストコントローラ21に供給し、ホストコントローラ21は、メモリデバイス11にデータを転送する。メモリデバイス11は、“FID/FNO”に基づき、対応する機能の拡張レジスタにデータを供給する。
このように、“FID/FNO”を用いて、マルチプレクサ83を制御することにより、各機能に対応したバッファ82、83を確実に選択することが可能である。
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
11…メモリデバイス、13…CPU、14…ROM、15…RAM、16…バッファ、18…NAND型フラッシュメモリ、19…SDIO、20…ホスト、21…ホストコントローラ、22…CPU。

Claims (12)

  1. 不揮発性半導体記憶装置と、
    前記不揮発性半導体記憶装置を制御する制御部と、
    前記制御部に接続された作業エリアとしてのメモリと、
    前記制御部により制御される拡張機能部と、
    前記メモリ上に仮想的に、または制御部にハードウェアとして設けられ、前記拡張機能部の拡張機能を定義可能な一定のブロック長を有する拡張レジスタと、
    前記制御部は、前記拡張レジスタを前記一定のデータ長単位でリードする第1のコマンドと、前記拡張レジスタを前記一定のデータ長単位でライトする第2のコマンドとを処理し、
    前記拡張レジスタは、第1の領域、前記第1の領域と異なる第2の領域を含み、
    前記第1の領域は、前記拡張機能の種別及び制御可能なドライバを特定する第1情報と、前記拡張機能を制御する第2情報が記録された、前記第2の領域内の位置を示すアドレス情報とを記録し、
    前記第1、第2のコマンドは、前記複数ページで構成される拡張レジスタの1ページ内のデータをアクセスするために必要なアドレスフィールドと、有効なデータ長を示すレングスフィールドを引数として有し、
    前記第1、第2のコマンドの前記アドレスフィールドの値は、それぞれ第1、第2の動作モードを有し、
    前記第1のコマンドの前記第1の動作モードは、前記アドレスフィールドが示す拡張レジスタの位置から、レングスフィールドで示されたデータ長のデータを読み出すリード動作であり、
    前記第2のコマンドの前記第1の動作モードは、前記アドレスフィールドが示す拡張レジスタの位置に、レングスフィールドで示されたデータ長のデータを書き込むライト動作であり、前記第1、第2のコマンドの前記第2の動作モードは、前記アドレスフィールドが示す特定のアドレスを拡張レジスタのデータポートと解釈し、データポートと関係付けられた前記拡張機能部とのデータ転送を行うことを特徴とするメモリデバイス
  2. 前記第1のコマンドの前記第1の動作モードにおいて、前記拡張レジスタの指定されたページ内の位置に配置されたデータは、リードデータブロックの先頭から前記データを転送するように配置され、前記データの先頭は前記アドレスフィールドによって指定され、前記レングスフィールドはリードデータブロックからの有効データ長を示し、
    前記第2のコマンドの前記第1の動作モードにおいて、ライトデータブロックの先頭から転送されたデータを前記拡張レジスタのページに書き込み、前記拡張レジスタの指定されたページの書き込み位置の先頭は、前記アドレスフィールドによって特定され、前記データ長はレングスフィールドによって特定されることを特徴とする請求項記載のメモリデバイス
  3. 前記第2のコマンドは、引数にマスクライトを行うかどうかを選択するビットを持ち、マスクライトを行わない場合、前記レングスフィールドは有効なライトデータ長を示し、マスクライトを行う場合、ライトデータ長は固定値となり、前記レングスフィールドはビット単位に書き込むか元のデータを保持するかを選択するマスク情報を示し、マスク情報は前記ライトデータ長と同じ長さを持つことを特徴とする請求項記載のメモリデバイス
  4. 複数の拡張レジスタによって構成された拡張レジスタ・セットを用いた複数の方法によって制御される機能をさらに備え、複数の機能は単一の拡張レジスタ・セットによって制御され、
    前記第1の領域内の前記機能識別情報は、全ての機能に対するコマンド情報と、前記第2の領域内の拡張レジスタ・セットの各々の位置を明らかにする複数の情報を含むことを特徴とする請求項記載のメモリデバイス
  5. 固定ブロック長、及び複数ブロック転送をサポートするリードコマンドとしての第3のコマンドと、固定ブロック長、及び複数ブロック転送をサポートするライトコマンドとしての第4のコマンドを具備し、
    前記第3、第4のコマンドは、引数としてアドレスフィールドを含み、前記アドレスフィールドが拡張レジスタのデータポートを指定した場合のみデータ転送が実行され、データ長転送はブロック数によって指定されることを特徴とする請求項記載のメモリデバイス
  6. 前記拡張レジスタの前記第1の領域に配置された汎用情報は、標準の拡張機能を識別するための機能識別コード、製造者を識別するための製造者識別情報、拡張機能のクラスを識別するための機能識別情報のいずれか1つを含み、前記汎用情報は汎用ドライバ又は専用ドライバを選択するための情報として用いられることを特徴とする請求項1記載のメモリデバイス
  7. ホストドライバ及びシステムメモリをさらに具備し、前記ホストドライバ、前記第1のコマンドを用いて、前記拡張レジスタの前記第1の領域に記載された前記汎用情報から前記機能識別コード、前記製造者識別情報、前記機能識別情報のいずれか1つを読み出して使用可能な前記用ドライバ又は専用ドライバを特定し、特定された前記汎用ドライバ又は専用ドライバが存在する場合、前記ホストドライバは特定された前記汎用ドライバ又は専用ドライバを前記システムメモリにロードし、ロードされた前記汎用ドライバ又は専用ドライバは前記メモリデバイス内の拡張機能を初期化することを特徴とする請求項記載のメモリデバイスを使用するホストシステム。
  8. 前記ホストドライバは、前記汎用情報から、拡張機能に割り当てられた前記拡張レジスタの位置情報を、ロードされた前記汎用ドライバ又は専用ドライバに渡すことにより、拡張機能が任意の位置に配置されていても制御可能とすることを特徴とする請求項記載のホストシステム。
  9. 可変ブロック長、及び複数ブロック転送をサポートするリード、ライトが可能な第5のコマンドと、引数とレスポンスで1バイトデータのリード、ライトが可能な第6のコマンドと、
    前記第5、第6のコマンドによってアクセス可能な複数のファンクション領域を持ち、先頭のファンクション領域のある一部に前記第1の領域を割り当て、それ以外のファンクション領域に前記第2の領域を割り当て、前記第5、第6のコマンドによってアクセス可能な拡張レジスタ領域を前記第1、第2のコマンドでも、アクセス可能にしたことを特徴とする請求項記載のメモリデバイス
  10. 前記メモリデバイスは、固定ブロック長、及び複数ブロック転送をサポートするリードコマンドとしての第3のコマンドと、固定ブロック長、及び複数ブロック転送をサポートするライトコマンドとしての第4のコマンドを具備し、
    前記第3、第4のコマンドは、引数としてアドレスフィールドを含み、前記アドレスフィールドが拡張レジスタのデータポートを指定した場合のみデータ転送が実行され、データ長転送はブロック数によって指定され、
    前記第3、第4のコマンドの前記アドレスフィールドの値は、それぞれ第1、第2の動作モードを有し、
    前記ホストドライバは、前記第1、第2のコマンド、又は前記第3、第4のコマンドにより、前記第1の動作モードを用いて前記メモリデバイスの前記拡張レジスタをアクセスし、前記第2の動作モードを用いて前記メモリデバイスの前記拡張機能部と前記ホストシステム間でデータ転送を行うことを特徴とする請求項記載のホストシステム。
  11. 前記ホストドライバは、各々の機能に単独で割り当てられた、前記機能識別コード、前記製造者識別情報、及び前記機能識別情報を含む汎用情報によって、複数の複数機能デバイスからあるひとつの機能を特定し、
    前記拡張レジスタの位置は、特定された機能に対応した前記汎用情報のアドレスフィールドによって決定され、前記拡張レジスタの長さは、前記機能の拡張レジスタ内に特定されることを特徴とする請求項記載のホストシステム。
  12. 前記メモリデバイスは、固定ブロック長、及び複数ブロック転送をサポートするリードコマンドとしての第3のコマンドと、固定ブロック長、及び複数ブロック転送をサポートするライトコマンドとしての第4のコマンドを具備し、
    前記第3、第4のコマンドは、引数としてアドレスフィールドを含み、前記アドレスフィールドが拡張レジスタのデータポートを指定した場合のみデータ転送が実行され、データ長転送はブロック数によって指定され、
    前記ホストドライバは、複数の機能デバイスに対応して個々に配置された前記複数のバッファと、前記第1のコマンド、第2のコマンド、第3のコマンドまたは、第4のコマンドの引数に設定された機能識別情報に基づき、前記複数のバッファの1つを選択し、
    前記ホストドライバは、前記複数の機能デバイスを制御するコマンドを発行し、前記コマンドは前記複数の機能デバイスにより混在して使用されることを特徴とする請求項7記載のホストシステム。
JP2011110242A 2011-02-04 2011-05-17 メモリデバイス及びホストシステム Active JP5728292B2 (ja)

Priority Applications (11)

Application Number Priority Date Filing Date Title
JP2011110242A JP5728292B2 (ja) 2011-02-04 2011-05-17 メモリデバイス及びホストシステム
KR1020137020444A KR101493633B1 (ko) 2011-02-04 2011-09-16 확장 기능이 용이하게 설정될 수 있는 메모리 시스템
CN201180068856.7A CN103403803B (zh) 2011-02-04 2011-09-16 可以很容易在其中设定扩展功能的存储器***
EP15176252.3A EP2955716B1 (en) 2011-02-04 2011-09-16 Memory system in which extended function can easily be set
PCT/JP2011/071776 WO2012105084A1 (en) 2011-02-04 2011-09-16 Memory system in which extended function can easily be set
EP11784802.8A EP2671226B1 (en) 2011-02-04 2011-09-16 Memory system in which extended function can easily be set
TW100133693A TWI460589B (zh) 2011-02-04 2011-09-20 可容易設定延伸功能之記憶體系統
US13/956,825 US9104539B2 (en) 2011-02-04 2013-08-01 Memory system in which extended function can easily be set
US14/797,867 US9335953B2 (en) 2011-02-04 2015-07-13 Memory system in which extended function can easily be set
US15/463,765 USRE47542E1 (en) 2011-02-04 2017-03-20 Memory system in which extended function can easily be set
US16/452,252 USRE48997E1 (en) 2011-02-04 2019-06-25 Memory system in which extended function can easily be set

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011023217 2011-02-04
JP2011023217 2011-02-04
JP2011110242A JP5728292B2 (ja) 2011-02-04 2011-05-17 メモリデバイス及びホストシステム

Publications (2)

Publication Number Publication Date
JP2012178132A JP2012178132A (ja) 2012-09-13
JP5728292B2 true JP5728292B2 (ja) 2015-06-03

Family

ID=44993823

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011110242A Active JP5728292B2 (ja) 2011-02-04 2011-05-17 メモリデバイス及びホストシステム

Country Status (7)

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

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 株式会社東芝 メモリシステム
JP5779148B2 (ja) * 2012-07-06 2015-09-16 株式会社東芝 メモリシステム
JP5814871B2 (ja) * 2012-07-06 2015-11-17 株式会社東芝 メモリシステム
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
WO2015166540A1 (ja) * 2014-04-28 2015-11-05 株式会社日立製作所 ストレージ装置とそのデータ処理方法及びストレージシステム
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
US6356551B1 (en) * 1997-02-14 2002-03-12 Advanced Micro Devices, Inc. Method and network switch having dual forwarding models with a virtual lan overlay
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
JP4173863B2 (ja) * 2003-03-20 2008-10-29 株式会社ルネサステクノロジ メモリカードおよびその初期化設定方法
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
CN101167038A (zh) * 2005-04-27 2008-04-23 松下电器产业株式会社 卡型电子装置以及主机装置
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
CN103403803B (zh) 2016-08-10
US20150317102A1 (en) 2015-11-05
EP2955716A1 (en) 2015-12-16
TW201234178A (en) 2012-08-16
WO2012105084A1 (en) 2012-08-09
KR101493633B1 (ko) 2015-02-13
TWI460589B (zh) 2014-11-11
US9104539B2 (en) 2015-08-11
US20130318281A1 (en) 2013-11-28
KR20130111622A (ko) 2013-10-10
USRE47542E1 (en) 2019-07-30
EP2671226A1 (en) 2013-12-11
EP2955716B1 (en) 2018-10-24
CN103403803A (zh) 2013-11-20
USRE48997E1 (en) 2022-03-29
JP2012178132A (ja) 2012-09-13
US9335953B2 (en) 2016-05-10
EP2671226B1 (en) 2015-08-26

Similar Documents

Publication Publication Date Title
JP5728292B2 (ja) メモリデバイス及びホストシステム
JP5814871B2 (ja) メモリシステム
US6282647B1 (en) Method for flashing a read only memory (ROM) chip of a host adapter with updated option ROM bios code
US8037228B2 (en) Bridge device with page-access based processor interface
JP6734751B2 (ja) インタフェイス制御メカニズムを有する電子システム及びその動作方法
TWI453614B (zh) 可於自網路獲得之資料上附加時間資訊之記憶體系統
JP5832963B2 (ja) メモリシステム
JP5779147B2 (ja) メモリシステム
CN110795373B (zh) 一种i2c总线到并行总线的转换方法、终端及存储介质
US20050198425A1 (en) Combined optical storage and flash card reader using single ide or sata port and method thereof
JP6017379B2 (ja) メモリシステム及びホスト機器
JP5779148B2 (ja) メモリシステム
JP2000030375A (ja) データ処理システム、アクセス装置及び記録媒体
US20080256289A1 (en) Memory apparatus to write and read data, and method thereof
TWI406175B (zh) 記憶卡以及用於記憶卡之方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130904

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131212

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131226

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140826

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140827

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150310

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150406

R151 Written notification of patent or utility model registration

Ref document number: 5728292

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350