JP2000172636A - リアルタイムデータ転送系の非同期系データ転送制御装置および方法 - Google Patents

リアルタイムデータ転送系の非同期系データ転送制御装置および方法

Info

Publication number
JP2000172636A
JP2000172636A JP10348440A JP34844098A JP2000172636A JP 2000172636 A JP2000172636 A JP 2000172636A JP 10348440 A JP10348440 A JP 10348440A JP 34844098 A JP34844098 A JP 34844098A JP 2000172636 A JP2000172636 A JP 2000172636A
Authority
JP
Japan
Prior art keywords
data
unit
synchronization
sequencer
clock
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
Application number
JP10348440A
Other languages
English (en)
Inventor
Jun Ikeda
純 池田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP10348440A priority Critical patent/JP2000172636A/ja
Publication of JP2000172636A publication Critical patent/JP2000172636A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 緩衝用メモリの容量を押さえつつ、高速な非
同期系データ転送に対応した機器を提供する。 【解決手段】 同期化するデータ単位をレジスタファイ
ルに複数格納し、複数格納したレジスタファイルを1同
期化処理単位にすることによって、同期化処理そのもの
の頻度を削減するとともに、同期化に対するペナルティ
を削減する。具体的には受信側と送信側に、同期化処理
単位を拡張するためのデータ保持部と、前記同期化処理
単位のデータ量が同期化処理単位の正数倍にならない場
合、後処理を行うための処理部を設ける。また、受信側
には、緩衝用バッファに格納されているデータ量を検知
し、その数にしたがってバーストリードを行うか否かを
決定する機能を設け、送信側には、緩衝用バッファに格
納されているデータ量を検知し、FIFOへのデータ格
納を制御する機能を設ける。

Description

