(57)【特許請求の範囲】
【請求項１】
外部バスから受信したデータの出力、又は入力されたデータの前記外部バスへの送信を行うデータ伝送装置であって、
プログラムに従って動作するシステム制御手段と、
前記外部バスとの間でデータの送信又は受信をする外部バスインターフェイスと、
ＤＲＡＭ（dynamic random access memory）と、
前記システム制御手段が読み書きを行う領域と、前記外部バスインターフェイスと前記ＤＲＡＭとの間で転送されるデータを格納し、格納した順に出力するＦＩＦＯ（first in, first out）領域とを有するＳＲＡＭ（static random access memory）と、
前記ＳＲＡＭが前記ＦＩＦＯ領域に格納したデータを格納した順に出力するように、前記ＳＲＡＭに読み書きをするためのポインタを管理するＦＩＦＯ周辺回路と、
前記外部バスインターフェイスと前記ＤＲＡＭと前記ＳＲＡＭとに接続されたＳＲＡＭ側路手段とを備え、
前記ＳＲＡＭ側路手段は、
前記ＳＲＡＭにアクセス可能な時には、前記ＦＩＦＯ領域との間でデータの送信又は受信を行い、前記ＳＲＡＭにアクセス不可能な時には、前記ＦＩＦＯ領域を介さずに前記外部バスインターフェイス又は前記ＤＲＡＭとの間でデータの送信又は受信を行うものである
データ伝送装置。
【請求項２】
請求項１に記載のデータ伝送装置において、
前記外部バスとは異なる外部バスとの間でデータの送信又は受信をする外部バスインターフェイスを更に備え、
前記ＳＲＡＭは、
前記各外部バスインターフェイスに対応し、対応する外部バスインターフェイスと前記ＤＲＡＭとの間で転送されるデータを入出力するためのポートを備えるものであり、
前記システム制御手段は、
前記ポートのいずれかを用いて前記ＳＲＡＭにデータを読み書きすることができるように構成されている
ことを特徴とするデータ伝送装置。
【請求項３】
請求項１に記載のデータ伝送装置において、
前記ＳＲＡＭは、
前記システム制御手段との間でデータを入出力するためのポートと、前記外部バスインターフェイスと前記ＤＲＡＭとの間で転送されるデータを入出力するためのポートとを備える
ことを特徴とするデータ伝送装置。
【請求項４】
請求項１に記載のデータ伝送装置において、
周波数が、当該データ伝送装置の基本クロックのＮ（Ｎは２以上の整数）倍であるクロックに基づいて動作するＳＲＡＭを有し、前記基本クロックに同期してデータを出力するＳＲＡＭ部を、前記ＳＲＡＭに代えて備える
ことを特徴とするデータ伝送装置。
【請求項５】
請求項１に記載のデータ伝送装置において、
前記ＦＩＦＯ周辺回路は、
前記ＦＩＦＯ領域の上限アドレス及び下限アドレス、並びに次に読み出されるデータのアドレスを示す読み出しポインタ及び次にデータが書き込まれるアドレスを示す書き込みポインタを格納するレジスタと、
前記ＦＩＦＯ領域から読み出しが行われた場合に、前記読み出しポインタを更新する手段と、
前記ＦＩＦＯ領域に書き込みが行われた場合に、前記書き込みポインタを更新する手段と、
前記ＦＩＦＯ領域が有効なデータを格納していない空の状態であることを判定する手段と、
前記ＦＩＦＯ領域が新たなデータを格納することができないフル状態であることを判定する手段とを備える
ことを特徴とするデータ伝送装置。
【請求項６】
請求項５に記載のデータ伝送装置において、
前記ＦＩＦＯ周辺回路は、
前記ＦＩＦＯ領域がフル状態であることを示すフラグを格納するレジスタを更に備える
ことを特徴とするデータ伝送装置。
【請求項７】
請求項１に記載のデータ伝送装置において、
データ受信時であって、前記ＦＩＦＯ領域が空のときにのみ、前記ＳＲＡＭ側路手段が格納したデータを、前記ＦＩＦＯ領域を経由することなく前記ＤＲＡＭに転送するように構成された
ことを特徴とするデータ伝送装置。
【請求項８】
請求項１に記載のデータ伝送装置において、
前記ＳＲＡＭ側路手段は、
前記ＤＲＡＭに送信すべきデータを保持して、前記ＤＲＡＭに転送する受信用ＳＲＡＭ側路手段と、
前記外部バスに送信すべきデータを格納して、前記外部バスインターフェイスに転送する送信用ＳＲＡＭ側路手段とを有する
ことを特徴とするデータ伝送装置。
【請求項９】
請求項１に記載のデータ伝送装置において、
前記ＳＲＡＭ側路手段は、
データ送信時には、前記外部バスから受信したデータに代えて、前記外部バスに送信すべきデータを格納して、前記外部バスインターフェイスに転送する双方向ＳＲＡＭ側路手段である
ことを特徴とするデータ伝送装置。
【請求項１０】
請求項１に記載のデータ伝送装置において、
前記ＳＲＡＭ側路手段は、
複数のワードを格納し、格納したデータを格納した順に出力するように構成されている
ことを特徴とするデータ伝送装置。
【請求項１１】
請求項１に記載のデータ伝送装置において、
前記ＤＲＡＭが出力したデータを、前記ＦＩＦＯ領域及び前記ＳＲＡＭ側路手段を経由することなく前記外部バスインターフェイスに転送する経路を更に有する
ことを特徴とするデータ伝送装置。
【請求項１２】
請求項１に記載のデータ伝送装置において、
前記外部インターフェイスが受信したデータがパケットのヘッダとデータ部とのいずれであるかを判定する受信用フィルタと、
前記受信用フィルタが、受信しているデータがヘッダであると判定した場合には、当該ヘッダを前記ＳＲＡＭの前記システム制御手段が読み書きを行う領域へ格納させるように転送パスを制御し、
前記受信用フィルタが、受信しているデータがデータ部であると判定した場合には、当該データ部を前記ＳＲＡＭのＦＩＦＯ領域に格納させてから前記ＤＲＡＭへ格納させるように転送パスを制御し、かつ、１つのパケットの転送が終了したか否かを判定する転送管理手段と、
前記転送管理手段が、１つのパケットの転送が終了したと判定したことを、前記システム制御手段に割り込みを行って通知する割り込み制御手段とを備える
ことを特徴とするデータ伝送装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ等と光ディスク装置等との間でバスを介してデータを伝送する際の制御を行うデータ伝送装置に関する。
【０００２】
【従来の技術】
ＩＥＥＥ１３９４やＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）、ＡＴＡＰＩ（ＡＴ  ａｔｔａｃｈｍｅｎｔ  ｐａｃｋｅｔ  ｉｎｔｅｒｆａｃｅ）、ＳＣＳＩ（ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ）、Ｂｌｕｅｔｏｏｔｈ等の標準バスの規格化がエレクトロニクス業界において続々と進行しつつある。これらの標準バスとの間のインターフェイスがＰＣ、ストレージデバイス、ディジタルＡＶ機器、携帯電話等の情報機器に普及することにより、多様な機器間の通信やデータ交換が促進され、容易になる。情報機器の機能の大部分はシステムＬＳＩによって実現されており、システムＬＳＩに標準バスとの間のインターフェイスを内蔵し、かつ、低コスト化、低電力化することが要望されている。
【０００３】
図３７は、従来のデータ伝送装置の構成の例を示すブロック図である。このデータ伝送装置は、標準バスインターフェイスを内蔵し、システムＬＳＩとして実現されている。図３７において、送受信ＦＩＦＯ（ｆｉｒｓｔ  ｉｎ，  ｆｉｒｓｔ  ｏｕｔ）バッファ（以下では、単にＦＩＦＯと称する）９２７は、データを格納する１ポートのＳＲＡＭと、ＦＩＦＯ内でデータが格納された領域のトップのアドレスを指し示すポインタ、及びボトムのアドレスを指し示すポインタを格納するレジスタとを備えている。ＦＩＦＯバッファの容量が小さい場合、フリップフロップで構成されたシフトレジスタとポインタを格納するレジスタとで実現することも可能である。ＦＩＦＯ９２７は、受信時及び送信時において、外部バスインターフェイス９１６とＤＲＡＭ９２１との間の転送速度差を吸収する緩衝メモリとして動作する。
【０００４】
ＤＭＡコントローラ（ＤＭＡＣ）９１１，９１２は、それぞれＤＭＡチャネル１（ＤＭＡｃｈ１）及びＤＭＡチャネル２（ＤＭＡｃｈ２）によるデータ転送を制御する。ＤＭＡｃｈ１により、外部バスインターフェイス９１６とＦＩＦＯ９２７との間でデータが転送される。ＤＭＡｃｈ２により、ＦＩＦＯ９２７とＤＲＡＭ９２１との間でデータが転送される。
【０００５】
外部バスＥＢからデータを受信する場合、受信されたデータは、ＤＭＡｃｈ１によってＦＩＦＯ９２７に転送され、更にＤＭＡｃｈ２によってＤＲＡＭ９２１に転送される。ＤＲＡＭ９２１にバッファリングされたデータは、後にホストＰＣやストレージ等の他の機器に転送される。外部バスＥＢへデータを送信する場合、送信すべきデータは、まずＤＲＡＭ９２１に格納される。その後、ＤＲＡＭ９２１から読み出されたデータは、ＤＭＡｃｈ２によってＦＩＦＯ９２７に転送され、更にＤＭＡｃｈ１によって外部バスインターフェイス９１６に転送され、外部バスＥＢへ送信される。
【０００６】
図３７のデータ伝送装置の動作を説明する。図３７のデータ伝送装置は、次のようなステップによって外部バスＥＢからデータを受信する。
【０００７】
［ステップ１］
外部バスインターフェイス９１６が、外部バスＥＢから送られて来たデータを受け取る。
【０００８】
［ステップ２］ＤＭＡｃｈ１によるＦＩＦＯ９２７への書き込み
ＦＩＦＯ９２７がフルでなければ、ＤＭＡｃｈ１により、外部バスインターフェイス９１６のワード単位のデータがＦＩＦＯ９２７に転送される。ＦＩＦＯ９２７がフルであれば、ＤＭＡｃｈ１はＦＩＦＯ９２７に空きができるまで転送を待つ。
【０００９】
［ステップ３］ＤＭＡｃｈ２によるＦＩＦＯ９２７からの読み出し
ＦＩＦＯ９２７が空でなければ、ＤＭＡｃｈ２によってＦＩＦＯ９２７からデータが読み出され、ＤＲＡＭ９２１に書きこまれる。ＦＩＦＯ９２７が空であれば、ＤＭＡｃｈ２はＦＩＦＯ９２７にデータが入るまで待つ。［終わり］。
【００１０】
また、図３７のデータ伝送装置は、次のようなステップによって外部バスＥＢにデータを送信する。
【００１１】
［ステップ１］ＤＭＡｃｈ２によるＦＩＦＯ９２７への書き込み
ＦＩＦＯ９２７がフルでなければ、ＤＭＡｃｈ２により、ＤＲＡＭ９２１から読み出されたワード単位のデータがＦＩＦＯ９２７に書き込まれる。ＦＩＦＯ９２７がフルであれば、ＤＭＡｃｈ２はＦＩＦＯ９２７に空きができるまで書き込みを待つ。
【００１２】
［ステップ２］ＤＭＡｃｈ１によるＦＩＦＯ９２７からの読み出し
ＦＩＦＯ９２７が空でなければ、ＤＭＡｃｈ１によってＦＩＦＯ９２７からデータが読み出され、外部バスインターフェイス９１６に転送される。ＦＩＦＯ９２７が空であれば、ＤＭＡｃｈ１はＦＩＦＯ９２７にデータが入るまで待つ。
【００１３】
［ステップ３］
外部バスインターフェイス９１６は、ＦＩＦＯ９２７から受け取ったデータを外部バスＥＢに送信し、そのデータは転送先に転送される。［終わり］。
【００１４】
このような従来のデータ伝送装置においては、ＤＲＡＭ９２１、ＣＰＵ９１３用のデータＲＡＭとしてのＳＲＡＭ９２２の他に、ＦＩＦＯ９２７が必要であった。
【００１５】
【発明が解決しようとする課題】
このように、従来のデータ伝送装置は、外部バスとデータ伝送装置内部の回路との間のデータ転送速度の差を緩衝するために、独立したＦＩＦＯバッファを必要としており、回路規模の増大につながっていた。
【００１６】
また、受信したパケットのヘッダをＣＰＵ等がファームウェアによって解析処理する場合には、受信して格納したパケットをＣＰＵ等がアクセスできるメモリにコピーする必要があり、データ転送速度の低下の原因となっていた。
【００１７】
本発明は、データ伝送装置の回路規模を削減して、コスト削減及び低消費電力化を図ることを目的とする。
【００１８】
また、本発明は、データ伝送装置のデータ転送速度を向上させることを目的とする。
【００１９】
【課題を解決するための手段】
前記課題を解決するため、請求項１の発明が講じた手段は、外部バスから受信したデータの出力、又は入力されたデータの前記外部バスへの送信を行うデータ伝送装置であって、プログラムに従って動作するシステム制御手段と、前記外部バスとの間でデータの送信又は受信をする外部バスインターフェイスと、ＤＲＡＭ（dynamic random access memory）と、前記システム制御手段が読み書きを行う領域と、前記外部バスインターフェイスと前記ＤＲＡＭとの間で転送されるデータを格納し、格納した順に出力するＦＩＦＯ（first in, first out）領域とを有するＳＲＡＭ（static random access memory）と、前記ＳＲＡＭが前記ＦＩＦＯ領域に格納したデータを格納した順に出力するように、前記ＳＲＡＭに読み書きをするためのポインタを管理するＦＩＦＯ周辺回路と、前記外部バスインターフェイスと前記ＤＲＡＭと前記ＳＲＡＭとに接続されたＳＲＡＭ側路手段とを備え、前記ＳＲＡＭ側路手段は、前記ＳＲＡＭにアクセス可能な時には、前記ＦＩＦＯ領域との間でデータの送信又は受信を行い、前記ＳＲＡＭにアクセス不可能な時には、前記ＦＩＦＯ領域を介さずに前記外部バスインターフェイス又は前記ＤＲＡＭとの間でデータの送信又は受信を行うものである。
【００２０】
請求項１の発明によると、ＳＲＡＭにＦＩＦＯ領域を設けるので、独立したＦＩＦＯバッファを備える必要がない。すなわち、ＳＲＡＭとＦＩＦＯバッファとを一体化することができるので、回路規模を削減することができる。また、ＳＲＡＭを検査すればＦＩＦＯ領域の検査も行われるので、製造後の品質保証のための検査が容易になる。
【００２１】
また、請求項２の発明は、請求項１に記載のデータ伝送装置において、前記外部バスとは異なる外部バスとの間でデータの送信又は受信をする外部バスインターフェイスを更に備え、前記ＳＲＡＭは、前記各外部バスインターフェイスに対応し、対応する外部バスインターフェイスと前記ＤＲＡＭとの間で転送されるデータを入出力するためのポートを備えるものであり、前記システム制御手段は、前記ポートのいずれかを用いて前記ＳＲＡＭにデータを読み書きすることができるように構成されているものである。
【００２２】
請求項２の発明によると、ＳＲＡＭは複数のポートを有するので、システム制御手段によるＳＲＡＭに対するアクセスを高速化することができる。また、ＳＲＡＭのポート数以上の数の外部バスを接続しても転送性能がほとんど低下しない。更に、ＳＲＡＭに複数のＦＩＦＯ領域を設け、複数のＦＩＦＯバッファとして動作させることができる。
【００２３】
また、請求項３の発明では、請求項１に記載のデータ伝送装置において、前記ＳＲＡＭは、前記システム制御手段との間でデータを入出力するためのポートと、前記外部バスインターフェイスと前記ＤＲＡＭとの間で転送されるデータを入出力するためのポートとを備えるものである。
【００２４】
請求項３の発明によると、ＳＲＡＭはシステム制御手段のためのポートを有するので、システム制御手段がＳＲＡＭに対して０ウェイトでアクセスできるようになる。
【００２５】
また、請求項４の発明は、請求項１に記載のデータ伝送装置において、周波数が、当該データ伝送装置の基本クロックのＮ（Ｎは２以上の整数）倍であるクロックに基づいて動作するＳＲＡＭを有し、前記基本クロックに同期してデータを出力するＳＲＡＭ部を、前記ＳＲＡＭに代えて備えるものである。
【００２６】
請求項４の発明によると、ＳＲＡＭの動作周波数が高いので、複数のポートを備えるのと同様の効果が得られる。すなわち、システム制御手段によるＳＲＡＭに対するアクセスを高速化すること等が可能となる。
【００２７】
また、請求項５の発明では、請求項１に記載のデータ伝送装置において、前記ＦＩＦＯ周辺回路は、前記ＦＩＦＯ領域の上限アドレス及び下限アドレス、並びに次に読み出されるデータのアドレスを示す読み出しポインタ及び次にデータが書き込まれるアドレスを示す書き込みポインタを格納するレジスタと、前記ＦＩＦＯ領域から読み出しが行われた場合に、前記読み出しポインタを更新する手段と、前記ＦＩＦＯ領域に書き込みが行われた場合に、前記書き込みポインタを更新する手段と、前記ＦＩＦＯ領域が有効なデータを格納していない空の状態であることを判定する手段と、前記ＦＩＦＯ領域が新たなデータを格納することができないフル状態であることを判定する手段とを備えるものである。
【００２８】
請求項５の発明によると、ＦＩＦＯ領域をプログラマブルにすることができるので、データ転送速度に応じてＦＩＦＯバッファの容量を変えることができる。
【００２９】
また、請求項６の発明では、請求項５に記載のデータ伝送装置において、前記ＦＩＦＯ周辺回路は、前記ＦＩＦＯ領域がフル状態であることを示すフラグを格納するレジスタを更に備えるものである。
【００３１】
また、請求項７の発明は、請求項１に記載のデータ伝送装置において、データ受信時であって、前記ＦＩＦＯ領域が空のときにのみ、前記ＳＲＡＭ側路手段が格納したデータを、前記ＦＩＦＯ領域を経由することなく前記ＤＲＡＭに転送するように構成されたものである。
【００３２】
また、請求項８の発明では、請求項１に記載のデータ伝送装置において、前記ＳＲＡＭ側路手段は、前記ＤＲＡＭに送信すべきデータを保持して、前記ＤＲＡＭに転送する受信用ＳＲＡＭ側路手段と、前記外部バスに送信すべきデータを格納して、前記外部バスインターフェイスに転送する送信用ＳＲＡＭ側路手段とを有するものである。
【００３３】
請求項８の発明によると、受信用及び送信用のＳＲＡＭ側路手段を備えるので、ＤＭＡによるＳＲＡＭへのトラフィックを削減することができる。
【００３４】
また、請求項９の発明では、請求項１に記載のデータ伝送装置において、前記ＳＲＡＭ側路手段は、データ送信時には、前記外部バスから受信したデータに代えて、前記外部バスに送信すべきデータを格納して、前記外部バスインターフェイスに転送する双方向ＳＲＡＭ側路手段であることを特徴とする。
【００３５】
また、請求項１０の発明では、請求項１に記載のデータ伝送装置において、前記ＳＲＡＭ側路手段は、複数のワードを格納し、格納したデータを格納した順に出力するように構成されているものである。
【００３６】
請求項１０の発明によると、複数のワードを格納することができるので、ＤＭＡによるＳＲＡＭへのトラフィックを大きく削減することができる。
【００３７】
また、請求項１１の発明は、請求項１に記載のデータ伝送装置において、前記ＤＲＡＭが出力したデータを、前記ＦＩＦＯ領域及び前記ＳＲＡＭ側路手段を経由することなく前記外部バスインターフェイスに転送する経路を更に有するものである。
【００３８】
請求項１１の発明によると、送信の場合に、ＳＲＡＭのポートのトラフィックを減少させることができるので、システム制御手段がＳＲＡＭへのアクセスを待つ時間を減少させ、システム制御手段の処理性能を高めることができる。
【００３９】
また、請求項１２の発明は、請求項１に記載のデータ伝送装置において、前記外部インターフェイスが受信したデータがパケットのヘッダとデータ部とのいずれであるかを判定する受信用フィルタと、前記受信用フィルタが、受信しているデータがヘッダであると判定した場合には、当該ヘッダを前記ＳＲＡＭの前記システム制御手段が読み書きを行う領域へ格納させるように転送パスを制御し、前記受信用フィルタが、受信しているデータがデータ部であると判定した場合には、当該データ部を前記ＳＲＡＭのＦＩＦＯ領域に格納させてから前記ＤＲＡＭへ格納させるように転送パスを制御し、かつ、１つのパケットの転送が終了したか否かを判定する転送管理手段と、前記転送管理手段が、１つのパケットの転送が終了したと判定したことを、前記システム制御手段に割り込みを行って通知する割り込み制御手段とを備えるものである。
【００４０】
請求項１２の発明によると、ヘッダをＳＲＡＭのＦＩＦＯ領域に転送する必要がなくなるので、データ伝送装置内のデータ転送量を削減し、データ伝送装置全体の性能を向上させることができる。
【００４１】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００４２】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るデータ伝送装置の構成の例を示すブロック図である。図１のデータ伝送装置は、ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）コントローラ（以下では、ＤＭＡＣと称する）１１と、ＤＭＡＣ１２と、システム制御手段としてのＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）１３と、転送管理手段としての転送管理ユニット１４と、外部バスインターフェイス１６と、ＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）コントローラ１８と、ＤＲＡＭ２１と、ＳＲＡＭ（ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）２２と、キャッシュブロック２３と、ＦＩＦＯ周辺回路３０と、セレクタ５１，５２，５３，５４，５５，５６とを備えている。キャッシュブロック２３は、双方向キャッシュ２４と、有効フラグレジスタ２５とを備えている。
【００４３】
外部バスＥＢは、電気若しくは光ケーブル、又は無線伝送路等で実現され、高速転送に適した物理信号フォーマットで情報を伝達する。外部バスＥＢは、例えば、ＩＥＥＥ１３９４規格によるバスであるとする。
【００４４】
ＤＲＡＭ２１には、光ディスクドライブ等が接続されているものとする。また、外部バスＥＢには、ホストコンピュータ等が接続されている。図１のデータ伝送装置は、外部バスＥＢから受信したデータの光ディスクドライブ等への出力、又は光ディスクドライブ等から入力されたデータの外部バスＥＢへの送信を行う。
【００４５】
図１のデータ伝送装置は、１ワード（ＷＬバイト）を単位としてデータを転送するものとする。また、ＷＬバイト＝ＤＬビットとする（ＤＬ＝ＷＬ×８）。ＣＰＵ１３、ＤＲＡＭ２１、ＳＲＡＭ２２、双方向キャッシュ２４等に接続されたデータバスの幅は、ＷＬバイトであるとして説明するが、ＷＬバイトの整数倍であってもよい。各バスの幅はそれぞれ異なっていてもよい。以下のブロック図においては、太線はデータバス等のデータの経路を示している。
【００４６】
ＤＭＡＣ１１，１２は、ＤＭＡによるデータ転送を制御する。ＤＭＡＣ１１，１２が制御するデータ転送を、それぞれＤＭＡｃｈ１、ＤＭＡｃｈ２による転送と称する。以下では、ＤＭＡＣ１１がＤＭＡｃｈ１による書き込み等を行うことを、ＤＭＡｃｈ１が書き込み等を行うともいう。ＤＭＡＣ１２についても同様である。
【００４７】
ＤＭＡＣ１１は、外部バスＥＢとＳＲＡＭ２２内のＦＩＦＯ領域との間の双方向データ転送（ＤＭＡｃｈ１）を制御する。ＤＭＡＣ１２は、ＳＲＡＭ２２内のＦＩＦＯ領域とＤＲＡＭ２１との間の双方向データ転送（ＤＭＡｃｈ２）を制御する。
【００４８】
ＣＰＵ１３は、プログラムに従って動作し、ＤＲＡＭ２１に接続された光ディスクドライブ等の制御を行う。ＣＰＵ１３は、ＭＣＵ（ｍｉｃｒｏ−ｃｏｎｔｒｏｌｌｅｒ  ｕｎｉｔ）又は組み込みマイコン（ｍｉｃｒｏ−ｃｏｍｐｕｔｅｒ、又はｍｉｃｒｏ−ｃｏｎｔｒｏｌｌｅｒ）と呼ばれることもある。ＣＰＵ１３が実行する命令を有するプログラム（ファームウェア）は、主に命令ＲＯＭやフラッシュメモリ（いずれも図示せず）等から供給される。
【００４９】
転送管理ユニット１４は、例えばバスコントローラであって、データ伝送装置全体のデータ転送を管理している。転送管理ユニット１４は、ＤＭＡＣ１１，１２及びセレクタ５１〜５７等を制御しており、また、ＣＰＵ１３にウェイトをかけることができる。
【００５０】
転送管理ユニット１４は、ＤＲＡＭ２１やＳＲＡＭ２２に対するアクセスを行う３つの制御装置（以下では、アクセス主体と称する）、ＣＰＵ１３、ＤＭＡＣ１１、及びＤＭＡＣ１２に対する制御を行う。すなわち、転送管理ユニット１４は、メモリに対するアクセスのＣＰＵ１３、ＤＭＡｃｈ１、及びＤＭＡｃｈ２の間での切り替え、これらの優先順を考慮した調停、ＤＭＡによるデータ転送中であってＣＰＵ１３がメモリアクセスできない場合におけるＣＰＵ１３に対するウェイト制御等を行う。
【００５１】
外部バスインターフェイス１６は、外部バスＥＢと、リンク層と呼ばれる図１のデータ伝送装置の内部ディジタル回路との間を橋渡しする物理層の回路である。外部バスインターフェイス１６は、外部バスＥＢから受信したデータをＤＲＡＭ２１に転送し、ＤＲＡＭ２１から転送されてきたデータを外部バスＥＢに出力する。外部バスインターフェイス１６は、外部バスＥＢのビット幅と内部バスのビット幅との間でバス幅を変換する回路も有している。
【００５２】
ＤＲＡＭコントローラ１８は、ＤＲＡＭ２１に対して制御信号ＤＣＮを出力して、複数の回路からのＤＲＡＭ２１に対するアクセス要求を調停し、ＤＲＡＭ２１に対する読み書きのタイミングを制御する。また、ＤＲＡＭコントローラ１８は、ＤＲＡＭ２１に対してアドレスＤＡＤを出力し、ＤＲＡＭ２１との間でデータＤＤＴを入出力する。
【００５３】
ＤＲＡＭ２１は、比較的低速大容量の汎用メモリである。ＳＲＡＭ２２は、比較的高速小容量の汎用メモリであり、ＣＰＵ１３が作業用に使用するＣＰＵ使用領域ＣＲと、ＦＩＦＯ（ｆｉｒｓｔ  ｉｎ，  ｆｉｒｓｔ  ｏｕｔ）バッファ（仮想ＦＩＦＯ）として使用されるＦＩＦＯ領域ＦＲとを有している。
【００５４】
ＤＲＡＭ２１は、外部バスインターフェイス１６が外部バスＥＢから受信したデータを、ＳＲＡＭ２２内のＦＩＦＯ領域ＦＲ及び双方向キャッシュ２４のうちの少なくとも一方と、ＤＲＡＭコントローラ１８とを経由して受信する。また、ＤＲＡＭ２１は、ＤＲＡＭコントローラ１８、ＳＲＡＭ２２内のＦＩＦＯ領域ＦＲ、及び外部バスインターフェイス１６を経由して、外部バスＥＢにデータを送信する。
【００５５】
ＤＲＡＭ２１は、パケットと呼ばれる伝送データ単位を格納する。ＤＲＡＭ２１の読み出し又は書き込みのためには、制御信号として一般的にロウアドレスストローブＲＡＳ、コラムアドレスストローブＣＡＳ、書き込みイネーブルＷＥ、出力イネーブルＯＥ等が使われる。
【００５６】
ＤＲＡＭ２１は、ＣＰＵ１３の外部記憶アドレス領域に割り当てられており、ＣＰＵ１３は、ＤＲＡＭ２１に直接アクセスすることができる。ただし、ＤＲＡＭ２１は、ＳＲＡＭ２２よりもアクセス時間が長い。また、リフレッシュやアクセス競合、ページミスヒット等のため、アクセス時間は一定ではなく、ウェイト数は可変である。
【００５７】
ＳＲＡＭ２２のＦＩＦＯ領域ＦＲは、受信時及び送信時において、データを一時的に格納して、外部バスインターフェイス１６とＤＲＡＭ２１との間の転送速度差を吸収するバッファとして動作する。ＳＲＡＭ２２は、ＤＲＡＭ２１に比べビット当たりの面積が大きいため、ＬＳＩ上に大容量を実装することができない。
【００５８】
ＤＲＡＭ２１には、ＣＰＵ１３、及びＤＭＡｃｈ２以外のＤＭＡチャネルによるアクセスも行われるので（ただし、ＤＭＡｃｈ１によるアクセスは行われない）、外部バスＥＢにデータを送信する場合、ＤＭＡｃｈ２の転送速度がＤＭＡｃｈ１よりも一時的に遅くなることがある。その際にも、ＤＭＡｃｈ１の要求に応じてＤＲＡＭ２１内のデータを転送することができるように、ＳＲＡＭ２２は充分な大きさのＦＩＦＯ領域ＦＲを有する必要がある。
【００５９】
ＳＲＡＭ２２には、読み出し又は書き込みのために入力される制御信号として、一般的にチップセレクトＣＳ、バイトイネーブルＢＥ、書き込みイネーブルＷＥ、読み出しイネーブルＲＥ等が使われる。更に同期式ＳＲＡＭの場合、ＳＲＡＭは入力されるクロックＣＬＫに同期してアクセスされる。以下では、ＳＲＡＭ２２に入力されるアドレスを表す信号は、これらの制御信号を含んでいるものとする。
【００６０】
ＳＲＡＭ２２は、ＣＰＵ１３の内部記憶アドレス領域に割り当てられており、ＣＰＵ１３は、ＳＲＡＭ２２に固定ウェイトで直接アクセスできる。アクセスの際のウェイトは、例えば０ウェイトとすることができる。
【００６１】
双方向キャッシュ２４は、例えば１ワードのデータを格納することができるフリップフロップであって、受信時及び送信時にＳＲＡＭ２２のＦＩＦＯ領域ＦＲへのアクセスを軽減するための迂回パスとして動作する。
【００６２】
有効フラグレジスタ２５は、双方向キャッシュ２４に有効な値が入っているか否かを示す有効フラグＶを格納する１ビットレジスタである。有効フラグＶは、その値が１のときには双方向キャッシュ２４に有効なデータが格納されている状態を表し、その値が０のときには双方向キャッシュ２４が空である、すなわち、読み出すべき有効なデータが存在しない状態を表す。ＤＭＡＣ１１及び１２は、双方向キャッシュ２４が有効なデータを保持しているか否かを判断するために、有効フラグＶの値を参照する。
【００６３】
ＦＩＦＯ周辺回路３０は、ＳＲＡＭ２２のＦＩＦＯ領域ＦＲを仮想ＦＩＦＯとして用いるための制御を行う。すなわち、ＳＲＡＭ２２がＦＩＦＯ領域ＦＲに格納したデータを格納した順に出力するように、ＳＲＡＭ２２に読み書きをするためのポインタを管理する。
【００６４】
セレクタ５１は、ＳＲＡＭ２２及び外部バスインターフェイス１６の出力のうちの１つを選択し、双方向キャッシュ２４に出力する。セレクタ５２は、受信時において、双方向キャッシュ２４が格納するデータと外部バスインターフェイス１６の出力とのうちのいずれかを選択し、セレクタ５５を介してＳＲＡＭ２２に出力する。出力されたデータは、ＳＲＡＭ２２のＦＩＦＯ領域ＦＲに書き込まれる。セレクタ５３は、送信時において、双方向キャッシュ２４が格納するデータとＳＲＡＭ２２の出力とのうちのいずれかを選択し、外部バスインターフェイス１６に出力する。
【００６５】
セレクタ５４，５５，５６は、それぞれＤＲＡＭ２１、ＳＲＡＭ２２、ＣＰＵ１３への書き込みデータを選択する。セレクタ５７は、ＣＰＵ１３が出力するアドレス信号ＣＡＤとＦＩＦＯ周辺回路３０が出力するアドレス信号ＦＡＤとのうちのいずれかを選択し、アドレス信号ＳＡＤとしてＳＲＡＭ２２に出力する。アドレス信号ＣＡＤ，ＦＡＤ，ＳＡＤはいずれも、アドレス、チップセレクトＣＳ、書き込みイネーブルＷＥ、バイトイネーブルＢＥ等の信号を含んでいる。
【００６６】
ＣＰＵが作業用に用いるＳＲＡＭをＦＩＦＯバッファとしても用いると、ＳＲＡＭに対するアクセス競合がシステム性能のボトルネックになる。図１のデータ伝送装置では、仮想ＦＩＦＯの他に双方向キャッシュ２４を備えているので、読み出し及び書き込みの際のＳＲＡＭのポートのトラフィックを緩和することができる。
【００６７】
図２は、仮想ＦＩＦＯの構成を示すブロック図である。図２のように、ＳＲＡＭ２２は、ＣＰＵ１３が作業用に使用するＣＰＵ使用領域ＣＲと、ＦＩＦＯバッファとして使用されるＦＩＦＯ領域ＦＲとを有している。通常、ＣＰＵ１３はＣＰＵ使用領域ＣＲにアクセスしてデータ処理を行い、ＤＭＡＣ１１，１２はＦＩＦＯ領域ＦＲにアクセスしてデータ転送を行う。
【００６８】
ＳＲＡＭ２２に読み書きをするアクセスを行うことができるのは、ＣＰＵ１３、ＤＭＡｃｈ１（ＤＭＡＣ１１）、ＤＭＡｃｈ２（ＤＭＡＣ１２）のいずれかである。ＳＲＡＭ２２は１ポートしか有していないので、同時に２以上のアクセスを受けることはできない。
【００６９】
ＳＲＡＭ２２のＦＩＦＯ領域ＦＲと、ＦＩＦＯ周辺回路３０とを有するソフトウェア制御可能なＦＩＦＯバッファを仮想ＦＩＦＯと称することとする。仮想ＦＩＦＯは、ＳＲＡＭ２２のＦＩＦＯ領域ＦＲをリングバッファとして用いるものである。ＤＭＡｃｈ１及びＤＭＡｃｈ２は、仮想ＦＩＦＯを介して転送データの引き渡しを互いに行う。ＣＰＵ１３が実行するプログラムは、転送データが壊れないように、ＤＭＡ転送中においてはＣＰＵ１３がＦＩＦＯ領域ＦＲに書き込みを行わないようなものである必要がある。
【００７０】
ＦＩＦＯ周辺回路３０は、ＦＩＦＯ領域の上限アドレスＵＢ、及び下限アドレスＬＢをそれぞれ格納するレジスタ３１，３２と、読み出しポインタＲＰ、書き込みポインタＷＰ、フルフラグＦ、及び空フラグＥをそれぞれ格納するレジスタ３３，３４，３５，３６と、セレクタ４１，４２，４３と、増分器４４，４５とを備えている。フルフラグＦは、その値が“１”であるとき、ＦＩＦＯ領域ＦＲがそれ以上新たなデータを格納することができないフル状態であることを示す。
【００７１】
転送管理ユニット１４は、レジスタ３１，３２，３３，３４，３５の値を入力としており、これらの値に従って、セレクタ４１，４２，４３及び増分器４４，４５を制御して、以下のような動作を行わせる。
【００７２】
読み出しポインタＲＰに対する初期化、又は読み出しポインタＲＰが上限アドレスＵＢに達するオーバーフローが発生すると、セレクタ４２は、レジスタ３２の出力を選択し、読み出しポインタＲＰが下限アドレスＬＢになるようにする。同様に、書き込みポインタＷＰに対する初期化、又は書き込みポインタＷＰが上限アドレスＵＢに達するオーバーフローが発生すると、セレクタ４３は、レジスタ３２の出力を選択し、書き込みポインタＷＰが下限アドレスＬＢになるようにする。
【００７３】
初期化及びオーバーフローがいずれも発生していないとき、セレクタ４２，４３は、それぞれレジスタ３３，３４の出力を選択している。仮想ＦＩＦＯに対する読み出し、書き込みが発生すると、アドレス増分器４４，４５は、それぞれ読み出しポインタＲＰ，書き込みポインタＷＰをＷＬだけ増加させる。セレクタ４１は、仮想ＦＩＦＯからの読み出し時には、レジスタ３３が出力する読み出しポインタＲＰを、仮想ＦＩＦＯへの書き込み時には、レジスタ３４が出力する書き込みポインタＷＰを選択し、セレクタ５７に出力する。
【００７４】
ＣＰＵ１３が、レジスタ３１の上限アドレスＵＢ、又はレジスタ３２の下限アドレスＬＢを書き換えると、ＳＲＡＭ２２のＦＩＦＯ領域ＦＲを変更することができる。なお、ＦＩＦＯ領域ＦＲを固定しておく場合は、レジスタ３１，３２は不要である。
【００７５】
図３は、ＦＩＦＯ領域ＦＲと各ポインタとの関係の一例を示す説明図である。ＳＲＡＭ２２内のＦＩＦＯ領域ＦＲのアドレスはＬＢからＵＢ−ＷＬまでであり、ＦＩＦＯ容量は（ＵＢ−ＬＢ）ワードである。ＦＩＦＯ領域ＦＲの上限及び下限は、ＳＲＡＭ２２のワード境界にアラインメントされている。
【００７６】
ＦＩＦＯ領域ＦＲにおいて、有効なデータのうち最も新しいもの及び最も古いものの位置を、それぞれＦＩＦＯトップ及びＦＩＦＯボトムと称することとする。ＦＩＦＯ領域ＦＲへの書き込みの際にはアドレスが順次増加するので、書き込みが最後に行われたデータはＦＩＦＯトップに格納され、読み出しが最初に行われるべきデータはＦＩＦＯボトムに格納されている。書き込みポインタＷＰは、次にデータが書き込まれるアドレス、すなわち、ＦＩＦＯトップのアドレスにＷＬを加えたアドレスを指し示す。読み出しポインタＲＰは、次に読み出されるデータが格納されているＦＩＦＯボトムのアドレスを指し示す。
【００７７】
転送管理ユニット１４は、書き込みポインタＷＰ及び読み出しポインタＲＰの値から、ＦＩＦＯ領域ＦＲが有効なデータでフル状態であって、それ以上新たなデータを格納することができない状態であるか否かを判定し、フル状態である場合にはレジスタ３５のフルフラグＦを立てる。同様に、転送管理ユニット１４は、ＦＩＦＯ領域ＦＲが、有効なデータが格納されていない空の状態であるか否かを判定し、空の状態である場合にはレジスタ３６の空フラグＥを立てる。
【００７８】
図４は、仮想ＦＩＦＯのフルフラグＦを求める際の論理を示す説明図である。転送管理ユニット１４が求めたフルフラグＦを用いると、仮想ＦＩＦＯがフルである状態と空である状態とを区別することができる。すなわち、Ｆ＝１の場合はフルであり、ＷＰ＝ＲＰかつＦ＝０の場合は空であることがわかる。ところで、仮想ＦＩＦＯ中のワード数は、（ＷＰ−ＲＰ）ｍｏｄ（ＵＢ−ＬＢ）と表すことができる。但し、フルの場合は、ＵＢ−ＬＢである。ここで、ｍｏｄは正の剰余演算子である。
【００７９】
ＦＩＦＯ領域ＦＲがフルになった場合、仮想ＦＩＦＯへの書き込み動作は停止される。ＦＩＦＯ領域ＦＲが空になった場合、仮想ＦＩＦＯからの読み出し動作は停止される。
【００８０】
図５は、ＦＩＦＯ領域ＦＲと各ポインタとの関係の他の例を示す説明図である。仮想ＦＩＦＯを用いた動作が繰り返され、書き込みポインタＷＰがＦＩＦＯ上限を超えると、書き込みポインタＷＰはＦＩＦＯ下限にラップアラウンド（ｗｒａｐ  ａｒｏｕｎｄ）して図５の状態になる。ＦＩＦＯトップは、アドレス（ＷＰ−ＷＬ）により指し示され、ＦＩＦＯボトムは、読み出しポインタＲＰにより指し示される。
【００８１】
受信の場合における図１のデータ伝送装置の一連の動作を以下に説明する。受信の場合、双方向キャッシュ２４が格納しているデータは、仮想ＦＩＦＯにＦＩＦＯトップのワードとして格納されるべきデータである。受信したデータの順を保つために、双方向キャッシュ２４が空でなければ、ＤＭＡが仮想ＦＩＦＯに直接書き込むことはできない。そこで、ＳＲＡＭ２２のデータ入力ポートが使われないときを狙って、双方向キャッシュ２４のデータを仮想ＦＩＦＯに書き込むようにする。
【００８２】
［ステップ１］
外部バスインターフェイス１６は、外部バスＥＢからデータを受信する。
【００８３】
［ステップ２］ＤＭＡｃｈ１による仮想ＦＩＦＯへの受信データ書き込み
ＳＲＡＭ２２がアクセスされており、双方向キャッシュ２４に空きがない場合、ＤＭＡｃｈ１は書き込みを待たされる。ＳＲＡＭ２２がアクセスされており、双方向キャッシュ２４に空きがある場合、ＤＭＡｃｈ１は双方向キャッシュ２４へ書き込みを行う。ＳＲＡＭ２２がアクセスされておらず、双方向キャッシュ２４が空ではない場合、ＤＭＡｃｈ１は双方向キャッシュ２４のデータを仮想ＦＩＦＯへ書き込み、更に双方向キャッシュ２４への書き込みを行う。ＳＲＡＭ２２がアクセスされておらず、双方向キャッシュ２４が空である場合、ＤＭＡｃｈ１は仮想ＦＩＦＯへ直接書き込みを行う。
【００８４】
［ステップ３］
ＳＲＡＭ２２がＣＰＵ１３、ＤＭＡＣ１１、ＤＭＡＣ１２のいずれからもアクセスされていないとき、次の操作を実行する。
仮想ＦＩＦＯがフルでも空でもなく、かつ、双方向キャッシュ２４が空でなければ、ＤＭＡｃｈ１は双方向キャッシュ２４のデータを仮想ＦＩＦＯへ書き込む。
【００８５】
［ステップ４］ＤＭＡｃｈ２による仮想ＦＩＦＯからの受信データ読み出し
仮想ＦＩＦＯが空で、かつ双方向キャッシュ２４が空ではない場合、ＤＭＡｃｈ２は双方向キャッシュ２４からデータを読み出し、ＳＲＡＭ２２を経由させずに、直接ＤＲＡＭ２１へ転送する。仮想ＦＩＦＯが空で、かつ双方向キャッシュ２４が空である場合、ＤＭＡｃｈ２は双方向キャッシュ２４に有効データが入るまで待たされる。
【００８６】
仮想ＦＩＦＯが空ではなく、仮想ＦＩＦＯに対する他からのアクセスがない場合、ＤＭＡｃｈ２は仮想ＦＩＦＯからデータを読み出し、ＤＲＡＭ２１へ転送する。仮想ＦＩＦＯが空ではなく、仮想ＦＩＦＯが他からアクセスされている場合、ＤＭＡｃｈ２は仮想ＦＩＦＯに対する他からのアクセスが終わるまで待つ。［終わり］。
【００８７】
ここでは、ＣＰＵ１３の優先順位が最も高い場合について説明したが、外部バスＥＢから送られてきたデータを待たせることができない場合には、ＤＭＡｃｈ１の優先順位を高くする必要がある。
【００８８】
仮想ＦＩＦＯへの書き込み要求ＷＲＱ、仮想ＦＩＦＯへの読み出し要求ＲＲＱ、ＣＰＵ１３からのアクセス要求ＣＰＵＲＷ，仮想ＦＩＦＯへのクリア要求ＣＬＲの各信号の論理は、次の式、
0003599692.tif 000002
で表すことができる。“〜”は否定、“｜”は論理和、“・”は論理積を表す。
【００８９】
ここで、選択信号ｓｅｌＣＰＵ，ｓｅｌＤＭＡ１，及びｓｅｌＤＭＡ２には、ＣＰＵ１３，ＤＭＡｃｈ１，及びＤＭＡｃｈ２がそれぞれ対応している。転送管理ユニット１４は、ＣＰＵ１３，ＤＭＡｃｈ１，及びＤＭＡｃｈ２の３者の要求を調停して、これらのうちの１つに対応した選択信号をアサートする。
【００９０】
ＳＲＡＭ２２への入力データを選択するセレクタ５５、及びＳＲＡＭ２２へ入力するアドレスを選択するセレクタ５７は、選択信号ｓｅｌＣＰＵ，ｓｅｌＤＭＡ１，ｓｅｌＤＭＡ２に従って選択を行う。すなわち、セレクタ５５は、選択信号ｓｅｌＣＰＵ，ｓｅｌＤＭＡ１，ｓｅｌＤＭＡ２がアサートされている場合、それぞれＣＰＵ１３の出力ＣＤＯ、セレクタ５２の出力、ＤＲＡＭコントローラ１８の出力ＤＤＯを選択する。セレクタ５７は、選択信号ｓｅｌＣＰＵがアサートされている場合はＣＰＵ１３の出力ＣＡＤを選択し、選択信号ｓｅｌＤＭＡ１又はｓｅｌＤＭＡ２がアサートされている場合はＦＩＦＯ周辺回路３０の出力ＦＡＤを選択する。
【００９１】
チップセレクト信号ｃｓＣＰＵ，ｃｓＤＭＡ１，ｃｓＤＭＡ２は、仮想ＦＩＦＯがそれぞれＣＰＵ１３，ＤＭＡｃｈ１，ＤＭＡｃｈ２によりアクセスされる場合にアサートされる。同様に、読み出しイネーブル信号ｒｅＣＰＵ，ｒｅＤＭＡ１，ｒｅＤＭＡ２は、仮想ＦＩＦＯからそれぞれＣＰＵ１３，ＤＭＡｃｈ１，ＤＭＡｃｈ２による読み出しが行われる場合にアサートされる。書き込みイネーブル信号ｗｅＣＰＵ，ｗｅＤＭＡ１，ｗｅＤＭＡ２は、仮想ＦＩＦＯにそれぞれＣＰＵ１３，ＤＭＡｃｈ１，ＤＭＡｃｈ２による書き込みが行われる場合にアサートされる。
【００９２】
チップリセットｒｅｓｅｔは、ハードウェア的なリセット信号であり、初期化信号ｉｎｉｔは、ＣＰＵ１３が初期化命令によりセットするソフトウェア的なリセット信号である。方向ビットＤＩＲは、その値が“０”のときは外部バスＥＢからの受信、“１”のときは外部バスＥＢへの送信を表す。
【００９３】
図３，図５の仮想ＦＩＦＯにおいて、読み出しポインタＲＰが書き込みポインタＷＰに追いついた場合、仮想ＦＩＦＯは空となり、書き込みポインタＷＰと読み出しポインタＲＰとの値（アドレス）が一致する。書き込みポインタＷＰが読み出しポインタＲＰに追いついた場合、仮想ＦＩＦＯはフルとなり、書き込みポインタＷＰと読み出しポインタＲＰとがやはり一致する。
【００９４】
図６は、書き込みポインタ更新アルゴリズムを示す説明図である。図６では、更新され、次サイクルにおいて用いられる書き込みポインタＷＰ及びフルフラグＦを、それぞれＷＰ’及びＦ’で表している。書き込みが行われる場合の仮想ＦＩＦＯの動作を以下に説明する。
（１）ＳＲＡＭ２２は、書き込みポインタＷＰが指し示すアドレスに入力されたデータを書き込む。
（２）ＦＩＦＯ周辺回路３０は、書き込みポインタＷＰを１ワード分インクリメントする。
【００９５】
図７は、読み出しポインタ更新アルゴリズムを示す説明図である。図７では、更新された読み出しポインタＲＰをＲＰ’で表している。読み出しが行われる場合の仮想ＦＩＦＯの動作を以下に説明する。
（１）ＳＲＡＭ２２は、読み出しポインタＲＰが指すアドレスから１ワードを読み出して出力する。
（２）ＦＩＦＯ周辺回路３０は、読み出しポインタＲＰを１ワード分インクリメントする。
【００９６】
図８は、受信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。ＤＭＡ（ＤＭＡｃｈ１及びＤＭＡｃｈ２）は、図８に示された条件の組み合わせ以外の場合には動作しない。すなわち、ＤＭＡからアクセス要求があった場合であっても、ＤＭＡは待たされることがある。ただし、ＤＭＡからのアクセス要求がＣＰＵ１３からのアクセス要求と衝突したとき、転送管理ユニット１４は、予め定めておいた優先順位を考慮して、ＤＭＡのアクセスを許可し、ＣＰＵ１３を待たせることがあるものとする。このような場合を、以下の図では“（０）”で表す。また、“→”は、データが転送される向きを表す。“＊”は、“０”又は“１”を表す。“＝”は、代入演算を表す。
【００９７】
ここでは、仮想ＦＩＦＯへの書き込みを行うＤＭＡｃｈ１が、仮想ＦＩＦＯからの読み出しを行うＤＭＡｃｈ２よりも優先されるものとするので、ＷＲＱ＝＝ＲＲＱ＝＝１の場合は、ＷＲＱ＝１，ＲＲＱ＝０の場合と同じである。この場合、結果として、読み出し要求ＲＲＱは待たされる。
【００９８】
次に、送信の場合における図１のデータ伝送装置の一連の動作を以下に説明する。図９は、送信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。双方向キャッシュ２４が格納するデータは、ＦＩＦＯボトムのワードとして格納されていたデータである。送信の場合、双方向キャッシュ２４にはできる限り有効なデータが格納されているようにする。双方向キャッシュ２４に有効なデータが入っていない場合は、ＤＭＡが仮想ＦＩＦＯからデータを直接読み出すことができる。仮想ＦＩＦＯが空ではなく、かつ双方向キャッシュ２４が空になった場合は、ＳＲＡＭ２２のデータ出力ポートが使われないときを狙って、ＦＩＦＯボトムのワードを双方向キャッシュ２４に書き込むようにする。
【００９９】
［ステップ１］ＤＭＡｃｈ２による仮想ＦＩＦＯへの書き込み
ＤＭＡｃｈ２がＤＲＡＭ２１から読み出したデータをＳＲＡＭ２２の仮想ＦＩＦＯへ書き込む。
【０１００】
［ステップ２］仮想ＦＩＦＯから双方向キャッシュ２４への読み出し
仮想ＦＩＦＯが空ではなく、双方向キャッシュ２４が空であれば、ＳＲＡＭ２２のデータ出力ポートが使われないサイクルにおいて、転送管理ユニット１４が仮想ＦＩＦＯからデータを読み出し、双方向キャッシュ２４に書き込む。
【０１０１】
［ステップ３］ＤＭＡｃｈ１による仮想ＦＩＦＯからの読み出し
双方向キャッシュ２４が空でなければ、ＤＭＡｃｈ１が双方向キャッシュ２４からデータを読み出す。双方向キャッシュ２４が空であれば、ＳＲＡＭ２２のデータ出力ポートが使われないサイクルにおいて、ＤＭＡｃｈ１が仮想ＦＩＦＯからデータを読み出し、双方向キャッシュ２４を経由させずに、直接外部バスインターフェイス１６に転送する。
【０１０２】
［ステップ４］
外部バスインターフェイス１６が、仮想ＦＩＦＯから送られて来たデータを外部バスＥＢに送信する。［終わり］。
【０１０３】
ＳＲＡＭ２２へのアクセスの調停論理について説明する。双方向キャッシュ２４、又はＳＲＡＭ２２に対して読み書きすることが、複数のアクセス主体から同時に要求される（アクセスが衝突する）場合には、転送管理ユニット１４が調停を行う。調停論理は、アクセス優先順位を考慮し、アクセスが順番に許されるようにする。
【０１０４】
ＤＭＡがＳＲＡＭ２２のトラフィックを占有すると、ＣＰＵ１３は長く待たされる。ここでＤＭＡからのアクセスには、双方向キャッシュ２４からのデータの転送を含む。しかし、ＳＲＡＭ２２が高速に動作し、その帯域幅が充分高ければ、ＣＰＵ１３が待たされる上限のサイクル数を２に抑えられる。転送管理ユニット１４は、ＳＲＡＭ２２にアクセスする３つの制御装置がＳＲＡＭに交互に、又は順番にアクセスするよう調停し、ＣＰＵ１３が、ＤＭＡと衝突したときは１〜２ウェイト、衝突しないときは０ウェイトでＳＲＡＭ２２にアクセスできるようにする。
【０１０５】
外部バスＥＢの最高転送速度を４００Ｍｂ／ｓ、バスやメモリ上の１ワードを３２ビットとすると、４００Ｍｂ／ｓ  ＝  ４００／３２ＭＷ／ｓ  ＝  １２．５ＭＷ／ｓがＤＭＡｃｈ１の最高転送速度である。ここで、Ｗ／ｓは毎秒１ワードを表す。ＳＲＡＭ２２の動作周波数を４０ＭＨｚとすると、３×１２．５  ＜  ４０＜  ４×１２．５であるから、最高転送速度で転送を行っている場合、ＤＭＡｃｈ１は、３サイクルに１回以下の頻度でＳＲＡＭ２２にアクセスする。一方、ＣＰＵ１３及びＤＭＡｃｈ２はＳＲＡＭ２２に連続してアクセスすることがある。
【０１０６】
外部バスＥＢから受信したデータをとりこぼすことなく全て転送するためには、ＤＭＡｃｈ１を待たせることがないようにするのが望ましい。このため、以下では、ＤＭＡｃｈ１、ＣＰＵ１３、ＤＭＡｃｈ２の順に、ＳＲＡＭ２２に対するアクセス優先順位が高いとし、仮想ＦＩＦＯの容量は充分に大きいものとする。ＤＭＡｃｈ１は最優先であるが連続アクセスしないので、ＤＭＡｃｈ１がアクセスしないサイクルにおいてＣＰＵ１３とＤＭＡｃｈ２とがアクセスできる。したがって、ＣＰＵ１３のＳＲＡＭ２２へのアクセス待ちを２ウェイト以下に制限するように設計することができる。
【０１０７】
送信の場合は、仮想ＦＩＦＯへの読み出し要求ＲＲＱを行うとき、ＳＲＡＭ２２の出力ポートは常に空いているとして良いので、ステップ２とステップ３とを同時に実行することができる。
【０１０８】
以下では、受信時の様々な状況における仮想ＦＩＦＯ、ＣＰＵ１３及びＤＭＡの動作について説明する。特に、ＣＰＵ１３，ＤＭＡｃｈ１，ＤＭＡｃｈ２の３者がＳＲＡＭ２２にアクセスし、ＳＲＡＭ２２に対する負荷が最も高い状況であるとする。すなわち、ＤＭＡがＳＲＡＭ２２の仮想ＦＩＦＯを介して受信されたデータを転送しながら、ＣＰＵ１３はＳＲＡＭ２２に対してロード、及びストアアクセスを交互に繰り返しているものとする。以下の図において、“Ｒ”は仮想ＦＩＦＯからの読み出しを、“Ｗ”は仮想ＦＩＦＯへの書き込みを表す。また、ＦＩＦＯ中の語数の欄の“Ｖ”は、双方向キャッシュ２４に有効なデータが格納されていることを示す。
【０１０９】
図１０は、仮想ＦＩＦＯが空ではない状態で、３つのアクセス主体がＳＲＡＭ２２に常にアクセスしている場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。これは、受信時における最悪の状態である。ＤＭＡｃｈ１が仮想ＦＩＦＯに書き込みを行うとＦＩＦＯ中の語数が増加し、ＤＭＡｃｈ２が仮想ＦＩＦＯから読み出しを行うとＦＩＦＯ中の語数が減少している。ＣＰＵ１３はＣＰＵ使用領域ＣＲにアクセスするので、ＣＰＵ１３が書き込み及び読み出しを行う際には、ＦＩＦＯ中の語数は変化しない。
【０１１０】
図１１は、ＤＭＡｃｈ１が一時的に停止した場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。ＤＭＡｃｈ２による仮想ＦＩＦＯからの読み出しが行われる毎にＦＩＦＯ中の語数が減少し、ＦＩＦＯ中の語数が０になると（サイクル１０）、双方向キャッシュ２４からの読み出しが行われる。
【０１１１】
図１２は、ＤＭＡｃｈ２が一時的に停止した場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。ここで、仮想ＦＩＦＯの容量がＮワードであるとしている。図１０の場合においてＤＭＡｃｈ２によって使用されていたスロット（サイクル３等）が、ＣＰＵ１３によって使用されている。ＤＭＡｃｈ１による仮想ＦＩＦＯへの書き込みが行われる毎にＦＩＦＯ中の語数が増加している。ＦＩＦＯ中の語数がＮになると、ＤＭＡｃｈ１による書き込みは行われなくなる。
【０１１２】
図１３は、ＣＰＵ１３が一時的に停止した場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。図１０の場合においてＣＰＵ１３によって使用されていたスロット（サイクル４等）が、ＤＭＡｃｈ２によって使用されている。一般に、ＤＲＡＭの転送速度はＳＲＡＭよりも遅いが、ここでは、ＤＲＡＭ２１に対してページ連続ヒットして、ＤＭＡｃｈ２がウェイトなしでＳＲＡＭ２２にアクセスすることができているとする。
【０１１３】
以下では、“＊”の付いたＲまたはＷは、ＳＲＡＭ２２の仮想ＦＩＦＯに対するアクセスではなく、双方向キャッシュ２４に対するアクセスであることを表す。したがって、“Ｒ＊”及び“Ｗ＊”が示されたサイクルにおいては、ＤＭＡｃｈ１又はＤＭＡｃｈ２によるアクセスを、ＣＰＵ１３のＳＲＡＭ２２に対するアクセスと並列して実行することができる。
【０１１４】
図１４は、ＣＰＵ１３の動作が再開した場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。一旦ＦＩＦＯが空になれば、ＤＭＡは、まず双方向キャッシュ２４にアクセスするので、ＤＭＡはＳＲＡＭ２２に全くアクセスしていない。このため、ＣＰＵ１３は、ＳＲＡＭ２２に連続してアクセスすることができる。
【０１１５】
図１５は、空きサイクルにおいて、双方向キャッシュ２４が仮想ＦＩＦＯにデータを転送する場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。以下の図においては、双方向キャッシュ２４と仮想ＦＩＦＯとの間でデータを転送するサイクルを“＃”で示す。ＳＲＡＭ２２への書き込み、ＳＲＡＭ２２からの読み出しのいずれも行われていない空きサイクルにおいて、双方向キャッシュ２４が空ではなく、仮想ＦＩＦＯが空でもフルでもない場合、双方向キャッシュ２４から仮想ＦＩＦＯへデータが転送される。このとき、有効フラグＶ＝０となる。
【０１１６】
図１５の場合、空きサイクル４において双方向キャッシュ２４が空になるので、サイクル５において、ＣＰＵ１３がＳＲＡＭ２２にアクセスするのと同時にＤＭＡｃｈ１が双方向キャッシュ２４にアクセスすることができる。したがって、ＣＰＵ１３による処理の効率が向上する。
【０１１７】
図１６は、空きサイクルにおいて、双方向キャッシュ２４が仮想ＦＩＦＯにデータを転送しない場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。図１６は、図１５の場合との比較のために示すものである。図１６の場合、空きサイクル４で双方向キャッシュ２４が空にならない。サイクル５，６において、ＣＰＵ１３は、ＤＭＡｃｈ１又はＤＭＡｃｈ２と同時にＳＲＡＭ２２にアクセスすることはできないので、サイクル７まで書き込みを待たされる。
【０１１８】
図１７は、双方向キャッシュ２４を経由せず、仮想ＦＩＦＯへ直接書き込みを行う場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。双方向キャッシュ２４が空であり、かつ仮想ＦＩＦＯが空でないときに、このような動作をすることが可能である。図１７の場合、サイクル４において双方向キャッシュ２４が空になるので、サイクル５においてＤＭＡｃｈ１は双方向キャッシュ２４を経由せず、仮想ＦＩＦＯに書き込みを行う。この場合、サイクル８において、双方向キャッシュ２４が空であるので、ＣＰＵ１３がＳＲＡＭ２２にアクセスするのと同時に、ＤＭＡｃｈ１が双方向キャッシュ２４にアクセスすることができる。
【０１１９】
図１８は、双方向キャッシュ２４へ書き込みを行う場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。図１８は、図１７の場合との比較のために示すものである。図１８の場合、サイクル５においてＤＭＡｃｈ１は双方向キャッシュ２４に書き込みを行うので、サイクル８において、ＣＰＵ１３はＳＲＡＭ２２にアクセスすることができない。
【０１２０】
図１９は、送信時に、空きサイクルにおいて、仮想ＦＩＦＯが双方向キャッシュ２４にデータを転送する場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。図１９において、サイクル６までは双方向キャッシュ２４は空である。サイクル７が空きサイクルであるとすると、ＦＩＦＯボトムの１ワードが仮想ＦＩＦＯから双方向キャッシュ２４へ先読み転送される。サイクル９において、双方向キャッシュ２４は有効なデータを格納しているので、ＣＰＵ１３がＳＲＡＭ２２に読み出しのためにアクセスするのと同時に、ＤＭＡｃｈ１が双方向キャッシュ２４に読み出しのためにアクセスすることができる。
【０１２１】
図１のデータ伝送装置においては、ＤＭＡｃｈ２の平均転送速度がＤＭＡｃｈ１よりも速いので、受信時には仮想ＦＩＦＯが空に近い状態で動作する。図１のデータ伝送装置は、仮想ＦＩＦＯの他に１ワード長の双方向キャッシュ２４を備えているので、受信時において、ＦＩＦＯ領域ＦＲを有するＳＲＡＭ２２に対するＤＭＡのアクセスを実質的になくすことができる。このため、ＣＰＵ１３のロード・ストア性能をあまり落とすことがない。また、送信時において、仮想ＦＩＦＯから双方向キャッシュ２４にデータを先読みするので、ＤＭＡによるＳＲＡＭ２２へのアクセスを大きく削減し、ＣＰＵ１３のウェイト数を削減することができる。
【０１２２】
このように、第１の実施形態によると、ＣＰＵ等の性能をあまり落とすことなく、ＣＰＵ等が作業用に使用するメモリと、転送されるデータを一時的に格納するＦＩＦＯバッファとを一体化し、データ伝送装置の回路規模を削減することができる。したがって、データ伝送装置のコスト削減及び低消費電力化を図ることができる
なお、本実施形態では、レジスタ３５，３６を備え、これらにフルフラグＦ及び空フラグＥをそれぞれ格納させるものとして説明したが、レジスタ３５又は３６を備えず、フルフラグＦ又は空フラグＥを用いないようにしてもよい。フルフラグＦを用いない場合、転送管理ユニット１４は、
ＷＰ−ＲＰ≡ＵＢ−ＬＢ−ＷＬ  ｍｏｄ  （ＵＢ−ＬＢ）  …（５）
が成り立つと、仮想ＦＩＦＯがフル状態であると判定する。また、転送管理ユニット１４は、
ＷＰ＝ＲＰ    …（６）
が成り立つと、仮想ＦＩＦＯが空の状態であると判定する。この場合のＦＩＦＯ容量は、（ＵＢ−ＬＢ−ＷＬ）ワードとなり、フルフラグＦを用いる場合よりも１ワード少なくなる。
【０１２３】
また、レジスタ３１〜３４のうち、複数のレジスタが格納するデータを１つのレジスタでまとめて格納するようにしてもよい。
【０１２４】
また、ＣＰＵの最大ウェイト数を変更できるようにしてもよい。同様に、転送管理ユニットが動的に調停することにより、ＳＲＡＭへのアクセス主体の優先順位をプログラマブルにするようにしてもよい。
【０１２５】
また、本実施形態では、ＤＭＡｃｈ１及びＤＭＡｃｈ２の２チャネルを用いてＤＭＡ転送を行うものとして説明したが、全てのＤＭＡ転送を１チャネルで行ってもよいし、３チャネル以上で行ってもよい。
【０１２６】
（第１の実施形態の第１の変形例）
この変形例では、複数ワードを格納することができるキャッシュを備えたデータ伝送装置について説明する。
【０１２７】
図２０は、第１の実施形態の第１の変形例に係る双方向キャッシュのブロック図である。図２０の双方向キャッシュは、図１のデータ伝送装置において、双方向キャッシュ２４の代わりに用いられるものである。図２０の双方向キャッシュは、レジスタ８１，８２，８３，８４と、セレクタ８５と、増減分器８６と、レジスタ８７と、ポインタ制御回路８８とを備えている。レジスタ８１〜８４は、それぞれ１ワードを格納することができる。
【０１２８】
図２０の双方向キャッシュは、４段のＦＩＦＯバッファとして動作するが、書き込みはレジスタ８１に行われるので、書き込みポインタは不要である。レジスタ８１に書き込みが行われるときには、レジスタ８１，８２，８３に格納されていたデータは、それぞれ次段のレジスタ８２，８３，８４に格納される。レジスタ８７は、読み出しポインタＣＲＰを格納し、これをセレクタ８５及び増減分器８６に出力する。増減分器８６は、ポインタ制御回路８８の指示に従って、入力されたＣＲＰを増減させてレジスタ８７に出力する。
【０１２９】
ポインタ制御回路８８は、キャッシュへの読み出し要求があると、入力された読み出しポインタＣＲＰから１を減じて出力するように増減分器８６に指示をする。また、ポインタ制御回路８８は、キャッシュへの書き込み要求があると、入力された読み出しポインタＣＲＰに１を加えて出力するように増減分器８６に指示をする。セレクタ８５は、読み出しポインタＣＲＰが例えば１，２，３，４のとき、それぞれレジスタ８１，８２，８３，８４の出力を選択して出力する。
【０１３０】
読み出しポインタＣＲＰは、ＦＩＦＯボトムにあたるシフトレジスタを指し、かつ、双方向キャッシュが格納しているワード数をも表わしている。読み出しポインタＣＲＰが０のとき、双方向キャッシュのＦＩＦＯバッファは空であり、読み出しポインタＣＲＰが４のとき、双方向キャッシュのＦＩＦＯバッファはフルである。双方向キャッシュをリセットすると、読み出しポインタＣＲＰは０になる。
【０１３１】
図２１は、複数のワードを格納できる双方向キャッシュを備えた場合の、受信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。図２２は、複数のワードを格納できる双方向キャッシュを備えた場合の、送信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【０１３２】
本変形例によると、双方向キャッシュが複数のワードを格納することができるので、ＤＭＡによるＳＲＡＭへのトラフィックを大きく削減することができる。
【０１３３】
（第１の実施形態の第２の変形例）
この変形例では、ＳＲＡＭを経由せず、ＤＲＡＭから直接キャッシュへ転送するパスを備えたデータ伝送装置について説明する。
【０１３４】
図２３は、第１の実施形態の第２の変形例に係るデータ伝送装置のブロック図である。図２３のデータ伝送装置は、図１のデータ伝送装置におけるＤＲＡＭコントローラ１８からセレクタ５５へのパス、及びＳＲＡＭ２２からセレクタ５１，５３へのパスの代わりに、ＤＲＡＭコントローラ１８からセレクタ５１，５３へのパスを有している。すなわち、ＤＲＡＭ２１は、ＳＲＡＭ２２を経由せず、直接双方向キャッシュ２４へデータを転送することができるので、送信時のＳＲＡＭ２２へのＤＭＡアクセスをなくすことができる。
【０１３５】
図２３のＤＭＡＣ１１１，１１２、ＣＰＵ１１３、転送管理ユニット１１４、外部バスインターフェイス１１６、及びＤＲＡＭコントローラ１１８は、それぞれ、図１のＤＭＡＣ１１，１２、ＣＰＵ１３、転送管理ユニット１４、外部バスインターフェイス１６、及びＤＲＡＭコントローラ１８に対応している。
【０１３６】
図１のデータ伝送装置は、送信時には仮想ＦＩＦＯがフルに近い状態で動作するため、ＣＰＵ１３のＳＲＡＭ２２へのアクセスにはほぼ２ウェイトを費やしていた。これに対し、図２３のデータ伝送装置によれば、送信時のＣＰＵウェイト数は０となる。
【０１３７】
図２３のデータ伝送装置によると、ＤＲＡＭ２１が出力したデータは仮想ＦＩＦＯに蓄えられないため、転送速度を調整することができない。送信時に、ＤＲＡＭ２１からの読み出しが止まり、双方向キャッシュ２４も空になると、送信データが途切れてしまう。このような事態を避けるため、送信中には他の装置がＤＲＡＭ２１へアクセスしないようにして、ＤＲＡＭ２１からの読み出しの帯域幅を確保する必要がある。
【０１３８】
（第２の実施形態）
本実施形態においては、受信用キャッシュと送信用キャッシュとを備えたデータ伝送装置について説明する。
【０１３９】
図２４は、本発明の第２の実施形態に係るデータ伝送装置の構成の例を示すブロック図である。図２４のデータ伝送装置は、図１のデータ伝送装置におけるキャッシュブロック２３の代わりに、受信用キャッシュブロック２２３と、送信用キャッシュブロック２２６とを備えている。受信用キャッシュブロック２２３は、受信用キャッシュ２２４と、受信用有効フラグレジスタ２２５とを備え、送信用キャッシュブロック２２６は、送信用キャッシュ２２７と、送信用有効フラグレジスタ２２８とを備えている。
【０１４０】
図２４のＤＭＡＣ２１１，２１２、ＣＰＵ２１３、転送管理ユニット２１４、外部バスインターフェイス２１６、及びＤＲＡＭコントローラ２１８は、それぞれ、図１のＤＭＡＣ１１，１２、ＣＰＵ１３、転送管理ユニット１４、外部バスインターフェイス１６、及びＤＲＡＭコントローラ１８に対応している。
【０１４１】
受信用キャッシュ２２４、及び送信用キャッシュ２２７は、例えば１ワードのデータを格納することができるフリップフロップであって、それぞれ受信時及び送信時に、ＳＲＡＭ２２のＦＩＦＯ領域へのアクセスを軽減するための迂回パスとして動作する。
【０１４２】
受信用有効フラグレジスタ２２５は、受信用キャッシュ２２４に有効な値が入っているか否かを示す有効フラグＶｒを格納する１ビットレジスタである。有効フラグＶｒは、その値が１のときには受信用キャッシュ２２４に有効なデータが格納されている状態を表し、その値が０のときには受信用キャッシュ２２４が空である、すなわち、読み出すべき有効なデータが存在しない状態を表す。
【０１４３】
同様に、送信用有効フラグレジスタ２２８は、送信用キャッシュ２２７に有効な値が入っているか否かを示す有効フラグＶｓを格納する１ビットレジスタである。有効フラグＶｓは、その値が１のときには送信用キャッシュ２２７に有効なデータが格納されている状態を表し、その値が０のときには送信用キャッシュ２２７が空である、すなわち、読み出すべき有効なデータが存在しない状態を表す。
【０１４４】
図２５は、受信用キャッシュ２２４及び送信用キャッシュ２２７を備えた場合の、受信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。受信の場合における図２４のデータ伝送装置の一連の動作を以下に説明する。受信の場合、受信用キャッシュ２２４が格納しているデータは、仮想ＦＩＦＯにＦＩＦＯトップのワードとして格納されるべきデータである。受信したデータの順を保つために、受信用キャッシュ２２４が空でなければ、ＤＭＡが仮想ＦＩＦＯに直接書き込むことはできない。そこで、ＳＲＡＭ２２のデータ入力ポートが使われないときを狙って、受信用キャッシュ２２４のデータを仮想ＦＩＦＯに書き込むようにする。
【０１４５】
［ステップ１］
外部バスインターフェイス１６は、外部バスＥＢからデータを受信する。
【０１４６】
［ステップ２］ＳＲＡＭの空きスロットにおけるＤＭＡｃｈ１による仮想ＦＩＦＯへの書き込み
ＳＲＡＭ２２がアクセスされており、受信用キャッシュ２２４に空きがない場合、ＤＭＡｃｈ１は仮想ＦＩＦＯへの書き込みを待たされる。ＳＲＡＭ２２がアクセスされており、受信用キャッシュ２２４に空きがある場合、ＤＭＡｃｈ１は受信用キャッシュ２２４へ書き込みを行う。
【０１４７】
ＳＲＡＭ２２がアクセスされておらず、受信用キャッシュ２２４が空ではない場合、ＤＭＡｃｈ１は、受信用キャッシュ２２４のデータをＳＲＡＭ２２へ書き込み、更に受信用キャッシュ２２４への書き込みを行う。ＳＲＡＭ２２がアクセスされておらず、受信用キャッシュ２２４が空である場合、ＤＭＡｃｈ１は仮想ＦＩＦＯへ直接書き込みを行う。
【０１４８】
［ステップ３］
ＳＲＡＭ２２がＣＰＵ１３、ＤＭＡＣ１１、ＤＭＡＣ１２のいずれからもアクセスされていないとき、次の操作のいずれかを実行する。
（１）仮想ＦＩＦＯがフルでも空でもなく、かつ、受信用キャッシュ２２４が空でなければ、受信用キャッシュ２２４のデータを仮想ＦＩＦＯへ書き込む。
（２）仮想ＦＩＦＯが空ではなく送信用キャッシュ２２７が空である場合、仮想ＦＩＦＯからデータを読み出し、送信用キャッシュ２２７へ書き込む。
【０１４９】
［ステップ４］ＤＭＡｃｈ２による仮想ＦＩＦＯからの読み出し
送信用キャッシュ２２７が空ではない場合、ＤＭＡｃｈ２が送信用キャッシュ２２７からデータを読み出し、ＤＲＡＭ２１へ転送する。送信用キャッシュ２２７が空である場合、仮想ＦＩＦＯが空でなく、仮想ＦＩＦＯに対する他からのアクセスがないサイクルにおいて、ＤＭＡｃｈ２は仮想ＦＩＦＯからデータを読み出し、ＤＲＡＭ２１へ転送する。
【０１５０】
仮想ＦＩＦＯが空ではなく、仮想ＦＩＦＯがアクセスされている場合、ＤＭＡｃｈ２は仮想ＦＩＦＯに対する他からのアクセスが終わるまで待つ。仮想ＦＩＦＯが空で、かつ受信用キャッシュ２２４が空ではない場合、ＤＭＡｃｈ２は受信用キャッシュ２２４からデータを読み出し、ＤＲＡＭ２１へ転送する。仮想ＦＩＦＯが空で、かつ受信用キャッシュ２２４が空である場合、ＤＭＡｃｈ２は受信用キャッシュ２２４に有効データが入るまで待たされる。［終わり］。
【０１５１】
図２６は、受信用キャッシュ２２４及び送信用キャッシュ２２７を備えた場合の、送信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。送信の場合における図２４のデータ伝送装置の一連の動作を以下に説明する。送信の場合、送信用キャッシュ２２７が格納するデータは、仮想ＦＩＦＯにＦＩＦＯボトムのワードとして格納されていたデータである。送信の場合、送信用キャッシュ２２７にはできる限り有効なデータが格納されているようにする。送信用キャッシュ２２７に有効なデータが入っていない場合は、ＤＭＡが仮想ＦＩＦＯからデータを直接読み出すことができる。仮想ＦＩＦＯが空でなく、かつ送信用キャッシュ２２７が空になった場合は、ＳＲＡＭ２２のデータ出力ポートが使われないときを狙って、ＦＩＦＯボトムのワードを送信用キャッシュ２２７に書き込むようにする。
【０１５２】
［ステップ１］ＤＭＡｃｈ２による仮想ＦＩＦＯへの書き込み
ＤＭＡｃｈ２は、ＤＲＡＭ２１から読み出したデータを仮想ＦＩＦＯへ書き込む。
【０１５３】
［ステップ２］仮想ＦＩＦＯから送信用キャッシュ２２７への読み出し
仮想ＦＩＦＯが空ではなく、送信用キャッシュ２２７が空であれば、ＳＲＡＭ２２のデータ出力ポートが使われないサイクルにおいて、転送管理ユニット１４が仮想ＦＩＦＯからデータを読み出し、送信用キャッシュ２２７に書き込む。
【０１５４】
［ステップ３］ＤＭＡｃｈ１による仮想ＦＩＦＯからの読み出し
送信用キャッシュ２２７が空でなければ、ＤＭＡｃｈ１が送信用キャッシュ２２７からデータを読み出す。送信用キャッシュ２２７が空であれば、ＳＲＡＭ２２のデータ出力ポートが使われないサイクルにおいて、ＤＭＡｃｈ１が仮想ＦＩＦＯからデータを読み出し、外部バスインターフェイス１６に転送する。
【０１５５】
［ステップ４］
外部バスインターフェイス１６は、仮想ＦＩＦＯから送られて来たデータを外部バスＥＢに送信する。［終わり］。
【０１５６】
第２の実施形態によると、受信用及び送信用のキャッシュをともに備えるので、ＤＭＡによるＳＲＡＭ２２へのトラフィックを削減することができる。
【０１５７】
なお、受信用又は送信用のキャッシュとして、図２０のような複数ワードを格納することができるキャッシュを用いてもよい。
【０１５８】
（第３の実施形態）
第３の実施形態においては、２ポートＳＲＡＭを採用することにより、ＳＲＡＭに対するＣＰＵによるアクセスとＤＭＡによるアクセスとを分離し、アクセスが重なった場合の性能損失を減少させたデータ伝送装置について説明する。
【０１５９】
図２７は、本発明の第３の実施形態に係る２つの外部ポートを有するデータ伝送装置の構成の例を示すブロック図である。図２７のデータ伝送装置は、図１のデータ伝送装置において、外部バスインターフェイス１６に代えて、外部バスＥＢ１，ＥＢ２にそれぞれ接続された外部バスインターフェイス３１６，３１７を備え、キャッシュブロック２３に代えて、外部バスインターフェイス３１６，３１７にそれぞれ接続されたキャッシュブロック３２３，３２６を備えている。更に、図２７のデータ伝送装置は、ＤＭＡＣ１１，１２に代えて、ＤＭＡＣ３１１，３１２，３９３，３９４を備え、ＳＲＡＭ２２に代えて、２ポートＳＲＡＭ３２２を備え、ＦＩＦＯ周辺回路３０に代えて、ＦＩＦＯ周辺回路３３０，３７０を備えている。
【０１６０】
キャッシュブロック３２３，３２６はキャッシュブロック２３と、ＦＩＦＯ周辺回路３３０，３７０はＦＩＦＯ周辺回路３０と同様のものである。また、図２７のＤＭＡＣ３１１，３１２、ＣＰＵ３１３、転送管理ユニット３１４、外部バスインターフェイス３１６、及びＤＲＡＭコントローラ３１８は、それぞれ、図１のＤＭＡＣ１１，１２、ＣＰＵ１３、転送管理ユニット１４、外部バスインターフェイス１６、及びＤＲＡＭコントローラ１８に対応している。外部バスＥＢ１，ＥＢ２は、例えば、ＩＥＥＥ１３９４規格によるバスであるとする。
【０１６１】
図２８は、外部ポートとＤＭＡの４つのチャネルとの関係を示す説明図である。図２８のように、図２７のデータ伝送装置は、４つのＤＭＡチャネルを用いて、外部バスＥＢ１（外部ポート１）及び外部バスＥＢ２（外部ポート２）との間でデータ転送を行う。ＤＭＡＣ３１１，３１２，３９３，３９４は、それぞれＤＭＡｃｈ１、ＤＭＡｃｈ２、ＤＭＡｃｈ３、ＤＭＡｃｈ４によるデータ転送を制御する。
【０１６２】
外部ポート１との間でデータ転送を行うＤＭＡｃｈ１及びＤＭＡｃｈ２は、ＳＲＡＭ３２２の第１のポートを用いることができる。外部ポート２との間でデータ転送を行うＤＭＡｃｈ３及びＤＭＡｃｈ４は、ＳＲＡＭ３２２の第２のポートを用いることができる。ＣＰＵ３１３は、ＳＲＡＭ３２２の第１及び第２のポートを用いることができる。また、ＤＭＡｃｈ１及びＤＭＡｃｈ２は、キャッシュブロック３２３を用い、ＤＭＡｃｈ３及びＤＭＡｃｈ４は、キャッシュブロック３２６を用いる。
【０１６３】
外部ポート１を経由する通信と、外部ポート２を経由する通信とは独立に発生するので、双方向キャッシュがなければ、ＤＭＡｃｈ１又はＤＭＡｃｈ２によるＳＲＡＭ３２２へのアクセスと、ＤＭＡｃｈ３又はＤＭＡｃｈ４によるＳＲＡＭ３２２へのアクセスとが同時に生じる頻度が高い。図２７のデータ伝送装置は、各外部ポートとＤＲＡＭ３２１との間の転送パスに双方向キャッシュを備えているので、ＳＲＡＭ３２２に対するアクセス時の干渉をほとんど回避することができる。
【０１６４】
図２９は、図２７のデータ伝送装置における仮想ＦＩＦＯの構成を示す概念図である。ＳＲＡＭ３２２は、ＣＰＵ使用領域ＣＲと、第１のＦＩＦＯ領域ＦＲ１と、第２のＦＩＦＯ領域ＦＲ２とを有している。
【０１６５】
セレクタ３５７は、ＦＩＦＯ周辺回路３３０が出力する、ＤＭＡｃｈ１又はＤＭＡｃｈ２で用いるアドレス信号ＦＡＤ１と、ＣＰＵ３１３のアドレス信号ＣＡＤとのうちのいずれか一方を選択し、アドレス信号ＳＡＤ１としてＳＲＡＭ３２２の第１のポートに出力する。ＤＭＡｃｈ１及びＤＭＡｃｈ２は、第１のＦＩＦＯ領域ＦＲ１を用いることができる。
【０１６６】
セレクタ３６７は、ＦＩＦＯ周辺回路３７０が出力する、ＤＭＡｃｈ３又はＤＭＡｃｈ４で用いるアドレス信号ＦＡＤ２と、ＣＰＵ３１３のアドレス信号ＣＡＤとのうちのいずれか一方を選択し、アドレス信号ＳＡＤ２としてＳＲＡＭ３２２の第２のポートに出力する。ＤＭＡｃｈ３及びＤＭＡｃｈ４は、第２のＦＩＦＯ領域ＦＲ２を用いることができる。転送管理ユニット３１４は、セレクタ３５７，３６７を制御している。
【０１６７】
本実施形態によれば、２ポートＳＲＡＭを用いるのでシステムコストは少し高くなるが、ＣＰＵ３１３はＳＲＡＭ３２２へ常に１サイクルでアクセスできるので、ＣＰＵ３１３の処理性能が向上し、実時間性を確保するプログラムの開発が容易になる。
【０１６８】
図３０は、２ポートＳＲＡＭを備え、１つの外部ポートを有するデータ伝送装置の構成の例を示すブロック図である。図３０のデータ伝送装置は、図１のデータ伝送装置において、ＳＲＡＭ２２に代えて２ポートＳＲＡＭ４２２を備え、かつ、キャッシュブロック２３を省いたものである。
【０１６９】
ＣＰＵ４１３は、ＳＲＡＭ４２２の第１のポートを用いることができる。ＤＭＡｃｈ１及びＤＭＡｃｈ２は、ＳＲＡＭ４２２の第２のポートを用いることができる。このように、ＳＲＡＭ４２２は２ポートを備えているので、ＣＰＵ４１３とＤＭＡとの間のＳＲＡＭ４２２に対するアクセス競合を解消することができる。ＤＭＡｃｈ１とＤＭＡｃｈ２のアクセスが重なる場合は、ＤＭＡｃｈ２の方が待たされるものとする。
【０１７０】
図３０のデータ伝送装置のように、双方向キャッシュを使わない場合であっても、ＳＲＡＭ４２２に対するＤＭＡｃｈ１とＤＭＡｃｈ２とのアクセスが競合することによる性能劣化は、１ポートのＳＲＡＭ及び双方向キャッシュを用いた場合と同等であり、許容できる程度である。特に、外部バスＥＢ上のデータ転送レートがデータ伝送装置の内部のデータ転送レートに対して比較的低い場合は、双方向キャッシュを使う必要はない。もっとも、双方向キャッシュを用いると、図１のデータ伝送装置と同様に、ＤＭＡｃｈ１とＤＭＡｃｈ２との間のアクセス競合による性能劣化を無視できる程度に小さくすることができる。
【０１７１】
なお、２ポートＳＲＡＭを採用しない場合であっても、２つの外部バスを接続できるデータ伝送装置を実現することができる。この場合、ＣＰＵからＳＲＡＭへのアクセスにおいて、平均的なサイクル数は１サイクルに近いが、最悪の場合は４ウェイトが挿入される。また外部２ポートに限らず、外部３ポート以上のデータ伝送装置も同様にして実現することができる。
【０１７２】
（第４の実施形態）
第４の実施形態においては、図１のＳＲＡＭ２２に代えて、高速に動作するＳＲＡＭ５２２を有するＳＲＡＭ部５７０を用いる場合について説明する。
【０１７３】
図３１は、本発明の第４の実施形態に係るデータ伝送装置のＳＲＡＭ部５７０のブロック図である。図３１のＳＲＡＭ部５７０は、ＳＲＡＭ５２２と、レジスタ５７１，５７２，５７３，５７４，５７６，５７７，５７８，５７９と、データパス選択器５８２と、アドレス選択器５８４とを備えている。
【０１７４】
ＳＲＡＭ５２２には、周波数が、データ伝送装置の基本クロックＣＬＫｘ１の４倍であるクロックＣＬＫｘ４が入力されており、ＳＲＡＭ５２２は、図１のＳＲＡＭ２２の４倍の速度で動作する。ここで、基本クロックＣＬＫｘ１は、システム制御手段、外部バスインターフェイス、及びＤＲＡＭ等の動作の基準となるクロックである。
【０１７５】
図３２は、ＳＲＡＭ部５７０の各クロックの関係を示すタイミング図である。図３２に示されているように、基本クロックＣＬＫｘ１の１周期中に４個のスロットφ１，φ２，φ３，φ４を設けるため、ＳＲＡＭ部５７０では、各スロットにそれぞれ対応するパルスを有する４相のクロックＣＬＫｘ４＿１，ＣＬＫｘ４＿２，ＣＬＫｘ４＿３，ＣＬＫｘ４＿４が用いられる。これらの４相のクロックは、クロックＣＬＫｘ４に基づいて生成され、周期が基本クロックＣＬＫｘ１に等しい。
【０１７６】
データパス選択器５８２は、４相のクロックＣＬＫｘ４＿１，ＣＬＫｘ４＿２，ＣＬＫｘ４＿３，ＣＬＫｘ４＿４のそれぞれに同期して、４系統のデータ入力ＳＤＩφ１，ＳＤＩφ２，ＳＤＩφ３，ＳＤＩφ４のうちの対応するものを選択し、ＳＲＡＭ５２２に出力する。
【０１７７】
アドレス選択器５８４は、４相のクロックＣＬＫｘ４＿１，ＣＬＫｘ４＿２，ＣＬＫｘ４＿３，ＣＬＫｘ４＿４のそれぞれに同期して、４系統のアドレス入力ＳＡＤφ１，ＳＡＤφ２，ＳＡＤφ３，ＳＡＤφ４のうちの対応するものを選択し、ＳＲＡＭ５２２に出力する。ここで、アドレス入力ＳＡＤφ１〜ＳＡＤφ４には、ＳＲＡＭ５２２の制御信号が含まれている。
【０１７８】
データパス選択器５８２が選択したデータは、アドレス選択器５８４が選択したアドレスに従って、ＳＲＡＭ５２２に書き込まれる。
【０１７９】
レジスタ５７１〜５７４には、ＳＲＡＭ５２２の出力の他に、クロックＣＬＫｘ４＿１，ＣＬＫｘ４＿２，ＣＬＫｘ４＿３，ＣＬＫｘ４＿４がそれぞれ入力されている。レジスタ５７１〜５７４は、それぞれ入力されたクロックに同期して、ＳＲＡＭ５２２がクロックＣＬＫｘ４に同期して出力するデータを格納する。レジスタ５７６〜５７９には、基本クロックＣＬＫｘ１の他に、レジスタ５７１〜５７４の出力がそれぞれ入力されている。レジスタ５７６〜５７９は、基本クロックＣＬＫｘ１に同期して、それぞれのデータを出力する。
【０１８０】
図３３は、図３１のレジスタ間のデータフローを示すタイミング図である。基本サイクル（基本クロックＣＬＫｘ１の１周期）内のスロットφ１，φ２，φ３，φ４において各レジスタ５７１〜５７４にデータが格納され、これらのデータは、その次の基本サイクルの先頭で基本クロックＣＬＫｘ１に同期してレジスタ５７６〜５７９にそれぞれ格納され、出力される。
【０１８１】
このように、ＳＲＡＭ５２２が基本クロックの例えば４倍の速度で動作すれば、基本クロックＣＬＫｘ１に従って動作する最大で４つのアクセス主体が、基本サイクル毎にＳＲＡＭ５２２にアクセスできるようになる。この場合、ＳＲＡＭ５２２の性能は、基本クロックＣＬＫｘ１に従って動作する４ポートのＳＲＡＭの性能と同等である。ただし、図３３に示されているように、データを基本クロックＣＬＫｘ１に同期させて出力する必要があるため、読み出しのレイテンシは１サイクル増える。
【０１８２】
図３４は、本発明の第４の実施形態に係るデータ伝送装置の構成の例を示すブロック図である。図３４のデータ伝送装置は、図１のデータ伝送装置において、ＳＲＡＭ２２に代えてＳＲＡＭ部５７０を備え、かつ、キャッシュブロック２３を省いたものである。図３４のＤＭＡＣ５１１，５１２、ＣＰＵ５１３、転送管理ユニット５１４、外部バスインターフェイス５１６、及びＤＲＡＭコントローラ５１８は、それぞれ、図１のＤＭＡＣ１１，１２、ＣＰＵ１３、転送管理ユニット１４、外部バスインターフェイス１６、及びＤＲＡＭコントローラ１８に対応している。また、ＦＩＦＯ周辺回路５３０は、図１のＦＩＦＯ周辺回路３０に対応している。
【０１８３】
図３４のデータ伝送装置においては、ＳＲＡＭ部５７０に対するアクセス主体はＤＭＡＣ５１１及び５１２のいずれか一方と、ＣＰＵ５１３とである。ＣＰＵ５１３は、スロットφ１において、ＤＭＡＣ５１１又は５１２は、スロットφ２においてＳＲＡＭ５２２にアクセスしている。
【０１８４】
なお、使用されるスロットは、スロットφ１〜φ４のうちのいずれの２つであってもよい。また、アクセス主体が２つであるので、ＳＲＡＭ部５７０に代えて、ＳＲＡＭに基本クロックＣＬＫｘ１の２倍の周波数を有するクロックを与え、ＳＲＡＭを図１のＳＲＡＭ２２の２倍の速度で動作させるようにしたＳＲＡＭ部を用いてもよい。この場合、ＳＲＡＭ部は、周期が基本クロックＣＬＫｘ１に等しい２相のクロックＣＬＫｘ２＿１，ＣＬＫｘ２＿２を用い、これらのクロックに対応したレジスタ等を備えればよい。
【０１８５】
第４の実施形態によると、ＳＲＡＭからの読み出しのレイテンシが１サイクルになるので、例えばＣＰＵ５１３がＳＲＡＭ５２２へ書き込む場合は０ウェイトに、ＣＰＵ５１３がＳＲＡＭ５２２から読み出す場合は１ウェイトになるように、転送管理ユニット５１４がＳＲＡＭ５２２へのアクセスのタイミングを制御する。図３４のデータ伝送装置は、図３０のデータ伝送装置とほぼ同等の動作をするものであり、ＳＲＡＭ部５７０は、複数のポートを有するＳＲＡＭに相当する機能を有するということができる。
【０１８６】
（第５の実施形態）
第５の実施形態においては、オン・ザ・フライ（ｏｎ  ｔｈｅ  ｆｌｙ）で転送中のパケットを解析する受信用フィルタを備えたデータ伝送装置について説明する。
【０１８７】
図３５は、本発明の第５の実施形態に係るデータ伝送装置の構成の例を示すブロック図である。図３５のデータ伝送装置は、図１のデータ伝送装置において、受信用フィルタ６１９と、割込みコントローラ６２０とを更に備えたものである。
【０１８８】
図３５のＤＭＡＣ６１１，６１２、ＣＰＵ６１３、転送管理ユニット６１４、外部バスインターフェイス６１６、及びＤＲＡＭコントローラ６１８は、それぞれ、図１のＤＭＡＣ１１，１２、ＣＰＵ１３、転送管理ユニット１４、外部バスインターフェイス１６、及びＤＲＡＭコントローラ１８に対応している。また、キャッシュブロック６２３、及びＦＩＦＯ周辺回路６３０は、それぞれ図１のキャッシュブロック２３、及びＦＩＦＯ周辺回路３０に対応している。
【０１８９】
外部バスインターフェイス６１６は、パケットと呼ばれる単位毎に外部バスＥＢとの間でデータを送受信する。パケットは、データ部と、そのパケットの属性が記述されたヘッダとを有する。データ部は、転送されるべきデータであるペイロードと、ペイロードに生じた伝送誤りを検出又は訂正するためのパリティとを有する。
【０１９０】
受信用フィルタ６１９は、外部バスインターフェイス６１６が外部バスから受信したデータを受け取り、パケットのヘッダとデータ部とを分離する。受信用フィルタ６１９は、ＣＰＵ６１３による処理が必要なヘッダをＳＲＡＭ６２２のページテーブルに格納させ、ＣＰＵ６１３による処理が不要であるデータ部をＦＩＦＯ領域を経由させてＤＲＡＭ６２１に格納させる。
【０１９１】
図３６は、ＳＲＡＭ６２２のパケットページテーブルに関する概念図である。図３５及び図３６を参照して、受信の場合における図３６のデータ伝送装置の動作について説明する。
【０１９２】
［ステップ１］
外部バスインターフェイス回路６１６は、外部バスＥＢからパケットを受信し、受信用フィルタ６１９経由でＳＲＡＭ６２２に向けて転送する。
【０１９３】
［ステップ２］
受信用フィルタ６１９は、ステップ１で転送中のパケットを調べ、ヘッダ開始、ペイロード開始、パケット受信終了等の時刻を検知する。
【０１９４】
［ステップ３］
受信用フィルタ６１９が検知した結果に従って、転送管理ユニット６１４は、ヘッダをＳＲＡＭ６２２のＣＰＵ使用領域に格納させ、ペイロードについては転送経路を変更して、これをＤＲＡＭ６２１に格納させる。ヘッダをＦＩＦＯ領域に格納しないので、ヘッダをＳＲＡＭ６２２に書き込む際には、双方向キャッシュ６２４を働かせることはできない。ペイロードの転送は、ＤＭＡＣ６１１がＤＭＡｃｈ１によって行い、仮想ＦＩＦＯや双方向キャッシュ６２４を働かせる。
【０１９５】
［ステップ４］
パケットの書き込みが終了すると、ＤＭＡＣ６１１は転送終了割り込みを発生させる。割り込みコントローラ６２０は、この割り込みをＣＰＵ６１３に対して通知する。
【０１９６】
［ステップ５］
割り込み処理ルーチンの中において、ＣＰＵ６１３は、ヘッダを解析してペイロードのサイズやパケットの種類等の情報を得る。また、ヘッダとペイロードとを関連付けるために、ＣＰＵ６１３は、ＳＲＡＭ６２２のページテーブル内に格納されたヘッダに、同一のパケットに含まれていたペイロードへのポインタを追加する。例えば、ヘッダａとペイロードａとが同一のパケットに含まれていたとすると、ＤＲＡＭ６２１に格納されたペイロードａのアドレスを示すポインタをヘッダａに追加する。ペイロードの大きさの情報は、あらかじめヘッダ部に含まれているので付加しなくてよい。このように、ＤＲＡＭ６２１内の複数のペイロードは、ＳＲＡＭ６２２のページテーブルにより管理される。
【０１９７】
［ステップ６］
他のＤＭＡｃｈによる転送等をするために、ＤＭＡＣ６１２等の他の転送制御装置からＤＲＡＭ６２１内のペイロードに対する受け取り要求を受け取ると、ＣＰＵ６１３は、ペイロードの位置と大きさをその転送制御装置に伝える。その転送制御装置は、ペイロードの転送を開始する。
【０１９８】
［ステップ７］
ＤＲＡＭ６２１内のペイロードの読み出しが終了すると、割り込みコントローラ６２０は、ＣＰＵ６１３に割り込みを通知する。割り込み処理ルーチンの中において、ＣＰＵ６１３は、読み出されたペイロードを含むパケットに対するＳＲＡＭ６２２のページテーブル内のエントリを抹消する。［終わり］。
【０１９９】
このように、ヘッダをＳＲＡＭ６２２のＣＰＵ使用領域に直接書き込むので、パケットを全てＤＲＡＭ６２１に転送した後、ＣＰＵ６１３がヘッダを解析するために、ヘッダをＳＲＡＭ６２２へ転送する場合と比べると、ＤＲＡＭ６２１からＳＲＡＭ６２２へヘッダを転送する処理が不要になる。また、ヘッダは、ＳＲＡＭ６２２のページテーブルに直接書き込まれ、ＦＩＦＯ領域を経由することがないので、ＳＲＡＭ６２２のトラフィックを低減することができる。
【０２００】
送信時においては、ほぼ受信時の逆の手順で動作するが、ヘッダとペイロードとは別個に生成されるので、送信用フィルタは必要ない。
【０２０１】
なお、外部バスＥＢ，ＥＢ１，ＥＢ２は、ＩＥＥＥ１３９４規格によるバスであるとして説明したが、ＵＳＢ、ＡＴＡＰＩ、ＳＣＳＩ、Ｂｌｕｅｔｏｏｔｈ等の他の標準バスであってもよい。
【０２０２】
【発明の効果】
以上のように、本発明によると、ＣＰＵ等が使用するメモリと、転送されるデータを一時的に格納するＦＩＦＯバッファとを一体化し、データ伝送装置の回路規模を削減することができる。したがって、システムＬＳＩに、外部バスとの間のインターフェイスをするデータ伝送装置を内蔵した場合に、コスト削減及び低消費電力化を図ることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るデータ伝送装置の構成の例を示すブロック図である。
【図２】仮想ＦＩＦＯの構成を示すブロック図である。
【図３】ＦＩＦＯ領域と各ポインタとの関係の一例を示す説明図である。
【図４】仮想ＦＩＦＯのフルフラグを求める際の論理を示す説明図である。
【図５】ＦＩＦＯ領域と各ポインタとの関係の他の例を示す説明図である。
【図６】書き込みポインタ更新アルゴリズムを示す説明図である。
【図７】読み出しポインタ更新アルゴリズムを示す説明図である。
【図８】受信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図９】送信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１０】仮想ＦＩＦＯが空ではない状態で、３つのアクセス主体がＳＲＡＭに常にアクセスしている場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１１】ＤＭＡｃｈ１が一時的に停止した場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１２】ＤＭＡｃｈ２が一時的に停止した場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１３】ＣＰＵが一時的に停止した場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１４】ＣＰＵの動作が再開した場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１５】空きサイクルにおいて、双方向キャッシュが仮想ＦＩＦＯにデータを転送する場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１６】空きサイクルにおいて、双方向キャッシュが仮想ＦＩＦＯにデータを転送しない場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１７】双方向キャッシュを経由せず、仮想ＦＩＦＯへ直接書き込みを行う場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１８】双方向キャッシュへ書き込みを行う場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図１９】送信時に、空きサイクルにおいて、仮想ＦＩＦＯが双方向キャッシュにデータを転送する場合の仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図２０】第１の実施形態の第１の変形例に係る双方向キャッシュのブロック図である。
【図２１】複数のワードを格納できる双方向キャッシュを備えた場合の、受信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図２２】複数のワードを格納できる双方向キャッシュを備えた場合の、送信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図２３】第１の実施形態の第２の変形例に係るデータ伝送装置のブロック図である。
【図２４】本発明の第２の実施形態に係るデータ伝送装置の構成の例を示すブロック図である。
【図２５】受信用キャッシュ及び送信用キャッシュを備えた場合の、受信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図２６】受信用キャッシュ及び送信用キャッシュを備えた場合の、送信時における仮想ＦＩＦＯ及びＤＭＡの動作を示す説明図である。
【図２７】本発明の第３の実施形態に係る２つの外部ポートを有するデータ伝送装置の構成の例を示すブロック図である。
【図２８】外部ポートとＤＭＡの４つのチャネルとの関係を示す説明図である。
【図２９】図２７のデータ伝送装置における仮想ＦＩＦＯの構成を示す概念図である。
【図３０】２ポートＳＲＡＭを備え、１つの外部ポートを有するデータ伝送装置の構成の例を示すブロック図である。
【図３１】本発明の第４の実施形態に係るデータ伝送装置のＳＲＡＭ部のブロック図である。
【図３２】ＳＲＡＭ部の各クロックの関係を示すタイミング図である。
【図３３】図３１のレジスタ間のデータフローを示すタイミング図である。
【図３４】本発明の第４の実施形態に係るデータ伝送装置の構成の例を示すブロック図である。
【図３５】本発明の第５の実施形態に係るデータ伝送装置の構成の例を示すブロック図である。
【図３６】ＳＲＡＭのパケットページテーブルに関する概念図である。
【図３７】従来のデータ伝送装置の構成の例を示すブロック図である。
【符号の説明】
１１，１２，１１１，１１２，２１１，２１２，３１１，３１２，３９３，３９４，４１１，４１２，５１１，５１２，６１１，６１２  ＤＭＡコントローラ
１３，１１３，２１３，３１３，４１３，５１３，６１３  ＣＰＵ（システム制御手段）
１４，１１４，２１４，３１４，４１４，５１４，６１４  転送管理ユニット（転送管理手段）
１６，１１６，２１６，３１６，３１７，４１６，５１６，６１６  外部バスインターフェイス
１８  ＤＲＡＭコントローラ
２１，３２１，４２１，５２１，６２１  ＤＲＡＭ
２２，３２２，４２２，５２２，６２２  ＳＲＡＭ
２４，３２４，３２７，６２４  双方向キャッシュ
３０，３３０，３７０，４３０，５３０，６３０  ＦＩＦＯ周辺回路
３１〜３６  レジスタ
２２４  受信用キャッシュ
２２７  送信用キャッシュ
５７０  ＳＲＡＭ部
６１９  受信用フィルタ
６２０  割り込みコントローラ
【図１】
0003599692.tif 000003
【図２】
0003599692.tif 000004
【図３】
0003599692.tif 000005
【図４】
0003599692.tif 000006
【図５】
0003599692.tif 000007
【図６】
0003599692.tif 000008
【図７】
0003599692.tif 000009
【図８】
0003599692.tif 000010
【図９】
0003599692.tif 000011
【図１０】
0003599692.tif 000012
【図１１】
0003599692.tif 000013
【図１２】
0003599692.tif 000014
【図１３】
0003599692.tif 000015
【図１４】
0003599692.tif 000016
【図１５】
0003599692.tif 000017
【図１６】
0003599692.tif 000018
【図１７】
0003599692.tif 000019
【図１８】
0003599692.tif 000020
【図１９】
0003599692.tif 000021
【図２０】
0003599692.tif 000022
【図２１】
0003599692.tif 000023
【図２２】
0003599692.tif 000024
【図２３】
0003599692.tif 000025
【図２４】
0003599692.tif 000026
【図２５】
0003599692.tif 000027
【図２６】
0003599692.tif 000028
【図２７】
0003599692.tif 000029
【図２８】
0003599692.tif 000030
【図２９】
0003599692.tif 000031
【図３０】
0003599692.tif 000032
【図３１】
0003599692.tif 000033
【図３２】
0003599692.tif 000034
【図３３】
0003599692.tif 000035
【図３４】
0003599692.tif 000036
【図３５】
0003599692.tif 000037
【図３６】
0003599692.tif 000038
【図３７】
0003599692.tif 000039