FC2ブログ

分岐予測とスレッド数

Zen 3 世代では CCX が統合され L3 を 8コアで共有するらしい。
つまり、 Zen4 世代で 5nm になる際に1つのチップレットに 8コアの CCX を 2 ~ 4 個詰め込んで 16コア~32コア程度の チップレットを想定していて、EPYCでは 256コア~512コア程度の規模を実現しようとしている、その準備の為に、いったんCCXを統合したのではないか・・・

この規模のCPUをPCで利用するなら、コア数増大とは逆方向に向かう可能性が有ると思うのです。

現代のCPUでは投機実行といわれる手法(実行されるかもしれない命令を予め実行しておき、必要になった時に結果を取り出す事)で IPC を向上させている訳ですが、ここで厄介な分岐予測という手法が必要になります。分岐予測は、道路で例えると、Y字路に来た時に、たぶん未来の私は右側に進むだろうと予測して右側の道を投機的に進んでみた結果を記憶に留めておき、予測が当たっていた場合は、先回りに成功した事になりIPCが向上する訳ですが、予測が外れた場合はY字路から右に進んだ記憶を捨ててY字路まで戻り、Y字路から左側に進み直す必要があります。

ですが、コア数が100とかになるとPCの場合は実働コアが数個しかないので余ってしまいます。だったら、Y字路でAさんは右側、Bさんは左側を進んで道のりを記憶しておいてください、必要な時にAさん/Bさん、どちらかの記憶を呼び出します。とすれば、Y字路まで戻る必要が全くなくなります。これをソフトウエアではなくCPU内部のハードウエアで行えばIPCは格段に向上するはずで、但し、数打ちゃ当たる式にマシンガンの様に投機実行しまくった無駄玉ぶんの消費電力は全くの無駄になりますので、電力あたりの処理能力は低下(シュリンクで補えば、前世代をキープくらいにはなるかもしれない)となるかと、、、

具体的には、1つのCCXを仮想的な1コアにして、CCXの全能力を1スレッドに全力投入できる設計にし、そのCCXを8個程度搭載したCPUを作る事で、超高IPCの8コアCPUが200Wくらいで完成、それを更にデュアルソケットでと、、、

妄想乙!とか言われそうですし、サーバ製品向けの考え方ではないですが、上記構造にしたうえで、4SMTとか8SMTの設定が出来れば全て解決!



スポンサーサイト



SandyBridgeでまだ戦えると思っている私 @2020年

筆者にとっての SandyBridge は、 SandyBridge-EP ですので 8コア/16スレッド×2ソケットですから合計 16コア/32スレッド DDR3-1600 8ch です。具体的には17号機で2012年に組みましたので8年前です。CPUは今では IvyBridge-EP に載せ替えちゃったので厳密には・・・既に SandyBridge 利用者ではなくなっているのですが、そんなに差は無いと思います。PCIeもGen3世代なので特に不足はないです。

CPU
 E5-2603 → E5-2670 → E5-2690 v2

GPU
 Quadro 4000 → GTX 780 ti

現在のCPUとGPUは、ともに2013年発売なので7年前の構成です。

Quadro 4000 は毎日使っていたところ1年ほどで壊れちゃったのと17号機ではSLIできなかった為に GTX 780 ti に乗せ換えました。

現在の構成(全て 2013年に揃えられるパーツです)
 CPU:XEON E5-2690 v2 10Core x 2Socket = 20Core / 定格3GHz TB3.6GHz
 GPU:nVidia GeForce GTX 780 ti SLI (4K@60Hz 対応)
 MEM:Registerd ECC DDR3-1866 4GB x 4ch x 2Socket = 8ch 32GB
 SSD:Areca ARC-1882i + Intel 520 x4 RAID6
 OS:Windows 7 Ultimate 64 SP1 (スタンドアロン)

この17号機は2013年以前のパーツで構成されていますので、概ね Sandy 世代と言っても良いと思うのです。
物理20コア(Sandyだったとしても物理16コア)有るので、個人用途で不足は殆ど感じませんし、4Kディスプレイで普通に最新ゲームができます。

まだまだ戦えますよ?

CINEBENCHI R20 のスコアは6000台です、Sandyに戻しても5000台が出ますよ?i9-9900K より上ですよ?

ムーアの法則の検証

スパコン世界一が ARM に決定し、同時に Apple が 今後の Mac に搭載する CPU を ARM へ乗り換える事を宣言した今だからこそ、あえて IA32/AMD64 の歴史をムーアの法則の検証という形で振り返ってみようと思います。

