JP2014016734A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2014016734A
JP2014016734A JP2012152876A JP2012152876A JP2014016734A JP 2014016734 A JP2014016734 A JP 2014016734A JP 2012152876 A JP2012152876 A JP 2012152876A JP 2012152876 A JP2012152876 A JP 2012152876A JP 2014016734 A JP2014016734 A JP 2014016734A
Authority
JP
Japan
Prior art keywords
command
data
function
extension register
response
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.)
Granted
Application number
JP2012152876A
Other languages
English (en)
Other versions
JP5779148B2 (ja
Inventor
Shinichi Matsukawa
伸一 松川
Teruhisa Fujimoto
曜久 藤本
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 JP2012152876A priority Critical patent/JP5779148B2/ja
Priority to US13/557,596 priority patent/US20140013049A1/en
Publication of JP2014016734A publication Critical patent/JP2014016734A/ja
Application granted granted Critical
Publication of JP5779148B2 publication Critical patent/JP5779148B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/061Improving I/O performance
    • 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/0661Format or protocol conversion arrangements
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Abstract


【課題】 拡張機能を容易に設定することが可能なメモリシステムを提供する。
【解決手段】 本実施例におけるメモリシステムは、不揮発性半導体記憶装置と、前記不
揮発性半導体記憶装置を制御する制御部と、前記制御部により制御される拡張機能部と、
前記拡張機能部の拡張機能を定義可能な一定のブロック長を有する拡張レジスタと、を具
備し、前記ホスト機器から転送されるコマンドのヘッダデータと可変長のコマンドデータ
を分割する分割部と、前記分割部により分割された前記コマンドのヘッダデータを前記拡
張機能部に書き込む第1のコマンドを発生し、前記拡張レジスタを介して前記拡張機能部
からレスポンスのヘッダデータを読み出す第2のコマンドを発生するコマンド発行部とを
具備する変換器を有する。
【選択図】図53

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/) Universal Serial Bus Mass Storage Class Bulk-Only Transport Revision 1.0 September 31, 1999(URL:http://www.usb.org/)
本実施形態は、拡張機能を容易に設定することが可能なメモリシステムを提供しようと
するものである。
本実施形態のメモリシステムによれば、不揮発性半導体記憶装置と、前記不揮発性半導
体記憶装置を制御する制御部と、前記制御部により制御される拡張機能部と、前記拡張機
能部の拡張機能を定義可能な一定のブロック長を有する拡張レジスタと、を具備し、前記
制御部は、前記拡張レジスタを介して前記拡張機能部を動作させるコマンドのヘッダデー
タを前記拡張機能部に書き込む第1のコマンドと、前記拡張レジスタを介して前記拡張機
能部からレスポンスのヘッダデータを読み出す第2のコマンドとを処理することを特徴と
する。
第1の実施形態に適用されるメモリシステムを概略的に示す構成図。 図1に示すメモリシステムのファームウェの一例を示す構成図。 拡張レジスタのリードコマンドの一例を示す構成図。 リードコマンドによる拡張レジスタのリード動作を示すタイミング図。 リードコマンドによるデータポートのリード動作を示すタイミング図。 拡張レジスタのライトコマンドの一例を示す構成図。 マスクレジスタの動作を示す図。 ライトコマンドによる拡張レジスタのライト動作を示すタイミング図。 ライトコマンドによるデータポートのライト動作を示すタイミング図。 拡張レジスタの先頭ページに設定される汎用情報(General Information)フィールドの一例を示す図。 リードコマンドに従ったメモリシステムの動作の一例を示すフローチャート。 ライトコマンドに従ったメモリシステムの動作の一例を示すフローチャート。 ホストドライバの動作の一例を示すフローチャート。 ホストドライバの動作の他の例を示すフローチャート。 SDIOにおける拡張レジスタのアクセス動作を概略的に示す図。 レビジョン管理の一例を示す図。 第2の実施形態に係る拡張レジスタのリードコマンドの一例を示す図。 第2の実施形態に係る拡張レジスタのライトコマンドの一例を示す図。 リードコマンドによる拡張レジスタのリード動作を示すタイミング図。 リードコマンドによるデータポートのリード動作を示すタイミング図。 ライトコマンドによる拡張レジスタのライト動作を示すタイミング図。 ライトコマンドによるデータポートのライト動作を示すタイミング図。 拡張レジスタの先頭ページに設定される汎用情報フィールドの一例を示す図。 第2の実施形態に係るリードコマンドに従ったメモリシステムの動作の一例を示すフローチャート。 第2の実施形態に係るライトコマンドに従ったメモリシステムの動作の一例を示すフローチャート。 第2の実施形態に係る拡張レジスタのマルチブロックリードコマンドの一例を示す図。 第2の実施形態に係る拡張レジスタのマルチブロックライトコマンドの一例を示す図。 第2の実施形態に係る汎用情報の表示位置の一例を示す図。 第2の実施形態に係るメモリ空間とSDIO空間の関係の一例を示す図。 第2の実施形態に係るSDIOの初期化の簡素化を説明するために示すフローチャート。 第2の実施形態に係るメモリデバイスとホストの機能インターフェースの関係を概略的に示す図。 第2の実施形態に係り、バッファの制御を説明するために示す概略構成図。 機能識別コードの一例を示す図。 第3の実施形態に係るホスト機器とメモリデバイスの関係を概略的に示す図。 第3の実施形態に係る拡張レジスタのリードコマンドの一例を示す構成図。 第3の実施形態に係る拡張レジスタのライトコマンドの一例を示す構成図。 図37(a)(b)(c)は、それぞれコマンドのパターンを示す図。 コマンドヘッダ、コマンドペイロード、レスポンスヘッダ、レスポンスペイロードのデータ構造の一例を示す図。 図39(a)(b)(c)は、それぞれコマンドヘッダ、ペイロード、及びレスポンスヘッダの一例を示す図。 図40(a)(b)(c)は、それぞれコマンドヘッダ、ペイロード、及びレスポンスヘッダの一例を示す図。 コマンドヘッダの“OP Code”の一例を示す図。 第3の実施形態に適用される拡張レジスタマップの一例を示す図。 図37(a)に対応するデータ転送の一例を示す図。 図43に示すデータ転送を説明するために示すタイミングチャート。 図37(b)に対応するデータ転送の一例を示す図。 図45に示すデータ転送を説明するために示すタイミングチャート。 図37(c)に対応するデータ転送の一例を示す図。 図47に示すデータ転送を説明するために示すタイミングチャート。 第4の実施形態に係わり、レスポンスのデータ構造の一例を示す図。 拡張機能のイベントを表示するフラグの一例を示す図。 ホスト機器に設けられたアプリケーション及び拡張機能の一例を示す構成図。 図51に示すホスト機器とメモリデバイスの動作の一例を示すシーケンスチャート。 第5の実施形態に係わり、変換器を用いた構成を概略的に示す図。 第5の実施形態の動作を説明するために示すシーケンスチャート。 第5の実施形態の別の動作を説明するために示すシーケンスチャート。 図53の変形例を示す構成図。
本実施形態を概略的に説明すると、次のようである。
(機能拡張方法)
ホストドライバが、追加機能を制御する機能ドライバを探して、対応する機能ドライバ
がホストにインストールされていた場合、その機能ドライバに制御を渡す仕組みを取り入
れることにより、機能拡張が容易に行えるようになる。機能固有の制御は、機能ドライバ
の中に隠蔽されるため、ホストドライバは最小限の情報のみで追加機能を実装可能となる
。例えばファームウェアが管理する複数ページの拡張レジスタを有し、これら拡張レジス
タのページ0に、特定のドライバを認識するための標準的な汎用情報(general informati
on)フィールドを提供する。これによりホストシステムは、プラグ・アンド・プレイの実
装が可能となる。また、マルチ機能カード/デバイスをサポートするために、個々の機能
を指し示すことができるようにホストシステムが管理しておくことで、ホストソフトウエ
アの改変なしにマルチ機能カード/デバイスを使用可能にする。
(SDメモリ又はSDIOホストコントローラの対応)
SDメモリ用のホストコントローラにおいても、追加機能の制御を効率良く行える拡張
レジスタをアクセスするための専用コマンドを定義する。512バイトの固定ブロック長
の転送とすることにより、従来のSDメモリ用ホストコントローラからこの専用コマンド
を発行できる。さらに、コマンドの引数として有効データ長の情報や、ライト時のマスク
機能を持つことにより、リード・モディファイ・ライトを不要にすることが可能となる。
SDIOカード対応のホストコントローラにおいては、SDIOのアクセスコマンドか
らも、拡張レジスタをアクセスできるようにすることにより、小さいブロック長転送とマ
ルチブロック転送に対応可能となるため、さらに最適化したドライバを作ることが可能に
なる。
データの転送用ポートとしてのデータポートをサポートすることで、拡張レジスタ空間
の消費量が少ない実装が可能となる。また、データポートを用いることにより、拡張レジ
スタ以外のデバイスへのデータ転送も効率良く行うことが可能となる。複数ブロックによ
るバースト転送コマンドをサポートすることができる。データポートは、機能の実装時に
拡張レジスタの任意のアドレスをデータポートとして定義できる。カードはアドレスを解
読してデータポートか拡張レジスタかを判断する。
(リロケータブルアドレスによる拡張レジスタ定義)
カードベンダーにより、拡張レジスタ上の任意の位置に追加機能を制御するレジスタを
割り当てることを可能とし、実装したレジスタのアドレス情報を汎用情報フィールドから
提供することにより、レジスタ配置をリロケータブルとすることを可能としている。この
ため、従来標準化が必要であったアドレス配置は不要となり、メモリデバイスを製造し易
くなる。再配置が可能であるため、レジスタを拡張しても容易に対応ができる。
以下、実施の形態について、図面を参照して説明する。
(第1の実施形態)
図1は、本実施形態に係るメモリシステムを概略的に示している。
メモリシステムは、例えばSDカードのようなメモリデバイス11と、ホスト機器20
により構成される。
メモリデバイス11は、ホスト機器20に接続されたときに電源供給を受けて動作し、
ホスト機器20からのアクセスに応じた処理を行う。このメモリデバイス11は、コント
ローラ11aを有している。
コントローラ11aは、例えばホストインタフェース(I/F)12、CPU13、R
OM(Read only Memory)14、RAM(Random Access Memory)15、バッファ16、
メモリインターフェース(I/F)17により構成されている。これらは、バスにより接
続されている。メモリインターフェース17には、例えばNAND型フラッシュメモリ1
8と、拡張機能部としてのSDIO19が接続されている。拡張機能部は、例えば無線L
AN装置などを適用することが可能である。
ホストインタフェース12は、コントローラ11aとホスト機器20との間のインター
フェース処理を行う。
メモリインターフェース17は、コントローラ11aとNAND型フラッシュメモリ1
8、又はSDIO19との間のインターフェース処理を行う。
CPU13は、メモリデバイス11全体の動作を司るものである。このCPU13を正
制御するプログラムは、ROM14の中に格納されているファームウェア(制御プログラ
ム等)を用いるかあるいは、RAM115上にロードして所定の処理を実行する。すなわ
ち、CPU13は、各種のテーブルや後述する拡張レジスタをRAM18上に作成したり
、ホスト機器20からライト(書き込み)コマンド、リード(読み出し)コマンド、イレ
ース(消去)コマンドを受けてNAND型フラッシュメモリ18上の領域をアクセスした
り、バッファ16を介してデータ転送処理を制御したりする。
ROM14は、CPU13により使用される制御プログラムなどのファームウェアを格
納する。RAM15は、CPU13の作業エリアとして使用され、制御プログラムや各種
のテーブルや後述する拡張レジスタを記憶する。
バッファ16は、ホスト機器20から送られてくるデータを、例えばNAND型フラッ
シュメモリ18へ書き込む際、一定量のデータ(例えば1ページ分)を一時的に記憶した
り、NAND型フラッシュメモリ18から読み出されたデータをホスト機器20へ送り出
す際、一定量のデータを一時的に記憶したりする。またバッファを介することにより、S
Dバスインターフェースとバックエンドを非同期に制御することができる。
NAND型フラッシュメモリ18は、例えば積層ゲート構造のメモリセル、又はMON
OS構造のメモリセルにより構成されている。
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は、メモリデバイス1
1が起動された際、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に返し、その後、拡張レジスタ3
1から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は、拡張レジスタのライトコマンドの一例を示している。ライトコマンド(CMD
49)において、リードコマンド(CMD48)と同一部分には同一符号を付している。
ライトコマンドとリードコマンドは、“index”により区別される。3ビットの“R
S”と、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コー
ドをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホスト機器2
0が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッファ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の特定のファンクションから5
12バイトのデータが取得される(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バイトのマスクにより、図7A、7B、7Cに示すマスク動作が実行され、拡張レジ
スタの“RS”で選択されたページの“OFS”で指定された位置のデータの一部が書き
換えられる(ST26)。
また、上記ステップ21において、データポートであると判別された場合、バッファ1
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)。
次いで、ホスト機器20内に、取得した拡張機能に対応する専用機能ドライバがインス
トールされているかどうか検索される(ST35、ST36)。この結果、専用機能ドラ
イバが無い場合、拡張レジスタのページ0に記載された機能識別コードが“0”であるか
どかが判別される(ST37)。この結果、機能識別コードが“0”である場合、この拡
張機能はサポートされていないため、このデバイスは使用できないと認識され、次のデバ
イスに対するドライバの検索に移る(ST34)。
また、ステップST37の判別の結果、機能識別コードが“0”でない場合、ホスト機
器20にインストールされている標準機能ドライバが検索される(ST38、ST39)
。この結果、標準機能ドライバが無い場合、この拡張機能はサポートされていないため、
デバイスは使用できないと認識され、次のデバイスに対するドライバの検索に移る(ST
34)。
また、ステップ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”でない場
合、すなわち、標準機能である場合、専用ドライバを使用するかどうかが判別される(S
T53)。この結果、専用ドライバを使用しない場合、標準機能ドライバが検索される(
ST54、ST55)。この検索の結果、標準機能ドライバが無い場合、及びステップS
T53において、専用機能ドライバを使用すると判別された場合、専用機能ドライバが検
索される(ST52、ST56)。この検索の結果、専用機能ドライバがあった場合、及
びステップST55において、標準機能ドライバが有った場合、前述したように、アドレ
ス、レングス数が取得される(ST40)。
上記動作によっても、図13と同様に、プラグ・アンド・プレイを実現することができ
る。
尚、上記説明において、拡張機能用のドライバは、ホスト機器20内にインストールさ
れ、ホスト機器20内を検索すると説明した。しかし、これに限定されるものではなく、
拡張機能用のドライバは、メモリカード11に格納されていてもよい。この場合、メモリ
カード11も拡張機能用のドライバの検索対象とされる。
図33は、カードにオプション設定があり、そのオプションによって機能ドライバが異
なる場合、機能ドライバを特定するための情報を示している。図33に示すように、機能
特定コードは、オプションコードとファンクションコードの2種類の情報を示している。
ファンクションコードは特定の標準化された機能仕様を示し、オプションの種類もこの機
能仕様で定義される。オプションコードは、カードが機能ドライバに影響するオプション
を実装しているかどうかを示す情報である。この例は、CMD48/49をサポートして
いるかどうかの情報と、CMD52/53をサポートしているかどうかの情報を示してい
る。オプションコードが1バイトであるとすると、CMD48/49を用いるドライバは
、“01h”(“h”は16進数を示す)で表され、CMD52/53を用いるドライバ
は、“02h”で表される。機能ドライバをホストシステムにインストールするとき、機
能ドライバ実装コードとして登録される。二つのドライバがインストールされたホストシ
ステムの場合、“01h”と“02h”のオプションコードを持っている。
CMD48/49を用いるように設計されたカードは、オプションコードに“01h”
が表示されている。ホストシステムは、オプションコードに基づきCMD48/49のド
ライバを選択する。また、CMD52/53を用いるように設計されたカードは、オプシ
ョンコードに“02h”が表示されている。ホストシステムは、オプションコードに基づ
きCMD52/53のドライバを選択することができる。
ここで重要なのは、ホストドライバは、オプション情報に関する知識が不要であり、汎
用的なホストドライバが作れる点にある。オプション情報に関する知識は、機能ドライバ
がホストシステムにインストールされたときに与えられる。ホストドライバにオプション
情報に関する知識は不要であるため、新しいカードをインストールした場合でも、ホスト
ドライバを更新する必要がない。機能仕様は自由にオプションの内容を決めることができ
、またこの方法により、ホストシステムにオプションの組み合わせに対応した複数の機能
ドライバをインストールしておき、カードのサポート状況に応じて最適な機能ドライバを
選択することができる。
(SDIOにおける拡張レジスタアクセス)
図15は、SDIOにおける拡張レジスタアクセスを示している。
SDメモリカードに対応するホストコントローラは、コマンドCMD48、CMD49
を用いて拡張レジスタをアクセスして、拡張機能を制御することができる。すなわち、固
定長ブロック、シングルブロック転送をサポートしている。
これに対して、SDIOカードに対応するホストコントローラでもコマンドCMD48
、CMD49を用いて拡張レジスタをアクセスできるようにするとともに、拡張レジスタ
をSDIOの各ファンクション領域にマッピングすることで、SDIOコマンドCMD5
2(ライトコマンド)、CMD53(データ転送コマンド)からもアクセスすることが可
能となる。SDIOコマンドを用いると、可変ブロック長、マルチブロック転送をサポー
トでき、ドライバの最適化を図ることができる。コマンドCMD48、CMD49でアク
セスする場合、上記SDIO空間上のマッピングに関係なく、拡張レジスタをアクセスす
ることができる。
具体的には、拡張レジスタをSDIOで使用する場合、拡張レジスタの各ページは、各
ファンクション領域にマッピングされる。図15に示す例の場合、拡張レジスタのページ
0は、ファンクション領域61のファンクション0にマッピングされ、ページ1、ページ
2はファンクション1にマッピングされ、ページ3はファンクション2にマッピングされ
ている。ファンクション0は、各ページの機能レジスタがSDIOマップのどこに配置さ
れているかを示すアドレス情報を保持している。このため、このアドレス情報を用いるこ
とにより、コマンドCMD48、CMD49を用いたドライバだけでなく、コマンドCM
D52、CMD53を用いたドライバにより、拡張レジスタの各ページをアクセスするこ
とが可能である。
尚、ホスト機器20は、拡張レジスタの第1ページに記載された汎用情報フィールドか
ら、拡張機能に割り当てられた拡張レジスタの位置情報をドライバに渡す。これにより、
拡張機能が任意の位置に配置されていても制御可能となる。
また、ホスト機器20は、前述したプラグ・アンド・プレイにより、メモリデバイス1
1とデータ転送が可能となった状態において、前記コマンドCMD48、CMD49、C
MD52、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、CM
D49において、“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ビットで選択されたページ内の5
12バイトのブロックがアクセスされる。すなわち、“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からコマンド(CMD4
8)を受け取ると、レスポンス(R1)をホスト機器20に返し、その後、拡張レジスタ
31から512バイトのデータブロックを読み出す。
具体的には、コマンド(CMD48)の引数としての“FNO”(MIO=1)、“A
ddr”により、ページ内の読み出すべきデータの位置が指定され、読み出すべき有効デ
ータ長が“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ブロック(51
2バイト単位)のデータをリードすることができる。この読み出されたデータは、例えば
バッファ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は、データブロックが正しく受け取れたかどうかを示すC
RCコードをホストに返す。その後、このコマンド処理が終わるまでビジーを返し、ホス
ト機器20が次のコマンドを発行できるタイミングを知らせる。データブロックは、バッ
ファ16に保持されている。
コマンド処理において、コマンドの引数“Addr”により、拡張レジスタ内のページ
と位置が指定され、データポートが指定される。データポートは、拡張レジスタマップ上
において、1バイトのアドレスを占有するだけでよい。このデータポートに、バッファ1
6に保持された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)。この取得されたデータは、バッファ1
6の512バイトのデータブロックにセットされる(ST56)。
上記ステップST51の判別の結果、データポートのコマンドでは無い場合、処理が終
了される。
(ライトコマンド(CMD49)の動作)
図25は、上記ライトコマンド(CMD49)に対応するメモリデバイス11内のコン
トローラ11aの動作を示している。
ライトコマンドを受けると、CPU13(コマンド処理部14a)により、コマンドの
引数“FID/FNO”が割り当てられた拡張レジスタ・セットに一致するかどうか検証
する(ST61)。拡張レジスタ・セットは、“FNO”(“MIO”=1)と“Add
r”によって特定される。検証の結果、両者が一致している場合、コマンドの引数“Ad
dr”が解析され、ライトコマンドがデータポートかどうか判別される(ST62)。す
なわち、“FNO”(“MIO”=1)と“Addr”で予め設定されたデータポートの
位置かどうかが判別される。
この結果、ライトコマンドがデータポート以外と判別された場合、コマンドの引数“M
W”が“1”かどうか、すなわち、マスクライトかどうかが判別される(ST63)。
この判別の結果、マスクライトではないと判別された場合、拡張レジスタ処理部14c
により拡張レジスタのライト処理が行われる。すなわち、バッファ16のデータブロック
から“Len”により指定された長さのデータが取得される(ST64)。この取得され
たデータは、“Addr”に基づき、拡張レジスタの選択されたページの指定された位置
にセットされる(ST65)。
一方、上記ステップST63において、“MW”=“1”であり、マスクライトである
と判別された場合、拡張レジスタ処理部14cによりバッファ16のデータブロックから
1バイトのデータが取得されるとともに、引数から1バイトのマスクが取得される(ST
66)。
次いで、1バイトのデータと、1バイトのマスクにより、図7A、7B、7Cに示すマ
スク動作が実行され、“Addr”で指定された拡張レジスタの所定のページ、所定の位
置に1バイトのマスク動作が実行されたデータがセットされる(ST67)。
また、上記ステップST62において、ライトコマンドがデータポートであると判別さ
れた場合、バッファ16のデータブロックから512バイトのデータが取得される(ST
68)。この取得されたデータは、拡張レジスタ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は
オプションコマンドであり、データポートは、複数のシングルブロック転送コマンドCM
D48、CMD49で代替できるようになっている。
マルチブロック転送は、データポートを経由したデータ転送を想定している。したがっ
て、このコマンドのアドレスが、拡張レジスタ空間の中のデータポートとして定義された
アドレスと一致した場合のみ、このコマンドが有効になる。このため、このコマンドが通
常の拡張レジスタに対して実行された場合、エラーとなりデータ転送は実行されない。
“FID/FNO”フィールド(4ビット)には、発行されたコマンドがどの機能で用
いるコマンドであるかを識別するためのコードが設定される。このため、“FID”フィ
ールドを用いることにより、この値で機能を識別することができ、実装が容易になる。ア
ドレス“Addr”フィールドでもファンクションは識別可能である。しかし、カードに
よって割り当てられるアドレスが異なるため、ホストドライバがアドレスから機能を特定
することは管理がし難いという問題がある。このため、ホストドライバは、“FID”フ
ィールドの値に基づき、機能毎にホストシステムに実装されているデータバッファなどを
切り替え制御に用いることができる。
CMD58/59の引数には、データ長を指定する“Len”フィールドがない。この
理由は、長いデータ伝送は、長いブロック数を指定する必要があり、この情報はリード/
ライトコマンドの引数には指定しきれないためである。したがって、CMD58/59を
発行する前にデータ転送に必要なブロック数を指定しておく必要がある。このため、例え
ば拡張レジスタにブロック数を設定するレジスタ定義し、CMD49で設定する方法や、
ブロック数を設定するコマンド(CMD23)を、CMD58/59を発行する直前に発
行する、などの方法が用いられる。
拡張レジスタにデータを設定する場合、各機能で独立して設定することができ、他の機
能から影響されない。共通のブロック数コマンド(CMD23)を用いる場合、メモリマ
ルチブロックコマンドに対するブロック数の設定と区別が必要である。このため、各CM
D58/59の直前に発行する必要があり、ホストドライバは、CMD23の直後に他の
コマンドが発行されないように順番を管理する必要がある。
ホストは、複数機能カード/デバイスのひとつの機能を特定するためには、初期化で得
られるカード固有アドレス(RCA:Relative Card Address)やデバイスID、前記“M
IO”と前記“FID/FNO”情報が必要である。
図28は、第2の実施形態に係る汎用情報フィールドの表示位置を示している。図28
(a)に示すメモリ空間では、拡張レジスタのページ0に配置され、図28(b)に示す
SDIO空間では、従来のレジスタとコンフリクトしない特定の位置に配置される。例え
ば図28(b)において、SDIO用汎用情報は、機能(ファンクション)0の“008
FFh”−“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、CM
D58/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を用いた機能ドライバがインストール
されている場合、その機能ドライバが使用され、インストールされていない場合、CMD
48/49、CMD58/59を用いた機能ドライバが使用される。
SDIO非対応カードに関して、CMD48/49、CMD58/59を用いた機能ド
ライバが使用される。
(SDIOの初期化動作)
図30は、コンボカードにおけるSDIOの初期化動作を概略的に示している。
従来、SDIOの初期化シーケンスは、最初にSDIO初期化コマンド(CMD5)を
実行しないとSDIO機能が有効にならないという定義になっている。このため、コンボ
カードでメモリを使用している場合でも、SDIOを使用する時点で再初期化が必要にな
るため、ホストにとって使いにくい仕様となっていた。
通常、I/O機能は、その機能を使う直前に初期化するのがシステムリソースを無駄に
しないためや、消費電力を無駄に消費しないために好ましい。機能が初期化されるタイミ
ングとしては、機能を用いるアプリケーションが起動したタイミングで行うのが良い。
また、再初期化では、カード固有アドレス(RCA)の変更が行われるため、メモリの
アクセス方法にも影響を与えてしまう。メモリ制御に影響を与えず、SDIO機能を有効
にするため、メモリ初期化シーケンスを基本として、SDIO機能は後で追加できること
が望ましい。
そのため、図30に示すように、メモリデバイス11が起動され、初期化されると(S
T71)、コマンド(CMD3)が発行され、カード固有アドレス(RCA)が取得され
る(ST72)。この後、コマンド(CMD7)が発行され(ST73)、メモリデバイ
ス11が転送状態、すなわち、メモリが使用可能な状態に設定される(ST74)。この
状態にいて、SDIOの初期化コマンド(CMD5)が発行される(ST75)。これに
より、SDIOが初期化され、CMD52とCMD53の受付が可能とされる(ST76
)。
尚、カード固有アドレス(RCA)はメモリの初期化で取得した値を維持する。これは
初期化方法の追加であり、従来のSDIO初期化シーケンスでも初期化は可能であり互換
性がある。
上記構成によれば、機能を用いるアプリケーションが起動したタイミングにおいて、機
能が初期化されるため、メモリ制御に影響を与えることなく、各機能を初期化することが
できる。
(機能ドライバインターフェース)
従来、SDIOは、共通レジスタに必要な制御ビットを割り当てて制御していた。これ
を行うためハードウェアを実装する必要がある。専用の機能ドライバで機能を制御する場
合、実装は自由に行うことができる。このため、必ずしも共通レジスタで制御を行う必要
はない。従来共通レジスタで行っていた制御を機能ドライバのAPI(Application Prog
ram 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 No
tificationはこの制御に用いられる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/F
NO”に基づき、対応する機能の拡張レジスタにデータを供給する。
このように、“FID/FNO”を用いて、マルチプレクサ83を制御することにより
、各機能に対応したバッファ82、83を確実に選択することが可能である。
(第3の実施形態)
上記のように、拡張レジスタをメモリデバイスとしてのSDカードの内部に設け、ホス
ト機器から供給されるコマンドCMD48、CMD49、CMD58、CMD59によっ
て拡張レジスタにデータを書き込んだり、拡張レジスタからデータを読み出したりするこ
とが可能されている。
第3の実施形態では、ホスト機器20から拡張機能部19に必要なコマンドや、メッセ
ージを転送したり、拡張機能部19からのレスポンスをホスト機器20に転送したりする
具体的な方法について説明する。
第3の実施形態は、拡張機能の動作に必要なコマンドとレスポンスを定義するとともに
、これらコマンドとレスポンスを受け渡す場所を定めている。さらに、ホスト機器20と
拡張機能部19との間で、長いデータを転送する場合、必要に応じて例えばコマンドペイ
ロードと称するデータを追加し、データを転送する方法を定義する。
図34は、第3の実施形態を示すものであり、ホスト機器20とメモリデバイス11と
してのSDカードとの関係を、ファームウェアレベルで概略的に示している。図34にお
いて、図1と同一部分には、同一符号を付している。
ホスト機器20は、拡張機能アプリケーションを20−1、カードコマンド発行部20
−1を有している。
メモリデバイス11は、コントローラ11a、NANDフラッシュメモリ、拡張機能部
19を有している。コントローラ11aは、カードコマンド制御部11−1、拡張レジス
タ31、メモリ制御部11−2を有している。
ホスト機器20からメモリデバイス11の拡張機能部19にコマンドやメッセージなど
のデータを送受信する場合、カードコマンド発行部20−2は、CMD48/49/58
/59のいずれかと、コマンドヘッダ20a、レスポンスヘッダ20c、及び必要に応じ
てコマンドペイロード20b、レスポンスペイロード20dを発行する。
すなわち、ホスト機器20からメモリデバイス11にデータを転送する場合、コマンド
ヘッダ20aと、必要に応じてコマンドペイロード20bが用いられる。コマンドヘッダ
20aは、CMD49によりメモリデバイス11に供給され、コマンドペイロード20b
は、CMD59によりメモリデバイス11に供給される。
一方、ホスト機器20により、メモリデバイス11の拡張機能からのレスポンスを受け
取る場合、レスポンスヘッダ20cと、必要に応じてレスポンスペイロード20dが用い
られる。レスポンスヘッダ20cは、CMD48を用いて受け取られ、レスポンスペイロ
ード20dは、CMD58(Multi-Block Read)を用いて受け取られる。
(コマンドCMD58、59)
図35は、リードコマンドとしてのCMD58を示し、図36は、ライトコマンドとし
てのCMD59を示している。図34、図35において、CMD58/59の引数は、図
26、図27と類似する。このため、図26、図27と異なる部分についてのみ説明する
図26、図27に示す例の場合、長いデータを転送する際、CMD58/59を発行す
る直前において、ブロック数を設定するCMD23を発行した。
これに対して、第3の実施形態において、CMD58/59は、CMD23を用いるこ
となく、長いデータを転送可能としている。
図35、図36において、図26、図27と異なる部分は、引数“BUS” (Block Un
it Select)と“BUC”(Block Unit Count)である。“FNO”は、“FID/FNO”
と実質的に同一であり、“MIO”により選択されたメモリ空間、又はSDIO区間にお
ける機能空間を区別するために使用される。
“BUS”は、ブロックユニットのサイズを指定するフィールドである。“BUS”=
“0”の場合、ブロックユニットサイズは、512バイトであり、“BUS”=“1”の
場合、ブロックユニットサイズは、32Kバイトである。32Kバイトは、64ブロック
データ(64×512バイト)が1ブロックユニットとして扱われることを示している。
“BUC”は、ブロックユニット数を指定するフィールドである。このフィールドで指
定するブロックユニットサイズは、“BUS”で指定されたブロックユニットサイズによ
って計算して転送するデータの合計のサイズを計算する。ただし、データ転送時のデータ
サイズの単位となるブロックはBUSに関らず、512バイト固定である。
また、後述するように、“ADDR”(アドレスフィールド)において指定されたアド
レスにより、拡張レジスタのポートが指定される。
(コマンドの送受信パターン)
図37は、ホスト機器20とメモリデバイス11との間において送受信されるコマンド
のパターンを示している。コマンドの送受信パターンとして、例えば3つのタイプがある
図37(a)に示すタイプ1は、CMD49によりコマンドヘッダ20aをホスト機器
20からメモリデバイス11に送信し、CMD48によりメモリデバイス11からのレス
ポンスヘッダをホスト機器20で受信する場合を示している。
このタイプ1のパターンは、短いデータの送受信に適している。
図37(b)に示すタイプ2は、CMD49によりコマンドヘッダ20aをホスト機器
20からメモリデバイス11に送信し、この後、CMD59によりコマンドペイロード2
0bをホスト機器20からメモリデバイス11に送信する。この後、CMD48によりメ
モリデバイス11からのレスポンスヘッダ20cをホスト機器20で受信する場合を示し
ている。
コマンドヘッダ20aの送信とコマンドペイロード20bの送信の順番は、この限りで
はなく、先ず、コマンドペイロード20bを送信し、次いで、コマンドヘッダ20aを送
信してもよい。
このタイプ2のパターンは、512バイトより長いデータを拡張機能に送信する場合に
適している。
図37(c)に示すタイプ3は、CMD49によりコマンドヘッダ20aをホスト機器
20からメモリデバイス11に送信し、この後、CMD48によりメモリデバイス11か
らのレスポンスヘッダ20cをホスト機器20で受信し、次いで、CMD58によりメモ
リデバイス11からのレスポンスペイロード20dをホスト機器20で受信する場合を示
している。
ここで、レスポンスドヘッダ20cの受信とレスポンスペイロード20dの受信の順番
は、この限りではなく、先ず、レスポンスペイロード20dを受信し、次いで、レスポン
スヘッダ20cを受信してもよい。
このタイプ3のパターンは、512バイトより長いデータを拡張機能から受信する場合
に適している。
コマンドペイロード20bやレスポンスペイロード20dを必要とするかどうかは、後
述するように、コマンドヘッダ20aにより指定される。
図38は、コマンドヘッダ20a、コマンドペイロード20b、レスポンスヘッダ20
c、レスポンスペイロード20dのデータ構造の例を示している。
コマンドヘッダ20aは、512バイトにより構成され、例えば“オペレーションコー
ド(OPコード)”、“rsv”、“アーギュメント長”、“ペイロード長”、“アーギ
ュメント”、“パディング”を含んでいる。コマンドヘッダ20aのデータ構造は、後述
するように、“OPコード”の内容により、“アーギュメント”の内容が変更される。
“OPコード”は、拡張機能を動作させるためのコマンドのコードを示している。さら
に、後述するように、コマンドペイロード20bやレスポンスペイロード20dを必要と
するかどうかは、“OPコード”内において指定される。
“アーギュメント長”は、“アーギュメント”のデータ長を示し、“ペイロード長”は
、ペイロードのデータ長を示している。
“パディング”は、コマンドヘッダの長さを機器のデータ転送処理単位(512バイト
)に揃えるためのデータであり、データそのものに意味はない。コマンドペイロード20
b、レスポンスヘッダ20c、レスポンスペイロード20dの“パディング”も、コマン
ドヘッダ20aの“パディング”と同様である。
コマンドペイロード20bは、512バイト×N(Nは、1以上の自然数)のデータ長
を有し、このデータ長は、コマンドヘッダ20aのペイロード長により管理される。コマ
ンドペイロード20bは、例えば実データとしての“コマンドペイロード”と“パディン
グ”とにより構成されている。“コマンドペイロード”の内容は、“OPコード”に応じ
て変わるものである。
例えば“OPコード”が拡張処理部19を介してNANDフラッシュメモリ18にデー
タを書き込む処理を指示する場合、コマンドペイロードは、書き込みデータである。
また、拡張処理部19が認証処理機能を有する場合において、“OPコード”が暗号化
キーブロックのデータを書き込む指示である場合、“コマンドペイロード”は、暗号化キ
ーブロックのデータとなる。
レスポンスヘッダ20cは、512バイトにより構成されている。レスポンスヘッダ2
0cは、例えば“レスポンスコード”、“レスポンスデータ長”、“レスポンスデータ”
、“パディング”を含んでいる。
レスポンスペイロード20dは、“レスポンスペイロード”と“パディング”により構
成されている。“レスポンスペイロード”の内容は、レスポンスの内容に従って変化する
。レスポンスが、拡張機能を介してNANDフラッシュメモリのデータを読み出した結果
である場合、“レスポンスペイロード”の内容は、読み出しデータである。
(コマンドヘッダ、ペイロード、及びレスポンスヘッダの例)
図39、図40は、コマンドヘッダ、ペイロード、及びレスポンスヘッダの例を示して
いる。
図39は、拡張機能がメモリデバイス11の認証処理で使用される暗号化キーを処理す
る機能を有する場合の例を示している。
メモリデバイス11の認証処理で使用される暗号化キーブロック(Encrypted Key Bloc
k: EKB)と称するデータをメモリデバイス11に書き込む場合において、EKBをメ
モリデバイスに書き込むため、“Write EKB”と称するコマンドを送信する例を示してい
る。
図39(a)は、この場合のコマンドヘッダ20aの一例を示すものである。
“OP Code”(OPコード)は“80h”であり、“Write EKB”コマンドを示している
“Reserved”は、将来の拡張目的や機器がデータ処理し易いように、データの位置調整
のために設定されている。
“Argument Length”は、このコマンドのアーギュメントの長さを示し、この例では“
04h”が設定されている。
“Payload Length”は、ペイロードの長さを示し、“N”が設定されている。
“Block Number”から“Padding data”まではアーギュメントとして扱われる。“Bloc
k Number”は記録するEKBの番号を示し、“n”は、複数のEKBのうちの1つを区別
するための識別番号である。
“Reserved”及び“Padding Data”は、前述した通りである。
図39(b)は、この例におけるコマンドペイロード20bの一例を示している。“Wr
ite EKB”の場合、“マンドペイロード”として、EKBデータそのものを転送する。コ
マンドペイロード20bの長さは、前述したコマンドヘッダ20aの“Payload Length”
で規定される。メモリデバイス11は、コマンドペイロード20bを受け取る前に、コマ
ンドヘッダaにより“ペイロード長”が通知されることにより、記録のための事前準備を
行うことができる。
図39(c)は、この例におけるレスポンスヘッダ20cの一例を示している。“Writ
e EKB”の場合、レスポンスヘッダ20cは、“Response Code”と“Padding Data”によ
り構成される。“Response Code”には、EKBデータの書き込み処理結果が示される。
例えば書き込みが成功した場合、“Response Code”として“00h”が設定される。
図40は、拡張機能がメモリデバイス11の認証処理で使用されるEKBデータをメモ
リデバイスから読み出す場合に使用する“Read EKB”と称するコマンドを送信する例を示
している。
図40(a)は、この場合のコマンドヘッダ20aの一例を示すものである。“OP Cod
e”、“Reserved”、“Argument Length”、“Payload Length”の意味は、図39に示す
“Write EKB”と同様である。
“OP Code”は“81h”であり、“Read EKB”コマンドを示している。
“Argument Length”は、この例の場合、“0Ch”に設定されている。
“Payload Length”は、“N”が設定されている。
“Block Number”から“Padding data”まではアーギュメントとして扱われる。“Bloc
k Number”は、記録されたEKBの番号“n”を示している。
“EKB Offset”は、読み出すEKBの読み出し開始アドレスを示している。
“EKB Length”は、読み出すEKBの長さを示している。
図40(b)は、この例におけるレスポンスペイロード20bの一例を示している。“
Read EKB”の場合、レスポンスペイロード20bは、コマンドヘッダ20aで指定された
“Block Number”、“EKB Offset”、“EKB Length”に基づき、拡張機能部19から読み
出されたEKBデータをホスト機器20に転送する。このため、“レスポンスペイロード
”は、EKBデータそのものである。
レスポンスヘッダ20cは、“Read EKB”の場合の“レスポンスヘッダ”は、“Respon
se Code”と“Padding Data”により構成される。“Response Code”には読み出し処理の
結果が示される。例えば読み出し処理が成功した場合、“00h”が設定される。
この例において、“Response Data”は使用されなかったが、EKBデータを転送する
とき、EKBデータのダイジェストデータを“Response Data”に記録してデータ転送す
ることもできる。このダイジェストデータは、例えば暗号のハッシュ関数SHA1等を利用す
ることが可能であり、メモリのデータ転送と計算処理の値を分けてメモリデバイス11か
らホスト機器20に転送することが可能である。
図41は、コマンドヘッダ20aの“OP Code”の一例を示している。
“OP Code”は、拡張機能の処理コマンドを1から順番に割り振ることも可能である。
また“OP Code”内にコマンドペイロード20bや、レスポンスペイロード20dの有無
を示すビットを割り当てることも可能である。
図41において、“OP Code”の6ビット目は、例えば“コマンドペイロードビット”
と呼ばれ、コマンドペイロードを必要とするかどうかを示すビットである。“コマンドペ
イロードビット”が“1”である場合、このコマンドはコマンドペイロードを送ることを
示す。
また、“コマンドペイロードビット”が“0”である場合、このコマンドはコマンドペ
イロードを送らず、コマンドヘッダのみ、コマンド処理を実行することを示す。
“OP Code”の5ビット目は、“レスポンスペイロードビット”と呼ばれ、レスポンス
ペイロードを必要とするかどうかを示すビットである。“レスポンスペイロードビット”
が“1”である場合、このコマンドはレスポンスペイロードをメモリデバイスが送信する
ことを示す。
また、“レスポンスペイロードビット”が“0”である場合、メモリデバイスはレスポ
ンスペイロードを送信せず、コマンド処理の実行結果として、レスポンスヘッダのみ送信
することを示す。
図42は、第3の実施形態に適用される拡張レジスタ31のマップの一例を示している
。このマップにおいて、オフセットは、拡張レジスタの先頭アドレスからの相対アドレス
を示しており、このオフセットは、CMD58、CMD59の“ADDR”フィールドに
より指定される。
オフセット“4”は、“拡張レジスタステータス”と称するレジスタを示している。こ
の“拡張レジスタステータス”は、拡張レジスタがアイドル状態であるか、送信状態であ
るか、受信状態であるかを示す読み出し専用のレジスタである。
オフセット“8”は、“拡張レジスタオペレーション”と称するレジスタを示している
。この拡張レジスタオペレーション”は、CMD58、CMD59により使用される書き
込み、又は読み出し可能なレジスタである。このレジスタは、リセット可能とされている
オフセット“12”は、“拡張コマンドポート”と称するレジスタであり、拡張コマン
ドの書き込み専用ポートである。
オフセット“13”は、“拡張コマンドペイロードポート”と称するレジスタであり、
コマンドペイロードの書き込み専用ポートである。
オフセット“14”は、“拡張レスポンスペイロードポート”と称するレジスタであり
、拡張レスポンスペイロードの読み出し専用ポートである。
オフセット“15”は、“拡張レスポンスポート”と称するレジスタであり、拡張レス
ポンスの読み出し専用ポートである。
(トランザクションデータ(タイプ1))
図43は、図37(a)に示すCMD49によりコマンドヘッダ20aをホスト機器2
0からメモリデバイス11に送信し、CMD48によりメモリデバイス11からのレスポ
ンスヘッダをホスト機器20で受信するタイプ1の場合のトランザクションデータを示し
ている。
ホスト機器20よりCMD49が発行されてコマンドヘッダ20aが転送されると、図
18に示すCMD49の“Addr”により、拡張レジスタ内のページと位置が指定され
、“拡張コマンドポート”が指定される。この“拡張コマンドポート”を介して、拡張機
能部19にOPコード等が転送される。
また、ホスト機器20よりCMD48が発行されると、図17に示すCMD49の“A
ddr”により、拡張レジスタ内のページと位置が指定され、“拡張レスポンスポート”
が指定される。この“拡張レスポンスポート”を介して、拡張機能部19からレスポンス
ヘッダ20cが読み出され、ホスト機器20に転送される。
図44は、トランザクションデータ(タイプ1)のタイミングチャートを示している。
図44に示すように、メモリデバイス11は、CMD49を受け取ると、レスポンスR
1を返し、その後、512バイトのデータブロックとしてのコマンドヘッダ20aを受け
取る。
メモリデバイス11は、コマンドヘッダ20aが正しく受け取れたかどうかを示すCR
Cコードをホスト機器20に返す。その後、コマンドヘッダ20aに記載されたコマンド
処理が終わるまでビジーを返し、ホスト機器20が次のコマンドを発行できるタイミング
を知らせる。コマンドヘッダ20aは、バッファ16に保持されている。
コマンド処理において、CMD49の引数“Addr”により、拡張レジスタ内のペー
ジと位置が指定され、データポートとしての“拡張コマンドポート”が指定される。この
“拡張コマンドポート”を介してバッファ16に保持された1ブロック(512バイト)
のコマンドヘッダが拡張機能部19の割り当てられたデバイスに書き込まれる。
この後、メモリデバイス11は、CMD48を受け取ると、レスポンスR1を返す。
コマンド処理において、メモリデバイス11は、CMD49の引数“Addr”により
、拡張レジスタ内のページと位置を指定し、データポートとしての“拡張レスポンスポー
ト”が指定される。この“拡張レスポンスポート”を介して拡張機能部19の割り当てら
れたデバイスから、512バイトのデータブロックとしてのレスポンスヘッダ20cが読
み出される。この読み出されたレスポンスヘッダ20cは、ホスト機器20に転送される
(トランザクションデータ(タイプ2))
図45は、図37(b)に示すCMD49によりコマンドヘッダ20aをホスト機器2
0からメモリデバイス11に送信した後、CMD59によりコマンドペイロード20bを
送信し、CMD48によりメモリデバイス11からレスポンスヘッダを読み出し、ホスト
機器20で受信するタイプ1の場合のトランザクションデータを示している。
タイプ1と同様に、ホスト機器20よりCMD49が発行されてコマンドヘッダ20a
が転送されると、CMD49の“Addr”により、拡張レジスタ内のページと位置が指
定され、“拡張コマンドポート”が指定される。この“拡張コマンドポート”を介して、
拡張機能部19にOPコード等が転送される。
次いで、ホスト機器20よりCMD59が発行されてコマンドペイロード20bがメモ
リデバイス11に転送され、拡張レジスタの“拡張コマンドペイロードポート”を介して
、拡張機能部19に複数のペイロードブロックが転送される。
この後、ホスト機器20よりCMD48が発行されると、拡張レジスタの“拡張レスポ
ンスポート”を介して、拡張機能部19からレスポンスヘッダ20cが読み出され、ホス
ト機器20に転送される。
図46は、トランザクションデータ(タイプ2)のタイミングチャートを示している。
図46に示すように、メモリデバイス11は、CMD49を受け取ると、レスポンスR
1を返し、その後、512バイトのコマンドヘッダ20aを受け取る。
メモリデバイス11は、コマンドヘッダ20aが正しく受け取れたかどうかを示すCR
Cコードをホスト機器20に返す。その後、コマンドヘッダ20aに記載されたコマンド
処理が終わるまでビジーを返し、ホスト機器20が次のコマンドを発行できるタイミング
を知らせる。コマンドヘッダ20aは、バッファ16に保持されている。コマンド処理は
、トランザクションデータ(タイプ1)と同様であるため、説明は省略する。
次いで、メモリデバイス11は、CMD59を受け取ると、レスポンスR1を返す。
コマンド処理において、メモリデバイス11は、CMD59の引数“ADDR”により
、拡張レジスタ内のページと位置を指定し、データポートとしての“拡張コマンドペイロ
ードポート”が指定される。この“拡張コマンドペイロードポート”を介して拡張機能部
19の割り当てられたデバイスに、コマンドペイロード20bを構成する512バイトの
データブロックとしてのレスポンスヘッダ20cが書き込まれる。
具体的には、メモリデバイス11は、先ず、CMD59の“BUS”に指定されたサイ
ズ(512バイト/32kバイト)の1ブロックのデータを受け取る。次いで、メモリデ
バイス11は、512バイトのデータが正しく受け取れたかどうかを示すCRCコードを
ホスト機器20に返し、データの受信処理が終わるまでビジーを出力する。
この後、CMD59の“BUC”に指定されたブロック数のデータの受信が完了するま
で、上記動作が繰り返される。
尚、コマンドペイロード20bによりメモリデバイス11に送られたデータは、バッフ
ァ16に保持される。このため、メモリデバイス11は、ホスト機器20の制御無しで、
バッファ16に保持されたデータを、1ブロック単位で拡張機能部19に転送することが
可能であり、所謂DMA(Direct Memory Access)転送が可能となる。
この後、メモリデバイス11は、CMD48を受け取ると、レスポンスR1を返し、そ
の後、ホスト機器20は、512バイトのデータブロックとしてのレスポンスヘッダ20
cを“拡張レスポンスポート”を介して受け取る。コマンド処理は、トランザクションデ
ータ(タイプ1)と同様であるため、説明は省略する。
(トランザクションデータ(タイプ3))
図47は、図37(c)に示すCMD49によりコマンドヘッダ20aをホスト機器2
0からメモリデバイス11に送信した後、CMD48によりメモリデバイス11からレス
ポンスヘッダを読み出し、ホスト機器20で受信し、次いで、CMD58によりレスポン
スペイロード20bを受信するタイプ3の場合のトランザクションデータを示している。
トランザクションデータ(タイプ1)、(タイプ2)と同様に、ホスト機器20よりC
MD49が発行されてコマンドヘッダ20aが転送されると、メモリデバイス11は、C
MD49の“Addr”により、拡張レジスタ内のページと位置が指定され、“拡張コマ
ンドポート”を指定する。この“拡張コマンドポート”を介して、拡張機能部19にコマ
ンドヘッダ20aが転送される。
次いで、ホスト機器20よりCMD58が発行されると、拡張レジスタの“拡張レスポ
ンスペイロードポート”を介して、拡張機能からレスポンスペイロード20dが読み出さ
れ、ホスト機器20に転送される。
この後、ホスト機器20よりCMD48が発行されると、拡張レジスタの“拡張レスポ
ンスポート”を介して、拡張機能からレスポンスヘッダ20cが読み出され、ホスト機器
20に転送される。
図48は、トランザクションデータ(タイプ3)のタイミングチャートを示している。
図48に示すように、メモリデバイス11は、CMD49を受け取ると、レスポンスR
1を返し、その後、512バイトのコマンドヘッダ20aを受け取る。
メモリデバイス11は、コマンドヘッダ20aが正しく受け取れたかどうかを示すCR
Cコードをホスト機器20に返す。その後、コマンドヘッダ20aに記載されたコマンド
処理が終わるまでビジーを返し、ホスト機器20が次のコマンドを発行できるタイミング
を知らせる。コマンドヘッダ20aは、バッファ16に保持されている。コマンド処理は
、トランザクションデータ(タイプ1)と同様であるため、説明は省略する。
次いで、メモリデバイス11は、CMD58を受け取ると、レスポンスR1を返し、そ
の後、レスポンスペイロード20dを構成する512バイトのデータを受け取る。
コマンド処理において、メモリデバイス11は、CMD58の“ADDR”に基づき、
“拡張レスポンスペイロードポート”を指定し、この拡張レスポンスペイロードポート”
を介して、拡張機能部19からCMD58の“BUS”に指定されたサイズ(512バイ
ト/32kバイト)の1ブロックのデータを受け取る。この受け取ったデータはホスト機
器20に転送される。次いで、メモリデバイス11は、512バイトのデータが正しく受
け取れたかどうかを示すCRCコードをホスト機器20に送る。
この後、CMD58の“BUC”に指定されたブロック数のデータの受信が完了するま
で、上記動作が繰り返される。
この後、メモリデバイス11は、CMD48を受け取ると、レスポンスR1を返し、そ
の後、ホスト機器20は、512バイトのデータブロックとしてのレスポンスヘッダ20
cを“拡張レスポンスポート”を介して受け取る。コマンド処理は、トランザクションデ
ータ(タイプ1)と同様であるため、説明は省略する。
尚、トランザクションデータ(タイプ2)において、コマンドヘッダ20aは、マンド
ペイロード20bより先に転送したが、コマンドペイロード20bを転送した後、コマン
ドヘッダ20を転送してもよい。
また、トランザクションデータ(タイプ3)において、レスポンスヘッダ20cは、レ
スポンスペイロード20dの後に転送したが、レスポンスヘッダ20cを転送した後、レ
スポンスペイロード20dを転送してもよい。
上記第3の実施形態によれば、ホスト機器20とメモリデバイス11の拡張機能部19
との間のデータの送受信を、CMD48/49/58/59と、コマンドヘッダ及びレス
ポンスヘッダと、コマンドペイロード及びレスポンスペイロードとに分けている。このた
め、コマンド処理の後、コマンドヘッダ20aに基づき、次のコマンドペイロード20b
により転送されるデータを拡張機能部19への転送するための準備を行うことができる。
このため、コマンドペイロードにより送られてきたデータを効率的に拡張機能部19に転
送することが可能である。したがって、例えばコマンドペイロードにより送られて来たデ
ータは、DMAにより転送することができる。
また、レスポンスをレスポンスヘッダ20cとレスポンスペイロード20dに分けてい
る。このため、コマンド処理の後、レスポンスヘッダ20cに基づき、レスポンスの準備
をした後、拡張機能部19から送られたデータをレスポンスペイロード20dとして効率
的にホスト機器20に転送することが可能となる。
また、ホスト機器20は、CMD49により、拡張機能部19の動作を指示するOPコ
ードとアーギュメントを含むコマンドヘッダ20aを拡張レジスタの拡張コマンドポート
を介して拡張機能部19に転送した後、CMD48により、拡張レジスタの拡張レスポン
スポートを介して拡張機能部19から供給されるレスポンスコードとレスポンスデータを
含むレスポンスヘッダ20cを受けている。このため、拡張機能部19に必要なコマンド
や、メッセージを転送したり、拡張機能部19からのレスポンスをホスト機器20に転送
したりすることが可能である。
また、長いデータを拡張レジスタに転送する場合、CMD59により複数のブロックに
より構成されたコマンドペイロード20bを拡張レジスタの拡張コマンドペイロードポー
トを介して拡張機能部19に転送することができ、CMD58により複数のブロックによ
り構成された長いデータを含むレスポンスペイロードを拡張レジスタの拡張レスポンスペ
イロードポートを介して読み出すことができる。したがって、長いデータを拡張機能部1
9に対して書き込み、読み出すことが可能である。
しかも、CMD58/59は、引数としてブロックのサイズを指定する“BUS”と、
ブロック数を指定する“BUC”を有している。したがって、ブロック数を指定するCM
D23を用いる必要がないため、長いデータを容易に転送することが可能である。
(第4の実施形態)
第1乃至第3の実施形態において、メモリデバイス11は、CMD48/49を受ける
とレスポンスR1をホスト機器20に返す。
しかし、メモリデバイス11内部の拡張機能部19は、コマンドに対する処理の完了や
、エラーなどのイベントをホスト機器20に通知する手段がなかった。拡張レジスタを介
してこれらのイベントを表示することは可能であるが、ホスト機器20はイベントが起こ
ったかどうかをポーリングする必要があり非効率であった。
そこで、第4の実施形態は、拡張レジスタをアクセスするコマンドを含む全てのコマン
ドに対して返信されるレスポンR1に、拡張レジスタのイベントを通知するフラグを設け
、ホスト機器20が拡張レジスタをアクセスすることなく、ホスト機器20にイベントを
通知可能とする。
図49は、レスポンスR1のデータ構造の一例を示している。レスポンスR1は、例え
ば32ビットにより構成されている。このうち、例えば第18ビットが拡張機能のイベン
トを示すフラグEF_EVENT(Extension Function Event)に設定されている。
メモリカード11内の例えば複数の拡張機能のうちの少なくとも1つにイベントが発生
すると、フラグEF_EVENTが“1”に設定される。このフラグEF_EVENTの
ビットは、以降のレスポンスにおいて、“0”に戻してもよいし、次に説明するフラグが
読まれたとき、“0”に戻してもよい。
図50は、例えば拡張レジスタ内に設けられた拡張機能イベントフラグ(Extension Fu
nction Event Flag)の一例を示している。
この拡張機能イベントフラグは、例えば17ビットにより構成されており、各ビットに
対応して拡張機能の番号が対応されている。
拡張機能において、イベントが発生した場合、該当する拡張機能の番号のビットが“1
”に設定される。イベントの種別は各拡張機能の拡張レジスタ内で通知できるように定義
しても良い。このビットは、このビットの値が読み出された時点で“0”に戻っても良い
し、各拡張機能に“0”に戻るタイミングを定義しても良い。
図51は、ホスト機器20にアプリケーションと、拡張機能アプリケーション1、拡張
機能アプリケーション2、及びこれらに対応したファイルシステム、拡張機能ドライバ1
、及び拡張機能ドライバ2が設けられている場合の例を示している。このような構成のホ
スト機器20により、メモリデバイス11をアクセスする場合の動作について説明する。
図52は、上記構成のホスト機器20により、メモリデバイス11をアクセスする場合
の動作のシーケンスチャートの例を示している。
先ず、ホスト機器20のアプリケーション、又はファイルシステムから書き込み、又は
読み出し要求が発生すると(S81)、カードドライバ、又はホストコントローラからC
MDXXが発生される(S82)。このCMDXXは、CMD48/49/58/59の
いずれかである。
メモリデバイス11は、CMDXXを受けるとレスポンスR1をホスト機器20に返す
(S83)。
このレスポンスR1に含まれるフラグEF_EVENTが“1”に設定されている場合
、カードドライバ、又はホストコントローラは、CMD48を発行し(S85)、拡張レ
ジスタの拡張機能イベントフラグを読み出す(S86)。
カードドライバ、又はホストコントローラは、拡張機能イベントフラグを解析し、例え
ば拡張機能ドライバ1にイベントが発生したことを検出すると、割り込み、又はカードド
ライバのポーリングにより、拡張機能ドライバ1に通知する(S87)。
この後、機能拡張ドライバ1は、カードドラバ、又はホストコントローラに対してイベ
ントの内容を読み出すためCMD48を発行し(S88)、カードドラバ、又はホストコ
ントローラは、メモリデバイス11にCMD48を発行する(S89)。
メモリデバイス11は、CMD48を受けると、レスポンスR1をホスト機器20に返
す(S90)。
この後、コマンド処理により、拡張機能部からイベントの内容がホスト機器20に転送
される(S91)。このイベントの内容は、さらに機能拡張ドライバ1に転送される(S
92)。
上記第4の実施形態によれば、CMD48/49/58/59のレスポンスR1に拡張
機能のいずれかにイベントが発生したことを示すフラグEF_Eventを設けている。
このため、ホスト機器20は、レスポンスR1を受けることにより、拡張機能のいずれか
にイベントが発生したことを知ることができる。したがって、ポーリングにより、イベン
トの発生を検出する必要がないため、効率良くイベントを検出することが可能である。
また、拡張レジスタ内に拡張機能イベントフラグを設け、この拡張機能イベントフラグ
により、拡張機能部19の何れの機能によりイベントが発生したこと特定可能としている
。このため、ホスト機器20は、フラグEF_Eventによりイベントの発生が検出さ
れた場合、拡張機能イベントフラグを読み出すことにより、イベントが発生した拡張機能
を容易に特定することができる。
(第5の実施形態)
第1乃至第4の実施形態は、ホスト機器20によりメモリデバイス11の拡張機能をア
クセスする場合について説明した。
これに対して、第5の実施形態は、ホスト機器20とメモリデバイス11との間に変換
機器を設け、この変換機器を介してメモリデバイス11の拡張機能をアクセスする場合に
ついて説明する。具体的には、例えばパーソナルコンピュータとしてのホスト機器20に
メモリデバイス11を接続するためのアダプタが接続される場合がある。第5の実施形態
は、このようなアダプタが接続された場合においても、ホスト機器20とメモリデバイス
11の拡張機能部19とのデータ転送を可能とするものである。
図53は、ホスト機器20とメモリデバイス11との間に、例えばUniversal Serial B
us(USB)タイプの接続機器としてのアダプタ100が接続されている場合の例を概略
的に示している。
アダプタ100は、変換器101を有している。変換器101は、コマンド分割部10
2、レスポンス結合部103、及びコマンド発行部104を有している。
図54、図55は、図53で示す例の処理動作を示している。図54は、データの書き
込み動作の例を示し、図55は、データの読み出し動作の例を示している。
USBタイプのアダプタ100を用いてメモリデバイス11がホスト機器20に接続さ
れる場合、データをホスト機器20からアダプタ100に対して、先ずCommand Block Wr
apper (CBW) と呼ばれるメッセージを送り、データの送信もしくは受信を行う。最後
にCommand Status Wrapper (CSW)と呼ばれるメッセージをアダプタ100からホス
ト機器20へ送信してデータの送受信を制御する。CBWにおいて、データの送受信の方
向、送受信のデータの長さを指定できる。
ホスト機器20は、メモリデバイス11の拡張機能部19に長いデータを転送する場合
、前述したコマンドヘッダ20a、及びコマンドペイロード20bを使用し、拡張機能部
19からホスト機器20に長いデータを転送する場合、レスポンスヘッダ20c、及びレ
スポンスペイロード20dが使用される。
図54に示すように、データの書き込み時、ホスト機器20はCBWを変換器101へ
送る(S101)。変換器101は、CSWを解析し、この後にデータが書き込まれるこ
とを、送られてくるデータの長さと共に知ることができる(S102)。この時、データ
の長さに基づきコマンドペイロードが含まれるかどうかを判断できる。
変換器101は、ホスト機器20から転送されたコマンドヘッダ20a、コマンドペイ
ロード20bを受けると(S103)、コマンド分割部102により、コマンドヘッダ2
0a、コマンドペイロード20bを分離する。すなわち、コマンド分割部102は、転送
されたデータのうち、最初の512バイトをコマンドヘッダ20aとみなし、これ以降の
データをコマンドペイロード20bとみなして、これらを分割する。長さが512バイト
を超えない場合、変換器101はコマンドペイロードが無いものとして処理する。
コマンド発行部104は、コマンド分割部102から供給されたコマンドヘッダ20a
に対してCMD49を発行し(S104)、メモリデバイス11からレスポンスR1を受
けた後(S105)、CMD49によりコマンドヘッダ20aをメモリデバイス11に転
送する(S106)。メモリデバイス11の内部動作(S107)は、上述した通りであ
る。
また、コマンド発行部104は、コマンド分割部102から供給されたコマンドペイロ
ード20bに対してCMD59を発行し(S108)、メモリデバイス11からレスポン
スR1を受けた後(S109)、コマンドペイロード20bをメモリデバイス11に転送
する(S110)。メモリデバイス11は、コマンドペイロードを処理する(S111)
CMD59の発行時、コマンドペイロードの長さと等しいかそれ以上の長さになるよう
に“BUS”、“BUC”を設定する。コマンドペイロードの長さ以上に“BUS”、“
BUC”を設定した場合、コマンドペイロードを送信した後、“BUS”、“BUC”で
設定した長さの任意のデータを続けて送信しても良いし、送信を中止するコマンドを発行
して次の作業に進んでも良い。
変換器101は、データをメモリデバイス11に送信した後、CSWをホスト機器20
に送信する(S112)。これによりホスト機器20は、変換器101の処理が終了した
ことを知ることができる。
一方、図55に示すように、メモリデバイス11から長いデータを読み出す場合、ホス
ト機器20から変換機101へCBWが送られる(S121)。変換器101は、CBW
を解析し、この後にデータ読み出しが行われることを、読み出すデータの長さと共に知る
ことができる(S122)。この時、データの長さからレスポンスペイロードが必要かど
うか判断できる。もし指定されたデータの長さが512バイトを超えていた場合、レスポ
ンスペイロードの読み出しが必要であると判断する。
変換器101のコマンド発行部104は、レスポンスペイロードの読み出しが必要な場
合、CMD58を発行する(S123)。CMD58発行時、レスポンスペイロードの長
さと等しいかそれ以上の長さになるように“BUS”、“BUC”を設定する。レスポン
スペイロードの長さ以上に“BUS”、“BUC”を設定した場合、レスポンスペイロー
ドを受け終わった後、“BUS”、“BUC”で設定した長さになる任意のデータを続け
て読み出しても良いし、送信を中止するコマンドを発行して次の作業に進んでも良い。
メモリデバイス11からレスポンスR1を受けた後(S124)、コマンド発行部10
4は、メモリデバイス11から受け取ったブロックをレスポンス結合部103に供給する
(S125)。
この後、コマンド発行部104は、CMD48を発行する(S126)。コマンド発行
部104は、メモリデバイス11からレスポンスR1を受けた後(S127)、メモリデ
バイス11から供給された512バイトのデータをレスポンスヘッダ20cとしてレスポ
ンス結合部103に供給する(S128)。
レスポンス結合部103は、レスポンスヘッダ20cと、複数のブロックにより構成さ
れたレスポンスペイロード20dを結合してホスト機器20に転送する(S129)。
最後に変換器101はCSWをホスト機器20に送信する(S130)。ホスト機器は
、これにより変換器101が処理を終了したことを知ることができる。
コマンド分割部102、及びレスポンス結合部103は、処理を行うのに十分なサイズ
の作業領域を持っていない場合、コマンド発行部104、及びホスト機器20へそれまで
作業領域に蓄積されたデータをその都度それぞれに送り出して逐次処理することも可能で
ある。
尚、上記説明は、長いデータを転送する場合であったが、コマンドペイロード20b、
及びレスポンスペイロード20dを使用しないデータ転送の場合、変換器101のコマン
ド分割部102は、単にコマンドヘッダ20aを出力し、レスポンス結合部103は、単
にレスポンスヘッダ20cを出力する。
また、メモリデバイス11は、必要なデータを送った後にタイムアウトする(例えば25
0msec)。この後、レスポンスペイロードが送り終わったことをレスポンスR1のイベン
トを用いて示しても良い。
図56は、第5の実施形態の変形例を示すものであり、アダプタの他の例を示している
図56において、アダプタ110は、ホスト機器20に対してメモリデバイス11と例
えばハードディスク113を接続可能としている。
アダプタ110は、分配器111と、変換器101、及びブリッジ回路112を有して
いる。分配器111の第1の端子は、USBを介してホスト機器20に接続されている。
分配器111の第2の端子は、変換器101を介してメモリデバイス11に接続されてい
る。変換器101の構成は、上述した通りである。分配器111の第3の端子は、ブリッ
ジ回路112、SATA(serial ATA)ケーブル114を介してハードディスク113に
接続されている。ブリッジ回路112は、例えば図示せぬメモリインターフェースモジュ
ールと、メモリ制御モジュールなどを含んでいる。
このような構成の場合においても、変換器101を用いることにより、ホスト機器20
とメモリデバイス11の拡張機能部19との間でデータを転送することが可能である。
上記第5の実施形態によれば、ホスト機器20とメモリデバイス11との間にアダプタ
100が設けられている場合においても、アダプタ100に変換器101を設けることに
より、ホスト機器20とメモリデバイス11の拡張機能部19との間でデータを転送する
ことが可能である。
尚、上記実施形態において、拡張機能の一例としては、コントローラに実装されるセキ
ュリティ機能や、メモリ、例えばNANDフラッシュメモリに実装されるセキュリティ機
能がある。
コントローラに実装されるセキュリティ機能とは、例えば鍵情報及びコントローラ固有
の識別情報等をコントローラに格納し、これらの情報を基にホスト機器との間でセキュア
な通信チャンネルを構成するための機能等である。
また、メモリに実装されるセキュリティ機能とは、例えば鍵情報、メモリ固有の識別情
報、及びこの識別情報を暗号化して生成された暗号化識別情報等をメモリに格納し、これ
らの情報を基にコントローラを介してホスト機器との間で認証処理を実施するための機能
等である。
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではそ
の要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開
示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例え
ば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異
なる実施形態にわたる構成要素を適宜組み合わせてもよい。
11…メモリデバイス、11a…カードコントローラ、18…NANDフラッシュメモ
リ、19…拡張機能部、20…ホスト機器、31…拡張レジスタ、101…変換器、10
2…コマンド分割部、103…レスポンス結合部。

Claims (1)

  1. ホスト機器に接続される分配器と、
    前記分配器に接続され、メモリデバイスに接続される変換器と、
    前記分配器に接続され、ハードディスク装置に接続されるブリッジ回路と
    を具備する電子装置であって、
    前記メモリデバイスは、
    不揮発性半導体記憶装置と、
    前記不揮発性半導体記憶装置を制御する制御部と、
    前記制御部により制御される拡張機能部と、
    前記拡張機能部の拡張機能を定義可能な一定のブロック長を有する拡張レジスタと、を
    具備し、
    前記変換器は、
    前記ホスト機器から転送されるコマンドのヘッダデータと可変長のコマンドデータを分
    割する分割部と、
    前記分割部により分割された前記コマンドのヘッダデータを前記拡張機能部に書き込む
    第1のコマンドを発生し、前記拡張レジスタを介して前記拡張機能部からレスポンスのヘ
    ッダデータを読み出す第2のコマンドを発生するコマンド発行部と
    を具備することを特徴とするメモリシステム。
JP2012152876A 2012-07-06 2012-07-06 メモリシステム Active JP5779148B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012152876A JP5779148B2 (ja) 2012-07-06 2012-07-06 メモリシステム
US13/557,596 US20140013049A1 (en) 2012-07-06 2012-07-25 Memory system in which extended function can easily be set

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012152876A JP5779148B2 (ja) 2012-07-06 2012-07-06 メモリシステム

Publications (2)

Publication Number Publication Date
JP2014016734A true JP2014016734A (ja) 2014-01-30
JP5779148B2 JP5779148B2 (ja) 2015-09-16

Family

ID=49879411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012152876A Active JP5779148B2 (ja) 2012-07-06 2012-07-06 メモリシステム

Country Status (2)

Country Link
US (1) US20140013049A1 (ja)
JP (1) JP5779148B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5832963B2 (ja) * 2012-06-29 2015-12-16 株式会社東芝 メモリシステム

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0935019A (ja) * 1995-07-17 1997-02-07 Dainippon Printing Co Ltd 携帯可能情報記録媒体およびそのアクセス方法
JP2001282467A (ja) * 2000-03-30 2001-10-12 Matsushita Electric Ind Co Ltd Sdカード認証領域へのデータリード/ライトの方法およびデータ通信装置
JP2001356885A (ja) * 2000-04-12 2001-12-26 Sony Corp 制御方法及び電子装置
JP2002171303A (ja) * 2000-11-30 2002-06-14 Toshiba Corp 無線通信カード
JP2003319322A (ja) * 2002-04-18 2003-11-07 Kenwood Corp 記録再生装置、記録装置、再生装置および記録再生方法
JP2005050320A (ja) * 2003-07-16 2005-02-24 Matsushita Electric Ind Co Ltd アクセス方法
JP2006031235A (ja) * 2004-07-14 2006-02-02 Sony Corp 情報処理装置、外部装置、ホスト装置、及び通信方法
JP2006236200A (ja) * 2005-02-28 2006-09-07 Toshiba Corp カード状記憶装置とそのホスト装置
JP2007110349A (ja) * 2005-10-12 2007-04-26 Artray Co Ltd Sataカメラシステム
JP2008210301A (ja) * 2007-02-28 2008-09-11 Sony Corp 記憶媒体、通信システム、並びに制御装置。
JP2011216068A (ja) * 2009-09-11 2011-10-27 Toshiba Corp 携帯可能電子装置、icカード、および携帯可能電子装置の制御方法
JP2012023576A (ja) * 2010-07-14 2012-02-02 Panasonic Corp 映像音声変換装置および映像音声変換方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3546980B2 (ja) * 1996-03-29 2004-07-28 松下電器産業株式会社 データ処理装置
US7197583B2 (en) * 2003-01-21 2007-03-27 Zentek Technology Japan, Inc. SDIO controller
KR20060053251A (ko) * 2004-10-13 2006-05-19 조배수 중계기를 이용한 호스트와 클라이언트 간의 플러그 엔플레이 시스템 및 방법
US7421566B2 (en) * 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US8190785B2 (en) * 2006-05-26 2012-05-29 Smart Technologies Ulc Plug-and-play device and method for enhancing features and settings in an interactive display system
JP5728292B2 (ja) * 2011-02-04 2015-06-03 株式会社東芝 メモリデバイス及びホストシステム
JP5814871B2 (ja) * 2012-07-06 2015-11-17 株式会社東芝 メモリシステム

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0935019A (ja) * 1995-07-17 1997-02-07 Dainippon Printing Co Ltd 携帯可能情報記録媒体およびそのアクセス方法
JP2001282467A (ja) * 2000-03-30 2001-10-12 Matsushita Electric Ind Co Ltd Sdカード認証領域へのデータリード/ライトの方法およびデータ通信装置
JP2001356885A (ja) * 2000-04-12 2001-12-26 Sony Corp 制御方法及び電子装置
JP2002171303A (ja) * 2000-11-30 2002-06-14 Toshiba Corp 無線通信カード
JP2003319322A (ja) * 2002-04-18 2003-11-07 Kenwood Corp 記録再生装置、記録装置、再生装置および記録再生方法
JP2005050320A (ja) * 2003-07-16 2005-02-24 Matsushita Electric Ind Co Ltd アクセス方法
JP2006031235A (ja) * 2004-07-14 2006-02-02 Sony Corp 情報処理装置、外部装置、ホスト装置、及び通信方法
JP2006236200A (ja) * 2005-02-28 2006-09-07 Toshiba Corp カード状記憶装置とそのホスト装置
JP2007110349A (ja) * 2005-10-12 2007-04-26 Artray Co Ltd Sataカメラシステム
JP2008210301A (ja) * 2007-02-28 2008-09-11 Sony Corp 記憶媒体、通信システム、並びに制御装置。
US20100069039A1 (en) * 2007-02-28 2010-03-18 Sony Corporation Storage medium, communication system, and control device
JP2011216068A (ja) * 2009-09-11 2011-10-27 Toshiba Corp 携帯可能電子装置、icカード、および携帯可能電子装置の制御方法
JP2012023576A (ja) * 2010-07-14 2012-02-02 Panasonic Corp 映像音声変換装置および映像音声変換方法

Also Published As

Publication number Publication date
US20140013049A1 (en) 2014-01-09
JP5779148B2 (ja) 2015-09-16

Similar Documents

Publication Publication Date Title
JP5814871B2 (ja) メモリシステム
USRE48997E1 (en) Memory system in which extended function can easily be set
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) 컴퓨터 시스템 및 그 제어 방법
US7552251B2 (en) Single-chip multi-media card/secure digital (MMC/SD) controller reading power-on boot code from integrated flash memory for user storage
JP2003132305A (ja) メモリカードを制御するための装置および方法
TWI453614B (zh) 可於自網路獲得之資料上附加時間資訊之記憶體系統
JP5779147B2 (ja) メモリシステム
JP5832963B2 (ja) メモリシステム
US20120317313A1 (en) Disk device assigned id codes for storage areas of a storage device
JP5779148B2 (ja) メモリシステム
JP6017379B2 (ja) メモリシステム及びホスト機器
JP4807667B2 (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

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: 20150612

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150710

R151 Written notification of patent or utility model registration

Ref document number: 5779148

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