(58)【調査した分野】(Int.Cl.,DB名)
前記第2の制御部は、前記要求に、後に続く動作が前記第1の記憶部からデータを読み出す動作であることを示す第2のフラグ、または後に続く動作が前記第1の記憶部へのデータを書き込む動作であることを示す第3のフラグを含ませることを特徴とする請求項1乃至6の何れか一項に記載の情報処理装置。
【発明を実施するための形態】
【0007】
以下、実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0008】
(実施形態)
図1に、本実施形態に係る情報処理装置の基本的な構成を模式的に示している。本実施形態に係る情報処理装置は、ホスト・デバイス(ホスト装置、外部装置)1と、ホスト・デバイス1の記憶装置として機能するメモリ・システム2とを備える。ホスト・デバイス1とメモリ・システム2との間は、通信路3で接続されている。メモリ・システム2には、UFS(Universal Flash Storage)規格に準拠した組み込み用途のフラッシュメモリや、SSD(Solid State Drive)等を適用することができる。情報処理装置は、例えば、パーソナルコンピュータ、携帯電話、撮像装置等である。通信路3の通信規格としては、例えばMIPI(Mobile Industry Processor Interface)、UniProが採用されている。
【0009】
<メモリ・システムの概要>
メモリ・システム2は、不揮発性半導体メモリとしてのNANDフラッシュメモリ210と、ホスト・デバイス1との間のデータ転送を行うデバイス・コントローラ200とを備えている。
【0010】
NANDフラッシュメモリ210は、メモリセルアレイを有する1以上のメモリチップによって構成される。メモリセルアレイは、複数のメモリセルがマトリクス状に配列して構成される。更に、各ブロックは、複数のページより構成されている。各ページは、データの書き込み及び読み出しの単位である。
【0011】
また、NANDメモリ210は、L2Pテーブル211及びホスト・デバイス1から送信されるユーザ・データ212を記憶する。ユーザ・データ212は、例えばホスト・デバイス1が実行環境を提供するオペレーティングシステムプログラム(OS)や、ホスト・デバイス1がOS上で実行するユーザ・プログラムや、OSまたはユーザ・プログラムが入出力するデータ等を含む。
【0012】
L2Pテーブル211は、メモリ・システム2がホスト・デバイス1に対する外部記憶装置として機能するために必要となる管理情報の一つであって、ホスト・デバイス1がメモリ・システム2にアクセスする際に使用する論理ブロックアドレス(LBA:Logical block address)と、NANDメモリ210内の物理アドレス(ブロックアドレス+ページアドレス+ページ内記憶位置)とを、対応付けるアドレス変換情報である。後述するホスト・デバイス1内のL2Pキャッシュ領域300には、このL2Pテーブル211の一部がキャッシュされる。L2Pキャッシュ領域300にキャッシュされる内容と区別するために、以下では、NANDメモリ210に記憶されているL2Pテーブル211をL2P本体211と呼ぶ。
【0013】
デバイス・コントローラ200は、通信路3の接続インタフェースであるホスト接続アダプタ201と、NANDメモリ210との間の接続インタフェースであるNAND接続アダプタ204と、デバイス・コントローラ200の制御を実行するデバイス・コントローラ主要部202と、RAM203とを備えている。
【0014】
RAM203は、NANDメモリ210にライトするデータあるいはNANDメモリ210からリードされたデータを記憶するためのバッファとして用いられる。また、RAM203は、ホスト・デバイス1から入力されるライト要求、リード要求などに関わるコマンドをキューイングするコマンドキューとして使用される。例えばRAM203は、小規模なSRAMまたはDRAM等で構成されることができる。また、レジスタ等でRAM203の機能を代用するようにしても良い。
【0015】
デバイス・コントローラ主要部202は、ホスト接続アダプタ201を介してホスト・デバイス1とRAM203との間のデータ転送を制御したり、NAND接続アダプタ204を介してRAM203とNANDメモリ210との間のデータ転送を制御したりする。特に、デバイス・コントローラ主要部202は、ホスト・デバイス1との間の通信路3においてバス・マスタとして機能して第1ポート230を用いてデータ転送を行う他、別の二つのバス・マスタ205、206を備えている。バス・マスタ205は、第2ポート231を用いてホスト・デバイス1との間のデータ転送をおこなうことができ、バス・マスタ206は、第3ポート232を用いてホスト・デバイス1との間のデータ転送を行うことができる。ポート230〜232の役割については後述する。
【0016】
なお、デバイス・コントローラ主要部202は、例えば、演算装置や記憶装置を備えたマイクロコンピュータユニットにより構成される。当該演算装置が前記記憶装置に予め格納されたファームウェアを実行することによって、デバイス・コントローラ主要部202としての機能が実現される。なお、デバイス・コントローラ主要部202から記憶装置を省略して、ファームウェアをNANDメモリ210に格納しておくようにしても良い。また、デバイス・コントローラ主要部202はASICを用いて構成されることが可能である。
【0017】
また、本実施形態に係るメモリ・システム2は、UFS(Universal Flash Storage)規格に準拠した組み込み用途のフラッシュメモリを想定している。そのため、以下に説明するコマンド等は、UFSの規格に則った物である。
【0018】
<ホスト・デバイスの概要>
ホスト・デバイス1は、OSやユーザ・プログラムを実行するCPU110と、メイン・メモリ100と、ホスト・コントローラ120とを備えている。メイン・メモリ100、CPU110及びホスト・コントローラ120は、バス140で互いに接続されている。
【0019】
メイン・メモリ100は、例えばDRAMで構成される。メイン・メモリ100は、ホスト使用領域101とデバイス使用領域102とを有する。ホスト使用領域101は、ホスト・デバイス1がOSやユーザ・プログラムを実行する際のプログラム展開領域や当該プログラム展開領域に展開されたプログラムを実行する際のワーク・エリアとして使用される。デバイス使用領域102は、メモリ・システム2の管理情報やリードライトのためのキャッシュ領域として使用される。ここでは、メモリ・システム2にキャッシュされる管理情報の一例としてL2Pテーブル211を取り上げる。また、デバイス使用領域102にライト・データがキャッシュされるものとする。
【0020】
<ポートの概要>
次に、実施形態に係るホスト・デバイス1及びメモリ・システム2の各ポートについて説明する。実施形態に係るホスト・デバイス1及びメモリ・システム2は、物理的には一つの線(通信路3)で接続されているが、下記に示すポート(CPortとも称す)と呼ばれる複数のアクセスポイントによって接続されている。
【0021】
ホスト・コントローラ120は、バス140の接続インタフェースであるバスアダプタ121と、通信路3の接続インタフェースであるデバイス接続アダプタ126と、バスアダプタ121を介してメイン・メモリ100やCPU110との間でデータやコマンドの転送を行ったり、デバイス接続アダプタ126を介してメモリ・システム2との間でデータ(コマンドを含む)の転送を行ったりするホスト・コントローラ主要部122とを備えている。ホスト・コントローラ主要部122は、デバイス接続アダプタ126と第1ポート130で接続されており、当該第1ポート130を介してメモリ・システム2との間でデータの転送を行うことができる。
【0022】
また、ホスト・コントローラ120は、ホスト使用領域101とデバイス使用領域102との間でDMA転送を行うメイン・メモリDMA123と、メモリ・システム2がデバイス使用領域102にアクセスするために送るコマンドを捕捉したり、ホスト・コントローラ主要部122がデバイス使用領域102にかかるステータス情報をメモリ・システム2に送信したりする制御DMA124と、デバイス使用領域102とメモリ・システム2との間でDMA転送を行うデータDMA125とを備えている。制御DMA124は、デバイス接続アダプタ126と、第2ポート131で接続されており、当該第2ポート131を介してメモリ・システム2との間でコマンドやステータス情報の送受信を行うことができる。また、データDMA125は、デバイス接続アダプタ126と第3ポート132で接続されており、当該第3ポート132を介してメモリ・システム2との間でデータの送受信を行うことができる。
【0023】
尚、デバイス接続アダプタ126及びホスト接続アダプタ201の機能により、第1ポート130は第1ポート230と、第2ポート131は第2ポート231と、第3ポート132は第3ポート232とそれぞれ対応付けられている。具体的には、デバイス接続アダプタ126は、第1ポート130を介してメモリ・システム2に送られてきた内容を第1ポート230を介してデバイス・コントローラ主要部202に送り、第2ポート131を介してメモリ・システム2に送られてきた内容を第2ポート231を介してデバイス・コントローラ主要部202に送り、第3ポート132を介してメモリ・システム2に送られてきた内容を第3ポート232を介してデバイス・コントローラ主要部202に送る。
【0024】
また、デバイス接続アダプタ126は、第1ポート230を介してホスト・デバイス1に送られてきた内容を第1ポート130を介してホスト・コントローラ主要部122に送り、第2ポート231を介してホスト・デバイス1に送られてきた内容を第2ポート131を介して制御DMA124に送り、第3ポート232を介してホスト・デバイス1に送られてきた内容を第3ポート132を介してデータDMA125に送る。制御DMA124、データDMA125に送られてきた内容は、例えばバスアダプタ121を介してホスト・コントローラ主要部122に送られる。
【0025】
尚、ポート130〜132のそれぞれは、メモリ・システム2との間の通信に使用される入力バッファをそれぞれ独立に備え得る。ホスト・コントローラ主要部122、制御DMA124、データDMA125がそれぞれ別々の入出力バッファを用いてメモリ・システム2に接続されていることにより、ホスト・コントローラ120は、ホスト・コントローラ主要部122を用いたメモリ・システム2との通信と、制御DMA124を用いたメモリ・システム2との通信と、データDMA125を用いたメモリ・システム2との通信とをそれぞれ独立して実行することができる。また、入出力バッファの入れ替えの必要なくこれらの通信の切り替えを行うことができるので、通信の切り替えを高速実行することができる。メモリ・システム2が備えるポート230〜232についても同様の事が言える。
【0026】
以上のように、本実施形態に係る情報処理装置は、第1のポート(CPort 0とも称す)130及び230と、第2のポート(CPort 1とも称す)131及び231と、第3のポート(CPort 2とも称す)132及び232との3種類のポートを備えている。
【0027】
また、各ポートには、それぞれ優先度(トラフィック・クラス:TC等とも称す)が予め定義されている。具体的には、第1のポート130及び230には優先度“0(低い)”が設定され、第2のポート131及び231には優先度“1(高い)”が設定され、第1のポート132及び232には優先度“0(低い)”が設定されている。
【0028】
第1のポート130及び230は基本的にホスト・デバイス1からメモリ・システム2への要求時のみに使われる。第2のポート131及び231と、第3のポート132及び232は、後述するようなメモリ・システム2の要求によって適宜選択される。
【0029】
尚、第1のポート130及び230を区別しない場合には、簡単の為、単に第1のポートと称す。また、第2のポート131及び231を区別しない場合には、簡単の為、単に第2のポートと称す。更に第3のポート132及び232を区別しない場合には、簡単の為、単に第3のポートと称す。
【0030】
<優先度(トラフィック・クラス:TC)について>
次に、優先度(トラフィック・クラス:TC)について説明する。優先度(トラフィック・クラス)とは、ホスト・デバイス1からメモリ・システム2にデータ等を返すときの優先順である。具体的には、優先度とはホスト・デバイス1及びメモリ・システム2間におけるデータ転送等が競合した場合に、データ転送等の順序を定める値である。本実施形態では、一例として、優先度“1”(TC 1 とも表記する)、及び優先度“1”よりも優先度の低い優先度“0”(TC 0 とも表記する)の2種類の優先度が設定されている。
【0031】
この優先度は、上述した第1〜第3のポート毎に予め設定されている。本実施形態では、第1のポート(CPort 0)は優先度“0”(TC 0)に設定され、第2のポート(CPort 1)は優先度“1(高い)”(TC 1)に設定され、第3のポート(CPort 2)は優先度“0(低い)”(TC 0)に設定されている。この優先度の選択方法については、後述で説明する。
【0032】
<デバイス使用領域の概要>
図2は、デバイス使用領域102のメモリ構造を説明する図である。図示するように、デバイス使用領域102には、L2P本体211の一部がキャッシュされるL2Pキャッシュ領域300、L2Pキャッシュ領域300のヒット/ミス判定に使用されるタグ情報が格納されるL2Pキャッシュ・タグ領域310、ライト・データがバッファリングされるキャッシュ構造のメモリ領域であるライト・キャッシュ領域400、及びライト・キャッシュ領域400のヒット/ミス判定に使用されるタグ情報が格納されるライト・キャッシュ・タグ領域410を備えている。
【0033】
<L2Pキャッシュ・タグ領域のメモリ構造>
図3は、L2Pキャッシュ・タグ領域310のメモリ構造を説明する図であり、
図4は、L2Pキャッシュ領域300のメモリ構造を説明する図である。ここでは、一例として、LBAは26ビットのデータ長を有し、L2Pキャッシュ領域300はLBAの下位側の22ビットの値を用いて参照されるものとしている。LBAの上位側の4ビットの値をTと表記し、下位側の22ビットの値をLと表記して説明する。なお、LBAは、NANDメモリ210を構成するページ(ここでは4Kバイトとする)毎に割り当てられているものとしている。
【0034】
L2Pキャッシュ領域300を構成する個々のキャッシュ・ラインには、
図4に示す様に、一つのLBAに対する物理アドレス(Phys. Addr.)が格納されている。L2Pキャッシュ領域300は、2を22乗して得られる数のキャッシュ・ラインで構成される。個々のキャッシュ・ラインは、26ビットの物理アドレスが格納されるために必要十分なサイズであるバイト数である4バイトの容量を有する。従って、L2Pキャッシュ領域300は、合計で、2の22乗に4バイトを掛けたサイズ、すなわち16Mバイトのサイズを有することになる。また、L2Pキャッシュ領域300は、Lの値の順番にLBAに対応する物理アドレスが格納されるように構成されている。すなわち、L2Pキャッシュ領域300を構成する個別のキャッシュ・ラインは、4*LにL2Pキャッシュ領域300のページアドレス(L2P Base Addr.)を加算したアドレスを参照(Refer)されることにより呼び出される。なお、L2Pキャッシュ領域300を構成する4バイトのキャッシュ・ラインのうちの26ビットの物理アドレスが格納される領域をのぞいた余剰の領域を「Pad」と表記している。以降のテーブルにおいても、余剰の部分を「Pad」と表記する。
【0035】
また、
図3に示すように、L2Pキャッシュ・タグ領域310には、L2Pキャッシュ領域300に格納されているキャッシュ・ライン毎にタグ情報としての値TがLの値の順に登録されて構成される。個々のエントリは、タグ情報が格納されるフィールド311と有効なキャッシュ・ラインであるか否かを示すVL(Valid L2p)ビットが格納されるフィールド312とを備えている。ここで、L2Pキャッシュ・タグ領域310は、L2Pキャッシュ・タグ領域310にタグ情報として登録されているTが、L2Pキャッシュ領域300の対応するキャッシュ・ライン(即ちLを用いて参照されるキャッシュ・ライン)に格納されている物理アドレスに対応するLBAの上位桁Tと一致するように構成されている。即ち、所望のLBAの上位桁Tに対応する物理アドレスがL2Pキャッシュ領域300にキャッシュされているか否かは、当該所望のLBAを構成するLの値にL2Pキャッシュ・タグ領域310のベースアドレス(L2P Tag Base Addr.)を加算したアドレスが参照(Refer)され、当該参照位置に格納されているタグ情報が前記所望のLBAを構成するTの値と一致するか否かにより判定される。両者が一致する場合には、所望のLBAに対応する物理アドレスがキャッシュされていると判定され、両者が一致しない場合には、所望のLBAに対応する物理アドレスがキャッシュされていないと判定される。なお、Tは、4ビットの値であり、VLビットは1ビットの容量を要するため、個々のエントリは1バイトの容量を有する。従って、L2Pキャッシュ・タグ領域310は、2の22乗に1バイトを掛けたサイズ、即ち4Mバイトのサイズを有することになる。
【0036】
図5は、ライト・キャッシュ・タグ領域410のメモリ構造を説明する図であり、
図6は、ライト・キャッシュ領域400のメモリ構造を示す図である。ここで、ライト・キャッシュ領域400は、LBAの下位側の13ビットの値を用いて参照されるものとしている。LBAの上位側の13ビットの値をT′と表記し、下位側の13ビットの値をL′と表記して説明する。
【0037】
ライト・キャッシュ領域400を構成する個々のキャッシュ・ラインには、
図6に示すように、ページサイズのライト・データが格納されている。
【0038】
ライト・キャッシュ領域400は、2を13乗して得られる数のキャッシュ・ラインで構成される。ここのキャッシュ・ラインは、ページサイズ(ここでは4Kバイトとしている)のライト・データがキャッシュされるので、ライト・キャッシュ領域400は、合計で2の13乗に4Kを掛けたサイズ、即ち32Mバイトのサイズを有することになる。
【0039】
また、ライト・キャッシュ領域400には、L′の値の順番に、対応するライト・データが格納されている。即ち、ライト・キャッシュ領域400を構成する個別のキャッシュ・ラインは、L′*8Kにライト・キャッシュ領域400のページアドレス(WC Base Addr.)を加算したアドレスを参照されることにより読み出される。
【0040】
また、
図5に示すように、ライト・キャッシュ・タグ領域410には、ライト・キャッシュ領域400に格納されているキャッシュ・ライン毎にタグ情報としてのT′がL′の順に登録されて構成される。個々のエントリは、タグ情報が格納されるフィールド411と有効なキャッシュ・ラインであるか否かを示すVB(Valid Buffer)ビットが格納されるフィールド412と、キャッシュされているライト・データがダーティであるかクリーンであるかを示すDB(Dirty Buffer)ビットが格納されるフィールド413を有している。
【0041】
ライト・キャッシュ・タグ領域410は、ライト・キャッシュ・タグ領域410にタグ情報として登録されているT′が、ライト・キャッシュ領域400の対応するキャッシュ・ライン(即ちL′を用いて参照されるキャッシュ・ライン)に格納されているライト・データの格納先ページに割り当てられたLBAの上位桁T′と一致するように構成されている。即ち、所望のLBAに対応するライト・データが、ライト・キャッシュ領域400にキャッシュされているか否かは、当該所望のLBAの上位桁Tを構成する2*L′の値にライト・キャッシュ・タグ領域410のベースアドレス(WC Tag Base Addr.)を加算したアドレスが参照され、当該参照位置に格納されているタグ情報が前記所望のLBAに対応を構成するT′の値と一致するか否かによって判定されている。
【0042】
なお、キャッシュ・ラインがダーティであるとは、当該キャッシュ・ラインに格納されているライト・データとNANDメモリ210上の対応するアドレスに格納されているデータとが一致しない状態を言い、クリーンであるとは、両者が一致する状態を言う。ダーティなキャッシュ・ラインがNANDメモリ210にライトバックされることによって、当該キャッシュ・ラインがクリーンになる。なお、ライト・キャッシュ・タグ領域410の個々のタグ情報T′は13ビットのデータ長を有し、DBビット及びVBビットはそれぞれ1ビットのサイズを要するので、個々のエントリは2バイトの容量を有する。従って、ライト・キャッシュ・タグ領域410は、2の13乗に2バイトを掛けたサイズ、すなわち16Kバイトのサイズを有することになる。
【0043】
CPU110は、OSやユーザ・プログラムを実行して、これらのプログラムからの要請に基づいてホスト使用領域101内のデータをメモリ・システム2に書き込むライト・コマンドを生成する。生成されたライト・コマンドはホスト・コントローラ120に送られる。
【0044】
<ライト・コマンドのデータ構造の概要>
図7は、ライト・コマンドのデータ構造例を説明する図である。図示するように、ライト・コマンド500は、当該コマンド500がデータの書き込みを指令するものであることを示すライト指令501と、書き込み対象のデータが格納されているホスト使用領域101内の番地であるソース・アドレス502と、メモリ・システム2内の、ライト・データの書き込み先の番地を示す第1のデスティネーション・アドレス503と、ライト・データのデータ長504とを含んで構成される。第1のデスティネーション・アドレス503はLBAで表記される。
【0045】
ホスト・コントローラ主要部122は、CPU110から送られてきたライト・コマンド500をバスアダプタ121を介して受信して、受信したライト・コマンド500に含まれているソース・アドレス502及び第1のデスティネーション・アドレス503を読み出す。そして、ホスト・コントローラ主要部122は、ソース・アドレス502に格納されたデータと第1のデスティネーション・アドレス503とをデバイス接続アダプタ126を介してメモリ・システム2に転送する。
【0046】
尚、ホスト・コントローラ主要部122は、ソース・アドレス502に格納されたデータを読み込む際、メイン・メモリDMA123を利用しても良い。その際、ホスト・コントローラ主要部122は、ソース・アドレス502とデータ長504とデスティネーション・アドレスとしてホスト・コントローラ主要部120内のバッファ・アドレスにセットし、メイン・メモリDMA123を起動する。
【0047】
また、ホスト・コントローラ主要部122は、ライト・コマンド500の他にもCPU110からの種々のコマンドを受信することができる。ここでは、ホスト・コントローラ主要部122は、受信したコマンドをコマンドキューにエンキューして、コマンドキューの先頭から順に処理対象のコマンドを取り出す。なお、このコマンドキューのデータ構造が格納される領域は、メイン・メモリ100上に確保されるようにしてもよいし、ホスト・コントローラ主要部122の内部または近傍に小規模なメモリやレジスタが配置されて構成されるようにしてもよい。
【0048】
また、ホスト・コントローラ主要部122とメイン・メモリDMA123、制御DMA124、データDMA125との間の通信経路は特定の経路に限定されない。例えば、バスアダプタ121を通信経路とするようにしてもよいし、専用線を設けて当該専用線を通信経路とするようにしても良い。
【0049】
<コマンドのフォーマットについて>
次に、
図8を用いて実施形態に係るデータ転送コマンド(リクエストとも称す)のフォーマットについて説明する。
図8は、実施形態に係るデータ転送コマンドのフォーマットの一例を示した図である。
【0050】
図8に示すように、データ転送コマンド(Access UM Buffer)はホスト・デバイス1にデータ転送要求を行う際に種々の情報を含めることができる。本実施形態に係るデータ転送コマンド(Access UM Buffer)は、特に“フラグ(Flags)”情報(図中破線部内参照)を含むことができる。
【0051】
<フラグについて>
続いて、
図9を用いて実施形態に係るデータ転送コマンド(Access UM Buffer)に含まれるフラグ(Flags)について説明する。
図9は、実施形態に係るデータ転送コマンド(Access UM Buffer)に含まれるフラグ(Flags)の一例を示したものである。
【0052】
図9に示すように、実施形態に係るデータ転送コマンド(Access UM Buffer)に含まれるフラグ(Flags)にはフラグR(Flags.R)、フラグW(Flags.W)、フラグP(Flags.P)の3種類のフラグが存在する。メモリ・システム2は、ホスト・デバイス1からコマンドを受信した際に、データ転送コマンド(Access UM Buffer)のこれらのフラグを設定する。
【0053】
[フラグR(Flags.R)]
フラグRとは、後に続く動作がホスト・デバイス1のメイン・メモリ100内からメモリ・システム2へデータを読み出す動作であることを示すフラグである。
【0054】
具体的には、ホスト・デバイス1からメモリ・システム2へのデータ読み出動作の場合にフラグRに“1”がセットされる。
【0055】
[フラグW(Flags.W)]
フラグWとは、後に続く動作がメモリ・システム2からホスト・デバイス1のメイン・メモリ100内へデータを書き込む動作であることを示すフラグである。
【0056】
メモリ・システム2からホスト・デバイス1へのデータ書き込む動作の場合にフラグWに“1”がセットされる。
【0057】
[フラグP(Flags.P)]
フラグPとは、後に続くメモリ・システム2からホスト・デバイス1へのデータ入力シーケンス(UM DATA IN)または、ホスト・デバイス1からメモリ・システム2へのデータ出力シーケンス(UM DATA OUT)の優先度を決定するフラグである。この選択された優先度に対応するポートを介して、各シーケンスが実行される。
【0058】
具体的には、メモリ・システム2からホスト・デバイス1へのデータ入力シーケンス(UM DATA IN)または、ホスト・デバイス1からメモリ・システム2へのデータ出力シーケンス(UM DATA OUT)の優先度を、“高い”に設定する場合にフラグPに“1”がセットされる。ホスト・デバイス1は、フラグPが“1”に設定されていることを認識すると、優先度“1(高い)”に設定されている第2のポートを介してデータの送受信を行う。
【0059】
メモリ・システム2からホスト・デバイス1へのデータ入力シーケンス(UM DATA IN)または、ホスト・デバイス1からメモリ・システム2へのデータ出力シーケンス(UM DATA OUT)の優先度を、“低い”に設定する場合にフラグPに“0”がセットされる。これにより、ホスト・デバイス1は、フラグPが“0”に設定されていることを認識すると、優先度が“0(低い)”に設定されている第3のポートを介してデータの送受信を行う。
【0060】
<読み出し動作>
次に、
図10を用いて、メモリ・システム2がホスト・デバイス1からデータを読み出す場合における情報処理装置の動作例を説明する。
図10(a)は、第3のポートを介してメモリ・システム2がデータを受信する動作を示した図であり、
図10(b)は、第2のポートを介してメモリ・システム2がデータを受信する動作を示した図である。
【0061】
まず
図10(a)に示すように、通信路3の優先度設定が2つ(0:優先度低い、1:優先度高い)用意されている情報処理装置において、メモリ・システム2はデータ転送要求時、対応するデータ転送で用いる通信路3の優先度を常に“0”とする場合の動作を説明する。
【0062】
[ステップS1001]
デバイス・コントローラ主要部202は、ホスト・デバイス1からデータを受信する際の優先度を優先度“0”と決定する。そのため、デバイス・コントローラ主要部202は、データ転送コマンド(Access UM Buffer)におけるフラグPを“0”に設定する。また、デバイス・コントローラ主要部202は、ホスト・デバイス1からデータを読み出すので、データ転送コマンド(Access UM Buffer)におけるフラグRを“1”に設定する。
【0063】
[ステップS1002]
デバイス・コントローラ主要部202は、「フラグR“1”、フラグP“0”、アドレス、及びサイズ(READ, P==0, Address, Size)」等の情報を含むデバイス使用領域102のデータを読み出すコマンド(Access UM Buffer)を、優先度が“1(高い)”である第2のポート(CPort 1, TC 1)を介してホスト・デバイス1に送信する。
【0064】
[ステップS1003]
ホスト・コントローラ120は、メモリ・システム2から、データを読み出すコマンド(Access UM Buffer)を受信すると、「フラグR“1”、フラグP“0”、アドレス、及びサイズ(READ, P==0, Address, Size)」等の情報に基づいて、デバイス使用領域102から、データをフェッチする。
【0065】
[ステップS1004]
そして、ホスト・コントローラ120は、メモリ・システム2から受信したデータを読み出すコマンド(Access UM Buffer)に含まれるフラグPに基づいて、優先度が“0”である第3のポート(CPort 2, TC 0)を介して、メモリ・システム2に読み出しデータを転送する(UM DATA OUT)。
【0066】
次に
図10(b)に示すように、通信路3の優先度設定が2つ(0:優先度低い、1:優先度高い)用意されている情報処理装置において、メモリ・システム2はデータ転送要求時、対応するデータ転送で用いる通信路3の優先度を常に“1”とする場合の動作を説明する。
【0067】
[ステップS1101]
デバイス・コントローラ主要部202は、ホスト・デバイス1からデータを受信する際の優先度を優先度“1”と決定する。そのため、デバイス・コントローラ主要部202は、データ転送コマンド(Access UM Buffer)におけるフラグPを“1”に設定する。また、デバイス・コントローラ主要部202は、ホスト・デバイス1からデータを読み出すので、データ転送コマンド(Access UM Buffer)におけるフラグRを“1”に設定する。
【0068】
[ステップS1102]
デバイス・コントローラ主要部202は、「フラグR“1”、フラグP“1”、アドレス、及びサイズ(READ, P==1, Address, Size)」等の情報を含むデバイス使用領域102のデータを読み出すコマンド(Access UM Buffer)を、優先度が“1(高い)”である第2のポート(CPort 1, TC 1)を介してホスト・デバイス1に送信する。
【0069】
[ステップS1103]
ホスト・コントローラ120は、メモリ・システム2から、データを読み出すコマンド(Access UM Buffer)を受信すると、「フラグR“1”、フラグP“1”、アドレス、及びサイズ(READ, P==1, Address, Size)」等の情報に基づいて、デバイス使用領域102から、データをフェッチする。
【0070】
[ステップS1104]
そして、ホスト・コントローラ120は、メモリ・システム2から受信したデータを読み出すコマンド(Access UM Buffer)に含まれるフラグPに基づいて、優先度が“1”である第2のポート(CPort 1, TC 1)を介して、メモリ・システム2に読み出しデータを転送する(UM DATA OUT)。
【0071】
<書き込み動作>
次に、
図11を用いて、メモリ・システム2がホスト・デバイス1にデータを書き込む場合における情報処理装置の動作例を説明する。
図11(a)は、第3のポートを介してメモリ・システム2がデータを送信する動作を示した図であり、
図11(b)は、第2のポートを介してメモリ・システム2がデータを送信する動作を示した図である。
【0072】
まず
図11(a)に示すように、通信路3の優先度設定が2つ用意されている情報処理装置において、メモリ・システム2はデータ転送要求時、対応するデータ転送で用いる通信路3の優先度を常に“0”とする場合の動作を説明する。
【0073】
[ステップS1201]
デバイス・コントローラ主要部202は、ホスト・デバイス1にデータを送信する際の優先度を優先度“0”と決定する。そのため、デバイス・コントローラ主要部202は、データ転送コマンド(Access UM Buffer)におけるフラグPを“0(P==0)”に設定する。また、デバイス・コントローラ主要部202は、ホスト・デバイス1にデータを書き込むので、データ転送コマンド(Access UM Buffer)におけるフラグWを“1”に設定する。
【0074】
[ステップS1202]
デバイス・コントローラ主要部202は、「フラグW“1”、フラグP“0”、アドレス、及びサイズ(WRITE, P==0, Address, Size)」等の情報を含むメモリ・システム2から受信したデータをデバイス使用領域102に書き込むコマンド(Access UM Buffer)を、優先度が“1”である第2のポート(CPort 1, TC 1)を介してホスト・デバイス1に送信する。
【0075】
[ステップS1203]
ホスト・コントローラ120は、メモリ・システム2から、データを書き込むコマンド(Access UM Buffer)を受信すると、「フラグW“1”、フラグP“0”、アドレス、及びサイズ(WRITE, P==0, Address, Size)」等の情報に基づいて、メモリ・システム2から書き込みデータを受信する(UM DATA IN)。この際、メモリ・システム2から受信したデータを書き込むコマンド(Access UM Buffer)に含まれるフラグPに基づいて、優先度が“0”である第3のポート(CPort 2, TC 0)を介して、メモリ・システム2から書き込みデータを受信する。
【0076】
[ステップS1204]
ホスト・コントローラ120は、メモリ・システム2から受信した書き込みデータを、デバイス使用領域102に記憶する。
【0077】
[ステップS1205]
ホスト・コントローラ120は、書き込みデータがデバイス使用領域102に記憶されると、完了した旨を意味する通知コマンド(Acknowledge UM Buffer)を、優先度が“1”である第2のポート(CPort 1, TC 1)を介してメモリ・システム2に送信する。これにより、メモリ・システム2のホスト・デバイス1へのデータの書き込みが完了する。
【0078】
次に、
図11(b)に示すように、通信路3の優先度設定が2つ用意されている情報処理装置において、メモリ・システム2はデータ転送要求時、対応するデータ転送で用いる通信路3の優先度を常に“1”とする場合の動作を説明する。
【0079】
[ステップS1301]
デバイス・コントローラ主要部202は、ホスト・デバイス1にデータを送信する際の優先度を優先度“1”と決定する。そのため、デバイス・コントローラ主要部202は、データ転送コマンド(Access UM Buffer)におけるフラグPを“1(P==1)”に設定する。また、デバイス・コントローラ主要部202は、ホスト・デバイス1にデータを書き込むので、データ転送コマンド(Access UM Buffer)におけるフラグWを“1”に設定する。
【0080】
[ステップS1302]
デバイス・コントローラ主要部202は、「フラグW“1”、フラグP“1”、アドレス、及びサイズ(WRITE, P==1, Address, Size)」等の情報を含むメモリ・システム2から受信したデータをデバイス使用領域102に書き込むコマンド(Access UM Buffer)を、優先度が“1”である第2のポート(CPort 1, TC 1)を介してホスト・デバイス1に送信する。
【0081】
[ステップS1303]
ホスト・コントローラ120は、メモリ・システム2から、データを書き込むコマンド(Access UM Buffer)を受信すると、「フラグW“1”、フラグP“1”、アドレス、及びサイズ(WRITE, P==1, Address, Size)」等の情報に基づいて、メモリ・システム2から書き込みデータを受信する(UM DATA IN)。この際、メモリ・システム2から受信したデータを書き込むコマンド(Access UM Buffer)に含まれるフラグPに基づいて、優先度が“1”である第3のポート(CPort 1, TC 1)を介して、メモリ・システム2から書き込みデータを受信する。
【0082】
[ステップS1304]
ホスト・コントローラ120は、メモリ・システム2から受信した書き込みデータを、デバイス使用領域102に記憶する。
【0083】
[ステップS1305]
ホスト・コントローラ120は、書き込みデータがデバイス使用領域102に記憶されると、完了した旨を意味する通知コマンド(Acknowledge UM Buffer)を、優先度が“1”である第2のポート(CPort 1, TC 1)を介してメモリ・システム2に送信する。これにより、メモリ・システム2のホスト・デバイス1へのデータの書き込みが完了する。
【0084】
尚、上述した各動作に関して、メモリ・システム2はデータ転送要求時、対応するデータ転送で用いる通信路3の優先度を常に“0”とする場合または常に“1”とする場合について説明した。しかしながら、デバイス・コントローラ主要部202は、該優先度(0:優先度低い、1:優先度高い)を、所定の条件に基づいて適宜切り替えることができる。
【0085】
また、メモリ・システム2が上述した各動作(読み出し動作及び書き込み動作)は、ホスト・デバイス1からメモリ・システム2がライト・コマンド500を受信した場合に行っても良いし、メモリ・システム2が能動的に行っても良い。
【0086】
<実施形態に係るメモリ・システムの作用効果>
上述した実施形態では、情報処理装置は、ホスト装置1と、不揮発性半導体メモリ210を有する半導体記憶装置2と、ホスト装置1及び半導体記憶装置2を接続する通信路3と、を備える。ホスト装置1は、第1の記憶部100と、第1の記憶部100及び通信路3が接続され、第1の記憶部100を制御する第1の制御部120とを備えている。通信路3は、それぞれ優先度が割り当てられた複数のポートを備えている。半導体記憶装置2は、通信路3に接続され、第1の記憶部100へのデータの送受信動作の優先順に基づいて優先度を決定する第1のフラグ(フラグP)を含むデータ転送要求を、第1の制御部120に送信する第2の制御部200を備えている。また、第1の制御部120は、データ転送要求を受信すると、要求に含まれる第1のフラグに基づいて、優先度に対応するポートを介して第1の記憶部100と、第2の制御部200との間のデータの送受信を行う。また、優先度は、第1の優先度“0”と、第1の優先度“0”よりも優先度が高い第2の優先度“1”を含む。第2の制御部200は、データ転送要求に、後に続く動作が前記第1の記憶部100からデータを読み出す動作であることを示す第2のフラグ(フラグR)、または後に続く動作が第1の記憶部100へのデータを書き込む動作であることを示す第3のフラグ(フラグW)を含ませる。
【0087】
本実施形態に係るメモリ・システム2は、メモリ・システム2が、ホスト・デバイス1との間でデータの送受信を行う際に優先度を制御することができる。
【0088】
ところで、データ転送要求を行うコマンドでは優先度の制御を行う仕組みがなかった。このような場合、データの送受信を行う際に、データの種類、またはサイズ等に関わらず優先度を適宜選択することができない。
【0089】
上述でも説明したように、優先度とは、処理を行う優先順を規定するものである。具体的には、競合する複数のリクエストがホスト・デバイス1にたまった時、例えば、優先度の高い処理が、優先度の低い処理よりも先に実行される。
【0090】
上述したように、実施形態に係るメモリ・システム2は、ホスト・デバイス1へ、データ転送の優先度を、データ転送のリクエスト自体に、各種のフラグ情報を含ませることができる。これらのフラグの例としては、後に続く動作がホスト・デバイス1からデータを読み出すことを意味するフラグR、後に続く動作がホスト・デバイス1にデータを書き込むことを意味するフラグW、及び後に続くシーケンスの優先度を示すフラグP等が挙げられる。
【0091】
特にフラグPがリクエスト自体に含まれることによって、その後に続くデータイン/アウトの優先度を、ホスト・デバイス1へのリクエストの段階で決めることができる。メモリ・システム2が適宜優先度を制御できるので、メモリ・システム2全体のパフォーマンスを最適化することができる。
【0092】
<変形例等>
尚、上述した実施形態では、UFSメモリデバイスを用いて説明したが、これに限らず、例えば、クライアントサーバモデルに基づくメモリ・システムであれば、どのようなものでも良い。より具体的には、コマンドに上述したようなFlag情報(フラグR、フラグW、フラグP等)を付加することができるものであれば、適応可能である。
【0093】
また、上述した実施形態では、UFSメモリデバイスを用いて説明したが、同様の動作をする半導体記憶装置であれば、他のメモリカード、メモリデバイスまたは内部メモリ等にも適用可能であり、上述した実施形態及び第2の実施形態と同様の作用効果を奏することができる。また、上述したフラッシュメモリ210はNAND型フラッシュメモリに限らず、その他の半導体メモリであっても良い。
【0094】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。