(57)【要約】【課題】データポートのバッファ資源を効率的に使用できるデータ転送回路を提供する。【解決手段】データ転送回路は、書き込みデータのメモリへの書き込みを制御する書込制御回路と、メモリからのデータの読み出しを制御する読出制御回路と、メモリに書き込んだデータのメモリ内での格納位置を登録可能な第１の記憶回路と、書き込みデータが一定のデータパターンの繰り返しであるとき一定のデータパターンを格納する第２の記憶回路とを含み、書込制御回路は、第２の記憶回路に格納した一定のデータパターンの繰り返しである書き込みデータについては、メモリ内での格納位置を第１の記憶回路に登録せず、読出制御回路は、第１の読出し要求が要求するデータが第２の記憶回路に格納されている一定のデータパターンに対応する場合に、第２の記憶回路から一定のデータパターンを読み出して、読み出した一定のデータパターンを第１の読出し要求の要求元に供給する。【選択図】図４
2013210836.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
書き込みデータの前記メモリへの書き込みを制御する書込制御回路と、
前記メモリからのデータの読み出しを制御する読出制御回路と、
前記メモリに書き込んだデータの前記メモリ内での格納位置を登録可能な第１の記憶回路と、
前記書き込みデータが一定のデータパターンの繰り返しであるとき前記一定のデータパターンを格納する第２の記憶回路と
を含み、前記書込制御回路は、前記第２の記憶回路に格納した前記一定のデータパターンの繰り返しである前記書き込みデータについては、前記メモリ内での格納位置を前記第１の記憶回路に登録せず、前記読出制御回路は、第１の読出し要求が要求するデータが前記第２の記憶回路に格納されている前記一定のデータパターンに対応するデータである場合に、前記メモリからではなく前記第２の記憶回路から前記一定のデータパターンを読み出して、読み出した前記一定のデータパターンを前記第１の読出し要求の要求元に供給することを特徴とするデータ転送回路。
【請求項２】
第３の記憶回路を更に含み、
前記書込制御回路は、前記書き込みデータ中の少なくとも一部のデータが所定のデータパターンであるとき前記少なくとも一部のデータの前記メモリへの書き込みを抑止し、前記少なくとも一部のデータの書き込みが抑止された前記メモリ中のアドレスを前記第３の記憶回路に記録し、
前記読出制御回路は、第３の読出し要求に応じた読出しアドレスが前記第３の記憶回路に記録されている前記アドレスに一致するときに、前記所定のデータパターンを前記第２の読出し要求の要求元に供給することを特徴とする請求項１記載のデータ転送回路。
【請求項３】
前記書込制御回路は、前記少なくとも一部のデータの前記メモリへの書き込みを抑止した際に、前記少なくとも一部のデータの書き込みが抑止された前記メモリ中のアドレスにデバッグ情報を書き込むことを特徴とする請求項２記載のデータ転送回路。
【請求項４】
データパターンの系列を生成するパターン生成回路を更に含み、前記読出制御回路は、前記パターン生成回路が生成するデータパターンの系列を前記第１の読出し要求の要求元に供給することを特徴とする請求項１乃至３いずれか一項記載のデータ転送回路。
【請求項５】
第１の書き込みデータと第２の書き込みデータとをメモリへ書き込み、
前記第１の書き込みデータが一定のデータパターンの繰り返しでないとき前記第１の書き込みデータの前記メモリ内での第１の格納位置を第１の記憶回路に登録し、
前記第２の書き込みデータが前記一定のデータパターンの繰り返しであるとき、前記第２の書き込みデータの前記メモリ内での第２の格納位置を前記第１の記憶回路に登録せずに、前記一定のデータパターンを第２の記憶回路に格納し、
第１の読出し要求が要求するデータが前記第１の記憶回路に格納されている前記第１の格納位置に格納されているデータである場合に、前記メモリの前記第１の格納位置から前記第１の書き込みデータを読み出して、読み出した前記第１の書き込みデータを前記第１の読出し要求の要求元に供給し
第２の読出し要求が要求するデータが前記第２の記憶回路に格納されている前記一定のデータパターンに対応するデータである場合に、前記メモリからではなく前記第２の記憶回路から前記一定のデータパターンを読み出して、読み出した前記一定のデータパターンを前記第２の読出し要求の要求元に供給する
各段階を含むことを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送回路及びデータ転送方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）内のＩ／Ｏ（Input Output）ポート（入出力ポート）は、外部のＩ／Ｏデバイスから到着したデータのフェッチリクエスト（取得要求）又はストアリクエスト（格納要求）を保持し、これらのリクエストをメモリコントローラに送出する。Ｉ／Ｏポートは更に、ストアリクエスト実行時に、メモリコントローラからのデータの読み出し要求に応答して、ストアデータをメモリコントローラに送出する。
【０００３】
Ｉ／Ｏポートはリクエストポート及びデータポートを含む。リクエストポートは、リクエストのヘッダ部を保持し、メモリコントローラにリクエストを送出したり、タイムアウト時間を監視したり、リクエスト間の順序を保証したりする。データポートはリクエストのデータ部を保持し、メモリコントローラからのデータの読み出し要求がきた時に、読み出し要求に対応するデータをメモリコントローラに送出する。
【０００４】
Ｉ／Ｏポートのリソース以上のリクエストが到来してリクエストが溢れることのないように、Ｉ／Ｏポートに送出されるリクエスト数の管理をする必要がある。Ｉ／Ｏポートに送出されるリクエスト数の管理の方式としてクレジット管理方式がある。このクレジット管理方式では、Ｉ／Ｏデバイス或いはＩ／Ｏインターフェース内の緩衝バッファがクレジット値を持ち、Ｉ／Ｏポートにリクエストを送出する度にクレジット値を加算し、またＩ／Ｏポートが資源を解放する度にクレジット値を減算する。これにより、リクエスト送出側において、Ｉ／Ｏポート側で使用可能な資源数即ち受け取り可能なリクエスト数をクレジットにより管理し、Ｉ／Ｏポートが溢れないようにリクエストの送信数を制御する。
【０００５】
リクエスト数を管理する際には、データポートの容量に応じて受信可能なリクエスト数を管理する方式と、リクエストポートの容量に応じてリクエスト数を管理する方式とが存在する。データポートの容量に応じて管理する方式の場合、パケットのサイズの小さいフェッチリクエストが多発するケースに対応するためには、リクエストポートを大量に用意しておく必要がある。またリクエストポートの容量に応じて管理する方式の場合、パケットのサイズの大きいストアリクエストが多発するケースに対応するためには、リクエストの個数分だけのストアデータを保持できる大容量のバッファをデータポートとして用意すておく必要がある。
【０００６】
これらのことを考慮して、実装するハードウェアの物理量のバランスと性能とを考慮した上で、データポートのバッファのデータ量とリクエストポートのリクエストの個数との両方に基づいて、リクエスト数を管理してもよい。但し、この方法においては、フェッチリクエスト又はストアリクエストの一方が一時的に集中した場合、資源を活用しきれない、又は、十分な性能を発揮するためには資源が足りない、等の問題が発生する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−１２４９５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
１つの側面では、本発明は、データポートのバッファ資源の効率的使用を可能にするデータ転送回路及びデータ転送方法が望まれる。
【課題を解決するための手段】
【０００９】
データ転送回路は、メモリと、書き込みデータの前記メモリへの書き込みを制御する書込制御回路と、前記メモリからのデータの読み出しを制御する読出制御回路と、前記メモリに書き込んだデータの前記メモリ内での格納位置を登録可能な第１の記憶回路と、前記書き込みデータが一定のデータパターンの繰り返しであるとき前記一定のデータパターンを格納する第２の記憶回路とを含み、前記書込制御回路は、前記第２の記憶回路に格納した前記一定のデータパターンの繰り返しである前記書き込みデータについては、前記メモリ内での格納位置を前記第１の記憶回路に登録せず、前記読出制御回路は、第１の読出し要求が要求するデータが前記第２の記憶回路に格納されている前記一定のデータパターンに対応するデータである場合に、前記メモリからではなく前記第２の記憶回路から前記一定のデータパターンを読み出して、読み出した前記一定のデータパターンを前記第１の読出し要求の要求元に供給することを特徴とする。
【００１０】
データ転送方法は、第１の書き込みデータと第２の書き込みデータとをメモリへ書き込み、前記第１の書き込みデータが一定のデータパターンの繰り返しでないとき前記第１の書き込みデータの前記メモリ内での第１の格納位置を第１の記憶回路に登録し、前記第２の書き込みデータが前記一定のデータパターンの繰り返しであるとき、前記第２の書き込みデータの前記メモリ内での第２の格納位置を前記第１の記憶回路に登録せずに、前記一定のデータパターンを第２の記憶回路に格納し、第１の読出し要求が要求するデータが前記第１の記憶回路に格納されている前記第１の格納位置に格納されているデータである場合に、前記メモリの前記第１の格納位置から前記第１の書き込みデータを読み出して、読み出した前記第１の書き込みデータを前記第１の読出し要求の要求元に供給し、第２の読出し要求が要求するデータが前記第２の記憶回路に格納されている前記一定のデータパターンに対応するデータである場合に、前記メモリからではなく前記第２の記憶回路から前記一定のデータパターンを読み出して、読み出した前記一定のデータパターンを前記第２の読出し要求の要求元に供給する各段階を含むことを特徴とする。
【発明の効果】
【００１１】
１つの実施例によれば、データポートのバッファ資源の効率的使用を可能にするデータ転送回路及びデータ転送方法が提供される。
【図面の簡単な説明】
【００１２】
【図１】情報処理システムの構成の一例を示す図である。
【図２】ストアリクエストのフォーマットの一例を示す図である。
【図３】フェッチリクエストのフォーマットの一例を示す図である。
【図４】Ｉ／Ｏポートの構成の一例を示す図である。
【図５】タグについて説明するための図である。
【図６】データポートであるＲＡＭの領域分割について説明するための図である。
【図７】ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブルの構成の一例を示す図である。
【図８】ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブルの構成の一例を示す図である。
【図９】ゼロデータテーブルの構成の一例を示す図である。
【図１０】データポート書込制御回路の動作の一例を示すフローチャートである。
【図１１】データポート書込制御回路の動作の一例を示すフローチャートである。
【図１２】図１１のフローチャートの動作の変形例を示す図である。
【図１３】データポート読出制御回路の動作の一例を示すフローチャートである。
【図１４】データポート読出制御回路の動作の一例を示すフローチャートである。
【図１５】データポート読出制御回路の別の動作の一例を示すフローチャートである。
【図１６】セレクタの動作の一例を示すフローチャートである。
【図１７】書き込みデータの処理の一例を示す図である。
【図１８】書き込みデータの処理の別の一例を示す図である。
【図１９】書き込みデータの処理の更に別の一例を示す図である。
【図２０】読出し処理の一例を示す図である。
【図２１】読出し処理の別の一例を示す図である。
【図２２】読出し処理の更に別の一例を示す図である。
【図２３】ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブルの変形例を示す図である。
【図２４】図２３のＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブルのＤＴＰＴＮの構成を示す図である。
【図２５】パターン生成回路の一例を示す図である。
【図２６】図２５のパターン生成回路によるパターン生成の論理を示す表である。
【図２７】図２５のパターン生成回路によるパターン生成の一例を示す図である。
【図２８】データポート読出制御回路の動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
【００１４】
図１は、情報処理システムの構成の一例を示す図である。図１に示す情報処理システムは、ＣＰＵ（Central Processing Unit）１０、Ｉ／Ｏ（Input Output）デバイス１１、及びＤＩＭＭ（Dual Inline Memory Module）１２を含む。ＣＰＵ１０は、Ｉ／Ｏインターフェース１３、Ｉ／Ｏポート１４、ＣＰＵコア１５、ＣＰＵコア１６、メモリコントローラ１７、及びＤＩＭＭコントローラ１８を含む。
【００１５】
Ｉ／Ｏデバイス１１は、メモリからデータを取得するフェッチリクエスト又はメモリに対してデータを格納するストアリクエストをＣＰＵ１０に対して送出する。ＣＰＵ１０のＩ／Ｏインターフェース１３はＩ／Ｏデバイス１１からのリクエストを受け取り、受け取ったリクエストをＩ／Ｏポート１４に送る。Ｉ／Ｏポート１４はデータ転送回路であり、送られてきたフェッチリクエスト又はストアリクエストを保持し、これらのリクエストをメモリコントローラに送出する。Ｉ／Ｏポート１４はリクエストポート及びデータポートを含む。リクエストポートは、リクエストのヘッダ部を保持し、メモリコントローラにリクエストを送出したり、メモリにコントローラにリクエストを送出してからのタイムアウト時間を監視したり、リクエスト間の順序を保証したりする。データポートは、ストアリクエスト実行時に、リクエストのデータ部を保持し、メモリコントローラ１７からのデータの読み出し要求がきた時に、読み出し要求に対応するデータをメモリコントローラ１７に送出する。ＣＰＵ１０は、ＣＰＵコア１５及び１６を有するマルチコア構成となっており、これらのＣＰＵコア１５及び１６が並列に動作しながら、演算処理や制御処理等を実行する。メモリコントローラ１７は、ＤＩＭＭコントローラ１８を介して、ＤＩＭＭ１２に対するデータの読み出し動作及び書き込み動作を制御する。
【００１６】
図２は、ストアリクエストのフォーマットの一例を示す図である。図２に示すように、１つのストアリクエストのパケットは、オペコードＯｐｅｃｏｄｅ、リクエスト識別子ＲＱＩＤ、書き込みアドレスＡｄｄｒｅｓｓ、及び書き込みデータｂｙｔｅ０乃至ｂｙｔｅ６３を含む。オペコードＯｐｅｃｏｄｅ及びリクエスト識別子ＲＱＩＤは各々が１バイト長であり、書き込みアドレスＡｄｄｒｅｓｓは２バイト長であり、書き込みデータｂｙｔｅ０乃至ｂｙｔｅ６３は６４バイト長である。オペコードＯｐｅｃｏｄｅ、リクエスト識別子ＲＱＩＤ、及び書き込みアドレスＡｄｄｒｅｓｓが、リクエストのヘッダ部であり、書き込みデータｂｙｔｅ０乃至ｂｙｔｅ６３が、リクエストのデータ部である。例えば３２ビットバスでストアリクエストが転送される場合、０番目の転送データはリクエストのヘッダ部となり、１番目乃至１６番目の転送データがリクエストのデータ部となる。
【００１７】
図３は、フェッチリクエストのフォーマットの一例を示す図である。図３に示すように、１つのフェッチリクエストのパケットは、オペコードＯｐｅｃｏｄｅ、リクエスト識別子ＲＱＩＤ、及び読み出しアドレスＡｄｄｒｅｓｓを含む。オペコードＯｐｅｃｏｄｅ及びリクエスト識別子ＲＱＩＤは各々が１バイト長であり、読み出しアドレスＡｄｄｒｅｓｓは２バイト長であり、フェッチリクエストのパケットは全体で４バイト長となる。オペコードＯｐｅｃｏｄｅ、リクエスト識別子ＲＱＩＤ、及び読み出しアドレスＡｄｄｒｅｓｓが、リクエストのヘッダ部であり、リクエストのデータ部は存在しない。例えば３２ビットバスでフェッチリクエストが転送される場合、３２ビット長（４バイト長）の１個の転送データとして、リクエスト全体が一度に転送される。
【００１８】
図４は、Ｉ／Ｏポート１４の構成の一例を示す図である。Ｉ／Ｏポート１４は、データポート２０、データポート書込制御回路２１、データポート読出制御回路２２、セレクタ２３、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６、及びゼロデータテーブル２７を含む。Ｉ／Ｏポート１４は更に、レジスタ２８乃至３５を含む。なおメモリコントローラ２４は、図１のメモリコントローラ１７に相当する。
【００１９】
図５は、タグについて説明するための図である。ストアリクエストがデータバスを介して転送されるとき、制御バスを介してタグが同時に転送される。このタグにより、ストアリクエストのデータ部について、有効データの位置を示すことができる。具体的には図５に示されるように、２ビットのタグＴＡＧ［１：０］は、"００"、"０１"、"１０"、"１１"の何れかの値をとる。"００"はデータが無効であることを示し、"０１"はデータ部の先頭データであることを示し、"１０"はデータ部の先頭データ及び最終データ以外の途中の部分のデータであることを示し、"１１"はデータ部の最終データであることを示す。例えば図２の例の場合、４バイト単位で転送されるデータの順番が左端に番号で示されているが、０番のデータ（ヘッダ部）の部分に対するタグは"００"となり、１番のデータ（ｂｙｔｅ０乃至ｂｙｔｅ３）の部分に対するタグは"０１"となる。また２番のデータ（ｂｙｔｅ４乃至ｂｙｔｅ７）から１５番のデータ（ｂｙｔｅ５６乃至ｂｙｔｅ５９）までの部分に対するタグは"１０"となり、１６番のデータ（ｂｙｔｅ０乃至ｂｙｔｅ３）の部分に対するタグは"１１"となる。
【００２０】
図４を再び参照し、Ｉ／Ｏインターフェース１３から供給されたデータはレジスタ２８に一旦格納され、またリクエスト識別子ＲＱＩＤは抜き出されてレジスタ２９に格納される。レジスタ２８に一旦格納されたデータのうち、リクエストヘッダ部はリクエストポートに送られ、書き込みデータＷＤ−ＤＡＴＡ及び対応するタグＷＤ−ＴＡＧはレジスタ３０に転送される。またリクエストがストアリクエストである場合、書き込みリクエスト識別子ＷＤ−ＲＱＩＤがレジスタ３２に転送される。レジスタ３０に格納された書き込みデータＷＤ−ＤＡＴＡ及び対応するタグＷＤ−ＴＡＧ、並びに、レジスタ３２に格納された書き込みリクエスト識別子ＷＤ−ＲＱＩＤは、データポート書込制御回路２１に供給される。また更に、レジスタ３０に格納された書き込みデータＷＤ−ＤＡＴＡはレジスタ３１に転送され、メモリ書き込みデータＲＡＭ−ＷＤとしてレジスタ３１に格納される。
【００２１】
図６は、データポート２０であるＲＡＭの領域分割について説明するための図である。データポート２０は、書き込みデータを格納するためのＲＡＭ（Random Access Memory）であり、最大で８個の書き込みデータを格納できる。具体的には、データポート２０に８つの領域ｅｎｔｒｙ０乃至ｅｎｔｒｙ７が設けられており、１つの領域は、例えば図２に示すように６４バイト長である一纏まりの書き込みデータｂｙｔｅ０乃至ｂｙｔｅ６３を格納できる。従って、全体で８個の書き込みデータがデータポート２０に格納され得る。図６に示すように、例えば領域ｅｎｔｒｙ２はメモリアドレスが"８'ｈ２０"から"８'ｈ２Ｆ"のメモリ領域である。
【００２２】
図７は、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５の構成の一例を示す図である。ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５は、データポート２０の８個の領域ｅｎｔｒｙ０乃至ｅｎｔｒｙ７のそれぞれに対応して８個のテーブルエントリを有するメモリ等の記憶回路である。各テーブルエントリは、有効フラグｖとリクエスト識別子ＲＱＩＤとを格納する。データポート２０のある領域に書き込みデータが格納される時、この書き込みデータに対応するリクエスト識別子ＲＱＩＤが、当該領域に対応するＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５のテーブルエントリに格納される。例えば、データポート２０の領域ｅｎｔｒｙ２に書き込みデータが格納されると、この書き込みデータに対応するリクエスト識別子ＲＱＩＤが、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５のｅｎｔｒｙ２用のテーブルエントリのＲＱＩＤに格納される。また有効なリクエスト識別子ＲＱＩＤがＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５に登録されると、対応する有効フラグｖを、登録されたＲＱＩＤが有効である旨を示す値（例えば１）に設定する。なおデータポート２０へのデータ書き込み、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５へのリクエスト識別子ＲＱＩＤの登録、及び有効フラグｖの設定は、データポート書込制御回路２１により行われる。
【００２３】
図８は、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６の構成の一例を示す図である。ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６は、ｎ組のデータを含み、各組のデータは、有効フラグｖ、リクエスト識別子ＲＱＩＤ、及びデータパターンＤＴＰＴＮを含むメモリ等の記憶回路である。１つのストアリクエストの書き込みデータの全部が一定のデータパターンの繰り返しであるときに、そのデータパターンをデータパターンＤＴＰＴＮに格納し、当該書き込みデータに対応するリクエスト識別子ＲＱＩＤをリクエスト識別子ＲＱＩＤとして登録する。またデータ登録がなされると、対応する有効フラグｖを、登録されたＲＱＩＤが有効である旨を示す値（例えば１）に設定する。この場合、当該書き込みデータはデータポート２０に書き込まれるが、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５に当該書き込みデータに関するデータが登録されない。従って、データポート２０中の当該データは無効なデータとの扱いとなり、その後、新たな書き込みデータの到来により上書きされる。なおデータポート２０に対する書込制御、並びに、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６に対するデータパターン及びリクエスト識別子ＲＱＩＤの登録及び有効フラグｖの設定は、データポート書込制御回路２１により行われる。
【００２４】
図９は、ゼロデータテーブル２７の構成の一例を示す図である。ゼロデータテーブル２７は、ｍ組のデータを記憶するメモリ等の記憶回路であるであり、各組のデータは、有効フラグｖ、アドレス値ＡＤＤＲＥＳＳ、及びデータ個数ＣＮＴを含む。書き込みデータ中に４バイト全てゼロであるデータが含まれている場合、そのゼロのデータについてはデータポート２０のＲＡＭに書き込むことなく、ゼロデータテーブル２７へのデータの登録のみを行う。登録するデータは、ゼロのデータが開始する位置の書き込みアドレス（ＡＤＤＲＥＳＳ）、及び、ゼロのデータの個数（ＣＮＴ）である。またデータ登録がなされると、対応する有効フラグｖが有効である旨を示す値（例えば１）に設定する。なおデータポート２０に対する書込制御、並びに、ゼロデータテーブル２７に対する書き込みアドレスＡＤＤＲＥＳＳ及びゼロのデータ個数ＣＮＴの登録及び有効フラグｖの設定は、データポート書込制御回路２１により行われる。
【００２５】
図１０は、データポート書込制御回路２１の動作の一例を示すフローチャートである。このフローチャートは、書き込みデータが全部同一である場合にＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６への登録を行う処理に関するものである。図１０の各ステップは、データポート書込制御回路２１により実行される。なお図４に示されるように、データポート書込制御回路２１は、制御用のパラメータであるｗ−ＲＱＩＤ、ｗ−ＥＮＴＲＹ、ｗ−ＣＮＴ、ｗ−ＤＴＹ、ｗ−ＤＴＰＴＮ、ｗ−ＭＡＳＫＶ、ｗ−ＭＡＤＤＲ、及びｗ−ＭＣＮＴを格納するラッチを含む。
【００２６】
まずステップＳ１で、書き込みデータを受信すると、そのタグをチェックし、先頭データであるか否か（即ちタグが"０１"であるか否か）を判定する。当該受信データが先頭データである場合、ステップＳ２において、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５から利用可能な領域（ｅｎｔｒｙ）を選択し、選択した領域の識別子をｗ−ＥＮＴＲＹに設定する。またｗ−ＲＱＩＤに受信リクエストのリクエスト識別子ＲＱＩＤを設定するとともに、ｗ−ＣＮＴに１を設定する。更に、書き込みアドレスを｛選択されたｅｎｔｒｙ，"００００"｝に設定する。例えば、領域ｅｎｔｒｙ２が選択された場合、ｗ−ＥＮＴＲＹは２に設定され、書き込みアドレスは"２０"に設定される。この書き込みアドレスは、図４において、データポート書込制御回路２１によりレジスタ３３に格納されるＲＡＭ−ＷＡとなる。
【００２７】
ステップＳ３で、４バイトのデータｂｙｔｅ０乃至ｂｙｔｅ３が全て同一か否かを判定する。同一でない場合は、処理を終了する。同一である場合は、ステップＳ４において、ｗ−ＤＴＶに１を設定し、ｗ−ＤＴＰＴＮにｂｙｔｅ０を設定する。
【００２８】
受信データが先頭データでない場合、ステップＳ５で、途中データであるか否か（即ちタグが"１０"であるか否か）を判定する。受信データが途中データである場合、ステップＳ６において、ｗ−ＣＮＴを１だけ増加し、書き込みアドレスを｛ｗ−ＥＮＴＲＹ，ｗ−ＣＮＴ｝に設定する。ステップＳ７で、受信データの４つのバイトが全部ｗ−ＤＴＰＴＮに等しく、且つ、ｗ−ＤＴＶが１に等しい、との条件が満たされるか否かを判定する。この条件が満たされる場合、処理を終了する。この条件が満たされない場合、ｗ−ＤＴＶを０に設定する。
【００２９】
受信データが先頭データでなく且つ途中データでもない場合、ステップＳ９で、最終データであるか否か（即ちタグが"１１"であるか否か）を判定する。受信データが最終データである場合、ステップＳ１０において、書き込みアドレスを｛ｗ−ＥＮＴＲＹ，ｗ−ＣＮＴ｝に設定する。ステップＳ１１で、受信データの４つのバイトが全部ｗ−ＤＴＰＴＮに等しく、且つ、ｗ−ＤＴＶが１に等しく、且つ、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６に空きがある、との条件が満たされるか否かを判定する。なおこの時点でｗ−ＤＴＶが１に等しいと言うことは、先頭データから最終データの１つ前のデータまでは、全てのデータが同一のデータ（ｗ−ＤＴＰＴＮに格納されているデータ）であったということである。
【００３０】
ステップＳ１１での判定条件が満たされる場合、ステップＳ１２で、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６にｗ−ＲＱＩＤとｗ−ＥＮＴＲＹとを登録すると共に、有効フラグｖを有効値に設定する。また更に、ｗ−ＤＴＶを０に設定し、Ｉ／Ｏインターフェース１３側にｏｕｔｓｔａｎｄｉｎｇ開放通知を発行する。このｏｕｔｓｔａｎｄｉｎｇ開放通知に応答して、送信側において、クレジットが１つ減少される。即ち、この場合には、データポート２０に書き込まれたデータはその後利用されることなく、以後受信される書き込みデータにより上書きされる。
【００３１】
ステップＳ１１での判定条件が満たされない場合、ステップＳ１３で、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５中のｗ−ＥＮＴＲＹに対応するテーブルエントリにｗ−ＲＱＩＤを登録すると共に、有効フラグｖを有効値に設定する。即ち、この場合には、データポート２０に書き込まれたデータはそのまま保持され、その後読み出し動作時に利用されることなる。
【００３２】
図１１は、データポート書込制御回路２１の動作の一例を示すフローチャートである。このフローチャートは、書き込みデータ中に全部０であるデータが含まれる場合にゼロデータテーブル２７への登録を行う処理に関するものである。図１１の各ステップは、データポート書込制御回路２１により実行される。また図１１のフローチャートに記載される動作は、図１０のフローチャートに記載される動作と並行して実行される。
【００３３】
ステップＳ２１で、書き込みデータを受信すると、そのタグをチェックし、有効データであるか否か（即ちタグが"０１"、"１０"、又は"１１"であるか否か）を判定する。当該受信データが有効データである場合、ステップＳ２３において、書き込みデータが全て０であり且つｗ−ＤＴＶが０であるか否かを判定する。なお先頭データに対しては、書き込みデータが全て０であっても、図１０のフローチャートのステップＳ４の処理によりｗ−ＤＴＶが１になるので、このステップＳ２３の判定結果はＮｏ（Ｎ）となる。即ち、先頭データから最終データまで全てが０の場合には、図１０に示すフローチャートによりＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６に登録されるデータとなり、ゼロデータテーブル２７への登録は行われない。
【００３４】
ステップＳ２３の判定結果がＮｏ（Ｎ）の場合、ステップＳ２４で、ｗ−ＭＡＳＫＶが１であるか否かを判定する。このｗ−ＭＡＳＫＶは、ゼロデータテーブル２７に空きがあり且つ前回の受信データが全て０である場合に１となるフラグである。ｗ−ＭＡＳＫＶが１でない場合、ステップＳ２５で書き込みイネーブル信号を１にする。これにより、図４において、データポート書込制御回路２１によりレジスタ３３に格納されるＲＡＭ−ＷＥが１となる。即ち、例えば書き込みデータが全て０ではない場合は、データポート２０にそのまま書き込みデータが格納されることになる。
【００３５】
ステップＳ２３の判定結果がＹｅｓ（Ｙ）の場合、ステップＳ２６で、ｗ−ＭＡＳＫＶが１であるか否かを判定する。前回の受信データが全て０でない場合等にはｗ−ＭＡＳＫＶは１ではなく、ステップＳ２７に進む。ステップＳ２７で、ゼロデータテーブル２７に空きがあるか否かを判定する。空きがない場合には、ステップＳ２５に進み、書き込みイネーブル信号を１にする。これにより、データポート２０にそのまま書き込みデータが格納されることになる。ゼロデータテーブル２７に空きがある場合には、ステップＳ２８に進み、ｗ−ＭＡＳＫＶに１を設定し、ｗ−ＭＡＤＤＲに現在の受信データの書き込みアドレスを設定し、更にｗ−ＭＣＮＴに１を設定する。その後、ステップＳ３１で書き込みイネーブル信号を０にする。これにより、データポート２０へのデータ書き込みは中断される。
【００３６】
ステップＳ２６の判定においてｗ−ＭＡＳＫＶが１である場合、ステップＳ２９に進み、ｗ−ＭＣＮＴが１だけ増加される。次にステップＳ３０で当該受信データが最終データ（即ちタグが"１１"）であるか否かが判定される。受信データが最終データでない場合は、ステップＳ３１で書き込みイネーブル信号を０にする。これにより、データポート２０へのデータ書き込みが停止した状態に維持される。受信データが最終データである場合は、ステップＳ３２で、ｗ−ＭＡＳＫＶを０にリセットし、更に、ゼロデータテーブル２７のアドレスＡＤＤＲＥＳＳにｗ−ＭＡＤＤＲを登録すると共に、データ数ＣＮＴにｗ−ＭＣＮＴを登録する。その後、ステップＳ３３で書き込みイネーブル信号を１にする。
【００３７】
またステップＳ２３の判定結果がＮｏ（Ｎ）であり、且つ、ステップＳ２４でｗ−ＭＡＳＫＶが１である場合、前回の受信データが０であったのが今回の受信データは０でなくなったので、ステップＳ３４で、ｗ−ＭＡＳＫＶを０にリセットする。更に、ゼロデータテーブル２７のアドレスＡＤＤＲＥＳＳにｗ−ＭＡＤＤＲを登録すると共に、データ数ＣＮＴにｗ−ＭＣＮＴを登録する。その後、ステップＳ２５で書き込みイネーブル信号を１にする。
【００３８】
なおステップＳ２１での判定結果がＮｏ（Ｎ）の場合、ステップＳ２２で書き込みイネーブル信号を０にする。即ち、有効な書き込みデータでない場合、データポート２０への書き込み動作は実行されない。
【００３９】
図１２は、図１１のフローチャートの動作の変形例を示す図である。図１２において、図１１と同様の処理は同一のステップ番号で参照し、その説明は適宜省略する。図１２のフローチャートでは、ステップＳ３１の前にステップＳ３５が追加されている。このステップＳ３５では、ＲＡＭ−ＷＤ（図４のレジスタ３１に格納される書き込みデータ）として、タイムスタンプ値を設定している。またその次のステップＳ３１においては、書き込みイネーブル信号を０ではなく１に設定している。これにより、０である書き込みデータの代わりに、タイムスタンプ情報（デバッグ情報）をデータポート２０に書き込んでいる。このタイムスタンプ情報は外部から供給されてもよいし、或いはＣＰＵ１０内でラッチとカウンタとを用いて作成してもよい。ＣＰＵ１０を含むチップにおいて問題が検出されたときに、このタイムスタンプ情報がＲＡＭのダンプ情報として収集されてよい。これにより、タイムスタンプ情報をデータ処理の履歴情報として利用し、デバッグにより問題点を検証するために役立てることができる。
【００４０】
図１３は、データポート読出制御回路２２の動作の一例を示すフローチャートである。このフローチャートは、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５又はＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６に基づいてデータを読み出す処理に関するものである。図１３の各ステップは、データポート読出制御回路２２により実行される。なお図４に示されるように、データポート読出制御回路２２は、制御用のパラメータであるｒ−Ｖ、ｒ−ＥＮＴＲＹ、ｒ−ＣＮＴ、ｒ−ＤＴＶ、ｒ−ＤＴＰＴＮ、ｒ−０ＤＴＶ、ｓ−Ｖ、及びｓ−ＤＴＰＴＮを格納するラッチを含む。
【００４１】
ステップＳ４１で、読出しリクエスト（read request）がメモリコントローラ２４から到着したか否かを判定する。判定結果がＹｅｓ（Ｙ）の場合、ステップＳ４２において、ｒ−Ｖ及びｒ−ＣＮＴに１を設定し、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５の検索結果をｒ−ＥＮＴＲＹに設定する。また読出しアドレス（read address）を｛ｒ−ＥＮＴＲＹ，００００｝に設定する。即ち、図４において、レジスタ３４に格納されるＲＡＭ−ＲＡが上記読出しアドレスの値となる。
【００４２】
なお読出しリクエストには、読出し対象のデータに対応するリクエスト識別子ＲＱＩＤが含まれている。このリクエスト識別子ＲＱＩＤに一致するＲＱＩＤをＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５で検索し、検索により発見されたＲＱＩＤに対応する領域（ｅｎｔｒｙ）が、上記のｒ−ＥＮＴＲＹに設定される。
【００４３】
ステップＳ４１での判定結果がＮｏ（Ｎ）の場合、ステップＳ４３において、ｒ−Ｖが１であるか否かを判定する。読出しリクエストが到来した後であって読出し処理が終了する前においてはｒ−Ｖは１となっている。ｒ−Ｖが１の場合、ステップＳ４４に進み、ｒ−ＣＮＴが１６であるか否かを判定する。ここでｒ−ＣＮＴは、読出しが行われたデータの数を示している。判定結果がＮｏ（Ｎ）の場合、ステップＳ４５でｒ−ＣＮＴを１だけ増加する。その後ステップＳ５０において、読出しアドレス（read address）を｛ｒ−ＥＮＴＲＹ，ｒ−ＣＮＴ｝に設定する。
【００４４】
ステップＳ４４での判定結果がＹｅｓ（Ｙ）の場合、読出しデータは最終データであり、ステップＳ４６でｒ−Ｖを０にリセットする。次にステップＳ４７で、ｒ−ＤＴＶが１であるか否かを判定する。このｒ−ＤＴＶは後述するように、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６に読出し対象のデータが登録されている場合に１であり、それ以外の場合に０である。ステップＳ４７の判定においてｒ−ＤＴＶが１の場合、ステップＳ４８で、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６を開放する。即ち、最終データまで読出しが完了したので、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６の対応するエントリは不要となり、対応する有効フラグを、対応するエントリが無効である旨を示す値に変更する。ステップＳ４７の判定においてｒ−ＤＴＶが１でない場合、ステップＳ４９で、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５を開放する。即ち、最終データまで読出しが完了したので、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５の対応するエントリは不要となり、対応する有効フラグを、対応するエントリが無効である旨を示す値に変更する。また更に、Ｉ／Ｏインターフェース１３側にｏｕｔｓｔａｎｄｉｎｇ開放通知を発行する。このｏｕｔｓｔａｎｄｉｎｇ開放通知に応答して、送信側において、クレジットが１つ減少される。その後、その後ステップＳ５０において、読出しアドレス（read address）を｛ｒ−ＥＮＴＲＹ，ｒ−ＣＮＴ｝に設定する。なおＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６使用時には、データポート２０からデータを読み出さないので、この読出しアドレスは設定されても使用はされない。
【００４５】
図１４は、データポート読出制御回路２２の動作の一例を示すフローチャートである。このフローチャートは、データポート２０の読出し制御及びゼロデータテーブル２７に基づく読出し処理に関連するものである。図１４の各ステップは、データポート読出制御回路２２により実行される。また図１４のフローチャートに記載される動作は、図１３のフローチャートに記載される動作と並行して実行される。
【００４６】
ステップＳ５１で、読出しリクエスト（read request）がメモリコントローラ２４から到着したか否かを判定する。判定結果がＹｅｓ（Ｙ）の場合、ステップＳ５２において、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６にヒットしたか否かを判定する。即ち、読出しリクエストに含まれるリクエスト識別子ＲＱＩＤに一致するＲＱＩＤが、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６に登録されているか否か、を判定する。ステップＳ５２においてヒットした場合、ステップＳ５３で、ｒ−ＤＩＶを１に設定し、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６の対応するＤＴＰＴＮをｒ−ＤＴＰＮに設定する。その後ステップＳ５４で、読出しイネーブル信号を０に設定する。即ち、図４において、レジスタ３４に格納されるＲＡＭ−ＲＥが０となり、データポート２０からはデータが読み出されない。
【００４７】
ステップＳ５２においてヒットしない場合、ステップＳ５５で、データポート２０からのデータの読み出しを許可する読出しイネーブル信号を１に設定する。即ち、図４において、レジスタ３４に格納されるＲＡＭ−ＲＥが１となり、データポート２０からデータが読み出されることになる。
【００４８】
ステップＳ５１での判定結果がＮｏ（Ｎ）の場合、ステップＳ５６において、ｒ−Ｖが１であるか否かを判定する。ｒ−Ｖが１でない場合は、ステップＳ６２で読出しイネーブル信号を０に設定し、処理を終了する。ｒ−Ｖが１である場合は、ステップＳ５７で、ｒ−ＤＴＶが１であるか否かを判定する。ｒ−ＤＴＶが１ではない、即ちＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６にヒットしていない場合には、ステップＳ６１で読出しイネーブル信号を１に設定する。ｒ−ＤＴＶが１である、即ちＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６にヒットしている場合には、ステップＳ５８でｒ−ＣＮＴが１６であるか否かを判定する。ここでｒ−ＣＮＴは、読出しが行われたデータの数を示している。ステップＳ５８での判定結果がＮｏ（Ｎ）の場合、ステップＳ６０で読出しイネーブル信号を０に設定する。ステップＳ５８での判定結果がＹｅｓ（Ｙ）の場合、ｒ−ＤＴＶを０にリセットし、その後、ステップＳ６０で読出しイネーブル信号を０に設定する。
【００４９】
ステップＳ５４、Ｓ５５、Ｓ６０、Ｓ６１に続き、ステップＳ６３において、読出しアドレスがゼロデータテーブル２７で指定するアドレス範囲内にあるか否かを判定する。即ち、現在の読出しアドレスが、ゼロデータテーブル２７の対応するＡＤＤＲＥＳＳとＡＤＤＲＥＳＳ＋ＣＮＴの間に存在するか否かを判定する。指定アドレス範囲内にない場合には、そのまま処理を終了する。指定アドレス範囲内にある場合には、ステップＳ６４で、読出しイネーブル信号を０に設定し、更に、ｒ−０ＤＴＶを１に設定する。次にステップＳ６５において、現在の読出しアドレスがゼロデータテーブル２７のＡＤＤＲＥＳＳ＋ＣＮＴに等しいか否かを判定する。等しい場合には、ステップＳ６６で、ゼロデータテーブル２７の対応するエントリを開放する。即ち、ゼロデータテーブル２７の対応する有効フラグを無効を示す値に設定する。
【００５０】
図１５は、データポート読出制御回路２２の別の動作の一例を示すフローチャートである。このフローチャートは、セレクタ２３の選択制御のための信号及び読出しデータを設定する処理に関するものである。図１５の各ステップは、データポート読出制御回路２２により実行される。また図１５のフローチャートに記載される動作は、図１３のフローチャートに記載される動作と並行して実行される。
【００５１】
ステップＳ７１において、ｒ−ＤＴＶが１であるか否かを判定する。ｒ−ＤＴＶが１である場合、ｓ−Ｖに１を設定し、ｓ−ＤＴＰＴＮにｒ−ＤＴＰＴＮを設定する。なお後述するように、ｓ−Ｖが1であるときセレクタ２３は、データポート読出制御回路２２から供給されるｓ−ＤＴＰＴＮを選択する。
【００５２】
ステップＳ７１においてｒ−ＤＴＶが１でない場合、ステップＳ７２において、ｒ−０ＤＴＶが１であるか否かを判定する。ｒ−０ＤＴＶが１である場合、ｓ−Ｖに１を設定し、ｓ−ＤＴＰＴＮに０を設定する。
【００５３】
ステップＳ７２においてｒ−０ＤＴＶが１でない場合、ステップＳ７３において、ｓ−Ｖに０が設定される。後述するように、ｓ−Ｖが０であるときセレクタ２３は、データポート２０からの読出しデータを選択する。
【００５４】
図１６は、セレクタ２３の動作の一例を示すフローチャートである。ステップＳ８１でｓ−Ｖが１であるか否かを判定する。ｓ−Ｖが１である場合、セレクタ２３はデータポート読出制御回路２２から供給されるｓ−ＤＴＰＴＮを選択する。これにより、ステップＳ８３に示されるように、図４に示すレジスタ３５に格納されるＲＡＭ−ＲＤは、１バイト長のｓ−ＤＴＰＴＮが４つ並んだ４バイトのデータとなる。ｓ−Ｖが０である場合、セレクタ２３はデータポート２０からの読出しデータを選択する。これにより、ステップＳ８２に示されるように、図４に示すレジスタ３５に格納されるＲＡＭ−ＲＤは、データポート２０のＲＡＭからの読出しデータとなる。このようにしてレジスタ３５に格納されたデータが、読出しリクエストに対応するデータとして、メモリコントローラ２４に供給される。
【００５５】
図１７は、書き込みデータの処理の一例を示す図である。この例では、リクエスト識別子（ＷＤ−ＲＱＩＤ）がＡであるリクエストの書き込みデータＷＤ−ＤＡＴＡとして、最初に４バイト全てが同一であるデータＤ０が供給される。これにより、ｗ−ＤＴＶが１に設定され、ｗ−ＤＴＰＴＮにＤ０が設定される。このとき書き込みイネーブル信号ＲＡＭ−ＷＥは１である。またｗ−ＥＮＴＲＹが２であり、領域ｅｎｔｒｙ２がデータを書き込む領域となっている。従って、データポート２０のアドレスＲＡＭ−ＷＡが"２０"、"２１"、"２２"、・・・である位置にデータＤ０が書き込みデータＲＡＭ−ＷＤとして書き込まれる。しかし８番目のデータでデータがＤ１となり、このＤ１はＤ０と異なるので、ｗ−ＤＴＶの１の設定は無くなる。その後最終データが到来した時点で、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５へのデータ登録が行われる。即ち、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５において、領域ｅｎｔｒｙ２の有効フラグｖが１に設定され、領域ｅｎｔｒｙ２のＲＱＩＤが書き込みリクエスト識別子Ａに設定される。
【００５６】
図１８は、書き込みデータの処理の別の一例を示す図である。この例では、リクエスト識別子（ＷＤ−ＲＱＩＤ）がＡである最初のデータから最後のデータまでの全てのデータが、４バイト全てが同一であるデータＤ０となっている。従って、最終データが到来した時点で、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６へのデータ登録が行われる。即ち、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６において、有効フラグｖが１に設定され、ＲＱＩＤが書き込みリクエスト識別子Ａに設定され、ＤＴＰＴＮが５ａ（＝Ｄ０）に設定される。
【００５７】
図１９は、書き込みデータの処理の更に別の一例を示す図である。この例では、リクエスト識別子（ＷＤ−ＲＱＩＤ）がＡである書き込みデータＷＤ−ＤＡＴＡとして、最初に４バイト全てが同一であるデータＤ０が供給される。これにより、ｗ−ＤＴＶが１に設定され、ｗ−ＤＴＰＴＮにＤ０が設定される。このとき書き込みイネーブル信号ＲＡＭ−ＷＥは１である。またｗ−ＥＮＴＲＹが２であり、領域ｅｎｔｒｙ２がデータを書き込む領域となっている。従って、データポート２０のアドレスＲＡＭ−ＷＡが"２０"、"２１"、"２２"、・・・である位置にデータＤ０が書き込みデータＲＡＭ−ＷＤとして書き込まれる。しかし７番目のデータでデータがＤ１となり、このＤ１はＤ０と異なるので、ｗ−ＤＴＶの１の設定は無くなる。８番目のデータから１０番目のデータまでは、４バイト全てが０であるデータａｌｌ０が供給される。これに応じて、ｗ−ＭＡＳＫＶが１に設定されると共に、ｗ−ＭＡＤＤＲは対応する書き込みアドレス"２７"に設定され、更に、ｗ−ＣＮＴは３までカウントアップされる。１１番目のデータはａｌｌ０ではないので、この時点でゼロデータテーブル２７への登録が行われる。即ち、ゼロデータテーブル２７のＡＤＤＲＥＳＳがアドレス"２７"に設定され、データ数ＣＮＴが"３"に設定される。最終データが到来した時点で、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５へのデータ登録が行われる。即ち、ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５において、領域ｅｎｔｒｙ２の有効フラグｖが１に設定され、領域ｅｎｔｒｙ２のＲＱＩＤが書き込みリクエスト識別子Ａに設定される。
【００５８】
図２０は、読出し処理の一例を示す図である。リクエスト識別子ＲＱＩＤがＡである読出し要求が到来すると、ｒ−Ｖが"１"に設定される。またＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５において、領域ｅｎｔｒｙ２がリクエスト識別子Ａに対応するので、読出し領域としてｒ−ＥＮＴＲＹが"２"に設定される。これにより読出しアドレスＲＡＭ−ＲＡが"２０"、"２１"、"２２"、・・・となり、データポート２０から順次読み出されたデータがデータＲＡＭ−ＲＤとしてメモリコントローラ２４に供給される。
【００５９】
図２１は、読出し処理の別の一例を示す図である。リクエスト識別子ＲＱＩＤがＡである読出し要求が到来すると、ｒ−Ｖが"１"に設定される。またＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６がリクエスト識別子Ａに対してヒットするので、ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６のＤＴＰＴＮ＝"５ａ"がｒ−ＤＴＰＴＮに格納される。またＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６のヒットに応答しｒ−ＤＴＶが"１"に設定される。ｒ−ＤＴＶ＝１であるのでｓ−Ｖに"１"が設定され、セレクタ２３はｓ−ＤＴＰＴＮを選択して出力する。これにより、データＲＡＭ−ＲＤとしてＤ０＝"５ａ"がメモリコントローラ２４に順次供給される。
【００６０】
図２２は、読出し処理の更に別の一例を示す図である。リクエスト識別子ＲＱＩＤがＡである読出し要求が到来すると、ｒ−Ｖが"１"に設定される。また図１９と同様にＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル２５において領域ｅｎｔｒｙ２がリクエスト識別子Ａに対応する場合を想定しており、読出し領域としてｒ−ＥＮＴＲＹが"２"に設定される。これにより読出しアドレスＲＡＭ−ＲＡが"２０"、"２１"、"２２"、・・・となり、データポート２０から順次読み出されたデータがデータＲＡＭ−ＲＤとしてメモリコントローラ２４に供給される。但し８番目の読出し動作において読出しアドレス"２７"がゼロデータテーブル２７のアドレスに一致するので、ｒ−０ＤＴＶが"１"に設定される。ｒ−０ＤＴＶ＝１であるのでｓ−Ｖに"１"が設定され、且つ、ｓ−ＤＴＰＴＮにａｌｌ０（４バイト全てが０である３２ビット長のデータ）が格納される。ｓ−Ｖ＝１であるのでセレクタ２３はｓ−ＤＴＰＴＮを選択して出力し、データＲＡＭ−ＲＤとしてａｌｌ０がメモリコントローラ２４に順次供給される。このａｌｌ０のデータが出力されるのは、読出しアドレスが"２７"から"２９"（＝２７＋３−１）の範囲にあるときに限られる。読出しアドレス"２Ａ"以降は、再びデータポート２０から順次読み出されたデータがデータＲＡＭ−ＲＤとしてメモリコントローラ２４に供給される。
【００６１】
上記実施例ではデータポート２０へ書き込まないデータパターンが４バイト全て"０"のデータａｌｌ０であるが、例えば４バイト全て"１"のデータａｌｌ１を検出し、データポート２０への書き込みを行わないようにしてもよい。或いは例えば４バイト全て"１０１０１０１０"のデータを検出し、データポート２０への書き込みを行わないようにしてもよい。この際、検出対象のデータパターンを外部から設定し、この設定したデータパターンに書き込みデータが一致するときに、データポート２０への書き込みを行わないようにしてもよい。
【００６２】
またＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル２６の代わりに、特定のアルゴリズムに従ってデータパターンを発生させる機構を設け、このパターン発生機構によりデータを生成することにより、データの保持を省略してもよい。このようなパターン発生機構を用いる構成例について、以下に説明する。
【００６３】
図２３はＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブルの変形例を示す図である。図２４は、図２３のＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブルのＤＴＰＴＮの構成を示す図である。図２３に示すＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブルは、有効フラグｖ、リクエスト識別子ＲＱＩＤ、及びデータパターンＤＴＰＴＮを含む。このデータパターンＤＴＰＴＮは、図２４に示すように９ビット長であり、ビット０〜ビット７にデータパターンＤＴが格納され、最上位ビットであるビット８にフラグＦが格納される。フラグＦが０の場合には、書き込みリクエストによる書き込みデータが、４バイト全てＤＴに等しいデータである。フラグＦが１の場合には、書き込みリクエストによる書き込みデータが、ＤＴを初期値として所定のパターン生成アルゴリズムにより生成されるデータパターンに等しいデータである。
【００６４】
図２５は、パターン生成回路の一例を示す図である。このパターン生成回路は、フリップフロップ４０−０乃至４０−７、論理回路４１−０乃至４１−７、及びＸＯＲ回路４２を含む。このパターン生成回路では、ｉｎｉｔが０の時、初期値ｉｎｉｔｉａｌ［７：０］（図２４のＤＴ）が論理回路４１−０乃至４１−７を介してフリップフロップ４０−０乃至４０−７に格納される。またｉｎｉｔが１の時、フリップフロップ４０−０乃至４０−６の格納値が論理回路４１−１乃至４１−７を介して次段のフリップフロップ４０−１乃至４０−７に格納される。また、フリップフロップ４０−５の出力である５番目のビットｂｉｔ［５］とフリップフロップ４０−７の出力である７番目のビットｂｉｔ［７］とをＸＯＲ演算して得られる値が、論理回路４１−０を介してフリップフロップ４０−０に格納される。これにより、初期値として所定のパターンを順次生成することができる。
【００６５】
図２６は、図２５のパターン生成回路によるパターン生成の論理を示す表である。この表に示されるように、現在の０番目のビット乃至６番目のビットがそれぞれ、次のサイクルの１番目のビット乃至７番目のビットになる。また現在の７番目のビットと５番目のビットとのＸＯＲ値が、次のサイクルの０番目のビットになる。
【００６６】
図２７は、図２５のパターン生成回路によるパターン生成の一例を示す図である。この例では初期値が"００１００１００"であり、この初期値に基づいて図２７に示すようなビットパターンが各サイクルにおいて生成される。
【００６７】
図２８は、データポート読出制御回路２２の動作の一例を示すフローチャートである。このフローチャートは、データポート２０の読出し制御及びゼロデータテーブル２７に基づく読出し処理に関連するものである。図２８の各ステップは、データポート読出制御回路２２により実行される。図２８において、図１４と同一又は対応する処理は同一又は対応するステップ番号で参照し、その説明は適宜省略する。
【００６８】
図２８のフローチャートでは、図１４のステップＳ５３の代わりにステップＳ５３Ａが設けられている。またステップＳ５７とステップＳ５８との間に、ステップＳ９１が設けられている。ステップＳ５３Ａでは、ｒ−ＤＩＶを１に設定し、図２３のＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブルの対応するＤＴＰＴＮ［７：０］をｒ−ＤＴＰＮに設定する。また更に、図２３のＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブルの対応するＤＴＰＴＮ［８］（即ちフラグＦ）をｒ−ＴＥＳＴＶに設定する。
【００６９】
ステップＳ９１では、ｒ−ＴＥＳＴＶ＝１であるならば、ｒ−ＤＴＰＴＮにｎｅｘｔＰＴＮを設定する。ここでｎｅｘｔＰＴＮは、図２５に示すパターン生成回路により図２６に示す論理表に従って生成されるパターンである。このようにして、パターン生成回路により生成されるパターンを、読出しリクエストに応じてメモリコントローラ２４に供給することができる。
【００７０】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【符号の説明】
【００７１】
１４  Ｉ／Ｏポート
２０  データポート
２１  データポート書込制御回路
２２  データポート読出制御回路
２３  セレクタ
２４  メモリコントローラ
２５  ＲＱＩＤ−ｅｎｔｒｙ基本対応テーブル
２６  ＲＱＩＤ−ｅｎｔｒｙ拡張対応テーブル
２７  ゼロデータテーブル
２８〜３５  レジスタ
【図１】
2013210836.tif 000003
【図２】
2013210836.tif 000004
【図３】
2013210836.tif 000005
【図４】
2013210836.tif 000006
【図５】
2013210836.tif 000007
【図６】
2013210836.tif 000008
【図７】
2013210836.tif 000009
【図８】
2013210836.tif 000010
【図９】
2013210836.tif 000011
【図１０】
2013210836.tif 000012
【図１１】
2013210836.tif 000013
【図１２】
2013210836.tif 000014
【図１３】
2013210836.tif 000015
【図１４】
2013210836.tif 000016
【図１５】
2013210836.tif 000017
【図１６】
2013210836.tif 000018
【図１７】
2013210836.tif 000019
【図１８】
2013210836.tif 000020
【図１９】
2013210836.tif 000021
【図２０】
2013210836.tif 000022
【図２１】
2013210836.tif 000023
【図２２】
2013210836.tif 000024
【図２３】
2013210836.tif 000025
【図２４】
2013210836.tif 000026
【図２５】
2013210836.tif 000027
【図２６】
2013210836.tif 000028
【図２７】
2013210836.tif 000029
【図２８】
2013210836.tif 000030