第一章 本書の概要 ( ア ) はじめにいわゆるサーバ用プロセッサである Xeon と いわゆるデスクトップ用プロセッサである Core i7 の違いを性能の観点からまとめました 性能とは例えば速さなどの数値のことで 機能 ( できること ) の違いについては立ち入りません Xeon の方がなんとな

Similar documents
(速報) Xeon E 系モデル 新プロセッサ性能について

VXPRO R1400® ご提案資料

本文ALL.indd

ComputerArchitecture.ppt

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の

Microsoft Word ●IntelクアッドコアCPUでのベンチマーク_吉岡_ _更新__ doc

スライド 1

スライド 1

hpc141_shirahata.pdf

N08

Windows Server 2016 Hyper-V ストレージQoS機能の強化

PowerPoint プレゼンテーション

Microsoft Word - Dolphin Expressによる10Gbpソケット通信.docx

仮想化基礎演習テキスト Ⅰ 第 1.0 版 演習で学ぶ仮想化基礎 ( クライアント仮想化編 ) 九州ラーニングネット株式会社 特定非営利活動法人パソコン整備士協会

Microsoft PowerPoint - 11Web.pptx

目次 1. はじめに 用語説明 対象アダプタ P HBA/2P HBAで異なる性能 付録 ( 性能測定環境 ) P HBAでの性能測定環境 P HBAでの性能測定環境 本書の

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

システムソリューションのご紹介

Microsoft Word - CygwinでPython.docx

アドバンスト・フォーマットディスクのパフォーマンス

インテルの現行ラインナップは と Refresh アーキテクチャはそのままラインナップ強化 第 2 世代 Sandy Bridge 第 3 世代 Ivy Bridge 第 4 世代 Refresh アーキテクチャ刷新 AVX 対応 32nm プロセスルール 性能 電力とも大幅進化 22nm プロセス

Pervasive PSQL v11 のベンチマーク パフォーマンスの結果

Windows Server 2008 R2とPRIMERGYによる消費電力削減効果

Microsoft Word LenovoSystemx.docx

Microsoft Word - nvsi_050110jp_netvault_vtl_on_dothill_sannetII.doc

計算機アーキテクチャ

スライド 1

White Paper 高速部分画像検索キット(FPGA アクセラレーション)

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

増設メモリ (2006/11/20)

