English


NEC(日本電気株式会社)
C&Cシステム研究所・システム基礎研究部
主任時代の高橋隆一


1989年(平成元年)4月にC&Cシステム研究所に戻りました. この時期NECは世界最大の半導体デバイスメーカーでした.

ここではNECで研究していたオートマトン記述からの 高位合成(high level synthesis)を紹介しています. ここにオートマトン記述は状態単位にレジスタ間転送を列挙して 次の状態を指定していることを意味します.

1995年(平成7年)にIEEEによってIEEE1364として標準化されたVerilog HDLでもオートマトン記述は可能で,RTLでの動作記述(behavioral description)になり, 高位合成の入力として用いることが出来ます.高位合成は論理回路を生成する論理合成より上位の,機能素子を扱う高レベル自動設計技術です.

広島市立大学に着任して1996年度から2008年度まで実施したマイクロコンピュータ設計教育環境City-1(シティー・ワン)成功の背景には,このVerilog HDLによるRTLでの動作記述がありました.オートマトン記述自体は新しいものではありませんが,Verilog HDLでオートマトン主体の記述をしたのは筆者が初めてだと思います.


論文誌International Journal of Computer Science and Network Security(IJCSNS), Vol.16 No.10, pp.116-121 (2016)で紹介したVerilog HDLによるオートマトン記述(SSMD)の例です.手続きが状態遷移で表現され,RTLでの動作記述になっています.Verilog HDLでオートマトン記述を工夫したことにはNECでオートマトン記述を研究していたという背景がありました.

筆者が工夫したとは言ってもVerilog HDLによるRTLでの動作記述,SSMDはIEEE1364標準です.Verilog HDLは非常に広範な記述能力を持ったHDLで,オートマトン記述も仕様の一部でした.問題は合成ツールが賢い合成をしてくれるかでした.マイクロコンピュータ設計教育環境City-1で愛用していたSynplifyという合成ツールは期待に応えてくれ,世界最高水準のマイクロコンピュータ設計教育を支えてくれました.

Verilog HDLによるオートマトン記述からのSynplifyによる高位合成事例がVerilogによる動作記述(SSMD)からのSynplifyによる合成でご覧いただけます.



1989年の筆者(高橋隆一)です.車はフェアレディZです.

宮崎台にあったNECの中央研究所正面(入り口)です.


筆者が所属していたのは「C&Cシステム研究所」でしたが,量子コンピュータなどを研究していたマイクロエレクトロニクス研究所などを含めた広いくくりでは「中央研究所」だったりします.筆者の年金に関わる記録にも「中央研究所で働いていた」と記載されています.






この時期の社内報告(社外秘)を除く書き物は下記のとおりです:



1989年4月-1991年3月(平成元年4月-平成3年3月)の社外発表(発表順):


登録特許:

  1. 高橋恒介,山崎哲矢,高橋隆一:"入れ子型トークン列検索装置," 特許2090802(特願平1-340102)(1989)

    …これで登録特許は2件になりました.



特許出願(公開):

  1. 高橋隆一:"パターン認識装置",特願平1-174640(1989)

  2. 高橋隆一:"パイプライン制御方式",特願平1-208241(1989)

  3. 高橋隆一:"マイクロプログラム制御方式",特願平1-208242(1989)

  4. 高橋隆一:"文法解析型テキストファイル送受信器",特願平1-260036(1989)

  5. 高橋隆一:"アドレス制御型情報処理装置",特願平2-85627(1990)

  6. 高橋隆一:"情報処理装置",特願平2-258455(1990)

  7. 高橋隆一:"マイクロプログラム制御情報処理装置",特願平2-258456(1990)

  8. 高橋隆一:"バス・アロケーション装置",特願平4-213742(1992)



商業雑誌:

  1. 高橋隆一:
    "大規模化,高度化への対応に不可欠な高レベル設計自動化," 工業調査会CAD&SIM,No.18,pp.28-31(1990)