筆者のブログはデュアルソケット専門ですから、デュアルソケットのハイエンドワークステーションに搭載するCPUを軸としてムーアの法則に対する検証をしたグラフが下図になります(CPU選定基準は掲載していましたが割愛というか後述する事にします)。

TransistorCount.png

灰直線 : 初代IA32の 80386 が発表された1985年を起点に2年2倍則のグラフ
橙直線 : 80386搭載PCが発売され始めた1987年を起点に2年2倍則のグラフ
緑折線 : AMD製CPUのトランジスタ数
青折線 : Intel製CPUのトランジスタ数
赤丸線 : リカバリポイント

余談ですが、今年、このグラフのムーアの法則(但し、2年2倍則)にオンスケジュールを達成しているCPUは有りませんが、 nVidia GA100 はオンスケジュールです。また AMD EPYC Rome の64コア品は昨年時点でオンスケジュール、今年も橙線なら概ねオンスケジュールと言えますが、定格クロックが低くWorkstation向けではないので除外しています。グラフにプロットしている基準としては定格3GHz(AMDは物によって定格2.8GHz)以上かつ最多コア品のダイ全体のトランジスタ数です。

以下、トランジスタ増加の歴史を振り返ってみます。

リカバリポイント1: 80386 → 80486
 ◆ L1キャッシュをオンダイ
  386世代は16Byteバッファしかなかったものが486では8KByteキャッシュ
  をオンダイでCPUに統合しています。486以降、キャッシュがL1とL2の
  階層構造に分離します。逆に言えば、386にはL1やL2の様な階層構造
  はなく、単一レイヤのキャッシュがマザーボード側にあるだけでした。
  ここで言うバッファとキャッシュの違いは、バッファは書いたら次に読んで
  更に次のデータが上書きされるバケツリレー的構造ですが、キャッシュは
  入れた後に何度も読まれたり部分的に書き換えられたりしながら再利用
  される黒板の様な構造という違いがあります。
 ◆ x87系の浮動小数演算アクセラレータをオンダイ
  386世代のCPUは浮動小数演算するには別ソケットに80387を挿しておく
  必要が有りましたので、今でいえばCPUとGPUを統合したAPUの様な形
  の統合です。
 ◆ 多くの命令をハードワイヤ(物理的な電子回路)で実行できる設計
  386世代はマイクロコード(CPU内部のソフトウエア)で数クロック~数十
  クロックで実行していた多くの命令を1クロックで実行出来る様になり大幅
  にIPCを改善し、高速化しています。

リカバリポイント2: 80486 → Pentium
 ◆ L1キャッシュを倍増、併せてデータバスを64bit化
  命令とデータでL1を分離し各8KBにして合計でL1を倍増しています。
  命令とデータでは読み書き特性が異なるので、それぞれに最適化した
  構造にして高速化と大容量化を実現しています。
  言い方を変えると、CPUの外部構造はノイマン型ですが、内部構造に
  限ってはハーバードアーキテクチャを採用した形になり、L1から上の
  部分に付いてフォンノイマンボトルネックを改善した形になります。
 ◆デコーダと実行パイプラインを二重化しIPCを向上。
  486では1命令1クロックが基本でしたが、Pentiumでは1クロックで
  1命令以上を実行できる様になりました。
  単純化して言えば、キャッシュ/デコーダ/パイプラインを二重化し
  トランジスタも2倍、性能は2倍ではないものの同一クロックであれば
  2倍に近づいた訳ですね。
 ◆LocalAPICを統合(P54C以降)
  486以前、デュアルソケットにする為には LocalAPIC をマザーボード
  に2個搭載する必要がありましたがCPUに統合する事でマザーボード
  側の製造単価を下げられる効果があり、デュアルソケットの普及を
  加速し、マルチタスク/マルチスレッドの性能向上に貢献しています。

リカバリポイント3: Pentium → PentiumPro
 ◆L1倍増、L2統合(MCM)
  同時期にMMX PentiumでもL1を倍増していますが、PentiumProでは
  更にL2を統合しています。PentiumまではL2がマザーボード側にあった
  ので、今でいえばeDRAMやHBMの様な効果です。
 ◆デコーダ3本、実行パイプライン5本
  デコーダを2本から3本に強化、実行パイプラインも2本から5本に
  強化しています。
  同時に、アウトオブオーダ(投機実行)を採用し、将来実行するかも
  しれない命令を予め実行しておく事で IPC の向上を狙っていますが、
  同時に、実行する必要が無い命令も実行してしまうので電力の無駄
  が発生します。

