(57)【特許請求の範囲】
【請求項１】
複数のプロセッサのそれぞれが発行するライト要求又はリード要求を含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するバッファメモリ装置であって、
前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持する複数のバッファメモリと、
前記メモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得部と、
前記メモリアクセス情報取得部によって取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定部と、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定部によって判定された場合、前記複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す制御部とを備え、
前記複数のプロセッサは、複数の物理プロセッサであり、
前記複数のバッファメモリのそれぞれは、前記複数の物理プロセッサのそれぞれに対応し、対応する物理プロセッサによって発行されたライト要求に対応するライトデータを保持し、
前記メモリアクセス情報取得部は、前記メモリアクセス情報として、前記メモリアクセス要求を発行した論理プロセッサ及び物理プロセッサを示すプロセッサ情報を取得し、
前記判定部は、前記プロセッサ情報が示す物理プロセッサとは異なる物理プロセッサで、かつ、前記プロセッサ情報が示す論理プロセッサと同じ論理プロセッサで以前に発行されたライト要求に対応するライトデータが前記複数のバッファメモリのいずれかに保持されている場合に、前記条件を満たすと判定し、
前記制御部は、前記条件を満たすと前記判定部によって判定された場合、前記条件を満たすバッファメモリに保持されているデータを前記メインメモリに掃き出す
バッファメモリ装置。
【請求項２】
前記判定部は、さらに、前記メモリアクセス情報に、少なくとも１つの前記バッファメモリに保持されたデータを前記メインメモリに掃き出すためのコマンド情報が含まれているか否かを判定し、
前記制御部は、さらに、前記メモリアクセス情報に前記コマンド情報が含まれていると前記判定部によって判定された場合、前記コマンド情報が示すバッファメモリに保持されたデータを前記メインメモリに掃き出す
請求項１記載のバッファメモリ装置。
【請求項３】
前記コマンド情報は、前記複数のバッファメモリの全てに保持されたデータを前記メインメモリに掃き出すための情報であり、
前記制御部は、さらに、前記メモリアクセス情報に前記コマンド情報が含まれていると前記判定部によって判定された場合、前記複数のバッファメモリの全てに保持されたデータを前記メインメモリに掃き出す
請求項２記載のバッファメモリ装置。
【請求項４】
前記制御部は、さらに、前記メモリアクセス情報に前記コマンド情報が含まれていると前記判定部によって判定された場合、当該メモリアクセス要求を発行したプロセッサに対応するバッファメモリに保持されたデータを前記メインメモリに掃き出す
請求項２記載のバッファメモリ装置。
【請求項５】
前記メインメモリは、キャッシャブル属性とアンキャッシャブル属性とのいずれかに属する複数の領域からなり、
前記メモリアクセス情報取得部は、さらに、前記メモリアクセス情報として、前記メモリアクセス要求に含まれるアドレスが示す領域の属性を示す属性情報と、当該メモリアクセス要求を発行したプロセッサを示すプロセッサ情報とを取得し、
前記判定部は、さらに、前記属性情報が示す属性が、前記アンキャッシャブル属性であり、かつ、バースト転送すべきデータが保持されることを示すバースト不可属性であるか否かを判定し、
前記制御部は、さらに、前記属性情報が示す属性が前記バースト不可属性であると前記判定部によって判定された場合、前記プロセッサ情報が示すプロセッサに対応するバッファメモリに保持されたデータを前記メインメモリに掃き出す
請求項１〜４のいずれか１項に記載のバッファメモリ装置。
【請求項６】
前記複数のバッファメモリは、さらに、前記ライトデータに対応するライトアドレスを保持し、
前記メモリアクセス情報取得部は、さらに、前記メモリアクセス要求がリード要求を含む場合に、前記メモリアクセス情報として、当該リード要求に含まれるリードアドレスを取得し、
前記判定部は、前記リードアドレスに一致するライトアドレスが前記複数のバッファメモリの少なくとも１つに保持されているか否かを判定し、
前記制御部は、前記リードアドレスに一致するライトアドレスが前記複数のバッファメモリの少なくとも１つに保持されていると前記判定部によって判定された場合、前記ライトアドレスに対応するライトデータ以前に前記複数のバッファメモリに保持されたデータを前記メインメモリに掃き出す
請求項１〜５のいずれか１項に記載のバッファメモリ装置。
【請求項７】
前記メモリアクセス情報取得部は、さらに、前記メモリアクセス要求がライト要求を含む場合に、当該ライト要求に含まれる第１ライトアドレスを取得し、
前記判定部は、前記第１ライトアドレスが、直前に入力されたライト要求に含まれる第２ライトアドレスに連続するか否かを判定し、
前記制御部は、前記第１ライトアドレスと前記第２ライトアドレスとが連続しないと前記判定部によって判定された場合、前記第２ライトアドレスに対応するライトデータ以前に前記複数のバッファメモリに保持されたデータを前記メインメモリに掃き出す
請求項１〜６のいずれか１項に記載のバッファメモリ装置。
【請求項８】
前記判定部は、さらに、前記複数のバッファメモリのそれぞれに保持されているデータのデータ量が所定の閾値に達したか否かを判定し、
前記制御部は、さらに、前記データ量が前記閾値に達したと前記判定部によって判定された場合、前記データ量が前記閾値に達したバッファメモリに保持されたデータを前記メインメモリに掃き出す
請求項１〜７のいずれか１項に記載のバッファメモリ装置。
【請求項９】
前記メインメモリは、キャッシャブル属性とアンキャッシャブル属性とのいずれかに属する複数の領域からなり、
前記バッファメモリ装置は、
前記ライト要求に含まれるライトアドレスが示す領域の属性が、前記アンキャッシャブル属性であり、かつ、バースト転送すべきデータが保持されることを示すバースト可属性である場合に、当該ライト要求に対応するライトデータを、前記複数のバッファメモリに書き込むデータ書込部を備え、
前記複数のバッファメモリは、前記データ書込部によって書き込まれたライトデータを保持する
請求項１記載のバッファメモリ装置。
【請求項１０】
前記バッファメモリ装置は、さらに、
キャッシュメモリを備え、
前記データ書込部は、さらに、前記ライトアドレスが示す領域の属性が、前記キャッシャブル属性であり、かつ、前記ライト要求に対応するライトデータを前記キャッシュメモリと前記メインメモリとに同時に書き込む場合に、当該ライト要求に対応するライトデータを、前記複数のバッファメモリに書き込み、
前記制御部は、前記条件を満たすと前記判定部によって判定された場合、前記条件を満たすバッファメモリに保持されているデータを前記メインメモリと前記キャッシュメモリとに掃き出す
請求項９記載のバッファメモリ装置。
【請求項１１】
前記バッファメモリは、複数の前記ライト要求に含まれる複数のライトアドレスと、当該ライト要求に対応する複数のライトデータとを保持する
請求項１記載のバッファメモリ装置。
【請求項１２】
複数のプロセッサのそれぞれが発行するライト要求又はリード要求を含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するバッファメモリ装置であって、
前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持する複数のバッファメモリと、
前記メモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得部と、
前記メモリアクセス情報取得部によって取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定部と、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定部によって判定された場合、前記複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す制御部とを備え、
前記複数のプロセッサは、複数の論理プロセッサであり、
前記複数のバッファメモリのそれぞれは、前記複数の論理プロセッサのそれぞれに対応し、対応する論理プロセッサによって発行されたライト要求に対応するライトデータを保持する
バッファメモリ装置。
【請求項１３】
複数のプロセッサのそれぞれが発行するライト要求又はリード要求を含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するバッファメモリ装置であって、
前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持する複数のバッファメモリと、
前記メモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得部と、
前記メモリアクセス情報取得部によって取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定部と、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定部によって判定された場合、前記複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す制御部とを備え、
前記複数のプロセッサは、複数のスレッドに対応する複数の仮想プロセッサであり、
前記複数のバッファメモリのそれぞれは、前記複数の仮想プロセッサのそれぞれに対応し、対応する仮想プロセッサによって発行されたライト要求に対応するライトデータを保持する
バッファメモリ装置。
【請求項１４】
複数のプロセッサのそれぞれが発行するライト要求とリード要求とを含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するメモリシステムであって、
前記複数のプロセッサと、
前記メインメモリと、
前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持する複数のバッファメモリと、
前記メモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得部と、
前記メモリアクセス情報取得部によって取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定部と、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定部によって判定された場合、前記複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す制御部とを備え、
前記複数のプロセッサは、複数の物理プロセッサであり、
前記複数のバッファメモリのそれぞれは、前記複数の物理プロセッサのそれぞれに対応し、対応する物理プロセッサによって発行されたライト要求に対応するライトデータを保持し、
前記メモリアクセス情報取得部は、前記メモリアクセス情報として、前記メモリアクセス要求を発行した論理プロセッサ及び物理プロセッサを示すプロセッサ情報を取得し、
前記判定部は、前記プロセッサ情報が示す物理プロセッサとは異なる物理プロセッサで、かつ、前記プロセッサ情報が示す論理プロセッサと同じ論理プロセッサで以前に発行されたライト要求に対応するライトデータが前記複数のバッファメモリのいずれかに保持されている場合に、前記条件を満たすと判定し、
前記制御部は、前記条件を満たすと前記判定部によって判定された場合、前記条件を満たすバッファメモリに保持されているデータを前記メインメモリに掃き出す
メモリシステム。
【請求項１５】
複数のプロセッサのそれぞれが発行するライト要求とリード要求とを含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するメモリシステムであって、
前記複数のプロセッサと、
前記メインメモリと、
前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持する複数のバッファメモリと、
前記メモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得部と、
前記メモリアクセス情報取得部によって取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定部と、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定部によって判定された場合、前記複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す制御部とを備え、
前記複数のプロセッサは、複数の論理プロセッサであり、
前記複数のバッファメモリのそれぞれは、前記複数の論理プロセッサのそれぞれに対応し、対応する論理プロセッサによって発行されたライト要求に対応するライトデータを保持する
メモリシステム。
【請求項１６】
複数のプロセッサのそれぞれが発行するライト要求とリード要求とを含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するメモリシステムであって、
前記複数のプロセッサと、
前記メインメモリと、
前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持する複数のバッファメモリと、
前記メモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得部と、
前記メモリアクセス情報取得部によって取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定部と、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定部によって判定された場合、前記複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す制御部とを備え、
前記複数のプロセッサは、複数のスレッドに対応する複数の仮想プロセッサであり、
前記複数のバッファメモリのそれぞれは、前記複数の仮想プロセッサのそれぞれに対応し、対応する仮想プロセッサによって発行されたライト要求に対応するライトデータを保持する
メモリシステム。
【請求項１７】
複数のプロセッサのそれぞれが発行するライト要求とリード要求とを含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するデータ転送方法であって、
前記複数のプロセッサによって発行されたメモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得ステップと、
前記メモリアクセス情報取得ステップで取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定ステップと、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定ステップで判定された場合、前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持している複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す掃き出しステップとを含み、
前記複数のプロセッサは、複数の物理プロセッサであり、
前記複数のバッファメモリのそれぞれは、前記複数の物理プロセッサのそれぞれに対応し、対応する物理プロセッサによって発行されたライト要求に対応するライトデータを保持しており、
前記メモリアクセス情報取得ステップでは、前記メモリアクセス情報として、前記メモリアクセス要求を発行した論理プロセッサ及び物理プロセッサを示すプロセッサ情報を取得し、
前記判定ステップでは、前記プロセッサ情報が示す物理プロセッサとは異なる物理プロセッサで、かつ、前記プロセッサ情報が示す論理プロセッサと同じ論理プロセッサで以前に発行されたライト要求に対応するライトデータが前記複数のバッファメモリのいずれかに保持されている場合に、前記条件を満たすと判定し、
前記掃き出しステップでは、前記条件を満たすと前記判定部によって判定された場合、前記条件を満たすバッファメモリに保持されているデータを前記メインメモリに掃き出す
データ転送方法。
【請求項１８】
複数のプロセッサのそれぞれが発行するライト要求とリード要求とを含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するデータ転送方法であって、
前記複数のプロセッサによって発行されたメモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得ステップと、
前記メモリアクセス情報取得ステップで取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定ステップと、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定ステップで判定された場合、前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持している複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す掃き出しステップとを含み、
前記複数のプロセッサは、複数の論理プロセッサであり、
前記複数のバッファメモリのそれぞれは、前記複数の論理プロセッサのそれぞれに対応し、対応する論理プロセッサによって発行されたライト要求に対応するライトデータを保持している
データ転送方法。
【請求項１９】
複数のプロセッサのそれぞれが発行するライト要求とリード要求とを含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するデータ転送方法であって、
前記複数のプロセッサによって発行されたメモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得ステップと、
前記メモリアクセス情報取得ステップで取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定ステップと、
前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定ステップで判定された場合、前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持している複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す掃き出しステップとを含み、
前記複数のプロセッサは、複数のスレッドに対応する複数の仮想プロセッサであり、
前記複数のバッファメモリのそれぞれは、前記複数の仮想プロセッサのそれぞれに対応し、対応する仮想プロセッサによって発行されたライト要求に対応するライトデータを保持している
データ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファメモリ装置、メモリシステム及びデータ転送方法に関し、特に、プロセッサから出力されたデータを一時的にバッファメモリに保持し、保持したデータをメインメモリに掃き出すバッファメモリ装置、メモリシステム及びデータ転送方法に関する。
【背景技術】
【０００２】
近年、マイクロプロセッサからメインメモリへのメモリアクセスを高速化させるために、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などからなる小容量で高速で動作可能なキャッシュメモリが利用されている。例えば、キャッシュメモリをマイクロプロセッサの内部、又は、その近傍に配置し、メインメモリに保持されたデータの一部をキャッシュメモリに記憶させておくことで、メモリアクセスを高速化させることができる。
【０００３】
従来、キャッシュメモリが、ライトデータを一時的に保持するためのバッファメモリの一例であるＳＴＢ（Ｓｔｏｒｅ  Ｂｕｆｆｅｒ）を備える技術が開示されている（特許文献１参照）。
【０００４】
図１８は、従来のメモリシステムの概略を示すブロック図である。同図に示すメモリシステムは、プロセッサ３１０と、メインメモリ３２０と、キャッシュ３３０とを備える。キャッシュ３３０は、ＳＴＢ３３１を備える。
【０００５】
同図に示す従来のメモリシステムでは、キャッシュ３３０は、連続するアドレスへのライトデータの書き込みを行う場合に、プロセッサ３１０から送られてくるライトデータをマージして、ＳＴＢ３３１に一時的に保持する。そして、キャッシュ３３０は、保持されたデータをメインメモリ３２０にバーストライトする。
【０００６】
例えば、メインメモリ３２０とキャッシュ３３０との間のデータバス幅が１２８バイトであると仮定する。ここで、プロセッサ３１０は、複数の４バイトのライトデータを、メインメモリ３２０内の連続するアドレスが示す連続領域に書き込む場合について説明する。キャッシュ３３０は、４バイトのライトデータをマージし、ＳＴＢ３３１に保持する。そして、キャッシュ３３０は、ＳＴＢ３３１に保持されたデータのサイズが１２８バイトになった場合に、メインメモリ３２０に１２８バイトのデータをバーストライトする。
【０００７】
以上のように、従来のメモリシステムでは、小さなサイズのライトデータをマージして、一時的に保持し、マージすることで得られた大きなサイズのデータをメインメモリにバーストライトする。これにより、データバスなどを有効に利用することができ、メモリ転送効率を向上させることができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−２６０１５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記従来技術によれば、以下のような課題がある。
【００１０】
ライト要求を発行するスレッド又はプロセッサなどのマスタが複数あり、複数のマスタからのライトデータをマージして保持する場合、すなわち、マルチスレッド又はマルチプロセッサなどのマルチマスタの場合には、バッファメモリに保持されるライトデータがいずれのマスタで発行されたライト要求に基づくものであるかを管理するのが困難である。さらに、同じスレッドが異なるマスタによって実行された場合などは、データのコヒーレンシを保持することができない。
【００１１】
以上のように、従来のメモリシステムは、複数のマスタで発行されたライト要求に対応するライトデータをマージして、マージしたライトデータをバースト転送する場合に適用することができないという課題がある。
【００１２】
そこで、本発明は、上記課題を解決するためになされたものであって、複数のライトデータをバーストライトする場合に適用することができ、かつ、データの転送効率を向上させるバッファメモリ装置、メモリシステム及びデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明のバッファメモリ装置は、複数のプロセッサのそれぞれが発行するライト要求又はリード要求を含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するバッファメモリ装置であって、前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持する複数のバッファメモリと、前記メモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得部と、前記メモリアクセス情報取得部によって取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定部と、前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定部によって判定された場合、前記複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す制御部とを備える。
【００１４】
これにより、複数のプロセッサのそれぞれに対応させてバッファメモリを備え、かつ、所定の条件に基づいてバッファメモリからのデータの掃き出しを制御することで、複数のプロセッサから出力されるライトデータの管理、例えば、データのコヒーレンシの保持などを容易にし、データの転送効率を向上させることができる。
【００１５】
具体的には、本発明のバッファメモリ装置は、ライトデータをマージする機能を有しており、マージを行うためにバッファメモリを備え、バッファメモリにマージしたデータをバースト転送することでデータの転送効率を向上させることができる。このとき、どのタイミングでバッファメモリからデータを掃き出すかを決定するための条件が定められているため、必要なときに、又は、コヒーレンシを保つようにデータの掃き出しを実行することができるので、データの転送効率を向上させることができる。
【００１６】
また、前記複数のプロセッサは、複数の物理プロセッサであり、前記複数のバッファメモリのそれぞれは、前記複数の物理プロセッサのそれぞれに対応し、対応する物理プロセッサによって発行されたライト要求に対応するライトデータを保持し、前記メモリアクセス情報取得部は、前記メモリアクセス情報として、前記メモリアクセス要求を発行した論理プロセッサ及び物理プロセッサを示すプロセッサ情報を取得し、前記判定部は、前記プロセッサ情報が示す物理プロセッサとは異なる物理プロセッサで、かつ、前記プロセッサ情報が示す論理プロセッサと同じ論理プロセッサで以前に発行されたライト要求に対応するライトデータが前記複数のバッファメモリのいずれかに保持されている場合に、前記条件を満たすと判定し、前記制御部は、前記条件を満たすと前記判定部によって判定された場合、前記条件を満たすバッファメモリに保持されているデータを前記メインメモリに掃き出してもよい。
【００１７】
これにより、異なる物理プロセッサ、かつ、同じ論理プロセッサで発行されたアクセス要求が発生した場合に、以前に発行されているライト要求に対応するデータをメインメモリに書き込むことで、データのコヒーレンシを保つことができる。なぜなら、メモリアクセス要求が、同じ論理プロセッサであるが、異なる物理プロセッサで発行された場合、異なるバッファメモリに同じ論理プロセッサから出力されたデータを保持してしまう恐れがあるが、この場合、各バッファメモリ間でのデータのコヒーレンシが保てなくなるためである。バッファメモリに保持されていたデータをメインメモリに掃き出すことで、バッファメモリ間でのデータのコヒーレンシの問題を無くすことができる。
【００１８】
また、前記判定部は、さらに、前記メモリアクセス情報に、少なくとも１つの前記バッファメモリに保持されたデータを前記メインメモリに掃き出すためのコマンド情報が含まれているか否かを判定し、前記制御部は、さらに、前記メモリアクセス情報に前記コマンド情報が含まれていると前記判定部によって判定された場合、前記コマンド情報が示すバッファメモリに保持されたデータを前記メインメモリに掃き出してもよい。
【００１９】
これにより、プロセッサからの指示に基づいて、容易にバッファメモリに保持されているデータをメインメモリに掃き出すことができ、メインメモリのデータを最新のデータに更新することができる。
【００２０】
また、前記コマンド情報は、前記複数のバッファメモリの全てに保持されたデータを前記メインメモリに掃き出すための情報であり、前記制御部は、さらに、前記メモリアクセス情報に前記コマンド情報が含まれていると前記判定部によって判定された場合、前記複数のバッファメモリの全てに保持されたデータを前記メインメモリに掃き出してもよい。
【００２１】
これにより、全てのバッファメモリのデータをメインメモリに掃き出すことができるので、メインメモリの全てのデータを最新のデータに更新することができる。
【００２２】
また、前記制御部は、さらに、前記メモリアクセス情報に前記コマンド情報が含まれていると前記判定部によって判定された場合、当該メモリアクセス要求を発行したプロセッサに対応するバッファメモリに保持されたデータを前記メインメモリに掃き出してもよい。
【００２３】
これにより、所定のバッファメモリのみを指定して、当該バッファメモリに保持されているデータをメインメモリに掃き出すことができる。よって、例えば、次にプロセッサが読み出す予定のデータなどをバッファメモリではなく、メインメモリに保持させておくことができる。
【００２４】
また、前記メインメモリは、キャッシャブル属性とアンキャッシャブル属性とのいずれかに属する複数の領域からなり、前記メモリアクセス情報取得部は、さらに、前記メモリアクセス情報として、前記ライト要求に含まれるライトアドレスが示す領域の属性を示す属性情報と、当該ライト要求を発行したプロセッサを示すプロセッサ情報とを取得し、前記判定部は、さらに、前記属性情報が示す属性が、前記アンキャッシャブル属性であり、かつ、バースト転送すべきデータが保持されることを示すバースト不可属性であるか否かを判定し、前記制御部は、さらに、前記属性情報が示す属性が前記バースト不可属性であると前記判定部によって判定された場合、前記プロセッサ情報が示すプロセッサに対応するバッファメモリに保持されたデータを前記メインメモリに掃き出してもよい。
【００２５】
これにより、プロセッサが発行したライト要求の順序を保つことができる。よって、データのコヒーレンシを保つことができる。
【００２６】
また、前記複数のバッファメモリは、さらに、前記ライトデータに対応するライトアドレスを保持し、前記メモリアクセス情報取得部は、さらに、前記メモリアクセス要求がリード要求を含む場合に、前記メモリアクセス情報として、当該リード要求に含まれるリードアドレスを取得し、前記判定部は、前記リードアドレスに一致するライトアドレスが前記複数のバッファメモリの少なくとも１つに保持されているか否かを判定し、前記制御部は、前記リードアドレスに一致するライトアドレスが前記複数のバッファメモリの少なくとも１つに保持されていると前記判定部によって判定された場合、前記ライトアドレスに対応するライトデータ以前に前記複数のバッファメモリに保持されたデータを前記メインメモリに掃き出してもよい。
【００２７】
これにより、常に、リードアドレスが示す領域からデータを読み出す前に、当該領域のデータを最新のデータに更新することができるので、古いデータをプロセッサが読み出してしまうことを防ぐことができる。
【００２８】
また、前記メモリアクセス情報取得部は、さらに、前記メモリアクセス要求がライト要求を含む場合に、当該ライト要求に含まれる第１ライトアドレスを取得し、前記判定部は、前記第１ライトアドレスが、直前に入力されたライト要求に含まれる第２ライトアドレスに連続するか否かを判定し、前記制御部は、前記第１ライトアドレスと前記第２ライトアドレスとが連続すると前記判定部によって判定された場合、前記第２ライトアドレスに対応するライトデータ以前に前記複数のバッファメモリに保持されたデータを前記メインメモリに掃き出してもよい。
【００２９】
これにより、通常、プロセッサは一連の処理を行う場合は、連続するアドレスが示す連続領域へアクセスすることが多いので、アドレスが連続しない場合には当該一連の処理とは異なる処理が始まったと推定することができる。このため、当該一連の処理に関わるデータをメインメモリに掃き出す。これにより、バッファメモリに他の処理に関わるデータを保持させることができ、バッファメモリを効率良く利用することができる。
【００３０】
また、前記判定部は、さらに、前記複数のバッファメモリのそれぞれに保持されているデータのデータ量が所定の閾値に達したか否かを判定し、前記制御部は、さらに、前記データ量が前記閾値に達したと前記判定部によって判定された場合、前記データ量が前記閾値に達したバッファメモリに保持されたデータを前記メインメモリに掃き出してもよい。
【００３１】
これにより、バッファメモリに保持されているデータ量が適当な量になった場合に、データを掃き出すことができる。例えば、データ量が、バッファメモリに保持できるデータの最大値、又は、バッファメモリとメインメモリとのデータバス幅に一致したときに、データを掃き出すことができる。
【００３２】
また、前記メインメモリは、キャッシャブル属性とアンキャッシャブル属性とのいずれかに属する複数の領域からなり、前記バッファメモリ装置は、前記ライト要求に含まれるライトアドレスが示す領域の属性が、前記アンキャッシャブル属性であり、かつ、バースト転送すべきデータが保持されることを示すバースト不可属性である場合に、当該ライト要求に対応するライトデータを、前記複数のバッファメモリに書き込むデータ書込部を備え、前記複数のバッファメモリは、前記データ書込部によって書き込まれたライトデータを保持してもよい。
【００３３】
これにより、バースト転送が可能な領域へデータを書き込む場合に、バッファメモリを利用することができる。つまり、メインメモリの領域が属する属性ごとに、バッファメモリを使用する・しないを切り替えることができる。よって、バッファメモリを有効に利用することができる。
【００３４】
また、前記バッファメモリ装置は、さらに、キャッシュメモリを備え、前記データ書込部は、さらに、前記ライトアドレスが示す領域の属性が、前記キャッシャブル属性であり、かつ、前記ライト要求に対応するライトデータを前記キャッシュメモリと前記メインメモリとに同時に書き込む場合に、当該ライト要求に対応するライトデータを、前記複数のバッファメモリに書き込み、前記制御部は、前記条件を満たすと前記判定部によって判定された場合、前記条件を満たすバッファメモリに保持されているデータを前記メインメモリと前記キャッシュメモリとに掃き出してもよい。
【００３５】
これにより、ライトデータをキャッシュメモリとメインメモリとに同時に書き込む処理（ライトスルー処理）を行う場合にも、バッファメモリを利用することができ、バッファメモリからキャッシュメモリへのバーストライトを行うことができる。
【００３６】
また、前記バッファメモリは、複数の前記ライト要求に含まれる複数のライトアドレスと、当該ライト要求に対応する複数のライトデータとを保持してもよい。
【００３７】
これにより、バッファメモリには複数のライトデータと複数のライトアドレスとを対応付けて保持させることができるので、ライトデータを管理すると共に、複数のライトデータを一括してメインメモリに掃き出すことができる。
【００３８】
また、前記複数のプロセッサは、複数の論理プロセッサであり、前記複数のバッファメモリのそれぞれは、前記複数の論理プロセッサのそれぞれに対応し、対応する論理プロセッサによって発行されたライト要求に対応するライトデータを保持してもよい。
【００３９】
また、前記複数のプロセッサは、複数のスレッドに対応する複数の仮想プロセッサであり、前記複数のバッファメモリのそれぞれは、前記複数の仮想プロセッサのそれぞれに対応し、対応する仮想プロセッサによって発行されたライト要求に対応するライトデータを保持してもよい。
【００４０】
これにより、ライトデータを容易に管理することができる。
【００４１】
また、本発明は、上記のバッファメモリ装置と、複数のプロセッサと、メインメモリとを備えるメモリシステムとしても実現することができる。
【００４２】
また、本発明は、データ転送方法としても実現することができ、本発明のデータ転送方法は、複数のプロセッサのそれぞれが発行するライト要求とリード要求とを含むメモリアクセス要求に従って、前記複数のプロセッサとメインメモリとの間でデータを転送するデータ転送方法であって、前記複数のプロセッサによって発行されたメモリアクセス要求の性質を示すメモリアクセス情報を取得するメモリアクセス情報取得ステップと、前記メモリアクセス情報取得ステップで取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する判定ステップと、前記メモリアクセス情報が示す性質が前記条件を満たすと前記判定ステップで判定された場合、前記複数のプロセッサのそれぞれに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持している複数のバッファメモリのうち、前記条件に対応するバッファメモリに保持されているデータを前記メインメモリに掃き出す掃き出しステップとを含む。
【００４３】
また、本発明は、データ転送方法に含まれるステップをコンピュータに実行させるプログラムとして実現してもよい。さらに、当該プログラムを記録したコンピュータ読み取り可能なＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの記録媒体、並びに、当該プログラムを示す情報、データ又は信号として実現してもよい。そして、それらプログラム、情報、データ及び信号は、インターネットなどの通信ネットワークを介して配信してもよい。
【発明の効果】
【００４４】
本発明のバッファメモリ装置、メモリシステム及びデータ転送方法によれば、複数のマスタから出力されるライトデータをバーストライトすることができ、メモリ転送効率を向上させることができる。
【図面の簡単な説明】
【００４５】
【図１】図１は、本実施の形態のプロセッサ、メインメモリ及びキャッシュを含むメモリシステムの概略構成を示すブロック図である。
【図２】図２は、本実施の形態のメインメモリの領域に設定された属性を示す図である。
【図３】図３は、本実施の形態のバッファメモリ装置の構成を示すブロック図である。
【図４】図４は、本実施の形態のメモリアクセス情報の一例を示す図である。
【図５】図５は、本実施の形態のバッファメモリ装置が備えるバッファメモリの概略を示す図である。
【図６】図６は、本実施の形態の複数の判定条件の一例を示す判定テーブルを示す図である。
【図７】図７は、本実施の形態の判定部の詳細な構成を示すブロック図である。
【図８】図８は、本実施の形態のバッファメモリ装置の動作を示すフローチャートである。
【図９】図９は、本実施の形態のバッファメモリ装置の書き込み処理を示すフローチャートである。
【図１０】図１０は、本実施の形態のバッファメモリ装置の読み出し処理を示すフローチャートである。
【図１１】図１１は、本実施の形態のバッファメモリ装置の属性判定処理を示すフローチャートである。
【図１２】図１２は、本実施の形態のバッファメモリ装置のコマンド判定処理を示すフローチャートである。
【図１３】図１３は、本実施の形態のバッファメモリ装置のリードアドレス判定処理を示すフローチャートである。
【図１４】図１４は、本実施の形態のバッファメモリ装置のライトアドレス判定処理を示すフローチャートである。
【図１５】図１５は、本実施の形態のバッファメモリ装置のバッファ量判定処理を示すフローチャートである。
【図１６】図１６は、本実施の形態のバッファメモリ装置のプロセッサ判定処理を示すフローチャートである。
【図１７】図１７は、本実施の形態のバッファメモリ装置が備えるバッファメモリの異なる概略を示す図である。
【図１８】図１８は、従来のメモリシステムの概略を示すブロック図である。
【発明を実施するための形態】
【００４６】
以下では、本発明のバッファメモリ装置、メモリシステム及びデータ転送方法について、実施の形態に基づいて図面を参照しながら詳細に説明する。
【００４７】
本実施の形態のバッファメモリ装置は、プロセッサから出力されたメインメモリへ書き込むためのデータを一時的に保持し、所定の条件が満たされた場合に、保持したデータをバーストライトする。これにより、データバスを有効に利用することができ、効率よくデータを転送することができる。
【００４８】
まず、本実施の形態のバッファメモリ装置が備えられる一般的なメモリシステムについて説明する。
【００４９】
図１は、本実施の形態のプロセッサ、メインメモリ及びキャッシュメモリを含むメモリシステムの概略構成を示すブロック図である。同図に示すように、本実施の形態のメモリシステムは、プロセッサ１０と、メインメモリ２０と、Ｌ１（レベル１）キャッシュ３０と、Ｌ２（レベル２）キャッシュ４０とを備える。
【００５０】
本実施の形態のバッファメモリ装置は、図１に示すようなシステムにおいて、例えば、プロセッサ１０とメインメモリ２０との間に備えられる。具体的には、バッファメモリ装置が備えるバッファメモリは、Ｌ２キャッシュ４０に備えられる。
【００５１】
プロセッサ１０は、メインメモリ２０へのメモリアクセス要求を発行し、発行したメモリアクセス要求を出力する。メモリアクセス要求は、例えば、データを読み出すためのリード要求、又は、データを書き込むためのライト要求である。リード要求は、データの読み出し先の領域を示すリードアドレスを含んでおり、ライト要求は、データの書き込み先の領域を示すライトアドレスを含んでいる。さらに、プロセッサ１０は、ライト要求を出力する場合、当該ライト要求に従ってメインメモリ２０に書き込むためのデータを出力する。
【００５２】
メインメモリ２０は、キャッシャブル属性とアンキャッシャブル属性とのいずれかに属する複数の領域からなり、当該領域にプログラム又はデータなどを記憶するＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの大容量のメインメモリである。プロセッサ１０から出力されるメモリアクセス要求（リード要求又はライト要求）に応じて、メインメモリ２０からのデータの読み出し、又は、メインメモリ２０へデータの書き込みが実行される。
【００５３】
Ｌ１キャッシュ３０とＬ２キャッシュ４０とは、プロセッサ１０がメインメモリ２０から読み出したデータの一部、及び、メインメモリ２０に書き込むデータの一部を記憶するＳＲＡＭなどのキャッシュメモリである。Ｌ１キャッシュ３０とＬ２キャッシュ４０とは、メインメモリ２０に比べて、容量は小さいが、高速で動作可能なキャッシュメモリである。また、Ｌ１キャッシュ３０は、Ｌ２キャッシュ４０よりプロセッサ１０の近くに配置される優先度の高いキャッシュメモリであり、通常、Ｌ２キャッシュ４０よりも小容量であるが高速で動作可能である。
【００５４】
Ｌ１キャッシュ３０は、プロセッサ１０から出力されるメモリアクセス要求を取得し、取得したメモリアクセス要求に含まれるアドレスに対応するデータを既に保持しているか（ヒット）保持していないか（ミス）を判定する。例えば、リード要求がヒットした場合、Ｌ１キャッシュ３０は、当該リード要求に含まれるリードアドレスに対応するデータをＬ１キャッシュ３０内部から読み出し、読み出したデータをプロセッサ１０に出力する。なお、リードアドレスに対応するデータとは、リードアドレスが示す領域に記憶されているデータである。ライト要求がヒットした場合、Ｌ１キャッシュ３０は、当該ライト要求に対応するデータをＬ１キャッシュ３０内部に書き込む。ライト要求に対応するデータとは、当該ライト要求と同時にプロセッサ１０から出力されるデータ（以下、ライトデータとも記載する）である。
【００５５】
リード要求がミスした場合、Ｌ１キャッシュ３０は、Ｌ２キャッシュ４０又はメインメモリ２０から当該リード要求に対応するデータを読み出し、読み出したデータをプロセッサ１０に出力する。リード要求に対応するデータとは、当該リード要求に含まれるリードアドレスが示すメインメモリ２０の領域に保持されているデータ（以下、リードデータとも記載する）である。ライト要求がミスした場合、Ｌ１キャッシュ３０は、リフィル処理を行い、タグアドレスを更新し、当該ライト要求と同時にプロセッサ１０から出力されるデータを書き込む。
【００５６】
Ｌ２キャッシュ４０は、プロセッサ１０から出力されるメモリアクセス要求を取得し、取得したメモリアクセス要求がヒットしたかミスしたかを判定する。リード要求がヒットした場合、Ｌ２キャッシュ４０は、当該リード要求に含まれるリードアドレスに対応するデータをＬ２キャッシュ４０内部から読み出し、Ｌ１キャッシュ３０を介して、読み出したデータをプロセッサ１０に出力する。ライト要求がヒットした場合、Ｌ１キャッシュ３０を介して、当該ライト要求に対応するデータをＬ２キャッシュ４０内部に書き込む。
【００５７】
リード要求がミスした場合、Ｌ２キャッシュ４０は、メインメモリ２０から当該リード要求に対応するデータを読み出し、Ｌ１キャッシュ３０を介して、読み出したデータをプロセッサ１０に出力する。ライト要求がミスした場合、Ｌ２キャッシュ４０は、リフィル処理を行い、Ｌ１キャッシュ３０を介して、タグアドレスを更新し、当該ライト要求に対応するデータを書き込む。
【００５８】
なお、図１に示すメモリシステムでは、メインメモリ２０と、Ｌ１キャッシュ３０と、Ｌ２キャッシュ４０とのコヒーレンシを持たせるための処理が行われている。例えば、ライト要求に従ってキャッシュメモリに書き込まれたデータは、ライトバック処理又はライトスルー処理によって、メインメモリ２０に書き込まれる。なお、ライトバック処理は、キャッシュメモリへデータを書き込んだ後、任意のタイミングでメインメモリにデータを書き込む処理である。ライトスルー処理は、キャッシュメモリへのデータの書き込みと、メインメモリへのデータの書き込みとを同時に実行する処理である。
【００５９】
また、ライト要求がミスした場合、プロセッサ１０は、Ｌ１キャッシュ３０をリフィル及び更新することなく、メインメモリ２０にデータを書き込んでもよい。Ｌ２キャッシュ４０についても同様である。
【００６０】
なお、図１では、Ｌ１キャッシュ３０がプロセッサ１０の外部に備えられる構成を示したが、プロセッサ１０が、Ｌ１キャッシュ３０を備えてもよい。
【００６１】
また、メインメモリ２０に限らず、ＩＯデバイスなどのその他の周辺デバイスとの間でデータを転送してもよい。周辺デバイスとは、プロセッサ１０との間でデータの転送を行う機器であり、例えば、キーボード、マウス、ディスプレイ、又は、フロッピー（登録商標）ディスクドライブなどである。
【００６２】
次に、本実施の形態のメインメモリ２０について説明する。
【００６３】
図２は、本実施の形態のアドレス空間に設定された属性を示す図である。アドレス空間の領域は、メインメモリ２０、及び、その他の周辺デバイスなどに割り当てられる。同図に示すように、メインメモリ２０は、キャッシャブル領域２１とアンキャッシャブル領域２２とから構成される。
【００６４】
キャッシャブル領域２１は、Ｌ１キャッシュ３０及びＬ２キャッシュ４０などのキャッシュメモリにキャッシュすべきデータを保持することができることを示すキャッシャブル属性に属する領域である。
【００６５】
アンキャッシャブル領域２２は、Ｌ１キャッシュ３０及びＬ２キャッシュ４０などのキャッシュメモリにキャッシュすべきでないデータを保持することができることを示すアンキャッシャブル属性に属する領域である。アンキャッシャブル領域２２は、バースト可領域２３とバースト不可領域２４とから構成される。
【００６６】
バースト可領域２３は、キャッシュメモリにキャッシュすべきでなく、かつ、バースト転送すべきデータを保持することができることを示すバースト可属性に属する領域である。バースト転送は、データを一括して転送することであり、バーストリード及びバーストライトなどである。バースト可領域２３は、例えば、リードセンシティブでない領域である。なお、リードセンシティブな領域は、リードするだけで保持していたデータの値が変わってしまうような領域のことである。
【００６７】
バースト不可領域２４は、キャッシュメモリにキャッシュすべきでなく、かつ、バースト転送すべきデータを保持することができないことを示すバースト不可属性に属する領域である。バースト不可領域２４は、例えば、リードセンシティブな領域である。
【００６８】
以上のように、本実施の形態のメインメモリ２０には、領域ごとに、３つの排他的な属性のいずれか１つが設定されている。なお、メインメモリ２０への属性の設定は、例えば、プロセッサ１０が備えるメモリ管理ユニット（ＭＭＵ：Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）が行う。プロセッサ１０は、物理アドレスと仮想アドレスとを対応付けたアドレス変換テーブルを記憶するＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）を備え、当該アドレス変換テーブルに属性を記憶させてもよい。
【００６９】
続いて、本実施の形態のバッファメモリ装置の構成について説明する。
【００７０】
図３は、本実施の形態のバッファメモリ装置の構成を示すブロック図である。同図のバッファメモリ装置１００は、複数のプロセッサ１０ａ、１０ｂ及び１０ｃのそれぞれが発行するメモリアクセス要求に従って、複数のプロセッサ１０ａ、１０ｂ及び１０ｃとメインメモリ２０との間でデータを転送する。以下では、複数のプロセッサ１０ａ、１０ｂ及び１０ｃを特に区別して説明する必要がない場合は、プロセッサ１０と記載する。
【００７１】
なお、バッファメモリ装置１００は、図１に示すＬ２キャッシュ４０と同一のチップに備えられるとする。また、図１で示したＬ１キャッシュ３０は、複数のプロセッサ１０ａ、１０ｂ及び１０ｃのそれぞれに備えられるものとし、図３には図示していない。ただし、Ｌ１キャッシュ３０は、複数のプロセッサ１０ａ、１０ｂ及び１０ｃとバッファメモリ装置１００との間に備えられ、複数のプロセッサ１０ａ、１０ｂ及び１０ｃで共有されてもよい。
【００７２】
図３に示すように、バッファメモリ装置１００は、メモリアクセス情報取得部１１０と、判定部１２０と、制御部１３０と、データ転送部１４０と、バッファメモリ１５０ａ、１５０ｂ及び１５０ｃと、キャッシュメモリ１６０とを備える。なお、以下では、バッファメモリ１５０ａ、１５０ｂ及び１５０ｃを特に区別して説明する必要がない場合は、バッファメモリ１５０と記載する。
【００７３】
メモリアクセス情報取得部１１０は、プロセッサ１０からメモリアクセス要求を取得し、取得したメモリアクセス要求から、プロセッサ１０で発行されたメモリアクセス要求の性質を示すメモリアクセス情報を取得する。メモリアクセス情報は、メモリアクセス要求に含まれている情報及びそれに付随する情報であり、コマンド情報と、アドレス情報と、属性情報と、プロセッサ情報となどを含む。
【００７４】
コマンド情報は、メモリアクセス要求がライト要求であるかリード要求であるかと、データ転送に関わる他のコマンドなどとを示す情報である。アドレス情報は、データを書き込む領域を示すライトアドレス、又は、データを読み出す領域を示すリードアドレスを示す情報である。属性情報は、ライトアドレス又はリードアドレスが示す領域の属性が、キャッシャブル属性、バースト可属性及びバースト不可属性のいずれであるかを示す情報である。プロセッサ情報は、メモリアクセス要求を発行したスレッド、論理プロセッサ（ＬＰ：Ｌｏｇｉｃａｌ  Ｐｒｏｃｅｓｓｏｒ）及び物理プロセッサ（ＰＰ：Ｐｈｙｓｉｃａｌ  Ｐｒｏｃｅｓｓｏｒ）を示す情報である。
【００７５】
なお、属性情報は、メモリアクセス要求に含まれていなくてもよい。この場合、メモリアクセス情報取得部１１０は、メインメモリ２０のアドレスと当該アドレスが示す領域の属性とを対応付けたテーブルを保持し、アドレス情報と当該テーブルとを参照することで、属性情報を取得してもよい。
【００７６】
ここで、図４を参照する。図４は、本実施の形態のメモリアクセス情報の一例を示す図である。同図には、メモリアクセス情報２０１及び２０２が示されている。
【００７７】
メモリアクセス情報２０１は、メモリアクセス要求が、物理プロセッサ“ＰＰ１”の論理プロセッサ“ＬＰ１”で発行されたライト要求であり、“ライトアドレス１”が示すバースト可属性に属する領域にデータを書き込むことを示すライトコマンドを含んでいることを示している。また、当該ライト要求には、“Ａｌｌ  Ｓｙｎｃ”コマンドが含まれていることを示している。
【００７８】
メモリアクセス情報２０２は、メモリアクセス要求が、物理プロセッサ“ＰＰ１”の論理プロセッサ“ＬＰ１”で発行されたリード要求であり、“リードアドレス１”が示すバースト可属性に属する領域からデータを読み出すことを示すリードコマンドを含んでいることを示している。また、当該リード要求には、“Ｓｅｌｆ  Ｓｙｎｃ”コマンドが含まれていることを示している。
【００７９】
なお、“Ａｌｌ  Ｓｙｎｃ”及び“Ｓｅｌｆ  Ｓｙｎｃ”コマンドについては後述する。
【００８０】
図３に戻ると、判定部１２０は、メモリアクセス情報取得部１１０で取得されたメモリアクセス情報が示す性質が、予め定められた条件を満たすか否かを判定する。具体的には、判定部１２０は、メモリアクセス情報として取得したコマンド情報、属性情報、アドレス情報及びプロセッサ情報などと、制御部１３０を介してバッファメモリ１５０から取得したバッファ量情報とを用いて、条件の判定を行う。条件と、判定部１２０の処理との詳細は、後述する。なお、バッファ量情報は、バッファメモリ１５０のそれぞれに保持されたデータの量を示す情報である。
【００８１】
制御部１３０は、メモリアクセス情報が示す性質が条件を満たすと判定部１２０によって判定された場合、複数のバッファメモリ１５０ａ、１５０ｂ及び１５０ｃのうち、当該条件に対応するバッファメモリに保持されているデータをメインメモリに掃き出す。具体的には、制御部１３０は、バッファメモリ１５０に掃き出し命令を出力する。掃き出し命令は、データを掃き出す対象となるバッファメモリに出力され、掃き出し命令を受け取ったバッファメモリは、保持しているデータをメインメモリ２０に出力する。
【００８２】
また、制御部１３０は、制御情報をデータ転送部１４０に出力することで、データ転送部１４０を制御する。例えば、制御情報は少なくとも属性情報を含み、制御部１３０は、アドレスが示す領域の属性に応じて、ライトデータの書き込み先、及び、リードデータの読み出し先などを決定する。
【００８３】
さらに、制御部１３０は、複数のバッファメモリ１５０ａ、１５０ｂ及び１５０ｃのそれぞれに保持されているデータの量であるバッファ量を判定部１２０に出力する。
【００８４】
データ転送部１４０は、制御部１３０の制御によって、プロセッサ１０とメインメモリ２０との間でデータを転送する。具体的には、プロセッサ１０からライト要求が出力された場合、メインメモリ２０に書き込むためにプロセッサ１０から出力されるライトデータを、バッファメモリ１５０、キャッシュメモリ１６０及びメインメモリ２０のいずれかに書き込む。また、プロセッサ１０からリード要求が出力された場合、キャッシュメモリ１６０及びメインメモリ２０のいずれかからリードデータを読み出し、読み出したリードデータをプロセッサ１０に出力する。どのメモリを利用するかは、アドレスが示す領域の属性に応じて、制御部１３０によって決定される。
【００８５】
図３に示すように、データ転送部１４０は、第１データ転送部１４１と、第２データ転送部１４２と、第３データ転送部１４３とを備える。
【００８６】
第１データ転送部１４１は、アドレスが示す領域がバースト可属性に属する場合に、データの転送を行う。ライト要求が入力された場合は、第１データ転送部１４１は、当該ライト要求に対応するライトデータをバッファメモリ１５０に書き込む。複数のバッファメモリ１５０ａ、１５０ｂ及び１５０ｃのいずれに書き込むかは、制御情報に含まれるプロセッサ情報によって決定される。具体的には、ライト要求を発行したプロセッサに対応するバッファメモリにライトデータを書き込む。リード要求が入力された場合は、第１データ転送部１４１は、当該リード要求に対応するリードデータをメインメモリ２０から読み出し、読み出したリードデータをプロセッサ１０に出力する。
【００８７】
第２データ転送部１４２は、アドレスが示す領域がバースト不可属性に属する場合に、データの転送を行う。ライト要求が入力された場合は、第２データ転送部１４２は、当該ライト要求に対応するライトデータをメインメモリ２０に書き込む。リード要求が入力された場合は、第２データ転送部１４２は、当該リード要求に対応するリードデータをメインメモリ２０から読み出し、読み出したリードデータをプロセッサ１０に出力する。
【００８８】
第３データ転送部１４３は、アドレスが示す領域がキャッシャブル属性に属する場合に、データの転送を行う。
【００８９】
ライト要求が入力された場合、第３データ転送部１４３がライトバック処理とライトスルー処理のいずれを行うかによって、ライトデータの書き込み先が異なる。
【００９０】
ライトバック処理を行う場合、第３データ転送部１４３は、当該ライト要求がヒットするかミスするかを判定する。当該ライト要求がヒットした場合、キャッシュメモリ１６０にライトデータを書き込む。当該ライト要求がミスした場合、第３データ転送部１４３は、ライト要求に含まれるアドレス（タグアドレス）とライトデータとをキャッシュメモリ１６０に書き込む。いずれの場合も、キャッシュメモリ１６０に書き込まれたライトデータは、任意のタイミングでメインメモリ２０に書き込まれる。
【００９１】
ライトスルー処理を行う場合、第３データ転送部１４３は、当該ライト要求がヒットするかミスするかを判定する。当該ライト要求がヒットした場合、第３データ転送部１４３は、バッファメモリ１５０にライトアドレスとライトデータとを書き込む。バッファメモリ１５０に書き込まれたライトデータは、後続のメモリアクセス要求の性質が、条件が満たすと判定部１２０によって判定された場合に、制御部１３０の制御に従って、バッファメモリ１５０からキャッシュメモリ１６０とメインメモリ２０とにバーストライトされる。
【００９２】
当該ライト要求がミスした場合も同様に、第３データ転送部１４３は、バッファメモリ１５０にライトアドレスとライトデータとを書き込む。バッファメモリ１５０に書き込まれたライトデータとライトアドレスとが、後続のメモリアクセス要求の性質が、条件が満たすと判定部１２０によって判定された場合に、バッファメモリ１５０からキャッシュメモリ１６０とメインメモリ２０とにバーストライトされる。
【００９３】
リード要求が入力された場合、第３データ転送部１４３は、当該リード要求がヒットするかミスするかを判定する。当該リード要求がヒットした場合、第３データ転送部１４３は、キャッシュメモリ１６０からリードデータを読み出し、読み出したリードデータをプロセッサ１０に出力する。
【００９４】
当該リード要求がミスした場合は、第３データ転送部１４３は、メインメモリ２０からリードデータを読み出し、読み出したリードデータとリードアドレスとをキャッシュメモリ１６０に書き込む。そして、第３データ転送部１４３は、キャッシュメモリ１６０からリードデータを読み出し、読み出したリードデータをプロセッサ１０に出力する。なお、メインメモリ２０から読み出したリードデータをキャッシュメモリ１６０に書き込むのと同時に、プロセッサ１０に出力してもよい。
【００９５】
バッファメモリ１５０ａ、１５０ｂ及び１５０ｃのそれぞれは、複数のプロセッサ１０ａ、１０ｂ及び１０ｃに対応し、対応するプロセッサによって発行されたライト要求に対応するライトデータを保持するストアバッファ（ＳＴＢ）である。バッファメモリ１５０は、複数のプロセッサ１０から出力されるライトデータをマージするために、一時的にライトデータを保持するバッファメモリである。
【００９６】
本実施の形態では、バッファメモリ１５０は、物理プロセッサごとに備えられる。また、一例として、バッファメモリ１５０は、最大で１２８バイトのデータを保持することができる。バッファメモリ１５０に保持されているデータは、制御部１３０からの制御に基づいて、メインメモリ２０にバーストライトされる。また、ライト要求がキャッシャブル属性に属する領域へのアクセスであり、かつ、ライトスルー処理を行う場合、バッファメモリ１５０に保持されているデータは、メインメモリ２０とキャッシュメモリ１６０とにバーストライトされる。
【００９７】
ここで、図５を参照する。図５は、本実施の形態のバッファメモリ装置１００が備えるバッファメモリ１５０の概略を示す図である。
【００９８】
同図に示すように、バッファメモリ１５０ａ、１５０ｂ及び１５０ｃはそれぞれ、物理プロセッサ（プロセッサ１０ａ（ＰＰ０）、１０ｂ（ＰＰ１）及び１０ｃ（ＰＰ２））に対応して備えられる。すなわち、バッファメモリ１５０ａは、プロセッサ１０ａから出力されたライトアドレスなどのバッファ制御情報とライトデータとを保持する。バッファメモリ１５０ｂは、プロセッサ１０ｂから出力されたライトアドレスなどのバッファ制御情報とライト情報とを保持する。バッファメモリ１５０ｃは、プロセッサ１０ｃから出力されたライトアドレスなどのバッファ制御情報とライトデータとを保持する。
【００９９】
バッファ制御情報は、ライト要求に含まれる情報であり、バッファメモリ１５０に書き込まれるデータを管理するための情報である。すなわち、バッファ制御情報は、少なくともライトアドレスを含み、対応するライトデータを出力した物理プロセッサ及び論理プロセッサなどを示す情報を含んでいる。
【０１００】
図５に示す例では、物理プロセッサごとに備えられたバッファメモリは、６４バイトのデータを保持することができる領域を２つ備えている。例えば、この２つの領域をスレッドごとに対応付けてもよい。
【０１０１】
キャッシュメモリ１６０は、例えば、４ウェイ・セット・アソシエイティブ方式のキャッシュメモリであり、所定バイト数（例えば、１２８バイト）のデータを保持することができる領域である複数（例えば、１６個）のキャッシュエントリを有するウェイを４個備える。各キャッシュエントリは、バリッドフラグと、タグアドレスと、ラインデータと、ダーティフラグとを有する。
【０１０２】
バリッドフラグは、当該キャッシュエントリのデータが有効であるか否かを示すフラグである。タグアドレスは、データの書き込み先、又は、データの読み出し先を示すアドレスである。ラインデータは、タグアドレス及びセットインデックスにより特定されるブロック中の所定バイト数（例えば、１２８バイト）のデータのコピーである。ダーティフラグは、キャッシュされたデータをメインメモリに書き戻す必要があるか否かを示すフラグである。
【０１０３】
なお、キャッシュメモリ１６０の連想度、すなわち、キャッシュメモリ１６０が有するウェイの数は４個ではなく、任意の値でもよい。また、１つのウェイが有するキャッシュエントリの個数、及び、１つのキャッシュエントリが有するラインデータのバイト数もいかなる値でもよい。さらに、キャッシュメモリ１６０は、他の方式のキャッシュメモリでもよい。例えば、ダイレクト・マップ方式、又は、フル・アソシエイティブ方式でもよい。
【０１０４】
ここで、判定部１２０が判定処理に用いる条件について説明する。バッファメモリにマージしたデータを効率よく転送し、かつ、データのコヒーレンシを保つためには、どのタイミングでデータを掃き出すかを決定するための条件が必要とされる。
【０１０５】
図６は、本実施の形態の複数の判定条件の一例を示す判定テーブルを示す図である。同図には、一例として、属性判定条件（“Ｕｎｃａｃｈｅ”）と、コマンド判定条件（“Ａｌｌ  Ｓｙｎｃ”と“Ｓｅｌｆ  Ｓｙｎｃ”）と、アドレス判定条件（“ＲＡＷ  Ｈａｚａｒｄ”と“Ａｎｏｔｈｅｒ  Ｌｉｎｅ  Ａｃｃｅｓｓ”）と、バッファ量判定条件（“Ｓｌｏｔ  Ｆｕｌｌ”）と、プロセッサ判定条件（“同ＬＰ、異ＰＰ”）とが示されている。
【０１０６】
属性判定条件は、属性情報を用いて、メモリアクセス要求に含まれるアドレスが示す領域の属性に従って、バッファメモリ１５０からのデータの掃き出し、及び、掃き出し対象となるバッファメモリを決定するための条件である。図６に示す“Ｕｎｃａｃｈｅ”条件は、属性判定条件の一例である。
【０１０７】
“Ｕｎｃａｃｈｅ”条件では、メモリアクセス要求に含まれるアドレスが示す領域の属性が、バースト不可属性であるか否かが、判定部１２０によって判定される。バースト不可属性であると判定された場合、制御部１３０は、当該メモリアクセス要求を発行した論理プロセッサと同じ論理プロセッサで発行されたメモリアクセス要求に対応するデータを保持しているバッファメモリから、保持しているデータをメインメモリ２０に掃き出す。なお、制御部１３０は、掃き出し対象のバッファメモリを判定する基準として、論理プロセッサではなく、スレッドに対応する仮想プロセッサを用いてもよい。
【０１０８】
コマンド判定条件は、コマンド情報を用いて、メモリアクセス要求に含まれるコマンドに従って、バッファメモリ１５０からのデータの掃き出し、及び、掃き出し対象となるバッファメモリを決定するための条件である。図６に示す“Ａｌｌ  Ｓｙｎｃ”条件と“Ｓｅｌｆ  Ｓｙｎｃ”条件とは、コマンド判定条件の一例である。
【０１０９】
“Ａｌｌ  Ｓｙｎｃ”条件では、メモリアクセス要求に“Ａｌｌ  Ｓｙｎｃ”コマンドが含まれるか否かが、判定部１２０によって判定される。“Ａｌｌ  Ｓｙｎｃ”コマンドは、全てのバッファメモリ１５０に保持される全てのデータをメインメモリ２０に掃き出すためのコマンドである。“Ａｌｌ  Ｓｙｎｃ”コマンドが含まれる場合（例えば、図４のメモリアクセス情報２０１）、制御部１３０は、全てのバッファメモリ１５０に保持された全てのデータをメインメモリ２０に掃き出す。
【０１１０】
“Ｓｅｌｆ  Ｓｙｎｃ”条件では、メモリアクセス要求に“Ｓｅｌｆ  Ｓｙｎｃ”コマンドが含まれるか否かが、判定部１２０によって判定される。“Ｓｅｌｆ  Ｓｙｎｃ”コマンドは、当該コマンドを発行したプロセッサが出力したデータのみをバッファメモリ１５０からメインメモリ２０に掃き出すためのコマンドである。“Ｓｅｌｆ  Ｓｙｎｃ”コマンドが含まれる場合（例えば、図４のメモリアクセス情報２０２）、制御部１３０は、当該メモリアクセス要求を発行した論理プロセッサと同じ論理プロセッサで発行されたメモリアクセス要求に対応するデータを保持しているバッファメモリから、保持しているデータをメインメモリ２０に掃き出す。なお、制御部１３０は、掃き出し対象のバッファメモリを判定する基準として、論理プロセッサではなく、スレッドに対応する仮想プロセッサを用いてもよい。
【０１１１】
アドレス判定条件は、アドレス情報を用いて、メモリアクセス要求に含まれるアドレスに従って、バッファメモリ１５０からのデータの掃き出し、及び、掃き出し対象となるバッファメモリを決定するための条件である。図６に示す“ＲＡＷ  Ｈａｚａｒｄ”条件と“Ａｎｏｔｈｅｒ  Ｌｉｎｅ  Ａｃｃｅｓｓ”条件とは、アドレス判定条件の一例である。
【０１１２】
“ＲＡＷ  Ｈａｚａｒｄ”条件では、リード要求に含まれるリードアドレスに一致するライトアドレスが、複数のバッファメモリ１５０の少なくとも１つに保持されているか否かが、判定部１２０によって判定される。リードアドレスに一致するライトアドレスがバッファメモリ１５０のいずれかに保持されている場合に、制御部１３０は、Ｈａｚａｒｄラインまでのデータを全て、すなわち、当該ライトアドレスに対応するライトデータ以前にバッファメモリ１５０に保持されたデータをメインメモリ２０に掃き出す。
【０１１３】
“Ａｎｏｔｈｅｒ  Ｌｉｎｅ  Ａｃｃｅｓｓ”条件では、ライト要求に含まれるライトアドレスが、直前に入力されたライト要求に含まれていたライトアドレスと関連するか否かが、判定部１２０によって判定される。具体的には、当該２つのライトアドレスが連続するアドレスであるか否かが判定される。なお、このとき、２つのライト要求は共に、同じ物理プロセッサで発行されたものとする。２つのライトアドレスが連続するアドレスでないと判定された場合、制御部１３０は、直前に入力されたライト要求に対応するライトデータ以前にバッファメモリ１５０に保持されたデータをメインメモリ２０に掃き出す。
【０１１４】
バッファ量判定条件は、バッファ量情報を用いて、バッファメモリ１５０に保持されたデータ量に従って、バッファメモリ１５０からのデータの掃き出し、及び、掃き出し対象となるバッファメモリを決定するための条件である。図６に示す“Ｓｌｏｔ  Ｆｕｌｌ”条件は、バッファ量判定条件の一例である。
【０１１５】
“Ｓｌｏｔ  Ｆｕｌｌ”条件では、バッファメモリ１５０に保持されたデータ量であるバッファ量がフルであるか（１２８バイト）否かが、判定部１２０によって判定される。バッファ量が１２８バイトであると判定された場合、制御部１３０は、当該バッファメモリのデータをメインメモリ２０に掃き出す。
【０１１６】
プロセッサ判定条件は、プロセッサ情報を用いて、どの論理プロセッサと物理プロセッサとがメモリアクセス要求を発行したかに従って、バッファメモリ１５０からのデータの掃き出し、及び、掃き出し対象となるバッファメモリを決定するための条件である。図６に示す“同ＬＰ、異ＰＰ”条件は、プロセッサ判定条件の一例である。
【０１１７】
“同ＬＰ、異ＰＰ”条件では、メモリアクセス要求を発行した論理プロセッサが、バッファメモリ１５０に保持されたライトデータに対応するライト要求を発行した論理プロセッサと同じであるか否かが判定される。さらに、当該メモリアクセス要求を発行した物理プロセッサが、当該ライト要求を発行した物理プロセッサと異なるか否かが判定される。つまり、プロセッサ情報が示す物理プロセッサとは異なる物理プロセッサで、かつ、プロセッサ情報が示す論理プロセッサが示す論理プロセッサと同じ論理プロセッサで以前に発行されたライト要求に対応するライトデータが少なくとも１つのバッファメモリに保持されているか否かが、判定部１２０によって判定される。論理プロセッサが同じであり、物理プロセッサが異なると判定された場合、制御部１３０は、当該論理プロセッサが以前に発行したライト要求に対応するデータをバッファメモリ１５０から掃き出す。なお、論理プロセッサではなく、スレッドが同じであるか否かが判定されてもよい。
【０１１８】
以上のように、本実施の形態では、それぞれの条件を満たす場合にバッファメモリ１５０からデータが掃き出される。なお、上述の条件全てを判定する必要はない。また、上述の条件に新たな条件を加えてもよく、または、上述の条件と新たな条件とを置き換えてもよい。
【０１１９】
例えば、“Ｓｌｏｔ  Ｆｕｌｌ”条件は、バッファ量がフルであるか否かを判定する条件であるが、この条件の代わりに、所定のバッファ量（バッファメモリに保持できるバッファ量の最大値の半分など）に達したか否かを判定する条件でもよい。例えば、バッファメモリ１５０に保持できるデータ量の最大値は１２８バイトであるが、バッファメモリ１５０とメインメモリ２０との間のデータバス幅が６４バイトである場合などに、バッファ量が６４バイトに達したか否かを判定してもよい。
【０１２０】
ここで、図７を参照する。図７は、本実施の形態の判定部１２０の詳細な構成を示すブロック図である。同図に示すように、判定部１２０は、属性判定部１２１と、プロセッサ判定部１２２と、コマンド判定部１２３と、アドレス判定部１２４と、バッファ量判定部１２５と、判定結果出力部１２６とを備える。
【０１２１】
属性判定部１２１は、メモリアクセス情報取得部１１０で取得されたメモリアクセス情報から属性情報を取得し、メモリアクセス要求に含まれるアドレスが示す領域の属性がキャッシャブル属性、バースト可属性、及び、バースト不可属性のいずれであるかを判定する。そして、属性判定部１２１は、得られた判定結果を判定結果出力部１２６に出力する。
【０１２２】
プロセッサ判定部１２２は、メモリアクセス情報取得部１１０で取得されたメモリアクセス情報からプロセッサ情報を取得し、メモリアクセス要求を発行したプロセッサが、複数の論理プロセッサ及び物理プロセッサのうち、いずれの論理プロセッサ及び物理プロセッサであるかを判定する。そして、プロセッサ判定部１２２は、得られた判定結果を判定結果出力部１２６に出力する。
【０１２３】
コマンド判定部１２３は、メモリアクセス情報取得部１１０で取得されたメモリアクセス情報からコマンド情報を取得し、メモリアクセス要求に所定のコマンドが含まれるか否かを判定する。さらに、コマンド判定部１２３は、メモリアクセス要求に所定のコマンドが含まれていた場合、当該所定のコマンドの種別を判定する。そして、コマンド判定部１２３は、得られた判定結果を判定結果出力部１２６に出力する。
【０１２４】
なお、所定のコマンドとは、例えば、他の条件に関わらずバッファメモリ１５０からデータを掃き出す命令である。一例として、上述したような“Ａｌｌ  Ｓｙｎｃ”コマンド及び“Ｓｅｌｆ  Ｓｙｎｃ”コマンドがある。
【０１２５】
アドレス判定部１２４は、メモリアクセス情報取得部１１０で取得されたメモリアクセス情報からアドレス情報を取得し、メモリアクセス要求に含まれるアドレスが、バッファメモリ１５０に既に保持されているか否かを判定する。さらに、アドレス判定部１２４は、当該メモリアクセス要求に含まれるアドレスが、直前のメモリアクセス要求に含まれていたアドレスに関連するか否かを判定する。具体的には、２つのアドレスが連続しているか否かを判定する。そして、アドレス判定部１２４は、得られた判定結果を判定結果出力部１２６に出力する。
【０１２６】
バッファ量判定部１２５は、制御部１３０を介して、バッファメモリ１５０からバッファ量を取得し、バッファ量が所定の閾値に達したか否かをバッファメモリごとに判定する。そして、バッファ量判定部１２５は、得られた判定結果を判定結果出力部１２６に出力する。なお、所定の閾値は、例えば、バッファメモリ１５０の最大値、又は、バッファメモリ装置１００とメインメモリ２０との間のデータバス幅などである。
【０１２７】
判定結果出力部１２６は、各判定部から入力される判定結果を基にして、図６に示す条件を満たすか否かを判定し、得られた判定結果を制御部１３０に出力する。具体的には、判定結果出力部１２６は、図６に示す条件を満たすと判定された場合、どのバッファメモリのどのデータをメインメモリ２０に掃き出すのかを示す掃き出し情報を制御部１３０に出力する。
【０１２８】
以上の構成により、本実施の形態のバッファメモリ装置１００は、複数のプロセッサ１０から出力されたライトデータを一時的に保持する複数のバッファメモリ１５０を備え、所定の条件が満たされた場合に、バッファメモリ１５０に保持されたデータをメインメモリ２０にバーストライトする。つまり、小さいサイズの複数のライトデータをマージするために、一時的にバッファメモリ１５０に保持し、マージすることで得られた大きいサイズのデータをメインメモリ２０にバーストライトする。このとき、複数のプロセッサ間でのデータの順序の保証を行うための条件に基づいて、バッファメモリ１５０からのデータの掃き出しの可否を決定する。
【０１２９】
これにより、データのコヒーレンシを保ちつつ、データの転送効率を向上させることができる。
【０１３０】
続いて、本実施の形態のバッファメモリ装置１００の動作について、図８〜図１６を用いて説明する。図８は、本実施の形態のバッファメモリ装置１００の動作を示すフローチャートである。
【０１３１】
まず、本実施の形態のバッファメモリ装置１００は、プロセッサ１０からメモリアクセス要求を取得することで、本実施の形態のデータ転送処理を実行する。
【０１３２】
メモリアクセス情報取得部１１０は、メモリアクセス要求からメモリアクセス情報を取得する（Ｓ１０１）。そして、取得したメモリアクセス情報を判定部１２０に出力する。また、必要に応じて、判定部１２０は、制御部１３０を介してバッファメモリ１５０からバッファ量情報を取得する。
【０１３３】
判定部１２０は、入力されるメモリアクセス情報と、取得したバッファ量情報とを用いて、バッファメモリ１５０からデータを掃き出すか否かを判定する（Ｓ１０２）。この掃き出し判定処理の詳細については後述する。
【０１３４】
続いて、コマンド判定部１２３が、メモリアクセス要求がライト要求であるかリード要求であるかを判定する（Ｓ１０３）。メモリアクセス要求がライト要求である場合（Ｓ１０３で“ライト”）、データ転送部１４０は、プロセッサ１０から出力されるライトデータの書き込み処理を行う（Ｓ１０４）。メモリアクセス要求がリード要求である場合（Ｓ１０３で“リード”）、データ転送部１４０は、プロセッサ１０へのリードデータの読み出し処理を実行する（Ｓ１０５）。
【０１３５】
なお、掃き出し判定処理（Ｓ１０２）で、メモリアクセス要求がライト要求であるかリード要求であるかが判定されている場合は、掃き出し判定処理（Ｓ１０２）の終了後に、メモリアクセス要求の判定処理（Ｓ１０３）をすることなく、書き込み処理（Ｓ１０４）、又は、読み出し処理（Ｓ１０５）が実行されてもよい。
【０１３６】
以下では、まず、書き込み処理（Ｓ１０４）と読み出し処理（Ｓ１０５）との詳細について説明する。
【０１３７】
図９は、本実施の形態のバッファメモリ装置１００の書き込み処理を示すフローチャートである。
【０１３８】
メモリアクセス要求がライト要求である場合、まず、属性判定部１２１は、当該ライト要求に含まれるライトアドレスが示す領域の属性を判定する（Ｓ１１１）。具体的には、属性判定部１２１は、ライトアドレスが示す領域の属性が、バースト可属性、バースト不可属性、及び、キャッシャブル属性のいずれであるかを判定する。
【０１３９】
ライトアドレスが示す領域の属性がバースト可属性であると判定された場合（Ｓ１１１で“アンキャッシャブル（バースト可）”）、第１データ転送部１４１は、プロセッサ１０から出力されたライトデータをバッファメモリ１５０に書き込む（Ｓ１１２）。具体的には、第１データ転送部１４１は、制御部１３０からの制御に基づいて、ライト要求を発行した物理プロセッサ（例えば、プロセッサ１０ａ）に対応するバッファメモリ（バッファメモリ１５０ａ）にライトデータを書き込む。
【０１４０】
ライトアドレスが示す領域の属性がバースト不可属性であると判定された場合（Ｓ１１１で“アンキャッシャブル（バースト不可）”）、第２データ転送部１４２は、プロセッサ１０から出力されたライトデータをメインメモリ２０に書き込む（Ｓ１１３）。
【０１４１】
ライトアドレスが示す領域の属性がキャッシャブル属性であると判定された場合（Ｓ１１１で“キャッシャブル”）、第３データ転送部１４３は、ライト要求がヒットしたかミスしたかを判定する（Ｓ１１４）。ライト要求がミスした場合（Ｓ１１４でＮｏ）、第３データ転送部１４３は、キャッシュメモリ１６０にタグアドレスを書き込む（Ｓ１１５）。
【０１４２】
タグアドレスの書き込み後、又は、ライト要求がヒットした場合（Ｓ１１４でＹｅｓ）、制御部１３０は、当該ライト要求に基づく書き込み処理が、ライトバック処理であるかライトスルー処理であるかに応じて、ライトデータの書き込み先を変更する（Ｓ１１７）。ライトバック処理の場合（Ｓ１１６で“ライトバック”）、第３データ転送部１４３は、キャッシュメモリ１６０にライトデータを書き込む（Ｓ１１７）。ライトスルー処理の場合（Ｓ１１６で“ライトスルー”）、第３データ転送部１４３は、バッファメモリ１５０にライトデータとライトアドレスとを書き込む（Ｓ１１８）。
【０１４３】
以上のようにして、プロセッサ１０から出力されたライトデータは、メインメモリ２０、バッファメモリ１５０又はキャッシュメモリ１６０に書き込まれる。なお、バッファメモリ１５０及びキャッシュメモリ１６０に書き込まれたデータは、後続のメモリアクセス要求が入力された場合などに実行される掃き出し判定処理によって、メインメモリ２０に書き込まれる。
【０１４４】
なお、掃き出し判定処理（Ｓ１０２）で、ライトアドレスが示す領域の属性が判定されている場合は、メモリアクセス要求の判定処理（Ｓ１０３）の終了後に、属性の判定処理（Ｓ１１１）をすることなく、それぞれの書き込み処理を実行してもよい。
【０１４５】
図１０は、本実施の形態のバッファメモリ装置１００の読み出し処理を示すフローチャートである。
【０１４６】
メモリアクセス要求がリード要求である場合、まず、属性判定部１２１は、当該リード要求に含まれるリードアドレスが示す領域の属性を判定する（Ｓ１２１）。具体的には、属性判定部１２１は、リードアドレスが示す領域の属性が、キャッシャブル属性、及び、アンキャッシャブル属性のいずれであるかを判定する。
【０１４７】
リードアドレスが示す領域の属性がアンキャッシャブル属性であると判定された場合（Ｓ１２１で“アンキャッシャブル”）、第１データ転送部１４１又は第２データ転送部１４２は、リード要求に対応するリードデータをメインメモリ２０から読み出し、読み出したリードデータをプロセッサ１０に出力する（Ｓ１２２）。
【０１４８】
リードアドレスが示す領域の属性がキャッシャブル属性であると判定された場合（Ｓ１２１で“キャッシャブル”）、第３データ転送部１４３は、リード要求がヒットしたかミスしたかを判定する（Ｓ１２３）。リード要求がミスした場合（Ｓ１２３でＮｏ）、第３データ転送部１４３は、リード要求に対応するリードデータをメインメモリ２０から読み出す（Ｓ１２４）。そして、読み出したリードデータとリードアドレス（タグアドレス）とをキャッシュメモリ１６０に書き込む（Ｓ１２５）。そして、第３データ転送部１４３は、キャッシュメモリ１６０からリードデータを読み出し、プロセッサ１０に出力する（Ｓ１２６）。なお、このとき、リードデータのキャッシュメモリ１６０への書き込みと、プロセッサ１０への出力とは、同時に実行してもよい。
【０１４９】
リード要求がヒットした場合（Ｓ１２３でＹｅｓ）、第３データ転送部１４３は、キャッシュメモリ１６０からリードデータを読み出し、プロセッサ１０に出力する（Ｓ１２６）。
【０１５０】
以上のようにして、バッファメモリ装置１００は、プロセッサ１０で発行されたリード要求に従って、キャッシュメモリ１６０又はメインメモリ２０からリードデータを読み出し、読み出したリードデータをプロセッサ１０に出力する。
【０１５１】
なお、掃き出し判定処理（Ｓ１０２）で、リードアドレスが示す領域の属性が判定されている場合は、メモリアクセス要求の判定処理（Ｓ１０３）の終了後に、属性の判定処理（Ｓ１２１）をすることなく、それぞれの読み出し処理を実行してもよい。
【０１５２】
次に、掃き出し判定処理（Ｓ１０２）の詳細について図１１〜図１６を用いて説明する。掃き出し判定処理では、図６に示す判定テーブルが示す条件をどの順に判定してもよい。ただし、“Ａｌｌ  Ｓｙｎｃ”条件のように、条件が満たされた場合に、全てのバッファに保持されたデータを掃き出すなど、その後に他の条件を判定する必要がなくなるものを優先的に行うのが望ましい。
【０１５３】
図１１は、本実施の形態のバッファメモリ装置１００の属性判定処理を示すフローチャートである。同図は、図６の“Ｕｎｃａｃｈｅ”条件に基づいた掃き出し判定処理を示す。
【０１５４】
メモリアクセス情報が判定部１２０に入力されると、属性判定部１２１は、メモリアクセス要求に含まれるアドレスが示す領域の属性がバースト不可属性であるか否かを判定する（Ｓ２０１）。当該アドレスが示す領域の属性がバースト不可属性ではない場合（Ｓ２０１でＮｏ）、他の判定処理が実行される。
【０１５５】
メモリアクセス要求に含まれるアドレスが示す領域の属性がバースト不可属性であると判定された場合（Ｓ２０１でＹｅｓ）、制御部１３０は、当該メモリアクセス要求を発行した論理プロセッサと同じ論理プロセッサで発行されたメモリアクセス要求に対応するデータを保持しているバッファメモリから、保持しているデータをメインメモリ２０に掃き出す（Ｓ２０２）。なお、制御部１３０は、プロセッサ判定部１２２の判定結果を用いて、複数のバッファメモリ１５０のうち、掃き出し対象となるバッファメモリを特定することで、データの掃き出しを実行する。当該掃き出しが終了すると、他の判定処理が実行される。
【０１５６】
図１２は、本実施の形態のバッファメモリ装置１００のコマンド判定処理を示すフローチャートである。同図は、図６の“Ａｌｌ  Ｓｙｎｃ”条件と“Ｓｅｌｆ  Ｓｙｎｃ”条件とに基づいた掃き出し判定処理を示す。
【０１５７】
メモリアクセス情報が判定部１２０に入力されると、コマンド判定部１２３は、メモリアクセス要求に含まれるコマンドに、他の条件に関わらずデータを掃き出す旨の命令である“Ｓｙｎｃ”コマンドが含まれるか否かを判定する（Ｓ３０１）。メモリアクセス要求に“Ｓｙｎｃ”コマンドが含まれない場合（Ｓ３０１でＮｏ）、他の判定処理が実行される。
【０１５８】
メモリアクセス要求に“Ｓｙｎｃ”コマンドが含まれる場合（Ｓ３０１でＹｅｓ）、コマンド判定部１２３は、“Ｓｙｎｃ”コマンドが“Ａｌｌ  Ｓｙｎｃ”コマンドであるか“Ｓｅｌｆ  Ｓｙｎｃ”コマンドであるかを判定する（Ｓ３０２）。“Ｓｙｎｃ”コマンドが“Ａｌｌ  Ｓｙｎｃ”コマンドである場合（Ｓ３０２で“Ａｌｌ  Ｓｙｎｃ”）、制御部１３０は、全てのバッファメモリ１５０から、全てのデータを掃き出す（Ｓ３０３）。
【０１５９】
“Ｓｙｎｃ”コマンドが“Ｓｅｌｆ  Ｓｙｎｃ”コマンドである場合（Ｓ３０２で“Ｓｅｌｆ  Ｓｙｎｃ”）、制御部１３０は、当該メモリアクセス要求を発行した論理プロセッサと同じ論理プロセッサで発行されたメモリアクセス要求に対応するデータを保持しているバッファメモリから、保持しているデータをメインメモリ２０に掃き出す（Ｓ３０４）。なお、制御部１３０は、プロセッサ判定部１２２の判定結果を用いて、複数のバッファメモリ１５０のうち、吐き出し対象となるバッファメモリを特定することで、データの掃き出しを実行する。
【０１６０】
データの掃き出しが終了すると、他の判定処理が実行される。
【０１６１】
図１３は、本実施の形態のバッファメモリ装置１００のリードアドレス判定処理を示すフローチャートである。同図は、図６の“ＲＡＷ  Ｈａｚａｒｄ”条件に基づいた掃き出し判定処理を示す。なお、“ＲＡＷ  Ｈａｚａｒｄ”条件は、バッファメモリ装置１００がリード要求を受け取った場合に判定される条件である。すなわち、コマンド判定部１２３が、メモリアクセス要求がリード要求であると判定した場合に実行される。
【０１６２】
アドレス判定部１２４は、当該リード要求に含まれるリードアドレスが、バッファメモリ１５０に保持されているライトアドレスに一致するか否かを判定する（Ｓ４０１）。当該リードアドレスがバッファメモリ１５０に保持されているライトアドレスに一致しないと判定された場合（Ｓ４０１でＮｏ）、他の判定処理が実行される。
【０１６３】
リードアドレスがバッファメモリ１５０に保持されているライトアドレスに一致すると判定された場合（Ｓ４０１でＹｅｓ）、制御部１３０は、Ｈａｚａｒｄラインまでのデータを全て、すなわち、一致したライトアドレスに対応するライトデータ以前に保持された全てのデータをバッファメモリ１５０から掃き出す（Ｓ４０２）。データの掃き出しが終了すると、他の判定処理が実行される。
【０１６４】
図１４は、本実施の形態のバッファメモリ装置１００のライトアドレス判定処理を示すフローチャートである。同図は、図６の“Ａｎｏｔｈｅｒ  Ｌｉｎｅ  Ａｃｃｅｓｓ”条件に基づいた掃き出し判定処理を示す。なお、“Ａｎｏｔｈｅｒ  Ｌｉｎｅ  Ａｃｃｅｓｓ”条件は、バッファメモリ装置１００がライト要求を受け取った場合に判定される条件である。すなわち、コマンド判定部１２３が、メモリアクセス要求がライト要求であると判定した場合に実行される。
【０１６５】
アドレス判定部１２４は、当該ライト要求に含まれるライトアドレスが、直前に入力されたライト要求に含まれるライトアドレスに連続するか否かを判定する（Ｓ５０１）。２つのアドレスが連続する場合（Ｓ５０１でＮｏ）、他の判定処理が実行される。
【０１６６】
２つのアドレスが連続しない場合（Ｓ５０１でＹｅｓ）、制御部１３０は、直前に入力されたライト要求に対応するライトデータを含み、それ以前のデータを全てバッファメモリ１５０から掃き出す（Ｓ５０２）。データの掃き出しが終了すると、他の判定処理が実行される。
【０１６７】
図１５は、本実施の形態のバッファメモリ装置１００のバッファ量判定処理を示すフローチャートである。同図は、図６の“Ｓｌｏｔ  Ｆｕｌｌ”条件に基づいた掃き出し判定処理を示す。
【０１６８】
“Ｓｌｏｔ  Ｆｕｌｌ”条件は、他の条件と異なり、メモリアクセス情報ではなく、バッファメモリ１５０から得られるバッファ量情報に基づいて判定される条件である。したがって、バッファメモリ装置１００がメモリアクセス要求を受け取った場合に限らず、任意のタイミングで、又は、バッファメモリ１５０にデータを書き込んだ場合などに判定されてもよい。
【０１６９】
バッファ量判定部１２５は、制御部１３０を介して、バッファメモリ１５０からバッファ量情報を取得し、バッファメモリごとに、バッファ量がフルであるか否かを判定する（Ｓ６０１）。バッファ量がフルでない場合（Ｓ６０１でＮｏ）、バッファメモリ装置１００がメモリアクセス要求を受け取った場合に、他の判定処理が実行される。
【０１７０】
バッファ量がフルである場合（Ｓ６０１でＹｅｓ）、制御部１３０は、複数のバッファメモリ１５０のうち、バッファ量がフルとなったバッファメモリからデータを掃き出す（Ｓ６０２）。データの掃き出しが終了すると、他の判定処理が実行される。
【０１７１】
図１６は、本実施の形態のバッファメモリ装置１００のプロセッサ判定処理を示すフローチャートである。同図は、図６の“同ＬＰ、異ＰＰ”条件に基づいた掃き出し判定処理を示す。
【０１７２】
メモリアクセス情報が判定部１２０に入力されると、プロセッサ判定部１２２は、メモリアクセス要求を発行した物理プロセッサとは異なる物理プロセッサで、かつ、当該メモリアクセス要求を発行した論理プロセッサと同じ論理プロセッサで以前に発行されたメモリアクセス要求に対応するライトデータが、バッファメモリ１５０に保持されているか否かを判定する（Ｓ７０１）。当該ライトデータがバッファメモリ１５０に保持されていない場合（Ｓ７０１でＮｏ）、他の判定処理が実行される。
【０１７３】
同じ論理プロセッサ、かつ、異なる物理プロセッサから出力されたライトデータがバッファメモリ１５０に保持されている場合（Ｓ７０１でＹｅｓ）、当該ライトデータを保持していたバッファメモリから、データを掃き出す（Ｓ７０２）。データの掃き出しが終了すると、他の判定処理が実行される。
【０１７４】
以上の図１１〜図１６に示す判定処理が全て終了すると、掃き出し判定処理（図８のＳ１０２）は終了する。
【０１７５】
以上の掃き出し判定処理に示した条件が満たされない場合は、ライト要求に対応するライトデータは、バッファメモリ１５０に保持される。すなわち、入力される小さいサイズのライトデータは、バッファメモリ１５０でマージされ、大きなサイズのデータとなる。そして、当該データは、上述のいずれかの条件が満たされた時点で、メインメモリ２０にバーストライトされる。
【０１７６】
なお、以上の説明では、各判定条件が満たされるごとに、データをメインメモリ２０に掃き出したが、全ての判定条件が判定された後に、満たした条件に対応するデータをまとめてメインメモリ２０に掃き出してもよい。
【０１７７】
以上のように、本実施の形態のバッファメモリ装置１００は、複数のプロセッサ１０のそれぞれに対応するバッファメモリ１５０を備え、各バッファメモリ１５０にプロセッサ１０から出力されるライトデータをマージして、保持させる。そして、所定の条件を満たした場合に、バッファメモリ１５０からマージしたデータをメインメモリ２０にバーストライトする。
【０１７８】
これにより、小さなサイズのライトデータをマージすることで得られる大きなデータをメインメモリ２０にバーストライトすることができるので、小さなサイズのデータを個々に書き込む場合に比べて、データの転送効率を向上させることができる。また、バッファメモリ１５０からデータを読み出す条件を備えることで、複数のプロセッサから出力されるライトデータのコヒーレンシを保つことができる。特に、メモリアクセス要求が、同じ論理プロセッサであるが、異なる物理プロセッサで発行された場合にバッファメモリ１５０に保持されたデータを掃き出すことで、複数のプロセッサが実行するマルチスレッド、又は、マルチプロセッサを利用したメモリシステムの場合でも、データのコヒーレンシを保つことができる。
【０１７９】
以上、本発明のバッファメモリ装置及びデータ転送方法について、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を当該実施の形態に施したものも、本発明の範囲内に含まれる。
【０１８０】
例えば、本実施の形態のバッファメモリ装置１００は、複数の物理プロセッサのそれぞれに対応付けて、バッファメモリ１５０を備える。これに対して、バッファメモリ装置１００は、複数の論理プロセッサのそれぞれに対応付けて、バッファメモリ１５０を備えてもよい。
【０１８１】
図１７は、本実施の形態のバッファメモリ装置１００が備えるバッファメモリ１５０の異なる概略を示す図である。同図に示すバッファメモリ１５０ｄ、１５０ｅ及び１５０ｆはそれぞれ、論理プロセッサＬＰ０、ＬＰ１及びＬＰ２に対応する。すなわち、バッファメモリ１５０ｄ、１５０ｅ及び１５０ｆはそれぞれ、各論理プロセッサＬＰ０、ＬＰ１及びＬＰ２で発行されたライト要求に対応するライトデータと、バッファ制御情報とを保持する。
【０１８２】
また、バッファメモリ装置１００は、バッファメモリを論理プロセッサと物理プロセッサとの組み合わせごとに備えてもよい。
【０１８３】
また、バッファメモリ装置１００は、複数のスレッドに対応する複数の仮想プロセッサのそれぞれに対応付けて、バッファメモリ１５０を備えてもよい。また、複数のバッファメモリ１５０は、物理的に異なる複数のメモリでもよく、又は、１つの物理的なメモリを仮想的に分割された複数の領域に相当する仮想的な複数のメモリでもよい。
【０１８４】
また、本実施の形態のバッファメモリ装置１００は、ライトスルー処理によるキャッシュメモリ１６０への書き込みを行う際にも、バッファメモリ１５０を利用することでマージしたデータをバーストライトしたが、必ずしもバッファメモリ１５０を利用する必要はない。つまり、第３データ転送部１４３は、ライト要求に対応するライトデータを直接キャッシュメモリ１６０に書き込んでもよい。
【０１８５】
また、本実施の形態では、キャッシャブル属性と、バースト可属性と、バースト不可属性とに分割したメインメモリ２０へ書き込み処理のうち、バースト不可属性の領域への書き込み処理とキャッシャブル属性の領域への書き込み処理（ライトスルー処理の場合）とにバッファメモリ１５０を用いた。これに対して、キャッシャブル属性と、アンキャッシャブル属性とに分割したメインメモリ２０への書き込み処理に、バッファメモリを用いてもよい。すなわち、メインメモリ２０のアンキャッシャブル領域を、バースト可属性に属する領域とバースト不可属性に属する領域とに分割しなくてもよい。ただし、上述のように、アンキャッシャブル領域には、リードセンシティブな領域などが含まれる場合もあるので、メインメモリ２０をバースト可属性とバースト不可属性とに分割した方が好ましい。
【０１８６】
また、本実施の形態のバッファメモリ装置１００は、プロセッサ１０からメインメモリ２０にデータを書き込む際に、一時的にデータを保持し、保持したデータをバーストライトすることで、データの転送効率を向上させたのに対して、新たに、リード専用のバッファメモリ（ＰＦＢ（Ｐｒｅｆｅｔｃｈ  Ｂｕｆｆｅｒ））を備え、メインメモリ２０からデータをバーストリードし、バーストリードしたデータを一時的にＰＦＢに保持してもよい。これにより、読み出し時にもデータの転送効率を向上させることができる。
【０１８７】
また、本実施の形態のバッファメモリ装置１００では、図４に示すように、プロセッサ１０によって発行されたメモリアクセス要求に“Ｓｙｎｃ”コマンドが付随する場合について示したが、メモリアクセス要求に“Ｓｙｎｃ”コマンドが付随しなくてもよい。例えば、バッファメモリ装置１００は、ＩＯマップされたレジスタを備え、プロセッサ１０が当該レジスタをアクセスすることで、対応するバッファメモリ１５０からデータを掃き出してもよい。
【０１８８】
また、本発明は、本実施の形態のバッファメモリ装置１００と、プロセッサ１０と、メインメモリ２０とを備えるメモリシステムとしても実現することができる。このとき、メモリアクセス要求の発行元は、ＣＰＵなどのプロセッサ、及び、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）などいかなるマスタであってもよい。
【０１８９】
また、本実施の形態では、Ｌ２キャッシュ４０が本実施の形態のバッファメモリ１５０を備える構成について説明したが、Ｌ１キャッシュ３０が当該バッファメモリ１５０を備えてもよい。このとき、メモリシステムは、Ｌ２キャッシュ４０を備えなくてもよい。
【０１９０】
また、レベル３キャッシュ以上のキャッシュを備えるメモリシステムに、本発明を適用してもよい。この場合、最大レベルのキャッシュが本実施の形態のバッファメモリ１５０を備えることが好ましい。
【０１９１】
なお、本発明は、上述したように、バッファメモリ装置、メモリシステム及びデータ転送方法として実現できるだけではなく、本実施の形態のデータ転送方法をコンピュータに実行させるためのプログラムとして実現してもよい。また、当該プログラムを記録するコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体として実現してもよい。さらに、当該プログラムを示す情報、データ又は信号として実現してもよい。そして、これらプログラム、情報、データ及び信号は、インターネットなどの通信ネットワークを介して配信されてもよい。
【０１９２】
また、本発明は、バッファメモリ装置を構成する構成要素の一部又は全部を、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）から構成してもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ及びＲＡＭなどを含んで構成されるコンピュータシステムである。
【産業上の利用可能性】
【０１９３】
本発明のバッファメモリ装置及びメモリシステムは、ＣＰＵなどのプロセッサとメインメモリとの間でデータの転送を行うシステムに利用することができ、例えば、コンピュータなどに利用することができる。
【符号の説明】
【０１９４】
１０、１０ａ、１０ｂ、１０ｃ、３１０  プロセッサ
２０、３２０  メインメモリ
２１  キャッシャブル領域
２２  アンキャッシャブル領域
２３  バースト可領域
２４  バースト不可領域
３０  Ｌ１キャッシュ
４０  Ｌ２キャッシュ
１００  バッファメモリ装置
１１０  メモリアクセス情報取得部
１２０  判定部
１２１  属性判定部
１２２  プロセッサ判定部
１２３  コマンド判定部
１２４  アドレス判定部
１２５  バッファ量判定部
１２６  判定結果出力部
１３０  制御部
１４０  データ転送部
１４１  第１データ転送部
１４２  第２データ転送部
１４３  第３データ転送部
１５０、１５０ａ、１５０ｂ、１５０ｃ、１５０ｄ、１５０ｅ、１５０ｆ  バッファメモリ
１６０  キャッシュメモリ
２０１、２０２  メモリアクセス情報
３３０  キャッシュ
３３１  ＳＴＢ
【図１】
0005536658.tif 000002
【図２】
0005536658.tif 000003
【図３】
0005536658.tif 000004
【図４】
0005536658.tif 000005
【図５】
0005536658.tif 000006
【図６】
0005536658.tif 000007
【図７】
0005536658.tif 000008
【図８】
0005536658.tif 000009
【図９】
0005536658.tif 000010
【図１０】
0005536658.tif 000011
【図１１】
0005536658.tif 000012
【図１２】
0005536658.tif 000013
【図１３】
0005536658.tif 000014
【図１４】
0005536658.tif 000015
【図１５】
0005536658.tif 000016
【図１６】
0005536658.tif 000017
【図１７】
0005536658.tif 000018
【図１８】
0005536658.tif 000019