(57)【要約】【課題】リードレイテンシを低減させ、画像１ライン分のデータの転送を１ラインの所定の転送周期内で確実に完了させること。【解決手段】データ転送装置は、メモリに対するリード要求を蓄積するバッファと、前記メモリからデータの転送が完了していない前記バッファに蓄積されるリード要求の数を計測するリード要求計測部とを有し、前記計測されたリード要求の数が、第１の値以上となった時点から、前記メモリに対するライト要求の発行を、次のリード要求発行後まで中断させる。【選択図】図５
2019003384.tif 000002
【特許請求の範囲】
【請求項１】
メモリに対するリード要求を蓄積するバッファと、
前記メモリからデータの転送が完了していない前記バッファに蓄積されるリード要求の数を計測するリード要求計測部とを有し、
前記計測されたリード要求の数が、第１の値以上となった時点から、前記メモリに対するライト要求の発行を、次のリード要求発行後まで中断させるデータ転送装置。
【請求項２】
前記第１の値は、前記バッファの容量に基づく値である請求項１記載のデータ転送装置。
【請求項３】
前記第１の値は、任意の値が設定可能である請求項１記載のデータ転送装置。
【請求項４】
前記バッファは、前記メモリに対するライト要求を蓄積し、
前記リード要求の発行数及び前記ライト要求の発行数を取得し、前記リード要求の発行数が第２の値だけ増加する期間における前記ライト要求の発行数を計測するライト要求計測部をさらに有し、
前記計測されたリード要求の数が、第３の値以上である期間において、前記計測されたライト要求の発行数が、第４の値未満になるまで、ライト要求の発行を中断させる請求項１乃至３いずれか一項記載のデータ転送装置。
【請求項５】
前記第３の値は、前記バッファの容量に基づく値である請求項４記載のデータ転送装置。
【請求項６】
前記第３の値は、任意の値が設定可能である請求項４記載のデータ転送装置。
【請求項７】
前記第３の値は、前記リード要求計測部で計測されたリード要求の数に基づく値である請求項４記載のデータ転送装置。
【請求項８】
前記第２の値は、任意の値が設定可能である請求項４乃至７いずれか一項記載のデータ転送装置。
【請求項９】
前記第４の値は、任意の値が設定可能である請求項４乃至８いずれか一項記載のデータ転送装置。
【請求項１０】
前記ライト要求計測部は、前記第２の値が前記バッファの容量に基づく値よりも大きい場合、所定の直近の期間における前記バッファに蓄積されるライト要求の発行数を計測する請求項４乃至９いずれか一項記載のデータ転送装置。
【請求項１１】
メモリに対するリード要求をバッファに蓄積する蓄積手順と、
前記メモリからデータの転送が完了していない前記バッファに蓄積されるリード要求の数を計測する計測手順とを実行し、
前記計測されたリード要求の数が、所定の値以上となった時点から、前記メモリに対するライト要求の発行を、次のリード要求発行後まで中断させるデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置及びデータ転送方法に関する。
【背景技術】
【０００２】
スキャナ又はプロッタとコントローラ間の画像データの転送を行うＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）のような高速シリアルインタフェースを使用し、画像データをラインごとに転送を行う画像処理装置が知られている。高速シリアル通信を行う際には、転送効率を上げるため、転送データを一定量バッファリングしておき、途切れることなくデータを転送する構成が採られる。
【０００３】
転送データをバッファリングする場合、優先順位が高く設定された要求が発生する前に、優先順位が低く設定された要求によってバッファがフルとなる状況では、アービトレーションが機能しなくなるというデメリットが生じる。当該デメリットに対して、適正なアービトレーションを機能させるために、トラフィックの統計情報を生成し、アービタにフィードバックするデータ転送方法は既に知られている（例えば特許文献１）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術でのデータ転送方法では、適正なアービトレーションが行われなくなる要因が主にリードレイテンシの増大にあることが着目されておらず、リードレイテンシを監視する手段を持たないため、トラフィックの統計情報を生成し、アービタにフィードバックするまでの期間が比較的長くなるという問題があった。
【０００５】
本発明は上記の点に鑑みてなされたものであって、リードレイテンシを低減させ、画像１ライン分のデータの転送を１ラインの所定の転送周期内で確実に完了させることを目的とする。
【課題を解決するための手段】
【０００６】
そこで上記課題を解決するため、データ転送装置は、メモリに対するリード要求を蓄積するバッファと、前記メモリからデータの転送が完了していない前記バッファに蓄積されるリード要求の数を計測するリード要求計測部とを有し、前記計測されたリード要求の数が、第１の値以上となった時点から、前記メモリに対するライト要求の発行を、次のリード要求発行後まで中断させる。
【発明の効果】
【０００７】
リードレイテンシを低減させ、画像１ライン分のデータの転送を１ラインの所定の転送周期内で確実に完了させることができる。
【図面の簡単な説明】
【０００８】
【図１】ライトデータバッファについて説明するための図である。
【図２】リード動作時のレイテンシについて説明するための図である。
【図３】リードモディファイライト（ＲＭＷ）動作時のリードレイテンシと処理性能の関連について説明するための図である。
【図４】第１の実施の形態におけるデータ転送装置１００のハードウェア構成例を示す図である。
【図５】第１の実施の形態におけるデータ転送装置１００の機能構成例を示す図である。
【図６】第１の実施の形態におけるリードライト転送帯域調停部１０５の機能構成例を示す図である。
【図７】第１の実施の形態におけるＯｕｔｓｔａｎｄｉｎｇ数計測部１２の動作を説明するためのフローチャートである。
【図８】第１の実施の形態におけるリードライト転送帯域調停部１０５の動作を説明するためのフローチャートである。
【図９】第２の実施の形態におけるリードライト転送帯域調停部１０５の機能構成例を示す図である。
【図１０】第２の実施の形態におけるリードライト転送帯域調停部１０５の動作を説明するためのフローチャートである。
【図１１】第３の実施の形態におけるリードライト転送帯域調停部１０５の機能構成例を示す図である。
【図１２】第３の実施の形態におけるライト要求カウント部１７の動作を説明するための図である。
【図１３】第３の実施の形態におけるライト要求カウント部１７の動作を説明するためのフローチャートである。
【図１４】第３の実施の形態におけるリードライト転送調停部１１の動作を説明するためのフローチャートである。
【図１５】第４の実施の形態におけるリードライト転送帯域調停部１０５の機能構成例を示す図である。
【図１６】第４の実施の形態におけるライト要求カウント部１７の動作を説明するための図である。
【図１７】第４の実施の形態におけるライト要求カウント部１７の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて本発明の実施の形態を説明する。
【００１０】
図１は、ライトデータバッファについて説明するための図である。背景として、転送用のバッファを設けると、バッファに蓄積された要求の処理を行う時間が増大することが挙げられる。リード要求はＮｏｎ−Ｐｏｓｔｅｄ転送、すなわち処理の完了通知を必要とする転送であり、Ｏｕｔｓｔａｎｄｉｎｇ数（未処理要求数、又は先投げ要求数）に制約がある。そのため、Ｏｕｔｓｔａｎｄｉｎｇ数が上限に達すると、次のリード要求はリードレスポンスが返るのを待ってから発行される。ここで、リードレスポンス待ちの期間にライト要求が空きバッファを埋めてしまうと、さらにリード転送帯域が低下しライト転送帯域過多の状況に陥りやすい。また、高速なＭＦＰ（Multi Function Peripheral）では、１ラインデータ転送期間が数十ｕｓであるため、適正なアービトレーションの実行に要する時間は、数ｕｓ〜十数ｕｓ以下であることが求められる。リード要求が発行されていない期間に発行されたライト要求が転送バッファを埋めてしまい、ライト要求及び当該ライトデータ転送の完了を待つことでリードレイテンシが増大し、結果としてリード転送帯域が減少するという問題が発生する。
【００１１】
バッファ書き込み速度とバッファ読み出し速度に差がある場合の速度緩衝用ライトデータバッファに書き込まれたデータがフルの状態から、データがすべて読み出されるまでに要する時間について、以下説明する。
【００１２】
例えば、ライトデータバッファのサイズが４０９６Ｂｙｔｅ、バッファの読み出し速度が１０００ＭＢ／ｓであったとすると、ライトデータバッファがフルの状態から空になるまでの時間は４０９６［Ｂｙｔｅ］／１０００［ＭＢ／ｓ］＝４．０９６［ｕｓ］となる。リード要求とライト要求の発行順序を保つためには、ライトデータバッファがフルになった後に発行されたリード要求は、必ずライトデータバッファに先行して蓄積されていた４０９６Ｂｙｔｅのライトデータがバッファから読み出されてから処理される。仮に通常時のリードレイテンシが０．５ｕｓであったとすると、ライトデータバッファがＦＵＬＬの状態で発行されたリードレイテンシは、０．５［ｕｓ］＋４．０９６［ｕｓ］＝４．５９６［ｕｓ］に増大する計算となる。
【００１３】
ライトデータをライトデータバッファに滞留させないためには、バッファ読出し速度よりバッファ書込み速度を遅くすれば良いが、バッファ読み出し速度がバッファの先のアービタによる処理等により動的に変化する場合、バッファ読み出し速度に追従してバッファ書き込み速度を遅くする仕組みが必要となる。バッファ読み出し速度をマスタ側で直接観測できない場合は、リードレイテンシを観測することでライトデータバッファのライトデータの滞留状態を予測でき、間接的にバッファ読出し速度が低下していることを把握することができる。すなわち、ライトデータバッファの滞留状態をリード要求の発行数とリードレスポンスの受信数の差分から求められるＯｕｔｓｔａｎｄｉｎｇ数で監視し、Ｏｕｔｓｔａｎｄｉｎｇ数が上限に達しないようにライト要求を抑制することで、リードレイテンシの増大を防止する方法が考えられる。
【００１４】
図２は、リード動作時のレイテンシについて説明するための図である。図２（Ａ）及び図２（Ｂ）は、いずれも同じタイミングでリード要求を４つ先投げ（Ｏｕｔｓｔａｎｄｉｎｇ）する例を示している。
【００１５】
図２（Ａ）は、リード要求（ＲＣ１〜ＲＣ８）に対するリードレスポンス（ＲＤ１〜ＲＤ８）が、リードデータ転送に時間的な隙間がなく応答される例である。リード要求ＲＣ１に対応するリードレスポンス又はリードデータは、ＲＤ１であり、ＲＣ２〜ＲＣ８についても同様にＲＤ２〜ＲＤ８がそれぞれ対応する。図２（Ａ）に示されるタイミングでリード要求が送信された場合、図２（Ａ）よりもリードレスポンス時間が短ければ、リードデータ転送中に、リードデータが転送されない期間は生じないため、リード帯域は理想的な量が維持される。
【００１６】
一方、図２（Ｂ）は、リードレイテンシすなわちリードレスポンス時間が増大したことにより、リードデータ転送中にリードデータが転送されない期間が生じる例である。リードレイテンシの増加が原因で、リードデータ転送中にリードデータが転送されない期間が生じると、当該期間にライト要求が入りやすくなり、リードレイテンシの増大が加速し、リード帯域が急速に低下する。
【００１７】
図３は、リードモディファイライト（ＲＭＷ）動作時のリードレイテンシと処理性能の関連について説明するための図である。図３（Ａ）は、ＲＭＷ処理を実行する例である。ＲＭＷ処理は、メモリ上の画像の一部を読み出して画像処理を行い、再び書き戻すまで次の画像処理を開始することができない。したがって、画像処理手段が画像処理を行う期間と、処理対象の画像をメモリから読み書きする期間とが、ＲＭＷ処理時間に影響する。
【００１８】
図３（Ｂ）は、リードレスポンス時間が短くなることで、画像処理手段の待ち時間が少なくなる。図３（Ｂ）に示される例では、図３（Ａ）と比較した場合、画像処理性能が１．５倍に向上している。
【００１９】
図４は、第１の実施の形態におけるデータ転送装置１００のハードウェア構成例を示す図である。図４に示されるように、データ転送装置１００は、相互に接続されているＣＰＵ（Central Processing Unit）１００１、ＲＯＭ（Read Only Memory）１００２、ＲＡＭ（Random Access Memory）１００３、ワイヤードロジック回路１００４及びインタフェース１００５とを有する。
【００２０】
データ転送装置１００での処理を実現するプログラムは、ＲＯＭ１００２又はＲＡＭ１００３に格納される。ＲＯＭ１００２又はＲＡＭ１００３は、インストールされたプログラムを格納すると共に、必要なファイル及びデータ等を格納する。ＲＯＭ１００２は、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＥＰＲＯＭ（Electrical Erasable ROM）、フラッシュメモリ又は外部記憶媒体であるメモリカード等のいずれであってもよいし、それらの複数を含んでもよい。ＲＡＭ１００３は、ＤＲＡＭ（Dynamic RAM）、ＳＲＡＭ（Static RAM）、ＳＤＲＡＭ（Synchronous DRAM）等のいずれであってもよい。また、ＲＯＭ１００２又はＲＡＭ１００３は、メモリコントローラを介して、ＣＰＵ１００１と接続されてもよい。ワイヤードロジック回路１００４は、データ転送装置１００が行う処理を、ワイヤードロジックにより実行する回路であり、フリップフロップ及びゲート回路等によって構成される。インタフェース１００５は、高速シリアルインタフェースを含み、その他入出力ポート等も含んでよい。
【００２１】
なお、データ転送装置１００は、上述のハードウェア構成の一部又は全部が含まれる１又は複数のＬＳＩ（Large Scale Integration）デバイス、ＬＳＩチップ、ＬＳＩチップセット又はＡＳＩＣ（Application Specific Integrated Circuit）等であってもよい。
【００２２】
また、データ転送装置２００は、データ転送装置１００と同様のハードウェア構成を有してもよい。
【００２３】
図５は、第１の実施の形態におけるデータ転送装置１００の機能構成例を示す図である。図５に示されるように、データ転送装置１００は、機能Ａ１０１、機能Ｂ１０２、機能Ｃ１０３、アービタ１０４、リードライト転送帯域調停部１０５、ライトデータバッファを含むＩ／Ｆ制御機能１０６を有する。これら各部は、データ転送装置１００にインストールされた１以上のプログラムがＣＰＵ１００１に実行させる処理又はワイヤードロジック回路１００４により実現される。
【００２４】
データ転送装置２００は、機能ａ２０１、機能ｂ２０２、アービタ２０３、ライトデータバッファを含むＩ／Ｆ制御機能２０４、共有メモリ３００と接続されるメモリコントローラ２０５を有する。
【００２５】
共有メモリ３００へのメモリアクセスを要求するマスタ機能（機能Ａ１０１等）を有するデータ転送装置１００と、共有メモリ３００及び共有メモリ３００へのアクセスを制御するデータ転送装置２００とは、ライト要求がＰｏｓｔｅｄ−Ｗｒｉｔｅ方式のＩ／Ｆで接続されている。Ｐｏｓｔｅｄ−Ｗｒｉｔｅ方式とは、処理の完了通知を必要としない方式をいう。機能Ａ１０１から、共有メモリ３００にライトアクセスする場合、ライトデータは、Ｉ／Ｆ制御機能１０６及びＩ／Ｆ制御機能２０４にそれぞれ実装されたＢｕｆ（速度緩衝用ライトデータバッファ）を経由して共有メモリ３００に転送される。
【００２６】
ここで、データ転送装置２００に搭載された機能ａ２０１又は機能ｂ２０２等が、メモリコントローラ２０５にアクセスし、アービタ２０３が混雑する等の理由で、Ｉ／Ｆ制御機能２０４からアービタ２０３へのライト帯域が制約を受けて機能Ａ１０１からのライトデータ転送速度を下まわると、機能Ａ１０１からのライトデータが、Ｉ／Ｆ制御機能１０６及びＩ／Ｆ制御機能２０４に実装されたＢｕｆ（速度緩衝用ライトデータバッファ）に蓄積されていく。
【００２７】
リード要求とライト要求の発行順序を保つためには、後から発行されたリード要求は、必ず速度緩衝用ライトデータバッファに先行して蓄積されていたライトデータがバッファから読出されてから処理される。このように、ライトデータバッファへのライトデータ蓄積は、リードレスポンスの遅延を招き、結果としてリード帯域の低下及びリードモディファイライト動作を行う機能の処理性能低下を引き起こす。
【００２８】
リードライト転送帯域調停部１０５は、リード要求先投げ数（Ｏｕｔｓｔａｎｄｉｎｇ数）を常時計測し、リード要求先投げ数がデータ転送装置１００及びデータ転送装置２００のバッファ容量等から定まるハードウェア的なリード要求の先投げ数の上限値を超えると、ライト要求の転送を中断する。速度緩衝用ライトデータバッファへのライトデータ蓄積を原因としたリードレイテンシ増大は、一時的なライト要求の中断によって解消され、リードレスポンスが回復する。リードライト転送帯域調停部１０５は、リード帯域を所定の程度優先して調停してもよいし、リード帯域とライト帯域が同等となるように調停してもよい。
【００２９】
共有メモリ３００は、画像データ又はＣＰＵのためのプログラム等を一時蓄積する記憶部である。機能Ａ１０１、Ｂ１０２、Ｃ１０３又は機能ａ２０１、機能ｂ２０２で処理するデータは、共有メモリ３００に展開される。
【００３０】
データ転送装置１００は、共有メモリ３００に対してマスタとしてメモリアクセスし、有限のリード要求先投げ（Ｏｕｔｓｔａｎｄｉｎｇ）を行う内蔵機能（機能Ａ１０１、機能Ｂ１０２、機能Ｃ１０３）を一つ以上備える。また、データ転送装置１００は、共有メモリ３００に対するＰｏｓｔｅｄ−Ｗｒｉｔｅ方式のライト要求と、リード要求とを、共有メモリ３００へのアクセス経路となるＩ／Ｆ制御機能１０６を備えるデバイスである。本実施例では、データ転送装置２００に対して、Ｐｏｓｔｅｄ−Ｗｒｉｔｅ方式のライト要求を行うＩ／Ｆで接続される。Ｉ／Ｆ制御機能１０６には、ライトデータの転送効率化のため、Ｂｕｆ（速度緩衝用ライトデータバッファ）が搭載されている。リードライト転送帯域調停部１０５については、図６で詳述する。
【００３１】
データ転送装置２００は、データ転送装置１００から共有メモリ３００へのリード／ライト要求を受け渡すＩ／Ｆ制御機能２０４と、共有メモリ３００と接続するメモリコントローラ２０５とを備え、アービタ２０３を経由して共有メモリ３００へアクセスする。アービタ２０３は、機能ａ２０１又は機能ｂ２０２から共有メモリ３００へのアクセス集中等の理由により、Ｉ／Ｆ制御機能２０４からメモリコントローラ２０５へのライトアクセスを待たせることがある。Ｉ／Ｆ制御機能２０４にはライトデータの転送効率化のため、Ｂｕｆ（速度緩衝用ライトデータバッファ）が搭載されている。
【００３２】
図６は、第１の実施の形態におけるリードライト転送帯域調停部１０５の機能構成例を示す図である。図６は、図５に示されるリードライト転送帯域調停部１０５の詳細な機能を示したものである。
【００３３】
リードライト転送帯域調停部１０５は、データ転送装置１００に内蔵され、フリップフロップ及びゲート回路によって構成されるワイヤードロジックにより実現されてもよい。データ転送装置１００から出力されるライト要求、リード要求及びリードデータ（リードレスポンス）を中継し、リード要求とリードレスポンスとからリード要求先投げ数（Ｏｕｔｓｔａｎｄｉｎｇ数）を常時監視し（Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２）、リード先投げ数（Ｏｕｔｓｔａｎｄｉｎｇ数）がデータ転送装置１００及びデータ転送装置２００のバッファ容量等から定まるハードウェア的な上限値を超えたときに、ライト要求を停止させる機能（リードライト転送調停部１１及びライト要求転送部１５）を持つ。
【００３４】
以下に各機能の動作について説明する。
【００３５】
Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２は、リード要求転送部１３から受信するリード要求転送情報と、リードデータ転送部１４から受信するリードレスポンス転送情報とから、リード要求の先投げ数（Ｏｕｔｓｔａｎｄｉｎｇ数）を計測する。リード要求は先投げ（Ｏｕｔｓｕｔａｎｄｉｎｇ）であるため、先に発行したリード要求に対応したリードデータが返ってくる前に、次のリード要求が発行されることがある。計測したＯｕｔｓｔａｎｄｉｎｇ数情報は、リード要求転送部１３からリード要求転送情報を受け取ったタイミング及びリードデータ転送部１４からリードレスポンス転送情報を受け取ったタイミングでリードライト転送調停部１１に通知する。
【００３６】
リード要求転送部１３は、アービタ１０４からＩ／Ｆ制御機能１０６に転送されるリード要求を、データ転送プロトコルを常時監視することで観測し、リード要求が転送される毎にリード要求転送情報としてＯｕｔｓｔａｎｄｉｎｇ数計測部１２に通知する。
【００３７】
リードデータ転送部１４は、Ｉ／Ｆ制御機能１０６からアービタ１０４に転送されるリードデータを、データ転送プロトコルを常時監視することで観測し、リードデータが転送される毎にリードレスポンス転送情報としてＯｕｔｓｔａｎｄｉｎｇ数計測部１２に通知する。
【００３８】
リードライト転送調停部１１は、Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２から通知されたＯｕｔｓｔａｎｄｉｎｇ数情報がデータ転送装置１００及びデータ転送装置２００のバッファ容量等から定まるハードウェア的な上限値を超えている期間は、ライト要求をストップするよう、ライト要求転送部１５にライト要求転送中断指示を出し続ける。
【００３９】
ライト要求転送部１５は、アービタ１０４からＩ／Ｆ制御機能１０６に転送されるライト要求を転送し、リードライト転送調停部１１からライト要求転送中断指示が出ている間は、ライト要求の送出を一時的に停止させるよう機能する。
【００４０】
ライトデータ転送部１６は、ライト要求転送部１５同様に、リードライト転送調停部１１からのライト要求転送中断指示を受けてライトデータ転送を中断するよう動作してもよい。
【００４１】
図７は、第１の実施の形態におけるＯｕｔｓｔａｎｄｉｎｇ数計測部１２の動作を説明するためのフローチャートである。
【００４２】
Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２は、デバイスのリセットが解除されたらクロック（同期信号）毎にＳ０１〜Ｓ０８の動作を繰返す。動作の完了はシステムリセット又はデータ転送装置１００に対する電源ＯＦＦであるため、エンドは図６に図示しない。
【００４３】
ステップＳ０１において、リード要求転送部１３は、新しいリード要求の転送をしたか否か判定する。新しいリード要求の転送をしていた場合、ステップＳ０２に進み（Ｓ０１のＹＥＳ）、新しいリード要求の転送をしていない場合、ステップＳ０４に進む（Ｓ０１のＮＯ）。
【００４４】
ステップＳ０２において、リード要求転送部１３は、リード要求転送情報をＯｕｔｓｔａｎｄｉｎｇ数計測数１２に通知する。続いて、Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２は、リード要求転送部１３から通知されたリード要求転送情報を元にリード要求先投げカウンタをカウントアップする（Ｓ０３）。
【００４５】
ステップＳ０４において、リードデータ転送部１４は、新たなリードデータの転送をしたか否かを判定する。新たなリードデータの転送をしていた場合、ステップＳ０５に進み（Ｓ０４のＹＥＳ）、新たなリードデータの転送をしていない場合、ステップＳ０７に進む（Ｓ０４のＮＯ）。
【００４６】
ステップＳ０５において、リードデータ転送部１４は、リードレスポンス転送情報をＯｕｔｓｔａｎｄｉｎｇ数計測部１２に通知する。続いて、Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２は、リードデータ転送部１４から受信したリードレスポンス転送情報を基にリード要求先投げカウンタをカウントダウンする（Ｓ０６）。ここで、ステップＳ０３において、リード要求先投げカウンタがカウントアップしていた場合、ステップＳ０６において、リード要求先投げカウンタが、カウントダウンされることで、リード要求先投げカウンタは、プラスマイナスゼロとなり、カウンタ値は変わらない。
【００４７】
ステップＳ０７において、Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２は、リード要求先投げカウンタの値をＯｕｔｓｔａｎｄｉｎｇ数情報としてリードライト転送調停部１１に通知する。
【００４８】
ステップＳ０８において、クロック（同期信号）入力待ちをして、ステップＳ０１に戻る。
【００４９】
図８は、第１の実施の形態におけるリードライト転送帯域調停部１０５の動作を説明するためのフローチャートである。リードライト転送調停部１１は、デバイスのリセットが解除されたらクロック（同期信号）毎にＳ０１〜Ｓ０４の動作を繰返す。動作の完了はシステムリセット又はデータ転送装置１００に対する電源ＯＦＦであるため、エンドは図７に図示しない。
【００５０】
ステップＳ１１において、Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２から受信したＯｕｔｓｔａｎｄｉｎｇ数は、リード要求先投げ数（Ｏｕｔｓｔａｎｄｉｎｇ数）のバッファ容量等から定まるハードウェア的な上限値と等しいか否かを判定する。Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２から受信したＯｕｔｓｔａｎｄｉｎｇ数が、リード要求先投げ数の上限値と等しい場合、ステップＳ１３に進み（Ｓ１１のＹＥＳ）、等しくない場合すなわち上限値未満である場合、ステップＳ１２に進む（Ｓ１１のＮＯ）。
【００５１】
ステップＳ１２において、ライト要求転送部１５に対して、ライト要求転送中断指示をネゲートする。ライト要求転送中断指示が、以前からネゲートされていた場合は、ネゲートの出力を継続する。
【００５２】
ステップＳ１３において、ライト要求転送部１５に対して、ライト要求転送中断指示をアサートする。ライト要求転送中断指示が、以前からアサートされていた場合は、アサートの出力を継続する。
【００５３】
ステップＳ１４において、リードライト転送帯域調停部１０５は、クロック（同期信号）入力待ちをして、ステップＳ０１に戻る。
【００５４】
ライト要求転送部１５は、ライト要求転送中断指示がアサートされている期間は、アービタ１０４から転送されるライト要求の転送を中断し、ネゲートされている期間のみライト要求の転送を実行する。
【００５５】
上述のように、第１の実施の形態によれば、データ転送装置１００は、リード要求先投げ数が、上限値に達している場合、ライト要求の転送を中断することで、転送帯域がライト要求過多の状態を防ぐことができる。すなわち、データ転送装置１００は、リードレイテンシを低減させ、画像１ライン分のデータの転送を１ラインの所定の転送周期内で確実に完了させることができる。
【００５６】
次に、第２の実施の形態について説明する。第２の実施の形態では第１の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第１の実施の形態と同様でもよい。
【００５７】
図９は、第２の実施の形態におけるリードライト転送帯域調停部１０５の機能構成例を示す図である。
【００５８】
第２の実施の形態においては、第１の実施の形態におけるリードライト転送帯域調停部１０５の機能に追加して、リードライト転送調停部１１で実施するライト要求中断指示アサートを判断するリード要求先投げ数（Ｏｕｔｓｔａｎｄｉｎｇ数）が、データ転送装置１００のリセット解除後に、ＣＰＵ１００１から任意に設定可能とする機能が追加される。ライト要求の発行が過多となり、ライトデータ転送にかかる時間が増大することでリードレイテンシが増大し、その結果Ｏｕｔｓｔａｎｄｉｎｇ数の増大が引き起こされる関係性から、Ｏｕｔｓｔａｎｄｉｎｇ数がバッファ容量等から定まるハードウェア的な上限値に達する前に、任意のＯｕｔｓｔａｎｄｉｎｇ数に達したところでライト要求の発行を抑制することで、リードレイテンシが増大した状態が続く期間を短縮することができる。最適なＯｕｔｓｔａｎｄｉｎｇ数の閾値は、システム全体特にデータ転送装置２００の特性と、システムの使用方法に依存するため、システムに応じてＣＰＵ１００１から任意の値に設定できる機能を有することで、データ転送装置１００の仕様を変更せずに、異なる複数のシステムに適応させることができる。
【００５９】
図１０は、第２の実施の形態におけるリードライト転送帯域調停部１０５の動作を説明するためのフローチャートである。
【００６０】
ステップＳ２１において、ＣＰＵ１００１は、電源ＯＮ御のデータ転送装置１００のリセット解除後に、リードライト転送調停部１１にライト要求転送の中断を判定する閾値となるＯｕｔｓｔａｎｄｉｎｇ数を設定する。当該閾値となるＯｕｔｓｔａｎｄｉｎｇ数は、任意の値が設定可能である。
【００６１】
続いて、Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２から受信したＯｕｔｓｔａｎｄｉｎｇ数は、ステップＳ２１でＣＰＵ１００１から設定されたＯｕｔｓｔａｎｄｉｎｇ数の閾値と等しいか否かを判定する。Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２から受信したＯｕｔｓｔａｎｄｉｎｇ数が、当該閾値以上である場合、ステップＳ２４に進み（Ｓ２２のＹＥＳ）、等しくない場合すなわち当該閾値未満である場合、ステップＳ２３に進む（Ｓ２２のＮＯ）。
【００６２】
ステップＳ２３〜ステップＳ２５は、図８に示されるステップＳ１２〜ステップＳ１４に相当し、動作は同様である。
【００６３】
上述のように、第２の実施の形態によれば、データ転送装置１００は、リードライト転送帯域調停部１０５に、ライト要求の中断を判定する任意のＯｕｔｓｔａｎｄｉｎｇ数の閾値を設定することができる。そのため、Ｏｕｔｓｔａｎｄｉｎｇ数が当該閾値に達したところで、ライト要求の発行は抑制されて、リードレイテンシが増大した状態が続く期間を短縮することができる。
【００６４】
次に、第３の実施の形態について説明する。第３の実施の形態では第２の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第２の実施の形態と同様でもよい。
【００６５】
図１１は、第３の実施の形態におけるリードライト転送帯域調停部１０５の機能構成例を示す図である。
【００６６】
第３の実施の形態においては、ライト要求カウント部１７が、リード要求及びライト要求の発行を監視し、リード要求のある一定数分だけ転送された期間に発行されたライト要求の数を計測し、リードライト転送調停部１１に通知する機能として追加される。また、ライト要求カウント部１７は、ライト要求カウントを実行する期間を決定するリード要求数がＣＰＵ１００１から設定される。また、リードライト転送調停部１１は、ライト要求中断指示発行を判断するライト要求数の閾値がＣＰＵ１００１から設定される。図１１に示されるように、リード要求転送部１３からリード要求転送情報が、ライト要求カウント部１７に入力される。また、ライト要求転送部１５からライト要求転送情報が、ライト要求カウント部１７に入力される。また、ライト要求カウント部１７は、リードライト転送調停部１１に、ライト要求数を出力する。
【００６７】
ＣＰＵ１００１から設定されるライト要求カウントを実行する期間を決定するリード要求数を、例えば、４とした場合に、直近４個のリード要求が発行された期間に、ライト要求が発行された数をカウントし、ライト要求数としてリードライト転送調停部１１に通知する。リードライト転送調停部１１は、Ｏｕｔｓｔａｎｄｉｎｇ数がＣＰＵ１００１から設定された閾値より大きい条件で、ライト要求カウント部１７からのライト要求数と、ＣＰＵ１００１から設定されたライト要求中断指示発行を判断するライト要求数の閾値とを比較して、ライト要求数が当該閾値と等しいか又は大きければ、ライト要求転送中断指示をアサートする。
【００６８】
なお、ライト要求カウントを実行する期間を決定するリード要求数は、ＣＰＵ１００１による設定値の代わりに、Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２で計測したリード先投げ数（Ｏｕｔｓｔａｎｄｉｎｇ数）をライト要求カウント部１７に通知するパスを設けた上で、その時点でのリード先投げ数（Ｏｕｔｓｔａｎｄｉｎｇ数）をリアルタイムに反映する方法で決定されてもよい。
【００６９】
リードレイテンシの増大は、直近のライト要求の連続発行が原因である場合がある。ＣＰＵ１００１から設定される、ライト要求カウントを行なう期間を決定するリード要求数よりも、直近にライト要求を連続発行したことによって、リードレイテンシ増大が発生している場合に、ライト要求の転送を抑制することができ、また、当該転送を過剰に抑制することを防ぐこともできる。
【００７０】
図１２は、第３の実施の形態におけるライト要求カウント部１７の動作を説明するための図である。ライト要求カウント部１７は、有限な個数、有限なカウンタ数を持ち、ワイヤードロジック回路で実装されてもよいし、プログラムがＣＰＵ１００１に実行させる処理により実現されてもよい。
【００７１】
図１２に示される「カウンタ０」は、ライト要求転送部１５から通知されるライト要求転送情報に基づいて、ライト要求の発行数をカウントアップしながら蓄積し、リード要求転送部１３から通知されるリード要求転送情報に基づいて、リード要求が発行されるたびにカウンタ１に値をシフトし、０クリアされる。
【００７２】
カウンタ１〜Ｎ−１は、リード要求が発行されるたびにカウンタ値を番号の大きなカウンタにシフトする。カウンタＮはリード要求が発行されるたびにカウンタ値を破棄し、新たにカウンタＮ−１の値がシフトされる。
【００７３】
ライト要求カウント部１７は、ＣＰＵ１００１によって予め設定されたリード要求数分のカウンタの値を合計して、ライト要求数とし、リードライト転送調停部１１に通知する。すなわち、ライト要求カウント部１７が、リードライト転送調停部１１に通知するライト要求数は、予め設定されたリード要求数が発行される期間ごとにカウントされ、当該期間に発行されるライト要求数に応じて変化する。
【００７４】
図１３は、第３の実施の形態におけるライト要求カウント部１７の動作を説明するためのフローチャートである。ライト要求カウント部１７は、データ転送装置１００のリセットが解除されると、ＣＰＵ１００１によるカウント期間設定（リード要求数）が行なわれた後、クロック（同期信号）ごとにステップＳ３２〜ステップＳ３７の動作を繰り返す。動作の完了はシステムリセット又はデータ転送装置１００に対する電源ＯＦＦであるため、エンドは図１３に図示しない。
【００７５】
ステップＳ３１において、ＣＰＵ１００１は、電源ＯＮ後のデータ転送装置１００のリセット解除後にライト要求カウント部１７が保持するレジスタに、ライト要求発行数のカウント期間を決定するリード要求の発行数を設定する。当該リード要求の発行数は、任意の値が設定可能である。
【００７６】
ステップＳ３２において、リード要求転送部１３から新たなリード要求発行を示すリード要求転送情報が通知された場合（Ｓ３２のＹＥＳ）、ライト要求カウント部１７のカウンタ０〜Ｎは、各々のカウンタの値を番号が＋１となるカウンタにシフトする。また、カウンタ０は、値が０クリアされ、カウンタＮは、保持していた値を破棄し、カウンタＮ−１が保持していた値で上書きされ（ステップＳ３３）、ステップＳ３４に進む。リード要求転送部１３から新たなリード要求発行を示すリード要求転送情報が通知されない場合（Ｓ３２のＮＯ）、ステップＳ３４に進む。
【００７７】
ステップＳ３４において、ライト要求転送部１５から新たなライト要求発行を示すライト要求転送情報が通知された場合（Ｓ３４のＹＥＳ）、ライト要求カウント部１７は、保持しているカウンタ０の値をインクリメントして（ステップＳ３５）ステップＳ３６に進む。ライト要求転送部１５から新たなライト要求発行を示すライト要求転送情報が通知されない場合（Ｓ３４のＮＯ）、ステップＳ３６に進む。
【００７８】
ステップＳ３６において、ステップＳ３１で設定されたリード要求数分のカウンタを足し合わせた値をライト要求数として、リードライト転送調停部１１に通知する。
【００７９】
ステップＳ３７において、ライト要求カウント部１７は、クロック（同期信号）入力待ちを行い、ステップＳ３２に戻る。
【００８０】
図１４は、第３の実施の形態におけるリードライト転送調停部１１の動作を説明するためのフローチャートである。図１０に示されるフローチャートに対して、図１４に示されるステップＳ４２、Ｓ４５が追加される。
【００８１】
ステップＳ４１は、図１０に示されるステップＳ２１と同様である。ステップＳ４２において、ＣＰＵ１００１は、電源ＯＮ後のデータ転送装置１００のリセット解除後にライト要求転送の中断を判定する閾値となるライト要求転送数を設定する。当該閾値となるライト要求転送数は、任意の値が設定可能である。ステップＳ４３は、図１０に示されるステップＳ２２と同様である。ステップＳ４３がＹＥＳの場合、ステップＳ４５に進み、ＮＯの場合、ステップＳ４４に進む。
【００８２】
ステップＳ４５において、ライト要求カウント部１７から受信したライト要求発行数が、ステップＳ４２において設定された閾値以上の場合（Ｓ４５のＹＥＳ）、ステップＳ４６に進み、図１０に示されるステップＳ２４と同様に、ライト要求転送部１５に対して、ライト要求転送中断指示をアサートして、ステップＳ４７に進む。ライト要求転送中断指示が、以前からアサートされていた場合は、アサートの出力を継続する。一方、ライト要求カウント部１７から受信したライト要求発行数が、ステップＳ４２において設定された閾値未満の場合（Ｓ４５のＮＯ）、ステップＳ４４に進み、ライト要求転送部１５に対して、ライト要求転送中断指示をネゲートする。ライト要求転送中断指示が、以前からネゲートされていた場合は、ネゲートの出力を継続して、ステップＳ４７に進む。ステップＳ４７は、図１０に示されるステップＳ２５と同様である。
【００８３】
上述のように、第３の実施の形態によれば、データ転送装置１００は、ライト要求カウントを行なう期間を決定するリード要求数、及び、ライト要求転送の中断を判定する閾値となるライト要求転送数を設定することで、直近にライト要求を連続発行したことによって、リードレイテンシ増大が発生している場合に、ライト要求の転送を抑制することができ、また、当該転送を過剰に抑制することを防ぐように制御することもできる。
【００８４】
なお、第３の実施の形態において、ライトデータ転送をＮｏｎ−Ｐｏｓｔｅｄ−Ｗｒｉｔｅ方式とした場合は、図１２に示されるシフト式のカウンタ群は不要であり、データ転送装置１００は、１つのカウンタで、ライトが完了しておらずライトレスポンスが返ってきていないライト要求数、すなわちライト要求のＯｕｔｓｔａｎｄｉｎｇ数を計測してもよい。当該計測によれば、バッファに蓄積されたライト要求数に基づいてデータ転送を制御することが可能となり、長期間の統計に基づくリード及びライトの転送帯域バランスの調停ができるようになる。
【００８５】
次に、第４の実施の形態について説明する。第４の実施の形態では第３の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第３の実施の形態と同様でもよい。
【００８６】
図１５は、第４の実施の形態におけるリードライト転送帯域調停部１０５の機能構成例を示す図である。
【００８７】
ライト要求カウント部１７に対して、ＣＰＵ１００１がライト要求をカウントする上限期間を設定する機能が追加されている。また、ライト要求カウント部１７にはライト要求をカウントする期間を制御する機能が追加されている。当該機能は、ライト要求カウント部１７に、カウンタごとにリード要求発行時刻を保持するレジスタが設けられ、ＣＰＵ１００１によって設定されたライト要求をカウントする上限期間を超える過去のカウンタ値が破棄されて、上限期間を超えた過去の情報を参考にせずに、ライト要求数を判定する機能が新たに追加される。
【００８８】
当該機能により、リード要求を発行するマスタが動作しておらず、リード要求が全くなかった期間に蓄積されたライト要求のカウント値を、上限期間を設けることで排除することが出来るようになる。具体的には、リード要求のＯｕｔｓｔａｎｄｉｎｇ数以下の範囲で、ライト要求数とリード要求数のバランスを制御するようリード要求の閾値を決めた場合には、レイテンシ期間が過ぎればいずれリード要求に対するリードレスポンスが返ってくるため、リードレイテンシは有限の期間となることが保証されるが、より長い期間でリード要求とライト要求のバランスを平均化するために、Ｏｕｔｓｔａｎｄｉｎｇ数より大きな範囲でリード要求の閾値を決めた場合は、リード要求を発行するマスタが、そもそもリード要求を発行していない期間のライト要求数も計測し、調停制御に反映されてしまうことを防ぐことが出来るようになる。
【００８９】
図１６は、第４の実施の形態におけるライト要求カウント部１７の動作を説明するための図である。ライト要求カウント部１７は、有限な個数、有限なカウンタ数を持ち、ワイヤードロジック回路で実装されてもよいし、プログラムがＣＰＵ１００１に実行させる処理により実現されてもよい。
【００９０】
図１６に示される「カウンタ０」〜「カウンタＮ」は、図１２に示されるカウンタと同様であるが、さらに、リード要求発行時刻蓄積部をカウンタごとに有する。リード要求発行時刻は、リード要求転送部１３から通知されるリード要求転送情報受信時の時刻を「カウンタ０」に対応する「リード要求発行時刻０」に記録し、カウンタ値と同様にリード要求が発行されるたびに番号の大きなカウンタにシフトする。リード要求発行時刻は、ライト要求をカウントする上限期間と比較され、上限期間を過ぎたカウンタは、そのカウンタ値を０クリアされる。したがって、リードライト転送調停部１１に通知するライト要求数に対して、上限期間を過ぎたカウンタ値は０として加算されるため、ライト要求数に反映されなくなる。
【００９１】
図１７は、第４の実施の形態におけるライト要求カウント部１７の動作を説明するためのフローチャートである。図１３に示されるフローチャートに対して、図１７に示されるステップＳ５２、ステップＳ５５及びステップＳ５６が追加される。
【００９２】
ステップＳ５１は、ステップＳ３１と同様である。ステップＳ５２において、ＣＰＵ１００１は、ライト要求カウント部１７にライト要求をカウントする上限期間を設定する。ステップＳ５３は、ステップＳ３２と同様である。ステップＳ５４は、ステップＳ３３と同様である。
【００９３】
ステップＳ５５において、ライト要求カウント部１７は、リード要求発行時刻が、ステップＳ５２で設定された上限期間を超えたカウンタがあるか否かを判定する。上限期間を超えたカウンタがある場合（Ｓ５５のＹＥＳ）、当該カウンタの値を０クリアする（Ｓ５６）。上限期間を超えたカウンタがない場合（Ｓ５５のＮＯ）、ステップＳ５７に進む。
【００９４】
ステップＳ５７〜ステップＳ６０は、ステップＳ３４〜ステップＳ３７と同様である。
【００９５】
上述のように、第４の実施の形態によれば、データ転送装置１００は、ライト要求のカウントを行う上限期間を設定することで、リード要求を発行するマスタが動作しておらず、リード要求が全くなかった期間が続いた場合に、過去蓄積されたライト要求のカウント値をクリアすることができる。すなわち、より長い期間でリード要求とライト要求のバランスを平均化するために、バッファ容量から定まるＯｕｔｓｔａｎｄｉｎｇ数の上限値よりも大きな範囲で、ライト要求数を計測する期間を決定するリード要求数の閾値が設定された場合、リード要求を発行するマスタが、そもそもリード要求を発行していない期間のライト要求数も計測し、当該計測の結果が、調停制御に反映されてしまうことを防ぐことができる。
【００９６】
なお、本発明の実施の形態において、共有メモリ３００は、メモリの一例である。Ｉ／Ｆ制御機能１０６は、バッファの一例である。Ｏｕｔｓｔａｎｄｉｎｇ数計測部１２は、リード要求計測部の一例である。ライト要求カウント部１７は、ライト要求計測部の一例である。ライト要求転送の中断を判定する閾値となるＯｕｔｓｔａｎｄｉｎｇ数は、第１の値又は第３の値の一例である。ライト要求発行数のカウント期間を決定するリード要求の発行数は、第２の値の一例である。ライト要求転送の中断を判定する閾値となるライト要求転送数は、第４の値の一例である。
【００９７】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００９８】
１００        データ転送装置
１００１      ＣＰＵ
１００２      ＲＯＭ
１００３      ＲＡＭ
１００４      ワイヤードロジック回路
１００５      インタフェース
１０１        機能Ａ
１０２        機能Ｂ
１０３        機能Ｃ
１０４        アービタ
１０５        リードライト転送帯域調停部
１０６        Ｉ／Ｆ制御機能
２００        データ転送装置
２０１        機能ａ
２０２        機能ｂ
２０３        アービタ
２０４        Ｉ／Ｆ制御機能
２０５        メモリコントローラ
３００        共有メモリ
１１          リードライト転送調停部
１２          Ｏｕｔｓｔａｎｄｉｎｇ数計測部
１３          リード要求転送部
１４          リードデータ転送部
１５          ライト要求転送部
１６          ライトデータ転送部
１７          ライト要求カウント部
【先行技術文献】
【特許文献】
【００９９】
【特許文献１】特許第４８７８１８５号公報
【図１】
2019003384.tif 000003
【図２】
2019003384.tif 000004
【図３】
2019003384.tif 000005
【図４】
2019003384.tif 000006
【図５】
2019003384.tif 000007
【図６】
2019003384.tif 000008
【図７】
2019003384.tif 000009
【図８】
2019003384.tif 000010
【図９】
2019003384.tif 000011
【図１０】
2019003384.tif 000012
【図１１】
2019003384.tif 000013
【図１２】
2019003384.tif 000014
【図１３】
2019003384.tif 000015
【図１４】
2019003384.tif 000016
【図１５】
2019003384.tif 000017
【図１６】
2019003384.tif 000018
【図１７】
2019003384.tif 000019