Pentium4とAthlonXPのloadbenchをとって比較してみました。
Load Latency Measurement Tool v0.7
CPU Frequency : 1406.2 MHz
Range Frequent access Infrequent access
256B : 2.0clock( 1.4ns) 2.0clock( 1.4ns)~ 2.0clock( 1.4ns)
512B : 2.0clock( 1.4ns) 2.0clock( 1.4ns)~ 2.0clock( 1.4ns)
1KB : 2.0clock( 1.4ns) 2.0clock( 1.4ns)~ 2.0clock( 1.4ns)
2KB : 2.0clock( 1.4ns) 2.0clock( 1.4ns)~ 2.0clock( 1.4ns)
4KB : 2.0clock( 1.4ns) 2.0clock( 1.4ns)~ 2.0clock( 1.4ns)
8KB : 2.0clock( 1.4ns) 2.0clock( 1.4ns)~ 2.0clock( 1.4ns)
16KB : 17.9clock( 12.8ns) 9.0clock( 6.4ns)~ 9.0clock( 6.4ns)
32KB : 18.0clock( 12.8ns) 9.0clock( 6.4ns)~ 9.0clock( 6.4ns)
64KB : 18.0clock( 12.8ns) 9.0clock( 6.4ns)~ 9.0clock( 6.4ns)
128KB : 18.0clock( 12.8ns) 9.0clock( 6.4ns)~ 9.0clock( 6.4ns)
256KB : 18.2clock( 13.0ns) 9.1clock( 6.5ns)~ 9.3clock( 6.6ns)
512KB : 241.6clock(171.8ns) 240.7clock(171.2ns)~247.0clock(175.7ns)
1024KB : 249.0clock(177.1ns) 248.0clock(176.3ns)~253.7clock(180.4ns)
2048KB : 253.6clock(180.4ns) 252.3clock(179.4ns)~258.7clock(184.0ns)
4096KB : 256.5clock(182.4ns) 256.3clock(182.2ns)~263.4clock(187.3ns)
8192KB : 258.8clock(184.1ns) 257.7clock(183.2ns)~265.7clock(188.9ns)
16384KB : 262.0clock(186.3ns) 263.9clock(187.7ns)~272.2clock(193.6ns)
32768KB : 266.4clock(189.4ns) 268.4clock(190.8ns)~275.2clock(195.7ns)
|
Load Latency Measurement Tool v0.7
CPU Frequency : 1531.0 MHz
Range Frequent access Infrequent access
256B : 3.0clock( 2.0ns) 3.0clock( 2.0ns)~ 3.0clock( 2.0ns)
512B : 3.0clock( 2.0ns) 3.0clock( 2.0ns)~ 3.0clock( 2.0ns)
1KB : 3.0clock( 2.0ns) 3.0clock( 2.0ns)~ 3.0clock( 2.0ns)
2KB : 3.0clock( 2.0ns) 3.0clock( 2.0ns)~ 3.0clock( 2.0ns)
4KB : 3.0clock( 2.0ns) 3.0clock( 2.0ns)~ 3.0clock( 2.0ns)
8KB : 3.0clock( 2.0ns) 3.0clock( 2.0ns)~ 3.0clock( 2.0ns)
16KB : 3.0clock( 2.0ns) 3.0clock( 2.0ns)~ 3.0clock( 2.0ns)
32KB : 3.0clock( 2.0ns) 3.0clock( 2.0ns)~ 3.0clock( 2.0ns)
64KB : 3.0clock( 2.0ns) 3.0clock( 2.0ns)~ 3.0clock( 2.0ns)
128KB : 20.0clock( 13.1ns) 11.0clock( 7.2ns)~ 11.0clock( 7.2ns)
256KB : 20.0clock( 13.1ns) 13.6clock( 8.9ns)~ 13.6clock( 8.9ns)
512KB : 185.5clock(121.1ns) 175.2clock(114.4ns)~193.1clock(126.1ns)
1024KB : 185.5clock(121.2ns) 175.2clock(114.5ns)~195.0clock(127.4ns)
2048KB : 196.9clock(128.6ns) 189.0clock(123.4ns)~207.5clock(135.5ns)
4096KB : 202.7clock(132.4ns) 194.7clock(127.2ns)~214.1clock(139.9ns)
8192KB : 205.6clock(134.3ns) 197.8clock(129.2ns)~217.6clock(142.1ns)
16384KB : 207.9clock(135.8ns) 199.9clock(130.6ns)~220.2clock(143.8ns)
32768KB : 233.0clock(152.2ns) 225.4clock(147.2ns)~237.2clock(154.9ns)
|
|
|
Pentium4 1.4GHz + i850 +PC800Dual |
AthlonXP 1.53GHz + nForce2SPP + PC2100CL2Dual |
L1キャッシュへのアクセスレイテンシはPentium4が2クロック、AthlonXPが3クロックです。アクセスとアクセスの間にインターバルをとってもとらなくても(頻繁にアクセスした場合でもたまにしかアクセスしなかった場合でも)レイテンシは変わりません。
L2キャッシュへのアクセスレイテンシはPentium4が9クロック、AthlonXPが11クロックのようです。インターバルをとらずにアクセスを繰り返した場合は、レイテンシはもっと大きくなります。
キャッシュミス時のメモリアクセスレイテンシはAthlonXP+PC2100CL2の方が速いようです。これはAthlonXPとPentium4のキャッシュラインサイズの差もあると思います。AthlonXPは1回のメモリアクセスで64バイト分のデータをメモリからキャッシュに取り込みますが、Pentium4では128バイト分のデータを取り込むからです。
キャッシュにヒットしないメモリアクセス範囲(512KB〜)にインターバルをとってアクセスした場合(Infrequent access)では、インターバル時間の長さによってメモリへのアクセスレイテンシが若干変動しますが、これはベースクロックがCPUクロックよりかなり低いため、FSBへのアクセスタイミングによってベースクロックとちょうどタイミングが合ったときと合わなかったときで待ち時間の差が出るのが原因の一つとして考えられます。
Load Bandwidth Measurement Tool v0.9
CPU Frequency : 1406.2 MHz
Range Int32bit Float64bit MMX64bit SSE128bit
256B : 5364 MB/S 10727 MB/S 10727 MB/S 21452 MB/S
512B : 5364 MB/S 10727 MB/S 10727 MB/S 21452 MB/S
1KB : 5364 MB/S 10727 MB/S 10727 MB/S 21452 MB/S
2KB : 5364 MB/S 10727 MB/S 10727 MB/S 21452 MB/S
4KB : 5364 MB/S 10727 MB/S 10727 MB/S 21452 MB/S
8KB : 5364 MB/S 10727 MB/S 10727 MB/S 21451 MB/S
16KB : 3732 MB/S 5722 MB/S 5722 MB/S 11442 MB/S
32KB : 3732 MB/S 5722 MB/S 5722 MB/S 11442 MB/S
64KB : 3732 MB/S 5722 MB/S 5722 MB/S 11442 MB/S
128KB : 3731 MB/S 5721 MB/S 5721 MB/S 11370 MB/S
256KB : 3576 MB/S 5358 MB/S 5356 MB/S 9974 MB/S
512KB : 1436 MB/S 1563 MB/S 1568 MB/S 1955 MB/S
1024KB : 1436 MB/S 1562 MB/S 1566 MB/S 1957 MB/S
2048KB : 1429 MB/S 1562 MB/S 1567 MB/S 1956 MB/S
4096KB : 1431 MB/S 1562 MB/S 1567 MB/S 1956 MB/S
8192KB : 1436 MB/S 1562 MB/S 1567 MB/S 1956 MB/S
16384KB : 1437 MB/S 1563 MB/S 1567 MB/S 1956 MB/S
32768KB : 1437 MB/S 1562 MB/S 1567 MB/S 1957 MB/S
|
Load Bandwidth Measurement Tool v0.9
CPU Frequency : 1531.0 MHz
Range Int32bit Float64bit MMX64bit SSE128bit
256B : 11327 MB/S 23361 MB/S 23361 MB/S 18233 MB/S
512B : 11327 MB/S 23361 MB/S 23361 MB/S 18233 MB/S
1KB : 11327 MB/S 23361 MB/S 23361 MB/S 18233 MB/S
2KB : 11327 MB/S 23361 MB/S 23361 MB/S 18233 MB/S
4KB : 11327 MB/S 23361 MB/S 23361 MB/S 18233 MB/S
8KB : 11327 MB/S 23361 MB/S 23361 MB/S 18233 MB/S
16KB : 11327 MB/S 23361 MB/S 23361 MB/S 18233 MB/S
32KB : 11327 MB/S 23361 MB/S 23361 MB/S 18233 MB/S
64KB : 11326 MB/S 23359 MB/S 23359 MB/S 18233 MB/S
128KB : 3976 MB/S 4511 MB/S 4450 MB/S 4650 MB/S
256KB : 3976 MB/S 4515 MB/S 4442 MB/S 4650 MB/S
512KB : 913 MB/S 1259 MB/S 1261 MB/S 1184 MB/S
1024KB : 913 MB/S 1259 MB/S 1261 MB/S 1183 MB/S
2048KB : 913 MB/S 1256 MB/S 1257 MB/S 1180 MB/S
4096KB : 913 MB/S 1254 MB/S 1256 MB/S 1180 MB/S
8192KB : 913 MB/S 1254 MB/S 1256 MB/S 1179 MB/S
16384KB : 912 MB/S 1254 MB/S 1255 MB/S 1179 MB/S
32768KB : 912 MB/S 1254 MB/S 1256 MB/S 1179 MB/S
|
|
|
Pentium4 1.4GHz + i850 +PC800Dual |
AthlonXP 1.53GHz + nForce2SPP + PC2100CL2Dual |
キャッシュにヒットしないメモリアクセス範囲(512KB〜)ではPentium4+i850が速いです。
L1キャッシュに収まるアクセス範囲に注目してみます。Pentium4では1クロック当たり1つのロード命令しか実行できませんが、ロードユニット自体は128bit幅で、SSE128bitロード命令を1クロック毎に処理できます。
それに対してAthlonXPでは1クロック当たり2つのロード命令を実行できますが、ロードユニットは64bit幅です。64bitロード命令2つを1クロック毎に処理できます。
AthlonXPではFloat64bitやMMX64bitに対してSSE128bitが若干遅くなっていますが、これはAthlonXPのSSE128bit命令はVectorPath命令なため、他の命令と同時にデコードできないためです。アドレス計算やループ処理にかかる汎用命令と同時にデコードできないため、その分若干遅くなってしまいます。Float64bit命令やMMX64bit命令の場合は、主要なものはDirectPath命令なので、他のDirectPath命令と併せて3命令同時にデコードできます。
Store Bandwidth Measurement Tool v0.9
CPU Frequency : 1406.2 MHz
Range Int32bit Float64bit MMX64bit SSE128bit
256B : 3065 MB/S 4462 MB/S 6130 MB/S 12259 MB/S
512B : 2802 MB/S 4639 MB/S 4768 MB/S 6130 MB/S
1KB : 2802 MB/S 3391 MB/S 4768 MB/S 6130 MB/S
2KB : 2861 MB/S 3391 MB/S 4768 MB/S 6130 MB/S
4KB : 2811 MB/S 3391 MB/S 4768 MB/S 6130 MB/S
8KB : 2861 MB/S 3391 MB/S 4768 MB/S 6130 MB/S
16KB : 2813 MB/S 3391 MB/S 4768 MB/S 6130 MB/S
32KB : 2861 MB/S 3391 MB/S 4768 MB/S 6130 MB/S
64KB : 2861 MB/S 3691 MB/S 4768 MB/S 6130 MB/S
128KB : 2836 MB/S 3690 MB/S 4768 MB/S 6130 MB/S
256KB : 2834 MB/S 4605 MB/S 4764 MB/S 6123 MB/S
512KB : 872 MB/S 869 MB/S 869 MB/S 870 MB/S
1024KB : 849 MB/S 844 MB/S 845 MB/S 847 MB/S
2048KB : 850 MB/S 845 MB/S 847 MB/S 847 MB/S
4096KB : 848 MB/S 844 MB/S 845 MB/S 846 MB/S
8192KB : 848 MB/S 844 MB/S 845 MB/S 847 MB/S
16384KB : 849 MB/S 844 MB/S 845 MB/S 847 MB/S
32768KB : 851 MB/S 845 MB/S 847 MB/S 850 MB/S
|
Store Bandwidth Measurement Tool v0.9
CPU Frequency : 1531.0 MHz
Range Int32bit Float64bit MMX64bit SSE128bit
256B : 11327 MB/S 11681 MB/S 11681 MB/S 11681 MB/S
512B : 11327 MB/S 11681 MB/S 11681 MB/S 11681 MB/S
1KB : 11327 MB/S 11681 MB/S 11681 MB/S 11681 MB/S
2KB : 11327 MB/S 11681 MB/S 11681 MB/S 11681 MB/S
4KB : 11327 MB/S 11681 MB/S 11681 MB/S 11681 MB/S
8KB : 11327 MB/S 11681 MB/S 11681 MB/S 11681 MB/S
16KB : 11327 MB/S 11681 MB/S 11681 MB/S 11681 MB/S
32KB : 11327 MB/S 11681 MB/S 11681 MB/S 11681 MB/S
64KB : 11326 MB/S 11680 MB/S 11680 MB/S 11680 MB/S
128KB : 3893 MB/S 4622 MB/S 4622 MB/S 4622 MB/S
256KB : 3800 MB/S 4577 MB/S 4577 MB/S 4579 MB/S
512KB : 765 MB/S 811 MB/S 811 MB/S 811 MB/S
1024KB : 769 MB/S 811 MB/S 811 MB/S 811 MB/S
2048KB : 755 MB/S 811 MB/S 811 MB/S 810 MB/S
4096KB : 753 MB/S 810 MB/S 811 MB/S 811 MB/S
8192KB : 752 MB/S 810 MB/S 810 MB/S 810 MB/S
16384KB : 752 MB/S 810 MB/S 810 MB/S 810 MB/S
32768KB : 751 MB/S 810 MB/S 810 MB/S 810 MB/S
|
|
|
Pentium4 1.4GHz + i850 +PC800Dual |
AthlonXP 1.53GHz + nForce2SPP + PC2100CL2Dual |
キャッシュにヒットしないメモリアクセス範囲(512KB〜)に注目してみます。通常のストア命令で書き込み時にキャッシュミスすると、まずメモリからキャッシュにデータが取り込まれ、キャッシュ上でデータが書き換えられた後、キャッシュからメモリにデータが戻されます。つまりメモリからの読み込みとメモリへの書き込みの両方の転送が行なわれます。そのためストア帯域はロード帯域より狭くなります。
メモリロードではAthlonXPよりかなり速かったPentium4ですが、メモリストアはそれほど速くはないようです。Pentium4ではメモリからキャッシュにデータを取り込む際、128バイトずつデータを取り込みます。しかしキャッシュからメモリへの書き出しでは64バイトずつ書き出します。AthlonXPは取り込み・書き出し共に64バイトずつです。このことも影響しているのではないかと考えられます。
次にL1,L2キャッシュに収まるアクセス範囲に注目してみます。Pentium4のL1データキャッシュはライトスルー方式なので、L1への書き込み速度はL2への書き込み速度と同じになってしまいます。ただ、Pentium4には6キャッシュライン(384バイト)分のライト・コンバイニング・バッファがあり、これがライトバックの役割を果たします。このため、256Byteの範囲内へ書き込みを繰り返す場合にはライトバックが効き、書き込み性能が良くなっています。
AthlonXPのL1データキャッシュはライトバック方式なので、L1への書き込み速度はL2への書き込み速度より速くなっています。AthlonXPでは1クロック毎に32bitストア命令2つ、または64bitストア命令1つを処理できます。