(57)【要約】  ループ処理を適切に実行するためのハードウェア構成を構築する。  本発明のデジタル回路装置は、複数のハードウェアモジュールが接続されて構成される。少なくとも１つのハードウェアモジュールにおいて、供給部２１６が、入力パケット信号を、回路Ａと回路Ｂで構成されるハードウェアモジュール群に供給する。判定部２１４は、当該ハードウェアモジュール群による処理が完了したか否かを判定し、通知部２２４は、判定部２１４による判定結果に基づいた指示を、前段のハードウェアモジュールに伝達する。判定部２１４は、ハードウェアモジュール群による処理が完了していない場合に、前段のハードウェアモジュールに対して、パケット信号の送信を停止させる制御信号を、通知部２２４から伝達させる。
2007148385.tif 000002
【特許請求の範囲】
【請求項１】
複数のハードウェアモジュールが接続されて構成されるデジタル回路装置であって、
少なくとも１つのハードウェアモジュールは、
前段のハードウェアモジュールから入力されるパケット信号を受信する受信部と、
入力されたパケット信号を保持するバッファメモリと、
バッファメモリに保持されたパケット信号を、１以上のハードウェアモジュールで構成されるハードウェアモジュール群におけるハードウェアモジュールに供給する供給部と、
当該ハードウェアモジュール群による処理が完了したか否かを判定する判定部と、
前記判定部による判定結果に基づいた指示を、前段のハードウェアモジュールに伝達する通知部と、
当該ハードウェアモジュール群による処理が完了した場合に、処理結果を次段のハードウェアモジュールに出力する送信部と、
を備えることを特徴とするデジタル回路装置。
【請求項２】
前記受信部は、ハードウェアモジュール群におけるハードウェアモジュールを経由して処理されたパケット信号を受信し、
前記バッファメモリは、当該ハードウェアモジュールを経由して処理されたパケット信号を保持することを特徴とする請求項１に記載のデジタル回路装置。
【請求項３】
前記判定部は、前記ハードウェアモジュール群による処理が完了していない場合に、前記バッファメモリに保持されたパケット信号を、ハードウェアモジュール群におけるハードウェアモジュールに供給することを前記供給部に指示することを特徴とする請求項２に記載のデジタル回路装置。
【請求項４】
前記判定部は、前記ハードウェアモジュール群による処理が完了していない場合に、前段のハードウェアモジュールに対して、パケット信号の送信を停止させる制御信号を、前記通知部から伝達させることを特徴とする請求項３に記載のデジタル回路装置。
【請求項５】
前記判定部は、前記ハードウェアモジュール群による処理が完了して、前記送信部から次段のハードウェアモジュールに処理結果が出力された後に、前段のハードウェアモジュールに対して、パケット信号の送信を許可する制御信号を、前記通知部から伝達させることを特徴とする請求項４に記載のデジタル回路装置。
【請求項６】
複数のハードウェアモジュールが接続されて構成されるデジタル回路装置であって、
少なくとも１つのハードウェアモジュールは、
前段のハードウェアモジュールから入力されるパケット信号を受信する受信部と、
入力されたパケット信号を保持するバッファメモリと、
バッファメモリに保持されたパケット信号を、１以上のハードウェアモジュールで構成されるハードウェアモジュール群におけるハードウェアモジュールに供給する供給部と、
当該ハードウェアモジュール群による処理が完了した場合に、処理結果を次段のハードウェアモジュールに出力する送信部と、
前記受信部において受信したパケット信号の数と、前記送信部から出力したパケット信号の数とを監視する監視部と、
前記監視部による監視結果により、前記受信部においてパケット信号の受入が可能か否かを判定する判定部と、
前記判定部による判定結果に基づいた指示を、前段のハードウェアモジュールに伝達する通知部と、
を備えることを特徴とするデジタル回路装置。
【請求項７】
前記バッファメモリは所定数のパケット信号を格納可能なメモリサイズを有して構成されており、
前記供給部は、前記バッファメモリに格納されている複数のパケット信号をハードウェアモジュール群における異なるハードウェアモジュールに供給して、複数のパケット信号をパイプライン処理することを特徴とする請求項６に記載のデジタル回路装置。
【請求項８】
前記パケット信号は、次の供給先となるハードウェアモジュールを特定する宛先情報を含んで構成され、
パケット信号を受信したハードウェアモジュールは、パケット信号に施すべき処理の進行状況に応じて宛先情報を更新することを特徴とする請求項１から７のいずれかに記載のデジタル回路装置。
【請求項９】
前記パケット信号は、ハードウェアモジュール群による処理の進行状況を示す進行状況特定情報を含んで構成され、
パケット信号を受信したハードウェアモジュールは、進行状況特定情報を参照して、ハードウェアモジュール群による処理が完了したか否かを判定することを特徴とする請求項１から８のいずれかに記載のデジタル回路装置。
【請求項１０】
前段のハードウェアモジュールとの間には、前記判定部の判定結果に基づいた制御信号を伝達するための制御信号線が形成されていることを特徴とする請求項１から９のいずれかに記載のデジタル回路装置。
【請求項１１】
前記少なくとも一つのハードウェアモジュールは、シーケンサモジュールとして構成されることを特徴とする請求項１から１０のいずれかに記載のデジタル回路装置。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル回路装置に関し、特にループ処理を効率的に実行可能なデジタル回路装置に関する。
【背景技術】
【０００２】
一般にネットワークサーバは、ＯＳ（オペレーティングシステム）とサーバソフトウェアにより動作する。たとえば、同時アクセス数が数万規模となる大規模なウェブサイトを運営する場合、数十台から数百台のウェブサーバを並列接続して負荷分散を図る必要がある。そのため、サーバ自体のハードウェアコストや設置コストが膨大となっている。【０００３】
このような状況を打開するべく、ウェブサーバ機能をハードウェアで実装することで処理性能を飛躍的に向上させたＬＳＩサーバが、本出願人により開発されている。ウェブサーバの基本機能をハードウェア化することで、ウェブサーバ機の超高速化を実現でき、処理性能を高めることができる。またＯＳを使用せず、ハードウェアで処理することで、ＬＳＩ上にＩＰ、ＴＣＰなどの機能を直に構築できるため、ＯＳのバグをついた不正侵入を予め回避できるという利点もある。【０００４】
たとえば特許文献１は、複数のハードウェアモジュールを用いた情報処理装置を開示している。この情報処理装置は、複数のハードウェアモジュール間で、データをデータセット（パケット信号）単位で単方向に伝送するための信号伝送手段を含んで構成される。情報伝送をパケット信号により行わせることで、パケット信号単位でのパイプライン処理が可能となり、全体的な処理速度を向上することができる。
【特許文献１】国際公開第２００４／００３７９４号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ハードウェアモジュールでループ処理を実現する場合、デッドロックが発生する可能性がある。特にパイプライン処理においてデッドロックは発生しやすいとがいえるが、デッドロックの発生を回避しつつ、ループ処理を適切に実行可能なハードウェアを構築することが好ましい。【０００６】
そこで本発明は、ハードウェアによるループ処理を適切に実行するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様のデジタル回路装置は、複数のハードウェアモジュールが接続されて構成されるデジタル回路装置に関する。このデジタル回路装置において、少なくとも１つのハードウェアモジュールは、前段のハードウェアモジュールから入力されるパケット信号を受信する受信部と、入力されたパケット信号を保持するバッファメモリと、バッファメモリに保持されたパケット信号を１以上のハードウェアモジュールで構成されるハードウェアモジュール群におけるハードウェアモジュールに供給する供給部と、当該ハードウェアモジュール群による処理が完了したか否かを判定する判定部と、判定部による判定結果に基づいた指示を、前段のハードウェアモジュールに伝達する通知部と、当該ハードウェアモジュール群による処理が完了した場合に、処理結果を次段のハードウェアモジュールに出力する送信部と、を備える。【０００８】
また、本発明の別の態様のデジタル回路装置は、複数のハードウェアモジュールが接続されて構成されるデジタル回路装置に関する。このデジタル回路装置において、少なくとも１つのハードウェアモジュールは、前段のハードウェアモジュールから入力されるパケット信号を受信する受信部と、入力されたパケット信号を保持するバッファメモリと、バッファメモリに保持されたパケット信号を、１以上のハードウェアモジュールで構成されるハードウェアモジュール群におけるハードウェアモジュールに供給する供給部と、当該ハードウェアモジュール群による処理が完了した場合に、処理結果を次段のハードウェアモジュールに出力する送信部と、前記受信部において受信したパケット信号の数と、前記送信部から出力したパケット信号の数とを監視する監視部と、前記監視部による監視結果により、前記受信部においてパケット信号の受入が可能か否かを判定する判定部と、前記判定部による判定結果に基づいた指示を、前段のハードウェアモジュールに伝達する通知部と、を備える。【０００９】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【図面の簡単な説明】
【００１０】
【図１】本実施例のデジタル回路装置におけるパケット信号の流れを説明するための図である。
【図２】（ａ）は、本実施例における情報伝達機構を説明するための図であり、（ｂ）は、ＵＰＬ処理回路を示す図であり、（ｃ）は、ＵＰＬ合流回路を示す図である。
【図３】（ａ）は、ＵＰＬ処理回路とＵＰＬ合流回路とを組み合わせたハードウェア構成を示す図であり、（ｂ）は、ＵＰＬ処理回路を示す図であり、（ｃ）は、ＵＰＬ合流回路を示す図である。
【図４】ハードウェアモジュール間でやりとりするパケット信号の例を示す図である。
【図５】パケットの入出力ハードウェアモジュールの例を示す図である。
【図６】ＵＰＬ処理回路の具体例を示す図である。
【図７】ＵＰＬ合流回路の具体例を示す図である。
【図８】ハードウェア化するソフトウェアアプリケーションの一例を示す図である。
【図９】図８に示すループ処理をハードウェアに置換して形成したデジタル回路装置の一例を示す図である。
【図１０】デジタル回路装置が入力パケット信号を処理する過程を示す図である。
【図１１】図８に示すループ処理をハードウェアに置換して形成した本実施例のデジタル回路装置を示す図である。
【図１２】シーケンサ回路のハードウェア構成を示す図である。
【図１３】回路Ｘにおける送信側のハードウェア構成を示す図である。
【図１４】図１２に示したシーケンサ回路の回路構成の一例を示す図である。
【図１５】シーケンサ回路のハードウェア構成の別の例を示す図である。
【図１６】デジタル回路装置が入力パケット信号を処理する過程を示す図である。
【図１７】シーケンサ回路に入力されるパケット信号の一例を示す図である。
【図１８】パケット信号の処理を説明するための図である。
【図１９】ループ処理回路に供給される入力パケットと、ループ処理回路から出力される出力パケットを示す図である。
【図２０】回路Ａに対する入力パケットと出力パケットのパラメータ値を示す図である。
【図２１】回路Ｂに対する入力パケットと出力パケットのパラメータ値を示す図である。
【図２２】回路Ａに対する入力パケットと出力パケットのパラメータ値を示す図である。
【図２３】複数のパケットの文字列変換処理をパイプラインで実行する遷移図である。
【図２４】複数のパケットの文字列変換処理をパイプラインで実行する遷移図である。
【図２５】複数のパケットの文字列変換処理をパイプラインで実行する遷移図である。
【符号の説明】
【００１１】
１０・・・デジタル回路装置、１００・・・デジタル回路装置、２００・・・シーケンサ回路、２０２・・・制御信号線、２１０・・・受信部、２１２・・・バッファメモリ、２１４・・・判定部、２１６・・・供給部、２１８・・・出力選択部、２２０・・・制御部、２２２・・・制御信号生成部、２２４・・・通知部、２２６・・・送信部、２２８・・・メモリ管理部、２３０・・・監視部、２５０・・・バッファメモリ、２５２・・・送信部、２５４・・・送信制御部、２６０・・・第２受信部、２６２・・・ＡＮＤ回路、３００・・・ハードウェアモジュール群。
【発明を実施するための最良の形態】
【００１２】
本実施例のデジタル回路装置は、複数のハードウェアモジュールが接続されて構成される。ハードウェアモジュールは、１ないし複数の特定の処理機能を有して構成され、その機能は設計者が任意に設定することができる。たとえば、デジタル回路装置は、ＦＰＧＡ（Field Programmable Gate Array）などのプログラマブルロジックデバイスなどを用いて形成されてもよい。ハードウェアモジュールは、１つのＦＰＧＡチップを単位としてもよく、また複数のＦＰＧＡチップを単位としてもよい。またハードウェアモジュールは、ＦＰＧＡチップ内の１ないし複数の機能ブロックを単位としてもよい。１以上の機能ブロックを単位とする場合、ハードウェアモジュールは、たとえばソフトウェア設計におけるＣ言語の「関数」と類似したものであってよい。以下では、ハードウェアモジュールを、単に「回路」と呼ぶこともある。【００１３】
本実施例において、ハードウェアモジュールは、パケット信号を入力して、パケット信号を出力する回路である。入力パケットの構成と出力パケットの構成とは同一であってもよいが、異なっていてもよい。ハードウェアモジュールは、前段に配置されたハードウェアモジュールからパケット信号を受信し、後段に配置されたハードウェアモジュールにパケット信号を送信するように機能し、前後に位置するハードウェアモジュールとの間では、受け渡すパケットの構成が予め決定されている。１つのパケットには処理可能な有意なデータが収められており、各ハードウェアモジュールは、１つのパケットを受け取ると、そのパケットに対して所定の処理を施すことができる。なお、ハードウェアモジュールは、必ずしもパケット信号の入出力機能の双方をもつ必要はなく、パケット信号の入力機能のみ、または出力機能のみを有して構成されてもよい。【００１４】
ハードウェアモジュール内では、データは、制御情報を付加したパケットの形式で取り扱われてもよく、またパケットから制御情報を除いた形式で取り扱われてもよい。いずれの場合であっても、ハードウェアモジュールは、処理結果を、後段のハードウェアモジュールが処理可能な形式のパケット信号に含めて出力する。【００１５】
本実施例のデジタル回路装置において、ハードウェアモジュール間の情報伝達は、パケット信号を用いて実行される。デジタル回路装置が複数のＦＰＧＡチップで構成される場合、パケットはＦＰＧＡチップ間で伝送される。また、デジタル回路装置が１つのＦＰＧＡチップ内の複数の機能ブロックで構成される場合、パケット信号はＦＰＧＡチップ内の機能ブロック間で伝送される。パケット信号伝送は、ＦＰＧＡチップ内およびチップ間の双方で行われてもよい。以下では、ＦＰＧＡチップ間の伝送であるか、またはＦＰＧＡチップ内の伝送であるかを特に区別することなく説明する。【００１６】
本実施例のデジタル回路装置について説明する前に、本発明の前提となる技術を説明する。本発明の前提技術は、特許文献１として記載した国際公開第２００４／００３７９４号にも開示されている。【００１７】
図１は、本実施例のデジタル回路装置におけるパケット信号の流れを説明するための図である。
図１（ａ）は、ハードウェアモジュールにおける入力パケットおよび出力パケットの関係を示す。入力パケット信号［ａ，ｂ，ｃ，ｄ］が回路（ハードウェアモジュール）に入力され、処理されて、出力パケット信号［ｗ，ｘ，ｙ，ｚ］として出力される。
図１（ｂ）は、デジタル回路装置において実行されるパイプライン処理の動作例を示す。パケット信号単位でのパイプライン処理を可能とすることで、デジタル回路装置において複数のパケット信号を効率的に処理し、全体的な処理速度の向上を実現できる。なお、パイプライン処理は、直列に接続された回路群で実行されるだけでなく、１つの回路に対して並列に接続された回路群で実行されてもよい。【００１８】
図２（ａ）は、本実施例における情報伝達機構を説明するための図である。
本実施例のデジタル回路装置において、ＵＰＬ（Universal Protocol Line）と便宜上呼ぶ情報伝達機構が採用される。ＵＰＬは、パケット信号によってハードウェアモジュール間の情報伝達を実行する機構であり、入力デバイスあるいは出力デバイスとハードウェアモジュールの間、およびハードウェアモジュール間で、パケット信号が伝送される。【００１９】
ＵＰＬは、ハードウェアモジュールの仕組みといった物理的な取り決め（ビット幅、データ速度、データ有効化方式、データ符号化など）を含むＵＰＬインタフェースと、情報の仕組みのような論理的な取り決め（パケット信号フォーマットなど）を含むパケット信号の２つの取り決め（規格）をもつ。【００２０】
ＵＰＬを利用するデジタル回路装置は、ＵＰＬの手法により入出力が単純化された２種類のＵＰＬ回路、すなわち「ＵＰＬ処理回路」と「ＵＰＬ合流回路」を含む。図２（ｂ）は、ＵＰＬ処理回路を示し、図２（ｃ）は、ＵＰＬ合流回路を示す。これらの２種類の回路を任意に組み合わせることで、所望の機能を実現するハードウェアを容易に構築することができる。【００２１】
図３（ａ）は、ＵＰＬ処理回路とＵＰＬ合流回路とを組み合わせたハードウェア構成を示す。ＵＰＬ合流回路の後段に配置されるＵＰＬ処理回路は、その出力をＵＰＬ合流回路にフィードバックすることができる。【００２２】
図３（ｂ）は、ＵＰＬ処理回路を示す。ＵＰＬ処理回路とは、ＵＰＬ規格に従う入出力をもつハードウェアモジュールの総称で、０または１個の入力ＵＰＬと０個以上の出力ＵＰＬを有する。０個の入力ＵＰＬをもつ回路は、パケット信号の入力がない回路、例えば発振器であり、０個の出力ＵＰＬをもつ回路は、パケット信号の出力がない回路、例えば表示デバイスである。ＵＰＬ処理回路は入力データから何らかの計算などの処理を施し、処理結果を後段の回路が必要とする場合に、ＵＰＬ出力からパケット信号として結果を出力する。ＵＰＬ処理回路には、計算素子、遅延素子、記憶素子、外部Ｉ／Ｏとのインターフェースなどが含まれる。【００２３】
図３（ｃ）は、ＵＰＬ合流回路を示す。ＵＰＬ合流回路とは、ＵＰＬ規格に従う入出力をもつハードウェアモジュールのことであり、２つ以上の入力ＵＰＬと１つの出力ＵＰＬを有する。ＵＰＬ合流回路は、値の変更などの実質的な処理を行わず、２つ以上のハードウェアモジュールから出力されるパケット信号を、パケット信号同士が衝突しないようにしながら、１つのＵＰＬに合流させる機能をもつ。【００２４】
本実施例のデジタル回路装置は従来のハードウェア専用計算機に比べて容易に設計できる。たとえば、Ｃ言語のようなプログラミング言語で作成したプログラムを適当なトランスレータ（コンパイラ）を用いて主にゲートアレイを基礎とした回路の設計図に変換でき、これによって回路設計に関する特殊な知識を必要とすることなく、本実施例のデジタル回路装置を設計できる。【００２５】
次に、ハードウェアモジュール間の通信について説明する。
図４は、ハードウェアモジュール間でやりとりするパケット信号の例を示す。パケット信号は、関数番号を記述するヘッダ領域と、引数構造体を記述するデータ領域とを含み、このパケット単位でハードウェアモジュール間の通信を行う。パケットの先頭１ワードのヘッダ領域には、関数番号が格納されており、この番号をもとにしてどの計算ハードウェアの入力レジスタに引数構造体を反映させるかを決定する。【００２６】
ハードウェアモジュールにおいては、Ｃ言語のようなプログラミング言語で記述された処理本体の関数部分がハードウェアで実現され、引数構造体が関数部分のハードウェアからレジスタとして参照できるようにされている。つまり、ハードウェアモジュールにおいては、入力としての引数構造体に対応する入力レジスタと、次のモジュール呼び出しのための引数構造体に対応する出力レジスタが存在する。ハードウェアモジュールは、入力レジスタの値からハードウェアで計算を行い、結果を出力レジスタに格納する。ハードウェアとしては、ハードワイヤード方式の回路を用いることも、状態遷移機械を用いることも可能である。【００２７】
図５は、パケット信号を入出力するハードウェアモジュールの例を示す。ハードウェアモジュール間には、ユニバーサルプロトコルライン（ＵＰＬ）と呼ぶパケット通信を採用し、これによってハードウェアモジュール間が接続される。ＵＰＬは、出力レジスタから入力レジスタへとその値を転送する仕組みである。ＵＰＬの実装には、通常使われるシリアル転送の仕組みやＬＶＤＳ（Low Voltage Differential Signaling）、３値論理方式、イーサネット（登録商標）、ＩＥＥＥ１２８４、インターネットなど、転送速度、伝送距離などの諸条件にあったものを自由に選ぶことができる。【００２８】
出力レジスタは関数番号と引数構造体に相当するデータ部からなる。ハードウェアモジュールによって、出力レジスタに値が設定されると、出力レジスタの値がＵＰＬに出力される。ＵＰＬによって受信されるパケットのうち、当該受信モジュールが受信すべきパケットだけが入力レジスタに設定される。受信すべきかどうかは、関数番号を参照することで判断できる。【００２９】
図６は、ＵＰＬ処理回路の具体例を示す。パケット信号データは、入力ＵＰＬとしてデータ信号線を介してＵＰＬ処理回路に入力され、ＵＰＬ入力回路において個々の処理を行う演算回路に適したデータ形式に変換されてユーザ処理回路に出力される。ユーザ処理回路では、所定の演算処理などの所定の処理が施されてＵＰＬ出力回路に出力され、ＵＰＬ出力回路ではユーザ処理回路からの出力をＵＰＬ仕様に基づくパケット信号データに変換されて出力ＵＰＬとして出力される。このようにＵＰＬ処理回路間でパケット信号データが伝送される。また、送受されるデータはイネーブル信号およびクロックによってタイミングなどの制御が行われている。【００３０】
より具体的には、ＵＰＬ入力回路に入力されたパケット信号はシリアルインパラレルアウトレジスタにおいて、それぞれの回路に適したデータの入力形式に分割される。図６において太線は８ビットに相当する複線の信号線を意味している。つづいてｆｕｎｃＩＤ（関数番号）として収容されたデータが処理ステートマシンによって評価され、入力されたデータが自回路あてのデータである場合、シリアルインパラレルアウトレジスタに収容された入力値ａ，ｂを加算器のＡ、Ｂから入力して加算し、結果ｅを出力して比較器のＣへ入力する。また、比較器のＤへの入力値ｃが入力されており、比較器においてｅとｃの大きさが比較される。ここでｅ＞ｃであれば、比較器からｆ＝１が、ｅ＜ｃであればｆ＝０が入力値ｆとしてマルチプレクサに出力される。つぎにマルチプレクサにおいて、ｆの値に基づいてｆ＝１ならば、Ｅからの入力値ｃを、ｆ＝０ならば、Ｆからの入力値ｄをＵＰＬ出力回路に入力値ｇとして出力する。最後に処理ステートマシンから出力された次に利用される回路を示すデータとマルチプレクサから出力されたｇをＵＰＬ出力回路においてパケット信号データに変換して出力する。処理ステートマシンによって評価されたデータが自回路あてではない場合は、このＵＰＬ処理回路は特定の処理を行わず、したがって、データは出力されない。【００３１】
ここでは図示されていないが、自回路あてではないデータを入力された場合にそのデータをそのまま次の回路へ出力する経路を持つことも可能である。この例では、入力ＵＰＬのデータ線の幅は１ｂｉｔであるが、データ線の幅は、２ｂｉｔでも３ｂｉｔでもデータの全長である４０ｂｉｔでも、それより長い例えば１２８ｂｉｔでもよい。データ線の幅を広くすれば、データの伝送にかかる時間を短縮できるが、ＵＰＬ回路間の配線数が増える。設計者は、回路に要求された仕様や、回路実現に用いるＬＳＩなどの素子の特性、物理的な配線の制約などを考慮して、最適なデータ幅を用いることができる。【００３２】
以下にＵＰＬ処理回路の各部分の詳細を説明する。
１）入力ＵＰＬ
この例では、１ビットデータ線からなるクロック同期シリアル伝送路である。データ線上の値がデータとして有効であることを示すイネーブル信号線を伴っている。
２）ＵＰＬ入力回路
入力ＵＰＬ信号線群をユーザ処理回路の入力値として接続する回路。
３）シリアルインパラレルアウトレジスタ
クロック同期型のシフトレジスタにより構成される。イネーブル信号線が有効であるとき、入力された１ビットデータを順にＱ０からＱ３９にセットする。
４）入力ステートマシン
入力ＵＰＬのイネーブル信号を受け取り、シリアルインパラレルアウトレジスタを制御する。またパケット信号の受信が完了したことを検出する。受信が完了するとｆｕｎｃＩＤ，ａ，ｂ，ｃ，ｄの各値が確定するので、入力イネーブル信号を出力し、次の処理ステートマシンにそのことを通知する。
５）処理ステートマシン
入力値が確定した後、出力値が確定するタイミングを生成する回路。ユーザ処理回路中のレジスタの確定タイミングも制御する。
ｆｕｎｃＩＤを入力として受け取り、データが自回路宛てであるかどうかを判断する。自回路宛ての場合は、処理回路の動作を制御し、出力する。また、自回路宛てでない場合は、処理回路の動作を停止し、出力は行わない。
ｆｕｎｃＩＤを出力し、次に動作を行う回路の指定を行う。場合によってはユーザ処理回路からの信号により、ｆｕｎｃＩＤを変化させ、処理結果に応じて次に動作を行う回路を動的に変化させる。
６）入力イネーブル信号
ユーザ処理回路の入力値が確定したことを示す信号線。
７）出力イネーブル信号
ユーザ処理回路の出力値が確定したことを示す信号線。
８）ユーザ処理回路
ＵＰＬ処理回路が本来行いたい処理そのものを実現する回路。通常はＵＰＬ装置設計者がＣ言語等のプログラミング言語で記述したプログラムから、コンパイラによって自動合成される。設計者がＶＨＤＬやＶｅｒｉｌｏｇなどの回路記述言語により直接記述することもある。
９）出力ＵＰＬ
この例では、１ビットデータ線からなるクロック同期シリアル伝送路である。
データ線上の値がデータとして有効であることを示すイネーブル信号線を伴っている。
１０）ＵＰＬ出力回路
ユーザ処理回路の出力値を出力ＵＰＬ信号線群に接続する回路。
１１）パラレルインシリアルアウトレジスタ
クロック同期型のシフトレジスタにより構成される。イネーブル信号線が有効であるとき、入力されたＤ０からＤ１５の値を内部ラッチに保持する。その後、クロック毎にＤ０から１ビットずつＱに出力される。
１２）出力ステートマシン
出力イネーブル信号を受け取り、パケット信号の送信を制御する。パラレルインシリアルアウトレジスタを制御し、出力ＵＰＬのイネーブル信号を生成する。【００３３】
図７は、ＵＰＬ合流回路の具体例を示す。パケット信号データは、入力ＵＰＬ１および入力ＵＰＬ２としてデータ信号線を介して、入力ＵＰＬ１と入力ＵＰＬ２のタイミングをクロック調整回路によって調整しながら、ＵＰＬ合流回路に入力される。それぞれの入力ＵＰＬから入力されたデータはそれぞれのパケットバッファメモリに保持される。パケットバッファメモリはそれぞれのパケットバッファメモリに接続されたパケットバッファメモリ管理ステートマシンによって、その書き込み／読み込みの制御が行われる。また、パケットバッファメモリ管理ステートマシンはさらに出力調停回路に接続されている。そして入力ＵＰＬ１および入力ＵＰＬ２から入力されたパケット信号データは、出力調停回路によってタイミングの調整をされながら、単一の出力ＵＰＬからパケット信号データとして出力される。また、送受されるデータはイネーブル信号およびクロックによってタイミングなどの制御がされている。【００３４】
以下にＵＰＬ合流回路の各部分を詳細に説明する。
１）入力ＵＰＬ１、入力ＵＰＬ２
この例では、１ビットデータ線からなるクロック同期シリアル伝送路である。データ線上の値がデータとして有効であることを示すイネーブル信号線を伴っている。
２）パケットバッファメモリ
入力ＵＰＬから入力されたパケット信号を一時的に保持するメモリ。
３）パケットバッファメモリ管理ステートマシン
パケットバッファメモリの書き込み、読み込みの制御を行い、出力ＵＰＬのイネーブル信号線を制御する。
複数のパケットバッファメモリが同時に出力を行うと、パケット信号のデータが破壊されてしまうため、排他的に処理するための仕組みが必要である。これを実現するために出力調停回路に調停を要求し、許可があったときのみ出力ＵＰＬに出力する処理を行う。
４）出力調停回路
調停要求入力を複数回路から受け取り、要求を出した回路に対して、調停確認出力を返す。同時に調停要求入力を受け取ったときは、同時には１つの調停確認出力だけを返す。
５）出力ＵＰＬ
ＵＰＬ合流回路の出力ＵＰＬであり、複数の入力ＵＰＬから受け取ったパケット信号を値を変えずに出力する。【００３５】
以上が、本実施例のデジタル回路装置を構成する要素の前提技術である。この前提技術によると、ＵＰＬ合流回路において複数のパケットバッファメモリからの同時出力を調停して制限できるため、図３（ａ）に示すように、ＵＰＬ処理回路の出力をＵＰＬ合流回路にフィードバックすることも可能となる。しかしながら、ループ処理を実行する場合、ＵＰＬ合流回路に対してパケット信号が次々に到着する場合には、パケット信号を受け入れることができず、破棄しなければならない。【００３６】
ループ処理を実行可能とするために、たとえば前段のハードウェアモジュールに対してパケット信号の送信を一時的に停止させる制御信号を用いる解決手法が考えられる。ハードウェアモジュールは、内部でパケット信号を処理している間は、前段のハードウェアモジュールに対してパケット信号の送信を停止させる制御信号を供給し、内部の処理が終了してパケット信号を受け入れる態勢になった時点で、前段のハードウェアモジュールに対して、パケット信号の送信を許可する制御信号を供給する。これにより、当該ハードウェアモジュールは、自身の都合のよいタイミングでパケット信号を受け取ることができる。【００３７】
このように、前段のハードウェアモジュールのパケット送信を制御する制御信号の利用は、ループ処理において有効であると考えられる。しかしながら、この制御信号を用いると、各ハードウェアモジュールにおける内部処理が終了するまで前段のハードウェアモジュールに対して送信許可を発行しないため、ループ処理を構成する複数のハードウェアモジュールに入力されるパケット信号の数によっては、デッドロックが発生して処理が困難となる状況も発生しうる。【００３８】
図８は、ハードウェア化するソフトウェアアプリケーションの一例を示す。このアプリケーションは、ループ処理を表現している。本実施例のデジタル回路装置では、ソフトウェアアプリケーションにおける関数ｆｕｎｃを一単位としてハードウェアモジュールに置換する。ここでは、ｆｕｎｃＸに対応するハードウェアモジュールを「回路Ｘ」、ｆｕｎｃＡに対応するハードウェアモジュールを「回路Ａ」、ｆｕｎｃＢに対応するハードウェアモジュールを「回路Ｂ」、ｆｕｎｃＣに対応するハードウェアモジュールを「回路Ｃ」とする。【００３９】
図９は、図８に示すループ処理の各関数をハードウェアに置換して形成したデジタル回路装置の一例を示す。図８に示すループ処理を、前段からの送信の許可または停止を指示する制御信号を生成可能なＵＰＬ回路を用いて単純にハードウェアに置換すると、図９に示すデジタル回路装置１０が形成される。このデジタル回路装置１０では、回路Ｘ、回路Ａ、回路Ｂ、回路Ｃが直列に接続され、回路Ｘと回路Ａとの間には、回路Ｂからの出力を回路Ａに入力するための結合回路が配置される。ここで、回路Ｘ、回路Ａ、回路Ｂ、回路ＣはＵＰＬ処理回路であり、結合回路はＵＰＬ合流回路であってよい。図示していないが、回路間には、前段回路に対してパケット信号の送信を許可または停止を指示する制御信号を供給する制御信号線が配設される。【００４０】
ここで、入力パケット信号として、パケット信号ｓ、パケット信号ｔ、パケット信号ｕが、たとえば所定の時間間隔で回路Ｘに順次送信される場合を想定する。また、各回路に設けられるバッファメモリは、それぞれ１パケット分のメモリサイズを有するものとする。【００４１】
図１０は、デジタル回路装置１０が入力パケット信号を処理する過程を示す。
図１０（ａ）に示す状態では、回路Ｘが、入力パケット信号ｓを受信して所期の処理を実行し、回路Ａに処理結果を出力する。
図１０（ｂ）に示す状態では、回路Ａが、回路Ｘの出力を受信して所期の処理を実行し、回路Ｂに処理結果を出力する。また回路Ｘが、入力パケット信号ｔを受信して所期の処理を実行し、回路Ａに処理結果を出力する。
図１０（ｃ）に示す状態では、回路Ｂが、回路Ａの出力を受信して所期の処理を実行し、回路Ａが、回路Ｘの出力を受信して所期の処理を実行し、回路Ｘが、入力パケット信号ｕを受信して所期の処理を実行する。【００４２】
図１０（ｃ）における回路Ａと回路Ｂの出力に注目する。回路Ｂの出力は回路Ａにフィードバックされる必要があるが、回路Ａの処理が終了して回路Ａからパケット信号の送信許可が発行されなければ、回路Ｂは、その処理結果を回路Ａに送信できず、したがって回路Ｂは処理結果を自身のバッファメモリに記憶しておかなければならない。そのため、回路Ｂのバッファメモリに空きがない状態となり、回路Ｂは、前段の回路Ａによるパケット信号の送信を許可することができない。【００４３】
同様に、回路Ａの出力は回路Ｂに供給される必要があるが、回路Ｂからパケット信号の送信許可が発行されなければ、回路Ａは、その処理結果を回路Ｂに送信できない。そのため、回路Ａも処理結果を自身のバッファメモリに記憶しておかなければならず、バッファメモリに空きがない状態となり、回路Ａは、回路Ｂによるパケット信号の送信を許可することができない。このような事情により、回路Ａと回路Ｂとの間では、処理を進めることができない、所謂「デッドロック」が発生することになる。【００４４】
デッドロックの発生は、システム全体の処理を滞留させる可能性があり好ましくない。そこで、ループ処理のハードウェア化を行う際には、デッドロックを回避するための対策を講じる必要がある。【００４５】
図１１は、図８に示すループ処理をハードウェアに置換して形成した本実施例のデジタル回路装置を示す。デジタル回路装置１００は、回路Ｘ、回路Ａ、回路Ｂ、回路Ｃに加えて、シーケンサ回路２００を有して構成される。回路Ａおよび回路Ｂは、ハードウェアモジュール群３００を形成する。ハードウェアモジュール群３００は、ループ処理に用いられる１以上のハードウェアモジュールで構成される。ハードウェアモジュール群３００を形成するハードウェアモジュールが複数存在する場合、図１１に示すように、それぞれのハードウェアモジュールがシーケンサ回路２００に対して並列に接続されていてもよく、またハードウェアモジュール同士が直列に接続されていてもよい。並列接続する場合、ハードウェアモジュール群３００における各ハードウェアモジュールは、シーケンサ回路２００に接続し、他のハードウェアモジュールとは接続しない。また直列接続する場合、ハードウェアモジュール群３００における各ハードウェアモジュールは、シーケンサ回路２００ないしはハードウェアモジュール群３００における他のハードウェアモジュールに接続し、それ以外のハードウェアモジュールとは接続しない。シーケンサ回路２００およびハードウェアモジュール群３００は、ループ処理を効率的に実行するループ処理回路を構成する。【００４６】
シーケンサ回路２００は、ループ処理を制御して、デッドロックを回避する役割をはたす。シーケンサ回路２００は、ループ処理を実行するハードウェアモジュール群３００に直接または間接的に接続して、パケット信号の処理を統括的に管理する。またシーケンサ回路２００は、前段の回路Ｘとの間に設けられた制御信号線２０２を介して、回路Ｘのパケット信号送信を一時的に停止させる機能をもつ。これにより、シーケンサ回路２００の管理下においてループ処理が好適に実行される。ループ処理が終了すると、シーケンサ回路２００は、処理結果を回路Ｃに送信するとともに、前段の回路Ｘの送信停止制御を解除して、新たなパケット信号を受け入れる。【００４７】
図１２は、シーケンサ回路２００のハードウェア構成を示す。シーケンサ回路２００は、受信部２１０、バッファメモリ２１２、出力選択部２１８、制御部２２０、送信部２２６、メモリ管理部２２８および通知部２２４を有して構成される。制御部２２０は、判定部２１４、供給部２１６および制御信号生成部２２２を備える。【００４８】
受信部２１０は、前段のハードウェアモジュール、すなわち回路Ｘから入力されるパケット信号を受信する。受信部２１０と回路Ｘとの間はデータ線で接続されている。バッファメモリ２１２は、受信部２１０で受信されたパケット信号を一時的に記憶する。メモリ管理部２２８は、制御部２２０により制御されて、バッファメモリ２１２におけるデータの書込みおよび読出しを管理する。【００４９】
制御部２２０において、判定部２１４は、ループ処理に用いられるハードウェアモジュール群３００による処理が完了したか否かを判定する機能をもつ。判定部２１４は、ループ処理の終了条件を保持しており、この終了条件が満たされたか否かに応じて、ループ処理の完了判定を行う。受信部２１０において前段の回路Ｘからパケット信号を受信し、バッファメモリ２１２に記憶した段階では、まだループ処理は実行されておらず、したがって、この時点で判定部２１４は、ループ処理が完了していないことを判定する。【００５０】
制御信号生成部２２２は、判定部２１４の判定結果に基づいた指示を生成し、通知部２２４が、その指示を前段のハードウェアモジュールに伝達する。具体的には、制御信号生成部２２２が、判定部２１４の判定結果を受けて、回路Ｘに対してパケット信号の送信を停止または許可する制御信号を生成し、通知部２２４が、制御信号線２０２から制御信号を回路Ｘに通知する。【００５１】
本実施例のシーケンサ回路２００では、判定部２１４によりループ処理が完了したことが判定されるまで、回路Ｘに対して、パケット信号の送信を停止させるように制御する。これは、判定部２１４が、制御信号生成部２２２に送信停止を指示する制御信号を生成させ、通知部２２４から回路Ｘに伝達させることによって実現される。【００５２】
次に、ループ処理を実行する。まず供給部２１６が、メモリ管理部２２８を制御して、バッファメモリ２１２に保持されたパケット信号を出力選択部２１８に読み出す。出力選択部２１８の出力は、送信部２２６、回路Ａ、回路Ｂに接続されており、供給部２１６が、ループ処理の進行状況に応じて、出力選択部２１８の出力先を指示する。出力選択部２１８は、供給部２１６による出力先の指示に応じて、バッファメモリ２１２から読み出されたパケット信号を出力する。【００５３】
判定部２１４は、ループ処理の手順を保持しており、本実施例のデジタル回路装置１００においては、ハードウェアモジュール群３００において回路Ａの処理を先に実行し、その後、回路Ｂの処理を実行することを把握している。判定部２１４は、供給部２１６にデータが供給されるべき出力先に関するルート情報を提供する。このルート情報にしたがって、供給部２１６は、まず出力選択部２１８の出力先を回路Ａに設定し、バッファメモリ２１２から読み出したパケット信号を回路Ａに供給させる。回路Ａは、入力されたパケット信号に対して所期の処理を施し、受信部２１０に出力する。受信部２１０は、回路Ａにおける処理結果をバッファメモリ２１２に記憶させる。なお、回路Ａの処理結果は、所定のフォーマットのパケット信号として生成される。【００５４】
続いて、供給部２１６が、メモリ管理部２２８を制御して、バッファメモリ２１２に保持された回路Ａの処理結果を出力選択部２１８に読み出す。供給部２１６は、判定部２１４からのルート情報にしたがって、出力選択部２１８の出力先を回路Ｂに設定し、バッファメモリ２１２から読み出した回路Ａの処理結果を回路Ｂに供給させる。回路Ｂは、入力されたパケット信号に対して所期の処理を施し、受信部２１０に出力する。受信部２１０は、回路Ｂにおける処理結果をバッファメモリ２１２に記憶させる。なお、回路Ｂの処理結果も同様に、所定のフォーマットのパケット信号として生成される。【００５５】
判定部２１４は、以上の動作を、ループ処理の終了条件が満たされるまで継続して実行させる。ループ処理の終了条件が満たされておらず、したがってループ処理が完了していない場合に、判定部２１４は、回路Ｂから出力されたパケット信号を、バッファメモリ２１２から出力選択部２１８を介して回路Ａに供給するように、供給部２１６に指示する。これにより、ループ処理の継続中は、回路Ａにおける処理結果を回路Ｂに供給し、回路Ｂの処理結果を回路Ａに供給する処理が繰り返されることになる。ループ処理の終了条件が満たされると、判定部２１４は供給部２１６に対して、データを送信部２２６に供給させるルート情報を提供する。供給部２１６は、メモリ管理部２２８を制御して、バッファメモリ２１２に記憶された回路Ｂの処理結果を出力選択部２１８に読み出し、出力選択部２１８の出力先を送信部２２６に設定する。これにより送信部２２６は、バッファメモリ２１２に保持されたハードウェアモジュール群３００におけるループ処理の結果を、次段のハードウェアモジュール、すなわち回路Ｃに出力する。【００５６】
判定部２１４は、ハードウェアモジュール群３００によるループ処理が完了して、送信部２２６から次段のハードウェアモジュールに処理結果が出力された後に、前段のハードウェアモジュールに対して、パケット信号の送信を許可する制御信号を、通知部２２４から伝達させる。具体的に、判定部２１４は、ループ処理の終了条件が満たされたことを判定すると、制御信号生成部２２２に対して信号送信を許可する制御信号を生成させ、通知部２２４から回路Ｘに対して通知させる。なお判定部２１４は、送信部２２６により処理結果が送信されたことを検出して、その検出後に信号送信を許可する制御信号を通知部２２４から通知させてもよい。特に、バッファメモリ２１２の容量が小さく、ハードウェアモジュール群３００の処理結果と、前段のハードウェアモジュールからのパケット信号とを同時に記憶できないような場合には、送信部２２６による処理結果の送信後に、前段回路からのパケット信号を受入可能とすることで、バッファメモリ２１２を効率的に使用することができる。【００５７】
図１３は、回路Ｘにおける送信側のハードウェア構成を示す。回路Ｘの送信側構成は、バッファメモリ２５０、送信部２５２、送信制御部２５４を有する。バッファメモリ２５０は、送信するべきパケット信号を保持しており、送信制御部２５４から送信許可コマンドが供給されると、送信部２５２が、バッファメモリ２５０のパケット信号をシーケンサ回路２００に送信する。送信制御部２５４は、制御信号線２０２を介してシーケンサ回路２００から通知される制御信号をもとに、送信許可コマンドを生成する。具体的には、制御信号が、信号送信を許可するものであれば、送信制御部２５４は、送信許可コマンドを生成し、制御信号が信号送信を停止させるものであれば、送信制御部２５４は、送信不許可コマンドを生成する。送信部２５２は、送信制御部２５４が送信不許可コマンドを送信する間は、パケット信号の送信を禁止される。これにより、シーケンサ回路２００に無用なパケット信号を送信せずにすみ、ループ処理を効率的に実行できる。【００５８】
なお、回路Ｘの受信側の構成には、回路Ｘよりも前段に位置する回路に対して信号送信を停止させるための制御信号を伝達する通知部が設けられていてもよい。また、バッファメモリ２５０が、複数パケットの受入を許容するメモリサイズを有する場合には、受入可能なパケットの最大数をバッファメモリ２５０に記憶した時点で、通知部が前段の回路に信号送信を停止させるための制御信号を送信するようにしてもよい。【００５９】
図１４は、図１２に示したシーケンサ回路２００の回路構成の一例を示す。この回路構成では、イネーブル信号を利用して、データの入出力を制御する。図１４において、パケット信号のｆｕｎｃＩＤを処理するための構成は省略している。図１２における送信部２２６や通知部２２４は、図１４において図示しないドライバなどによって構成されてもよい。また、送信部２２６は、バッファメモリ２１２の出力機能として構成され、また通知部２２４は、制御部２２０の出力機能として構成されてもよい。【００６０】
受信部２１０は、前段のハードウェアモジュールのパケット信号、およびハードウェアモジュール群３００を構成する回路Ａ、回路Ｂからのパケット信号を受信して、バッファメモリ２１２に選択的に出力するマルチプレクサにより構成される。また、第２受信部２６０は、前段のハードウェアモジュールの入力イネーブル、およびハードウェアモジュール群３００を構成する回路Ａ、回路Ｂからの入力イネーブルを受信して、メモリ管理部２２８および制御部２２０に選択的に出力するマルチプレクサにより構成される。受信部２１０の出力および第２受信部２６０の出力は、制御部２２０により制御される。【００６１】
バッファメモリ２１２へのデータ書込時、メモリ管理部２２８は、バッファメモリ２１２のライトイネーブルをオンにし、書込アドレスを指定する。またバッファメモリ２１２からのデータ読出時、メモリ管理部２２８は、バッファメモリ２１２のリードイネーブルをオンにし、読出アドレスを指定する。メモリ管理部２２８は、メモリ管理ステートマシンとして構成される。【００６２】
制御部２２０は、ループ処理の進行状況を管理し、進行状況に応じて、メモリ管理部２２８によるデータ書込／読出を制御し、また受信部２１０および第２受信部２６０の出力を制御する。メモリ管理部２２８の制御は、出力要請信号により実行され、また受信部２１０および第２受信部２６０の制御は、入力選択信号により実行される。【００６３】
出力選択部２１８は、３つのＡＮＤ回路２６２ａ、２６２ｂ、２６２ｃを含んで構成される。ＡＮＤ回路２６２ａは、後段のハードウェアモジュールに対する出力イネーブルを生成し、ＡＮＤ回路２６２ｂは、回路Ａに対する出力イネーブルを生成し、ＡＮＤ回路２６２ｃは、回路Ｂに対する出力イネーブルを生成する。各ＡＮＤ回路２６２には、メモリ管理部２２８からの出力イネーブルと、制御部２２０からの出力選択信号が供給される。制御部２２０は、ループ処理の進行状況にあわせて、ＡＮＤ回路２６２ａ、２６２ｂ、２６２ｃから出力される出力イネーブルのいずれかがオンとなるように、出力選択信号を生成する。バッファメモリ２１２から読み出されたデータは、後段のハードウェアモジュール、回路Ａおよび回路Ｂのいずれにも供給されるが、このうち、出力イネーブルがオンとなる回路のみがデータを受信する。【００６４】
以上の回路構成のもと、図１２に関して説明したように、制御部２２０が、判定部２１４、供給部２１６、制御信号生成部２２２としての機能を実現することで、シーケンサ回路２００によるループ処理が効率よく実行される。なお図１４に例示した回路構成だけでなく、図１２に示すシーケンサ回路２００は、様々な態様で実現することができることはいうまでもない。【００６５】
以上、シーケンサ回路２００において１つのパケット信号のループ処理を実行する実施例について説明した。上記したように、シーケンサ回路２００は、パケット信号のループ処理が完了するまでは、他のパケット信号を受け入れないようにすることで、ループ処理におけるデッドロックを回避することが可能となる。【００６６】
以下では、このシーケンサ回路２００をさらに発展させて、パイプライン処理を実行可能とするシーケンサ回路について説明する。このシーケンサ回路は、複数のパケット信号を並列に処理する機能をもち、システム全体の処理速度を高めることができる。【００６７】
図１５は、シーケンサ回路４００のハードウェア構成の別の例を示す。シーケンサ回路４００は、受信部２１０、バッファメモリ２１２、出力選択部２１８、制御部２２０、送信部２２６、メモリ管理部２２８、監視部２３０および通知部２２４を有して構成される。制御部２２０は、判定部２１４、供給部２１６および制御信号生成部２２２を備える。図１２に示した符号と同一の符号を付した構成は、対応する図１２における構成と同一または同様の機能を有する。なおシーケンサ回路４００の回路構成としては、図１２に示したものと同様であってよく、各構成間で情報の受け渡しを可能とする信号線が追加されてもよい。【００６８】
図１２に示すシーケンサ回路２００との相違点として、シーケンサ回路４００は、２以上の所定数のパケット信号を格納可能とするメモリサイズのバッファメモリ２１２を備える。一方、回路Ａ、回路Ｂは、１つのパケット信号のみを処理し、同時に複数のパケット信号を受け入れて処理する必要はない。すなわち、ハードウェアモジュール群３００における回路Ａ、回路Ｂは、１つのパケット信号のみを処理可能とするサイズのメモリを有していればよく、メモリサイズを大きくする必要はない。バッファメモリ２１２を、複数のパケット信号を格納可能なメモリサイズで構成することで、シーケンサ回路４００は複数のパケット信号を受入可能となり、バッファメモリ２１２に格納されている複数のパケット信号を、ハードウェアモジュール群３００における回路Ａ、回路Ｂに同時に供給できる。すなわち、複数のパケット信号をパイプラインで処理でき、システム全体の処理速度を高めることができる。【００６９】
バッファメモリ２１２が複数のパケット信号を記憶できるようになったことにともなって、シーケンサ回路４００は、回路内部およびハードウェアモジュール群３００の内部に存在するパケットの数を監視する機能をもつ。この機能は、判定部２１４の一機能として実行されてもよいが、図１５においては、構成として監視部２３０を設けている。監視部２３０は、受信部２１０で受信される入力パケットの数と、送信部２２６から送信される出力パケットとから、シーケンサ回路４００内およびハードウェアモジュール群３００内に存在するパケット数を監視する。【００７０】
監視部２３０は、たとえば値０を初期値とするカウンタを有して構成され、受信部２１０でパケット信号が受信されるとカウンタ値を１インクリメントし、送信部２２６からパケット信号が送信されるとカウンタ値を１デクリメントするように動作する。監視部２３０は、シーケンサ回路４００内およびハードウェアモジュール群３００内に存在するパケット数を判定部２１４に通知する。【００７１】
たとえば、バッファメモリ２１２のメモリサイズが、最大で２つのパケット信号を格納できるように設定されていれば、「受信部２１０において受信した入力パケット数」と「送信部２２６から送信した出力パケット数」の差が”２”より小さければ（すなわち、０か１であれば）、判定部２１４は、受信部２１０において、パケット信号の受入が可能であることを判定する。一方、この減算値、すなわち監視部２３０におけるカウンタ値が”２”に到達すると、判定部２１４は、パケット信号の受入が不可となったことを判定する。判定部２１４の判定結果は、制御信号生成部２２２に送られる。【００７２】
制御信号生成部２２２は、判定部２１４の判定結果に基づいた指示を生成し、通知部２２４が、その指示を前段のハードウェアモジュールに伝達する。具体的には、制御信号生成部２２２が、判定部２１４の判定結果を受けて、回路Ｘに対してパケット信号の送信を停止または許可する制御信号を生成し、通知部２２４が、制御信号線２０２から制御信号を回路Ｘに通知する。【００７３】
本実施例のシーケンサ回路４００では、判定部２１４により、パケット信号の受入が不可となったことが判定された後、少なくとも１つのパケット信号についてのループ処理が完了したことが判定されるまで、回路Ｘに対して、パケット信号の送信を停止させるように制御する。これは、判定部２１４が、制御信号生成部２２２に送信停止を指示する制御信号を生成させ、通知部２２４から回路Ｘに伝達させることによって実現される。なお、パケット信号の受入不可を判定した後にパケット信号のループ処理が完了したことは、監視部２３０から供給されるカウンタ値が”２”から”１”に変化したことにより判定される。【００７４】
以下、シーケンサ回路４００に、バッファメモリ２１２の容量（メモリサイズ）を超える数のパケット信号が入力されたときの回路状態を説明する。ここで、バッファメモリ２１２は、２つまでのパケット信号を記憶可能なサイズとし、入力パケット信号として、パケット信号ｓ、パケット信号ｔ、パケット信号ｕが、たとえば所定の時間間隔で回路Ｘに順次送信される場合を想定する。【００７５】
図１６は、デジタル回路装置が入力パケット信号を処理する過程を示す。
図１６（ａ）に示す状態では、回路Ｘが、入力パケット信号ｓを受信して所期の処理を実行し、シーケンサ回路４００に処理結果を出力する。
図１６（ｂ）に示す状態では、シーケンサ回路４００が、バッファメモリ２１２に一時記憶したパケット信号ｓを回路Ａに出力する。また回路Ｘが、入力パケット信号ｔを受信して所期の処理を実行し、シーケンサ回路４００に処理結果を出力する。
図１６（ｃ）に示す状態では、回路Ａが、パケット信号ｓを受信して所期の処理を実行し、シーケンサ回路４００が、パケット信号ｔをバッファメモリ２１２に一時記憶する。また回路Ｘが、入力パケット信号ｕを受信して所期の処理を実行する。【００７６】
ここで、パケット信号ｕをシーケンサ回路４００に入力させると、たとえば図１６（ｄ）に示す状態が発生しうる。ここで、バッファメモリ２１２に一時記憶されたパケット信号ｓ、ｕの次の出力先が回路Ａである場合には、デッドロックが発生する。このように、バッファメモリ２１２のメモリ容量を超えるパケット信号を受け入れた場合には、ループ処理のデッドロックが発生する可能性が高くなる。【００７７】
したがって、上記したように、実施例のシーケンサ回路４００では、判定部２１４が、シーケンサ回路４００およびハードウェアモジュール群３００を構成する回路Ａ、回路Ｂ内に存在するパケット数と、バッファメモリ２１２の記憶可能なパケット数とを比較することで、さらなるパケット信号の受入を可能とするか否かを判定することとしている。バッファメモリ２１２の記憶可能なパケット数を、シーケンサ回路４００およびハードウェアモジュール群３００内で受入可能な最大パケット数と設定することで、ループ処理におけるデッドロックの発生を効率的に回避できる。本実施例のシーケンサ回路４００では、図１６（ｃ）に示すように、シーケンサ回路４００およびハードウェアモジュール群３００内のパケット数がバッファメモリ２１２の記憶可能なパケット数（＝２）となった時点で、判定部２１４が、パケットの受入を不可とする制御信号を制御信号生成部２２２に生成させる。【００７８】
図１２に示すシーケンサ回路２００と同様に、シーケンサ回路４００においても、供給部２１６が、メモリ管理部２２を制御して、バッファメモリ２１２に保持されたパケット信号を出力選択部２１８に読み出す。出力選択部２１８の出力は、送信部２２６、回路Ａ、回路Ｂに接続されており、供給部２１６が、ループ処理の進行状況に応じて、出力選択部２１８の出力先を指示する。出力選択部２１８は、供給部２１６による出力先の指示に応じて、バッファメモリ２１２から読み出されたパケット信号を出力する。【００７９】
判定部２１４は、ループ処理の手順を保持しており、供給部２１６にデータが供給されるべき出力先に関するルート情報を提供する。このルート情報にしたがって、供給部２１６は、出力選択部２１８の出力先を設定し、バッファメモリ２１２から読み出したパケット信号を出力先に供給させる。判定部２１４は、ループ処理の終了条件が満たされるまで、バッファメモリ２１２に記憶されたパケット信号をハードウェアモジュール群３００に継続して供給させる。これにより、ループ処理の継続中は、回路Ａにおける処理結果を回路Ｂに供給し、回路Ｂの処理結果を回路Ａに供給する処理が繰り返されることになる。ループ処理の終了条件が満たされると、判定部２１４は供給部２１６に対して、データを送信部２２６に供給させるルート情報を提供する。供給部２１６は、メモリ管理部２２８を制御して、バッファメモリ２１２に記憶された回路Ｂないしは回路Ａの処理結果を出力選択部２１８に読み出し、出力選択部２１８の出力先を送信部２２６に設定する。これにより送信部２２６は、バッファメモリ２１２に保持されたハードウェアモジュール群３００におけるループ処理の結果を、次段のハードウェアモジュール、すなわち回路Ｃに出力する。【００８０】
監視部２３０でカウントされるカウンタ値が”２”のとき、判定部２１４は、２つのパケット信号について、上記処理を同時並列的に実行する。これにより、デジタル回路装置１００におけるパイプライン処理が実行され、処理速度を高めることができる。１つのループ処理結果が回路Ｃに出力されると、監視部２３０のカウンタ値は”１”となるため、判定部２１４は、制御信号生成部２２２に対して信号送信を許可する制御信号を生成させ、通知部２２４から回路Ｘに通知させる。これにより、新たなパケット信号の受入が可能となり、パイプライン処理を継続できる。【００８１】
以上は、監視部２３０から供給されるカウンタ値をもとに判定部２１４が制御信号生成部２２２に制御信号を生成させる例であるが、シーケンサ回路２００に関して説明したように、判定部２１４は、ループ処理の終了条件が満たされたことを判定することで、制御信号生成部２２２に対して信号送信を許可する制御信号を生成させてもよい。【００８２】
また、上記した例では、判定部２１４がループ処理の手順を保持して、供給部２１６にルート情報を提供している。たとえば、判定部２１４の負荷を下げるために、ループ処理を実行する各ハードウェアモジュールが、パケット信号を処理した後、パケット信号に施すべき処理の進行状況に応じて、次の出力先となるハードウェアモジュールを特定する宛先情報をパケット信号に含めるようにしてもよい。以下、そのようなパケット信号について説明する。【００８３】
図１７は、シーケンサ回路４００に入力されるパケット信号の一例を示す。パケット信号は、Destination, Counter, InputSize, InputData, B_Object, OutputSize, OutputDataの７つのフィールドを少なくとも含んで構成される。各フィールドの内容は、以下のとおりである。
Destination：パケットの宛先
Counter：回路Ａが入力文字列を処理した文字数
InputSize：入力文字列の長さ
InputData：入力文字列
B_Object：回路Ｂが処理する文字
OutputSize：出力文字列の長さ
OutputData：出力文字列【００８４】
各パラメータ値の詳細は後述するが、Destinationのパラメータ値は、既述したｆｕｎｃＩＤであってもよく、判定部２１４が出力先を判断できるものであればよい。また、Counterのパラメータ値は、回路Ａが入力文字列を処理した文字数を表すことから、ハードウェアモジュール群３００による処理の進行状況を示す情報として利用される。すなわち、Counterのパラメータ値がInputSizeのパラメータ値に等しくなると、判定部２１４ないしはハードウェアモジュール群３００における判定機能は、ハードウェアモジュール群３００による処理が完了したことを判断できる。【００８５】
図１８は、図１７に示すパケット信号の処理を説明するための図である。ループ処理の例として、文字列変換処理を示す。この文字列変換処理では、パーセントエンコーディングされた日本語ひらがなの文字列をシーケンサ回路４００に入力すると、ハードウェアモジュール群３００によりローマ字に変換され、シーケンサ回路４００から出力される。パーセントエンコーディングは、ＵＲＬエンコードとも呼ばれることがあるが、たとえばＵＲＬには通常使用できない文字やバイナリデータをＵＲＬ内に埋め込むために利用される。ここでは、３文字の文字列「％ＸＸ」が１バイトのバイナリデータを表現する。なお、本実施例のループ処理は、文字列変換処理だけに利用されるものでもなく、他の処理にも応用できる。【００８６】
たとえば日本語ひらがな文字列「たんご」をパーセントエンコードすると「％８２％ＢＤ％８２％Ｆ１％８２％Ｂ２」と表現され（漢字コードがＳＪＩＳの場合）、これは６バイトのバイナリデータ「0x82 0xbd 0x82 0xf1 0x82 0xb2」で表現できる。パーセントエンコーディングされた文字列は、６文字「％ＸＸ％ＹＹ」単位で１つのひらがなを表現し、したがって「％８２％ＢＤ％８２％Ｆ１％８２％Ｂ２」の１８文字で、３つのひらがなが表現される。図１８の例では、文字列「％８２％ＢＤ％８２％Ｆ１％８２％Ｂ２」がシーケンサ回路４００に入力され、ハードウェアモジュール群３００によるローマ字への変換処理の後、シーケンサ回路４００からローマ字列「ｔａｎｇｏ」が出力される。シーケンサ回路４００およびハードウェアモジュール群３００は、文字列変換処理を実行するループ処理回路を構成する。【００８７】
図１９は、ループ処理回路に供給される入力パケットと、ループ処理回路から出力される出力パケットを示す。
シーケンサ回路４００の前段に位置する回路Ｘから、宛先（Destination）を回路Ａとするパケット信号が供給される。このとき、カウンタ（Counter）値を０、入力文字列長さ（InputSize）を１８、入力文字列を「％８２％ＢＤ％８２％Ｆ１％８２％Ｂ２」とするデータが記述されている。回路Ｂの処理対象（B_Object）および出力文字列（OutputData）にはＮＵＬが記述され、出力文字列数（OutputSize）には０が記述される。なお、ＮＵＬは、その変数（フィールド）にデータが存在しないことを意味する。【００８８】
この入力パケットは、シーケンサ回路４００および回路Ａ、回路Ｂから構成されるループ処理回路において文字列変換処理を施され、出力パケットに変換される。出力パケットの宛先（Destination）には、後段の回路Ｃが記述される。このとき、カウンタ（Counter）値は１８に更新されており、また文字列変換処理により、出力文字列数（OutputSize）には５、出力文字列（OutputData）にはｔａｎｇｏが記述される。カウンタ値が入力文字列長さに等しくなっていることは、入力文字列のすべての文字が処理されたことを意味する。【００８９】
図２０および図２２は、回路Ａにおける文字列変換処理を示す。本実施例において回路Ａは、入力される文字列の６文字分を、ひらがな１文字に変換する回路である。入力文字列６文字とは、入力文字列中の「％ＸＸ％ＹＹ」と表記されている文字であり、回路Ａは、入力文字列の先頭から順に処理していく。【００９０】
図２０は、回路Ｘからシーケンサ回路４００のバッファメモリ２１２に書き込まれた入力パケットが、回路Ａで処理されて出力されるときの各パケットのパラメータ値を示す。この前提として、前段の回路Ｘが、宛先を回路Ａとするパケットをシーケンサ回路４００に送信する。これにより、判定部２１４は、メモリ管理部２２８を介してバッファメモリ２１２に書き込まれたパケット信号の宛先を参照するだけで、供給部２１６に出力先を指示することが可能となる。本実施例では、ハードウェアモジュール群３００を構成する回路Ａ、回路Ｂが、処理の進行状況に応じて、宛先を更新する機能をもつ。そのため判定部２１４は、ループ処理の終了条件を保持して、ループ処理の終了判定を行う必要はなく、バッファメモリ２１２に格納されているパケット信号の宛先をみて、次の供給先を容易に決定できる。【００９１】
シーケンサ回路４００から回路Ａにパケット５０ａが供給される。回路Ａは、カウンタ値を参照して、入力文字列のどの文字から処理を開始するかを決定する。カウンタ値は、回路Ａが処理した文字数を表現しており、したがって回路Ａは、入力文字列の（カウンタ値＋１）文字目から６文字分（すなわち「％８２％ＢＤ」）の処理を行うことを決定する。【００９２】
処理が終了すると、パケット５０ｂがシーケンサ回路４００に出力される。パケット５０ｂでは、宛先が回路Ｂに書き換えられ、カウンタ値が６に書き換えられている。また、次のステップで回路Ｂが処理する文字として、B_Objectには、ひらがな「た」が書き込まれている。このパケット５０ｂは、バッファメモリ２１２に記憶されると、判定部２１４が、パケット５０ｂの宛先をみて、供給部２１６より回路Ｂに供給させる。【００９３】
図２１は、回路Ａで処理されたパケット５０ｂが、回路Ｂで処理されて出力されるときの各パケットのパラメータ値を示す。回路Ｂは、処理対象（B_Object）に含まれるひらがな文字をローマ字に変換し、変換した文字列を出力文字列（OutputData）に追加する。このとき、文字列の長さを、出力文字列数（OutputSize）に加算する。ローマ字への変換処理を実行すると、B_Objectの値をクリアする。この例では、ひらがな「た」をローマ字に変換することで、出力文字列「ｔａ」、文字列長さ「２」が得られるため、それらの取得値をパケットに埋め込む。回路Ｂは、宛先を回路Ａに書き換え、パケットをシーケンサ回路４００に送信する。なお本実施例の回路Ｂは、処理を実行すると、常に宛先を回路Ａに書き換えるように構成されている。なお別の例では、全ての入力文字をローマ字に変換したときに、回路Ｂが宛先を回路Ｃに書き換えるように構成されていてもよい。【００９４】
図２２は、回路Ｂにおいて全ての入力文字列がローマ字に変換されたパケット５０ｄが、回路Ａに供給されて出力されるときの各パケットのパラメータ値を示す。パケット５０ｄのカウンタ値は、入力文字列数（InputSize）である１８と等しい値となる。回路Ａは、カウンタ値が入力文字列数に等しくなったことを判定すると、ループ処理が全て終了したことを判定する。これにより、回路Ａは、宛先を、シーケンサ回路４００の後段の回路Ｃに書き換え、パケット５０ｅをシーケンサ回路４００に供給する。シーケンサ回路４００において、判定部２１４は、パケット５０ｅの宛先が回路Ｃになっていることを検出すると、ハードウェアモジュール群３００における処理が完了したことを判定し、供給部２１６に対して、パケット５０ｅを送信部２２６に供給させる旨を指示する。供給部２１６は、メモリ管理部２２８を制御して、バッファメモリ２１２に記憶されたパケット５０ｅを出力選択部２１８に読み出し、出力選択部２１８の出力先を送信部２２６に設定する。これにより送信部２２６は、パケット５０ｅを次段の回路Ｃに出力する。このとき監視部２３０は、送信部２２６からパケットが送信されたことを検出し、カウンタ値を１デクリメントする。【００９５】
図２３〜図２５は、複数のパケットの文字列変換処理をパイプラインで実行するパケット遷移図を示す。図２３〜図２５では、OutputSizeを省略して、パケットを［Destination, Counter, InputSize, InputData, B_Object, OutputData］で表現する。バッファメモリ２１２は、それぞれ１つのパケットを格納可能なバッファメモリ２１２ａ、２１２ｂを有して構成される。【００９６】
図２３（ａ）では、１つめのパケット［Ａ，０，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ＮＵＬ］がバッファメモリ２１２ａに入力される。なお、パーセントエンコーディングされた「％８２％Ｂ５％８２％Ａ８」は、日本語ひらがな文字列である「しお」を表現する。
図２３（ｂ）では、パケット［Ａ，０，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ＮＵＬ］が回路Ａに供給され、また２つめのパケット［Ａ，０，６，％８２％Ｂ７，ＮＵＬ，ＮＵＬ］がバッファメモリ２１２ｂに供給される。なお、パーセントエンコーディングされた「％８２％Ｂ７」は、日本語ひらがな文字列である「す」を表現する。回路Ａは、パケット［Ａ，０，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ＮＵＬ］を処理して、パケット［Ｂ，６，１２，％８２％Ｂ５％８２％Ａ８，し，ＮＵＬ］を生成する。なお、この時点で、シーケンサ回路４００およびハードウェアモジュール群３００から構成されるループ処理回路に、バッファメモリ２１２が格納できる最大数である２つのパケットが入力されたため、制御信号生成部２２２は、前段の回路Ｘに対して信号送信を停止させる制御信号を生成し、通知部２２４から通知させる。
図２３（ｃ）では、パケット［Ｂ，６，１２，％８２％Ｂ５％８２％Ａ８，し，ＮＵＬ］がバッファメモリ２１２ａに供給される。
図２３（ｄ）では、パケット［Ｂ，６，１２，％８２％Ｂ５％８２％Ａ８，し，ＮＵＬ］が回路Ｂに供給され、パケット［Ａ，０，６，％８２％Ｂ７，ＮＵＬ，ＮＵＬ］が回路Ａに供給される。回路Ｂは、パケット［Ｂ，６，１２，％８２％Ｂ５％８２％Ａ８，し，ＮＵＬ］を処理して、パケット［Ａ，６，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉ］を生成する。また回路Ａは、パケット［Ａ，０，６，％８２％Ｂ７，ＮＵＬ，ＮＵＬ］を処理して、パケット［Ｂ，６，６，％８２％Ｂ７，す，ＮＵＬ］を生成する。このように、複数のパケットを同時にハードウェアモジュール群３００により処理することができ、パイプライン処理を実現できる。【００９７】
図２４（ａ）では、パケット［Ｂ，６，６，％８２％Ｂ７，す，ＮＵＬ］がバッファメモリ２１２ａに供給され、パケット［Ａ，６，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉ］がバッファメモリ２１２ｂに供給される。
図２４（ｂ）では、パケット［Ｂ，６，６，％８２％Ｂ７，す，ＮＵＬ］が回路Ｂに供給され、パケット［Ａ，６，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉ］が回路Ａに供給される。回路Ｂは、パケット［Ｂ，６，６，％８２％Ｂ７，す，ＮＵＬ］を処理して、パケット［Ａ，６，６，％８２％Ｂ７，ＮＵＬ，ｓｕ］を生成する。回路Ａは、パケット［Ａ，６，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉ］を処理して、パケット［Ｂ，１２，１２，％８２％Ｂ５％８２％Ａ８，お，ｓｈｉ］を生成する。
図２４（ｃ）では、パケット［Ａ，６，６，％８２％Ｂ７，ＮＵＬ，ｓｕ］がバッファメモリ２１２ｂに供給され、パケット［Ｂ，１２，１２，％８２％Ｂ５％８２％Ａ８，お，ｓｈｉ］がバッファメモリ２１２ａに供給される。
図２４（ｄ）では、パケット［Ａ，６，６，％８２％Ｂ７，ＮＵＬ，ｓｕ］が回路Ａに供給され、パケット［Ｂ，１２，１２，％８２％Ｂ５％８２％Ａ８，お，ｓｈｉ］が回路Ｂに供給される。回路Ａは、パケット［Ａ，６，６，％８２％Ｂ７，ＮＵＬ，ｓｕ］を処理して、パケット［Ｃ，６，６，％８２％Ｂ７，ＮＵＬ，ｓｕ］を生成する。また回路Ｂは、パケット［Ｂ，１２，１２，％８２％Ｂ５％８２％Ａ８，お，ｓｈｉ］を処理して、パケット［Ａ，１２，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉｏ］を生成する。【００９８】
図２５（ａ）では、パケット［Ｃ，６，６，％８２％Ｂ７，ＮＵＬ，ｓｕ］がバッファメモリ２１２ａに供給され、パケット［Ａ，１２，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉｏ］がバッファメモリ２１２ｂに供給される。
図２５（ｂ）では、パケット［Ｃ，６，６，％８２％Ｂ７，ＮＵＬ，ｓｕ］が回路Ｃに供給され、パケット［Ａ，１２，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉｏ］が回路Ａに供給される。回路Ａは、パケット［Ａ，１２，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉｏ］を処理して、パケット［Ｃ，１２，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉｏ］を生成する。このとき、シーケンサ回路４００およびハードウェアモジュール群３００から構成されるループ処理回路内にパケットは１つしか存在しなくなったため、制御信号生成部２２２は、前段の回路Ｘに対して信号送信を許可する制御信号を生成し、通知部２２４から通知させる。
図２５（ｃ）では、パケット［Ｃ，１２，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉｏ］がバッファメモリ２１２ａに供給される。
図２５（ｄ）では、パケット［Ｃ，１２，１２，％８２％Ｂ５％８２％Ａ８，ＮＵＬ，ｓｈｉｏ］が回路Ｃに供給される。【００９９】
以上のように、パケット信号に宛先情報を含ませることで、パケット信号の供給先を容易に決定することができ、判定部２１４の処理負荷を軽減することができる。また、処理の進行状況を示す情報（Counter）をパケット信号に含ませることで、ループ処理を適切に実行することができる。【０１００】
なお、本発明は上述の実施例に限定されるものではなく、当業者の知識に基づいて各種の設計変更等の変形を実施例に対して加えることも可能であり、そのような変形が加えられた実施例も本発明の範囲に含まれうる。
【産業上の利用可能性】
【０１０１】
本発明によると、ハードウェアによるループ処理を適切に実行することができる。
【図１】
2007148385.tif 000003
【図２】
2007148385.tif 000004
【図３】
2007148385.tif 000005
【図４】
2007148385.tif 000006
【図５】
2007148385.tif 000007
【図６】
2007148385.tif 000008
【図７】
2007148385.tif 000009
【図８】
2007148385.tif 000010
【図９】
2007148385.tif 000011
【図１０】
2007148385.tif 000012
【図１１】
2007148385.tif 000013
【図１２】
2007148385.tif 000014
【図１３】
2007148385.tif 000015
【図１４】
2007148385.tif 000016
【図１５】
2007148385.tif 000017
【図１６】
2007148385.tif 000018
【図１７】
2007148385.tif 000019
【図１８】
2007148385.tif 000020
【図１９】
2007148385.tif 000021
【図２０】
2007148385.tif 000022
【図２１】
2007148385.tif 000023
【図２２】
2007148385.tif 000024
【図２３】
2007148385.tif 000025
【図２４】
2007148385.tif 000026
【図２５】
2007148385.tif 000027
【手続補正書】
【提出日】平成18年11月1日(2006.11.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のハードウェアモジュールが接続されて構成されるデジタル回路装置であって、
少なくとも１つのハードウェアモジュールは、
前段のハードウェアモジュールから入力されるパケット信号を受信する受信部と、
入力されたパケット信号を保持するバッファメモリと、
バッファメモリに保持されたパケット信号を、１以上のハードウェアモジュールで構成されるハードウェアモジュール群におけるハードウェアモジュールに供給する供給部と、
当該ハードウェアモジュール群による処理が完了したか否かを判定する判定部と、
前記判定部による判定結果に基づいた指示を、前段のハードウェアモジュールに伝達する通知部と、
当該ハードウェアモジュール群による処理が完了した場合に、処理結果を次段のハードウェアモジュールに出力する送信部と、を備え、
前記受信部は、ハードウェアモジュール群におけるハードウェアモジュールを経由して処理されたパケット信号を受信し、
前記バッファメモリは、ハードウェアモジュール群におけるハードウェアモジュールを経由して処理されたパケット信号を保持し、
前記判定部は、前記ハードウェアモジュール群による処理が完了していない場合に、前記バッファメモリに保持されたパケット信号を、ハードウェアモジュール群におけるハードウェアモジュールに供給することを前記供給部に指示することを特徴とするデジタル回路装置。
【請求項２】
前記判定部は、前記ハードウェアモジュール群による処理が完了していない場合に、前段のハードウェアモジュールに対して、パケット信号の送信を停止させる制御信号を、前記通知部から伝達させることを特徴とする請求項１に記載のデジタル回路装置。
【請求項３】
前記判定部は、前記ハードウェアモジュール群による処理が完了して、前記送信部から次段のハードウェアモジュールに処理結果が出力された後に、前段のハードウェアモジュールに対して、パケット信号の送信を許可する制御信号を、前記通知部から伝達させることを特徴とする請求項２に記載のデジタル回路装置。
【請求項４】
複数のハードウェアモジュールが接続されて構成されるデジタル回路装置であって、
少なくとも１つのハードウェアモジュールは、
前段のハードウェアモジュールから入力されるパケット信号を受信する受信部と、
入力されたパケット信号を保持するバッファメモリと、
バッファメモリに保持されたパケット信号を、１以上のハードウェアモジュールで構成されるハードウェアモジュール群におけるハードウェアモジュールに供給する供給部と、
当該ハードウェアモジュール群による処理が完了した場合に、処理結果を次段のハードウェアモジュールに出力する送信部と、
前記受信部において受信したパケット信号の数と、前記送信部から出力したパケット信号の数とを監視する監視部と、
前記監視部による監視結果により、前記受信部においてパケット信号の受入が可能か否かを判定する判定部と、
前記判定部による判定結果に基づいた指示を、前段のハードウェアモジュールに伝達する通知部と、
を備えることを特徴とするデジタル回路装置。
【請求項５】
前記バッファメモリは所定数のパケット信号を格納可能なメモリサイズを有して構成されており、
前記供給部は、前記バッファメモリに格納されている複数のパケット信号をハードウェアモジュール群における異なるハードウェアモジュールに供給して、複数のパケット信号をパイプライン処理することを特徴とする請求項４に記載のデジタル回路装置。
【請求項６】
前記パケット信号は、次の供給先となるハードウェアモジュールを特定する宛先情報を含んで構成され、
パケット信号を受信したハードウェアモジュールは、パケット信号に施すべき処理の進行状況に応じて宛先情報を更新することを特徴とする請求項１から５のいずれかに記載のデジタル回路装置。
【請求項７】
前記パケット信号は、ハードウェアモジュール群による処理の進行状況を示す進行状況特定情報を含んで構成され、
パケット信号を受信したハードウェアモジュールは、進行状況特定情報を参照して、ハードウェアモジュール群による処理が完了したか否かを判定することを特徴とする請求項１から６のいずれかに記載のデジタル回路装置。
【請求項８】
前段のハードウェアモジュールとの間には、前記判定部の判定結果に基づいた制御信号を伝達するための制御信号線が形成されていることを特徴とする請求項１から７のいずれかに記載のデジタル回路装置。
【請求項９】
前記少なくとも一つのハードウェアモジュールは、シーケンサモジュールとして構成されることを特徴とする請求項１から８のいずれかに記載のデジタル回路装置。