論文:

  1. 高橋隆一,吉村猛: ”ハイレベルシンセシスの動向,” 電子情報通信学会論文誌 A, Vol.J74-A, No.2, pp.143-151(1991)

    …あらましがこちらでご覧になれます.



研究会:

  1. 高橋隆一: ”ブール式を要求駆動で評価するRTレベルシミュレーション,” 情処研報 設計自動化51-8(1990)…IPSJ

  2. 高橋隆一, 村岡泰釈, 江尻雅晴, 林 孝雄: ”ハードウエア記述言語A^2DL,” 信学技報VLD90-81(1990)…IPSJ

  3. 高橋恒介,高橋隆一,山崎哲矢: ”マルチメディア文書の記憶・検索とプロトコル解析LSI,” 信学技報CPSY90-91(1991)



全国大会:

  1. 高橋隆一: ”論理装置の設計上流工程支援システムA^2DL-DAの構成と実現,” 第40回 情処全大 3M-5,pp.1310-1311(1990)

  2. 山崎哲矢,高橋隆一: ”高レベル自動設計システムA^2DL-DAを用いたハードウエアソータの設計," 第42回 情処全大 1J-8, 第6分冊pp.146-147(1991)

    …「記述のレベルは?」という質問に,山崎くんが当たり前のように, 「アーキテクチャです」と答えると会場からはため息が…

    …詳しくはこちらをご覧下さい.


  3. 高橋隆一: ”高レベル自動設計システムA^2DL-DAにおけるハイレベルシンセシス," 第42回 情処全大 1J-9, 第6分冊pp.148-149(1991)

    …詳しくはこちらをご覧下さい.





A^2DL(エイ・スクエア・ディーエル)って何?

多相のクロック信号の各々に同期して動作する複数のオートマトンをレジスタ転送レベル(register transfer level)で記述するハードウエア記述言語(hardware description language)でした.A^2DLは"An Automaton Description Language"の略でした. ここに「オートマトン」は状態単位にレジスタ間転送を列挙して次の状態を指定していることを意味します.オートマトン記述は,J. R. DuleyとD. L. Dietmeyerによって1968に提案された古典的なハードウエア記述言語"digital system design language(DDL)"の記述スタイルです.レジスタ転送レベルはレジスタ間でのデータの受け渡しを問題にする記述レベルでRTLと略称されます.ハードウエア記述言語はハードウエアを記述するための専用言語の総称で,HDLと略称されます.

世の中で言う「RTL記述」では各レジスタ毎にどのような条件でどのようなデータが転送されるかをまとめて箇条書きします.データパスと制御部は別々に記述されます.RTL記述はRTLでの構造記述(structural description)であり,マイクロアーキテクチャ設計が終わっていないと書き下すことは出来ません.ここにマイクロアーキテクチャは実際の内部構造を意味します.パイプラインが何段なのか,スーパースカラになっているかなどはマイクロアーキテクチャの問題です.機械語のプログラマからマイクロアーキテクチャは見えません.機械語のプログラマに見えるのは実際の内部構造より上位の論理的な構造であり,アーキテクチャと言われます.レジスタがいくつあるかはアーキテクチャの問題です.が,現実にはレジスタリネーミングのための豊富なハードウエア資源が用意されていたりするのです.レジスタリネーミングが行われるかはマイクロアーキテクチャの問題です.

半導体理工学研究センター(STARC)が推奨してきたVerilog HDLによるRTLでの記述スタイルも,RTLでの構造記述であり,各モジュールはどんな場合にどんなデータがセットされるかを箇条書きされたレジスタで終端するよう指導されていました.

こうした構造記述の場合,制御部の記述はシーケンサと呼ばれる順序回路の記述になります.データパス部ではシーケンサが定める各状態でどんなレジスタ間転送が行われるかを記述するなどします.シーケンサが定める状態とデータパスでの動作は適宜対応させることが出来ます.対応させることが出来るなら,データパス部に分けて書くのではなく,シーケンサの状態毎にレジスタ間転送を列挙してしまえば簡単だとは思いませんか?その,やたら簡単な記述をしているのがオートマトン記述です.オートマトン記述はRTLでの動作記述になります.ここに動作記述は手続き的な記述を意味します.オートマトン記述の場合,手続きは状態遷移によって表現されます.

筆者がNECで開発していた独自のオートマトン記述A^2DL(エイ・スクエア・ディーエル)の記述例


は高橋隆一:”ブール式を要求駆動で評価するRTレベルシミュレーション,”情処研報 設計自動化51-8(1990)でご覧になれます.

オートマトン記述なら各状態でどのようなレジスタ間転送を行うかを列挙して状態遷移先を指定するだけで良く,マイクロアーキテクチャ設計を進めながら書き下すことが出来ます.RTL記述は構造記述であるため,あらゆる場合についてまとめて当該レジスタに対するデータ転送を書かなければならないのに対し,オートマトン記述は動作記述であって,状態毎にその状態で行われるレジスタ間転送を指定すれば良いだけである点が世の中で言うRTL記述(構造記述)と動作記述の相違です.

オートマトン記述を行うハードウエア記述言語DDLが優れていることは1980年代既に広く理解されており,NECで筆者が研究していた以外にも,富士通,東芝,NTT,京都大学などで盛んに研究されていました.

"A^2DL"は基本的にはハードウエア記述言語DDLでしたが, ターミナル(端子)に対する代入を全く記述しない点が特徴的でした.「任意の論理装置は記憶素子(メモリ,レジスタ)と組合せ回路を列挙するだけで表現出来る!」という発想が高速な処理系を実現可能ならしめてました.このことについてはSSMDの話で後述します.


A^2DL-DAって何?

A^2DLの記述をADCDS(A^2DL - DA Core Data Structure)という内部表現に変換し, シミュレーションと高位合成で共有する高レベル自動設計システムでした. ADCDSのデータ構造はプログラム登録しています.処理系全体のサイズはC言語で3万行でした. このうちの2万行を約半年間でプログラミングしたのが筆者のプログラミング能力のピークだったと思います. VAX8600(6MIPS)に載せた場合で,1万ゲート規模の集積回路のオートマトン記述603行から 内部表現生成をするのに37秒,100クロックのシミュレーションに4秒,ひとつの設定(符号化方式など)での高位合成 には3秒を要しました.

A^2DL-DAによる高位合成の結果はNECが独自に開発して使っていた ハードウエア記述言語FDLで表現していました.世の中で言う「RTL記述」の記述レベルは,このFDLによる記述レベルにちょうど一致しています.A^2DLからFDLへの変換はRTLでの動作記述から構造記述への変換になっていました.FDLはレジスタ毎にデータ転送をまとめてIF THEN ELSEで箇条書きするハードウエア記述言語でした.STARCが推奨してきたVerilog HDLによるRTLでの記述スタイルは,このFDLに相当する構造記述とみることが出来たりもします.

高位合成(high level synthesis)はディジタルシステムの動作仕様を与えられて, 論理最適化やモジュールジェネレーション,配置/配線に十分なまでに詳細化された下位レベルの仕様を 生成する自動設計技術です.以下が高位合成の要素技術です.

  1. アーキテクチャ分割…モジュール構成の決定
  2. スケジューリング…制御ステップの決定
  3. データパスアロケーション…ALUやバスの決定
  4. コントロールアロケーション…制御信号の決定

高位合成の結果,論理合成ツール(logic synthesizer)への入力が得られます.論理合成からはテクノロジーマッピングによってデバイステクノロジーが考慮されるようになります.高橋隆一,吉村猛:”ハイレベルシンセシスの動向,”電子情報通信学会論文誌 A,Vol.J74-A, No.2, pp.143-151(1991)で紹介しました.


どんな設計に使われたの?

社外秘です.が,クイックソート(アルゴリズム)をハードウエア記述言語A^2DLで書いて 高レベル自動設計システムA^2DL-DAにかけてハードウエア化してしまうという,いたずら?を1991年3月に公表しています.チップも作りました.


クイックソートエンジン(QSE)諸元

テクノロジー

1.2ミクロンCMOSゲートアレイ

規模

2.6kゲート

動作周波数

10MHz

消費電力

280mW



論理設計は出力されたFDLを見ながらのスケマティックエントリ(回路図入力)で行いました. NEC(日本電気株式会社)は,当時既に,FDLを入力とする独自のロジックシンセサイザ(論理合成ツール)を保有していましたが,A^2DL-DAをこれに直結した場合に自動生成される回路の規模は熟練者による場合の約1.8倍でした.A^2DLの記述は100%合成にかかりました.




クイックソートのハードウエア化(NEC,1991年)


出来たチップをメモリにつないだボード(上の写真)をつくり,当時「国民機」と親しまれて圧倒的なシェアを誇っていたNECのPC98(きゅっぱち)からランダムなデータを送りこんでおいてスタートさせると,つながれたメモリの中身が一瞬でソートされるという代物(しろもの)が出来ました(笑).QSEと名付けたこのチップ(ハードウエア)はC言語で書いたクイックソートのプログラム(ソフトウエア)と比較して2桁高速でした.

「アルゴリズムをハードウエア記述言語で書いて合成ツールに掛けてしまうことでハードウエア化する」という,世界的にも早い試みだったと思います.

アルゴリズムを簡単にハードウエア化するには動作記述の行えるハードウエア記述言語でそのアルゴリズムを書いてしまえば良いのです.市販のHDLの場合,合成可能かは一概には言えません.が,筆者が大学に戻って考案し,静的オートマトン記述(static state machine description),略してSSMDと名づけたVerilog HDLによるRTLでの動作記述でアルゴリズムを記述すれば合成可能かという心配は無用です.SSMDというVerilog HDLの使い方は100%合成可能です.合成可能ということは形式的検証(formal verification)にもかかり得るという点でも重要な特徴です.


A^2DLとSSMDって何か関係があるんじゃない?

静的オートマトン記述,SSMDの正体は「Verilog HDLをA^2DLとして使うにはどうしたら良いか?という問いの答え」だったりします(笑).オートマトン記述を研究していた筆者が,大学に戻ってから,Verilog HDLでオートマトンを書こうとしたのは当然の成り行きでした.まずはVerilog HDLのバッククォート・デファイン"`define"でオートマトンの状態を定義することにしました.順序回路の記述を紹介されて,「ここにレジスタ間転送も書いてしまえばいいんだ」と思いました.同じことはVerilog HDLのparameter文でも可能です.各状態には状態遷移と合わせて,各状態で行われるレジスタ間転送を列挙しました.これはA^2DLのオートマトン記述そのものです.Verilog HDLのassign文は「データフローの記述」だと説明されることがありますがSSMDでは「組合せ回路の記述」としか認識しません.組合せ回路を記述する手段としてA^2DLはlogic文という記述を持っていました.SSMDでのassign文の使い方はA^2DLのlogic文なのです.

なぜSSMDを「静的(static)」と呼んでいるのかが超高速オンデマンド機能シミュレーション(SSMDの「静的」とは)でご覧になれます.SSMDはモジュール間のリクエスト(request),アクノレッジ(acknowledge)などによるハンドシェークを組合せ論理回路によって静的に記述する点に特徴があります.SSMDは学術的には「Verilog HDLによる,イベントを意識しないオートマトン記述」なのです.

Verilog HDLによるRTLでの動作記述(SSMD)については拙著があります.

