(57)【要約】  飽和演算器を構成するにあたり、構造を改善して、飽和演算器そのものの遅延時間を短縮すると共に、面積を削減する。【課題】  通常の設計では飽和演算器中に長大なパスが発生し、クリティカルパスが長くなるので、このクリティカルパスを短縮する。【解決手段】  クリティカルパス上の信号の性質を解析し、真に遅延が大きいパスとそうでないパスを分けて、飽和演算器内の構造を改善することでクリティカルパス上の論理段数を削減して遅延時間を短縮し、かつ面積を削減する。また、加算器出力のＳＵＭ生成部をセレクタの形に展開し、他のセレクタと融合させて論理段数を削減する。【選択図】図７
2005327229.tif 000002
【特許請求の範囲】
【請求項１】
飽和演算器において、その内部に加算器と飽和値生成回路とセレクタとセレクタ制御準備信号生成回路とキャリー信号反映回路とを備え、当該飽和演算回路中の加算器内のキャリー信号をキャリー信号反映回路に入力してセレクタ制御信号を生成することを特徴とする飽和演算器。
【請求項２】
飽和演算器において、その内部に加算器と飽和値生成回路とセレクタとセレクタ制御準備信号生成回路とキャリー信号反映回路とを備え、当該飽和演算回路中の加算器内のキャリー信号１本をキャリー信号反映回路に入力してセレクタ制御信号を生成することを特徴とする飽和演算器。
【請求項３】
ＳＩＭＤ演算モードを備えて演算器をＭ個に分割することが出来る構造をもつ飽和演算器において、その内部に加算器と飽和値生成回路とセレクタとセレクタ制御準備信号生成回路とキャリー信号反映回路とを備え、当該飽和演算回路中の加算器内のキャリー信号Ｍ本をキャリー信号反映回路に入力してセレクタ制御信号を生成することを特徴とする飽和演算器。
【請求項４】
飽和値出力として０〜（２＾−Ｎ−１）の出力が求められるときに、加算器内部のキャリー回路中の第（Ｎ−１）ビットから第Ｎビットへの繰り上がりのキャリー信号を取り出してキャリー信号反映回路に入力することを特徴とする請求項１〜２のいずれか一項に記載の飽和演算器。
【請求項５】
飽和値出力として０〜（２＾Ｎ−１）の出力が求められるときに、加算器内部のキャリー回路中の第（Ｎ−２）ビットから第（Ｎ−１）ビットへの繰り上がりのキャリー信号を取り出してキャリー信号反映回路に入力することを特徴とする請求項１〜２のいずれか一項に記載の飽和演算器。
【請求項６】
飽和値出力として−（２＾（Ｎ−１））〜（２＾（Ｎ−１）−１）の出力が求められるときに、加算器内部のキャリー回路中の第（Ｎ−２）ビットから第（Ｎ−１）ビットへの繰り上がりのキャリー信号を取り出してキャリー信号反映回路に入力することを特徴とする請求項１〜２のいずれか一項に記載の飽和演算器。
【請求項７】
飽和値出力として−（２＾（Ｎ−１））〜（２＾（Ｎ−１）−１）の出力を求めるモードと、０〜（２＾Ｎ−１）の出力が求められるモードとを切り替える機能を持ち、加算器内部のキャリー回路中の第（Ｎ−２）ビットから第（Ｎ−１）ビットへの繰り上がりのキャリー信号を取り出してキャリー信号反映回路に入力することを特徴とする請求項１または請求項２のいずれか一項に記載の飽和演算器。
【請求項８】
演算モード切替機能を持って、演算結果を所定の飽和値内にクリップするモードと、クリップせずにそのまま出力するモードとを持つ事を特徴とする、請求項１〜７のいずれか一項に記載の飽和演算器。
【請求項９】
セレクタと他入力とを追加して、演算器出力と飽和値生成器の出力と、他入力とのいずれかを選択するセレクタを追加して持つ事を特徴とする請求項１〜８のいずれか一項に記載の飽和演算器。
【請求項１０】
キャリー信号反映回路の、キャリー入力から、セレクタ制御信号出力までのパス上に単一セルを置いて当該キャリー信号反映回路を構成することを特徴とする請求項１〜９のいずれか一項に記載の飽和演算器。
【請求項１１】
キャリー信号反映回路の、キャリー入力から、セレクタ制御信号出力までのパス上に単一段のセレクタセルを置いて当該キャリー信号反映回路を構成することを特徴とする請求項１〜９のいずれか一項に記載の飽和演算器。
【請求項１２】
キャリー信号反映回路の、キャリー入力から、セレクタ制御信号出力までのパス上に単一段トランジスタからなるセルを置いて当該キャリー信号反映回路を構成することを特徴とする請求項１〜９のいずれか一項に記載の飽和演算器。
【請求項１３】
キャリー信号反映回路の、キャリー入力から、セレクタ制御信号出力までのパス上に単一段トランジスタからなるセルを置いて当該キャリー信号反映回路を構成することを特徴とする請求項１〜９のいずれか一項に記載の飽和演算器。
【請求項１４】
キャリー信号反映回路の、キャリー入力から、セレクタ制御信号出力までのパス上に単一段トランジスタを割り当てて当該キャリー信号反映回路を構成することを特徴とする請求項１〜９のいずれか一項に記載の飽和演算器。
【請求項１５】
加算器出力のＳＵＭ生成部の代わりに、当該ビットの２入力の排他的論理和信号Ｐと、当該信号Ｐの否定である信号〜Ｐと、飽和値、の入力を持つセレクタをおき、セレクタ制御信号と下位ビットからのキャリー入力Ｃで当該セレクタを制御する構造を持つ事を特徴とする、請求項１〜１４のいずれか一項に記載の飽和演算器。
【請求項１６】
加算器出力のＳＵＭ生成部の代わりに、当該ビットの２入力の排他的論理和信号Ｐと、当該信号Ｐの否定である信号〜Ｐと、飽和値と、他入力、の入力を持つセレクタをおき、セレクタ制御信号と下位ビットからのキャリー入力Ｃで当該セレクタを制御する構造を持つ事を特徴とする、請求項１〜１４のいずれか一項に記載の飽和演算器。
【請求項１７】
加算器出力のＳＵＭ生成部の代わりに、当該ビットの２入力の排他的論理和信号Ｐと、当該信号Ｐの否定である信号〜Ｐと、遅延入力、の入力を持つセレクタをおき、また、飽和値と、他入力、から所定の値を選ぶセレクタの出力を、該セレクタの該遅延入力に接続する多段構成をとる事を特徴とする、請求項１〜１４のいずれか一項に記載の飽和演算器。
【請求項１８】
ＨＤＬ設計レベルで請求項１〜１７のいずれか一項に記載の飽和演算器の構造をとることを特徴とする飽和演算器。
【請求項１９】
ＨＤＬ設計結果を論理合成で変換したセルレベルネットが請求項１〜１７のいずれか一項に記載の飽和演算器の構造をとることを特徴とする飽和演算器。
【発明の詳細な説明】
【発明の詳細な説明】
【技術分野】この飽和演算器は集積回路の設計と構成に関する。更に詳しくは集積回路の演算器の構成に関する。
【背景技術】
【０００１】  以下で、複数ビット幅の信号について述べるとき、例えばＮビット幅の信号についてのべるとき、そのＭＳＢビットは、第（Ｎ−１）ビット、という。また、ＬＳＢビットは、第０ビットという。【０００２】  また、飽和演算処理の説明について、以下では、加算結果に基づく飽和処理について述べるが、減算結果の飽和処理、乗算における最終加算結果の飽和処理についても同様に適用する。【０００３】  算術演算において、近年は演算結果を特定の値の範囲に収める処理が必要とされる。特に画像処理や音声処理にあたって、信号を特定の範囲に収める必要がある。例えば、整数演算において演算結果を必ず符号付整数８ｂｉｔの範囲、即ち−１２８〜１２７の範囲に収める必要がある。このほか、本明細書では説明の為に制御回路１０３、オーバーフロー検出回路１０７、セレクタ制御信号生成回路１０４、などモジュールごとに区分しているが、実際の回路では融合して実装していることもあり、厳密にこの説明の通りに沿っていなくても構わない。【０００４】  この処理の為に、幾つかの方法がとれる。まずプロセッサを用いて処理する場合、８ｂｉｔ幅の演算を基本として処理する所謂８ｂｉｔプロセッサが、図９に示す様な汎用レジスタ３００，３０１，３０２，３０３を装備し、また、演算によって第６ビットから第７ビットへの繰り上がりを反映するＶフラグ（オーバーフローフラグ）を装備している場合、演算命令でまず演算結果をレジスタ３０３に格納する。次に、Ｖフラグを判定して、Ｖフラグが立っていなければ演算結果をそのまま出力する。すなわち、レジスタ３０３はそのままおき、その第７ビットが１ならレジスタ３０２に２５５を、０ならレジスタ３０２に０を格納する。一方、Ｖフラグが立っていれば、更に正の方向に逸脱したか負の方向に逸脱したかを確認して、前者ならレジスタ３０２，３０２に各々０，１２７を、後者なら２５５，１２８を格納する、というプログラムを構成すればよい。【０００５】  また、８ｂｉｔ幅よりも大きなビット幅、例えば１６ｂｉｔ幅の演算を基本として処理するプロセッサの場合には、装備している８ｂｉｔ演算命令を用いて前述の８ｂｉｔプロセッサと同様の処理をしても良いし、１６ｂｉｔ演算命令を用いて演算を行い、その結果を更に−１２８や１２７と比較して、範囲内にあればそのまま出力し、正に逸脱していたら１２７を、負に逸脱していたら−１２８を出力するようにすればよい。【０００６】  ところで、上記の様な処理では、飽和演算を行なうために複数の命令を組み合わせる必要があり、単純な演算命令を実行する場合に較べて命令のステップ数が増大し処理に時間を要するという問題がある。殊に条件分岐を用いる場合には、分岐に伴うパイプラインのストールが生じるなど処理時間が延びる悪影響があり、近年のパイプライン処理によるスループット向上を前提とした高速なプロセッサにとっては処理効率を悪化させる要因となる。【０００７】  これらの問題を解決するために、飽和演算処理機能を備えた演算器や、それを内蔵して飽和演算命令を備えるプロセッサが開発されている。【０００８】  飽和演算処理機能を備えた演算器は、例えば図１に示す演算器の構成をとる。ここでは、加減算結果を飽��処理するものとし、加算器の入力１２０と入力１２１のうち、入力１２１の側に符号反転回路を挿入して、キャリー入力１２２と組み合わせて加減算の切り替えを実現している。また、加算器１００の中には、キャリー回路１１０がある。この構成はＢＬＣＡ，ＣＬＡ、ＲＣＡなどが考えられる。【０００９】  尚、図１では、単純な加減算の結果を飽和処理してクリップする構成をとるが、加算器の前の構成はさまざまなものが考えられる。例えば、加算器の前に３ｔｏ２のＣＳＡを置いて、３項の変数や定数との和に対して飽和処理をしてもよい。また、加算器の前に、部分積生成部と加算器ツリーをおいて、当該加算器を含む乗算器としてもよい。すなわち、乗算器の演算結果に関する飽和処理を行う構成を取ってもよい。【００１０】  ここでは、更に分かりやすくするために、飽和演算器の入力と出力にレジスタを置いた構成を図２に示す。入力レジスタから出て出力レジスタへ至るパスのうち、もっとも遅延の長いのがクリティカルパスとなる。なお、図２では簡便の為に他入力については省略する。【００１１】  以下は、基本的な演算器の幅が１６ｂｉｔであり、演算結果を符号付８ｂｉｔまたは符号無８ｂｉｔに抑える場合を例として説明する。この場合、加算器１００、定数発生器１０１、セレクタ１０２、符号反転回路１０６の幅は１６ｂｉｔである。また、入１２０、入力１２１、修飾済み入力１２５、加算器出力１５０、飽和値１５２、飽和演算結果１６０は、１６ｂｉｔ幅を持つ。また、加算器出力の飽和値符号ビットとそれより上位のビット１５１については、第１５ｂｉｔから第７ｂｉｔの幅を持つ。【００１２】  この構成では、タイミング的に大別して２つのクリティカルパスが生ずる。【００１３】第１のクリティカルパス（パス１）は、下記の要素や配線を通る
・  入力１２１
・  符号反転回路１０６
・  加算器１００
・  加算器出力の飽和値符号ビットとそれより上位のビット１５１
・  制御回路１０３
・  オーバーフロー検出回路１０７
・  セレクタ制御信号生成回路１０４
・  セレクタ制御信号１４２
・  セレクタ制御信号用バッファ１０５
・  セレクタ１０２
・  飽和演算結果１６０
を通る【００１４】第２のクリティカルパス（パス２）は
・  入力１２１
・  符号反転回路１０６
・  加算器１００
・  加算器出力１５０
・  セレクタ１０２
・  飽和演算結果１６０
を通る【００１５】  ここで、加算器１００を出た信号が、複数の回路要素を通って実際のセレクタ１０２に至る事に注意する。少なくともセレクタ１０２の制御信号１４２を生成するために、演算モード制御信号１２７と加算器出力の飽和値符号ビットとそれより上位のビット１５１のうち飽和値符号ビット、修飾済み入力１２５の飽和値符号ビット１２４、入力Ａの飽和値符号ビット１２３と、キャリー信号１５６との全てを反映させなければならない。
また、飽和演算に複数のモードを持つ場合がある。例えば、加算器出力１５０をそのまま出力するモードと、加算器出力を−１２８〜１２７の範囲にクリップするモードと、加算器出力を０〜２５５の範囲にクリップするモードと、である。図１において、制御回路１０３に入力される演算モード制御信号１２７でその切り替えを行う場合、特にその中のオーバーフロー検出回路１０７とセレクタ制御信号生成回路１０４は、指定されたモードにしたがって、異なる論理を処理する必要がある。【００１６】  例えば、飽和値として０〜２５５の範囲にクリップするモードでは、加算器出力の飽和値符号ビットと、それより上位のビット列１５１の、上位８ビットをオーバーフロー検出回路１０７でチェックしてオーバーフロー検出結果信号１５３を決定する。【００１７】  或いは、キャリー出力信号１５６のうち、第７ビットから第８ビットへの繰り上がりを応用して、より高速に処理することも可能である。すなわち、修飾済み入力１２５の上位８ビットと、入力１２０の上位８ビットもオーバーフロー検出回路１０７に入力して、加算器出力の飽和値符号ビットと、それより上位のビット列１５１のうち上位８ビットの値をある程度確定しておいて、キャリー出力信号１５６のうち、第７ビットから第８ビットへの繰り上がりで最終的に決定する。この場合は、キャリーの生成と加算器出力の飽和値符号ビットと、それより上位のビット列１５１のうち上位８ビットの値のある程度の確定処理を並列に処理できるので実行時間を短縮できる。
一方で、飽和値として０〜２５５の範囲にクリップするモードでは、加算器出力の飽和値符号ビットと、それより上位のビット列１５１のうちの、上位９ビットをオーバーフロー検出回路１０７でチェックしてオーバーフロー検出結果信号１５３を決定する。【００１８】  或いは、加算器出力の飽和値符号ビットと、それより上位のビット列１５１のうち加算器出力の飽和値符号ビット、すなわち加算器出力１５０の第７ビットの値をもちいて処理することも可能である。【００１９】  より高速に処理することも可能である。すなわち、修飾済み入力１２５の上位８ビットと、入力１２０の上位８ビットもオーバーフロー検出回路１０７に入力して、加算器出力の飽和値符号ビットと、それより上位のビット列１５１のうち上位８ビットの値をある程度確定しておいて、加算器出力１５０の第７ビットの値をもちいて処理することも可能である。この場合は、加算器出力１５０の第７ビットの値と、加算器出力の飽和値符号ビットと、それより上位のビット列１５１のうち上位８ビットの値のある程度の確定処理を並列に処理できるので実行時間を短縮できる。【００２０】  これらの処理では、オーバーフロー検出回路１０７で、モード切替によって、処理する内容が変わる。そのために、オーバーフロー検出回路１０７の処理すべき事柄が増大し、尚遅延が増大する。【００２１】  図２に示すＤＦＦの配置でサイクルタイムが所定の時間に収まらない場合には、図３に示すようにレジスタ２０２とレジスタ２０３を挿入することも可能である。これによりスループットは向上する。しかし、パイプライン化することは必ず性能向上につながるとは限らない。例えば図３に示す経路ではセレクタ１０２の出力がパス１６０を経て直接レジスタ２０１に入るが、ここに演算器があった場合は問題となる。ここに挿入される演算器の遅延が大きい場合には、バッファ１０５とセレクタ１０２の遅延も無視できない。【００２２】  見方を変えれば、加算器出力１５０から制御回路１０７、バッファ１０５、セレクタ１０２を経て出力１６０に至るまでの遅延時間の累計そのものは変わらない。むしろ、レジスタ２０３を挿入したが為に遅延時間の累計は増大している。【００２３】  一方で、セレクタの制御信号分配とセレクタの動作に要する時間を省く手法もある。即ち、図４に示すようにレジスタ２０２の脇に、１〜数ｂｉｔ幅のフラグ用レジスタ２０４を用意し、演算結果１５０が所定の範囲より逸脱した場合には、当該レジスタ２０２から値を取り出す際に、レジスタ２０２に実際に格納されている値に関わらず、これに代えて飽和値１５４を用いる様に指示する情報を、このレジスタ２０４に格納する。これにより、セレクタ制御信号を生成して、それを分配し、さらにセレクタを駆動する時間を省略することが出来る。一方で、現在レジスタ２０２に入っている値１５５を後続の演算でそのまま使うか飽和値１５４を使うかを識別する情報を生成する回路１０４が必要であり、この回路を通過するのに要する時間も当然要するが、一般的には識別情報を格納する事で、多少の短縮が図れる。【００２４】  識別情報をレジスタ２０４に入れる方法では、改めて演算結果１５５を読み出す際に、レジスタ２０４の情報に従っ���値１５５を取り出すか所定の飽和値１５４のいずれを取り出すかを選択するセレクタ１０２が別途必要となる。これは、レジスタ２０２の後ろに置かれるが、レジスタ２０４の値からセレクタ１０２の制御信号を生成したのち、それをバッファ１０５でセレクタに分配するまでの遅延が大きい。これを解消する為に回路のリタイミングやＤＦＦのデュプリケートを行なう事も考えられるが、検証が困難になるし、レジスタ２０４に入れる信号の生成からセレクタに分配するまでの遅延の総和は変わらない。すなわち、レジスタが入る事でスループットは向上する可能性があるが、演算にかかる遅延そのものは変わらない、むしろレジスタが入る事で遅延の総和は延びるので、無闇に適用できない。【００２５】  この方式が最も有効に働くのは、レジスタ２０４の値を元に制御回路が次の演算の判断を行ない、１サイクルを置いて次の演算を指示するケースである。この場合には遅延の一部が１サイクル分隠蔽されて見かけの遅延が短縮する。しかし、実際には、飽和演算結果を直ぐ直後に使用したい要求も多く、また、制御回路がレジスタ２０４の値を判断する部分を追加することは設計を困難にする要因でもある。【００２６】  その他に、飽和演算器を構成するさいに、加算器１００の後ろに、加算器出力１５０と、飽和値１５２と、場合によっては他入力１６１とを、切り替えるセレクタが存在する。これは、ただでさえキャリー信号の確定時間が長いのに加えて、キャリー信号→ＳＵＭ生成回路→セレクタ、と信号がモジュールを連続して通るので遅延が大きくなり問題となる。
【発明が解決しようとする課題】
【００２７】  これらの問題を解消し、より高速な飽和演算器を構成する。改めて問題点を見ると、演算結果１５０を見て、それからオーバーフロー判定を行い、また、モード切替に適した制御を行って、ようやくセレクタ制御信号を生成するという、処理が直列に並び、必然遅延が延びるという箇所にあるので、これを改善する。また、加算器の出力から、セレクタを数段経て、最終的な出力に至っているので、この箇所の遅延を短縮する。
【課題を解決するための手段】
【００２８】  これを根本的に解決するために、下記の改良を行う。
まず、オーバーフロー検出回路１０７ならならびにセレクタ制御信号生成回路１５３に入る信号の遅延の度合いを調べる。モード切替信号１２７は、基本的にＤＦＦの出力そのものか、出力から小さな回路を通ってくるケースが多く、比較的早い段階で確定する。
【００２９】  一方で、加算器出力の飽和値符号ビットと、それより上位のビット列１５１は、加算結果であるので、非常に遅く、タイミングがクリティカルである。ところが、値１５１の上位９ビットについては、先にも述べたように、入力１２０と修飾済み入力１２５の各々の上位９ビットを見ることで、およそどの様な値になるかが確定する。すなわち、加算器１００中の、第６ビットから第７ビットへの繰り上がりが０で、且つ、加算器出力１５０の上位９ビットが全て零か、全て１か、０と１との混在かが加算器出力１５０が確定するよりも早期に判明する。一方、繰り上がりが１で、且つ、加算器出力１５０の上位９ビットが全て零か、全て１か、０と１との混在かも早期に判明する。
【００３０】  これらを概観すると、結局、第６ビットから第７ビットへの繰り上がりの一本だけが突出して確定時間が遅く、その他の信号は当該繰り上がり信号より充分早期に確定する。この差を利用して回路構成を最適化する。
【００３１】  また、加算器出力のＳＵＭ生成部は、通常は排他的論理和だが、これはセレクタに展開することが可能である。これにより、後続のセレクタと融合して、論理の段数を削減する。
【発明を実施するための最良の形態】
【００３２】  そこで、オーバーフロー検出回路１０７と、セレクタ制御信号生成回路１０４の構成を編成しなおし、図５に示す様にセレクタ制御準備信号生成回路１０８と、キャリー信号反映回路１０９の組み合わせにする。ここで、キャリー信号反映回路１０９には、キャリー回路１１０の中から、第６ビットから第７ビットへの繰り上がり１本だけを入力する。
これにより、早期に確定する信号は全てオーバーフロー検出回路１０７で処理し、セレクタ制御準備信号１５８を生成する。当該信号の構成でまず考えられるのは、キャリーが０の場合にセレクタ制御信号１４２になる信号と、キャリーが１の場合にセレクタ制御信号１４２になる信号の組み合わせである。実際にはもっと論理を単純化することもできる。
同時に、加算器１００の中のキャリー回路１１０の構成も最適化する。すなわち、第６ビットから第７ビットへの繰り上がり信号を高速化するために、このキャリー信号を生成するＣＬＡ構成をとることを第一に考える。その他のビットスライスへのキャリー信号については、遅延や面積を勘案して定める。【００３３】  注目すべきは、モード切替を持つ場合でも、同様のタイミング解析を行うと、最終的には第６ビットから第７ビットへの繰り上がりのみが残ることにある。そのため、モード切替信号もセレクタ制御準備信号生成回路１０８に編入し、キャリー信号反映回路１０９にはキャリー信号１５７のみを入力して実装できる。【００３４】  加算器からセレクタを経て出力する回路について見る。図６は、典型的な飽和演算器において、制御回路部分と、演算器部分の特定のビットスライスを取り出して示したもので、入力１２０のビットスライス信号１１２０、修飾済み入力１２５のビットスライス信号１１２５より、論理積を当該ビットスライスにおけるＧ信号１２０１と、当該ビットスライスにおけるＰ信号１２００を出す。尚、Ｐ信号１２００は、信号１１２０と信号１１２１の排他的論理和とする。これを加算器内のキャリー回路１１０に入力し、一方で、当該キャリー回路１１０が出力する，当該ビットスライスより下位から、当該ビットスライスへのキャリー信号１２０２と、Ｐ信号１２００を用いてＳＵＭ生成回路１２０４で最終的な加算結果となる。【００３５】  尚、この図では、特に、第７ビットを取り出して示す。この部分で加算器出力はオーバーフロー検出回路１０７に利用される。【００３６】  ここで、セレクタ１１０２とセレクタ１１１１は、容易に単一段のセレクタに圧縮できる。その場合、セレクタ１１１１の制御信号１１９も、制御回路１０３内のセレクタ制御信号生成回路１０４の論理に編入する。【００３７】  さらに一歩進めて、加算器内のＳＵＭ生成部１２０４は、通常は排他的論理和であるが、これをＰ信号と〜Ｐ信号（Ｐの否定）とをキャリー信号１２０２で切り替えるセレクタに展開する。そして、当該セレクタを後続のセレクタ１１０２やセレクタ１１１１と融合し、セレクタ１２０６の１段に圧縮する。この場合の構成を図７に示す。当該ビットスライスへのキャリー１２０２は、ビットスライスキャリー反映回路１２０５に入力され、これによりセレクタ制御信号１４３は修飾されて制御信号１２１０となる。尚、この図では特に、第７ビットを取り出して示す。当該ビットスライスへのキャリー１２０２、即ち第６ビットから第７ビットへの繰り上がりは、キャリー信号反映回路１０９にも用いられる。【００３８】  また、図７ではセレクタ１２０６は多入力であるが、この中でも、飽和値発生回路１１０１の出力１１５２や、他入力値１１６１が充分早期に確定するなら、これらの入力を別に分けて多段構成にすることもできる。
例えば、図８に示すように後段の３入力セレクタ１２０７と、前段のセレクタ１２０８の２段構成となる。これにより、後段のセレクタの入力数を削減し、当該セレクタの遅延時間短縮と駆動力向上を図れる。
【発明の効果】
請求項１にかかる発明を用いることで、クリティカルパスになる信号をキャリー信号に限定し、その他の信号のタイミングに余裕をつくる。これは、クリティカルパス以外の信号の割合を増やし、設計を容易にすると共に、タイミングに余裕をつくり、トランジスタのサイズの削減を可能たらしめる。また、クリティカルパスのセル段数を削減することを可能とし、タイミングの削減を図れる、という効果をもたらす。
請求項２にかかる発明を用いることで、単一の飽和演算器ないのクリティカルパスを限定し、設計に注力すべき箇所が明らかになる、という効果をもたらす。
請求項３にかかる発明を用いることで、複数の飽和演算器でクリティカルパスになりうる信号を削減し、設計を容易にすると共に、タイミングに余裕をつくり、トランジスタのサイズの削減を可能たらしめる。また、クリティカルパスのセル段数を削減することを可能とし、タイミングの削減を図れる、という効果をもたらす。
請求項４にかかる発明を用いることで、加算器出力に代えて早期に確定するキャリー信号を用いてセレクタの制御を迅速に行うことが可能となる。
請求項５にかかる発明を用いることで、加算器出力に代えて早期に確定するキャリー信号を用いてセレクタの制御を迅速に行うことが可能となる。
請求項６にかかる発明を用いることで、加算器出力に代えて早期に確定するキャリー信号を用いてセレクタの制御を迅速に行うことが可能となる。
請求項７にかかる発明を用いることで、従来は加算器の和出力と加算器の桁上げ出力の２本を用いて、さらにモード切替の処理を行ってようやくセレクタの制御を行えていたものが、早期に確定する入力信号にまつわる処理とキャリーにまつわる処理を分離し、早期に確定する入力信号にまつわる処理を予め施して、しかるのちにキャリー信号を迅速にセレクタ制御信号に反映することで、処理を迅速に行うことが可能となる。
請求項８にかかる発明を用いることで、従来はクリップ処理とモード切替の制御を別個に行っていたものが、早期に確定する入力信号にまつわる処理とキャリーにまつわる処理を分離し、早期に確定する入力信号にまつわる処理を予め施して、しかるのちにキャリー信号を迅速にセレクタ制御信号に反映することで、処理を迅速に行うことが可能となる。
請求項９にかかる発明を用いることで、従来はクリップ処理とモード切替と他入力切替の制御を別個に行っていたものが、早期に確定する入力信号にまつわる処理とキャリーにまつわる処理を分離し、早期に確定する入力信号にまつわる処理を予め施して、しかるのちにキャリー信号を迅速にセレクタ制御信号に反映することで、処理を迅速に行うことが可能となる。
請求項１０にかかる発明を用いることで、スタンダードセル方式のＬＳＩ開発において、キャリー信号反映回路を通るクリティカルパスの遅延を短縮することが可能となる。
請求項１１にかかる発明を用いることで、スタンダードセル方式のＬＳＩ開発において、キャリー信号反映回路を通るクリティカルパスの遅延を短縮することが可能となる。
請求項１２にかかる発明を用いることで、スタンダードセル方式のＬＳＩ開発において、キャリー信号反映回路を通るクリティカルパスの遅延を短縮することが可能となる。
請求項１３にかかる発明を用いることで、スタンダードセル方式のＬＳ１開発において、キャリー信号反映回路を通るクリティカルパスの遅延を短縮することが可能となる。
請求項１４にかかる発明を用いることで、スタンダードセル方式のＬＳＩ開発において、キャリー信号反映回路を通るクリティカルパスの遅延を短縮することが可能となる。
請求項１５にかかる発明を用いることで、加算器出力からセレクタ数段を通って最終的な出力に至っていたものを、単一段セレクタの通過に抑えて、クリティカルパス上のセル段数を削減することが可能となる。
請求項１６にかかる発明を用いることで、加算器出力からセレクタ数段を通って最終的な出力に至っていたものを、単一段セレクタの通過に抑えて、クリティカルパス上のセル段数を削減することが可能となる。
請求項１７にかかる発明を用いることで、加算器出力からセレクタ数段を通って最終的な出力に至っていたものを、単一段セレクタの通過に抑えて、クリティカルパス上のセル段数を削減し、かつ、当該セレクタの入力数を減らして遅延短縮と駆動力増加をはかることが可能となる。
請求項１８にかかる発明を用いることで、設計の上流で予め遅延短縮と面積削減の効果を計ることが可能となる。
請求項１９にかかる発明を用いることで、実際のネットで遅延短縮と面積削減の効果を計ることが可能となる。
【図面の簡単な説明】
【図１】  通常の飽和演算器の構成を示す図
【図２】  通常の飽和演算器で特にＤＦＦ出力のデータを飽和演算処理して演算結果をＤＦＦに入力する構成を示す図
【図３】  飽和演算器でスループット改善の為にＤＦＦのタイミングを調整した構成を示す図
【図４】  飽和演算器で飽和値か否かの判定結果を格納するＤＦＦを追加した構成を示す図
【図５】  本発明請求項１ならびに２に記載の飽和演算器の実施例を示す図
【図６】  通常の飽和演算器のビットスライスの構成を示す図
【図７】  本発明請求項１６記載の発明の実施例にかかる回路構成を示す図
【図８】  本発明請求項１７記載の発明の実施例にかかる回路構成を示す図
【図９】  ＣＰＵで飽和処理するさいのレジスタ構成を示す図
【符号の説明】
１００    加算器
１０１    飽和値発生器
１０２    セレクタ
１０３    制御回路
１０４    セレクタ制御信号生成回路
１０５    セレクタ制御信号用バッファ
１０６    符号反転回路
１０７    オーバーフロー検出回路
１０８    セレクタ制御準備信号生成回路
１０９    キャリー信号反映回路
１１０    キャリールックアヘッド型キャリー生成回路（ＣＬＡ）
１１１    飽和演算結果と他入力の選択セレクタ
１１９    飽和演算結果と他入力の選択制御信号
１２０    入力Ａ（説明時に単に「入力１２０」と略すことあり）
１２１    入力Ｂ（説明時に単に「入力１２１」と略すことあり）
１２２    キャリー入力
１２３    入力Ａの飽和値符号ビット
１２４    修飾済み入力Ｂの飽和値符号ビット（説明時に単に「修飾済み入力１２５の飽和値符号ビット１２４」と略すことあり）
１２５    修飾済み入力Ｂ（説明時に単に「修飾済み入力１２５」と略すことあり）
１２６    符号反転回路制御信号
１２７    演算モード制御信号
１２８    入力Ａの飽和値符号ビットと、それより上位のビット列
１２９    修飾済み入力Ｂの飽和値符号ビットと、それより上位のビット列
１４１    定数発生器制御信号
１４２    セレクタ制御信号
１４３    増強済セレクタ制御信号
１４４    タイミング調整済セレクタ制御信号
１５０    加算器出力
１５１    加算器出力の飽和値符号ビットと、それより上位のビット列
１５２    飽和値
１５３    オーバーフロー検出結果信号
１５４    タイミング調整済み飽和値
１５５    タイミング調整済み飽和値
１５６    キャリー出力信号
１５７    キャリー出力信号
１５８    セレクタ制御準備信号
１６０    飽和演算結果
１６１    他入力
１６２    飽和演算結果と他入力との選択結果
２００    入力ＤＦＦ
２０１    出力ＤＦＦ
２０２    データタイミング調整ＤＦＦ
２０３    制御信号調整ＤＦＦ
２０４    飽和処理でレジスタ２０２に格納されている値が飽和値か否かを示すフラグを格納するＤＦＦ
３００    ２つの入力データのうち１方を保持する８ビット汎用レジスタ
３０１    ２つの入力データのうちもう１方を保持する８ビット汎用レジスタ
３０２    飽和演算結果の上位８ビットを保持する８ビット汎用レジスタ
３０３    飽和演算結果の下位８ビットを保持する８ビット汎用レジスタ
１１９８  図１における飽和演算器のビットスライス
１１９９  図１における飽和演算器並びにその出力と他入力とのセレクタを含む部分のビットスライス
１１００  加算器１００のビットスライス
１１０１  飽和値発生器１１０１のビットスライス
１１０２  セレクタ１０２のビットスライス
１１２０  入力１２０のビットスライス
１１２５  修飾済み入力１２５のビットスライス
１１５２  飽和値１５２のビットスライス
１１６０  飽和演算結果１６０のビットスライス
１１６１  他入力１６１のビットスライス
１１６２  飽和演算結果と他入力との選択結果１６２のビットスライス
１２００  当該ビットスライスにおけるＰ信号（尚、Ｐ信号は信号１１２０と信号１１２１の排他的論理和）
１２０１  当該ビットスライスにおけるＧ信号
１２０２  当該ビットスライスより下位から、当該ビットスライスへのキャリー信号
１２０３  当該ビットスライスでのＰＧ信号生成器
１２０４  当該ビットスライスでのＳＵＭ生成器
１２０５  ビットスライスキャリー反映回路
１２０６  ビットスライスセレクタ
１２０７  ビットスライスセレクタ（後段）
１２０８  ビットスライスセレクタ（前段）
１２０９  途中結果
１２１０  ビット毎のセレクタ制御信号
１２１１  当該ビットスライスでのＳＵＭ出力
【図１】
2005327229.tif 000003
【図２】
2005327229.tif 000004
【図３】
2005327229.tif 000005
【図４】
2005327229.tif 000006
【図５】
2005327229.tif 000007
【図６】
2005327229.tif 000008
【図７】
2005327229.tif 000009
【図８】
2005327229.tif 000010
【図９】
2005327229.tif 000011