FC2ブログ

CPUの速度

これで概ねCPU(コア毎クロック辺り)の性格が判っちゃいますね・・・
※:こちらの自分で書いたブロック図を参照しながら数だけピックアップして一覧にしてみました。

Decoder:プログラムを処理する機械(下記は、その個数)
ALU:整数計算機(下記は、その個数)
SIMD:並列計算機
※:数が多いほど1クロックで処理出来る命令数が向上し、結果として高速化しますが4個以上に増やしても速度があまり向上しないと言われています。理由は分岐予測に失敗した場合のペナルティが大きくなるからだと思いますが実際の所は知りません。マルチスレッド性能を高めるには1つのコアで頑張るよりも多コア化した方が有利です。

DecoderALUSIMD

K5 1 / 2 /
K6 2 / 2 / 64bit
K7 3 / 3 / 64bitADD + 64bitMUL
K8 3 / 3 / 64bitADD + 64bitMUL
K10 3 / 3 / 128bitADD + 128bitMUL
Bull 2(4) / 2(4) / 128bitFMAC ×2(2コアで共有)
Zen 4+1 / 4 / 128bitFMAC ×2

P5  1+1 / 2 /
P55 1+1 / 2 / 64bit
P6  1+2 / 2 / 64bitADD + 64bitMUL
NTB 1+1 /2(4)/ 64bitADD + 64bitMUL
C2D 1+3 / 3 / 128bitADD + 128bitMUL
NHL 1+1+3 / 3 / 128bitADD + 128bitMUL
SDB 1+1+3 / 3 / 256bitADD + 256bitMUL
HSW 1+1+3 / 4 / 256bitFMAC ×2
SKY 1+1+4 / 4512bitFMAC ×2
SNC 1+1+4 / 4512bitFMAC ×2

※: Decoder の 1+1+4 などの数値は、Complex + OpCache + Sinple です。

Zenは上の表だけを見ると整数演算(主に簡単なプログラムや古いプログラム)でIntelを上回り、マルチメディアやAIなどで力を発揮するSIMDではCore2やNehalem世代と同等以上でSandyBridge世代とは使い方により前後するといった位置だと思います(つまりSIMDでは概ね Nehalem ≦ Zen ≦ SandyBridge)。

AMDがSIMDを強化していない主な理由は256bitでメモリ帯域の上限に達すると見込んでいた(概ねそういった傾向にある)事に加えて、GPGPUの方が並列演算性能を高められるから(BAPCoを脱退する際にヘテロジニアスに向かう宣言をしていた)と思います。

Skylake-SPに搭載されている512bitFMACは256bitのAVX2に対して顕著な効果は無い為、ZenのSIMDを256bitに拡張すれば性能は完全に拮抗するのではないかと思います。もちろん細かな違いというか癖は有るかもしれませんが。

もし仮にAMDがZenのSIMDを256bitに拡張した場合、Intelはどんな対抗策を実施するのでしょうね?技術的に躍進する方向に向かってくれると良いのですが、PEZYにした様な政治工作で潰す事は控えて頂きたいと思います。(追記:Zen2では256bitになる様ですから、何らかの対抗策をしてくるかと)

 
 
関連記事
スポンサーサイト



コメントの投稿

非公開コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: No title

> 正月明けから昨年11月に問題として出たIntel製CPUに関する脆弱性として別問題の脆弱性が問題になっています。
> https://pc.watch.impress.co.jp/docs/news/1099687.html

1月4日公開の Win7 用セキュリティロールアップ KB4056894 を一昨日 20号機に適用したところ再起動で BSOD しました。
復旧出来ない状況になりましたのでクリーンインストールする予定で放置しています。

> X86アーキテクチャ設計時からあった投機実行に関する部分の問題だと思われます。

アウトオブオーダーによる本格的な投機実行はP6(Pentium Pro)以降ですが、トマホークの管制制御に使われている386や486にも数段のパイプラインが有り、486以降は縦方向に同時実行されていますので類似の状況が発生する可能性は有りますね。

> Microsoft含めOS側で対応させようと躍起になっていますが、ハードウェア側に手を入れるのが本筋だといえます。

マイクロコードの更新で対応するのが本筋かと思いますが、投機実行に制限を加えると初代Pentium並の速度にまで落ちるので・・・

> X86の互換性を廃しWindowsストア等を使わせたり月額課金などクラウド側にシフトさせようとする動きのように思えます。
> このところ出来過ぎていることが多いのは気のせいでしょうか。

そうですね、Win7でもプログラムとデータの関連付けが変わり、WindowsUpdateを重ねるとアプリの起動が制限されはじめました。

