(57)【要約】【課題】デバイス間でデータストリームを転送する場合に、データ転送を高速化すること。【解決手段】メモリコントローラ１２は、排他的にのみデータの書き込みおよび読み出しが可能な第一のメモリおよび同時にデータの書き込みおよび読み出しが可能な第二のメモリに受信データを書き込むように制御する書込制御部１２ａと、第二のメモリに書き込まれた書込データを消去するように制御する消去制御部１２ｂと、第一のメモリおよび第二のメモリに書き込まれた書込データの書き込み状況を管理する管理部１２ｃと、書き込み状況を参照し、読み出し要求に係るデータを第二のメモリから優先的に読み出すように制御する読出制御部１２ｄとを備える。【選択図】      図１
2004206252.tif 000002
【特許請求の範囲】
【請求項１】
所定のデバイスから受信した受信データを所定のメモリに書き込むとともに、他の所定のデバイスからの読み出し要求に応じて前記メモリに書き込まれた書込データを読み出すメモリコントローラであって、
排他的にのみデータの書き込みおよび読み出しが可能な第一のメモリおよび同時にデータの書き込みおよび読み出しが可能な第二のメモリに前記受信データを書き込むように制御する書込制御手段と、
前記第二のメモリに書き込まれた書込データを消去するように制御する消去制御手段と、
前記書込制御手段によって前記第一のメモリおよび前記第二のメモリに書き込まれた前記書込データの書き込み状況を管理する管理手段と、
前記管理手段によって管理された書き込み状況を参照し、前記読み出し要求に係るデータを前記第二のメモリから優先的に読み出すように制御する読出制御手段と、
を備えたことを特徴とするメモリコントローラ。
【請求項２】
前記読出制御手段は、前記読み出し要求に係るデータが前記書込制御手段によって書き込まれたデータでない場合には、前記第一のメモリから読み出し、前記読み出し要求に係るデータが前記書込制御手段によって既に書き込まれたデータである場合には、前記第二のメモリから読み出し、前記読み出し要求に係るデータが前記書込制御手段によって未だ書き込まれていない場合には、書き終えるまで待機した後に読み出すように制御することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記管理手段は、前記読出制御手段によって読み出された後に空き状態となった前記第二のメモリの空き状況をさらに管理するものであって、
前記書込制御手段は、前記第二のメモリの空き容量を超える受信データを受信した場合に、該受信データのうち空き容量に収まるデータを前記第二のメモリに書き込んだ後、前記管理手段によって管理された前記第二のメモリの空き状況に応じて、前記第二のメモリからあふれたデータを前記第一のメモリから前記第二のメモリの空き領域に書き込むように制御することを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
前記管理手段は、前記書込制御手段によって書き込まれた前記書込データについて、分割されたブロックごとに書き込み状況を管理するものであって、
前記読出制御手段は、前記管理手段によってブロックごとに管理された書き込み状況を参照して前記読み出し要求に係るデータを読み出すように制御することを特徴とする請求項１、２または３に記載のメモリコントローラ。
【請求項５】
前記管理手段は、前記所定のデバイスから消去の指示が出されるまで、前記第二のメモリにおける前記書込データを消去せずに管理するものであって、
前記消去制御手段は、前記所定のデバイスから消去の指示が出された場合に前記第二のメモリにおける前記書込データを消去するように制御することを特徴とする請求項１〜４のいずれか一つに記載のメモリコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、所定のデバイスから受信した受信データを所定のメモリに書き込むとともに、他の所定のデバイスからの読み出し要求に応じてメモリに書き込まれた書込データを読み出すメモリコントローラに関し、特に、データ転送を高速化することができるメモリコントローラに関する。
【０００２】
【従来の技術】
従来より、一般的な計算機システムとして、プロセッサおよびネットワークデバイス間でメモリを共有するシステムが知られている。このような計算機システムにおいてデバイス間でデータ転送をおこなう場合には、デバイスとメモリ間でのデータ転送を制御するメモリコントローラが用いられている。
【０００３】
そして、このメモリコントローラは、データ転送がおこなわれる際に、ネットワークデバイスから受信したデータをメモリに書き込むように制御し、該書き込んだ書込データをプロセッサに読み出すように制御するというものである。
【０００４】
ここで、デバイス（ネットワークデバイスおよびプロセッサ）が下位層（プロセッサに遠い階層）にあるメモリに対して読み書きをおこなう場合に処理性能の劣化が生じるという問題点があった。かかる「処理性能の劣化」とは、デバイスが下位層にあるメモリに対して読み書きをおこなう際に比較的配線長の長いメモリバスを使用することによって生じるプロセッサの動作周波数とメモリバスの動作周波数との格差に起因する。
【０００５】
この問題点を解消するために、メモリコントローラ内に共有キャッシュを設け、該共有キャッシュに対して読み書きをおこなうように制御することによりデータ転送をおこなうメモリコントローラが開発されている（例えば、特許文献１参照。）。具体的には、メモリコントローラ内の共有キャッシュにネットワークデバイスが受信したデータを書き込んだ後に、該データを読み出すように制御することにより、メモリへのアクセスの機会を減らしてかかる処理性能の劣化に対応していた。
【０００６】
【特許文献１】
特開平１０−３２０２７８号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、上記の従来技術は、デバイスが下位層にあるメモリに読み書きをおこなうことに起因する処理性能の劣化のみしか解消することができず、それ以外の処理遅延の原因を排除することができない。すなわち、上記の従来技術では、ネットワークデバイスから受信したデータがメモリコントローラ内の共有キャッシュ書き込まれている間、プロセッサは待機せざるをえないので、データ転送を高速におこなうことができないという問題点があった。
【０００８】
また、上記の従来技術において、プロセッサは、ネットワークデバイスによってメモリに書き込まれたところまでの読み出しをおこなうことができないため、データ転送を高速におこなうことができないという問題点があった。
【０００９】
本発明は、上述した従来技術による問題点を解消するためになされたものであり、データ転送を高速化することができるメモリコントローラを提供することを目的とする。
【００１０】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、本発明は、排他的にのみデータの書き込みおよび読み出しが可能な第一のメモリおよび同時にデータの書き込みおよび読み出しが可能な第二のメモリに受信データを書き込むように制御し、第二のメモリに書き込まれた書込データを消去するように制御し、第一のメモリおよび第二のメモリに書き込まれた書込データの書き込み状況を管理し、書き込み状況を参照し、読み出し要求に係るデータを第二のメモリから優先的に読み出すように制御する。
【００１１】
この発明によれば、ネットワークデバイス（特許請求の範囲における所定のデバイスに相当）から受信したデータがメモリコントローラ内のメモリに書き込まれている際に、書込データのうち既に書き込まれたデータの読み出しをおこなうので、デバイス間でデータストリームを転送する場合に、データ転送を高速することができる。
【００１２】
また、本発明は、読み出し要求に係るデータが書き込まれたデータでない場合には、第一のメモリから読み出し、読み出し要求に係るデータが既に書き込まれたデータである場合には、第二のメモリから読み出し、読み出し要求に係るデータが未だ書き込まれていない場合には、書き終えるまで待機した後に読み出すように制御する。
【００１３】
この発明によれば、ネットワークデバイスから受信したデータがメモリコントローラ内のメモリに書き込まれている際に、書込データのうち既に書き込まれたデータの読み出しをおこなうので、デバイス間でデータストリームを転送する場合に、データ転送を高速することができる。さらに、これに関連して、ネットワークデバイスによって未だ書き込まれていないデータに対してプロセッサ（特許請求の範囲における他の所定のデバイスに相当）の読み出し要求が発生した場合に、書込データが書き込まれるまで待機した後に書込データが書き込まれる都度読み出すように制御することができるので、データ転送の同期を自動化することができる。
【００１４】
また、本発明は、読み出された後に空き状態となった第二のメモリの空き状況をさらに管理し、第二のメモリの空き容量を超える受信データを受信した場合に、該受信データのうち空き容量に収まるデータを第二のメモリに書き込んだ後、第二のメモリの空き状況に応じて、第二のメモリからあふれたデータを第一のメモリから第二のメモリの空き領域に書き込むように制御する。
【００１５】
この発明によれば、ＦＩＦＯメモリ（特許請求の範囲における第二のメモリに相当）の空き容量を超える受信データのすべてをＦＩＦＯメモリから読み出すことができるので、プロセッサがメモリ（特許請求の範囲における第一のメモリに相当）から書込データを読み出すのに比べて、データ転送を高速化することができる。
【００１６】
また、本発明は、書込データについて分割されたブロックごとに書き込み状況を管理するものであって、ブロックごとに管理された書き込み状況を参照して読み出し要求に係るデータを読み出すように制御する。
【００１７】
この発明によれば、複数の領域に分割された書込データを連続した領域として読み出すので、デバイス間でデータストリームを転送する場合に、データ転送を高速化することができる。
【００１８】
また、本発明は、所定のデバイスから消去の指示が出されるまで、第二のメモリにおける書込データを消去せずに管理するものであって、所定のデバイスから消去の指示が出された場合に第二のメモリにおける書込データを消去するように制御する。
【００１９】
この発明によれば、デバイスからＡＣＫを受け取った書込データを消去するように制御した後に、消去されなかった書込データを再度読み出すので、エラーなどの再度読み出しにも対応することができる。さらに、これに関連して、小容量であるＦＩＦＯメモリにおいて、必要なデータのみをＦＩＦＯメモリに残すことができるので、ＦＩＦＯメモリを効率良く使用することができる。
【００２０】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係るメモリコントローラの好適な実施の形態を詳細に説明する。なお、下記では本発明に係るメモリコントローラの概要および主たる特徴を説明した後に、実施の形態１〜３として、本発明に係るメモリコントローラについて説明し、また実施の形態４として、本発明に係るメモリコントローラを実行するコンピュータシステムについて説明し、最後に他の実施の形態として種々の変形例を説明することとする。
【００２１】
また、本実施の形態では、図１に示すように、ネットワークデバイス１１からプロセッサ１４にデータ転送をおこなう際に本発明に係るメモリコントローラを適用した場合について説明するが、本発明はこれに限定されるものではなく、プロセッサ１４からネットワークデバイス１１にデータ転送をおこなう場合についても同様に適用することができる。
【００２２】
［概要および主たる特徴］
まず最初に、本発明に係るメモリコントローラの概要および主たる特徴を説明する。図１は、本実施の形態１に係る計算機システムの構成を示すブロック図である。本実施の形態に係る計算機システムは、同図に示すように、所定のデバイスから受信した受信データを所定のメモリに書き込むとともに、他の所定のデバイスからの読み出し要求に応じて前記メモリに書き込まれた書込データを読み出すものである。
【００２３】
ここで、本実施の形態に係るメモリコントローラ１２は、デバイス間でデータストリームを転送する場合に、メモリ１３およびＦＩＦＯメモリ１２ｅに書き込まれた書込データの書き込み状況を管理し、該管理された書き込み状況に応じて読出制御処理をおこなうことに主たる特徴があり、かかる読出制御処理によって、データ転送を高速化することができるようにしている。
【００２４】
この主たる特徴を具体的に説明すると、メモリコントローラ１２における書込制御部１２ａは、排他的にのみデータの書き込みおよび読み出しが可能なメモリ１３（特許請求の範囲における第一のメモリに相当）および同時にデータの書き込みおよび読み出しが可能なＦＩＦＯメモリ１２ｅ（特許請求の範囲における第二のメモリに相当）に受信データを書き込むように制御する。
【００２５】
続いて、メモリコントローラ１２における消去制御部１２ｂは、ＦＩＦＯメモリ１２ｅに書き込まれた書込データを消去するように制御する。具体的には、デバイス（本実施の形態ではネットワークデバイス）からＡＣＫを受け取った書込データを消去する。
【００２６】
そして、メモリコントローラにおける管理部１２ｃは、書込制御部１２ａによってメモリ１３およびＦＩＦＯメモリ１２ｅに書き込まれた書込データの書き込み状況を管理する（図２参照）。
【００２７】
ここで、メモリコントローラにおける読出制御部１２ｄは、管理部１２ｃによって管理された書き込み状況を参照し、読み出し要求に係るデータをＦＩＦＯメモリ１２ｅから優先的に読み出すように制御する。具体的には、プロセッサ１４からの読み出し要求に係るデータが、管理部１２ｃによって管理された登録領域でない場合にはメモリ１３から読み出し、管理部１２ｃによって管理された登録領域であって既に書き込まれたデータである場合にはＦＩＦＯメモリ１２ｅから読み出し、管理部１２ｃによって管理された登録領域であって未だ書き込まれていない場合には、書き終えるまで待機した後に読み出すように制御する（図２参照）。
【００２８】
したがって、上記した従来技術の例で言えば、ネットワークデバイスから受信したデータがメモリに書き込まれている際に、プロセッサは待機するのではなく、書込データのうち既に書き込まれたデータの読み出しをおこなうので、上記した主たる特徴のように、デバイス間でデータストリームを転送する場合に、データ転送を高速することができる。さらに、これに関連して、ネットワークデバイスによって未だ書き込まれていないデータに対してプロセッサの読み出し要求が発生した場合に、書込データが書き込まれるまで待機した後に書込データが書き込まれる都度読み出すように制御することができるので、データ転送の同期を自動化することができる。
【００２９】
また、本実施の形態に係るメモリコントローラ１２は、ＦＩＦＯメモリ１２ｅの空き容量を超えるデータを受信した場合に、一旦メモリに書き込み、プロセッサ１４の読み出しが進行してＦＩＦＯメモリ１２ｅに空きができたときにＦＩＦＯメモリ１２ｅからあふれたデータをメモリ１３から書き込むことによって、ＦＩＦＯメモリ１２ｅの空き容量を超える受信データのすべてをＦＩＦＯメモリ１２ｅから読み出すことが可能になり、プロセッサ１４がメモリ１３から書込データを読み出すのに比べて、データ転送を高速化することができるようにしている。
【００３０】
そして、本実施の形態に係るメモリコントローラ１２は、プロセッサ１４内部の論理空間では連続領域であるが実際のメモリ上では複数の領域に分割されて実現されている領域から読み出し要求に係るデータを読み出す場合に、書込データについて、分割されたブロックごとに書き込み状況を管理し（図５参照）、ブロックごとに管理された書き込み状況を参照して読み出し要求に係るデータを読み出すので、データ転送を高速化することができるようにしている。
【００３１】
（実施の形態１）
実施の形態１では、デバイス間でデータストリームを転送する場合に、メモリおよびＦＩＦＯメモリに書き込まれた書込データの書き込み状況を管理し、該管理された書き込み状況に応じて読出制御処理をおこなうメモリコントローラについて説明する。なお、ここでは、実施の形態１に係る計算機システムの構成を説明した後に、この計算機システムによる各種処理の手順を説明する。
【００３２】
＜実施の形態１に係る計算機システムの構成＞
実施の形態１に係る計算機システムにおける各部の構成を説明する。図１は、本実施の形態１に係る計算機システムの構成を示すブロック図である。この計算機システムは、同図に示すように、ネットワークデバイス１１と、メモリコントローラと、メモリと、プロセッサ１４とを備える。
【００３３】
ネットワークデバイス１１は、インターネットなどのネットワークおよび衛星放送などの放送電波を介して、データを送受信する処理部である。また、送受信するデータに対して１パケット分のバッファを備えており、パケット単位でのＣＲＣ（連続して出現する誤りの検出が可能な検出方式）およびＡＣＫの応答などをおこなう。
【００３４】
メモリコントローラ１２は、デバイス間でデータストリームを転送する場合に、データ転送を制御する処理部であり、メモリコントローラ内部には、ＤＲＡＭの読み書きをおこなうＤＲＡＭコントローラ、プロセッサおよびネットワークデバイスからのメモリアクセスコマンドを受け取るコマンドキュー２本を備え、機能概念的に、書込制御部１２ａと、消去制御部１２ｂと、管理部１２ｃと、読出制御部１２ｄと、ＦＩＦＯメモリ１２ｅとから構成される。
【００３５】
このうち、メモリコントローラ１２における書込制御部１２ａは、メモリ１３およびＦＩＦＯメモリ１２ｅに受信データを書き込むように制御する処理部である。なお、ネットワークデバイス１１が受信したデータを書き込む前に、該書き込むデータの先頭アドレス、データの長さおよび書き込み数カウンタを管理部１２ｃによって管理される登録領域に登録する。
【００３６】
メモリコントローラ１２における消去制御部１２ｂは、ＦＩＦＯメモリ１２ｅに書き込まれた書込データを消去するように制御する。具体的には、具体的には、デバイス（本実施の形態ではネットワークデバイス）からＡＣＫを受け取った書込データを消去する。
【００３７】
また、消去制御部１２ｂは、書込制御部１２ａが書込データの先頭アドレス、データの長さおよび書き込み数カウンタを登録しようとした際、登録領域に空きがなかった場合に、ＬＲＵ（未使用時間が最も長いデータを選択するアルゴリズム）に基づいて、管理部１２ｃによって管理されている登録領域を消去する。
【００３８】
メモリコントローラ１２における管理部１２ｃは、書込制御部１２ａによってメモリ１３およびＦＩＦＯメモリ１２ｅに書き込まれた書込データの書き込み状況を管理する。具体的には、図２に示すように、登録領域において、書込制御部１２ａによって書き込まれるデータの先頭アドレス、データの長さおよび書き込み数カウンタ（これまでに書き込まれたデータ数）を書き込み状況として管理する。
【００３９】
メモリコントローラ１２における読出制御部１２ｄは、管理部１２ｃによって管理された書き込み状況を参照し、読み出し要求に係るデータをＦＩＦＯメモリ１２ｅから優先的に読み出すように制御する。
【００４０】
すなわち、プロセッサ１４からの読み出し要求に係るデータが管理部１２ｃによって管理された登録領域内に存在しない場合には、メモリ１３から読み出す。また、プロセッサ１４からの読み出し要求に係るデータが管理部１２ｃによって管理された登録領域に存在する場合には、登録領域に登録された書き込み数カウンタに基づいて、読み出し要求が既に書き込まれたデータであるか否か判定し、未だ書き込まれていない場合には書き終えるまで待機した後にＦＩＦＯメモリ１２ｅから読み出し、既に書き込まれたデータである場合にはＦＩＦＯメモリ１２ｅから読み出す。
【００４１】
メモリコントローラ１２におけるＦＩＦＯメモリ１２ｅは、同時にデータの書き込みおよび読み出しが可能な記憶手段である。具体的には、キュー構造を持つメモリで、通常は、一番新しく格納されたデータが最後に取り出される。
【００４２】
また、ＦＩＦＯメモリ１２ｅは、最大パケットサイズに分割され管理されている。具体的には、（ＦＩＦＯサイズ／パケットサイズ）個のＦＩＦＯから構成される。
【００４３】
メモリ１３は、排他的にのみデータの書き込みおよび読み出しが可能な記憶手段である。具体的には、ＲＡＭ（揮発性の半導体メモリ）やＲＯＭ（不揮発性の半導体メモリ）を利用した主記憶装置である。
【００４４】
プロセッサ１４は、各処理部の制御やデータの計算または加工をおこなう処理部である。具体的には、メモリ１３に記憶されたプログラムを読み出し、該プログラムの指示に従って、ネットワークデバイス１１やメモリ１３からデータを受け取り、データをプログラム通りに演算または加工する。
【００４５】
＜実施の形態１に係る計算機システムの各種処理の手順＞
次に、本実施の形態１に係る計算機システムによる各種処理の手順を説明する。なお、ここでは、（１）本実施の形態１に係る計算機システムの書込処理を説明した後に、（２）本実施の形態１に係る計算機システムの読出処理を説明する。
【００４６】
（１）計算機システムの書込処理の手順
本実施の形態１に係る計算機システムの書込処理の手順を説明する。図３は、本実施の形態１に係る計算機システムの書込処理の手順を示すフローチャートである。メモリコントローラ１２は、インターネットなどのネットワークおよび衛星放送などの放送電波を介して受信したデータがストリームであるか否か判定する（ステップＳ３０１）。
【００４７】
そして、受信データがストリームでない場合（ステップＳ３０１否定）、メモリコントローラ１２における書込制御部１２ａは、メモリ１３に受信データを書き込む（ステップＳ３０２）。
【００４８】
また、受信データがストリームである場合（ステップＳ３０１肯定）、ネットワークデバイス１１は、メモリコントローラ１２およびプロセッサ１４に受信データ（パケットデータ）の書き込み指示を報知する（ステップＳ３０３）。具体的には、メモリコントローラ１２が受け取った指示をプロセッサに転送することによって報知する。
【００４９】
そして、メモリコントローラにおける書込制御部１２ａは、フラグInvalidの登録領域を検索し（ステップＳ３０４）、フラグInvalidの登録領域が存在する場合（ステップＳ３０４肯定）には、フラグvalidを立てて、先頭アドレス、データの長さを登録して書き込み数カウンタには０を記入する（ステップＳ３０５）。
【００５０】
また、フラグInvalidの登録領域が存在しない場合（ステップＳ３０４否定）には、メモリコントローラ１２における消去制御部１２ｂは、ＬＲＵに基づいて既に読み出されている登録領域を一つ消去し、書込制御部１２ａは、消去した登録領域にフラグvalidを立てて、先頭アドレス、データの長さを登録して書き込み数カウンタには０を記入する（ステップＳ３０６）。
【００５１】
続いて、メモリコントローラにおける書込制御部１２ａは、メモリ１３およびＦＩＦＯメモリ１２ｅに受信データを書き込む（ステップＳ３０７）。具体的には、受信データを登録領域に書き込み、書き込み数カウンタの値を＋１にする。
【００５２】
最後に、全パケットデータの書き込みが終了である場合（ステップＳ３０８肯定）は、処理を終了する。また、パケットデータの書き込みが途中である場合（ステップＳ３０８否定）には、上記のステップＳ３０１〜Ｓ３０７の処理を実行する。
【００５３】
（２）計算機システムの読出処理の手順
次に、本実施の形態１に係る計算機システムの読出処理の手順を説明する。図４は、本実施の形態１に係る計算機システムの読出処理の手順を示すフローチャートである。メモリコントローラ１２における読出制御部１２ｄは、プロセッサ１４からの読み出し要求に係るデータが管理部１２ｃによって管理された登録領域に存在するか否かを判定する（ステップＳ４０１）。具体的には、プロセッサ１４からの読みだし要求のアドレスが登録領域に登録された先頭アドレス＋データの長さの中に入っているか否かを検査して判定する。
【００５４】
プロセッサ１４からの読み出し要求に係るデータが管理部１２ｃによって管理された登録領域内に存在しない場合（ステップＳ４０１否定）には、メモリ１３から読み出す（ステップＳ４０２）。
【００５５】
ここで、プロセッサ１４からの読み出し要求に係るデータが管理部１２ｃによって管理された登録領域に存在する場合（ステップＳ４０１肯定）には、登録領域に登録された書き込み数カウンタに基づいて、読み出し要求が既に書き込まれたデータであるか否か判定する（ステップＳ４０３）。
【００５６】
そして、未だ書き込まれていない場合（ステップＳ４０３否定）には、書き終えるまで待機した後にＦＩＦＯメモリ１２ｅから読み出す（ステップＳ４０４）。また、既に書き込まれたデータである場合（ステップＳ４０３肯定）には、ＦＩＦＯメモリ１２ｅから読み出す（ステップＳ４０５）。
【００５７】
最後に、全パケットデータの読み出しが終了である場合（ステップＳ４０６肯定）は、処理を終了する。また、パケットデータの読み出しが途中である場合（ステップＳ４０６否定）には、上記のステップＳ４０１〜Ｓ４０５の処理を実行する。
【００５８】
上述してきたように、本実施の形態１に係るメモリコントローラは、ネットワークデバイスから受信したデータがメモリコントローラ内のメモリに書き込まれている際に、書込データのうち既に書き込まれたデータの読み出しをおこなうので、デバイス間でデータストリームを転送する場合に、データ転送を高速することができる。さらに、これに関連して、ネットワークデバイスによって未だ書き込まれていないデータに対してプロセッサの読み出し要求が発生した場合に、書込データが書き込まれるまで待機した後に書込データが書き込まれる都度読み出すように制御することができるので、データ転送の同期を自動化することができる。
【００５９】
（実施の形態２）
次に、実施の形態２では、ＦＩＦＯメモリの空き容量を超えるデータを受信した場合に、ＦＩＦＯメモリからあふれたデータをメモリからＦＩＦＯメモリに書き込むメモリコントローラについて説明する。このメモリコントローラは、図１に示す実施の形態１に係る計算機システムにおけるメモリコントローラ１２と比較して、機能概念的に、メモリコントローラ１２における書込制御部１２ａにさらなる特徴がある。
【００６０】
書込制御部１２ａは、ＦＩＦＯメモリ１２ｅの空き容量を超える受信データを受信した場合に、該受信データのうち空き容量に収まるデータをＦＩＦＯメモリ１２ｅに書き込んだ後、ＦＩＦＯメモリ１２ｅからあふれたデータをメモリ１３から消去制御部１２ｂによって消去された登録領域の空き部分に書き込むように制御する。つまり、この書込制御処理は、ヒット率が１００％（データストリームであるため）の一種のキャッシュ・プリフェッチ方式である。
【００６１】
このように、本実施の形態２に係るメモリコントローラは、ＦＩＦＯメモリの空き容量を超えるデータを受信した場合に、ＦＩＦＯメモリからあふれたデータをメモリからＦＩＦＯメモリに書き込むことによって、ＦＩＦＯメモリの空き容量を超える受信データのすべてをＦＩＦＯメモリから読み出すことが可能になり、プロセッサがメモリから書込データを読み出すのに比べて、データ転送を高速化することができる。
【００６２】
（実施の形態３）
次に、実施の形態３では、プロセッサ内部の論理空間では連続領域であるが実際のメモリ上では複数の領域に分割されて実現されている領域から読み出し要求に係るデータを読み出す場合に、書込データについて、分割されたブロックごとに書き込み状況を管理し、ブロックごとに管理された書き込み状況を参照して読み出し要求に係るデータを読み出すメモリコントローラについて説明する。このメモリコントローラは、図１に示す実施の形態１に係る計算機システムにおけるメモリコントローラ１２と比較して、機能概念的に、メモリコントローラ１２における管理部１２ｃと、読出制御部１２ｄとにさらなる特徴がある。
【００６３】
管理部１２ｃは、書込制御部１２ａによって書き込まれた書込データについて分割されたブロックごとに書き込み状況を管理する。具体的には、図５に示すように、登録領域を拡張して複数の先頭アドレスおよびデータの長さを登録できるようにしている。
【００６４】
読出制御部１２ｄは、管理部１２ｃによってブロックごとに管理された書き込み状況を参照して読み出し要求に係るデータを読み出すように制御する。具体的には、管理部１２ｃによって管理された複数の先頭アドレスおよびデータの長さ基づいて、複数の領域に分割された書込データを連続した領域として読み出す。
【００６５】
このように、本実施の形態３に係るメモリコントローラは、プロセッサ内部の論理空間では連続領域であるが実際のメモリ上では複数の領域に分割されて実現されている領域から読み出し要求に係るデータを読み出す場合に、書込データについて、分割されたブロックごとに書き込み状況を管理し、ブロックごとに管理された書き込み状況を参照して読み出し要求に係るデータを読み出す。このように、複数の領域に分割された書込データを連続した領域として読み出すことによって、データ転送を高速化することができる。
【００６６】
（実施の形態４）
ところで、上記実施の形態１〜３で説明したメモリコントローラは、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、本実施の形態４では、上記実施の形態１〜３で説明したメモリコントローラと同様の機能を有するメモリコントローラプログラムを実行するコンピュータシステムについて説明する。
【００６７】
図５は、本実施の形態４に係るコンピュータシステムの構成を示すシステム構成図であり、図６は、このコンピュータシステムにおける本体部の構成を示すブロック図である。図５に示すように、本実施の形態４に係るコンピュータシステム１００は、本体部１０１と、本体部１０１からの指示によって表示画面１０２ａに画像などの情報を表示するためのディスプレイ１０２と、このコンピュータシステム１００に種々の情報を入力するためのキーボード１０３と、ディスプレイ１０２の表示画面１０２ａ上の任意の位置を指定するためのマウス１０４とを備える。
【００６８】
また、このコンピュータシステム１００における本体部１０１は、図６に示すように、ＣＰＵ１２１と、ＲＡＭ１２２と、ＲＯＭ１２３と、ハードディスクドライブ（ＨＤＤ）１２４と、ＣＤ−ＲＯＭ１０９を受け入れるＣＤ−ＲＯＭドライブ１２５と、フレキシブルディスク（ＦＤ）１０８を受け入れるＦＤドライブ１２６と、ディスプレイ１０２、キーボード１０３並びにマウス１０４を接続するＩ／Ｏインターフェース１２７と、ローカルエリアネットワークまたは広域エリアネットワーク（ＬＡＮ／ＷＡＮ）１０６に接続するＬＡＮインターフェース１２８とを備える。
【００６９】
さらに、このコンピュータシステム１００には、インターネットなどの公衆回線１０７に接続するためのモデム１０５が接続されるとともに、ＬＡＮインターフェース１２８およびＬＡＮ／ＷＡＮ１０６を介して、他のコンピュータシステム（ＰＣ）１１１、サーバ１１２並びにプリンタ１１３などが接続される。
【００７０】
そして、このコンピュータシステム１００は、所定の記録媒体に記録されたメモリコントローラプログラムを読み出して実行することでメモリコントローラを実現する。ここで、所定の記録媒体とは、フレキシブルディスク（ＦＤ）１０８、ＣＤ−ＲＯＭ１０９、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」の他に、コンピュータシステム１００の内外に備えられるハードディスクドライブ（ＨＤＤ）１２４や、ＲＡＭ１２２、ＲＯＭ１２３などの「固定用の物理媒体」、さらに、モデム１０５を介して接続される公衆回線１０７や、他のコンピュータシステム１１１並びにサーバ１１２が接続されるＬＡＮ／ＷＡＮ１０６などのように、プログラムの送信に際して短期にプログラムを保持する「通信媒体」など、コンピュータシステム１００によって読み取り可能なメモリコントローラプログラムを記録する、あらゆる記録媒体を含むものである。
【００７１】
すなわち、メモリコントローラプログラムは、上記した「可搬用の物理媒体」、「固定用の物理媒体」、「通信媒体」などの記録媒体に、コンピュータ読み取り可能に記録されるものであり、コンピュータシステム１００は、このような記録媒体からメモリコントローラプログラムを読み出して実行することでメモリコントローラを実現する。なお、メモリコントローラプログラムは、コンピュータシステム１００によって実行されることに限定されるものではなく、他のコンピュータシステム１１１またはサーバ１１２がメモリコントローラプログラムを実行する場合や、これらが協働してメモリコントローラプログラムを実行するような場合にも、本発明を同様に適用することができる。
【００７２】
（他の実施の形態）
さて、これまで本発明の実施の形態について説明したが、本発明は上述した実施の形態以外にも、上記特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施の形態にて実施されてもよいものである。
【００７３】
例えば、本実施の形態では、メモリコントローラにＦＩＦＯメモリを搭載する場合について説明したが、本発明はこれに限定されるものではなく、ＦＩＦＯメモリをメモリコントローラ外に設置する場合についても同様に適用することができる。
【００７４】
なお、本発明に係るメモリコントローラは、所定のデバイスから消去の指示が出されるまで、第二のメモリにおける書込データを消去せずに管理し、所定のデバイスから消去の指示が出された場合に第二のメモリにおける書込データを消去するように制御することにより、デバイスからＡＣＫを受け取った書込データを消去するように制御した後に、消去されなかった書込データを再度読み出すことが可能になり、エラーなどの再度読み出しにも対応することができる。さらに、これに関連して、小容量であるＦＩＦＯメモリにおいて、必要なデータのみをＦＩＦＯメモリに残すことができるので、ＦＩＦＯメモリを効率良く使用することができる。
【００７５】
また、本実施の形態では、ネットワークデバイスおよびプロセッサ間においてデータ転送をおこなう場合について説明したが、本発明はこれに限定されるものではなく、他のデバイス間または複数のデバイス間においても同様に適用することができる。
【００７６】
なお、複数のデバイス間においてデータ転送がおこなわれる場合に、ＦＩＦＯメモリにおける複数のデータ登録領域の利用方法として、各デバイスに固定的にデータ登録領域を割り当てる方法、動的にその瞬間利用されていないデータ登録領域を割り当てる方法、プライオリティに応じて登録領域を割り当てる方法、および、一定量の領域を残してあとは自由に割り当てる方法などを適用することができる。
【００７７】
また、本実施の形態では、複数のデバイス間においてデータ転送をおこなう際にＦＩＦＯメモリを記憶領域ごとに分割する場合について説明したが、本発明はこれに限定されるものではなく、各デバイスのデータ登録領域ごとに複数のＦＩＦＯメモリを固定的または動的に割り当てる場合についても同様に適用することができる。
【００７８】
また、本実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８０】
（付記１）所定のデバイスから受信した受信データを所定のメモリに書き込むとともに、他の所定のデバイスからの読み出し要求に応じて前記メモリに書き込まれた書込データを読み出すメモリコントローラであって、
排他的にのみデータの書き込みおよび読み出しが可能な第一のメモリおよび同時にデータの書き込みおよび読み出しが可能な第二のメモリに前記受信データを書き込むように制御する書込制御手段と、
前記第二のメモリに書き込まれた書込データを消去するように制御する消去制御手段と、
前記書込制御手段によって前記第一のメモリおよび前記第二のメモリに書き込まれた前記書込データの書き込み状況を管理する管理手段と、
前記管理手段によって管理された書き込み状況を参照し、前記読み出し要求に係るデータを前記第二のメモリから優先的に読み出すように制御する読出制御手段と、
を備えたことを特徴とするメモリコントローラ。
【００８１】
（付記２）前記読出制御手段は、前記読み出し要求に係るデータが前記書込制御手段によって書き込まれたデータでない場合には、前記第一のメモリから読み出し、前記読み出し要求に係るデータが前記書込制御手段によって既に書き込まれたデータである場合には、前記第二のメモリから読み出し、前記読み出し要求に係るデータが前記書込制御手段によって未だ書き込まれていない場合には、書き終えるまで待機した後に読み出すように制御することを特徴とする付記１に記載のメモリコントローラ。
【００８２】
（付記３）前記管理手段は、前記読出制御手段によって読み出された後に空き状態となった前記第二のメモリの空き状況をさらに管理するものであって、
前記書込制御手段は、前記第二のメモリの空き容量を超える受信データを受信した場合に、該受信データのうち空き容量に収まるデータを前記第二のメモリに書き込んだ後、前記管理手段によって管理された前記第二のメモリの空き状況に応じて、前記第二のメモリからあふれたデータを前記第一のメモリから前記第二のメモリの空き領域に書き込むように制御することを特徴とする付記２に記載のメモリコントローラ。
【００８３】
（付記４）前記管理手段は、前記書込制御手段によって書き込まれた前記書込データについて、分割されたブロックごとに書き込み状況を管理するものであって、
前記読出制御手段は、前記管理手段によってブロックごとに管理された書き込み状況を参照して前記読み出し要求に係るデータを読み出すように制御することを特徴とする付記１、２または３に記載のメモリコントローラ。
【００８４】
（付記５）前記管理手段は、前記所定のデバイスから消去の指示が出されるまで、前記第二のメモリにおける前記書込データを消去せずに管理するものであって、
前記消去制御手段は、前記所定のデバイスから消去の指示が出された場合に前記第二のメモリにおける前記書込データを消去するように制御することを特徴とする付記１〜４のいずれか一つに記載のメモリコントローラ。
【００８５】
（付記６）前記書込制御手段は、複数のデバイス間でデータの転送をおこなう場合に、各デバイスごとに分割された前記第二のメモリの記憶領域および前記第一のメモリに前記受信データを書き込むように制御し、
前記消去制御手段は、前記各デバイスごとに分割された前記第二のメモリの記憶領域に書き込まれた書込データを消去するように制御し、
前記管理手段は、前記書込制御手段によって書き込まれた前記書込データの書き込み状況を前記各デバイスごとに管理するものであって、
前記読出制御手段は、前記各デバイスからの前記書込データの読み出しの要求に応じて、前記管理手段によって管理された前記各デバイスごとの書き込み状況を参照し、当該要求に係るデータを前記各デバイスごとに分割された前記第二のメモリの記憶領域から優先的に読み出すように制御することを特徴とする付記１〜５のいずれか一つに記載のメモリコントローラ。
【００８６】
【発明の効果】
以上説明したように、本発明によれば、排他的にのみデータの書き込みおよび読み出しが可能な第一のメモリおよび同時にデータの書き込みおよび読み出しが可能な第二のメモリに受信データを書き込むように制御し、第二のメモリに書き込まれた書込データを消去するように制御し、第一のメモリおよび第二のメモリに書き込まれた書込データの書き込み状況を管理し、管理された書き込み状況を参照し、読み出し要求に係るデータを第二のメモリから優先的に読み出すように制御することとしたので、ネットワークデバイスから受信したデータがメモリコントローラ内のメモリに書き込まれている際に、書込データのうち既に書き込まれたデータの読み出しをおこなうことができる。これにより、デバイス間でデータストリームを転送する場合に、データ転送を高速することができる。
【００８７】
また、本発明によれば、読み出し要求に係るデータが書き込まれたデータでない場合には、第一のメモリから読み出し、読み出し要求に係るデータが既に書き込まれたデータである場合には、第二のメモリから読み出し、読み出し要求に係るデータが未だ書き込まれていない場合には、書き終えるまで待機した後に読み出すように制御することとしたので、ネットワークデバイスから受信したデータがメモリコントローラ内のメモリに書き込まれている際に、書込データのうち既に書き込まれたデータの読み出しをおこなうことができる。これにより、デバイス間でデータストリームを転送する場合に、データ転送を高速することができる。さらに、これに関連して、ネットワークデバイスによって未だ書き込まれていないデータに対してプロセッサの読み出し要求が発生した場合に、書込データが書き込まれるまで待機した後に書込データが書き込まれる都度読み出すように制御することができるので、データ転送の同期を自動化することができる。
【００８８】
また、本発明によれば、読み出された後に空き状態となった第二のメモリの空き状況をさらに管理し、第二のメモリの空き容量を超える受信データを受信した場合に、該受信データのうち空き容量に収まるデータを第二のメモリに書き込んだ後、第二のメモリの空き状況に応じて、第二のメモリからあふれたデータを第一のメモリから第二のメモリの空き領域に書き込むように制御することとしたので、ＦＩＦＯメモリの空き容量を超える受信データのすべてをＦＩＦＯメモリから読み出すことができる。これにより、プロセッサがメモリから書込データを読み出すのに比べて、データ転送を高速化することができる。
【００８９】
また、本発明によれば、書込データについて分割されたブロックごとに書き込み状況を管理するものであって、ブロックごとに管理された書き込み状況を参照して読み出し要求に係るデータを読み出すように制御することとしたので、複数の領域に分割された書込データを連続した領域として読み出すことができる。これにより、デバイス間でデータストリームを転送する場合に、データ転送を高速化することができる。
【００９０】
また、本発明は、所定のデバイスから消去の指示が出されるまで、第二のメモリにおける書込データを消去せずに管理するものであって、所定のデバイスから消去の指示が出された場合に第二のメモリにおける書込データを消去するように制御することとしたので、デバイスからＡＣＫを受け取った書込データを消去するように制御した後に、消去されなかった書込データを再度読み出すことができる。これにより、エラーなどの再度読み出しにも対応することができる。さらに、これに関連して、小容量であるＦＩＦＯメモリにおいて、必要なデータのみをＦＩＦＯメモリに残すことができるので、ＦＩＦＯメモリを効率良く使用することができる。
【図面の簡単な説明】
【図１】本実施の形態１に係る計算機システムの構成を示すブロック図である。
【図２】管理部の登録領域の構成例を示す図である。
【図３】本実施の形態１に係る計算機システムの書込処理の手順を示すフローチャートである。
【図４】本実施の形態１に係る計算機システムの読出処理の手順を示すフローチャートである。
【図５】管理部の登録領域の拡張を説明するための図である。
【図６】本実施の形態４に係るコンピュータシステムの構成を示すシステム図である。
【図７】図６に示したコンピュータシステムにおける本体部の構成を示すブロック図である。
【符号の説明】
１０  計算機システム
１１  ネットワークデバイス
１２  メモリコントローラ
１２ａ  書込制御部
１２ｂ  消去制御部
１２ｃ  管理部
１２ｄ  読出制御部
１２ｅ  ＦＩＦＯメモリ
１３  メモリ
１４  プロセッサ
１００  コンピュータシステム
１０１  本体部
１０２  ディスプレイ
１０２ａ  表示画面
１０３  キーボード
１０４  マウス
１０５  モデム
１０６  ＬＡＮ／ＷＡＮ
１０７  公衆回線
１０８  ＦＤ
１０９  ＣＤ−ＲＯＭ
１１１  ＰＣ
１１２  サーバ
１１３  プリンタ
１２１  ＣＰＵ
１２２  ＲＡＭ
１２３  ＲＯＭ
１２４  ＨＤＤ
１２５  ＣＤ−ＲＯＭドライブ
１２６  ＦＤドライブ
１２７  Ｉ／Ｏインターフェース
１２８  ＬＡＮインターフェース
【図１】
2004206252.tif 000003
【図２】
2004206252.tif 000004
【図３】
2004206252.tif 000005
【図４】
2004206252.tif 000006
【図５】
2004206252.tif 000007
【図６】
2004206252.tif 000008
【図７】
2004206252.tif 000009