ディジタル集積回路上に実装される回路素子や配線の微細化が進んでいる。これに伴い、集積回路には、プロセッサやメモリなどの機能ブロックが多数設けられる傾向にある。このような機能ブロックはコアと呼ばれる。図1は、集積回路200の構成を示している。集積回路200は、複数のコア201を備えている。例えば、複数のコア201をコア0、…、m−1、m、…、n−1(m、nは、0<m<nを満たす整数である)とした場合、コア0、…、m−1、m、…、n−1は、それぞれ、クロック信号CLK0、…、m−1、m、…、n−1に応じて、出力信号を出力する。この出力信号はデータ通信に用いられる。このように、集積回路200は、複数のコア201を備えている場合、コア201間でデータ通信を行うことができる。そのために、集積回路200は、更に、バスなどのコア間接続回路202を備えている。
バスなどのコア間接続回路を実現するために、クロック信号の立上りあるいは立下りの遷移(クロック・エッジ)により内部の素子を駆動する同期式論理回路が設計されてきた。しかし、設計容易性や消費電力の放射の低減といった効果から、大域非同期・局所同期(GALS:Globally Asynchronous、 Locally Synchronous)方式による非同期式論理回路の設計が注目されるようになっている。
非同期式論理回路とは、クロック信号の代わりに、ハンドシェイク信号を用いて回路内の記憶素子を制御する論理回路である。
非同期式論理回路でも、フリップ・フリップの間に組合せ回路を配置する構成は同期式論理回路と同様であるが、非同期式論理回路は、フリップ・フロップの記憶を制御する信号が同期式論理回路とは異なる。
一般的な同期式論理回路では、フリップ・フロップへの記憶制御信号として外部からのクロック信号が用いられる。この場合、全てのフリップ・フロップに対して信号が同着することを前提にフリップ・フロップと組合せ回路から成る部分が設計され、また全てのフリップ・フロップに対して信号が同着するようにクロック信号分配回路が設計される。
一方、一般的な非同期式論理回路では、フリップ・フロップへの記憶制御信号を生成するために記憶制御回路が用いられる。この場合、記憶制御回路間で一対のハンドシェイク信号(要求信号と応答信号)を通信することにより、フリップ・フロップの記憶タイミングが制御される。このハンドシェイク信号の通信制御手順は、ハンドシェイク・プロトコルと呼ばれる。
図2は、一般的な非同期式論理回路として、非同期式のレジスタの構成を示している。このレジスタは、記憶素子であるフリップ・フロップ(FF)と、記憶制御回路(LC)とを備えている。例えば、レジスタが3組存在する場合、3組のレジスタは、それぞれ、フリップ・フロップ310、311、312と、記憶制御回路320、321、322と、を備えている。記憶制御回路320、321、322は、それぞれ、フリップ・フロップ310、311、312に対応して設けられている。
図3は、図2の非同期式のレジスタの動作を示すタイミングチャートである。
(動作0)
まず、フリップ・フロップ310がデータd0を記憶(保持)しているものとする。また、記憶制御回路322は、データ入力準備完了を示す送信先応答信号A1を記憶制御回路321に送信したものとする。この場合、送信先応答信号A1の値は“0”である。いま、記憶制御回路320は、データ記憶要求を示す送信先要求信号R0を記憶制御回路321に出力したものとする。この場合、送信先要求信号R0の値は“1”である。
(動作1)
記憶制御回路321は、記憶制御回路322からの送信先応答信号A1“0”(データ入力準備完了)を受信した後に、記憶制御回路320からの送信先要求信号R0“1”(データ記憶要求)を受信する。このとき、記憶制御回路321は、送信先要求信号R0“1”(データ記憶要求)に応じて、データ記憶命令を示す記憶制御信号L1をフリップ・フロップ311に出力する。この場合、記憶制御回路321は、記憶制御信号L1の値を“1”にする。フリップ・フロップ311は、記憶制御信号L1“1”(データ記憶命令)に応じて、フリップ・フロップ310に記憶されたデータd0を入力し、そのデータd0を記憶する。例えば、フリップ・フロップ311は、記憶制御信号L1の立上り遷移によりデータd0を記憶する。
(動作2)
記憶制御回路321は、記憶制御信号L1“1”(データ記憶命令)を出力したとき、データ記憶完了通知を示す送信先応答信号A0を記憶制御回路320に出力し、データ記憶要求を示す送信先要求信号R1を記憶制御回路322に出力する。この場合、記憶制御回路321は、送信先応答信号A0の値を“1”にし、送信先要求信号R1の値を“1”にする。
(動作3)
記憶制御回路320は、記憶制御回路321からの送信先応答信号A0“1”(データ記憶完了通知)に応じて、データ入力準備要求を示す送信先要求信号R0を記憶制御回路321に出力する。この場合、記憶制御回路320は、送信先要求信号R0の値を“0”にする。
(動作4)
記憶制御回路322は、記憶制御回路321からの送信先要求信号R1“1”(データ記憶要求)に応じて、データ記憶命令を示す記憶制御信号L2をフリップ・フロップ312に出力する。この場合、記憶制御回路322は、記憶制御信号L2の値を“1”にする。フリップ・フロップ312は、記憶制御信号L2“1”(データ記憶命令)に応じて、フリップ・フロップ311に記憶されたデータd0を入力し、そのデータd0を記憶する。記憶制御回路322は、記憶制御信号L2“1”(データ記憶命令)を出力した後、データ記憶完了通知を示す送信先応答信号A1を記憶制御回路321に出力し、データ記憶要求を示す要求信号を後段(図示しない)に出力する。この場合、記憶制御回路322は、送信先応答信号A1の値を“1”にし、上記の要求信号の値を“1”にする。
(動作5)
記憶制御回路321は、記憶制御回路322からの送信先応答信号A0“1”(データ記憶完了通知)に応じて、データ入力準備要求を示す送信先要求信号R1を記憶制御回路322に出力する。この場合、記憶制御回路321は、送信先要求信号R1の値を“0”にする。記憶制御回路321は、記憶制御回路320からの送信先要求信号R0“0”(データ入力準備要求)に応じて、データ入力準備命令を示す記憶制御信号L1をフリップ・フロップ311に出力する。この場合、記憶制御回路321は、記憶制御信号L1の値を“0”にする。フリップ・フロップ311は、記憶制御信号L1“0”(データ入力準備命令)に応じて、次のデータに対する準備を行う。記憶制御回路321は、記憶制御信号L1“0”(データ入力準備命令)を出力したとき、データ入力準備完了を示す送信先応答信号A0を記憶制御回路320に出力し、データ入力準備要求を示す送信先要求信号R1を記憶制御回路322に出力する。この場合、記憶制御回路321は、送信先応答信号A0の値を“0”にし、送信先要求信号R1の値を“0”にする。
(動作6)
記憶制御回路320は、記憶制御回路321からの送信先応答信号A0“0”(データ入力準備完了)を受信した後に、前段(図示しない)からの要求信号“1”(データ記憶要求)を受信する。このとき、記憶制御回路320は、要求信号“1”(データ記憶要求)に応じて、データ記憶命令を示す記憶制御信号L0をフリップ・フロップ310に出力する。この場合、記憶制御回路320は、記憶制御信号L0の値を“1”にする(図示しない)。フリップ・フロップ310は、記憶制御信号L0“1”(データ記憶命令)に応じて、次のデータd1を入力し、そのデータd1を記憶する。記憶制御回路322は、記憶制御回路321からの送信先要求信号R1“0”(データ入力準備要求)に応じて、データ入力準備命令を示す記憶制御信号L2をフリップ・フロップ312に出力する。この場合、記憶制御回路322は、記憶制御信号L2の値を“0”にする。フリップ・フロップ312は、記憶制御信号L2“0”(データ入力準備命令)に応じて、次のデータに対する準備を行う。
(動作7)
データd1に対しても、上述の(動作2)〜(動作5)と同じ手順で、転送が行われる。図3では、各々の信号が周期的に遷移しているが、非同期式のレジスタは上述の(動作1)〜(動作7)のいずれで遅れが生じても手順に従うように動作する。
非同期式のコア間接続回路を用いる場合、以下の利点が挙げられる。
(利点1)
異なる機能ブロックの間でクロック同期をとる必要がないため、クロック分配範囲を小さく限定できる。
(利点2)
個々の機能ブロックのクロック周波数を自由に且つ動的に設定することが可能となるため、クロック周波数を機能ブロックが所定の動作を実現する必要最低限に低減できる。
(利点3)
クロック周波数を低減するとき、回路遅延を大きくすることができるため、電源電圧を下げることが可能となる。
(利点4)
消費電力は電源電圧の2乗とクロック周波数の積に比例するため、機能ブロック間のコア間接続回路を非同期式とすることによって、集積回路の消費電力を大きく低減することが可能となる。
(利点5)
同期式コアの駆動タイミングを時間的に分散させることができるため、電力と電磁波放射を低減することも可能となる。同期式コアはクロック信号の立上りあるいは立下りの遷移(クロック・エッジ)で駆動するため、クロック・エッジの直後に大きな電流変化がある。一方、コア間接続回路として非同期式のレジスタを用いると、コア毎に駆動タイミングが異なるため、集積回路全体での電流を平準化できる。その結果、最大時の電力と電流変化で誘導される電磁波放射が低減される。
コア間接続回路を用いた集積回路の設計では、データ通信を要求する通信要求を行う側のコアはマスタと呼ばれ、マスタからの通信要求に呼応して動作するコアはスレーブと呼ばれる。
マスタが複数存在する場合、コア間接続回路は、マスタ間で調停を行って優先度付けを行い、その優先度に従い順番に複数のマスタからの通信要求を処理する。コア間接続回路は、多数のコアを接続するために、調停による処理を複数の箇所で行うように構成される。この場合、コア間接続回路は、通信経路上の最初の調停箇所で優先権を与えられたマスタが、通信経路上の次の調停箇所までデータを送り、通信系路上の各調停箇所で通信要求と調停とデータ転送を繰り返して目的地のスレーブまで転送を行うように構成される。また、コア間接続回路の通信路のネットワーク形状(トポロジ)は、マスタとスレーブの対の一部ないし全部において通信経路が複数存在するように構成されることがある。マスタ・スレーブ対で複数の通信経路が存在する場合、コア間接続回路は、マスタが予め経路を決定するように構成されたり、接続回路が通信状況に適応して内部で動的に経路を決定するように構成される。
上述のように、コア間接続回路は、内部に複数の調停箇所を有している。そこで、複数対のマスタとスレーブがデータ転送を行う際に転送経路上に調停箇所を起点とする共通箇所が存在して、各データ転送の要求転送速度の和が共通箇所での最大転送速度を超えて混雑が発生しているものとする。この場合、共通箇所の起点である調停箇所で低い優先度を与えられた通信要求が長時間待たされているにもかかわらず、待たされている通信要求のスレーブに対して他のマスタからの通信要求が無く、コア間接続回路の通信容量が無駄にされてしまうことがある。
図4は、図1の集積回路200内の非同期式コア間接続回路の一例として、非同期式コア間接続回路500の構成を示している。
非同期式コア間接続回路500には、4つ以上のコアが接続されている。例えば、簡略化のため、非同期式コア間接続回路500には、同期式マスタ側コア501、同期式スレーブ側コア502、同期式マスタ側コア503、同期式スレーブ側コア504の4つのコアが接続されているものとする。図4では、「同期式マスタ側コア」、「同期式スレーブ側コア」、「同期式マスタ側コア」、「同期式スレーブ側コア」をそれぞれ「マスタA」、「スレーブA」、「マスタB」、「スレーブB」と記載している。以降、同期式マスタ側コア501、同期式スレーブ側コア502、同期式マスタ側コア503、同期式スレーブ側コア504をそれぞれマスタA501、スレーブA502、マスタB503、スレーブB504と称する。
非同期式コア間接続回路500は、上述の非同期式のレジスタと、非同期式分岐回路511、513、523と、非同期式調停回路512、514、522と、を備えている。これらは、非特許文献1に記載されているものが用いられているものとする。また、マスタA501、スレーブA502、マスタB503、スレーブB504、非同期式分岐回路511、513、523及び、非同期式調停回路512、522、524の間のデータ転送は、上述の非同期式のレジスタによって行われているものとする。
非同期式コア間接続回路500に対して、マスタA501がスレーブA502へのデータ列591〜594のデータ転送要求を行い、マスタB503がスレーブB504へのデータ列581〜583のデータ転送要求を行っているものとする。ここで、マスタA501が、非同期式分岐回路511〜非同期式調停回路512〜非同期式分岐回路513〜非同期式調停回路514〜スレーブA503と経路設定を行い、マスタB503が、非同期式調停回路512〜非同期式分岐回路513〜スレーブB504と経路設定を行うものとする。つまり、設定されたデータ転送経路は、非同期式調停回路512〜非同期式分岐回路513を共有部分として持つものとする。
このとき、データ列581〜583のデータ転送要求が先着したものとすると、マスタB503が指定する長さのデータ列が全て通過するまで共有部分がそのデータ転送要求に占拠されてしまう。このため、データ列591〜594の転送要求が上記の共有部分で転送されずに直前で待たされることとなる。データ列581〜583の転送要求が更に続き、マスタB503から続々と出力されるものとすると、データ列591〜594の転送処理待ち時間が非常に長くなる。ところが、非同期式コア間接続回路500においては、マスタA501からスレーブA502へのデータ列591〜594の転送経路としては、非同期式調停回路512と非同期式分岐回路513を通らない経路、即ち、非同期式分岐回路511〜非同期式調停回路522〜非同期式分岐回路523〜非同期式調停回路514〜スレーブA503という経路が存在し、その経路の通信容量が無駄になっている。
データ転送や調停に関する技術を紹介する。
特許文献1には、データ転送制御装置が記載されている。データ転送制御装置は、データ転送命令を出力するCPUが接続されるCPUインターフェース部と、同期信号を処理する入出力手段が接続される同期信号インターフェース部と、非同期信号を処理する入出力手段が接続される非同期信号インターフェース部と、外部へメモリアクセス要求を送信するデータ送信手段と、外部からのメモリアクセス要求を受信するデータ受信手段と、メモリ制御インターフェース部とを備えている。メモリ制御インターフェース部は、CPUインターフェース部と、同期信号インターフェース部と、非同期信号インターフェース部と、データ受信手段からの入力を調停する調停手段と、メモリに接続され、調停手段による調停結果に従ってメモリとのアクセスを制御する。
特許文献2には、非同期通信プロトコルを有するネットワークオンチップにおけるデータ伝送方法が記載されている。このネットワークは1以上のノードと1以上のリソースを備え、各ノードには、1以上の入力制御装置に接続された1以上の入力と、1以上の出力制御装置に接続された1以上の出力とが設けられている。内部クロック無しで動作する少なくとも1つのノードが、同じ出力にルーティングされる2つのデータパケット間の転送階層を決定する。この階層の決定は、各データパケットに関連付けられた優先チャネル情報に基づいて行われる。この優先チャネル情報及びこのデータパケットは別のノード又はネットワークリソースから送出されたものである。優先チャネル情報は、非同期通信プロトコルに従って第1の種類の同期信号によって伝送される。
特許文献3には、システム・バス調停回路装置が記載されている。システム・バス調停回路装置は、データ処理装置システムにおけるシステム・バスの使用を調停する競合調停回路と、システム・バスの使用を要求する複数のデータ処理装置と、システム・バス調停回路とから成ることを特徴としている。システム・バス調停回路は、競合調停回路と複数のデータ処理装置との間に接続された使用要求信号線及び使用許可信号線上に配置され、複数のデータ処理装置からのシステム・バスの使用要求のうち最高優先度のものを選択し、該最高優先度の使用要求を発したデータ処理装置に対し使用許可を発するようにしている。
特許文献4には、同期データ転送装置が記載されている。同期データ転送装置は、コンピュータシステムに設けられている。コンピュータシステムは、非同期的に規定されたバスと、当該バスを介してデータ転送を行う1以上のマスタ装置と、バス要求を調停して、いずれか一つのマスタ装置にバス使用権を与える調停装置とからなる。同期データ転送装置は、同期的に転送されるべきデータの転送を行う。同期データ転送装置は、調停装置に対してバス要求を送信し、かつ、調停装置からバス使用権を取得するバス確保装置と、バスを介してデータ転送を行う複数の従マスタ装置とを備えている。バス確保装置は、調停装置からバス使用権を取得した際、複数の従マスタ装置に対して、それぞれ所定のタイミングで、転送を開始/停止するよう通知するアクセス通知手段を含んでいる。複数の従マスタ装置はそれぞれ、アクセス通知手段からの通知に応じて転送を開始/停止させるアクセス制御手段を含んでいる。
特許文献5には、バスアービタ制御回路が記載されている。バスアービタ制御回路は、共有バス上に接続されたバスマスタからバスを使用するバスリクエストを調停しバスマスタからのバスリクエストが皆無になるバスのフローティング状態を回避する。バスアービタ制御回路は、バスリクエストレジスタと、バスアービタ回路と、バスグラントレジスタと、ホールド制御回路と、グラントデコーダと、を備えることを特徴としている。バスリクエストレジスタは、バスマスタからのバス使用要求であるバスリクエスト信号を受け付ける。バスアービタ回路は、バスリクエストレジスタを監視し受け付けられたバスリクエスト信号の優先を調停し調停結果を通知する。バスグラントレジスタは、通知された調停結果を保持する。ホールド制御回路は、バスリクエストレジスタを監視しバスリクエスト信号の有無によりバスグラントレジスタに調停結果の解除またはホールドを指示する。グラントデコーダは、バスグラントレジスタの調停結果に該当するバスマスタにバスの使用を許可するグラント信号を通知する。
特許文献6には、競合調停装置が記載されている。競合調停装置は、複数のデバイスと、パルス生成回路と、使用許諾禁止回路と、制御回路とを備えている。複数のデバイスは、コンピュータの所定の資源を利用する際に資源の使用を希望する使用希望信号をそれぞれ出力すると共に、各使用希望信号に基づき資源の使用を保証する使用許諾信号が外部からそれぞれ与えられると、使用許諾信号に応答して使用確認信号をそれぞれ出力する。パルス生成回路は、複数の出力端子、及び各出力端子に一定のパルス幅を持つ使用許諾パルスをそれぞれ出力する複数の部分パルス生成回路を有し、各使用許諾パルスを各出力端子に順次出力する。使用許諾禁止回路は、資源の使用を希望する複数のデバイスからの複数の使用確認信号を受けて、一つのデバイスが使用確認信号を有効にしている間は禁止信号の出力を有効にし、かつ、複数のデバイスが全て使用確認信号の出力を無効にしている間は禁止信号の出力を無効にする。制御回路は、複数の使用希望信号、複数の使用許諾パルス、及び禁止信号を入力し、デバイスに与える使用許諾信号を出力する。制御回路は、資源の使用を現に行っているデバイスに対して、使用希望信号が有効の間は使用許諾信号を有効にし、かつ、禁止信号を無視する。制御回路は、使用希望信号が無効になったときは使用許諾信号を無効にし、かつ、使用確認信号の無効を受けて禁止信号を有効にする制御を行う。制御回路は、資源の使用を現に行っていないデバイスに対して、使用希望信号が有効で、かつ、使用許諾パルスが入力されているときにのみ使用許諾信号を有効にし、かつ、使用確認信号の有効を受けて禁止信号を無視する制御を行うことを特徴としている。
特許文献7には、データ転送装置が記載されている。データ転送装置は、データ転送路と、データ転送制御回路と、データ停滞検出回路とを備えている。データ転送路は、データロード信号入力と、データホールド信号入力と、1以上のデータ入力と、データ出力とを有すると共に各段を構成するスタティック型並列データラッチ回路を複数縦列接続してなる。データ転送制御回路は、データ転送路の各段に対応して設けられている。データ転送制御回路は、自段に有意なデータが存在しない場合には前段から受信したデータ転送要求信号に呼応してデータロード信号を非活性化して前段からの入力データを確定させると共に前段に対してデータ受理信号を送信して有意なデータを保持している状態になる。データ転送制御回路は、次段に対してデータを出力しつつデータ転送要求信号を送信した後に次段から入力されるデータ受理信号に呼応してデータロード信号を活性化して有意なデータを保持しない状態に復帰する。データ転送制御回路は、自段に有意なデータが存在する場合には前段からのデータ転送要求信号の有無には拘わらずにデータロード信号を非活性状態に維持して前段へのデータ受理信号を送信しないことにより当該入力データを保持し続ける。データ停滞検出回路は、最終段のデータ転送制御回路から出力されるデータ転送要求信号の状態に基づいてデータ転送路上でのデータの停滞を検出する。各データ転送制御回路は、データ停滞検出回路がデータの停滞を検出している場合は自段のデータラッチ回路が有意なデータを保持している間はデータホールド信号を活性化することによりスタティックなデータラッチの制御を行う。各データ転送制御回路は、データ停滞検出回路がデータの停滞を検出していない場合は自段のデータラッチ回路が有意なデータを保持していてもデータホールド信号を非活性状態に維持することによりスタティックなデータラッチの制御を行わないようにしていることを特徴としている。
特許文献8には、パルス発生回路が記載されている。パルス発生回路は、パルス発生回路でパルスを発生させるか発生させないかを決定する情報を有するパターンデータのなかから、パルスが発生されない周期を検出し、該パルスが発生されない周期にダミーパルスを発生させるダミーパルス制御回路を有することを特徴としている。
特許文献9には、コンピュータ装置が記載されている。コンピュータ装置は、通信チャンネルと、受信インターフェースと、を含んでいる。受信インターフェースは、通信チャンネルからアクセス可能な大容量記憶デバイスと、通信チャンネルに接続され、それぞれ第1と第2のクロックを発生してその発生されたクロックを他のデバイスに与える、第1及び第2のデバイスと、そして通信チャンネルによって第2のデバイスからのデータを受信しそして該受信データを第1のクロックと同期化する。
以下に添付図面を参照して、本発明の実施形態による非同期式論理回路について詳細に説明する。
(第1実施形態)
[構成]
図5は、本発明の第1実施形態による非同期式論理回路100の構成を示すブロック図である。
本発明の第1実施形態による非同期式論理回路100は、非同期式コア間接続回路の非同期式のレジスタであるレジスタ171とレジスタ172の間に接続されている。レジスタ171は、記憶素子181と記憶制御回路191とを備えている。レジスタ172は、記憶素子182と記憶制御回路192とを備えている。非同期式のレジスタが、前述した非同期式コア間接続回路500(図4参照)の非同期式のレジスタである場合、例えば、記憶素子181、記憶制御回路191は、それぞれ、前述のフリップ・フロップ310、記憶制御回路320に対応する。記憶素子182、記憶制御回路192は、それぞれ、前述のフリップ・フロップ311、記憶制御回路321に対応する。
レジスタ171の記憶制御回路191は、データを記憶素子181に記憶し、データ記憶要求を示す送信元要求信号Riをレジスタ172に送信する。送信元要求信号Riが送信先要求信号Roとして送信され、この送信先要求信号Roがデータ記憶要求を示している。この場合、レジスタ172の記憶制御回路192は、送信先要求信号Ro(データ記憶要求)に応じて、レジスタ171の記憶素子181に記憶されたデータを記憶素子182に記憶する。記憶制御回路192は、データ記憶完了通知を示す送信先応答信号Aoをレジスタ171に送信する。データ記憶完了通知は、記憶素子182にデータを記憶したことを表している。
本発明の第1実施形態による非同期式論理回路100は、データ破棄モジュール199に接続されている。データ破棄モジュール199は、データ破棄要求信号Re(データ破棄要求)に応じて、データ破棄完了通知を示す破棄応答信号Aeをハンドシェイク切換モジュール104に出力する。これにより、送信側レジスタ171に残存しているデータが破棄されることになる。
本発明の第1実施形態による非同期式論理回路100は、混雑可能性検出モジュール101と、混雑可能性継続時間計測モジュール102と、混雑判定モジュール103と、ハンドシェイク切換モジュール104と、を具備している。
混雑可能性検出モジュール101は、ハンドシェイク切換モジュール104からの送信先要求信号Roと、レジスタ172からの送信先応答信号Aoとを監視する。
ここで、データ記憶要求に対して、データ記憶完了通知が送信されていない。即ち、ハンドシェイク切換モジュール104からの送信先要求信号Roがデータ記憶要求を示しているのに対して、レジスタ172からの送信先応答信号Aoがデータ記憶完了通知を示していない。この場合、混雑可能性検出モジュール101は、レジスタ171からレジスタ172へのデータ転送経路が混雑している可能性があることを示す混雑可能性信号Pcを混雑可能性継続時間計測モジュール102に出力する。
一方、データ記憶要求に対して、データ記憶完了通知が送信される。即ち、ハンドシェイク切換モジュール104からの送信先要求信号Roがデータ記憶要求を示しているのに対して、レジスタ172からの送信先応答信号Aoがデータ記憶完了通知を示している。この場合、混雑可能性検出モジュール101は、レジスタ171からレジスタ172へのデータ転送経路が混雑している可能性がないことを示す混雑可能性信号Pcを混雑可能性継続時間計測モジュール102に出力する。
混雑可能性継続時間計測モジュール102は、混雑可能性検出モジュール101からの混雑可能性信号Pcを受信する。
ここで、混雑可能性信号Pcが、レジスタ171からレジスタ172へのデータ転送経路が混雑している可能性があることを示している。この場合、混雑可能性継続時間計測モジュール102は、カウントする。このとき、混雑可能性継続時間計測モジュール102は、そのカウント値に応じた時間を混雑可能性継続時間Tcとし、混雑可能性継続時間Tcを示す信号を混雑判定モジュール103に出力する。
一方、混雑可能性信号Pcが、レジスタ171からレジスタ172へのデータ転送経路が混雑している可能性がないことを示している。この場合、混雑可能性継続時間計測モジュール102は、カウントを終了する。このとき、混雑可能性継続時間計測モジュール102は、混雑可能性継続時間Tcをリセットする。
混雑判定モジュール103は、混雑可能性継続時間Tcを示す信号を混雑可能性継続時間計測モジュール102から受信する。また、混雑判定モジュール103には、設定時間Tthが予め与えられる。混雑判定モジュール103は、混雑可能性継続時間Tcと、設定時間Tthとを比較する。
ここで、混雑可能性継続時間Tcが設定時間Tth未満である。この場合、混雑判定モジュール103は、レジスタ171からレジスタ172へのデータ転送経路が混雑していないことを示す混雑判定結果信号Cgをハンドシェイク切換モジュール104に出力する。
一方、混雑可能性継続時間Tcが設定時間Tth以上である。この場合、混雑判定モジュール103は、レジスタ171からレジスタ172へのデータ転送経路が混雑していることを示す混雑判定結果信号Cgをハンドシェイク切換モジュール104に出力する。
ハンドシェイク切換モジュール104は、レジスタ171からの送信元要求信号Riと、レジスタ172からの送信先応答信号Aoと、混雑判定モジュール103からの混雑判定結果信号Cgとを受信する。
ここで、混雑判定結果信号Cgが、レジスタ171からレジスタ172へのデータ転送経路が混雑していないことを示している。この場合、ハンドシェイク切換モジュール104は、レジスタ171からの送信元要求信号Ri(データ記憶要求)を送信先要求信号Ro(データ記憶要求)として、第1の転送先であるレジスタ172に出力する。
一方、混雑判定結果信号Cgが、レジスタ171からレジスタ172へのデータ転送経路が混雑していることを示している。この場合、ハンドシェイク切換モジュール104は、レジスタ171からの送信元要求信号Ri(データ記憶要求)に対して、データ破棄要求を示すデータ破棄要求信号Reを生成し、第2の転送先に出力する。
第1実施形態において、第2の転送先は、データ破棄モジュール199を表している。データ破棄モジュール199は、データ破棄要求信号Re(データ破棄要求)に応じて、データ破棄完了通知を示す破棄応答信号Aeをハンドシェイク切換モジュール104に出力する。データ破棄完了通知は、レジスタ171に記憶されたデータを破棄したことを表している。
ここで、データ記憶要求に対して、データ記憶完了通知が送信される。即ち、レジスタ171からの送信元要求信号Riがデータ記憶要求を示しているのに対して、レジスタ172からの送信先応答信号Aoがデータ記憶完了通知を示している。この場合、ハンドシェイク切換モジュール104は、レジスタ172へのデータ記憶要求の送信を終了する。即ち、データ記憶要求の取下げを示す送信先要求信号Roを出力する。また、ハンドシェイク切換モジュール104は、レジスタ172からの送信先応答信号Ao(データ記憶完了通知)を送信元応答信号Ai(データ記憶完了通知)として、レジスタ171に出力する。
一方、データ記憶完了通知に対して、データ記憶要求が送信される。即ち、レジスタ172からの送信先応答信号Ao(データ記憶完了通知)に対して、レジスタ171から送信元要求信号Ri(データ記憶要求)が送信される。この場合、ハンドシェイク切換モジュール104は、レジスタ171からの送信元要求信号Ri(データ記憶要求)に対して、データ破棄要求を示すデータ破棄要求信号Reを生成し、第2の転送先であるデータ破棄モジュール199に出力する。
[動作]
図6A、6Bは、本発明の第1実施形態による非同期式論理回路100の動作を示すフローチャートである。
ここで、送信元要求信号Ri、送信先要求信号Ro、データ破棄要求信号Reは、“0”、“1”の2つの値で表現される。送信元要求信号Ri、送信先要求信号Roは、その値が“1”である場合、データ記憶要求を示し、その値が“0”である場合、データ記憶要求の取下げを示している。データ破棄要求信号Reは、その値が“1”である場合、データ破棄要求を示し、その値が“0”である場合、データ破棄要求の取下げを示している。
送信元応答信号Ai、送信先応答信号Ao、破棄応答信号Aeは、“0”、“1”の2つの値で表現される。送信元応答信号Ai、送信先応答信号Aoは、その値が“1”である場合、データ記憶完了通知を示し、その値が“0”である場合、データ記憶完了通知の取下げを示している。破棄応答信号Aeは、その値が“1”である場合、データ破棄完了通知を示し、その値が“0”である場合、データ破棄完了通知の取下げを示している。
混雑可能性信号Pcは、“0”、“1”の2つの値で表現される。混雑可能性信号Pcは、その値が“1”である場合、レジスタ171からレジスタ172へのデータ転送経路が混雑している可能性があることを示し、その値が“0”である場合、データ転送経路が混雑している可能性がないことを示している。
混雑判定結果信号Cgは、“0”、“1”の2つの値で表現される。混雑判定結果信号Cgは、その値が“1”である場合、データ転送経路が混雑していることを示し、その値が“0”である場合、データ転送経路が混雑していないことを示している。
混雑可能性継続時間Tc及び設定時間Tthは任意の実数で表現される。
また、図6A、6Bの条件分岐において、条件成立は「Y」、条件不成立は「N」と略記する。
まず、非同期式論理回路100は初期状態である。この場合、送信元要求信号Ri、送信元応答信号Ai、送信先要求信号Ro、送信先応答信号Ao、データ破棄要求信号Re、破棄応答信号Aeの値は“0”である。また、混雑可能性信号Pcの値は“0”である。また、混雑可能性継続時間Tcは“0”である。また、混雑判定結果信号Cgの値は“0”である。設定時間Tthとして、任意の値が与えられているものとする(ステップS900)。
レジスタ171の記憶制御回路191からハンドシェイク切換モジュール104に送信元要求信号Riが送信される(ステップS901で「N」)。ここで、送信元要求信号Riの値が“1”(Ri=1)であるものとする(ステップS901で「Y」)。この場合、ハンドシェイク切換モジュール104は、送信元要求信号Ri“1”(データ記憶要求)に応じて、その値が“1”である送信先要求信号Ro(Ro=1)をレジスタ172の記憶制御回路192に出力する(ステップS902)。
ハンドシェイク切換モジュール104からレジスタ172の記憶制御回路192に送信先要求信号Ro“1”(データ記憶要求)が送信され、レジスタ172の記憶制御回路192からハンドシェイク切換モジュール104に送信先応答信号Aoが送信される(ステップS903)。
例えば、送信先要求信号Ro“1”(データ記憶要求)に対して、送信先応答信号Aoの値が“0”のままである(ステップS903で「N」)。この場合、レジスタ171からレジスタ172へのデータ転送経路が混雑している可能性があるため、混雑可能性検出モジュール101は、その値が“1”である混雑可能性信号Pc(Pc=1)を混雑時間計測モジュール102に出力する。混雑時間計測モジュール102は、混雑可能性信号Pcの値が“1”である間、カウントし、カウント値に応じた時間を混雑可能性継続時間Tcとして混雑判定モジュール103に出力する(ステップS913)。
混雑判定モジュール103は、混雑可能性継続時間Tcが設定時間Tth以上であるか否かを判定する(ステップS914)。
判定の結果、混雑可能性継続時間Tcが設定時間Tth未満である。この場合、データ転送経路が混雑していない。このため、混雑判定モジュール103は、その値が“0”である混雑判定結果信号Cg(Cg=0)を出力したままである(ステップS914で「N」)。
その後、送信先要求信号Ro“1”(データ記憶要求)に対して、送信先応答信号Aoの値が“1”(データ記憶完了通知)になった場合(ステップS903で「Y」)、データ転送経路が混雑している可能性がなくなったため、混雑可能性検出モジュール101は、その値が“0”である混雑可能性信号Pc(Pc=0)を混雑時間計測モジュール102に出力する(ステップS911)。混雑時間計測モジュール102は、混雑可能性信号Pcの値が“0”であるため、カウントを終了し、混雑可能性継続時間Tcをリセットする。即ち、“0”にする(ステップS912)。
ハンドシェイク切換モジュール104は、レジスタ171とレジスタ172の間のハンドシェイクを継続するために、レジスタ172の記憶制御回路192からの送信先応答信号Ao“1”(データ記憶完了通知)に応じて、その値が“1”である送信元応答信号Ai(Ai=1)をレジスタ171の記憶制御回路191に出力し(ステップS904)、記憶制御回路191から送信元要求信号Riを受信する(ステップS905)。ここで、送信元要求信号Riの値が“0”(Ri=0)である(ステップS905で「Y」)。この場合、ハンドシェイク切換モジュール104は、送信元要求信号Ri“0”(データ記憶要求)に応じて、その値が“0”である送信先要求信号Ro(Ro=0)をレジスタ172の記憶制御回路192に出力し(ステップS906)、記憶制御回路192から送信先応答信号Aoを受信する(ステップS907)。ここで、送信先応答信号Aoの値が“0”(Ao=0)である(ステップS907で「Y」)。この場合、ハンドシェイク切換モジュール104は、送信先応答信号Ao“0”に応じて、その値が“0”である送信元応答信号Ai(Ai=0)をレジスタ171の記憶制御回路191に出力する(ステップS908)。その後、ステップS900以降が実行される。
一方、判定の結果、混雑可能性継続時間Tcが設定時間Tth以上であるものとする(ステップS903で「N」、S913、S914で「Y」)。この場合、データ転送経路が混雑している。このため、混雑判定モジュール103は、その値が“1”である混雑判定結果信号Cg(Cg=1)を出力する(ステップS919)。
ハンドシェイク切換モジュール104は、送信先要求信号Ro“1”(データ記憶要求)をレジスタ172に出力したままで、レジスタ171とデータ破棄モジュール199との間でハンドシェイクを行う。この場合、ハンドシェイク切換モジュール104は、混雑判定モジュール103からの混雑判定結果信号Cg“1”に応じて、その値が“1”であるデータ破棄要求信号Re(Re=1)をデータ破棄モジュール199に出力する(ステップS922)。ここで、データ破棄モジュール199は、その値が“0”である破棄応答信号Ae(Ae=0)をハンドシェイク切換モジュール104に送信している(ステップS923で「N」)。データ破棄モジュール199は、データ破棄要求信号Re“1”(データ破棄要求)に応じて、レジスタ171の記憶素子181に記憶されたデータを破棄し、破棄応答信号Aeの値を“1”(Ae=1)にする(ステップS923で「Y」)。
ハンドシェイク切換モジュール104は、破棄応答信号Ae“1”(データ破棄完了通知)に応じて、その値が“1”である送信元応答信号Ai(Ai=1)をレジスタ171の記憶制御回路191に出力する(ステップS924)。ここで、送信元要求信号Riの値が“1”のままである(ステップS925で「N」)。送信元応答信号Aiの値が“1”に対して、レジスタ171が送信元要求信号Riの値を“0”とするとき(ステップS925で「Y」)、ハンドシェイク切換モジュール104は、送信元要求信号Ri“0”に応じて、その値が“0”であるデータ破棄要求信号Re(Re=0)をデータ破棄モジュール199に出力する(ステップS926)。ここで、データ破棄モジュール199は、その値が“1”である破棄応答信号Ae(Ae=1)をハンドシェイク切換モジュール104に送信している(ステップS927で「N」)。データ破棄モジュール199は、データ破棄要求信号Re“0”に応じて、破棄応答信号Aeの値を“0”(Ae=0)にする(ステップS927で「Y」)。ハンドシェイク切換モジュール104は、破棄応答信号Ae“0”に応じて、その値が“0”である送信元応答信号Ai(Ai=0)をレジスタ171の記憶制御回路191に出力する(ステップS928)。
その後、レジスタ172からの送信先応答信号Aoの値が“0”のままであるときに(ステップS933で「N」)、レジスタ171からの送信元要求信号Riの値が“0”であるものとする(ステップS931で「N」)。この場合、ハンドシェイク切換モジュール104は、送信先応答信号Aoの値が“1”となるか、送信元要求信号Riの値が“1”となるまで待機する。
例えば、送信先応答信号Aoの値が“0”のままであるときに(ステップS933で「N」)、送信元要求信号Riの値が“1”(データ記憶要求)となったものとする(ステップS931で「Y」)。この場合、ハンドシェイク切換モジュール104は、送信元要求信号Ri“1”(データ記憶要求)に応じて、レジスタ171とデータ破棄モジュール199との間でのハンドシェイクを開始し、上述のステップS922〜S928が実行される。
一方、レジスタ172の記憶制御回路192からの送信先応答信号Aoの値が“1”(データ記憶完了通知)となったものとする(ステップS933で「Y」)。この場合、ハンドシェイク切換モジュール104は、送信先応答信号Ao“1”(データ記憶完了通知)に応じて、レジスタ172への送信先要求信号Roの値を“0”にする(ステップS936)。
また、送信先応答信号Aoの値が“1”である場合、レジスタ171からレジスタ172へのデータ転送経路が混雑している可能性がないため、混雑可能性検出モジュール101は、混雑可能性信号Pcの値を“0”にする(ステップS941)。混雑可能性継続時間計測モジュール102は、混雑可能性信号Pcの値が“0”であるため、カウントを終了し、混雑可能性継続時間Tcをリセットする。即ち、“0”にする(ステップS942)。混雑判定モジュール103は、混雑可能性継続時間Tcがリセットされたことにより、混雑判定結果信号Cgの値を“0”にする(ステップS949)。
レジスタ172からの送信先応答信号Aoの値が“1”(データ記憶完了通知)であるときに(ステップS923で「N」)、レジスタ171からの送信元要求信号Riの値が“0”のままであるものとする(ステップS921で「N」)。この場合、ハンドシェイク切換モジュール104は、送信先応答信号Aoの値が“0”となるか、送信元要求信号Riの値が“1”となるまで待機する。
例えば、送信先応答信号Aoの値が“1”(データ記憶完了通知)であるときに(ステップS923で「N」)、送信元要求信号Riの値が“1”(データ記憶要求)となったものとする(ステップS921で「Y」)。この場合、ハンドシェイク切換モジュール104は、送信元要求信号Ri“1”(データ記憶要求)に応じて、レジスタ171とデータ破棄モジュール199との間でのハンドシェイクを開始し、上述のステップS922〜S928が実行される。
一方、送信先応答信号Aoの値が“0”となったものとする(ステップS923で「Y」)。その後、ステップS900以降が実行される。
[効果]
本発明の第1実施形態による非同期式論理回路100によれば、データ転送経路が混雑していない場合、送信元レジスタ(レジスタ171)から第1の転送先である送信先レジスタ(レジスタ172)にデータが転送されるように、送信元レジスタと第1の転送先との間のハンドシェイクを継続させる。また、データ転送経路が混雑している場合、送信元レジスタと第2の転送先との間のハンドシェイクに切り替える。この場合、第2の転送先のデータ破棄モジュール199は、データ破棄要求信号Re(データ破棄要求)に応じて、データ破棄完了通知を示す破棄応答信号Aeをハンドシェイク切換モジュール104に出力する。データ転送経路の混雑が解消された場合、送信元レジスタから第1の転送先にデータが転送されるように、送信元レジスタと第1の転送先との間のハンドシェイクに戻す。このように、ハンドシェイク・プロトコルに違反することなく、通常のデータ転送と混雑時のデータ転送を切り替えることができる。これにより、通信容量を有効に利用することができる。
[具体例]
次に、上述の構成について具体的に説明する。
図7は、混雑可能性検出モジュール101の具体的な構成を示している。
混雑可能性検出モジュール101では、送信先要求信号Ro、送信先応答信号Aoの値がそれぞれ“1”、“0”である状態のみ、混雑可能性信号Pcの値が“1”となり、その他の状態では混雑可能性信号Pcの値が“0”となる。そのため、混雑可能性検出モジュール101は、ANDゲートとNOTゲートのみで構成されている。即ち、送信先応答信号Aoの信号レベルはNOTゲートにより反転され、ANDゲートの第1入力には送信先要求信号Roが供給され、ANDゲートの第2入力には、NOTゲートの出力が供給される。ANDゲートは、その出力信号として混雑可能性信号Pcを出力する。
図8は、混雑可能性継続時間計測モジュール102と混雑判定モジュール103の具体的な構成を示している。混雑可能性継続時間測定モジュール102は、局所クロック生成回路710と混雑可能性継続時間カウンタ720とを備えている。
局所クロック生成回路710は、局所クロックスイッチ回路711とNOTゲート712とを備えている。局所クロックスイッチ回路711は、NOTゲート711(a)と2入力NANDゲート711(b)、(c)とNOTゲート711(d)とを備えている。NOTゲート711(a)は、その入力に混雑可能性検出モジュール101の出力が接続され、NOTゲート711(a)には混雑可能性信号Pcが供給される。2入力NANDゲート711(b)は、その第1入力にNOTゲート711(a)の出力が接続され、その第2入力に2入力NANDゲート711(c)の出力が接続され、その出力に2入力NANDゲート711(c)の第1入力が接続されている。2入力NANDゲート711(c)は、その第2入力にNOTゲート712の出力が接続されている。NOTゲート711(d)は、その入力に2入力NANDゲート711(c)の出力が接続され、その出力信号として局所クロック信号LClkを出力する。
局所クロック生成回路710は、混雑可能性信号Pcの値が“1”であるときに発振して局所クロック信号LClkを出力し、混雑可能性信号Pcの値が“0”であるときに発振を停止する。混雑可能性信号Pcの値が“1”であるとき、NOTゲート711(a)の出力信号Pc_bの値が“0”となる。NANDゲート711(b)は、その第1入力に供給される出力信号Pc_bの値が“0”となるため、その第2入力に供給される出力信号LClk_bbの値に関わらず、その出力として出力信号Pc_bbの値を“1”にする。このとき、NANDゲート711(c)は、その第1入力に供給される出力信号Pc_bbの値が“1”となるため、NOTゲート712と等価の動作をしており、NANDゲート711(c)とNOTゲート711(d)とNOTゲート712は奇数個(3個)のNOTゲートからなるフィードバック・ループを構成しているのと等価の状態となる。そのため、混雑可能性信号Pcの値が“1”であるとき、局所クロック生成回路710は発振し、局所クロック信号LClkを出力する。
混雑可能性信号Pcの値が“1”であるときの局所クロックスイッチ回路711の動作として、混雑可能性信号Pcの値が“0”となる直前に混雑可能性信号Pcの値が“1”であったときの内部の信号状態を考える。この場合、局所クロックスイッチ回路711が発振しているので、局所クロック信号LClkの値は“0”の状態と“1”の状態のどちらも取りうる。
まず、局所クロックスイッチ回路711に供給される混雑可能性信号Pc、NOTゲート712の出力信号LClk_bの値がそれぞれ“1”、“0”であるときを考える。このとき、NANDゲート711(b)の入力信号Pc_b、LClk_bbの値がそれぞれ“0”、“1”、NANDゲート711(b)の出力信号Pc_bbの値が“1”となる。NANDゲート711(c)の入力信号LClk_b、Pc_bbの値がそれぞれ“0”、“1”、NANDゲート711(c)の出力信号LClk_bbの値が“1”となる。
ここで、混雑可能性信号Pcの値が“0”になったものとする。この場合、NANDゲート711(b)の入力信号Pc_b、LClk_bbの値がそれぞれ“1”、“1”、NANDゲート711(b)の出力信号Pc_bbの値が“0”となる。NANDゲート711(c)の入力信号LClk_b、Pc_bbの値がそれぞれ“0”、“0”、NANDゲート711(c)の出力信号LClk_bbの値が“1”となる。NOTゲート711(d)により局所クロック信号LClkの値が“0”となる。このため、NANDゲート711(b)の入力信号Pc_b、LClk_bbの値がそれぞれ“1”、“1”、NANDゲート711(b)の出力信号Pc_bbの値が“0”のままであり、NANDゲート711(c)の入力信号LClk_b、出力信号Pc_bbの値がそれぞれ“1”、“0”となる。一方、NANDゲート711(c)の出力信号LClk_bbの値が“1”のままで変化しておらず、それに伴い、局所クロック信号LClkもまた変化しない。
次に、局所クロックスイッチ回路711に供給される混雑可能性信号Pc、NOTゲート712の出力信号LClk_bの値がそれぞれ“1”、“1”であるときを考える。このとき、NANDゲート711(b)の入力信号Pc_b、LClk_bbがそれぞれ“0”、“0”、NANDゲート711(b)の出力信号Pc_bbの値が“1”となる。NANDゲート711(c)の入力信号LClk_b、Pc_bbの値がそれぞれ“1”、“1”、NANDゲート711(c)の出力信号LClk_bbの値が“0”となる。
ここで、混雑可能性信号Pcの値が“0”になったものとする。この場合、NANDゲート711(b)の入力信号Pc_b、LClk_bbの値がそれぞれ“1”、“0”となる。NANDゲート711(b)の出力信号Pc_bbの値が“1”、NANDゲート711(c)の入力信号LClk_b、Pc_bbの値がそれぞれ“1”、“1”、NANDゲート711(c)の出力信号LClk_bbの値が“0”のままである。また、NOTゲート711(d)により局所クロック信号LClkの値が“1”となる。このため、NANDゲート711(b)の入力信号Pc_b、LClk_bbの値がそれぞれ“1”、“1”、NANDゲート711(b)の出力信号Pc_bbの値が“0”となる。NANDゲート711(c)の入力信号LClk_b、Pc_bbの値がそれぞれ“0”、“0”、NANDゲート711(c)の出力信号LClk_bbの値が“1”となる。
更に、NOTゲート711(d)により局所クロック信号LClkの値が“0”となる。このため、NANDゲート711(b)の入力信号Pc_b、LClk_bbの値がそれぞれ“1”、“1”、NANDゲート711(b)の出力信号Pc_bbの値が“0”のままである。NANDゲート711(c)の入力信号LClk_b、Pc_bbの値がそれぞれ“1”、“0”となる。一方、NANDゲート711(c)の出力信号の状態はLClk_bbの値が“1”のままで変化しておらず、それに伴い、局所クロック信号LClkもまた変化しない。
以上のように、局所クロック生成回路710は、混雑可能性信号Pcの値が“0”となることにより、その時点での局所クロック信号LClkの状態に関わらず、局所クロック信号LClkの出力を停止する。
混雑可能性継続時間カウンタ720は、継続時間記憶回路721と加算器722とを備えている。継続時間記憶回路721は、その入力に加算器722の出力が接続され、その出力に加算器722の入力が接続されている。この継続時間記憶回路721はクロック端子とリセット端子付きのフリップ・フロップであり、そのクロック端子には局所クロック信号LClkが供給され、リセット端子には混雑可能性信号Pcが供給される。
混雑可能性信号Pcの値が“1”である。このとき、継続時間記憶回路721は、加算器722からのカウント値を保持(記憶)し、局所クロック生成回路710からの局所クロック信号LClkに応じて、加算器722に出力する。また、カウント値に応じた時間は、混雑可能性継続時間Tcを表す信号として混雑判定モジュール103に出力される。加算器722は、継続時間記憶回路721からのカウント値に対して1を加算して継続時間記憶回路721に出力する。このように、継続時間記憶回路721に記憶されるカウント値は、局所クロック信号LClkの立上りあるいは立下り遷移のたびに1が加算される。
混雑可能性信号Pcの値が“0”である。このとき、継続時間記憶回路721は、混雑可能性信号Pc“0”に応じて、カウント値(混雑可能性継続時間Tc)をリセットし、初期値の“0”に戻る。
このように、混雑可能性継続時間カウンタ720は、混雑の可能性のある状態ではその混雑可能性継続時間Tcを増やしていき、混雑の可能性のなくなったときに混雑可能性継続時間Tcを“0”にする。
混雑判定モジュール103は、比較器を備えている。
混雑判定モジュール103には、混雑可能性継続時間カウンタ720から混雑可能性継続時間Tcを表す信号が供給され、外部から設定時間Tthを表す信号が供給される。混雑判定モジュール103は、その出力として混雑判定結果信号Cgをハンドシェイク切換モジュール104に出力する。
混雑可能性継続時間Tcが設定時間Tth以上である(Tc≧Tth)。この場合、混雑判定モジュール103は、混雑判定結果信号Cgの値を“1”にする。
混雑可能性継続時間Tcが設定時間Tth未満である(Tc<Tth)。この場合、混雑判定モジュール103は、混雑判定結果信号Cgの値を“0”にする。
図9は、ハンドシェイク切換モジュール104の具体的な構成を示している。ハンドシェイク切換モジュール104は、2入力非対称型C素子801、808と、2入力非対称型C素子806と、3入力非対称型C素子802、805と、ANDゲート803と、ORゲート807と、マルチプレクサ(MUX)804とを備えている。
ORゲート807は、その第1入力にANDゲート803の出力である送信先要求信号Roが供給され、その第2入力にレジスタ172からの送信先応答信号Aoが供給され、その出力として出力信号を出力する。2入力非対称型C素子808は、その第1入力にレジスタ171からの送信元要求信号Riが供給され、その第2入力にマルチプレクサ804の出力である送信元応答信号Aiが供給され、その出力としてハンドシェイク実行中信号HSを出力する。3入力非対称型C素子805は、その第1入力に混雑判定モジュール103からの混雑判定結果信号Cgが供給され、その第2入力にハンドシェイク実行中信号HSが供給され、その第3入力にORゲート807の出力信号が供給され、その出力としてハンドシェイク先切換信号Swを出力する。
マルチプレクサ804は、3つの入力端子S、D0、D1と1つの出力端子とを有している。入力端子Sには、ハンドシェイク先切換信号Swが供給され、入力端子D0には、送信先応答信号Aoが供給され、入力端子D1には、データ破棄モジュール199からの破棄応答信号Aeが供給される。マルチプレクサ804は、入力端子Sに供給されるハンドシェイク先切換信号Swの値が“0”である場合、入力端子D0に供給される送信先応答信号Aoを送信元応答信号Aiとして出力する。マルチプレクサ804は、入力端子Sに供給されるハンドシェイク先切換信号Swの値が“1”である場合、入力端子D1に供給される破棄応答信号Aeを送信元応答信号Aiとして出力する。
2入力非対称型C素子801は、その第1入力に送信元要求信号Riが供給され、その第2入力にハンドシェイク先切換信号Swが供給され、その出力として出力信号を出力する。3入力非対称型C素子802は、その第1入力に送信元要求信号Riが供給され、その第2入力にハンドシェイク先切換信号Swが反転されて供給され、その第3入力に送信先応答信号Aoが反転されて供給され、その出力として出力信号を出力する。ANDゲート803は、その第1入力に2入力非対称型C素子801の出力信号が供給され、その第2入力に3入力非対称型C素子802の出力信号が供給され、その出力として送信先要求信号Roを出力する。2入力非対称型C素子806は、その第1入力に送信元要求信号Riが供給され、その第2入力にハンドシェイク先切換信号Swが供給され、その出力として破棄要求信号Reをデータ破棄モジュール199に出力する。
上記のC素子とは、入力信号の待合せを行い、入力信号の状態が所定の条件を満たしたときに出力信号を遷移させ、入力信号の状態が所定の条件を満たしていないときに出力信号を維持する回路であり、入力信号数や待合せ条件によって複数の種類が存在する。
図10Aは、2入力非対称型C素子801、808である素子1001を示している。図10Bは、図10Aの論理回路1002による実現例を示している。図10Cは、図10Bの論理回路1002の動作を示す真理値表1003である。素子1001は、第1、2入力にそれぞれ入力信号A、Bが供給され、その出力として出力信号Yを出力する場合、ANDゲートとORゲートから成る論理回路1002により実現され、真理値表1003に示されるように動作する。
ORゲートは、その第1入力に入力信号Aが供給され、その第2入力にANDゲートの出力が供給され、その出力として出力信号Yを出力する。ANDゲートは、その第1入力に入力信号Bが供給され、その第2入力にORゲートの出力が供給される。ここで、出力信号YがフィードバックされてANDゲートへ入力されるため、ANDゲートの第2入力に供給される出力信号Yを入力信号Y(t−1)、ORゲートの出力信号Yを出力信号Y(t)と区別して表記する。
入力信号A、Bの値がそれぞれ“0”、“0”であるものとする。このとき、入力信号Y(t−1)の値に関わらず、入力信号Bの値が“0”であるため、ANDゲートの出力信号の値は“0”となる。入力信号AとANDゲートの出力信号との値が“0”となることにより、出力信号Y(t)の値が“0”となる。
入力信号A、Bの値がそれぞれ“0”、“1”であるものとする。このとき、入力信号Bの値が“1”であるため、ANDゲートの出力信号は入力信号Y(t−1)と等しい値となる。入力信号Aの値が“0”であるため、出力信号Y(t)は入力信号Y(t−1)と等しい値となる。つまり、論理回路1002は、入力信号A、Bの値がそれぞれ“0”、“1”であるとき、出力信号Yの状態を保持する。
入力信号A、Bの値がそれぞれ“1”、“0”又は“1”、“1”であるものとする。このとき、ANDゲートの出力信号の値に関わらず、入力信号Aの値が“1”となることにより、出力信号Y(t)の値が“1”となる。このため、出力信号Yの値が“1”となる。
図11Aは、2入力非対称型C素子806である素子1101を示している。図11Bは、図11Aの論理回路1102による実現例を示している。図11Cは、図11Bの論理回路1102の動作を示す真理値表1103である。素子1101は、第1、2入力にそれぞれ入力信号A、Bが供給され、その出力として出力信号Yを出力する場合、ANDゲートとORゲートから成る論理回路1102により実現され、真理値表1103に示されるように動作する。この場合、図11A〜11Cにおける入力信号A、Bと出力信号Yは、動作を説明するために用いられ、図10A〜10Cにおける信号とは異なる。
ANDゲートは、その第1入力に入力信号Aが供給され、その第2入力にORゲートの出力が供給され、その出力として出力信号Yを出力する。ORゲートは、その第1入力に入力信号Bが供給され、その第2入力にANDゲートの出力が供給される。ここで、出力信号YがフィードバックされてORゲートへ入力されるため、ORゲートの第2入力に供給される出力信号Yを入力信号Y(t−1)、ANDゲートの出力信号Yを出力信号Y(t)と区別して表記する。
入力信号A、Bの値がそれぞれ“0”、“0”又は“0”、“1”であるものとする。このとき、ORゲートの出力信号に関わらず、入力信号Aの値が“0”となることにより、出力信号Y(t)の値が“1”となる。
入力信号A、Bの値がそれぞれ“1”、“0”であるものとする。このとき、入力信号Bの値が“0”であるため、ORゲートの出力信号は入力信号Y(t−1)と等しい値となる。入力信号Aの値が“1”であるため、出力信号Y(t)は入力信号Y(t−1)と等しい値となる。つまり、論理回路1102は、入力信号A、Bの値がそれぞれ“1”、“0”であるとき、出力信号Yの状態を保持する。
入力信号A、Bの値がそれぞれ“1”、“1”であるものとする。このとき、入力信号Y(t−1)の値に関わらず、入力信号Bの値が“1”であるため、ORゲートの出力信号の値は“1”となる。入力信号AとORゲートの出力信号との値が“1”となることにより、出力信号Y(t)の値が“1”となる。
図12Aは、3入力非対称型C素子802、805である素子1210を示している。図12Bは、図12Aの論理回路1220による実現例を示している。図12Cは、図12Bの論理回路1220の動作を示す真理値表1230である。素子1210は、第1、2、3入力にそれぞれ入力信号A、B、Cが供給され、その出力として出力信号Yを出力する場合、3つのANDゲート1221〜1223とORゲート1224から成る論理回路1220により実現され、真理値表1230に示されるように動作する。この場合、図12A〜12Cにおける入力信号A、Bと出力信号Yは、動作を説明するために用いられ、図10A〜10C、図11A〜11Cにおける信号とは異なる。
ANDゲート1221は、その第1入力に入力信号Aが供給され、その第2入力に入力信号Bが供給される。ANDゲート1222は、その第1入力に入力信号Cが供給され、その第2入力にORゲート1224の出力が供給される。ANDゲート1223は、その第1入力に入力信号Bが供給され、その第2入力にORゲート1224の出力が供給される。ORゲート1224は、その第1入力にANDゲート1221の出力が供給され、その第2入力にANDゲート1222の出力が供給され、その第3入力にANDゲート1223の出力が供給され、その出力として出力信号Yを出力する。ここで、出力信号YがフィードバックされてANDゲート1222、1223へ入力されるため、ANDゲート1222、1223の第2入力に供給される出力信号Yを入力信号Y(t−1)、ORゲート1224の出力信号Yを出力信号Y(t)と区別して表記する。
入力信号A、B、Cの値がそれぞれ“0”、“0”、“0”又は“1”、“0”、“0”であるものとする。このとき、ANDゲート1221〜1223全てについて入力信号の値が“0”となるため、出力信号の値が“0”となる。ORゲート1224の入力信号の値が全て“0”となることにより、出力信号Y(t)の値が“0”となる。
入力信号A、B、Cの値がそれぞれ“1”、“1”、“0”又は“1”、“1”、“1”であるものとする。このとき、入力信号A、Bの値がそれぞれ“1”、“1”となるため、ANDゲート1221の出力信号の値が“1”となる。ORゲート1224の第1入力に供給される信号の値が“1”となることにより、出力信号Y(t)の値が“1”となる。
入力信号A、B、Cの値がそれぞれ“0”、“0”、“1”と“0”、“1”、“0”と“0”、“1”、“1”と“1”、“0”、“1”のいずれかであるものとする。このとき、入力信号A、Bの一方あるいは双方の値が“0”となるため、ANDゲート1221の出力信号の値が“0”となる。ANDゲート1222は、入力信号C、Y(t−1)の一方あるいは双方の値が“1”となり、ANDゲート1223は、入力信号B、Y(t−1)の一方あるいは双方の値が“1”となることによって、ANDゲート1222、1223の出力信号は入力信号Y(t−1)と等しくなる。このため、ORゲート1224の出力信号Y(t)は入力信号Y(t−1)と等しくなる。つまり、論理回路1220は、入力信号A、B、Cの値がそれぞれ“0”、“0”、“1”と“0”、“1”、“0”と“0”、“1”、“1”と“1”、“0”、“1”のいずれかであるとき、出力信号Yの状態を保持する。
図8のハンドシェイク切換モジュール104は、図10A〜10Cの2入力非対称型C素子801、808と図11A〜11Cの2入力非対称型C素子と図12A〜12Cの3入力非対称型C素子を用いることにより、ハンドシェイク・プロトコルに違反することなく、送信元レジスタ(レジスタ171)と送信先レジスタ(レジスタ172)とデータ破棄モジュール199の間でのハンドシェイクの切換を行うことが可能となる。
以下、ハンドシェイク切換モジュール104の内部の信号のうち、3入力非対称型C素子805の出力信号をハンドシェイク先切換信号Swと称し、2入力非対称型C素子808の出力信号をハンドシェイク実行中信号HSと称する。ハンドシェイク先切換信号Swは、その値が“0”である場合、ハンドシェイク先が送信先レジスタであることを示しており、その値が“1”である場合、ハンドシェイク先がデータ破棄モジュール199であることを示している。ハンドシェイク実行中信号HSは、その値が“0”である場合、送信元レジスタとのハンドシェイクが完了しており次のハンドシェイクを待機している状態を示しており、その値が“0”である場合、送信元レジスタとのハンドシェイクが実行中である状態を示している。
ハンドシェイク切換モジュール104の動作について詳細に説明する。
初期状態において、送信元要求信号Ri、送信元応答信号Ai、送信先要求信号Ro、送信先応答信号Ao、データ破棄要求信号Re、破棄応答信号Aeの値が“0”であり、ハンドシェイク実行中信号HSの値が“0”であり、ハンドシェイク先切換信号Swの値が“0”、混雑判定結果信号Cgの値が“0”である(図6AのステップS900)。以下に示す信号において、否定演算子の記号を「〜」と表記し、論理和演算子の記号を「|」と表記する。
まず、送信元要求信号Riの値が“1”であるものとする(図6AのステップS901で「Y」)。このとき、2入力非対称型C素子808の第1、2入力に供給される信号、即ち、送信元要求信号Ri、送信元応答信号Aiの値がそれぞれ“1”、“0”となるため、2入力非対称型C素子808の出力であるハンドシェイク実行中信号HSの値が“1”となる。
2入力非対称型C素子801の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“1”、“0”となるため、2入力非対称型C素子801の出力信号の値が“1”となる。3入力非対称型C素子802の第1、2、3入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Sw〜、送信先応答信号Ao〜の値がそれぞれ“1”、“1”、“1”となるため、3入力非対称型C素子802の出力信号の値が“1”となる。2入力非対称型C素子801、3入力非対称型802の出力信号の値が共に“1”となるため、ANDゲート803から出力される送信先要求信号Roの値が“1”となる(ステップS902)。
2入力非対称型C素子806の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“1”、“0”であるため、2入力非対称型C素子806の出力信号の値が“0”のまま保持され、データ破棄要求信号Reの値が“0”のままとなる。ここで、ORゲート807の第1、2入力に供給される、即ち、送信先要求信号Ro、送信先応答信号Aoの値がそれぞれ“1”、“0”となるため、ORゲート807の出力信号の値が“1”となる。この場合、ORゲート807の出力信号は、送信先要求信号Roと送信先応答信号Aoとの論理和であるRo|Aoにより表される。また、3入力非対称型C素子805の第1、2、3入力に供給される信号、即ち、混雑判定結果信号Cg、ハンドシェイク実行中信号HS、ORゲート807の出力信号Ro|Aoの値がそれぞれ“0”、“1”、“1”となる。この場合、3入力非対称型C素子805の出力であるハンドシェイク先切換信号Swの値が“0”のままとなる。
送信先要求信号Roの値が“1”になっても、送信先応答信号Aoの値が“0”のままである間は(ステップS903で「N」)、その間に、混雑可能性検出モジュール101が混雑可能性を検出して混雑可能性信号Pcの値を“1”にする(ステップS913)。一方、混雑可能性継続時間計測モジュール102で混雑可能性継続時間Tcを加算し、混雑判定モジュール103が設定時間Tth未満であると判定している間に(ステップS914)、送信先レジスタで混雑が起き、送信先応答信号Aoの値が“1”となった場合(ステップS903で「Y」)、混雑判定結果信号Cgの値が“0”のままとなる。その間に、混雑可能性検出モジュール101は、混雑可能性を検出しないため、混雑可能性信号Pcの値を“0”にして(ステップS911)、混雑可能性継続時間計測モジュール102は、混雑可能性継続時間Tcの値を“0”にリセットする(ステップS912)。
送信先応答信号Aoの値が“1”となることにより、3入力非対称型C素子802の第1、2、3入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Sw〜、送信先応答信号Ao〜の値がそれぞれ“1”、“1”、“0”となる。この場合、3入力非対称型C素子802の出力信号の値が“1”のままであるため、ANDゲート803から出力される送信先要求信号Roの値が“1”のまま維持される。また、ハンドシェイク先切換信号Swの値が“0”のままであるため、マルチプレクサ804の出力である送信元応答信号Aiの値は、送信先応答信号Aoの値“1”と同じ“1”となる(ステップS904)。
送信元応答信号Aiの値が“1”となることにより、送信元レジスタにより送信先要求信号Riの値が“0”となる(ステップS905で「Y」)。このとき、2入力非対称型C素子801の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“0”、“0”となるため、2入力非対称型C素子801の出力信号の値が“0”となる。3入力非対称型C素子802の第1、2、3入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Sw〜、送信先応答信号Ao〜の値がそれぞれ“0”、“1”、“0”となるが、3入力非対称型C素子802の出力信号の値が“1”のままとなる。このため、ANDゲート803から出力される送信先要求信号Roの値が“0”となる(ステップS906)。
また、2入力非対称型C素子808の第1、2入力に供給される信号、即ち、送信元要求信号Ri、送信元応答信号Aiの値がそれぞれ“0”、“1”と変化するが、2入力非対称型C素子808の出力であるハンドシェイク実行中信号HSの値が“1”のまま維持される。
送信先要求信号Roの値が“0”になることにより、送信先レジスタからの送信先応答信号Aoの値が“0”となる(ステップS907で「Y」)。このとき、ハンドシェイク先切換信号Swの値が“0”のままであるため、マルチプレクサ804の出力である送信元応答信号Aiの値は、送信先応答信号Aoの値“0”と同じ“0”となり(ステップS908)、初期状態へ戻る(ステップS900)。
以上のように、送信先レジスタで混雑が起こらなければ、ハンドシェイク切換モジュール104は、送信元レジスタと送信先レジスタの間でハンドシェイクを行う。
次に、ハンドシェイク切換モジュール104の動作として、送信先レジスタで混雑が起こる場合の動作について詳細に説明する。
まず、送信元要求信号Riの値が“1”であるものとする(図6AのステップS901で「Y」)。このとき、2入力非対称型C素子808の第1、2入力に供給される信号、即ち、送信元要求信号Ri、送信元応答信号Aiの値がそれぞれ“1”、“0”となるため、2入力非対称型C素子808の出力であるハンドシェイク実行中信号HSの値が“1”となる。
2入力非対称型C素子801の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“1”、“0”となるため、2入力非対称型C素子801の出力信号の値が“1”となる。3入力非対称型C素子802の第1、2、3入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Sw〜、送信先応答信号Ao〜の値がそれぞれ“1”、“1”、“1”となるため、3入力非対称型C素子802の出力信号の値が“1”となる。2入力非対称型C素子801、3入力非対称型802の出力信号の値が共に“1”となるため、ANDゲート803から出力される送信先要求信号Roの値が“1”となる(ステップS902)。
2入力非対称型C素子806の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“1”、“0”であるため、2入力非対称型C素子806の出力信号の値が“0”のまま保持され、データ破棄要求信号Reの値が“0”のままとなる。ここで、ORゲート807の第1、2入力に供給される、即ち、送信先要求信号Ro、送信先応答信号Aoの値がそれぞれ“1”、“0”となるため、ORゲート807の出力信号Ro|Aoの値が“1”となる。また、3入力非対称型C素子805の第1、2、3入力に供給される信号、即ち、混雑判定結果信号Cg、ハンドシェイク実行中信号HS、ORゲート807の出力信号Ro|Aoの値がそれぞれ“0”、“1”、“1”となる。この場合、3入力非対称型C素子805の出力であるハンドシェイク先切換信号Swの値が“0”のままとなる。
送信先要求信号Roの値が“1”になったことに対して、送信先応答信号Aoの値が“0”のままであるとき(ステップS903で「N」)、混雑可能性検出モジュール101と混雑可能性継続時間計測モジュール102と混雑判定モジュール103の動作により、混雑判定結果信号Cgの値が“1”となったものとする(ステップS913、S914で「Y」、S919)。
このとき、3入力非対称型C素子805の第1、2、3入力に供給される信号、即ち、混雑判定結果信号Cg、ハンドシェイク実行中信号HS、ORゲート807の出力信号Ro|Aoの値がそれぞれ“1”、“1”、“1”となるため、3入力非対称型C素子805の出力であるハンドシェイク先切換信号Swの値が“1”となる。これにより、2入力非対称型C素子806の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“1”、“1”となるため、2入力非対称型C素子806の出力であるデータ破棄要求信号Reの値が“1”となる(ステップS922)。
データ破棄要求信号Reの値が“1”になったことに対して、破棄応答信号Aeの値が“1”となると(ステップS923で「Y」)、ハンドシェイク先切換信号Swの値が“1”となっている。このため、マルチプレクサ804の出力である送信元応答信号Aiの値は、破棄応答信号Aeの値“1”と同じ“1”となる(ステップS924)。
送信元応答信号Aiの値が“1”に対して、送信元レジスタが送信元要求信号Riの値を“0”とするとき(ステップS925で「Y」)、2入力非対称型C素子801の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“0”、“1”となるため、2入力非対称型C素子801の出力信号の値が“1”が維持される。3入力非対称型C素子802の第1、2、3入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Sw〜、送信先応答信号Ao〜の値がそれぞれ“1”、“0”、“1”となるため、3入力非対称型C素子802の出力信号の値が“1”が維持される。このため、ANDゲート803の出力である送信先要求信号Roの値が“1”のまま維持される。その一方で、2入力非対称型C素子806の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“0”、“1”となるため、2入力非対称型C素子806の出力であるデータ破棄要求信号Reの値が“0”となる(ステップS926)。
データ破棄要求信号Reの値が“0”となったことに対して、破棄応答信号Aeの値が“0”となると(ステップS927で「Y」)、ハンドシェイク先切換信号Swの値が“1”となっている。このため、マルチプレクサ804の出力である送信元応答信号Aiの値は、破棄応答信号Aeの値“0”と同じ“0”として出力する(ステップS928)。
送信元応答信号Aiの値が“0”となることにより、2入力非対称型C素子808の第1、2入力に供給される信号、即ち、送信元要求信号Ri、送信元応答信号Aiの値がそれぞれ“0”、“0”となるため、2入力非対称型C素子808の出力であるハンドシェイク実行中信号HSの値が“0”となり、送信元レジスタとデータ破棄モジュール199との間のハンドシェイクを完了する。このハンドシェイクと並行して送信元レジスタから転送されるデータを受信するレジスタがないため、このデータは破棄される。
ここで、送信先レジスタでの混雑が解消されず、送信先応答信号Aoの値が“0”のままであるとき(ステップS933で「N」)、送信先要求信号Roの値が“1”のままであるため、ORゲート807の出力信号の値は“1”のままである。3入力非対称型C素子805の第1、2、3入力に供給される信号、即ち、混雑判定結果信号Cg、ハンドシェイク実行中信号HS、ORゲート807の出力信号Ro|Aoの値がそれぞれ“1”、“0”、“1”となり、3入力非対称型C素子805の出力であるハンドシェイク先切換信号Swの値が“1”のままとなる。
送信先応答信号Aoの値が“0”のままであるときに、新たに破棄すべきデータが送信元レジスタから転送されて送信元要求信号Riの値が“1”となったものとする(ステップS931で「Y」)。このとき、2入力非対称型C素子808の第1、2入力に供給される信号、即ち、送信元要求信号Ri、送信元応答信号Aiの値がそれぞれ“1”、“0”となるため、2入力非対称型C素子808の出力であるハンドシェイク実行中信号がHSの値が“1”となる。2入力非対称型C素子801の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“1”、“1”となるため、2入力非対称型C素子801の出力信号の値が“1”のままとなる。2入力非対称型C素子801、3入力非対称型802の出力信号の値が共に“1”となるため、ANDゲート803から出力される送信先要求信号Roの値が“1”となる。2入力非対称型C素子806の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“1”、“1”であるため、2入力非対称型C素子806の出力であるデータ破棄要求信号Reの値が“1”となる(ステップS922)。
ORゲート807の第1、2入力に供給される、即ち、送信先要求信号Ro、送信先応答信号Aoの値がそれぞれ“1”、“0”のままであるため、ORゲート807の出力信号Ro|Aoの値は“1”のままとなる。3入力非対称型C素子805の第1、2、3入力に供給される信号、即ち、混雑判定結果信号Cg、ハンドシェイク実行中信号HS、ORゲート807の出力信号Ro|Aoの値がそれぞれ“1”、“1”、“1”となる。この場合、3入力非対称型C素子805の出力であるハンドシェイク先切換信号Swの値が“1”のままとなる。
以降の送信元レジスタとデータ破棄モジュール199との間でのハンドシェイクは前述と同様に実行される(ステップS923〜S928)。
送信元レジスタとデータ破棄モジュール199との間のハンドシェイクが完了したときに、送信先レジスタでの混雑が解消されて送信先応答信号Aoの値が“1”となっているものとする(ステップS933で「Y」)。このとき、3入力非対称型C素子802の第1、2、3入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Sw〜、送信先応答信号Ao〜の値がそれぞれ“1”、“0”、“0”となるため、3入力非対称型C素子802の出力信号の値が“0”となり、ANDゲート803から出力される送信先要求信号Roの値が“0”となる(ステップS936)。
ここで、送信先応答信号Aoの値が“1”であるため、混雑可能性検出モジュール101と混雑可能性継続時間計測モジュール102と混雑判定モジュール103の動作により、混雑判定結果信号Cgの値が“0”となったものとする(ステップS941、S942、S949)。
このとき、送信先要求信号Ro、送信先応答信号Aoの値がそれぞれ“0”、“1”となるが、ORゲート807の出力信号Ro|Aoの値は“1”のままとなる。また、3入力非対称型C素子805の第1、2、3入力に供給される信号、即ち、混雑判定結果信号Cg、ハンドシェイク実行中信号HS、ORゲート807の出力信号Ro|Aoの値がそれぞれ“0”、“0”、“1”となるため、3入力非対称型C素子805の出力であるハンドシェイク先切換信号Swの値が“1”のまま維持される。
ここで、送信先要求信号Roの値が“0”に対して、送信先応答信号Aoの値が“1”のままであるとき(ステップS923で「N」)、新たに破棄すべきデータが送信元レジスタから転送されて送信元要求信号Riの値が“1”となったものとする(ステップS921で「Y」)。このとき、2入力非対称型C素子808の第1、2入力に供給される信号、即ち、送信元要求信号Ri、送信元応答信号Aiの値がそれぞれ“1”、“0”となるため、2入力非対称型C素子808の出力であるハンドシェイク実行中信号HSの値が“1”となる。2入力非対称型C素子801の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“1”、“1”となるため、2入力非対称型C素子801の出力信号の値が“1”となる。3入力非対称型C素子802の第1、2、3入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Sw〜、送信先応答信号Ao〜の値がそれぞれ“1”、“0”、“0”のままとなるため、3入力非対称型C素子802の出力信号の値が“0”のままとなる。2入力非対称型C素子801、3入力非対称型802の出力信号の一方の値が“0”のままであるため、ANDゲート803から出力される送信先要求信号Roの値が“0”のままとなる。2入力非対称型C素子806の第1、2入力に供給される信号、即ち、送信元要求信号Ri、ハンドシェイク先切換信号Swの値がそれぞれ“1”、“1”であるため、2入力非対称型C素子806の出力であるデータ破棄要求信号Reの値が“1”となる(ステップS922)。
送信先要求信号Ro、送信先応答信号Aoの値がそれぞれ“0”、“1”のままであるため、ORゲート807の出力信号Ro|Aoの値は“1”のままとなる。3入力非対称型C素子805の第1、2、3入力に供給される信号、即ち、混雑判定結果信号Cg、ハンドシェイク実行中信号HS、ORゲート807の出力信号Ro|Aoの値がそれぞれ“0”、“1”、“1”となり、3入力非対称型C素子805の出力であるハンドシェイク先切換信号Swの値が“1”のままとなる。以降の送信元レジスタとデータ破棄モジュールとの間でのハンドシェイクは前述と同様に実行される(ステップS923〜S928)。
送信元レジスタとデータ破棄モジュール199との間のハンドシェイクが完了したときに、送信先要求信号Roの値が“0”に対して送信先応答信号Aoの値が“0”になったものとする(ステップS923で「Y」)。このとき、送信先要求信号Ro、送信先応答信号Aoの値がそれぞれ“0”、“0”となるため、ORゲート807の出力信号Ro|Aoの値は“0”となる。3入力非対称型C素子805の第1、2、3入力に供給される信号、即ち、混雑判定結果信号Cg、ハンドシェイク実行中信号HS、ORゲート807の出力信号Ro|Aoの値がそれぞれ“0”、“0”、“0”となるため、3入力非対称型C素子805の出力であるハンドシェイク先切換信号Swの値が“0”となり、送信先レジスタとのハンドシェイクも完了して、初期状態に戻る(ステップS900)。
以上の説明により、本発明の第1実施形態による非同期式論理回路100によれば、混雑可能性検知モジュール101は、送信先レジスタ(レジスタ172)へデータ記憶要求(送信先要求信号Ro“1”)が行われていながらも、送信先レジスタから記憶完了の応答がない場合(送信先応答信号Ao“0”)、送信元レジスタ(レジスタ171)から送信先レジスタへのデータ転送経路が混雑している可能性がある状態(混雑可能性信号Pc“1”)を検知する。混雑可能性継続時間計測モジュール102は、この状態の継続時間である混雑可能性継続時間Tcを測定する。混雑判定モジュール103は、混雑可能性継続時間Tcが設定時間Tthを超えた場合、データ転送経路が混雑していると判定する。このように、非同期式のレジスタによるデータ転送における混雑を検出することができる。
また、本発明の第1実施形態による非同期式論理回路100によれば、ハンドシェイク切換モジュール104は、データ転送経路が混雑していない場合、送信元レジスタから第1の転送先(送信先レジスタ)にデータが転送されるように、送信元レジスタと第1の転送先との間のハンドシェイクを継続させる。また、データ転送経路が混雑している場合、送信元レジスタと第2の転送先との間のハンドシェイクに切り替える。この場合、第2の転送先のデータ破棄モジュール199は、データ破棄要求信号Re(データ破棄要求)に応じて、データ破棄完了通知を示す破棄応答信号Aeをハンドシェイク切換モジュール104に出力する。ハンドシェイク切換モジュール104は、データ転送経路の混雑が解消された場合、送信元レジスタから第1の転送先にデータが転送されるように、送信元レジスタと第1の転送先との間のハンドシェイクに戻す。このように、ハンドシェイク・プロトコルに違反することなく、通常のデータ転送と混雑時のデータ転送を切り替えることができる。これにより、通信容量を有効に利用することができる。
なお、本発明の第1実施形態による非同期式論理回路100では、上述の構成に限定されない。
例えば、混雑判定モジュール103は、設定時間Tthを記憶する記憶モジュールを更に備え、その比較器が、混雑可能性継続時間Tcを表す信号を混雑可能性継続時間計測モジュール102から受信し、混雑可能性継続時間Tcと、記憶モジュールに記憶された設定時間Tthとを比較してもよい。
また、データ転送経路の混雑時に、送信先レジスタ(レジスタ172)へデータ記憶要求が行われたときに、送信先レジスタから記憶完了の応答が行われていない状態だけでなく、送信先レジスタへデータ記憶要求の取下げが行われたときに、送信先レジスタから記憶完了の応答の取下げが行われていない状態でも、データの転送を一時停止するようなハンドシェイク・プロトコルに従う場合も考えられる。この場合、混雑可能性検出モジュール101は、上述のように、ANDゲートとNOTゲートで構成されているが、図13に示されるように、XORゲートで構成してもよい。これにより、送信先要求信号Ro、送信先応答信号Aoや送信先要求信号Ro、送信先応答信号Aoの値がそれぞれ“1”、“0”の場合だけでなく、送信先要求信号Ro、送信先応答信号Aoの値がそれぞれ“0”、“1”の場合でも、XORゲートの出力である混雑可能性信号Pcの値が“1”となり、その他の状態では混雑可能性信号Pcの値が“0”となる。
(第2実施形態)
図14は、本発明の第2実施形態による非同期式論理回路1400の構成を示すブロック図である。第2実施形態では、第1実施形態と重複する説明を省略する。
本発明の第1実施形態による非同期式論理回路100において、混雑可能性検出モジュール101とハンドシェイク切換モジュール104は、同一対のレジスタ間に接続されている。即ち、本発明の第1実施形態による非同期式論理回路100では、非同期式コア間接続回路の非同期式のレジスタであるレジスタ171とレジスタ172の間に接続されている。しかし、これに限定されない。
本発明の第2実施形態による非同期式論理回路1400において、混雑可能性検出モジュール101とハンドシェイク切換モジュール104は、異なる対のレジスタ間に接続されてもよい。この場合、非同期式コア間接続回路の非同期式のレジスタとして、レジスタ171とレジスタ172の間に、レジスタ171、172と同じ機能であるレジスタ1472が設けられている。レジスタ1472は、記憶素子1482と記憶制御回路1492とを備えている。非同期式のレジスタが、前述した非同期式コア間接続回路500(図4参照)の非同期式のレジスタである場合、例えば、記憶素子181、記憶制御回路191は、それぞれ、前述のフリップ・フロップ310、記憶制御回路320に対応する。記憶素子1482、記憶制御回路1492は、それぞれ、前述のフリップ・フロップ311、記憶制御回路321に対応する。記憶素子182、記憶制御回路192は、それぞれ、前述のフリップ・フロップ312、記憶制御回路322に対応する。混雑可能性検出モジュール101は、レジスタ1472とレジスタ172の間に接続され、ハンドシェイク切換モジュール104は、レジスタ171とレジスタ1472の間に接続されている。
第2実施形態の効果は、第1実施形態の効果と同じである。
(第3実施形態)
図15は、本発明の第3実施形態による非同期式論理回路1500の構成を示すブロック図である。第3実施形態では、第1実施形態と重複する説明を省略する。
本発明の第1実施形態による非同期式論理回路100において、上述の第2の転送先は、データ破棄モジュール199を表している。データ破棄モジュール199は、ハンドシェイク切換モジュール104からのデータ破棄要求信号Re“1”(データ破棄要求)に応じて、破棄応答信号Ae“1”(データ破棄完了通知)をハンドシェイク切換モジュール104に送信している。しかし、これに限定されない。
本発明の第3実施形態による非同期式論理回路1500において、上述の第2の転送先は、送信先レジスタ172(第1のレジスタ)とは異なる第2のレジスタでもよい。この場合、本発明の第3実施形態による非同期式論理回路1500は、データ破棄モジュール199に代えて、第2のレジスタであるレジスタ1599に接続されている。レジスタ1599は、記憶素子1583と記憶制御回路1593とを備えている。
レジスタ1599は、ハンドシェイク切換モジュール104からのデータ破棄要求信号Re“1”(データ破棄要求)に応じて、レジスタ171に記憶されたデータを記憶素子1583に記憶する。このとき、レジスタ1599は、データ破棄完了通知を示す破棄応答信号Aeをハンドシェイク切換モジュール104に出力する。この場合、破棄応答信号Aeの値は“1”を表し、データ破棄完了通知は、レジスタ171に記憶されたデータを他のデータ転送経路に転送したことを表している。
本発明の第3実施形態による非同期式論理回路1500によれば、データ転送経路が混雑していない場合、送信元レジスタ(レジスタ171)から第1の転送先である送信先レジスタ(レジスタ172)にデータが転送されるように、送信元レジスタと第1の転送先との間のハンドシェイクを継続させて、データ転送経路が混雑している場合、送信元レジスタに記憶されたデータが第2転送先にデータが転送されるように、送信元レジスタと第2の転送先との間のハンドシェイクに切り替える。この場合、第2の転送先は、レジスタ1599であるため、データは、レジスタ1599に転送される。データ転送経路の混雑が解消された場合、送信元レジスタから第1の転送先にデータが転送されるように、送信元レジスタと第1の転送先との間のハンドシェイクに戻す。このように、ハンドシェイク・プロトコルに違反することなく、通常のデータ転送と混雑時のデータ転送を切り替えることができる。これにより、通信容量を有効に利用することができる。
本発明は、プロセッサや演算回路などのコア(機能ブロック)の間でデータ転送を行う回路といった用途に適用できる。
[応用例1]
図16は、図5の非同期式論理回路100を図4の非同期式コア間接続回路500に適用した場合の非同期式コア間接続回路1800の構成を示している。
前述のように、非同期式コア間接続回路500では、マスタA501からスレーブA502へのデータ591〜594の転送と、マスタB503からスレーブB504へのデータ581〜583の転送が行われている場合、後者の転送が非同期式調停回路512を占有している。このため、データ591〜594が非同期式調停回路512の直前で停止されている。データ591〜594の転送が進まないため、マスタA501は次の転送を行うことができなくなっている。
一方、非同期式コア間接続回路1800は、前述の非同期式コア間接続回路500と、非同期式コア間接続回路500の非同期式調停回路512の直前に接続された非同期式論理回路100、データ破棄モジュール199を具備している。非同期式コア間接続回路1800では、非同期式論理回路100とデータ破棄モジュール199を用いることによって、マスタB503からスレーブB504の間でのデータ581〜583の転送が完了していなくても、マスタA501から送出されているデータ1891〜1894の破棄が可能となる。また、マスタA501は新たなデータ1871〜1873の転送を開始することが可能となる。従って、データ転送容量を有効に活用することが可能となる。
[応用例2]
図17は、図15の非同期式論理回路1500を図4の非同期式コア間接続回路500に適用した場合の非同期式コア間接続回路1600の構成を示している。
非同期式コア間接続回路1600は、前述の非同期式コア間接続回路500と、非同期式コア間接続回路500の非同期式調停回路512の直前に接続された非同期式論理回路1500、レジスタ1599を具備している。レジスタ1599からマスタA501へのデータ返送経路を増設した場合、マスタA501からのデータ転送と、マスタA501へのデータ転送とを調停する必要がある。これを調停するために、非同期式コア間接続回路1600は、更に、マスタA501とレジスタ1599との間に設けられた非同期式調停回路1631を具備している。非同期式コア間接続回路1600では、非同期式論理回路1500を用いることによって、非同期式コア間接続回路500の混雑箇所からマスタA501へのデータ1691〜1694を返送して、マスタA501によりデータ1691〜1694の転送経路の再設定を行い、データ1691〜1694を非同期式分岐回路511と非同期式調停回路522と非同期式分岐回路523と非同期式調停回路514を経由してスレーブA502へ到達させることが可能となる。
[応用例3]
図18は、図15の非同期式論理回路1500を図4の非同期式コア間接続回路500に適用した場合の非同期式コア間接続回路1700の構成を示している。
非同期式コア間接続回路1700は、前述の非同期式コア間接続回路500と、非同期式コア間接続回路500の非同期式調停回路512の直前に接続された非同期式論理回路1500、レジスタ1599を具備している。レジスタ1599からスレーブAへのデータ返送経路を増設した場合、非同期式分岐回路511から非同期式調停回路522へのデータ転送と、レジスタ1599から非同期式調停回路522へのデータ転送とを調停する必要がある。これを調停するために、非同期式コア間接続回路1700は、更に、レジスタ1599と非同期式調停回路522との間に設けられた非同期式調停回路1732を具備している。非同期式コア間接続回路1700では、非同期式論理回路1500を用いることによって、非同期式調停回路512での混雑を避けて、非同期式コア間接続回路500の混雑箇所からスレーブA502への迂回路である非同期式調停回路1732と非同期式調停回路522と非同期式分岐回路523と非同期式調停回路514を経由してスレーブA502へ到達する経路へ、データ1791〜1794を迂回して転送することが可能となる。
また、非同期式論理回路100のうちの、混雑可能性検出モジュール101と混雑可能性継続時間計測モジュール102と混雑判定モジュール103のみを図4の非同期式コア間接続回路500に適用して、混雑判定結果信号が混雑中を意味する状態となったときには、混雑箇所から送信元の方向へデータ転送経路を遡り、その経路上のレジスタを全てリセットする構成も可能である。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2009年1月14日に出願された特許出願番号2009−005979号の日本特許出願に基づいており、その出願による優先権の利益を主張し、その出願の開示は、引用することにより、そっくりそのままここに組み込まれている。