(57)【要約】      （修正有）【課題】全てのトランザクションの処理にかかる時間を短縮できるメモリコントローラを提供する。【解決手段】メモリコントローラ３が備える転送パケット優先判定部１５は、ホスト１からの複数のトランザクションの実行要求に対する応答の送信順番に対し、転送パケットの送信情報に基づき転送パケットが優先して送信すべき優先パケットであるかどうかを判定する。転送キュー選択部１６は、転送パケットが優先パケットである場合に優先転送キュー１４を選択して優先転送キューに優先パケットを蓄積し、転送パケットが優先パケットでない場合に通常転送キュー１３を選択して通常転送キューに転送パケットを蓄積する。転送パケット選択部１７は、優先転送キューと通常転送キューの蓄積状態を確認して転送パケットを選択し、優先転送キューに転送パケットが蓄積されている場合、通常転送キューの転送パケットより優先的に選択してホストに転送する。【選択図】図１
2020144410.tif 000002
【特許請求の範囲】
【請求項１】
不揮発メモリを制御するとともに、ホストから複数のトランザクションの実行要求を受信するメモリコントローラであって、
通常転送キュー及び優先転送キューと、
前記複数のトランザクションの実行要求に対する応答の送信順番に対し、転送パケットの送信情報に基づき前記転送パケットが優先して送信すべき優先パケットであるかどうかを判定する転送パケット優先判定部と、
前記転送パケットが前記優先パケットである場合に前記優先転送キューを選択して前記優先転送キューに前記優先パケットを蓄積し、前記転送パケットが前記優先パケットでない場合に前記通常転送キューを選択して前記通常転送キューに前記転送パケットを蓄積する転送キュー選択部と、
前記優先転送キューと前記通常転送キューの蓄積状態を確認して転送パケットを選択し、前記優先転送キューに転送パケットが蓄積されている場合、前記通常転送キューの転送パケットより優先的に選択して前記ホストに転送する転送パケット選択部を備えるメモリコントローラ。
【請求項２】
前記転送パケット優先判定部は、前記転送パケットの種類に基づき前記転送パケットが優先パケットであるか否かを判定する請求項１記載のメモリコントローラ。
【請求項３】
前記転送パケット優先判定部は、転送パケット長が第１閾値以下である場合に前記転送パケットが前記優先パケットであると判定する請求項１又は請求項２記載のメモリコントローラ。
【請求項４】
前記転送パケット優先判定部は、トランザクションデータ長が第２閾値以下である場合に前記転送パケットが前記優先パケットであると判定する請求項１乃至請求項３のいずれか１項記載のメモリコントローラ。
【請求項５】
前記不揮発メモリは、ＮＡＮＤフラッシュメモリであり、前記転送パケット優先判定部は、ＮＡＮＤフラッシュメモリの読み出し領域の種類により前記転送パケットが前記優先パケットであるか否かを判定する請求項１乃至請求項４のいずれか１項記載のメモリコントローラ。
【請求項６】
前記転送パケット優先判定部は、前記メモリのアクセス領域により前記転送パケットが前記優先パケットであるか否かを判定する請求項１乃至請求項５のいずれか１項記載のメモリコントローラ。
【請求項７】
前記転送パケット優先判定部は、前記ホストの識別コードによって、前記転送パケットが前記優先パケットであるか否かを判定する請求項１乃至請求項６のいずれか１項記載のメモリコントローラ。
【請求項８】
前記転送パケット選択部は、前記優先転送キューに蓄積されたパケットの量が所定量を超えた場合には、前記通常転送キューに蓄積されたパケットを読み出して、前記ホストに転送する請求項１乃至請求項５のいずれか１項記載のメモリコントローラ。
【請求項９】
不揮発メモリを制御するとともに、ホストから複数のトランザクションの実行要求を受信するメモリコントローラであって、
転送パケットに優先順位を付けるトラフィッククラスを定義した汎用プロトコルと、アプリケーションレイヤと、前記汎用プロトコルと前記アプリケーションレイヤに接続され、インターフェイスからなる第１Cポートと前記第１Cポートより優先順位が高い第２Cポートを備え、前記第１Cポートと前記第２Cポート毎に前記トラフィッククラスを設定し、
前記アプリケーションレイヤは、前記複数のトランザクションの実行要求に対する応答の送信順番に対し、前記転送パケットが優先パケットであるかどうかを判定する転送パケット優先判定部と、
前記第１Cポートに接続された第１Cポート転送キューと、
前記第２Cポートに接続された第２Cポート転送キューと、
前記転送パケットが前記優先パケットである場合に前記第２Cポート転送キューを選択して前記第２Cポート転送キューに前記優先パケットを蓄積し、前記転送パケットが前記優先パケットでない場合に前記第１Cポート転送キューを選択して前記第１Cポート転送キューに前記転送パケットを蓄積する転送ポート選択部を備えるメモリコントローラ。
【請求項１０】
前記汎用プロトコルは、第１Cポートバッファ及び第２Cポートバッファと、
前記転送パケットが前記優先パケットである場合に前記第２Cポート転送キューを選択して前記優先パケットを前記第２Cポートバッファに記憶し、前記転送パケットが前記優先パケットでない場合に前記第１Cポート転送キューを選択して前記転送パケットを前記第１Cポートバッファに記憶するCポート選択部と、
前記第１Cポートバッファ又は前記第２Cポートバッファを選択して、選択されたバッファに記憶されたパケットを前記ホストに出力するバッファ選択部を備える請求項９記載のメモリコントローラ。
【請求項１１】
前記汎用プロトコルは、物理レイヤ、データリンクレイヤ、ネットワークレイヤ、トランスポートレイヤで構成される請求項９又は請求項１０記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリコントローラに関する。
【背景技術】
【０００２】
ホストとメモリデバイスとは、通信によりコマンド及びデータの送受信を行う。ホストからメモリデバイスに対してコマンドを発行し、複数のトランザクションを実行する場合、メモリデバイス内のＣＰＵ（Central Processing Unit ）によりトランザクションの実行順を制御することができる。
【０００３】
しかし、複数のトランザクションに対する応答をメモリデバイスからホストに返送するためのインターフェイスが一つである場合には、応答を同時に返送することはできない。
【０００４】
このとき、ＦＩＦＯ（First In First Out）でトランザクションの応答を順番に返送する場合、トランザクション全体の実行時間が最適にならない場合がある。
【０００５】
例えば、ＵＦＳ（Universal Flash Storage）のライト・トランザクションについて、ライトデータを受信するためには、ＲＴＴ(Ready To Transfer)ＵＰＩＵ(UFS Protocol Information Unit)を送信する必要がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第５５４７１５４号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、リードデータの送信のように長いデータ転送を行っている最中では、ＲＴＴ  ＵＰＩＵを送信することができない。このため、ライトデータの受信が待たされてしまう。このような状況は、ホストのキューの深さが浅い場合、ホストから発行したコマンドに対して、メモリデバイスから応答を返送しないと、次のコマンドをホストデバイスから受信できない。
【０００８】
また、ホストは、長いトランザクションの転送データを複数発行要求しているために、後続の短いトランザクションのデータを発行することができない。このため、メモリデバイスは、次のコマンドを受信することができない。
【０００９】
本発明が解決しようとする課題は、トランザクションの処理全体にかかる時間を短縮することができるメモリコントローラを提供することである。
【課題を解決するための手段】
【００１０】
実施形態に係るメモリコントローラは、不揮発メモリを制御するとともに、ホストから複数のトランザクションの実行要求を受信するメモリコントローラであって、通常転送キュー及び優先転送キューと、転送パケット優先判定部と、転送キュー選択部と、転送パケット選択部とを備える。
【００１１】
転送パケット優先判定部は、複数のトランザクションの実行要求に対する応答の送信順番に対し、転送パケットの送信情報に基づき転送パケットが優先して送信すべき優先パケットであるかどうかを判定する。転送キュー選択部は、転送パケットが優先パケットである場合に優先転送キューを選択して優先転送キューに優先パケットを蓄積し、転送パケットが優先パケットでない場合に通常転送キューを選択して通常転送キューに転送パケットを蓄積する。
【００１２】
転送パケット選択部は、優先転送キューと通常転送キューの蓄積状態を確認して転送パケットを選択する。優先転送キューに転送パケットが蓄積されている場合、通常転送キューの転送パケットより優先的に選択してホストに転送する。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１実施形態のメモリデバイスの構成ブロック図である。
【図２】図２は、第１実施形態の変形例のパケットのデータ構造を示す図である。
【図３】図３は、第１実施形態のメモリコントローラの転送パケットの種類による優先転送処理を示すフローチャートである。
【図４】図４は、第１実施形態のメモリコントローラの転送パケットの選択処理を示すフローチャートである。
【図５】図５は、第１実施形態のホストからメモリデバイスへのリード要求に対するリードデータの転送を示す図である。
【図６】図６は、第１実施形態のホストからメモリデバイスへのライト要求に対するライトデータ送信要求を示す図である。
【図７】図７は、従来のメモリデバイスのデータ送信順番と第１実施形態のメモリデバイスのデータ送信順番との比較を示す図である。
【図８】図８は、第１実施形態のメモリコントローラの転送パケット長による優先転送処理を示すフローチャートである。
【図９】図９は、第１実施形態のメモリコントローラのトランザクションデータ長による優先転送処理を示すフローチャートである。
【図１０】図１０は、第１実施形態のメモリコントローラのメモリの読み出し領域の種類による優先転送処理を示すフローチャートである。
【図１１】図１１は、第２実施形態のメモリコントローラの構成ブロック図である。
【図１２】図１２は、第２実施形態のメモリコントローラに用いられるＵｎｉＰｒｏの構成を示す図である。
【発明を実施するための形態】
【００１４】
以下、実施形態のメモリコントローラを含むメモリデバイスについて、図面を参照しながら詳細に説明する。
【００１５】
参照される図面は模式的なものである。以下の説明において、同一の機能及び構成を有する要素については、共通する参照符号を付す。
【００１６】
（第１実施形態）
（メモリデバイスの構成）
図１は第１実施形態のメモリデバイスの構成ブロック図である。メモリデバイス２は、ホスト１に接続されている。ホスト１とメモリデバイス２とは、通信によりコマンド及びデータの送受信を行う。
【００１７】
ホスト１は、メモリデバイス２に対してコマンドを発行する。ホスト１は、メモリデバイス２にアクセスするためのハードウェア及びソフトウェアを含む。
【００１８】
メモリデバイス２は、メモリ４と、メモリ４を制御するメモリコントローラ３を備える。メモリコントローラ３は、ホスト１からのコマンドを受けてコマンドに対する応答をホスト１に返す。メモリ４は、複数ビットからなる特定の書き込み単位でデータの書き込み及びデータの読み出しを行う。メモリ４は、複数の書き込み単位からなる消去単位でデータを消去する。
【００１９】
メモリデバイス２は、例えばＵＦＳ（Universal Flash Storage）である。メモリ４は、不揮発にデータを記憶するＮＡＮＤ型フラッシュメモリからなる。
【００２０】
メモリ４は、ページ単位でデータの書き込みおよび読み出しを行う。ページは、複数の接続されたメモリセルの集合のメモリ空間からなり、固有の物理アドレスが割り当てられている。
【００２１】
メモリ４は、複数のメモリセルからなるメモリセルアレイと、メモリセルとの間でデータの入出力を行うページバッファとを備える。ページバッファは、１ページ分のデータを保持する。メモリ４へのデータ書き込みを行う場合、メモリコントローラ３は、書き込みコマンドとともに書き込み先を示すページアドレスと１ページ分の書き込みデータとをメモリ４に送信する。
【００２２】
メモリ４は、メモリコントローラ３からの書き込みデータをページバッファに格納し、ページバッファ内の書き込みデータをページアドレスで指定されたメモリセルへと書き込む。このメモリセルへの書き込み動作が開始されると、メモリ４は、メモリコントローラ３にビジー信号を出力する。ビジー信号がレディー信号に切り替わった後、次のページアドレスに対して上記と同様の動作を行う。
【００２３】
メモリ４からのデータの読み出しを行う場合、メモリコントローラ３は、読み出しコマンドとともに読み出し先を示すページアドレスをメモリ４に送信する。メモリ４は、ページアドレスで指定されたメモリセルからページバッファに１ページ分のデータを読み出す。このメモリセルからの読み出し動作が開始されると、メモリ４は、メモリコントローラ３にビジー信号を出力する。ビジー信号がレディー信号に切り替わった後、ページバッファに格納された読み出しデータがメモリコントローラ３に出力される。
【００２４】
（メモリコントローラの構成）
メモリコントローラ３は、ホスト１から複数のトランザクションの実行要求を受信する。メモリコントローラ３は、ホスト１からの複数のトランザクションの実行要求に応答して、メモリ４に対して読み出し、書き込み、及び消去等を命令する。メモリコントローラ３は、ホスト１から書き込みを指示されたデータをメモリ４に書き込み、ホスト１から読み出しを指示されたデータをメモリ４から読み出してホスト１に送信する。
【００２５】
また、メモリコントローラ３は、メモリ４におけるメモリ空間を管理する。管理は、アドレスの管理、及びメモリ４の状態の管理を含む。アドレスのマッピングは、論理アドレスと物理アドレスのマッピングである。物理アドレスはメモリ４により提供される記憶領域を特定する領域である。具体的には、メモリコントローラ３は、書き込みを指示されると、書き込みを指示されたデータの書き込み先の論理アドレスと、当該データが書き込まれたメモリ中の記憶領域の物理アドレスをアドレス変換テーブルにより管理する。
【００２６】
メモリコントローラ３は、ある論理アドレスと関連付けられた物理アドレスを知得し、知得された物理アドレスの記憶領域からデータを読み出す。メモリ４の状態の管理は、メモリ４の記憶領域の管理、ウェアレベリング、ガベージコレクション、及びリフリッシュを含む。
【００２７】
メモリコントローラ３は、ホストインターフェイス（ホストＩ／Ｆ）５、送信部６、受信部７、ＣＰＵ８、テーブルキャシュ９、データ保持内部メモリ１０、メモリインターフェイス（メモリＩ／Ｆ）１１を備える。
【００２８】
メモリコントローラ３は、例えば、ハードウェアとしてＣＰＵ８等のプロセッサを含み、ファームウェア（プログラム）がプロセッサによって実行されることによって、ホストインターフェイス５、送信部６、受信部７、ＣＰＵ８、テーブルキャシュ９、データ保持内部メモリ１０、メモリインターフェイス１１の各々の機能の一部または全部を実行する。
【００２９】
ホストインターフェイス５、送信部６、受信部７、ＣＰＵ８、テーブルキャシュ９、データ保持内部メモリ１０、メモリインターフェイス１１は、バス１２により相互に接続されている。
【００３０】
ホストインターフェイス５は、ホスト１と接続され、ホスト１との通信を司る。例えば、ホストインターフェイス５は、ホスト１から受信した命令及びデータをそれぞれ、ＣＰＵ８、テーブルキャシュ９、データ保持内部メモリ１０に転送する。
【００３１】
テーブルキャシュ９は、ホスト１が指定した論理アドレスに対して、メモリ４の物理アドレスに変換するためのテーブル情報を保持する。データ保持内部メモリ１０は、メモリ４に対する書き込みデータ、読み出しデータを一時的に記憶し、バッファとしての機能を有する。図示しないＲＯＭは、ＣＰＵ８によって制御される制御プログラム等を記憶している。
【００３２】
メモリインターフェイス１１は、メモリ４と接続され、メモリ４との通信を司る。メモリインターフェイス１１は、ＮＡＮＤインターフェイスに従った信号の送受信を行う。ＮＡＮＤインターフェイスに従った信号は、例えば種々の制御信号及び入出力信号を含む。入出力信号は、コマンド、書き込みデータ及び読み出しデータ、アドレス信号、各種の管理データを含む。
【００３３】
ＣＰＵ８は、例えば、プロセッサの機能の一部により実現される。ＣＰＵ８は、ホストインターフェイス５、テーブルキャシュ９、データ保持内部メモリ１０、メモリインターフェイス１１を制御する。ＣＰＵ８は、書き込み及び読み出しの際に、テーブルキャシュ９、データ保持内部メモリ１０及びメモリインターフェイス１１を制御しつつ、メモリ４の状態を管理する。
【００３４】
ホストインターフェイス５は、ホスト１にデータを送信する送信部６、ホスト１からコマンド、データ等を受信する受信部７を備える。送信部６は、通常転送キュー１３及び優先転送キュー１４、転送パケット優先判定部１５、転送キュー選択部１６、転送パケット選択部１７を備える。
【００３５】
転送パケット優先判定部１５、転送キュー選択部１６、転送パケット選択部１７は、ハードウェア又はファームウェア（プログラム）のいずれで構成しても良い。
【００３６】
通常転送キュー１３及び優先転送キュー１４は、記憶部からなる。転送パケット優先判定部１５は、ホスト１から複数のトランザクションの実行要求がなされた状態において、複数のトランザクションの実行要求に対する応答の送信順番に対し、ＣＰＵ８からの送信要求と転送パケットのヘッダに含まれる送信情報とに基づき転送パケットが優先して送信すべき優先パケットであるかどうかを判定する。送信情報は、図２に示すパケットの種類の識別コード、パケットのサイズ（転送パケット長）、トランザクションのサイズ（データ長）、転送データのアクセス領域、ホストの識別コード等の情報である。
【００３７】
転送キュー選択部１６は、転送パケットが優先パケットである場合に優先転送キュー１４を選択して優先転送キュー１４に優先パケットを蓄積し、転送パケットが優先パケットでない場合に通常転送キュー１３を選択して通常転送キュー１３に転送パケットを蓄積する。
【００３８】
転送パケット選択部１７は、優先転送キュー１４と通常転送キュー１３の蓄積状態を確認し、転送パケットを選択する。優先転送キュー１４に転送パケットが蓄積されている場合、通常転送キュー１３の転送パケットより優先的に選択してホスト１に転送する。
【００３９】
なお、転送パケットは、図２に示すように、パケットの種類の識別コード、パケットのサイズ（転送パケット長）、トランザクションのサイズ（データ長）、転送データのアクセス領域、ホストの識別コード及びデータを有して構成される。パケットの種類の識別コード、パケットのサイズ、トランザクションのサイズ、転送データのアクセス領域の情報は、転送パケットのヘッダに設けられる。パケットのサイズは、転送しようとしているデータのサイズである。トランザクションのサイズは、１つのトランザクション（命令）が要求する全てのデータサイズである。
【００４０】
（転送パケットの種類による優先判定処理）
次に、このように構成された第１実施形態のメモリデバイスの転送パケットの種類による優先判定処理について図３及び図４を参照しながら、詳細に説明する。
【００４１】
まず、ホスト１からメモリデバイス２に対して、リードコマンド又はライトコマンドなどの複数のトランザクションの実行要求を送信する。これに対し、メモリコントローラ３内のＣＰＵ８は、ホスト1が送信した複数のトランザクションの実行要求を受信する。
【００４２】
メモリコントローラ３は、図５に示すように、リードコマンドを受信した場合、メモリ４からデータを読み出してホスト１に転送する。読み出し要求に対する全ての読み出したデータの転送が完了すると、読み出し完了ステータスを通知する。
【００４３】
メモリコントローラ３は、図６に示すように、ライトコマンドを受信した場合、ホスト１からライトデータを受信するために、ホスト1にライトデータ送信要求を送信する。UFSの場合、ライトデータ送信要求とはRTT UPIUである。ホスト1はライトデータ送信要求を受信すると、ライトデータをメモリデバイス2に送信する。メモリコントローラ3はライトデータを受信すると、メモリ4にデータを書き込む。ライトコマンドに含まれる書き込み要求のサイズに従い、ライトデータ送信要求とライトデータの受信を繰り返し、全てのライトデータを受信し、メモリ4に書き込みが完了すると、書き込み完了ステータスを通知する。UFSの場合、読み出し完了ステータスおよび、書き込み完了ステータスはResponse UPIUとしてホスト1に送信される。このように、ＣＰＵ８は、複数のトランザクションの実行要求に対する応答としてパケットの送信要求を発生させ、送信要求を送信部６に送る（ステップＳ１１）。
【００４４】
転送パケット優先判定部１５は、ＣＰＵ８からのパケットの送信要求と転送パケットのヘッダに含まれる送信情報とに基づき、複数のトランザクションに対する応答の送信順番に対して、転送パケットが、転送パケットの種類、例えばRTT UPIU又はResponseUPIU等の制御パケットであるかどうかを判定する（ステップＳ１２）。
【００４５】
転送パケットが、制御パケットである場合に、転送キュー選択部１６は、優先転送キュー１４を選択して優先転送キュー１４に制御パケットを蓄積する（ステップＳ１３）。
【００４６】
一方、転送パケットが、制御パケットではない通常のパケットである場合には、通常転送キュー１３を選択して通常転送キュー１３に転送パケットを蓄積する（ステップＳ１４）。
【００４７】
次に、転送パケット選択部１７は、優先転送キュー１４にパケットが蓄積されているかどうかを判定する（ステップＳ１５）。転送パケット選択部１７は、優先転送キュー１４にパケットが蓄積されている場合には、優先転送キュー１４に蓄積されたパケットをホストデバイスに送信し（ステップＳ１６）、処理を終了する。
【００４８】
一方、転送パケット選択部１７は、通常転送キュー１３にパケットが蓄積されているかどうかを判定する（ステップＳ１７）。
【００４９】
転送パケット選択部１７は、通常転送キュー１３にパケットが蓄積されている場合には、通常転送キュー１３に蓄積されたパケットをホスト１に送信し（ステップＳ１８）、処理を終了する。
【００５０】
次に、従来のメモリデバイスのデータ送信順番を、図７（ａ）を参照しながら説明する。従来のメモリデバイスの受信部は、ホストからリードコマンドを受信した後、ライトコマンドを受信する。
【００５１】
次に、送信部は、リードコマンドに応答して、長いリードデータをホストに送信する。その後、ライトコマンドに応答して、ライトデータ送信要求をホスト１に送信する。その後、ホストからライトデータを受信する。
【００５２】
以上の処理では、リードデータの送信のように長いデータ転送を行っている最中では、ライトデータ送信要求を送信することができない。このため、ライトデータの受信が待たされてしまう。
【００５３】
次に、第１実施形態のメモリデバイスの送信順番を、図７（ｂ）を参照しながら説明する。
【００５４】
メモリデバイスの受信部７は、ホスト１からリードコマンドを受信した後、ライトコマンドを受信する。次に、送信部６は、リードコマンドに応答して、リードデータの先頭の一部をホスト１に送信する。
【００５５】
ＣＰＵ８は、複数のトランザクション（リードコマンド、ライトコマンド）に対する応答としてパケットの送信要求を発生させる。転送パケット優先判定部１５は、ＣＰＵ８からパケットの送信要求を受信し、複数のトランザクションに対する応答の送信順番に対して、転送パケットのヘッダに含まれるパケットの種類に基づきライトデータ送信要求がリードデータよりも優先して送信すべきであると判定する。
【００５６】
転送キュー選択部１６は、優先転送キュー１４を選択して優先転送キュー１４にライトデータ送信要求を蓄積する。転送パケット選択部１７は、優先転送キュー１４にライトデータ送信要求が蓄積されているので、優先転送キュー１４からライトデータ送信要求を選択して、ホスト１にライトデータ送信要求を送信する。その後、リードコマンドに応答して、残りのリードデータを送信するとともに、ライトデータを受信する。
【００５７】
このようにライトデータ送信要求等、制御パケットを優先して送信することで、ホスト１からライトデータ、次のコマンドＵＰＩＵ等のトランザクションを早く受信することができる。これにより、全てのトランザクションの処理にかかる時間を短縮することができる。
【００５８】
（変形例１  転送パケット長による優先判定処理）
第１実施形態のメモリシステムでは、転送パケット優先判定部１５が、転送パケットの種類に基づき、転送パケットが優先パケットであるか否かを判定した。変形例１の転送パケット優先判定部は、転送パケットのヘッダに含まれるパケットのサイズに基づき、転送パケット長が第１閾値以下である場合に転送パケットが優先パケットであると判定する。
【００５９】
図８に、第１実施形態のメモリコントローラの転送パケット長による優先転送処理のフローチャートを示す。
【００６０】
まず、転送パケット優先判定部１５は、転送パケット長が閾値以下かどうかを判定する（ステップＳ２１）。転送パケット優先判定部１５は、転送パケット長が第１閾値以下である場合には、優先転送キュー１４を選択して優先転送キュー１４に転送パケット長が第１閾値以下のパケットを蓄積する（ステップＳ２２）。
【００６１】
一方、転送パケットが、転送パケット長が第１閾値を超える通常のパケットである場合には、通常転送キュー１３を選択して通常転送キュー１３に転送パケット長が第１閾値を超えるパケットを蓄積する（ステップＳ２３）。
【００６２】
このような変形例１の実施形態のメモリシステムによれば、予め設定した第１閾値以下のパケットを他のパケットに対して優先して送信することで、次のトランザクションを早く実行できるようになる。
【００６３】
（変形例２  トランザクションのデータ転送長による優先判定処理）
第１実施形態のメモリシステムでは、転送パケット優先判定部１５は、転送パケットの種類により、転送パケットが優先パケットであるか否かを判定した。変形例２の転送パケット優先判定部は、転送パケットのヘッダに含まれるトランザクションサイズに基づき、トランザクションのデータ転送長が第２閾値以下の場合に転送パケットが優先パケットであると判定する。
【００６４】
図９に、第１実施形態のメモリコントローラのトランザクションのデータ転送長による優先転送処理のフローチャートを示す。
【００６５】
まず、転送パケット優先判定部１５は、トランザクションのデータ転送長が第２閾値以下かどうかを判定する（ステップＳ３１）。転送パケット優先判定部１５は、トランザクションのデータ転送長が第２閾値以下である場合には、優先転送キュー１４を選択して優先転送キュー１４にトランザクションのデータ転送長が第２閾値以下であるパケットを蓄積する（ステップＳ３２）。
【００６６】
一方、転送パケットが、トランザクションのデータ転送長が第２閾値を超える通常のパケットである場合には、通常転送キュー１３を選択して通常転送キュー１３に転送パケット長が第２閾値を超えるパケットを蓄積する（ステップＳ３３）。
【００６７】
このような変形例２の実施形態のメモリシステムでよれば、予め設定した第２閾値以下の短いトランザクションのデータを優先して送信することで、短いトランザクションが早く完了し、次のトランザクションを早く実行できるようになる。
【００６８】
（変形例３  読み出し領域がＳＬＣ領域であるときの優先判定処理）
メモリ４は、１つのセルトランジスタ（セル）において１ビット以上のデータを記憶することができる。書き込みの結果として１セルトランジスタ当たり１ビットのデータを記憶するものはシングルレベルセル（ＳＬＣ）と呼ぶ。１セルトランジスタ当たり２ビットのデータを記憶するものはマルチレベルセル（ＭＬＣ）と呼ぶ。１セルトランジスタ当たり３ビットのデータを記憶するものはトリプルレベルセル（ＴＬＣ）と呼ぶ。１セルトランジスタ当たりビット数が増加するに従って、データ容量が大きい記憶素子である。
【００６９】
ＳＬＣ／ＭＬＣ等、読み出し／書き込みに要する時間が異なる領域が存在するＮＡＮＤフラッシュメモリにおいて、読み出し／書き込み時間が早いＳＬＣ領域のトランザクションのデータを優先して転送する。
【００７０】
図１０に、第１実施形態のメモリコントローラ３のメモリ４の読み出し領域がＳＬＣ領域であるときの優先判定処理のフローチャートを示す。
【００７１】
まず、転送パケット優先判定部１５は、転送パケットのヘッダに含まれる転送データのアクセス領域に基づき、メモリ４の読み出し／書き込み領域がＳＬＣ領域であるかどうかを判定する（ステップＳ４１）。転送パケット優先判定部１５は、メモリ４の読み出し／書き込み領域がＳＬＣ領域である場合には、優先転送キュー１４を選択して優先転送キュー１４にメモリ４の読み出し／書き込み領域がＳＬＣ領域のパケットを蓄積する（ステップＳ４２）。
【００７２】
一方、転送パケットが、メモリ４の読み出し／書き込み領域がＳＬＣ領域以外である場合には、通常転送キュー１３を選択して通常転送キュー１３にメモリ４の読み出し／書き込み領域がＳＬＣ領域以外の通常のパケットを蓄積する（ステップＳ４３）。
【００７３】
このような変形例３の実施形態のメモリシステムによれば、読み出し／書き込み時間が早いＳＬＣ領域のトランザクションのデータを優先して転送することで、次のトランザクションを早く実行することができるようになる。
【００７４】
また、ＳＬＣ領域は、データのリテンション性能が高いため、一般にシステムデータを保持していることが多く、優先してデータを転送することができる。なお、転送パケット優先判定部１５は、メモリのＳＬＣ領域等の種類によって、転送パケットが優先パケットであるか否かを判定した。この代わりに、転送パケット優先判定部１５は、メモリのアクセス領域によって、転送パケットが優先パケットであるか否かを判定してもよい。あるいは、転送パケット優先判定部１５は、図２に示すヘッダに付されたホスト１の識別コードによって、転送パケットが優先パケットであるか否かを判定してもよい。
【００７５】
なお、実施形態のメモリシステムは、上述した第１実施形態のメモリシステムに限定されるものではない。転送パケット選択部１７は、優先転送キュー１４に蓄積されたパケットの量が所定量を超えた場合には、通常転送キュー１３に蓄積されたパケットを読み出して、読み出したパケットをホストデバイス１に転送しても良い。
【００７６】
また、パケットを優先転送キュー１４に蓄積されている時間をタイマでカウントし、転送パケット選択部１７は、タイマでカウントされた時間が所定時間を超えたとき、通常転送キュー１３に蓄積されたパケットを読み出して、読み出したパケットをホストデバイス１に転送しても良い。
【００７７】
このようにすることで、通常転送キュー１３に蓄積されたパケットを定期的にホストデバイス１に転送することができるので、通常転送キュー１３に蓄積されたパケットのホストデバイス１への転送が大幅に遅れることをなくすことができる。
【００７８】
なお、第１実施形態のメモリデバイスは、転送パケットの種類による優先判定処理、転送パケット長による優先判定処理、トランザクションのデータ転送長による優先判定処理、読み出し領域がＳＬＣ領域であるときの優先判定処理を組み合わせて用いてもよい。
【００７９】
（第２実施形態）
図１１に示す第２実施形態のメモリデバイス２ａは、ＵＦＳデバイスでの構成例である。ＵＦＳでは、ＯＳＩ（Open Systems Interconnection）参照モデルのレイヤＬ１．５〜Ｌ４までの機能として、ＵｎｉＰｒｏ（Unified Protocol）規格を参照している。
【００８０】
図１２に、第２実施形態のメモリコントローラに用いられるＵｎｉＰｒｏの構成を示す。ＯＳＩ参照モデルは、物理レイヤＬ１、データリンクレイヤＬ２、ネットワークレイヤＬ３、トランスポートレイヤＬ４、セッションレイヤＬ５、プレゼンテーションレイヤＬ６、アプリケーションレイヤＬ７からなる。ＵｎｉＰｒｏは、物理アダプタＬ１．５、データリンクレイヤＬ２、ネットワークレイヤＬ３、トランスポートレイヤＬ４までの機能である。
【００８１】
アプリケーションプロトコルＬＡ（アプリケーションレイヤに相当）は、セッションレイヤＬ５、プレゼンテーションレイヤＬ６、アプリケーションレイヤＬ７に相当する。アプリケーションプロトコルＬＡ（アプリケーションレイヤ）は、ＵｎｉＰｒｏと接続される。また、ＵｎｉＰｒｏの物理アダプタＬ１．５は、物理レイヤL1であるPHYと接続される。、PHYは高速シリアル伝送である。
【００８２】
物理レイヤＬ１では、伝送経路上のデータ表現方式、インターフェイスの形状等のネットワークの接続、伝送に関する物理的、物質的な方式が規定されている。データリンクレイヤＬ２では、伝送経路を構成し、直接接続されている通信機器間でのデータの識別と経路の選択とに関する方式が規定されている。ネットワークレイヤＬ３では、第２レイヤ以下のプロトコルを用いて接続されているネットワーク同士の通信を行うための方式が規定されている。
【００８３】
トランスポートレイヤＬ４では、データの送受信を行う端末同士でデータが正しく手順を踏んで送り届けられたかという管理と信頼性の確保のための方式が規定されている。セッションレイヤＬ５では、データが流れる論理的な回路の確立、切断、回線状態等の管理方式が規定されている。
【００８４】
プレゼンテーションレイヤＬ６では、文字コード、圧縮形式等、外部入力装置から読み込んだ機器固有のデータ形式をネットワーク共通の形式に変換するための方式が規定されている。アプリケーションレイヤＬ７では、ネットワークを通じて通信するアプリケーションが相互にデータをやり取りする場合に必要とする共通のデータ構造等が規定される。
【００８５】
図１１に示すメモリデバイス２ａは、メモリコントローラ３ａ、メモリ４を備える。メモリコントローラ３ａは、ホストインターフェイス５ａ、送信部６ａ、受信部７、ＣＰＵ８、テーブルキャシュ９、データ保持内部メモリ１０、メモリＩ／Ｆ１１を備える。
【００８６】
ホストインターフェイス６ａは、ホストデバイス１にデータを送信する送信部６ａ、ホストデバイス１からコマンド、データ等を受信する受信部７を備える。送信部６ａは、アプリケーションレイヤ１８、ＵｎｉＰｒｏ１９、物理レイヤ（ＰＨＹ）２０とを備える。
【００８７】
ＵｎｉＰｒｏ１９には、データの転送の優先順位を持たせるＴＣ（Traffic Class、トラフィッククラス）が定義されている。トラフィッククラスＴＣは、パケットの属性であり、パケットに優先順位を付けることできる。優先順位は、トラフィッククラスＴＣ０よりもトラフィッククラスＴＣ1の方が高い。
【００８８】
アプリケーションレイヤ１８とＵｎｉＰｒｏ１９とは、CPortと呼ばれるインターフェイスで接続されている。CPortは、ＵｎｉＰｒｏとその上位を接続するためのインターフェイスである。CPort毎にトラフィッククラスＴＣを設定する。即ち、CPort0（第１Cポートに相当）に対してトラフィッククラスＴＣ０を設定し、CPort1（第２Cポートに相当）に対してトラフィッククラスＴＣ１を設定する。
【００８９】
アプリケーションレイヤ１８は、Cport0転送キュー１３ａ、CPort1転送キュー１４ａ、転送パケット優先判定部１５ａ、転送port選択部１６ａを備える。ＵｎｉＰｒｏ１９は、CPort選択部２１、CPort0バッファ２２ａ、CPort1バッファ２２ｂ、バッファ選択部２３を備える。CPort0転送キュー１３ａは、第１CPort転送キューに相当する。CPort1転送キュー１４ａは、第２CPort転送キューに相当する。
【００９０】
CPort0転送キュー１３ａは、CPort0に接続される。CPort1転送キュー１４ａは、CPort1に接続される。
【００９１】
転送パケット優先判定部１５ａは、ホストデバイス１から複数のトランザクションの実行要求がなされた状態において、複数のトランザクションの実行要求に対する応答の送信順番に対し、転送パケットが他の転送パケットに対して優先して送信すべき優先パケットであるかどうかを判定する。
【００９２】
転送port選択部（転送ポート選択部）１６ａは、転送パケットが優先パケットである場合にCPort1転送キュー１４ａを選択してCPort1転送キュー１４ａに優先パケットを蓄積し、転送パケットが優先パケットでない場合にCPort0転送キュー１３ａを選択してCPort0転送キュー１３ａに転送パケットを蓄積する。
【００９３】
CPort選択部（Cポート選択部）２１は、転送パケットが優先パケットである場合にCPort1転送キュー１４ａに蓄積された優先パケットを選択して、CPort1バッファ２２ｂに記憶する。CPort選択部２１は、転送パケットが優先パケットでない場合にCPort0転送キュー１３ａに蓄積された転送パケットを選択して、CPort0バッファ２２ａに記憶する。CPort0バッファ２２ａは、第１Cポートバッファに相当する。CPort1バッファ２２ｂは、第２Cポートバッファに相当する。
【００９４】
バッファ選択部２３は、CPort0バッファ２２ａ又はCPort1バッファ２２ｂとの両方にパケットが蓄積されている場合には、CPort1バッファ２２ｂを選択して、CPort1バッファ２２ｂに蓄積されたパケットをＰＨＹ２０に出力する。
【００９５】
バッファ選択部２３は、CPort1バッファ２２ｂにパケットが蓄積されておらず、CPort0バッファ２２ａにパケットが蓄積されている場合には、CPort0バッファ２２ａに蓄積されたパケットをＰＨＹ２０に出力する。
【００９６】
ＰＨＹ２０はバッファ選択部２３により選択されたパケットをホスト１に送信する。
【００９７】
このように第２実施形態のメモリコントローラによれば、トラフィッククラスＴＣにより転送パケットに優先順位を付け、CPort毎にトラフィッククラスＴＣを設定する。優先して転送したいパケットを、優先順位が高いトラフィッククラスＴＣ１が割り当てられたCPort1に送り、通常転送データの途中であっても、トラフィッククラスＴＣ１を持つパケットを優先して転送することができる。
【００９８】
また、ＵｎｉＰｒｏ１９以下の通信層（レイヤＬ１．５〜Ｌ４）において、トラフィッククラスＴＣに従い、送信順番の追い越しが可能となる。
【００９９】
以上説明した少なくともひとつの実施形態のメモリコントローラによれば、ホストデバイス１からメモリデバイス２に対して、複数のトランザクションの実行を要求されている状態で、転送パケット優先判定部１５が複数のトランザクションに対する応答の送信順番に対し、送信情報に基づき転送パケットが優先して送信すべき優先パケットであるかどうかを判定する。
【０１００】
転送キュー選択部１６は、転送パケットが優先パケットである場合に優先転送キューを選択して優先転送キューに優先パケットを蓄積し、転送パケットが優先パケットでない場合に通常転送キューを選択して通常転送キューに転送パケットを蓄積する。
【０１０１】
転送パケット選択部１７は、転送パケットが優先パケットである場合に優先転送キューから優先パケットを選択し、転送パケットが優先パケットでない場合に通常転送キューから転送パケットを選択してホストデバイスに転送する。
【０１０２】
即ち、転送パケットの種類、パケット長等により優先すべきパケットを先に転送することで、全てのトランザクションの処理にかかる時間を短縮することができる。
【０１０３】
以上のように、いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０４】
１…ホスト、２…メモリデバイス、３…メモリコントローラ、４…メモリ、５…ホストインターフェイス、６，６ａ…送信部、７…受信部、８…ＣＰＵ、９…テーブルキャシュ、１０…データ保持内部メモリ、１１…メモリＩ／Ｆ、１２…バス、１３…通常転送キュー、１３ａ…CPort0転送キュー、１４…優先転送キュー、１４ａ…CPort1転送キュー、１５，１５ａ…転送パケット優先判定部、１６…転送キュー選択部、１７…転送パケット選択部、１８…アプリケーションレイヤ、１９…ＵｎｉＰｒｏ、２０…ＰＨＹ、２１…CPort選択部、２２ａ…CPort0バッファ、２２ｂ…CPort1バッファ、２３…バッファ選択部。
【図１】
2020144410.tif 000003
【図２】
2020144410.tif 000004
【図３】
2020144410.tif 000005
【図４】
2020144410.tif 000006
【図５】
2020144410.tif 000007
【図６】
2020144410.tif 000008
【図７】
2020144410.tif 000009
【図８】
2020144410.tif 000010
【図９】
2020144410.tif 000011
【図１０】
2020144410.tif 000012
【図１１】
2020144410.tif 000013
【図１２】
2020144410.tif 000014