[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: memmove,memset
鈴木(康)です。
<200003231401.OAA17760@atropos.fsn.7n1umj>の記事において
kensyu@y.email.ne.jpさんは書きました。
| 神木です。
| わりと脇道ですが、...
|
| >X-Ml-Count: 2086
| >だいたい メモリバンド幅+ α キャッシュ残留分ぐらいで止まるみたいで。
| >だから PenII は、520MB/sec ぐらいなんでしょう。
| > | Pentium II 450(?) -O3だと
| > | memcpy : 268817 k byte/sec
| > | memmove_fwd : 265251 k byte/sec
| > | memmove_back : 264550 k byte/sec
| > | memset : 341296 k byte/sec
| > | xmemset : 338983 k byte/sec
| > | xmemmove_fwd : 221238 k byte/sec
| > | xmemmove_back: 235294 k byte/sec
|
| PenII の↑は もしかしてオンチップの 2nd cache 速度を測ってません?
| 総転送量は 100kB だから 2nd cache に入りますよね?
あ、かも知れないです。
ちょっと技を使えば、gcc からキャッシュフラッシュが呼ばれる
みたいなんですが、hpcmips では インプリメントされてなくて
リンクエラーになるんでやめました。
ちなみに、bench マークの memmove,memset ちょっとバグっています。
# 比較対象用だから bugfix しなくてよいとは思いますが。
| ちなみにオンチップ 2nd cache が 256KB あって
| あからさまに 2nd cache 測ってるだけの K6-III/400 だと
| こんなん↓になりました。
|
| memcpy : 492610 k byte/sec
| memmove_fwd : 456621 k byte/sec
| memmove_back : 520833 k byte/sec
| xmemset : 769230 k byte/sec
| xmemmove_fwd : 531914 k byte/sec
| xmemmove_back: 490196 k byte/sec
|
| 転送量を 1MB にするとここまで落ちます:
|
| memcpy : 117647 k byte/sec
| memmove_fwd : 121951 k byte/sec
| memmove_back : 77519 k byte/sec
| memset : 142857 k byte/sec
| xmemset : 135135 k byte/sec
| xmemmove_fwd : 78740 k byte/sec
| xmemmove_back: 75187 k byte/sec
ちなみに
一次キャッシュに残るようにすると、それはもうすさまじい値になります。
--
鈴木 康司 @NEC
suz@hpc.bs1.fc.nec.co.jp
TEL 0423-33-5381