Efficiencyである。グラフ53はOverallである。これはコア間でさまざまなサイズの通信を行ったときのLatencyとBandwidthをそれぞれ測定して集計したものである。Bandwidth/LatencyにはBestとWorstがあるが、これはLatencyが最も少ない(Best)場合と最も多い(Worst)場合のケースでの集計である。1800X)と大きな開きがある。1800Xの開きがずっと大きいのは納得できる。i9-7900Xは20コアである。16コアの場合、コア間の1:1接続は全部で120pair、20コアの場合は190pairある計算になる。この120pairなり190pair同士での通信のLatencyを個別に調べて、それを5ns刻みの分布図の形にしたのがグラフ54と55である。i7-6950Xでは5ns~10ns以内のLatencyにおけるpairが5%ほど(実際には10pair)、45~50nsのLatencyのPairが87%(165pair)、40~45nsのPairが7%(13Pair)、50~55nsのPairが1%(2Pair)あるということを示している。このうち5~10nsのPairというのは、同じコアを共有する2つのThread間のPairのことになる。これはL1~L2レベルで通信できるから最速である。Busを経由してコア間通信になるが、この際のLatencyはおおむね40~45nsに収まるということだ。Busに入る段階でLatencyは一意なようで、隣り合うコアだろうが、Ringの両端だろうが、Latencyは5nsの枠内に収まっている。いうと、おおむね70~75nsの範囲に収まっている。見ると、まず同一コア内にある論理2コア同士のPairのLatencyもちょっと大きく、Inter-Core間のPairは65~70nsと70~75nsの両方に分布している。BusからMesh構造になった、という話はすでに「レポートがある通り」(http://news.mynavi.jp/news/2017/06/16/089/)だが、そのMeshの代償がこの大きめのLatencyである。同一コア内のPairのLatencyが大きいのは、特にL2でL3との排他制御のチェックのために余分にLatencyが掛かっているのではないかという気がする。グラフ53では平均80ns前後のLatencyとあるが、実際には40ns台と120ns台の2つの山があって、その平均が80nsということだ。これについての説明は簡単だ。Complex(CCX)を構成している。7では、このCCX2つをInfinityFabricで接続する形態である。そのため、同一CCX内のPairは40ns台で接続できるが、InfinityFabric経由で異なるCCX間のPairを構成すると、Latencyが120ns台になるということだ。ThreadRipperのテストを早くやってみたい。Fabricで異なるダイ間を接続した場合のLatencyを見てみたいからだ。いうことでグラフ55を見ると、大きくは傾向が変わらない。Skylake-SPの2製品はバラつきが大きくなっているなど、若干の違いはあるが、むしろBestとWorstの差はBandwidthに出る。caseのBandwidthである。i9-7900Xでは400GB/sec超えとなる。面白いのはSkylake-SP系はこの後256KBあたりで2つ目のピークを迎えることだ。これはSkylake-SPでL2のサイズを1MBに増やしたことが効果的に効いているものと思われる。1800X)の性能低下が著しい。BusをやめたためというよりはL3を排他にした影響の方が大きいと思う。そんなわけでアプリケーションの書き方がちょっと変わってくるのは事実ではないかと思う。ここからはメモリ周りである。ThreadでStream、およびグラフ60/グラフ61の256MB~4GBの平均値をまとめたのがグラフ58である。ここで見る限り、Core-Xの3製品の帯域は圧倒的である。1800Xの倍あるから当然の結果だ。いうのがグラフ59である。Readの結果がここでも再現した。i7-6850Xであり、Skylake-SP系2製品のコアは全然大したことがない数字になっている。原因についての分析は後でやるとして、RMMTのスコアがここでも再現したことの意味は大きい。キャッシュを含めた帯域についてまとめたのがグラフ60とグラフ61である。i7-7820Xと続く、実に分かりやすい構図である。i7-7820Xのデータが取れていないのだが、ちょっと面白いことに気づく。i9-7900XのL1の帯域は、動作周波数の差を加味しても明らかに大きい。i7-6950Xの2倍ほどあり、しかもL2の容量が1MBになった関係で、その高い帯域が持続する。問題はL3で、2MB以降を見ると19GB/sec程度だ。1800Xが4MBまで84GB/sec、8MBでも63GB/secを維持できているのに対して、異様に低い。L3排他の影響なのか、それともコア間をMesh接続にしたせいなのかはここでは判断できないが、これはちょっと異様な動きだ。Bandwidthについては以上にして、ここからはLatencyを見てみたい。Threadでテストを行い、全体の平均値を取る形で実施されているので区別の意味がない)。Latencyである。RangeでもLatencyは多くない。Skylake-SPの場合、L1は4cycle、L2が11cycle、L3が13cycleということで、すごく多いかと思えば意外と低めに抑えてきた印象ではある。i7-6950Xに比べるとややLatencyが多めになっているのはしかたがない。i7-6950XよりもLatencyが増えている。L3から先はメモリアクセスになるので、ここは動作周波数の違うコア同士でcycle数を比較しても仕方ない。そこで実際のLatencyを時間(ns)で示したのがグラフ64である。i7-6950Xよりメモリアクセスが遅い」傾向にある。Random(グラフ65~66)である。Rangeでは20nsほども差が出ている。ちなみにこの結果と、グラフ58の結果は必ずしも矛盾しない。Latencyはリクエストを出してから実際のデータが出てくるまでの時間だし、Bandwidthは一度データが出始めてからの帯域である。複数のメモリアクセス要求を上手く整理して、なるべく連続してメモリアクセス出来るようにすると、整理に時間はかかる(=Latencyが増える)が、一度アクセスを開始してからは効率よくデータがアクセスできる(=Bandwidthが上がる)。メモリコントローラが、大規模データを上手く扱うように工夫されていると、Latencyが増えてもトータルでは性能が上がる訳で、まさしくSkylake-SPのメモリコントローラはそういう方向で設計されているのではないかと思う。Memoryの結果をグラフ67~72に示す。Dataとは異なるところだ。Cacheの存在も無視できない。Cacheの容量を増やした可能性がある。4cycle/0.9nsとなっている。Rangeが0.4nsという微妙な数字になっているように考えられるからだ。これが事実なら、最適化へのインパクトはかなりあるはずだ。この辺りの考察は後でまとめて行いたいと思う。話を戻すと、Skylake-SP系はL1が2cycle、L2が4cycle~9cycle、L3が13~14cycle程度で、Memoryは30cycle前後である。Dataに対するアクセスよりもずっとLatencyが少ないのは上手くPrefetchが動作しているためと思われるのだが、謎なのはL2である。Skylake-SP世代ではL2が1MBに増量されたから、64KB~1MBは一定のLatencyでも良いはずなのに、256KBから増える。L2の対応がうまくいっていない。L2のLatencyは実は9cycleだが、先頭32KBに関してはPrefetchが良い仕事をしているので4cycleでアクセスできるが考えられる。言われたら筆者は後者の案を取りたい。Dataの場合、L2のLatencyは13cycleになっており、Instructionでもここから大幅に高速化できるわけではないからだ。その意味では良く頑張ったというべきだと思う。Random(グラフ68とグラフ69)も傾向は同じである。グラフ68を見ると、64KBは4cycleでアクセスできているのに128KBだと18cycleまで増えているのは、Prefetchでは対応しきれないというあたりであろう。i7-6950Xが16cycle前後なのに対し、Skylake-SPの2製品は14cycleに留めており、これもなかなか優秀な結果だと思われる。Random(グラフ70とグラフ71)。このあたりになると、L3のLatencyも大幅に増えており、メモリアクセスもかなり遅い。i7-6950Xの倍近いLatencyになっている。要するにメモリコントローラが、ある程度規則的なアクセスパターンを前提に最適化されているということだろう。Accessというのは普通考えにくい(ない訳ではないが、頻度は低い)ので、これはこれで問題ない気もするが。主だったテストはこれで終わりだが、最後におまけを2つほど。Throughput(グラフ72)である。TSXに含まれるHLE命令をサポートしていないからソフトウェアロックということで遅いのは仕様通り。i7-6950Xが最高速というのは、多分メモリアクセスの方法を従来とは少し変えないといけないことを示唆している様に思われる。Express経由の性能である。結果はグラフ73の通りで割と安定した結果になっていることが判った。※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。Corporation。