さて、こうした構成のために、各コアのLLC及びMemory AccessのLatencyが「物理的な場所によって異なる」という、従来には無い特徴を持つことになったのもポイントだろう。まずLLCへのアクセスである。例えば図4の様に、4コアの構成を考えてみる。

図4

各コアが、自身のLLCにアクセスするLatencyを0(つまりこれを基準値)とし、他のコアのLLCにアクセスする場合にどれだけ余分なLatencyが必要かを考えると、表2の様になる。ここから算出した平均の追加Latencyは2.5Cycleほどになる計算だ。同じ事を2コアでやると1.0Cycle(表1)、6コアでは3.89Cycle(表3)、8コアでは5.25Cycle(表4)ほどになり、確かにLLCへのレイテンシを考える限り、スケーラビリティがある(つまりコア数の増加に比べてレイテンシの増え方が緩やか)。

■表1
LLC Block 1 LLC Block 2
Core 1 0 2
Core 2 2 0
■表2
LLC Block 1 LLC Block 2 LLC Block 3 LLC Block 4
Core 1 0 2 4 6
Core 2 2 0 2 4
Core 3 4 2 0 2
Core 4 6 4 2 0
■表3
LLC Block 1 LLC Block 2 LLC Block 3 LLC Block 4 LLC Block 5 LLC Block 6
Core 1 0 2 4 6 8 10
Core 2 2 0 2 4 6 8
Core 3 4 2 0 2 4 6
Core 4 6 4 2 0 2 4
Core 5 8 6 4 2 0 2
Core 6 10 8 6 4 2 0
■表4
LLC Block 1 LLC Block 2 LLC Block 3 LLC Block 4 LLC Block 5 LLC Block 6 LLC Block 7 LLC Block 8
Core 1 0 2 4 6 8 10 12 14
Core 2 2 0 2 4 6 8 10 12
Core 3 4 2 0 2 4 6 8 10
Core 4 6 4 2 0 2 4 6 8
Core 5 8 6 4 2 0 2 4 6
Core 6 10 8 6 4 2 0 2 4
Core 7 12 10 8 6 4 2 0 2
Core 8 14 12 10 8 6 4 2 0

次はMemory Accessである。とりあえずDDR3の実際のMemory AccessのLatencyは当然不明なので措いておくとして、とりあえずSystem AgentにアクセスするまでのLatencyを考えると、例えば図4のケースではCore 1はリクエストを出すのに1Cycle、結果を受け取るのに1Cycleでトータル2CycleのLatencyが掛かる計算だ。これがCore 4の場合はというと、リクエストを出すのに4Cycle、結果を受け取るのに4Cycleで、合計8Cycleが必要になる。つまり位置によって6Cycleの差が出るわけだ。

このLatecyは、当然ながらコア数によっても差が出てくる。これも2Core~8Coreまで試算したのが表5だが、見てお判りの通り平均Latencyは「コア数+1」Cycleで、LLCに比べると厳しい数字である。

■表5
2Core 4Core 6Core 8Core
Core 1 2 2 2 2
Core 2 4 4 4 4
Core 3 6 6 6
Core 4 8 8 8
Core 5 10 10
Core 6 12 12
Core 7 14
Core 8 16
Average 3 5 7 9

こう考えると、6ないし8コアについては、ひょっとすると図5(これは6コアの場合)の様な構造になっている可能性もあるだろう。論理的にはこちらの方がメモリアクセスのLatencyが大幅に減るし、LLCへのLatencyもそれほど悪化しない。問題はダイのレイアウト的にこうした配置が可能かどうか、というあたりで、このあたりは今後の情報開示に期待したいところだ。

図5