(57)【要約】【課題】データ転送時のデータ処理においてデータの誤配や欠落を防ぐこと。【解決手段】データ処理装置において、監視バッファ１０１は、共有バッファ１０５に対するアドレスの使用状態を示す情報を保持する。監視部１０２は、アドレス払出部１０３による書込アドレスの払い出し、及び返却アドレス受付部１０４による読出アドレスの返却を監視する。監視部１０２は、アドレス払出部１０３によって書込アドレスが払い出されるときに、払い出し対象の書込アドレスに対応する監視バッファ１０１の情報が使用状態である場合、共有バッファ１０５に対するアドレスが重複すると判定する。【選択図】図１
2014192641.tif 000002
【特許請求の範囲】
【請求項１】
複数のポートから入力されるデータを保持する共有バッファと、
前記ポートから入力されるデータを前記共有バッファに書き込むときに空きアドレスの中から前記共有バッファに対する書込アドレスを払い出すアドレス払出部と、
前記共有バッファからデータを読み出すときに前記読み出されるデータに対する読出アドレスの返却を受け付けて空きアドレスとして管理する返却アドレス受付部と、
前記共有バッファに対するアドレスの使用状態を示す情報を保持する監視バッファと、
前記アドレス払出部による書込アドレスの払い出し及び前記返却アドレス受付部による読出アドレスの返却を監視し、前記アドレス払出部によって書込アドレスが払い出されるときに払い出し対象の書込アドレスに対応する前記監視バッファの情報を未使用状態から使用状態に変更し、前記返却アドレス受付部によって読出アドレスの返却が受け付けられるときに返却対象の読出アドレスに対応する前記監視バッファの情報を使用状態から未使用状態に変更する監視部と、を備え、
前記監視部は、前記アドレス払出部によって書込アドレスが払い出されるときに払い出し対象の前記書込アドレスに対応する前記監視バッファの情報が使用状態である場合、前記共有バッファに対するアドレスが重複すると判定することを特徴とするデータ処理装置。
【請求項２】
前記監視部によって払い出し対象の書込アドレスが重複すると判定される場合、前記アドレス払出部は払い出し対象の前記書込アドレスを破棄することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記監視部は、前記返却アドレス受付部によって読出アドレスの返却が受け付けられるときに返却対象の前記読出アドレスに対応する前記監視バッファの情報が未使用状態である場合、前記共有バッファに対するアドレスが重複すると判定し、
前記監視部によって返却対象の読出アドレスが重複すると判定される場合、前記返却アドレス受付部は返却対象の前記読出アドレスを破棄することを特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
前記監視部は、前記返却アドレス受付部によって読出アドレスの返却が受け付けられるときに返却対象の前記読出アドレスに対応する前記監視バッファの情報が未使用状態である場合、前記共有バッファに対するアドレスが重複すると判定し、前記共有バッファの返却対象の前記読出アドレスに対応する領域から読み出されるデータを破棄することを特徴とする請求項１乃至３のいずれか一項に記載のデータ処理装置。
【請求項５】
複数のポートから入力されるデータを保持する共有バッファに前記ポートから入力されるデータを書き込むときに空きアドレスの中から前記共有バッファに対する書込アドレスを取得し、
前記共有バッファに対するアドレスの使用状態を示す情報を保持する監視バッファから前記書込アドレスの使用状態を示す情報を取得し、
前記書込アドレスの前記使用状態を示す情報が未使用状態である場合に、前記書込アドレスの前記使用状態を示す情報を使用状態に変更し、
前記書込アドレスの前記使用状態を示す情報が使用状態である場合に、前記書込アドレスが重複すると判定することを特徴とするデータ処理方法。
【請求項６】
複数のポートから入力されるデータを保持する共有バッファからデータを読み出すときに前記読み出されるデータに対する読出アドレスを取得し、
前記共有バッファに対するアドレスの使用状態を示す情報を保持する監視バッファから前記読出アドレスの使用状態を示す情報を取得し、
前記読出アドレスの前記使用状態を示す情報が使用状態である場合に、前記読出アドレスの前記使用状態を示す情報を未使用状態に変更し、
前記読出アドレスの前記使用状態を示す情報が未使用状態である場合に、前記読出アドレスが重複すると判定することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ処理装置及びデータ処理方法に関する。
【背景技術】
【０００２】
従来、複数のポートから入力したデータを一旦共有バッファに格納してからそれぞれの宛先へ転送するデータ処理技術において、共有バッファからデータを読み出す際の読出アドレスに対してパリティチェックを行ってビットエラーの有無を調べることがある。但し、パリティチェックでは、偶数個のビットエラーがある場合、ビットエラーの発生を検出することができない。そのため、監視バッファ等を用いて、パリティチェックで検出できない読出アドレスや書込アドレスのビットエラーの検出を行う技術が開示されている。
【０００３】
例えば、読出アドレスにビットエラーが発生していることが確認できた場合には、その後、共有バッファからのデータの読み出しを行わない。また、読出アドレスにビットエラーが発生していることが確認できた場合には、その後、共有バッファに対する書込アドレスの払い出しを管理する制御部へ、ビットエラーが発生している読出アドレスを返却しない（例えば、特許文献１参照）。
【０００４】
また、バッファの使用中のアドレスと空きアドレスとの重複を検出し、重複するときにエラーが発生したと判断する技術が開示されている（例えば、特許文献２参照）。また、バッファの空きアドレスを指定する巡回アドレスが一巡する期間にわたって書込処理が行われず、かつ未使用であるとされるアドレスを検出することによって、エラーが発生したと判断する技術が開示されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１６０７０５号公報
【特許文献２】特開平９−３０５４９３号公報
【特許文献３】特開２０１１−２３４１１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、パリティチェックで検出できないようなアドレスのエラーを検出できたとしても、ビットエラーが発生している読出アドレスが返却されることによって、共有バッファに格納されている読み出し前のデータが上書きされてしまう。このように読み出し前のデータに上書きが発生すると、読み出し前のデータが消えてしまうため、データの欠落が起こってしまう。また、誤ったデータが送信される誤配も起こり得る。
【０００７】
共有バッファ内で誤ったデータの上書きが生じると、消えてしまったデータを復旧することができない。
【０００８】
データ転送時のデータ処理においてデータの誤配や欠落を防ぐことができるデータ処理装置及びデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
データ処理装置は、共有バッファ、アドレス払出部、返却アドレス受付部、監視バッファ及び監視部を備える。共有バッファは、複数のポートから入力されるデータを保持する。アドレス払出部は、ポートから入力されるデータを共有バッファに書き込むときに空きアドレスの中から共有バッファに対する書込アドレスを払い出す。返却アドレス受付部は、共有バッファからデータを読み出すときに、読み出されるデータに対する読出アドレスの返却を受け付けて空きアドレスとして管理する。監視バッファは、共有バッファに対するアドレスの使用状態を示す情報を保持する。監視部は、アドレス払出部による書込アドレスの払い出しを監視し、アドレス払出部によって書込アドレスが払い出されるときに払い出し対象の書込アドレスに対応する監視バッファの情報を未使用状態から使用状態に変更する。監視部は、返却アドレス受付部による読出アドレスの返却を監視し、返却アドレス受付部によって読出アドレスの返却が受け付けられるときに返却対象の読出アドレスに対応する監視バッファの情報を使用状態から未使用状態に変更する。監視部は、アドレス払出部によって書込アドレスが払い出されるときに払い出し対象の書込アドレスに対応する監視バッファの情報が使用状態である場合、共有バッファに対するアドレスが重複すると判定する。
【００１０】
データ処理方法の一つは、複数のポートから入力されるデータを保持する共有バッファにポートから入力されるデータを書き込むときに空きアドレスの中から共有バッファに対する書込アドレスを取得する。共有バッファに対するアドレスの使用状態を示す情報を保持する監視バッファから書込アドレスの使用状態を示す情報を取得する。書込アドレスの使用状態を示す情報が未使用状態である場合に、書込アドレスの使用状態を示す情報を使用状態に変更する。書込アドレスの使用状態を示す情報が使用状態である場合に、書込アドレスが重複すると判定する。
【００１１】
データ処理方法の別の一つは、複数のポートから入力されるデータを保持する共有バッファからデータを読み出すときに、読み出されるデータに対する読出アドレスを取得する。共有バッファに対するアドレスの使用状態を示す情報を保持する監視バッファから読出アドレスの使用状態を示す情報を取得する。読出アドレスの使用状態を示す情報が使用状態である場合に、読出アドレスの使用状態を示す情報を未使用状態に変更する。読出アドレスの使用状態を示す情報が未使用状態である場合に、読出アドレスが重複すると判定する。
【発明の効果】
【００１２】
データ処理装置及びデータ処理方法によれば、データ転送時のデータ処理においてデータの誤配や欠落を防ぐことができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施の形態にかかるデータ処理装置の一例を示す図である。
【図２】図２は、図１に示すデータ処理装置における信号の流れを示す図である。
【図３】図３は、実施の形態にかかるデータ処理装置のハードウェア構成の一例を示す図である。
【図４】図４は、実施の形態にかかるデータ処理方法におけるデータ書き込み時の処理の一例を示す図である。
【図５】図５は、実施の形態にかかるデータ処理方法におけるデータ読み出し時の処理の一例を示す図である。
【図６】図６は、Ｌ２スイッチの一例を示す図である。
【図７】図７は、実施の形態にかかるスイッチカードの一例を示す図である。
【図８】図８は、ＷＡＦ監視バッファの初期化動作の一例を示す図である。
【図９】図９は、共有バッファへのデータ書込動作の一例を示す図である。
【図１０】図１０は、共有バッファからのデータ読出動作の一例を示す図である。
【図１１】図１１は、正常時のデータ書込動作の一例を示す図である。
【図１２】図１２は、正常時のデータ読出動作の一例を示す図である。
【図１３】図１３は、読出キューで発生するビットエラーを検出できない場合の読出動作の一例を示す図である。
【図１４】図１４は、書込アドレスＦｉｆｏでビットエラーが発生する場合の書込動作の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、このデータ処理装置及びデータ処理方法の好適な実施の形態を詳細に説明する。以下の各実施例の説明においては、同様の構成要素には同一の符号を付して、重複する説明を省略する。
【００１５】
・データ処理装置の一例
図１は、実施の形態にかかるデータ処理装置の一例を示す図である。図２は、図１に示すデータ処理装置における信号の流れを示す図である。図１及び図２に示すように、データ処理装置は、監視バッファ１０１、監視部１０２、アドレス払出部１０３、返却アドレス受付部１０４及び共有バッファ１０５を有する。
【００１６】
共有バッファ１０５はアドレス払出部１０３、データ入力端子１０６、データ出力端子１０７及び読出アドレス入力端子１０８に接続されている。データ入力端子１０６は、図示しない複数のポートから入力される書き込み対象のデータ（以下、書込データと称する）を受け取る。データ入力端子１０６から入力される書込データは、アドレス払出部１０３から払い出される書込アドレスによって指定される共有バッファ１０５の領域に書き込まれる。つまり、共有バッファ１０５は、図示しない複数のポートから入力されるデータを保持する。
【００１７】
読出アドレス入力端子１０８は、共有バッファ１０５に対する読出アドレスを、例えば読出アドレスを保持する図示しないキューから受け取る。データ出力端子１０７からは、読出アドレス入力端子１０８に入力される読出アドレスによって指定される共有バッファ１０５の領域に保持されている読み出し対象のデータ（以下、読出データと称する）が出力される。
【００１８】
アドレス払出部１０３は返却アドレス受付部１０４に接続されている。アドレス払出部１０３は、共有バッファ１０５に書込データを書き込むときに空きアドレスの中から共有バッファ１０５に対する書込アドレスを払い出す。すなわち、アドレス払出部１０３は共有バッファ１０５に対する書込アドレスを出力する。アドレス払出部１０３は、返却アドレス受付部１０４から渡される空きアドレスを保持する。
【００１９】
返却アドレス受付部１０４は読出アドレス入力端子１０８に接続されている。返却アドレス受付部１０４は、共有バッファ１０５からデータを読み出すときに、読み出されるデータに対する読出アドレスの返却を受け付ける。返却アドレス受付部１０４は、返却を受け付ける読出アドレスを空きアドレスとして管理し、アドレス払出部１０３へ渡す。
【００２０】
監視バッファ１０１は監視部１０２に接続されている。監視バッファ１０１は、共有バッファ１０５に対するアドレスの使用状態を示す情報を保持する。データ処理装置の電源がオンにされるか、またはデータ処理装置がリセットされると、監視バッファ１０１は初期状態となる。監視バッファ１０１の初期状態においては、共有バッファ１０５に対するアドレスの使用状態を示す情報は、全アドレスに対して未使用状態となる。
【００２１】
監視部１０２はアドレス払出部１０３に接続されている。監視部１０２は、アドレス払出部１０３による書込アドレスの払い出しを監視する。監視部１０２は、アドレス払出部１０３によって書込アドレスが払い出されるときに、払い出し対象の書込アドレスに対応する監視バッファ１０１の情報を未使用状態から使用状態に変更する。監視部１０２は、アドレス払出部１０３によって書込アドレスが払い出されるときに、払い出し対象の書込アドレスに対応する監視バッファ１０１の情報が使用状態である場合、共有バッファ１０５に対するアドレスが重複すると判定する。
【００２２】
監視部１０２は読出アドレス入力端子１０８に接続されている。監視部１０２は、返却アドレス受付部１０４による読出アドレスの返却を監視する。返却アドレス受付部１０４によって読出アドレスの返却が受け付けられるときに、返却対象の読出アドレスに対応する監視バッファ１０１の情報を使用状態から未使用状態に変更する。監視部１０２は、返却アドレス受付部１０４によって読出アドレスの返却が受け付けられるときに、返却対象の読出アドレスに対応する監視バッファ１０１の情報が未使用状態である場合、共有バッファ１０５に対するアドレスが重複すると判定してもよい。
【００２３】
図１に示すデータ処理装置において、監視バッファ１０１、監視部１０２、アドレス払出部１０３、返却アドレス受付部１０４及び共有バッファ１０５がそれぞれハードウェアによって実現されていてもよい。あるいは、監視部１０２、アドレス払出部１０３及び返却アドレス受付部１０４はソフトウェアの処理によって実現されてもよい。監視部１０２、アドレス払出部１０３及び返却アドレス受付部１０４がソフトウェアの処理によって実現される場合のハードウェア構成の一例について説明する。
【００２４】
・ハードウェア構成の一例
図３は、実施の形態にかかるデータ処理装置のハードウェア構成の一例を示す図である。図３に示すように、データ処理装置は例えばプロセッサ２０１、インタフェース２０２、不揮発性メモリ２０３及び揮発性メモリ２０４を有する。プロセッサ２０１、インタフェース２０２、不揮発性メモリ２０３及び揮発性メモリ２０４はバス２０５に接続されていてもよい。
【００２５】
プロセッサ２０１は、後述するデータ処理方法を実現するプログラムを処理する。それによって、図１に示すデータ処理装置における監視部１０２、アドレス払出部１０３及び返却アドレス受付部１０４が実現される。プロセッサ２０１の一例として、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ、デジタルシグナルプロセッサ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、エーシック）、またはＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、フィールドプログラマブルゲートアレイ）などのプログラマブルロジックデバイスが挙げられる。
【００２６】
不揮発性メモリ２０３は、ブートプログラムや後述するデータ処理方法を実現するプログラムを記憶している。プロセッサ２０１がプログラマブルロジックデバイスである場合には、不揮発性メモリ２０３はプログラマブルロジックデバイスの回路情報を記憶していてもよい。不揮発性メモリ２０３の一例として、マスクＲＯＭ（マスクロム）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、イーイーピーロム）またはフラッシュメモリなどのＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ、ロム）が挙げられる。
【００２７】
揮発性メモリ２０４はプロセッサ２０１の作業領域として用いられる。揮発性メモリ２０４は、不揮発性メモリ２０３から読み出されたプログラムや回路情報を保持する。監視バッファ１０１は揮発性メモリ２０４によって実現されてもよい。共有バッファ１０５は揮発性メモリ２０４によって実現されてもよい。揮発性メモリ２０４の一例としてＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ディーラム）やＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、エスラム）などのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ラム）が挙げられる。
【００２８】
インタフェース２０２は、書込データの入力及び読出データの出力を司る。
【００２９】
・データ処理方法の一例
データ処理方法は、図１に示すデータ処理装置において実施されてもよい。本実施例では、データ処理方法が、図１に示すデータ処理装置において実施されるとして説明する。
【００３０】
図４は、実施の形態にかかるデータ処理方法におけるデータ書き込み時の処理の一例を示す図である。図４に示すように、データ入力端子１０６から入力されるデータを共有バッファ１０５に書き込むときに、アドレス払出部１０３は空きアドレスの中から共有バッファ１０５に対する書込アドレスを払い出す。監視部１０２は、アドレス払出部１０３から払い出される書込アドレスを取得する（ステップＳ１）。
【００３１】
次いで、監視部１０２は、ステップＳ１で取得する書込アドレスの使用状態を示す情報を監視バッファ１０１から取得する（ステップＳ２）。監視部１０２は、ステップＳ２で取得する書込アドレスの使用状態を示す情報が未使用状態であるか否かを判断する（ステップＳ３）。
【００３２】
書込アドレスの使用状態を示す情報が未使用状態である場合（ステップＳ３：Ｙｅｓ）、監視部１０２は、書込アドレスの使用状態を示す情報を使用状態に変更し（ステップＳ４）、一連のデータ書き込み時の処理を終了する。書込アドレスの使用状態を示す情報が未使用状態である場合（ステップＳ３：Ｙｅｓ）、書込アドレスによって指定される共有バッファ１０５の領域に、データ入力端子１０６から入力されるデータを書き込むことができる。
【００３３】
一方、書込アドレスの使用状態を示す情報が未使用状態でない場合（ステップＳ３：Ｎｏ）、ステップＳ１で取得する書込アドレスによって指定される共有バッファ１０５の領域には、未だ読み出されていないデータ、すなわち有効なデータが保持されていることになる。そのため、監視部１０２は、書込アドレスが重複すると判定し（ステップＳ５）、一連のデータ書き込み時の処理を終了する。
【００３４】
書込アドレスが重複するという判定の場合、アドレス払出部１０３は、払い出す書込アドレスを破棄してもよい。そうすることによって、重複すると判定される書込アドレスによって指定される共有バッファ１０５の領域に対してデータが上書きされないため、共有バッファ１０５から読み出されていないデータが上書きされるのを防ぐことができる。つまり、データの欠落を防ぐことができる。
【００３５】
図５は、実施の形態にかかるデータ処理方法におけるデータ読み出し時の処理の一例を示す図である。図５に示すように、読出アドレス入力端子１０８から入力される読出アドレスによって指定される共有バッファ１０５の領域に保持されているデータを読み出すときに、監視部１０２は、読出アドレス入力端子１０８から入力される読出アドレスを取得する（ステップＳ１１）。
【００３６】
次いで、監視部１０２は、ステップＳ１１で取得する読出アドレスの使用状態を示す情報を監視バッファ１０１から取得する（ステップＳ１２）。監視部１０２は、ステップＳ１２で取得する読出アドレスの使用状態を示す情報が使用状態であるか否かを判断する（ステップＳ１３）。
【００３７】
読出アドレスの使用状態を示す情報が使用状態である場合（ステップＳ１３：Ｙｅｓ）、監視部１０２は、読出アドレスの使用状態を示す情報を未使用状態に変更し（ステップＳ１４）、一連のデータ読み出し時の処理を終了する。読出アドレスの使用状態を示す情報が使用状態である場合（ステップＳ１３：Ｙｅｓ）、読出アドレスによって指定される共有バッファ１０５の領域からデータを読み出し、データ出力端子１０７へ出力することができる。
【００３８】
一方、読出アドレスの使用状態を示す情報が使用状態でない場合（ステップＳ１３：Ｎｏ）、読出アドレスによって指定される共有バッファ１０５の領域には、読み出されていないデータ、すなわち有効なデータが保持されていないことになる。
【００３９】
そのため、監視部１０２は、読出アドレスが重複すると判定し（ステップＳ１５）、一連のデータ読み出し時の処理を終了する。読出アドレスが重複するという判定の場合、返却アドレス受付部１０４は、重複すると判定される読出アドレスの返却を受け付けなくてもよい。そうすることによって、共有バッファ１０５に対するアドレスの重複状態が継続するのを防ぐことができる。
【００４０】
また、読出アドレスが重複するという判定の場合、監視部１０２は、重複すると判定される読出アドレスによって指定される共有バッファ１０５の領域から読み出されるデータを破棄してもよい。そうすることによって、重複すると判定される読出アドレスによって指定される共有バッファ１０５の領域から読み出されるデータが、そのデータの本来の宛先とは異なる宛先の情報に基づいて転送されるのを防ぐことができる。つまり、データの誤配を防ぐことができる。
【００４１】
図１に示すデータ処理装置または図４〜図５に示すデータ処理方法によれば、共有バッファ１０５にデータを書き込む際に書込アドレスが重複しているか否かを検出し、重複する場合に書込アドレスを破棄することによって、データの欠落を防ぐことができる。また、共有バッファ１０５からデータを読み出す際に読出アドレスが重複しているか否かを検出し、重複する場合に読出アドレスの返却を受け付けないことによって、アドレスの重複状態が継続するのを防ぐことができる。さらに、共有バッファ１０５からデータを読み出す際に読出アドレスが重複する場合、共有バッファ１０５から読み出されるデータを破棄することによって、データの誤配を防ぐことができる。
【００４２】
図１に示すデータ処理装置は、例えばＬ２スイッチやＬ３スイッチにおいてデータ転送処理を行うスイッチカードに適用できる。以下に、一例として、図１にデータ処理装置をＬ２スイッチにおけるスイッチカードに適用する場合について説明する。
【００４３】
・Ｌ２スイッチの一例
図６は、Ｌ２スイッチの一例を示す図である。図６に示すように、Ｌ２スイッチＳＷは複数、例えば４個のラインインタフェースユニットカードＣ＃０〜Ｃ＃３及びスイッチカードＳＷＣを有する。各ラインインタフェースユニットカードＣ＃０〜Ｃ＃３及びスイッチカードＳＷＣは、それぞれ独立したプリント基板ユニットで構成されていてもよい。各プリント基板ユニットはバックボードなどの基板上の配線によって相互に接続されていてもよい。以下の説明においては、ラインインタフェースユニットカードをＬＩＵカードと表記することがある。ＬＩＵカードの数は３個以下でもよいし、５個以上でもよい。
【００４４】
ＬＩＵカードＣ＃０〜Ｃ＃３は、伝送路から入力されるＬ２フレームデータをスイッチカードＳＷＣへ出力する。ＬＩＵカードＣ＃０〜Ｃ＃３は、スイッチカードＳＷＣから入力されるＬ２フレームデータを伝送路へ出力する。ＬＩＵカードＣ＃０〜Ｃ＃３は例えば４個のポートＰ０〜Ｐ３を有する。ＬＩＵカードＣ＃０〜Ｃ＃３におけるポートＰ０〜Ｐ３は例えば図示しない伝送路に接続されてもよい。各ＬＩＵカードＣ＃０〜Ｃ＃３においてポートの数は３個以下でもよいし、５個以上でもよい。
【００４５】
ＬＩＵカードＣ＃０〜Ｃ＃３はそれぞれＬ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３を有する。Ｌ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３はそれぞれＬＩＵカードＣ＃０〜Ｃ＃３におけるポートＰ０〜Ｐ３に接続されている。Ｌ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３は、それぞれＬＩＵカードＣ＃０〜Ｃ＃３におけるポートＰ０〜Ｐ３から入力されるＬ２フレームデータを、当該Ｌ２フレームデータに転送先のカード情報及びポート情報を付加してスイッチカードＳＷＣへ出力する。
【００４６】
Ｌ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３はそれぞれフォワーディングデータベースＦＤＢ（Ｆｏｒｗａｒｄｉｎｇ  Ｄａｔａ  Ｂａｓｅ）を有する。フォワーディングデータベースＦＤＢには、ＬＩＵカードＣ＃０〜Ｃ＃３におけるポートＰ０〜Ｐ３から入力されるＬ２フレームデータ中の宛先アドレス（ＤＡ：Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）と転送先のカード情報及びポート情報との対応関係が格納されている。Ｌ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３は、Ｌ２フレームデータ中の宛先アドレスを用いてそれぞれのフォワーディングデータベースＦＤＢを検索することによって、転送先のカード情報及びポート情報を得る。
【００４７】
Ｌ２フレームデータ中の宛先アドレスがフォワーディングデータベースＦＤＢに登録されていない場合がある。その場合には、Ｌ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３は、全てのＬＩＵカードＣ＃０〜Ｃ＃３へＬ２フレームデータを転送（Ｆｌｏｏｄｉｎｇ）するように、Ｌ２フレームデータにカード情報及びポート情報を付加する。このように、ＬＩＵカードＣ＃０〜Ｃ＃３とスイッチカードＳＷＣとの間のインタフェースにおいて、装置内部転送を目的としてカード情報及びポート情報がＬ２フレームデータに付加される。
【００４８】
Ｌ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３は、スイッチカードＳＷＣから入力されるＬ２フレームデータを、当該Ｌ２フレームデータから転送先のカード情報及びポート情報を削除して、それぞれＬＩＵカードＣ＃０〜Ｃ＃３における転送先のポート情報に対応するポートＰ０〜Ｐ３へ出力する。
【００４９】
スイッチカードＳＷＣは、ＬＩＵカードＣ＃０〜Ｃ＃３から入力されるＬ２フレームデータを、転送先のカード情報に対応するＬＩＵカードＣ＃０〜Ｃ＃３へ出力する。スイッチカードＳＷＣは共有バッファＳＢ及びスイッチ部ＳＰを有する。共有バッファＳＢは、ＬＩＵカードＣ＃０〜Ｃ＃３からスイッチ部ＳＰに入力されるＬ２フレームデータを保持する。共有バッファＳＢは、Ｌ２フレームデータを格納する複数のページを有している。直前にＬ２フレームデータが読み出されたページには新たなＬ２フレームデータが最後に書き込まれることによって、各ページが順番に使用されるようになっている。
【００５０】
スイッチ部ＳＰはＬＩＵカードの数に対応する数のポートを有する。図６に示す例では、スイッチカードＳＷＣ例えば４個のポートＰ０〜Ｐ３を有し、スイッチ部ＳＰのポートＰ０〜Ｐ３はそれぞれＬＩＵカードＣ＃０〜Ｃ＃３に接続されている。スイッチ部ＳＰにおいてポートの数は３個以下でもよいし、５個以上でもよい。
【００５１】
スイッチ部ＳＰは、スイッチ部ＳＰにおけるポートＰ０〜Ｐ３から、転送先のカード情報及びポート情報付きのＬ２フレームデータを受け取る。スイッチ部ＳＰは、Ｌ２フレームデータに付加されている転送先のカード情報に基づいて当該Ｌ２フレームデータの転送先を、転送先のカード情報に対応するＬＩＵカードＣ＃０〜Ｃ＃３へ切り替える。そして、スイッチ部ＳＰは、当該Ｌ２フレームデータを共有バッファＳＢから読み出して、転送先のカード情報に対応するＬＩＵカードＣ＃０〜Ｃ＃３へ出力する。
【００５２】
図６に示すＬ２スイッチＳＷにおいて、Ｌ２フレームデータは以下のようにして所望の転送先へ転送される。ＬＩＵカードＣ＃０〜Ｃ＃３におけるポートＰ０〜Ｐ３から入力されるＬ２フレームデータは、それぞれＬ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３によって転送先のカード情報及びポート情報が付加されて、スイッチカードＳＷＣへ転送される。スイッチカードＳＷＣに入力されるＬ２フレームデータは、一旦、共有バッファＳＢに保持され、スイッチ部ＳＰによって共有バッファＳＢから読み出されて転送先のカード情報に対応するＬＩＵカードＣ＃０〜Ｃ＃３へ転送される。
【００５３】
スイッチカードＳＷＣからＬＩＵカードＣ＃０〜Ｃ＃３に入力されるＬ２フレームデータは、それぞれＬ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３によって転送先のポート情報に対応するポートＰ０〜Ｐ３から出力される。その際、Ｌ２フレーム終端／生成部ＴＧ＃０〜ＴＧ＃３によってＬ２フレームデータから転送先のカード情報及びポート情報が削除される。
【００５４】
・スイッチカードの一例
図７は、実施の形態にかかるスイッチカードの一例を示す図である。図７に示すように、スイッチカードＳＷＣにおいてスイッチ部ＳＰはフレーム多重部１、書込アドレスＦｉｆｏ（ＷＡＦ：Ｗｒｉｔｅ  Ａｄｄｒｅｓｓ  Ｆｉｆｏ）５、ＷＡＦ読出制御部２、ＷＡＦ書込制御部１１、ＷＡＦ監視バッファ１５及びＷＡＦ監視部１６を有する。
【００５５】
書込アドレスＦｉｆｏ５はＷＡＦ読出制御部２及びＷＡＦ書込制御部１１に接続されている。書込アドレスＦｉｆｏ５は、共有バッファＳＢの空き領域に対応するアドレスを格納する。以下の説明においては、共有バッファＳＢの空き領域に対応するアドレスを空きアドレスと称することがある。
【００５６】
書込アドレスＦｉｆｏ５は、ＷＡＦ読出制御部２により指定される巡回アドレスに対応する書込アドレスＦｉｆｏ５の記憶領域から、共有バッファＳＢの空きアドレスをＷＡＦ読出制御部２へ払い出す。書込アドレスＦｉｆｏ５は、ＷＡＦ書込制御部１１により指定される巡回アドレスに対応する書込アドレスＦｉｆｏ５の記憶領域に、ＷＡＦ書込制御部１１から与えられる共有バッファＳＢの空きアドレスを格納する。
【００５７】
フレーム多重部１は、図６に示すスイッチ部ＳＰにおける各ポートＰ０〜Ｐ３に接続されている。フレーム多重部１は、図６に示すスイッチ部ＳＰにおける各ポートＰ０〜Ｐ３から入力されるＬ２フレームデータを多重化する。
【００５８】
ＷＡＦ読出制御部２はフレーム多重部１、ＷＡＦ監視部１６及び共有バッファＳＢに接続されている。ＷＡＦ読出制御部２は、フレーム多重部１からＬ２フレームデータを受け取ると、書込アドレスＦｉｆｏ５に対して巡回アドレスを指定する。書込アドレスＦｉｆｏ５のアドレスの範囲が例えば“０”〜“１０２３”であるとする。この場合、ＷＡＦ読出制御部２は、書込アドレスＦｉｆｏ５に対して最初の値である“０”から順番に“０”、“１”、“２”、・・・と指定していき、最後の値である“１０２３”に達すると最初に戻って再び“０”から順番に指定していく。
【００５９】
ＷＡＦ読出制御部２は、書込アドレスＦｉｆｏ５から、ＷＡＦ読出制御部２が指定する巡回アドレスに対応する共有バッファＳＢの空きアドレスを取得する。ＷＡＦ読出制御部２は、ＷＡＦ監視部１６から重複なしのＷ側重複判定通知を受け取ると、書込アドレスＦｉｆｏ５から取得する空きアドレスを共有バッファＳＢに対する書込アドレスとして払い出す。
【００６０】
ＷＡＦ読出制御部２は、ＷＡＦ監視部１６から重複ありのＷ側重複判定通知を受け取ると、書込アドレスＦｉｆｏ５から取得する空きアドレスを破棄する。ＷＡＦ読出制御部２及び書込アドレスＦｉｆｏ５はアドレス払出部の一例である。
【００６１】
ＷＡＦ書込制御部１１は後述する読出制御部１０及びＷＡＦ監視部１６に接続されている。ＷＡＦ書込制御部１１は書込アドレスＦｉｆｏ５に対して、ＷＡＦ読出制御部２と同様に巡回アドレスを指定する。
【００６２】
ＷＡＦ書込制御部１１は、共有バッファＳＢからＬ２フレームデータを読み出す際に用いられる読出アドレスを、読出制御部１０から返却アドレスとして取得する。ＷＡＦ書込制御部１１は、ＷＡＦ監視部１６から重複なしのＲ側重複判定通知を受け取ると、ＷＡＦ書込制御部１１により指定される巡回アドレスに対応する書込アドレスＦｉｆｏ５の記憶領域に、読出制御部１０から取得する返却アドレスを共有バッファＳＢの空きアドレスとして格納する。
【００６３】
ＷＡＦ書込制御部１１は、ＷＡＦ監視部１６から重複ありのＲ側重複判定通知を受け取ると、読出制御部１０から取得する返却アドレスを破棄する。ＷＡＦ書込制御部１１は返却アドレス受付部の一例である。
【００６４】
ＷＡＦ監視バッファ１５はＷＡＦ監視部１６に接続されている。ＷＡＦ監視バッファ１５は、共有バッファＳＢに対するアドレスの使用状態を示す情報を保持する。共有バッファＳＢに対するアドレスの使用状態を示す情報は、例えばアドレスが未使用状態であるときに“０”となり、アドレスが使用状態であるときに“１”となるフラグであってもよい。以下の説明においては、アドレスの使用状態を示す情報をフラグとし、このフラグを監視フラグと称することがある。
【００６５】
ＷＡＦ監視バッファ１５のアドレスの値は共有バッファＳＢのアドレスの値と同じである。例えばＷＡＦ監視バッファ１５の“０”のアドレスに対応する記憶領域に保持されている監視フラグの値が“１”である場合、共有バッファＳＢの“０”のアドレスは使用状態であり、空きアドレスではない。従って、共有バッファＳＢの“０”のアドレスに対応する記憶領域には有効なＬ２フレームデータが格納されていることになる。
【００６６】
それに対して、例えばＷＡＦ監視バッファ１５の“１”のアドレスに対応する記憶領域に保持されている監視フラグの値が“０”である場合、共有バッファＳＢの“１”のアドレスは未使用状態、すなわち空きアドレスである。従って、共有バッファＳＢの“１”のアドレスに対応する記憶領域には有効なＬ２フレームデータが格納されていないことになる。ＷＡＦ監視バッファ１５は監視バッファの一例である。
【００６７】
ＷＡＦ監視部１６は書込アドレスＦｉｆｏ５、ＷＡＦ監視バッファ１５及び後述する読出制御部１０に接続されている。ＷＡＦ監視部１６は、書込アドレスＦｉｆｏ５からＷＡＦ読出制御部２へ払い出される共有バッファＳＢの空きアドレスを取得し、この空きアドレスの値と同じ値のアドレスに対応するＷＡＦ監視バッファ１５の記憶領域から監視フラグの値を読み出す。
【００６８】
ＷＡＦ監視バッファ１５から読み出される監視フラグの値が“０”である場合、監視フラグは、書込アドレスＦｉｆｏ５からＷＡＦ読出制御部２へ払い出される空きアドレスが未使用状態であることを示している。従って、ＷＡＦ監視部１６は、共有バッファＳＢのアドレスが重複しないと判定する。
【００６９】
重複なしの判定の場合、ＷＡＦ監視部１６は、書込アドレスＦｉｆｏ５から払い出される空きアドレスの値と同じ値のアドレスに対応するＷＡＦ監視バッファ１５の記憶領域に保持されている監視フラグの値を“１”に変更する。それによって、書込アドレスＦｉｆｏ５から空きアドレスとして払い出される共有バッファＳＢのアドレスは空きアドレスではなく、使用中の状態となる。また、ＷＡＦ監視部１６は、ＷＡＦ読出制御部２へ重複なしのＷ側重複判定通知を送る。
【００７０】
ＷＡＦ監視バッファ１５から読み出される監視フラグの値が“１”である場合、監視フラグは、書込アドレスＦｉｆｏ５からＷＡＦ読出制御部２へ払い出される空きアドレスが使用状態であることを示している。従って、ＷＡＦ監視部１６は、共有バッファＳＢのアドレスが重複すると判定する。
【００７１】
重複ありの判定の場合、ＷＡＦ監視部１６は、書込アドレスＦｉｆｏ５から払い出される空きアドレスの値と同じ値のアドレスに対応するＷＡＦ監視バッファ１５の記憶領域に保持されている監視フラグの値を変更せずに“１”のままとする。つまり、書込アドレスＦｉｆｏ５から空きアドレスとして払い出される共有バッファＳＢのアドレスは使用中の状態のままとなる。また、ＷＡＦ監視部１６は、ＷＡＦ読出制御部２へ重複ありのＷ側重複判定通知を送る。
【００７２】
ＷＡＦ監視部１６は読出制御部１０から返却アドレスを取得し、この返却アドレスの値と同じ値のアドレスに対応するＷＡＦ監視バッファ１５の記憶領域から監視フラグの値を読み出す。
【００７３】
ＷＡＦ監視バッファ１５から読み出される監視フラグの値が“１”である場合、監視フラグは、返却アドレスが使用状態であることを示している。つまり、返却アドレスに対応する共有バッファＳＢの記憶領域には、読み出し可能なＬ２フレームデータが格納されていることになる。従って、ＷＡＦ監視部１６は、共有バッファＳＢから読み出し可能なＬ２フレームデータが読み出される際に用いられる読出アドレス、すなわち返却アドレスは重複しないと判定する。
【００７４】
重複なしの判定の場合、ＷＡＦ監視部１６は、返却アドレスの値と同じ値のアドレスに対応するＷＡＦ監視バッファ１５の記憶領域に保持されている監視フラグの値を“０”に変更する。それによって、返却アドレスに対応する共有バッファＳＢのアドレスは空きアドレスとなり、未使用状態となる。また、ＷＡＦ監視部１６は、ＷＡＦ書込制御部１１及び後述するデータ廃棄判定部１３へ重複なしのＲ側重複判定通知を送る。
【００７５】
ＷＡＦ監視バッファ１５から読み出される監視フラグの値が“０”である場合、監視フラグは、返却アドレスが未使用状態であることを示している。つまり、返却アドレスに対応する共有バッファＳＢの記憶領域には一度もＬ２フレームデータが書き込まれていないか、返却アドレスが既に返却済みであることになる。従って、ＷＡＦ監視部１６は、返却アドレスが重複すると判定する。
【００７６】
重複ありの判定の場合、ＷＡＦ監視部１６は、返却アドレスの値と同じ値のアドレスに対応するＷＡＦ監視バッファ１５の記憶領域に保持されている監視フラグの値を変更せずに“０”のままとする。つまり、返却アドレスに対応する共有バッファＳＢのアドレスは未使用状態のままとなる。また、ＷＡＦ監視部１６は、ＷＡＦ書込制御部１１及び後述するデータ廃棄判定部１３へ重複ありのＲ側重複判定通知を送る。ＷＡＦ監視部１６は監視部の一例である。
【００７７】
また、スイッチ部ＳＰはパリティ生成部３、パリティチェック部１２、データ廃棄判定部１３及びフレーム分離部１４を有する。パリティ生成部３はフレーム多重部１に接続されている。パリティ生成部３は、フレーム多重部１から出力されるＬ２フレームデータに対して故障検出用にパリティ演算を行い、演算結果であるパリティビットを共有バッファＳＢへ出力する。
【００７８】
共有バッファＳＢはフレーム多重部１、パリティ生成部３、ＷＡＦ読出制御部２及び後述する読出制御部１０に接続されている。共有バッファＳＢは、ＷＡＦ読出制御部２から払い出される書込アドレスに対応する記憶領域に、フレーム多重部１から出力されるＬ２フレームデータとともにパリティ生成部３から出力されるパリティビットを格納する。共有バッファＳＢは、読出制御部１０によって読出アドレスが与えられると、この読出アドレスに対応する記憶領域からＬ２フレームデータ及びパリティビットを出力する。
【００７９】
パリティチェック部１２は共有バッファＳＢに接続されている。パリティチェック部１２は、共有バッファＳＢから出力されるＬ２フレームデータに対してパリティ演算を行い、演算結果であるパリティビットの値と、パリティ生成部３から出力されるパリティビットの値とを比較する。比較の結果、両パリティビットの値が一致する場合にはパリティチェック部１２はデータ廃棄判定部１３へエラーなしを通知し、両パリティビットの値が一致しない場合にはエラーありを通知する。
【００８０】
データ廃棄判定部１３は共有バッファＳＢ、パリティチェック部１２及びＷＡＦ監視部１６に接続されている。データ廃棄判定部１３は、パリティチェック部１２からエラーなしの通知を受け取るとともに、ＷＡＦ監視部１６から重複なしのＲ側重複判定通知を受け取ると、共有バッファＳＢから出力されるＬ２フレームデータをフレーム分離部１４へ出力する。データ廃棄判定部１３は、パリティチェック部１２からエラーありの通知を受け取るか、またはＷＡＦ監視部１６から重複ありのＲ側重複判定通知を受け取ると、共有バッファＳＢから読み出されるＬ２フレームデータを廃棄する。
【００８１】
フレーム分離部１４はデータ廃棄判定部１３及び後述する読出制御部１０に接続されている。フレーム分離部１４は、データ廃棄判定部１３からＬ２フレームデータを受け取るとともに、読出制御部１０から出力ポート情報を受け取る。フレーム分離部１４は、フレーム多重部１によって多重化されているＬ２フレームデータを個々のＬ２フレームデータに分離し、個々のＬ２フレームデータを出力ポート情報によって指定されるポートＰ０〜Ｐ３からそれぞれ出力する。
【００８２】
またスイッチ部ＳＰは宛先情報・優先制御情報抽出部４、書込制御部６、パリティ生成部７＿１〜７＿４、読出キュー８＿１〜８＿４、パリティチェック部９＿１〜９＿４及び読出制御部１０を有する。図７には４個の読出キュー８＿１〜８＿４が示されているが、例えば宛先α−高優先の読出キュー８＿１及び宛先α−低優先の読出キュー８＿２がＬＩＵカードＣ＃１に対応し、宛先β−高優先の読出キュー８＿３及び宛先β−低優先の読出キュー８−４がＬＩＵカードＣ＃２に対応している。従って、図６に示す例のように４個のＬＩＵカードＣ＃０〜Ｃ＃３が存在する場合には、８個の読出キューが存在することになるが、図７には便宜上４個の読出キューが示されている。
【００８３】
宛先情報・優先制御情報抽出部４はフレーム多重部１に接続されている。宛先情報・優先制御情報抽出部４は、フレーム多重部１から出力されるＬ２フレームデータに付加されている宛先情報及び優先制御情報を抽出し、宛先情報及び優先制御情報を書込制御部６へ転送する。
【００８４】
書込制御部６はＷＡＦ読出制御部２、宛先情報・優先制御情報抽出部４及び読出制御部１０に接続されている。書込制御部６は、ＷＡＦ読出制御部２から払い出される共有バッファＳＢに対する書込アドレスを、宛先情報・優先制御情報抽出部４から受け取る宛先情報及び優先制御情報に対応する読出キュー８＿１〜８＿４へ、当該読出キュー８＿１〜８＿４に対する巡回アドレスとともに転送する。また、書込制御部６は、転送先の読出キュー８＿１〜８＿４に対する書込フラグＷＦＬＧを読出制御部１０へ転送する。
【００８５】
パリティ生成部７＿１〜７＿４は書込制御部６に接続されている。パリティ生成部７＿１〜７＿４は、書込制御部６から出力される書込アドレスに対して故障検出用にパリティ演算を行い、演算結果であるパリティビットを対応する読出キュー８＿１〜８＿４へ出力する。
【００８６】
読出キュー８＿１〜８＿４は書込制御部６、パリティ生成部７＿１〜７＿４及び読出制御部１０に接続されている。読出キュー８＿１〜８＿４は、書込制御部６から出力される巡回アドレスに対応する記憶領域に、書込制御部６から出力される書込アドレスを、対応するパリティ生成部７＿１〜７＿４から出力されるパリティビットとともに格納する。読出キュー８＿１〜８＿４は、読出制御部１０から巡回アドレスが与えられると、この巡回アドレスに対応する記憶領域から書込アドレス及びパリティビットを出力する。
【００８７】
パリティチェック部９＿１〜９＿４は、対応する読出キュー８＿１〜８＿４及び読出制御部１０に接続されている。パリティチェック部９＿１〜９＿４は、対応する読出キュー８＿１〜８＿４から出力される書込アドレスに対してパリティ演算を行い、演算結果であるパリティビットの値と、対応するパリティ生成部７＿１〜７＿４から出力されるパリティビットの値とを比較する。比較の結果、両パリティビットの値が一致する場合にはパリティチェック部９＿１〜９＿４は読出制御部１０へエラーなしを通知し、両パリティビットの値が一致しない場合にはエラーありを通知する。
【００８８】
読出制御部１０は、読出キュー８＿１〜８＿４ごとに図示しない容量カウンタを有し、書込制御部６から書込フラグＷＦＬＧを受け取るたびに対応する容量カウンタをカウントアップする。読出制御部１０は、各容量カウンタによって各読出キュー８＿１〜８＿４に格納されている書込アドレスの容量を監視する。共有バッファＳＢからＬ２フレームデータが読み出される際に、読出制御部１０は、Ｌ２フレームデータが共有バッファＳＢ内に蓄積されているか否かを各容量カウンタの値によって判断する。
【００８９】
読出制御部１０は、容量カウンタの値が０でない場合には、読出キュー８＿１〜８＿４の優先制御及び例えばラウンドロビンなどの公平性制御を行い、その結果選択される読出キュー８＿１〜８＿４に対して巡回アドレスを指定して書込アドレスを読み出す。読出制御部１０は、読出キュー８＿１〜８＿４から読み出される書込アドレスに対してパリティチェック部９＿１〜９＿４からエラーありが通知されると、その書込アドレスを破棄し、共有バッファＳＢへ転送しない。この場合、共有バッファＳＢに読出アドレスが与えられないため、共有バッファＳＢからＬ２フレームデータが読み出されることはない。
【００９０】
読出制御部１０は、パリティチェック部９＿１〜９＿４からエラーなしが通知されると、読出キュー８＿１〜８＿４から読み出される書込アドレスを共有バッファＳＢに対する読出アドレスとして共有バッファＳＢへ転送するとともに、返却アドレスとしてＷＡＦ書込制御部１１へ転送する。また、読出制御部１０は、選択される読出キュー８＿１〜８＿４の情報を出力ポート情報としてフレーム分離部１４へ転送する。例えば宛先αがＬＩＵカードＣ＃１に対応するのであれば、出力ポート情報として、ＬＩＵカードＣ＃１への出力に対応するスイッチ部ＳＰのポートＰ１を示す情報Ｐ１がフレーム分離部１４へ転送されることになる。
【００９１】
図７に示すスイッチ部ＳＰにおいて、ＷＡＦ監視バッファ１５、ＷＡＦ監視部１６、ＷＡＦ読出制御部２、ＷＡＦ書込制御部１１、書込アドレスＦｉｆｏ５及び共有バッファＳＢがそれぞれハードウェアによって実現されていてもよい。あるいは、ＷＡＦ監視部１６、ＷＡＦ読出制御部２及びＷＡＦ書込制御部１１はソフトウェアの処理によって実現されてもよい。ＷＡＦ監視部１６、ＷＡＦ読出制御部２及びＷＡＦ書込制御部１１がソフトウェアの処理によって実現される場合のハードウェア構成は、例えば図３に示す構成と同様であってもよい。ＷＡＦ監視バッファ１５、共有バッファＳＢまたは書込アドレスＦｉｆｏ５は例えばＲＡＭなどの揮発性メモリによって実現されてもよい。
【００９２】
また、フレーム多重部１、パリティ生成部３、パリティチェック部１２、データ廃棄判定部１３及びフレーム分離部１４がそれぞれハードウェアによって実現されていてもよい。また、宛先情報・優先制御情報抽出部４、書込制御部６、パリティ生成部７＿１〜７＿４、読出キュー８＿１〜８＿４、パリティチェック部９＿１〜９＿４及び読出制御部１０がそれぞれハードウェアによって実現されていてもよい。
【００９３】
あるいは、フレーム多重部１、パリティ生成部３、パリティチェック部１２、データ廃棄判定部１３、フレーム分離部１４、宛先情報・優先制御情報抽出部４、書込制御部６、パリティ生成部７＿１〜７＿４、パリティチェック部９＿１〜９＿４及び読出制御部１０はソフトウェアの処理によって実現されてもよい。これらの各部１，３，４，６，７＿１〜７＿４，９＿１〜９＿４，１０，１２〜１４がソフトウェアの処理によって実現される場合のハードウェア構成は、例えば図３に示す構成と同様であってもよい。読出キュー８＿１〜８＿４は例えばＲＡＭなどの揮発性メモリによって実現されてもよい。
【００９４】
・ＷＡＦ監視バッファの初期化動作の一例
図８は、ＷＡＦ監視バッファの初期化動作の一例を示す図である。スイッチカードＳＷＣ、もしくはスイッチカードＳＷＣ及びＬＩＵカードＣ＃０〜Ｃ＃３を有する装置の電源が投入されるか、またはリセット解除によって当該装置の立上げが開始されると、ＷＡＦ監視バッファ１５の初期化が始まる。
【００９５】
図８に示すように、ＷＡＦ監視バッファ１５の初期化が始まると、ＷＡＦ監視部１６は、まず、ＷＡＦ監視バッファ１５にデータを書き込むための書込アドレスを０に設定する（ステップＳ２１）。次いで、ＷＡＦ監視部１６は、書込アドレスに対応するＷＡＦ監視バッファ１５の記憶領域に監視フラグの値として“０”を書き込む（ステップＳ２２）。
【００９６】
次いで、ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対する現在の書込アドレスがＷＡＦ監視バッファ１５に対するアドレスの最大アドレスであるか否かを判断する（ステップＳ２３）。ＷＡＦ監視バッファ１５に対する現在の書込アドレスがＷＡＦ監視バッファ１５に対する最大のアドレスでない場合（ステップＳ２３：Ｎｏ）、ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対する現在の書込アドレスに１を加算して新たに現在の書込アドレスとする。つまり、ＷＡＦ監視バッファ１５に対する書込アドレスがインクリメントされる（ステップＳ２４）。
【００９７】
そして、ステップＳ２２に戻り、監視フラグの値を“０”にする動作が、ＷＡＦ監視バッファ１５に対する最大のアドレスに達するまで繰り返される（ステップＳ２２〜Ｓ２４）。ＷＡＦ監視バッファ１５に対する現在の書込アドレスがＷＡＦ監視バッファ１５に対する最大のアドレスに達すると（ステップＳ２３：Ｙｅｓ）、ＷＡＦ監視バッファ１５に格納される全ての監視フラグの値が“０”になるため、一連の初期化動作を終了する。全ての監視フラグの値が“０”であることは、共有バッファＳＢ内のアドレス空間が未使用状態であることを示す。
【００９８】
・共有バッファへのデータ書込動作の一例
図９は、共有バッファへのデータ書込動作の一例を示す図である。スイッチカードＳＷＣがＬ２フレームデータを受信すると、共有バッファへのデータ書込動作が始まる。
【００９９】
図９に示すように、共有バッファへのデータ書込動作が始まると、ＷＡＦ読出制御部２は、書込アドレスＦｉｆｏ５に対して巡回アドレスを指定する。そして、ＷＡＦ読出制御部２は、その巡回アドレスに対応する書込アドレスＦｉｆｏ５の記憶領域に保持されている空きアドレス（Ａｄｄ１とする）を取得する（ステップＳ３１）。
【０１００】
また、ＷＡＦ監視部１６もその空きアドレスＡｄｄ１を取得する。次いで、ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対して空きアドレスＡｄｄ１を指定する。そして、ＷＡＦ監視部１６は、空きアドレスＡｄｄ１に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグ（ＦＬ１とする）を取得する（ステップＳ３２）。
【０１０１】
次いで、ＷＡＦ監視部１６は、監視フラグＦＬ１が“０”であるか否かを判断する（ステップＳ３３）。監視フラグＦＬ１が“０”である場合（ステップＳ３３：Ｙｅｓ）、ＷＡＦ監視部１６は、空きアドレスＡｄｄ１は未使用状態であり、重複して使用されていないと判定し、ＷＡＦ読出制御部２へ重複なしのＷ側重複判定通知を送る。
【０１０２】
そして、ＷＡＦ監視部１６は、空きアドレスＡｄｄ１に対応するＷＡＦ監視バッファ１５の記憶領域に“１”を書き込み、空きアドレスＡｄｄ１に対応する監視フラグＦＬ１の値を“１”に変更する（ステップＳ３４）。それによって、空きアドレスＡｄｄ１に対応する共有バッファＳＢの記憶領域が使用状態であることが示される。
【０１０３】
次いで、ＷＡＦ読出制御部２は共有バッファＳＢへ空きアドレスＡｄｄ１を転送する。それによって、共有バッファＳＢは、空きアドレスＡｄｄ１に対応する記憶領域にＬ２フレームデータを格納する（ステップＳ３５）。そして、一連のデータ書込動作が終了する。
【０１０４】
一方、ステップＳ３３において監視フラグＦＬ１が“０”でない、すなわち“１”である場合（ステップＳ３３：Ｎｏ）、ＷＡＦ監視部１６は、空きアドレスＡｄｄ１が使用状態であり、重複して使用されていると判定し、ＷＡＦ読出制御部２へ重複ありのＷ側重複判定通知を送る（ステップＳ３６）。
【０１０５】
次いで、ＷＡＦ読出制御部２は空きアドレスＡｄｄ１を破棄する。それによって、Ｌ２フレームデータは共有バッファＳＢに格納されずに破棄される（ステップＳ３７）。そして、一連のデータ書込動作が終了する。
【０１０６】
・共有バッファからのデータ読出動作の一例
図１０は、共有バッファからのデータ読出動作の一例を示す図である。図１０に示すように、共有バッファからのデータ読出動作が始まると、読出制御部１０は、優先制御や公平性制御を行って読み出し対象の読出キュー８＿１〜８＿４を判定する（ステップＳ４１）。
【０１０７】
次いで、読出制御部１０は、読み出し対象の読出キュー８＿１〜８＿４に対して巡回アドレスを指定し、その巡回アドレスに対応する読出キュー８＿１〜８＿４の記憶領域に保持されている書込アドレス（Ａｄｄ２とする）を取得する（ステップＳ４２）。書込アドレスＡｄｄ２に対してパリティチェック部９＿１〜９＿４からエラーありが通知されると、読出制御部１０はその書込アドレスＡｄｄ２を破棄する。
【０１０８】
エラーなしが通知されると、読出制御部１０は、書込アドレスＡｄｄ２を共有バッファＳＢに対する読出アドレス（書込アドレスＡｄｄ２と同じものであるためＡｄｄ２とする）として共有バッファＳＢへ転送する。それによって、読出アドレスＡｄｄ２に対応する共有バッファＳＢの記憶領域からＬ２フレームデータが読み出される。
【０１０９】
また、ＷＡＦ監視部１６及びＷＡＦ書込制御部１１も読出アドレスＡｄｄ２を返却アドレス（読出アドレスＡｄｄ２と同じものであるためＡｄｄ２とする）として取得する。次いで、ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対して返却アドレスＡｄｄ２を指定する。そして、ＷＡＦ監視部１６は、返却アドレスＡｄｄ２に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグ（ＦＬ２とする）を取得する（ステップＳ４３）。
【０１１０】
次いで、ＷＡＦ監視部１６は、監視フラグＦＬ２が“１”であるか否かを判断する（ステップＳ４４）。監視フラグＦＬ２が“１”である場合（ステップＳ４４：Ｙｅｓ）、ＷＡＦ監視部１６は、返却アドレスＡｄｄ２は使用状態であり、空きアドレスではないため、重複して使用されていないと判定し、ＷＡＦ書込制御部１１及びデータ廃棄判定部１３へ重複なしのＲ側重複判定通知を送る。
【０１１１】
そして、ＷＡＦ監視部１６は、返却アドレスＡｄｄ２に対応するＷＡＦ監視バッファ１５の記憶領域に“０”を書き込み、返却アドレスＡｄｄ２に対応する監視フラグＦＬ２の値を“０”に変更する（ステップＳ４５）。それによって、返却アドレスＡｄｄ２が空きアドレスとして受け付けられ、返却アドレスＡｄｄ２に対応する共有バッファＳＢの記憶領域が未使用状態であることが示される。
【０１１２】
ＷＡＦ書込制御部１１は、重複なしのＲ側重複判定通知を受け取ると、書込アドレスＦｉｆｏ５に対して巡回アドレスを指定し、その巡回アドレスに対応する書込アドレスＦｉｆｏ５の記憶領域に返却アドレスＡｄｄ２を空きアドレスとして格納する。また、データ廃棄判定部１３は、重複なしのＲ側重複判定通知及びパリティチェック部１２からのエラーなしの通知を受け取ると、共有バッファＳＢから転送されるＬ２フレームデータをフレーム分離部１４へ転送する。それによって、読出制御部１０から出力される出力ポート情報に基づいてＬ２フレームデータが転送される（ステップＳ４６）。そして、一連のデータ読出動作が終了する。
【０１１３】
一方、ステップＳ４４において監視フラグＦＬ２が“１”でない、すなわち“０”である場合（ステップＳ４４：Ｎｏ）、ＷＡＦ監視部１６は、返却アドレスＡｄｄ２が空きアドレスであるため、重複して使用されていると判定し、ＷＡＦ書込制御部１１及びデータ廃棄判定部１３へ重複ありのＲ側重複判定通知を送る（ステップＳ４７）。
【０１１４】
ＷＡＦ書込制御部１１は、重複ありのＲ側重複判定通知を受け取ると、返却アドレスＡｄｄ２を破棄する。また、データ廃棄判定部１３は、重複ありのＲ側重複判定通知またはパリティチェック部１２からのエラーありの通知を受け取ると、共有バッファＳＢから転送されるＬ２フレームデータを廃棄する（ステップＳ４８）。そして、一連のデータ読出動作が終了する。
【０１１５】
以下に、共有バッファＳＢに対するＬ２フレームデータの書き込みまたは読み出しの動作について、共有バッファＳＢ、書込アドレスＦｉｆｏ５、ＷＡＦ監視バッファ１５及び読出キュー８＿１〜８＿４の具体例を示して説明する。
【０１１６】
・正常時のデータ書込動作の一例
図１１は、正常時のデータ書込動作の一例を示す図である。図１１には、連続するＬ２フレームデータＡ〜Ｄが既に共有バッファＳＢに格納されている状態が示されている。
【０１１７】
電源投入直後またはリセット解除直後の状態においては、例えば図８に示すフローチャートの動作によって、ＷＡＦ監視バッファ１５の全アドレス空間の値は“０”に初期化される。書込アドレスＦｉｆｏ５の全アドレス空間の値は、書込アドレスＦｉｆｏ５に対するアドレスの値と同じになる。つまり、書込アドレスＦｉｆｏ５に対するアドレスの値が“０”であれば、“０”のアドレスに対応する書込アドレスＦｉｆｏ５の記憶領域の値は“０”となり、“１０２３”の記憶領域の値は“１０２３”となる。
【０１１８】
そして、書込アドレスＦｉｆｏ５内に同じ値は存在しない。つまり、共有バッファＳＢに対するアドレスの値が書込アドレスＦｉｆｏ５内に格納されるため、初期状態においては、共有バッファＳＢに対するアドレスが重複していない状態となる。また、共有バッファＳＢ及び読出キュー８＿１〜８＿４はＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）であるため、初期化する必要はない。
【０１１９】
図１１に示すように、例えばＬ２フレームデータがＡ、Ｂ、Ｃ及びＤの順でスイッチカードＳＷＣに到着する場合について説明する。Ｌ２フレームデータＡの到着によって、ＷＡＦ読出制御部２は、書込アドレスＦｉｆｏ５に対して巡回アドレス“０”を指定し、巡回アドレス“０”に対応する書込アドレスＦｉｆｏ５の記憶領域に保持されている空きアドレス“０”を取得する。
【０１２０】
ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対して空きアドレス“０”を指定し、空きアドレス“０”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグを取得する。監視フラグの値が“０”に初期化されているため、ＷＡＦ監視部１６は、空きアドレス“０”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグの値を“１”に変更する。
【０１２１】
また、ＷＡＦ読出制御部２は、空きアドレス“０”を書込アドレスとして共有バッファＳＢへ払い出す（ステップＳ５１）。共有バッファＳＢは、書込アドレス“０”に対応する記憶領域にＬ２フレームデータＡを格納する（ステップＳ５２）。また、書込制御部６は、例えば読出キュー８＿４に書込アドレス“０”を格納する（ステップＳ５３）。
【０１２２】
Ｌ２フレームデータＢ、Ｃ及びＤの到着による動作も同様である。ただし、Ｌ２フレームデータＢの到着に際しては、ＷＡＦ読出制御部２が書込アドレスＦｉｆｏ５に対して指定する巡回アドレスは“１”であり、書込アドレスＦｉｆｏ５から取得する空きアドレスは“１”である。また、共有バッファＳＢは、空きアドレス“１”すなわち書込アドレス“１”に対応する記憶領域にＬ２フレームデータＢを格納する。また、書込制御部６は、例えば読出キュー８＿３に書込アドレス“１”を格納する。
【０１２３】
Ｌ２フレームデータＣの到着に際しては、巡回アドレスは“２”であり、空きアドレスは“２”である。書込アドレス“２”に対応する共有バッファＳＢの記憶領域にＬ２フレームデータＣが格納され、例えば読出キュー８＿２に書込アドレス“２”が格納される。
【０１２４】
Ｌ２フレームデータＤの到着に際しては、巡回アドレスは“３”であり、空きアドレスは“３”である。書込アドレス“３”に対応する共有バッファＳＢの記憶領域にＬ２フレームデータＤが格納され、例えば読出キュー８＿１に書込アドレス“３”が格納される。図１１には、ここまでの状態が示されている。
【０１２５】
・正常時のデータ読出動作の一例
図１２は、正常時のデータ読出動作の一例を示す図である。図１２には、Ｌ２フレームデータＡ〜Ｄが既に共有バッファＳＢから読み出されている状態が示されている。
【０１２６】
図１２に示すように、例えばＬ２フレームデータをＤ、Ｃ、Ｂ及びＡの順でスイッチカードＳＷＣからＬＩＵカードＣ＃０〜Ｃ＃３へ転送する場合について説明する。なお、正常時の読出動作であるため、パリティチェック部９＿１〜９＿４及びパリティチェック部１２ではエラーが検出されない。
【０１２７】
読出制御部１０の優先制御や公平性制御によって、読出制御部１０は読出キュー８＿１から書込アドレス“３”を取得する。読出制御部１０は、書込アドレス“３”を、それぞれ読出アドレス“３”として共有バッファＳＢへ転送し、返却アドレスとしてＷＡＦ書込制御部１１及びＷＡＦ監視部１６へ転送する（ステップＳ６１）。
【０１２８】
読出アドレス“３”に対応する共有バッファＳＢの記憶領域からＬ２フレームデータＤが読み出される（ステップＳ６２）。また、ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対して返却アドレス“３”を指定し、返却アドレス“３”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグを取得する。監視フラグの値が“１”であるため、ＷＡＦ監視部１６は、返却アドレス“３”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグの値を“０”に変更する。
【０１２９】
ＷＡＦ書込制御部１１は、書込アドレスＦｉｆｏ５に対して例えば巡回アドレス“０”を指定し、巡回アドレス“０”に対応する書込アドレスＦｉｆｏ５の記憶領域に返却アドレス“３”を空きアドレスとして格納する（ステップＳ６３）。また、共有バッファＳＢから読み出されるＬ２フレームデータＤは、データ廃棄判定部１３を経由してフレーム分離部１４からＬＩＵカードＣ＃０〜Ｃ＃３へ転送される。
【０１３０】
Ｌ２フレームデータＣ、Ｂ及びＡを読み出す動作も同様である。ただし、Ｌ２フレームデータＣの読み出しに際しては、読出制御部１０は読出キュー８＿２から書込アドレス“２”を取得する。そのため、共有バッファＳＢへ転送される読出アドレスは“２”となり、ＷＡＦ書込制御部１１及びＷＡＦ監視部１６へ転送される返却アドレスは“２”となる。
【０１３１】
従って、読出アドレス“２”に対応する共有バッファＳＢの記憶領域からＬ２フレームデータＣが読み出される。また、返却アドレス“２”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグの値が“１”から“０”に変更される。ＷＡＦ書込制御部１１が書込アドレスＦｉｆｏ５に対して指定する巡回アドレスは例えば“１”であり、巡回アドレス“１”に対応する書込アドレスＦｉｆｏ５の記憶領域に返却アドレス“２”が空きアドレスとして格納される。
【０１３２】
Ｌ２フレームデータＢの読み出しに際しては、書込アドレス、読出アドレス及び返却アドレスは、読出キュー８＿３から読み出される“１”である。従って、Ｌ２フレームデータＢは、読出アドレス“１”に対応する共有バッファＳＢの記憶領域から読み出される。また、返却アドレス“１”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグの値が“１”から“０”に変更される。ＷＡＦ書込制御部１１が書込アドレスＦｉｆｏ５に対して指定する巡回アドレスは例えば“２”であり、巡回アドレス“２”に対応する書込アドレスＦｉｆｏ５の記憶領域に返却アドレス“１”が空きアドレスとして格納される。
【０１３３】
Ｌ２フレームデータＡの読み出しに際しては、書込アドレス、読出アドレス及び返却アドレスは、読出キュー８＿４から読み出される“０”である。従って、Ｌ２フレームデータＡは、読出アドレス“０”に対応する共有バッファＳＢの記憶領域から読み出される。また、返却アドレス“０”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグの値が“１”から“０”に変更される。ＷＡＦ書込制御部１１が書込アドレスＦｉｆｏ５に対して指定する巡回アドレスは例えば“３”であり、巡回アドレス“３”に対応する書込アドレスＦｉｆｏ５の記憶領域に返却アドレス“０”が空きアドレスとして格納される。図１２には、ここまでの状態が示されている。
【０１３４】
・読出キューで発生するビットエラーを検出できない場合の読出動作の一例
図１３は、読出キューで発生するビットエラーを検出できない場合の読出動作の一例を示す図である。図１３には、ビットエラーが発生した状態でＬ２フレームデータＡ〜Ｃが既に共有バッファＳＢから読み出されている状態が示されている。
【０１３５】
図１３に示すように、正常に書込動作が終了して図１１に示す状態となった後に、例えば読出キュー８＿１でビットエラーが発生し、このビットエラーをパリティチェック部９＿１で検出できない場合について説明する。なお、パリティチェック部１２ではエラーが検出されないとする。
【０１３６】
読出制御部１０の優先制御や公平性制御によって、読出制御部１０は読出キュー８＿１から書込アドレスを取得する。読出キュー８＿１から読み出される書込アドレスの値は、本来“３”であるが、ビットエラーの発生によって“０”になっているとする。読出制御部１０は、書込アドレス“０”を、それぞれ読出アドレス“０”として共有バッファＳＢへ転送し、返却アドレスとしてＷＡＦ書込制御部１１及びＷＡＦ監視部１６へ転送する（ステップＳ６１）。
【０１３７】
読出アドレス“０”に対応する共有バッファＳＢの記憶領域からＬ２フレームデータＡが読み出される（ステップＳ６２）。また、ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対して返却アドレス“０”を指定し、返却アドレス“０”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグを取得する。監視フラグの値が“１”であるため、Ｒ側重複判定は重複なしとなる。ＷＡＦ監視部１６は、返却アドレス“０”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグの値を“０”に変更する。
【０１３８】
ＷＡＦ書込制御部１１は、書込アドレスＦｉｆｏ５に対して例えば巡回アドレス“０”を指定し、巡回アドレス“０”に対応する書込アドレスＦｉｆｏ５の記憶領域に返却アドレス“０”を空きアドレスとして格納する（ステップＳ６３）。また、共有バッファＳＢから読み出されるＬ２フレームデータＡは、データ廃棄判定部１３を経由してフレーム分離部１４からＬＩＵカードＣ＃０〜Ｃ＃３へ転送される。
【０１３９】
次いで、読出キュー８＿２から書込アドレス“２”が読み出され、共有バッファＳＢからＬ２フレームデータＣが読み出される。また、返却アドレス“２”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグの値が“０”に変更され、巡回アドレス“１”に対応する書込アドレスＦｉｆｏ５の記憶領域に返却アドレス“２”が空きアドレスとして格納される。Ｌ２フレームデータＣは、データ廃棄判定部１３を経由してフレーム分離部１４からＬＩＵカードＣ＃０〜Ｃ＃３へ転送される。
【０１４０】
次いで、読出キュー８＿３から書込アドレス“１”が読み出され、共有バッファＳＢからＬ２フレームデータＢが読み出される。また、返却アドレス“１”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグの値が“０”に変更され、巡回アドレス“２”に対応する書込アドレスＦｉｆｏ５の記憶領域に返却アドレス“１”が空きアドレスとして格納される。Ｌ２フレームデータＢは、データ廃棄判定部１３を経由してフレーム分離部１４からＬＩＵカードＣ＃０〜Ｃ＃３へ転送される。
【０１４１】
次いで、読出キュー８＿４から書込アドレス“０”が読み出され、共有バッファＳＢからＬ２フレームデータＡが読み出される。ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対して返却アドレス“０”を指定し、返却アドレス“０”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグを取得する。監視フラグの値が“０”であるため、Ｒ側重複判定は重複ありとなる。
【０１４２】
従って、今回、共有バッファＳＢから読み出されるＬ２フレームデータＡはデータ廃棄判定部１３によって廃棄されるため、ＬＩＵカードＣ＃０〜Ｃ＃３へは転送されない。また、共有バッファＳＢに対するアドレス“３”が空きアドレスとして書込アドレスＦｉｆｏ５に返却されないため、ＷＡＦ監視バッファ１５のアドレス“３”に対応する記憶領域の監視フラグの値は“１”のままとなる。
【０１４３】
・書込アドレスＦｉｆｏでビットエラーが発生する場合の書込動作の一例
図１４は、書込アドレスＦｉｆｏでビットエラーが発生する場合の書込動作の一例を示す図である。図１４には、例えば連続するＬ２フレームデータがＥ、Ｆ、Ｇ及びＨの順でスイッチカードＳＷＣに到着し、Ｌ２フレームデータＥ〜Ｇが既に共有バッファＳＢに格納されている状態が示されている。
【０１４４】
図１４に示すように、図１２に示す読出動作によってＬ２フレームデータＡ〜Ｄの読出動作が正常に終了した後に、書込アドレスＦｉｆｏ５でビットエラーが発生する場合について説明する。ビットエラー発生前の状態では、巡回アドレス“０”、“１”、“２”及び“３”に対応する書込アドレスＦｉｆｏ５の記憶領域には、それぞれ“３”、“２”、“１”及び“０”が格納されているとする。また、アドレス“０”、“１”、“２”及び“３”に対応するＷＡＦ監視バッファ１５の監視フラグの値は全て“０”であるとする。巡回アドレス“３”に対応する書込アドレスＦｉｆｏ５の記憶領域においてビットエラーが発生し、本来“０”である空きアドレスの値が“３”になっているとする。
【０１４５】
Ｌ２フレームデータＥの到着によって、ＷＡＦ読出制御部２は、書込アドレスＦｉｆｏ５に対して巡回アドレス“０”を指定し、巡回アドレス“０”に対応する書込アドレスＦｉｆｏ５の記憶領域に保持されている空きアドレス“３”を取得する。
【０１４６】
ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対して空きアドレス“３”を指定し、空きアドレス“３”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグを取得する。監視フラグの値が“０”に戻っているため、ＷＡＦ監視部１６は、空きアドレス“３”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグの値を“１”に変更する。
【０１４７】
また、ＷＡＦ読出制御部２は、空きアドレス“３”を書込アドレスとして共有バッファＳＢへ払い出す（ステップＳ５１）。共有バッファＳＢは、書込アドレス“３”に対応する記憶領域にＬ２フレームデータＥを格納する（ステップＳ５２）。また、書込制御部６は、例えば読出キュー８＿１に書込アドレス“３”を格納する（ステップＳ５３）。
【０１４８】
Ｌ２フレームデータＦ及びＧの到着による動作も同様である。ただし、Ｌ２フレームデータＦの到着に際しては、ＷＡＦ読出制御部２が書込アドレスＦｉｆｏ５に対して指定する巡回アドレスは“１”であり、書込アドレスＦｉｆｏ５から取得する空きアドレスは“２”である。また、共有バッファＳＢは、空きアドレス“２”すなわち書込アドレス“２”に対応する記憶領域にＬ２フレームデータＦを格納する。また、書込制御部６は、例えば読出キュー８＿２に書込アドレス“２”を格納する。
【０１４９】
Ｌ２フレームデータＧの到着に際しては、巡回アドレスは“２”であり、空きアドレスは“１”である。書込アドレス“１”に対応する共有バッファＳＢの記憶領域にＬ２フレームデータＧが格納され、例えば読出キュー８＿３に書込アドレス“１”が格納される。
【０１５０】
Ｌ２フレームデータＨが到着すると、ＷＡＦ読出制御部２は、書込アドレスＦｉｆｏ５に対して巡回アドレス“３”を指定し、巡回アドレス“３”に対応する書込アドレスＦｉｆｏ５の記憶領域に保持されている空きアドレス“３”を取得する。
【０１５１】
ＷＡＦ監視部１６は、ＷＡＦ監視バッファ１５に対して空きアドレス“３”を指定し、空きアドレス“３”に対応するＷＡＦ監視バッファ１５の記憶領域に格納されている監視フラグを取得する。監視フラグの値が“１”であるため、Ｗ側重複判定は重複ありとなる。従って、今回、共有バッファＳＢから払い出される空きアドレス“３”は共有バッファＳＢ及び読出キュー８＿１〜８−４へ転送されずに破棄される。また、Ｌ２フレームデータＨは共有バッファＳＢに書き込まれずに破棄される。
【０１５２】
スイッチ部ＳＰは、重複すると判定されて破棄された共有バッファＳＢに対するアドレスを復活させてもよい。例えば、共有バッファＳＢからＬ２フレームデータが必ず読み出される一の監視周期内で共有バッファＳＢにＬ２フレームデータを書き込んだ後、共有バッファＳＢからＬ２フレームデータが読み出されなかったアドレス空間を次の監視周期で検出する。そして、このアドレス空間を共有バッファＳＢの空きアドレスとして開放してもよい。
【０１５３】
図７に示すスイッチカードＳＷＣによれば、共有バッファＳＢにＬ２フレームデータを書き込む際に、書込アドレスとして払い出される空きアドレスが重複しているか否かを検出し、重複する場合に、払い出される空きアドレスを破棄することによって、Ｌ２フレームデータの欠落を防ぐことができる。また、共有バッファＳＢからＬ２フレームデータを読み出す際に読出アドレスが重複しているか否かを検出し、重複する場合に読出アドレスの返却を受け付けないことによって、共有バッファＳＢに対するアドレスの重複状態が継続するのを防ぐことができる。さらに、共有バッファＳＢからＬ２フレームデータを読み出す際に読出アドレスが重複する場合、共有バッファＳＢから読み出されるＬ２フレームデータを破棄することによって、Ｌ２フレームデータの誤配を防ぐことができる。
【０１５４】
上述した各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１５５】
（付記１）複数のポートから入力されるデータを保持する共有バッファと、前記ポートから入力されるデータを前記共有バッファに書き込むときに空きアドレスの中から前記共有バッファに対する書込アドレスを払い出すアドレス払出部と、前記共有バッファからデータを読み出すときに前記読み出されるデータに対する読出アドレスの返却を受け付けて空きアドレスとして管理する返却アドレス受付部と、前記共有バッファに対するアドレスの使用状態を示す情報を保持する監視バッファと、前記アドレス払出部による書込アドレスの払い出し及び前記返却アドレス受付部による読出アドレスの返却を監視し、前記アドレス払出部によって書込アドレスが払い出されるときに払い出し対象の書込アドレスに対応する前記監視バッファの情報を未使用状態から使用状態に変更し、前記返却アドレス受付部によって読出アドレスの返却が受け付けられるときに返却対象の読出アドレスに対応する前記監視バッファの情報を使用状態から未使用状態に変更する監視部と、を備え、前記監視部は、前記アドレス払出部によって書込アドレスが払い出されるときに払い出し対象の前記書込アドレスに対応する前記監視バッファの情報が使用状態である場合、前記共有バッファに対するアドレスが重複すると判定することを特徴とするデータ処理装置。
【０１５６】
（付記２）前記監視部によって払い出し対象の書込アドレスが重複すると判定される場合、前記アドレス払出部は払い出し対象の前記書込アドレスを破棄することを特徴とする付記１に記載のデータ処理装置。
【０１５７】
（付記３）前記監視部は、前記返却アドレス受付部によって読出アドレスの返却が受け付けられるときに返却対象の前記読出アドレスに対応する前記監視バッファの情報が未使用状態である場合、前記共有バッファに対するアドレスが重複すると判定し、前記監視部によって返却対象の読出アドレスが重複すると判定される場合、前記返却アドレス受付部は返却対象の前記読出アドレスを破棄することを特徴とする付記１または２に記載のデータ処理装置。
【０１５８】
（付記４）前記監視部は、前記返却アドレス受付部によって読出アドレスの返却が受け付けられるときに返却対象の前記読出アドレスに対応する前記監視バッファの情報が未使用状態である場合、前記共有バッファに対するアドレスが重複すると判定し、前記共有バッファの返却対象の前記読出アドレスに対応する領域から読み出されるデータを破棄することを特徴とする付記１乃至３のいずれか一つに記載のデータ処理装置。
【０１５９】
（付記５）複数のポートから入力されるデータを保持する共有バッファに前記ポートから入力されるデータを書き込むときに空きアドレスの中から前記共有バッファに対する書込アドレスを取得し、前記共有バッファに対するアドレスの使用状態を示す情報を保持する監視バッファから前記書込アドレスの使用状態を示す情報を取得し、前記書込アドレスの前記使用状態を示す情報が未使用状態である場合に、前記書込アドレスの前記使用状態を示す情報を使用状態に変更し、前記書込アドレスの前記使用状態を示す情報が使用状態である場合に、前記書込アドレスが重複すると判定することを特徴とするデータ処理方法。
【０１６０】
（付記６）前記書込アドレスが重複すると判定する場合、前記書込アドレスを破棄することを特徴とする付記５に記載のデータ処理方法。
【０１６１】
（付記７）複数のポートから入力されるデータを保持する共有バッファからデータを読み出すときに前記読み出されるデータに対する読出アドレスを取得し、前記共有バッファに対するアドレスの使用状態を示す情報を保持する監視バッファから前記読出アドレスの使用状態を示す情報を取得し、前記読出アドレスの前記使用状態を示す情報が使用状態である場合に、前記読出アドレスの前記使用状態を示す情報を未使用状態に変更し、前記読出アドレスの前記使用状態を示す情報が未使用状態である場合に、前記読出アドレスが重複すると判定することを特徴とするデータ処理方法。
【０１６２】
（付記８）前記読出アドレスが重複すると判定する場合、前記読出アドレスを破棄することを特徴とする付記７に記載のデータ処理方法。
【０１６３】
（付記９）前記読出アドレスが重複すると判定する場合、前記共有バッファの前記読出アドレスに対応する領域から読み出されるデータを破棄することを特徴とする付記７または８に記載のデータ処理方法。
【符号の説明】
【０１６４】
１０１  監視バッファ
１０２  監視部
１０３  アドレス払出部
１０４  返却アドレス受付部
１０５  共有バッファ
【図１】
2014192641.tif 000003
【図２】
2014192641.tif 000004
【図３】
2014192641.tif 000005
【図４】
2014192641.tif 000006
【図５】
2014192641.tif 000007
【図６】
2014192641.tif 000008
【図７】
2014192641.tif 000009
【図８】
2014192641.tif 000010
【図９】
2014192641.tif 000011
【図１０】
2014192641.tif 000012
【図１１】
2014192641.tif 000013
【図１２】
2014192641.tif 000014
【図１３】
2014192641.tif 000015
【図１４】
2014192641.tif 000016