JP5814871B2 - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP5814871B2 JP5814871B2 JP2012152877A JP2012152877A JP5814871B2 JP 5814871 B2 JP5814871 B2 JP 5814871B2 JP 2012152877 A JP2012152877 A JP 2012152877A JP 2012152877 A JP2012152877 A JP 2012152877A JP 5814871 B2 JP5814871 B2 JP 5814871B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- command
- function
- response
- extension register
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Description
ため様々な機能の追加が要望されている。また、追加機能をプラグ・アンド・プレイで使
用可能にするために、汎用的な初期化手段が望まれている。
するものである。
体記憶装置を制御する制御部と、前記制御部により制御される拡張機能部と、前記拡張機
能部の拡張機能を定義可能な一定のブロック長を有する拡張レジスタと、を具備し、前記
制御部は、前記拡張レジスタを介して前記拡張機能部を動作させるコマンドのヘッダデー
タを前記拡張機能部に書き込む第1のコマンドと、前記拡張レジスタを介して前記拡張機
能部からレスポンスのヘッダデータを読み出す第2のコマンドとを処理することを特徴と
する。
ホストドライバが、追加機能を制御する機能ドライバを探して、対応する機能ドライバ
がホストにインストールされていた場合、その機能ドライバに制御を渡す仕組みを取り入
れることにより、機能拡張が容易に行えるようになる。機能固有の制御は、機能ドライバ
の中に隠蔽されるため、ホストドライバは最小限の情報のみで追加機能を実装可能となる
。例えばファームウェアが管理する複数ページの拡張レジスタを有し、これら拡張レジス
タのページ0に、特定のドライバを認識するための標準的な汎用情報(general informati
on)フィールドを提供する。これによりホストシステムは、プラグ・アンド・プレイの実
装が可能となる。また、マルチ機能カード/デバイスをサポートするために、個々の機能
を指し示すことができるようにホストシステムが管理しておくことで、ホストソフトウエ
アの改変なしにマルチ機能カード/デバイスを使用可能にする。
SDメモリ用のホストコントローラにおいても、追加機能の制御を効率良く行える拡張
レジスタをアクセスするための専用コマンドを定義する。512バイトの固定ブロック長
の転送とすることにより、従来のSDメモリ用ホストコントローラからこの専用コマンド
を発行できる。さらに、コマンドの引数として有効データ長の情報や、ライト時のマスク
機能を持つことにより、リード・モディファイ・ライトを不要にすることが可能となる。
らも、拡張レジスタをアクセスできるようにすることにより、小さいブロック長転送とマ
ルチブロック転送に対応可能となるため、さらに最適化したドライバを作ることが可能に
なる。
の消費量が少ない実装が可能となる。また、データポートを用いることにより、拡張レジ
スタ以外のデバイスへのデータ転送も効率良く行うことが可能となる。複数ブロックによ
るバースト転送コマンドをサポートすることができる。データポートは、機能の実装時に
拡張レジスタの任意のアドレスをデータポートとして定義できる。カードはアドレスを解
読してデータポートか拡張レジスタかを判断する。
カードベンダーにより、拡張レジスタ上の任意の位置に追加機能を制御するレジスタを
割り当てることを可能とし、実装したレジスタのアドレス情報を汎用情報フィールドから
提供することにより、レジスタ配置をリロケータブルとすることを可能としている。この
ため、従来標準化が必要であったアドレス配置は不要となり、メモリデバイスを製造し易
くなる。再配置が可能であるため、レジスタを拡張しても容易に対応ができる。
図1は、本実施形態に係るメモリシステムを概略的に示している。
により構成される。
ホスト機器20からのアクセスに応じた処理を行う。このメモリデバイス11は、コント
ローラ11aを有している。
OM(Read only Memory)14、RAM(Random Access Memory)15、バッファ16、
メモリインターフェース(I/F)17により構成されている。これらは、バスにより接
続されている。メモリインターフェース17には、例えばNAND型フラッシュメモリ1
8と、拡張機能部としてのSDIO19が接続されている。拡張機能部は、例えば無線L
AN装置などを適用することが可能である。
フェース処理を行う。
8、又はSDIO19との間のインターフェース処理を行う。
制御するプログラムは、ROM14の中に格納されているファームウェア(制御プログラ
ム等)を用いるかあるいは、RAM115上にロードして所定の処理を実行する。すなわ
ち、CPU13は、各種のテーブルや後述する拡張レジスタをRAM18上に作成したり
、ホスト機器20からライト(書き込み)コマンド、リード(読み出し)コマンド、イレ
ース(消去)コマンドを受けてNAND型フラッシュメモリ18上の領域をアクセスした
り、バッファ16を介してデータ転送処理を制御したりする。
納する。RAM15は、CPU13の作業エリアとして使用され、制御プログラムや各種
のテーブルや後述する拡張レジスタを記憶する。
シュメモリ18へ書き込む際、一定量のデータ(例えば1ページ分)を一時的に記憶した
り、NAND型フラッシュメモリ18から読み出されたデータをホスト機器20へ送り出
す際、一定量のデータを一時的に記憶したりする。またバッファを介することにより、S
Dバスインターフェースとバックエンドを非同期に制御することができる。
OS構造のメモリセルにより構成されている。
しての機能を有している。例えば、SDIO19として無線LAN装置を適用することで
、無線通信機能を有さないデジタルカメラでも外部サーバ、外部PC等との間で無線によ
るデータ通信を行うことが可能となる。
20は、ホストコントローラ21、CPU22、ROM23、RAM24、例えばハード
ディスク25(SSDを含む)により構成されている。これらはバスにより接続されている
。
ームウェアを記憶している。RAM24は、例えばCPU22の作業領域として使用され
るが、CPU22が実行可能なプログラムもここにロードされ実行される。ハードディス
ク25は、各種データを保持する。ホストコントローラ21は、メモリデバイス11が接
続された状態において、メモリデバイス11とのインターフェース処理を行う。さらに、
CPU22の指示に従って、後述する各種コマンドを発行する。
図2は、メモリデバイス11のROM14に記憶されたファームウェアの機能構成の一
例を示している。これらの機能はコントローラ11aを構成するCPU13等の各ハード
ウェアとの組み合わせにより実現されるものである。ファームウェアは、例えばコマンド
処理部14a、フラッシュメモリ制御部14b、拡張レジスタ処理部14c、機能処理プ
ログラム14dにより構成されている。拡張レジスタ処理部14cは、メモリデバイス1
1が起動された際、RAM15内に拡張レジスタ31を生成する。この拡張レジスタ31
は、仮想レジスタであり、拡張機能を定義可能とされている。
図2に示すように、拡張レジスタ31は、例えば8ページにより構成されている、1ペ
ージは、512バイトにより構成されている。512バイトの拡張レジスタをバイト単位
にアクセスするため、最低9ビットのアドレスが必要となり、8ページアクセスするため
に、最低3ビットのアドレスが必要となる。合計12ビットのアドレスにより、拡張レジ
スタの全空間がアクセス可能となる。512バイトは殆どのホストがサポート可能なアク
セス単位であるが、512バイトに限定されず大きくしても良い。長いビット長のアドレ
スフィールドで構成される場合は、下位何ビットかがアクセス単位として使用され、残り
の上位のビットは、複数ページのひとつを選択するために使用される。
ク=512バイトを単位としてリード/ライト転送を行う構成になっているためである。
SDIO対応のホストコントローラであれば、1バイト単位のリード/ライトが可能であ
るが、全てのホストコントローラがこれをサポートしているわけではない。大多数のホス
トコントローラで拡張機能を制御できるようにするためには、512バイト単位のアクセ
スが行えると都合が良い。
イを行うために汎用情報フィールドを記録しておくための領域である。汎用情報フィール
ドの詳細については後述する。ページ1〜ページ7は、拡張機能を制御するためのレジス
タが定義される。ページ0は位置が特定し易いために、汎用情報フィールドを記録してお
く場所としては適切であるが、必ずしもページ0である必要はなく、特定のページ位置を
汎用情報フィールドの記載する場所として定義することもできる。
用いられる。これらのコマンドは、拡張レジスタをリード/ライトする第1の動作モード
と、データポートを構成する第2の動作モードを有している。
図3は、拡張レジスタのリードコマンド(CMD48)のフィールド構成の一例を示し
ている。“S”は、コマンドのスタートビットを示し、“T”は転送方向を示すビットで
あり、“index”は、コマンド番号を示している。“RS”(レジスタセレクト)は
拡張レジスタ31内のページを示し、“OFS”は選択されたページ内におけるデータの
位置(ページの先頭からのオフセット)を示している。3ビットの“RS”と、9ビット
の“OFS”で、512バイトの拡張レジスタ8ページ分の空間をバイト単位に指定する
ことができる。具体的には、選択された拡張レジスタ内のリード開始位置が“RS”と“
OFS”により指定される。
トの拡張レジスタ内の読み出しに必要な有効なデータ長が指定される。
、コマンドのエンドビットを示している。“rsv”は、予備のビットを示している。
図4は、第1の動作モードによる拡張レジスタのリード動作の例を示している。
)を受け取ると、レスポンス(R1)をホスト機器20に返し、その後、拡張レジスタ3
1から512バイトのデータブロックを読み出す。
読み出すべきデータの位置が、“RS”と“OFS”で指定され、データ長が“LEN”
で指定される。このようにして指定された拡張レジスタ内のデータが、512バイトのデ
ータブロックの先頭にセットされ、読み出される。512バイトのデータブロックのうち
、“LEN”で指定されたデータ長を超えるデータは、無効データとなる。データブロッ
クの最後にはCRCコードが付加され、正しくデータが受け取れたかをチェックすること
が可能とされている(無効データを含めてチェックを行う)。有効データが先頭から配置さ
れているため、ホスト機器20は、有効データを探すために、データシフトなどの操作を
行う必要がない。
図5は、第2の動作モードによるデータポートリードの動作の例を示している。
を返し、その後に512バイトのデータブロックを返す。
置が指定される。図5ではレングスが1の場合のデータポート例が示されている。すなわ
ち、データポートは、拡張レジスタマップ上において、1バイトのアドレスを占有するだ
けで良い。データポートであるかどうかをアドレスのデコードによって識別できれば良く
、実際に1バイト幅のポートを通してデータが伝送される必要はないので、データ伝送性
能には影響しない。このデータポートに割り当てられたデバイスから1ブロック(512
バイト単位)のデータをリードすることができる。すなわち、1回当たり、1ブロック(
512バイト単位)のデータをリードすることができる。この読み出されたデータは、例
えばバッファ16に保持され、ホスト機器20によって読み出される。
ができる。データポートから読み出すデータを何処から取ってくるかは、拡張機能の仕様
によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジ
スタを定義して制御することができる。512バイトのデータブロックの最後にCRCコ
ードが付加され、正しくデータが受け取れたか否かがチェック可能とされている。
図6は、拡張レジスタのライトコマンドの一例を示している。ライトコマンド(CMD
49)において、リードコマンド(CMD48)と同一部分には同一符号を付している。
ライトコマンドとリードコマンドは、“index”により区別される。3ビットの“R
S”と、9ビットの“OFS”により、拡張レジスタのページと選択されたページ内のデ
ータの位置が指定される。9ビットの“LEN”フィールドにより、512バイトの拡張
レジスタに書き込むデータ長が指定される。したがって、512バイト内の任意のデータ
長(バイト単位)のデータを拡張レジスタの任意のページと場所に書き込むことが可能であ
る。
いる。すなわち、“Mask”は、8ビット長のマスクレジスタを示している。このマス
クレジスタにより、1バイトのデータのライトにおいて、ビット単位のオペレーションが
可能となり、特定のビットにのみデータを書き込むことが可能となる。このため、1バイ
ト内のビットオペレーションであれば、リード・モディファイ・ライトを行う必要がない
。マスクレジスタは、データ長が1バイトのとき、すなわち、“LEN=0”(レングス
1)のとき有効となる。マスクレジスタ“Mask”のデータが“1”のビットは、デー
タが書き込まれ、マスクレジスタ“Mask”のデータが“0”のビットは、既にセット
された値が保存される。
において、マスクレジスタのデータが、図7(b)に示すようである場合、ライトコマン
ドが実行されることにより、図7(c)に示すように、マスクレジスタのデータが“1”
のビットはデータが書き込まれ、データが“0”のビットは、元のデータが保持される。
このため、リード・モディファイ・ライトを行うことなく、所要のビットのみデータを書
き換えることが可能となる。“x”で示す部分が、新しいデータが書き込まれたビットを
示す。
クライトが可能であるが、図7に示す例では、コマンド引数にマスクデータを割り当てて
いるため、8ビットマストとしている。
図8は、第1の動作モードによる拡張レジスタのライト動作の例を示している。
)を返し、その後、512バイトのデータブロックを受け取る。
ドをホスト機器20に返す。その後、このコマンドの処理が終了するまでビジーを返し、
ホスト機器20が次のコマンドを発行できるタイミングを知らせる。データブロックは、
バッファ16に保持されている。
のページと位置が指定され、“LEN”によりデータ長が指定される。バッファ16に保
持されたデータブロックのうち、先頭から“LEN”で指定した長さのデータが拡張レジ
スタに書き込まれる。“LEN”で指定されたデータ長を超えるデータブロック中のデー
タは無効データとして破棄される。
ータをデータブロックの途中に配置する操作が不要となる。
図9は、第2の動作モードによるライトデータポートの動作の例を示している。
)を返し、その後、512バイトのデータブロックを受け取る。
ドをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホスト機器2
0が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ16
に保持されている。
のページと位置が指定され、データポートが指定される。データポートは、拡張レジスタ
マップ上において、1バイトのアドレスを占有するだけでよい。このデータポートに、バ
ッファ16に保持された1ブロック(512バイト単位)のデータをある割り当てたデバ
イスにライトすることができる。すなわち、1回当たり、1ブロックのデータをライトす
ることができる。
イスに書き込むことができる。データポートのデータを何処に渡すかは、拡張機能の仕様
によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジ
スタを定義して制御することができる。
図10は、拡張レジスタ31のページ0に示された汎用情報フィールドの例を示してい
る。この汎用情報フィールドにより、ホスト機器20が拡張機能を制御するドライバを特
定できるようにすることにより、拡張機能を追加した場合において、ホストシステムが容
易に拡張機能を使えることができ、プラグ・アンド・プレイを実現することができる。
ストラクチャレビジョンは、拡張レジスタ31のページ0のフォーマットを定義するレ
ビジョンである。汎用情報フィールドに新しい情報を追加した場合、ストラクチャレビジ
ョンを更新することにより、どのバージョンの汎用情報フィールドを保持しているかを示
す。以前のバージョンの機能ホストドライバは、新しいフィールドを無視する。
データ長は、ページ0に記録されている有効データ長を示している。
拡張機能数は、デバイスが何個の拡張機能をサポートしているかを示している。ホスト
ドライバは、起動時に、サポートしている機能数だけ繰り返し、各拡張機能用のドライバ
がインストールされているかどうかを調べる。
デバイス1機能識別コードに、コードが設定してある場合、標準ドライバを用いること
ができることを示す。OSが標準ドライバをサポートしている場合、専用ドイバをインス
トールすることなく、このデバイスが使用できる。専用ドライバがインストールされてい
る場合は、そちらの使用を優先する。非標準の機能の場合、このフィールドに“0”が設
定される。この場合は、専用ドライバによってのみこの機能は制御される。
デバイス1製造者識別情報、デバイス1機能識別情報は、それぞれ専用ドライバを特定
するための情報であり、これらのフィールドには、例えばASCII文字列により製造者
名や販売者名、又は拡張機能の識別情報が記載される。ホストドライバは、これらの情報
をもとにデバイス1の専用ドライバがインストールされているかどうかを探す。
記載される。
次デバイスの先頭アドレスは、次のデバイス情報が記載されているページ0内のアドレ
スを示している。ホストシステムがこのデバイスをサポートしていない場合、このデバイ
スは使用できないため、次のデバイスがチェックされる。これ以降のフィールドは可変長
のため、この位置に定義している。
デバイス1アドレスポインタ1〜X、レングスフィールド1〜Xは、ひとつの機能に複
数の拡張レジスタ領域を定義できることを示している。それぞれのアドレスとレングスを
下記に列挙する。
デバイス1が使用する拡張レジスタの第1領域。拡張レジスタのページ1〜7の空間内
の先頭アドレスと、使用する拡張レジスタ領域の大きさを示している。
き、アドレスポインタは、ページ0以外の任意の拡張領域の場所(開始アドレス)を示し
ている。レングスは、ポインタを先頭アドレスとした拡張レジスタを占有する大きさを示
している。
デバイス1に割り当てられた拡張レジスタ内の第2領域の位置と領域の大きさを示して
いる。これにより、例えば標準ドライバは、第1領域のみで制御するが、専用ドライバは
、第1領域と第2領域を用いて効率良く制御することを可能にするなどの応用が可能とな
る。
デバイス1に割り当てられた第X領域の位置と領域の大きさを示している。
いように配置される。レングス情報によりオーバーラップがあるかどうかをチェックする
ことができる。
が認識できないホストは、認識可能なフィールドまで読み出し、追加フィールドは無視す
る。上記の(次デバイスの先頭アドレス)フィールドによりスキップすることができる。
図11は、上記リードコマンド(CMD48)に対応するメモリデバイス11内のコン
トローラ11aの動作を示している。
が解析され、リードコマンドがデータポートかどうか判別される(ST11)。すなわち
、拡張レジスタ内のページ“RS”と、ページ内におけるデータの位置が判別される。こ
の結果、コマンドが拡張レジスタのリードであると判別された場合、第1の動作モードに
より、拡張レジスタ31の選択されたページの“OFS”で示された位置からデータ長“
LEN”のデータが取得される(ST12)。この取得されたデータは、バッファ16に
セットされる(ST13)。
場合、第2の動作モードにより、拡張レジスタ31の選択されたページの“OFS”で示
された位置のデータポートを介して、例えばSDIO19の特定のファンクションから5
12バイトのデータが取得される(ST14)。この取得されたデータは、バッファ16
にセットされる(ST15)。
図12は、上記ライトコマンド(CMD49)に対応するメモリデバイス11内のコン
トローラ11aの動作を示している。
引数“RS”、“OFS”が解析され、ライトコマンドがデータポートかどうか判別され
る(ST21)。すなわち、拡張レジスタ内のページ“RS”と、ページ内におけるデー
タの位置が判別される。この結果、ライトコマンドがデータポート以外と判別された場合
、コマンドの引数“LEN=0”(レングス1)であるかどうか、すなわち、マスクが有
効かどうか判別される(ST22)。この判別の結果、“LEN=0”ではないと判別さ
れた場合(レングスが1より大きい)、拡張レジスタ処理部14cにより拡張レジスタのラ
イト処理が行われる。すなわち、バッファ16から“LEN”により指定された長さのデ
ータが取得される(ST23)。この取得されたデータは、拡張レジスタの“RS”で選
択されたページの“OFS”で指定された位置にセットされる。
が有効であると判別された場合、拡張レジスタ処理部14cによりバッファ16から1バ
イトのデータと、1バイトのマスクが取得される(ST25)。この1バイトのデータと
、1バイトのマスクにより、図7A、7B、7Cに示すマスク動作が実行され、拡張レジ
スタの“RS”で選択されたページの“OFS”で指定された位置のデータの一部が書き
換えられる(ST26)。
6から512バイトのデータが取得される(ST27)。この取得されたデータは、拡張
レジスタ31の選択されたページの“OFS”で示された位置のデータポートを介して、
例えばSDIO19の特定のファンクションに転送される(ST28)。
図13は、ホスト機器20の処理を示している。ホスト機器20に、メモリデバイス1
1が接続されると、メモリデバイス11が起動され、メモリデバイス11のRAM15に
拡張レジスタ31が展開される。メモリデバイス11は、ホストドライバによって先ず、
リードコマンド(CM48)を発行して、拡張レジスタ31のページ0のデータを取得す
る(ST31)。次に、取得したページ0のストラクチャレビジョンが確認され、どのバ
ージョンの汎用情報フィールドを保持しているかが確認される(ST32)。この後、サ
ポート機能数Nと、デバイス情報の先頭アドレスが取得される(ST33、ST34)。
トールされているかどうか検索される(ST35、ST36)。この結果、専用機能ドラ
イバが無い場合、拡張レジスタのページ0に記載された機能識別コードが“0”であるか
どかが判別される(ST37)。この結果、機能識別コードが“0”である場合、この拡
張機能はサポートされていないため、このデバイスは使用できないと認識され、次のデバ
イスに対するドライバの検索に移る(ST34)。
器20にインストールされている標準機能ドライバが検索される(ST38、ST39)
。この結果、標準機能ドライバが無い場合、この拡張機能はサポートされていないため、
デバイスは使用できないと認識され、次のデバイスに対するドライバの検索に移る(ST
34)。
びステップST35、ST36の検索の結果、専用機能ドライバが有った場合、ページ0
に記載されたデバイスのアドレス及びレングス数が取得される(ST40)。この動作が
アドレス及びレングス数だけ実行される(ST41)。
ばハードディスク25からRAM24にロードされ、ページ0に記載された1つ又は複数
の拡張領域のアドレスポインタ(開始アドレス)が機能ドライバに渡され、その拡張機能
が初期化される(ST42)。上記アドレス、レングス情報は、前記RAM24にロード
した機能ドライバを実行するときに渡される。標準機能ドライバと専用機能ドライバでは
、受け渡しできるアドレス、レングス情報の数が異なる可能性があるが、ページ0に登録
された順番に受け渡しできる数だけ受け渡される。したがって、最初に登録されたアドレ
ス、レングス領域は、共通的な機能レジスタとして働き、後ろに登録されているアドレス
、レングス領域は、オプション的な役割を果たすことができる。
た開始アドレスを基に、その機能に割り当てられた拡張レジスタをアクセスしてデバイス
を初期化する。初期化においては、デバイスの消費電力を考慮する必要がある。ホストが
供給可能な電力の範囲でデバイスを使う必要があるためである。デバイスが複数のパワー
モードを持っている場合、ホストが供給可能なデバイスパワー以下のパワーモードを選択
する必要がある。ホストシステムは、別な手段によってホストシステムが供給可能な電力
を機能ドライバに伝えることで、パワーモードの選択が可能となる。
る(ST43)。
ステップST40、ST41の間に追加される。新しいフィールドを識別できないホスト
ドライバは、そのフィールドをスキップするように構成される。
情報に基づき、ドライバを検索することにより、プラグ・アンド・プレイを実現すること
ができる。また、従来のように拡張レジスタの固定位置を決める必要がなく、デバイスベ
ンダーは任意の拡張レジスタ位置に機能を定義することができるため、機能拡張を容易に
実装することができる。
異なる部分についてのみ説明する。
、ステップST34において、デバイス情報の先頭アドレスが取得された後、先ず、機能
識別コードが“0”であるか否かが判別される(ST51)。この結果、“0”でない場
合、すなわち、標準機能である場合、専用ドライバを使用するかどうかが判別される(S
T53)。この結果、専用ドライバを使用しない場合、標準機能ドライバが検索される(
ST54、ST55)。この検索の結果、標準機能ドライバが無い場合、及びステップS
T53において、専用機能ドライバを使用すると判別された場合、専用機能ドライバが検
索される(ST52、ST56)。この検索の結果、専用機能ドライバがあった場合、及
びステップST55において、標準機能ドライバが有った場合、前述したように、アドレ
ス、レングス数が取得される(ST40)。
る。
れ、ホスト機器20内を検索すると説明した。しかし、これに限定されるものではなく、
拡張機能用のドライバは、メモリカード11に格納されていてもよい。この場合、メモリ
カード11も拡張機能用のドライバの検索対象とされる。
なる場合、機能ドライバを特定するための情報を示している。図33に示すように、機能
特定コードは、オプションコードとファンクションコードの2種類の情報を示している。
ファンクションコードは特定の標準化された機能仕様を示し、オプションの種類もこの機
能仕様で定義される。オプションコードは、カードが機能ドライバに影響するオプション
を実装しているかどうかを示す情報である。この例は、CMD48/49をサポートして
いるかどうかの情報と、CMD52/53をサポートしているかどうかの情報を示してい
る。オプションコードが1バイトであるとすると、CMD48/49を用いるドライバは
、“01h”(“h”は16進数を示す)で表され、CMD52/53を用いるドライバ
は、“02h”で表される。機能ドライバをホストシステムにインストールするとき、機
能ドライバ実装コードとして登録される。二つのドライバがインストールされたホストシ
ステムの場合、“01h”と“02h”のオプションコードを持っている。
が表示されている。ホストシステムは、オプションコードに基づきCMD48/49のド
ライバを選択する。また、CMD52/53を用いるように設計されたカードは、オプシ
ョンコードに“02h”が表示されている。ホストシステムは、オプションコードに基づ
きCMD52/53のドライバを選択することができる。
用的なホストドライバが作れる点にある。オプション情報に関する知識は、機能ドライバ
がホストシステムにインストールされたときに与えられる。ホストドライバにオプション
情報に関する知識は不要であるため、新しいカードをインストールした場合でも、ホスト
ドライバを更新する必要がない。機能仕様は自由にオプションの内容を決めることができ
、またこの方法により、ホストシステムにオプションの組み合わせに対応した複数の機能
ドライバをインストールしておき、カードのサポート状況に応じて最適な機能ドライバを
選択することができる。
図15は、SDIOにおける拡張レジスタアクセスを示している。
を用いて拡張レジスタをアクセスして、拡張機能を制御することができる。すなわち、固
定長ブロック、シングルブロック転送をサポートしている。
、CMD49を用いて拡張レジスタをアクセスできるようにするとともに、拡張レジスタ
をSDIOの各ファンクション領域にマッピングすることで、SDIOコマンドCMD5
2(ライトコマンド)、CMD53(データ転送コマンド)からもアクセスすることが可
能となる。SDIOコマンドを用いると、可変ブロック長、マルチブロック転送をサポー
トでき、ドライバの最適化を図ることができる。コマンドCMD48、CMD49でアク
セスする場合、上記SDIO空間上のマッピングに関係なく、拡張レジスタをアクセスす
ることができる。
ファンクション領域にマッピングされる。図15に示す例の場合、拡張レジスタのページ
0は、ファンクション領域61のファンクション0にマッピングされ、ページ1、ページ
2はファンクション1にマッピングされ、ページ3はファンクション2にマッピングされ
ている。ファンクション0は、各ページの機能レジスタがSDIOマップのどこに配置さ
れているかを示すアドレス情報を保持している。このため、このアドレス情報を用いるこ
とにより、コマンドCMD48、CMD49を用いたドライバだけでなく、コマンドCM
D52、CMD53を用いたドライバにより、拡張レジスタの各ページをアクセスするこ
とが可能である。
ら、拡張機能に割り当てられた拡張レジスタの位置情報をドライバに渡す。これにより、
拡張機能が任意の位置に配置されていても制御可能となる。
1とデータ転送が可能となった状態において、前記コマンドCMD48、CMD49、C
MD52、CMD53を用いて、拡張機能部としてのSDIOとデータ伝送が可能となる
。
タ31を設け、これら拡張レジスタ31のページ0に、特定のドライバを認識するための
標準的な汎用情報フィールドを設定している。このため、ホスト機器20は、拡張レジス
タ31のページ0の汎用情報フィールドを参照してドライバを設定することにより、プラ
グ・アンド・プレイを実現することができる。
義することにより、メモリ用のホストコントローラにおいても、追加機能を効率良く制御
することができる。
のメモリ用ホストコントローラから拡張レジスタをアクセスするための専用コマンドを発
行できる。
ているため、データの一部を書き換える際に、リード・モディファイ・ライトが不要であ
り、容易にデータの一部を書き換えることができる。
しているため、ある特定デバイスに対するデータ転送が行え、かつ拡張レジスタ空間の消
費量を低減できる実装が可能となる。
ト転送コマンドをサポートすることができ、メモリ以外のデバイスのデータ転送を効率良
く行うことができる。(本実施形態では記載されていなが、メモリにおいても複数ブロッ
クによるバースト転送コマンドを定義すれば複数ブロック転送は可能になる。)
さらに、SDIOカード対応のホストコントローラにおいては、SDIOのアクセスコ
マンドを用いて、拡張レジスタをアクセスすることにより、小さいブロック長転送とマル
チブロック転送とに対応可能となる。このため、さらに最適化したドライバを作ることが
可能となる。
スタを割り当てることを可能とし、実装したレジスタのアドレス情報をページ0の汎用情
報フィールドから提供している。このため、定義された機能レジスタをリロケータブルに
配置することが可能である。このため、従来標準化が必要であったアドレス割り当てを決
める作業が不要であり、デバイスの製造を容易化できる。
内で、上記ページ0とページ1〜7に対応する領域を設定することも可能である。
上記各機能は、その機能で定義した拡張レジスタ・セットにレビジョンを示すレジスタ
を具備する。また、機能ドライバは対応するレビジョンをドライバ自身が知っている。あ
る機能をレビジョンアップで拡張する場合、従来の機能と互換性を維持しつつ機能を拡張
することにより互換性を維持することができる。リムーバブルカードを用いる場合、カー
ドの機能レビジョンと、ホストシステムにインストールされている機能ドライバのレビジ
ョンの組み合わせによって使用可能な機能が決定される。
ジョンに応じて、利用可能な機能の例を示している。例えば3つのレビジョン(A<B<
C)がある場合を説明する。この場合、CはBの機能を包含し、BはAの機能を包含する
ような拡張が行われている。レビジョン管理は、機能ドライバによって行われる。機能ド
ライバ自身は自分のレビジョンを知っている。利用可能な機能は、図16に示すような組
み合わせで決定される。全ての機能ドライバレビジョンで、レビジョンAの機能は使用可
能であり、レビジョンBの機能を使うためには、機能ドライバレビジョンがB以上である
必要がある。
図17、図18は、第2の実施形態に係るリードコマンドCMD48、及びライトコマ
ンドCMD49のフィールド構成の一例を示している。尚、図17、図18において、図
3、図6と同一部分には同一符号を付し、説明は省略する。
D49において、“RS”と“OFS”の12ビットで構成していたアドレスフィールド
を “FNO”、“Addr”により構成される20ビットに拡張し、SDIOとの親和
性・互換性を考慮している。
に独立して拡張レジスタを定義できる。このため、拡張レジスタを定義するときに双方の
干渉を防ぐことができる。“MIO”=0のとき、メモリ用の拡張レジスタをアクセスで
き、“MIO”=1のとき、SDIO用の拡張レジスタをアクセスできる。
FID”の一方に設定される。“MIO”=1の場合“FNO”は、機能番号を示す3ビ
ットのフィールドであり、“MIO”=0の場合“FID”は、機能識別情報を示す4ビ
ットのフィールドである。ビット数が異なるため別なシンボルで表記している。前記汎用
情報フィールを読む場合は、“FNO/FID”=0を設定する。ホストドライバは、こ
のフィールドを0にセットしておけば良い。“FID”は、メモリ空間では使用しないが
、“FNO”はSDIO空間において8個の機能空間を区別するために使用される。
36は、“FNO”を示し、ビット35は、常に“0”とされる。
”を示す。“FID”は、メモリ空間を増加せず、機能を識別するために使用される。
カードに機能を実装するとき、“FID/FNO”にユニークな値が割り当てられ、後
述するように、汎用情報のフィールド定義に表示される。このため、機能ドライバがデー
タポートへのコマンド発行時、引数に“FID/FNO”を設定することにより、カード
は、コマンドが指定した機能に対するコマンドであることが確認できる。したがって、間
違ったデータポートの指定により、誤書き込みによるデータ破壊、誤動作などを防止でき
、安全性が担保される。
なければならないが、“FID/FNO”だけでも機能識別が可能となる。したがって、
ホストドライバの制御を簡素化できる。すなわち、同じコマンドが複数の機能により混在
して使用されるため、ホストおよびカードにおいて、各機能を識別することが可能なよう
に、“FID/FNO”が設定されている。
セスできる。“Addr”の上位8ビットは、ページ番号として用いられ、8ビットによ
り0〜7ページのうちの1ページが選択される。下位9ビットで選択されたページ内の5
12バイトのブロックがアクセスされる。すなわち、“MIO”、“FNO”(“MIO
”=1)、“Addr”を用いることにより、拡張レジスタの位置が指定される。
トモードを指定するビットである。“MW”=0のとき、マスクがディスエーブルとされ
、“MW”=1のとき、マスクがイネーブルとされる。
のとき、データ長が16−08ビットの9ビットに設定される。また、マスクがイネーブ
ル(“MW”=1)のとき、データ長は1に設定され、16−08ビットのうちの下位8
ビットにより書き込み動作が上述したように制御される。すなわち、8ビットの各ビット
は、“1”のとき、レジスタのデータが書き込まれ、“0”のとき、レジスタのビットは
変化されず、既にセットされた値が保存される。
と、CMD48、CMD49がアクセス可能なSDIO空間を一致させることができる。
すなわち、どちらのコマンドを用いても同じ拡張レジスタ・セットをアクセスすることが
可能になる。
図19は、拡張レジスタのリードコマンド(CMD48)の第1の動作モードによる拡
張レジスタのリード動作の例を示している。
8)を受け取ると、レスポンス(R1)をホスト機器20に返し、その後、拡張レジスタ
31から512バイトのデータブロックを読み出す。
ddr”により、ページ内の読み出すべきデータの位置が指定され、読み出すべき有効デ
ータ長が“Len”で指定される。このようにして指定された拡張レジスタ内のデータが
、512バイトのデータブロックの先頭にセットされ、読み出される。512バイトのデ
ータブロックのうち、“Len”で指定されたデータ長を超えるデータは、無効データと
なる。データブロックの最後にはCRCコードが付加され、正しくデータが受け取れたか
をチェックすることが可能とされている(無効データを含めてチェックを行う)。
を返し、その後に512バイトのデータブロックを返す。
ジスタ・セットに一致するかどうかを検証する。拡張レジスタ・セットは、“FNO”(
“MIO”=1)と“Addr”によって特定される。これらが一致している場合、コマ
ンドの引数“Addr”により、拡張レジスタの選択されたページ内の位置が指定される
。データポートは、拡張レジスタマップ上において、1バイトのアドレスを占有するだけ
で良い。データポートであるかどうかはアドレスのデコードによって識別すれば良く、実
際に1バイト幅のポートを通してデータが伝送される必要はないので、データ伝送性能に
は影響しない。このデータポートに割り当てられたデバイスから1ブロック(512バイ
ト単位)のデータをリードすることができる。すなわち、1回当たり、1ブロック(51
2バイト単位)のデータをリードすることができる。この読み出されたデータは、例えば
バッファ16に保持され、ホスト機器20によって読み出される。
ができる。データポートから読み出すデータを何処から取ってくるかは、拡張機能の仕様
によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジ
スタを定義して制御することができる。512バイトのデータブロックの最後にCRCコ
ードが付加され、正しくデータが受け取れたか否かがチェック可能とされている。
場合、データ転送動作は実行されず、データブロックは転送されない。
図21は、拡張レジスタのライトコマンドの一例を示している。
)を返し、その後、512バイトのデータブロックを受け取る。
ドをホスト機器20に返す。その後、このコマンドの処理が終了するまでビジーを返し、
ホスト機器20が次のコマンドを発行できるタイミングを知らせる。データブロックは、
バッファ16に保持されている。
は同一符号を付している。ライトコマンドとリードコマンドは、“index”により区
別される。“FNO”(“MIO”=1)と17ビットの“Addr”により、拡張レジ
スタのページと選択されたページ内のデータの位置が指定される。さらに、9ビットの“
Len”フィールドにより、512バイトの拡張レジスタに書き込むデータ長が指定され
る。したがって、512バイト内の任意のデータ長(バイト単位)のデータを拡張レジスタ
の任意のページと場所に書き込むことが可能である。
タが設けられている。すなわち、“Mask”は、8ビット長のマスクレジスタを示して
いる。このマスクレジスタにより、1バイトのデータのライトにおいて、ビット単位のオ
ペレーションが可能となり、特定のビットにのみデータを書き込むことが可能となる。こ
のため、1バイト内のビットオペレーションであれば、リード・モディファイ・ライトを
行う必要がない。マスクレジスタは、データ長が1バイトのとき、すなわち、“Mask
”の上位1ビットが“1”のとき有効となる。
図22は、第2の動作モードによるライトデータポートの動作の例を示している。
)を返す。その後、メモリデバイス11は、コマンドの引数の“FID/FNO”が拡張
レジスタ・セットに一致するかどうかを検証する。拡張レジスタ・セットは、“FNO”
(“MIO”=1)と“Addr”によって特定される。これらが一致している場合、コ
マンドの引数“Addr”により、拡張レジスタの選択されたページ内の位置を指定し、
512バイトのデータブロックを受け取る。
RCコードをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホス
ト機器20が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッ
ファ16に保持されている。
と位置が指定され、データポートが指定される。データポートは、拡張レジスタマップ上
において、1バイトのアドレスを占有するだけでよい。このデータポートに、バッファ1
6に保持された1ブロック(512バイト単位)のデータをある割り当てたデバイスにラ
イトすることができる。すなわち、1回当たり、1ブロックのデータをライトすることが
できる。
イスに書き込むことができる。データポートのデータを何処に渡すかは、拡張機能の仕様
によって自由に定義ができる。データポート制御は、例えば、拡張レジスタ上に制御レジ
スタを定義して制御することができる。
場合、データ転送動作は実行されず、データブロックは破棄される。
図23は、第2の実施形態に係るFIDの指定に関する例を示した図である。汎用情報
フィールドの意味は、図10と同じである。異なる点は、拡張アドレス、長さフィールド
のフォーマットで、“FID/FNO”の値を設定するために4ビットフィールドが確保
されていることにある。各機能毎にユニークな“FID/FNO”が設定される。カード
に実装された各機能は自分の“FID/FNO”を認識している。
図24は、図19、図20に示すリードコマンド(CMD48)に対応するメモリデバ
イス11内のコントローラ11aの動作を示している。
割り当てられた拡張レジスタ・セットに一致するかどうかが検証される(ST51)。拡
張レジスタ・セットは、“FNO”(“MIO”=1)と“Addr”によって特定され
る。検証の結果、両者が一致している場合、コマンドの引数の“Addr”が解析され、
リードコマンドがデータポートかどうか判別される(ST52)。すなわち、“FNO”
(“MIO”=1)と“Addr”でデータポートとして定義されたアドレスであるかど
うかが判別される。
タのリードであると判別された場合、第1の動作モードにより、位置“Addr”に基づ
き、拡張レジスタ31の選択されたページからデータ長“Len”のデータが取得される
(ST53)。この取得されたデータ長“Len”のデータは、バッファ16の512バ
イトのデータブロックにセットされる(ST54)。
場合、第2の動作モードにより、拡張レジスタ31の選択されたページの予め設定された
位置のデータポートを介して、例えばSDIO19の特定の機能(ファンクション)から
512バイトのデータが取得される(ST55)。この取得されたデータは、バッファ1
6の512バイトのデータブロックにセットされる(ST56)。
了される。
図25は、上記ライトコマンド(CMD49)に対応するメモリデバイス11内のコン
トローラ11aの動作を示している。
引数“FID/FNO”が割り当てられた拡張レジスタ・セットに一致するかどうか検証
する(ST61)。拡張レジスタ・セットは、“FNO”(“MIO”=1)と“Add
r”によって特定される。検証の結果、両者が一致している場合、コマンドの引数“Ad
dr”が解析され、ライトコマンドがデータポートかどうか判別される(ST62)。す
なわち、“FNO”(“MIO”=1)と“Addr”で予め設定されたデータポートの
位置かどうかが判別される。
W”が“1”かどうか、すなわち、マスクライトかどうかが判別される(ST63)。
により拡張レジスタのライト処理が行われる。すなわち、バッファ16のデータブロック
から“Len”により指定された長さのデータが取得される(ST64)。この取得され
たデータは、“Addr”に基づき、拡張レジスタの選択されたページの指定された位置
にセットされる(ST65)。
と判別された場合、拡張レジスタ処理部14cによりバッファ16のデータブロックから
1バイトのデータが取得されるとともに、引数から1バイトのマスクが取得される(ST
66)。
スク動作が実行され、“Addr”で指定された拡張レジスタの所定のページ、所定の位
置に1バイトのマスク動作が実行されたデータがセットされる(ST67)。
れた場合、バッファ16のデータブロックから512バイトのデータが取得される(ST
68)。この取得されたデータは、拡張レジスタ31の指定されたページの位置のデータ
ポートを介して、例えばSDIO19の特定の機能に送られる(ST69)。
了される。
図26、図27は、データの転送効率を良くするためのマルチブロック転送コマンドを
示すものであり、図26は、CMD58(Multi-Block Read)、図27は、CMD59(
Multi-Block Write)を示している。
が異なる。また、CMD58には、CMD48の引数“Len”がなく、CMD59には
、CMD49の引数“MW”及び“Len/Mask”がない。これは、マルチブロック
転送がデータポートに対する転送を想定しているためである。CMD58、CMD59は
オプションコマンドであり、データポートは、複数のシングルブロック転送コマンドCM
D48、CMD49で代替できるようになっている。
て、このコマンドのアドレスが、拡張レジスタ空間の中のデータポートとして定義された
アドレスと一致した場合のみ、このコマンドが有効になる。このため、このコマンドが通
常の拡張レジスタに対して実行された場合、エラーとなりデータ転送は実行されない。
いるコマンドであるかを識別するためのコードが設定される。このため、“FID”フィ
ールドを用いることにより、この値で機能を識別することができ、実装が容易になる。ア
ドレス“Addr”フィールドでもファンクションは識別可能である。しかし、カードに
よって割り当てられるアドレスが異なるため、ホストドライバがアドレスから機能を特定
することは管理がし難いという問題がある。このため、ホストドライバは、“FID”フ
ィールドの値に基づき、機能毎にホストシステムに実装されているデータバッファなどを
切り替え制御に用いることができる。
理由は、長いデータ伝送は、長いブロック数を指定する必要があり、この情報はリード/
ライトコマンドの引数には指定しきれないためである。したがって、CMD58/59を
発行する前にデータ転送に必要なブロック数を指定しておく必要がある。このため、例え
ば拡張レジスタにブロック数を設定するレジスタ定義し、CMD49で設定する方法や、
ブロック数を設定するコマンド(CMD23)を、CMD58/59を発行する直前に発
行する、などの方法が用いられる。
能から影響されない。共通のブロック数コマンド(CMD23)を用いる場合、メモリマ
ルチブロックコマンドに対するブロック数の設定と区別が必要である。このため、各CM
D58/59の直前に発行する必要があり、ホストドライバは、CMD23の直後に他の
コマンドが発行されないように順番を管理する必要がある。
られるカード固有アドレス(RCA:Relative Card Address)やデバイスID、前記“M
IO”と前記“FID/FNO”情報が必要である。
(a)に示すメモリ空間では、拡張レジスタのページ0に配置され、図28(b)に示す
SDIO空間では、従来のレジスタとコンフリクトしない特定の位置に配置される。例え
ば図28(b)において、SDIO用汎用情報は、機能(ファンクション)0の“008
FFh”−“00800h”(512バイト)(“h”は16進数を示す)0に配置され
ている。
いる。図29において、図15と同一部分には同一符号を付している。
512バイトの固定ブロック長で、シングルブロック転送が行われる。さらにデータポー
トの場合、CMD58/59でマルチブロック転送を行うことができる。SDIO拡張レ
ジスタは、CMD48/49だけでなく、CMD52/53によってもアクセスが可能で
ある。CMD53は可変長コマンドのため、データポートでなくてもSDIO拡張レジス
タのアクセスに用いることができる。
SDIO機能(CMD52/53)が使用可能かどうかは、ホストシステムがサポート
する機能によって決まる。SDIOをサポートしないホストは、CMD48/49、CM
D58/59を用いた機能ドライバをインストールする。SDIOをサポートするホスト
システムは、さらにCMD52/53を用いた機能ドライバもインストールすることが可
能となる。
ド又はライトが可能なコマンドであり、CMD52は、例えばデータを持たず、引数とレ
スポンスで1バイトのデータのリード、ライトを可能とするコマンドである。
る。CMD53が可変ブロック長とマルチブロック転送をサポートするため、データ転送
は最適化されたSDIOドライバを使用することにより一層効率的に実行される。
ートするホストが、その情報を参照するように、SDIOの汎用情報は、前記した機能0
の特定の位置から見られる。
SDIO対応カードに関して、CMD52/53を用いた機能ドライバがインストール
されている場合、その機能ドライバが使用され、インストールされていない場合、CMD
48/49、CMD58/59を用いた機能ドライバが使用される。
ライバが使用される。
図30は、コンボカードにおけるSDIOの初期化動作を概略的に示している。
実行しないとSDIO機能が有効にならないという定義になっている。このため、コンボ
カードでメモリを使用している場合でも、SDIOを使用する時点で再初期化が必要にな
るため、ホストにとって使いにくい仕様となっていた。
しないためや、消費電力を無駄に消費しないために好ましい。機能が初期化されるタイミ
ングとしては、機能を用いるアプリケーションが起動したタイミングで行うのが良い。
アクセス方法にも影響を与えてしまう。メモリ制御に影響を与えず、SDIO機能を有効
にするため、メモリ初期化シーケンスを基本として、SDIO機能は後で追加できること
が望ましい。
T71)、コマンド(CMD3)が発行され、カード固有アドレス(RCA)が取得され
る(ST72)。この後、コマンド(CMD7)が発行され(ST73)、メモリデバイ
ス11が転送状態、すなわち、メモリが使用可能な状態に設定される(ST74)。この
状態にいて、SDIOの初期化コマンド(CMD5)が発行される(ST75)。これに
より、SDIOが初期化され、CMD52とCMD53の受付が可能とされる(ST76
)。
初期化方法の追加であり、従来のSDIO初期化シーケンスでも初期化は可能であり互換
性がある。
能が初期化されるため、メモリ制御に影響を与えることなく、各機能を初期化することが
できる。
従来、SDIOは、共通レジスタに必要な制御ビットを割り当てて制御していた。これ
を行うためハードウェアを実装する必要がある。専用の機能ドライバで機能を制御する場
合、実装は自由に行うことができる。このため、必ずしも共通レジスタで制御を行う必要
はない。従来共通レジスタで行っていた制御を機能ドライバのAPI(Application Prog
ram Interface)として定義すれば、制御をソフトウエア化することができる。APIレ
ベルを標準化することにより、ハードウェアによる標準化は不要であり、実装を容易化す
ることができる。
機能を初期化するために、ホストドライバから呼び出す。
機能のアボート、又はリセット。
機能レビジョンの読み出し。
機能が実装しているパワーモード情報。
電源を切っても良いタイミングを通知する。
アプリケーションとの間の制御インターフェース。
電源を停止できる状態としてから、ホストはカード電源を切る必要がある。Power Off No
tificationはこの制御に用いられるAPIである。
ェースの関係を概略的に示している。
72、メモリアプリケーション73、機能ドライバ74、機能アプリケーション75によ
り構成されている。また、メモリデバイス11としてのSDカードは、拡張レジスタ31
、例えばSDIOからなる機能ハードウェア19を含んでいる。
する機能がサポートしている。すなわち、ホストドライバ71は、拡張レジスタの汎用情
報フィールドを参照して、機能ドライバ74を検出し、その機能ドライバを実行すること
により、拡張機能を使用することができる。また、拡張機能レジスタ31を制御する機能
ドライバ74と機能アプリケーション74との間は、機能仕様により定義されたAPIに
よりコミュニケートされる。
ストドライバ71が機能ドライバ74を見つけてロードすることができるように、上述し
た汎用情報フィールドを有している。
等を用いてコミュニケートされる。
定義することにより、制御をソフトウエア化することができる。また、APIレベルを標
準化することにより、ハードウェアによる標準化が不要であり、実装を容易化することが
できる。
ライバ74を検出し、その機能ドライバを実行することにより、拡張機能を使用すること
ができる。したがって、ホスト機器20は、容易に拡張機能を使用することが可能である
。
メモリデバイス11は、アドレス情報を識別することにより、どの機能に対するコマン
ドであるかを判別することが可能ではある。しかし、アドレス範囲は機能によって異なる
ため、ホスト機器20はアドレスから機能を識別するのが難しい。
は簡単に機能を識別することが可能である。
ァを制御することが可能である。
数の機能に対してデータ転送を行う場合、各機能に対応して独立したバッファ81、82
を持っている。これらバッファ81、82は、マルチプレクサ(MUX)83を介してホ
ストコントローラ21に接続されている。このマルチプレクサ83を“FID/FNO”
により制御することにより、各機能に対応したバッファ81、82を選択することができ
る。
て、対応するバッファ81、82をマルチプレクサ83により選択することができる。
リデバイス11の対応する機能の拡張レジスタから読み出されたデータは、ホストコント
ローラ21を介してマルチプレクサ83に供給される。マルチプレクサ83は、“FID
/FNO”に基づき、受け取ったデータをバッファ81、82のうちの一方に供給する。
た場合、マルチプレクサ83は、“FID/FNO”に基づき、バッファ81、82のう
ちの一方から選択されたデータをホストコントローラ21に供給し、ホストコントローラ
21は、メモリデバイス11にデータを転送する。メモリデバイス11は、“FID/F
NO”に基づき、対応する機能の拡張レジスタにデータを供給する。
、各機能に対応したバッファ82、83を確実に選択することが可能である。
上記のように、拡張レジスタをメモリデバイスとしてのSDカードの内部に設け、ホス
ト機器から供給されるコマンドCMD48、CMD49、CMD58、CMD59によっ
て拡張レジスタにデータを書き込んだり、拡張レジスタからデータを読み出したりするこ
とが可能されている。
ージを転送したり、拡張機能部19からのレスポンスをホスト機器20に転送したりする
具体的な方法について説明する。
、これらコマンドとレスポンスを受け渡す場所を定めている。さらに、ホスト機器20と
拡張機能部19との間で、長いデータを転送する場合、必要に応じて例えばコマンドペイ
ロードと称するデータを追加し、データを転送する方法を定義する。
してのSDカードとの関係を、ファームウェアレベルで概略的に示している。図34にお
いて、図1と同一部分には、同一符号を付している。
−1を有している。
19を有している。コントローラ11aは、カードコマンド制御部11−1、拡張レジス
タ31、メモリ制御部11−2を有している。
のデータを送受信する場合、カードコマンド発行部20−2は、CMD48/49/58
/59のいずれかと、コマンドヘッダ20a、レスポンスヘッダ20c、及び必要に応じ
てコマンドペイロード20b、レスポンスペイロード20dを発行する。
ヘッダ20aと、必要に応じてコマンドペイロード20bが用いられる。コマンドヘッダ
20aは、CMD49によりメモリデバイス11に供給され、コマンドペイロード20b
は、CMD59によりメモリデバイス11に供給される。
取る場合、レスポンスヘッダ20cと、必要に応じてレスポンスペイロード20dが用い
られる。レスポンスヘッダ20cは、CMD48を用いて受け取られ、レスポンスペイロ
ード20dは、CMD58(Multi-Block Read)を用いて受け取られる。
図35は、リードコマンドとしてのCMD58を示し、図36は、ライトコマンドとし
てのCMD59を示している。図34、図35において、CMD58/59の引数は、図
26、図27と類似する。このため、図26、図27と異なる部分についてのみ説明する
。
る直前において、ブロック数を設定するCMD23を発行した。
となく、長いデータを転送可能としている。
it Select)と“BUC”(Block Unit Count)である。“FNO”は、“FID/FNO”
と実質的に同一であり、“MIO”により選択されたメモリ空間、又はSDIO区間にお
ける機能空間を区別するために使用される。
“0”の場合、ブロックユニットサイズは、512バイトであり、“BUS”=“1”の
場合、ブロックユニットサイズは、32Kバイトである。32Kバイトは、64ブロック
データ(64×512バイト)が1ブロックユニットとして扱われることを示している。
定するブロックユニットサイズは、“BUS”で指定されたブロックユニットサイズによ
って計算して転送するデータの合計のサイズを計算する。ただし、データ転送時のデータ
サイズの単位となるブロックはBUSに関らず、512バイト固定である。
レスにより、拡張レジスタのポートが指定される。
図37は、ホスト機器20とメモリデバイス11との間において送受信されるコマンド
のパターンを示している。コマンドの送受信パターンとして、例えば3つのタイプがある
。
20からメモリデバイス11に送信し、CMD48によりメモリデバイス11からのレス
ポンスヘッダをホスト機器20で受信する場合を示している。
20からメモリデバイス11に送信し、この後、CMD59によりコマンドペイロード2
0bをホスト機器20からメモリデバイス11に送信する。この後、CMD48によりメ
モリデバイス11からのレスポンスヘッダ20cをホスト機器20で受信する場合を示し
ている。
はなく、先ず、コマンドペイロード20bを送信し、次いで、コマンドヘッダ20aを送
信してもよい。
適している。
20からメモリデバイス11に送信し、この後、CMD48によりメモリデバイス11か
らのレスポンスヘッダ20cをホスト機器20で受信し、次いで、CMD58によりメモ
リデバイス11からのレスポンスペイロード20dをホスト機器20で受信する場合を示
している。
は、この限りではなく、先ず、レスポンスペイロード20dを受信し、次いで、レスポン
スヘッダ20cを受信してもよい。
に適している。
述するように、コマンドヘッダ20aにより指定される。
c、レスポンスペイロード20dのデータ構造の例を示している。
ド(OPコード)”、“rsv”、“アーギュメント長”、“ペイロード長”、“アーギ
ュメント”、“パディング”を含んでいる。コマンドヘッダ20aのデータ構造は、後述
するように、“OPコード”の内容により、“アーギュメント”の内容が変更される。
に、後述するように、コマンドペイロード20bやレスポンスペイロード20dを必要と
するかどうかは、“OPコード”内において指定される。
、ペイロードのデータ長を示している。
)に揃えるためのデータであり、データそのものに意味はない。コマンドペイロード20
b、レスポンスヘッダ20c、レスポンスペイロード20dの“パディング”も、コマン
ドヘッダ20aの“パディング”と同様である。
を有し、このデータ長は、コマンドヘッダ20aのペイロード長により管理される。コマ
ンドペイロード20bは、例えば実データとしての“コマンドペイロード”と“パディン
グ”とにより構成されている。“コマンドペイロード”の内容は、“OPコード”に応じ
て変わるものである。
タを書き込む処理を指示する場合、コマンドペイロードは、書き込みデータである。
キーブロックのデータを書き込む指示である場合、“コマンドペイロード”は、暗号化キ
ーブロックのデータとなる。
0cは、例えば“レスポンスコード”、“レスポンスデータ長”、“レスポンスデータ”
、“パディング”を含んでいる。
成されている。“レスポンスペイロード”の内容は、レスポンスの内容に従って変化する
。レスポンスが、拡張機能を介してNANDフラッシュメモリのデータを読み出した結果
である場合、“レスポンスペイロード”の内容は、読み出しデータである。
図39、図40は、コマンドヘッダ、ペイロード、及びレスポンスヘッダの例を示して
いる。
る機能を有する場合の例を示している。
k: EKB)と称するデータをメモリデバイス11に書き込む場合において、EKBをメ
モリデバイスに書き込むため、“Write EKB”と称するコマンドを送信する例を示してい
る。
。
のために設定されている。
04h”が設定されている。
k Number”は記録するEKBの番号を示し、“n”は、複数のEKBのうちの1つを区別
するための識別番号である。
ite EKB”の場合、“マンドペイロード”として、EKBデータそのものを転送する。コ
マンドペイロード20bの長さは、前述したコマンドヘッダ20aの“Payload Length”
で規定される。メモリデバイス11は、コマンドペイロード20bを受け取る前に、コマ
ンドヘッダaにより“ペイロード長”が通知されることにより、記録のための事前準備を
行うことができる。
e EKB”の場合、レスポンスヘッダ20cは、“Response Code”と“Padding Data”によ
り構成される。“Response Code”には、EKBデータの書き込み処理結果が示される。
例えば書き込みが成功した場合、“Response Code”として“00h”が設定される。
リデバイスから読み出す場合に使用する“Read EKB”と称するコマンドを送信する例を示
している。
e”、“Reserved”、“Argument Length”、“Payload Length”の意味は、図39に示す
“Write EKB”と同様である。
k Number”は、記録されたEKBの番号“n”を示している。
Read EKB”の場合、レスポンスペイロード20bは、コマンドヘッダ20aで指定された
“Block Number”、“EKB Offset”、“EKB Length”に基づき、拡張機能部19から読み
出されたEKBデータをホスト機器20に転送する。このため、“レスポンスペイロード
”は、EKBデータそのものである。
se Code”と“Padding Data”により構成される。“Response Code”には読み出し処理の
結果が示される。例えば読み出し処理が成功した場合、“00h”が設定される。
とき、EKBデータのダイジェストデータを“Response Data”に記録してデータ転送す
ることもできる。このダイジェストデータは、例えば暗号のハッシュ関数SHA1等を利用す
ることが可能であり、メモリのデータ転送と計算処理の値を分けてメモリデバイス11か
らホスト機器20に転送することが可能である。
また“OP Code”内にコマンドペイロード20bや、レスポンスペイロード20dの有無
を示すビットを割り当てることも可能である。
と呼ばれ、コマンドペイロードを必要とするかどうかを示すビットである。“コマンドペ
イロードビット”が“1”である場合、このコマンドはコマンドペイロードを送ることを
示す。
イロードを送らず、コマンドヘッダのみ、コマンド処理を実行することを示す。
ペイロードを必要とするかどうかを示すビットである。“レスポンスペイロードビット”
が“1”である場合、このコマンドはレスポンスペイロードをメモリデバイスが送信する
ことを示す。
ンスペイロードを送信せず、コマンド処理の実行結果として、レスポンスヘッダのみ送信
することを示す。
。このマップにおいて、オフセットは、拡張レジスタの先頭アドレスからの相対アドレス
を示しており、このオフセットは、CMD58、CMD59の“ADDR”フィールドに
より指定される。
の“拡張レジスタステータス”は、拡張レジスタがアイドル状態であるか、送信状態であ
るか、受信状態であるかを示す読み出し専用のレジスタである。
。この拡張レジスタオペレーション”は、CMD58、CMD59により使用される書き
込み、又は読み出し可能なレジスタである。このレジスタは、リセット可能とされている
。
ドの書き込み専用ポートである。
コマンドペイロードの書き込み専用ポートである。
、拡張レスポンスペイロードの読み出し専用ポートである。
ポンスの読み出し専用ポートである。
図43は、図37(a)に示すCMD49によりコマンドヘッダ20aをホスト機器2
0からメモリデバイス11に送信し、CMD48によりメモリデバイス11からのレスポ
ンスヘッダをホスト機器20で受信するタイプ1の場合のトランザクションデータを示し
ている。
18に示すCMD49の“Addr”により、拡張レジスタ内のページと位置が指定され
、“拡張コマンドポート”が指定される。この“拡張コマンドポート”を介して、拡張機
能部19にOPコード等が転送される。
ddr”により、拡張レジスタ内のページと位置が指定され、“拡張レスポンスポート”
が指定される。この“拡張レスポンスポート”を介して、拡張機能部19からレスポンス
ヘッダ20cが読み出され、ホスト機器20に転送される。
1を返し、その後、512バイトのデータブロックとしてのコマンドヘッダ20aを受け
取る。
Cコードをホスト機器20に返す。その後、コマンドヘッダ20aに記載されたコマンド
処理が終わるまでビジーを返し、ホスト機器20が次のコマンドを発行できるタイミング
を知らせる。コマンドヘッダ20aは、バッファ16に保持されている。
ジと位置が指定され、データポートとしての“拡張コマンドポート”が指定される。この
“拡張コマンドポート”を介してバッファ16に保持された1ブロック(512バイト)
のコマンドヘッダが拡張機能部19の割り当てられたデバイスに書き込まれる。
、拡張レジスタ内のページと位置を指定し、データポートとしての“拡張レスポンスポー
ト”が指定される。この“拡張レスポンスポート”を介して拡張機能部19の割り当てら
れたデバイスから、512バイトのデータブロックとしてのレスポンスヘッダ20cが読
み出される。この読み出されたレスポンスヘッダ20cは、ホスト機器20に転送される
。
図45は、図37(b)に示すCMD49によりコマンドヘッダ20aをホスト機器2
0からメモリデバイス11に送信した後、CMD59によりコマンドペイロード20bを
送信し、CMD48によりメモリデバイス11からレスポンスヘッダを読み出し、ホスト
機器20で受信するタイプ1の場合のトランザクションデータを示している。
が転送されると、CMD49の“Addr”により、拡張レジスタ内のページと位置が指
定され、“拡張コマンドポート”が指定される。この“拡張コマンドポート”を介して、
拡張機能部19にOPコード等が転送される。
リデバイス11に転送され、拡張レジスタの“拡張コマンドペイロードポート”を介して
、拡張機能部19に複数のペイロードブロックが転送される。
ンスポート”を介して、拡張機能部19からレスポンスヘッダ20cが読み出され、ホス
ト機器20に転送される。
1を返し、その後、512バイトのコマンドヘッダ20aを受け取る。
Cコードをホスト機器20に返す。その後、コマンドヘッダ20aに記載されたコマンド
処理が終わるまでビジーを返し、ホスト機器20が次のコマンドを発行できるタイミング
を知らせる。コマンドヘッダ20aは、バッファ16に保持されている。コマンド処理は
、トランザクションデータ(タイプ1)と同様であるため、説明は省略する。
、拡張レジスタ内のページと位置を指定し、データポートとしての“拡張コマンドペイロ
ードポート”が指定される。この“拡張コマンドペイロードポート”を介して拡張機能部
19の割り当てられたデバイスに、コマンドペイロード20bを構成する512バイトの
データブロックとしてのレスポンスヘッダ20cが書き込まれる。
ズ(512バイト/32kバイト)の1ブロックのデータを受け取る。次いで、メモリデ
バイス11は、512バイトのデータが正しく受け取れたかどうかを示すCRCコードを
ホスト機器20に返し、データの受信処理が終わるまでビジーを出力する。
で、上記動作が繰り返される。
ァ16に保持される。このため、メモリデバイス11は、ホスト機器20の制御無しで、
バッファ16に保持されたデータを、1ブロック単位で拡張機能部19に転送することが
可能であり、所謂DMA(Direct Memory Access)転送が可能となる。
の後、ホスト機器20は、512バイトのデータブロックとしてのレスポンスヘッダ20
cを“拡張レスポンスポート”を介して受け取る。コマンド処理は、トランザクションデ
ータ(タイプ1)と同様であるため、説明は省略する。
図47は、図37(c)に示すCMD49によりコマンドヘッダ20aをホスト機器2
0からメモリデバイス11に送信した後、CMD48によりメモリデバイス11からレス
ポンスヘッダを読み出し、ホスト機器20で受信し、次いで、CMD58によりレスポン
スペイロード20bを受信するタイプ3の場合のトランザクションデータを示している。
MD49が発行されてコマンドヘッダ20aが転送されると、メモリデバイス11は、C
MD49の“Addr”により、拡張レジスタ内のページと位置が指定され、“拡張コマ
ンドポート”を指定する。この“拡張コマンドポート”を介して、拡張機能部19にコマ
ンドヘッダ20aが転送される。
ンスペイロードポート”を介して、拡張機能からレスポンスペイロード20dが読み出さ
れ、ホスト機器20に転送される。
ンスポート”を介して、拡張機能からレスポンスヘッダ20cが読み出され、ホスト機器
20に転送される。
1を返し、その後、512バイトのコマンドヘッダ20aを受け取る。
Cコードをホスト機器20に返す。その後、コマンドヘッダ20aに記載されたコマンド
処理が終わるまでビジーを返し、ホスト機器20が次のコマンドを発行できるタイミング
を知らせる。コマンドヘッダ20aは、バッファ16に保持されている。コマンド処理は
、トランザクションデータ(タイプ1)と同様であるため、説明は省略する。
の後、レスポンスペイロード20dを構成する512バイトのデータを受け取る。
“拡張レスポンスペイロードポート”を指定し、この拡張レスポンスペイロードポート”
を介して、拡張機能部19からCMD58の“BUS”に指定されたサイズ(512バイ
ト/32kバイト)の1ブロックのデータを受け取る。この受け取ったデータはホスト機
器20に転送される。次いで、メモリデバイス11は、512バイトのデータが正しく受
け取れたかどうかを示すCRCコードをホスト機器20に送る。
で、上記動作が繰り返される。
の後、ホスト機器20は、512バイトのデータブロックとしてのレスポンスヘッダ20
cを“拡張レスポンスポート”を介して受け取る。コマンド処理は、トランザクションデ
ータ(タイプ1)と同様であるため、説明は省略する。
ペイロード20bより先に転送したが、コマンドペイロード20bを転送した後、コマン
ドヘッダ20を転送してもよい。
スポンスペイロード20dの後に転送したが、レスポンスヘッダ20cを転送した後、レ
スポンスペイロード20dを転送してもよい。
との間のデータの送受信を、CMD48/49/58/59と、コマンドヘッダ及びレス
ポンスヘッダと、コマンドペイロード及びレスポンスペイロードとに分けている。このた
め、コマンド処理の後、コマンドヘッダ20aに基づき、次のコマンドペイロード20b
により転送されるデータを拡張機能部19への転送するための準備を行うことができる。
このため、コマンドペイロードにより送られてきたデータを効率的に拡張機能部19に転
送することが可能である。したがって、例えばコマンドペイロードにより送られて来たデ
ータは、DMAにより転送することができる。
る。このため、コマンド処理の後、レスポンスヘッダ20cに基づき、レスポンスの準備
をした後、拡張機能部19から送られたデータをレスポンスペイロード20dとして効率
的にホスト機器20に転送することが可能となる。
ードとアーギュメントを含むコマンドヘッダ20aを拡張レジスタの拡張コマンドポート
を介して拡張機能部19に転送した後、CMD48により、拡張レジスタの拡張レスポン
スポートを介して拡張機能部19から供給されるレスポンスコードとレスポンスデータを
含むレスポンスヘッダ20cを受けている。このため、拡張機能部19に必要なコマンド
や、メッセージを転送したり、拡張機能部19からのレスポンスをホスト機器20に転送
したりすることが可能である。
より構成されたコマンドペイロード20bを拡張レジスタの拡張コマンドペイロードポー
トを介して拡張機能部19に転送することができ、CMD58により複数のブロックによ
り構成された長いデータを含むレスポンスペイロードを拡張レジスタの拡張レスポンスペ
イロードポートを介して読み出すことができる。したがって、長いデータを拡張機能部1
9に対して書き込み、読み出すことが可能である。
ブロック数を指定する“BUC”を有している。したがって、ブロック数を指定するCM
D23を用いる必要がないため、長いデータを容易に転送することが可能である。
第1乃至第3の実施形態において、メモリデバイス11は、CMD48/49を受ける
とレスポンスR1をホスト機器20に返す。
、エラーなどのイベントをホスト機器20に通知する手段がなかった。拡張レジスタを介
してこれらのイベントを表示することは可能であるが、ホスト機器20はイベントが起こ
ったかどうかをポーリングする必要があり非効率であった。
ドに対して返信されるレスポンR1に、拡張レジスタのイベントを通知するフラグを設け
、ホスト機器20が拡張レジスタをアクセスすることなく、ホスト機器20にイベントを
通知可能とする。
ば32ビットにより構成されている。このうち、例えば第18ビットが拡張機能のイベン
トを示すフラグEF_EVENT(Extension Function Event)に設定されている。
すると、フラグEF_EVENTが“1”に設定される。このフラグEF_EVENTの
ビットは、以降のレスポンスにおいて、“0”に戻してもよいし、次に説明するフラグが
読まれたとき、“0”に戻してもよい。
nction Event Flag)の一例を示している。
対応して拡張機能の番号が対応されている。
”に設定される。イベントの種別は各拡張機能の拡張レジスタ内で通知できるように定義
しても良い。このビットは、このビットの値が読み出された時点で“0”に戻っても良い
し、各拡張機能に“0”に戻るタイミングを定義しても良い。
機能アプリケーション2、及びこれらに対応したファイルシステム、拡張機能ドライバ1
、及び拡張機能ドライバ2が設けられている場合の例を示している。このような構成のホ
スト機器20により、メモリデバイス11をアクセスする場合の動作について説明する。
の動作のシーケンスチャートの例を示している。
読み出し要求が発生すると(S81)、カードドライバ、又はホストコントローラからC
MDXXが発生される(S82)。このCMDXXは、CMD48/49/58/59の
いずれかである。
(S83)。
、カードドライバ、又はホストコントローラは、CMD48を発行し(S85)、拡張レ
ジスタの拡張機能イベントフラグを読み出す(S86)。
ば拡張機能ドライバ1にイベントが発生したことを検出すると、割り込み、又はカードド
ライバのポーリングにより、拡張機能ドライバ1に通知する(S87)。
ントの内容を読み出すためCMD48を発行し(S88)、カードドラバ、又はホストコ
ントローラは、メモリデバイス11にCMD48を発行する(S89)。
す(S90)。
される(S91)。このイベントの内容は、さらに機能拡張ドライバ1に転送される(S
92)。
機能のいずれかにイベントが発生したことを示すフラグEF_Eventを設けている。
このため、ホスト機器20は、レスポンスR1を受けることにより、拡張機能のいずれか
にイベントが発生したことを知ることができる。したがって、ポーリングにより、イベン
トの発生を検出する必要がないため、効率良くイベントを検出することが可能である。
により、拡張機能部19の何れの機能によりイベントが発生したこと特定可能としている
。このため、ホスト機器20は、フラグEF_Eventによりイベントの発生が検出さ
れた場合、拡張機能イベントフラグを読み出すことにより、イベントが発生した拡張機能
を容易に特定することができる。
第1乃至第4の実施形態は、ホスト機器20によりメモリデバイス11の拡張機能をア
クセスする場合について説明した。
機器を設け、この変換機器を介してメモリデバイス11の拡張機能をアクセスする場合に
ついて説明する。具体的には、例えばパーソナルコンピュータとしてのホスト機器20に
メモリデバイス11を接続するためのアダプタが接続される場合がある。第5の実施形態
は、このようなアダプタが接続された場合においても、ホスト機器20とメモリデバイス
11の拡張機能部19とのデータ転送を可能とするものである。
us(USB)タイプの接続機器としてのアダプタ100が接続されている場合の例を概略
的に示している。
2、レスポンス結合部103、及びコマンド発行部104を有している。
込み動作の例を示し、図55は、データの読み出し動作の例を示している。
れる場合、データをホスト機器20からアダプタ100に対して、先ずCommand Block Wr
apper (CBW) と呼ばれるメッセージを送り、データの送信もしくは受信を行う。最後
にCommand Status Wrapper (CSW)と呼ばれるメッセージをアダプタ100からホス
ト機器20へ送信してデータの送受信を制御する。CBWにおいて、データの送受信の方
向、送受信のデータの長さを指定できる。
、前述したコマンドヘッダ20a、及びコマンドペイロード20bを使用し、拡張機能部
19からホスト機器20に長いデータを転送する場合、レスポンスヘッダ20c、及びレ
スポンスペイロード20dが使用される。
送る(S101)。変換器101は、CSWを解析し、この後にデータが書き込まれるこ
とを、送られてくるデータの長さと共に知ることができる(S102)。この時、データ
の長さに基づきコマンドペイロードが含まれるかどうかを判断できる。
ロード20bを受けると(S103)、コマンド分割部102により、コマンドヘッダ2
0a、コマンドペイロード20bを分離する。すなわち、コマンド分割部102は、転送
されたデータのうち、最初の512バイトをコマンドヘッダ20aとみなし、これ以降の
データをコマンドペイロード20bとみなして、これらを分割する。長さが512バイト
を超えない場合、変換器101はコマンドペイロードが無いものとして処理する。
に対してCMD49を発行し(S104)、メモリデバイス11からレスポンスR1を受
けた後(S105)、CMD49によりコマンドヘッダ20aをメモリデバイス11に転
送する(S106)。メモリデバイス11の内部動作(S107)は、上述した通りであ
る。
ード20bに対してCMD59を発行し(S108)、メモリデバイス11からレスポン
スR1を受けた後(S109)、コマンドペイロード20bをメモリデバイス11に転送
する(S110)。メモリデバイス11は、コマンドペイロードを処理する(S111)
。
に“BUS”、“BUC”を設定する。コマンドペイロードの長さ以上に“BUS”、“
BUC”を設定した場合、コマンドペイロードを送信した後、“BUS”、“BUC”で
設定した長さの任意のデータを続けて送信しても良いし、送信を中止するコマンドを発行
して次の作業に進んでも良い。
に送信する(S112)。これによりホスト機器20は、変換器101の処理が終了した
ことを知ることができる。
ト機器20から変換機101へCBWが送られる(S121)。変換器101は、CBW
を解析し、この後にデータ読み出しが行われることを、読み出すデータの長さと共に知る
ことができる(S122)。この時、データの長さからレスポンスペイロードが必要かど
うか判断できる。もし指定されたデータの長さが512バイトを超えていた場合、レスポ
ンスペイロードの読み出しが必要であると判断する。
合、CMD58を発行する(S123)。CMD58発行時、レスポンスペイロードの長
さと等しいかそれ以上の長さになるように“BUS”、“BUC”を設定する。レスポン
スペイロードの長さ以上に“BUS”、“BUC”を設定した場合、レスポンスペイロー
ドを受け終わった後、“BUS”、“BUC”で設定した長さになる任意のデータを続け
て読み出しても良いし、送信を中止するコマンドを発行して次の作業に進んでも良い。
4は、メモリデバイス11から受け取ったブロックをレスポンス結合部103に供給する
(S125)。
部104は、メモリデバイス11からレスポンスR1を受けた後(S127)、メモリデ
バイス11から供給された512バイトのデータをレスポンスヘッダ20cとしてレスポ
ンス結合部103に供給する(S128)。
れたレスポンスペイロード20dを結合してホスト機器20に転送する(S129)。
、これにより変換器101が処理を終了したことを知ることができる。
の作業領域を持っていない場合、コマンド発行部104、及びホスト機器20へそれまで
作業領域に蓄積されたデータをその都度それぞれに送り出して逐次処理することも可能で
ある。
及びレスポンスペイロード20dを使用しないデータ転送の場合、変換器101のコマン
ド分割部102は、単にコマンドヘッダ20aを出力し、レスポンス結合部103は、単
にレスポンスヘッダ20cを出力する。
0msec)。この後、レスポンスペイロードが送り終わったことをレスポンスR1のイベン
トを用いて示しても良い。
。
えばハードディスク113を接続可能としている。
いる。分配器111の第1の端子は、USBを介してホスト機器20に接続されている。
分配器111の第2の端子は、変換器101を介してメモリデバイス11に接続されてい
る。変換器101の構成は、上述した通りである。分配器111の第3の端子は、ブリッ
ジ回路112、SATA(serial ATA)ケーブル114を介してハードディスク113に
接続されている。ブリッジ回路112は、例えば図示せぬメモリインターフェースモジュ
ールと、メモリ制御モジュールなどを含んでいる。
とメモリデバイス11の拡張機能部19との間でデータを転送することが可能である。
100が設けられている場合においても、アダプタ100に変換器101を設けることに
より、ホスト機器20とメモリデバイス11の拡張機能部19との間でデータを転送する
ことが可能である。
ュリティ機能や、メモリ、例えばNANDフラッシュメモリに実装されるセキュリティ機
能がある。
の識別情報等をコントローラに格納し、これらの情報を基にホスト機器との間でセキュア
な通信チャンネルを構成するための機能等である。
報、及びこの識別情報を暗号化して生成された暗号化識別情報等をメモリに格納し、これ
らの情報を基にコントローラを介してホスト機器との間で認証処理を実施するための機能
等である。
の要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開
示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例え
ば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異
なる実施形態にわたる構成要素を適宜組み合わせてもよい。
リ、19…拡張機能部、20…ホスト機器、31…拡張レジスタ、101…変換器、10
2…コマンド分割部、103…レスポンス結合部。
Claims (1)
- 不揮発性半導体記憶装置とコントローラとを有し、ホスト機器と通信可能なメモリシステムであって、
前記メモリシステムは、拡張機能を定義可能なスペースを有する拡張レジスタを用いて前記ホスト機器とコミュニケーションを行い、前記拡張レジスタを介して、コマンドのヘッダデータを書き込む第1のコマンドと、レスポンスのヘッダデータを読み出す第2のコマンドとを処理し、
前記コマンドのヘッダデータは、オペレーションコードと、アーギュメントと、前記アーギュメントの長さ示すアーギュメント長と、ペイロード長とを含み、前記レスポンスのヘッダデータは、レスポンスコードと、レスポンスデータと、前記レスポンスデータの長さ示すレスポンスデータ長とを含むことを特徴とするメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012152877A JP5814871B2 (ja) | 2012-07-06 | 2012-07-06 | メモリシステム |
US13/558,866 US8904094B2 (en) | 2012-07-06 | 2012-07-26 | Memory system in which extended function can easily be set |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012152877A JP5814871B2 (ja) | 2012-07-06 | 2012-07-06 | メモリシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014016735A JP2014016735A (ja) | 2014-01-30 |
JP5814871B2 true JP5814871B2 (ja) | 2015-11-17 |
Family
ID=49879419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012152877A Active JP5814871B2 (ja) | 2012-07-06 | 2012-07-06 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8904094B2 (ja) |
JP (1) | JP5814871B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099597B2 (en) | 2016-10-20 | 2021-08-24 | Toshiba Memory Corporation | Interface system |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5832963B2 (ja) * | 2012-06-29 | 2015-12-16 | 株式会社東芝 | メモリシステム |
JP5779148B2 (ja) * | 2012-07-06 | 2015-09-16 | 株式会社東芝 | メモリシステム |
US9824004B2 (en) | 2013-10-04 | 2017-11-21 | Micron Technology, Inc. | Methods and apparatuses for requesting ready status information from a memory |
US10108372B2 (en) | 2014-01-27 | 2018-10-23 | Micron Technology, Inc. | Methods and apparatuses for executing a plurality of queued tasks in a memory |
US9454310B2 (en) * | 2014-02-14 | 2016-09-27 | Micron Technology, Inc. | Command queuing |
JP6293648B2 (ja) | 2014-12-02 | 2018-03-14 | 東芝メモリ株式会社 | メモリデバイス |
US10585624B2 (en) * | 2016-12-01 | 2020-03-10 | Micron Technology, Inc. | Memory protocol |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3009154B2 (ja) * | 1989-03-06 | 2000-02-14 | 株式会社日立製作所 | Icカード |
JP3546980B2 (ja) * | 1996-03-29 | 2004-07-28 | 松下電器産業株式会社 | データ処理装置 |
JPH10240877A (ja) * | 1997-02-28 | 1998-09-11 | Fujitsu Ltd | Icカード |
JP5090591B2 (ja) * | 2000-04-12 | 2012-12-05 | ソニー株式会社 | 電子装置の制御方法,電子装置及び電子装置の機能の認識方法 |
JP4102018B2 (ja) * | 2000-11-30 | 2008-06-18 | 株式会社東芝 | 無線通信カードおよびシステム |
JP2004046498A (ja) | 2002-07-11 | 2004-02-12 | Toshiba Corp | 情報処理装置 |
US7197583B2 (en) * | 2003-01-21 | 2007-03-27 | Zentek Technology Japan, Inc. | SDIO controller |
US8351356B2 (en) * | 2008-06-20 | 2013-01-08 | Panasonic Corporation | Data communication system, communication device, and communication method |
JP5728292B2 (ja) * | 2011-02-04 | 2015-06-03 | 株式会社東芝 | メモリデバイス及びホストシステム |
-
2012
- 2012-07-06 JP JP2012152877A patent/JP5814871B2/ja active Active
- 2012-07-26 US US13/558,866 patent/US8904094B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11099597B2 (en) | 2016-10-20 | 2021-08-24 | Toshiba Memory Corporation | Interface system |
US11460878B2 (en) | 2016-10-20 | 2022-10-04 | Kioxia Corporation | Interface system |
US11656651B2 (en) | 2016-10-20 | 2023-05-23 | Kioxia Corporation | Interface system |
US12228960B2 (en) | 2016-10-20 | 2025-02-18 | Kioxia Corporation | Interface system |
Also Published As
Publication number | Publication date |
---|---|
US20140013062A1 (en) | 2014-01-09 |
JP2014016735A (ja) | 2014-01-30 |
US8904094B2 (en) | 2014-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
USRE50101E1 (en) | Memory system in which extended function can easily be set | |
JP5814871B2 (ja) | メモリシステム | |
JP5832963B2 (ja) | メモリシステム | |
US9026683B1 (en) | Command portal for executing non-standard storage subsystem commands | |
US8375151B1 (en) | Command portal for securely communicating and executing non-standard storage subsystem commands | |
KR100781926B1 (ko) | 컴퓨터 시스템 및 그 제어 방법 | |
CN102646025B (zh) | 可向从网络得到的数据附加时间信息的存储卡 | |
JP5779147B2 (ja) | メモリシステム | |
US20120317313A1 (en) | Disk device assigned id codes for storage areas of a storage device | |
JP5779148B2 (ja) | メモリシステム | |
JP6017379B2 (ja) | メモリシステム及びホスト機器 | |
JP2008033451A (ja) | 着脱式記憶メディア | |
JP2008033450A (ja) | 通信システム及びそれに使用する周辺装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD07 | Notification of extinguishment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7427 Effective date: 20140812 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140902 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140910 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20150216 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20150218 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150527 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150529 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150728 |
|
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: 20150821 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150918 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 5814871 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 |