コンピュータアーキテクチャ(定量的アプローチ5ed)に関するHennessy-Pattersonの書籍は、複数のメモリバンクを有するベクトルアーキテクチャでは、以下の条件が満たされると5EDでページ279):メモリバンクベクタプロセッサにおけるメモリアクセス競合の条件
(バンクの数)/最小公倍数(バンク数、ストライド)<銀行忙しい時間
しかし、私は場合は、メモリの競合が発生するので、それは、GreatestCommonFactor代わりのLCMすべきだと思います有効銀行数がである場合は、ビジー時間未満です。実効銀行数とは、8つの銀行と2つのストライドがあるとしましょう。その後、効果的に4つの銀行があります。なぜなら、メモリアクセスは4つの銀行でのみ行われるからです(たとえば、アクセスはすべて偶数、0から始まり、あなたのアクセスは銀行0,2,4,6で整列されます)。
実際、この数式はその下の例でも失敗します。 6クロックサイクルのビジー時間を持つ8つのメモリバンクがあり、合計メモリレイテンシが12クロックサイクルで、ストライドが1の64要素ベクタロードを完了するのにどれくらいの時間がかかるのですか? - ここでは、時間を12 + 64 = 76クロックサイクルとして計算します。しかし、与えられた条件に従ってメモリバンクの競合が発生するので、サイクルごとに1つのアクセス権を持つことはできません(式の64)。
私は間違っているか、または間違った公式がこの本の5版を生き延びた(おそらくない)か?
インテルSandybridgeのL1キャッシュのように動作する場合は、キャッシュライン(128B合計)のペアは8つの16Bバンクに分割され、異なるラインの同じバンクからの同時ロードはバンク衝突です。 (しかし同じ行の同じ銀行の2回の読み込みは同じサイクルで起こる可能性があります)。 [Agner Fogのmicroarch pdf](http://agner.org/optimize/)で説明しています。 Haswellは後に銀行間の競合を起こさないため、これはクロック当たり2回の読み取りをサポートする最初の2世代のIntelマイクロアーキテクチャであるSnBとIvBにのみ適用されます。 –