学位論文要旨



No 121867
著者(漢字) 若林,一敏
著者(英字)
著者(カナ) ワカバヤシ,カズトシ
標題(和) システムLSIの上流設計自動化に関する研究
標題(洋)
報告番号 121867
報告番号 甲21867
学位授与日 2006.09.29
学位種別 課程博士
学位種類 博士(工学)
学位記番号 博工第6397号
研究科 工学系研究科
専攻 先端学際工学専攻
論文審査委員 主査: 東京大学 教授 南谷,崇
 東京大学 教授 浅田,邦博
 東京大学 教授 藤田,昌宏
 東京大学 教授 鈴木,宏正
 東京大学 助教授 中村,宏
 東京大学 助教授 池田,誠
内容要旨 要旨を表示する

 本論文は、システムLSIの上流の設計工程である機能設計工程を自動化するC言語ベースの統合設計環境と、その中核をなす動作合成手法について論じる。LSIはその誕生以来、年々大規模化、複雑化を進め、それらを搭載する電子装置の小型化、低コスト化に大きな役割を果たしてきている。近年では、システム全体が1つのチップに搭載する「システムLSI」が普通に使われる程大規模化が進んでいる。このような、製造技術の進歩によるLSIの大規模化、複雑化のペースに設計生産性の向上が追いつかず、より上流の設計工程の自動化による設計生産性の向上が必須である。80年代前半から下流工程から順に自動化がすすみ、レイアウト設計、論理設計の自動化がすでに実用化されている。本論文はこのさらに上流の機能設計の自動化手法を提案する。

 最初に、機能設計の自動化を行うことの意義を述べる。現在主流のRTL設計に比べ動作レベル設計では記述量が数分の一になること、シミュレーションが数十倍から数百倍になることを述べる。また、提案システムが動作記述言語としてC言語を採用した理由を述べる。システムLSIの組み込みソフトウェアや、ハードウェア化される信号処理アルゴリズム等が主にC言語で書かれているため、ソフトウェア設計者、ハードウェアのアルゴリズム設計者と、LSI設計者が共通の言語で協調設計できる利点がある。

 次に提案するC言語ベースのシステムLSIの設計環境(図1)について論じる。本環境は、C言語を入力としRTLを自動合成する動作合成ツールCyberと、形式検証、ハードウェアソフトウェア協調検証、フロアプラン、解析ツール等からなり、すでに多数の実チップを設計した実績がある。本環境の基本コンセプトは"All-in-C"設計である。即ち、制御系回路もデータ処理系回路も、システムLSIのすべての回路をC言語で記述し合成できること。また、設計も検証もシステムLSIの上流設計工程を基本的にC言語だけで行えること(つまり、合成したRTLをデバッグする必要の無いこと)の2点である。このコンセプトの実現のために、各ツールに以下の項目を実現するための機能を研究し、ツールを統合化した。まず、提案する動作合成手法は、制御系回路、データパス系回路の双方を十分な性能で合成するための複数の合成機能を持たせた。特に、複雑な制御構文を持つ動作記述からでも高性能な回路を合成する手法を提案した。また、設計者の与える回路特性(プロパティ)を合成されたRTL記述が満たすことを証明する「プロパティ検証ツール」で、プロパティをCソースでの変数名を用いて記述できるようにした。「CとRTL等価性証明ツール」を開発することで動作合成ツールのバグによる回路の不正合成を未然に防ぎ、RTLシミュレーションの必要性を減じた。さらに、「ハードウェアとソフトウェアの協調シミュレータ」は、その実行、デバッグを合成されたRTL上でなく、Cソースコード上でできるようにした。また、RTLシミュレーションに比べ高速なシミュレーションを可能にするサイクル精度のCモデルを生成する技術も提案した。

 本Cベース設計環境は大きなシステムであり、筆者をリーダとする研究グループ全体の成果である。筆者は全体システムの中の核となる動作合成ツールの研究開発を行うとともに、本Cベース設計環境の全体構想(提唱した「all-in-Cコンセプト」を実現するためのモジュール構成と機能、基本手法)を提案し研究してきた。従って、本論文では動作合成手法の詳細と、合成結果を中心に論じ、Cベース設計環境全体の有効性については、動作合成の視点から考察を加える。

 動作合成ツールは、ソフトウェアのCコンパイラに比べ、並列化性能がより重要である。ハードウェアはソフトウェア(CPU)に比べ、搭載する演算器、独立にアクセス可能なメモリ、配線等のハードウェア資源を豊富に、かつ自由な構成で利用することで、CPUよりも高性能、低面積、低電力な回路でなければならないからである。ソフトウェアコンパイラの演算レベルの並列化を除外する大きな問題は、条件分岐等の制御依存性である。近年は、H.264等のデータ動画圧縮、ビタビデコーダ等の誤り訂正等従来のハードウェアアルゴリズムに比べ、より複雑な分岐制御を行う複雑なアルゴリズムが主流になってきている。従って、より高い並列性を抽出するために制御依存を超えて並列化できる手法が必要である。本論文では、この制御依存を超えた並列化技法を提案し、ほとんどの投機実行を可能とする大局的スケジューリング手法を提案した。本手法は、条件ベクタ(Condition Vector)と呼ばれる条件排他性の表現形式と、これを利用したスケジューリング、バインディング、制御生成手法からなる。従来、VLIW向けコンパイラや他の動作合成向けスケジューリング手法で提案されていた大局的スケジューリング手法群は、1つ1つの命令コードを条件節の上下に移動(命令移動:Code Motion)することで、いくつかの形式の投機実行を利用した並列化を行っていた。提案手法は、実際に命令を移動することなく、広範な種類の投機実行による並列化を、効率的な計算量(投機実行が無いときと同等)にて実行できる。

 条件ベクタ(CV)は、ネストした条件分岐の全リーフ数(分岐節+1)の次元を持つベクタ表現であり、各リーフの条件にそれぞれワンホットエンコードを与え、その親の分岐のCVは子の持つCVの論理ORとする。CVはC記述内の演算や配列アクセス、入出力等に与えられ、動作合成ツール内ではCDFGの演算ノードに持たせる。CVは、演算ノード同士の条件排他性を簡単にテストできる(同一位置に1が無いこと)、同一状態で必要になる演算器数が簡単に計算できる(全CVのベクタ和を取り、最大値が必要演算器数)等の特長があり、分岐考慮による計算効率劣化が無い。さらに重要なのは、スケジューリング時に考えうるほとんどの投機実行を行った場合を、CVの「動的排他性」という概念で表現可能なことである。特に、ネストした条件節の内側の一部の条件節だけの投機実行、トップレベルのIF文の並列化等、従来法では考慮外としていたされていた並列化もスケジューリング時に計算量を増加することなく探索できる。本手法は、これらの特長以外に、最長パスの最適化だけでなく、全分岐パス群を最適化できるという長所もある。CVは、バインディングや状態遷移生成でも利用されており、提案する動作合成手法全体の基礎となっている。実験結果により本手法が制御依存を超えて並列性を十分に抽出できることを示す。

 高い並列化を得るためには、制御依存性の扱いの他に、配列とループ、関数の取り扱いが重要である。従来の動作合成ツールでは、これらを合成したい回路形式を意識したC記述に書き換えることによって、高性能化しなければならないものがあったが、本ツールでは、これらに対応する様々な回路形式の知識を合成アルゴリズムの中に導入し、性能向上のため、低面積化のため等目的にあった回路を自動合成できるようにした。他にも、実製品に適用できるための性能の回路を合成するためには、数多くの最適化機能、合成制御機能が必要であり、本論文では作成したこれらの機能を整理分類して、議論する。

 次に、ハードウェア記述言語と詳細なタイミング仕様をもつ回路向け合成手法について議論する。システムLSIの内部には、DMAコントローラやバスブリッジ、液晶コントローラなどのように、仕様が入出力信号のタイミングチャートで与えられるようなモジュールも多々存在する。これらの回路は、先に示したような自動スケジューリングにタイミング制約を与えるよりも、クロックを動作記述に直接記述した方が直感的であり、記述効率が良い。また、プロセッサ設計時等で必要な割り込み動作の記述能力が汎用のC言語にはない。これらに対応するために、C言語へ加える新しい拡張表現(文法)を考案し、その拡張表現を生かした制御回路向け合成手法を提案した。

 次の章では、提案した動作合成ツールを用いて合成した回路を解析し、簡単な統計処理により、RLT記述に比べた動作記述量の削減効果が1/7程度あったことや、動作合成ツールが作成するサイクル精度シミュレーションモデルのRTLシミュレーションに比べ数十倍から数百倍高速なことを示す。また、動作合成された回路品質の例として、カスタムプロセッサの合成結果を検証し、先に述べた記述量削減やシミュレーション速度向上の恩恵を享受しつつ、人手並みの回路品質で合成できたことを示す。次に、システムLSIの設計期間・設計工数の削減、面積や電力の削減、動作記述の再利用性の高さ(生産性向上)、信頼性の向上(バグの削減)などを、提案ツールで合成した実例をもって分析し、効果を検証した。さらに、C言語設計に対するよくある批判に対して、本動作合成システムで合成した事例を用いて考察を行う。たとえば、目標遅延に達成するタイミングクロージャがRTL設計の場合よりも動作合成を利用したC設計のほうが良くなるケースの理由を述べる。次に、人手のRTL設計と動作設計について、そのハードウェア設計の発想法そのものの違い、実現されるハードウェア構成(回路形式)の違いについて考察し、動作合成の方が人手RTLよりも、優れた回路を出す場合の理由についても実例を用いて議論する。特に、従来のRTL設計ではとうてい実現不能であった回路形式や、従来RTL設計では非現実的である新しいハードウェアとソフトウェアの分割方法を提案し、実例を用いてその効果を説明する。最後に、今後の課題と結論を述べる。