【発明の詳細な説明】
【発明の属する技術分野】本発明は、ホストコンピュー
タなどのデータ供給源からネットワーク等を経由してデ
ータを送受信し、データ処理を行う各種機器におけるリ
アルタイムデータ転送系の非同期系データ転送制御装置
および方法に関する。
【従来の技術】一般に、データをネットワーク経由で送
受信し、そのデータを処理する機器においては、データ
送受信のための緩衝用バッファと、データ処理を行うた
め、その機器が保有する主記憶装置とは物理的に別々に
構成されている。図10は、この種の機器におけるメモ
リシステムの一般的な構成例を示すブロック図である。
ネットワーク101は、例えばイーサネットに代表され
るネットワークである。また、デバイス102は、ネッ
トワークとしてイーサネットを例にした場合、イーサネ
ットコントローラとして一般に供給されているものであ
る。このデバイス102は、公知であるため詳細は省略
するが、OSIモデルで規定されているデバイス依存の
物理インターフェースからデータを抽出する物理層(Ph
ysical Layere Device、以下PHYと記す、また一般に
PHYは、PhysicalMedium Device(PMD)、Physica
l Medium Attachment(PMA)、PhysicalCoding Subl
ayer(PCS)等からなっている)と、データリンク層
に相当するMedia Access Control
(MAC)とを、高速データ処理のためにハードウェア
化しているものであり、以下、これらを総称してMAC
と記す。RAM103は、送受信データの緩衝用バッフ
ァになるメモリであり、MAC部102からのRAM1
03への格納がリアルタイムに行われることになる。す
なわち、MAC部102とRAM103のデータ転送サ
イクルについては、ペナルティによるレイテンシーが許
されないので、上述のようにリアルタイムに行われると
表現しており、用いられる物理的なデバイス例としては
SRAMが多く使われている。シーケンサ104は、図
10に示す各部を制御するためのものであり、DMAC
部105とMAC部102がRAM103を共有アクセ
スする際のアービトレーション、並びにアクセスサイク
ルを制御するものである。DMAC部105は、この例
では緩衝用バッファであるRAM103に受信の場合で
あれば格納された、また送信の場合であれば格納すべき
データを、機器内部に備わる主記憶装置であるメモリ1
07(システム内に内部バスを経由して接続される)と
の間で、データの転送を実現するものである。DMAC
自体の方式、具体化方法は特に限定されない。データバ
ス106は、DMAC部105とメモリ107の間のデ
ータを伝送するバスであり、その形式は様々であり、こ
こでは特定しなくとも良いが、一般的にはシステムクロ
ックに同期したバス形式である。メモリ107は、主記
憶装置であり、そのメモリエリアはデータ処理のための
ワークエリアや、転送すべきデータパケット群の生成、
受信されたデータパケット群の格納エリア等、システム
の様々な目的で使用されている。ここで一般的に、ネッ
トワーク101と内部バス106とは動作クロックが異
なり、すなわち非同期で動作することが多い。従って機
器内でデータの同期化が必要となるわけであるが、この
例では緩衝用バッファであるRAM103に非同期のS
RAMを用い、シーケンサ104が非同期で動作するM
AC部102とDMAC部105とを調停して共有メモ
リの形でRAM103を使用している。しかし、この場
合の制限としては、RAM103がシングルポートの非
同期SRAMである場合には、MAC部102からの受
信データ、またはMAC部102への送信データのデー
タの連続性は保証されなければならないために、RAM
103に最低1パケット分のデータエリアを送受信別個
のパスとして設ける必要がある。そして、ネットワーク
101がイーサネット10Baseの場合等、通常MA
C部102の動作周波数が、システムの内部バス106
に比べて充分速い場合については、シーケンサ104で
MAC部102の1サイクルの間に、複数回数のRAM
103へのサイクルを発行することで、タイムシェア形
式でRAM103の容量を削減したり、送受信のデータ
パスを共有すると行った可能性が残るものの、ネットワ
ーク101が100Baseクラスになってくると、R
AM103が非同期のSRAMであるため、アクセスサ
イクルの絶対時間が稼げない理由もあり、実現が難しく
なってくる(一般に非同期SRAMはアクセスが遅いと
言える)。図11は、RAM103をデュアルポート化
し、送受信を別系統のデータパスにした場合の受信側の
構成を示すブロック図である。ネットワーク201は、
ネットワーク101に相当するものであり、MAC部2
02は図10のMAC部102に相当する。また、RA
M203は、図10のRAM103に相当する緩衝用メ
モリであり、本例ではデータアクセススピードを稼ぐた
めと、さらにはこれらの各部分をASIC等にワンチッ
プ化する際の開発の容易性/検証の容易性から同期式F
IFOを用いている。なお、現状では、ASICに内蔵
されるデュアルポート系のRAMのみならず、回路設計
は同期設計が主流である。ラッチ部204は、非同期デ
ータの同期化を行うために設けられているフリップフロ
ップよりなるラッチ回路であり、一般に非同期信号を同
期化し、メタスを取り除くためには一般にダブルラッチ
(同期化する側のクロックで動作するフリップフロップ
で2回ラッチさせる)を行うが、このラッチ部204が
これを行う。DMAC部205は図10のDMAC部1
05に相当するもので、前記同期化ラッチ部204でシ
ステムバスクロックに同期化されたデータを内部バスを
介して機器内の主記憶装置へ転送する。DMAC自体の
方式、具体化方法は特に限定されない。データバス20
6は、図10のデータバス106の内部バスに相当する
内部バスで、このバスを経由して受信データを主記憶装
置へデータ転送する。シーケンサ207は、MAC部2
02からの受信データを、緩衝用メモリであるFIFO
203へデータ格納するための制御を司るものであり、
シーケンサ208は、システム側である前記DMAC部
205および同期化ラッチ部204の制御を司り、受信
データの主記憶装置への格納を実現するものである。な
お、前記シーケンサ207、208は、データの受信に
当たり、ハンドシェークを行うことで、データの受け手
に同期化されたデータの転送を実現している。図12
は、図11に示す構成における動作例を示すタイミング
チャートであり、図中の信号名は、CLKAがネットワ
ーク側クロック、DATA_Aがネットワーク側のデー
タでバスの状態で、具体的にはMAC部202からFI
FO203へ格納されるデータバスである。WR信号
は、FIFO203へのライト信号であり、クロック同
期型FIFO203へのバースストライト(1クロック
につき1データの格納)を実現しており、図中「↑」で
示した部分でデータを格納することになる。次にRD信
号は、前記同期型FIFO203からのデータリード信
号であり、図中FIFOのデータバス幅のデータリード
サイクルを2回発行している。RD信号によるFIFO
203から出力されるデータはDATA_Bとして示さ
れており、CLKAに同期してデータが出力される。C
LKBはシステム側のクロックであり、前記同期化ラッ
チ部204並びにDMAC部205、シーケンサ208
がこのクロックで動作する。DATA_Cは、FIFO
203の出力データであるDATZ_Bをシステムクロ
ックで同期化する際の、同期化が終了後のデータバスを
示しており、図12から分かるように、DATA_Bが
確定した後、CLKBの立ち上がりエッジ2回目でデー
タが確定している。次にREQ信号は、前記シーケンサ
207が同前記シーケンサ208に対して、データの取
り込みが終了し、システム側へデータの引き抜きを要求
する要求信号である。なお、この要求信号REQもデー
タと同様に、CLKBによりシステムクロックに同期化
され、シーケンサ208へと伝達される。REQ信号
は、同期化の後、次のクロックエッジでサンプリングさ
れ、前記シーケンサ208がデータの引き抜き要求を検
知したことを前記シーケンサ207へ通知すべくACK
信号をアサートする。アサートされたACK信号は、今
度はMAC部202側の同期クロックであるCLKAに
同期化され、前記シーケンサ207が前記シーケンサ2
08の出力したACK信号を、ネットワーク側のクロッ
クCLKAに同期化した後、次のCLKAのクロックエ
ッジでサンプリングし、同時に前記REQ信号をネゲー
トし、ハンドシェイクが双方のシーンサ207、208
に認知され、そのハンドシェークを終了するためのトリ
ガをネットワーク側シーケンサ207からシステム側シ
ーケンサ208へ通知している。シーケンサ208によ
るネゲートされたREQ信号のサンプリングは、同様に
REQ信号のネゲートからCLKBによる同期化を経
て、次のクロックエッジで行われ、シーケンサ207の
リクエストサイクルが終了したことをシーケンサ208
からシーケンサ207へ伝達するためにACK信号がネ
ゲートされる。シーケンサ208によりネゲートされた
ACK信号は、同様にCLKAで同期化の後、次のクロ
ックエッジでサンプリングされ、その時点でシーケンサ
207が次のデータ転送のリクエストとしてREQ信号
を再びアサートすることが可能となり、以上で同期デー
タ転送単位のデータのハンドシェイクが終了することと
なる。なお、WR_PはDMACへのデータレディ信号
で、この信号のアサート状態のサンプリングにより、1
データ単位を前記内部バス206を経由し、主記憶メモ
リにデータ転送可能となり、処理系の都合に合わせてデ
ータ転送を実現することになる。
【発明が解決しようとする課題】図12に示したデータ
のハンドシェイクは一例であり、もしCLKAとCLK
Bとのサイクル時間差が限定されているのであれば、図
13のようにシーケンサ207が発行するFIFO20
3へのリードサイクル、すなわちRD信号のアサートタ
イミングと、シーケンサ208へのデータ引き抜き要求
であるREQ信号とを同時にアサートするなど、同期化
によるレイテンシーを短くする方策はあるが、抜本的な
対策にはならず、図12、図13からも分かるように、
1データ単位(イーサネットの場合、データはバイトバ
ウンダリで規定されているので、1データ単位は通常8
ビットとなる)のデータ転送に対し、CLKA、CLK
Bともにかなりのクロック数、すなわち時間がかかって
しまい、パフォーマンスが期待できない結果となってし
まう。すなわち、緩衝用のメモリであるFIFO203
が充分容量を確保でき、パケットデータの取りこぼし
(FIFOがデータフルの状態で受信データがまだ存在
する場合)が防げればデータ受信は可能なものの、FI
FO自体が大容量になってしまうという欠点がある。ま
た、CLKAとCLKBのサイクル時間の差がかなり大
きく、CLKBがCLKAに対してかなり高速で動作す
るのであれば、言い換えると、システムの動作に対し、
相対的にかなり遅いネットワークであれば、これらデー
タ同期化によるペナルティはネットワークのデータレー
トによって隠蔽(見かけ上、表に出ない)され、機器の
構成が可能となるが、100Base、さらにはより高
速なネットワークに接続される場合、これまでに説明し
てきたようにデータの同期化によるペナルティがクリテ
ィカルな要因となってくる。また、ネットワーク側/シ
ステム側の各々の基本クロックの数倍振同期クロックで
同期化処理を行うことも考えられるが、クロックスキュ
ー/ASIC化での検証問題があり、設計が困難になっ
てくる。本発明は、以上のような従来の欠点を除去する
ためになされたもので、非同期の基本クロックのみを用
いながらも、同期化に対するペナルティを極力減らし、
パフォーマンスを落とさずに、高速ネットワークにも対
応した機器の提供を目的としている。
【課題を解決するための手段】本発明は、所定のデータ
伝送系に対応する固定同期クロックで動作するインター
フェースと、前記固定同期クロックとは異なる同期クロ
ックで動作するデータ処理系とを有する非同期動作イン
ターフェースを備えるとともに、同期メモリを用いた緩
衝用バッファを備え、前記緩衝用バッファの容量を越え
るデータ量のデータ転送を前記非同期に動作するデータ
処理系内に行うリアルタイムデータ転送系の機器に設け
られる非同期系データ転送制御装置であって、前記同期
メモリからの出力を、そのデータ幅の整数倍にマルチプ
レクスするマルチプレクサ手段と、前記マルチプレクサ
手段からの出力を前記同期メモリのデータバス幅単位で
一時記憶し、かつ、前記マルチプレクサ手段と同様に前
記同期メモリのデータバス幅の整数倍のデータとして出
力する第1の一時記憶手段と、前記第1の一時記憶手段
からの出力された前記同期メモリの整数倍の出力データ
を、その出力同期クロックとは別の同期クロックに同期
化するデータ同期手段と、前記データ同期手段からの出
力を一時記憶する第2の一時記憶手段と、前記第2の一
時記憶手段からの出力データを所定の処理データ単位に
適宜に選択するセレクタ手段と、前記セレクタ手段によ
って選択された出力データをデータ転送するデータ転送
手段とを有することを特徴とする。
【発明の実施の形態および実施例】本実施の形態では、
同期化するデータ単位をレジスタファイルに複数格納
し、複数格納したレジスタファイルを1同期化処理単位
にすることによって、同期化処理そのものの頻度を削減
するとともに、同期化に対するペナルティを削減するも
のである。具体的に機器を実現するために、受信側につ
いては、同期化処理単位を拡張するためのデータ保持手
段と、前記同期化処理単位のデータ量が同期化処理単位
の正数倍にならない場合、後処理を行うための手段と、
前記緩衝用バッファであるFIFOに格納されているデ
ータ量を検知し、その数にしたがってバーストリードを
行うか否かを決定する決定手段とを設ける。一方、送信
側については同期化処理単位を拡張するためのデータ保
持手段と、同期化処理単位のデータ量が同期化処理単位
の正数倍にならない場合の後処理を行うための手段と、
前記緩衝用バッファであるFIFOに格納されているデ
ータ量を検知し、FIFOへのデータ格納を制御する手
段と、全ての各手段を制御するための手段とを設ける。
以上のような構成により、緩衝用メモリの容量を押さえ
つつ、高速な非同期系データ転送に対応した機器を提供
することが可能である。図1は、本発明の一実施例によ
るデータ転送制御装置の概要を示すブロック図である。
ネットワーク501は、イーサネットに代表されるネッ
トワークであり、具体的には通信用のデータ線である。
MAC部502は、OSIモデルの物理層とデータリン
ク層を一括して1ブロックにまとめたものであり、前記
のようにPHYとMACから構成されており、MACか
らの出力データ幅はイーサネットのデータバウンダリで
ある8ビットである。FIFO503は、緩衝用バッフ
ァとして設けられている同期型FIFOであり、このF
IFOネットワークの受信動作周波数のクロックに同期
してライト/リードされている。レジスタファイル部5
04は、前記FIFO503からネットワーク側のクロ
ックに同期して出力される8ビットデータを、同ネット
ワーククロックに同期して取り込むための128ビット
構成のレジスタファイル部であり、FIFO503から
の8ビット出力が16バイト分、LSB側から順次格納
されていく。格納ポジジョンの生成は、後述するシーケ
ンサ508が行う。ラッチ部505は、前記レジスタフ
ァイル部504で出力される128ビットのデータを、
システムクロックで同期化するためのもので、メタス状
態を消すためにフリップフロップを用いてシステムクロ
ックで2回連続ラッチされているダブルラッチ構成とな
っている。DMAC部506は、前記同期化ラッチ部5
05で出力されるデータについて、システム内に備わる
主記憶装置にデータ転送を実現するために設けられてい
るDMAコントローラ部であり、本実施例では受信デー
タがバイトバウンダリであるために、説明の簡略化のた
め前記同期化ラッチ部505の出力を8ビットとし、こ
のDMAC部506がデータを受ける形で示している。
従って、前記同期化ラッチ部505で同期化の後、LS
B側から順次8ビットデータをセレクトし、DMAC部
506にバイトデータを送る形になる。これらの制御
は、後述するシーケンサ509が行う。なお、DMAC
の実現方法については特に限定されることはない。デー
タバス507は、システムの内部バスを表し、図には記
載されていないが、システム内に備わる大容量の主記憶
装置に接続され、DMAC部506から主記憶装置へ格
納すべきデータがここを通過する。シーケンサ508
は、ネットワーク側のクロックに同期して動作するシー
ケンサであり、ネットワーク側のMAC部502、FI
FO503、レジスタファイル部504を制御するとと
もに、以下に述べるシステム側のシーケンサ509とハ
ンドシェイクのやり取りも行う。シーケンサ509は、
システム側のクロックに同期して動作するシーケンサで
あり、システム側の同期化ラッチ部505、DMAC部
506を制御し、前記ネットワーク側シーケンサ508
とのハンドシェイクも行っている。図2は、図1に示す
データ転送制御装置の同期化部分における詳細を示すブ
ロック図である。FIFO601は、ネットワーク側の
クロックに同期して動作するFIFOであり、図1に示
すFIFO503に相当している。本実施例ではイーサ
ネットをネットワーク501に想定しており、MAC部
502側からの受信データは8ビットバウンダリで本F
IFO601に格納される。FIFO601へのデータ
ライトについては、MAC部502側からの同期クロッ
クに従い、パケット受信時はバーストライト(1クロッ
クにつき1バイトのライトの連続)が行われる。一方、
本FIFO601からのデータのリードについては、同
様にネットワーク側のクロックに同期して、シングルリ
ード(1バイトリード)およびバーストリード(1クロ
ックにつき1バイトリードの連続)とを適宜切り分けて
使用することになる。そのために、本FIFO601か
ら後述するシーケンサ608に対し、FIFO601に
格納されているデータ数の情報(図中COUNT)が与
えられる形となっている。この格納データ数情報の出力
については、具体的には一般的に用いられているFIF
Oのフラグが相当することになる。次に、マルチプレク
サ602とレジスタファイル部603により、上述した
レジスタファイル部504を構成している。マルチプレ
クサ602は、FIFO601からの出力である8ビッ
トのリードデータをシーケンサ608の指示に従って、
128ビットのデータ幅のどの位置に出力するかを決定
するものである。レジスタファイル部603は、前記マ
ルチプレクサ602の出力を一次保持(ラッチ)するた
めのもので、本実施例では128ビット構成のレジスタ
で示している。以上述べてきたFIFO601、マルチ
プレクサ602、レジスタファイル部603、および後
述するネットワーク側の制御を司るシーケンサ608
は、全てネットワーク側のクロックに同期して動作する
同期回路となる。次に、データ同期部604、ラッチ部
605、データセレクタ部606により、上述したラッ
チ部505を構成している。データ同期部604は、前
記レジスタファイル部603から出力される128ビッ
ト幅のデータを、システム側のクロックに同期させる目
的で備えられたものである。前記のように一般的にはダ
ブルラッチ(同期化させたいクロックのクロックエッジ
で動作するフリップフロップにて、2段階以上打ち抜
く)が用いられるが、本実施例でも同様の方策で同期化
している。ラッチ部605は、データ同期部604でシ
ステム側のクロックに同期したデータを一時保持するた
めのもので、128ビット幅のデータをラッチできる。
セレクタ部606は、ラッチ部605でラッチされた1
28ビットのデータを、後述するシステム側のクロック
に同期して動作するシーケンサ610の指示に従い、1
28ビットのデータのうち、どの8ビットをDMAC部
607へのデータとして供給するかを決定するものであ
る。DMAC部607は、図1のDMAC部506に相
当するものであり、本実施例において、8ビットの入力
データをシステムバス側のデータバスに接続される主記
憶装置へデータ転送を行う目的で設けられている。昨今
では、システムデータバス幅として32ビットから64
ビットのものが主流であるが、本実施例では入力される
8ビットをシステムバスのデータ幅に拡張し、バスサイ
クルを発行する機能があるものとしている。この部分の
実現方法については、様々な方法が既に存在しているの
で詳細説明は割愛する。ただし、バイトアラインのデー
タ転送を実現するために、本実施例ではDMACそのも
ののデータ入力バス幅を説明の簡易化のために8ビット
としているが、この部分を、セレクタの出力バス幅(=
DMACへの入力データバス幅)を拡張して現在ドライ
ブされているデータバス上のデータの内、どのバイトラ
インがバリッドであるかを示す制御信号(バイトイネー
ブル信号として一般に良く用いられている)をもって、
バイトアラインのコントロールをしても勿論よい。以
上、データ同期部604、データラッチ部605、セレ
クタ部606、DMAC部607、およびシステム側の
制御を司るシーケンサ610は全てシステム側のクロッ
クに同期して動作する。次に、シーケンサ608、61
0は、図1に示すネットワーク側のシーケンサ508、
システム側のシーケンサ509に相当するものである
が、詳細動作については後述する。同期化部609は、
前記シーケンサ608、610の間のハンドシェークコ
ントロールの同期化を行うもので、説明の簡略化のた
め、以下の3ブロックに簡略化して記してある。1つ目
はネットワーク側シーケンサ608からのデータリード
リクエストのシステム側クロックへの同期化部であり、
2つ目はシステム側シーケンサ610から出力されるア
クノーレッジ信号のネットワーク側クロックへの同期化
部である。そして、3つ目はネットワーク側シーケンサ
608が出力するカウント値をシステム側シーケンサ6
10に伝搬するために、システム側クロックに同期化す
る同期化部である。ここでネットワーク側からのカウン
ト値の意味するところは、レジスタファイル部603に
データラッチされている8ビットデータ群のうち、どこ
までの8ビットデータがバリッドであるかを示すことに
なる。これは、例えば受信されるデータパケットのデー
タ受信終了後、トータル受信データ量がレジスタファイ
ル部603の出力バス幅である128ビットバウンダリ
(16バイトバウンダリ)にならないケースが存在する
わけで、その場合のバリッドデータをシステム側シーケ
ンサに伝える目的で備えられている。システム側シーケ
ンサ610は、この値を元に、有効なデータだけをラッ
チ部605からセレクタ部606を経由して読み出し、
DMAC部607にデータを格納/データ転送指示する
ことで、システム側主記憶装置にデータ転送が実現され
る。図3は、ネットワーク側のシーケンサの動作を示す
フローチャートであり、図4は、システム側のシーケン
サの動作を示すフローチャートである。また、図5は、
各々の動作シーケンスを表すタイミングチャートであ
り、後述するバーストリードサイクルを発行している場
合のものである。以下、これらの図に基づいて本実施例
の動作について説明していく。図3において、701で
は、シーケンサ608が初期設定を行う。具体的には各
ブロックの初期設定である。次の702では、FIFO
601からの出力記号であるCOUNTの出力値を常時
サンプリングしておき、FIFO601に格納されてい
るデータが0(データが無い状態)かどうかを検出す
る。702で、FIFO601にデータが滞っていない
と判断されれば、再び702へのループに入り、データ
がいくらか滞っていた場合、次の703へと進む。70
3では、702と同様にFIFOの出力であるCOUN
Tの値をサンプリングし、16バイト以上のデータが滞
っているかどうかを判断する。なお、ここでは説明のた
め、ステップ702と703を分けて記してあるが、こ
れに限定されず、これらのステップを同時判断しても良
い。そして、703で16バイト以上のデータがFIF
Oに格納されていると判断されれば704へ、そうでな
ければ705へと進む。703で16バイト以上のデー
タが滞っていると判断された場合、ネットワーク側シー
ケンサ608は16バイトのバーストリードをFIFO
601に対して発行する(704)。図5のタイミング
チャートでは、上からネットワーク側クロック(CLK
A)、MAC(図2には記していない)からのライトデ
ータ(DATA_A)、MACからのライト信号(W
R)、そしてシーケンサ608から出力されるリード信
号(RD)の順に記してあるが、FIFO601にバー
ストビート長である16バイト分のデータが格納されて
いると判断された時点で、ネットワーク側シーケンサ6
08がこのRD信号をバーストサイクルとして発行し、
FIFO601からの出力リードデータ(DATA_
B)がクロックCLKAに同期し確定して行くことにな
る。このように、704のステップでは、16バイト分
のデータがFIFO601より読み出されることにな
り、レイテンシーの向上の目的で、バーストサイクルを
発行している。この16バイトのデータ読み出しに従
い、シーケンサ608はFIFO601の出力データで
ある8ビットデータを、マルチプレクサ602を介して
128ビットのレジスタファイル部603のLSB側の
8ビットから順に詰め込み、128ビットのデータを一
時保存する。図5の901に示したポイントが、128
ビットのデータがレジスタファイル部603に確定した
時点である。また、前記703において、16バイト未
満のデータがFIFO601に格納されていると判断さ
れた場合は、705で、シングルリードサイクルを発行
することになる。この705のステップが設けられてい
る理由は、16バイトバウンダリ以外のデータを受信し
ている場合に、データの転送を実現するためである。通
常、16バイトバウンダリ以外のデータを受信する場合
で、データパケットの最終データ付近(データの末尾)
をシステム側にデータ転送する場合、もしくはデータ転
送開始直後(MACからのデータがFIFOに積み込ま
れ始めるが、しかし16バイト滞っていない状態)に、
このステップを通ることになる。シングルリードサイク
ル自体は、図5のタイミングチャートでは記しているい
が、1CLKAクロックのサイクルと同じタイミングで
RD信号がアクティブになり(最高CLKAの半分の周
波数になる)、連続読み出しではなく1バイト毎にデー
タをリードするということである。705において、シ
ングルリードサイクルを発行したシーケンサ608は、
読み出したデータを、現在シーケンサ608自体が保持
しているレジスタファイル部603への格納ポイント
(初期は0で最もLSB側の8ビット)へマルチプレク
サ602を経由して格納する。この格納が終了したなら
ば、シーケンサ608が保持しているレジスタファイル
部603への格納ポインタ(図3のCNT)はインクリ
メントされ、次にデータを格納すべきレジスタファイル
部603の位置をポインタに設定することになる。次に
705でシングルリードサイクルが発行され、1バイト
のデータが正しいレジスタファイルの位置に格納された
ならば、レジスタファイル部603の格納ポインタCN
Tが16であるかを判断する。すなわち、これはレジス
タファイル部603への格納が128ビット分終了した
か否かの判断になる。このステップで、16バイトのデ
ータシングルリードが終了したと判断された場合、前記
704でバーストリードが終了した場合と同様に708
へ進み、そうでない場合は707へと進む。707では
再び702と同様に、FIFO601にデータが格納さ
れているかを判断し、格納されていれば再び705でシ
ングルリードサイクルを発行する。また、システム側へ
転送すべきデータが128ビットバウンダリでない場合
を想定し、このステップでパケットデータの受信終了の
判断として、タイムアウトか否かの判断をしている(図
3のTOUT?)。なお、ここでは説明の簡略化のため
にタイムアウトでデータの受信終了を判断しているが、
MAC部502からのデータ受信終了信号を用いて、F
IFO601のEMPTY(データが滞っていない状
態)とともにデータ終了を検知してもよい。ただし、こ
の場合次のパケットとのギャップを考慮しなければなら
ない(MAC部でパケットの終了を検知し、最終データ
をFIFOから引き抜き終わる前に次のパケットのデー
タがFIFOに書き込まれることがあり、パケット終了
後、いずれはEMPTYになるものの、目的のパケット
の読み出しによるEMPTYが生じなくなるケースがあ
る)。707でタイムアウトが検出されたならば、デー
タ受信一時の終了と判断し、やはり704、706の各
ステップと同様に708へ進む。すなわち、16バイト
のデータリードが終了するか、タイムアウトが発生する
まで705、706、707を繰り返すことになる。7
08へと進むと、シーケンサ608は、システム側のシ
ーケンサ610へデータ転送要求信号であるREQ信号
をアサートする。図5のタイミングチャートでは901
として記してある。このREQ信号は、同期化部609
を通じて、システムクロックCLKBに同期され、シス
テム側のシーケンサ610へと伝搬することになる。次
に709へ進み、システム側シーケンサ610から同期
化部609を介して返されるACK信号をサンプリング
し、そのアサートされるのを待つ。ACKのアサートを
検知したならば、シーケンサ608はREQ信号をネゲ
ートする(710)。このREQのネゲートもアサート
同様、同期化部609を通じてシステム側シーケンサ6
10へ伝搬されることになる。次に711で、システム
側のシーケンサ610の同期化部609を介して返され
るACK信号のネゲートを待つ。そして、ACK信号が
ネゲートされたならば、REQ信号にて要求したデータ
転送がシステム側で終了したものとして、712に進
む。712では受信動作自体の終了を検知しており、終
了でなければ702のステップに戻り、次のデータ転送
に備えることになる。このステップは必ずしも必要では
なく、直接次のデータ受信に備え、702に進んでもよ
い。次に図4に基づいて、システム側シーケンサ610
の動作を説明する。まず、801でシステムクロック
(図5のCLKB)に同期して動作する各ブロックの初
期化を行う。これにはDMAC部607の転送先である
主記憶装置のアドレスや、データ転送長等を設定するこ
とも含まれ、具体的な設定方法は特に限定しないが、一
般的にはハードリセット後、あるアドレス空間にマップ
された各ブロックの設定レジスタに、CPU(ソフトウ
ェア)が各種設定値をデータとしたライトサイクルを発
行することで設定する。802では、前記ネットワーク
側のシーケンサ608からのデータ受信要求信号である
REQ信号を同期クロック(この場合、システムクロッ
クであるCLKB)でサンプリングし、アサートされる
のを待つ。802でREQ信号のアサートを検知する
と、803へ進み、ACK信号をアサートし、ネットワ
ーク側シーケンサ608に同期化部609を介してRE
Q信号の検知を知らせる。このACK信号が図3の70
9でネットワーク側シーケンサ608に検知されること
になる。次にREQ信号のアサート検知と同様に、ネッ
トワーク側シーケンサ608からの同期化後のCNT値
を評価し、16バイトのデータがレジスタファイル部6
03にセットされているか否かを判断する。ここでCN
Tの値が意味するところは、レジスタファイル部603
に設定されている有効データバイト数である。従って、
この時点でCNTの値をシステム側シーケンサ610が
評価するという前提で、ネットワーク側シーケンサ60
8は出力するCNT値とともに、タイミングを決定しな
ければならない。本例では、REQ信号のアサートと同
一タイミングでCNT値を決定しているものとし、従っ
て同期化部609を介してシステム側シーケンサに伝搬
されるタイミングはREQ信号と同一である。804で
16バイトのデータがレジスタファイルに設定されてい
ると判断された場合は805へ、そうでない場合は80
6へと進む。805では、その動作を開始するタイミン
グについては、レジスタファイル部603の128ビッ
トのデータが、同期部(フリップフロップ)604にて
システムクロックCLKBに同期化が終了し、128ビ
ットのデータラッチ605にラッチされているタイミン
グになる。システム側シーケンサ610はセレクタ部6
06を介してDMAC部607に8ビットデータを順次
セレクトし、DMAC部607にデータをバーストライ
トする。図5中、説明のためにDMAC部607へのデ
ータ格納信号であるライト信号をWR−Pとして記して
ある。このWR−P信号が16CLKBクロック間アサ
ートされ、1CLKBクロック毎にセレクタ部606の
セレクトソースをインクリメントすることになる。以
上、805のステップで同期化された128ビット/1
6バイトのデータがDMAC607に格納されることに
なる。なお、DMAC部607に格納されたデータは、
適宜システム内の主記憶装置にデータ転送される。前記
804にてCNT値が16バイトと検知されなかった場
合は、DMAC部607に対するデータライトサイクル
はシングルライトサイクルとなり、システムクロックC
LKB1サイクル分のWR−P信号アサートをもって1
バイトのデータがDMAC部607に格納される。従っ
てWR−Pのパルスは、最高CLKBの半分の動作周波
数となる。1バイトのデータがDMAC部607に格納
されたならば、804のステップで評価したCNTの値
から1を引き、同時にセレクタ部606のセレクトソー
スを次の8ビットデータに切り替える(807)。セレ
クトソースの値の切り替えについては、次の808のス
テップで行ってもよいが、いずれにせよ806のライト
動作に対し、次のライトサイクルのデータセットアップ
を保証する形でセレクトソースを切り替える必要がある
ことは言うまでもない。808では、前記807のステ
ップでデクリメントしたCNTを評価し、0であれば8
09へ、そうでなければ806へ進む。従って、上記8
06から807、808のステップを、ラッチ部605
に設定されている有効なデータ数分だけ行うことにな
る。なお、本実施例では説明を分かりやすくするため、
CNT値が16か否かで処理を振り分けて記してきた
が、バーストビート長が固定である必要がないデータ受
容部(この場合、DMAC部607)であれば、CNT
値に従いバーストビート長を有効データ数に合わせ、極
力バーストサイクルを発行することでレイテンシーの押
さえることが可能である。以上でネットワーク側シーケ
ンサ608とシステム側シーケンサ610との1回ハン
ドシェークによってDMAC部607へライトすべきデ
ータは全てDMACに格納されたことになり、809で
ネットワーク側シーケンサ608のREQ信号のネゲー
トを待つ。なお、ネットワーク側クロックCLKAとシ
ステムクロックCLKBの周波数の差に依存して、この
部分でREQが以前リクエスト状態で、ネゲートを待つ
という評価することはない(スルーしてしまう)ことも
考えられる。REQ信号のネゲートを検知したならば、
システム側シーケンサ610はACK信号をネゲート
し、同期化部609を介してネットワーク側シーケンサ
608に伝搬される(810)。これは図3のフローチ
ャートでは、711のステップでネットワーク側シーケ
ンサ608に検知されることになる。次に811のステ
ップでは、以上のステップでDMAC部607に格納さ
れたデータをシステムの主記憶装置にデータ転送を行
い、DMAの終了(この場合DMAサイクルの終了では
なく、DMACに設定されたデータ転送長の転送終了)
を判断し、終了でなければ、802にステップへ戻り、
次のデータのリードリクエストを待つことになる。以上
述べてきたように、本実施例では従来例のような1バイ
ト毎の同期化およびハンドシェイクを行うところを、1
6バイト毎に行うことで、同期化とハンドシェィクに伴
うペナルティを減少させ、データ転送レートを向上する
ことができ、受信の場合であれば、FIFOフル状態で
のライト動作(オーバラン)の回避に有効である。な
お、本実施例では、受信動作時について説明してきた
が、データ転送方向を逆に構築すれば、送信部を同様に
構成でき、同様の効果が期待できる。また、以上の実施
例では、レジスタファイル部603を128ビット/1
6バイト構成で説明してきたが、特にこれに限定される
ものではなく、ネットワークおよびシステム側のデータ
レートから、その幅を実装する機器に適合した形にすれ
ばよい。また、以上の実施例では、レジスタファイルの
データ幅に準拠して、非同期部のデータ受け渡しのハン
ドシェークをそのデータ幅で行っていたが、これに限ら
ず、例えば図6に示すようにパイプライン形式でさらに
レイテンシーを抑え込むことも可能である。図6は、図
2で示した構成を一部変更したもので、FIFO100
1がFIFO601、マルチプレクサ1002がマルチ
プレクサ602、レジスタファイル部1003がレジス
タファイル部603、データ同期部1004がデータ同
期部604、ラッチ部1005がラッチ部605、セレ
クタ部1006がセレクタ部606、DMAC部100
7がDMAC部607、ネットワーク側シーケンサ10
08がネットワーク側シーケンサ608、同期化部10
09が同期化部609、システム側シーケンサ1010
がシステム側シーケンサ610にそれぞれ相当してい
る。図2との差異は、同期化部1009で同期化する信
号が、REQ/ACKのハンドシェークではなく、ネッ
トワーク側シーケンサ1008の出力するFIFO10
01からリードされるデータの、レジスタファイル部1
003へのライトポインタと、システム側シーケンサ1
010のラッチ部1005から8ビットデータを引き抜
きDMAC部1007にセットする際のリードポインタ
という点であり、そのために各シーケンサ1008、1
010の処理が変更されている。図7は、この変更を加
えた際のネットワーク側シーケンサ1008の動作を示
すフローチャートであり、図8は、同システム側のシー
ケンサ1010の動作を示すフローチャートである。1
101で、シーケンサ1008は初期設定を行う。具体
的にはネットワーク側の各ブロックの初期設定を行う。
ここでネットワーク側シーケンサ1008のレジスタフ
ァイル1003へのデータ格納ポインタであるCNTの
値の初期値として0を与える。次の1102では、FI
FO1001からの出力信号であるCOUNTの出力値
を常時サンプリングしておき、FIFO1001に格納
されているデータが0(データが無い状態)かどうかを
検出する。1102でFIFO1001にデータが滞っ
ていないと判断されれば、再び1102へのループに入
り、データがいくらか滞っていた場合、次の1103へ
と進む。1103では、ネットワーク側シーケンサ10
08が指し示すレジスタファイル1003への格納ポイ
ンタ(図中CNTと記してある)と、システム側シーケ
ンサ1010が指し示すラッチ部1005からのデータ
リードポインタ(図中CNTBと記してある)を比較す
る。これはレジスタファイル部1003に格納された
後、データ同期部1004、ラッチ部1005、セレク
タ部1006を経由し、ネットワーク側シーケンサ10
08が指し示す格納ポインタCNTのデータがシステム
側シーケンサ1010によって引き抜かれ(具体的には
DMACへ転送され)、次の新たなバイトデータを上書
きすることにより、破棄して構わないかどうかを判断し
ている。CNT=CNTB?と言う判断理由について
は、図9に説明図として表を添付している。図9におい
て、上からネットワーク側データ格納ポインタCNT、
システム側読み出しポインタCNTB、そして、COU
NTと記してあるのはネットワーク側シーケンサ100
8がレジスタファイル部1003に格納可能なデータバ
イト数を表しており、図中網掛けで示すエリアは、シス
テム側シーケンサ1010がDMAC部1007に対す
る格納データとして、データの引き抜きを終了していな
い部分である。この3つのデータの組を具体例として1
4挙げ、表にしたものである。網掛けエリア以外の値を
使用しなければ、データ欠損が生じてしまうことにな
り、その境界であるCNT=CNTBが不確定エリア、
すなわち非同期で動作する格納側と読み出し側が重なる
危険性がある位置となる。そこで、この状態でのデータ
格納は行わないという判断を、1103のステップで行
っている。図9のCOUNTの値の算出の仕方について
は、後述する1105〜1107のステップで説明す
る。1103でCNT!=CNTBと判断されたなら
ば、1104のステップに進み、FIFO1001に対
し、ネットワーク側シーケンサ1008がFIFO10
01へのバーストリードサイクルを発行するだけのデー
タ数に達しているかどうかを判断する。ここでは具体的
に2バイト以上のデータはバーストリードサイクルが発
行可能であるため、それだけのデータが格納済か否かを
判断している。ここでバーストリードサイクルを発行可
能であると判断されれば1105へ、そうでなければ1
112へ進む。1105では、ネットワーク側の格納ポ
インタCNTと、システム側の読み出しポインタCNT
Bとを比較し、正数表記でどちらが大きな値かを判断し
ている。なお、システム側の読み出しポインタCNTB
については、既に1103でサンプリングを行った値を
用いるものとする。従って、CNT=CNTBはあり得
ないことになる。CNT>CNTBと判断されれば10
06へ、そうでなければ1107へ進む。1107で
は、テンポラリのバーストビート長であるBEATの値
を算出している。この場合CNT−CNTB−16+1
の値の絶対値である。一方、1108では、同じように
テンポラリのバーストビート長であるBEATの値を、
CNT−CNTBの絶対値に+1して算出する。これら
の算出ルール、並びに初期状態として、CNT=0、C
NTB=15、かつCNT、CNTBともに15進数で
ある制限をつけると、図9の値が算出されることにな
る。次に1108に進み、FIFO1001に格納され
ているデータ量FIFOと、前記1106もしくは11
07で算出されたビート長BEATの値を比較し、FI
FO<BEATであれば1109へ、そうでなければ1
109を経由せずに1110へと進む。1109ではB
EAT長をFIFO1001に格納されているデータ量
に変更する。BEAT長が確保できても、データがまだ
無い場合について対応するためである。1110では、
以上のステップで決定されたBEATの値に従い、その
データ長分のリードバーストサイクルを、ネットワーク
側シーケンサ1008がFIFO1001に対して発行
し、バーストサイクルのクロックに同期してマルチプレ
クサ1002を切り替えつつ、レジスタファイル100
3にデータを格納して行く。そして、リードサイクルが
終了したならば、CNTの値を発行したバーストビート
長BEAT分インクリメントする(1111)。次に1
114に進み、インクリメントされたCNTの値を評価
する。ここでは16以上の整数値かどうかを判断してい
る。ここで16未満と判断されたならば1116へ、そ
うでなければ1115へ進む。1115ではインクリメ
ントされたCNTの値を修正する。すなわち先に述べた
ようにCNT値がハンドシェークの基準として取り得る
値は0〜15であるため、CNT=CNT−16と言う
演算を行うことになる。なお、このCNT値は同期回路
を経由して信号としてシステム側シーケンサに伝搬され
るので、ここでは説明のためCNTの値の出力として1
6以上の値について判断するよう記してきたが、ネット
ワーク側シーケンサ1008の出力するCNT値につい
ては16以上の値を取ることが無いよう構成されてい
る。1116では、FIFO1001に新たなデータが
格納されているかどうかを判断し、格納されていれば1
103のステップへ戻る。また、パケットデータの終了
や、全処理の終了のため、本実施例ではタイムアウトを
検知し、FIFO1001にデータが格納されておら
ず、かつタイムアウトである場合には終了と判断するよ
う記してある。従って、機器構成によっては1116か
らのステップは無条件で直接1102へ帰還し、以上説
明してきた1002〜1015までをループする形をと
っても勿論構わない。一方、上述した1104のステッ
プでバーストサイクルを発行できないデータ量であると
判断された場合については、シングルリードサイクルを
FIFO1001に対して発行すべく、1112のステ
ップへ進み、このステップで1バイトのデータをレジス
タファイル1003へ格納する。ネットワーク側シーケ
ンサ1008の格納ポインタCNTとシステム側シーケ
ンサ1010の読み出しポインタCNTBの値について
は、既に1103のステップを経て格納可能であると判
断されているので、その格納最小単位である1バイトに
ついては無条件でレジスタファイル1003へ格納可能
となる。シングルリードをFIFO1001に対して発
行し、1バイトのデータをレジスタファイル1003に
格納したならば、読み出しポインタCNTの値をインク
リメントする(1113)。次に、インクリメントされ
たCNTの値を前記バーストサイクル時と同様に111
4のステップで評価し、続く処理へと進む。また特に記
してこなかったが、マルチプレクサ1002の切り替え
については、バーストビートアクセス、シングルアクセ
スともにアクセスサイクル数に準じてサイクリックにル
ープしていることは言うまでもなく、またネットワーク
側シーケンサ1008が出力するCNTの値の変化ポイ
ントは、レジスタファイル部1003への格納タイミン
グと同一で、従って同期化後のCNTのサンプリング結
果と、データラッチ1005にデータが格納されるタイ
ミングについては同一である。もしくは、システムシー
ケンサ1010のCNTサンプリングから動作を開始す
るまでのインターバルを考慮して矛盾のないタイミング
動作する範囲であれば適宜にタイミングを決定できる。
次に、図8のフローチャートに示すシステム側シーケン
サ1010の動作について説明する。まず、1201の
ステップでシステム側シーケンサ1010のコントロー
ルする各ブロックの初期化を行う。ここではWCNT=
0、CNTB=15と記してあるが、これが意味すると
ころは、ネットワーク側シーケンサ1008の出力する
CNTの値の初期値が0であり、システム側シーケンサ
の読み出しポインタの初期値が15ということである。
WCNTは、後述するステップで用いるテンポラリなレ
ジスタである。次に、1202のステップで、ネットワ
ーク側シーケンサ1008が同期部1009を介してシ
ステムクロックに同期したかたちで供給するCNTの値
と、前ステップで初期値として0が与えられているWC
NTの値を比較する。同一であれば、このステップで、
そうでなくなるまでのループとなる。これは、CNTの
値、すなわちネットワーク側のシーケンサ1008がレ
ジスタファイル1003に何らかのデータをセットした
か否か(CNTの値が変化したか否か)を判断するため
に用いられる。従って、次のステップ1203に進む際
は、WCNTをCNTの値に変更する。次に1203の
ステップでは、セレクタ部1006を介してラッチ部1
005からデータを読み出し、DMAC部1007にデ
ータを転送する際、そのサイクルをバーストサイクルで
行うか否かを判断している。具体的には図9に示すCO
UNTの値を計算し、15−COUNTの値をもって、
読み出し可能なデータバイト数を判断する。バースト可
能と判断されれば1204へ、そうでなければシングル
サイクルを発行すべく1207へ進む。1204では、
1203で計算した15−COUNTの値を、これから
システム側シーケンサ1010がDMAC部1007に
対して発行するバーストライトサイクルのビート長とし
て決定する。次に1205では、決定されたビート長の
バーストライトサイクルを発行し、ラッチ部1005か
らセレクタ部1006を経由してバイトデータをビート
長分DMAC部1007へ格納する。バーストライトサ
イクルが1205で終了したならば、CNTB=CNT
B+BEATの演算を行い、読み出しポインタCNTB
の値をビート長分インクリメントし(1206)、次の
1209のステップへ進む。1209では、前記ネット
ワーク側のシーケンサ1008の動作で説明したレジス
タファイル1003への格納ポインタCNTの操作と同
様に、読み出しポインタであるCNTBの値が16以上
か否かを判断し、そうであれば1210へ、16未満で
あれば1211へ進む。1209でCNTBの値が16
以上と判断されたならば、CNTB=CNTB−16の
演算を結果を持ってCNTBの値を更新する(121
0)。そして、1211のステップでネットワーク側の
処理全体を終了するか否かを判断し、継続であれば12
02のステップへ戻り、次のデータの処理を開始する。
なお、このステップは説明のために挿入された終了判断
のステップであり、実際には前記ステップでバーストサ
イクル発行中にDMAの設定データ転送量を満たしてし
まうケースもあり、このステップをシーケンサのステッ
プと独立させ、直接1209もしくは1210のステッ
プの後に1202のステップへ戻るループとしてもよ
い。DMAの終了検知は、あくまで説明のためである。
一方、前記1203のステップでバーストライトサイク
ルが発行できないと判断されたならば、シングルライト
サイクルを発行し(1207)、シングルビート長のバ
イト数、すなわち1をCNTBに対しインクリメントし
(1208)、バーストサイクルと同様にCNTBの値
の更新のステップである1209へと進む。以上述べて
きたように、これはFIFO1001のデータリードに
対して、マルチプレクサ1002、レジスタファイル部
1003およびデータ同期部1004を経て同期化を終
了し、ラッチ部1005がデータをLSB側から順次セ
ットされていく過程で、セットされたタイミングを見計
らって、そのセットされものから順次DMAC部100
7へライトするものである。一方、DMAC部1007
にライトされたデータのラッチ部1005の格納エリア
は既に解放可能であり、解放可能なエリアに次の同期化
されたデータを格納することで、非同期動作する回路間
を同期化回路を用いつつ、データ転送を実現したもの
で、いわゆるリングバッファの形態を取っている。な
お、以上の説明では各ウェイティングステップである1
103、1202の双方でのデッドロックについては特
に説明してこなかったが、それを回避するタイミング生
成を行っているものとしており、その実現は上記説明か
ら可能であることは明確である。また、以上で説明した
リングバッファ形式の実現方法についても、構成要素と
なるレジスタファイル部、同期部、データラッチ部等、
そのデータ幅は16バイトに限定されるものではなく、
一方、DMAC部とこれらのインターフェースもバイト
幅で接続を限定するものどはなく、機器の構成、データ
転送レート、コスト等に準じて適宜構成可能である。ま
た、以上の説明では、データ転送について受信時の動作
を説明してきたが、これに限定されるものではなく、デ
ータ転送の方向を逆に構成すれば、当然ネットワークへ
の送信部分にも利用可能である。また、本説明では、ネ
ットワークを例に取り説明してきたが、それに限定され
るものではなく、非同期形のデータ伝送系を用いる各種
システムにおいて有効であり、特に各部分を同期設計す
る必要があるASIC開発/設計時に有効である。
【発明の効果】以上説明したように、本発明によれば、
同期化するデータ単位を1同期化処理単位とすることに
より、同期化処理そのものの頻度を削減するとともに、
同期化に対するペナルティを削減することができること
から、非同期の基本クロックのみを用いながらも、同期
化に対するペナルティを極力減らし、パフォーマンスを
落とさずに、高速ネットワークにも対応したデータ転送
制御を実現できる効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例によるデータ転送制御装置の
基本構成を示すブロック図である。
【図2】本発明の第1実施例におけるデータ転送制御装
置の同期処理/ハンドシェーク部の詳細を示すブロック
図である。
【図3】上記第1実施例におけるネットワーク側シーケ
ンサの動作を示すフローチャートである。
【図4】上記第1実施例におけるシステム側シーケンサ
の動作を示すフローチャートである。
【図5】上記第1実施例における同期処理とハンドシェ
ークを行う場合の動作を示すタイミングチャートであ
る。
【図6】本発明の第2実施例におけるデータ転送制御装
置の同期処理/ハンドシェーク部の詳細を示すブロック
図である。
【図7】上記第2実施例におけるネットワーク側シーケ
ンサの動作を示すフローチャートである。
【図8】上記第2実施例におけるシステム側シーケンサ
の動作を示すフローチャートである。
【図9】上記第2実施例における同期処理とハンドシェ
ークを行う場合の動作を示すタイミングチャートであ
る。
【図10】従来のデータ転送制御装置の基本構成を示す
ブロック図である。
【図11】図10に示すデータ転送制御装置の同期処理
/ハンドシェーク部の詳細を示すブロック図である。
【図12】図10に示すデータ転送制御装置における動
作を示すタイミングチャートである。
【図13】図10に示すデータ転送制御装置における他
の動作を示すタイミングチャートである。
【符号の説明】
501…ネットワーク、 502…MAC部、 503…FIFO、 504…レジスタファイル部、 505…ラッチ部、 506…DMAC部、 507…データバス、 508…ネットワーク側シーケンサ、 509…システム側シーケンサ。
【手続補正書】
【提出日】平成10年12月15日(1998.12.
15)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】変更
【補正内容】
【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ホストコンピュー
タなどのデータ供給源からネットワーク等を経由してデ
ータを送受信し、データ処理を行う各種機器におけるリ
アルタイムデータ転送系の非同期系データ転送制御装置
および方法に関する。
【0002】
【従来の技術】一般に、データをネットワーク経由で送
受信し、そのデータを処理する機器においては、データ
送受信のための緩衝用バッファと、データ処理を行うた
め、その機器が保有する主記憶装置とは物理的に別々に
構成されている。
【0003】図10は、この種の機器におけるメモリシ
ステムの一般的な構成例を示すブロック図である。
【0004】ネットワーク101は、例えばイーサネッ
トに代表されるネットワークである。また、デバイス1
02は、ネットワークとしてイーサネットを例にした場
合、イーサネットコントローラとして一般に供給されて
いるものである。
【0005】このデバイス102は、公知であるため詳
細は省略するが、OSIモデルで規定されているデバイ
ス依存の物理インターフェースからデータを抽出する物
理層(Physical Layere Device、以下PHYと記す、ま
た一般にPHYは、PhysicalMedium Device(PM
D)、Physical Medium Attachment(PMA)、Physic
alCoding Sublayer(PCS)等からなっている)と、
データリンク層に相当するMedia Access
Control(MAC)とを、高速データ処理のため
にハードウェア化しているものであり、以下、これらを
総称してMACと記す。
【0006】RAM103は、送受信データの緩衝用バ
ッファになるメモリであり、MAC部102からのRA
M103への格納がリアルタイムに行われることにな
る。すなわち、MAC部102とRAM103のデータ
転送サイクルについては、ペナルティによるレイテンシ
ーが許されないので、上述のようにリアルタイムに行わ
れると表現しており、用いられる物理的なデバイス例と
してはSRAMが多く使われている。
【0007】シーケンサ104は、図10に示す各部を
制御するためのものであり、DMAC部105とMAC
部102がRAM103を共有アクセスする際のアービ
トレーション、並びにアクセスサイクルを制御するもの
である。
【0008】DMAC部105は、この例では緩衝用バ
ッファであるRAM103に受信の場合であれば格納さ
れた、また送信の場合であれば格納すべきデータを、機
器内部に備わる主記憶装置であるメモリ107(システ
ム内に内部バスを経由して接続される)との間で、デー
タの転送を実現するものである。DMAC自体の方式、
具体化方法は特に限定されない。
【0009】データバス106は、DMAC部105と
メモリ107の間のデータを伝送するバスであり、その
形式は様々であり、ここでは特定しなくとも良いが、一
般的にはシステムクロックに同期したバス形式である。
【0010】メモリ107は、主記憶装置であり、その
メモリエリアはデータ処理のためのワークエリアや、転
送すべきデータパケット群の生成、受信されたデータパ
ケット群の格納エリア等、システムの様々な目的で使用
されている。
【0011】ここで一般的に、ネットワーク101と内
部バス106とは動作クロックが異なり、すなわち非同
期で動作することが多い。従って機器内でデータの同期
化が必要となるわけであるが、この例では緩衝用バッフ
ァであるRAM103に非同期のSRAMを用い、シー
ケンサ104が非同期で動作するMAC部102とDM
AC部105とを調停して共有メモリの形でRAM10
3を使用している。
【0012】しかし、この場合の制限としては、RAM
103がシングルポートの非同期SRAMである場合に
は、MAC部102からの受信データ、またはMAC部
102への送信データのデータの連続性は保証されなけ
ればならないために、RAM103に最低1パケット分
のデータエリアを送受信別個のパスとして設ける必要が
ある。
【0013】そして、ネットワーク101がイーサネッ
ト10Baseの場合等、通常MAC部102の動作周
波数が、システムの内部バス106に比べて充分速い場
合については、シーケンサ104でMAC部102の1
サイクルの間に、複数回数のRAM103へのサイクル
を発行することで、タイムシェア形式でRAM103の
容量を削減したり、送受信のデータパスを共有すると行
った可能性が残るものの、ネットワーク101が100
Baseクラスになってくると、RAM103が非同期
のSRAMであるため、アクセスサイクルの絶対時間が
稼げない理由もあり、実現が難しくなってくる(一般に
非同期SRAMはアクセスが遅いと言える)。
【0014】図11は、RAM103をデュアルポート
化し、送受信を別系統のデータパスにした場合の受信側
の構成を示すブロック図である。
【0015】ネットワーク201は、ネットワーク10
1に相当するものであり、MAC部202は図10のM
AC部102に相当する。また、RAM203は、図1
0のRAM103に相当する緩衝用メモリであり、本例
ではデータアクセススピードを稼ぐためと、さらにはこ
れらの各部分をASIC等にワンチップ化する際の開発
の容易性/検証の容易性から同期式FIFOを用いてい
る。なお、現状では、ASICに内蔵されるデュアルポ
ート系のRAMのみならず、回路設計は同期設計が主流
である。
【0016】ラッチ部204は、非同期データの同期化
を行うために設けられているフリップフロップよりなる
ラッチ回路であり、一般に非同期信号を同期化し、メタ
スを取り除くためには一般にダブルラッチ(同期化する
側のクロックで動作するフリップフロップで2回ラッチ
させる)を行うが、このラッチ部204がこれを行う。
【0017】DMAC部205は図10のDMAC部1
05に相当するもので、前記同期化ラッチ部204でシ
ステムバスクロックに同期化されたデータを内部バスを
介して機器内の主記憶装置へ転送する。DMAC自体の
方式、具体化方法は特に限定されない。
【0018】データバス206は、図10のデータバス
106の内部バスに相当する内部バスで、このバスを経
由して受信データを主記憶装置へデータ転送する。
【0019】シーケンサ207は、MAC部202から
の受信データを、緩衝用メモリであるFIFO203へ
データ格納するための制御を司るものであり、シーケン
サ208は、システム側である前記DMAC部205お
よび同期化ラッチ部204の制御を司り、受信データの
主記憶装置への格納を実現するものである。
【0020】なお、前記シーケンサ207、208は、
データの受信に当たり、ハンドシェークを行うことで、
データの受け手に同期化されたデータの転送を実現して
いる。
【0021】図12は、図11に示す構成における動作
例を示すタイミングチャートであり、図中の信号名は、
CLKAがネットワーク側クロック、DATA_Aがネ
ットワーク側のデータでバスの状態で、具体的にはMA
C部202からFIFO203へ格納されるデータバス
である。
【0022】WR信号は、FIFO203へのライト信
号であり、クロック同期型FIFO203へのバースス
トライト(1クロックにつき1データの格納)を実現し
ており、図中「↑」で示した部分でデータを格納するこ
とになる。
【0023】次にRD信号は、前記同期型FIFO20
3からのデータリード信号であり、図中FIFOのデー
タバス幅のデータリードサイクルを2回発行している。
RD信号によるFIFO203から出力されるデータは
DATA_Bとして示されており、CLKAに同期して
データが出力される。
【0024】CLKBはシステム側のクロックであり、
前記同期化ラッチ部204並びにDMAC部205、シ
ーケンサ208がこのクロックで動作する。
【0025】DATA_Cは、FIFO203の出力デ
ータであるDATZ_Bをシステムクロックで同期化す
る際の、同期化が終了後のデータバスを示しており、図
12から分かるように、DATA_Bが確定した後、C
LKBの立ち上がりエッジ2回目でデータが確定してい
る。
【0026】次にREQ信号は、前記シーケンサ207
が同前記シーケンサ208に対して、データの取り込み
が終了し、システム側へデータの引き抜きを要求する要
求信号である。なお、この要求信号REQもデータと同
様に、CLKBによりシステムクロックに同期化され、
シーケンサ208へと伝達される。
【0027】REQ信号は、同期化の後、次のクロック
エッジでサンプリングされ、前記シーケンサ208がデ
ータの引き抜き要求を検知したことを前記シーケンサ2
07へ通知すべくACK信号をアサートする。
【0028】アサートされたACK信号は、今度はMA
C部202側の同期クロックであるCLKAに同期化さ
れ、前記シーケンサ207が前記シーケンサ208の出
力したACK信号を、ネットワーク側のクロックCLK
Aに同期化した後、次のCLKAのクロックエッジでサ
ンプリングし、同時に前記REQ信号をネゲートし、ハ
ンドシェイクが双方のシーンサ207、208に認知さ
れ、そのハンドシェークを終了するためのトリガをネッ
トワーク側シーケンサ207からシステム側シーケンサ
208へ通知している。
【0029】シーケンサ208によるネゲートされたR
EQ信号のサンプリングは、同様にREQ信号のネゲー
トからCLKBによる同期化を経て、次のクロックエッ
ジで行われ、シーケンサ207のリクエストサイクルが
終了したことをシーケンサ208からシーケンサ207
へ伝達するためにACK信号がネゲートされる。
【0030】シーケンサ208によりネゲートされたA
CK信号は、同様にCLKAで同期化の後、次のクロッ
クエッジでサンプリングされ、その時点でシーケンサ2
07が次のデータ転送のリクエストとしてREQ信号を
再びアサートすることが可能となり、以上で同期データ
転送単位のデータのハンドシェイクが終了することとな
る。
【0031】なお、WR_PはDMACへのデータレデ
ィ信号で、この信号のアサート状態のサンプリングによ
り、1データ単位を前記内部バス206を経由し、主記
憶メモリにデータ転送可能となり、処理系の都合に合わ
せてデータ転送を実現することになる。
【0032】
【発明が解決しようとする課題】図12に示したデータ
のハンドシェイクは一例であり、もしCLKAとCLK
Bとのサイクル時間差が限定されているのであれば、図
13のようにシーケンサ207が発行するFIFO20
3へのリードサイクル、すなわちRD信号のアサートタ
イミングと、シーケンサ208へのデータ引き抜き要求
であるREQ信号とを同時にアサートするなど、同期化
によるレイテンシーを短くする方策はあるが、抜本的な
対策にはならず、図12、図13からも分かるように、
1データ単位(イーサネットの場合、データはバイトバ
ウンダリで規定されているので、1データ単位は通常8
ビットとなる)のデータ転送に対し、CLKA、CLK
Bともにかなりのクロック数、すなわち時間がかかって
しまい、パフォーマンスが期待できない結果となってし
まう。
【0033】すなわち、緩衝用のメモリであるFIFO
203が充分容量を確保でき、パケットデータの取りこ
ぼし(FIFOがデータフルの状態で受信データがまだ
存在する場合)が防げればデータ受信は可能なものの、
FIFO自体が大容量になってしまうという欠点があ
る。
【0034】また、CLKAとCLKBのサイクル時間
の差がかなり大きく、CLKBがCLKAに対してかな
り高速で動作するのであれば、言い換えると、システム
の動作に対し、相対的にかなり遅いネットワークであれ
ば、これらデータ同期化によるペナルティはネットワー
クのデータレートによって隠蔽(見かけ上、表に出な
い)され、機器の構成が可能となるが、100Bas
e、さらにはより高速なネットワークに接続される場
合、これまでに説明してきたようにデータの同期化によ
るペナルティがクリティカルな要因となってくる。
【0035】また、ネットワーク側/システム側の各々
の基本クロックの数倍振同期クロックで同期化処理を行
うことも考えられるが、クロックスキュー/ASIC化
での検証問題があり、設計が困難になってくる。
【0036】本発明は、以上のような従来の欠点を除去
するためになされたもので、非同期の基本クロックのみ
を用いながらも、同期化に対するペナルティを極力減ら
し、パフォーマンスを落とさずに、高速ネットワークに
も対応した機器の提供を目的としている。
【0037】
【課題を解決するための手段】本発明は、所定のデータ
伝送系に対応する固定同期クロックで動作するインター
フェースと、前記固定同期クロックとは異なる同期クロ
ックで動作するデータ処理系とを有する非同期動作イン
ターフェースを備えるとともに、同期メモリを用いた緩
衝用バッファを備え、前記緩衝用バッファの容量を越え
るデータ量のデータ転送を前記非同期に動作するデータ
処理系内に行うリアルタイムデータ転送系の機器に設け
られる非同期系データ転送制御装置であって、前記同期
メモリからの出力を、そのデータ幅の整数倍にマルチプ
レクスするマルチプレクサ手段と、前記マルチプレクサ
手段からの出力を前記同期メモリのデータバス幅単位で
一時記憶し、かつ、前記マルチプレクサ手段と同様に前
記同期メモリのデータバス幅の整数倍のデータとして出
力する第1の一時記憶手段と、前記第1の一時記憶手段
からの出力された前記同期メモリの整数倍の出力データ
を、その出力同期クロックとは別の同期クロックに同期
化するデータ同期手段と、前記データ同期手段からの出
力を一時記憶する第2の一時記憶手段と、前記第2の一
時記憶手段からの出力データを所定の処理データ単位に
適宜に選択するセレクタ手段と、前記セレクタ手段によ
って選択された出力データをデータ転送するデータ転送
手段とを有することを特徴とする。
【0038】
【発明の実施の形態および実施例】本実施の形態では、
同期化するデータ単位をレジスタファイルに複数格納
し、複数格納したレジスタファイルを1同期化処理単位
にすることによって、同期化処理そのものの頻度を削減
するとともに、同期化に対するペナルティを削減するも
のである。
【0039】具体的に機器を実現するために、受信側に
ついては、同期化処理単位を拡張するためのデータ保持
手段と、前記同期化処理単位のデータ量が同期化処理単
位の正数倍にならない場合、後処理を行うための手段
と、前記緩衝用バッファであるFIFOに格納されてい
るデータ量を検知し、その数にしたがってバーストリー
ドを行うか否かを決定する決定手段とを設ける。
【0040】一方、送信側については同期化処理単位を
拡張するためのデータ保持手段と、同期化処理単位のデ
ータ量が同期化処理単位の正数倍にならない場合の後処
理を行うための手段と、前記緩衝用バッファであるFI
FOに格納されているデータ量を検知し、FIFOへの
データ格納を制御する手段と、全ての各手段を制御する
ための手段とを設ける。
【0041】以上のような構成により、緩衝用メモリの
容量を押さえつつ、高速な非同期系データ転送に対応し
た機器を提供することが可能である。
【0042】図1は、本発明の一実施例によるデータ転
送制御装置の概要を示すブロック図である。
【0043】ネットワーク501は、イーサネットに代
表されるネットワークであり、具体的には通信用のデー
タ線である。
【0044】MAC部502は、OSIモデルの物理層
とデータリンク層を一括して1ブロックにまとめたもの
であり、前記のようにPHYとMACから構成されてお
り、MACからの出力データ幅はイーサネットのデータ
バウンダリである8ビットである。
【0045】FIFO503は、緩衝用バッファとして
設けられている同期型FIFOであり、このFIFOネ
ットワークの受信動作周波数のクロックに同期してライ
ト/リードされている。
【0046】レジスタファイル部504は、前記FIF
O503からネットワーク側のクロックに同期して出力
される8ビットデータを、同ネットワーククロックに同
期して取り込むための128ビット構成のレジスタファ
イル部であり、FIFO503からの8ビット出力が1
6バイト分、LSB側から順次格納されていく。格納ポ
ジジョンの生成は、後述するシーケンサ508が行う。
【0047】ラッチ部505は、前記レジスタファイル
部504で出力される128ビットのデータを、システ
ムクロックで同期化するためのもので、メタス状態を消
すためにフリップフロップを用いてシステムクロックで
2回連続ラッチされているダブルラッチ構成となってい
る。
【0048】DMAC部506は、前記同期化ラッチ部
505で出力されるデータについて、システム内に備わ
る主記憶装置にデータ転送を実現するために設けられて
いるDMAコントローラ部であり、本実施例では受信デ
ータがバイトバウンダリであるために、説明の簡略化の
ため前記同期化ラッチ部505の出力を8ビットとし、
このDMAC部506がデータを受ける形で示してい
る。従って、前記同期化ラッチ部505で同期化の後、
LSB側から順次8ビットデータをセレクトし、DMA
C部506にバイトデータを送る形になる。これらの制
御は、後述するシーケンサ509が行う。なお、DMA
Cの実現方法については特に限定されることはない。
【0049】データバス507は、システムの内部バス
を表し、図には記載されていないが、システム内に備わ
る大容量の主記憶装置に接続され、DMAC部506か
ら主記憶装置へ格納すべきデータがここを通過する。
【0050】シーケンサ508は、ネットワーク側のク
ロックに同期して動作するシーケンサであり、ネットワ
ーク側のMAC部502、FIFO503、レジスタフ
ァイル部504を制御するとともに、以下に述べるシス
テム側のシーケンサ509とハンドシェイクのやり取り
も行う。
【0051】シーケンサ509は、システム側のクロッ
クに同期して動作するシーケンサであり、システム側の
同期化ラッチ部505、DMAC部506を制御し、前
記ネットワーク側シーケンサ508とのハンドシェイク
も行っている。
【0052】図2は、図1に示すデータ転送制御装置の
同期化部分における詳細を示すブロック図である。
【0053】FIFO601は、ネットワーク側のクロ
ックに同期して動作するFIFOであり、図1に示すF
IFO503に相当している。本実施例ではイーサネッ
トをネットワーク501に想定しており、MAC部50
2側からの受信データは8ビットバウンダリで本FIF
O601に格納される。FIFO601へのデータライ
トについては、MAC部502側からの同期クロックに
従い、パケット受信時はバーストライト(1クロックに
つき1バイトのライトの連続)が行われる。
【0054】一方、本FIFO601からのデータのリ
ードについては、同様にネットワーク側のクロックに同
期して、シングルリード(1バイトリード)およびバー
ストリード(1クロックにつき1バイトリードの連続)
とを適宜切り分けて使用することになる。そのために、
本FIFO601から後述するシーケンサ608に対
し、FIFO601に格納されているデータ数の情報
(図中COUNT)が与えられる形となっている。この
格納データ数情報の出力については、具体的には一般的
に用いられているFIFOのフラグが相当することにな
る。
【0055】次に、マルチプレクサ602とレジスタフ
ァイル部603により、上述したレジスタファイル部5
04を構成している。
【0056】マルチプレクサ602は、FIFO601
からの出力である8ビットのリードデータをシーケンサ
608の指示に従って、128ビットのデータ幅のどの
位置に出力するかを決定するものである。
【0057】レジスタファイル部603は、前記マルチ
プレクサ602の出力を一次保持(ラッチ)するための
もので、本実施例では128ビット構成のレジスタで示
している。
【0058】以上述べてきたFIFO601、マルチプ
レクサ602、レジスタファイル部603、および後述
するネットワーク側の制御を司るシーケンサ608は、
全てネットワーク側のクロックに同期して動作する同期
回路となる。
【0059】次に、データ同期部604、ラッチ部60
5、データセレクタ部606により、上述したラッチ部
505を構成している。
【0060】データ同期部604は、前記レジスタファ
イル部603から出力される128ビット幅のデータ
を、システム側のクロックに同期させる目的で備えられ
たものである。前記のように一般的にはダブルラッチ
(同期化させたいクロックのクロックエッジで動作する
フリップフロップにて、2段階以上打ち抜く)が用いら
れるが、本実施例でも同様の方策で同期化している。
【0061】ラッチ部605は、データ同期部604で
システム側のクロックに同期したデータを一時保持する
ためのもので、128ビット幅のデータをラッチでき
る。
【0062】セレクタ部606は、ラッチ部605でラ
ッチされた128ビットのデータを、後述するシステム
側のクロックに同期して動作するシーケンサ610の指
示に従い、128ビットのデータのうち、どの8ビット
をDMAC部607へのデータとして供給するかを決定
するものである。
【0063】DMAC部607は、図1のDMAC部5
06に相当するものであり、本実施例において、8ビッ
トの入力データをシステムバス側のデータバスに接続さ
れる主記憶装置へデータ転送を行う目的で設けられてい
る。
【0064】昨今では、システムデータバス幅として3
2ビットから64ビットのものが主流であるが、本実施
例では入力される8ビットをシステムバスのデータ幅に
拡張し、バスサイクルを発行する機能があるものとして
いる。この部分の実現方法については、様々な方法が既
に存在しているので詳細説明は割愛する。
【0065】ただし、バイトアラインのデータ転送を実
現するために、本実施例ではDMACそのもののデータ
入力バス幅を説明の簡易化のために8ビットとしている
が、この部分を、セレクタの出力バス幅(=DMACへ
の入力データバス幅)を拡張して現在ドライブされてい
るデータバス上のデータの内、どのバイトラインがバリ
ッドであるかを示す制御信号(バイトイネーブル信号と
して一般に良く用いられている)をもって、バイトアラ
インのコントロールをしても勿論よい。
【0066】以上、データ同期部604、データラッチ
部605、セレクタ部606、DMAC部607、およ
びシステム側の制御を司るシーケンサ610は全てシス
テム側のクロックに同期して動作する。
【0067】次に、シーケンサ608、610は、図1
に示すネットワーク側のシーケンサ508、システム側
のシーケンサ509に相当するものであるが、詳細動作
については後述する。
【0068】同期化部609は、前記シーケンサ60
8、610の間のハンドシェークコントロールの同期化
を行うもので、説明の簡略化のため、以下の3ブロック
に簡略化して記してある。
【0069】1つ目はネットワーク側シーケンサ608
からのデータリードリクエストのシステム側クロックへ
の同期化部であり、2つ目はシステム側シーケンサ61
0から出力されるアクノーレッジ信号のネットワーク側
クロックへの同期化部である。そして、3つ目はネット
ワーク側シーケンサ608が出力するカウント値をシス
テム側シーケンサ610に伝搬するために、システム側
クロックに同期化する同期化部である。
【0070】ここでネットワーク側からのカウント値の
意味するところは、レジスタファイル部603にデータ
ラッチされている8ビットデータ群のうち、どこまでの
8ビットデータがバリッドであるかを示すことになる。
【0071】これは、例えば受信されるデータパケット
のデータ受信終了後、トータル受信データ量がレジスタ
ファイル部603の出力バス幅である128ビットバウ
ンダリ(16バイトバウンダリ)にならないケースが存
在するわけで、その場合のバリッドデータをシステム側
シーケンサに伝える目的で備えられている。
【0072】システム側シーケンサ610は、この値を
元に、有効なデータだけをラッチ部605からセレクタ
部606を経由して読み出し、DMAC部607にデー
タを格納/データ転送指示することで、システム側主記
憶装置にデータ転送が実現される。
【0073】図3は、ネットワーク側のシーケンサの動
作を示すフローチャートであり、図4は、システム側の
シーケンサの動作を示すフローチャートである。また、
図5は、各々の動作シーケンスを表すタイミングチャー
トであり、後述するバーストリードサイクルを発行して
いる場合のものである。以下、これらの図に基づいて本
実施例の動作について説明していく。
【0074】図3において、701では、シーケンサ6
08が初期設定を行う。具体的には各ブロックの初期設
定である。
【0075】次の702では、FIFO601からの出
力記号であるCOUNTの出力値を常時サンプリングし
ておき、FIFO601に格納されているデータが0
(データが無い状態)かどうかを検出する。702で、
FIFO601にデータが滞っていないと判断されれ
ば、再び702へのループに入り、データがいくらか滞
っていた場合、次の703へと進む。
【0076】703では、702と同様にFIFOの出
力であるCOUNTの値をサンプリングし、16バイト
以上のデータが滞っているかどうかを判断する。なお、
ここでは説明のため、ステップ702と703を分けて
記してあるが、これに限定されず、これらのステップを
同時判断しても良い。
【0077】そして、703で16バイト以上のデータ
がFIFOに格納されていると判断されれば704へ、
そうでなければ705へと進む。
【0078】703で16バイト以上のデータが滞って
いると判断された場合、ネットワーク側シーケンサ60
8は16バイトのバーストリードをFIFO601に対
して発行する(704)。
【0079】図5のタイミングチャートでは、上からネ
ットワーク側クロック(CLKA)、MAC(図2には
記していない)からのライトデータ(DATA_A)、
MACからのライト信号(WR)、そしてシーケンサ6
08から出力されるリード信号(RD)の順に記してあ
るが、FIFO601にバーストビート長である16バ
イト分のデータが格納されていると判断された時点で、
ネットワーク側シーケンサ608がこのRD信号をバー
ストサイクルとして発行し、FIFO601からの出力
リードデータ(DATA_B)がクロックCLKAに同
期し確定して行くことになる。
【0080】このように、704のステップでは、16
バイト分のデータがFIFO601より読み出されるこ
とになり、レイテンシーの向上の目的で、バーストサイ
クルを発行している。この16バイトのデータ読み出し
に従い、シーケンサ608はFIFO601の出力デー
タである8ビットデータを、マルチプレクサ602を介
して128ビットのレジスタファイル部603のLSB
側の8ビットから順に詰め込み、128ビットのデータ
を一時保存する。図5の901に示したポイントが、1
28ビットのデータがレジスタファイル部603に確定
した時点である。
【0081】また、前記703において、16バイト未
満のデータがFIFO601に格納されていると判断さ
れた場合は、705で、シングルリードサイクルを発行
することになる。この705のステップが設けられてい
る理由は、16バイトバウンダリ以外のデータを受信し
ている場合に、データの転送を実現するためである。通
常、16バイトバウンダリ以外のデータを受信する場合
で、データパケットの最終データ付近(データの末尾)
をシステム側にデータ転送する場合、もしくはデータ転
送開始直後(MACからのデータがFIFOに積み込ま
れ始めるが、しかし16バイト滞っていない状態)に、
このステップを通ることになる。シングルリードサイク
ル自体は、図5のタイミングチャートでは記しているい
が、1CLKAクロックのサイクルと同じタイミングで
RD信号がアクティブになり(最高CLKAの半分の周
波数になる)、連続読み出しではなく1バイト毎にデー
タをリードするということである。
【0082】705において、シングルリードサイクル
を発行したシーケンサ608は、読み出したデータを、
現在シーケンサ608自体が保持しているレジスタファ
イル部603への格納ポイント(初期は0で最もLSB
側の8ビット)へマルチプレクサ602を経由して格納
する。この格納が終了したならば、シーケンサ608が
保持しているレジスタファイル部603への格納ポイン
タ(図3のCNT)はインクリメントされ、次にデータ
を格納すべきレジスタファイル部603の位置をポイン
タに設定することになる。
【0083】次に705でシングルリードサイクルが発
行され、1バイトのデータが正しいレジスタファイルの
位置に格納されたならば、レジスタファイル部603の
格納ポインタCNTが16であるかを判断する。すなわ
ち、これはレジスタファイル部603への格納が128
ビット分終了したか否かの判断になる。このステップ
で、16バイトのデータシングルリードが終了したと判
断された場合、前記704でバーストリードが終了した
場合と同様に708へ進み、そうでない場合は707へ
と進む。
【0084】707では再び702と同様に、FIFO
601にデータが格納されているかを判断し、格納され
ていれば再び705でシングルリードサイクルを発行す
る。また、システム側へ転送すべきデータが128ビッ
トバウンダリでない場合を想定し、このステップでパケ
ットデータの受信終了の判断として、タイムアウトか否
かの判断をしている(図3のTOUT?)。
【0085】なお、ここでは説明の簡略化のためにタイ
ムアウトでデータの受信終了を判断しているが、MAC
部502からのデータ受信終了信号を用いて、FIFO
601のEMPTY(データが滞っていない状態)とと
もにデータ終了を検知してもよい。ただし、この場合次
のパケットとのギャップを考慮しなければならない(M
AC部でパケットの終了を検知し、最終データをFIF
Oから引き抜き終わる前に次のパケットのデータがFI
FOに書き込まれることがあり、パケット終了後、いず
れはEMPTYになるものの、目的のパケットの読み出
しによるEMPTYが生じなくなるケースがある)。
【0086】707でタイムアウトが検出されたなら
ば、データ受信一時の終了と判断し、やはり704、7
06の各ステップと同様に708へ進む。すなわち、1
6バイトのデータリードが終了するか、タイムアウトが
発生するまで705、706、707を繰り返すことに
なる。
【0087】708へと進むと、シーケンサ608は、
システム側のシーケンサ610へデータ転送要求信号で
あるREQ信号をアサートする。図5のタイミングチャ
ートでは901として記してある。このREQ信号は、
同期化部609を通じて、システムクロックCLKBに
同期され、システム側のシーケンサ610へと伝搬する
ことになる。
【0088】次に709へ進み、システム側シーケンサ
610から同期化部609を介して返されるACK信号
をサンプリングし、そのアサートされるのを待つ。
【0089】ACKのアサートを検知したならば、シー
ケンサ608はREQ信号をネゲートする(710)。
このREQのネゲートもアサート同様、同期化部609
を通じてシステム側シーケンサ610へ伝搬されること
になる。
【0090】次に711で、システム側のシーケンサ6
10の同期化部609を介して返されるACK信号のネ
ゲートを待つ。そして、ACK信号がネゲートされたな
らば、REQ信号にて要求したデータ転送がシステム側
で終了したものとして、712に進む。
【0091】712では受信動作自体の終了を検知して
おり、終了でなければ702のステップに戻り、次のデ
ータ転送に備えることになる。このステップは必ずしも
必要ではなく、直接次のデータ受信に備え、702に進
んでもよい。
【0092】次に図4に基づいて、システム側シーケン
サ610の動作を説明する。
【0093】まず、801でシステムクロック(図5の
CLKB)に同期して動作する各ブロックの初期化を行
う。これにはDMAC部607の転送先である主記憶装
置のアドレスや、データ転送長等を設定することも含ま
れ、具体的な設定方法は特に限定しないが、一般的には
ハードリセット後、あるアドレス空間にマップされた各
ブロックの設定レジスタに、CPU(ソフトウェア)が
各種設定値をデータとしたライトサイクルを発行するこ
とで設定する。
【0094】802では、前記ネットワーク側のシーケ
ンサ608からのデータ受信要求信号であるREQ信号
を同期クロック(この場合、システムクロックであるC
LKB)でサンプリングし、アサートされるのを待つ。
【0095】802でREQ信号のアサートを検知する
と、803へ進み、ACK信号をアサートし、ネットワ
ーク側シーケンサ608に同期化部609を介してRE
Q信号の検知を知らせる。このACK信号が図3の70
9でネットワーク側シーケンサ608に検知されること
になる。
【0096】次にREQ信号のアサート検知と同様に、
ネットワーク側シーケンサ608からの同期化後のCN
T値を評価し、16バイトのデータがレジスタファイル
部603にセットされているか否かを判断する。ここで
CNTの値が意味するところは、レジスタファイル部6
03に設定されている有効データバイト数である。
【0097】従って、この時点でCNTの値をシステム
側シーケンサ610が評価するという前提で、ネットワ
ーク側シーケンサ608は出力するCNT値とともに、
タイミングを決定しなければならない。本例では、RE
Q信号のアサートと同一タイミングでCNT値を決定し
ているものとし、従って同期化部609を介してシステ
ム側シーケンサに伝搬されるタイミングはREQ信号と
同一である。
【0098】804で16バイトのデータがレジスタフ
ァイルに設定されていると判断された場合は805へ、
そうでない場合は806へと進む。
【0099】805では、その動作を開始するタイミン
グについては、レジスタファイル部603の128ビッ
トのデータが、同期部(フリップフロップ)604にて
システムクロックCLKBに同期化が終了し、128ビ
ットのデータラッチ605にラッチされているタイミン
グになる。
【0100】システム側シーケンサ610はセレクタ部
606を介してDMAC部607に8ビットデータを順
次セレクトし、DMAC部607にデータをバーストラ
イトする。図5中、説明のためにDMAC部607への
データ格納信号であるライト信号をWR−Pとして記し
てある。このWR−P信号が16CLKBクロック間ア
サートされ、1CLKBクロック毎にセレクタ部606
のセレクトソースをインクリメントすることになる。
【0101】以上、805のステップで同期化された1
28ビット/16バイトのデータがDMAC607に格
納されることになる。なお、DMAC部607に格納さ
れたデータは、適宜システム内の主記憶装置にデータ転
送される。
【0102】前記804にてCNT値が16バイトと検
知されなかった場合は、DMAC部607に対するデー
タライトサイクルはシングルライトサイクルとなり、シ
ステムクロックCLKB1サイクル分のWR−P信号ア
サートをもって1バイトのデータがDMAC部607に
格納される。従ってWR−Pのパルスは、最高CLKB
の半分の動作周波数となる。
【0103】1バイトのデータがDMAC部607に格
納されたならば、804のステップで評価したCNTの
値から1を引き、同時にセレクタ部606のセレクトソ
ースを次の8ビットデータに切り替える(807)。セ
レクトソースの値の切り替えについては、次の808の
ステップで行ってもよいが、いずれにせよ806のライ
ト動作に対し、次のライトサイクルのデータセットアッ
プを保証する形でセレクトソースを切り替える必要があ
ることは言うまでもない。
【0104】808では、前記807のステップでデク
リメントしたCNTを評価し、0であれば809へ、そ
うでなければ806へ進む。従って、上記806から8
07、808のステップを、ラッチ部605に設定され
ている有効なデータ数分だけ行うことになる。
【0105】なお、本実施例では説明を分かりやすくす
るため、CNT値が16か否かで処理を振り分けて記し
てきたが、バーストビート長が固定である必要がないデ
ータ受容部(この場合、DMAC部607)であれば、
CNT値に従いバーストビート長を有効データ数に合わ
せ、極力バーストサイクルを発行することでレイテンシ
ーの押さえることが可能である。
【0106】以上でネットワーク側シーケンサ608と
システム側シーケンサ610との1回ハンドシェークに
よってDMAC部607へライトすべきデータは全てD
MACに格納されたことになり、809でネットワーク
側シーケンサ608のREQ信号のネゲートを待つ。な
お、ネットワーク側クロックCLKAとシステムクロッ
クCLKBの周波数の差に依存して、この部分でREQ
が以前リクエスト状態で、ネゲートを待つという評価す
ることはない(スルーしてしまう)ことも考えられる。
【0107】REQ信号のネゲートを検知したならば、
システム側シーケンサ610はACK信号をネゲート
し、同期化部609を介してネットワーク側シーケンサ
608に伝搬される(810)。これは図3のフローチ
ャートでは、711のステップでネットワーク側シーケ
ンサ608に検知されることになる。
【0108】次に811のステップでは、以上のステッ
プでDMAC部607に格納されたデータをシステムの
主記憶装置にデータ転送を行い、DMAの終了(この場
合DMAサイクルの終了ではなく、DMACに設定され
たデータ転送長の転送終了)を判断し、終了でなけれ
ば、802にステップへ戻り、次のデータのリードリク
エストを待つことになる。
【0109】以上述べてきたように、本実施例では従来
例のような1バイト毎の同期化およびハンドシェイクを
行うところを、16バイト毎に行うことで、同期化とハ
ンドシェィクに伴うペナルティを減少させ、データ転送
レートを向上することができ、受信の場合であれば、F
IFOフル状態でのライト動作(オーバラン)の回避に
有効である。
【0110】なお、本実施例では、受信動作時について
説明してきたが、データ転送方向を逆に構築すれば、送
信部を同様に構成でき、同様の効果が期待できる。
【0111】また、以上の実施例では、レジスタファイ
ル部603を128ビット/16バイト構成で説明して
きたが、特にこれに限定されるものではなく、ネットワ
ークおよびシステム側のデータレートから、その幅を実
装する機器に適合した形にすればよい。
【0112】また、以上の実施例では、レジスタファイ
ルのデータ幅に準拠して、非同期部のデータ受け渡しの
ハンドシェークをそのデータ幅で行っていたが、これに
限らず、例えば図6に示すようにパイプライン形式でさ
らにレイテンシーを抑え込むことも可能である。
【0113】図6は、図2で示した構成を一部変更した
もので、FIFO1001がFIFO601、マルチプ
レクサ1002がマルチプレクサ602、レジスタファ
イル部1003がレジスタファイル部603、データ同
期部1004がデータ同期部604、ラッチ部1005
がラッチ部605、セレクタ部1006がセレクタ部6
06、DMAC部1007がDMAC部607、ネット
ワーク側シーケンサ1008がネットワーク側シーケン
サ608、同期化部1009が同期化部609、システ
ム側シーケンサ1010がシステム側シーケンサ610
にそれぞれ相当している。
【0114】図2との差異は、同期化部1009で同期
化する信号が、REQ/ACKのハンドシェークではな
く、ネットワーク側シーケンサ1008の出力するFI
FO1001からリードされるデータの、レジスタファ
イル部1003へのライトポインタと、システム側シー
ケンサ1010のラッチ部1005から8ビットデータ
を引き抜きDMAC部1007にセットする際のリード
ポインタという点であり、そのために各シーケンサ10
08、1010の処理が変更されている。
【0115】図7は、この変更を加えた際のネットワー
ク側シーケンサ1008の動作を示すフローチャートで
あり、図8は、同システム側のシーケンサ1010の動
作を示すフローチャートである。
【0116】1101で、シーケンサ1008は初期設
定を行う。具体的にはネットワーク側の各ブロックの初
期設定を行う。ここでネットワーク側シーケンサ100
8のレジスタファイル1003へのデータ格納ポインタ
であるCNTの値の初期値として0を与える。
【0117】次の1102では、FIFO1001から
の出力信号であるCOUNTの出力値を常時サンプリン
グしておき、FIFO1001に格納されているデータ
が0(データが無い状態)かどうかを検出する。110
2でFIFO1001にデータが滞っていないと判断さ
れれば、再び1102へのループに入り、データがいく
らか滞っていた場合、次の1103へと進む。
【0118】1103では、ネットワーク側シーケンサ
1008が指し示すレジスタファイル1003への格納
ポインタ(図中CNTと記してある)と、システム側シ
ーケンサ1010が指し示すラッチ部1005からのデ
ータリードポインタ(図中CNTBと記してある)を比
較する。
【0119】これはレジスタファイル部1003に格納
された後、データ同期部1004、ラッチ部1005、
セレクタ部1006を経由し、ネットワーク側シーケン
サ1008が指し示す格納ポインタCNTのデータがシ
ステム側シーケンサ1010によって引き抜かれ(具体
的にはDMACへ転送され)、次の新たなバイトデータ
を上書きすることにより、破棄して構わないかどうかを
判断している。
【0120】CNT=CNTB?と言う判断理由につい
ては、図9に説明図として表を添付している。
【0121】図9において、上からネットワーク側デー
タ格納ポインタCNT、システム側読み出しポインタC
NTB、そして、COUNTと記してあるのはネットワ
ーク側シーケンサ1008がレジスタファイル部100
3に格納可能なデータバイト数を表しており、図中網掛
けで示すエリアは、システム側シーケンサ1010がD
MAC部1007に対する格納データとして、データの
引き抜きを終了していない部分である。この3つのデー
タの組を具体例として14挙げ、表にしたものである。
【0122】網掛けエリア以外の値を使用しなければ、
データ欠損が生じてしまうことになり、その境界である
CNT=CNTBが不確定エリア、すなわち非同期で動
作する格納側と読み出し側が重なる危険性がある位置と
なる。そこで、この状態でのデータ格納は行わないとい
う判断を、1103のステップで行っている。図9のC
OUNTの値の算出の仕方については、後述する110
5〜1107のステップで説明する。
【0123】1103でCNT!=CNTBと判断され
たならば、1104のステップに進み、FIFO100
1に対し、ネットワーク側シーケンサ1008がFIF
O1001へのバーストリードサイクルを発行するだけ
のデータ数に達しているかどうかを判断する。ここでは
具体的に2バイト以上のデータはバーストリードサイク
ルが発行可能であるため、それだけのデータが格納済か
否かを判断している。ここでバーストリードサイクルを
発行可能であると判断されれば1105へ、そうでなけ
れば1112へ進む。
【0124】1105では、ネットワーク側の格納ポイ
ンタCNTと、システム側の読み出しポインタCNTB
とを比較し、正数表記でどちらが大きな値かを判断して
いる。なお、システム側の読み出しポインタCNTBに
ついては、既に1103でサンプリングを行った値を用
いるものとする。従って、CNT=CNTBはあり得な
いことになる。CNT>CNTBと判断されれば100
6へ、そうでなければ1107へ進む。
【0125】1107では、テンポラリのバーストビー
ト長であるBEATの値を算出している。この場合CN
T−CNTB−16+1の値の絶対値である。
【0126】一方、1108では、同じようにテンポラ
リのバーストビート長であるBEATの値を、CNT−
CNTBの絶対値に+1して算出する。これらの算出ル
ール、並びに初期状態として、CNT=0、CNTB=
15、かつCNT、CNTBともに15進数である制限
をつけると、図9の値が算出されることになる。
【0127】次に1108に進み、FIFO1001に
格納されているデータ量FIFOと、前記1106もし
くは1107で算出されたビート長BEATの値を比較
し、FIFO<BEATであれば1109へ、そうでな
ければ1109を経由せずに1110へと進む。
【0128】1109ではBEAT長をFIFO100
1に格納されているデータ量に変更する。BEAT長が
確保できても、データがまだ無い場合について対応する
ためである。
【0129】1110では、以上のステップで決定され
たBEATの値に従い、そのデータ長分のリードバース
トサイクルを、ネットワーク側シーケンサ1008がF
IFO1001に対して発行し、バーストサイクルのク
ロックに同期してマルチプレクサ1002を切り替えつ
つ、レジスタファイル1003にデータを格納して行
く。
【0130】そして、リードサイクルが終了したなら
ば、CNTの値を発行したバーストビート長BEAT分
インクリメントする(1111)。
【0131】次に1114に進み、インクリメントされ
たCNTの値を評価する。ここでは16以上の整数値か
どうかを判断している。ここで16未満と判断されたな
らば1116へ、そうでなければ1115へ進む。
【0132】1115ではインクリメントされたCNT
の値を修正する。すなわち先に述べたようにCNT値が
ハンドシェークの基準として取り得る値は0〜15であ
るため、CNT=CNT−16と言う演算を行うことに
なる。なお、このCNT値は同期回路を経由して信号と
してシステム側シーケンサに伝搬されるので、ここでは
説明のためCNTの値の出力として16以上の値につい
て判断するよう記してきたが、ネットワーク側シーケン
サ1008の出力するCNT値については16以上の値
を取ることが無いよう構成されている。
【0133】1116では、FIFO1001に新たな
データが格納されているかどうかを判断し、格納されて
いれば1103のステップへ戻る。また、パケットデー
タの終了や、全処理の終了のため、本実施例ではタイム
アウトを検知し、FIFO1001にデータが格納され
ておらず、かつタイムアウトである場合には終了と判断
するよう記してある。従って、機器構成によっては11
16からのステップは無条件で直接1102へ帰還し、
以上説明してきた1002〜1015までをループする
形をとっても勿論構わない。
【0134】一方、上述した1104のステップでバー
ストサイクルを発行できないデータ量であると判断され
た場合については、シングルリードサイクルをFIFO
1001に対して発行すべく、1112のステップへ進
み、このステップで1バイトのデータをレジスタファイ
ル1003へ格納する。ネットワーク側シーケンサ10
08の格納ポインタCNTとシステム側シーケンサ10
10の読み出しポインタCNTBの値については、既に
1103のステップを経て格納可能であると判断されて
いるので、その格納最小単位である1バイトについては
無条件でレジスタファイル1003へ格納可能となる。
【0135】シングルリードをFIFO1001に対し
て発行し、1バイトのデータをレジスタファイル100
3に格納したならば、読み出しポインタCNTの値をイ
ンクリメントする(1113)。
【0136】次に、インクリメントされたCNTの値を
前記バーストサイクル時と同様に1114のステップで
評価し、続く処理へと進む。また特に記してこなかった
が、マルチプレクサ1002の切り替えについては、バ
ーストビートアクセス、シングルアクセスともにアクセ
スサイクル数に準じてサイクリックにループしているこ
とは言うまでもなく、またネットワーク側シーケンサ1
008が出力するCNTの値の変化ポイントは、レジス
タファイル部1003への格納タイミングと同一で、従
って同期化後のCNTのサンプリング結果と、データラ
ッチ1005にデータが格納されるタイミングについて
は同一である。
【0137】もしくは、システムシーケンサ1010の
CNTサンプリングから動作を開始するまでのインター
バルを考慮して矛盾のないタイミング動作する範囲であ
れば適宜にタイミングを決定できる。
【0138】次に、図8のフローチャートに示すシステ
ム側シーケンサ1010の動作について説明する。
【0139】まず、1201のステップでシステム側シ
ーケンサ1010のコントロールする各ブロックの初期
化を行う。ここではWCNT=0、CNTB=15と記
してあるが、これが意味するところは、ネットワーク側
シーケンサ1008の出力するCNTの値の初期値が0
であり、システム側シーケンサの読み出しポインタの初
期値が15ということである。WCNTは、後述するス
テップで用いるテンポラリなレジスタである。
【0140】次に、1202のステップで、ネットワー
ク側シーケンサ1008が同期部1009を介してシス
テムクロックに同期したかたちで供給するCNTの値
と、前ステップで初期値として0が与えられているWC
NTの値を比較する。同一であれば、このステップで、
そうでなくなるまでのループとなる。これは、CNTの
値、すなわちネットワーク側のシーケンサ1008がレ
ジスタファイル1003に何らかのデータをセットした
か否か(CNTの値が変化したか否か)を判断するため
に用いられる。従って、次のステップ1203に進む際
は、WCNTをCNTの値に変更する。
【0141】次に1203のステップでは、セレクタ部
1006を介してラッチ部1005からデータを読み出
し、DMAC部1007にデータを転送する際、そのサ
イクルをバーストサイクルで行うか否かを判断してい
る。具体的には図9に示すCOUNTの値を計算し、1
5−COUNTの値をもって、読み出し可能なデータバ
イト数を判断する。バースト可能と判断されれば120
4へ、そうでなければシングルサイクルを発行すべく1
207へ進む。
【0142】1204では、1203で計算した15−
COUNTの値を、これからシステム側シーケンサ10
10がDMAC部1007に対して発行するバーストラ
イトサイクルのビート長として決定する。
【0143】次に1205では、決定されたビート長の
バーストライトサイクルを発行し、ラッチ部1005か
らセレクタ部1006を経由してバイトデータをビート
長分DMAC部1007へ格納する。
【0144】バーストライトサイクルが1205で終了
したならば、CNTB=CNTB+BEATの演算を行
い、読み出しポインタCNTBの値をビート長分インク
リメントし(1206)、次の1209のステップへ進
む。
【0145】1209では、前記ネットワーク側のシー
ケンサ1008の動作で説明したレジスタファイル10
03への格納ポインタCNTの操作と同様に、読み出し
ポインタであるCNTBの値が16以上か否かを判断
し、そうであれば1210へ、16未満であれば121
1へ進む。
【0146】1209でCNTBの値が16以上と判断
されたならば、CNTB=CNTB−16の演算を結果
を持ってCNTBの値を更新する(1210)。
【0147】そして、1211のステップでネットワー
ク側の処理全体を終了するか否かを判断し、継続であれ
ば1202のステップへ戻り、次のデータの処理を開始
する。なお、このステップは説明のために挿入された終
了判断のステップであり、実際には前記ステップでバー
ストサイクル発行中にDMAの設定データ転送量を満た
してしまうケースもあり、このステップをシーケンサの
ステップと独立させ、直接1209もしくは1210の
ステップの後に1202のステップへ戻るループとして
もよい。DMAの終了検知は、あくまで説明のためであ
る。
【0148】一方、前記1203のステップでバースト
ライトサイクルが発行できないと判断されたならば、シ
ングルライトサイクルを発行し(1207)、シングル
ビート長のバイト数、すなわち1をCNTBに対しイン
クリメントし(1208)、バーストサイクルと同様に
CNTBの値の更新のステップである1209へと進
む。
【0149】以上述べてきたように、これはFIFO1
001のデータリードに対して、マルチプレクサ100
2、レジスタファイル部1003およびデータ同期部1
004を経て同期化を終了し、ラッチ部1005がデー
タをLSB側から順次セットされていく過程で、セット
されたタイミングを見計らって、そのセットされものか
ら順次DMAC部1007へライトするものである。
【0150】一方、DMAC部1007にライトされた
データのラッチ部1005の格納エリアは既に解放可能
であり、解放可能なエリアに次の同期化されたデータを
格納することで、非同期動作する回路間を同期化回路を
用いつつ、データ転送を実現したもので、いわゆるリン
グバッファの形態を取っている。
【0151】なお、以上の説明では各ウェイティングス
テップである1103、1202の双方でのデッドロッ
クについては特に説明してこなかったが、それを回避す
るタイミング生成を行っているものとしており、その実
現は上記説明から可能であることは明確である。
【0152】また、以上で説明したリングバッファ形式
の実現方法についても、構成要素となるレジスタファイ
ル部、同期部、データラッチ部等、そのデータ幅は16
バイトに限定されるものではなく、一方、DMAC部と
これらのインターフェースもバイト幅で接続を限定する
ものどはなく、機器の構成、データ転送レート、コスト
等に準じて適宜構成可能である。
【0153】また、以上の説明では、データ転送につい
て受信時の動作を説明してきたが、これに限定されるも
のではなく、データ転送の方向を逆に構成すれば、当然
ネットワークへの送信部分にも利用可能である。
【0154】また、本説明では、ネットワークを例に取
り説明してきたが、それに限定されるものではなく、非
同期形のデータ伝送系を用いる各種システムにおいて有
効であり、特に各部分を同期設計する必要があるASI
C開発/設計時に有効である。
【0155】
【発明の効果】以上説明したように、本発明によれば、
同期化するデータ単位を1同期化処理単位とすることに
より、同期化処理そのものの頻度を削減するとともに、
同期化に対するペナルティを削減することができること
から、非同期の基本クロックのみを用いながらも、同期
化に対するペナルティを極力減らし、パフォーマンスを
落とさずに、高速ネットワークにも対応したデータ転送
制御を実現できる効果がある。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 所定のデータ伝送系に対応する固定同期
    クロックで動作するインターフェースと、前記固定同期
    クロックとは異なる同期クロックで動作するデータ処理
    系とを有する非同期動作インターフェースを備えるとと
    もに、同期メモリを用いた緩衝用バッファを備え、前記
    緩衝用バッファの容量を越えるデータ量のデータ転送を
    前記非同期に動作するデータ処理系内に行うリアルタイ
    ムデータ転送系の機器に設けられる非同期系データ転送
    制御装置であって、 前記同期メモリからの出力を、そのデータ幅の整数倍に
    マルチプレクスするマルチプレクサ手段と、 前記マルチプレクサ手段からの出力を前記同期メモリの
    データバス幅単位で一時記憶し、かつ、前記マルチプレ
    クサ手段と同様に前記同期メモリのデータバス幅の整数
    倍のデータとして出力する第1の一時記憶手段と、 前記第1の一時記憶手段からの出力された前記同期メモ
    リの整数倍の出力データを、その出力同期クロックとは
    別の同期クロックに同期化するデータ同期手段と、 前記データ同期手段からの出力を一時記憶する第2の一
    時記憶手段と、 前記第2の一時記憶手段からの出力データを所定の処理
    データ単位に適宜に選択するセレクタ手段と、 前記セレクタ手段によって選択された出力データをデー
    タ転送するデータ転送手段と、 を有することを特徴とする非同期系データ転送制御装
    置。
  2. 【請求項2】 請求項1において、 前記各手段に設けられ、各々の異なる同期クロックに同
    期して制御する複数の制御手段と、 前記複数の制御手段の間でハンドシェークを行うハンド
    シェーク手段と、 前記ハンドシェークのための信号を検知し、方向別に受
    手の同期クロックに同期化させる同期制御手段と、 を有することを特徴とする非同期系データ転送制御装
    置。
  3. 【請求項3】 所定のデータ伝送系に対応する固定同期
    クロックで動作するインターフェースと、前記固定同期
    クロックとは異なる同期クロックで動作するデータ処理
    系とを有する非同期動作インターフェースを備えるとと
    もに、同期メモリを用いた緩衝用バッファを備え、前記
    緩衝用バッファの容量を越えるデータ量のデータ転送を
    前記非同期に動作するデータ処理系内に行うリアルタイ
    ムデータ転送系機器の非同期系データ転送制御方法であ
    って、 前記同期メモリからの出力を、そのデータ幅の整数倍に
    マルチプレクスするとともに、このマルチプレクスによ
    り得られた出力を前記同期メモリのデータバス幅単位で
    一時記憶し、次に、この一時記憶した前記同期メモリの
    整数倍のデータを出力して、その出力同期クロックとは
    別の同期クロックに同期化して一時記憶し、この一時記
    憶したデータを所定の処理データ単位に適宜に選択し、
    この出力データをデータ転送するようにしたことを特徴
    とする非同期系データ転送制御方法。
