Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CPUに関する話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Takanori Sejima
PRO
October 05, 2015
Technology
0
0
CPUに関する話
CPU のお話です
Takanori Sejima
PRO
October 05, 2015
Tweet
Share
More Decks by Takanori Sejima
See All by Takanori Sejima
互換性のある(らしい)DBへの移行など考えるにあたってたいへんざっくり
sejima
PRO
0
170
NAND Flash から InnoDB にかけての話(仮)
sejima
PRO
0
6
InnoDBのすゝめ(仮)
sejima
PRO
0
1
さいきんのMySQLに関する取り組み(仮)
sejima
PRO
0
1
sysloadや監視などの話(仮)
sejima
PRO
0
0
さいきんの InnoDB Adaptive Flushing (仮)
sejima
PRO
0
1
TIME_WAITに関する話
sejima
PRO
0
9
MySQLやSSDとかの話 その後
sejima
PRO
0
2
binary log と 2PC と Group Commit
sejima
PRO
0
0
Other Decks in Technology
See All in Technology
Phase07_実務適用
overflowinc
0
2.1k
Phase06_ClaudeCode実践
overflowinc
0
2.2k
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
210
夢の無限スパゲッティ製造機 #phperkaigi
o0h
PRO
0
380
AI時代のオンプレ-クラウドキャリアチェンジ考
yuu0w0yuu
0
260
俺の/私の最強アーキテクチャ決定戦開催 ― チームで新しいアーキテクチャに適合していくために / 20260322 Naoki Takahashi
shift_evolve
PRO
1
460
「お金で解決」が全てではない!大規模WebアプリのCI高速化 #phperkaigi
stefafafan
5
2.3k
BFCacheを活用して無限スクロールのUX を改善した話
apple_yagi
0
130
韓非子に学ぶAI活用術
tomfook
3
1k
Phase03_ドキュメント管理
overflowinc
0
2.8k
MCPで決済に楽にする
mu7889yoon
0
130
非同期・イベント駆動処理の分散トレーシングの繋げ方
ichikawaken
1
150
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
190
How STYLIGHT went responsive
nonsquared
100
6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
180
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
850
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
470
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
Between Models and Reality
mayunak
2
240
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
170
Transcript
CPUに関する話 sejima
免責事項 - 本資料において示される見解は、私自身の見 解であって、私が所属する組織の見解を必ずし も反映したものではありません。ご了承くださ い。
はじめに - 最初に推薦図書を列挙しておきます - この手の知識は、十年二十年と役に立つので - 十年後もエンジニアやりたい人は、読んでみて もいいかも
推薦図書 - はじめて読む486 - OSの勉強をするときに読んどくといいかも - CPUの創りかた - Write Great
Code〈Vol.1〉 - 比較的プログラマよりの内容 - 電子書籍版 もある - Write Great Code〈Vol.2〉 - 最近のコンパイラだいぶ賢いから、ちと古いかも
- これらの書籍、十年くらい前に読んだんですが - いま思い返しても、良い内容だった(という気が するので) - いまはじめて読んだとしても(たぶん)役に立つ - 良い書籍は、十年以上経っても価値があると思 います
- ただ、流石に古い気がしなくもないので - 最近の本で良い書籍あったら教えて下さい - 書籍以外でいうと、日本のライターさんは優秀 なので、Web上に日本語でいい記事がけっこう あります。 - わたしはよく後藤弘茂さんや、大原雄介さんの
記事を読んでます
次に、インフラエンジニア向けの一冊 - クラウドを支える技術 ──データセンターサイズ のマシン設計法入門 - Google の人がDCについて書いてる - 個人的には「電気代とビッグデータ」がテーマだ
と感じた。彼らのワークロードに最適化するとこ うなるという - 彼らがCPUをどう捉えているかわかって面白い
CPUの細かい構造や仕組みについては - 作図が嫌いというかめんどくさいのでカツアイし ます - 各々調べてみてください - というわけではじめます
CPUはなぜ遅いのか? - 消費電力や排熱の都合上、動作周波数を上げ にくい - 電圧上げないとクロック上げられないけど、電圧もクロッ クも消費電力に多大な影響を与える - IPC(Instructions Per
Cycle)を上げるのが大 変難しい - execution unit の稼働率を上げるのが難しい
そして何より
DRAMが遅い
CPUから見ると、DRAMは非常に遅い - CPU内部のキャッシュと比べて100倍以上遅い - これは可視化できてて面白い - メモリアクセスを減らせないと、CPUの execution unit の稼働率を上げられない
- DRAMの遅さに引きずられる
DRAMの遅さに引きずられる? - CPU内部の execution unit が欲しい速さでは、 DRAMからデータを転送できない - 複数のスレッドやプロセスが、メモリアクセスをし て、メモリからデータを読み込むのを待って
- パイプライン がストールする - レジスタの取り合いになるなど、ストールするケースは他 にもあるけど、DRAMの遅さはかなり致命的
ちなみに最近の Intel の L1 cache は - いわゆる ハーバード・アーキテクチャ -
命令とデータが別々の領域に格納されてる - 他の cache と異なり、 L1 cache だけは命令と データで二種類ある - 命令がぜんぶ L1 cache から捨てられると大変 なので、これはアリな設計だと思います
DRAMが遅いから - CPU の execution unit の稼働率が低いので、 Intel は Hyper-Threading
導入したそう - Typically, applications make use of about 35 percent of the internal processor execution resources. The idea behind Hyper-Threading Technology is to enable better processor usage and to achieve about 50 percent utilization of resources.
じゃとりあえず - 広範囲にメモリアクセスすると遅いっていう、至 極簡単で、人類にとって何の役にも立たないサ ンプルコード書いてみたんで - これとこれ - じっさいに見てみましょう
で、具体的には - こんな感じでコンパイルして、差分はこんだけ - Xeon L5630 の環境 と E5-2630L v3
の環境 - Xeon L5630 or Xeon E5-2630L v3 - Ubuntu 14.04.3 LTS - kernel 3.13 x86_64 - glibc 2.19 - gcc 4.8.4
実行するとこんだけ違う - けっか - L5630 - E5-2630L v3 - CPUのキャッシュから引けないと、CPUの
backend(演算装置)がめっちゃ待たされる
最近のCPUとDRAMだいぶ優秀ですが - clock down してるとだいぶ性能落ちます - L5630 - E5-2630L v3
- L5630 と E5-2630L v3 の差がなくなる勢い - 最近のCPUは clock の落ち幅が大きい傾向に あるので、このへん注意しましょう - Brendan Gregg は AWS でも MSR 見てるよう ですしね
閑話休題 - 据置型ゲーム機の優位性はざっくり以下の2つ - コストパフォーマンス(ゲーミングPCよりかなり安い) - メモリの帯域 - ゲーム機に限らず、GPUを酷使するならメモリの帯 域は重要になる。GPUはメモリの帯域食うので
- 少々コスパが悪くても、据置型ゲーム機には、PCで 使われてるものより高速なメモリが積まれてる
じゃ、なんでCPUは こんな状況なの?
10年前と比べ、CPUは何が良くなったか - プロセスルールが進んで微細化が進んだ結果、 消費電力減った - 省電力機構が進化した - DRAMの帯域が増えてきた - しかし、まだ足りない。CPUほど進歩してない。
- 動作周波数上げるの難しいから、Coreの数が 増えてきている。特にXeonは劇的に
クロック上げるのが難しいから - 電圧を上げないと、クロック(動作周波数)はそ んなに上げられない - 消費電力は、電圧の二乗×動作周波数 に比例 - 電圧上げたくないから、 今でも、x86
は高くても 4GHzくらいの動作周波数しかない - 電圧上げるくらいなら、ということでコアを増やし てる
そして
トランジスタが 余ってきた
トランジスタが余った結果 - コアの数を増やしたけど - キャッシュを増やしたけど - まだ余るので、アンコア(Uncore)を強化する余 裕ができた - Skylake
に至っては、カメラ用にISP(Image Signal Processor) まで積んだらしい - 確かにイマドキのWindowsマシンには、組み込みの カメラ普通についてる
アンコア? - CPUに統合された、coreじゃない部分 - メモリコントローラや I/O コントローラなど - プロセッサーコアやキャッシュじゃない部分 -
かつてはマザーボード上のチップセットなどで実 現していた、様々な機能を統合している - 消費電力削減やI/Oの性能改善に貢献している
アンコアの強化に至る前、2006年ごろ - Intel は Larrabee で many core の夢を見た -
一方、 Sony、 SCE、IBM、東芝は、 Cell という ヘテロジニアスアーキテクチャをもたらした - Cellは扱いが難しいけど性能でたので、ヘテロ ジニアスな設計を他のCPUベンダーは追いか けることになった
- トランジスタが余ってきたと思うけど - いまのSRAMやプロセッサーコアだけでは、 CPU上のトランジスタを上手く使い切れない - CellがPPEとSPEを分けたように、CPUの中に 様々な機能を持つものを入れていくほうが効率 がいい
ここで Intelさんを 振り返ってみると
Intelさんとしてはきっと - いまの Xeon は大勝利 - NetBurst のときの失敗は取り返せた - もはやサーバ市場で恐れるものは無いのだろう
- 性能が上がるとサーバの高集約化が進んで、台数の伸びは鈍化する だろうけど - PCやサーバ以外の市場も取らないといけない - 自社のFabを自社製品の製造で埋め尽くせるの が理想
Intelは自社の生産ラインを使い切りたい - 研究開発をし、他社の追随を許さない製造技術 を持ち続ける - 研究開発費を回収するために、大量生産する - PCやサーバのCPUだけでは、自社工場の生産 ラインを埋められなくなってきた -
NAND Flash の製造で自社工場を活用するの も必然
それでも足りない - IDF の資料を見ると、そのとき Intel が取りた がってる市場がうかがい知れるんですが - IDF2012 Beijing
に行ってきたとき、 Ultrabook と HPC の話ばかりだったので、「あぁWebサービスなんてIntel から見たら大したことないんだ」と実感できました - Intelは数年前からタブレットやスマートフォン、 いまだとIoT狙ってますけど、研究開発を維持す るために、市場の拡大が必須なわけです
そんなIntelさんだけでなく、業界的に - シングルスレッド性能はもう10年前から伸び悩 んでる - 物理的に今の製造技術や、素材の限界があ るそうで - 新しい素材や製造技術の研究が進められてい るみたいですが、実用化するまでまだまだ年月
は必要そう
閑話休題・2 - 現代のトランジスタ製造技術ってすごいんです - 絶縁膜が原子数個分のレベルらしいです - こうなってくると、もう、電流がリークしてもしょう がないですよね? - ただ、現状を打ち破るには、基礎研究に時間と
経費がかかるんです
個人的に思うんですが - 情報産業は、普通の業界と比べて流行り廃りが 激しいのでドッグイヤーと言われますが - 個人的に、半導体の基礎研究はその7倍の時 間、犬ではなく人間の遅さで進んでると思うので - そう考えると、カーボンナノチューブがノーベル 賞レベルと言われても納得なんですが、我々の
ところまで来るのには時間かかるんです
だから我々は、 物理学や化学を 支援する必要があると 思います
極論すると
エンジニアにとって CERNみたいな研究機関は、 ハードウェアの進化のために 必要なんじゃないでしょうか
ムーアの法則が終わると言われてますが - それは、ブレイクスルーとなるような技術革新が 起きるのに時間がかかるせいだと思うので - 半導体の集積密度とは違うけど、例えば、3D NANDを 東芝が発表したのは2007年で、本格的な出荷開始は 2016年とか -
逆に考えると、注意深く見ていさえすれば、次世 代のハードウェアと、それに伴う環境の変化が あるていど予測できるんじゃないかと
最近のIntelさんの Xeonを見て思うに
- 5年前の低電圧版Xeonと現在の低電圧版 Xeon 、似たような価格帯のを比べると - 物理コアは4から8に増えつつ、 Last Level Cache は1.6倍に
- North Bridge は CPU に統合され、 PCI- Express 経由で GPU や NIC、 NVMe は、 CPU と直結できるようになった
DDIOサイコー - NICとCPU直結できるようになって、 Intel Data Direct I/O ができた - NICがメモリを経由せず、LLCに直接読み書き
できるようになりました - GbEや10GbEでは、大量のパケット受信すると むかしは大変重かったんですが - これでかなりネットワークの性能改善しました
TurboBoostって悪い仕組みじゃない - ARMにはbig.LITTLEっていう構成があります - 高性能なcoreと低消費電力なcoreを、そのときどきで使 い分ける - なんで Intel は採用しないんだろ?って思ったけ
ど、 Intel さんには TurboBoost がありました - 性能出したいcoreだけクロック上げて、熱や消費電力を コントロールすればいい - 省電力的にはARMの方が良い構成だけど
そろそろTurboBoost使いこなしたい - ただ、サーバのことを考えると、全部のコアを無 駄なくつかえる TurboBoost の方が合理的で - 全力でぶん回したとき、CPU上に無駄なものがないから - 実は、
AWSのC4インスタンス も TurboBoost 使えるんすよ - 次のインフラないしシステムでは、個人的に活 用したいとアイデアを練ってるところ
いままで雑多に話し ましたが
さて、現時点で我々は - 最近のXeonは選択肢が増えた - いまどんなXeonを買うかというと - Coreの数、メモリの帯域、消費電力のバランス 次第じゃないですかね - Coreに比例してメモリの帯域増えるわけじゃな
いんで、Coreそんなにいらないかもしれないし - 実際に動かしてみて評価してみないことには
いまコードを書く上で考えるべきは - アンコアが充実して、I/Oが速くなったりしたけど - L2 cache や Last Level Cache
の容量増えて きてるけど、これ以上増やしすぎると、キャッ シュ管理のコストが上がってLatency悪くなるの で、SRAMのキャッシュはそんなに増えないん じゃないかなぁ - となると、如何にしてメモリアクセスを削減する か
クライアントサイドで考えると - CPUのキャッシュを如何に活用するか(如何に メモリアクセスを抑えるか)によって、高い性能 をもたらせる - ARMの事例ですが、 スクエニの杉本さんは、Android版 スクストのフットプリントを数百KBに収めた -
コンソールゲーム業界の職人は、そこまでやっ て性能を叩き出す
サーバサイドでは - MySQLみたいに、巨大なメモリに広範囲にアク セスするソフトウェアは、 L2 cache に全ての データが載るわけではないが - ただ
L2 cache がムダかというとそうでもないと思います - メモリなどI/Oの帯域を節約できるコードは、結 果として速い - MySQL で table がメモリに載っていても、 full table scan は避けるべき
ただ、サーバサイドでも - それでも、メモリの無駄遣いは良くないので - TLB miss 発生するとメモリアクセス増えるし - あと、C/C++ などでコードを書くときは、スタック
を上手く使える方がいいんじゃないでしょうか。 スタックは hotspot で、 TLB で引けるだろうし、 CPUのキャッシュに載ってる可能性高いし - 詳しくは Write Great Code でも読んでください
そして、 たぶん2-3年くらい後の Xeon には
(おそらく)劇的 な変化が来る
Xeon に L4 cache として eDRAM が載れば サーバでも(一部の)コードが cache に載る時代が来る
Intel のロードマップではまだないけど - 最近の Core i7 では 128MB の eDRAM
を L4 cache として使えるようになった - この eDRAM 、実はかなりすぐれもので、いま までの DRAM よりかなり速い - この eDRAM にフィットするコードを書けば、主 記憶へのアクセス減らせるのでサーバでも速い
ただ、 Intel さんにお願いしたいのは - PHPなど Lightweight Language のWebアプリ ケーションなら、 L4
cache にフィットするかもし れませんが - MySQLみたいなRDBMSだとムリなんで - L4 cache のあるXeonと無いXeon、あるいは、 L4 cache の無効化ができると嬉しいです - cacheの階層増えるとメモリアクセスのLatency に影響するんで
直近では L4 cache 来るかもだけど - メモリベンダーが想定している未来だと - メモリの階層がかなり増える - Near
Memory と Far Memory - OSからみたとき、速いメモリと遅いメモリが混在 するという可能性
近いメモリと遠いメモリ - 実はすでに存在している概念 - 具体的にいうとNUMA - x86 で NUMA の概念がもたらされたのは、
も う十年以上前 - いまでは NUMA も珍しくなくなった - OSのサポートや最適化進んできたし - percona server でも NUMA 向けオプションあるし
きっと未来では - NUMA のように、プログラマに受け入れられる 時代になる - 10年先か、20年先はわからないけど - 先ずは Windows
で取り入れられるだろうから、 Windows の動向を見守るのがいい - 何気に Windows ってかなり先進的なOSなんで
私が思うに - 速いメモリが1GB~4GBくらいあるなら - Linuxなら、そこに kernelとlibcとPTE載せちゃう のが、合理的だと思うんだ - それで余ったら、large page
みたいなノリでプロ セスからも使えるようになるかもしれん - mysqld のコードをそこに割り当てたいな - 楽しみやね
ちなみに Xeon Phi では - DDR4 の5倍のバンド幅を持つメモリが、オン パッケージで来る そうですね -
なので、来てくれるんじゃないですかね、いつか そのうち。速いメモリってやつが
最後に - 三年後、どんなサービスが流行ってるのか考え るのは難しい - でも、サーバがどんな進化を遂げるかは、ベン ダーのロードマップや、現時点における半導体 の限界を学んでおけば、ある程度予測できる - その変化を予測して備えておけば、エンジニア
として準備ができる
半導体を学んで、 サーバの未来を より良くする
おわり