(57)【特許請求の範囲】
【請求項１】
データを保持する第１の記憶部と、
前記第1の記憶部とバスに接続され、前記第1の記憶部の使用量に基づき、前記第1の記憶部が保持するデータの前記バスへの転送を要求する第１の転送要求を出力するとともに、前記第1の転送要求に対する第１の転送許可が入力された場合に前記第1の記憶部が保持するデータを前記バスに出力する第１の転送要求部と、
前記第1の転送要求部に前記バスを介して接続されるとともにデータ伝送路に接続され、前記第1の転送要求部が前記バスに出力したデータを保持する第２の記憶部と、
前記第1の転送要求部と前記バスに接続され、前記第1の転送要求部からの転送指示が入力された場合に前記第２の記憶部が保持するデータの前記データ伝送路への転送を要求する第２の転送要求を出力するとともに、前記第２の転送要求に対する第２の転送許可が入力された場合に前記第２の記憶部に対して前記第２の記憶部が保持するデータを前記データ伝送路に出力させる転送指示を出力する第２の転送要求部と、
前記第1の転送要求部と前記第２の転送要求部に接続され、前記第1の転送要求と前記第２の転送要求が入力された場合、前記第1の転送許可又は前記第２の転送許可のいずれかを出力する転送調停部を有することを特徴とするデータ転送装置。
【請求項２】
前記データ転送装置において、
前記第1の転送要求部は、
前記第1の転送要求部が前記バスに出力したデータが前記第２の記憶部に保持された後に、前記第２の転送要求部に対して前記転送指示を出力することを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記データ転送装置において、
前記第1の転送要求部が、前記第1の転送要求を出力した場合、前記転送調停部は、前記第1の転送要求の出力期間中は、前記第２の転送許可よりも前記第1の転送許可を優先して出力することを特徴とする請求項１又は２記載のデータ転送装置。
【請求項４】
前記データ転送装置において、
前記第1の転送要求部が、前記第1の転送要求を出力した場合、前記転送調停部は、前記第1の転送要求の出力期間中は、前記第1の転送要求と前記第２の転送要求に対する調停を交互に行なうことにより、前記第1の転送許可と前記第２の転送許可を出力することを特徴とする請求項１又は２記載のデータ転送装置。
【請求項５】
前記データ転送装置において、
前記転送調停部は、前記第２の転送要求部が前記第２の転送要求を出力しない期間中、前記第1の転送許可を出力し続けることを特徴とする請求項１〜４のいずれか１項に記載のデータ転送装置。
【請求項６】
データを保持する第１の記憶部と、前記第1の記憶部に接続された第１の転送要求部と、前記第1の転送要求部にバスを介して接続されるとともにデータ伝送路に接続された第２の記憶部と、前記第1の転送要求部に接続された第２の転送要求部と、前記第1の転送要求部と前記第２の転送要求部に接続された転送調停部と、を有するデータ転送装置のデータ転送方法において、
前記第1の転送要求部が、前記第1の記憶部の使用量に基づき、前記第1の記憶部が保持するデータの前記バスへの転送を要求する第１の転送要求を出力するステップと、
前記第1の転送要求を入力した転送調停部が、前記第1の転送要求に対する第１の転送許可を前記第1の転送要求部に出力するステップと、
前記第1の転送要求部が、前記第1の転送許可が入力された場合に、前記第1の記憶部が保持するデータを前記バスに出力するステップと、
前記第２の記憶部が、前記第1の転送要求部が前記バスに出力したデータを保持するステップと、
前記第２の転送要求部が、前記第1の転送要求部からの転送指示が入力された場合に、前記第２の記憶部が保持するデータの前記データ伝送路への転送を要求する第２の転送要求を出力するステップと、
前記第２の転送要求を入力した転送調停部が、前記第２の転送要求に対する第２の転送許可を前記第２の転送要求部に出力するステップと、
前記第２の転送要求部が、前記第２の転送要求に対する第２の転送許可が入力された場合に、前記第２の記憶部に対して前記第２の記憶部が保持するデータを前記データ伝送路に出力させる転送指示を出力するステップを有することを特徴とするデータ転送方法。
【請求項７】
前記データ転送方法において、
前記第1の転送要求部は、
前記第1の転送要求部が前記バスに出力したデータが前記第２の記憶部に保持された後に、前記第２の転送要求部に対して前記転送指示を出力することを特徴とする請求項６記載のデータ転送方法。
【請求項８】
前記データ転送方法において、
前記第２の転送要求を入力した転送調停部が、前記第２の転送要求に対する第２の転送許可を前記第２の転送要求部に出力するステップは、
前記第1の転送要求部が、前記第1の転送要求を出力した場合、前記転送調停部は、前記第1の転送要求の出力期間中は、前記第２の転送許可よりも前記第1の転送許可を優先して出力することを特徴とする請求項６又は７記載のデータ転送方法。
【請求項９】
前記データ転送方法において、
前記転送調停部は、前記第２の転送要求部が前記第２の転送要求を出力しない期間中、前記第1の転送許可を出力し続けることを特徴とする請求項６〜８のいずれか１項に記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの転送方式に係り、さらに詳しくは１本のデータ転送路、例えば共通バスに対する複数のデータ転送要求を処理するデータ転送装置、およびデータ転送制御プログラムに関する。
【背景技術】
【０００２】
１本のデータ転送路、例えば共通バスに対して複数のデータ転送要求元、すなわちリクエスタからのデータ転送リクエストが同時に発生した場合には、いわゆるバスアービトレーションによって複数の転送要求に対して調停を行う必要がある。
【０００３】
一般的なバスのプロトコルにおいては、転送バースト長、例えば調停後の実際のバス専用時間において転送できるデータの長さを長くすることによって、バスアービトレーションサイクルや、実際のデータの転送には使われないアドレスサイクルなどの待ち時間の影響を少なくすることが可能となり、バスの使用効率が向上する。
【０００４】
しかしながらバースト転送の完了まで他のリクエスタからのデータ転送要求を受付けることができなくなり、他のリクエスタの待ち時間が増加することになる。その待ち時間によってシステムの性能が大きく左右されるような場合には、システム全体の性能が低下してしまうという問題点がある。
【０００５】
逆に最大転送バースト長を抑えることによって、リクエスタの待ち時間をある一定時間内に抑えることが可能となる。その場合にはデータ転送のスループットが低下するという問題点がある。
【０００６】
このようなデータ転送のアービトレーションについて次のような文献がある。
【特許文献１】特開平１−２０６４４６号公報  「共通バス制御方式」
【特許文献２】特開平５−１３４９８０号公報  「バスシステム」
【特許文献３】特開平８−１８５３７１号公報  「バス調停装置」
【特許文献４】特開平９−２５９０７１号公報  「通信制御装置」
【特許文献５】特開平１１−１４３８１２号公報  「ＤＭＡ回路」
【特許文献６】特開２００１−７５９１７号公報  「ＤＭＡ転送装置および画像復号装置」
【特許文献７】特開２００３−２５６３５９号公報  「データ転送制御装置及び方法」
【０００７】
特許文献１から特許文献３は、バスにおけるデータ転送のアービトレーションに関し、いずれも優先順位をつけてバスを用いたデータ転送を行わせる技術が開示されている。例えば、特許文献３には外部装置相互間でのデータ転送と、ＣＰＵと外部装置との間のデータ転送が衝突した場合には、ＣＰＵと外部装置との間のデータ転送を優先処理する技術が開示されている。
【０００８】
特許文献４には、送信器、受信器、メモリ装置及び送信／受信器とメモリ装置間でのデータバスを介するＤＭＡデータ転送において、第１のＤＭＡコントローラチャネルよりも優先順位の高い第２のＤＭＡコントローラチャネルのバス権要求を優先して処理する技術が開示されている。
【０００９】
特許文献５には、複数のチャネルを用いたデータ転送において、許可回路が任意のＤＭＡコントローラに対して転送実行中にすでに与えてある許可を強制的に中断する転送中断技術が開示されている。
【００１０】
特許文献６、および特許文献７には、優先順位に基づいてデータ転送の競合の調停を行う技術が開示されており、例えば特許文献６では時間制約の厳しいデータ転送には高い優先順位のチャンネルを割り当てることによって、データ転送のリアルタイム性を容易に向上させる転送装置が開示されている。
【００１１】
しかしながら以上のような文献の技術によっても、大量のデータ転送を行うために長いデータ転送時間を必要とするリクエスタと、比較的少量のデータ転送を行い、データの転送時間が短いリクエスタからのデータ転送要求が衝突した場合に、それらの要求を調停し、システム全体としてのデータ転送効率を向上させることができないという問題点があった。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明の課題は、上述の問題点に鑑み、大量のデータ転送を行うリクエスタからの転送要求と、比較的転送時間の短いデータ転送を要求するリクエスタからの要求とが衝突した場合、転送時間の短いデータの転送要求に対して優先的にデータ転送路を使用させるとともに、そのデータ転送の終了後に大量データ転送を行うリクエスタの要求を認めることによって、システム全体のデータ転送効率を向上させることである。
【課題を解決するための手段】
【００１３】
図１は、本発明のデータ転送装置の原理構成ブロック図である。同図は、複数のデータ転送要求を調停して、その調停結果に対応して１本のデータ転送路、例えば共通バスを用いたデータ転送を行わせるデータ転送装置の原理構成ブロック図であり、データ転送装置１は、第１の転送要求手段２、第２の転送要求手段３、および転送調停手段４を少なくとも備える。
【００１４】
第１の転送要求手段２は、データの転送を要求するものであり、第２の転送要求手段３は、第１の転送要求手段２が要求するデータの転送時間よりも転送時間の短いデータの転送を要求するものである。転送調停手段４は、第２の転送要求手段３からのデータ転送要求を検出したとき、第２の転送要求手段、すなわち転送時間の短いデータの転送を要求する手段３からの要求に対して、優先的に１本のデータ転送路を用いた転送を行わせるものである。
【００１５】
発明の実施の形態においては、第１の転送要求手段２が転送要求が緊急のものであることを示す緊急信号を出力したときには、転送調停手段４がその緊急信号の出力期間中は、第１の転送要求手段２からのデータ転送要求に対して優先的に１本のデータ転送路を用いた転送を行わせることもでき、あるいは転送調停手段４が第１の転送要求手段２からの転送要求と、第２の転送要求手段３からの転送要求に対して公平に、例えばラウンドロビン方式を用いて、１本のデータ転送路を用いた転送を行わせることもできる。
【００１６】
また実施の形態においては、データ転送装置１が第１の転送要求手段２が転送を要求するデータの転送時間よりも転送時間の短いデータの転送を要求する第３の転送要求手段をさらに備え、第１、第２、および第３の転送要求手段からのデータ転送要求が衝突したとき、転送調停手段４が第２の転送要求手段、および第３の転送要求手段からの転送要求に対して公平に、例えばラウンドロビン方式によって１本のデータ転送路を用いた転送を行わせ、その第２、第３の転送要求手段によるデータ転送が終了した後に、第１の転送要求手段に対して１本のデータ転送路を用いた転送を行わせることもできる。
【００１７】
次に本発明のデータ転送制御プログラムは、１本のデータ転送路を用いた第１の転送要求と、該第１の転送要求に対応するデータの転送時間よりも転送時間の短いデータの第２の転送要求との衝突を調停するための計算機によって用いられるプログラムであって、第２のデータ転送要求を検出するステップと、該第２の転送要求が検出された時、第２の転送要求を第１の転送要求よりも優先させてデータ転送を行わせるステップとを計算機に実行させるものであり、実施の形態においては、このプログラムと同様のデータ転送制御方法を用いることもできる。
【００１８】
以上のように本発明によれば、少量のデータ転送しか行わないリクエスタからのデータ転送要求が検出されたときには、大量データ転送を行うリクエスタからのデータ転送要求に優先させて、その要求に対してバスの使用が許可されることになる。
【発明の効果】
【００１９】
本発明によれば、少量のデータ転送は、大量のデータ転送に比較して優先的に処理され、少量のデータ転送が行われていない期間において大量のデータ転送が行われることによって、装置全体としてのデータ転送性能が向上する。
【発明を実施するための最良の形態】
【００２０】
図２は、本実施形態におけるデータ転送装置の基本的な構成ブロック図である。データ転送装置１０は、バス１１を介してバッファ１５へのデータ転送を行うものである。データ転送を要求するリクエスタとしては、Ａ１２、Ｂ１３、およびＣ１４がある。これらの３つのリクエスタの間でのバス１１の使用については、バスアービタ１６によって調停が行われる。
【００２１】
図２においてリクエスタＡ、Ｂは、比較的少量のデータをバッファ１５に転送するものであり、転送までの待ち時間が短いことを要求するリクエスタである。これに対してリクエスタＣは、大量のデータをバッファ１５に書き込むものであり、高いスループットを要求するものであるとする。リクエスタＡ、Ｂは、バス１１の獲得を行いたいタイミングでＲＥＱ（リクエスト）信号をアサートし、バスアービタ１６からのＧＮＴ（グラント）信号がアサートされるまでＲＥＱ信号をアサートしつづけ、ＧＮＴ信号がアサートされたサイクルでＲＥＱ信号をディアサートし、ＧＮＴ信号がアサートされている期間においてデータ転送を行うものとする。
【００２２】
バスアービタ１６は、リクエスタＡ、ＢからのＲＥＱ信号を基にして、例えばラウンドロビン方式でアービトレーションを行う。その結果、ＧＮＴ＿Ａ、またはＧＮＴ＿Ｂのいずれかをアサートする。バスアービタ１６は、リクエスタＡ、ＢへのＧＮＴ信号がともにアサートされていないサイクルにおいて常にＧＮＴ＿Ｃをアサートする。
【００２３】
リクエスタＣは、ＧＮＴ＿Ｃがアサートされている期間、バス１１の使用が可能であると判断し、転送データが存在する場合には、データ転送を行う。データ転送の途中でＧＮＴ＿Ｃがバスアービタ１６によってディアサートされた場合は、そのサイクルでデータ転送を中断し、ＧＮＴ＿Ｃが再びアサートされた時点で、データ転送を再開するものとする。
【００２４】
図３は、バスアービトレーションの具体例のタイムチャートである。同図においては次のように処理が行われる。なおこの図３と次の図４では、バスアービタ側がＧＮＴ信号のアサート期間、すなわち転送バースト長を制御するものとしてタイムチャートを説明する。
（１）  リクエスタＡとリクエスタＢ間での調停が行われ、リクエスタＡがバスを獲得し、データ転送を行う。
（２）  リクエスタＡとリクエスタＢ間での調停が行われ、リクエスタＢがバスを獲得し、データ転送を行う。
（３）  リクエスタＡのみがＲＥＱ信号をアサートしているので、無条件でリクエスタＡがバスを獲得し、データ転送を行う。
（４）  リクエスタＡもリクエスタＢもバスを使用していない、すなわちＧＮＴ＿ＡもＧＮＴ＿Bもアサートされていないため、ＧＮＴ＿Ｃがアサートされる。
（５）  リクエスタＣがデータ転送を行いたいタイミングでＧＮＴ＿Ｃがアサートされているためデータ転送を行う。
【００２５】
リクエスタＡからのリクエストのためＧＮＴ＿Ａがアサートされ、ＧＮＴ＿Ｃはディアサートされる。リクエスタＣはデータ転送を途中で打ち切る。
（６）  リクエスタＡのみがＲＥＱ信号をアサートしているので、無条件でリクエスタＡがバスを獲得し、データ転送を行う。この場合、リクエスタＡのデータ転送に対するＧＮＴ信号のアサート期間は、リクエスタＢもバスを要求していた（１）よりも長くなっている。
（７）  リクエスタＡもリクエスタＢもバスを使用していない、すなわちＧＮＴ＿ＡもＧＮＴ＿Bもアサートされていないため、ＧＮＴ＿Ｃがアサートされる。
【００２６】
リクエスタＣは（５）で中断されたデータ転送を再開し、データ転送を完了する。
図２においてリクエスタＣは、例えば緊急に転送すべきデータがある場合には、ＥＭＲＧ＿Ｃ信号をアサートする。バスアービタ１６は次の調停タイミング、例えば次のサイクルにおいてＧＮＴ＿Ｃをアサートし、ＥＭＲＧ＿Ｃがディアサートされるまでバス１１の使用をリクエスタＣに許可し、ＥＭＲＧ＿Ｃがディアサートされると通常のアービトレーションに戻るものとする。
【００２７】
図４は、このＥＭＲＧ信号アサート時のバスアービトレーションの具体例のタイムチャートである。同図において以下のように処理が行われる。
（１）  リクエスタＡとリクエスタＢ間での調停が行われ、リクエスタＡがバスを獲得し、データ転送を行う。
（２）、（３）  バス調停タイミングでＥＭＲＧ＿Ｃがアサートされているため、ＧＮＴ＿Ｃをアサートする。ＧＮＴ＿Ｃがアサートされているため、リクエスタＣがデータ転送を行う。
（４）  リクエスタＣがＥＭＲＧ＿Ｃをディアサートしたため、通常のアービトレーションに戻り、リクエスタＢがバスを獲得し、データ転送を行う。（５）、（６）については省略する。
【００２８】
図５は、図２におけるバスアービタの構成例である。同図は図３のタイムチャートに相当するアービトレーションを行うものである。アービタ１７は入力されるＲＥＱ＿Ａ、またはＲＥＱ＿Ｂの信号によって、例えばラウンドロビン方式によってアービトレーションを行い、ＧＮＴ＿Ａ、またはＧＮＴ＿Ｂ信号をアサートする。またこれらの信号をＮＯＲゲート１８に入力させることによって、２つのＧＮＴ信号がいずれも出力されていないときには、ＧＮＴ＿Ｃ信号がアサートされる。すなわち、大量データ転送を行うリクエスタＣはアービトレーションから除外され、リクエスタＡ、またはＢがバスを使用していない時点でのみリクエスタＣのデータ転送が許可されることになる。
【００２９】
図６は、図５のアービタ１７によって行われるアービトレーション処理のフローチャートである。同図においてまずステップＳ１で、２つのＲＥＱ信号のいずれかがアサートされているかが判定され、アサートされていない場合にはその監視が続けられる。アサートされている場合には、ステップＳ２でリクエスタＡとＢとのデータ転送要求に対するアービトレーションが行われ、ステップＳ３でその結果に基づいてリクエスタＡ、またはリクエスタＢへのＧＮＴ信号がアサートされ、ステップＳ４でＧＮＴ信号がアサートされたリクエスタによるデータ転送が完了したか否かが判定され、完了していない場合には転送完了の監視が続けられる。完了した場合には、再びステップＳ１以降の処理が続けられる。すなわち、図３、図４と異なり、ＧＮＴ信号がアサートされたリクエスタによって、データ転送の最大バーストサイズによって規定されるデータ量以下のデータの転送が行われた後に、再びバスアービトレーションが行われる。
【００３０】
ステップＳ４におけるデータ転送完了の判断については、バスプロトコルなどに応じて様々な方法が考えられる。その方法としては、第１にアービタにデータ転送のバーストサイズを伝えておき、バーストサイクルをアービタがカウントして、バーストサイズまで転送が完了したらデータ転送完了と判断する方法、第２に専用のデータ転送完了信号をリクエスタがアサートし、それをアービタに伝えることでデータ転送完了と判断する方法などがある。
【００３１】
次に図４で説明したようにアービタに対してＥＭＲＧ＿Ｃ信号が入力可能とされている場合には、ＥＭＲＧ信号がアサートされている期間中は、ＲＥＱ＿Ａ、またはＲＥＱ＿Ｂ信号がアサートされてもＧＮＴ＿Ａ、およびＧＮＴ＿Ｂ信号がアサートされることは無く、ＧＮＴ＿Ｃ信号がアサートされつづけるものとする。
【００３２】
図７は、この場合のアービトレーション処理のフローチャートである。同図は図６の処理のフローチャートと類似しているが、ステップＳ１で２つのＲＥＱ信号のいずれかがアサートされている場合に、ステップＳ２の処理に移行する前にステップＳ５でＥＭＲＧ＿Ｃ信号がアサートされているかが判定され、アサートされていない場合には図６と同様にステップＳ２以降の処理が行われるが、アサートされている場合には、何らの処理を行うことなく再びステップＳ１以降の処理が続けられる。すなわち、ＥＭＲＧ＿Ｃ信号がアサートされている場合には、リクエスタＡとリクエスタＢに対するアービトレーションを行うことなく、ＧＮＴ＿Ａ信号とＧＮＴ＿Ｂ信号とはいずれもアサートされず、その結果ＧＮＴ＿Ｃ信号がアサートされて、リクエスタＣのデータ転送が許可される。
【００３３】
図８はリクエスタＣがＥＭＲＧ＿Ｃ信号をアサートした場合において、３つのリクエスタＡ、Ｂ、およびＣからのデータ転送要求を公平にアービトレーションするアービトレーション処理のフローチャートである。同図においてステップＳ１、Ｓ５、Ｓ２からＳ４の処理は図７におけると同様であるが、ステップＳ５でＥＭＲＧ＿Ｃ信号がアサートされている場合には、ステップＳ７で３つのリクエスタＡ、Ｂ、Ｃからのデータ転送要求を公平にアービトレーションする処理が行われる。このアービトレーションでは、前述と同様に、例えばラウンドロビン方式が用いられる。なおここでのアービトレーションは、例えばリクエスタＡとリクエスタＣとの間、あるいはリクエスタＢとリクエスタＣとの間で行ってもよいことは当然である。
【００３４】
続いてステップＳ８で、アービトレーションの結果がリクエスタＡ、またはリクエスタＢからの要求を認めるものである場合には、ＧＮＴ＿Ａ、またはＧＮＴ＿Ｂ信号がアサートされる。リクエスタＣからの要求を認める場合には何らの処理も行われず、ステップＳ９でＧＮＴ信号がアサートされたリクエスタのデータ転送が完了したか否かが判定され、完了していない場合にはその監視が続けられ、完了した場合には再びステップＳ１以降の処理が繰り返される。
【００３５】
続いてネットワークでの送信パケットの生成回路を具体例として、本発明の実施の形態についてさらに説明する。図９はそのようなネットワークへの送信パケット生成・送出回路の構成例である。同図においてバス２０、バスアービタ２１、ＣＰＵ２２、ＤＭＡコントローラ２３、およびセンドコマンドコントローラ２４（ｓｅｎｄ  ｃｍｄ  ｃｎｔ１）が図２のデータ転送装置１０に相当する。
【００３６】
ＤＭＡコントローラ２３は図示しないホストメモリから転送されるパケット（ペイロード）データを、バス２０を介してパケットストアー（Ｐａｃｋｅｔ  Ｓｔｏｒｅ）ＲＡＭ２８に転送するものであり、図２におけるリクエスタＣに相当する。すなわちホストメモリ上のデータ（Ｈｏｓｔ  ＤＭＡ  Ｒｅａｄ  Ｄａｔａ）は、計算機内部の高速なデータ伝送路としてのＰＣＩ−Ｘバス２７を介して、ＰＣＩ−Ｘコントローラ２６によってＦＩＦＯ２５に格納される。ＤＭＡコントローラ２３は、そのパケットデータを受け取り、パケットストアーＲＡＭ２８に転送する動作を行う。
【００３７】
ＣＰＵ２２とセンドコマンドコントローラ２４が図２におけるリクエスタＡ、Ｂに相当する。ＣＰＵ２２はパケットヘッダを生成して、そのパケットヘッダをバス２０を介してパケットストアーＲＡＭ２８に転送する。またセンドコマンドコントローラ２４は、ネットワークへのパケット送信指示をバス２０を介してパケットセンドコントローラ２９に転送するものである。
【００３８】
１つのパケットの生成、送出の流れは以下のようになる。
（１）  ＣＰＵ２２が、送信先アドレス情報などのネットワーク制御情報を含むパケットヘッダの生成処理を行い、生成したパケットヘッダをＢＵＳ２０からＰａｃｋｅｔ  Ｓｔｏｒｅ  ＲＡＭ２８に転送する。
（２）  ＣＰＵ２２はホストメモリ上のパケットペイロードデータをＰａｃｋｅｔ  Ｓｔｏｒｅ  ＲＡＭ２８に格納するためＤＭＡＣ２３にＤＭＡ指示を出す。
（３）  ＤＭＡＣ２３がＰＣＩ＿Ｘ  Ｃｎｔｌ２６にＨｏｓｔ  ＤＭＡ  Ｍｅｍｏｒｙ  Ｒｅａｄリクエストを出す。
（４）  ＰＣＩ＿Ｘ  Ｃｎｔｌ２６がＰＣＩ＿Ｘ  Ｂｕｓ２７からＨｏｓｔ  Ｍｅｍｏｒｙ  Ｄａｔａをリードし、ＦＩＦＯ２５に書き込む。
（５）  ＤＭＡＣ２３がＦＩＦＯ２５からデータを読み込み、ＢＵＳ２０を通じてＰａｃｋｅｔ  Ｓｔｏｒｅ  ＲＡＭ２８にパケットペイロードデータを転送する。
（６）  ＤＭＡＣ２３がパケット送信指示をｓｅｎｄ  ｃｍｄ  ｃｎｔｌ２４に出す。
（７）  ｓｅｎｄ  ｃｍｄ  ｃｎｔｌ２４がＢＵＳ２０を通じてパケット送信指示をｐａｃｋｅｔ  ｓｅｎｄ  ｃｎｔｌ２９に出す。
（８）  ｐａｃｋｅｔ  ｓｅｎｄ  ｃｎｔｌ２９がネットークにパケットを送出する。
【００３９】
ＣＰＵ２２は、（１）、（２）の処理が完了した時点で、（３）から（８）の処理中にも次のパケットのための（１）、（２）の処理を行うことが可能である。ＤＭＡＣ２３はＣＰＵ２２からのＤＭＡ指示を複数受けることが可能で、（３）の処理が完了した時点で、（５）、（６）の完了を待たずに次のパケットのための（３）の処理を行うことが可能である。
【００４０】
ＰＣＩ＿Ｘ  プロトコルではスプリットトランザクションが可能で、ＰＣＩ＿Ｘ  Ｃｎｔｌ２６はメモリリードリクエストデータの受信完了を待たずに次のリクエストをＰＣＩ＿Ｘ  Ｂｕｓ２７に出すことが可能である。
【００４１】
図９において、バス２０はアドレスとデータが分かれたバスであり、アドレスは毎サイクル指定されるものとする。またＧＮＴ信号がアサートされるのは、例えば図３ではＲＥＱ信号がアサートされたサイクルで行われるものとしたが、ここではＲＥＱ信号のアサートから１サイクル後とする。このＲＥＱ信号とＧＮＴ信号のアサートの間の関係は本実施形態では本質的なものではない。
【００４２】
またＤＭＡＣ２３以外のリクエスタは、ＲＥＱ信号をアサートしてからデータの転送完了までＲＥＱ信号をアサートしつづけるものとし、ＤＭＡＣ２３によるデータの転送最大バースト長は規定しないものとし、その他のリクエスタに対するバースト長制限についても任意とする。ＤＭＡＣ２３からのパケットストアーＲＡＭ２８へのデータの書込みと、センドコマンドコントローラ２４からのパケットセンドコントローラ２９へのコマンド送信はバス２０のアドレスによって区別されるものとする。
【００４３】
図１０は、ＣＰＵ２２からのリクエストに対応して、ＤＭＡＣ２３からのデータ転送が中断される具体例のタイムチャートである。同図においてＤＭＡＣ２３がアドレスＡ＿ＰｘにパケットペイロードデータＤ＿Ｐｘを転送している途中で、ＣＰＵ２２がパケットヘッダＤ＿ＨｘをアドレスＡ＿Ｈｘに転送し、このヘッダの転送の完了後に再びＤＭＡＣ２３がパケットペイロードデータの転送を行うタイムチャートが示されている。
【００４４】
図１１は２つのパケットの生成と送出の処理が時間的にオーバラップしながら行われるタイムチャートの具体例である。同図においてヘッダＨ１とペイロードデータＰ１とから構成されるパケットと、ヘッダＨ２とペイロードデータＰ２とから構成されるパケットの生成処理がオーバラップしながら行われる。
【００４５】
すなわちＤＭＡＣ２３がバス２０を介してペイロードデータＰ１の転送を行っている途中で、ＣＰＵ２２によるヘッダ生成処理が完了し、そのヘッダＨ２の転送が可能となる。本実施形態においては、この時点でＤＭＡＣ２３がバス２０を手放し、ヘッダＨ２の転送が行われる。ヘッダＨ２の生成処理完了後、その転送までの応答時間が短くなることにより、ペイロードデータＰ２をホスト側に要求するＤＭＡリクエストを出すタイミングを早めることができ、結果的にペイロードデータＰ１とＰ２とのデータ転送を継ぎ目無く実行することが可能となる。
【００４６】
またＤＭＡＣ２３はペイロードデータＰ２をパケットストアーＲＡＭ２８に転送している途中でバス２０を手放し、センドコマンドコントローラ２４がパケットの送信指示をパケットセンドコントローラ２９に発行する。これによってパケットストアーＲＡＭ２８にパケットヘッダとペイロードデータとが格納され、パケット送信が可能となった時点から、実際のパケット送信指示までの応答時間が短くなり、ネットワークに対するパケット送出を早めることができる。ＤＭＡＣ２３は他のリクエスタ、すなわちＣＰＵ２２とセンドコマンドコントローラ２４がバス２０を使用していないときには、バスを占有することが可能となり、高いスループットを実現することができる。
【００４７】
前述のようにＤＭＡＣ２３は、バスアービタ２１からのＧＮＴ信号がアサートされたタイミングでデータ転送を開始し、その信号がディアサートされた時点でデータ転送を中断するものであるが、その動作について図１２のアドレス判定器を含むパケット生成・送出回路、および図１３の処理フローチャートを用いて説明する。
【００４８】
図９においてバス２０に対してリクエスタは、バスアービタ２１からのＧＮＴ信号がアサートされている時、アドレスをアドレスバスに、またデータをデータバスに出力し、同時にそのアドレス、およびデータが有効であることを示すバスバリッド信号をアサートするものとする。データを受信するＲＡＭ２８とパケットセンドコントローラ２９については、アドレスバスからの信号によって、例えばＲＡＭ２８のアドレスが指定され、パケットデータはそのアドレスに書き込まれる。データバスはＲＡＭ２８とパケットセンドコントローラ２９に直接接続される。アドレス判定器３０はバスバリッド信号がアサートされており、かつアドレスがＲＡＭのアドレス範囲内であれば、ＲＡＭに対するライトイネーブル信号ｒａｍ−ｗｅ信号をアサートする。またアドレス判定器３０は、バスバリッド信号がアサートされており、かつアドレスがパケットセンドコントローラ２９宛てのアドレスであれば、コマンドが有効（ライトネーブル）であることを示すｃｍｄ−ｗｅ信号をアサートする。
【００４９】
図１３はＤＭＡＣ２３による処理のフローチャートである。まずステップＳ１１でＤＭＡ指示、すなわちＣＰＵ２２からの指示があるか否かが判定され、ない場合にはその指示を待つ処理が続行される。指示がある場合には、ソースアドレス、すなわちホストメモリアドレス、ディスティネーションアドレス、すなわちパケットストアーＲＡＭ２８のアドレス、および転送データサイズが同時にＤＭＡＣ２３に伝えられており、この指示に対応してＤＡＭＣ２３はステップＳ１２で図示しないディスティネーションアドレスカウンタの値を指示されたディスティネーションアドレスの値に初期化する。
【００５０】
その後ＤＭＡＣ２３はソースアドレスに対応してホストメモリからのデータリードを指示し、そのデータはＦＩＦＯ２５に格納される。ＦＩＦＯ２５のエントリのうちでデータが格納されているエントリの数はｆｉｆｏ＿ｅｎｔｒｙ信号によってＤＭＡＣ２３に伝えられ、ＤＭＡＣ２３はＦＩＦＯ２５から１つのエントリのデータを取り出す毎にｆｉｆｏ＿ｒｅａｄ＿ｄｏｎｅ信号をアサートする。
【００５１】
図１３のステップＳ１３でｆｉｆｏ＿ｅｎｔｒｙ信号の値が１以上であり、かつＧＮＴ信号がアサートされているか否かが判定され、この条件が満足されていない場合には、その判定が繰り返され、満足されている場合には、ステップＳ１４でＦＩＦＯ２５から読み出したデータをデータバス、ディスティネーションアドレスカウンタの値をアドレスバスに出力とするとともにバスバリッド信号をアサートする。これによってホスト側から送られたパケットペイロードデータは、ＲＡＭ２８に転送される。
【００５２】
ステップＳ１５で転送データが残っているか否かが判定され、残っていない場合にはステップＳ１１以降の処理が繰り返され、残っている場合にはステップＳ１６でディスティネーションアドレスカウンタの値がインクリメントされた後にステップＳ１３以降の処理が繰り返される。このようにデータの転送が完了するまで、バスサイクル毎にステップＳ１３でＧＮＴ信号のアサートの確認を行うことによって、データ転送の中断／再開が実現され、ＤＭＡＣ２３はどのようなタイミングでもバスを手放すことが可能となり、さらに中断されたデータ転送を再開することができる。
【００５３】
次にＤＭＡＣ２３によるＥＭＲＧ信号のアサートについてさらに説明する。図９においてＰＣＩ−Ｘコントローラ２６は、ＦＩＦＯ２５にすでにデータが格納されているエントリの数を考慮することなく、ＦＩＦＯ２５にデータを書き込むものとし、またＤＭＡＣ２３は、ＦＩＦＯ２５のエントリの個数以上のデータに対するホストメモリリードリクエストをＰＣＩ−Ｘコントローラ２６に出すことができるものとする。そこでＦＩＦＯ２５の中でデータが格納されているエントリの数が一定値以上となった時にＤＭＡＣ２３はＥＭＲＧ信号をアサートし、またデータの格納されているエントリの数が一定値以下になった時にＥＭＲＧ信号をディアサートすることによって、ＦＩＦＯ２５のオーバフローを防止するものとする。ＦＩＦＯ２５の最大書込み速度、最大読出し速度の変更にも対応可能なように、ＥＭＲＧ信号のアサートに対するエントリ数の閾値、およびディアサートに対する閾値を外部から設定可能とすることにする。
【００５４】
図１４はパケット生成・送出回路におけるＦＩＦＯのオーバフロー防止方式の説明図である。同図においてＦＩＦＯ２５は、８バイト幅の１２８個のエントリを備えるものとし、合計で１０２４バイトのデータを保持することが可能であるものとする。ＤＭＡＣ２３が２０４８バイトのホストメモリリードリクエストをＰＣＩ−Ｘコントローラ２６に出し、ＰＣＩ−Ｘコントローラ２６がＦＩＦＯ２５の空きエントリ数を考慮することなく、２０４８バイトのホストメモリリードデータを途切れなくＦＩＦＯ２５に書き込む場合を考える。ここでＦＩＦＯ２５へのデータの書込みと読出しは、同一クロックで行われるものとする。
【００５５】
ＤＭＡＣ２３は、ＧＮＴ信号がアサートされるとＦＩＦＯ２５からデータを読み込み、バス２０にそのデータを出力する。ＤＭＡＣ２３以外のリクエスタがバス２０を使用している場合には、ＤＭＡＣ２３に対するＧＮＴ信号はアサートされず、その間ＤＭＡＣ２３はＦＩＦＯ２５内のデータの読み込みを行わない。ＤＭＡＣ２３に対するＧＮＴ信号がアサートされない期間が１２８サイクル以上続くとＦＩＦＯ２５がオーバフローする可能性がある。
【００５６】
ここでＤＭＡＣ２３の内部には比較器３３が備えられ、比較器３３はＦＩＦＯ２５から与えられるｆｉｆｏ−ｅｎｔｒｙの値がアッパーリミット３４以上となった時にＥＭＲＧ信号をアサートし、その後、ロワーリミット３５以下になった時点でＥＭＲＧ信号をディアサートする動作を実行する。ＤＭＡＣ２３以外のリクエスタ、すなわちＣＰＵ２２とセンドコマンドコントローラ２４によるデータの転送可能最大バースト長は３２サイクル分であるとする。アッパーリミット３４の値を例えば９６、ロワーリミット３５の値を６４とすると、ｆｉｆｏ−ｅｎｔｒｙの値が９６となった時点でＥＭＲＧ信号がアサートされ、６４となった時点でディアサートされる。
【００５７】
ＤＭＡＣ２３以外のリクエスタのデータ転送最大バースト長が３２サイクル分であるため、ＥＭＲＧ信号がアサートされてから次のアービトレーションの時点まで最大３２サイクルかかることになる。すなわちＥＭＲＧ信号がアサートされてから３２サイクル以内にＤＭＡＣ２３へのＧＮＴ信号がアサートされ、ｆｉｆｏ−ｅｎｔｒｙの値が４８になるまでＤＭＡＣ２３はＦＩＦＯ２５からのデータの読出しを続けるため、ＦＩＦＯ２５に対するデータの書込みクロックと読出しクロックが同一である場合には、ＦＩＦＯ２５内のデータのオーバフローは防止される。
【００５８】
（付記１）  複数のデータ転送要求を調停し、該調停結果に対応して１本のデータ転送路によるデータ転送を行うデータ転送装置であって、
データの転送を要求する第１の転送要求手段と、
該第１の転送要求に対応するデータの転送時間よりも転送時間の短いデータの転送を要求する第２の転送要求手段と、
該第２の転送要求手段からのデータ転送要求が検出された時、該第２の転送要求手段からの転送要求を該第１の転送要求よりも優先させて、該第２の転送要求手段に前記１本のデータ転送路によるデータ転送を行わせる転送調停手段とを備えることを特徴とするデータ転送装置。
【００５９】
（付記２）  前記第１の転送要求手段が、データ転送要求が緊急のものであることを示す緊急信号を出力したとき、
前記転送調停手段が、該緊急信号の出力期間中は、該第１の転送要求に対して優先的に前記１本のデータ転送路によるデータ転送を行わせることを特徴とする付記１記載のデータ転送装置。
【００６０】
（付記３）  前記データ転送装置が、前記第１の転送要求手段が転送すべきデータを複数個格納するデータ格納手段をさらに備え、
該第１の転送要求手段が、該データ格納手段に格納されているデータの個数があらかじめ定められた範囲内にあるとき、前記緊急信号を出力することを特徴とする付記２記載のデータ転送装置。
【００６１】
（付記４）  前記第１の転送要求手段が、データ転送要求が緊急のものであることを示す緊急信号を出力したとき、
前記転送調停手段が、該第１の転送要求と第２の転送要求に対して公平な調停を行い、該調停結果に対応して前記１本のデータ転送路によるデータ転送を行わせることを特徴とする付記１記載のデータ転送装置。
【００６２】
（付記５）  前記転送調停手段が、前記公平な調停において、ラウンドロビン方式を用いることを特徴とする付記４記載のデータ転送装置。
（付記６）  前記データ転送装置が、前記第１の転送要求手段が転送すべきデータを複数個格納するデータ格納手段をさらに備え、
該第１の転送要求手段が、該データ格納手段に格納されているデータの個数があらかじめ定められた範囲内にあるとき、前記緊急信号を出力することを特徴とする付記４記載のデータ転送装置。
【００６３】
（付記７）  前記データ転送装置において、前記第１の転送要求に対応するデータの転送時間よりも転送時間の短いデータの転送を要求する第３の転送要求手段をさらに備え、
前記転送調停手段が、該第２の転送要求と第３の転送要求に対して公平な調停を行い、該調停結果に対応して前記１本のデータ転送路によるデータ転送を行わせ、該第２の転送要求と第３の転送要求によるデータ転送が終了した後に、前記第１の転送要求手段に１本のデータ転送路によるデータ転送を行わせることを特徴とする付記１記載のデータ転送装置。
【００６４】
（付記８）  前記転送調停手段が、前記公平な調停において、ラウンドロビン方式を用いることを特徴とする付記７記載のデータ転送装置。
（付記９）  複数のデータ転送要求を調停し、該調停結果に対応して１本のデータ転送路によるデータ転送を行わせる計算機によって使用されるプログラムであって、
第１の転送要求に対応するデータの転送時間よりも短い転送時間のデータの転送を要求する第２のデータ転送要求を検出する手順と、
該第２のデータ転送要求が検出された時、該第２のデータ転送要求を第１のデータ転送要求よりも優先させて、該第２のデータ転送要求に対応して前記１本のデータ転送路を用いたデータ転送を行わせる手順を計算機に実行させるためのデータ転送制御プログラム。
【００６５】
（付記１０）  計算機が複数のデータ転送要求を調停し、該調停結果に対応して１本のデータ転送路によるデータ転送を制御する方法であって、
第１の転送要求に対応するデータの転送時間よりも短い転送時間のデータの転送を要求する第２のデータ転送要求を検出し、
該第２のデータ転送要求が検出された時、該第２のデータ転送要求を第１のデータ転送要求よりも優先させて、該第２のデータ転送要求に対応して前記１本のデータ転送路を用いたデータ転送を行わせることを特徴とするデータ転送制御方法。
【産業上の利用可能性】
【００６６】
本発明は、複数のデータの転送要求のいずれかに１本のデータ転送路によるデータ転送を行わせるデータ転送方式を用いる装置や、そのようなシステムを利用する全ての産業において利用可能である。
【図面の簡単な説明】
【００６７】
【図１】本発明のデータ転送装置の原理構成ブロック図である。
【図２】本実施形態におけるデータ転送装置の基本構成を示すブロック図である。
【図３】図２におけるバスアービトレーションの具体例のタイムチャートである。
【図４】ＥＭＲＧ信号アサート時のバスアービトレーションの具体例のタイムチャートである。
【図５】バスアービタの構成例を示す図である。
【図６】バスアービトレーション処理（その１）のフローチャートである。
【図７】バスアービトレーション処理（その２）のフローチャートである。
【図８】バスアービトレーション処理（その３）のフローチャートである。
【図９】ネットワーク送信パケットの生成・送出回路の構成例を示す図である。
【図１０】図９におけるデータ転送例（その１）のタイムチャートである。
【図１１】図９におけるデータ転送例（その２）のタイムチャートである。
【図１２】図９におけるアドレス判定による転送データの格納方法の説明図である。
【図１３】ＤＭＡコントローラの処理フローチャートである。
【図１４】ＤＭＡコントローラからのＥＭＲＧ信号出力方式の説明図である。
【符号の説明】
【００６８】
１、１０  データ転送装置
２  第１の転送要求手段
３  第２の転送要求手段
４  転送調停手段
１１、２０  バス
１２、１３、１４  リクエスタ
１５  バッファ
１６、２１  バスアービタ
１７  アービタ
１８  ＮＯＲゲート
２２  ＣＰＵ
２３  ＤＭＡコントローラ
２４  センドコマンドコントローラ
２５  ＦＩＦＯ
２６  ＰＣＩ−Ｘコントローラ
２７  ＰＣＩ−Ｘバス
２８  パケットストアーＲＡＭ
２９  パケットセンドコントローラ
３０  アドレス判定器
３３  比較器
３４  アッパーリミット
３５  ロワーリミット
【図１】
0004778199.tif 000002
【図２】
0004778199.tif 000003
【図３】
0004778199.tif 000004
【図４】
0004778199.tif 000005
【図５】
0004778199.tif 000006
【図６】
0004778199.tif 000007
【図７】
0004778199.tif 000008
【図８】
0004778199.tif 000009
【図９】
0004778199.tif 000010
【図１０】
0004778199.tif 000011
【図１１】
0004778199.tif 000012
【図１２】
0004778199.tif 000013
【図１３】
0004778199.tif 000014
【図１４】
0004778199.tif 000015