(57)【要約】【課題】本発明は、飽和処理を行う演算装置において演算処理と飽和処理とに関係する遅延時間を低減し、処理の高速化を図ることが可能な演算装置を提供する。【解決手段】本発明に係る解決手段は、第１入力オペランドと第２入力オペランドとの加算又は減算演算を行い演算結果を出力する演算処理部１と、第１入力オペランドと第２入力オペランドに基づいて、演算結果が所定ビット長の表現範囲内か否かを予測し飽和予測信号を出力する飽和予測部２と、飽和予測部からの飽和予測信号において演算結果が所定ビット長の表現範囲内にないと予測される場合に、所定ビット長の表現範囲内の最大値又は最小値を出力結果とし、飽和予測信号において演算結果が所定ビット長の表現範囲内にあると予測される場合に、演算結果を出力結果とすることを選択する選択部４とを備え、飽和予測部は、演算処理部に対して並列に動作される。【選択図】図１
2006127469.tif 000002
【特許請求の範囲】
【請求項１】
第１入力オペランドと第２入力オペランドとの加算又は減算演算を行い演算結果を出力する演算処理部と、
前記第１入力オペランドと前記第２入力オペランドに基づいて、前記演算結果が所定ビット長の表現範囲内か否かを予測し飽和予測信号を出力する飽和予測部と、
前記飽和予測部からの前記飽和予測信号において前記演算結果が所定ビット長の表現範囲内にないと予測される場合に、所定ビット長の表現範囲内の最大値又は最小値を出力結果とし、前記飽和予測信号において前記演算結果が所定ビット長の表現範囲内にあると予測される場合に、前記演算結果を前記出力結果とすることを選択する選択部とを備え、
前記飽和予測部は、前記演算処理部に対して並列に動作されることを特徴とする演算装置。
【請求項２】
前記飽和予測部は、前記第１入力オペランドと前記第２入力オペランドに基づいて、所定ビット長の表現範囲外に位置する前記演算結果の個々のビット状態を予測した飽和予測ビット列を生成し、当該飽和予測ビット列の論理積である前記飽和予測信号を求めることを特徴とする請求項１に記載の演算装置。
【請求項３】
前記飽和予測ビット列は、所定ビット長の表現範囲外に位置する前記演算結果の個々のビット状態が”０”であると予測するＺｅｒｏ予測ビット列と、所定ビット長の表現範囲外に位置する前記演算結果の個々のビット状態が”１”であると予測するＯｎｅ予測ビット列とを有し、
前記飽和予測部は、前記Ｚｅｒｏ予測ビット列の論理積と前記Ｏｎｅ予測ビット列の論理積との論理和を演算することで前記飽和予測信号を求めることを特徴とする請求項２に記載の演算装置。
【請求項４】
前記Ｚｅｒｏ予測ビット列及び前記Ｏｎｅ予測ビット列は、それぞれの最下位ビットに前記演算結果を用いることを特徴とする請求項３に記載の演算装置。
【請求項５】
前記飽和予測部は、前記第１入力オペランドと前記第２入力オペランドとの排他的論理和であるＰｒｏｐａｇａｔｅ信号と、前記Ｐｒｏｐａｇａｔｅ信号より１ビット下位の前記第１入力オペランド及び前記第２入力オペランドの論理和を反転させたＫｉｌｌ信号との排他的論理和を演算することで前記Ｚｅｒｏ予測ビット列を求める第１アルゴリズムと、
前記Ｐｒｏｐａｇａｔｅ信号と、前記Ｐｒｏｐａｇａｔｅ信号より１ビット下位の前記第１入力オペランド及び前記第２入力オペランドの論理積であるＧｅｎｅｒａｔｅ信号との排他的論理和を演算することで前記Ｏｎｅ予測ビット列を求める第２アルゴリズムとを備えることを特徴とする請求項３又は請求項４に記載の演算装置。
【請求項６】
前記演算装置は、第１ビット長の表現範囲と前記第１ビット長の表現範囲より表現範囲が狭い第２ビット長の表現範囲とを選択でき、
前記飽和予測部は、
前記第１入力オペランド及び前記第２入力オペランドのうち前記第２ビット長の表現範囲外の最下位ビットを除くビットに対して、前記第１アルゴリズムの処理を行い前記Ｚｅｒｏ予測ビット列を出力するＺｅｒｏ予測ビット処理部と、
前記第１入力オペランド及び前記第２入力オペランドのうち前記第２ビット長の表現範囲外の最下位ビットを除くビットに対して、前記第２アルゴリズムの処理を行い前記Ｏｎｅ予測ビット列を出力するＯｎｅ予測ビット処理部と、
前記Ｚｅｒｏ予測ビット処理部の出力のうち前記第１ビット長の表現範囲外の最下位ビットを除くビットの論理積を演算する第１論理演算部と、
前記第１論理演算部で演算したビットを除く前記Ｚｅｒｏ予測ビット処理部の出力に対して論理積を演算する第２論理演算部と、
前記Ｏｎｅ予測ビット処理部の出力のうち前記第１ビット長の表現範囲外の最下位ビットを除くビットの論理積を演算する第３論理演算部と、
前記第３論理演算部で演算したビットを除く前記Ｏｎｅ予測ビット列処理部の出力に対して論理積を演算する第４論理演算部と、
第１論理演算部の出力と、前記第１ビット長の表現範囲外の最下位ビットに対応する前記演算結果との否定論理積を演算する第１最下位ビット演算部と、
第１論理演算部の出力と、第２論理演算部の出力と、前記第２ビット長の表現範囲外の最下位ビットに対応する前記演算結果との否定論理積を演算する第２最下位ビット演算部と、
第３論理演算部の出力と、前記第１ビット長の表現範囲外の最下位ビットに対応する前記演算結果を反転したビットとの否定論理積を演算する第３最下位ビット演算部と、
第３論理演算部の出力と、第４論理演算部の出力と、前記第２ビット長の表現範囲外の最下位ビットに対応する前記演算結果を反転したビットとの否定論理積を演算する第４最下位ビット演算部と、
第１最下位ビット演算部と第３最下位ビット演算部との論理和を、前記第１ビット長の表現範囲に対する第１飽和予測ビットとして求める第１飽和予測ビット演算部と、
第２最下位ビット演算部と第４最下位ビット演算部との論理和を、前記第２ビット長の表現範囲に対する第２飽和予測ビットとして求める第２飽和予測ビット演算部と、
前記第１飽和予測ビットと、前記第１ビット長の表現範囲を選択するか否かを示す第１エネーブル信号との論理積を演算する第１エネーブル信号演算部と、
前記第２飽和予測ビットと、前記第２ビット長の表現範囲を選択するか否かを示す第２エネーブル信号との論理積を演算する第２エネーブル信号演算部と、
前記第１エネーブル信号演算部の出力と、前記第２エネーブル信号演算部の出力との論理和を演算し前記飽和予測信号を出力する第１飽和予測信号出力部とを備えることを特徴とする請求項５記載の演算装置。
【請求項７】
前記飽和予測部は、
前記第１乃至前記第４最下位ビット演算部、前記第１及び前記第２飽和予測ビット演算部、前記第１及び前記第２エネーブル信号演算部並びに前記第１飽和予測信号出力部に代えて、
前記第１論理演算部の出力を反転する第１インバータと、
前記第１論理演算部の出力と前記第２論理演算部の出力との否定論理積を演算する第１否定論理演算部と、
前記第３論理演算部の出力を反転する第２インバータと、
前記第３論理演算部の出力と前記第４論理演算部の出力との否定論理積を演算する第２否定論理演算部と、
前記第１エネーブル信号と、前記第１インバータの出力と、前記第１ビット長の表現範囲外の最下位ビットに対応する前記演算結果との論理積を演算する第１演算部と、
前記第２エネーブル信号と、前記第１否定論理演算部の出力と、前記第２ビット長の表現範囲外の最下位ビットに対応する前記演算結果との論理積を演算する第２演算部と、
前記エネーブル信号出力部の出力と、前記第２インバータの出力と、前記第１ビット長の表現範囲外の最下位ビットに対応する前記演算結果を反転したビットとの論理積を演算する第３演算部と、
前記第２エネーブル信号と、前記第２否定論理演算部の出力と、前記第２ビット長の表現範囲外の最下位ビットに対応する前記演算結果を反転したビットとの論理積を演算する第４演算部と、
前記第１乃至第４演算部の出力の論理和を演算し前記飽和予測信号を出力する第２飽和予測信号出力部とを備えることを特徴とする請求項６記載の演算装置。
【請求項８】
前記飽和予測部は、
前記第１乃至前記第４演算部及び前記第２飽和予測信号出力部に代えて、
前記第１エネーブル信号と、前記第１インバータの出力との論理積を演算する第５演算部と、
前記第２エネーブル信号と、前記第１否定論理演算部の出力との論理積を演算する第６演算部と、
前記第１エネーブル信号と、前記第２インバータの出力との論理積を演算する第７演算部と、
前記第２エネーブル信号と、前記第２否定論理演算部の出力との論理積を演算する第８演算部と、
前記第５演算部の出力と、前記第７演算部の出力と、前記第１ビット長の表現範囲外の最下位ビットに対応する前記演算結果とを処理する第１マルチプレクサ部と、
前記第６演算部の出力と、前記第８演算部の出力と、前記第２ビット長の表現範囲外の最下位ビットに対応する前記演算結果とを処理する第２マルチプレクサ部と、
前記第１マルチプレクサ部及び第２マルチプレクサ部の出力の論理和を演算し前記飽和予測信号を出力する第３飽和予測信号出力部とを備えることを特徴とする請求項７記載の演算装置。
【請求項９】
前記Ｚｅｒｏ予測ビット処理部は、
前記第１入力オペランド及び前記第２入力オペランドの排他的論理和を演算する第１オペランド演算部と、
前記第１オペランド演算部に入力された前記第１入力オペランド及び前記第２入力オペランドより１ビット下位の前記第１入力オペランド及び前記第２入力オペランドの否定論理和を演算する第２オペランド演算部と、
前記第１オペランド演算部の出力と、前記第２オペランド演算部の出力との排他的論理和を演算する第３オペランド演算部とを備え、
前記Ｏｎｅ予測ビット処理部は、
前記第１入力オペランド及び前記第２入力オペランドの排他的論理和を演算する第４オペランド演算部と、
前記第１オペランド演算部に入力された前記第１入力オペランド及び前記第２入力オペランドより１ビット下位の前記第１入力オペランド及び前記第２入力オペランドの論理積を演算する第５オペランド演算部と、
前記第４オペランド演算部の出力と、前記第５オペランド演算部の出力との排他的論理和を演算する第６オペランド演算部とを備えることを特徴とする請求項６乃至請求項８のいずれか１つに記載の演算装置。
【請求項１０】
前記Ｚｅｒｏ予測ビット処理部は、
反転した前記第１入力オペランド及び前記第２入力オペランドの論理積を演算する第７及び第８オペランド演算部と、
前記第７オペランド演算部の反転出力と、前記第８オペランド演算部の出力との論理和を演算する第９オペランド演算部と、
前記第９オペランド演算部の出力と、１ビット下位に対応する前記第７オペランド演算部の出力との排他的論理和を演算する第１０オペランド演算部とを備え、
前記Ｏｎｅ予測ビット処理部は、
前記第１入力オペランド及び前記第２入力オペランドの否定論理積を演算する第１１オペランド演算部と、
前記第１入力オペランド及び前記第２入力オペランドの論理積を演算する第１２オペランド演算部と、
第１１オペランド演算部の出力と、第１２オペランド演算部の出力との否定論理和を演算する第１３オペランド演算部と、
前記第１３オペランド演算部の出力と、１ビット下位に対応する前記第１１オペランド演算部の出力との排他的否定論理和を演算する第１４オペランド演算部とを備えることを特徴とする請求項６乃至請求項８のいずれか１つに記載の演算装置。
【請求項１１】
前記Ｚｅｒｏ予測ビット処理部は、前記第１及び前記第２オペランド演算部を設けず、前記第１及び前記第２オペランド演算部の出力に代えて、前記演算処理部において演算されたＰｒｏｐａｇａｔｅ信号と、当該前記Ｐｒｏｐａｇａｔｅ信号より１ビット下位の前記演算処理部において演算されたＫｉｌｌ信号とを前記第３オペランド演算部に入力し、
前記Ｏｎｅ予測ビット処理部は、前記第４及び前記第５オペランド演算部を設けず、前記第４及び前記第５オペランド演算部の出力に代えて、前記演算処理部において演算されたＰｒｏｐａｇａｔｅ信号と、当該前記Ｐｒｏｐａｇａｔｅ信号より１ビット下位の前記演算処理部において演算されたＧｅｎｅｒａｔｅ信号とを前記第６オペランド演算部に入力することを特徴とする請求項９に記載の演算装置。
【請求項１２】
メモリのアドレス修飾部に用いられる演算装置であって、
所定の処理が行われた後のベース値及びアドレス値、第１キャリー情報に基づいて、メモリアドレスを演算するアドレス計算部と、
前記ベース値及び前記アドレス値の所定の下位ビットと前記第１キャリー情報とから演算される第２キャリー情報と、前記ベース値及び前記アドレス値の所定の上位ビットとに基づいて、アクセスを行う目的アドレスと前記メモリアドレスとの一致・不一致を判定し、当該判定結果をＨｉｔ信号として出力するヒット判定部とを備え、
前記ヒット判定部は、前記アドレス計算部に対して並列に動作されることを特徴とする演算装置。
【請求項１３】
請求項１２に記載の演算装置であって、
前記ヒット判定部は、個々のビット状態が全て”１”であるか否かにより前記Ｈｉｔ信号の状態を決定するＯｎｅ予測ビット列を、前記第２キャリー情報と、前記ベース値及び前記アドレス値の所定の上位ビットと、前記目的アドレスとを演算することで求めることを特徴とする演算装置。
【請求項１４】
請求項１３に記載の演算装置であって、
前記アドレス計算部は、前記ベース値及び前記アドレス値の所定の下位ビットと前記第１キャリー情報とを演算した演算結果を、前記第２キャリー情報として前記ヒット判定部に供給することを特徴とする演算装置。
【請求項１５】
請求項１４に記載の演算装置であって、
前記ヒット判定部は、前記第２キャリー情報が”０”と仮定した前記Ｏｎｅ予測ビット列と、前記第２キャリー情報が”１”と仮定した前記Ｏｎｅ予測ビット列とを演算で予め求めておき、前記アドレス計算部から前記第２キャリー情報が供給された時点で、いずれかの前記Ｏｎｅ予測ビット列を選択し、前記Ｈｉｔ信号を出力することを特徴とする演算装置。
【請求項１６】
請求項１４に記載の演算装置であって、
前記ヒット判定部は、個々のビット状態が全て”０”であるか否かにより前記Ｈｉｔ信号の状態を決定するＺｅｒｏ予測ビット列を、前記第２キャリー情報と、前記ベース値及び前記アドレス値の所定の上位ビットと、前記目的アドレスとを演算することでさらに求め、前記アドレス計算部から前記第２キャリー情報が供給された時点で、前記Ｏｎｅ予測ビット列又は前記Ｚｅｒｏ予測ビット列のいずれかを選択し、前記Ｈｉｔ信号を出力することを特徴とする演算装置。
【請求項１７】
請求項１２乃至請求項１５のいずれかに記載の演算装置であって、
仮想メモリシステムのＴＬＢに用いられることを特徴とする演算装置。
【請求項１８】
請求項１２乃至請求項１５のいずれかに記載の演算装置であって、
Fully Associative型キャッシュに用いられることを特徴とする演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置に係る発明であって、特に、飽和処理を行う演算装置に関するものである。
【背景技術】
【０００２】
ＤＳＰ（Digital Signal Processor）等では、出力される機器やデータの種類によって入力したビット長の表現範囲と異なるビット長の表現範囲で出力される場合がある。例えば、ＤＳＰでは入力された４０ビット長の表現範囲のデータを加減算処理して、１６ビット長の表現範囲のデータとして出力する場合がある。４０ビット長の表現範囲のデータを１６ビット長の表現範囲のデータとして出力する場合、入力されるデータによっては出力データがオーバーフローを起こすことが考えられる。このオーバーフロー対策として、一般に飽和処理が行われる。
【０００３】
具体的に、従来のＤＳＰに用いられる演算装置では、加減算処理の演算結果が１６ビット長の表現範囲内にあるか否かについて調査し、この調査結果において演算結果が１６ビット長の表現範囲内でない場合に、符号に応じて出力データを１６ビット長の表現範囲内の正の最大値又は負の最小値を出力していた。例えば、入力オペランドＳ０［０：３９］、Ｓ１［０：３９］の加算結果をｄｔｓｕｍ［０：３９］とする。なお、「［０：３９］」の表現は、４０ビットのバス表現である。この場合に、演算結果が１６ビット長の表現範囲を超えるのは、１６ビット長の表現範囲外（符号を表す１ビットを含めた上位２５ビット）が全て”０”とならない場合である。つまり、ｄｔｓｕｍ［０：３９］が、ｄｔｓｕｍ［０］＝＝１’ｂ０で且つｄｔｓｕｍ［１：２４］！＝２４’ｈ００００００であれば１６ビット長の表現範囲を超えていることになる。なお、「＝＝」は両辺が一致する条件演算子を、「！＝」は両辺が不一致の条件演算子を、「１’ｂ」は１ビットの２進数表現を、「２４’ｈ」は２４ビットの１６進数表現をそれぞれ表している。また、ｄｔｓｕｍ［０］は符号を表し、”０”の場合正を”１”の場合負を表している。
【０００４】
そこで、ｄｔｓｕｍ［０：３９］が１６ビット長の表現範囲を超えている場合には、飽和処理が行われ、出力されるｄｔｓｕｍ［０：３９］＝４０ｈ’００００００７ＦＦＦと１６ビット長の表現範囲の正の最大値となる。また、ｄｔｓｕｍ［０：３９］が、ｄｔｓｕｍ［０］＝＝１’ｂ１で且つｄｔｓｕｍ［１：２４］！＝２４’ｈＦＦＦＦＦＦであれば負の数であって１６ビット長の表現範囲を超えていることになる。そこで、ｄｔｓｕｍ［０：３９］が１６ビット長の表現範囲を超えている場合には、飽和処理が行われ、出力されるｄｔｓｕｍ［０：３９］＝４０ｈ’ＦＦＦＦＦＦ８０００と１６ビット長の表現範囲の最小値となる。
【０００５】
出力されるデータの表現範囲は１６ビット長には限られず、例えば３２ビット長であっても良い。この３２ビット長の表現範囲であっても、上記の場合と同様に、ｄｔｓｕｍ［０：３９］が、ｄｔｓｕｍ［０］＝＝１’ｂ０で且つｄｔｓｕｍ［１：８］！＝８’ｈ００であれば３２ビット長の表現範囲を超えていることになる。そこで、ｄｔｓｕｍ［０：３９］が３２ビット長の表現範囲を超えている場合には、飽和処理が行われ、出力されるｄｔｓｕｍ［０：３９］＝４０ｈ’００７ＦＦＦＦＦＦＦと３２ビット長の表現範囲の正の最大値となる。また、ｄｔｓｕｍ［０：３９］が、ｄｔｓｕｍ［０］＝＝１’ｂ１で且つｄｔｓｕｍ［１：８］！＝８’ｈＦＦであれば負の数であって３２ビット長の表現範囲を超えていることになる。そこで、ｄｔｓｕｍ［０：３９］が３２ビット長の表現範囲を超えている場合には、飽和処理が行われ、出力されるｄｔｓｕｍ［０：３９］＝４０ｈ’ＦＦ８０００００００と１６ビット長の表現範囲の最小値となる。
【０００６】
特許文献１や特許文献２に示されている従来の演算装置では、上記のアルゴリズムをそのままハードウェアに実装した場合であり、加算処理と飽和処理とが直列実行されている。つまり、４０ビットの入力オペランドの加算処理実行後に上位２５ビットを調べることで１６ビット長の表現範囲内か否かを調査する経路がクリティカルパスとなる。
【０００７】
【特許文献１】特開平０４−１６７１７０号公報
【特許文献２】特開平０４−２８６０２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
通常、高速のマイクロプロセッサや汎用ＤＳＰの演算装置では、処理を並列に行うためパイプライン処理が行われている。しかし、加算器においては、このパイプライン処理の処理効果が出にくいため、加算器が演算装置のクロックサイクルを決定することになる場合が多い。また、背景技術で説明したように加算処理を直列に接続して飽和処理を行うと、飽和処理分だけクロックサイクルをさらに遅くしてしまう問題があった。
【０００９】
具体的に、飽和処理において２５ビットの論理演算を行うと、４０ビットの加算処理の２０〜５０％程度の処理時間を必要とする。そのため、飽和処理を行わない演算装置に比べて、飽和処理を行う演算装置は、１．２〜１．５倍程度の処理時間が必要となる。なお、飽和処理自体をパイプライン処理することも考えられるが、データハザード等が生じるなどの問題点を有しているので、演算装置の飽和処理にパイプライン処理を用いてもシステム性能が低下してしまう問題があった。
【００１０】
そこで、本発明は、飽和処理を行う演算装置において演算処理と飽和処理とに関係する遅延時間を低減し、処理の高速化を図ることが可能な演算装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る解決手段は、第１入力オペランドと第２入力オペランドとの加算又は減算演算を行い演算結果を出力する演算処理部と、第１入力オペランドと第２入力オペランドに基づいて、演算結果が所定ビット長の表現範囲内か否かを予測し飽和予測信号を出力する飽和予測部と、飽和予測部からの飽和予測信号において演算結果が所定ビット長の表現範囲内にないと予測される場合に、所定ビット長の表現範囲内の最大値又は最小値を出力結果とし、飽和予測信号において演算結果が所定ビット長の表現範囲内にあると予測される場合に、演算結果を出力結果とすることを選択する選択部とを備え、飽和予測部は、演算処理部に対して並列に動作される。
【発明の効果】
【００１２】
本発明に記載の演算装置は、飽和予測部が演算処理部に対して並列に動作されるので、飽和予測部の処理遅延を低減し、演算装置の高速化が図れる効果がある。
【発明を実施するための最良の形態】
【００１３】
（実施の形態１）
図１に、本実施の形態に係る演算装置のブロック図を示す。図１に示す演算装置では、入力オペランドＳ０［０：３９］、Ｓ１［０：３９］の加算演算を行い演算結果ｄｔｓｕｍ［０：３９］を出力する演算処理部である加算器１と、入力オペランドＳ０［０：３９］、Ｓ１［０：３９］とＥ１ＨＩＡＳＡＭＯＤ［１：２］から加算器１の演算結果が所定ビット長（例えば１６ビット長）の表現範囲内にあるか否かの飽和条件を予測し、飽和予測信号（ｓａｔｅｎ）を出力する飽和予測部２（Saturation Anticipator）とを備えており、演算処理部である加算器１と飽和予測部２は並列に動作するように構成されている。なお、Ｅ１ＨＩＡＳＡＭＯＤ［１：２］は、飽和予測部２を含む飽和処理をエネーブルにするかディセーブルにするかを設定する信号である。
【００１４】
さらに、図１に示す演算装置は、加算器１の演算結果（演算結果の符号を示す部分ｄｔｓｕｍ［０］）とＥ１ＨＩＡＳＡＭＯＤ［１：２］とから、所定ビット長の表現範囲の最大値又は最小値を生成する飽和値生成部３（Saturation Values）と、飽和予測部２からの飽和予測信号（ｓａｔｅｎ）に基づいて、加算器１からの演算結果、又は飽和値生成部３で生成された最大値（最小値）を選択し、出力結果（ｄｔ［０：３９］）とする選択部４とを備えている。
【００１５】
次に、図１に示した演算装置の動作について以下に説明する。なお、本実施の形態に係る演算装置も、４０ビットの入力オペランドＳ０［０：３９］、Ｓ１［０：３９］を、１６ビット長又は３２ビット長の表現範囲で出力する場合を例に説明する。まず、飽和予測部２では、１６ビット長の表現範囲内にあるか否かの飽和条件を予測するが、具体的には背景技術で説明した方法と同じである。つまり、飽和予測部２では、加算器１から出力されるｄｔｓｕｍ［０：２４］の２５ビット全てがＡｌｌ”０”又はＡｌｌ”１”になるか否かを予測する。
【００１６】
つまり、ｄｔｓｕｍ［ｉ］が”０”又は”１”であるかを、入力オペランドＳ０［ｉ：ｉ＋１］、Ｓ１［ｉ：ｉ＋１］から予測する。なお、加算器１では、ｄｔｓｕｍ［０：２４］＝Ｓ０［０：２４］＋Ｓ１［０：２４］＋Ｃｉｎの演算が行われている。ここで、Ｃｉｎはキャリー入力を表している。本実施の形態に係る飽和予測部２では、例えば演算結果ｄｔｓｕｍ［０：３９］の上位２５ビットが”０”となるのを予測したＺｅｒｏ予測ビット列Ｅ０［０：２４］を生成し、当該ビット列の論理積を＆Ｅ０［０：２４］としｕｐ２４ａ０と表す。なお、Ｅ０［０：２４］は、ｄｔｓｕｍ［０：２４］のビットが”０”の場合、対応するビットが”１”となる。
【００１７】
同様に、本実施の形態に係る飽和予測部２では、演算結果ｄｔｓｕｍ［０：３９］の上位２５ビットが”１”となるのを予測したＯｎｅ予測ビット列Ｅ１［０：２４］を生成し、当該ビット列の論理積を＆Ｅ１［０：２４］としｕｐ２４ａ１と表す。なお、Ｅ１［０：２４］は、ｄｔｓｕｍ［０：２４］のビットが”１”の場合、対応するビットが”１”となる。本実施の形態に係る飽和予測部２では、さらに予測したｕｐ２４ａ０とｕｐ２４ａ１とから飽和予測ビットであるＳａｔ１６を求める。上記では、Ｚｅｒｏ予測ビット列Ｅ０［０：２４］とＯｎｅ予測ビット列Ｅ１［０：２４］とを別々に設けているが、両者を区別せずに飽和予測ビット列としても良い。
【００１８】
次に、Ｚｅｒｏ予測ビット列Ｅ０［０：２４］の求め方について説明する。まず、一般的な加算器の論理演算において用いられているＰｒｏｐａｇａｔｅ信号（Ｐ）、Ｇｅｎｅｒａｔｅ信号（Ｇ）、Ｋｉｌｌ信号（Ｋ）を数１のように定義する。
【００１９】
【数１】
2006127469.tif 000003
【００２０】
数１において、「＾」は二項演算子の排他的論理和を表し、「＆」は二項演算子の論理積を表し、「｜」は二項演算子の論理和を表し、「〜」は反転の演算子を表している。
【００２１】
まず、ｄｔｓｕｍ［０：２４］の上位２ビットｄｔｓｕｍ［０：１］について考えた場合、加算器に入力される入力オペランドＳ０［０：１］、Ｓ１［０：１］の全ての組み合わせをＰ信号、Ｇ信号、Ｋ信号で表すと図２の左列のようになる。そして、Ｐ信号、Ｇ信号、Ｋ信号で表された入力オペランドＳ０［０：１］、Ｓ１［０：１］の演算結果ｄｔｓｕｍ［０：１］が右列の２列に示されている。なお、図２の右列が２列になっているのは、キャリー入力（Ｃｉｎ）の違いによるものである。つまり、Ｃｉｎ＝０の場合が右列の１列目に記載され、Ｃｉｎ＝１の場合が右列の２列目に記載されている。
【００２２】
図２に示した入力オペランドＳ０［０：１］、Ｓ１［０：１］と演算結果ｄｔｓｕｍ［０：１］との関係より、入力がＫＫ、ＧＫ，ＰＧの場合、キャリー入力の状態にかかわらずいずれのｄｔｓｕｍ［０］が”０”となっている。このことから、入力がＫＫ、ＧＫ，ＰＧの場合、ｄｔｓｕｍ［０］が必ず”０”になると予想される。しかし、入力がＫＰ、ＧＰ，ＰＰの場合、キャリー入力の状態によってｄｔｓｕｍ［０］は”０”となったり”１”なったりと両方を取りうる確率がある。そして、入力がＫＰ、ＧＰの場合には、仮にｄｔｓｕｍ［０］が”０”となってもｄｔｓｕｍ［１］は必ず”１”となる。そのため、ｄｔｓｕｍ［０：２４］がＡｌｌ”０”であるか否かについて予測する観点から、ｄｔｓｕｍ［０］が”０”でないと予測する入力にＫＰ、ＧＰの場合を含めても問題がない。
【００２３】
一方、入力がＰＰの場合には、仮にｄｔｓｕｍ［０］が”０”と予想して、その予想が間違っていたとしてもｄｔｓｕｍ［１：２４］の予測においてＰＫとなる入力組み合わせが出現することによるので、Ｚｅｒｏ予測ビット列Ｅ０［ｉ］＝０となり、論理積＆Ｅ０［０：２４］＝０となる。また、Ｐ［０：２４］がＡｌｌ”１”の場合には、Ｅ０［２４］が正しく求められれば、その結果によりｄｔｓｕｍ［０：２４］がＡｌｌ”０”となるのかＡｌｌ”１”となるのかを決定することができる。以上の観点より、ｄｔｓｕｍ［０］が”０”であると予測する入力にＰＰの場合も含めることができる。
【００２４】
上記の内容から、＆Ｅ０［０：２４］＝１（ｄｔｓｕｍ［０：２４］がＡｌｌ”０”）となるのは、入力オペランドがＫＫ、ＧＫ，ＰＧ，ＰＰの場合である。以下の数２にｉビット目のＺｅｒｏ予測ビットＥ０［ｉ］の式を示す。
【００２５】
【数２】
2006127469.tif 000004
【００２６】
具体的に、４０ビットの演算結果を１６ビット長の表現範囲内にあるか否かを予測する処理に数２を適用すると、以下の数３のようになる。
【００２７】
【数３】
2006127469.tif 000005
【００２８】
なお、最下位ビットである２４ビット目のＥ０［２４］は別途考える必要があるため、数３では０ビット目から２３ビット目までのＺｅｒｏ予測ビット列Ｅ０［０：２３］が示されている。なお、Ｅ０［２４］は数４のように示される。
【００２９】
【数４】
2006127469.tif 000006
【００３０】
ここで、Ｃｏ［２５］は２５ビット目のキャリー出力を表している。そして、このＥ０［２４］を正しく予測する方法は、現在のところ見つかっておらず、下位からのキャリーを予測する必要がある。すなわち、〜Ｐ［２４］＾Ｃｏ［２５］は、加算器の出力であるｄｔｓｕｍ［２４］の反転の結果と等しくなる。
【００３１】
同様に、図２に示す関係から入力オペランドがＰＫ，ＫＧ，ＧＧ，ＰＰの場合にｄｔｓｕｍ［０：１］が”１１”の並びとなることから、ｉビット目のＯｎｅ予測ビットＥ１［ｉ］及び具体例であるＯｎｅ予測ビット列Ｅ１［０：２３］を求めると数５のようになる。
【００３２】
【数５】
2006127469.tif 000007
【００３３】
なお、数５に示されているＥ１［２４］を正しく予測する方法は、現在のところ見つかっておらず、下位からのキャリーを予測する必要がある。すなわち、Ｐ［２４］＾Ｃｏ［２５］は、加算器の出力であるｄｔｓｕｍ［２４］と等しくなる。
【００３４】
以上のように、Ｚｅｒｏ予測ビット列Ｅ０［０：２４］とＯｎｅ予測ビット列Ｅ１［０：２４］とから１６ビット長の表現範囲の飽和予測ビットＳａｔ１６を求めると、数６のようになる。
【００３５】
【数６】
2006127469.tif 000008
【００３６】
上記で述べた方法を用いて、同様に３２ビット長の表現範囲の飽和予測ビットＳａｔ３２を求めると数７のようになる。
【００３７】
【数７】
2006127469.tif 000009
【００３８】
次に、Ｅ１ＨＩＡＳＡＭＯＤ［１：２］は、例えば２’ｂ００＝「飽和処理をしない」、２’ｂ１０＝「１６ビット長へ飽和処理する」、２’ｂ０１＝「３２ビット長へ飽和処理する」、２’ｂ１１＝「禁止状態」の信号を飽和予測部２に供給する。この信号のうち２’ｂ１０＝「１６ビット長へ飽和処理する」は演算結果が１６ビット長の表現範囲内になるように飽和処理を行うことを指示するエネーブル信号（Ｓａｔ１６ｅｎ）であり、２’ｂ０１＝「３２ビット長へ飽和処理する」は３２ビット長の表現範囲内になるように飽和処理を行うことを指示するエネーブル信号（Ｓａｔ３２ｅｎ）である。飽和予測部２では、飽和予測ビットＳａｔ１６、Ｓａｔ３２とエネーブル信号Ｓａｔ１６ｅｎ，Ｓａｔ３２ｅｎとから数８に示すような飽和予測信号（ｓａｔｅｎ）を生成し、選択部４に供給する。
【００３９】
【数８】
2006127469.tif 000010
【００４０】
飽和予測信号（ｓａｔｅｎ）が”１”の場合、選択部４は演算結果の符号（ｄｔｓｕｍ［０］）に応じた飽和値を出力結果ｄｔ［０：３９］として出力する。なお、飽和予測信号（ｓａｔｅｎ）が”０”の場合、選択部４は加算器１の演算結果をそのまま出力結果ｄｔ［０：３９］として出力する。
【００４１】
以上のように、本実施の形態に係る飽和予測部は、入力オペランドＳ０［ｉ］と入力オペランドＳ１［ｉ］に基づいて、飽和予測ビット列Ｅ０［ｉ］（Ｚｅｒｏ予測ビット），Ｅ１［ｉ］（Ｏｎｅ予測ビット）を生成し、当該飽和予測ビット列の論理積＆Ｅ０［ｉ］，＆Ｅ１［ｉ］である飽和予測信号（ｓａｔｅｎ）を求めるように構成することで、論理の簡素化が可能となり回路規模を小さくすることができる。また、所定ビット長の表現範囲外の最下位ビットについては加算器１での演算結果を用いるので、予測の困難性を回避することができ正確な予想が可能となる。さらに、本実施の形態に係るアルゴリズムを用いることで、正確に飽和予測を行うことが可能となる。
【００４２】
次に、Ｚｅｒｏ予測ビットＥ０［ｉ］を演算する論理回路の構成を図３に、Ｏｎｅ予測ビットＥ１［ｉ］を演算する論理回路の構成を図４にそれぞれ示す。まず、図３では、ｉビット目の入力オペランドＳ０［ｉ］，Ｓ１［ｉ］の排他的論理和を演算するＸＯＲ回路３１と、ｉ＋１ビット目の入力オペランドＳ０［ｉ＋１］，Ｓ１［ｉ＋１］の否定論理和を演算するＮＯＲ回路３２と、ＸＯＲ回路３１の出力とＮＯＲ回路３２の出力との排他的論理和を演算するＸＯＲ回路３３とで構成されている。
【００４３】
図４では、ｉビット目の入力オペランドＳ０［ｉ］，Ｓ１［ｉ］の排他的論理和を演算するＸＯＲ回路４１と、ｉ＋１ビット目の入力オペランドＳ０［ｉ＋１］，Ｓ１［ｉ＋１］の論理積を演算するＡＮＤ回路４２と、ＸＯＲ回路４１の出力とＡＮＤ回路４２の出力との排他的論理和を演算するＸＯＲ回路４３とで構成されている。
【００４４】
図３で示したＺｅｒｏ予測ビットＥ０［ｉ］を演算する回路と図４で示したＯｎｅ予測ビットＥ１［ｉ］を演算する回路をアレイ上に並べることで飽和予測部２を構成することができる。例えば、Ｅ０［０：２３］なら図３に示した論理回路を２４個並べ、Ｅ１［０：２３］なら図４に示した論理回路を２４個並べて飽和予測部２構成する。
【００４５】
なお、本実施の形態では、表現範囲を１６ビット長又は３２ビット長に変更できるように、エネーブル信号Ｓａｔ１６ｅｎ，Ｓａｔ３２ｅｎが供給される。図５に、Ｓａｔ１６ｅｎとＳａｔ３２ｅｎを含めた飽和予測部２の構成を示す。
【００４６】
図５では、図３に示す論理回路（以下、Ｅ０ｇｅｎ［ｉ］（ｉは任意の整数）ともいう）が２４個並べられ、図４に示す論理回路（以下、Ｅ１ｇｅｎ［ｉ］（ｉは任意の整数）ともいう）も２４個並べられている。なお、図３に示したＥ０ｇｅｎ［ｉ］では、Ｚｅｒｏ予測ビットＥ０［ｉ］を得るために入力オペランドＳ０［ｉ］，Ｓ１［ｉ］，Ｓ０［ｉ＋１］，Ｓ１［ｉ＋１］の４つの入力が必要であったが、図５に示すＥ０ｇｅｎ［ｉ］では、入力オペランドＳ０［ｉ＋１］，Ｓ１［ｉ＋１］からの入力については図示を省略している。図５に示すＥ１ｇｅｎ［ｉ］も同様である。そして、Ｅ０ｇｅｎ［ｉ］の出力は、４ビット毎にＡＮＤ回路５１に入力され、Ｅ０ｇｅｎ［０］からＥ０ｇｅｎ［７］に対応するＡＮＤ回路５１の出力はＡＮＤ回路５２に入力され、Ｅ０ｇｅｎ［８］からＥ０ｇｅｎ［２３］に対応するＡＮＤ回路５１の出力はＡＮＤ回路５３に入力される。
【００４７】
同様に、Ｅ１ｇｅｎ［ｉ］の出力は、４ビット毎にＡＮＤ回路５４に入力され、Ｅ１ｇｅｎ［０］からＥ１ｇｅｎ［７］に対応するＡＮＤ回路５４の出力はＡＮＤ回路５５に入力され、Ｅ１ｇｅｎ［８］からＥ１ｇｅｎ［２３］に対応するＡＮＤ回路５４の出力はＡＮＤ回路５６に入力される。
【００４８】
次に、ＡＮＤ回路５２の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［８］とがＮＡＮＤ回路５７に入力され、ＡＮＤ回路５２，５３の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［２４］とがＮＡＮＤ回路５８に入力される。同様に、ＡＮＤ回路５５の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［８］の反転結果とがＮＡＮＤ回路５９に入力され、ＡＮＤ回路５５，５６の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［２４］の反転結果とがＮＡＮＤ回路６０に入力される。
【００４９】
ＮＡＮＤ回路５７の出力とＮＡＮＤ回路５９の出力とがＯＲ回路６１に入力され、ＯＲ回路６１はＳａｔ３２を出力する。ＮＡＮＤ回路５８の出力とＮＡＮＤ回路６０の出力とがＯＲ回路６３に入力され、ＯＲ回路６３はＳａｔ１６を出力する。Ｓａｔ３２は、ＡＮＤ回路６２でエネーブル信号であるＳａｔ３２ｅｎとのＡＮＤ演算が行われ、Ｓａｔ１６は、ＡＮＤ回路６４でエネーブル信号であるＳａｔ１６ｅｎとのＡＮＤ演算が行われる。ＯＲ回路６５は、ＡＮＤ回路６２の出力とＡＮＤ回路６４の出力とのＯＲ演算を行い、飽和予測信号であるｓａｔｅｎを出力する。
【００５０】
以上のように、本実施の形態では、図３及び図４に示すＥ０ｇｅｎ［ｉ］及びＥ１ｇｅｎ［ｉ］の論理回路と、図５に示す飽和予測部２の構成を採用するので、加算演算と飽和処理を並列に行うことができ、演算装置の高速化を図ることができる。
【００５１】
なお、本実施の形態では、演算処理部が加算器の場合について説明したが、本発明はこれに限られず演算処理部が減算器であっても良い。また、本実施の形態を含む本発明に係る演算装置は、汎用のＤＳＰはもちろんのことＤＳＰの命令に類似した命令が追加されたマイクロプロセッサや高機能の専用ＬＳＩ等にも適用することができる。さらに、これらを搭載したＳｏＣ（System On a Chip）製品に展開できることは言うまでもない。
【００５２】
（実施の形態２）
実施の形態１で説明したように、図５に示す飽和予測部２では加算器１からの出力であるｄｔｓｕｍ［８］及びｄｔｓｕｍ［３２］を利用する。しかし、加算器１と飽和予測部２とが並列に駆動されていても、加算器１からｄｔｓｕｍ［８］及びｄｔｓｕｍ［３２］の演算結果を得てから飽和予測部２が複数の処理を行う必要があれば、加算器１の演算が終了しても飽和予測部２の処理が終わらないため演算装置全体として処理が遅延することも考えられる。そこで、本実施の形態では、飽和予測部２において加算器１からの演算結果をより後段の処理で利用することにすることで、演算結果を得てから処理が少なくなり演算装置全体として処理を高速化することができる。
【００５３】
具体的に、本実施の形態に係る飽和予測部２の構成図を図６に示す。なお、図６では、図５と同じ構成の部分については、同じ符号を付して説明する。まず、図６では、Ｅ０ｇｅｎ［ｉ］が２４個並べられ、Ｅ１ｇｅｎ［ｉ］も２４個並べられている。そして、Ｅ０ｇｅｎ［ｉ］の出力は、４ビット毎にＡＮＤ回路５１に入力され、Ｅ０ｇｅｎ［０］からＥ０ｇｅｎ［７］に対応するＡＮＤ回路５１の出力はＡＮＤ回路５２に入力され、Ｅ０ｇｅｎ［８］からＥ０ｇｅｎ［２３］に対応するＡＮＤ回路５１の出力はＡＮＤ回路５３に入力される。
【００５４】
同様に、Ｅ１ｇｅｎ［ｉ］の出力は、４ビット毎にＡＮＤ回路５４に入力され、Ｅ１ｇｅｎ［０］からＥ１ｇｅｎ［７］に対応するＡＮＤ回路５４の出力はＡＮＤ回路５５に入力され、Ｅ１ｇｅｎ［８］からＥ１ｇｅｎ［２３］に対応するＡＮＤ回路５４の出力はＡＮＤ回路５６に入力される。
【００５５】
次に、インバータ６６で反転されたＡＮＤ回路５２の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［８］と、エネーブル信号であるＳａｔ３２ｅｎとがＡＮＤ回路６７に入力されている。そして、ＡＮＤ回路５２の出力とＡＮＤ回路５３の出力とがＮＡＮＤ回路６８に入力され、当該ＮＡＮＤ回路６８の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［２４］と、エネーブル信号であるＳａｔ１６ｅｎとがＡＮＤ回路６９に入力される。同様に、インバータ７０で反転されたＡＮＤ回路５５の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［８］の反転結果と、エネーブル信号であるＳａｔ３２ｅｎとがＡＮＤ回路７１に入力されている。そして、ＡＮＤ回路５５の出力とＡＮＤ回路５６の出力とがＮＡＮＤ回路７２に入力され、当該ＮＡＮＤ回路７２の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［２４］の反転結果と、エネーブル信号であるＳａｔ１６ｅｎとがＡＮＤ回路７３に入力される。
【００５６】
ＡＮＤ回路６７の出力と、ＡＮＤ回路６９の出力と、ＡＮＤ回路７１の出力と、ＡＮＤ回路７３の出力とがＯＲ回路７４に入力され、当該ＯＲ回路７４は飽和予測信号であるｓａｔｅｎを出力する。
【００５７】
図６に示す飽和予測部２の構成では、エネーブル信号であるＳａｔ１６ｅｎ，Ｓａｔ３２ｅｎが入力されてから飽和予測信号であるｓａｔｅｎを出力するまでの間に２段の演算処理が行われている。一方、図５に示す飽和予測部２の構成では、エネーブル信号であるＳａｔ１６ｅｎ，Ｓａｔ３２ｅｎが入力されてから飽和予測信号であるｓａｔｅｎを出力するまでの間に４段の演算処理が行われている。そのため、図６の飽和予測部２の方が、Ｓａｔ１６ｅｎ，Ｓａｔ３２ｅｎが入力されてからｓａｔｅｎを出力するまでの間の処理を短縮できるので、演算装置全体の高速化が図れる。
【００５８】
以上のように、本実施の形態では、飽和予測部２の構成を図６に示すようにすることで、演算装置の高速化を図ることができる。
【００５９】
（実施の形態３）
本実施の形態に係る飽和予測部２は、実施の形態２で説明した飽和予測部２に対しマルチプレクサを用いた例である。具体的に、本実施の形態に係る飽和予測部２の構成図を図７に示す。なお、図７では、図６と同じ構成の部分については、同じ符号を付して説明する。
【００６０】
まず、図７では、Ｅ０ｇｅｎ［ｉ］が２４個並べられ、Ｅ１ｇｅｎ［ｉ］も２４個並べられている。そして、Ｅ０ｇｅｎ［ｉ］の出力は、４ビット毎にＡＮＤ回路５１に入力され、Ｅ０ｇｅｎ［０］からＥ０ｇｅｎ［７］に対応するＡＮＤ回路５１の出力はＡＮＤ回路５２に入力され、Ｅ０ｇｅｎ［８］からＥ０ｇｅｎ［２３］に対応するＡＮＤ回路５１の出力はＡＮＤ回路５３に入力される。
【００６１】
同様に、Ｅ１ｇｅｎ［ｉ］の出力は、４ビット毎にＡＮＤ回路５４に入力され、Ｅ１ｇｅｎ［０］からＥ１ｇｅｎ［７］に対応するＡＮＤ回路５４の出力はＡＮＤ回路５５に入力され、Ｅ１ｇｅｎ［８］からＥ１ｇｅｎ［２３］に対応するＡＮＤ回路５４の出力はＡＮＤ回路５６に入力される。
【００６２】
次に、インバータ６６で反転されたＡＮＤ回路５２の出力と、エネーブル信号であるＳａｔ３２ｅｎとがＡＮＤ回路７５に入力されている。そして、ＡＮＤ回路５２の出力とＡＮＤ回路５３の出力とがＮＡＮＤ回路６８に入力され、当該ＮＡＮＤ回路６８の出力と、エネーブル信号であるＳａｔ１６ｅｎとがＡＮＤ回路６９に入力される。同様に、インバータ７０で反転されたＡＮＤ回路５５の出力と、エネーブル信号であるＳａｔ３２ｅｎとがＡＮＤ回路７７に入力されている。そして、ＡＮＤ回路５５の出力とＡＮＤ回路５６の出力とがＮＡＮＤ回路７２に入力され、当該ＮＡＮＤ回路７２の出力と、エネーブル信号であるＳａｔ１６ｅｎとがＡＮＤ回路７８に入力される。
【００６３】
ＡＮＤ回路７５の出力と、ＡＮＤ回路７７の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［８］とが第１マルチプレクサ部７９に入力される。同様に、ＡＮＤ回路７６の出力と、ＡＮＤ回路７８の出力と、加算器で実際に演算された結果であるｄｔｓｕｍ［２４］とが第２マルチプレクサ部８０に入力される。第１マルチプレクサ部７９の出力と、第２マルチプレクサ部８０の出力とがＯＲ回路８１に入力され、当該ＯＲ回路８１は飽和予測信号であるｓａｔｅｎを出力する。
【００６４】
本実施の形態に係る飽和予測部２は、図６に示した飽和予測部２と同じように、加算器で実際に演算された結果であるｄｔｓｕｍ［８］，ｄｔｓｕｍ［２４］をできる限り後段で入力するとともに、高速動作が可能なマルチプレクサを利用している。
【００６５】
以上のように、本実施の形態では、飽和予測部２の構成を図７に示すようにすることで、演算装置の高速化を図ることができる。
【００６６】
（実施の形態４）
実施の形態１では、図３で示したＺｅｒｏ予測ビットＥ０［ｉ］演算する回路と図４で示したＯｎｅ予測ビットＥ１［ｉ］を演算する回路とを用いて飽和予測部２が構成されていた。しかし、図からも明らかなように、図３や図４の回路は４つの入力が必要となる。例えばＺｅｒｏ予測ビットＥ０［０］を求めるためには、入力オペランドＳ０［０］，Ｓ１［０］，Ｓ０［１］，Ｓ１［１］の４つの入力が必要となる。そのため、実施の形態１では、Ｚｅｒｏ予測ビットＥ０［ｉ］を演算する回路やＯｎｅ予測ビットＥ１［ｉ］を演算する回路の入力ファンイン容量が大きくなるとともに回路規模も大きくなることが考えられる。そこで、本実施の形態では、これに代えて図８に示すＺｅｒｏ予測ビットＥ０［ｉ］を演算する回路、図９に示すＯｎｅ予測ビットＥ１［ｉ］を演算する回路を用いる。
【００６７】
図８に示すＺｅｒｏ予測ビットＥ０［ｉ］を演算する論理回路は、入力オペランドＳ０［ｉ］，Ｓ１［ｉ］が反転入力されるＡＮＤ回路８５及びＡＮＤ回路８６と、ＡＮＤ回路８６の出力とＡＮＤ回路８５の反転出力が入力されるＯＲ回路８７と、ｉ＋１ビット目のＫｉｌｌ信号（Ｋ［ｉ＋１］）とＯＲ回路８７の出力が入力されるＸＯＲ回路８８とで構成されている。ここで、ＡＮＤ回路８５の出力はｉビット目のＫｉｌｌ信号（Ｋ［ｉ］）としても出力されている。また、ＸＯＲ回路８８の出力がＺｅｒｏ予測ビットＥ０［ｉ］となる。
【００６８】
一方、図９に示すＯｎｅ予測ビットＥ１［ｉ］を演算する論理回路は、入力オペランドＳ０［ｉ］，Ｓ１［ｉ］が入力されるＮＡＮＤ回路９１及びＡＮＤ回路９２と、ＮＡＮＤ回路９１の出力とＡＮＤ回路９２の出力が入力されるＮＯＲ回路９３と、ｉ＋１ビット目のＧｅｎｅｒａｔｅ信号（Ｇ［ｉ＋１］）の反転信号とＮＯＲ回路９３の出力が入力されるＸＯＲ回路９４とで構成されている。ここで、ＮＡＮＤ回路９１の出力はｉビット目のＧｅｎｅｒａｔｅ信号（Ｇ［ｉ］）の反転信号としても出力されている。また、ＸＯＲ回路９４の出力がＺｅｒｏ予測ビットＥ１［ｉ］となる。
【００６９】
図８及び図９からも分かるように、本実施の形態に係るＺｅｒｏ予測ビットＥ０［ｉ］及びＯｎｅ予測ビットＥ１［ｉ］を演算する論理回路では、入力オペランドＳ０［ｉ］，Ｓ１［ｉ］のみ入力され、入力オペランドＳ０［ｉ＋１］，Ｓ１［ｉ＋１］の入力が不要である。
【００７０】
以上のように、本実施の形態に係るＺｅｒｏ予測ビットＥ０［ｉ］及びＯｎｅ予測ビットＥ１［ｉ］を演算する論理回路を図８及び図９とすることで、入力ファンイン容量を軽減できるとともに回路規模を縮小することも可能になる。
【００７１】
（実施の形態５）
実施の形態４に係るＺｅｒｏ予測ビットＥ０［ｉ］及びＯｎｅ予測ビットＥ１［ｉ］を演算する論理回路では、入力オペランドＳ０［ｉ］，Ｓ１［ｉ］からＺｅｒｏ予測ビットＥ０［ｉ］及びＯｎｅ予測ビットＥ１［ｉ］を演算していた。しかし、本実施の形態に係るＺｅｒｏ予測ビットＥ０［ｉ］及びＯｎｅ予測ビットＥ１［ｉ］を演算する論理回路では、入力オペランドＳ０［ｉ］，Ｓ１［ｉ］に代えて、加算器１でのＰｒｏｐａｇａｔｅ信号、Ｇｅｎｅｒａｔｅ信号、Ｋｉｌｌ信号を利用する。
【００７２】
図１０に、本実施の形態に係るＺｅｒｏ予測ビットＥ０［ｉ］及びＯｎｅ予測ビットＥ１［ｉ］を演算する論理回路の構成を示す。図１０では、ｉビット目のＰｒｏｐａｇａｔｅ信号（Ｐ［ｉ］）とｉ＋１ビット目のＫｉｌｌ信号（Ｋ［ｉ＋１］）とが入力されるＸＯＲ回路１０１と、ｉビット目のＰｒｏｐａｇａｔｅ信号（Ｐ［ｉ］）とｉ＋１ビット目のＧｅｎｅｒａｔｅ信号（Ｇ［ｉ＋１］）とが入力されるＸＯＲ回路１０２とを備えている。そして、ＸＯＲ回路１０１がＺｅｒｏ予測ビットＥ０［ｉ］を出力し、ＸＯＲ回路１０２がＯｎｅ予測ビットＥ１［ｉ］を出力する。
【００７３】
以上にように、本実施の形態に係るＺｅｒｏ予測ビットＥ０［ｉ］及びＯｎｅ予測ビットＥ１［ｉ］を演算する論理回路を図１０のような構成にすることで、回路規模を縮小することができる。
【００７４】
（実施の形態６）
上記の実施の形態で説明した演算装置は様々な応用が可能であるが、本実施の形態ではキャッシュメモリのヒット判定に応用した例を説明する。まず、図１１に、キャッシュメモリのヒット判定の機能を有する従来の半導体装置のレイアウト図を示す。図１１に示すレイアウト図では、ＣＰＵコア１１０、メモリＩ／Ｆ１１１、Ｉ／Ｏ−ＩＦ１１２が設けられ、ＣＰＵコア１１０内にアドレス修飾部１１３、メモリＩ／Ｆ１１１内にキャッシュ判定部１１４が設けられている。
【００７５】
従来の半導体装置は、図１１に示すレイアウトから分かるように、アドレス修飾部１１３で修飾したアドレスをキャッシュ判定部１１４に送り、キャッシュ判定部１１４でヒット判定を行い、Ｈｉｔ信号を出力していた。アドレス修飾部１１３は、通常加算器で構成されるので、アドレス修飾部１１３及びキャッシュ判定部１１４のブロック図を図１２に示す。また、Ｈｉｔ信号を数式で表すと、数９となる。
【００７６】
【数９】
2006127469.tif 000011
【００７７】
ここで、数９に示す「＝＝」の演算子は、左辺と右辺が同じ値の時に”１”を返し、そうでないときに”０”を返すことを意味している。なお、本実施の形態以降では、「＝＝」の演算子を上記の意味で用いるものとする。
【００７８】
図１２に示すブロック図では、アドレス修飾部１１３の前段において、べ一ス値（Ｂａｓｅ）、減算の場合の前処理などがなされた後のアドレス値（Ａｄｄｒ）、キャリー入力（Ｃｉｎ）が作成され、アドレス修飾部１１３の後段に出力される。なお、べ一ス値（Ｂａｓｅ）及びアドレス値（Ａｄｄｒ）はそれぞれ３０ビットであり、数９ではＢａｓｅ［０：２９］、Ａｄｄｒ［０：２９］と表現されている。
【００７９】
アドレス修飾部１１３の後段には加算器１１５が設けられており、当該加算器１１５に入力されたべ一ス値（Ｂａｓｅ）、アドレス値（Ａｄｄｒ）、キャリー入力（Ｃｉｎ）からメモリアドレス（ＭｅｍＡ）が演算される。加算器１１５での演算式は、数９に示されており、３０ビットのメモリアドレス（ＭｅｍＡ）はＭｅｍＡ［０：２９］と表現されている。
【００８０】
加算後のメモリアドレス（ＭｅｍＡ）がメモリアクセスのための実アドレスとなるので、これがキャッシュ内に格納されているかどうかを、キャッシュ判定部１１４で判定する。図１２では、キャッシュ判定部１１４を構成する比較器ＣＭＰで、メモリアドレス（ＭｅｍＡ）の上位２７ビットとアクセスを行う目的アドレス（Ｔａｇ）とが比較され、当該結果に基づいてＨｉｔ信号が出力される。数９では、目的アドレス（Ｔａｇ）がＴａｇ［０：２６］と表現されている。
【００８１】
以上のように、従来の半導体装置では、図１２に示すように加算器１１５と比較器ＣＭＰとは直列に処理されるため、加算器１１５の結果が出るまで比較器ＣＭＰは待機する必要があった。また、加算器１１５及び比較器ＣＭＰは、どちらも遅延時間が大きい。そのため、図１２に示すキャッシュメモリのヒット判定では、Ｈｉｔ信号を得るための遅延が大きい問題があった。
【００８２】
そこで、本実施の形態では、数９で示した演算を以下のように変形することで、実施の形態１等で説明したＯｎｅ予測ビットＥ１列と対応させることができる。まず、数９の変形例を数１０に示す。
【００８３】
【数１０】
2006127469.tif 000012
【００８４】
次に、数１０の補数の式を数１１に示す。
【００８５】
【数１１】
2006127469.tif 000013
【００８６】
数１１の両辺から１を引くと数１２となる。
【００８７】
【数１２】
2006127469.tif 000014
【００８８】
数１２では、全ての加算器において３つのオペランドを加算しているが、これを２つのオペランドの加算に縮退させると数１３となる。
【００８９】
【数１３】
2006127469.tif 000015
【００９０】
なお、Ｃｏｍｐ＿Ｅｓｔ０、Ｃｏｍｐ＿Ｅｓｔ１、Ｓｕｍ＿Ｅｓｔ１、Ｃａｒｙ＿Ｅｓｔ１は、ヒット判定部での演算の中間値である。
【００９１】
数１３では、Ｓｕｍ＿Ｅｓｔ１［０：２６］と｛Ｃａｒｙ＿Ｅｓｔ１［１：２６］，Ｃｉｎ’｝との加算結果であるＣｏｍｐ＿Ｅｓｔ１［０：２６］がＡｌｌ”１”であるかどうかを求める式である。つまり、Ｃｏｍｐ＿Ｅｓｔ１［０：２６］は、Ｏｎｅ予測ビットＥ１列［０：２６］と対応し、Ｓｕｍ＿Ｅｓｔ１［０：２６］と｛Ｃａｒｙ＿Ｅｓｔ１［１：２６］，Ｃｉｎ’｝とがそれぞれ入力オペランドＳ０［ｉ］，Ｓ１［ｉ］（ｉは任意の整数）と対応するため、実施の形態１等の構成を利用することができ、キャッシュ判定部１１４を高速化することができる。
【００９２】
数１３を適用した場合のアドレス修飾部１１３の回路構成を図１３に示す。なお、図１３では、図１２と同一の構成要素については同一の符号を付している。図１３に示すアドレス修飾部１１３の前段においても、べ一ス値（Ｂａｓｅ）、アドレス値（Ａｄｄｒ）、キャリー入力（Ｃｉｎ）が作成され、アドレス修飾部１１３の後段に出力される。
【００９３】
しかし、図１３では、図１２と異なり、アドレス修飾部１１３の後段にキャッシュ判定部１１４に対応するヒット判定部１２１が設けられている。つまり、図１３のアドレス修飾部１１３の後段には、アドレス計算部１２０と、ヒット判定部１２１との２系統が分かれて並列処理できるように構成されている。
【００９４】
アドレス計算部１２０では、加算器１１５でべ一ス値（Ｂａｓｅ）、アドレス値（Ａｄｄｒ）、キャリー入力（Ｃｉｎ）を演算し、メモリアドレス（ＭｅｍＡ）を出力している。ヒット判定部１２１では、下位３ビットのＡｄｄｒ［２７：２９］と下位３ビットのＢａｓｅ［２７：２９］とが入力され、キャリー情報Ｃｉｎ’が出力される加算器１２２と、上位２７ビットのＡｄｄｒ［０：２６］と上位２７ビットのＢａｓｅ［０：２６］とＴａｇ［０：２６］とキャリー情報Ｃｉｎ’とが入力され、Ｃｏｍｐ＿Ｅｓｔ１［０：２６］が出力される演算回路ＣＳＡとが設けられている。
【００９５】
さらに、ヒット判定部１２１には演算回路Ｅ１，１２３が設けられ、Ｃｏｍｐ＿Ｅｓｔ１［０：２６］が、２７’ｈＦＦＦＦＦＦと同じ値の時にＨｉｔ信号”１”を返し、そうでないときにＨｉｔ信号”０”を返すように構成している。
【００９６】
本実施の形態に係るヒット判定部１２１は、アドレス計算部１２０と並列処理され、全加算器１段のアレイから構成される演算回路ＣＳＡを有するので、キャリー入力（Ｃｉｎ）を伝播させる必要がない。そのため、本実施の形態に係るアドレス修飾部１１３の後段は、高速にＨｉｔ信号の出力を行うことができる。したがって、本実施の形態に係るヒット判定部１２１は、アドレス計算部１２０と並列動作できるようになっているので、ヒット判定がアドレス計算の加算処理に隠蔽されることとなる。
【００９７】
なお、本実施の形態に係るヒット判定部１２１では、キャリー情報Ｃｉｎ’を求めるために加算器１２２を設けている。しかし、キャリー情報Ｃｉｎ’は、数１３や図１３から分かるように、アドレス計算部１２０の中間値と同じであることが分かる。そのため、アドレス計算部１２０の加算器１１５からキャリー情報Ｃｉｎ’の値を取り出すことができる。図１４に、本実施の形態の変形例であるアドレス修飾部１１３の回路構成を示す。図１４の回路構成は、ヒット判定部１２１に加算器１２２が設けられていない点以外は、図１３の回路構成と同じである。図１４に示す演算回路ＣＳＡでは、アドレス計算部１２０の加算器１１５からキャリー情報Ｃｉｎ’が取り出されている。これにより、本実施の形態の変形例では、ヒット判定部１２１の回路構成を簡略化することができる。
【００９８】
（実施の形態７）
実施の形態６では、図１３に示すようにキャリー情報Ｃｉｎ’が演算回路ＣＳＡに入力される構成であった。しかし、キャリー情報Ｃｉｎ’は、数１３から分かるようにＡｄｄｒ［２７：２９］とＢａｓｅ［２７：２９］とを実際に演算して求められる値であるため、ヒット判定部１２１とアドレス計算部１２０との並列処理に行う場合に、キャリー情報Ｃｉｎ’を求める時間が並列処理の遅延時間となる。つまり、キャリー情報Ｃｉｎ’は、キャリー伝播を伴うので信号遅延が大きく、キャリー情報Ｃｉｎ’の通る経路が、実施の形態６で示した回路構成のクリティカルパスとなっていた。
【００９９】
そこで、本実施の形態では、キャリー情報Ｃｉｎ’の通る経路がクリティカルパスとならないように、ヒット判定部１２１においてキャリー情報Ｃｉｎ’が”１”であると仮定したＨｉｔ信号と、キャリー情報Ｃｉｎ’が”０”であると仮定したＨｉｔ信号とを２種類用意している。そして、本実施の形態では、アドレス計算部１２０でのキャリー情報Ｃｉｎ’の演算が既に終わった最終段階で、実際に演算で求めたキャリー情報Ｃｉｎ’をアドレス計算部１２０から入力して２種類のＨｉｔ信号のいずれかを選択する構成とした。
【０１００】
本実施の形態での数式を数１４に示す。
【０１０１】
【数１４】
2006127469.tif 000016
【０１０２】
図１５に、数１４に対応する本実施の形態に係るアドレス修飾部１１３の回路構成を示す。図１５に示す回路構成は、ヒット判定部１２１の回路構成が異なる点以外は、基本的に図１４に示す回路構成と同じである。そのため、図１５では、図１４と同じ構成については同一の符号を付している。
【０１０３】
まず、演算回路ＣＳＡには、上位２７ビットのＡｄｄｒ［０：２６］と上位２７ビットのＢａｓｅ［０：２６］とＴａｇ［０：２６］とが入力される。本実施の形態に係る演算回路ＣＳＡでは、キャリー情報Ｃｉｎ’が”０”であると仮定した演算回路Ｅ１にＣｏｍｐ＿Ｅｓｔ０［０：２６］が、キャリー情報Ｃｉｎ’が”１”であると仮定した演算回路Ｅ１にＣｏｍｐ＿Ｅｓｔ１［０：２６］が出力される。
【０１０４】
さらに、図１５に示すヒット判定部１２１では、演算回路１３１と演算回路１３２を設けている。演算回路Ｅ１，１３１は、Ｃｏｍｐ＿Ｅｓｔ０［０：２６］が、２７’ｈＦＦＦＦＦＦと同じ値の時に”１”を返し、そうでないときに”０”を返すＨｉｔ０信号を出力し、演算回路Ｅ１，１３２は、Ｃｏｍｐ＿Ｅｓｔ１［０：２６］が、２７’ｈＦＦＦＦＦＦと同じ値の時に”１”を返し、そうでないときに”０”を返すＨｉｔ１信号を出力する。
【０１０５】
また、図１５に示すヒット判定部１２１では、アドレス計算部１２０で演算されたキャリー情報Ｃｉｎ’に基づいて、Ｈｉｔ０信号及びＨｉｔ１信号のいずれか一方を選択する選択回路１３３が設けられている。選択回路１３３では、実際に演算で求めたキャリー情報Ｃｉｎ’が”０”の場合は、Ｈｉｔ０信号をＨｉｔ信号として出力し、実際に演算で求めたキャリー情報Ｃｉｎ’が”１”の場合は、Ｈｉｔ１信号をＨｉｔ信号として出力する。
【０１０６】
以上のように、本実施の形態では、実際に演算で求めたキャリー情報Ｃｉｎ’がヒット判定部１２１の処理の後段で入力されているので、演算装置の高速化を図ることができる。
【０１０７】
（実施の形態８）
本実施の形態は、実施の形態７の変形例であり、図１６にその回路構成を示す。図１６に示す回路構成は、ヒット判定部１２１の一部の回路構成が異なる点以外は、基本的に図１５に示す回路構成と同じである。そのため、図１６では、図１５と同じ構成については同一の符号を付している。
【０１０８】
図１６に示す演算回路ＣＳＡでは、数１４のＣｏｍｐ＿Ｅｓｔ０［０：２６］及びＨｉｔ０の判定式の両辺に”１”を足した以下の数１５の関係を利用している。
【０１０９】
【数１５】
2006127469.tif 000017
【０１１０】
数１５のＣｏｍｐ＿Ｅｓｔ０［０：２６］は、数１４のＣｏｍｐ＿Ｅｓｔ１［０：２６］と等しい。そのため、図１６に示す演算回路ＣＳＡでは、図１５と異なり、キャリー情報Ｃｉｎ’が”０”であると仮定した演算回路Ｅ１の代わりに、キャリー情報Ｃｉｎ’が”１”であると仮定した演算回路Ｅ０を設けている。
【０１１１】
さらに、図１６に示す演算回路Ｅ０，１３１では、図１５と異なり、Ｃｏｍｐ＿Ｅｓｔ１［０：２６］が、２７’ｈ０００００００と同じ値の時に”１”を返し、そうでないときに”０”を返すＨｉｔ０信号を出力する構成となっている。なお、演算回路Ｅ１，１３２は、Ｃｏｍｐ＿Ｅｓｔ１［０：２６］が、２７’ｈＦＦＦＦＦＦと同じ値の時に”１”を返し、そうでないときに”０”を返すＨｉｔ１信号を出力する。
【０１１２】
また、図１６に示すヒット判定部１２１では、アドレス計算部１２０で演算されたキャリー情報Ｃｉｎ’に基づいて、Ｈｉｔ０信号及びＨｉｔ１信号のいずれか一方を選択する選択回路１３３が設けられている。選択回路１３３では、実際に演算で求めたキャリー情報Ｃｉｎ’が”０”の場合は、Ｈｉｔ０信号をＨｉｔ信号として出力し、実際に演算で求めたキャリー情報Ｃｉｎ’が”１”の場合は、Ｈｉｔ１信号をＨｉｔ信号として出力する。
【０１１３】
図１６に示した回路構成を式で表すと以下の数１６のようになる。
【０１１４】
【数１６】
2006127469.tif 000018
【０１１５】
以上のように、本実施の形態では、実際に演算で求めたキャリー情報Ｃｉｎ’がヒット判定部１２１の処理の後段で入力されているので、演算装置の高速化を図ることができる。
【０１１６】
（実施の形態９）
実施の形態６乃至実施の形態８に示したアドレス修飾部の演算装置は、仮想メモリシステムのＴＬＢ（Trans1ation-lookaside buffer)に特に有効である。ＴＬＢは、Virtua1 AddressからPhysical Addressへの変換で発生するページテーブル参照のペナルティを小さくするために設けられた一種のキャッシュメモリである。
【０１１７】
図１７に、ＴＬＢの概略図を示す。なお、詳しくは、D.A.Patterson and J.L.Hennessy,“Computer Oranization & Design: The Hardware/Software Interface - Second Edition", Morgan Kaufmann, 1997, p.593, Figure 7.25に記載されている。この図１７に示すＴＬＢでは、Virtua1 AddressとTagを比較する構造を有している。そのため、実施の形態６乃至実施の形態８で説明したべ一ス値（Ｂａｓｅ）、アドレス値（Ａｄｄｒ）をVirtual Addressに、目的アドレス（Ｔａｇ）をTagにそれぞれ対応させることでＴＬＢのＨｉｔ信号を遅延なく得ることができる。
【０１１８】
（実施の形態１０）
実施の形態６乃至実施の形態８に示したアドレス修飾部の演算装置は、Fully Associative型キャッシュの場合にも特に有効である。
【０１１９】
図１８に示すようにキャッシュメモリには、Direct Map型、Set Associative型、Fully Associative型の３種類がある。Direct Map型は、各ブロックのキャッシュの上での位置が一意に決められている方式である。Set Associative型は、ブロックをキャッシュ上のある決められた範囲の中にだけ置く方式である。Fully Associative型は、ブロックをキャッシュ上の任意の位置に置く方式である。 なお、キャッシュメモリの３種類の型については、J.L.Hennessy and D.A.Patterson,“Computer Architecture: A Quantitative Approach - Third Edition", Morgan Kaufmann, 2003, p.398, Figure 5.4に詳しく記載されている。
【０１２０】
図１８から解るように、Direct Map型やSet Associative型ではメモリ素子の各ブロックから目的アドレス（Ｔａｇ）を読み出すため、そのアクセスに遅延が生じる。これが充分に小さい場合には、実施の形態６乃至実施の形態８で示した効果が現れるが、逆にこの遅延が大きくてアドレス計算と同等である場合には、このメモリアクセス時間にアドレス計算時間が隠蔽されてしまう。しかし、Fully Associative型の場合には目的アドレス（Ｔａｇ）がメモリ素子の一意のブロックから常に読み出されるので、メモリアクセスの遅延はなく、常に実施の形態６乃至実施の形態８で示した効果が得られる。
【図面の簡単な説明】
【０１２１】
【図１】本発明の実施の形態１に係る演算装置の構成図である。
【図２】本発明の実施の形態１に係る入力オペランドと演算結果との関係を示す図である。
【図３】本発明の実施の形態１に係るＺｅｒｏ予測ビットを演算する論理回路の構成図である。
【図４】本発明の実施の形態１に係るＯｎｅ予測ビットを演算する論理回路の構成図である。
【図５】本発明の実施の形態１に係る飽和処理部の構成図である。
【図６】本発明の実施の形態２に係る飽和処理部の構成図である。
【図７】本発明の実施の形態３に係る飽和処理部の構成図である。
【図８】本発明の実施の形態４に係るＺｅｒｏ予測ビットを演算する論理回路の構成図である。
【図９】本発明の実施の形態４に係るＯｎｅ予測ビットを演算する論理回路の構成図である。
【図１０】本発明の実施の形態５に係るＯｎｅ予測ビット及びＺｅｒｏ予測ビットを演算する論理回路の構成図である。
【図１１】半導体装置のレイアウト図である。
【図１２】アドレス修飾部及びキャッシュ判定部のブロック図である。
【図１３】本発明の実施の形態６に係るアドレス修飾部のブロック図である。
【図１４】本発明の実施の形態６に係る別のアドレス修飾部のブロック図である。
【図１５】本発明の実施の形態７に係るアドレス修飾部のブロック図である。
【図１６】本発明の実施の形態８に係るアドレス修飾部のブロック図である。
【図１７】本発明の実施の形態９に係るＴＬＢを説明する図である。
【図１８】本発明の実施の形態１０に係るキャッシュメモリを説明する図である。
【符号の説明】
【０１２２】
１  加算器、２  飽和予測部、３  飽和値生成部、４  選択部、３１，３３，４１，４３，８８，１０１，１０２  ＸＯＲ回路、３２，９３  ＮＯＲ回路、４２，５１，５２，５３，５４，５５，５６，６２，６４，７５，７６，７７，７８，８５，８６，９２  ＡＮＤ回路、５７，５８，５９，６０，６８，７２，９１  ＮＡＮＤ回路、６１，６３，６５、８７  ＯＲ回路、６６，７０  インバータ回路、７９  第１マルチプレクサ部、８０  第２マルチプレクサ部、９４  ＸＮＯＲ回路、１１０  ＣＰＵコア、１１１  メモリＩ／Ｆ、１１２  Ｉ／Ｏ−ＩＦ、１１３  アドレス修飾部、１１４  キャッシュ判定部、１１５，１２２  加算器、１２０  アドレス計算部、１２１  ヒット判定部、１３１，１３２  演算回路、１３３  選択回路。
【図１】
2006127469.tif 000019
【図２】
2006127469.tif 000020
【図３】
2006127469.tif 000021
【図４】
2006127469.tif 000022
【図５】
2006127469.tif 000023
【図６】
2006127469.tif 000024
【図７】
2006127469.tif 000025
【図８】
2006127469.tif 000026
【図９】
2006127469.tif 000027
【図１０】
2006127469.tif 000028
【図１１】
2006127469.tif 000029
【図１２】
2006127469.tif 000030
【図１３】
2006127469.tif 000031
【図１４】
2006127469.tif 000032
【図１５】
2006127469.tif 000033
【図１６】
2006127469.tif 000034
【図１７】
2006127469.tif 000035
【図１８】
2006127469.tif 000036