cyber205の日記: RISC CPUはなぜ速い
コンピューティングエッセイ(オンライン版)
というのがあって、1989年の記事に、
RISC CPUはなぜ速いという項目がある。
初期のRISCマシンが、その速さをどこから引き出していたかの考察なのだが、
今読んでも結構面白い。
「16次の行列(倍精度)どうしの積を500回ほど計算するプログラム」をベンチマーク対象にして、
68030+68881で20MHzのマシンが45sec、ところが同じモトローラ88000の20MHzだと2.4secで計算が終わる。
という記述。これは速いな、確かに。
これがPC9801VX+80287でコンパイラがMS-Cだと150sec、IBM3090相当の国産超大型機は0.16sec、
そして瞬間最大風速3Gflopsのスパコンでは0.06secで計算が終了したそうな。
しかしX-windowを起動してみると2.4secで計算が終了するRISCのバカ速さは感じられないのだという。
それこそPC-9801RA(80386/20MHz)と同程度になるのだとか。(いや、386は結構速いマシンなんでは…)
結局、実行順序を変えてパイプラインを乱すと確かにRISCは物凄い速度差が出るし、キャッシュミスして
外部メモリアクセス&ウェイトが入ると、とんでもなく性能が落ちることが具体的に数値で指摘されていて
興味深い。1ウェイトで性能は半分…そりゃ確かに大変だ。
当時あったCISCな設計の80286/68020では1ウェイト入れても20~30%の性能低下で済むのだとか。
確かにPC9801VM2とかは3ウェイト入れたV30の10MHz動作というアーキテクチャだったが、
それでも実用になったもんな。今から考えると、よくあんなものを有り難がって使っていたものだ。
# PC9801VM2は、一太郎Ver.3と共に、PC9801をビジネスにおける文書処理マシンとして確立させた名機で、
# 「Q.パソコン欲しいんだけど」「A.とりあえず98買っとけ」と言われるようになったのもこの頃かな。
# でも、パソコンに何か物凄い夢を持っていた連中の夢を叩き壊した罪深いマシンでもある。
最近のPLLを備えたチップならこの外部メモリアクセスやウェイトのペナルティはもっと凄まじいものに
なるはずだ。今時のチップみたいに内部でx10ぐらいなら外部メモリアクセスだけで速度1/10、
1ウェイトも入れようものなら、1/20ぐらいに性能が落ちる計算になる。
このエッセイには掲載されていないようだが、テストに用いられたソースコードも参考までに見てみたい。
基本構造は説明されているので、自分で組めないこともないのだけど、結構面倒そうだ。
幸い、RISCマシンならCATだの玄箱だのLinuxZaurusだのと、幾つか趣味のマシンを所有しているので、
動かす環境は有る。問題は、自分がマトモなコーディングをしなくなって久しいということなのだ…。
P.S
正直、RISCってのは確かに面白いアプローチだったけれど、基本的な悪癖はそのまま変わってない。
速度的にも、容量的にもメモリへ大きな負担をかけることで成り立つアーキテクチャだということで、
さらなる性能アップとしてVLIWなんかを採用しようものならその負担は飛躍的に増大する。
そういう意味では現在のx86がCISCベースの処理体系を、デコードして複数のRISC命令にコンバートし、
あたかも内部で圧縮を解くかのようにバンド幅の必要な部分をチップ内部のキャッシュに封じているのは
高速なメモリを多量に使う悪癖を抑えた、なかなか賢いアーキテクチャと言える。
集積度が上がったから可能になった力業という見方もできるけど。
RISC CPUはなぜ速い More ログイン