リカバリポイント4: Deschutes → Coppermine
 ◆L2オンダイ
  間にKatmaiが在りますが、年が同じなので省略しています。
  前世代までCPU基板上に半田付けされていたL2キャッシュがCPUダイ
  に統合されました。これによりL2クロックがCPUと等速になり高速化
  に貢献しています。
  MCMだったL2キャッシュをトランジスタ数に含む場合は、Deschutesも
  オンスケジュールですので、リカバリポイントとは言えませんが、
  L2キャッシュの等速化は性能に与えるインパクトが大きかったです。
 ◆SSE
  レジスタサイズを128bitに拡張し、4つの32bit演算を1命令で同時に
  実行出来る、つまり行列の計算に向いた拡張を施しています。
  行列計算に限ってはIPCが向上しやすい地盤を作っていますが、
  この時点では演算器が未だ64bitぶんしか無かった為、実際の速度
  向上はSSEによるものではなく、かつ、この世代ではトランジスタが
  しばらく増えませんでしたがクロックだけは2年で2倍に向上した為、
  結果として性能は2年で2倍に向上していた時期で、ムーアの法則も
  誤解あるいは違った形で伝わっていた時期です。

リカバリポイント5: Prestonia → Nocona
 ◆L2キャッシュ倍増
  単純に、CPUダイ面積の多くを占めるL2キャッシュを倍増して高速化
  に貢献しています。
 ◆AMD64
  Intelは、これ以降、互換CPUメーカになります。
  Prestonia で 3GHz を達成して以降、クロックの向上は性能に見合わ
  ない電力消費の増大を招く事が知られる様になり、2年で2倍の性能
  向上が困難になりつつ有り、時代はマルチコア方向に向かいます。
  その為、シュリンク=コア数増加が定番となり、しばらくムーアの法則
  はコア数増大と概ねイコールです。これに併せて後にP4からP6への
  回帰が起きています(具体的にはCore2の事)。

ムーアの法則の限界
 ◆冒頭のグラフで判る通り、Haswell-EP以降、Intelはムーアの法則
  からの乖離をリカバリする事が出来ていません。灰色のラインからで
  見れば、Core2アーキテクチャのHarpertown以降は乖離からの
  リカバリが出来ていません。この時から既に10年が経過しています
  が、当時の筆者の記事には、ARMに侵食される事を記載した物
  出ていますので、Intel社内でも当然の様に危機感を持っていたと
  思うのですが、同時にAMDがダメダメだった時期でもあったので
  危機感は顕在化しなかったのかもしれません。5nmで進化は有って
  もリカバリは出来ないでしょう。10年2倍の時代が来たのかもしれ
  ません。これ以上トランジスタが増えても、電力当たりの性能でARM
  に対抗しつつ、x86-64の処理速度を2倍に向上させるのは非常に
  難しいという事です。内部アーキテクチャを根本的に変えない限り、、、

5nmの世界
 ◆プロセス微細化の進捗
  こちらのグラフは、冒頭のグラフに薄青色(Intel)と薄緑色(AMD)の
  製造プロセス微細化の進行状況を重ねたものです。
TransistorCountwp.png

  来年 5nm を達成できれば AMD はムーアの法則にオンスケでZen3
  をリリース出来る可能性が有ります。

  単位面積辺りの配線数で言えば14nmでは80386を同じ面積に1万コア、
  80486なら同じ面積に2千コア載したダイを製造できてしまいます。
  ちょうどGPUくらいの規模ですのでイメージは出来ると思います。
  これが5nmになると80386なら9万コア、80486では2万コアになります。

  もう少し具体的で現実的な話をすると、65nm の Core2Duo を 14nm で
  製造すると、同じ面積に44コア、7nmでは172コア、5nmでは338コアを
  搭載できます。SandyBridge-EP ならば 14nmで40コア、7nmで168コア
  5nmでは328コアを同じ面積に入れられます。ただし、入れられるという
  だけで、クロスバー(例えばSkylake-SPのメッシュ)やL3などのアンコア
  を増量すると仮定すると計算通りにならないですし、熱密度の事が有る
  ので同等のクロックで動作できるか判りませんが、5nm世代で100コアを
  超えるとしても何ら不思議ではなく、むしろ100コアでは少ないとすら言え
  ます。

  100コア超えた場合の用途はどうなるか?今のOSでは対応していないと
  思いますが、各スレッドを各コアに分散して固定すると高速化できます。
  ゲームで言えばキャラクターやオブジェ毎にコアを固定して割り当てると
  各オブジェやキャラが同時並列に動く演算を容易にこなせますので、より
  精細な表現と動作が可能になります。

