2010年度も大学で講義を受け持つことになった。今年で3年目である。内容は大きく変えないが、資料の方は時勢に合わせながら少しずつ更新していくつもりである。ビジネスにおけるコンピュータといったような内容なので、ある程度の業界の流行は追いかけて、学生にできるだけ新鮮なネタを提供するよう心がけねばいけないだろう。大学へのシラバス提出にあたって、今年は一点だけ過去2年間とは大きく違うことをやってみようと考えている。それは成績の評価方法である。従来は講義の出席状況と論文のみで成績を決定していたのだが、今年は他の多くの講義がそうであるように、期末テストを実施しようというわけだ。
そもそもコンピュータに関する話だからといって、ビジネスの世界で行なわれている事は、ほとんどの学生にとっては未経験の出来事である。だから一生懸命聴講したところで、実感を伴って理解するのはまず不可能に近いはずだ。とばかり、テストの現場で問題を見て途方に暮れてしまうのも気の毒かなと思ったりもしたのだが、論文だけで成績をつけるのは大変に難しい事がわかってきたのである。課題を出す以上は、こっちにも書いて欲しいポイントがいくつかあって、それを基準に採点したいところなのだが、どうしても思い込みやらどこかでの聞きかじりやら、どうにかすると誤解まで一致する論文が見つかることがある。理解するのは難しいにしても考えてみて欲しかったなあと、僕の狙いが外れていることを思い知るのである。
そうなると予め想定していた採点基準は何の役にも立たなくなってしまうので、全論文に目を通して採点基準をどこら辺に置いたらよいのかをまず最初に見極める。今度はその基準に照らしながら再度全論文に目を通して評価別にグルーピングし、最後にそれが妥当かどうかをもう一度検証する。というわけで、少なくとも一つの論文に3回は目を通すことになる。これが結構時間のかかる作業で、少なくとも土日二日間は丸々これでつぶれてしまう。もちろん期待通りに書かれている論文も相当にあるので、そういうのに遭遇すると、ああ講義を聴いてくれているんだなと嬉しくなってしまう。ついでながらテストを実施しなかったもう一つの理由は、テストを監督するために大学に行かずに済むので、時間を節約できることである。
こうなる原因はやはり学生個人の個性が論文に現れにくいからだろうか。全て自分の力で知恵を巡らせるのであれば、おそらくこうはなるまい。という仮説に基づいて、今度はテストを実施してみようと思い立ったというわけだ。出来栄えにばらつきが生じればそれだけ採点がしやすくなるし、テストの監督に時間がかかったとしても、大した事はないかもしれない。ならば一度やってみるか、という発想である。ただしおそらく問題作りに注意を払う必要がある。他人の話を聞いて何となくわかったと感じる事と、自力で同じ事を述べて主張する事との間には、雲泥の差があるはずだ。学生にとって慣れない異次元の話題にどこまでついてきてもらえるか、こちらとしても低い評価をつけるのは本意ではないので今から考えあぐねているのである。
IT業界が賑ったごく最近のニュースと言えば、やはりオラクルによるサンマイクロシステムズの買収が完了したことだろう。発表されてから9ヶ月というかなりの長期間を要した結果、オラクルは今やハードウェアからミドルウェア製品やアプリケーションまでの幅広い品揃えを得るに至ったということになる。マスコミ情報によると、社長のCharles Phillips氏は1960年代のIBMが掲げたビジョンに倣ったそうだが、かつてのIBMとの違いは「オープン」なシステムを提供することなのだそうな。
確かにオープンであることというのは、システム構築においてよく見られる要件だし、何かとオープン性を強調することは受けが良い。何が何だかよくわからないけれども、単純に開放的で明るいイメージがある。おそらく元はと言えば、システムの全てを特定ベンダーのテクノロジーに縛られるという、旧来のしきたりの対極として、90年代に広まったマルチベンダー志向を意味する概念だと僕は考えている。だとすると旧来のソフトウェア製品群に加えて、ハードウェアとかOSとかオープンソース製品までをも一社のラインアップに加える事は、ユーザーから見ると特定ベンダー製品に偏る傾向が強まることを意味するわけだから、当初のオープンの概念に反することになりはしないか。要するにオラクルの行動は、社長の説明とは裏腹にオープンへの逆行だということになる。
この矛盾が生じてしまうのは、オープンをマルチベンダー志向であるとする仮定が間違っていたために違いない。単一ベンダー製品のみで作り上げられたシステムであっても、オープン性を主張できなくてはいけないのだろう。だからと言って、自社製品にはオープン性があるけれども、他社製品にはそれがないといった具合に、製品機能の代名詞として定義するのは正しいのだろうか。業界標準と言われるようなテクノロジーを実装する事をもってオープンと称するのだとしたら、今やオープンでないシステムを探すのが難しい。アプリケーションの可搬性を言うのだとしたら、逆にかなり限定されてしまう。結局何だかよくわからない。
要するにオープンとは、とりあえず唱えていれば救われた気分になるありがたいもの、といった程度のものなんだろう。シングルベンダー・システムだろうが、接続性がどうだろうが、構築しようとしているシステムが用件を満たしてくれさえすればそれで十分なはずだ。受けの良い修飾語程度のものだと思えば良いかもしれない。
なあんて、オープンではないと言われる事のある製品を担当していると、他人の言葉にも敏感に反応してしまうのでした。オープンに何を期待しますかと問えば、僕の経験上はマルチベンダー志向を答えるケースが圧倒的に多いようだが、それってシステム構築や保守の事を考えると、現実的には茨の道だと思うんだけどな。
1月ともなるとセンター試験は実施されるし、首都圏では千葉の幕張メッセで中学入試が始まるし、と受験生にとっては試練のシーズンである。僕自身にもそういう時期があったなあと懐かしい反面、二度とあんな思いを繰り返したくない。ただ、長いか短いかわからない人生において、たまにはああいったプレッシャーのかかる節目があっても良いのだろうと思う。曲がりなりにも明確な目的意識を持って集中的に勉強したのは事実なんだから。
傍観者的立場に立つならば、新聞などに掲載される中学入試の算数の超難問に取り組むのは頭の体操のようでなかなか楽しい。こんな問題に取り組んで、しかも解ける小学生がいるだなんて末恐ろしい、いや頼もしいものだ。表現は少々改変してあるが、例えば次のような今年の灘中の算数の問題である。
6桁の整数ABCDEFで、最上位桁の数字Aを一番下に移動した数BCDEFAが元の数の3倍になるものは、ちょうど2つあります。このような数ABCDEFのうち大きい数を求めなさい。
う~ぬ、何だこれは。未知数が6個もあるのにあまりにシンプルな条件なので、仮に方程式を使ったところで答えなんぞ出るわけがない。方程式を使わないで解こうとするから難しい、などとよく言われるがあんなのはうそである。使えたところでこの問題には何の役にも立ちそうにない。紙とペンを持って格闘した挙句、こんなところだろうと目処をつけた解法は以下のとおり。2つの数でBCDEFの並びが共通であることに目を付けるのが正解への道なのだろう。
ABCDEFを10倍してABCDEF0を作り、これからABCDEFの3倍にあたるBCDEFAを引くと、A×(1000000-1)=A×999999になる。これは元の数の10倍から3倍を引いた数だから、ABCDEFの7倍である。つまりA×999999=ABCDEF×7が成立する。両辺を7で割ると、A×142857=ABCDEFになる。ここでAは1から9まで考えられるわけだが、3倍しても6桁に収まる数字でなければならない事に注意する。A=1、A=2は成立するが、A=3とするとABCDEF=428571となり、これを3倍すると7桁になってしまうので題意に合わない。だからA=3以上は除外。よってA=2の時が大きい数になり、ABCDEF=285714が答えとなる。
もしかしたら生半可な大学入試の数学より難しいんじゃないだろうか。十分以上もあきらめる事無くこれに取り組んだ自分を褒めてやりたい。60分でこんなレベルの問題を13問も解けだなんて、これのどこが小学生向きなんだ。仮に教科書を100%理解できる小学生がいたところで歯が立つような問題ではないだろう。過去のお受験の歴史がとうとうここまで積み上げられて来たのであって、さらに今後も続くのだろうか。末恐ろしや。。。。
飽きもせずに第4回目というわけで、POWER7のパフォーマンス向上の仕組みとして先代のPOWER6から実装されている、DFU(Decimal Floating-point Unit)ユニットについて述べてみようと思う。日本語では浮動十進演算ユニットと訳される、プロセッサー内部に搭載されている様々な演算ユニットの一つである。演算ユニットとは種々の計算作業を行なうための、トランジスタ回路の集まりだと思えばよい。POWER7では他に、(十進ではない)浮動小数点ユニットだの、固定小数点ユニットだの、分岐ユニットだの、一つのプロセッサー・コアあたり全部で12のユニットが内蔵されている。多種の演算をこなすためには、オールラウンド・プレイヤーが一人ではなくて、演算のタイプにしたがってそれぞれの専門家が配備されていると思えばよいようだ。
そもそも浮動とは浮いて漂っているようなイメージであるが何を意味しているのだろう。これは数学で習った、「X.XXX×10のYY乗」といった表記を思い出していただければ良い。日常生活では滅多にお目にかかることはない、限られたスペースで極端に大きいか小さい数字を表現するのに適した表記で、小数点の位置を簡単に移動させることができる。1000倍になったから表記するのに3桁追加するのではなくて、YY の部分に3を加えれば表現できるというやつである。コンピュータの場合は、小数を使った演算が行なわれる際には、通常浮動小数点表記が用いられ、POWER7ではそれ専用の演算ユニットがあるというわけだ。計算の過程で数値が極端に大きくなったり小さくなったりする可能性を排除できないので、回りくどい表記ではあるが確実に計算を行なうことができる。
では浮動が付いた十進とはどういう事だろう。コンピュータってそもそも二進数で演算すると聞いたはずだ。ところが、計算のタイプによっては内部では十進数表記が採用されるのである。これは十進小数から二進小数へと変換すると誤差が出やすいからである。十進数の小数第一位は1の10分の1であるのと同様に、二進数の小数第一位は1の2分の1で0.5、小数第二位は0.25、という具合になる。だから十進小数を二進数に変換すると無限小数になりやすい。結果的にどこかで切り捨てが行なわれ、誤差が生じることになるわけだ。例えば十進数の0.1は二進数では0.000110011・・・という無限小数になる。誤差を許容できないアプリケーション、特に業務用のプログラムにおいては、この変換誤差は絶対に避けなければならない。そこでコンピュータの本質に逆らった、変換誤差を生じさせない代わりに面倒で手間のかかる表記を用いて演算をするのである。通常はこの面倒な演算をトランジスタ回路だけでは実現できないから(専用の演算ユニットを装備していない)、ソフトウェアの力を借りて実行するというわけだ。
POWER6やPOWER7のDFUとは、これをトランジスタ回路の力で実行しようというものである。ソフトウェアが関与しないからパフォーマンスの改善度合いはかなり大きい。数値次第でもあるのだが、ベンチマークテスト結果によると、数値演算部分に関しては210から560倍もの高速化が実現された例もあるそうだ。これらプロセッサーは科学技術計算のみならず、ビジネス用途も強く意識していることがお分かりいただけるであろう。
気が向いた時に書いているこのシリーズの第3回目ということで、今回は信頼性向上のためのテクノロジーについても述べてみようと思う。プロセッサーの話というとどうしても速度至上主義というわけではないが、性能の話が主な話題になってしまうのは仕方ない。しかしサーバー用途ということを考えるならば、RAS(Reliability Availability Serviceability)も重要な技術要素であることも事実であろう。ちょっとした道路の凹凸にタイヤをとられてすぐに横転してしまうような車では、いくら高速走行性能が優れていても怖くて運転する気にならない。POWER7プロセッサーについて言うと「道路の凸凹」に対する種々の安全策が講じられているのだが、POWER6の世代から実装されている、エラー修復のメカニズムがなかなか興味深い。
そもそもソフトエラーって何だろう。用語の検索をかけると非常に多くのサイトがヒットするわけだが、要するに確実に再現できるとは言えないエラーだと思えば良さそうだ。この逆が恒常的なエラーというわけでハードエラーと言う。いわゆるソフトウェアだのハードウェアだのといったものとは直接的な関係はない。機器類が物理的に破損するようなハードエラーと違って、ソフトエラーの方は一般的には結構対応がやっかいだ。原因を追究しようにもいつだかわからない次のエラーが発生するのを気長に待たなければならないからだ。ただ、その原因として可能性が指摘されているのが、電子機器類に対する宇宙線、すなわち宇宙から降り注ぐ放射線だと言われている。自然現象がコンピュータの誤動作を引き起こす原因となり得ると聞いても、どうもなかなかピンと来ない。
プロセッサーと言っても、要するにフタを開ければ膨大な数の、スイッチの役割を果たすトランジスタが集まったものに過ぎない。そしてPOWER7では12億に達すると言われているトランジスタ回路が、45ナノメートル(ナノは10のマイナス9乗)という解像度をもって、シリコンのウェハーと呼ばれる板の上に刻まれている。トランジスタは電気のオン・オフを制御するスイッチとして機能するから、構成するには電気を流す物質と流さない物質とが必要になってくる。この時、電気を通さない絶縁物質はわずか電子数個分(と聞いたことがある)の厚みしかない繊細なものなのだそうだ。そして動作中のトランジスタに宇宙線が当たると誤動作、すなわち物理的に破壊されるわけではないから、一過性のソフトエラーが発生してしまう。だから今日の最先端の半導体デバイスは、宇宙線が到達し得ない地中深くに設置するとか、宇宙線を通さない筺体で覆わない限り、ソフトエラーを発生させるリスクが常につきまとう。
POWER7では動作する都度エラーチェックを行ない、万一エラーを検知した場合は、自動的に前のステップに戻って再実行する仕組みを備えている。ソフトエラーだったらまず再発しないので、これで問題なく動作を継続できるわけだ。もし万が一エラーが再発する場合には、該当プロセッサーをあきらめて別のプロセッサーに処理を移管する。その際でもコンテキストと呼ばれる仕掛かり中の状態を維持したままなので、処理が中断されることはない。サーバー用途ということでよく考えられた設計なのではないだろうか。
カレンダーを架け替えたからと言って人生が一変するわけでもあるまいし、去年と今年の違いは昨日と今日の違いでしかないもんね、などと斜に構えてはみるものの、やはり世間並みに今年の抱負などを考えるのはおそらく今を置いて他には無いだろう。今日は昨日からの段差の無い連続であるはずなのだが、日頃の心掛けをあらためて言葉にして再認識することで、忘れかけていた思いをリフレッシュすることとしよう。毎年のごく初めの頃に限定される非常に賞味期限の短いネタであることだし、今日が仕事始めでもあるのでちょうど良い。
どうも抱負と聞くと、小学生の頃に新学年が始まる都度、「X年生になって」というタイトルで400字詰め原稿用紙3枚で作文を書け、といった課題を与えられた国語の時間を思い出す。別に学年が一つ上になったからと言って心がいきなり入れ替わるわけないじゃないか、という思いを何となく抱いていたので、僕はこれが大変に苦手であった。何とも感じませんと書くわけにもいかないので、殊勝にも前向きな形容詞満載の、中身の無いその場限りの言葉を並べてお茶を濁した。真意はともかく、表面上はそうすることを周囲は期待していたわけだが、書くことなんどてんで思いつかない、教室の窓の外をぼうっと眺めているへそ曲がりの小学生にとって、最低限の801文字目ははるか彼方にある目標であった。
はて、僕は仕事上何を心掛けているのだろうか。自問自答といったテンポの良い響きのようにはいかないことに気付かされてしまう。とりあえずは会社ではエバンジェリストの端くれということになっているので、それらしいことを第一に据えるのがあるべき姿というところだろう。
セミナーなどの場で話す機会が多いので、まずは人にわかりやすい話をすることを最低限の要件と心掛けよう。技術的・概念的な用語を駆使して一部の人だけの理解を得ることはむしろたやすいのだが、参加してくれているあらゆる人にきちんと話をするのは礼儀とでも言うべき当然の行ないであるに違いない。でも参加者の背景は様々であることも事実である。誰でもわかるということは、最も知識を持たない人を想定するということなのだろうか。そんなことをしたら、多くの人に退屈な思いを強いることになってしまう。おそらくは一部を見捨てる可能性を許容しつつ、平均的と思われる層をターゲットにするのが無難なところだろう。学校でどのレベルの生徒を基準に授業を進めるべきか、という命題と同じジレンマである。
どうせ万人が感銘を受けるような完璧な話はできないし、そんな必要性はさらさらない(本当か?)のならば、怪しげな雑学知識の披瀝か、ギャグを一発かますか、何か芸を仕込んでやれば印象深い話にはなるだろう。ただ僕の経験上ギャグはかなりリスクが高い。果敢に挑戦して見事に外す場面を何度か目にしている。無理に芸風(?)を変えようとしても、どこかに歪を生じさせるだけのことだ。やはり自分の芸を磨きつつ着実に課題をこなすのが良い。ところで、僕の芸って何だろう。よく考えるとわからないな。ならば今年は自分の芸風を磨いて、これと言葉で表現できるものを見出すことを目標としてみようか。
どこを向いても2009年を総括する、といった風情のニュースが多くなってきたようだ。IT系のニュース・サイトも例外ではない。今年もTwitterだのiPhoneだの賑やかで、IT業界に身を置く立場からすると、こっちが担当するのはビジネス用サーバーだから、あっちの事は知りませんとはなかなか言えないのである。面白そうなもの・そうでないものと雑多だが、どんなものくらいかは一通りの知識を仕入れておかなければならないし、どこかで結びついたりしないとも限らないのである。1990年代半ば過ぎのインターネットもそうだったような気がする。もちろん登場する新技術の全てが生き残るわけではないし、市場に広まる前に消えてしまうものもあるだろう。マーケティングの言葉で言うと、キャズム(Chasm)を超えられなかったというわけだ。が、中には世代交代によって第一線を退く技術もあるだろう。そう言えばPROM(Programmable Read Only Memory)なんてメモリがあったな、と先日このカラムでPOWER7のテクノロジーについて書いているうちにふと思い出した。
不揮発性、要するに電源を落としても内容が消えてなくならないメモリだと思えばよい。今で言うとSSD(Solid State Drive)がそれに匹敵するのかもしれないが、僕が学生時代にアルバイトでプログラマーをやっていた時分には、もちろんそんなものはまだ存在していない。当時取り組んでいたのは、マザーボード一枚にいくつかの部品とLEDとが搭載されているだけの組み込み型コンピュータで、ちょっとしたプログラムを開発することだった。OSなんてものはなくて、申し訳程度のソースコード付きのモニター・プログラムがボードに付属していた程度のものだ。幸いにもメモリ用にソケットが空いていたので、そこにプログラムを書き込んだPROMを差し込んでやれば、うまくすると期待どおりに動作するという寸法だ。もちろん補助記憶装置と言われるタイプのデバイス類は一切ない。
PROM書き込みには専用のライター(10万円以上もする結構高価なもの)があったのだが、相手は単なるメモリだから、コンパイル済みコードすなわち16進数を、電卓のようなキーボードから1バイトずつ書き込むと言う地道な作業を強いられる。デバッグを繰り返すなど、書き込み作業を一回で終えるなんてことはまずあり得ないので、データ消去も行なわなければならない。さて消去可能なPROMにはその方法によって種類があって、EEPROM(Electrically Erasable PROM)とかUV-EPROM(紫外線:Ultra-Violet Erasable PROM)がその代表例だろう。EEPROMは電気的に消去するのであまり面白みはないのだが、UV-EPROMは文字通り紫外線を利用する。メモリ・チップ中央部に「窓」があってそこに紫外線を照射すればよいのである。理屈上は太陽光でも良いのだろうが、さっさと記録済みデータを忘れてももらうには、殺菌灯を使うと良い。ところが紫外線は目や皮膚など人体に悪影響を与えるので、机の引き出しの中あたりにでもUV-EPROM諸共放り込んで、電源スイッチを入れてしばし休憩すれば良いというわけだ。そして無事に書き込みを終えてPROMの用意ができると、いよいよソケットに差し込んでテストの実施である。ここでうっかり向きを間違えでもしたら、一瞬にしてPROMはお亡くなりになってしまう。瞬間だったから大丈夫かなと正しい向きに差し込んでも手遅れである。僕は自分の不注意で、こうして何度かPROMを「飛ばして」しまったのである。
こうして読み返してみると、EPROMは使い勝手の悪い古ぼけたテクノロジーのようにも感じるし、今となっては個人が直接触れる事はまずないだろう。しかしながらかつてこういったものから僕はテクノロジーを体験したのも事実なのである。
我が家の車もそろそろ13年にもなるので買い換えることとした。エンジン始動時にはファンベルトが滑っているらしくキーキー音を立ててうるさくて恥ずかしいし、それを修理してもらったら今度はオイル漏れを追加で指摘された。他にも電気系統でろくに動かないところも騙し騙し使っているのだが、修理費もバカにならないしもう十分だろう。補助金ももらえるし、良い機会とばかりにディーラー巡りをして、ま、こんなものかというモデルに決めた。特に車に対する思い入れが強いわけではないので、何の変哲もないセダンである。納車まではまだもう少し時間がかかるので、楽しみにしているところである。
当初は1ヶ月もあれば納車されるだろうと呑気に構えていたら、人気車種についてはとんでもない話で、プリウスなんぞは半年待ちだとか。さすが皆さん省エネルギーの意識が高い。でもノートPCのと同じリチウムイオン・バッテリーを搭載しているわけだし、その寿命なんていいところ3年くらいではないのと営業マンに聞いたところ、それは僕の大きな誤解で10年以上(本当か?)持つらしい。3年毎にバッテリー交換などということになったら、多大な保守費用がかかるなという心配は無用だったようだ。でも世の中にそんな長持ちするバッテリーなんてあったとは正直言って知らなかった。なら10年とまで言わないから、せめて5年くらい持つバッテリーをPCに搭載して欲しいな。最近は特に「持ち」が悪いのでね。
ハイブリッド・カーとまで行かなくても、正確には環境対応車普及促進税制と呼ばれる長ったるい名前の税制(要するに減税)が適用される車種は結構ある。ただ同じメーカーの車の中でも、小型のやつが減税非対象であるにも関わらず、3.7リットルものエンジンを搭載した大型のが対象、などという矛盾があったりする。車重によって達成基準となる燃費を定めているのでそうなるらしい。車重が大きければ、それだけ燃費が悪くても良いって事なのだろう。理屈はわかるんだけれど、どうもしっくり来ないな。車重に関わらず、燃費だけで減税適用を決めるようにすれば、自然と小型車の方に目を向けるようになるはずだ。ただ、それだと経済状況を好転させるための原動力としては望ましくないって事か。
それにしても街中を乗り回すのに、どうして3.7リットルなんてこんな大きな車が必要なんだろう。セダンタイプだとせいぜい5人しか乗らないはずなのに。かつてに比べるといわゆる3ナンバー対象車種の割合はずいぶん増えているような気がするのである。昔はたまに見かける程度の大きな車だったのが、今や当たり前に街中を走っている。先端技術を追いかけるのもよいけれど、「平均値を何とか上げる」ための施策も必要なのではないだろうか。
再びPOWER7プロセッサーの話である。前回はeDRAMテクノロジーを用いて搭載されたL3キャッシュが革新的であることを述べたが、パフォーマンスを向上させる仕組みは他にもある。HOT CHIPS 21と呼ばれるシンポジウムではSMT4もその要因として挙げていた。SMT(Simultaneous Multi Thread)とは、プロセッサーのレベルで同時に複数の命令群を実行できることだと思えば良いようだ。かなり乱暴な解釈かもしれないけれど、技術的な正確性を追求するのがこのカラムの目的ではないので、これでいいのだと開き直ってしまおう。従来はSMT2、要するに2つの命令群を同時実行できるに留まっていたが、それがSMT4ということで4つに拡大したわけだ。この数はおそらく多い方が優れているのだろう。
そもそも忙しそうに働いているはずなのに、プロセッサーはどうやって複数の命令群を同時実行するのだろうか。非常に簡単な答えは、その働き方には実は無駄があり仕事をしていない時間があるので、その休み時間に働かせるようにしているに過ぎないのだ、ということになるだろう。プロセッサーの中には工場のベルトコンベアのようなものがあって、工程を一つ一つ進めながら命令やデータに対する作業を少しずつ行ない、最終的に完成品を仕上げるようなものだと思えば良い。あらゆる作業工程上に、仕事の対象となる命令やデータがあればどこにも暇はないはずだが、どうも作業工程が穴だらけになってしまうのは仕方が無い、というか暇があるのは当たり前の現象なのだそうだ。どこかのプロセス上の欠陥というわけでもないらしい。
原因はいくつか考えられる。一つはデータの依存性の問題で、前の命令の結果を次の命令の入力データとして使用する場面を考えてみよう。通常ならば2つの命令が連続的にベルトコンベアの上を流れていくはずだが、2つ目の命令を実行する際に、前の命令の結果が必要だとしたらどうなるか。ベルトコンベアが、命令の取り出し・データ取り出しと命令の解釈・命令実行・結果格納という具合に進むものだとしたら、後から来る命令は作業対象となるデータがまだ利用可能ではないために、2番目のステージでしばらく先に進めなくなる。前の命令はとにかく先に進んでゆくから、そこでいくつかの空白状態が生じてしまう。これら2つの命令の間に、実行順序を入れ替えても結果に影響が無い命令を挿入してしまうというテクニックも使われるが、いずれにせよ空白状態は皆無にはできないそうだ。
どうせこういった空白状態が生じてしまうのだったら、それを利用して別の命令群を処理させてしまおうというのがSMTの考え方である。これを2系統同時処理するのがSMT2であり、既にいくつかのプロセッサーにおいて実装されている。これである程度の空白状態を埋めることはできるだろう。この考え方をさらに推し進め、プロセッサーを極限まで働かせようというのがSMT4である。これによりプロセッサー・コアあたり20~40%ほどパフォーマンスが向上するとのことである。より進化したSMTテクノロジーはPOWER7の特徴の一つだと言えるだろう。
僕が携わっているパワー・システムの心臓部にはPowerと呼ばれるプロセッサーが搭載されていて、2001年のPOWER4、2004年のPOWER5、2007年のPOWER6ときちんと3年毎に新テクノロジーが登場している。そのルール(?)を守るとすれば来年にはPOWER7プロセッサーが登場する順番になる。アメリカのHOT CHIPS 21と呼ばれるシンポジウムでは少しずつその概要が公開されているようだ。その内容をざっと目にする機会があったので、文系の僕が理解できた範囲で述べてみようと思う。せっかくの情報なのにあまり日本では取沙汰されていないのはもったいない。なお、会社としての公式なコメントではないし、正確であることを保証するものではないので、その点はご了承くださいませ。
まずは物理的な特性から見てみよう。45nmリソグラフィー・テクノロジーの採用によって、POWER6の65nmよりも一段と集積度を高め、567平方ミリメートルのスペース上に約12億のトランジスタを搭載している。POWER6登場当初の搭載トランジスタ数は約7億9千万と言われていたので1.5倍近い。そして、従来では外付けだったL3キャッシュを32MBほどチップ上に搭載している。ここではeDRAM(embedded DRAM)と呼ばれるテクノロジーが採用されている。
POWER6もそうだったように、通常のプロセッサー搭載のキャッシュではSRAMテクノロジーが採用される。トランジスタの組み合わせで作られるメモリである。プロセッサーは要するに膨大な数のトランジスタによるスイッチの固まりなのであるが、同一製造技術のままにキャッシュメモリも同時に搭載しようとすると、SRAMにならざるを得ないのだそうだ。これだと1ビットのデータを記憶するためにトランジスタを6個必要とするので、「多くの土地」(プロセッサー・チップ上のスペース、ちなみにプロセッサー・アーキテクチャーに関する文献などを見ると、「Real Estate:不動産」という用語を見かけることがある)を必要とするし消費電力も大きくなってしまう。当然トランジスタの数だけ漏れ電流が発生するはずなので、発熱量も半端ではないだろう。
メモリ・チップにおいては、SRAMが採用されているケースは滅多になく、そのほとんどはDRAMなのではないだろうか。これだとトランジスタ1個とキャパシターがあれば1ビットを保持できるので、スペース効率が良いし、省エネルギーにもなる。ただキャパシターだといずれは放電してしまう(データを忘れてしまう)ので、ある程度のサイクルで記憶をリフレッシュする(データを思い出させてやる)仕組みが必要だ。結構人間的な仕組みだな。で、それよりも問題なのは、メモリ・チップならばともかく、膨大な数のトランジスタの集まりであるプロセッサー・チップ上に、異質の製造技術を要するキャパシターを同時に搭載するのが非常に困難な事なのだそうだ。このように組み込まれたDRAMだからeDRAMと呼ばれるとか。もしPOWER7がL3のためにeDRAMではなくSRAMを採用していたら、27億ものトランジスタに匹敵するとのことである。
チップ上のL3キャッシュだから、外付けされているよりもアクセス・タイムは相当に改善されるはずだし、32MBとかなりの大容量だからコアあたりの性能もかなり高くなるだろう。他にも技術上の革新は行なわれているそうなのだが、一気に書き切れないので気が向いたらぼちぼちとしたためてみようと思う。

Twitter流行に異議アリ?
ソーシャルメディアマーケティングの具体的戦術
ワクワクさせてよ――目標設定の極意
ネットでリアルを楽しくしたい
やり直せる時代の新教育論(4)