Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CPUに関する話

 CPUに関する話

CPU のお話です

Avatar for Takanori Sejima

Takanori Sejima PRO

October 05, 2015
Tweet

More Decks by Takanori Sejima

Other Decks in Technology

Transcript

  1. 推薦図書 - はじめて読む486 - OSの勉強をするときに読んどくといいかも - CPUの創りかた - Write Great

    Code〈Vol.1〉 - 比較的プログラマよりの内容 - 電子書籍版 もある - Write Great Code〈Vol.2〉 - 最近のコンパイラだいぶ賢いから、ちと古いかも
  2. DRAMの遅さに引きずられる? - CPU内部の execution unit が欲しい速さでは、 DRAMからデータを転送できない - 複数のスレッドやプロセスが、メモリアクセスをし て、メモリからデータを読み込むのを待って

    - パイプライン がストールする - レジスタの取り合いになるなど、ストールするケースは他 にもあるけど、DRAMの遅さはかなり致命的
  3. ちなみに最近の Intel の L1 cache は - いわゆる ハーバード・アーキテクチャ -

    命令とデータが別々の領域に格納されてる - 他の cache と異なり、 L1 cache だけは命令と データで二種類ある - 命令がぜんぶ L1 cache から捨てられると大変 なので、これはアリな設計だと思います
  4. 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.
  5. で、具体的には - こんな感じでコンパイルして、差分はこんだけ - 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
  6. 最近のCPUとDRAMだいぶ優秀ですが - clock down してるとだいぶ性能落ちます - L5630 - E5-2630L v3

    - L5630 と E5-2630L v3 の差がなくなる勢い - 最近のCPUは clock の落ち幅が大きい傾向に あるので、このへん注意しましょう - Brendan Gregg は AWS でも MSR 見てるよう ですしね
  7. トランジスタが余った結果 - コアの数を増やしたけど - キャッシュを増やしたけど - まだ余るので、アンコア(Uncore)を強化する余 裕ができた - Skylake

    に至っては、カメラ用にISP(Image Signal Processor) まで積んだらしい - 確かにイマドキのWindowsマシンには、組み込みの カメラ普通についてる
  8. アンコア? - CPUに統合された、coreじゃない部分 - メモリコントローラや I/O コントローラなど - プロセッサーコアやキャッシュじゃない部分 -

    かつてはマザーボード上のチップセットなどで実 現していた、様々な機能を統合している - 消費電力削減やI/Oの性能改善に貢献している
  9. アンコアの強化に至る前、2006年ごろ - Intel は Larrabee で many core の夢を見た -

    一方、 Sony、 SCE、IBM、東芝は、 Cell という ヘテロジニアスアーキテクチャをもたらした - Cellは扱いが難しいけど性能でたので、ヘテロ ジニアスな設計を他のCPUベンダーは追いか けることになった
  10. Intelさんとしてはきっと - いまの Xeon は大勝利 - NetBurst のときの失敗は取り返せた - もはやサーバ市場で恐れるものは無いのだろう

    - 性能が上がるとサーバの高集約化が進んで、台数の伸びは鈍化する だろうけど - PCやサーバ以外の市場も取らないといけない - 自社のFabを自社製品の製造で埋め尽くせるの が理想
  11. それでも足りない - IDF の資料を見ると、そのとき Intel が取りた がってる市場がうかがい知れるんですが - IDF2012 Beijing

    に行ってきたとき、 Ultrabook と HPC の話ばかりだったので、「あぁWebサービスなんてIntel から見たら大したことないんだ」と実感できました - Intelは数年前からタブレットやスマートフォン、 いまだとIoT狙ってますけど、研究開発を維持す るために、市場の拡大が必須なわけです
  12. - 5年前の低電圧版Xeonと現在の低電圧版 Xeon 、似たような価格帯のを比べると - 物理コアは4から8に増えつつ、 Last Level Cache は1.6倍に

    - North Bridge は CPU に統合され、 PCI- Express 経由で GPU や NIC、 NVMe は、 CPU と直結できるようになった
  13. DDIOサイコー - NICとCPU直結できるようになって、 Intel Data Direct I/O ができた - NICがメモリを経由せず、LLCに直接読み書き

    できるようになりました - GbEや10GbEでは、大量のパケット受信すると むかしは大変重かったんですが - これでかなりネットワークの性能改善しました
  14. TurboBoostって悪い仕組みじゃない - ARMにはbig.LITTLEっていう構成があります - 高性能なcoreと低消費電力なcoreを、そのときどきで使 い分ける - なんで Intel は採用しないんだろ?って思ったけ

    ど、 Intel さんには TurboBoost がありました - 性能出したいcoreだけクロック上げて、熱や消費電力を コントロールすればいい - 省電力的にはARMの方が良い構成だけど
  15. そろそろTurboBoost使いこなしたい - ただ、サーバのことを考えると、全部のコアを無 駄なくつかえる TurboBoost の方が合理的で - 全力でぶん回したとき、CPU上に無駄なものがないから - 実は、

    AWSのC4インスタンス も TurboBoost 使えるんすよ - 次のインフラないしシステムでは、個人的に活 用したいとアイデアを練ってるところ
  16. いまコードを書く上で考えるべきは - アンコアが充実して、I/Oが速くなったりしたけど - L2 cache や Last Level Cache

    の容量増えて きてるけど、これ以上増やしすぎると、キャッ シュ管理のコストが上がってLatency悪くなるの で、SRAMのキャッシュはそんなに増えないん じゃないかなぁ - となると、如何にしてメモリアクセスを削減する か
  17. サーバサイドでは - MySQLみたいに、巨大なメモリに広範囲にアク セスするソフトウェアは、 L2 cache に全ての データが載るわけではないが - ただ

    L2 cache がムダかというとそうでもないと思います - メモリなどI/Oの帯域を節約できるコードは、結 果として速い - MySQL で table がメモリに載っていても、 full table scan は避けるべき
  18. ただ、サーバサイドでも - それでも、メモリの無駄遣いは良くないので - TLB miss 発生するとメモリアクセス増えるし - あと、C/C++ などでコードを書くときは、スタック

    を上手く使える方がいいんじゃないでしょうか。 スタックは hotspot で、 TLB で引けるだろうし、 CPUのキャッシュに載ってる可能性高いし - 詳しくは Write Great Code でも読んでください
  19. Intel のロードマップではまだないけど - 最近の Core i7 では 128MB の eDRAM

    を L4 cache として使えるようになった - この eDRAM 、実はかなりすぐれもので、いま までの DRAM よりかなり速い - この eDRAM にフィットするコードを書けば、主 記憶へのアクセス減らせるのでサーバでも速い
  20. ただ、 Intel さんにお願いしたいのは - PHPなど Lightweight Language のWebアプリ ケーションなら、 L4

    cache にフィットするかもし れませんが - MySQLみたいなRDBMSだとムリなんで - L4 cache のあるXeonと無いXeon、あるいは、 L4 cache の無効化ができると嬉しいです - cacheの階層増えるとメモリアクセスのLatency に影響するんで
  21. 直近では L4 cache 来るかもだけど - メモリベンダーが想定している未来だと - メモリの階層がかなり増える - Near

    Memory と Far Memory - OSからみたとき、速いメモリと遅いメモリが混在 するという可能性
  22. 近いメモリと遠いメモリ - 実はすでに存在している概念 - 具体的にいうとNUMA - x86 で NUMA の概念がもたらされたのは、

    も う十年以上前 - いまでは NUMA も珍しくなくなった - OSのサポートや最適化進んできたし - percona server でも NUMA 向けオプションあるし
  23. きっと未来では - NUMA のように、プログラマに受け入れられる 時代になる - 10年先か、20年先はわからないけど - 先ずは Windows

    で取り入れられるだろうから、 Windows の動向を見守るのがいい - 何気に Windows ってかなり先進的なOSなんで
  24. 私が思うに - 速いメモリが1GB~4GBくらいあるなら - Linuxなら、そこに kernelとlibcとPTE載せちゃう のが、合理的だと思うんだ - それで余ったら、large page

    みたいなノリでプロ セスからも使えるようになるかもしれん - mysqld のコードをそこに割り当てたいな - 楽しみやね
  25. ちなみに Xeon Phi では - DDR4 の5倍のバンド幅を持つメモリが、オン パッケージで来る そうですね -

    なので、来てくれるんじゃないですかね、いつか そのうち。速いメモリってやつが