図1.C言語ベースのシステムLSIの統合設計環境の構成図

審査要旨 要旨を表示する

本論文は「システムLSIの上流設計自動化に関する研究」と題し、7章から成っている。システムLSIは、プロセッサ、専用ハードウェア、各種インタフェース等からなるシステム全体を一つのチップ上に搭載した大規模集積回路であり、電子機器の小型化、低コスト化に大きな役割を果たしているが、製造技術の進歩に伴うその高集積化のペースに設計生産性の向上が追いつかず、この製造と設計のギャップが常に問題となってきた。このため1980年代前半から物理レベルに近い下流設計の工程から順に自動化が進められ、これまでに配置配線とそれに続く論理合成の自動化はすでに実用化されているが、システムLSIのさらなる高集積化に伴う設計の複雑化、大規模化を克服するには論理合成の主発点であるRTL(レジスタ転送レベル)記述からさらに上流の動作記述へ設計レベルの抽象度をあげることが必要である。こうした認識から本論文は、C言語によるハードウェア動作記述からRTL記述を合成(以下では「動作合成」と呼ぶ)する動作合成アルゴリズムの考案、それを基にした動作合成ツールの開発、その動作合成ツールを核としたC言語ベース設計環境の実用化に至るまでのシステムLSI上流設計工程の自動化に関する研究の成果をまとめたものである。

 第1章では、システムLSIの製造と設計のギャップを埋める手段として、動作記述からRTL記述を合成する自動化ツールと、それを中核にしたシステムLSI向けのC言語ベース設計環境の実現が重要であると述べている。また、設計言語としてC言語を選択した意義が、ソフトウェア設計者、ハードウェアアルゴリズム設計者、LSI設計者の3者が共通言語を使える点にあることを指摘し、本論文の背景と目的を述べている。

 第2章では、すべての回路モジュールをC言語で記述、合成し、Cソース記述のみで設計・検証を行う"All-in-C"という概念に基づいて設計されたC言語ベース設計環境の全体構成と設計フローについて述べている。この設計環境は動作合成ツールを中核として、他に形式検証、ハードウェアソフトウェア協調検証、フロアプラン、解析ツール等から成り、さらに既存RTL部品の取り扱い、バスインターフェース合成、テストベンチ生成などのツール群が統合されていると述べている。

 第3章では、動作合成ツールCyberの全体構成を示し、その入出力制約、言語パーザとトランスレータ、制御データフローグラフ表現、アロケーション、スケジューリング、バインディング、制御回路生成などの要素技術の特徴、および相互の関係を述べている。

 第4章では、Untimedな動作記述からのCFI(Control Flow Intensive)回路向け動作合成手法として、自動スケジューリング手法、バインディング手法、制御論理生成手法の各工程について詳述している。これらの動作合成手法は演算の実行条件や種々の排他性条件を表現する「条件ベクタ」と呼ぶ新しい概念に基づいており、条件分岐等の制御構造が複雑に存在する動作記述から十分な並列性を抽出できる世界的に独創的な手法であると述べている。また、本合成手法は従来のVLIW等のプロセッサ向けコンパイラの広域スケジューリング手法に比べても十分に高性能な並列化を効率的に引き出せることが合成実験の結果によって示されたと述べている。

 第5章では、制御系回路向けの動作合成手法であるTimedな動作記述からの動作合成手法と、C言語にハードウェア向け拡張を施した動作設計言語BDLを提案している。提案したBDL言語は複雑なタイミング制約を持つ制御系回路でも元の動作記述の構造をほぼ保ったまま詳細なタイミング記述の入力が可能であり、この記述に提案したTimedな動作記述からの合成手法を適用すると、状態遷移図による制御回路設計に比べて良い結果が得られ、さらにタイミング収束がRTL設計に比べ容易になることが設計実験により定性的並びに定量的に確認されたと述べている。

 第6章では、まず、動作合成の実用化のために必要な各種合成手法を整理し、合成された回路のアーキテクチャに関する特徴を述べた後、動作合成ツールCyberを使用して実回路を設計した合成実験結果を分析し、合成された回路の品質向上、設計期間・設計工数の削減、回路面積と消費電力の削減、動作記述の再利用性の高さ(設計生産性向上)、バグ削減とRTLデバッグからの解放(信頼性向上)などに高い効果があることが実例で検証されたと述べている。さらに、Cベース設計環境の今後の方向性について、ハードウェア設計プロセスのソフトウェア化、RTL設計からCベース設計への転換の必要性、新しい計算機構出現の可能性、LSI設計者の教育の必要性に関する考察を述べている。

 第7章では以上の成果を要約し、今後の課題を展望している。

以上を要するに、本論文は、システムLSI設計の研究分野で長年の夢であった「ソフトウェアプログラム(C言語記述)からのLSI自動合成」をテーマとし、それを実現した独創的な動作合成アルゴリズムと、それを基に世界で初めて実用化に成功した統合設計システム(動作合成ツールと検証ツール群)の開発手法を述べたものであり、その成果は工学的に貢献するところが大きい。よって本論文は博士(工学)の学位請求論文として合格と認められる。

UTokyo Repositoryリンク