さて、こうした構成のために、各コアのLLC及びMemory AccessのLatencyが「物理的な場所によって異なる」という、従来には無い特徴を持つことになったのもポイントだろう。まずLLCへのアクセスである。例えば図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もそれほど悪化しない。問題はダイのレイアウト的にこうした配置が可能かどうか、というあたりで、このあたりは今後の情報開示に期待したいところだ。