とあるソフトウェアエンジニアのブログとあるソフトウェアエンジニアのブログRYZEN2020年もすっかり明けて2月になりましたが、年明けに10年ぶりにPCを更新しました。i7-980Xを3つ程とi7-920を入手し4台のPCがあるわけですが、その後継ということでZEN2世代のRYZENに決めました。i7を買ったときはちょうどWindows7に乗り換えた時でそこから8,10ときて、ここ2,3年は自分のPCがもっさりしていてグラフィックカードを変えたりしていましたがやっとこさ全とっかえができました。今回はインテルからAMDに乗り換えたのですが、長いPC歴でちょこちょこAMDを使っています。今までメインマシンで使ったCPUを思い出すだけ書き出すと、こんな感じになります。AMD年号は大体ということで割といい加減です。その時の懐事情と趣味とその他諸事情で買い集めたり絞ったりしていましたが、こうしてみると2010年代のスキップぶりが半端ないですね。Bridge世代でそろえればよかったと少し後悔して、AMDからZenマイクロアーキテクチャが出る噂を聞きつけたときに様子見をしてZen2になったところで「行こう!」となった感じです。話は戻って、初めての16ビット、32ビット、64ビットCPUは、AMDになります。16ビットパソコンはPC-9801RXでしばらくはIntelを使っていると思っていたのですがあるときに中を開けてみたらAMDのCPUでした。カタログをみたら80286相当品と書かれていてものすごくがっかりした記憶があります。32ビットCPUは、i486SX(J)と思いきや、このCPUは外部バス16ビットで、それを初めて知った時のがっかり感は半端なかったです。524でこちらもメモリの増設で筐体を開けた時にみたらAMDでまたもやがっかりした記憶があります。Intelになります。Ver4.0(Ver3.0はスキップ)、DDR4-RAM、UEFIです。利用面からは、初めてのCPUプロファイラ(AMDuProf)を使うプロセッサになります。CPUはキャッシュミスとか分岐予測ミスとかが発生すると内部のカウンタで記録をとるのですが、それを読み出すソフトウェアがCPUプロファイラということになります。有名どころではIntelのVTuneがあるのですがこのソフトがめっぽう高くCPUと合わせての購入となると個人では手が出しにくいです。AMDの方はなんと無料ということでまぁAMDということになりました。そんなものを何に使うのか?と言われそうですが、もちろんADPのインタプリタ部分で、当初はVisualStudio付属のプロファイラを使って最適化を行っていましたが、いろいろ私に合わず、『V-Tuneかー』と思っていたところへ、CodeXL(AMDuProfの前身)の存在を知り、CodeXLに乗り換えたのが5年ほど前になります。CPUがIntelの場合、プロファイラは命令毎にかかった時間が分かるのですが具体的な原因(キャッシュミスなのか?ブランチペナルティか?とか)までは分からずそのあたりは手探りになっておったのがこれでばっちりと分かるようになります。プロファイルをしてみると、パットと見てよくわからない指標があるのでカウンタの意味についてはお勉強が必要なようです。branchとかが関係するのか?(おそらく他のブランチとの関係で結果的に実行された/なかったとか言いたいのかもしれないのですが・・・)とか直接的でないところがあります。ここにきて、ADPの実行ファイルサイズは約1MBになりますが、今まではプログラムやデータのメモリへの配置はコンパイラに任せていましたがそろそろそういったところまでも手を出す必要があるのかなと思っています。いっても具体的にどうするのか?という話ですが、先ずCPUプロファイラを使いながら基礎データを集めてその上でソースコードを再編集したり、インタプリタ本体を抜き出してミニマムなプログラムを作ってプロファイルをかけたりいろいろ実験ができそうです。ちなみにこういった話をすると『じゃアセンブラで組めや!』と言われかねないのですが、まぁうざい煽りに真面目に答えると、要は今のプログラムはCPUの潜在能力を十分に生かし切れていないので工夫の余地があり、上手くいけば数倍早いプログラムが作れるということになり、2020年現在ではシングルスレッド性能で数倍といえば時間軸に置き換えると10年以上先に行けるという話になります。いうことかと言いますと、例えば1989年に出たi486DX(33MHz)と2000年に出たPentiumIII(1GHz)の性能比は、単純にクロック周波数で見ても33倍(実際はそれ以上)になります。i7-980X(3.33GHz、ブースト3.6GHz)とPentiumIII(1GHz)との性能比は、クロック周波数でみて約3.3-3.6倍と伸び率が10分の1程度に減速しています。3950X(3.5GHZブースト4.7GHZ)とCorei7-980Xはクロック周波数ではブースト時で比較して1.3倍、実際に手元にあるADPのプログラムを動かしてみると整数演算で2倍となっています。それまでは最新のCPUと言えば以前のCPUより格段に速くなって10年も経てば桁違いの速さを見せたのですが2000年代の中盤頃からそのスピードが止まり、今では10年で2倍のパフォーマンスアップに留まることになります。今まではプアなプログラムを組んでも時間が経てば解決してくれるのですが、これからはきちんと考えて作らないとダメということになります。CPUプロファイルの話はこの辺にしておいて、今回もう一つ試したいことがあるのが、仮想マシンの活用で今回、私が使う必要のあるプログラムの一部(eTaxとか弥生会計とか)を仮想マシンの方へ移しました。今までは再セットアップとなるとこれらのソフトを再インストールしなければならなくなり面倒なだけなのですが、それが不要となり気軽に再セットアップができるようになるので便利です。3950X特有かもしれませんがCPUプロファイルとの共存ができない(切替にUEFIレベルで設定変更が必要になる)ことでCPUプロファイルを取りたいときはいちいちマシンを再起動することになります。Constructorテーマエントリー(RSS)とコメント(RSS)です。