JP2009015566A - データ転送装置 - Google Patents
データ転送装置 Download PDFInfo
- Publication number
- JP2009015566A JP2009015566A JP2007176186A JP2007176186A JP2009015566A JP 2009015566 A JP2009015566 A JP 2009015566A JP 2007176186 A JP2007176186 A JP 2007176186A JP 2007176186 A JP2007176186 A JP 2007176186A JP 2009015566 A JP2009015566 A JP 2009015566A
- Authority
- JP
- Japan
- Prior art keywords
- data
- data transfer
- signal
- buffer
- transfer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
Abstract
【課題】小刻みなデータ転送の多発を防止して、データ転送効率を改善できるデータ転送装置を提供する。
【解決手段】データ転送装置(1000)において、転送先デバイス(12)は転送元デバイス(11)にデータ(D)とアドレス(A)が多重されたバス(200)で接続され、メモリ(13)は転送先デバイス(12)に接続されて転送元デバイス(11)から転送されたデータ(AD)を格納し、転送元デバイス(11)は、転送先デバイス(12)のデータ受信状況に応じてメモリ(13)対するデータ(AD)の転送を制御する。
【選択図】図1
【解決手段】データ転送装置(1000)において、転送先デバイス(12)は転送元デバイス(11)にデータ(D)とアドレス(A)が多重されたバス(200)で接続され、メモリ(13)は転送先デバイス(12)に接続されて転送元デバイス(11)から転送されたデータ(AD)を格納し、転送元デバイス(11)は、転送先デバイス(12)のデータ受信状況に応じてメモリ(13)対するデータ(AD)の転送を制御する。
【選択図】図1
Description
本発明は、デバイス間でデータを転送するデータ転送装置に関する。
データバッファを介してデータ転送を行うデータ通信装置としては、データバッファがフルの場合はデータ転送元に対してデータバッファへの書き込み待ち信号をアサ―トしてデータ転送を待機させ、データバッファがフルでなくなると書き込み待ち信号をネゲートしてデータ転送を再開する技術(特許文献1)が提案されている。
特開平03−156560号公報
上述の技術においては、データバッファがフルか否かに基づいて、データ転送が制御される。しかしながら、PCIバスのようなデータとアドレスが多重されたプロトコルをもつデータ通信において、データバッファからのデータ読み出しをDMAで行う場合には、以下に述べる問題が発生する。
具体的には、データバッファ内に複数のアドレスが格納された状態(PCIバス上で転送数の少ないバースト転送が多発)に陥ると、データバッファ内にDMA転送コマンドが滞留し(アドレス1個に対しDMAコマンドが1回発生)、データ転送効率が落ちる。特にリアルタイムデータ転送においては、DMA1回あたりの転送時間はデータ転送数に関わらず一定である。それゆえに、上記状態に陥るとデータバッファからのデータ読み出し効率が悪くなり、リアルタイム転送ができなくなる。
また、デジタル機器のシステムLSIは、高機能化により複数機能でシェアリングして使用される。そのため、デジタル機器のシステムLSI用メモリとのデータ転送においては、データ転送許可信号の待ち時間が増える。さらに、外部デバイスとデジタル機器のシステムLSIとの間でのデータ転送も高速化しており、受信バッファがフルになるケースが増大している。そのために、受信バッファフルによるデータ転送制御だけでは、結果小刻みなデータ転送が多発し、データ転送効率が悪化する場合がある。
上述の問題に鑑みて、本発明は小刻みなデータ転送の多発を防止して、データ転送効率を改善できるデータ転送装置を提供することを目的とする。
上記の課題を解決するために本発明は、
第1のデバイスと、
前記第1のデバイスにデータとアドレスが多重されたバスで接続される第2のデバイスと、
前記第2のデバイスに接続されて前記第1のデバイスから転送されたデータを格納するメモリと備えるデータ転送装置であって、
前記第1のデバイスは、前記第2のデバイスのデータ受信状況に応じて前記メモリ対する前記データの転送を制御することを特徴とする。
第1のデバイスと、
前記第1のデバイスにデータとアドレスが多重されたバスで接続される第2のデバイスと、
前記第2のデバイスに接続されて前記第1のデバイスから転送されたデータを格納するメモリと備えるデータ転送装置であって、
前記第1のデバイスは、前記第2のデバイスのデータ受信状況に応じて前記メモリ対する前記データの転送を制御することを特徴とする。
前記第2のデバイスは、
前記第1のデバイスとの間の信号交換を制御するデバイスインターフェースと、
前記デバイスインターフェースと前記メモリに接続されて、前記第1のデバイスから当該メモリへのデータ転送を制御するメモリインターフェースと、
前記第1のデバイスからのデータ転送終了割込信号に基づいて、データ転送の終了を認識する制御用CPUとを備えることが望ましい。
前記第1のデバイスとの間の信号交換を制御するデバイスインターフェースと、
前記デバイスインターフェースと前記メモリに接続されて、前記第1のデバイスから当該メモリへのデータ転送を制御するメモリインターフェースと、
前記第1のデバイスからのデータ転送終了割込信号に基づいて、データ転送の終了を認識する制御用CPUとを備えることが望ましい。
前記デバイスインターフェースは、
前記バスとの信号交換を制御するバスインターフェースと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレス/データ多重信号をバッファリングする受信バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレスもしくはコマンドを抽出した第1の抽出信号をバッファリングすると共に、前記受信バッファでバッファリングされたアドレスもしくはコマンドを抽出した第2の抽出信号を出力する制御バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるコマンド/バイトイネーブル多重信号をバッファリングするCMD/BE#バッファと、
前記受信バッファに接続されて、当該受信バッファから出力される前記アドレス/データ多重信号からアドレスとデータを分離するAD分離回路と、
前記CMD/BE#バッファに接続されて、当該CMD/BE#バッファから出力されるコマンド/バイトイネーブル多重信号よりコマンドとバイトイネーブルとを分離するCMD/BE#分離回路と、
前記AD分離回路に接続されて、当該AD分離回路から出力される前記データをバッファリングするDMA用バッファと、
前記AD分離回路から出力されるアドレスと、前記CMD/BE#分離回路から出力されるコマンドおよびバイトイネーブル信号が入力されると共に、前記メモリへのデータ転送を制御するメモリインターフェース制御回路と、
前記コマンドと、前記第1の抽出信号と、前記第2の抽出信号と、前記CMD/BE#バッファでバッファリングされたコマンドと、前記制御用CPUによって設定される閾値とに基づいて、前記受信バッファのデータプロトコルを解析する受信バッファデータプロトコル解析回路とを備えることが望ましい。
前記バスとの信号交換を制御するバスインターフェースと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレス/データ多重信号をバッファリングする受信バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレスもしくはコマンドを抽出した第1の抽出信号をバッファリングすると共に、前記受信バッファでバッファリングされたアドレスもしくはコマンドを抽出した第2の抽出信号を出力する制御バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるコマンド/バイトイネーブル多重信号をバッファリングするCMD/BE#バッファと、
前記受信バッファに接続されて、当該受信バッファから出力される前記アドレス/データ多重信号からアドレスとデータを分離するAD分離回路と、
前記CMD/BE#バッファに接続されて、当該CMD/BE#バッファから出力されるコマンド/バイトイネーブル多重信号よりコマンドとバイトイネーブルとを分離するCMD/BE#分離回路と、
前記AD分離回路に接続されて、当該AD分離回路から出力される前記データをバッファリングするDMA用バッファと、
前記AD分離回路から出力されるアドレスと、前記CMD/BE#分離回路から出力されるコマンドおよびバイトイネーブル信号が入力されると共に、前記メモリへのデータ転送を制御するメモリインターフェース制御回路と、
前記コマンドと、前記第1の抽出信号と、前記第2の抽出信号と、前記CMD/BE#バッファでバッファリングされたコマンドと、前記制御用CPUによって設定される閾値とに基づいて、前記受信バッファのデータプロトコルを解析する受信バッファデータプロトコル解析回路とを備えることが望ましい。
前記受信バッファデータプロトコル解析回路は、
前記第1の抽出信号に基づいて転送されてくるアドレスの数をカウントし、
前記第2の抽出信号に基づいてアドレスの数をカウントし、
前記2つのカウント値の差分を算出して前記受信バッファに滞留されているアドレス数もしくはコマンド数を抽出し、
前記制御用CPUによって設定される閾値レジスタの閾値と前記アドレス数もしくはコマンド数との大小関係を算出し、
前記閾値が、前記アドレス数もしくはコマンド数より大きく、さらに前記受信バッファがバッファフルでない場合にのみ前記第1のデバイスからのデータ転送を許可する信号を出力することを特徴とすることが望ましい。
前記第1の抽出信号に基づいて転送されてくるアドレスの数をカウントし、
前記第2の抽出信号に基づいてアドレスの数をカウントし、
前記2つのカウント値の差分を算出して前記受信バッファに滞留されているアドレス数もしくはコマンド数を抽出し、
前記制御用CPUによって設定される閾値レジスタの閾値と前記アドレス数もしくはコマンド数との大小関係を算出し、
前記閾値が、前記アドレス数もしくはコマンド数より大きく、さらに前記受信バッファがバッファフルでない場合にのみ前記第1のデバイスからのデータ転送を許可する信号を出力することを特徴とすることが望ましい。
前記デバイスインターフェースは、前記バスよりアドレスが転送されてくることをトリガとして、DMAを起動して前記受信バッファから前記DMA用バッファまでデータ転送を行うことを特徴とすることが望ましい。
前記バスはPCIバスであることを特徴とすることが望ましい。
前記第1のデバイスからのデータ転送を許可する信号は、PCIバスのTRDY#信号を使用することが望ましい。
本発明では、データとアドレスが多重されたプロトコルをもつデータ通信において、今後のシステムLSIの大規模多機能化やデバイス間のデータ転送速度がアップした場合においても、データ転送性能劣化の改善可能である。
以下に、図1、図2、図3、図4、図5、図6、図7、および図8を参照して、本発明の実施の形態にかかるデータ転送装置について説明する。図1に示すように、データ転送装置1000は、データ転送元であるデバイス(以降、「転送元デバイス」)11、データ転送先であるデバイス(以降、「転送先デバイス」)12、およびメモリ13を含む。
転送先デバイス12は、デバイスインターフェース(図1においては、「デバイスI/F」と表示)121、メモリインターフェース(図1においては、「メモリI/F」と表示)122、およびCPU123を含む。デバイスインターフェース121は、PCIバス200によって転送元デバイス11に接続されて、転送元デバイス11と転送先デバイス12との間の信号交換を制御する。なお、デバイスインターフェース121は、第1のメモリインターフェースバス201を介してメモリインターフェース122と信号を交換する。メモリインターフェース122は、メモリバス204によってメモリ13に接続されて、メモリ13と転送先デバイス12との間の信号交換を制御する。
CPU123は、CPUバス202によってデバイスインターフェース121およびメモリインターフェース122と接続される。CPU123はさらに第2のメモリインターフェースバス203によってメモリインターフェース122と接続されて、転送先デバイス12の制御を行う。
転送元デバイス11から転送先デバイス12に転送されるデータは、PCIバス200を介して、デバイスインターフェース121に入力される。そして、デバイスインターフェース121は、転送元デバイス11から入力されたデータをメモリ13に転送するために、転送元デバイス11から入力されるPCIバスプロトコル信号を第1のメモリインターフェースバス信号S201に変換する。第1のメモリインターフェースバス信号S201は、第1のメモリインターフェースバス201を介してメモリインターフェース122に入力される。
CPU123は、CPUバス202を介してデバイスインターフェース121(転送元デバイス11)から入力されるPCIバスプロトコル信号を第2のメモリインターフェースバス信号S203に変換する。第2のメモリインターフェースバス信号S203は、第2のメモリインターフェースバス203を介してメモリインターフェース122に入力される。
メモリインターフェース122は、デバイスインターフェース121およびCPU123のそれぞれから入力される第1のメモリインターフェースバス信号S201および第2のメモリインターフェースバス信号S203に基づいて、メモリバス204をメモリ13のインターフェースプロトコルに適合させて、転送元デバイス11から転送されたデータをメモリ13に転送する。
転送元デバイス11からの転送先デバイス12に対するデータ転送(送出)が終了した際に、転送元デバイス11は転送先デバイス12に対して転送終了割込信号SIeを出力する。転送先デバイス12から出力された転送終了割込信号SIeは、デバイスインターフェース121を介してCPU123に入力される。
CPU123においては、転送終了割込信号SIeに基づいて、転送元デバイス11から転送先デバイス12へのデータ転送の終了が認識される。そして、CPU123は、転送元デバイス11から入力された転送終了割込信号SIeをクリアする。なお、転送元デバイス11による転送終了割込クリアは、CPUバス202、デバイスインターフェース121、およびPCIバス200を経由して行われる。
次に、図2および図3を参照して、デバイスインターフェース121について説明する。デバイスインターフェース121は、PCIバスインターフェース回路(図では、「PCIバスI/F」と表示)21、受信バッファ22、制御バッファ23、CMD/BE#バッファ24、AD分離回路25、CMD/BE#分離回路26、DMA用バッファ27、メモリインターフェース制御回路28(図では、「メモリI/F制御回路」と表示)、受信バッファデータプロトコル解析回路29、および閾値レジスタ30を含む。
PCIバスインターフェース回路21は、PCIバス200に対するインターフェースである。受信バッファ22は、PCIバスインターフェース回路21のアドレス/データ多重信号ADをバッファリングする。制御バッファ23は、PCIバスインターフェース回路21から出力されるACフェーズ信号ACとENDフェーズ信号ENDのバッファリングを制御する。なお、ACフェーズ信号ACは、PCIバス200のアドレス/データ多重部のアドレス情報の部分とCMD/BE#多重部のコマンドを示すものである。
CMD/BE#バッファ24は、PCIバスインターフェース回路21から出力されるコマンド/バイトイネーブル多重信号C/BEをバッファリングする。AD分離回路25は、受信バッファ22から出力されるアドレス/データ多重信号ADをアドレス信号Aとデータ信号Dとに分離する。
CMD/BE#分離回路26は、CMD/BE#バッファ24から出力されるコマンド/バイトイネーブル多重信号C/BEをコマンド信号CMDとバイトイネーブル信号BE#とに分離する。DMA用バッファ27は、AD分離回路25から出力されるデータ信号Dをメモリインターフェース122に転送する際にバッファリングする。メモリインターフェース制御回路28はDMA制御信号を生成して、DMA用バッファ27のメモリインターフェース122に対する動作を制御する。
受信バッファデータプロトコル解析回路29は、コマンド信号CMDと、制御バッファ23に入力されるACフェーズ信号ACと、制御バッファ23から出力されるACフェーズD信号ACDと、CMD/BE#バッファ24でバッファリングされたコマンド信号CMDと、制御用CPU123によって設定される閾値レジスタの閾値THとに基づいて、受信バッファ(22)のデータプロトコルを解析する。
受信バッファデータプロトコル解析回路29は、転送元デバイス11からのPCIバス信号が受信バッファ22に入力される際のアドレスAの数と、受信バッファ22から読み出される際のアドレスAの数とに基づいて、転送元デバイス11からのデータ転送を許可する。具体的には、受信バッファデータプロトコル解析回路29は、PCIバスインターフェース回路21から出力されるACフェーズ信号ACに基づいて、アドレスAが受信バッファ22に入力される際に、そのアドレスの数(以降、入力アドレス数AC_Num)をカウントする。
さらに、受信バッファデータプロトコル解析回路29は、制御バッファ23から出力されるACフェーズD信号ACDに基づいて、受信バッファ22からアドレスAが読み出される際に、そのアドレス数(以降、出力アドレス数ACD_Num)をカウントする。
そして、受信バッファデータプロトコル解析回路29は、入力アドレス数AC_Numと出力アドレス数ACD_Numの差分を算出して前記受信バッファ22に滞留されているアドレス数もしくはコマンド数を抽出する。抽出されたアドレス数およびコマンド数を滞留アドレス数A_Numと総称する。受信バッファデータプロトコル解析回路29は、滞留アドレス数A_Numが閾値THより大きく、且つ受信バッファ22がバッファフルでない場合にのみ転送元デバイス11からのデータ転送を許可する転送許可信号SpをPCIバスインターフェース回路21に対して出力する。なお、転送許可信号Spは、PCIバスのTRDY#信号が使用される。
図3を参照して、PCIバスインターフェース回路21によるACフェーズ信号ACおよびENDフェーズ信号ENDの生成について説明する。同図に示す「CLK」、「REQ#」、「GNT#」、「FLAME#」、「IRDY#」、「TRDY#」、「DEVSEL#」、「AD」、および「C/BE#」はPCIバスの規格に準ずる信号であるので、詳しい説明は割愛する。
ACフェーズ信号ACは、PCIバス200のアドレス/データ多重信号ADとコマンド/バイトイネーブル多重信号C/BE#から、アドレスAとコマンドCMDのポジションを示す信号である。ACフェーズ信号ACは、FLAME#、IRDY#、TRDY#、DEVSEL#に基づいて生成される(FLAME#=“0”、IRDY#=“1”、TRDY#=“1”、DEVSEL#=“1”)。
ENDフェーズ信号ENDもACフェーズ信号ACと同様に、FLAME#、IRDY#、TRDY#、およびDEVSEL#に基づいて生成される(FLAME#、IRDY#、TRDY#、DEVSEL#の全ての信号が立ち上がったことを検出)。また、PCIバスインターフェース回路21におけるバッファ制御信号は、FLAME#=“0”、
IRDY#=“0”、TRDY#=“0”およびDEVSEL#=“0”で、それぞれの
バッファへの書き込みをアクティブにする。
IRDY#=“0”、TRDY#=“0”およびDEVSEL#=“0”で、それぞれの
バッファへの書き込みをアクティブにする。
メモリインターフェース制御回路28は、デバイスインターフェース121とメモリインターフェース122との間の信号交換を制御する。具体的には、メモリインターフェース制御回路28がメモリインターフェース122に対してデータ転送要求信号Rdを出力する。データ転送要求信号Rdに応答して、メモリインターフェース122はデータ転送許可信号PdがアクティブになればデータDを転送する。つまり、DMA用バッファ27に格納されたデータDがメモリインターフェース122に出力される。
なお、メモリインターフェース122に対して、メモリインターフェース制御回路28からアドレスA、コマンドCMD、バイトイネーブルENbが出力される。アドレスAはメモリ13のどの領域にアクセスするかを指示し、コマンドCMDはメモリ13にライトするかリードするかを指示し、バイトイネーブルENbはメモリ13にライトする際にバイト単位でのアクセスを指示する。よって、本実施の形態においては、転送元デバイス11からアドレスAが送付されてくることをトリガとして、メモリインターフェース122へのDMA転送が行われる。
次に、図4および図5を参照して、上述のデータ転送装置1000におけるデータ転送について説明する。図4において、縦軸は、データ転送装置1000の各構成要素から出力される信号を表しており、横軸は時間の経過を表している。同図においては、時間は左から右に向かって経過する。
具体的には、第1段目のADは、受信バッファ22からの出力されるアドレス/データ多重信号ADを表している。なお、11個の□はそれぞれ、アドレス/データ多重信号ADの内容を表している。なお、表現の都合上、11個の□の中に表示されている文字で、それぞれを識別するものとする。つまり、2つの「A」はアドレス信号Aを表しており、「1」、「2」、「3」、「4」、「5」、「6」、「7」、および「8」はデータ信号Dを表している。これらの8つのデータを、データ信号D1、D2、D3、D4、D5、D6、D7、およびD8と識別する。また、「E」はデータ終了転送フラグEを表している。
時間的に最初のアドレス信号Aは、データD1〜D8のデータ転送開始のためのトリガとして転送元デバイス11から入力されたものである。後のアドレス信号Aは、データ終了転送フラグEのデータ転送開始のためのトリガとして転送元デバイス11から入力されたものである。
第2段目は、受信バッファ22から出力されるアドレス/データ多重信号ADを表している。この段に表されている2つのアドレス信号Aおよびデータ信号D1〜D8は、上述した第1段に表されている2つのアドレス信号Aおよびデータ信号D1〜D8にそれぞれ対応している。
第3段目は、受信AD分離回路25から出力されるデータ信号Dを表している。第4段目は、AD分離回路25から出力されるアドレス信号Aを表している。第5段目は、CMD/BE#分離回路26から出力されるコマンド信号CMD(なお、紙面の都合上、図においてはCと表示)を表している。第6段目はDMA用バッファ27に入力されるデータ信号Dを表している。
第7段目はデータ転送要求信号Rdを表し、第8段目はデータ転送許可信号Pdを表している。第9段目はDMA用バッファ27からの出力を表し、第10段目はメモリデータ入力を表している。
上述の図4においては、転送元デバイス11からアドレスAとデータD(1、2、3、4、5、6、7、8)が転送先デバイス12に転送されてきた場合の動作が表されている。転送元デバイス11は、データ転送終了後に、データ転送終了フラグをメモリ13の予め設定された所定のアドレスに書き込む。そして、転送先デバイス12のCPU123は、メモリ13の所定のアドレスにデータ転送終了フラグが書き込まれていることを確認することで、転送元デバイス11からメモリ13へのデータ転送が終了したことを確認する。
図4において、転送元デバイス11からはアドレスAとデータD1〜D8が転送された後に、データ終了転送フラグEが予め決められたデータ転送終了フラグ書き込みアドレスに転送される。上述のように、転送元デバイス11からアドレスAが送られてくることをトリガに、DMA転送が起動される。図4では、データD1〜D8とデータE(データ終了転送フラグE)の2回のDMA転送が発生する(メモリインターフェース122に対して、データ転送要求信号Rdが2回発生する)。
次に、図5を参照して、データ転送装置1000によるデータ転送動作について説明する。データ転送装置1000が起動すると、先ず、ステップS21において、制御バッファ23から出力されるACフェーズD信号ACDによって、DMA用バッファ27へのデータ転送が開始される。そして、制御は次のステップS22に進む。なお、ACフェーズD信号ACDは、ACフェーズ信号ACを制御バッファ23で遅延させたものである。
ステップS22において、データ転送の判断がなされる。具体的には、図3を参照して説明したように、FLAME#=TRADY#=TREADY#=DEVSEL#=0が成立しているか否かが判断される。成立している場合には、実際にデータが転送される。そして、制御は次のS23に進む。
ステップS23において、メモリ13に当該DMAのデータが全て転送されたか否かが判断される。具体的には、制御バッファ23からENDフェーズD信号ENDDとして“
1”が出力されることによって、DMA転送が完了する。そして、制御は次のステップS
24に進む。
1”が出力されることによって、DMA転送が完了する。そして、制御は次のステップS
24に進む。
一方、ENDフェーズD信号ENDDとして“0”が出力されている場合では、データ
の全てがまだ転送されてないので、制御はステップS22に戻り、FLAME#=TRADY#=TREADY#=DEVSEL#=0が成立しているか否かが再度判断される。成立している場合には、実際にデータが転送されて、制御は再度S23に進む。
の全てがまだ転送されてないので、制御はステップS22に戻り、FLAME#=TRADY#=TREADY#=DEVSEL#=0が成立しているか否かが再度判断される。成立している場合には、実際にデータが転送されて、制御は再度S23に進む。
なお、ENDフェーズD信号ENDDは、ENDフェーズ信号ENDを制御バッファ23で遅延させたものである。このように、DMA転送開始から、DMA転送終了までは、ソフトウェアの介在を必要としない。そして、制御は次のステップS24に進む。
ステップS24において、CPU123が転送終了割込信号SIeを認識したか否かが判断される。転送終了割込信号SIeが認識されると、Yesと判断されて、制御はステップS25に進む。このように、DMA転送は、CPU123が転送終了割込信号SIeを認識する(S24)まで行われる。つまり、現行のDMA転送が終了するまでは、次のDMA転送は開始しない。そして、CPU123が転送終了割込信号SIeを認識(S24)した時点で、CPU123で転送終了割込信号SIeがネゲートされる(ソフトウェア処理:S25)。
図6を参照して、転送元デバイスから小刻みなデータ転送が行われた場合のデータ転送の効率悪化について説明する。図6は上述の図4と同様に、転送元デバイス11からアドレスAとデータDが転送先デバイス12に転送されてきた場合に、受信バッファ22の格納データ数を8とし、受信バッファ22がフルかどうかでデータ転送を制御した場合の一例を示している。
図6においては、図4に受信バッファ状況を表すパラメータが追加されている。同パラメータのLowは受信バッファ22がフルで受信不可の状態にあることを示し、Highは受信バッファ22がフルではなく受信可能な状態にあることを示している。
先ず、1回目のデータ転送(アドレスAの後にデータ1、2、3、4、5、6、7が転送)が行われ、受信バッファ22がフルになり受信不可の状態になり、その後は受信バッファ22からデータがDMAバッファ27に転送されるごとに、受信バッファ22がフルでなくなり受信可能な状態になる。この際、転送元デバイス11から転送先デバイス12への転送はアドレス付でデータが転送されるので、少なくとも受信バッファが2個以上空きにならないと受信バッファ22は受信可能な状態に遷移しない。
受信バッファ22が受信可能な状態になると、次に受信バッファ22がフルになるまではデータ転送が行われる。本例においては、受信バッファ22のデータ格納数は最大8に設定されており、受信バッファ22に滞留する最大アドレス数は4となる。結果、受信バッファ22にアドレスAが4個滞留した場合には、図6に示すようにDMA転送は1つのデータに対して1回のDMA転送が行われることになり、データ転送効率が悪い。
図7を参照して、上述の受信バッファがフルか否かの判断に加え、受信データバッファのプロトコルの解析結果に基づいて、閾値を2とした場合のデータ転送について説明する。本例においては、受信バッファ22に滞留するアドレス数が2になると、受信バッファ22への転送が禁止され、受信バッファ22に滞留するアドレス数が1に減った時点で、転送が許可される。つまり、3個のデータに対して1回のDMAが行われるので、図6に示した例に比べて、データ数当たりのDMA転送率が1/3になり、データ転送効率が改善されていることがわかる。
以下に、図8を参照して、図7で説明した受信バッファがフルかどうかに加え、受信データバッファのプロトコルを解析した転送制御方法に関して説明する。
先ず、ステップS31において、パラメータの初期化がされる。つまり、ACフェーズ信号ACのカウンタAC_Num(入力アドレス数AC_Num)、ACフェーズD信号ACDのカウンタACD_Num(出力アドレス数ACD_Num)、および受信バッファ22に滞留するアドレス信号AのカウンタA_Num(滞留アドレス数A_Num)がそれぞれ0にセットされる。そして、制御はステップS32およびステップS34に進む。
先ず、ステップS31において、パラメータの初期化がされる。つまり、ACフェーズ信号ACのカウンタAC_Num(入力アドレス数AC_Num)、ACフェーズD信号ACDのカウンタACD_Num(出力アドレス数ACD_Num)、および受信バッファ22に滞留するアドレス信号AのカウンタA_Num(滞留アドレス数A_Num)がそれぞれ0にセットされる。そして、制御はステップS32およびステップS34に進む。
ステップS32において、ACフェーズ信号ACが1(High)であるか否かが判断される。Yesの場合にのみ制御は次のステップS33に進む。
ステップS33において、カウンタAC_Numが1だけインクリメントされる。そしにて、制御は次のステップS36に進む。
ステップS33において、カウンタAC_Numが1だけインクリメントされる。そしにて、制御は次のステップS36に進む。
ステップS34において、ACフェーズD信号ACDが1(High)であるか否かが判断される。Yesの場合にのみ制御は次のステップS35に進む。
ステップS35において、カウンタACD_Numが1だけインクリメントされる。そして、制御は次のステップS36に進む。
ステップS35において、カウンタACD_Numが1だけインクリメントされる。そして、制御は次のステップS36に進む。
ステップS36において、受信バッファ22に滞留するアドレス数が算出される。アドレス数(カウンタA_Num)は、ステップS33で求められたカウンタAC_Numから、ステップS35で求められたカウンタACD_Numを減算することによって求められる。そして、制御は次のステップS37に進む。
ステップS37において、カウンタA_Numと閾値レジスタ30に格納された値とを比較する。カウンタA_Numが閾値レジスタに格納されている閾値TH以下の場合は、制御はステップS38に進む。カウンタA_Numが閾値レジスタの値より大きい場合、制御はステップS39に進む。
ステップS38において、受信バッファ22がフルであるか否かが判断される。フルの場合、制御はステップS39に進む。受信バッファ22がフルでない場合に、制御はステップS40に進む。
ステップS39においては、転送元デバイス11から受信バッファ22へのデータ転送が禁止される。そして、制御はステップS32およびステップS34に戻る。
ステップS40においては、転送元デバイス11から受信バッファ22へのデータ転送が許可される。そして、制御はステップS32およびステップS34に戻る。
なお、転送元デバイス11からのデータ転送の許可/禁止は、PCIバスのTRDY#を加工して行われる。具体的には、元のTRDY#(加工前)が“Low”の時に、転送
元デバイス11からのデータ転送が許可される場合は、TRDY#は“Low”に設定さ
れる。その他のケースでは、TRDY#は“High”に設定される。
元デバイス11からのデータ転送が許可される場合は、TRDY#は“Low”に設定さ
れる。その他のケースでは、TRDY#は“High”に設定される。
さらに、リアルタイム転送を想定した場合には、DMAのデータ転送要求に対する、DMAのデータ転送許可が、一定の時間間隔で発生するので、小刻みなデータ転送が発生しない方がリアルタイム転送においては有効になる。つまり、本発明にかかるデータ転送装置は小刻みなデータ転送の多発を防止して、データ転送効率を改善できる。
さらに、本発明にかかるデータ転送装置は、PCIバスのようなデータとアドレスが多重されたプロトコルをもつデータ通信において、今後のシステムLSIの大規模多機能化やデバイス間のデータ転送速度がアップした場合においても、データ転送性能劣化を改善可能であり、更にリアルタイム転送に有効である。なお、上述の実施の形態においては、PCIバスでデバイス間の接続を行っているが、データとアドレスが多重されたバスであれば本発明は有用に適応できる。
本発明は、デジタル機器における、デジタル放送機器のシステムLSIとUSBやEtherなどのデバイス間でのデータ転送システム等に応用することができる。
11 転送元デバイス
12 転送先デバイス
121 デバイスインターフェース
122 メモリインターフェース
123 CPU
13 メモリ
21 PCIバスインターフェース回路
22 受信バッファ
23 制御バッファ
24 CMD/BE#バッファ
25 AD分離回路
26 CMD/BE#分離回路
27 DMA用バッファ
28 メモリインターフェース制御回路
29 受信バッファデータプロトコル解析回路
30 閾値レジスタ
1000 データ転送装置
12 転送先デバイス
121 デバイスインターフェース
122 メモリインターフェース
123 CPU
13 メモリ
21 PCIバスインターフェース回路
22 受信バッファ
23 制御バッファ
24 CMD/BE#バッファ
25 AD分離回路
26 CMD/BE#分離回路
27 DMA用バッファ
28 メモリインターフェース制御回路
29 受信バッファデータプロトコル解析回路
30 閾値レジスタ
1000 データ転送装置
Claims (7)
- 第1のデバイスと、
前記第1のデバイスにデータとアドレスが多重されたバスで接続される第2のデバイスと、
前記第2のデバイスに接続されて前記第1のデバイスから転送されたデータを格納するメモリと備えるデータ転送装置であって、
前記第1のデバイスは、前記第2のデバイスのデータ受信状況に応じて前記メモリ対する前記データの転送を制御することを特徴とするデータ転送装置。 - 前記第2のデバイスは、
前記第1のデバイスとの間の信号交換を制御するデバイスインターフェースと、
前記デバイスインターフェースと前記メモリに接続されて、前記第1のデバイスから当該メモリへのデータ転送を制御するメモリインターフェースと、
前記第1のデバイスからのデータ転送終了割込信号に基づいて、データ転送の終了を認識する制御用CPUとを備える請求項1に記載のデータ転送装置。 - 前記デバイスインターフェースは、
前記バスとの信号交換を制御するバスインターフェースと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレス/データ多重信号をバッファリングする受信バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるアドレスもしくはコマンドを抽出した第1の抽出信号をバッファリングすると共に、前記受信バッファでバッファリングされたアドレスもしくはコマンドを抽出した第2の抽出信号を出力する制御バッファと、
前記バスインターフェースに接続されて、前記バスから出力されるコマンド/バイトイネーブル多重信号をバッファリングするCMD/BE#バッファと、
前記受信バッファに接続されて、当該受信バッファから出力される前記アドレス/データ多重信号からアドレスとデータを分離するAD分離回路と、
前記CMD/BE#バッファに接続されて、当該CMD/BE#バッファから出力されるコマンド/バイトイネーブル多重信号よりコマンドとバイトイネーブルとを分離するCMD/BE#分離回路と、
前記AD分離回路に接続されて、当該AD分離回路から出力される前記データをバッファリングするDMA用バッファと、
前記AD分離回路から出力されるアドレスと、前記CMD/BE#分離回路から出力されるコマンドおよびバイトイネーブル信号が入力されると共に、前記メモリへのデータ転送を制御するメモリインターフェース制御回路と、
前記コマンドと、前記第1の抽出信号と、前記第2の抽出信号と、前記CMD/BE#バッファでバッファリングされたコマンドと、前記制御用CPUによって設定される閾値とに基づいて、前記受信バッファのデータプロトコルを解析する受信バッファデータプロトコル解析回路とを備える請求項2に記載のデータ転送装置。 - 前記受信バッファデータプロトコル解析回路は、
前記第1の抽出信号に基づいて転送されてくるアドレスの数をカウントし、
前記第2の抽出信号に基づいてアドレスの数をカウントし、
前記2つのカウント値の差分を算出して前記受信バッファに滞留されているアドレス数もしくはコマンド数を抽出し、
前記制御用CPUによって設定される閾値レジスタの閾値と前記アドレス数もしくはコマンド数との大小関係を算出し、
前記閾値が、前記アドレス数もしくはコマンド数より大きく、さらに前記受信バッファがバッファフルでない場合にのみ前記第1のデバイスからのデータ転送を許可する信号を出力することを特徴とする請求項3に記載のデータ転送装置。 - 前記デバイスインターフェースは、前記バスよりアドレスが転送されてくることをトリガとして、DMAを起動して前記受信バッファから前記DMA用バッファまでデータ転送を行うことを特徴とする請求項4に記載のデータ転送装置。
- 前記バスはPCIバスであることを特徴とする請求項1に記載のデータ転送装置。
- 前記第1のデバイスからのデータ転送を許可する信号は、PCIバスのTRDY#信号を使用することを特徴とする請求項4に記載のデータ転送装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007176186A JP2009015566A (ja) | 2007-07-04 | 2007-07-04 | データ転送装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007176186A JP2009015566A (ja) | 2007-07-04 | 2007-07-04 | データ転送装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009015566A true JP2009015566A (ja) | 2009-01-22 |
Family
ID=40356397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007176186A Pending JP2009015566A (ja) | 2007-07-04 | 2007-07-04 | データ転送装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009015566A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016525237A (ja) * | 2013-07-26 | 2016-08-22 | インテル・コーポレーション | 不揮発性メモリインターフェース |
-
2007
- 2007-07-04 JP JP2007176186A patent/JP2009015566A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016525237A (ja) * | 2013-07-26 | 2016-08-22 | インテル・コーポレーション | 不揮発性メモリインターフェース |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7882296B2 (en) | Deadlock avoidance in a bus fabric | |
US8041856B2 (en) | Skip based control logic for first in first out buffer | |
US8578071B2 (en) | Information processing apparatus and inter-processor communication control method | |
US20240020246A1 (en) | Method for Generating Information Based on FIFO Memory and Apparatus, Device and Medium | |
US8312078B2 (en) | Data transfer system and data transfer method | |
JP2006113689A (ja) | バスブリッジ装置およびデータ転送方法 | |
US20010021951A1 (en) | ATAPI command receiving method | |
US20130166805A1 (en) | Interrupt cause management device and interrupt processing system | |
JP2010211322A (ja) | ネットワークプロセッサ、受信コントローラ、及びデータ受信処理方法 | |
KR20110134465A (ko) | 데이터 전송 시스템 및 그 데이터 판독 방법 | |
JP2009015566A (ja) | データ転送装置 | |
US8473665B2 (en) | Universal serial bus (USB) transaction translator and a universal serial bus (USB) isochronous-in transaction method | |
US20220164300A1 (en) | Head of line entry processing in a buffer memory device | |
JP2008217507A (ja) | データ転送装置 | |
KR100633120B1 (ko) | 저장 매체의 데이터 대역폭 향상 방법 및 이를 위한 장치 | |
CN113127399B (zh) | 一种通用串列汇流排装置以及存取方法 | |
US9134946B2 (en) | Electronic apparatus and method for data transmission from an electronic apparatus to a display device | |
KR100460994B1 (ko) | 직접 메모리 액세스 기능을 구비한 광대역 입출력 장치 및그 방법 | |
JP2005301714A (ja) | マルチcpuシステム、そのデータ転送方法、及びそのプログラム | |
Martinez et al. | USB latency requirements and the effect of video adapter PCI retry condition on maintaining USB streaming pipelines | |
JP2021074974A (ja) | 画像形成装置および画像形成装置の制御方法 | |
KR100825663B1 (ko) | 시스템 버스를 점유하지 않는 디바이스/메모리 전용디엠에이 전송 방법 및 장치 | |
JP2020135574A (ja) | 集積回路 | |
JP2005128931A (ja) | Dma転送装置 | |
JP2016009347A (ja) | データ送信装置、データ受信装置及びデータ通信システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20081107 |