目次 1 はじめに 登録商標 商標 注意事項 免債事項 SR-IOV の機能概要 性能検証事例 測定環境 測定結果 各方式による共有 NIC 性能比較 ( ポートあ

PowerPoint プレゼンテーション

目次 1. はじめに 用語説明 対象アダプタ P HBA/2P HBA/4P HBA で異なる性能 付録 P HBA での性能測定環境 P HBA での性能測定環境 P

040402.ユニットテスト

MIPSのマイクロアーキテクチャ

PowerPoint プレゼンテーション

テクニカルガイド「増設メモリ」(2006/09/15)

NEC 製PC サーバ『Express5800 R120f-1E』とSanDisk『ioMemory SX /SX 』検証報告書

Operating System 仮想記憶

Microsoft PowerPoint - Sol7 [Compatibility Mode]

東芝 MAGNIA R3320b での SSD 性能の検証 2012 年 8 月 株式会社東芝 クラウド & ソリューション事業統括部 目次 1. はじめに ソリッドステートドライブの概要 使用機器一覧 単体性能について サーバー用途別のテスト

各プール内で作成される仮想マシンの台数は 実際の利用者数の状況を観て調整しているが どのプールも の間で設定している また 各プールで使用するデータストアについては 容量が 6TByte のものを8つ用意し 2 つを事務系仮想マシン用のプール 残り 6 つを研究系仮想マシン用のプール

PowerPoint プレゼンテーション

この手の問題を診断する際に Simics は完璧なツールなのですが 実行するためには 問題が発生するプログラムを Simics に取り込まなければなりません すなわち Simics 上で Simics を実行するのです まず Simics 内部に開発ホストの複製を作成します これは何も難しいことでは

計算機アーキテクチャ

memcached 方式 (No Replication) 認証情報は ログインした tomcat と設定された各 memcached サーバーに認証情報を分割し振り分けて保管する memcached の方系がダウンした場合は ログインしたことのあるサーバーへのアクセスでは tomcat に認証情報

Avago( 旧 LSI) 3108 チップ搭載 RAID カードでの RAID1/RAID10 この RAID カードの RAID1 と RAID10 の設定方法によるメリット / デメリットについて お問い合わせをいただきました お問い合わせ : SuperMicroのサーバに当該チップ使用のR

目次 1. はじめに SSL 通信を使用する上での課題 SSL アクセラレーターによる解決 SSL アクセラレーターの導入例 SSL アクセラレーターの効果... 6 富士通の SSL アクセラレーター装置のラインナップ... 8

変更履歴 項番版数内容更新日 版新規作成 2013 年 11 月 18 日 1

< B8CDD8AB B83685D>

提案書

Microsoft PowerPoint - ARC-SWoPP2011OkaSlides.pptx

ERDAS IMAGINE における処理速度の向上 株式会社ベストシステムズ PASCO CORPORATION 2015

バトルカードでゲーマーやエンスージアストへの販売促進

講義計画 1. コンピュータの歴史 1 2. コンピュータの歴史 2 3. コンピュータの歴史 3 4. 論理回路と記憶, 計算 : レジスタとALU 5. 主記憶装置とALU, レジスタの制御 6. 命令セットアーキテクチャ 7. 演習問題 8. パイプライン処理 9. メモリ階層 : キャッシュ

増設メモリ 1. 機能 型名 N N N N N GB 16GB 3 (x2 枚 ) (x2 枚 ) (x2 枚 ) (8GBx2 枚 ) (16GBx2 枚 ) DDR3-1066(PC3-8500) 動作クロック

PRESS RELEASE 報道関係者各位年 5 月 13 日 Corsair 正規代理店 Memory 株式会社リンクスインターナショナル Corsair ( コルセアメモリ Memory ) のデスクトップ用 240Pin DDR3 メモリと DDR2 メモリXMSシリーズ全 18 種類発売開始

Microsoft Word - RefApp7インストールガイド.doc

増設メモリ (2010/06/17)

増設メモリ 1. 機能 型名 N8102-G342 N8102-G343 N8102-G344 1GB (1GBx1 枚 ) (x1 枚 ) (x1 枚 ) SDRAM-DIMM, Unbuffered,ECC 1.5V 型名 N N N (1GBx1

増設メモリ 1. 機能 型名 N N N (x1 枚 ) (x1 枚 ) (x1 枚 ) DDR3-1333(PC ) SDRAM-DIMM, Unbuffered,ECC 動作クロック 667MHz( 差動 ) 1.5V 型名 N8102

EnSightのご紹介

Japanese.p65

スライド タイトルなし

Oracle Data Pumpのパラレル機能

ためのオーバーヘッドが課題となりつつある しかしこのオーバーヘッドに関する数値はほとんど公開されていない この論文ではこの cache coherency の時間を Linux カーネルで提供されている atomic_inc 関数を用いて測定する方法を新たに考案し 実測プログラムを作成した 実測はプ

10-vm1.ppt

インテル アーキテクチャプラットフォーム リーダーシップ 2000 年 12 月 21 日 第 14 回数値流体力学シンポジウム インテル株式会社 ia 技術本部本部長坂野勝美

スライド 1

( 作成方法 ) 1 メーカーの取扱説明書に記載されている 2 PC 購入店で作成してもらう (PC デポで6000 円 ) 3 リカバリー作成ソフトがインストールされている ⑵ PC 丸ごと ( システムイメージ ) のバックアップ バックアップ方法 注 4 USB 接続の外付け HDD を使用

増設メモリ 1. 機能 型名 N N N N GB (x1 枚 ) (x1 枚 ) (x1 枚 ) (8GBx1 枚 ) DDR3-1333(PC ) 動作クロック 667MHz( 差動 ) 1.5V 型名 N8102-3

増設メモリ 1. 機能仕様 型番 製品名 備考 N GB 増設メモリボード DDR3-1333(PC ) SDRAM, Unbuffered N GB 増設メモリボード DDR3-1333(PC ) SDRAM, Unbuffered N8

ムービートランス 2 使い方マニュアル目次 1 はじめに 2 ムービートランス 2 のインストール方法 3 ムービートランス 2 を最新版にアップデートする方法 4 動画変換機能の使い方 5 動画結合機能の使い方 6 設定の変更方法 7 サポートページのご案内 8 テクニカルサポートへのお問い合わせ

Microsoft Word - JP-AppLabs-MySQL_Update.doc

Microsoft PowerPoint - ARCICD07FukumotoSlides.pptx

出 アーキテクチャ 誰が 出 装置を制御するのか 1

増設メモリ 1. 機能仕様 型番製品名備考 N GB 増設メモリボード (2x 4 GB/U) DDR3L-1333(PC3L-10600) SDRAM ECC 付 Registered, 2GBx2 枚の N GB 増設メモリボード DDR3L-1600(PC3

<4D F736F F D20342E899E D2091E52D81848FAC82D682CC88F8897A2E646F6378>

Microsoft PowerPoint - os ppt [互換モード]

降圧コンバータIC のスナバ回路 : パワーマネジメント

PowerPoint プレゼンテーション

Arduino をドリトルから 制御する教材の試行 鈴木裕貴 1

HP_PPT_Standard_16x9_JP

Microsoft PowerPoint - install_NGSsokushu_windows(ver2.1).pptx

チューニング講習会 初級編

[4] ACP (Advanced Communication Primitives) [1] ACP ACP [2] ACP Tofu UDP [3] HPC InfiniBand InfiniBand ACP 2 ACP, 3 InfiniBand ACP 4 5 ACP 2. ACP ACP

テクニカルガイド 増設メモリ

Outlook2010 の メール 連絡先 に関連する内容を解説します 注意 :Outlook2007 と Outlook2010 では 基本操作 基本画面が違うため この資料では Outlook2010 のみで参考にしてください Outlook2010 の画面構成について... 2 メールについて

スライド 1

Microsoft PowerPoint - t-kubo07PN-LAMBDA-slide.ppt

Microsoft PowerPoint - DNS_BoF_SCS_ pptx

Anniversary Update の手動アップデート PC 資料 年 8 月 2 日 Microsoft から Windows 10 2 回目の大型アップデート Windows 10 Anniversary Update が提供されました 多くのセキュリティ修正の

テクニカルガイド 増設メモリ

Microsoft PowerPoint - OpenMP入門.pptx

01-introduction.ppt

Microsoft PowerPoint - No7note.ppt

Microsoft PowerPoint - sales2.ppt

Microsoft Word - HOKUSAI_system_overview_ja.docx

[PRESS RELEASE] ITGMARKETING 2018-PR 年 1 月 24 日 ITG マーケティング株式会社 Samsung 64 層 V-NAND 搭載 SATA SSD 新ラインアップ 860 PRO と 860 EVO を 2 月上旬より販売 日本サムスン株式

計算機アーキテクチャ

Transcription:

目次 第一章本書の概要 ( ア ) はじめに ( イ ) 比較早見表 第二章メモリ編 ( ア ) メモリ転送速度 ( 連続アクセス ) ( イ ) メモリレイテンシ ( ランダムアクセス ) ( ウ ) 測定方法 第三章コア編 ( ア ) 1 スレッドあたりの性能 ( イ ) 並列度 1

第一章 本書の概要 ( ア ) はじめにいわゆるサーバ用プロセッサである Xeon と いわゆるデスクトップ用プロセッサである Core i7 の違いを性能の観点からまとめました 性能とは例えば速さなどの数値のことで 機能 ( できること ) の違いについては立ち入りません Xeon の方がなんとなくよさそうだけどよく分からない人 具体的には以下のような人の助けになることを期待しています - Xeon と Core i7 のどちらを買うべきか分からない - Xeon より Core i7 の方が速いのでは?? と経験から薄々思っている また本書は基礎的な知識を普及し皆様にコンピュータを楽しく正しく使ってもらうことを目的としています 従ってこれを読めば即目の前のプログラムを高速化できる! といった内容にはなっていません むしろ これを読んで様々な性能の観点を頭に入れた状態で課題に取り組んだときに ふと以前とは違った発想で何か考えることができれば と思っています ( イ ) 比較早見表まずは簡単に比較のみ示します 各項目は二章以降で原理も含め詳しく説明します 注目すべき点としては 全ての項目について一概にサーバ用の方が高性能ではないという点です 従って実行したいタスクや使い方に合わせて適切な方を選択する必要があります 性能要因 メモリ転送速度 ( 連続アクセス ) メモリレイテンシ ( ランダムアクセス ) 比較 サーバ用の方が 2 倍高い デスクトップ用の方が 10 15ns 速い 1 スレッドあたりの性能デスクトップ用の方が高い 並列度 サーバ用の方がコア数 / スレッド数が多い 2

第二章 メモリ編 ( ア ) メモリ転送速度 ( 連続アクセス ) メモリ転送速度とはメモリに連続 ( シーケンシャル ) にアクセスする場合の最大スループットです ランダムアクセスする場合の遅延とは全く別の話で これについては次の章で扱います メモリ転送速度は 1 メモリチャンネルあたりの速度 使えるメモリチャンネル数 で決まります 大まかな数値はサーバ用で 40GB/s から 80GB/s デスクトップ用で 20GB/s から 40GB/s 程度であり サーバ用のほうが 2 倍速くなっています 1 メモリチャンネルあたりの速度は 使うメモリモジュールによって決まります 例えば PC3-12800 の 12800 が転送速度 (MB/s) を表し このメモリモジュールは最大 12.8GB/s で転送できることが分かります PCX-YYYY という表記と DDRX- ZZZZ という表記は相互に互換で 変換方法については別途グーグル先生に聞いてください 使えるメモリチャンネル数は 複数のメモリもジュールに何並列で読み書きできるか 3

を表します これは CPU 内部のメモリコントローラのチャンネル数で決まり 一概にサーバ用 / デスクトップ用で決まるものではありません ただし 一般に 2016 年現在ではサーバ用が 4 チャンネル デスクトップ用が 2 チャンネルのものが多いです 下位モデルではこれより少なかったり 最上位モデルではデスクトップ用でも 4 チャンネルあったりします 例えば Xeon E3 では 2 チャンネル モバイル向けの Atom 等では 1 チャンネル Core i7-5960x Extreme Edition では 4 チャンネルなどです CPU の型番と使えるメモリモジュール メモリチャンネル数の対応は Intel 公式の ARK というページで調べることができます 例えば Xeon E5-2699 v4 のスペックは http://ark.intel.com/ja/products/91317/ にあり 以下のようになっています ( スクリーンショットは前述の URL の 2016 年 12 月 24 日時点の状態を引用 ) この図では 使えるメモリーの種類が最高で DDR4 2400(PC4-19200 と同値 ) 使えるメモリチャンネル数が 4 なので 19.2GB/s 4 = 76.8 GB/s がこの CPU の最大メモリ転送速度となります ( 転送速度と帯域幅は同じ意味 ) 注意として 使えるメモリチャンネル数はマザーボードにあるメモリスロットの数と 4

同じではありません メモリスロットが 4 本や 8 本あっても CPU またはマザーボードのいずれかが 2 チャンネルしか持っていなければ使えるメモリチャンネル数は 2 となります 2016 年 12 月現在 一般向けに販売されているマザーボードでは X99 チップセットを搭載したもの以外 4 チャンネル対応のものはありません 結論として Xeon と Core i7 のメモリ転送速度は Xeon の方が約 2 倍速く その理由は使えるメモリチャンネル数が Xeon では 4 Core i7 では 2 で Xeon の方が 2 倍多いからと言えます ( イ ) メモリレイテンシ ( ランダムアクセス ) メモリレイテンシとはメモリにランダムアクセスした場合のアクセス遅延のことです ( ア ) では連続アクセスした場合の帯域 ( スループット ) を扱いましたが ここでは遅延を扱います メモリレンテンシは CPU がメモリアクセスを処理する時間 + メモリがメモリアクセスを処理する時間 で決まります 具体的には アイドル状態の場合でデスクトップ用で約 50ns サーバ用で 65ns 程度です 注意としてはこれは何もない状態からあるアドレスにランダムアクセスした場合にデータが返ってくるまでの時間であり 全てのアクセスにこの時間がかかるわけではないことです つまりその次のアドレスに続けてアクセスする際にはキャッシュやプリフェッチが有効に働くので 遅延はもっと短くなります (i) CPU がメモリアクセスを処理する時間 CPU がメモリアクセスを処理する時間 とは CPU キャッシュをミスするのにかかる時間で これがデスクトップ用 CPU のほう 10ns から 15ns 程度短いことで上記のサーバ用とデスクトップ用のメモリレイテンシの差が現れています ではキャッシュ ミス にかかる時間とは何でしょうか キャッシュとは CPU 内にもうけられた高速なメモリのようなもので CPU がメモリにアクセスする前にまずキャッシュに欲しいデータがあるかどうか確認します キャッシュには L1, L2, L3 と階層があり 数字が大きくなるに従って容量が大きい代わりに少しずつ遅くなっていきます 従って メモリアクセスを要求された時の CPU の動作としては以下のようになります 5

1. L1 キャッシュを見る 目的のデータがあればラッキー 2. L1 キャッシュに目的のデータがなければ L2 キャッシュを見る あればラッキー 3. L2 キャッシュにもなければ L3 キャッシュを見る あればラッキー 4. L3 キャッシュにもなければ 仕方がないのでメモリを読みにいく つまり メモリに実際にアクセスする前に キャッシュに目的のデータがあるかどうかを L1, L2, L3 と順に調べていくのに時間がかかるというわけです さてこの時間は前述のようにデスクトップ用 CPU の方が速くなっています その理由はデスクトップ用 CPU の方がサーバ用 CPU よりもキャッシュの動作周波数が速いからです 動作周波数の違いについてはコア編で説明しますが 一般にデスクトップ用 CPU の方が高く設定されています ( ここでの話はキャッシュの動作周波数 コア編での話は演算器の動作周波数の話ですが ほぼ同じことが成り立ちます ) ここであるタスクにかかる サイクル数 という概念を導入すると話が分かりやすくなります あるタスクに X サイクルかかるとは クロックが X 回まわるとその仕事が終わることを意味します 従って同一のタスクを終えるのにかかる 実 時間は 1 秒あたりのサイクル数が大きい方が短くなります L1 から L3 までキャッシュを終えるのにかかるサイクル数は CPU の世代が進むと増えたり減ったりしますが ( 一方的に減るわけではない ) 同じ世代の CPU ならばサーバ用もデスクトップ用も同じです ( 具体的な値は Intel の数千ページあるマニュアルを見れば書いてあります ) 一方 1 秒当たりにまわるサイクル数 すなわちキャッシュの動作周波数はデスクトップ用で 4GHz 超 サーバ用だと 3GHz 以下程度です これはコアの周波数より少し高くなっていますが コアに Turbo Boost( 余裕があるときに周波 6

数をあげる機能 ) がかかった時に調度良くなるように調整されているようです 従って CPU がメモリアクセスを処理する 実 時間はクロックの高いデスクトップ用 CPU の方が短いと言えます (ii) メモリモジュールがメモリアクセスを処理する時間 CPU からアクセス要求を受けた後にメモリモジュールがメモリアクセスを処理する時間は どのメモリモジュール (DDR3 1033 DDR4 2133 など ) を使うかによって決まり CPU 自体は基本的に関係ありません そこで以下では CPU には直接関係ありませんがメモリアクセスの遅延も一様ではなく色々考えるべきことがあるんだという話を記します メモリから CPU にデータを転送するには 以下の 2 つのステップが必要です 1. Precharge( メモリへの電荷のチャージ ) 2. Row( 行 ) アクセス 3. Column( 列 ) アクセスここでは Row と Column について説明します Precharge はさらに細かいメモリ内の仕組み (Bank, Rank など ) が必要なるため本書では触れません Row( 行 ) アクセスメモリの中では図のようにメモリセル ( 小さなコンデンサ ) が Row と Column に並んでおり また Row を一行分格納できる Row Buffer というものがあります CPU にデータを転送できるのは Row Buffer からのみのため まず目的のデータが入っている 7

Row を Row Buffer に持ってくる必要があります これを Row アクセスといい これにかかる遅延が約 13ns と仕様で定められています Column( 列 ) アクセス目的の Row を Row Buffer に持ってきたら 次は目的の Column を指定します Column を指定してから実際にデータが出てくるまでの遅延がいわゆる CAS レイテンシというもので モデルによって違いますが 10ns-20ns 程度です なお よく CL=12 などといった表示がありますが これは 12ns の意味ではなくて 12 サイクル すなわちクロックが 12 進んだらアクセスが完了するという意味です メモリの動作周波数は DDRX-YYYY の Y の半分なので DDR4 2133 ならば 1066MHz で 12 サイクルだと約 11ns になります この場合は 12 クロックと 11ns がほぼ同じで勘違いしがちですが 最近出てきつつある DDR4-4200 などではクロックが 2.1GHz なので実時間は CL の半分の値になります Row Buffer ヒット上記の CAS レイテンシは 簡略化して メモリのレイテンシである と言われることがよくありますがこれは一概には正しくありません Row アクセスでは目的の Row を Row Buffer に持ってきましたが 連続した Column へのアクセスではすでに Row Buffer に目的の Row が存在することになります これを Row Buffer ヒットと呼び この場合 Row アクセスの時間はかからないので CAS レイテンシ = メモリレイテンシで正しいです しかし Row Buffer がヒットしなかった場合 (Row Buffer ミス ) では Row アクセスをする必要がありその時間は無視できないほど大きいため メモリレイテンシは CAS レイテンシとは大きく異なります Row Buffer ヒット率を考慮していかにプログラムを上手く作るか 実行するかは進行中の研究課題です ( ウ ) 計測方法 ( ア ) ( イ ) で示したメモリ転送速度 メモリレイテンシは Intel の出している Memory Latency Checker (mlc) というツールで簡単に測定することができます ダウンロードは https://software.intel.com/en-us/articles/intelr-memory-latency-checker からできます mlc を実行すると次ページの図のようになり 枠で囲った部分がそれぞれメモリレイテンシとメモリ転送速度を現します 計測は Intel Core i5 6400, DDR4 2133 (PC4-1700), 2 メモリチャンネルで行いました 転送速度の理論値は 17.0GB/s 2 = 8

34.0GB/s です レイテンシは高速ですが転送速度がやや低いのはデスクトップとして利用していて同時に他のソフトが動いているからかもしれません 転送速度 (Peak Memory Bandwidth) を測定しているところの ALL Reads などは 測定に用いるメモリアクセスパターンを現します ALL Reads は読み込みのみ N:M Reads-Writes は読み込みと書き込みを N:M にした場合 Stream-triad like はスーパーコンピューターなどの性能を測るのに用いられる stream triad というベンチマークを模したもので a[i] = b[i] + αc[i] という計算を用います 9

第三章 コア編 ( ア ) 1 スレッドあたり性能実行したいプログラムが並列化できなくて 1 スレッドしか有効に使えない時 1 スレッドあたりの性能が全体の性能に直結します また理論的には並列化できる場合でも スレッド間の同期やデータ交換が頻繁に発生する場合 対象のタスクが小さすぎる場合などにも少数のスレッドのみ使って実行した方が多くのスレッドを使うよりも高速になることが多々あります デスクトップ用 CPU は サーバ用 CPU に比べて以下の特性があります 1. 周波数が高い 2. コアの世代が新しい 3. キャッシュサイズが小さい (i) 周波数周波数がデスクトップ用 CPU の方が高い理由は コア数が少なく全体の発熱が小さいからです 近年の計算機は CPU GPU のような単体デバイスからデータセンタ全体に至るまで電力と発熱が一番大きな課題になっています よって多くのタスクを並列実行するためにコア数が多く設定されているサーバ用 CPU では周波数があまり上げられません 従って 単純な演算 ( 例えばレジスタに入った二つの値を足す ) ではデスクトップ用 CPU の方が高速であるであるといえます (ii) コアの世代次にコアの世代ですが 製造の歩留まり向上やバグだしを目的としてまずローエンドな製品から新しいコアが導入されていくという戦略になっています 具体的には下の表 10

のように 同時期で比較するとデスクトップ用 CPU の方が 1 から 2 世代ほどコアの世代が新しいことが分かります (QN は第 N 四半期の意味 ) コアの世代サーバ用 (E7) デスクトップ用 (i7) モバイル用 (i7-u) Broadwell(5 世代 ) 2016 Q2 発売 2015 Q2 発売 2015 Q1 発売 Skylake(6 世代 ) 現在 E3( ローエンド ) のみ発売 2015 Q3 発売 2015 Q3 発売 Kabylake(7 世代 ) 未定 2017 Q1 発売? 2016 Q3 発売 コアの世代が新しくなると 1 クロックあたりに実行できる命令の数 (IPS: Instructions Per Cycle) が上昇します CPU 内部では命令を 1 つずつ実行するわけではなく もっと小さな命令 (micro operations) に分割し並び替えたりパイプラインで実行したりと非常に複雑になっており その実行効率がコアの世代が進むと向上するためです 分かりやすい例としては分岐予測があります CPU は条件付 jmp 命令 ( あるレジスタが 0 なら飛ぶ など ) があるとどちらに飛ぶかをあらかじめ予測して飛び先の命令を実際に飛ぶ前に実行開始します ( これを投機的実行といいます ) 予測がはずれると投機的実行は無駄になってしまうため コアの世代が進んで分岐予測の精度が上がると IPS が上がることになります 例えば 2017 年 1 月に発売予定である (Intel ではありませんが )AMD の Ryzen では 分岐予測にディープラーニングで学習した結果を用いると話題になっています (iii) キャッシュサイズキャッシュとは CPU についているメモリのデータを一時的に保存しておくための高速ストレージのことです ( 今回は扱いませんが ) メモリは CPU に比べて非常に遅いため データが必要になるたびにいちいちメモリにアクセスしていては CPU の性能がまったく使いきれません そこでよく使うデータをキャッシュに入れておいて高速にアクセスできるようにします 具体的にあるプログラムが与えられた時にどのくらいキャッシュサイズがあれば十分か (== それ以上キャッシュサイズを増やしても性能が上がらないか ) あるいはキャッシュサイズを X KB 減らすとどれくらい性能が下がるかは単純には分からず 研究の課題となっています しかしとにかく言えることは 一般にキャッシュのサイズが大きいほ 11

ど今欲しいデータがキャッシュに乗っている確率が高くなるのでプログラムの性能が上がるということです ( キャッシュサイズを小さくして損することはない ) 最近の Intel の CPU ではキャッシュは L1, L2, L3 と 3 レベルになっています これはメモリとキャッシュの関係と同じく 高速な代わりに容量が小さいキャッシュと比較的低速な代わりに容量が大きいキャッシュの階層構造になっています (L1 が最速で最低容量 L3 が最も遅く最高容量 ) サーバ用 CPU とデスクトップ用 CPU では L1, L2 のサイズは同じですが L3 のサイズが大きくことなっています 具体的にはサーバ用では 10MB から多いもので 30MB デスクトップ用では数 MB 程度です 以上 (i) (ii) (iii) をまとめると 1 スレッドあたり性能ではデスクトップ用 CPU の方が演算自体は高速 ただしメモリアクセスが多い場合にはキャッシュの多いサーバ用が有利な場合がある と言えます 例えば並列化できずメモリアクセスもほとんどしない super PI のような純粋演算系のベンチマークではデスクトップ用の方が高い性能を記録するでしょう ( イ ) 並列度 ( ア ) では 1 スレッドあたりの性能を見たので 次にそのスレッドを並列に並べる場合を考えます そのためには CPU のコア数が多いほうが有利ですが 一般にコア数はサーバ用 CPU の方がデスクトップ用 CPU よりもかなり多く設定されています 2016 年 12 月現在のサーバ用では最大 24 コアのものがあるのに対し デスクトップ用では 8 コアが最大となります ( なおここでは物理コアのみ考え Hyper Threading による論理コアは考えません Hyper Threading は扱いが難しく分析もしづらいため 性能測定などの際にはオフにすることをおすすめします ) サーバ用 CPU では 1CPU あたり最大 24 コアですが これをさらに 1 台のマシンに複数搭載することができます 具体的には Xeon E5 では 4 CPU Xeon E7 では 8 CPU まで 1 台のマシンに搭載できます Xeon E7-8890 v4 は 24 コアなのでこれを 8 個積めば 192 コアになります 1 台のマシンに CPU を複数搭載した状態は NUMA (Non-Uniform Memory Access) と呼ばれ 次の二つの特性があります 1. アプリケーションからは普通の 1 CPU マシンと同じに見える 2. ハード的には CPU 間の通信に時間がかかるため 性能面では同じではない 12

まずアプリケーションから見た場合ですが 1 CPU で 192 コアある場合と全く同じに使えます どちらかの CPU でデータを更新したら それがソフトウェアからは見えないレイヤーで自動的にもう片方の CPU にも通知されます ( これをキャッシュコヒーレンシといいます ) つまり 通信などしなくても普通にスレッドを 192 個立てて共有メモリでデータを交換できます また既存のマルチスレッドライブラリやランタイムも何の改変もせずに使用できます ( 本書を読んだ方には分かっていただけると思いますが 192 倍速くなかどうかはまた別の話です ) 次に性能面ですが メモリアクセスの速さ ( 遅延 帯域ともに ) が 1 CPU の場合とは変わってきます 具体的には 例えば CPU が二つ (CPU 1, CPU 2) でメモリモジュールが 4 枚刺さっている場合を考えます ( 上図 ) このとき 2 枚が CPU 1 に直結されており 残り 2 枚が CPU 2 に直結されています ある CPU から見て 自分に直結されたメモリを Local Memory 隣の CPU の直結された CPU を Remote Memory などといいます Remote Memory にアクセスするためには QPI というインターコネクトと隣の CPU ソケットを通じてアクセスする必要があります この影響により Local Memory と Remote Memory ではメモリアクセス遅延が数十 ns 違い 帯域も倍程度異なります (QPI は 2 つの CPU 間で L3 キャッシュを同期するのにも使われるため 帯域は QPI の混み具体によっても変化します ) これが Non-Uniform Memory Access という名前の由来です メモリ編で見たようにメモリ帯域はサーバ用 CPU がデスクトップ用 CPU の約 2 倍 メモリレイテンシはサーバ用 CPU の方が不利であったため Remote Memory にアクセスするとサーバ用 CPU でもデスクトップ用 CPU と同じかより遅くなってしまうことが分かりま 13

す 通常は OS が両方のメモリを均等に使うように割り当てているため 性能的には Local Memory と Remote Memory の中間くらいの値になります ( これを address interleaving といいます ) しかし パフォーマンスを追及するのであればなるべく Local Memory にアクセスしたほうがよいということになります これは Linux であれば numactl (NUMA ConTroL) コマンドなどで制御できます ( コマンドの使い方などは本書の範囲外なので触れません ) 以上をまとめると サーバ用の方がコア数が多いため並列化が有効なプログラムには有利 ただし複数 CPU を同時に搭載する NUMA 構成の場合はメモリアクセスの速度低下に注意すべき といえます 14

本書の図は Openclipart (https://openclipart.org/) より引用しました 本書のカラー版 pdf を http://www.soramichi.jp/pdf/c91.pdf に用意しておりますので是非ご利用ください アクセス制限 / 配布制限等ありません 本書はコミックマーケット C91 において無料頒布したものです ( 委託先 :2 日目東ト 29a あいすまぐねっと ) 15