過去のソフト資産を全部捨てようとしていますね。
2年以内に Adobe の CS6 以前は起動出来なくなる可能性があります。

No title

> Bull 2(4) / 2(4) / 128bitFMAC ×2(2コアで共有)
デュアルソケット版では製造されなかったsteamroller,excavatorはともかく、Bullとpiledriverについてはデコーダも2コアで共有なはず。
逆に4個のALUは2コアで分割されて共用できません。
このため、シングルスレッドに於いても4命令/clockのデコード性能を発揮する一方、マルチスレッドでないと整数演算性能が無様となります。
Bull 4 / 2(4) / 128bitFMAC ×2(2コアで共有)
と、DecoderかALUで表記を変えるほうが良いと私は考えます。
ネタ元
Agner`s CPU blog - Test results for AMD Bulldozer processor
http://www.agner.org/optimize/blog/read.php?i=187

> ※:数が多いほど1クロックで処理出来る命令数が向上し、結果として高速化しますが4個以上に増やしても速度があまり向上しないと言われています。理由は分岐予測に失敗した場合のペナルティが大きくなるからだと思いますが実際の所は知りません。
私が昔聞いた話では、命令の依存関係によって並列処理を妨げられるのが理由でした。
Intelが欲しかったのはCompaqの持つAlpha EV8のテクノロジ : 後藤弘茂のWeekly海外ニュース
http://pc.watch.impress.co.jp/docs/article/20010718/kaigai01.htm
2.5命令/clockあたりがx86命令セットに於ける並列処理の(平均値の)限界だそうです。
「x86命令セット」と述べたように、これはソフトウェア側で生まれる限界であり、ハードウェア側のIPCを高めてもソフトウェア側のボトルネックにより無駄になります。
また、このIPC限界は「平均値」なので瞬間的にはばらつきがあり、このときだけはハードウェア側の高IPCが役に立ちます。
このため、マルチコアや電力効率など回路規模から来るコストから無駄を省きたい場合はIPCを2までに抑え、そんなの気にしない場合は3以上のIPCを目指したハードウェア設計になるそうです。
Bullの無様な整数演算性能は、シングル性能より(チップあたりの)マルチスレッド性能を優先した設計の結果だと聞きます。
ただし昔と違って、レジスタリネーミングの段階での処理によりmov命令のレイテンシを0clockにしたり投機実行の向上などソフトウェア側のIPC限界をハードウェアで押し広げる技術が現れた一方、キャッシュレイテンシが4clockまで上がるなどソフト側IPCの影響を受けやすい風潮も見られ、「2.5命令/clock」が現在でも妥当かは知りません。

個人的には、IPCを制限しているのはキャッシュのポート数かな、と考えています。
近年のCPUアーキテクチャの発展を振り返ると、ALUやベクトルユニットなど演算器の数の増加、そしてレジスタ幅の拡大に伴うキャッシュ帯域拡大は激しくても、メモリアクセス命令のIPCは現在ですら2個/clockまで、ジャンプ命令に至っては1個/clock以下です。
これは、データキャッシュのポート数が2回/clock、命令キャッシュ(or OpCache)のポート数が1回/clockであることの反映です。
原理的には、ベクトル命令ですべき処理を基本命令に分割すれば、並列処理できる命令数を大きく水増しできるはずですが、ポート数の限界を放置したままでは、メモリアクセス命令が水増しできずにIPCのボトルネックになります。

Re: No title

> > Bull 2(4) / 2(4) / 128bitFMAC ×2(2コアで共有)
> デュアルソケット版では製造されなかったsteamroller,excavatorはともかく

ですよね~Excavator期待してたんですが。。。

、Bullとpiledriverについてはデコーダも2コアで共有なはず。
> 逆に4個のALUは2コアで分割されて共用できません。

この括弧内の数値はモジュール内の数=OSから物理コアとして認知されるコアに割り当てられている数、として書いたものです。その説明は書いてないw

> ALUやベクトルユニットなど演算器の数の増加、そしてレジスタ幅の拡大に伴うキャッシュ帯域拡大は激しくても、メモリアクセス命令のIPCは現在ですら2個/clockまで、ジャンプ命令に至っては1個/clock以下です。

メモリアクセスは帯域に律速なので、それ以上に高速化しても無意味だから2個/Cycleなんじゃないかと、ジャンプはパイプラインやL1キャッシュラインなども含めた前後関係も考慮する必要があるので複数同時にジャンプするのはとっても難しいんじゃ?
プロフィール

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