デュアルソケットの今後に付いて
 ◆シングルソケットの Ryzen Threadripper 3990X は(MCMですが)
  CPUとしてムーアの法則に概ねオンスケジュールです。価格COMの
  情報で46万円ですから、全ての面で今迄の常識を突き抜けている
  のですが、この規模は8K動画編集の様な用途で実力を発揮します
  のでプロ仕様のワークステーションにも使われていると思います。
  1コア辺り7千円ですね。
  プロセッサグループの事があるので64コア以上搭載しても効果が出ない
  ケースが殆どである事を合わせて考えると、32コアで更に高クロックの
  EPYCやXEONを2つ搭載する様な状況が出来れば、デュアルソケット
  の効果が出せると思います。が、それ以上はワークステーションと言う
  より、スパコンの範疇ですね。パーソナルスパコン。
  もし次の世代で AVX-512 に対応しつつ足回りをHBM化するなどして
  性能を向上しつつコア数を維持し高クロック化する様な路線があるなら
  次世代も作ってみたいです。

  VIA nano は、マイクロコードを乗せ換えると ARM 命令セットが動く
  という噂話が出た当時に流布されていましたが実物はお目にかかって
  いません。
  AMD の K12 は ARM でしたが最近続編の話を聞かない(私が聞き逃し
  てるだけかも)ですが、 K13とかが次に出てくるのでしょうかね?
  IntelがARMを作らないなら、富士通製のARMがしばらく売れるかもしれ
  ませんが、あまり長く続かないうちに米国メーカに上書きされるんだろな
  という気がしています。川崎工場ではフットボール場を作ってましたが、
  あれってそういう事なんだろうなって今思います。

  ARMでデュアルソケットの自作が出来たらイイナって思います。
  エミュレータなんでしょうけど、過去のアプリがまともに動くなら
  ワクワクです。

  ていうか、プロセッサグループが64コア制限してる理由って意味不明
  ですよね。

ARM × CentOS の時代が来たのか?
   CentOS 8
  ARM64(aarch64) と AMD64 両方に対応している事の意義は大きいと
  思います。とは言え、どんな機種とデバイスに対応しているのか?

  Ubuntu や Gentoo も ARM に対応している様ですが、Ubuntu は
  Server 版のみ対応で Desktop 向けは未対応の様です。とは言え、
  ARMを搭載したMacが登場する頃には対応するでしょう。
  Gentoo は ARM には対応していても ARM64 には未対応の様です。

 
 

HBM は、GPUに本格的に定着、CPUへの装着は?

筆者の知る範囲で、最初に HBM を搭載しようとしたのは PEZY ですが、それは流れてしまいました。

2015/12 HBM x4 AMD Fiji
2016/10 HBM2 x4 nVidia P100
2017/09 HBM2 x2 AMD Vega10
2017/11 HBM2 x4 nVidia V100
2019/02 HBM2 x4 AMD Vega20
2020/05 HBM2 x6 nVidia A100

市場では、この様に AMD と nVidia が交互に HBM 搭載GPUを発売していますが、AMD が 一般向けの Radeon と同じ市場にも供給しているのに対して、nVidia は業務用の Tesla や Quadro が主体で GeForce には今まで搭載した事が無いですし、今回もそうなると思われます。 Titan A が登場するかどうかってくらいですかね。

HBM は帯域が太いもののレイテンシが多いデメリットがあり今までCPUには搭載されていませんが、多コア品や前回記事の VIA NCORE の様に太い帯域を必要とする所で導入されても良さそうな気がしますが、、次は TCI ( ThruChip Interface ) ですかね!?

 
 

VIA AVX-4096 (32,736) に付いて考えてみる

VIA が開発中の NCORE と呼ばれる新しい x86 CPU に付いて考えてみます。

より正確に言うと NCORE と呼ばれるのは AVX-512 を 64 倍に拡大した様なAI向けアクセラレータの事で、これを内蔵した 8コア Haswell 相当の x86-64 CPU を VIA が昨年11月に発表・展示しました。

ただ単に AVX-512 を 64個配置したというだけなら Skylake以降のCPUを物理32コア揃えれば同じですが、VIA NCORE は 32,736 bit を 1 Cycle で処理する際に、例えばシャッフルやシフトの様な処理も 32,736bit 単位で可能という事らしく、これが本当なら画像処理や多倍長計算に圧倒的強力なパワーとなる事は明らかです。しかし、これに対応する言語は恐らく今までなかったと思われ、この特徴を生かすアプリは専用設計になるかと、、
プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて二十数台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です(以降、Bull/nano/Ryzenと数台仮組レベルで組んでいます)。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR