非同期式回路についてのまとめ(雑)

半年前の日記に対して2ヶ月ほど前にコメントが書かれていたことに昨日気付きました。どうやらコメントを書かれたらメールで知らせてくれるような設定になっていなかったらしい。コメントの内容は、要約すると「非同期式回路について調べるにはどうしたら良いの?」というもの。今さらそのコメントに返事をしても、コメントしてくれた人の役には立たないと思うが、非同期式回路についての日本語情報が少ない以上、非同期式回路について調べた内容やその情報源をまとめることには意義はあると思う。それが、就職活動のために卒論テーマを安易に非同期式プロセッサと決めて、結局非同期式はやらなそうな中堅私立大学4年生のものであっても。

非同期式回路とは?

非同期式回路とはグローバルクロックでタイミングをとって機能ブロック間の通信を行わない回路。形態としてはまったくクロックがない完全非同期式から、各ブロックでローカルクロックを持ちブロック間の通信を非同期式で行うようなGALS(Globally Asynchronous Locally Synchronous:広域非同期局所同期)やハンドシェーク回路、さらに逆のブロック(一部または全部)は非同期で動作するがチップ全体はグローバルクロックで同期して動くGSLA(Globally Synchronous Locally Asynchronous:広域同期局所非同期)がある。GALSやGSLAは同期式回路の設計資産を活かしつつ、非同期式回路の利点を享受できる。
ちなみに非同期式回路の利点としては、次の4つが挙げられることが多い。

  • 低消費電力
  • 高信頼性
  • 高性能
  • 設計が容易

低消費電力というのはグローバルクロックがないことに起因する。NetburstアーキテクチャからCoreアーキテクチャへのIntelの方向転換を見て解るようにクロック周波数というのはチップの消費電力に直に影響する。具体的には、消費電力と言うのはクロック周波数に比例する*1。さらにクロックというのは何もしていなくてもそれ自体が電力を消費すると言われている。そのクロックがないのだから非同期式回路は同期式回路に比べて低消費電力なのは当たり前、と言えるわけだ。さらに、非同期式回路では処理に必要でないブロックには信号が入らないので、無駄な回路が動作することによる電力消費が少ない。これは同期式回路で使われる低消費電力技術であるクロックゲーティング(Clock Gating)を用いるのと同じ効果が、特別なことをしなくても非同期式回路なら得られるということである。クロックを持つGALSやGSLAの場合はこの限りではないが、すべてのタイミング制御をクロックで行う同期式回路よりもクロックゲーティングは簡単に行えるように思える。
高信頼性もグローバルクロックがないために得られる利点である。クロックのような規則正しい信号の変化は、放射ノイズを発生しやすいらしいが、それがない。さらにブロック間のタイミング制御をクロックではなく要求・応答の信号を用いているので、外部要因(温度、湿度など)による素子の特性変動に強い。これは、素子の特性が変わると決められたクロックパルスの間に処理を終らせなければならない同期式回路とは違い、処理に必要な時間を自己制御できる非同期式回路が持つ特徴である。同様に、非同期式回路はチップ製造時に発生する素子特性のバラつきにも強い。
高性能は、原理的には得られるというもので、前の二つのように同期式回路に比べて絶対有利な利点とは言えない。同期式回路の場合、ある処理に必要な時間が1.2クロックパルス分であったとしても、処理したデータを次のブロックに渡せるのは2クロックパルス後になってしまう(クロック周波数を変えればこれは避けられるが、そういうことは考えないとする)。それに対して、非同期式回路では、タイミングは自己制御であり、データをやりとりする相手が平気なら、処理が終了した時点でデータの受け渡しができる。つまり、原理的には最短時間で処理できるわけだ。処理所要時間の最後の方に遊びが入ってしまう同期式回路に比べて処理時間が短くなるのは明らかである。しかし、実際は各ブロック間の要求・応答信号のやり取りに時間がとられるので最短時間というわけにはいかない。さらに、データをやりとりするブロックが多いと、効率的なデータの受け渡しは難しいと考えられる。実際に作られた非同期式マイクロプロセッサで高性能を謳うのが見られないのは、それが原因だと思う。パイプライン構造を持つマイクロプロセッサとなるとブロック間の制御は意外に複雑であるし、パイプラインなしで高性能にするのは困難だ。
設計が容易というのは、かなり怪しい利点である。クロックタイミングを考えなくてもよいというのは確かに魅力だし、ブロック間の要求・応答の信号のみで正しく動作する回路を設計できれるということは、回路設計はよりソフトウェア的に近くなる(原理的に動く回路を設計するだけなら時間というものを考慮する必要がないので)。確かに正しく動く回路を設計するだけなら難しくはないかもしれない。しかし、現状ではこれといった開発環境はなく、設計資産、設計資料、教科書なども少ないので非同期式回路の設計が容易とは決して言えないと思う。それに多くの人は同期式回路に慣れているし、大学でも非同期式回路についてはほとんどやらないようだ。同期式でも回路が作れる段階では非同期式回路の環境を充実させるのは難しいのかもしれない。