高橋隆一:Verilog HDLによるシステム開発と設計, 共立出版(2008)ISBN978-4-320-12222-2


この本の第1章では前述したDDLの他に,CDL,AHPL,ISPなど研究史に登場する代表的なHDLも紹介しています.SSMDというVerilog HDLによる動作記述は他の動作記述と比較して全く遜色ないことがご理解いただける筈です.SSMDは記述のレベルという点では「Verilog HDLによるRTLでの動作記述」なのです.結果的に拙著は類書と比較して記述の抽象度が高くて簡単であるにもかかわらず,何の問題もなく合成ツールに掛けることの出来る高レベルな記述スタイルの紹介になりました.拙著では「真のRTL記述」という言い方をしています.

筆者は1991年(平成3年)に東工大(東京工業大学)に戻った後,1994年(平成6年)に広島市立大学という新設校に着任し,最初の3年生が誕生した1996年(平成8年)から13年間にわたってSSMDを使ったマイクロコンピュータ設計教育を実施する機会に恵まれました.City-1として知られ,学部3年生が半期で,全く自由なアーキテクチャ,マイクロアーキテクチャのFPGAコンピュータを一人一台設計し,製作までをする他に類を見ない情報工学実験でした.

City-1で利用したCADツールの変遷についてはCity-1のサイトのトップページをご覧下さい.City-1のビデオを紹介していたりもします.最初の"City-1"というビデオに登場するのはSynergyという合成ツールです.

類書ではフリップフロップ1個の記述に10行も費やすのに対し,SSMDでは"reg F1;"のようにしか表現しません.類書ではリップルキャリーであるか桁上げ先見であるかを区別して加算器を表現しますが,SSMDでは「+」(足し算)の記号でしか加算器を表現しません.リップルキャリーを使うか桁上げ先見を使うかの選択は合成ツールに任せて,性能をもっと劇的に左右するシステム設計に勢力を注がせたわけです.様々な工夫が行われました.

拙著では,"CISC_1"という記述例で,世の中で言う「RTL記述」も扱っています.CISC_1では
  1. 殆ど制御信号と言えるマイクロプログラムを発生する順序回路
  2. 当該マイクロプログラムで制御されるデータパス部
を別のモジュールとして分けて記述していました.RTLでの構造記述になっており,世の中で言う「RTL記述」でした.ただしCISC_1は「殆ど制御信号と言えるマイクロプログラムを発生する順序回路を制御部として持っている」という点で,結線論理マイクロコードマシンでもありました.結線論理マイクロコードマシンは殆ど制御信号と言える水平型のマイクロプログラムをシーケンサに発生させてしまうという設計です.1状態1ビットという符号化では最終的な制御信号発生のための付加的な回路を要します.結線論理マイクロコードマシンはシーケンサが発生する制御信号を直接発生させます.シーケンサが重くなっても,並列に動作するデータパスの遅延に隠れれば動作可能周波数が下がることはありません.結線論理マイクロコードマシンは何も考えないRTL記述より10%から20%は高速なことを私どもの研究室で確認済みです.結線論理マイクロコードマシンについても詳しくは拙著をご覧下さい.

前述したようにA^2DL - DAは,1万ゲート規模の集積回路の場合で,この結線論理マイクロコードマシンを数秒で自動生成していました.無論,一状態一ビットなどの符号化も選択出来ました.

Verilog HDLによるオートマトン記述,SSMDは平均的な学生にも高度な記述能力を与えるだけでなく,「レジスタ間転送の間のデータ依存関係を表現しているにすぎない」と解釈することで,クロック信号を用いずにアルゴリズムのみを表現する場合と変わらぬ合成の自由度も得られます.オートマトンで記述された仕様に対するスケジューリングも可能だという話です.SSMDでは複数のクロック信号を用いた複雑な並列動作を記述出来る一方で,クロック信号は動作の前後関係を定めているにすぎないと見ることで,クロック信号を書かない手続き的な動作記述の記述能力も有しているという話です.

