(57)【要約】【課題】高品質な情報処理装置を提供する。【解決手段】情報処理装置は、ホスト装置１と、不揮発性半導体メモリ２１０を有する半導体記憶装置２と、ホスト装置１及び半導体記憶装置２を接続する通信路３と、を備える装置であって、ホスト装置１は、第１の記憶部１００と、第１の記憶部１００及び通信路３が接続され、第１の記憶部を制御する第１の制御部１２０とを備え、通信路３は、それぞれ優先度が割り当てられた複数のポートを備え、半導体記憶装置２は、通信路３に接続され、第１の記憶部１００と送受信を行うデータの種類の優先度に基づいて優先度を決定する第１のフラグを含む第１のコマンドを送信する第２の制御部２００を備え、第１の制御部１２０は、第１のコマンドを受信すると第１のフラグに基づいて、優先度に対応するポートを介して第１の記憶部１００と、第２の制御部２００との間のデータの送受信を行う。【選択図】      図９
2014052908.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置と、不揮発性半導体メモリを有する半導体記憶装置と、前記ホスト装置及び前記半導体記憶装置を接続する通信路と、を備える情報処理装置であって、
前記ホスト装置は、
第１の記憶部と、
第１の記憶部及び前記通信路が接続され、前記第１の記憶部を制御する第１の制御部と
を備え、
前記通信路は、
それぞれ優先度が割り当てられた複数のポートを備え、
前記半導体記憶装置は、
前記通信路に接続され、前記第１の記憶部と送受信を行うデータの種類の優先度に基づいて前記優先度を決定する第１のフラグを含む第１のコマンドを、前記第１の制御部に送信する第２の制御部
を備え、
前記第１の制御部は、前記第１のコマンドを受信すると、前記第１のコマンドに含まれる前記第１のフラグに基づいて、前記優先度に対応する前記ポートを介して前記第１の記憶部と、前記第２の制御部との間のデータの送受信を行う
ことを特徴とする情報処理装置。
【請求項２】
前記第１の制御部は、第２のコマンドを生成し、
第２の制御部は、前記第１の制御部から前記第２のコマンドを受信すると、後に続く、前記第１のコマンドを、前記第１の制御部に送信する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記優先度は、第１の優先度と、前記第１の優先度よりも優先度が高い第２の優先度を含むことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記第２の制御部は、前記第１のコマンドに、後に続く動作が前記第１の記憶部からデータを読み出す動作であることを示す第２のフラグ、または後に続く動作が前記第１の記憶部へのデータを書き込む動作であることを示す第３のフラグを含ませることを特徴とする請求項１乃至３の何れか一項に記載の情報処理装置。
【請求項５】
ホスト装置と、不揮発性半導体メモリを有する半導体記憶装置と、前記ホスト装置及び前記半導体記憶装置を接続する通信路と、を備える情報処理装置であって、
前記ホスト装置は、
第１の記憶部と、
第１の記憶部及び前記通信路が接続され、前記第１の記憶部を制御する第１の制御部と
を備え、
前記通信路は、
それぞれ優先度が割り当てられた複数のポートを備え、
前記半導体記憶装置は、
前記通信路に接続され、前記第１の記憶部と送受信を行うデータのサイズに基づいて前記優先度を決定する第１のフラグを含む第１のコマンドを、前記第１の制御部に送信する第２の制御部
を備え、
前記第１の制御部は、前記第１のコマンドを受信すると、前記第１のコマンドに含まれる前記第１のフラグに基づいて、前記優先度に対応する前記ポートを介して前記第１の記憶部と、前記第２の制御部との間のデータの送受信を行う
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置に関する。
【背景技術】
【０００２】
複数の演算プロセッサが集積されるＧＰＵ（Graphical Processing Unit）等で、複数の演算プロセッサ間で一つのメモリを共有するＵＭＡ（Unified Memory Architecture）という技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０―２６９１６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
高品質な情報処理装置を提供する。
【課題を解決するための手段】
【０００５】
実施形態の情報処理装置は、ホスト装置と、不揮発性半導体メモリを有する半導体記憶装置と、前記ホスト装置及び前記半導体記憶装置を接続する通信路と、を備える情報処理装置であって、前記ホスト装置は、第１の記憶部と、第１の記憶部及び前記通信路が接続され、前記第１の記憶部を制御する第１の制御部とを備え、前記通信路は、それぞれ優先度が割り当てられた複数のポートを備え、前記半導体記憶装置は、前記通信路に接続され、前記第１の記憶部と送受信を行うデータの種類の優先度に基づいて前記優先度を決定する第１のフラグを含む第１のコマンドを、前記第１の制御部に送信する第２の制御部を備え、前記第１の制御部は、前記第１のコマンドを受信すると、前記第１のコマンドに含まれる前記第１のフラグに基づいて、前記優先度に対応する前記ポートを介して前記第１の記憶部と、前記第２の制御部との間のデータの送受信を行う。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態に係る情報処理装置の構成例を示す図である。
【図２】図２は、第１の実施形態に係るデバイス使用領域のメモリ構造を示す図である。
【図３】図３は、第１の実施形態に係るＬ２Ｐキャッシュ・タグ領域のメモリ構造を説明する図である。
【図４】図４は、第１の実施形態に係るＬ２Ｐキャッシュ領域のメモリ構造を説明する図である。
【図５】図５は、第１の実施形態に係るライト・キャッシュ・タグ領域のメモリ構造を説明する図である。
【図６】図６は、第１の実施形態に係るライト・キャッシュ領域のメモリ構造を説明する図である。
【図７】図７は、第１の実施形態に係るライト・コマンドのデータ構造例を説明する図である。
【図８】図８は、第１の実施形態に係るデータ転送コマンドのフォーマットの一例を示した図である。
【図９】図９は、第１の実施形態に係るデータ転送コマンドに含まれるフラグ（Flags）の一例を示したものである。
【図１０】図１０（ａ）は、第３のポートを介してメモリ・システムがデータを受信する動作を示した図であり、図１０（ｂ）は、第２のポートを介してメモリ・システムがデータを受信する動作を示した図である。
【図１１】図１１（ａ）は、第３のポートを介してメモリ・システムがデータを送信する動作を示した図であり、図１１（ｂ）は、第２のポートを介してメモリ・システムがデータを送信する動作を示した図である。
【図１２】図１２は、デバイス・コントローラ主要部における動作を説明するフローチャートである。
【図１３】図１３は、デバイス・コントローラ主要部における動作を説明するフローチャートである。
【図１４】図１４は、デバイス・コントローラ主要部がＬ２Ｐキャッシュ・タグ領域を参照する処理を説明するフローチャートである。
【図１５】図１５は、デバイス・コントローラ主要部が物理アドレスをＬ２Ｐキャッシュ領域に書き込む処理を説明するフローチャートである。
【図１６】図１６は、デバイス・コントローラ主要部がＬ２Ｐキャッシュ領域を参照する処理を説明するフローチャートである。
【図１７】図１７は、デバイス・コントローラ主要部がライト・キャッシュ・タグ領域のエントリを読み出す処理を説明するフローチャートである。
【図１８】図１８は、デバイス・コントローラ主要部がホスト・デバイスからライト・データを取得する処理を説明するフローチャートである。
【図１９】図１９は、デバイス・コントローラ主要部がＤＢビットの値を操作する処理を説明するフローチャートである。
【図２０】図２０は、デバイス・コントローラ主要部がＶＬビット値を操作する処理を説明するフローチャートである。
【図２１】図２１は、デバイス・コントローラ主要部が優先度を決定する処理を説明するフローチャートである。
【発明を実施するための形態】
【０００７】
以下、実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付す。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。実施形態の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【０００８】
（第１の実施形態）
図１に、第１の実施形態に係る情報処理装置の基本的な構成を模式的に示している。第１の実施形態に係る情報処理装置は、ホスト・デバイス（ホスト装置、外部装置）１と、ホスト・デバイス１の記憶装置として機能するメモリ・システム２とを備える。ホスト・デバイス１とメモリ・システム２との間は、通信路３で接続されている。メモリ・システム２には、ＵＦＳ（Universal Flash Storage）規格に準拠した組み込み用途のフラッシュメモリや、ＳＳＤ（Solid State Drive）等を適用することができる。情報処理装置は、例えば、パーソナルコンピュータ、携帯電話、撮像装置等である。通信路３の通信規格としては、例えばＭＩＰＩ（Mobile Industry Processor Interface）、ＵｎｉＰｒｏが採用されている。
【０００９】
＜メモリ・システムの概要＞
メモリ・システム２は、不揮発性半導体メモリとしてのＮＡＮＤフラッシュメモリ２１０と、ホスト・デバイス１との間のデータ転送を行うデバイス・コントローラ２００とを備えている。
【００１０】
ＮＡＮＤフラッシュメモリ２１０は、メモリセルアレイを有する１以上のメモリチップによって構成される。メモリセルアレイは、複数のメモリセルがマトリクス状に配列して構成される。更に、各ブロックは、複数のページより構成されている。各ページは、データの書き込み及び読み出しの単位である。
【００１１】
また、ＮＡＮＤメモリ２１０は、Ｌ２Ｐテーブル２１１及びホスト・デバイス１から送信されるユーザ・データ２１２を記憶する。ユーザ・データ２１２は、例えばホスト・デバイス１が実行環境を提供するオペレーティングシステムプログラム（ＯＳ）や、ホスト・デバイス１がＯＳ上で実行するユーザ・プログラムや、ＯＳまたはユーザ・プログラムが入出力するデータ等を含む。
【００１２】
Ｌ２Ｐテーブル２１１は、メモリ・システム２がホスト・デバイス１に対する外部記憶装置として機能するために必要となる管理情報の一つであって、ホスト・デバイス１がメモリ・システム２にアクセスする際に使用する論理ブロックアドレス（ＬＢＡ：Logical block address）と、ＮＡＮＤメモリ２１０内の物理アドレス（ブロックアドレス＋ページアドレス＋ページ内記憶位置）とを、対応付けるアドレス変換情報である。後述するホスト・デバイス１内のＬ２Ｐキャッシュ領域３００には、このＬ２Ｐテーブル２１１の一部がキャッシュされる。Ｌ２Ｐキャッシュ領域３００にキャッシュされる内容と区別するために、以下では、ＮＡＮＤメモリ２１０に記憶されているＬ２Ｐテーブル２１１をＬ２Ｐ本体２１１と呼ぶ。
【００１３】
デバイス・コントローラ２００は、通信路３の接続インタフェースであるホスト接続アダプタ２０１と、ＮＡＮＤメモリ２１０との間の接続インタフェースであるＮＡＮＤ接続アダプタ２０４と、デバイス・コントローラ２００の制御を実行するデバイス・コントローラ主要部２０２と、ＲＡＭ２０３とを備えている。
【００１４】
ＲＡＭ２０３は、ＮＡＮＤメモリ２１０にライトするデータあるいはＮＡＮＤメモリ２１０からリードされたデータを記憶するためのバッファとして用いられる。また、ＲＡＭ２０３は、ホスト・デバイス１から入力されるライト要求、リード要求などに関わるコマンドをキューイングするコマンドキューとして使用される。例えばＲＡＭ２０３は、小規模なＳＲＡＭまたはＤＲＡＭ等で構成されることができる。また、レジスタ等でＲＡＭ２０３の機能を代用するようにしても良い。
【００１５】
デバイス・コントローラ主要部２０２は、ホスト接続アダプタ２０１を介してホスト・デバイス１とＲＡＭ２０３との間のデータ転送を制御したり、ＮＡＮＤ接続アダプタ２０４を介してＲＡＭ２０３とＮＡＮＤメモリ２１０との間のデータ転送を制御したりする。特に、デバイス・コントローラ主要部２０２は、ホスト・デバイス１との間の通信路３においてバス・マスタとして機能して第１ポート２３０を用いてデータ転送を行う他、別の二つのバス・マスタ２０５、２０６を備えている。バス・マスタ２０５は、第２ポート２３１を用いてホスト・デバイス１との間のデータ転送をおこなうことができ、バス・マスタ２０６は、第３ポート２３２を用いてホスト・デバイス１との間のデータ転送を行うことができる。ポート２３０〜２３２の役割については後述する。
【００１６】
なお、デバイス・コントローラ主要部２０２は、例えば、演算装置や記憶装置を備えたマイクロコンピュータユニットにより構成される。当該演算装置が前記記憶装置に予め格納されたファームウェアを実行することによって、デバイス・コントローラ主要部２０２としての機能が実現される。なお、デバイス・コントローラ主要部２０２から記憶装置を省略して、ファームウェアをＮＡＮＤメモリ２１０に格納しておくようにしても良い。また、デバイス・コントローラ主要部２０２はＡＳＩＣを用いて構成されることが可能である。
【００１７】
また、第１の実施形態に係るメモリ・システム２は、ＵＦＳ（Universal Flash Storage）規格に準拠した組み込み用途のフラッシュメモリを想定している。そのため、以下に説明するコマンド等は、ＵＦＳの規格に則った物である。
【００１８】
＜ホスト・デバイスの概要＞
ホスト・デバイス１は、ＯＳやユーザ・プログラムを実行するＣＰＵ１１０と、メイン・メモリ１００と、ホスト・コントローラ１２０とを備えている。メイン・メモリ１００、ＣＰＵ１１０及びホスト・コントローラ１２０は、バス１４０で互いに接続されている。
【００１９】
メイン・メモリ１００は、例えばＤＲＡＭで構成される。メイン・メモリ１００は、ホスト使用領域１０１とデバイス使用領域１０２とを有する。ホスト使用領域１０１は、ホスト・デバイス１がＯＳやユーザ・プログラムを実行する際のプログラム展開領域や当該プログラム展開領域に展開されたプログラムを実行する際のワーク・エリアとして使用される。デバイス使用領域１０２は、メモリ・システム２の管理情報やリードライトのためのキャッシュ領域として使用される。ここでは、メモリ・システム２にキャッシュされる管理情報の一例としてＬ２Ｐテーブル２１１を取り上げる。また、デバイス使用領域１０２にライト・データがキャッシュされるものとする。
【００２０】
＜ポートの概要＞
次に、第１の実施形態に係るホスト・デバイス１及びメモリ・システム２の各ポートについて説明する。第１の実施形態に係るホスト・デバイス１及びメモリ・システム２は、物理的には一つの線（通信路３）で接続されているが、下記に示すポート（CPortとも称す）と呼ばれる複数のアクセスポイントによって接続されている。
【００２１】
ホスト・コントローラ１２０は、バス１４０の接続インタフェースであるバスアダプタ１２１と、通信路３の接続インタフェースであるデバイス接続アダプタ１２６と、バスアダプタ１２１を介してメイン・メモリ１００やＣＰＵ１１０との間でデータやコマンドの転送を行ったり、デバイス接続アダプタ１２６を介してメモリ・システム２との間でデータ（コマンドを含む）の転送を行ったりするホスト・コントローラ主要部１２２とを備えている。ホスト・コントローラ主要部１２２は、デバイス接続アダプタ１２６と第１ポート１３０で接続されており、当該第１ポート１３０を介してメモリ・システム２との間でデータの転送を行うことができる。
【００２２】
また、ホスト・コントローラ１２０は、ホスト使用領域１０１とデバイス使用領域１０２との間でＤＭＡ転送を行うメイン・メモリＤＭＡ１２３と、メモリ・システム２がデバイス使用領域１０２にアクセスするために送るコマンドを捕捉したり、ホスト・コントローラ主要部１２２がデバイス使用領域１０２にかかるステータス情報をメモリ・システム２に送信したりする制御ＤＭＡ１２４と、デバイス使用領域１０２とメモリ・システム２との間でＤＭＡ転送を行うデータＤＭＡ１２５とを備えている。制御ＤＭＡ１２４は、デバイス接続アダプタ１２６と、第２ポート１３１で接続されており、当該第２ポート１３１を介してメモリ・システム２との間でコマンドやステータス情報の送受信を行うことができる。また、データＤＭＡ１２５は、デバイス接続アダプタ１２６と第３ポート１３２で接続されており、当該第３ポート１３２を介してメモリ・システム２との間でデータの送受信を行うことができる。
【００２３】
尚、デバイス接続アダプタ１２６及びホスト接続アダプタ２０１の機能により、第１ポート１３０は第１ポート２３０と、第２ポート１３１は第２ポート２３１と、第３ポート１３２は第３ポート２３２とそれぞれ対応付けられている。具体的には、デバイス接続アダプタ１２６は、第１ポート１３０を介してメモリ・システム２に送られてきた内容を第１ポート２３０を介してデバイス・コントローラ主要部２０２に送り、第２ポート１３１を介してメモリ・システム２に送られてきた内容を第２ポート２３１を介してデバイス・コントローラ主要部２０２に送り、第３ポート１３２を介してメモリ・システム２に送られてきた内容を第３ポート２３２を介してデバイス・コントローラ主要部２０２に送る。
【００２４】
また、デバイス接続アダプタ１２６は、第１ポート２３０を介してホスト・デバイス１に送られてきた内容を第１ポート１３０を介してホスト・コントローラ主要部１２２に送り、第２ポート２３１を介してホスト・デバイス１に送られてきた内容を第２ポート１３１を介して制御ＤＭＡ１２４に送り、第３ポート２３２を介してホスト・デバイス１に送られてきた内容を第３ポート１３２を介してデータＤＭＡ１２５に送る。制御ＤＭＡ１２４、データＤＭＡ１２５に送られてきた内容は、例えばバスアダプタ１２１を介してホスト・コントローラ主要部１２２に送られる。
【００２５】
尚、ポート１３０〜１３２のそれぞれは、メモリ・システム２との間の通信に使用される入力バッファをそれぞれ独立に備え得る。ホスト・コントローラ主要部１２２、制御ＤＭＡ１２４、データＤＭＡ１２５がそれぞれ別々の入出力バッファを用いてメモリ・システム２に接続されていることにより、ホスト・コントローラ１２０は、ホスト・コントローラ主要部１２２を用いたメモリ・システム２との通信と、制御ＤＭＡ１２４を用いたメモリ・システム２との通信と、データＤＭＡ１２５を用いたメモリ・システム２との通信とをそれぞれ独立して実行することができる。また、入出力バッファの入れ替えの必要なくこれらの通信の切り替えを行うことができるので、通信の切り替えを高速実行することができる。メモリ・システム２が備えるポート２３０〜２３２についても同様の事が言える。
【００２６】
以上のように、第１の実施形態に係る情報処理装置は、第１のポート（CPort 0とも称す）１３０及び２３０と、第２のポート（CPort 1とも称す）１３１及び２３１と、第３のポート（CPort 2とも称す）１３２及び２３２との３種類のポートを備えている。
【００２７】
また、各ポートには、それぞれ優先度（トラフィック・クラス：ＴＣ等とも称す）が予め定義されている。具体的には、第１のポート１３０及び２３０には優先度“０（低い）”が設定され、第２のポート１３１及び２３１には優先度“１（高い）”が設定され、第１のポート１３２及び２３２には優先度“０（低い）”が設定されている。
【００２８】
第１のポート１３０及び２３０は基本的にホスト・デバイス１からメモリ・システム２への要求時のみに使われる。第２のポート１３１及び２３１と、第３のポート１３２及び２３２は、後述するようなメモリ・システム２の要求によって適宜選択される。
【００２９】
尚、第１のポート１３０及び２３０を区別しない場合には、簡単の為、単に第１のポートと称す。また、第２のポート１３１及び２３１を区別しない場合には、簡単の為、単に第２のポートと称す。更に第３のポート１３２及び２３２を区別しない場合には、簡単の為、単に第３のポートと称す。
【００３０】
＜優先度（トラフィック・クラス：ＴＣ）について＞
次に、優先度（トラフィック・クラス：ＴＣ）について説明する。優先度（トラフィック・クラス）とは、ホスト・デバイス１からメモリ・システム２にデータ等を返すときの優先順である。具体的には、優先度とはホスト・デバイス１及びメモリ・システム２間におけるデータ転送等が競合した場合に、データ転送等の順序を定める値である。第１の実施形態では、一例として、優先度“１”（TC 1 とも表記する）、及び優先度“１”よりも優先度の低い優先度“０”（TC 0 とも表記する）の２種類の優先度が設定されている。
【００３１】
この優先度は、上述した第１〜第３のポート毎に予め設定されている。第１の実施形態では、第１のポート（CPort 0）は優先度“０”（TC 0）に設定され、第２のポート（CPort 1）は優先度“１（高い）”（TC 1）に設定され、第３のポート（CPort 2）は優先度“０（低い）”（TC 0）に設定されている。この優先度の選択方法については、後述で説明する。
【００３２】
＜デバイス使用領域の概要＞
図２は、デバイス使用領域１０２のメモリ構造を説明する図である。図示するように、デバイス使用領域１０２には、Ｌ２Ｐ本体２１１の一部がキャッシュされるＬ２Ｐキャッシュ領域３００、Ｌ２Ｐキャッシュ領域３００のヒット／ミス判定に使用されるタグ情報が格納されるＬ２Ｐキャッシュ・タグ領域３１０、ライト・データがバッファリングされるキャッシュ構造のメモリ領域であるライト・キャッシュ領域４００、及びライト・キャッシュ領域４００のヒット／ミス判定に使用されるタグ情報が格納されるライト・キャッシュ・タグ領域４１０を備えている。
【００３３】
＜Ｌ２Ｐキャッシュ・タグ領域のメモリ構造＞
図３は、Ｌ２Ｐキャッシュ・タグ領域３１０のメモリ構造を説明する図であり、図４は、Ｌ２Ｐキャッシュ領域３００のメモリ構造を説明する図である。ここでは、一例として、ＬＢＡは２６ビットのデータ長を有し、Ｌ２Ｐキャッシュ領域３００はＬＢＡの下位側の２２ビットの値を用いて参照されるものとしている。ＬＢＡの上位側の４ビットの値をＴと表記し、下位側の２２ビットの値をＬと表記して説明する。なお、ＬＢＡは、ＮＡＮＤメモリ２１０を構成するページ（ここでは４Ｋバイトとする）毎に割り当てられているものとしている。
【００３４】
Ｌ２Ｐキャッシュ領域３００を構成する個々のキャッシュ・ラインには、図４に示す様に、一つのＬＢＡに対する物理アドレス（Ｐｈｙｓ．  Ａｄｄｒ．）が格納されている。Ｌ２Ｐキャッシュ領域３００は、２を２２乗して得られる数のキャッシュ・ラインで構成される。個々のキャッシュ・ラインは、２６ビットの物理アドレスが格納されるために必要十分なサイズであるバイト数である４バイトの容量を有する。従って、Ｌ２Ｐキャッシュ領域３００は、合計で、２の２２乗に４バイトを掛けたサイズ、すなわち１６Ｍバイトのサイズを有することになる。また、Ｌ２Ｐキャッシュ領域３００は、Ｌの値の順番にＬＢＡに対応する物理アドレスが格納されるように構成されている。すなわち、Ｌ２Ｐキャッシュ領域３００を構成する個別のキャッシュ・ラインは、４＊ＬにＬ２Ｐキャッシュ領域３００のページアドレス（Ｌ２Ｐ  Ｂａｓｅ  Ａｄｄｒ．）を加算したアドレスを参照（Refer）されることにより呼び出される。なお、Ｌ２Ｐキャッシュ領域３００を構成する４バイトのキャッシュ・ラインのうちの２６ビットの物理アドレスが格納される領域をのぞいた余剰の領域を「Ｐａｄ」と表記している。以降のテーブルにおいても、余剰の部分を「Ｐａｄ」と表記する。
【００３５】
また、図３に示すように、Ｌ２Ｐキャッシュ・タグ領域３１０には、Ｌ２Ｐキャッシュ領域３００に格納されているキャッシュ・ライン毎にタグ情報としての値ＴがＬの値の順に登録されて構成される。個々のエントリは、タグ情報が格納されるフィールド３１１と有効なキャッシュ・ラインであるか否かを示すＶＬ（Valid L2p）ビットが格納されるフィールド３１２とを備えている。ここで、Ｌ２Ｐキャッシュ・タグ領域３１０は、Ｌ２Ｐキャッシュ・タグ領域３１０にタグ情報として登録されているＴが、Ｌ２Ｐキャッシュ領域３００の対応するキャッシュ・ライン（即ちＬを用いて参照されるキャッシュ・ライン）に格納されている物理アドレスに対応するＬＢＡの上位桁Ｔと一致するように構成されている。即ち、所望のＬＢＡの上位桁Ｔに対応する物理アドレスがＬ２Ｐキャッシュ領域３００にキャッシュされているか否かは、当該所望のＬＢＡを構成するＬの値にＬ２Ｐキャッシュ・タグ領域３１０のベースアドレス（L2P Tag Base Addr.）を加算したアドレスが参照（Refer）され、当該参照位置に格納されているタグ情報が前記所望のＬＢＡを構成するＴの値と一致するか否かにより判定される。両者が一致する場合には、所望のＬＢＡに対応する物理アドレスがキャッシュされていると判定され、両者が一致しない場合には、所望のＬＢＡに対応する物理アドレスがキャッシュされていないと判定される。なお、Ｔは、４ビットの値であり、ＶＬビットは１ビットの容量を要するため、個々のエントリは１バイトの容量を有する。従って、Ｌ２Ｐキャッシュ・タグ領域３１０は、２の２２乗に１バイトを掛けたサイズ、即ち４Ｍバイトのサイズを有することになる。
【００３６】
図５は、ライト・キャッシュ・タグ領域４１０のメモリ構造を説明する図であり、図６は、ライト・キャッシュ領域４００のメモリ構造を示す図である。ここで、ライト・キャッシュ領域４００は、ＬＢＡの下位側の１３ビットの値を用いて参照されるものとしている。ＬＢＡの上位側の１３ビットの値をＴ′と表記し、下位側の１３ビットの値をＬ′と表記して説明する。
【００３７】
ライト・キャッシュ領域４００を構成する個々のキャッシュ・ラインには、図６に示すように、ページサイズのライト・データが格納されている。
【００３８】
ライト・キャッシュ領域４００は、２を１３乗して得られる数のキャッシュ・ラインで構成される。ここのキャッシュ・ラインは、ページサイズ（ここでは４Ｋバイトとしている）のライト・データがキャッシュされるので、ライト・キャッシュ領域４００は、合計で２の１３乗に４Ｋを掛けたサイズ、即ち３２Ｍバイトのサイズを有することになる。
【００３９】
また、ライト・キャッシュ領域４００には、Ｌ′の値の順番に、対応するライト・データが格納されている。即ち、ライト・キャッシュ領域４００を構成する個別のキャッシュ・ラインは、Ｌ′＊８Ｋにライト・キャッシュ領域４００のページアドレス（WC Base Addr.）を加算したアドレスを参照されることにより読み出される。
【００４０】
また、図５に示すように、ライト・キャッシュ・タグ領域４１０には、ライト・キャッシュ領域４００に格納されているキャッシュ・ライン毎にタグ情報としてのＴ′がＬ′の順に登録されて構成される。個々のエントリは、タグ情報が格納されるフィールド４１１と有効なキャッシュ・ラインであるか否かを示すＶＢ（Valid Buffer）ビットが格納されるフィールド４１２と、キャッシュされているライト・データがダーティであるかクリーンであるかを示すＤＢ（Dirty Buffer）ビットが格納されるフィールド４１３を有している。
【００４１】
ライト・キャッシュ・タグ領域４１０は、ライト・キャッシュ・タグ領域４１０にタグ情報として登録されているＴ′が、ライト・キャッシュ領域４００の対応するキャッシュ・ライン（即ちＬ′を用いて参照されるキャッシュ・ライン）に格納されているライト・データの格納先ページに割り当てられたＬＢＡの上位桁Ｔ′と一致するように構成されている。即ち、所望のＬＢＡに対応するライト・データが、ライト・キャッシュ領域４００にキャッシュされているか否かは、当該所望のＬＢＡの上位桁Ｔを構成するＬ′の値にライト・キャッシュ・タグ領域４１０のベースアドレス（WC Tag Base Addr.）を加算したアドレスが参照され、当該参照位置に格納されているタグ情報が前記所望のＬＢＡに対応を構成するＴ′の値と一致するか否かによって判定されている。
【００４２】
なお、キャッシュ・ラインがダーティであるとは、当該キャッシュ・ラインに格納されているライト・データとＮＡＮＤメモリ２１０上の対応するアドレスに格納されているデータとが一致しない状態を言い、クリーンであるとは、両者が一致する状態を言う。ダーティなキャッシュ・ラインがＮＡＮＤメモリ２１０にライトバックされることによって、当該キャッシュ・ラインがクリーンになる。なお、ライト・キャッシュ・タグ領域４１０の個々のタグ情報Ｔ′は１３ビットのデータ長を有し、ＤＢビット及びＶＢビットはそれぞれ１ビットのサイズを要するので、個々のエントリは２バイトの容量を有する。従って、ライト・キャッシュ・タグ領域４１０は、２の１３乗に２バイトを掛けたサイズ、すなわち１６Ｋバイトのサイズを有することになる。
【００４３】
ＣＰＵ１１０は、ＯＳやユーザ・プログラムを実行して、これらのプログラムからの要請に基づいてホスト使用領域１０１内のデータをメモリ・システム２に書き込むライト・コマンドを生成する。生成されたライト・コマンドはホスト・コントローラ１２０に送られる。
【００４４】
＜ライト・コマンドのデータ構造の概要＞
図７は、ライト・コマンドのデータ構造例を説明する図である。図示するように、ライト・コマンド５００は、当該コマンド５００がデータの書き込みを指令するものであることを示すライト指令５０１と、書き込み対象のデータが格納されているホスト使用領域１０１内の番地であるソース・アドレス５０２と、ＮＡＮＤメモリ２１０内の、ライト・データの書き込み先の番地を示す第１のデスティネーション・アドレス５０３と、ライト・データのデータ長５０４とを含んで構成される。第１のデスティネーション・アドレス５０３はＬＢＡで表記される。
【００４５】
ホスト・コントローラ主要部１２２は、ＣＰＵ１１０から送られてきたライト・コマンド５００をバスアダプタ１２１を介して受信して、受信したライト・コマンド５００に含まれているソース・アドレス５０２及び第１のデスティネーション・アドレス５０３を読み出す。そして、ホスト・コントローラ主要部１２２は、ソース・アドレス５０２に格納されたデータと第１のデスティネーション・アドレス５０３とをデバイス接続アダプタ１２６を介してメモリ・システム２に転送する。
【００４６】
尚、ホスト・コントローラ主要部１２２は、ソース・アドレス５０２に格納されたデータを読み込む際、メイン・メモリＤＭＡ１２３を利用しても良い。その際、ホスト・コントローラ主要部１２２は、ソース・アドレス５０２とデータ長５０４とデスティネーション・アドレスとしてホスト・コントローラ主要部１２０内のバッファ・アドレスにセットし、メイン・メモリＤＭＡ１２３を起動する。
【００４７】
また、ホスト・コントローラ主要部１２２は、ライト・コマンド５００の他にもＣＰＵ１１０からの種々のコマンドを受信することができる。ここでは、ホスト・コントローラ主要部１２２は、受信したコマンドをコマンド・キューにエンキューして、コマンド・キューの先頭から順に処理対象のコマンドを取り出す。なお、このコマンド・キューのデータ構造が格納される領域は、メイン・メモリ１００上に確保されるようにしてもよいし、ホスト・コントローラ主要部１２２の内部または近傍に小規模なメモリやレジスタが配置されて構成されるようにしてもよい。
【００４８】
また、ホスト・コントローラ主要部１２２とメイン・メモリＤＭＡ１２３、制御ＤＭＡ１２４、データＤＭＡ１２５との間の通信経路は特定の経路に限定されない。例えば、バスアダプタ１２１を通信経路とするようにしてもよいし、専用線を設けて当該専用線を通信経路とするようにしても良い。
【００４９】
＜コマンドのフォーマットについて＞
次に、図８を用いて第１の実施形態に係るデータ転送コマンド（リクエストとも称す）のフォーマットについて説明する。図８は、第１の実施形態に係るデータ転送コマンドのフォーマットの一例を示した図である。
【００５０】
図８に示すように、データ転送コマンド（Access UM Buffer）はホスト・デバイス１にデータ転送要求を行う際に種々の情報を含めることができる。第１の実施形態に係るデータ転送コマンド（Access UM Buffer）は、特に“フラグ（Flags）”情報（図中破線部内参照）を含むことができる。
【００５１】
＜フラグについて＞
続いて、図９を用いて第１の実施形態に係るデータ転送コマンド（Access UM Buffer）に含まれるフラグ（Flags）について説明する。図９は、第１の実施形態に係るデータ転送コマンド（Access UM Buffer）に含まれるフラグ（Flags）の一例を示したものである。
【００５２】
図９に示すように、第１の実施形態に係るデータ転送コマンド（Access UM Buffer）に含まれるフラグ（Flags）にはフラグＲ（Flags.R）、フラグＷ（Flags.W）、フラグＰ（Flags.P）の３種類のフラグが存在する。メモリ・システム２は、ホスト・デバイス１からコマンドを受信した際に、データ転送コマンド（Access UM Buffer）のこれらのフラグを設定する。
【００５３】
［フラグＲ（Flags.R）］
フラグＲとは、後に続く動作がホスト・デバイス１のメイン・メモリ１００内からメモリ・システム２へデータを読み出す動作であることを示すフラグである。
【００５４】
具体的には、ホスト・デバイス１からメモリ・システム２へのデータ読み出動作の場合にフラグＲに“１”がセットされる。
【００５５】
［フラグＷ（Flags.W）］
フラグＷとは、後に続く動作がメモリ・システム２からホスト・デバイス１のメイン・メモリ１００内へデータを書き込む動作であることを示すフラグである。
【００５６】
メモリ・システム２からホスト・デバイス１へのデータ書き込む動作の場合にフラグＷに“１”がセットされる。
【００５７】
［フラグＰ（Flags.P）］
フラグＰとは、後に続くメモリ・システム２からホスト・デバイス１へのデータ入力シーケンス（UM DATA IN）または、ホスト・デバイス１からメモリ・システム２へのデータ出力シーケンス（UM DATA OUT）の優先度を決定するフラグである。この選択された優先度に対応するポートを介して、各シーケンスが実行される。
【００５８】
具体的には、メモリ・システム２からホスト・デバイス１へのデータ入力シーケンス（UM DATA IN）または、ホスト・デバイス１からメモリ・システム２へのデータ出力シーケンス（UM DATA OUT）の優先度を、“高い”に設定する場合にフラグＰに“１”がセットされる。ホスト・デバイス１は、フラグＰが“１”に設定されていることを認識すると、優先度“１（高い）”に設定されている第２のポートを介してデータの送受信を行う。
【００５９】
メモリ・システム２からホスト・デバイス１へのデータ入力シーケンス（UM DATA IN）または、ホスト・デバイス１からメモリ・システム２へのデータ出力シーケンス（UM DATA OUT）の優先度を、“低い”に設定する場合にフラグＰに“０”がセットされる。これにより、ホスト・デバイス１は、フラグＰが“０”に設定されていることを認識すると、優先度が“０（低い）”に設定されている第３のポートを介してデータの送受信を行う。
【００６０】
＜読み出し動作＞
次に、図１０を用いて、メモリ・システム２がホスト・デバイス１からデータを読み出す場合における情報処理装置の動作例を説明する。図１０（ａ）は、第３のポートを介してメモリ・システム２がデータを受信する動作を示した図であり、図１０（ｂ）は、第２のポートを介してメモリ・システム２がデータを受信する動作を示した図である。
【００６１】
まず図１０（ａ）に示すように、通信路３の優先度設定が２つ（０：優先度低い、１：優先度高い）用意されている情報処理装置において、メモリ・システム２はデータ転送要求時、対応するデータ転送で用いる通信路３の優先度を常に“０”とする場合の動作を説明する。
【００６２】
［ステップＳ１００１］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１からデータを受信する際の優先度を優先度“０”と決定する。そのため、デバイス・コントローラ主要部２０２は、データ転送コマンド（Access UM Buffer）におけるフラグＰを“０”に設定する。また、デバイス・コントローラ主要部２０２は、ホスト・デバイス１からデータを読み出すので、データ転送コマンド（Access UM Buffer）におけるフラグＲを“１”に設定する。
【００６３】
［ステップＳ１００２］
デバイス・コントローラ主要部２０２は、「フラグＲ“１”、フラグＰ“０”、アドレス、及びサイズ（READ, P==0, Address, Size）」等の情報を含むデバイス使用領域１０２のデータを読み出すコマンド（Access UM Buffer）を、優先度が“１（高い）”である第２のポート（CPort 1, TC 1）を介してホスト・デバイス１に送信する。
【００６４】
［ステップＳ１００３］
ホスト・コントローラ１２０は、メモリ・システム２から、データを読み出すコマンド（Access UM Buffer）を受信すると、「フラグＲ“１”、フラグＰ“０”、アドレス、及びサイズ（READ, P==0, Address, Size）」等の情報に基づいて、デバイス使用領域１０２から、データをフェッチする。
【００６５】
［ステップＳ１００４］
そして、ホスト・コントローラ１２０は、メモリ・システム２から受信したデータを読み出すコマンド（Access UM Buffer）に含まれるフラグＰに基づいて、優先度が“０”である第３のポート（CPort 2, TC 0）を介して、メモリ・システム２に読み出しデータを転送する（UM DATA OUT）。
【００６６】
次に図１０（ｂ）に示すように、通信路３の優先度設定が２つ（０：優先度低い、１：優先度高い）用意されている情報処理装置において、メモリ・システム２はデータ転送要求時、対応するデータ転送で用いる通信路３の優先度を常に“１”とする場合の動作を説明する。
【００６７】
［ステップＳ１１０１］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１からデータを受信する際の優先度を優先度“１”と決定する。そのため、デバイス・コントローラ主要部２０２は、データ転送コマンド（Access UM Buffer）におけるフラグＰを“１”に設定する。また、デバイス・コントローラ主要部２０２は、ホスト・デバイス１からデータを読み出すので、データ転送コマンド（Access UM Buffer）におけるフラグＲを“１”に設定する。
【００６８】
［ステップＳ１１０２］
デバイス・コントローラ主要部２０２は、「フラグＲ“１”、フラグＰ“１”、アドレス、及びサイズ（READ, P==1, Address, Size）」等の情報を含むデバイス使用領域１０２のデータを読み出すコマンド（Access UM Buffer）を、優先度が“１（高い）”である第２のポート（CPort 1, TC 1）を介してホスト・デバイス１に送信する。
【００６９】
［ステップＳ１１０３］
ホスト・コントローラ１２０は、メモリ・システム２から、データを読み出すコマンド（Access UM Buffer）を受信すると、「フラグＲ“１”、フラグＰ“１”、アドレス、及びサイズ（READ, P==1, Address, Size）」等の情報に基づいて、デバイス使用領域１０２から、データをフェッチする。
【００７０】
［ステップＳ１１０４］
そして、ホスト・コントローラ１２０は、メモリ・システム２から受信したデータを読み出すコマンド（Access UM Buffer）に含まれるフラグＰに基づいて、優先度が“１”である第２のポート（CPort 1, TC 1）を介して、メモリ・システム２に読み出しデータを転送する（UM DATA OUT）。
【００７１】
＜書き込み動作＞
次に、図１１を用いて、メモリ・システム２がホスト・デバイス１にデータを書き込む場合における情報処理装置の動作例を説明する。図１１（ａ）は、第３のポートを介してメモリ・システム２がデータを送信する動作を示した図であり、図１１（ｂ）は、第２のポートを介してメモリ・システム２がデータを送信する動作を示した図である。
【００７２】
まず図１１（ａ）に示すように、通信路３の優先度設定が２つ用意されている情報処理装置において、メモリ・システム２はデータ転送要求時、対応するデータ転送で用いる通信路３の優先度を常に“０”とする場合の動作を説明する。
【００７３】
［ステップＳ１２０１］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１にデータを送信する際の優先度を優先度“０”と決定する。そのため、デバイス・コントローラ主要部２０２は、データ転送コマンド（Access UM Buffer）におけるフラグＰを“０（Ｐ＝＝０）”に設定する。また、デバイス・コントローラ主要部２０２は、ホスト・デバイス１にデータを書き込むので、データ転送コマンド（Access UM Buffer）におけるフラグＷを“１”に設定する。
【００７４】
［ステップＳ１２０２］
デバイス・コントローラ主要部２０２は、「フラグＷ“１”、フラグＰ“０”、アドレス、及びサイズ（WRITE, P==0, Address, Size）」等の情報を含むデバイス使用領域１０２のデータを読み出す要求コマンド（Access UM Buffer）を、優先度が“１”である第２のポート（CPort 1, TC 1）を介してホスト・デバイス１に送信する。
【００７５】
［ステップＳ１２０３］
デバイス・コントローラ主要部２０２は、書き込みデータを送信するコマンド(UM DATAIN)を、優先度が“０”である第３のポート（CPort 2, TC 0）を介してホスト・デバイス１に送信する。
【００７６】
ホスト・コントローラ１２０は、メモリ・システム２から、データを書き込むコマンド（Access UM Buffer）を受信すると、「フラグＷ“１”、フラグＰ“０”、アドレス、及びサイズ（WRITE, P==0, Address, Size）」等の情報に基づいて、メモリ・システム２から書き込みデータを受信する（UM DATA IN）。この際、メモリ・システム２から受信したデータを書き込むコマンド（Access UM Buffer）に含まれるフラグＰに基づいて、優先度が“０”である第３のポート（CPort 2, TC 0）を介して、メモリ・システム２から書き込みデータを受信する。
【００７７】
［ステップＳ１２０４］
ホスト・コントローラ１２０は、メモリ・システム２から受信した書き込みデータを、デバイス使用領域１０２に記憶する。
【００７８】
［ステップＳ１２０５］
ホスト・コントローラ１２０は、書き込みデータがデバイス使用領域１０２に記憶されると、完了した旨を意味する通知コマンド（Acknowledge UM Buffer）を、優先度が“１”である第２のポート（CPort 1, TC 1）を介してメモリ・システム２に送信する。これにより、メモリ・システム２のホスト・デバイス１へのデータの書き込みが完了する。
【００７９】
次に、図１１（ｂ）に示すように、通信路３の優先度設定が２つ用意されている情報処理装置において、メモリ・システム２はデータ転送要求時、対応するデータ転送で用いる通信路３の優先度を常に“１”とする場合の動作を説明する。
【００８０】
［ステップＳ１３０１］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１にデータを送信する際の優先度を優先度“１”と決定する。そのため、デバイス・コントローラ主要部２０２は、データ転送コマンド（Access UM Buffer）におけるフラグＰを“１（Ｐ＝＝１）”に設定する。また、デバイス・コントローラ主要部２０２は、ホスト・デバイス１にデータを書き込むので、データ転送コマンド（Access UM Buffer）におけるフラグＷを“１”に設定する。
【００８１】
［ステップＳ１３０２］
デバイス・コントローラ主要部２０２は、「フラグＷ“１”、フラグＰ“１”、アドレス、及びサイズ（WRITE, P==1, Address, Size）」等の情報を含むメモリ・システム２から受信したデータをデバイス使用領域１０２に書き込むコマンド（Access UM Buffer）を、優先度が“１”である第２のポート（CPort 1, TC 1）を介してホスト・デバイス１に送信する。
【００８２】
［ステップＳ１３０３］
デバイス・コントローラ主要部２０２は、書き込みデータを送信するコマンド(UM DATAIN)を、優先度が“１”である第２のポート（CPort 1, TC 1）を介してホスト・デバイス１に送信する。
【００８３】
ホスト・コントローラ１２０は、メモリ・システム２から、データを書き込むコマンド（Access UM Buffer）を受信すると、「フラグＷ“１”、フラグＰ“１”、アドレス、及びサイズ（WRITE, P==1, Address, Size）」等の情報に基づいて、メモリ・システム２から書き込みデータを受信する（UM DATA IN）。この際、メモリ・システム２から受信したデータを書き込むコマンド（Access UM Buffer）に含まれるフラグＰに基づいて、優先度が“１”である第２のポート（CPort 1, TC 1）を介して、メモリ・システム２から書き込みデータを受信する。
【００８４】
［ステップＳ１３０４］
ホスト・コントローラ１２０は、メモリ・システム２から受信した書き込みデータを、デバイス使用領域１０２に記憶する。
【００８５】
［ステップＳ１３０５］
ホスト・コントローラ１２０は、書き込みデータがデバイス使用領域１０２に記憶されると、完了した旨を意味する通知コマンド（Acknowledge UM Buffer）を、優先度が“１”である第２のポート（CPort 1, TC 1）を介してメモリ・システム２に送信する。これにより、メモリ・システム２のホスト・デバイス１へのデータの書き込みが完了する。
【００８６】
また、メモリ・システム２が上述した各動作（読み出し動作及び書き込み動作）は、ホスト・デバイス１からメモリ・システム２がライト・コマンド５００を受信した場合に行っても良いし、メモリ・システム２が能動的に行っても良い。
【００８７】
＜第１の実施形態に係るメモリ・システムの作用効果＞
上述した第１の実施形態では、情報処理装置は、ホスト装置１と、不揮発性半導体メモリ２１０を有する半導体記憶装置２と、ホスト装置１及び半導体記憶装置２を接続する通信路３と、を備える。ホスト装置１は、第１の記憶部１００と、第１の記憶部１００及び通信路３が接続され、第１の記憶部を制御する第１の制御部１２０とを備えている。通信路３は、それぞれ優先度が割り当てられた複数のポートを備えている。半導体記憶装置２は、通信路３に接続され、第１の記憶部１００へのデータの送受信動作の優先順に基づいて優先度を決定する第１のフラグ（フラグＰ）を含むデータ転送第１のコマンドを、第１の制御部１２０に送信する第２の制御部２００を備えている。また、第１の制御部１２０は、データ転送第１のコマンドを受信すると、第１のコマンドに含まれる第１のフラグに基づいて、優先度に対応するポートを介して第１の記憶部１００と、第２の制御部２００との間のデータの送受信を行う。また、優先度は、第１の優先度“０”と、第１の優先度“０”よりも優先度が高い第２の優先度“１”を含む。第２の制御部２００は、第１のコマンドに、後に続く動作が前記第１の記憶部１００からデータを読み出す動作であることを示す第２のフラグ（フラグＲ）、または後に続く動作が第１の記憶部１００へのデータを書き込む動作であることを示す第３のフラグ（フラグＷ）を含ませる。
【００８８】
第１の実施形態に係るメモリ・システム２は、メモリ・システム２が、ホスト・デバイス１との間でデータの送受信を行う際に優先度を制御することができる。
【００８９】
ところで、データ転送を行うコマンドでは優先度の制御を行う仕組みがなかった。このような場合、データの送受信を行う際に、データの種類、またはサイズ等に関わらず優先度を適宜選択することができない。
【００９０】
上述でも説明したように、優先度とは、処理を行う優先順を規定するものである。具体的には、競合する複数のリクエストがホスト・デバイス１にたまった時、例えば、優先度の高い処理が、優先度の低い処理よりも先に実行される。
【００９１】
上述したように、第１の実施形態に係るメモリ・システム２は、ホスト・デバイス１へ、データ転送の優先度を、データ転送のリクエスト自体に、各種のフラグ情報を含ませることができる。これらのフラグの例としては、後に続く動作がホスト・デバイス１からデータを読み出すことを意味するフラグＲ、後に続く動作がホスト・デバイス１にデータを書き込むことを意味するフラグＷ、及び後に続くシーケンスの優先度を示すフラグＰ等が挙げられる。
【００９２】
特にフラグＰがリクエスト自体に含まれることによって、その後に続くデータイン／アウトの優先度を、ホスト・デバイス１へのリクエストの段階で決めることができる。メモリ・システム２が適宜優先度を制御できるので、メモリ・システム２全体のパフォーマンスを最適化することができる。
【００９３】
（第２の実施形態）
次に、第２の実施形態に係るメモリ・システムの動作について説明する。尚、第２の実施形態に係るメモリ・システムの基本的な構成及び基本的な動作は、上述した第１の実施形態に係るメモリ・システムと同様である。従って、上述した第１の実施形態で説明した事項及び上述した第１の実施形態から容易に類推可能な事項についての説明は省略する。
【００９４】
＜デバイス・コントローラ主要部における動作＞
次に、メモリ・システム２のデバイス・コントローラ主要部２０２における動作について説明する。図１２及び図１３は、デバイス・コントローラ主要部２０２における動作を説明するフローチャートである。
【００９５】
［ステップＳ２００１］
まず、デバイス・コントローラ主要部２０２は、第１のポートを介したホスト・デバイス１からのライト・コマンド５００の受信を待機する。
【００９６】
［ステップＳ２００２］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１からライト・コマンド５００を受信すると、受信したライト・コマンド５００をコマンド・キューに格納する。ステップＳ２００２におけるコマンド・キューとは、ＲＡＭ２０３に確保された、メモリ・システム２用のコマンド・キューを意味する。
【００９７】
［ステップＳ２００３］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１に、データのコピー処理を指示する。
【００９８】
より具体的には、ホスト・コントローラ主要部１２２は、ホスト使用領域１０１のソース・アドレス５０２により指定された番地からデータを読み出して、読み出したデータをデバイス使用領域１０２の第２のデスティネーション・アドレスにより指定された番地にコピーする。メイン・メモリＤＭＡ１２３は、ＤＭＡ転送の完了をコピー終了割り込みによりホスト・コントローラ主要部１２２に通知する。
【００９９】
ホスト・コントローラ主要部１２２は、メイン・メモリＤＭＡ１２３によるＤＭＡ転送が完了すると、制御ＤＭＡ１２４に指令して、コピー終了信号をメモリ・システム２に送信せしめる。
【０１００】
［ステップＳ２００４］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１から第２のポートを介したコピー終了信号の受信を待つ。そしてデバイス・コントローラ主要部２０２は、コピー終了信号を受信すると、ＮＡＮＤメモリ２１０への書き込みの実行が可能であるか否かを判定する。
【０１０１】
［ステップＳ２００５］
ＮＡＮＤメモリ２１０への書き込みの実行が可能であるという状態は、例えばＮＡＮＤメモリ２１０のレディ／ビジー信号がレディとなり、かつコマンド・キューの先頭が受信したライト・コマンド５００である場合を意味する。ＮＡＮＤメモリ２１０への書き込みの実行が可能ではない場合、デバイス・コントローラ主要部２０２は、ステップＳ２００５の判定処理を再び実行する。
【０１０２】
［ステップＳ２００６］
ＮＡＮＤメモリ２１０への書き込みの実行が可能となった場合、デバイス・コントローラ主要部２０２は、ライト・コマンド５００に含まれている第１のデスティネーション・アドレス５０３を読み出す。
【０１０３】
［ステップＳ２００７］
そして、読み出した第１のデスティネーション・アドレス５０３の下位桁の２２ビットの値Ｌを使ってＬ２Ｐキャッシュ・タグ領域３１０を参照する。
【０１０４】
ここで、図１４を用いて、ステップＳ２００７について、より詳細に説明をする。図１４は、ステップＳ２００７の処理において、デバイス・コントローラ主要部２０２がＬ２Ｐキャッシュ・タグ領域３１０を参照する処理を説明するフローチャートである。
【０１０５】
［ステップＳ２１０１］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１にＬを用いてＬ２Ｐキャッシュ・タグ領域３１０のエントリ（L2P Management Entry）を読み出す要求を第２のポートを介して送信する。
【０１０６】
より具体的には、デバイス・コントローラ主要部２０２は、ホスト・デバイス１から、システム制御のためのエントリの種類を判定し、システム制御のためのエントリ（L2P Management Entry）を受信する際には、優先度を優先度“１（高い）”と決定する。そのため、デバイス・コントローラ主要部２０２は、データ転送コマンド（Access UM Buffer）におけるフラグＰを“１”に設定する。また、デバイス・コントローラ主要部２０２は、ホスト・デバイス１からエントリ（L2P Management Entry）を読み出すので、データ転送コマンド（Access UM Buffer）におけるフラグＲを“１”に設定する。
【０１０７】
デバイス・コントローラ主要部２０２は、「フラグＲ“１”、フラグＰ“１”、アドレス、及びサイズ（READ, P==１, L2PTagBaseAddr, Size）」等の情報を含むＬ２Ｐキャッシュ・タグ領域３１０のデータを読み出すコマンド（Access UM Buffer）を、優先度が“１（高い）”である第２のポート（CPort 1, TC 1）を介してホスト・デバイス１に送信する。
【０１０８】
［ステップＳ２１０２］
デバイス・コントローラ主要部２０２は、当該エントリの受信を待つ。ホスト・コントローラ１２０は、メモリ・システム２から、データを読み出すコマンド（Access UM Buffer）を受信すると、「フラグＲ“１”、フラグＰ“１”、アドレス、及びサイズ（READ, P==１, L2PTagBaseAddr, Size）」等の情報に基づいて、Ｌ２Ｐキャッシュ・タグ領域３１０から、エントリ（L2P Management Entry）をフェッチする。
【０１０９】
そして、ホスト・コントローラ１２０は、メモリ・システム２から受信したデータを読み出すコマンド（Access UM Buffer）に含まれるフラグＰに基づいて、優先度が“１”である第２のポート（CPort 1, TC 1）を介して、メモリ・システム２に読み出しエントリ（L2P Management Entry）を転送する（UM DATA OUT）。
【０１１０】
デバイス・コントローラ主要部２０２は、該エントリを、第２ポートを介して受信する。該当のエントリを受信すると、デバイス・コントローラ主要部２０２は、ステップＳ２００７の処理を終了する。
【０１１１】
［ステップＳ２００８］
ステップＳ２００７の処理に続いて、デバイス・コントローラ主要部２０２は、ステップＳ２００７の処理により得たエントリに含まれるＶＬビットが１であるか否かを判定する。
【０１１２】
［ステップＳ２００９］
ＶＬビットが１である場合は、デバイス・コントローラ主要部２０２は、このエントリに含まれるタグ情報が第１のデスティネーション・アドレス５０３の上位桁４ビットの値Ｔと一致するか否かを判定する。
【０１１３】
［ステップＳ２０１０］
ステップＳ２００８における判定において、ＶＬビットが０である場合には、デバイス・コントローラ主要部２０２は、当該エントリのＶＬビットを１とする。
【０１１４】
［ステップＳ２０１１］
ステップＳ２００９における判定において、エントリに含まれるタグ情報が第１のデスティネーション・アドレス５０３の上位桁４ビットの値Ｔと一致しない場合、またはステップＳ２０１０において、当該エントリのＶＬビットを１とした場合、デバイス・コントローラ主要部２０２は、タグ情報をＴとする。
【０１１５】
［ステップＳ２０１２］
続いて、デバイス・コントローラ主要部２０２は、Ｌ２Ｐ本体２１１を参照して、第１のデスティネーション・アドレス５０３に対応する物理アドレスを取得する。
【０１１６】
［ステップＳ２０１３］
そして、デバイス・コントローラ主要部２０２は、Ｌを用いてＬ２Ｐキャッシュ領域３００の対応するキャッシュ・ラインにステップＳ２０１２で取得した物理アドレスを書き込む。
【０１１７】
ここで、図１５を用いて、ステップＳ２０１３についてより詳細に説明する。図１５は、ステップＳ２０１３の処理においてデバイス・コントローラ主要部２０２が物理アドレスをＬ２Ｐキャッシュ領域３００に書き込む処理を説明するフローチャートである。
【０１１８】
［ステップＳ２２０１］
まず、デバイス・コントローラ主要部２０２は、ホスト・デバイス１にＬを使ってＬ２Ｐキャッシュ領域３００のエントリ（L2P Table Cache Entry）の受信を要求する。
【０１１９】
より具体的には、デバイス・コントローラ主要部２０２は、ホスト・デバイス１に送信するエントリの種類を判定し、システム制御のためのエントリ（L2P Table Cache Entry）をホスト・デバイス１に送信する際には、優先度を優先度“１（高い）”と決定する。そのため、デバイス・コントローラ主要部２０２は、データ転送コマンド（Access UM Buffer）におけるフラグＰを“１”に設定する。また、デバイス・コントローラ主要部２０２は、ホスト・デバイス１にエントリ（L2P Table Cache Entry）を書き込むので、データ転送コマンド（Access UM Buffer）におけるフラグＷを“１”に設定する。
【０１２０】
［ステップＳ２２０２］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１にステップＳ２０１２で取得した物理アドレスを送信対象のエントリ（L2P Table Cache Entry）として送信する。
【０１２１】
より具体的には、ホスト・コントローラ１２０は、メモリ・システム２から、データを書き込むコマンド（Access UM Buffer）を受信すると、「フラグＷ“１”、フラグＰ“０”、アドレス、及びサイズ（WRITE, P==0, Address, Size）」等の情報に基づいて、メモリ・システム２から書き込みデータを受信する（UM DATA IN）。この際、メモリ・システム２から受信したデータを書き込むコマンド（Access UM Buffer）に含まれるフラグＰに基づいて、優先度が“０”である第３のポート（CPort 2, TC 0）を介して、メモリ・システム２から書き込みデータを受信する。
【０１２２】
そして、ホスト・コントローラ１２０は、メモリ・システム２から受信した書き込みデータを、デバイス使用領域１０２に記憶する。
【０１２３】
［ステップＳ２２０３］
そして、デバイス・コントローラ主要部２０２は、ホスト・デバイス１の受信完了を待ち、ホスト・デバイス１が受信完了すると、ステップＳ２０１３の処理を終了する。
【０１２４】
尚、デバイス・コントローラ主要部２０２は、要求の送信、ホスト・デバイス１がエントリの受信の準備を完了したか否かを示すステータス情報、及びホスト・デバイス１が受信完了したか否かを示すステータス情報を、第２のポートを介して受信することができる。また、エントリを第３のポートを介してホスト・デバイス１に送信することもできる。
【０１２５】
［ステップＳ２０１４］
ステップＳ２００７の処理により読んだエントリのタグ情報がＴと等しい場合、デバイス・コントローラ主要部２０２は、Ｌ２Ｐキャッシュ領域３００から、エントリ（L2P Table Cache Entry）を取得する。
【０１２６】
ここで、図１６を用いて、ステップＳ２０１４について、より詳細に説明をする。図１６は、ステップＳ２０１４の処理において、デバイス・コントローラ主要部２０２がＬ２Ｐキャッシュ領域３００を参照する処理を説明するフローチャートである。
【０１２７】
［ステップＳ２３０１］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１にＬを用いてＬ２Ｐキャッシュ領域３００のエントリ（L2P Table Cache Entry）を読み出す要求を第２のポートを介して送信する。
【０１２８】
より具体的には、デバイス・コントローラ主要部２０２は、ホスト・デバイス１から受信するエントリの種類を判定し、システム制御のためのエントリ（L2P Table Cache Entry）を受信する際には、優先度を優先度“１（高い）”と決定する。そのため、デバイス・コントローラ主要部２０２は、データ転送コマンド（Access UM Buffer）におけるフラグＰを“１”に設定する。また、デバイス・コントローラ主要部２０２は、ホスト・デバイス１からエントリ（L2P Table Cache Entry）を読み出すので、データ転送コマンド（Access UM Buffer）におけるフラグＲを“１”に設定する。
【０１２９】
デバイス・コントローラ主要部２０２は、「フラグＲ“１”、フラグＰ“１”、アドレス、及びサイズ（READ, P==１, L2PTagBaseAddr+L, Size）」等の情報を含むＬ２Ｐキャッシュ領域３００のデータを読み出すコマンド（Access UM Buffer）を、優先度が“１（高い）”である第２のポート（CPort 1, TC 1）を介してホスト・デバイス１に送信する。
【０１３０】
［ステップＳ２３０２］
デバイス・コントローラ主要部２０２は、当該エントリの受信を待つ。ホスト・コントローラ１２０は、メモリ・システム２から、データを読み出すコマンド（Access UM Buffer）を受信すると、「フラグＲ“１”、フラグＰ“１”、アドレス、及びサイズ（READ, P==１, L2PTagBaseAddr+L, Size）」等の情報に基づいて、Ｌ２Ｐキャッシュ領域３００から、エントリ（L2P Table Cache Entry）をフェッチする。
【０１３１】
そして、ホスト・コントローラ１２０は、メモリ・システム２から受信したデータを読み出すコマンド（Access UM Buffer）に含まれるフラグＰに基づいて、優先度が“１”である第２のポート（CPort 1, TC 1）を介して、メモリ・システム２に読み出しエントリ（L2P Table Cache Entry）を転送する（UM DATA OUT）。
【０１３２】
デバイス・コントローラ主要部２０２は、慨エントリを、第３ポートを介して受信する。該当のエントリを受信すると、デバイス・コントローラ主要部２０２は、ステップＳ２０１４の処理を終了する。
【０１３３】
［ステップＳ２０１５］
ステップＳ２０１３またはステップＳ２０１４の処理の後、デバイス・コントローラ主要部２０２は、第１のデスティネーション・アドレス５０３の下位桁１３ビットの値Ｌ′を使ってライト・キャッシュ・タグ領域４１０のエントリを読み出す。
【０１３４】
ここで、図１７を用いて、ステップＳ２０１５についてより詳細に説明する。図１７は、ステップＳ２０１５の処理において、デバイス・コントローラ主要部２０２がライト・キャッシュ・タグ領域４１０のエントリを読み出す処理を説明するフローチャートである。
【０１３５】
［ステップＳ２４０１］
デバイス・コントローラ主要部２０２は、第２のポート２３１を介し、ホスト・デバイス１に第１のデスティネーション・アドレス５０３の下位１３ビットの値Ｌ′を用いてライト・キャッシュ・タグ領域４１０のエントリを要求する。
【０１３６】
より具体的には、デバイス・コントローラ主要部２０２は、ホスト・デバイス１から受信するエントリの種類を判定し、システム制御のためのエントリ（Buffer Management Entry）を受信する際には、優先度を優先度“１（高い）”と決定する。そのため、デバイス・コントローラ主要部２０２は、データ転送コマンド（Access UM Buffer）におけるフラグＰを“１”に設定する。また、デバイス・コントローラ主要部２０２は、ホスト・デバイス１からエントリ（Buffer Management Entry）を読み出すので、データ転送コマンド（Access UM Buffer）におけるフラグＲを“１”に設定する。
【０１３７】
デバイス・コントローラ主要部２０２は、「フラグＲ“１”、フラグＰ“１”、アドレス、及びサイズ（READ, P==１, WCTagBaseAddr, Size）」等の情報を含むライト・キャッシュ・タグ領域４１０のデータを読み出すコマンド（Access UM Buffer）を、優先度が“１（高い）”である第２のポート（CPort 1, TC 1）を介してホスト・デバイス１に送信する。
【０１３８】
［ステップＳ２４０２］
デバイス・コントローラ主要部２０２は、該当エントリの受信を待つ。ホスト・コントローラ１２０は、メモリ・システム２から、データを読み出すコマンド（Access UM Buffer）を受信すると、「フラグＲ“１”、フラグＰ“１”、アドレス、及びサイズ（READ, P==１, WCTagBaseAddr, Size）」等の情報に基づいて、ライト・キャッシュ・タグ領域４１０から、エントリ（Buffer Management Entry）をフェッチする。
【０１３９】
そして、ホスト・コントローラ１２０は、メモリ・システム２から受信したデータを読み出すコマンド（Access UM Buffer）に含まれるフラグＰに基づいて、優先度が“１”である第２のポート（CPort 1, TC 1）を介して、メモリ・システム２に読み出しエントリ（Buffer Management Entry）を転送する（UM DATA OUT）。
【０１４０】
デバイス・コントローラ主要部２０２は、該エントリを、第２ポートを介して受信する。該当のエントリを受信すると、デバイス・コントローラ主要部２０２は、ステップＳ２０１４の処理を終了する。
【０１４１】
［ステップＳ２０１６］
ステップＳ２０１４の処理の後、デバイス・コントローラ主要部２０２は、読み出したエントリに含まれるＶＢビットが１であるか否かを判定する。
【０１４２】
［ステップＳ２０１７］
ＶＢビットが１である場合、デバイス・コントローラ主要部２０２は、当該エントリに含まれるＤＢビットが１であるか否かを判定する。
【０１４３】
［ステップＳ２０１８］
ＤＢビットが１である場合、デバイス・コントローラ主要部２０２は、当該エントリに含まれるタグ情報がＴ′と一致するか否かを判定する。
【０１４４】
ＶＢビットが０である場合、ＤＢビットが０である場合、またはタグ情報がＴ′と一致しない場合、デバイス・コントローラ主要部２０２は動作を終了する。
【０１４５】
［ステップＳ２０１９］
ステップＳ２０１８において、当該エントリに含まれるタグ情報がＴ′と一致する場合、ライト・キャッシュ領域４００に書き込み対象のライト・データが存在することが確定する。その場合、デバイス・コントローラ主要部２０２はＬ′を使って、ライト・キャッシュ領域４００のキャッシュ・ラインからライト・データを取得する。
【０１４６】
ここで、図１８を用いて、Ｓ２０１９について詳細に説明する。図１８は、ステップＳ２０１９の処理において、デバイス・コントローラ主要部２０２がホスト・デバイス１からライト・データを取得する処理を説明するフローチャートである。
【０１４７】
［ステップＳ２５０１］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１にＬ′を使って、ライト・キャッシュ領域４００にキャッシュされているライト・データを第２のポート２３１を介して要求する。
【０１４８】
より具体的には、デバイス・コントローラ主要部２０２は、ホスト・デバイス１から受信するエントリの種類を判定し、ユーザ・データであるエントリ（Write Buffer Entry）を受信する際には、優先度を優先度“０（低い）”と決定する。そのため、デバイス・コントローラ主要部２０２は、データ転送コマンド（Access UM Buffer）におけるフラグＰを“０”に設定する。また、デバイス・コントローラ主要部２０２は、ホスト・デバイス１からエントリ（Write Buffer Entry）を読み出すので、データ転送コマンド（Access UM Buffer）におけるフラグＲを“１”に設定する。
【０１４９】
デバイス・コントローラ主要部２０２は、「フラグＲ“１”、フラグＰ“０”、アドレス、及びサイズ（READ, P==０, WCBaseAddr+L’x8K, Size）」等の情報を含むライト・キャッシュ領域４００のデータを読み出すコマンド（Access UM Buffer）を、優先度が“０（低い）”である第３のポート（CPort 2, TC 0）を介してホスト・デバイス１に送信する。
【０１５０】
［ステップＳ２５０２］
デバイス・コントローラ主要部２０２は、ライト・データの受信を待機する。ホスト・コントローラ１２０は、メモリ・システム２から、データを読み出すコマンド（Access UM Buffer）を受信すると、「フラグＲ“１”、フラグＰ“０”、アドレス、及びサイズ（READ, P==０, WCBaseAddr+L’x 8K, Size）」等の情報に基づいて、ライト・キャッシュ領域４００から、エントリ（Write Buffer Entry）をフェッチする。
【０１５１】
そして、ホスト・コントローラ１２０は、メモリ・システム２から受信したデータを読み出すコマンド（Access UM Buffer）に含まれるフラグＰに基づいて、優先度が“０”である第３のポート（CPort 2, TC 0）を介して、メモリ・システム２に読み出しエントリ（Write Buffer Entry）を転送する（UM DATA OUT）。
【０１５２】
デバイス・コントローラ主要部２０２は、慨エントリを、第３ポートを介して受信する。該当のエントリを受信すると、デバイス・コントローラ主要部２０２は、ステップＳ２０１９の処理を終了する。
【０１５３】
［ステップＳ２０２０］
ステップＳ２０１９の処理の後、デバイス・コントローラ主要部２０２は、取得したライト・データを、ステップＳ２０１３、またはステップＳ２０１４で取得したＮＡＮＤメモリ２１０における物理アドレスが示す位置に書き込む。
【０１５４】
［ステップＳ２０２１］
そして、デバイス・コントローラ主要部２０２は、ステップＳ２０１４の処理により参照したライト・キャッシュ・タグ領域４１０のエントリのＤＢビットを０にする。
【０１５５】
ここで、図１９を用いて、ステップＳ２０２１について詳細に説明する。図１９は、ステップＳ２０２１の処理において、デバイス・コントローラ主要部２０２がＤＢビットの値を操作する処理を説明するフローチャートである。
【０１５６】
［ステップＳ２６０１］
デバイス・コントローラ主要部２０２は、Ｌ′を使って、ホスト・デバイス１にライト・キャッシュ・タグ領域４１０のエントリを受信する要求を第２のポート２３１を介して送信する。
【０１５７】
［ステップＳ２６０２］
デバイス・コントローラ主要部２０２は、ＤＢビットを１としたエントリを第３のポート２３２を介してホスト・デバイス１に送信する。
【０１５８】
［ステップＳ２６０３］
その後、デバイス・コントローラ主要部２０２は、第２のポート２３１を介して受信するステータス情報を監視することによって、ホスト・デバイス１が受信完了するまで待つ。
【０１５９】
ホスト・デバイス１が該当のエントリの受信を完了すると、デバイス・コントローラ主要部２０２は、ステップＳ２０２１の動作を終了する。
【０１６０】
［ステップＳ２０２２］
ステップＳ２０２１の処理の後、デバイス・コントローラ主要部２０２は、ステップＳ２００７の処理により参照したＬ２Ｐキャッシュ・タグ領域３１０のエントリのＶＬビットを０にし、動作を終了する。
【０１６１】
ここで、図２０を用いて、ステップＳ２０２２についてより詳細に説明する。図２０は、ステップＳ２０２２の処理においてデバイス・コントローラ主要部２０２がＶＬビット値を操作する処理を説明するフローチャートである。
【０１６２】
［ステップＳ２７０１］
デバイス・コントローラ主要部２０２は、Ｌを使って、ホスト・デバイス１にＬ２Ｐキャッシュ・タグ領域３１０のエントリを受診する要求を第２のポート２３１を介して送信する。
【０１６３】
［ステップＳ２７０２］
デバイス・コントローラ主要部２０２は、ＶＬビットを１としたエントリを第３のポート２３２を介してホスト・デバイス１に送信する。
【０１６４】
［ステップＳ２７０３］
その後、デバイス・コントローラ主要部２０２は、第２のポート２３１を介して受信するステータス情報を監視することによってホスト・デバイス１が受信完了するまで待つ。
【０１６５】
ホスト・デバイス１が該当のエントリの受信を完了すると、デバイス・コントローラ主要部２０２は、ステップＳ２０２２の動作を終了する。
【０１６６】
＜第２の実施形態に係る情報処理装置の作用効果＞
上述したように、第２の実施形態に係るデバイス・コントローラ主要部２０２は、ホスト・デバイス１からシステム制御のためのエントリ（L2P Management Entry, L2P Table Cache Entry, Buffer Management Entry）を受信する際の優先度を優先度“１（高い）”と定義し、ユーザ・データであるエントリ（ Write Buffer Entry）を受信する際の優先度を優先度“０（低い）”と定義している。
【０１６７】
上述した第１の実施形態では、通信路３の優先度を常に“０”または、通信路３の優先度を常に“１”と定義する場合について説明したが、第２の実施形態に係るメモリ・システム２では、例えばシステム制御のためのデータ転送とユーザ・データの転送の優先度を変えることによって、情報処理装置全体のパフォーマンスを最適化することができる。
【０１６８】
（第３の実施形態）
次に、第３の実施形態に係るメモリ・システムの動作について説明する。第２の実施形態では、メモリ・システム２は、データの種類に応じて、データ転送で用いる通信路３の優先度を決定する場合について説明した。第３の実施形態では、メモリ・システム２が、データのサイズに基づいて該優先度を決定する場合について説明する。尚、第３の実施形態に係るメモリ・システムの基本的な構成及び基本的な動作は、上述した第１及び第２の実施形態に係るメモリ・システムと同様である。従って、上述した第１及び第２の実施形態で説明した事項及び上述した第１及び第２の実施形態から容易に類推可能な事項についての説明は省略する。
【０１６９】
図２１を用いて、図１８に記載のステップＳ２５０１における動作の他の例について説明する。図２１は、デバイス・コントローラ主要部が優先度を決定する処理を説明するフローチャートである。
【０１７０】
［ステップＳ２８０１］
デバイス・コントローラ主要部２０２は、ホスト・デバイス１からユーザ・データであるエントリ（Write Buffer Entry）を受信する際に、データのサイズを判定する。
【０１７１】
［ステップＳ２８０２］
デバイス・コントローラ主要部２０２は、ステップＳ２８０１において、データのサイズが所定のサイズよりも大きいと判定する場合、ホスト・デバイス１からユーザ・データであるエントリ（Write Buffer Entry）を受信する際の優先度を優先度“０（低い）”と設定する。
【０１７２】
［ステップＳ２８０３］
デバイス・コントローラ主要部２０２は、ステップＳ２８０１において、データのサイズが所定のサイズ未満であると判定する場合、ホスト・デバイス１からユーザ・データであるエントリ（Write Buffer Entry）を受信する際の優先度を優先度“１（高い）”と設定する。
【０１７３】
［ステップＳ２８０４］
デバイス・コントローラ主要部２０２は、ステップＳ２８０２またはＳ２８０３において設定されたフラグＰを、データ転送コマンド（Access UM Buffer）に設定する。
【０１７４】
更にデバイス・コントローラ主要部２０２は、ホスト・デバイス１からエントリ（Write Buffer Entry）を読み出すので、データ転送コマンド（Access UM Buffer）におけるフラグＲを“１”に設定する。
【０１７５】
デバイス・コントローラ主要部２０２は、「フラグＲ“１”、フラグＰ、アドレス、及びサイズ（READ, P, WCBaseAddr+L’x8K, Size）」等の情報を含むライト・キャッシュ領域４００のデータを読み出すコマンド（Access UM Buffer）を、優先度が“１（高い）”である第２のポート（CPort 1, TC 1）を介してホスト・デバイス１に送信する。
【０１７６】
上述した第３の実施形態において、所定のサイズ以上のデータの送受信を行う場合には、デバイス・コントローラ主要部２０２は、該優先度を“０（低い）”に設定し、所定のサイズ未満のデータの送受信を行う場合には、デバイス・コントローラ主要部２０２は、該優先度を“１（高い）”に設定している。
【０１７７】
しかしながら、これはあくまで一例であり、送受信を行うデータのサイズが所定のサイズ以上の場合に、デバイス・コントローラ主要部２０２は、該優先度を“１（高い）”に設定し、所定のサイズ未満のデータの送受信を行う場合には、デバイス・コントローラ主要部２０２は、該優先度を“０（低い）”に設定することもできる。
【０１７８】
上述の様に、デバイス・コントローラ主要部２０２は、該優先度（０：優先度低い、１：優先度高い）を、例えば、送受信するデータのサイズに基づいて適宜切り替えることができる。これにより、第１及び第２の実施形態で説明したものと同様の効果を得ることができる。
【０１７９】
（変形例等）
尚、第１の実施形態に記載した各動作に関して、メモリ・システム２はデータ転送要求時、対応するデータ転送で用いる通信路３の優先度を常に“０”とする場合または常に“１”とする場合について説明した。しかしながら、デバイス・コントローラ主要部２０２は、該優先度（０：優先度低い、１：優先度高い）を、所定の条件に基づいて適宜切り替えることができる。
【０１８０】
また、上述した第３の実施形態では、メモリ・システム２は、データのサイズに基づいて、通信路３の優先度を決定している。しかし、メモリ・システム２は、第２の実施形態で説明したように、データの種類と、データのサイズの両方を考慮して、該優先度を決定しても良い。
【０１８１】
また、上述した実施形態では、ＵＦＳメモリデバイスを用いて説明したが、これに限らず、例えば、クライアントサーバモデルに基づくメモリ・システムであれば、どのようなものでも良い。より具体的には、コマンドに上述したようなFlag情報（フラグＲ、フラグＷ、フラグＰ等）を付加することができるものであれば、適応可能である。
【０１８２】
また、上述した実施形態では、ＵＦＳメモリデバイスを用いて説明したが、同様の動作をする半導体記憶装置であれば、他のメモリカード、メモリデバイスまたは内部メモリ等にも適用可能であり、上述した実施形態及び第２の実施形態と同様の作用効果を奏することができる。また、上述したフラッシュメモリ２１０はＮＡＮＤ型フラッシュメモリに限らず、その他の半導体メモリであっても良い。
【０１８３】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
【符号の説明】
【０１８４】
１…ホスト・デバイス      ２…メモリ・システム      ３…通信路    
１００…メイン・メモリ      １０１…ホスト使用領域
１０２…デバイス使用領域      １１０…ＣＰＵ  １２０…ホスト・コントローラ
１２１…バスアダプタ      １２２…ホスト・コントローラ主要部
１２３…メイン・メモリＤＭＡ      １２４…制御ＤＭＡ
１２５…データＤＭＡ      １２６…デバイス接続アダプタ  １３０〜１３２…ポート
１４０…バス    ２００…デバイス・コントローラ    ２０１…ホスト接続アダプタ
２０２…デバイス・コントローラ主要部      ２０３…ＲＡＭ
２０４…ＮＡＮＤ接続アダプタ      ２０５…バス・マスタ
２０６…バス・マスタ      ２１０…ＮＡＮＤフラッシュメモリ
２１１…Ｌ２Ｐテーブル      ２１２…ユーザ・データ
２３０〜２３２…ポート      ３００…Ｌ２Ｐキャッシュ領域
３１０…Ｌ２Ｐキャッシュ・タグ領域      ３１１、３１２…フィールド
３１２…フィールド      ４００…ライト・キャッシュ領域
４１０…ライト・キャッシュ・タグ領域      ４１１〜４１３…フィールド
５００…ライト・コマンド。
【図１】
2014052908.tif 000003
【図２】
2014052908.tif 000004
【図３】
2014052908.tif 000005
【図４】
2014052908.tif 000006
【図５】
2014052908.tif 000007
【図６】
2014052908.tif 000008
【図７】
2014052908.tif 000009
【図８】
2014052908.tif 000010
【図９】
2014052908.tif 000011
【図１０】
2014052908.tif 000012
【図１１】
2014052908.tif 000013
【図１２】
2014052908.tif 000014
【図１３】
2014052908.tif 000015
【図１４】
2014052908.tif 000016
【図１５】
2014052908.tif 000017
【図１６】
2014052908.tif 000018
【図１７】
2014052908.tif 000019
【図１８】
2014052908.tif 000020
【図１９】
2014052908.tif 000021
【図２０】
2014052908.tif 000022
【図２１】
2014052908.tif 000023