情報源

本当は、非同期式回路について説明するためには設計技法やハンドシェイクプロトコルについても書いたほうが良いのだろうが、私が書くよりも私が読んだ資料を書いて、そちらを読んでもらったほうがよいのは明らかであろう。どんなことでもそうだが、一つのプロセスに過ぎないことでも、それが確かなものでなければ、全体が、そして結果が不確かなものになるものなのだ。ということで、上に書いたことも必要ない気がするが、せっかく書いたのでそのままにしておきます。正確な情報を得たい人はあまり参考にしないように。信頼できる情報は信頼できる人からの情報のみってやつだ。

なんだかんだ言っても、一番の情報源は本なのだと思う。しかし、非同期式回路についての日本語の本はかなり少ない。とりあえず挙げられるのは、

非同期式回路の設計

非同期式回路の設計

である。というか、私はこれ以外知らない。約400ページで7000円というのが日本における非同期式回路の現実を表しているように思う。翻訳だからかもしれないけど。非同期式回路の基礎から学べると思いますが、私には難しかった(全部読んでない)。9章「応用」で過去にどのようなものが非同期式回路として実装されたか書いてあるのだが、それを読むだけでもけっこう楽しいです。例えば、Intelの完全非同期式命令長デコーダRAPPIDやシャープのデータ駆動メディアプロセッサ(DDMP)なんて全然知らなかったもんね。あと、425にも上る参考文献リストも重宝すると思う。当分の間は、日本語で非同期式回路について勉強する場合はこの本に頼らざるを得ないのではないかと思う。
同期式回路を扱った本にも、申し訳程度ではあるが、非同期式回路の記述があったりする。例えば、論理設計―スイッチング回路理論には、8章「遅延と非同期動作」に非同期式について書いてある。しかし、これだけで非同期式回路を知るのは無理だと思います。あ、同期式回路を勉強するには良い本だと思いますよ。

雑誌

非同期式回路について書かれている記事や特集もいくつかある。一般の向けの雑誌の場合、専門外の人にも解るように書かれているので、勉強し始めのときやイメージを掴みたいときなんかに役に立った。

これはHandshake Solutionsという会社が作ったクロックレスARMプロセッサについて紹介した記事。読んでません。

非同期式回路の説明とセイコーエプソンが作った8ビット非同期マイコン、英Silistix社のCHAINという非同期オンチップ・ネットワークについての解説が掲載されている。私はこの特集を読んで非同期式回路というものを本当の意味で知ったと思う。非同期式回路についてちょっとだけ知りたい場合は、この特集の第1章に書かれている非同期式回路の説明を読めば十分であろう。

なんとサザーランドによる非同期技術を紹介する記事。それだけで読む価値があるというものだ。あー、サザーランドの「MICROPIPELINES」まだ読んでないや*2
あと、情報処理学会の学会誌「情報処理」なんかにも非同期回路の紹介記事があります。

ウェブ

ウェブで情報が得られるならそれに越したことはない。でも、やはり日本語で得られる情報は少ない。だから、私の日記なんかに引っかかってしまうのだろう。中心となるのはやはり非同期回路を研究している大学の研究室だろう。非同期についての簡単な説明やその研究室で書かれた論文のリスト、もしくは論文そのもの置いてあり、参考になります。あと、意外に約に立つのがその研究室の修士論文や博士論文。詳しいことは知らないのだが、修士論文や博士論文って最初の方にテーマに関する基礎的な理論や技術について書かれていることが多い(というかそういうものなのかな?)。非同期式回路を扱ったものなら非同期式回路技術についてのまとめが書いてあるわけだ。これが結構使える。
とりあえず二つの研究室。東大の南谷崇教授は日本で一番有名な非同期の研究者。東工大の米田教授は上の本を訳した人。米田研は旧南谷研になるらしい。他にもいくつかあったと思ったが、メモを取っていなかったのでわからない。

MYCOMジャーナルに非同期設計についてのレポートがある。南谷教授に話を伺ったらしい。

海外ではマンチェスター大学で研究が盛んのようだ。Balsaという非同期式回路の論理合成ツールやAmuletという非同期プロセッサの開発が行われている(どちらもよく知らない)。また非同期技術についてまとめたページもある。

(2009年9月2日追記) 実際にお仕事で非同期設計をやられていたaiceraさんが非同期設計についてまとめたもの。貴重だと思う。本記事のコメントも参照してください。

*1:参考:http://journal.mycom.co.jp/column/architecture/001/

*2:サザーランドのチューリング賞受賞講演。非同期式回路について語ったもの