IBM i のウンチクを語ろう
~ その29:過去30年の間に最も大きく変わったもの -1
皆さん、こんにちは。どのような立場であれIBM i に関わっている方であれば、IBM i 生誕30周年の事は幾度となく耳にされていると思います。製品発表日である1988年6月21日を「誕生日」とする論調が目立ちましたが、これは「受胎告知」のようなもので、実際には出荷開始日である同年8月26日とする方がふさわしいのではないかと安井個人的には思っております。一人で「正論」を唱えたところで誰も耳を傾けてくれそうにはないので、おとなしく流れに身を委ねる事にしておりますが。
30年間を通じてAS/400の基本的アーキテクチャーは不変、すなわち仮想化されたマシン(TIMI)によるアプリケーション資産継承性も、オブジェクト・アーキテクチャーによるセキュリティも、単一レベル記憶によるディスク・パフォーマンスの自動最適化も何もかもです。もちろんテクノロジーやビジネスの動向をにらみながら、その上に実装される機能、例えばモバイル対応やAI連携などは発展し続けています。不変のアーキテクチャーをベースにしながらも各種機能群が時代に合わせて進化する、松尾芭蕉の俳諧の世界にある、不易流行のようなものでしょうか。
5年前の25周年記念イベントの際に、何人かのIBM i 開発者をつかまえて質問した事があります。過去25年間の中で、最大の技術的革新は何だったのか、と。回答は異口同音に、CISCからRISCプロセッサに変更した事、でした。1995年にそれまでの48ビットCISC(Complex Instruction Set Computer: 複雑命令セットコンピュータ)プロセッサから、64ビットRISC(Reduced Instruction Set Computer: 縮小命令セットコンピュータ)プロセッサへの切替えが行われた事だというわけです。IT業界の常識では、アプリケーションを継続的に使用するためには、コンパイルのやり直しや書き換えが必要になるほどの大きな変更です。AS/400ではその必要性はなく、旧来のアプリケーションを手付かずのまま、新プロセッサ搭載モデル上で稼働させる事ができました。あれから5年経ちますが、未だにこれ以上の大きな技術的革新は見あたりません。
そもそも何故あのような変革が必要になったのでしょうか。前々回のこのコラムで述べたように、かつては基幹業務用のAS/400と、科学技術計算用のRS/6000 という、同等規模だが利用目的の異なる別系列のシステムが存在しておりました。長期製品戦略として、将来に向けた性能向上とハードウェア開発コスト削減を目指す、そのための最初のステップとして1995年にプロセッサが統合されたのです。その後各種の周辺ハードウェア部品の統合、最終的に2008年のパワーシステム登場によるマシン全体の統合に至るまで、出荷開始年にして13年間を要しています。
今更ながら、最初からテクノロジーを揃えておけば後が楽だったのに、などと思ってしまいますが、背景にはそれなりの理由があったようです。製品登場当初のAS/400とRS/6000はそれぞれ48ビットCISCと32ビットRISC、そして2008年に統合されたパワーシステムは64ビットRISCプロセッサを搭載しています。ビット数の48とか32は0と1の並びの個数、すなわちプロセッサ内部の作業用メモリであるレジスタが収容できる二進数の桁数を表しています。ビット数が大きくなればなるほど、レジスタはより大きなデータを一度に処理できるようになりますし、システムはより大きなメモリ空間を扱えるようになります。1971年に世界で初めて登場したマイクロ・プロセッサは、4ビットのIntel 4004であり、その後8・16・32ビットと成長を続け、現在の主流は64ビット・タイプです。符号ビットは無いものとすると、かつての扱える値の最大値16(2の4乗)は、今や約1845京(2の64乗)になったというわけです。日常生活においてはまずお目にかからない、実質的に無限と言って良さそうです。
ちなみにIntel 4004開発のきっかけとなった用途は日本製のプログラム電卓でした。4ビットで10進数の1桁に対応しており、桁数分の繰り返し演算を行う事によって、大きな数を扱っていました。もし64ビット・プロセッサを搭載していたら繰り返しは不要になるので、実行ステップ数は激減します。クロックは速く、に加えて、ビット数は大きく、というのがプロセッサの一般的な性能向上策です。
現在ではCISCかRISCか、といった議論を目にする事はまずありません。これらは優劣ではなく、アプリケーションをより高速に動作させるために、プロセッサはどうあるべきか、といったアプローチの違いに過ぎません。歴史的にはCISCタイプが先にあり、プロセッサ・クロックの高速化とビット数の拡張に加えて、より複雑で高度な命令セットをサポートすることで、プログラムのステップ数削減を実現し性能を高めていました。コンパイラの負担も小さくなります。ただ高度な命令をサポートするには、内部のトランジスタによって実装される論理回路が複雑化するため、高速化などによる性能向上の頭打ちが懸念されるようになります。そこで内部構造をシンプルにしてサポートされる命令セットを絞り込み、プログラムのステップ数やコンパイラの負担は増えるかも知れないが、それ以上にプロセッサを高速動作させようというRISCの発想が登場します。
RISCはデータをメモリからプロセッサ内のレジスタに取り込み、演算を行い、結果をメモリに書き戻す、といった具合にいくつもの細かな手順を要するのに対して、CISCは一度でメモリ上のデータを直接操作できる、といったコンセプト上の違いがあります。基幹業務では大量のデータに対して演算を行う必要があるので、旧来のAS/400にとってはRISCよりもCISCの方がより適した選択だと言えます。当時のAS/400が採用するプロセッサは、1978年に発表された先代のシステム38のそれを拡張した、デザイン的にも古いものでした。元々AS/400は、システム38の中にシステム36を取り込むようにして開発されたシステムです。ところが、テクノロジーやビジネス要件の変化に伴って、RISCの方がより良く適合する、従来の基幹業務とは異なるタイプのアプリケーションが登場します。SoR(Systems of Record: 直訳すると「記録のシステム」、すなわち基幹業務)だけでなく、SoE(Systems of Engagement: 「連携のシステム」)も同時にサポートすることが求められるようになったのです。1980年代が終わる頃までには、AS/400の将来を考えると新しいプロセッサを開発する必要性が認識されるようになります。
当時の48ビットCISCプロセッサを64ビットに拡張すると共に、RISC的なコマンドを追加実装しようと、次世代プロセッサの検討が本格的に始まったのは1990年です。OSやマイクロコードの変更を最小限に抑えられるという期待が、拡張案の前提にありました。一方、将来においても市場競争力を維持するためにはそれでは不十分で、デザインを一新するべきという意見もありました。アプリケーションの互換性は、仮想マシンであるTIMI(Technology Independent Machine Interface)により維持する必要があるので、TIMIを構成するマイクロコードの変更が非常に大きなものになる事が懸念されました。
IBM i 開発部門の外では、PowerPCという最も先進的なRISCプロセッサのデザインが別途進行していました。ロチェスターもこれに相乗りしてはどうかという案が出てきますが、AS/400の全てを自前で作り上げたいとする開発者の中には、あまり乗り気にならないばかりか、拒否する人も出る有様です。マイクロコード変更の作業負荷が膨大なものになる事も理由の一つでした。ただ採用するべきテクノロジーを決定するにあたり、別な「力学」も作用します。
高性能プロセッサを将来においても継続的に開発できる会社は数社に絞られてくるだろう、というのが当時の業界の観測でした。IBMはその中に加わろうとしており、AS/400をPowerPC陣営に加えれば、その成功の可能性をより一層強固なものにできると確信します。何としてでも新プロセッサを市場で成功させなければならないので、IBMはAS/400マイクロコード改修のために膨れ上がる開発予算をサポートします。AS/400がPowerPCを採用する事は、当時のIBMとしての判断でもあったようです。
従来の48ビット・プロセッサから、既に開発作業が進行していた32ビットPowerPCに移行するのは明らかにパフォーマンス劣化を招きます。そこで、次世代向けとして構想段階にあった64ビット版への移行が本命になりつつありました。ただ、様々なAS/400のアプリケーションを分析してみると、RISCゆえに命令セットが縮小されているPowerPCに欠けていて、実装を諦めるわけにはいかないCISC的なプロセッサ命令がいくつか見つかります。当時はまだ64ビット・プロセッサを必要とするシステムは他にありません。そこでロチェスターは、64ビットPowerPCを拡張して基幹業務にも耐えられるプロセッサの開発作業をリードします。AS/400が初めて搭載するRISCプロセッサであり、製品発表時にはPowerPC ASと呼ばれました。
CISCとRISCのハイブリッド的アプローチは他のプロセッサにも見られます。例えばCISCの典型とされていたIntel Xeonの内部ロジックはRISCの発想で作られていると言われています。RISC側もサポートする命令を増やす事によって、本来の意味である縮小命令セットではなくなっています。登場当初は明確に異なっていたポリシーも、年月を経る毎に互いの長所を取り入れながら歩み寄り、今日では両者を区別する意味はほとんどありません。
テクノロジーの切替えがあったにも関わらず、AS/400上のアプリケーションを継続的に利用できたのは、TIMIの存在に依存する事は上述したとおりです。IBM i 開発者の立場から見ると、プロセッサの切替えという出来事は、広く市場の動向に目を向けて、それまでの自前主義から、よりオープンな開発体制に向けて舵を切るきっかけになったのだと思います。IBM社としての判断が影響したのも事実ですが、30年近く前のこの決断が、現在のIBM i 搭載パワーシステムを支えているのです。そこにはマイクロコードの大改修という投資が伴っていました。次回はTIMIよりも下位の階層において何があったのかについて述べてみようと思います。
ではまた