(57)【要約】【課題】２相式の非同期式回路の処理速度を向上させると共に、回路規模の増大を抑制する。【解決手段】非同期式回路２００は、段階的に接続された複数の回路ブロックを備え、夫々の回路ブロックが、演算回路と、該演算回路に対して２相式制御を行う制御回路を有する。モード制御回路２３０は、１段目の回路ブロックに対して、該回路ブロックが休止相を開始したときに初期化を開始し、最下段の回路ブロックが休止相を開始したときに稼働相を開始し、２段目の回路ブロックに対して、１段目の回路ブロックが初期化を開始したときに稼働相を開始し、１段目の回路ブロックが稼働相を開始したときに初期化を開始するように制御を行う。【選択図】図１
2012190251.tif 000002
【特許請求の範囲】
【請求項１】
段階的に接続された複数の回路ブロックを備え、夫々の回路ブロックが、演算回路と、該演算回路に対して２相式制御を行う制御回路とを有する非同期式回路であって、
１段目の回路ブロックに対して、該回路ブロックが休止相を開始したときに初期化を開始し、最下段の回路ブロックが休止相を開始したときに稼働相を開始し、２段目の回路ブロックに対して、１段目の回路ブロックが初期化を開始したときに稼働相を開始し、１段目の回路ブロックが稼働相を開始したときに初期化を開始するように制御を行うモード制御回路をさらに備えることを特徴とする非同期式回路。
【請求項２】
前記制御回路は、
当該回路ブロックに入力される信号ｉｎの立ち上がりに応じて稼働相を開始させ、所定時間経過後に休止相を開始させると共に、出力する信号ｏｕｔを立ち上げ、
前記信号ｉｎの立ち下がりにより初期化を開始し、初期化完了時に前記信号ｏｕｔを立ち下げ、
前記モード制御回路は、
２段目の回路ブロックに入力される信号ｉｎと、１段目の回路ブロックが出力する信号ｏｕｔとが入力されるＯＲ素子と、
最下段の回路ブロックが出力する信号ｏｕｔを反転する第１のインバータと、
前記ＯＲ素子と前記第１のインバータの出力が入力される第１のＡＮＤ素子と、
前記第１のＡＮＤ素子の出力を反転して１段目の回路ブロックのｉｎ信号として出力する第２のインバータと、
前記第２のインバータの出力を反転して２段目の回路ブロックの信号ｉｎとして出力する第３のインバータとを備えることを特徴とする請求項１に記載の非同期式回路。
【請求項３】
プロセッサに備えられており、
前記第１段目の回路ブロックにおける演算回路は、フェッチ命令を実行することを特徴とする請求項１または２に記載の非同期式回路。
【請求項４】
前記第２のインバータと前記１段目の回路ブロックとの間に、さらに第２のＡＮＤ素子が設けられており、
該第２のＡＮＤ素子は、イネーブル信号と、前記第２のインバータの出力とが入力され、
１段目の回路ブロックのｉｎ信号は、該第２のＡＮＤ素子の出力であることを特徴とする請求項２または３に記載の非同期式回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２相式の非同期式回路に関する。
【背景技術】
【０００２】
処理の高速化と、消費電力の削減は、マイクロコンピュータの開発者が常に直面している２つの課題であり、様々な視点からの技術が提案されている。
【０００３】
例えば、特許文献１には、ＣＰＵ動作と命令フェッチとを同時に実行可能にし、マイクロコンピュータのトータルの命令実行時間を短くできる技術が開示されている。
【０００４】
また、特許文献２には、データリード／ライトサイクルと、命令コードフェッチサイクルとを並列に実行することにより、バスのメモリアクセスの効率を向上させる技術が開示されている。
【０００５】
半導体集積回路のデジタル回路について、消費電力を削減する技術として非同期設計技術が知られている。この技術による非同期式回路では、回路全体を１つのクロック信号（グローバルクロック信号）で制御する同期式回路と異なり、隣接する回路ブロック同士間でやりとりするハンドシェイク信号により処理のタイミングが制御される。このような非同期式回路をマイクロコンピュータに適用することにより、マイクロコンピュータの消費電力を削減することができると考えられる。
【０００６】
図１１は、特許文献３における図２７が示す回路に対して符号を変更したものであり、非同期式回路の一例を示す。この非同期式回路１０は、２つの回路ブロック（回路ブロック２０と回路ブロック３０）により、入力データＡとＢから「（Ａ＋Ｂ）２」であるＤを得るものである。図示のように、非同期式回路１０において、回路ブロック２０は、制御回路２２と演算回路２４を有し、回路ブロック３０は、制御回路３２と演算回路３４を有する。演算回路２４は、「Ａ＋Ｂ」であるＣを得る演算を行い、演算回路３４は、「Ｃ２」すなわちＤを得る演算を行う。演算回路２４と演算回路３４の集合は、非同期式回路１０のデータパスと呼ばれる。なお、各演算回路には演算結果をラッチして保持するフリップフロップ回路が含まれているが、図面においては省略されている。
【０００７】
制御回路２２と制御回路３２は、演算回路２４と演算回路３４を夫々制御する。具体的には、入力信号ｉｎ１が入力されると、制御回路２２は、演算回路２４に演算制御信号ｍｕｘ１を出力する。演算制御信号ｍｕｘ１に応じて、演算回路２４は、演算「Ａ＋Ｂ」を実行する。制御回路２２は、演算回路２４が上記演算に必要な時間に合致する所定の時間経過後、ラッチ信号ｌａｔ１を演算回路２４に出力する。ラッチ信号ｌａｔ１に応じて、演算回路２４は、演算結果を保持する。次に、制御回路２２は、出力信号ｏｕｔ１を次段の回路ブロック３０に出力する。この出力信号ｏｕｔ１は、回路ブロック２０から回路ブロック３０へのハンドシェイク信号であり、回路ブロック３０の入力信号ｉｎ２となる。
【０００８】
回路ブロック３０において、入力信号ｉｎ２（出力信号ｏｕｔ１）が入力されると、制御回路３２は、演算回路３４に演算制御信号ｍｕｘ２を出力する。演算制御信号ｍｕｘ２に応じて、演算回路３４は、演算「Ｃ２」を実行する。制御回路３２は、演算回路３４が上記演算に必要な時間に合致する所定の時間経過後、ラッチ信号ｌａｔ２を演算回路３４に出力する。ラッチ信号ｌａｔ２に応じて、演算回路３４は、演算結果を保持する。そして、制御回路３２は、出力信号ｏｕｔ２を出力する。
【０００９】
一般に、演算回路に対して、今回の演算の終了後、次の演算を開始するために、該演算回路の状態を初期状態にする所謂初期化を行う必要がある。非同期式回路の制御手法として、２相式制御方式が知られている。この方式によれば、各回路ブロックは、演算やデータラッチなどデータパスの実効的な動作を行う「稼働相」と、データパスが動作せず、上記した初期化が行われる「休止相」とが交互に繰り返される。このような２相式の非同期式回路において、例えば、Ｑモジュールなどを用いた２相式制御の回路により、データパスの制御が行われる（非特許文献１）。
【００１０】
本明細書において、以下、非同期式回路全体が行う演算を「プロセス」といい、非同期式回路に含まれる個々の回路ブロックが行う演算や該演算のために必要なレジスタ間のデータ転送などを「基本操作」という。また、簡潔に説明するために、回路ブロックが行う「基本操作」を単に「演算」ともいう。
【００１１】
例えば、図１１に示す非同期式回路１０は、プロセス「Ｄ＝（Ａ＋Ｂ）２」を実行し、回路ブロック２０と回路ブロック３０は、基本操作「Ｃ＝Ａ＋Ｂ」と基本操作「Ｄ＝Ｃ２」を夫々実行する。
【００１２】
通常、２相式の非同期式回路は、現在のプロセスの実行終了後、次のプロセスを実行するために初期化を行う。図１２を参照して説明する。
【００１３】
図１２は、図１１に示す非同期式回路１０が実行するプロセスを２相式制御方式で実現する回路（２相式の非同期式回路）の一例を示す。図１２に示す２相式非同期式回路５０は、基本操作「Ｃ＝Ａ＋Ｂ」を行うための回路ブロック６０と、基本操作「Ｄ＝Ｃ２」を行うための回路ブロック７０と、回路ブロック７０が出力する出力信号ｏｕｔ２を反転して回路ブロック６０に入力するインバータ８０を備える。回路ブロック６０は制御回路６２と演算回路６４を有し、回路ブロック７０は制御回路７２と演算回路７４を有する。
【００１４】
制御回路６２は、図１１に示す非同期式回路１０の制御回路２２と同様に、入力信号ｉｎ１が入力されると、演算回路６４に演算制御信号ｍｕｘ１を出力する。演算制御信号ｍｕｘ１に応じて、演算回路６４は、「Ａ＋Ｂ」の演算を実行する。制御回路６２は、演算回路６４が上記演算に必要な時間に合致する所定の時間の経過後、ラッチ信号ｌａｔ１を演算回路６４に出力する。ラッチ信号ｌａｔ１に応じて、演算回路６４は、演算結果を保持する。次に、制御回路６２は、出力信号ｏｕｔ１を次段の回路ブロック７０に出力する。この出力信号ｏｕｔ１は、回路ブロック６０から回路ブロック７０へのハンドシェイク信号であり、回路ブロック７０への入力信号ｉｎ２になる。
【００１５】
回路ブロック７０において、入力信号ｉｎ２（出力信号ｏｕｔ１）が入力されると、制御回路７２は、演算回路７４に演算制御信号ｍｕｘ２を出力する。演算制御信号ｍｕｘ２に応じて、演算回路７４は、「Ｃ２」の演算を実行する。制御回路７２は、演算回路７４が上記演算に必要な時間に合致する所定の時間の経過後、ラッチ信号ｌａｔ２を演算回路７４に出力する。ラッチ信号ｌａｔ２に応じて、演算回路７４は、演算結果を保持する。次に、制御回路７２は、出力信号ｏｕｔ２を出力する。この出力信号ｏｕｔ２は、回路ブロック７０から回路ブロック６０へのハンドシェイク信号であり、インバータ８０により反転されて、その反転信号は、回路ブロック６０への入力信号ｉｎ１になる。
【００１６】
ここで、２相式非同期式回路５０における各回路ブロックの制御回路を説明する。なお、制御回路６２と制御回路７２は、同様の構成を有するため、制御回路６２を代表にして説明する。
【００１７】
図１３は、２相式非同期式回路５０における制御回路６２の一例を示す。図示のように、制御回路６２は、遅延素子６５、ＡＮＤ素子６６、インバータ６７、Ｑモジュール９０を備える。入力信号ｉｎ１は、ＡＮＤ素子６６に入力されると共に、遅延素子６５を介してＱモジュール９０に入力される。なお、遅延素子６５は、入力信号ｉｎ１の立ち上がりのみを所定量遅延させるものである。
【００１８】
Ｑモジュール９０は、ラッチ信号ｌａｔ１と出力信号ｏｕｔ１を出力する。出力信号ｏｕｔ１は、次段の回路ブロックに出力されると共に、インバータ６７にも出力され、インバータ６７により反転された後にＡＮＤ素子６６に出力される。ＡＮＤ素子６６は、入力信号ｉｎ１と、インバータ６７により反転された出力信号ｏｕｔ１との論理積を出力し、この論理積は、演算回路６４に出力される演算制御信号ｍｕｘ１である。
【００１９】
Ｑモジュール９０は、通常知られているものであり、ＡＮＤ素子９１、インバータ９２、Ｃ素子９３、ＡＮＤ素子９４、インバータ９５を有する。Ｃ素子９３は、ＭｕｌｌｅｒのＣ素子であり、全ての入力値が一致したときにのみ出力がその入力値に遷移する記憶素子である。
【００２０】
図示のように、遅延素子６５の出力は、ＡＮＤ素子９１とＣ素子９３に入力される。ＡＮＤ素子９１は、インバータ９２により反転されたＣ素子９３の出力と、遅延素子６５の出力との論理積を出力する。この論理積は、演算回路６４に出力されるラッチ信号ｌａｔ１であり、演算回路６４に出力されると共に、Ｃ素子９３とインバータ９５にも出力される。
【００２１】
Ｃ素子９３の出力は、インバータ９２と、ＡＮＤ素子９４に出力される。ＡＮＤ素子９４は、Ｃ素子９３の出力と、インバータ９５により反転されたラッチ信号ｌａｔ１との論理積を出力する。この論理積は、次段の回路ブロックへのハンドシェイク信号（出力信号ｏｕｔ１）であり、次段の回路ブロックに出力されると共に、インバータ６７にも出力される。
【００２２】
図１４は、初期状態において各信号が「０」であるとした場合に、２相式非同期式回路５０における各信号の遷移を示すタイミングチャートの例を示す。なお、分かりやすいように、図１４及び以降に用いる各タイミングチャートにおいて、必要がある場合を除き、ゲート間の遅延を示さない。
【００２３】
図示のように、タイミングｔ０において、入力信号ｉｎ１が立ち上がると、演算制御信号ｍｕｘ１も立ち上がる。それに応じて、演算回路６４は、演算を開始する。
【００２４】
タイミングｔ０から遅延素子６５の遅延量分の時間（ｔ１−ｔ０）が経過してタイミングｔ１になると、遅延素子６５の出力も立ち上がり、「１」になる。そのため、ラッチ信号ｌａｔ１も立ち上がる。これに応じて、演算回路６４はラッチ動作をし、演算結果を保持する。
【００２５】
Ｃ素子９３への２つの入力（遅延素子６５の出力と、ラッチ信号ｌａｔ１）が共に「１」となったため、Ｃ素子９３の出力が「０」から「１」に遷移する。
【００２６】
Ｃ素子９３の出力が「１」になると、インバータ９２を介してＡＮＤ素子９１に入力される信号が「０」になるため、タイミングｔ２において、ＡＮＤ素子９１の出力すなわちラッチ信号ｌａｔ１は、立ち下がる。
【００２７】
ラッチ信号ｌａｔ１が立ち下がると、ＡＮＤ素子９４の出力すなわち出力信号ｏｕｔ１（入力信号ｉｎ２）は、立ち上がる。これに応じて、ＡＮＤ素子６６の出力すなわち演算制御信号ｍｕｘ１は立ち下がる。
【００２８】
また、出力信号ｏｕｔ１（入力信号ｉｎ２）の立ち上がりに応じて、演算制御信号ｍｕｘ２が立ち上がり、演算回路７４は、演算を開始する。
【００２９】
その後、制御回路７２内の、制御回路６２における遅延素子６５に対応する遅延素子の遅延量分の時間（ｔ３−ｔ２）が経過してタイミングｔ３になると、ラッチ信号ｌａｔ２は、立ち上がり、その後、タイミングｔ４で立ち下がる。これに応じて、出力信号ｏｕｔ２が立ち上がり、演算制御信号ｍｕｘ２が立ち下がる。
【００３０】
インバータ８０により反転された出力信号ｏｕｔ２が入力信号ｉｎ１になるため、タイミングｔ４における出力信号ｏｕｔ２の立ち上がりに応じて、入力信号ｉｎ１は、立ち下がる。
【００３１】
タイミングｔ４における入力信号ｉｎ１の立ち下がりに応じて、タイミングｔ５において、Ｃ素子９３の出力が「１」から「０」に遷移したため、出力信号ｏｕｔ１（入力信号ｉｎ２）は、立ち下がる。
【００３２】
タイミングｔ５における入力信号ｉｎ２の立ち下がりに応じて、タイミングｔ６において、制御回路７２内のＣ素子の出力が「１」から「０」に遷移したため、出力信号ｏｕｔ２は、立ち下がる。これにて、回路ブロック６０の制御回路６２各入出力信号（入力信号ｉｎ１、演算制御信号ｍｕｘ１、ラッチ信号ｌａｔ１、出力信号ｏｕｔ１）と、回路ブロック７０の制御回路７２の各入出力信号（入力信号ｉｎ２、演算制御信号ｍｕｘ２、ラッチ信号ｌａｔ２、出力信号ｏｕｔ２）は、全て「０」になり、回路ブロック６０と回路ブロック７０は、初期状態に戻る。
【００３３】
また、タイミングｔ６において、出力信号ｏｕｔ２の立ち下がりに応じて、入力信号ｉｎ１は、立ち上がる。その後、タイミングｔ６からタイミングｔ９まで、各信号は、タイミングｔ０からタイミングｔ６までの遷移をする。同様に、タイミングｔ９からタイミングｔ１１までも、同様な遷移がなされる。
【００３４】
図１４において、タイミングｔ０からタイミングｔ２までは、回路ブロック６０の演算回路６４が演算を行う期間であり、回路ブロック６０の稼働相になる。また、タイミングｔ２からタイミングｔ６までは、演算回路６４が演算を行っていない期間であり、回路ブロック６０の休止相になる。同様に、タイミングｔ２からタイミングｔ４までは、回路ブロック７０の稼働相であり、タイミングｔ４からタイミングｔ７までは、回路ブロック７０の休止相である。
【００３５】
休止相は、回路ブロックの初期化を行うためのものである。回路ブロックに含まれる演算回路が動作しないこの休止相の存在により、２相式の非同期式回路の処理が速くできないという問題がある。
【００３６】
特許文献３には、２相式の非同期式回路の休止相を無くすことで処理速度を向上させる技術が開示されている。この技術は、図１２に示す２相式非同期式回路５０における制御回路（制御回路６２、制御回路７２）の代わりに、例えば図１５に示す制御回路１００を用いる。
【００３７】
図１５は、特許文献３における図９に対して符号を変更したものであり、図中入力信号ｉｎ、出力信号ｏｕｔ、演算制御信号ｍｕｘ、ラッチ信号ｌａｔは、図１３に示す入力信号ｉｎ１、出力信号ｏｕｔ１、演算制御信号ｍｕｘ１、ラッチ信号ｌａｔ１に夫々対応する。
【００３８】
該制御回路１００は、ｒｅｑ信号生成回路１１０、遅延回路Ｄ１、遅延回路Ｄ３、演算実行制御信号生成回路１２０を備える。
【００３９】
ｒｅｑ信号生成回路１１０は、Ｃ素子１１２、論理積回路１１４、インバータ１１６、インバータ１１８、遅延回路Ｄ２を備える。演算実行制御信号生成回路１２０は、論理和回路１２２を備える。
【００４０】
入力信号ｉｎは、Ｃ素子１１２の一方の入力端Ｃ１に入力されると共に、インバータ１１６を介して論理積回路１１４の一方の入力端に入力される。論理積回路１１４の他方の入力端には、Ｃ素子１１２の出力端Ｃ０に接続される。論理積回路１１４の出力はｒｅｑ信号であり、このｒｅｑ信号は、遅延回路Ｄ２の入力端に入力され、遅延回路Ｄ２の出力端は、インバータ１１８を介してＣ素子１１２の他方の入力端に接続される。遅延回路Ｄ２が出力した信号、すなわちインバータ１１８の入力側の信号はＣ２である。また、図示していないが、インバータ１１８の出力側の信号は、以降「Ｃ２＿ｂａｒ」で表記する。
【００４１】
ｒｅｑ信号は、さらに、論理和回路１２２の一方の入力端に入力されると共に、遅延回路Ｄ１に入力される。遅延回路Ｄ１の出力となるａｃｋ信号は、ラッチ信号ｌａｔとして制御回路１００に接続された演算回路に出力されると共に、論理和回路１２２の他方の入力端と、遅延回路Ｄ３に入力される。遅延回路Ｄ３の出力は、次段の回路ブロックへ出力される出力信号ｏｕｔである。論理和回路１２２の出力は、演算回路に出力する演算制御信号ｍｕｘである。
【００４２】
なお、制御回路１００における遅延回路Ｄ１は、入力（ここではｒｅｑ信号）の立ち下がりのみを遅延させるものである。
【００４３】
図１６は、特許文献３における図１３であり、図１５に示す制御回路１００の各信号の遷移を示すタイミングチャートである。図中矢印は、因果関係を示す。
【００４４】
図１６に示すように、初期状態のタイミングｔ０において、インバータ１１８の出力側の信号Ｃ２＿ｂａｒを除き、各信号が「０」である。
タイミングｔ１において、入力信号ｉｎが立ち上がると、Ｃ素子１１２の２つの入力が同値の「１」になるので、出力端の信号Ｃ０が立ち上がる。
【００４５】
タイミングｔ２において、入力信号ｉｎが立ち下がると、Ｃ素子１１２の一方の入力端Ｃ１の信号が立ち下がるが、他方の入力端の信号Ｃ２＿ｂａｒが「１」のままであるので、Ｃ素子１１２は、しばらくの間「１」を保持する。従って、論理積回路１１４の出力ｒｅｑ信号は、立ち上がる。
【００４６】
タイミングｔ２におけるｒｅｑ信号の立ち上がり以降、ａｃｋ信号、演算制御信号ｍｕｘ、ラッチ信号ｌａｔ信号、出力信号ｏｕｔは、立ち上がる。
【００４７】
ｒｅｑ信号が立ち上がるタイミングｔ２から遅延回路Ｄ２の遅延量分の時間が経過したタイミングで、ｒｅｑ信号の遅延信号である信号Ｃ２が立ち上がる。これに応じて、インバータ１１８の出力側の信号Ｃ２＿ｂａｒは、立ち下がる。
【００４８】
これで、Ｃ素子１１２の２つの入力が「０」になるので、タイミングｔ３において、信号Ｃ０が立ち下がり、ｒｅｑ信号も立ち下がる。
【００４９】
ｒｅｑ信号の立ち下がりを受けて、信号Ｃ２が立ち下がり、信号Ｃ２＿ｂａｒが立ち上がる。
【００５０】
以上の動作の後、タイミングｔ６で、制御回路１００の入力信号ｉｎ、出力信号ｏｕｔ、演算制御信号ｍｕｘ、ラッチ信号ｌａｔは、全て「０」になる。これにて、制御回路１００を備えた回路ブロックは、次の基本操作を開始することができる。
【先行技術文献】
【特許文献】
【００５１】
【特許文献１】特開昭６３−０４７８３３号公報
【特許文献２】特開昭６３−０００７４９号公報
【特許文献３】特開２００８−１８１１７０号公報
【非特許文献】
【００５２】
【非特許文献１】電子情報通信学会論文誌Ｄ−1，Ｊ７８巻，第４号，ｐｐ．４１６−４２３，１９９５年４月
【発明の概要】
【発明が解決しようとする課題】
【００５３】
ところで、特許文献３に開示された技術では、休止相を無くすことができるものの、回路規模が大きくなってしまうという問題がある。例えば、図１６に示すように、制御回路１００は、３つの遅延回路（Ｄ１、Ｄ２、Ｄ３）が必要である。非同期式回路に含まれる回路ブロックの段数が多いほど、制御回路乃至遅延回路の数も多くなり、回路規模は増大する。
【００５４】
本発明は、上記事情に鑑みてなされたものであり、２相式の非同期式回路の処理速度を向上させると共に、回路規模の増大を抑制する技術を提供する。
【課題を解決するための手段】
【００５５】
本発明の一つの態様は、非同期式回路である。この非同期式回路は、段階的に接続された複数の回路ブロックを備え、夫々の回路ブロックが、演算回路と、該演算回路に対して２相式制御を行う制御回路を有する。
【００５６】
この非同期式回路は、さらにモード制御回路を備える。該モード制御回路は、１段目の回路ブロックに対して、該回路ブロックが休止相を開始したときに初期化を開始し、最下段の回路ブロックが休止相を開始したときに稼働相を開始し、２段目の回路ブロックに対して、１段目の回路ブロックが初期化を開始したときに稼働相を開始し、１段目の回路ブロックが稼働相を開始したときに初期化を開始するように制御を行う。
【００５７】
なお、上記態様の回路を方法や装置に置き換えて表現したもの、上記態様の回路を備えたプロセッサなども、発明の態様としては有効である。
【発明の効果】
【００５８】
本発明にかかる技術によれば、２相式の非同期式回路の処理速度を向上させると共に、回路規模の増大を抑制できる。
【図面の簡単な説明】
【００５９】
【図１】本発明の第１の実施の形態にかかる非同期式回路を示す図である。
【図２】図１に示す非同期式回路におけるモード制御回路の回路構成例を示す図である（その１）。
【図３】図１に示す非同期式回路におけるモード制御回路の回路構成例を示す図である（その２）。
【図４】図３に示すモード制御回路を適用した図１に示す非同期式回路を示す図である。
【図５】図４に示す非同期式回路における各信号の遷移を示すタイミングチャートである。
【図６】本発明の第２の実施の形態にかかるマイクロコンピュータを示す図である。
【図７】図６に示すマイクロコンピュータに備えられた非同期式回路における各信号の遷移を示すタイミングチャートである。
【図８】従来の２相式の非同期式回路を備えたマイクロコンピュータを示す図である。
【図９】図８に示すマイクロコンピュータに備えられた非同期式回路における各信号の遷移を示すタイミングチャートである。
【図１０】図６と図８に示すマイクロコンピュータの処理速度の差異を説明するための図である。
【図１１】従来の非同期式回路を示す図である。
【図１２】従来の２相式の非同期式回路を示す図である。
【図１３】図１２に示す２相式の非同期式回路の各回路ブロックの制御回路の例を示す図である。
【図１４】図１２に示す２相式の非同期式回路における各信号の遷移を示すタイミングチャートである。
【図１５】特許文献３に開示された制御回路を示す図である。
【図１６】図１５に示す制御回路における各信号の遷移を示すタイミングチャートである。
【発明を実施するための形態】
【００６０】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００６１】
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態にかかる非同期式回路２００を示す。この非同期式回路２００は、１段目の回路ブロックとなる回路ブロック２１０と、２段目の回路ブロックとなる回路ブロック２２０を備える。回路ブロック２１０は、制御回路２１２と演算回路２１４を有し、回路ブロック２２０は、制御回路２２２と演算回路２２４を有する。該非同期式回路２００は、２相式の非同期式回路であり、制御回路２１２と制御回路２２２は、夫々演算回路２１４と演算回路２２４に対して２相式制御を行う。
【００６２】
制御回路２１２と制御回路２２２は、２相式制御を行う通常の制御回路と同様の動作をするものであり、例えば、図１３に示す制御回路６２と同様に、制御回路２１２は、回路ブロック２１０に入力される信号ｉｎ（入力信号ｉｎ１）の立ち上がりに応じて演算制御信号ｍｕｘ１を立ち上げて演算回路２１４に演算を開始させることにより稼働相を開始させ、所定時間経過後にラッチ信号ｌａｔ１を出力することにより演算回路２１４の図示しないフリップフロップに演算結果をラッチさせると共に演算制御信号ｍｕｘ１を立ち下げることにより演算回路２１４に演算を停止させることにより休止相を開始させる。また、休止相の開始と共に、出力する信号ｏｕｔ（出力信号ｏｕｔ１）を立ち上げる。また、入力信号ｉｎ１の立ち下がりにより初期化を開始し、初期化完了時に出力信号ｏｕｔ１を立ち下げる。
【００６３】
同様に、制御回路２２２も、回路ブロック２２０に入力される信号ｉｎ（入力信号ｉｎ２）の立ち上がりに応じて演算制御信号ｍｕｘ２を立ち上げて演算回路２２４に演算を開始させることにより稼働相を開始させ、所定時間経過後にラッチ信号ｌａｔ２を出力することにより演算回路２２４の図示しないフリップフロップに演算結果をラッチさせると共に演算制御信号ｍｕｘ２を立ち下げることにより演算回路２２４に演算を停止させることにより休止相を開始させる。また、休止相の開始と共に、出力する信号ｏｕｔ（出力信号ｏｕｔ２）を立ち上げる。また、入力信号ｉｎ２の立ち下がりにより初期化を開始し、初期化完了時に出力信号ｏｕｔ２を立ち下げる。
【００６４】
非同期式回路２００は、さらに、モード制御回路２３０を備える。該モード制御回路２３０は、１段目の回路ブロック（回路ブロック２１０）に対して、回路ブロック２１０が休止相を開始したときに初期化を開始し、最下段の回路ブロック（ここでは回路ブロック２２０）が休止相を開始したときに稼働相を開始するように制御を行うと共に、２段目の回路ブロック（ここでは回路ブロック２２０）に対して、１段目の回路ブロックすなわち回路ブロック２１０が初期化を開始したときに稼働相を開始し、回路ブロック２１０が稼働相を開始したときに初期化を開始するように制御を行う。
【００６５】
図２は、このような制御を実現するモード制御回路２３０の回路構成の一例を示す。図２に示すように、該モード制御回路２３０は、２段目の回路ブロック（回路ブロック２２０）の入力信号ｉｎ２と、１段目の回路ブロック（回路ブロック２１０）が出力する出力信号ｏｕｔ１とが入力されるＯＲ素子２３２、最下段の回路ブロック（回路ブロック２２０）が出力する出力信号ｏｕｔ２を反転する第１のインバータ２３３、ＯＲ素子２３２と第１のインバータ２３３の出力が入力される第１のＡＮＤ素子２３４、第１のＡＮＤ素子２３４の出力を反転して回路ブロック２２０の入力信号ｉｎ１として出力する第２のインバータ２３５、第２のインバータ２３５の出力を反転して入力信号ｉｎ２として出力する第３のインバータ２３１を備える。
【００６６】
なお、非同期式回路２００全体の動作の開始と停止を制御するイネーブル信号がある場合に、図３に示すようにモード制御回路２３０を構成することができる。
【００６７】
図３に示すモード制御回路２３０は、図２に示す回路構成に対して、イネーブル信号ＥＮと、第２のインバータ２３５の出力とが入力される第２のＡＮＤ素子２３６をさらに設けたものである。この場合、入力信号ｉｎ１は、第２のＡＮＤ素子２３６の出力となり、回路ブロック２１０に入力される。
【００６８】
分かりやすいように、例として図３に示すモード制御回路２３０回路を適用した非同期式回路２００を図４に示す。
【００６９】
図５は、図４に示す非同期式回路２００における各信号の遷移を示すタイミングチャートである。図１２に示す２相式非同期式回路５０における各信号の遷移と比較するために、図４に示す非同期式回路２００における演算回路２１４と演算回路２２４が、２相式非同期式回路５０における演算回路６４と演算回路７４と夫々同様の演算を行い、非同期式回路２００における制御回路２１２と制御回路２２２の遅延素子が、２相式非同期式回路５０における制御回路６２と制御回路７２の遅延素子と夫々同様の遅延量を有するとする。
【００７０】
非同期式回路２００の動作開始前、図５に示す各信号が「０」である。
タイミングＴ０において、イネーブル信号ＥＮが立ち上がることにより、入力信号ｉｎ１も立ち上がる。入力信号ｉｎ１の立ち上がりに応じて、演算制御信号ｍｕｘ１も立ち上がり、演算回路２１４は、演算を開始し、稼働相に入る。なお、入力信号ｉｎ２すなわち第３のインバータ２３１の出力は、「０」のままである。
【００７１】
タイミングＴ０から、制御回路２１２内の、入力信号の立ち上がりのみを遅延させる遅延素子の遅延量分の時間（Ｔ１−Ｔ０）が経過してタイミングＴ１になると、ラッチ信号ｌａｔ１が立ち上がる。これに応じて、演算回路２１４はラッチ動作をし、演算結果を保持する。
【００７２】
そして、タイミングＴ２において、ラッチ信号ｌａｔ１が立ち下がり、演算制御信号ｍｕｘ１が立ち下がり、出力信号ｏｕｔ１は立ち上がる。これにて、回路ブロック２１０は、休止相に入る。
【００７３】
出力信号ｏｕｔ１が立ち上がると、ＯＲ素子２３２の出力が「１」になる。出力信号ｏｕｔ２が「０」のままであるため、第１のインバータ２３３の出力も「１」のままである。従って、第１のＡＮＤ素子２３４の出力が「１」になり、第２のインバータ２３５の出力が「０」になる。そのため、入力信号ｉｎ１は、立ち下がる。これにより、回路ブロック２１０における制御回路２１２は、初期化を開始する。タイミングＴ２における入力信号ｉｎ１の立ち下がりに応じて、タイミングＴ３において、出力信号ｏｕｔ１が立ち下がる。これにて、制御回路２１２の初期化が完了する。
【００７４】
また、タイミングＴ２において、第２のインバータ２３５の出力の立ち下がりに応じて、入力信号ｉｎ２は立ち上がる。入力信号ｉｎ２の立ち上がりに応じて、演算制御信号ｍｕｘ２も立ち上がり、演算回路２２４は、演算を開始し、稼働相に入る。
【００７５】
その後、制御回路２２２内の遅延素子の遅延量分の時間（Ｔ４−Ｔ２）が経過してタイミングＴ４になると、ラッチ信号ｌａｔ２が立ち上がる。これに応じて、演算回路２２４は、ラッチ動作をし、演算結果を保持する。
【００７６】
そして、タイミングＴ５において、ラッチ信号ｌａｔ２が立ち下がり、演算制御信号ｍｕｘ２が立ち下がり、出力信号ｏｕｔ２は立ち上がる。これにて、回路ブロック２２０は、休止相に入る。また、非同期式回路２００による１回目のプロセスが完了する。
【００７７】
出力信号ｏｕｔ２が立ち上がると、第１のインバータ２３３の出力が「０」になる。そのため、第１のＡＮＤ素子２３４の出力は「０」になり、第２のインバータ２３５の出力は「１」になる。従って、入力信号ｉｎ２は立ち下がり、入力信号ｉｎ１は立ち上がる。これにて、回路ブロック２１０は稼働相に入り、非同期式回路２００による２回目のプロセスは開始し、回路ブロック２２０は、初期化を開始する。
【００７８】
そして、タイミングＴ６において、制御回路２２２の初期化も完了し、出力信号ｏｕｔ２は、立ち下がる。
【００７９】
このように、非同期式回路２００において、回路ブロック２１０は、自身の休止相の開始と共に初期化を開始するため、回路ブロック２２０が休止相を開始したときに直ちに次のプロセスのための稼働相を開始することができる。
【００８０】
前述したように、従来の２相式の非同期式回路では、１段目の回路ブロックは、最下段の回路ブロックの休止相の開始と共に初期化を開始するため、次のプロセスのための稼働相を開始するのは、最下段の回路ブロックの休止相の開始から所定の時間が経過した後である。従って、本発明の実施の形態にかかるモード制御回路２３０は、従来の２相式の非同期式回路より高い処理速度を得ることができる。
【００８１】
これは、図５と図１４を比較すれば一目瞭然である。
図１４において、タイミングｔ０からタイミングｔ２までは、図１３に示す２相式非同期式回路５０における回路ブロック６０の稼働相であり、タイミングｔ２からタイミングｔ６までは、回路ブロック６０の休止相である。また、タイミングｔ２からタイミングｔ４までは、回路ブロック７０の稼働相であり、タイミングｔ４からタイミングｔ７までは、回路ブロック７０の休止相である。
【００８２】
図５においては、タイミングＴ０からタイミングＴ２までは、図４に示す非同期式回路２００における回路ブロック２１０の稼働相であり、タイミングＴ２からタイミングＴ５までは、回路ブロック２１０の休止相である。また、タイミングＴ２からタイミングＴ５までは、回路ブロック２２０の稼働相であり、タイミングＴ５からタイミングＴ７までは、回路ブロック２２０の休止相である。
【００８３】
ここで、回路ブロック２１０の稼働相の長さ（Ｔ２−Ｔ０）は、回路ブロック６０の稼働相の長さ（ｔ２−ｔ０）と同一である。しかし、回路ブロック２１０の休止相の長さ（Ｔ５−Ｔ２）は、回路ブロック６０の休止相の長さ（ｔ６−ｔ２）より大きく短縮されている。
【００８４】
また、回路ブロック２２０の稼働相の長さ（Ｔ５−Ｔ２）は、回路ブロック７０の稼働相の長さ（ｔ４−ｔ２）と同一であるが、回路ブロック２２０の休止相の長さ（Ｔ７−Ｔ５）は、回路ブロック７０の休止相の長さ（ｔ７−ｔ４）より大きく短縮されている。
【００８５】
その結果、現在のプロセスの開始から次のプロセスの開始までの所要時間の長さは、非同期式回路２００において「Ｔ５−Ｔ０」であり、２相式非同期式回路５０において「Ｔ５−Ｔ０」より長い「ｔ６−ｔ０」である。すなわち、回路ブロック２１０は、２相式非同期式回路５０より速い処理速度を有する。
【００８６】
さらに、本実施の形態の非同期式回路２００は、処理速度を速くするために、通常の２相式の非同期式回路よりモード制御回路２３０のみが増えている。例えば図２に示すモード制御回路２３０は、３つのインバータと、１つのＯＲ素子と、１つのＡＮＤ素子で構成されており、特許文献３に記載された手法を実現するために必要な回路規模の増加量が小さい。
【００８７】
＜第２の実施の形態＞
前述した第１の実施の形態にかかる非同期式回路２００は、本発明の技術を２段の回路ブロックを備える２相式の非同期式回路に適用したものである。本発明の技術は、２段以上の任意の数の回路ブロックを備える２相式の非同期式回路にも適用することができると共に、適用することにより、上述した効果を得ることができる。ここで、第２の実施の形態として、３段以上の回路ブロックを備える２相式の非同期式回路に本発明を適用した例を説明する。
【００８８】
図６は、本発明の第２の実施の形態にかかるマイクロコンピュータ３００を示す図である。マイクロコンピュータ３００は、命令を実行する非同期式回路３１０と、命令などを格納するＲＯＭ３２０を備え、非同期式回路３１０は、ＲＯＭ３２０から命令をフェッチして実行する。
【００８９】
非同期式回路３１０は、階段的に接続されたｎ段（ｎ：３以上の整数）の回路ブロック１〜ｎと、モード制御回路３３０を有する。
【００９０】
各回路ブロック１〜ｎは、夫々制御回路と演算回路を有する。例えば、回路ブロック１は、制御回路１Ａと演算回路１Ｂを有し、回路ブロック２は、制御回路２Ａと演算回路２Ｂを有する。また、回路ブロック３は、制御回路３Ａと演算回路３Ｂを有し、回路ブロックｎは、制御回路ｎＡと演算回路ｎＢを有する。
【００９１】
回路ブロック１〜ｎは、図４に示す非同期式回路２００の回路ブロック２１０と回路ブロック２２０と同様の動作をする。すなわち、該回路ブロックに入力される信号ｉｎの立ち上がりに応じて演算制御信号ｍｕｘを立ち上げて演算回路に演算を開始させることにより稼働相を開始させ、所定時間経過後にラッチ信号ｌａｔを出力することにより演算回路の図示しないフリップフロップに演算結果をラッチさせると共に演算制御信号ｍｕｘを立ち下げることにより演算回路に演算を停止させることにより休止相を開始させる。また、休止相の開始と共に、出力する信号ｏｕｔを立ち上げる。また、入力信号ｉｎの立ち下がりにより初期化を開始し、初期化完了時に出力信号ｏｕｔを立ち下げる。
【００９２】
回路ブロック１〜ｎは、命令のフェッチ、命令のデコード、命令の実行、命令の実行に伴う図示しないメモリへのアクセス、命令の実行の完了に伴うメモリへのライトバックを行うものであり、これらの回路ブロックは、上述した各処理を夫々行う。
【００９３】
例えば、１段目の回路ブロック（回路ブロック１）における演算回路１Ｂは、ＲＯＭ３２０から命令をフェッチするものであり、２段目の回路ブロック（回路ブロック２）における演算回路２Ｂは、演算回路１Ｂがフェッチした命令をデコードするものである。また、最下段の回路ブロック（回路ブロックｎ）は、メモリへのライトバックを行う。
【００９４】
モード制御回路３３０は、２段目の回路ブロック（回路ブロック２）が出力する出力信号ｏｕｔ２の代わりに、最下段の回路ブロック（回路ブロックｎ）が出力する出力信号ｏｕｔｎが入力される点を除き、図４に示す非同期式回路２００のモード制御回路２３０と同様である。
【００９５】
モード制御回路３３０は、入力信号ｉｎ１を回路ブロック１の制御回路１Ａに出力する。また、モード制御回路３３０は、第３のインバータ２３１により、第２のインバータ２３５の出力を反転してＯＲ素子２３２の一方の入力端に出力すると共に、入力信号ｉｎ２として制御回路２Ａに出力する。
【００９６】
制御回路１Ａは、出力信号ｏｕｔ１をＯＲ素子２３２の他方の入力端に出力する。
【００９７】
２段目から（ｎ−１）段目までの各回路ブロックの制御回路は、出力信号ｏｕｔを次段の入力信号ｉｎとして次段の回路ブロックの制御回路に出力する。例えば、図示のように、制御回路２Ａは、出力信号ｏｕｔ２を入力信号ｉｎ３として制御回路３Ａに出力する。制御回路３Ａは、出力信号ｏｕｔ３を入力信号ｉｎ４として図示しない４段目の回路ブロックの制御回路に出力する。また、図示しない（ｎ−１）段目の回路ブロック（ｎ−１）は、出力信号ｏｕｔ（ｎ−１）を回路ブロックｎの入力信号ｉｎｎとして制御回路ｎＡに出力する。
【００９８】
前述したように、回路ブロックｎの制御回路ｎＡは、出力信号ｏｕｔｎをモード制御回路３３０の第１のインバータ２３３に出力する。
【００９９】
図７は、図６に示すマイクロコンピュータ３００における各信号の遷移を示すタイミングチャートである。
【０１００】
非同期式回路３１０の動作開始前、図７に示す各信号が「０」である。
タイミングＴ１０において、イネーブル信号ＥＮが立ち上がることにより、入力信号ｉｎ１も立ち上がる。入力信号ｉｎ１の立ち上がりに応じて、演算制御信号ｍｕｘ１も立ち上がり、演算回路１Ｂは、演算（ここではフェッチ）を開始し、稼働相に入る。なお、入力信号ｉｎ２すなわち第３のインバータ２３１の出力は、「０」のままである。
【０１０１】
タイミングＴ１０から、制御回路１Ａ内の遅延素子の遅延量分の時間が経過してタイミングＴ１１になると、ラッチ信号ｌａｔ１が立ち上がる。これに応じて、演算回路１Ｂはラッチ動作をし、演算結果（ラッチした命令）を保持する。
【０１０２】
そして、タイミングＴ１２において、ラッチ信号ｌａｔ１が立ち下がり、演算制御信号ｍｕｘ１が立ち下がり、出力信号ｏｕｔ１は立ち上がる。これにて、回路ブロック１は、休止相に入る。
【０１０３】
出力信号ｏｕｔ１が立ち上がると、ＯＲ素子２３２の出力が「１」になる。出力信号ｏｕｔ２が「０」のままであるため、第１のインバータ２３３の出力も「１」のままである。従って、第１のＡＮＤ素子２３４の出力が「１」になり、第２のインバータ２３５の出力が「０」になる。そのため、入力信号ｉｎ１は、立ち下がる。これにより、回路ブロック１における制御回路１Ａは、初期化を開始する。また、タイミングＴ１２における入力信号ｉｎ１の立ち下がりに応じて、タイミングＴ１３において出力信号ｏｕｔ１が立ち下がる。これにて、制御回路１Ａの初期化が完了する。
【０１０４】
また、タイミングＴ１２において、第２のインバータ２３５の出力の立ち下がりに応じて、入力信号ｉｎ２は立ち上がる。入力信号ｉｎ２の立ち上がりに応じて、演算制御信号ｍｕｘ２も立ち上がり、演算回路２Ｂは、演算を開始し、稼働相に入る。
【０１０５】
その後、制御回路２Ａ内の遅延素子の遅延量分の時間が経過してタイミングＴ１４になると、ラッチ信号ｌａｔ２が立ち上がる。これに応じて、演算回路２Ｂは、ラッチ動作をし、演算結果を保持する。
【０１０６】
そして、タイミングＴ１５において、ラッチ信号ｌａｔ２が立ち下がり、演算制御信号ｍｕｘ２が立ち下がり、出力信号ｏｕｔ２は立ち上がる。これにて、回路ブロック２は、休止相に入る。
【０１０７】
出力信号ｏｕｔ２が立ち上がると、入力信号ｉｎ３が立ち上がる。入力信号ｉｎ３の立ち上がりに応じて、演算制御信号ｍｕｘ３も立ち上がり、演算回路３Ｂは、演算を開始し、稼働相に入る。
【０１０８】
その後、制御回路３Ａ内の遅延素子の遅延量分の時間が経過すると、ラッチ信号ｌａｔ３が立ち上がり、演算回路３Ｂは、ラッチ動作をし、演算結果を保持する。そして、タイミングＴ１６において、ラッチ信号ｌａｔ３が立ち下がり、演算制御信号ｍｕｘ３が立ち下がり、出力信号ｏｕｔ３は立ち上がる。これにて、回路ブロック３は、休止相に入る。
【０１０９】
以降の各段の回路ブロックは、前段からの出力信号ｏｕｔの立ち上がりに応じて稼働相を開始し、所定時間経過後、演算結果を保持すると共に、ラッチ信号ｌａｔと演算制御信号ｍｕｘを立ち下げ、出力信号ｏｕｔを立ち上げて、休止相に入る。
【０１１０】
やがて、タイミングＴ１７において、最下段の回路ブロックｎからの出力信号ｏｕｔｎが立ち上がり、回路ブロックｎが休止相に入る。
【０１１１】
出力信号ｏｕｔｎが立ち上がると、モード制御回路３３０における第１のインバータ２３３の出力が「０」になる。そのため、第１のＡＮＤ素子２３４の出力は「０」になり、第２のインバータ２３５の出力は「１」になる。従って、入力信号ｉｎ１は立ち上がり、入力信号ｉｎ２は立ち下がる。これにて、回路ブロック１は稼働相に入り、非同期式回路２００による２回目のプロセスは開始し、回路ブロック２は、初期化を開始する。
【０１１２】
以降、タイミングＴ１７〜Ｔ１９までの期間内で、タイミングＴ１０〜Ｔ１７までの同様の信号遷移がなされる。このような遷移は、タイミングＴ１９以降も繰り返される。
【０１１３】
図７から分かるように、マイクロコンピュータ３００において、非同期式回路３１０の１段目の回路ブロック１は、自身の休止相の開始と共に初期化を開始するため、最下段の回路ブロックｎが休止相を開始したときに直ちに次のプロセスのための稼働相を開始することができる。
【０１１４】
マイクロコンピュータ３００の処理速度と、図８に示すマイクロコンピュータ４００の処理速度とを比較してみる。
【０１１５】
図８に示すマイクロコンピュータ４００は、命令を実行する非同期式回路４１０と、命令などを格納するＲＯＭ３２０を備え、非同期式回路４１０は、ＲＯＭ３２０から命令をフェッチして実行する。
【０１１６】
非同期式回路４１０は、従来知られている２相式の非同期式回路であり、ｎ段の回路ブロック（回路ブロック１〜ｎ）が段階的に接続されている。これらの回路ブロックは、図６に示すマイクロコンピュータ３００における非同期式回路３１０の各回路ブロックと夫々同様である。但し、回路ブロック１からの出力信号ｏｕｔ１は、回路ブロック２の入力信号ｉｎ２として回路ブロック２に出力され、最下段の回路ブロックｎからの出力信号ｏｕｔｎは、インバータ４２２に出力されるようになっている。また、インバータ４２２の出力と、イネーブル信号ＥＮは、ＡＮＤ素子４２４に入力され、ＡＮＤ素子４２４の出力は、回路ブロック１の入力信号ｉｎ１になっている。
【０１１７】
図９は、図８に示すマイクロコンピュータ４００における各信号の遷移を示すタイミングチャートである。
【０１１８】
非同期式回路４１０の動作開始前、図８に示す各信号が「０」である。
タイミングｔ２０において、イネーブル信号ＥＮが立ち上がることにより、入力信号ｉｎ１も立ち上がる。入力信号ｉｎ１の立ち上がりに応じて、演算制御信号ｍｕｘ１も立ち上がり、演算回路１Ｂは、演算（ここではフェッチ）を開始し、稼働相に入る。
【０１１９】
タイミングｔ２０から、制御回路１Ａ内の遅延素子の遅延量分の時間が経過すると、ラッチ信号ｌａｔ１が立ち上がる。これに応じて、演算回路１Ｂはラッチ動作をし、演算結果（ラッチした命令）を保持する。
【０１２０】
そして、タイミングｔ２１において、ラッチ信号ｌａｔ１が立ち下がり、演算制御信号ｍｕｘ１が立ち下がり、出力信号ｏｕｔ１は立ち上がる。これにて、回路ブロック１は、休止相に入る。
【０１２１】
出力信号ｏｕｔ１が立ち上がると、入力信号ｉｎ２も立ち上がる。これに応じて演算制御信号ｍｕｘ２も立ち上がり、演算回路２Ｂは、演算を開始し、稼働相に入る。
【０１２２】
タイミングｔ２１から、制御回路２Ａ内の遅延素子の遅延量分の時間が経過すると、ラッチ信号ｌａｔ２が立ち上がる。これに応じて、演算回路２Ｂはラッチ動作をし、演算結果を保持する。
【０１２３】
そして、タイミングｔ２２において、ラッチ信号ｌａｔ２が立ち下がり、演算制御信号ｍｕｘ２が立ち下がり、出力信号ｏｕｔ２は立ち上がる。これにて、回路ブロック２は、休止相に入る。
【０１２４】
以降の各段の回路ブロックは、前段からの出力信号ｏｕｔの立ち上がりに応じて稼働相を開始し、所定時間経過後、演算結果を保持すると共に、ラッチ信号ｌａｔと演算制御信号ｍｕｘを立ち下げ、出力信号ｏｕｔを立ち上げて、休止相に入る。
【０１２５】
やがて、タイミングｔ２３において、最下段の回路ブロックｎからの出力信号ｏｕｔｎが立ち上がり、回路ブロックｎが休止相に入る。
【０１２６】
出力信号ｏｕｔｎが立ち上がると、インバータ４２２の出力が「０」になる。そのため、ＡＮＤ素子４２４の出力すなわち入力信号ｉｎ１は、立ち下がる。これにて、回路ブロック１は、初期化を開始する。
【０１２７】
入力信号ｉｎ１の立ち下がりに応じて、タイミングｔ２４において、出力信号ｏｕｔ１が立ち下がり、制御回路１Ａの初期化が完了する。これに応じて入力信号ｉｎ２が立ち下がり、制御回路２Ａの初期化が開始する。
【０１２８】
以降の各回路ブロックは、前段の回路ブロックの初期化の完了時に初期化を開始し、やがてタイミング２６において、出力信号ｏｕｔｎが立ち下がり、下段の回路ブロックｎの初期化が完了する。
【０１２９】
出力信号ｏｕｔｎが立ち下がると、インバータ４２２の出力が「１」になる。そのため、ＡＮＤ素子４２４の出力すなわち入力信号ｉｎ１は、立ち上がる。これにて、回路ブロック１は、次の稼働相を開始する。
【０１３０】
図７と図９を比較すると分かるように、現在のプロセスから次のプロセスの開始までの所要時間の長さは、図６に示すマイクロコンピュータ３００においては「Ｔ１７−Ｔ１０」であり、図８に示すマイクロコンピュータ４００においては「ｔ２６−ｔ２０」であり、マイクロコンピュータ３００の処理速度は、マイクロコンピュータ４００の処理速度より速いことが明らかである。
【０１３１】
前述したように、プロセッサなどのマイクロコンピュータが１つの命令を実行するステージは、通常、命令のフェッチ、命令のデコード、命令の実行、命令の実行に伴うメモリへのアクセス、命令の実行の完了に伴うメモリへのライトバックに分けられる。ここで、図６に示すマイクロコンピュータ３００と図８に示すマイクロコンピュータ４００内の非同期式回路の各回路ブロックが上述した各ステージの処理を夫々行うものであるとして、マイクロコンピュータ３００とマイクロコンピュータ４００の処理速度を比較する。なお、この場合、回路ブロックの段数ｎが５である。
【０１３２】
図１０において、ＦＥ、ＤＥ、ＥＸ、ＭＡ、ＷＢは、「命令のフェッチ」、「命令のデコード」、「命令の実行」、「メモリへのアクセス」、「メモリへのライトバック」を夫々意味する。また、実線は当該ステージの処理を行う回路ブロックが稼働相にあることを示し、点線は、当該ステージの処理を行う回路ブロックが初期化を行っていることを示す。
【０１３３】
まず、タイミングＴ４０において、マイクロコンピュータ４００の非同期式回路４１０の回路ブロック１は、稼働相を開始し、命令をフェッチする。同様に、マイクロコンピュータ３００の非同期式回路３１０の回路ブロック１も、タイミングＴ４０において、稼働相を開始し、命令をフェッチする。
【０１３４】
タイミングＴ４１において、非同期式回路４１０の回路ブロック１が命令のフェッチ処理を完了し、休止相に入る。同様に、非同期式回路３１０の回路ブロック１も命令のフェッチ処理を完了し、休止相に入る。
【０１３５】
非同期式回路４１０の場合、タイミングＴ４１において回路ブロック１が休止相に入ると、回路ブロック２〜５が順次稼働相に入る。これにより、命令のデコード、命令の実行、メモリへのアクセス、メモリへのライトバックが順次行われる。そして、タイミングＴ４２において、最下段の回路ブロック５は、メモリへのライトバックを完了し、休止相に入る。
【０１３６】
非同期式回路３１０の場合も同様に、タイミングＴ４１において回路ブロック１が休止相に入ると、回路ブロック２〜５が順次稼働相に入り、タイミングＴ４２において最下段の回路ブロック５は、メモリへのライトバックを完了し、休止相に入る。しかし、非同期式回路３１０の場合において、タイミングＴ４１において、さらに、回路ブロック１は、初期化を開始する。
【０１３７】
非同期式回路４１０の場合、タイミングＴ４２から、回路ブロック１〜５は、順次初期化を開始する。そして、タイミングＴ４３において、最下段の回路ブロック５は、初期化を完了する。これに応じて、回路ブロック１は、稼働相を開始し、命令をフェッチする。
【０１３８】
一方、非同期式回路３１０の場合、回路ブロック１は、タイミングＴ４２において既に初期化を完了したため、タイミングＴ４２においては、稼働相を開始し、命令をフェッチする。また、タイミングＴ４２から、回路ブロック２〜５は、順次初期化を開始する。そして、タイミングＴ４３より前のタイミングにおいて、回路ブロック５の初期化が完了する。その後、タイミングＴ４２から開始された回路ブロック１によるフェッチ処理の完了に伴って、回路ブロック２は、稼働相に入り、命令のデコードを実行する。
【０１３９】
図示のように、タイミングＴ４３において、非同期式回路４１０では、回路ブロック１が稼働相を開始するが、非同期式回路３１０では、回路ブロック１の稼働相が既に終了し、回路ブロック２は稼働相にある。
【０１４０】
すなわち、第２の実施の形態のマイクロコンピュータ３００において、非同期式回路３１０は、回路ブロック１は、自身の休止相の開始と共に初期化を開始し、最下段の回路ブロック５が休止相を開始したときに稼働相を開始する。また、回路ブロック２は、回路ブロック１が初期化を開始したときに稼働相を開始し、回路ブロック１が稼働相を開始したときに初期化を開始する。こうすることにより、従来の非同期式回路４１０より速い処理速度を実現している。
【０１４１】
また、通常、プロセッサが実行する各ステージの処理のうち、「命令のフェッチ」は、他のステージの処理より時間がかかると共に、最初のステージにおいて実行される。本発明の第２の実施の形態のマイクロコンピュータ３００によれば、回路ブロック１によるフェッチの実行中に他の回路ブロックの初期化を行うことができ、他の回路ブロックによる処理の実行中に回路ブロック１の初期化を行うことができるため、全体的に処理効率が良い。
【０１４２】
さらに、マイクロコンピュータ３００における非同期式回路３１０は、３段以上の回路ブロックを有するにも関わらず、モード制御回路３３０は、図４に示す、２段の回路ブロックのみ有する非同期式回路２００におけるモード制御回路２３０と同様の構成を有する。そのため、本発明にかかる技術は、回路規模の増大を抑制する視点において、回路ブロックの段数が多いほど特許文献３の技術より有利である。
【０１４３】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した実施の形態に対してさまざまな変更、増減を行ってもよい。これらの変更、増減が行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１４４】
例えば、上述した各実施の形態において、２相式制御を行う制御回路として、図１３に示す制御回路６２を用いたが、図１３に示す制御回路６２と同様の機能を果たすことができれば、制御回路６２と異なる回路構成を有する制御回路を用いてもよい。
【０１４５】
また、上述した各実施の形態において、モード制御回路として、図２または図３が示すモード制御回路２３０を用いたが、図２または図３に示すモード制御回路２３０と同様の機能を果たすことができる別の回路構成のモード制御回路を用いてもよい。
【符号の説明】
【０１４６】
１〜ｎ  回路ブロック
１Ａ〜ｎＡ  制御回路
１Ｂ〜ｎＢ  演算回路
１０  非同期式回路  ２０  回路ブロック
２２  制御回路  ２４  演算回路
３０  回路ブロック  ３２  制御回路
３４  演算回路  ５０  ２相式非同期式回路
６０  回路ブロック  ６２  制御回路
６４  演算回路  ６５  遅延素子
６６  ＡＮＤ素子  ６７  インバータ
７０  回路ブロック  ７２  制御回路
７４  演算回路  ８０  インバータ
９０  Ｑモジュール  ９１  ＡＮＤ素子
９２  インバータ  ９３  Ｃ素子
９４  ＡＮＤ素子  ９５  インバータ
１００  制御回路  １１０  ｒｅｑ信号生成回路
１１２  Ｃ素子  １１４  論理積回路
１１６  インバータ  １１８  インバータ
１２０  演算実行制御信号生成回路  １２２  論理和回路
２００  非同期式回路  ２１０  回路ブロック
２１２  制御回路  ２１４  演算回路
２２０  回路ブロック  ２２２  制御回路
２２４  演算回路  ２３０  モード制御回路
２３１  第３のインバータ  ２３２  ＯＲ素子
２３３  第１のインバータ  ２３４  第１のＡＮＤ素子
２３５  第２のインバータ  ２３６  第２のＡＮＤ素子
３００  マイクロコンピュータ  ３１０  非同期式回路
３２０  ＲＯＭ  ３３０  モード制御回路
４００  マイクロコンピュータ  ４１０  非同期式回路
４２２  インバータ  ４２４  ＡＮＤ素子
【図１】
2012190251.tif 000003
【図２】
2012190251.tif 000004
【図３】
2012190251.tif 000005
【図４】
2012190251.tif 000006
【図５】
2012190251.tif 000007
【図６】
2012190251.tif 000008
【図７】
2012190251.tif 000009
【図８】
2012190251.tif 000010
【図９】
2012190251.tif 000011
【図１０】
2012190251.tif 000012
【図１１】
2012190251.tif 000013
【図１２】
2012190251.tif 000014
【図１３】
2012190251.tif 000015
【図１４】
2012190251.tif 000016
【図１５】
2012190251.tif 000017
【図１６】
2012190251.tif 000018