データのお砂場(217) R言語、cpus、昔のCPUの性能比較表 {MASS}

Joseph Halfmoon

R言語付属のサンプルデータセットを経めぐってます。今回はMASSパッケージ内の cpus というデータセットです。1980年代前半くらいの「コンピュータ」のCPUの仕様と性能をまとめたデータみたいです。ただしメインフレーム、ミニコン辺が中心、マイクロプロセッサ系の装置はほとんど無です。懐かしいのは年寄バカリ?

※「データのお砂場」投稿順Indexはこちら

Performance of Computer CPUs

今回のサンプル・データ・セットについての解説ページが以下に。

https://stat.ethz.ch/R-manual/R-devel/library/MASS/html/cpus.html

元になったのは、ACMのCommunications誌に掲載された1987年の論文のデータのようです。209機種ものコンピュータのモデルを比較した労作のようです。主眼は性能評価の数字とその推定値かもしれませぬ。残念なことに対象は、大型機、ミニコン主体です。ざっと見たところ、マイクロプロセッサ・ベースのマシンはアポロ社のワークステーション(68K系統のマイクロプロセッサを登載していた。「ワークステーション」でだしの頃には人気だった。)くらいではないかと。既にIBM-PCや、SUNワークステーションも登場していたハズの時代ですがそいつらは含めてもらえてません。論文執筆者にはまだ玩具に見えていた?

お惚け老人は意外と若いので、それほど多くの機種にお世話になったわけではございません。しかし、懐かしいお名前がチラホラしてますぞ。ついサンプルデータベースのお名前のフィールドを列挙したものにマーカを引いてしまいました。cpuNames1EC

黄色のマーカつけた中でDEC社の VAX 11/780、そして uVAXにはお世話になった記憶がアリアリ。当時の世界のベストセラー・ミニコンとその廉価版の小型機です。今に残る「MIPS」という単位はVAX 11の上で初めて現れた筈(確か測定はドイツ?)1Mipsの基準であります。 また、同じDEC社の「大型機」DEC System-10と、20のところに緑印をつけました。確かに使った記憶があるのですが、よる年波です。どっちゃの機種を使わせていただいたのか定かでありませぬ。これはこれでクセ強なマシンでした。そしてIBM機は多数列挙されている中で、3081の後の空白に黄色のマーカを引いてしまいました。これまた朧げな記憶によれば、かのベストセラー IBM 3090にチラリとお世話になっていたからです。まあ、3270端末からチッカ、チッカと半二重通信でエディタを動かして、ジョブ流していただけなんだけれども。

なお、青のマーカつけたAPOLLO社のDNシリーズはワークステーションの草分けです。SUNワークステーションより早かったはず。「アポロ/ドメイン」とOSのお名前もくつけて呼ばれることが多かったような。モトローラ(後のフリースケール)のマイクロプロセッサ68Kシリーズご採用。残念ながらお惚け老人は縁なし。

懐かしんでばかりもいられないので、サンプルデータベース内の変数を列挙します。

    1. name、製造会社とモデル名
    2. syct、サイクル・タイム、単位 ns
    3. mmin、主記憶最小容量、単位 kB
    4. mmax、主記憶最大容量、単位 kB
    5. cach、キャッシュ最大容量、単位 kB
    6. chmin、チャネルの最小数
    7. chmax、チャネルの最大数
    8. perf、 IBM 370/158-3を基準としたベンチマークMIXの相対性能(公式).
    9. estperf、Ein-Dor氏とFeldmesser氏(論文の著者)による推定性能