JP10348440A 1998-12-08 1998-12-08 リアルタイムデータ転送系の非同期系データ転送制御装置および方法 Pending JP2000172636A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10348440A JP2000172636A (ja) 1998-12-08 1998-12-08 リアルタイムデータ転送系の非同期系データ転送制御装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10348440A JP2000172636A (ja) 1998-12-08 1998-12-08 リアルタイムデータ転送系の非同期系データ転送制御装置および方法

Publications (1)

Publication Number Publication Date
JP2000172636A true JP2000172636A (ja) 2000-06-23

Family

ID=18397025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10348440A Pending JP2000172636A (ja) 1998-12-08 1998-12-08 リアルタイムデータ転送系の非同期系データ転送制御装置および方法

Country Status (1)

Country Link
JP (1) JP2000172636A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189696A (ja) * 2000-09-29 2002-07-05 Fluke Networks Inc 異なるタイプの装置間において高速でデータを転送するための方法および装置
JP2005518018A (ja) * 2002-02-12 2005-06-16 フルクラム・マイクロシステムズ・インコーポレーテッド 非同期及び同期領域間の変換を促進する手法
JP2005333481A (ja) * 2004-05-20 2005-12-02 Nec Electronics Corp データ転送装置及び通信データ処理システム
JP2007317066A (ja) * 2006-05-29 2007-12-06 Kawasaki Microelectronics Kk データ転送回路
CN114218139A (zh) * 2021-12-15 2022-03-22 北京航天控制仪器研究所 一种基于实时操作系统和fpga的仿真转台高速同步采集方法
CN114665921A (zh) * 2020-12-23 2022-06-24 徐正平 一种使用多个电磁波频率非同步跳变通信的实现方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189696A (ja) * 2000-09-29 2002-07-05 Fluke Networks Inc 異なるタイプの装置間において高速でデータを転送するための方法および装置
JP2005518018A (ja) * 2002-02-12 2005-06-16 フルクラム・マイクロシステムズ・インコーポレーテッド 非同期及び同期領域間の変換を促進する手法
JP2005333481A (ja) * 2004-05-20 2005-12-02 Nec Electronics Corp データ転送装置及び通信データ処理システム
JP4567373B2 (ja) * 2004-05-20 2010-10-20 ルネサスエレクトロニクス株式会社 データ転送装置及び通信データ処理システム
JP2007317066A (ja) * 2006-05-29 2007-12-06 Kawasaki Microelectronics Kk データ転送回路
CN114665921A (zh) * 2020-12-23 2022-06-24 徐正平 一种使用多个电磁波频率非同步跳变通信的实现方法
CN114218139A (zh) * 2021-12-15 2022-03-22 北京航天控制仪器研究所 一种基于实时操作系统和fpga的仿真转台高速同步采集方法

