(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
通信技術においては、データの整合性を担保するために、受信したデータをそのまま送信元に返送するループバックがしばしば行われる。例えばOSI参照モデルのデータリンク層にあるイーサネット(登録商標)やトランスポート層にあるTCPプロトコルではループバックを行っている。
【0003】
ループバック処理を行う際には、受信したMACフレームやパケットに含まれた宛先アドレスと送信元アドレスとをスワップ処理(交換)してから送信する。現在、かかるスワップ処理は、一般にストア・アンド・フォワード方式で実現されている。MACフレームには、宛先アドレスおよび送信元アドレスがこの順で含まれている。ストア・アンド・フォワード方式では、まず受信フレーム1フレーム分を受信メモリ(FIFO)からリードし、これをループバックメモリに格納する。そして、ループバックメモリに格納された受信フレームを送信元アドレス、宛先アドレス、ペイロードの順にリードすることでスワップ処理を実現する。
【0004】
しかし、特許文献1にも記載されているように、ストア・アンド・フォワード方式では、メモリの容量(ループバックメモリ)が多く必要になる。また、ストア・アンド・フォワード方式では、ループバックメモリに一度格納するため、受信フレーム長に比例して処理時間が増大してしまう問題がある。特許文献1では、データフレームの中のテストデータフレームを認識し、テストデータフレームから宛先および送信元アドレスを抽出して、宛先および送信元アドレスが交換された新しいテストデータフレームを生成し、ペイロードと結合することが提案されている。これにより、ストア・アンド・フォワード方式のように追加のメモリ記憶装置を必要とせず(ペイロード分のメモリ容量を削減できるため)、スワップ処理を実現するとしている。
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1ではテストデータフレームから抽出および処理を行って、宛先および送信元アドレスをスワップしたMACヘッダ、IPヘッダ、およびその他のデータを含むテストデータフレームを生成すると述べている(段落0020)。したがってプログラムが動作してスワップ処理を行う必要があり、高速化の妨げとなり、また高速に動作する高価なCPUが必要になったり、高速動作のために消費電力の増加を招いたりするおそれがある。
【0007】
ここで、受信フレームに宛先アドレスおよび送信元アドレスがこの順で含まれているところ、単純に送信元アドレスから先に読み出せば、スワップ処理が実現可能であるとも言える。しかしながらFIFOは先入れ先出しであるため、後のアドレスから先にリードすることはできない。なお受信メモリがRAMではなくFIFOである理由は、FIFOであればデータ長を指定するだけで読み出しを連続させることができるため、機器のファームウェア(プログラム)の構成が簡略化できるからである。すなわちFIFOを用いる限りリード順によってスワップ処理を行うことはできず、RAMを用いればそれは可能になるけれども、ファームウェアが複雑化するという問題がある。
【0008】
本発明は、上記課題に鑑み、ストア・アンド・フォワード方式によらずスワップ処理を可能にし、メモリの削減及び処理時間の大幅な短縮を実現するループバック回路を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために本発明の代表的な構成は、宛先アドレスと送信元アドレスがこの順に含まれる受信フレームをループバックするループバック回路において、受信フレームを格納した受信メモリと、自局のアドレスを供給する自局アドレス供給部と、受信メモリからリードした受信フレームを遅延させて出力するフレーム遅延シフタと、受信フレームまたは自局のアドレスと、遅延した受信フレームとが入力される複数のセレクタとを備え、
フレーム遅延シフタは、受信フレームを1段遅延させて出力する第1シフタと、第1シフタの下流側に配置され第1シフタの出力をさらに1段遅延させる第2シフタとを含み、複数のセレクタは、
第1シフタと第2シフタとの間、および第2シフタの下流側にそれぞれ配置され、遅延した受信フレームの宛先アドレスを受信フレームの送信元アドレスに置換すると共に、遅延した受信フレームの送信元アドレスを自局のアドレスに置換することを特徴とする。
【0010】
上記構成によれば、シフタとセレクタとを利用して、すなわちプログラム処理を行うことなくハードウェアのみによって、遅延した受信フレームの宛先アドレスを送信元アドレスに置換し、遅延した受信フレームの送信元アドレスを自局のアドレスに置換することができる。シフタにより遅延した受信フレームの宛先アドレス領域、送信元アドレス領域を置換していく構成のため、受信メモリがFIFO(先入れ先出し)であってもスワップ処理を行うことができる。これにより、ストア・アンド・フォワード方式のようにメモリ(ループバックメモリ)に受信フレーム全体を格納する必要がなくなるため、メモリの削減及び処理時間の大幅な短縮が可能となる。
【0011】
宛先アドレスおよび送信元アドレスは48ビットであって、当該回路のバス幅は32ビットであって
、複数のセレクタは、
第1シフタと第2シフタとの間に配置され、第1シフタにより1段遅延した受信フレームの1クロック目の宛先アドレス領域を受信フレームの2クロック目に含まれる送信元アドレスの16ビットに置換する第1セレクタと、
第1シフタと第2シフタとの間に配置され、第1シフタにより1段遅延した受信フレームの2クロック目の宛先アドレス領域を受信フレームの3クロック目に含まれる送信元アドレスの16ビットに置換する第2セレクタと、
第2シフタの下流側に配置され、第2シフタにより2段遅延した受信フレームの1クロック目の宛先アドレス領域を受信フレームの3クロック目に含まれる送信元アドレスの16ビットに置換する第3セレクタとを含んでよい。
【0012】
上記構成によれば、一般に普及している内部バスのバス幅32ビットの回路(機器)において、宛先アドレス領域を16ビットずつ置換することにより、3クロックでスワップ処理を完了させることができる。なお、送信元アドレスの自局のアドレスへの置換は、いずれかの空きタイミングで実行するように設定すればよい。これにより、バス幅32ビットの回路において、バス幅よりも長いアドレスのデータに対してスワップ処理を行うことができる。
【発明の効果】
【0013】
本発明によれば、ストア・アンド・フォワード方式によらずスワップ処理を可能にし、メモリの削減及び処理時間の大幅な短縮を実現するループバック回路を提供することができる。
【発明を実施するための形態】
【0015】
以下に添付図面を参照しながら、本発明の好適な実施形態について詳細に説明する。かかる実施形態に示す寸法、材料、その他具体的な数値などは、発明の理解を容易とするための例示に過ぎず、特に断る場合を除き、本発明を限定するものではない。なお、本明細書および図面において、実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略し、また本発明に直接関係のない要素は図示を省略する。
【0016】
(実施形態)
図1は、本発明のループバック回路の実施形態であるFPGA104を備える機器100のイーサネットでの他の機器108との接続を示す模式図である。
図1に示すように、機器100は、PHY102(Physical Layer)と、FPGA104(Field-Programmable Gate Array)と、CPU106とを備える。
【0017】
FPGA104は、イーサネットコントローラであって、他の機器108(図中代表して1つに符号を付す)から送信されたMACフレームをPHY102を通じて受信し、そのMACフレームをループバックする。PHY102は同軸ケーブル等に相当し、かかる同軸ケーブル等は他の機器108とバス型接続される。
【0018】
図2は、FPGA104の概略構成を示すブロック図である。
図2に示すように、FPGA104は、受信処理部110、受信メモリ112、DMA(Direct Memory Access)制御部114、送信メモリ116、送信処理部118を備える。
【0019】
受信処理部110は、FPGA104内部でのデータ処理を早くするため、MACフレームのオクテット単位(8ビット単位)から、FPGA104の内部バスのバス幅である32ビット単位へ変換処理を実施する。これにより、以降では、32ビット単位で処理が実施される。また、受信処理部110は、PHY102を通じて受信されるMACフレームからフレームチェックシーケンス(FCS:Frame Check Sequence)を除いた受信フレームを受信メモリ112に受け渡す。
【0020】
なお、MACフレームは、宛先アドレス(6バイト)、送信元アドレス(6バイト)、タイプ/長さ(2バイト)、ペイロード(46〜1500バイト)、FCS(4バイト)のフレーム構成を有する。よって、MACフレームは64バイト〜1518バイト、受信メモリ112に保存される受信フレームはFCSを除いて60バイト〜1514バイトの大きさとなる。
【0021】
受信メモリ112は、受信処理部110から受け渡された受信フレームを格納する。ここでは受信メモリ112はFIFO(first-in first-out)メモリで構成される。これにより、受信メモリ112から受信フレームをリードする際にその長さだけを指定すれば良いので、面倒なアドレス管理が不要となる。
【0022】
DMA制御部114は、受信メモリ112に格納された受信フレームのリード/ライト、および後述するスワップ処理を行う。DMA制御部114の内部での処理は、32ビット単位で行われる。かかる処理については後ほど詳細に説明する。
【0023】
送信メモリ116は、スワップ処理を完了したフレームを格納する。送信処理部118は、ループバックするフレームのフレームチェックシーケンスの再計算及び付与を行うと共に、再度オクテット単位への変換処理を実施する。
【0024】
図3は、DMA制御部114の概略構成を示すブロック図である。
図3に示すように、DMA制御部114は、CPUインターフェース120、フレームリード制御部122、フレーム情報解析部124、スワップ処理部126、セレクタ128、自局アドレス供給部130を備える。以下、送信元へのループバックが設定されている場合におけるDMA制御部114の動作について説明する。
【0025】
フレームリード制御部122は、CPUインターフェース120を通じてMACフレームの正常受信完了を示す割込通知を受けると、受信メモリ112から受信フレーム1フレーム分をリードする。受信フレーム1フレーム分をリードするのに必要な受信フレームの長さは、フレーム情報解析部124が受信フレームを解析して予めフレームリード制御部122に通知する。
【0026】
フレームリード制御部122がリードした受信フレームは、スワップ処理部126でスワップ処理を行いながら、セレクタ128を通じて送信メモリ116に格納される。ここで、受信フレームを一時的に蓄積するループバックメモリは存在しない。自局アドレス供給部130は、かかるスワップ処理部126に、自局アドレスである当該機器100のMACアドレスを供給する。
【0027】
図4は、スワップ処理部126の概略構成を示すブロック図である。なお、図中のMSB(Most Siginificant Bit)は最上位ビット、LSB(Least Siginificant Bit)は最下位ビットを示すものとする。
図4に示すように、スワップ処理部126には、フレームリード制御部122がリードした受信フレームおよびMACアドレスが供給される。加えてスワップ処理部126には、受信フレームの有効領域を示す受信フレームイネーブルが供給される(受信フレームの有効領域の先頭と同じクロックでイネーブル信号が出力される)。
【0028】
スワップ処理部126は、DA/SA領域検知器132と、5つのシフタと、5つのセレクタとを含む。DA/SA領域検知器132は、受信フレームイネーブルのアサートを検知すると共に、MACフレーム先頭を示す信号(以下「セレクタ切替信号」と称する)を出力する。第3シフタ138は、3段のシフタであって、DA/SA領域検知器132から出力されるセレクタ切替信号を1段、2段または3段遅延させる。
【0029】
第1シフタ134及び第2シフタ136は、受信フレームを遅延させて出力するフレーム遅延シフタである。第1シフタ134は受信フレームを1段(1クロック)遅延させて出力する。第2シフタ136は、第1シフタ134の下流側に備えられ、第1シフタ134が1段(1クロック)遅延させた受信フレームをさらにもう1段(1クロック)遅延させる。
【0030】
第1セレクタ144、第2セレクタ146、第3セレクタ148は、第1シフタ134、第2シフタ136によって遅延した受信フレームの宛先アドレスを受信フレームの送信元アドレスに置換する。第4セレクタ150、第5セレクタ152は、第1シフタ134、第2シフタ136によって遅延した受信フレームの送信元アドレスを自局アドレス供給部130から供給されるMACアドレスに置換する。
【0031】
第1セレクタ144、第2セレクタ146、第4セレクタ150は、第1シフタ134と第2シフタ136との間に備えられる。第3セレクタ148、第5セレクタ152は、第2シフタ136の下流側に備えられる。以下、遅延した受信フレームの宛先アドレスを送信元アドレスに置換し、送信元アドレスをMACアドレスに置換する動作について詳述する。
【0032】
図5は、
図4に示すスワップ処理部126のタイミングチャートである。図中、理解を容易にするために、クロックをCLK、受信フレームイネーブルをRXENB、受信フレームをRXD、MACアドレスをMADRと表記する。また、第1シフタ134、第2シフタ136、第3シフタ138を、それぞれ、SFT1、SFT2、SFT3と表記する。とりわけ、第3シフタ138が1段遅延させた出力をSFT3[1]、第3シフタ138が2段遅延させた出力をSFT3[2]、第3シフタ138が3段遅延させた出力をSFT3[3]と表記する。第1セレクタ144、第2セレクタ146、第3セレクタ148、第4セレクタ150、第5セレクタ152を、それぞれ、SEL1、SEL2、SEL3、SEL4、SEL5と表記する。なお、本実施形態では、ビットのインデックスが大きい方を上位、小さい方を下位とする。
【0033】
図5に示すように、第1セレクタ144の一方の入力端子には第1シフタ134によって1段遅延した受信フレームが入力される。他方の入力端子には、受信フレームの下位16ビット[RXD(15:0)]を上位に、第1シフタ134が出力する下位16ビット[SFT1(15:0)]を下位に持つ32ビットデータが入力される。また、第1セレクタ144には、第3シフタ138を経て1段遅延したセレクタ切替信号(SFT3[1])が入力される。
【0034】
第1セレクタ144は、セレクタ切替信号が入力されるクロックで、その出力を一方の入力端子から他方の入力端子に切り替える。これにより、1段遅延した受信フレームの1クロック目の宛先アドレス領域[DA(47:16)]が、他方の入力端子から入力される32ビットデータ[SA(47:32), DA(31:16)]に置換される。すなわち、1段遅延した受信フレームの1クロック目の上位16ビット(宛先アドレス領域)が、受信フレームの2クロック目に含まれる送信元アドレスの16ビット[SA(47:32)]に置換される。
【0035】
第2セレクタ146の一方の入力端子には第1シフタ134によって1段遅延した受信フレームが入力される。他方の入力端子には、受信フレームの下位16ビット[RXD(15:0)]を上位に、第1シフタ134が出力する下位16ビット[SFT1(15:0)]を下位に持つ32ビットデータが入力される。また、第2セレクタ146には、第3シフタ138を経て2段遅延したセレクタ切替信号(SFT3[2])が入力される。
【0036】
第2セレクタ146は、セレクタ切替信号が入力されるクロックで、その出力を一方の入力端子から他方の入力端子に切り替える。これにより、1段遅延した受信フレームの2クロック目[DA(15:0), SA(47:32)]が、他方の入力端子から入力される32ビットデータ[SA(15:0), SA(47:32)]に置換される。すなわち、1段遅延した受信フレームの2クロック目の上位16ビット(宛先アドレス領域)が、受信フレームの3クロック目に含まれる送信元アドレスの16ビット[SA(15:0)]に置換される。
【0037】
第3セレクタ148の一方の入力端子には第2シフタ136によって2段遅延した受信フレームが入力される。他方の入力端子には、受信フレームの上位16ビット[RXD(31:16)]を下位に、第2シフタ136が出力する上位16ビット[SFT2(31:16)]を下位に持つ32ビットデータが入力される。また、第3セレクタ148には、第3シフタ138を経て2段遅延したセレクタ切替信号(SFT3[2])が入力される。
【0038】
第3セレクタ148は、セレクタ切替信号が入力されるクロックで、その出力を一方の入力端子から他方の入力端子に切り替える。これにより、2段遅延した受信フレームの1クロック目[SA(47:32), DA(31:16)]が、他方の入力端子から入力される32ビットデータ[SA(47:32), SA(31:16)]に置換される。すなわち、2段遅延した受信フレームの1クロック目の下位16ビット(宛先アドレス領域)が、受信フレームの3クロック目に含まれる送信元アドレスの16ビット[SA(31:16)]に置換される。
【0039】
第4セレクタ150の一方の入力端子には第1シフタ134によって1段遅延した受信フレームが入力される。他方の入力端子には、自局アドレス供給部130から供給されるMACアドレスが入力される。また、第4セレクタ150には、第3シフタ138を経て3段遅延したセレクタ切替信号(SFT3[3])が入力される。
【0040】
第4セレクタ150は、セレクタ切替信号が入力されるクロックで、その出力を一方の入力端子から他方の入力端子に切り替える。これにより、1段遅延した受信フレームの3クロック目の32ビット(送信元アドレス領域:[SA(31:0)])が、他方の入力端子から入力されるMACアドレスの32ビット[MADR(31:0)]に置換される。
【0041】
第5セレクタ152の一方の入力端子には第2シフタ136によって2段遅延した受信フレームが入力される。他方の入力端子には、自局アドレス供給部130から供給されるMACアドレスが入力される。また、第5セレクタ152には、第3シフタ138を経て3段遅延したセレクタ切替信号(SFT3[3])が入力される。
【0042】
第5セレクタ152は、セレクタ切替信号が入力されるクロックで、その出力を一方の入力端子から他方の入力端子に切り替える。これにより、2段遅延した受信フレームの2クロック目[SA(15:0),SA(47:32)]が、他方の入力端子から入力される32ビットデータ[SA(15:0),MADR(47:32)]に置換される。すなわち、2段遅延した受信フレームの2クロック目の下位16ビット(送信元アドレス領域)が、MACアドレスの16ビット[MADR(47:32)]に置換される。
【0043】
上述した構成によれば、ストア・アンド・フォワード方式によらず、数段のパイプライン処理(シフタ)とデータ選択処理(セレクタ)の組み合わせの回路構成で、すなわちプログラム処理を行うことなくハードウェアのみによって、受信フレームの宛先アドレスと送信元アドレスのスワップ処理を完了することができる。これにより、メモリ(ループバックメモリ)の削減及び処理時間の大幅な短縮が可能となる。
【0044】
回路構成が従来のようにループバックメモリを用いるものではなくパイプライン処理のため、フレームサイズによる処理時間の揺らぎが生じることもない。また、ループバックメモリを使用しないので、フレームサイズに依存した回路修正が必要なくなり、回路規模の大幅な削減を果たすと共に、ジャンボフレームなどの将来の企画の変更にも柔軟に対応することができる。
【0045】
(比較例)
以下、本実施形態にかかるFPGA104の効果を説明するために、ストア・アンド・フォワード方式である比較例を例示して対比する。
図6は、比較例として例示するDMA制御部214の概略構成を示すブロック図である。なお、本実施形態と実質的に同一の機能、構成を有する要素については、同一の符号を付することにより重複説明を省略する。
【0046】
図6に示すように、比較例にかかるDMA制御部214は、CPUインターフェース120、フレームリード制御部122、フレーム情報解析部124、ループバックメモリ制御部254、ループバックメモリ256、セレクタ128を備える。以下、送信元へのループバックが設定されている場合におけるDMA制御部214の動作について説明する。
【0047】
フレームリード制御部122は、CPUインターフェース120を通じてMACフレームの正常受信完了を示す割込通知を受けると、受信メモリ112から受信フレーム1フレーム分をリードし、ループバックメモリ256に格納する。受信フレーム1フレーム分をリードするのに必要な受信フレームの長さは、フレーム情報解析部124が受信フレームを解析して予めフレームリード制御部122に通知する。
【0048】
フレームリード制御部122はループバックメモリ256への格納完了後、ループバックメモリ制御部254へこれを通知する。ループバックメモリ制御部254は、ループバックメモリ256に格納された受信フレームを、送信元アドレス領域、宛先アドレス領域、タイプ/長さ領域、ペイロード領域の順にリードする。これにより、スワップ処理を実現する。
【0049】
(実施形態と比較例の対比)
図7は、本実施形態にかかるFPGA104と比較例として例示したDMA制御部214を備えるFPGAのループバック遅延クロック数の対比図である。なお、ループバック遅延クロック数は、ループバックするフレームの最初のデータ(32ビット)が送信メモリ116にとどくまでのクロック数(時間)とする。
【0050】
図7に示すように、ストア・アンド・フォワード方式の比較例では、MACフレームのフレームサイズが大きくなるほど遅延クロック数(時間)が飛躍的に増大していく。ループバックメモリ256への書込を完了した上で、ループバックメモリ制御部254がリードしなければならないためである。
【0051】
対して、本実施形態にかかるFPGA104(DMA制御部214)では、フレームサイズに依存することなく、3段のパイプライン処理でスワップ処理を完了することができる。したがって、比較例のようにフレームサイズに依存する処理時間の揺らぎが生じない。そのため、本実施形態によれば処理時間の大幅な短縮が可能となる。
【0052】
なお、MACフレームの最大サイズは1514バイトであるのに対し、ループバックメモリ256のメモリ容量はFPGAデバイスに依存するが一般的に通常2K/4K/8Kバイト単位である。そのため、比較例にかかる構成では、使用しないメモリ領域を実装しなければならず無駄を生じてしまうが、本実施形態によればループバックメモリ256を使用しないので、このような無駄を生じることもない。
【0053】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【0054】
例えば、上記実施形態では、レイヤ2すなわちデータリンク層のイーサネットにおけるループバックを想定して説明したが、宛先アドレスおよび送信元アドレスがフレームフォーマット内に存在するものについてのループバックであれば本発明を適用可能である。したがって、レイヤ3すなわちネットワーク層のIP、レイヤ4すなわちトランスポート層のTCPにも適用可能である。