なお、8は解説文書によると「IBM 370/158-3を基準とした」と書かれてますが、IBM 370/158-3のperf値は45という半端な値です。データベース内でぴったり100という数値を叩きだしているのは、IBM 4381-1です。これはIBM 4300シリーズ(System/370アーキテクチャ)の小型空冷、シングルCPU機でないかと思います。知らんけど。
また、現代を生きる若者(中年?)の皆さまには「チャネル」など聞いたこともないという方が多くいらっしゃるじゃないかと思います。ぶっちゃけ簡単化すると「DMAみたいなもの」です。昔の大型のマシンには多数の入出力デバイス(と多数のユーザさん)がブル下がっていたので、CPUを可能な限り使わないようにするために入出力となると直ぐにCPUの制御権を召し上げて「チャネル」にお任せしていた遠い記憶。全体のスループット優先っす。一方、パソコン、ワークステーションの世界では1台のマシンを一人のユーザが占有していることが多いので、結局、ターンアラウンドタイム優先。チャネルなどの出る幕は無くなりました。
なお、このサンプルデータベースは、重回帰分析や複数ある変数からの選択といった処理のためのものみたいデス。でもメンドイので今回は単純な回帰分析やってグラフを描いてお茶を濁しました。濁しすぎか、自分。
まずは生データ

生データをロードして、眺めたところが以下に。rawDataCPUs

さきほどちらっと眺めたお名前以外は、皆整数であります。サマリをみてみるとこんな感じ。summaryCPUs

黄色でマーカつけたところは、値が0になる変数があるということです。重回帰分析するときに log10 とるような処理例を見かけたのだけれど、該当のフィールドについては値0が混じっているのでそこの始末をどうつけるか考えておかないと対数とれませぬなあ。今回は面倒なので対数は使わず。手抜きだな、自分。いつものことよ。

一方、syctのサイクルタイム、そういえば昔はメインフレームの人は 何ナノ秒とかよく言っていた記憶があるけど、どうも周波数にしないと体感がついてきませぬ。半導体業界は昔から動作周波数で言う習わしだったし。そこで以下のようにして、MHz換算したスピードを加えておきました。

MHz <- 1000/cpus$syct
cpus_MHz <- cbind(cpus, MHz)
性能は動作周波数に比例しとる筈

ぶっちゃけ、性能はクロック周波数に「だいたい」比例しておるというのが常識であります。そこで以下のようにして回帰直線付きのプロットを描いてみました。

lm_MHz <- lm(perf ~ MHz, data = cpus_MHz)
summary(lm_MHz)
plot(cpus_MHz$MHz, cpus_MHz$perf, xlab = "Speed[MHz]", ylab = "Performace", main = "CPU Performance", xlim=c(0, 65))
abline(lm_MHz, col="red")
text(x=43.5,y=1144,labels="AMDAHL 580", pos=1, col="red")
text(x=33.3,y=1150,labels="SPERRY 1100/94", pos=1, col="blue")
text(x=58.8,y=116,labels="IBM 4381-2", pos=3, col="green")
text(x=58.8,y=100,labels="IBM 4381-1", pos=1, col="orange")

結果が以下に。plotCPUsMHz

上辺と右辺にはりついた4機種について、textつかって機種名を記載しましたが、機種名とその表示位置の指定は以下のコマンドの結果からチマチマ手入力したもの。

cpus_MHz[cpus_MHz$perf>1000,]
cpus_MHz[cpus_MHz$MHz>50,]
キャッシュは多い方が速い?

サンプルデータベースの機種の中にはキャッシュ登載もそうでないものもありますが、沢山登載している方が速そうな気がします(気がするだけだけれども。)

その場合の回帰直線を描くコマンドが以下に。

lm_cach <- lm(perf ~ cach, data = cpus_MHz)
summary(lm_cach)
plot(cpus_MHz$cach, cpus_MHz$perf, xlab = "Cache Size[kB]", ylab = "Performace", main = "CPU Performance")
abline(lm_cach, col="red")

プロットが以下に。

plotCPUsCache

上のグラフみると、キャッシュ無でも速い機種はあるのう。キャッシュ無の群れの中では断トツの38MHz動作、IBM 3083Bとな。ホントに?

データのお砂場(216) R言語、coop、分析化学における6研究室共同研究 {MASS} へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です