Similar Documents

Publication Publication Date Title
JP3712471B2 (ja) コンピュータシステム及び第1の回路と第2の回路との間でデータを転送するインタフェース回路
US6161160A (en) Network interface device architecture for storing transmit and receive data in a random access buffer memory across independent clock domains
US8867573B2 (en) Transferring data between asynchronous clock domains
US5487092A (en) System for high-speed synchronization across clock domains
JP4427214B2 (ja) 非同期転送モードにおけるホスト・プロセッサおよびディジタル信号プロセッサ間転送用インターフェース・ユニット、およびこれを用いたデータ処理システム
US7352836B1 (en) System and method of cross-clock domain rate matching
US6865241B1 (en) Method and apparatus for sampling digital data at a virtually constant rate, and transferring that data into a non-constant sampling rate device
US6154796A (en) Apparatus and method in a network interface device for storing receiving frame status in a holding register
US10038450B1 (en) Circuits for and methods of transmitting data in an integrated circuit
US6226698B1 (en) Method and apparatus for dynamically calculating degrees of fullness of a synchronous FIFO
JP2004510216A (ja) 混合された非同期および同期システム用少待ち時間fifo回路
WO1999015981A1 (en) Fast 16-bit, split transaction i/o bus
WO2014131273A1 (zh) 数据传输方法、装置及直接存储器存取
US20060209784A1 (en) Methods and apparatus for controlling ethernet packet transfers between clock domains
WO2022045144A1 (ja) 通信装置、通信システム及び通信方法
JP2000172636A (ja) リアルタイムデータ転送系の非同期系データ転送制御装置および方法
US8131967B2 (en) Asynchronous data interface
US6473818B1 (en) Apparatus and method in a network interface device for asynchronously generating SRAM full and empty flags using coded read and write pointer values
WO2008083916A1 (en) Asynchronous data interface
KR100346675B1 (ko) 클럭 동기방법과 그 방법에 사용하기 위한 장치
EP1317085B1 (en) A method and circuit for initializing a de-skewing buffer in a clock forwarded system
US8555104B2 (en) Frequency adapter utilized in high-speed internal buses
JP3475857B2 (ja) ソースシンクロナス転送方式
US7248661B1 (en) Data transfer between phase independent clock domains
EP0752642A1 (en) Method and apparatus for dynamically calculating degrees of fullness of a synchronous fifo