質問: その他の質問は、bcopyは読み取りと書き込みの両方を伴うことです。つまり、読み取り帯域幅または書き込み帯域幅だけを得るために、計算された帯域幅を2で割る必要があるということですか?帯域幅がレイテンシの逆数にすぎないかどうか確認したいと思いますか?帯域幅を測定する他の方法を提案してください。
回答: 私はbcopyの有効性についてコメントすることはできませんが、最も簡単なアプローチは、あなたが述べた2番目の方法です(ストライド1)。さらに、メモリ帯域幅の式のバイトを混同しています。 32ビット= 4バイト。最新のコンピュータは64ビット幅のメモリバスを使用します。あなたの効果的な転送速度(DDR3の技術を前提とした) 1333MHz * 64ビット/(8ビット/バイト)= 10666MB/s(PC3-10666とも呼ばれる) 1333Mhzには2つの転送/クロックがすでに組み込まれています。 Check out the wiki page for more info: http://en.wikipedia.org/wiki/DDR3_SDRAM 結果に関しては、アレイへのアクセスを再度試みてください。 Malloc 1GBを使用して全体を走査します。配列の各要素を合計して出力することができますので、コンパイラはデッドコードではないと考えます。 このようなもの: ``` double time; int size = 1024*1024*1024; int sum; *char *array = (char*)malloc(size); //start timer here for(int i=0; i < size; i++) sum += array[i]; //end timer printf("time taken: %f \tsum is %d\n", time, sum); ```