近年、大規模集積回路(VLSI)の設計技術、デバイス技術および製造技術の急速な発展により500MHZの高い周波数で動作するマイクロプロセッサも報告されているにも関わらずsoftwareの大規模化、実時間処理の要求、新しい分野の研究などマイクロプロセッサの性能向上の要求はますます強まっている。マイクロプロセッサの性能を向上する方法としては時間並列のパイプライン方式と空間並列のsuperscalar方式がよく用いられる。従って、回路の遅延のみならず回路の規模も性能に大きく影響を与えると言える。 実際のマイクロプロセッサでは整数演算および浮動小数点演算など演算器のパイプラインが長いことが多い。これは演算器の最悪遅延が大きいことを意味する。また、演算器の回路規模も大きい場合が多い。従って、マイクロプロセッサの性能を向上するためには演算器の性能を向上させることが非常に効果的であると考えられる。 本研究ではマイクロプロセッサの性能を演算器の動作速度と回路規模の両面で向上すことを目指して演算器の基本ユニットである加算器の研究を行なった。乱数入力に対した加算器の平均キャリー伝搬回数がlogN以下であることに基づき、加算器の動作完了を検出もしくは予測して加算器の動作速度に合わせて可変的に演算を行なうことで平均高速で小規模の加算器を設計する手法を提案した。本論文では完了検出型加算器と完了予測型加算器の二つの同期式可変完了型加算器を提案し、加算器の有効性を理論的に分析し、典型的な同期式加算器との比較評価を行なった。なお、二つの可変加算器方式に対して各々評価のためのマイクロプロセッサを設計し、シミュレーションでの機能検証を行なった後チップを試作試作して測定を行なった。以下で、各章で得られた内容をまとめる。 第1章ではマイクロプロセッサの性能を向上する手法と制御回路方式について検討を行ない、次の結果が得られた。 ・マイクロプロセッサの性能は時間並列と共に空間並列も可能であり、回路の動作速度のみたらず回路の規模も非常に重要な評価パラメタである。 ・同期回路は数多くの長所を持っているが回路の動作速度が最悪遅延で決まるので回路の動作速度を向上するためには膨大な規模の回路が必要であるし、今まで非常に深く研究が行なわれ改善の余地も少ない。 ・非同期回路は回路の平均速度で動作するため同期回路より平均高速で動作する可能性があるがハザード、危険競争(critical race)などを避けなければならないので設計に制約が多い。 ・自己同期回路では完了信号を生成するため通常2線式コードを用いるので回路規模が同期回路に比べ2倍以上大きいし、ハンドシェークにかかる時間損失も大きい。 ・クロック非同期回路は遅延素子と局所クロックを用いることで必要な部分だけ2線式回路を用いることで自己同期回路より小規模でありながら平均速度で動作できるが速度独立ではないし、ハンドシェークによる時間損失の問題は残っている。 ・疑似非同期回路は局所的に高速のクロックを使用し全体的にはシステムクロックで同期して動作するので疑似的に平均速度で動作することで平均高速動作が期待される。 第2章では本論文で提案する加算器の評価を公平に行なうため従来の同期式加算器の分析を行たった。対象加算器としてはRCA(Ripple Carry Adder),CSA(Carry Select Adder).CLA(Carry Lookahead Adder),BCLA(Binary Carry Lookahead Adder)およびBTCLA(Binary Tree Carry Lookahead Adder)を用いた。検討内容は最悪遅延、回路規模および遅延・回路規模積であり、以下で結果をまとめる。 ・RCAは回路規模は小さいが最悪遅延が加算器の単語長に比例して長い単語長には向いてない。 ・基本的なCLAは最悪遅延と回路規がキャリー評価回路を作る方法によって大きく依存するし回路の規則性も良くない。 ・CSA加算器は単語長が小さい場合は最悪遅延が小さいが単語長が大きくなると最悪遅延が急激に増加する。また、回路規模も大きい方である。 ・BCLAは回路規模も小さく、最悪遅延も小さい方であるし単語長が大きくなっても増加率は小さい。また、回路の規則性も持っている。 ・BTCLAは回路規模は大きいであるが最悪遅延が比較対象の中で一番小さい。また、回路の規則性もよい。 ・CSA、BCLA、BTCLAを対象として遅延・回路規模積の性能比較を行なった結果、BCLA、BTCLA、CSA順で性能が良い。 第3章では従来の同期式加算器の性能改善の限界を克服する新しい手法として同期式の可変完了型加算器を提案し、設計手法について述べたあと平均遅延、回路規模を求めて典型的な同期式加算器と比較して評価を行なった。 完了検出型加算器としては加算器をある一定のビットを持つセグメントで分割し分割された全てのセグメントのキャリー出力の変化を検知し完了信号を生成するセグメント分割型を検討し、完了予測型加算器では入力からキャリー伝搬信号を生成しキャリー伝搬の値が’1’である信号が連続する最大数を判別することで加算にかかるクロック数を予測する手法を検討した。 これらの加算器を典型的な同期式加算器であるBCLA及びBTCLAと遅延、回路規模及び遅延・回路規模積の面で比較を行なった。また、可変完了型加算器における問題点、パイプライン化手法、制御回路の検討を行ない次の結果が得られた。 ・セグメント分割加算器は回路規模は比較的小さいが平均遅延が大きい。平均遅延が大きい理由は最初のクロックで完了する確立がすごく小さいことと完了検出回路の遅延が加わるからである。 ・完了予測型加算器では回路規模、平均遅延共に比較対象の中で一番小さい。その理由は完了予測型加算器では加算演算と完了予測が並列に行なわれることと、セグメントレジスタがないので一回のクロックで終る確率が高いからである。 ・64ビットの加算器における遅延・回路規模量の積を計算した結果、完了予測型加算器の遅延・回路規模量の積はBCLAの45.1%,BTCLAの42.7%であった。 ・可変完了加算器における大きな短所は入力データ依存性であることを確認し、その緩和手法を提案した。緩和回路を入れても回路規模と遅延の負担はおおよそ10%しか増えなかった。 ・完了予測加算器のパイプライン化を検討し、フラグメントの長さを4ビットにした時一番良いことが分かった。4ビットフラグメントを用いた64ビットの2段パイプライン完了予測型加算器と2段にパイプラインBCLA加算器と比較した結果、完了予測加算器の遅延・回路規模積はBCLA加算器のおおよそ60.4%でありパイプライン化しても良い性能が得られた。 第4章では可変完了型加算器の性能を実験的に評価する目的で4ビットのセグメントに分割された64ビットSRCA加算器を用いたマイクロプロセッサの設計について述べた。主な内容はマイクロプロセッサのアーキテクチャであり、命令、命令形式、クロック発生回路、入出力バッファ(LSU)制御回路、レジスタの書き込み、読みだし制御回路、命令シーケンサ回路について述べた。次に評価内容をまとめる。 ・本マイクロプロセッサはレイアウトから回路抽出を行ない回路シミュレーションまでは正常に動作することを確認した。 ・しかしながら、実際のチップでは演算結果をレジスタファイルに格納する際一部のデータが間違っていることが分かった。原因を分析した結果、クロックずれが誤動作の原因であることが分かった。 ・回路シミュレーションでクロックずれの問題が検知されていないのはバスの寄生容量が大きく抽出されたためであると考えられる。 ・クロックずれの問題は従来から同期回路での大きな誤動作の原因のであり、配線遅延が大きくなる微細設計規則で設計する際はより厳密なシミュレーションと設計余裕を持たなければならないと考えられる。 第5章では可変完了型加算器の性能を実験的に評価する目的で32ビット完了予測型加算器を用いたマイクロプロセッサの設計について述べた。以下で設計内容と評価結果をまとめる。 ・本論文で設計した可変完了型マイクロプロセッサの主な構成要素は命令、命令形式、レジスタファイル、加算器、論理ユニット、シフタ、フラグレジスタ、各ユニットの制御回路などである。 ・本マイクロプロセッサは加算/減算にかかるクロック数が加算器の入力によって変わるので演算ステージのパイプライン長さが異なる可変パイプラインである動作する。 ・本マイクロプロセッサではクロックずれによる誤動作を完全に回避するための2相クロックを用いた。また、演算資源が空いている限り命令を発行し複数の演算が並列に行なえるように設計した。 ・本マイクロプロセッサではレジスタファイルにタグビットをつけてデータハザードをハードに回避できるようにした。別途のフラグレジスタを用いないでレジスタ毎にフラグビットをつけった。 ・Verilog-HDLのシミュレーションで本マイクロプロセッサの動作を確認した。3.3V,0.5um,CMOSの実際のモデルパラメタで確認した結果300MHzまで正常に動作することを確認した。 以上でまとめたように疑似非同期制御回路の概念を用いることで小規模でかつ平均高速動作の可変完了型演算器の設計が可能であることが分かった。なお、演算器の性能評価用のマイクロプロセッサを設計しシミュレーションを行なった結果正常の動作が確認できた。可変完了型加算器は加算器の単語長が長いほど他の加算器より比較性能がよいし規則性もよいので将来の演算器に向いていると考えられる。 |