拙著ではVerilog HDLによるオートマトン記述,SSMDがアーキテクチャの記述に用い得ることも示しています.ここに「アーキテクチャ」は前述したように「機械語のプログラマから見える論理的な構造」を意味します.ソフトウエアとハードウエアの境界でもあります.拙著では簡単なアーキテクチャのVerilog HDLによる記述を出発点とする高位合成,特にアーキテクチャ分割による自動パイプライン化の指針も提示しています.


Verilog HDLでアーキテクチャが書けるなんて信じられない!

その記述が「どう動くか」を決めているのはシミュレータですが,「何が書いてあるのか」を決めるのはシンセサイザ(合成ツール)です.SSMDでの状態遷移による命令解釈実行サイクルの記述は論理合成ツールにとっては単に状態遷移をしながら命令を解釈実行するオートマトンの記述にすぎません.しかし高レベル自動設計システムのハイレベルシンセサイザ(高位合成ツール)は同じVerilog HDLの記述をアーキテクチャの記述だと認識出来るのです.誰も「Verilog HDLでは現実のレジスタしか書いてはならない」などとは言っていません.SSMDでは他の動作記述の場合と同様なライフタイム解析によってレジスタ数を減らす合成も行えます.

高位合成では最初の「アーキテクチャ分割」の戦略で各状態をパイプラインステージに対応するモジュールとして切り出すことによる自動パイプラン化が可能になります.ここで言うパイプラインは「命令パイプライン」とも言われる,フェッチ,デコード,実行といったステージによる時間並列の命令レベル並列処理を意味します.

拙著はパイプラインの記述方法を扱っている唯一の本でもあります.筆者には超LSI開発本部システム部での実務経験(前のページ)がありました.

A^2DLは,インテルと戦うために,テクノロジーに依存しないシステム設計工程の完全自動化を指向したハードウエア記述言語でした.SSMDというVerilog HDLの動作記述が高位合成の出発点にあたるアーキテクチャ分割の入力になれるのは当然です.

拙著のRISC_1からRISC_3やRISC_3Bを生成することが命令レベルのパイプライン化を自動で行う高位合成になります.この,「アーキテクチャをオートマトンで記述することによる命令レベルでの自動パイプライン化」が,筆者がNECで最後にしていた研究でした.



NECからは贐(はなむけ)をいただきました♪

City-1でのVerilog HDLによるRTLでの動作記述(RISC_3など)や構造記述(CISC_1など)をダウンロードされたい方は前述した拙著 「Verilog HDLによるシステム開発と設計」のWEBサイトをご訪問下さい.

"Computer_RISC_3BV"は上記のサイトで同様に入手いただける3段パイプラインRISCの記述 "Computer_RISC_3" や "Computer_RISC_3A" の実行ユニットに内部バスを置いてレジスタとALUの間の接続を簡単にした記述 "Computer_RISC_3B" にSystemVerilogアサーションの記述を含めたSystemVerilogの記述例です.

SystemVerilogアサーションを用いた設計検証に興味のある方はSystemVerilogアサーション(SVA)の書き方をご訪問下さい.

静的オートマトン記述,略してSSMDや結線論理マイクロコードマシン,Verilog HDLによるRTLでの動作記述,世の中で言うRTL記述と動作記述の違いについては下記でも紹介しています.

高橋隆一:電子機器設計に活かすディジタル代数学,科学情報出版 (2013) ISBN978-4-904774-11-3


この本自体は電子機器設計を支える代数学の基本を網羅的に扱った著作になっています.拙著についてはamazon様での高橋隆一の紹介でも御覧になれます.

1991年春,10年務めたNECを辞めて東工大に戻った当時については次の東工大助手時代の高橋隆一を御覧下さい.


高橋隆一(たかはし・りゅういち)




Verilog HDLによる動作記述と構造記述:City-1の最終年度のページへ