fc2ブログ
 

連載1 高速なメモリーコピー その7

今回はメモリーコピー編の最終回としてmemcpy()とSSE命令を使ったメモリーコピー処理の処理速度を比較します。
 
テスト方法はアライメントを揃えた128MBのバッファを2つ確保(バッファsrcとバッファdst)して、srcからdstに4MBずつコピーしていきます。128MBを超えたらまた0バイト目からコピーを続けて1秒間に何MBコピーできるかを測定。
また、アライメントをワザとずらしたパターンでもテストします。アライメントから1バイトずらした場合を”+1”、2バイトずらした場合を”+2”と表記しています。
尚、これらは全てシングルスレッドによる処理となります。
 
アライメント
パソコン1 Athlon
パソコン2 Celeron
 
memcpy()
ssememcpy
memcpy()
ssememcpy()
パターン1
(dst+0, src+0)
888 MB/s
1442 MB/s
1076 MB/s
1554 MB/s
パターン3
(dst+1, src+0)
881 MB/s
1350 MB/s
473 MB/s
1554 MB/s
パターン3
(dst+0 src+1)
887 MB/s
1366 MB/s
898 MB/s
1522 MB/s
パターン2
(dst+1, src+1)
846 MB/s
1445 MB/s
709 MB/s
1554 MB/s
パターン3
(dst+3, src+2)
845 MB/s
1349 MB/s
460 MB/s
1554 MB/s
 
 
 
 
パソコン1
Athlon
パソコン2
Celeron
CPU
Athlon64X2
4400+ 2.2GHz
Socket 939
Intel Celeron 420
(Conroe-L) 1.6GHz
Socket 775LGA
Chipset
NVIDIA nForce4
i945G/GZ
Memory
DDR400, 2GB(dual)
read=3.6GB/s
write=1.6GB/s
DDR2, 1GB (single)
read=3.3GB/s
write=1.2GB/s
OS
WindowsXP
Pro SP2
Windows2000
Pro SP4
補足
デスクトップPC
デスクトップPC
※メモリーのread,writeはCrystalMark 0.9.114によるものです。

全体的に観てssememcpy()memcpy()より1.5~3倍程度高速であることが判ります。
また、Athlonではどのパターンのmemcpy()も差が少ないですが、Celeronではアライメントが揃っていないと処理速度が半分以下まで低下する場合があります。これはcore2duoでも同様の傾向がみられました(データを送ってくださった方ありがとうございました)。
それから、ssememcpy()に着目すると、Celeronの方はどのパターンもほぼ同じ結果ですが、AthlonではSSE命令の実行速度が遅いため演算処理を含むパターン3が若干遅くなっています。
Celeronの方はCrystalMarkの書き込みテスト以上の速度が出ているのが少し気になるところですが、それについては不明です。

以上で、メモリーコピー編は終わりです。
関連記事


コメントの投稿

高速なメモリコピーについて

初めまして。dc1394と申します。
高速なメモリコピーを行う関数をintrinsic命令で実装してみまして、その際にamamanさんのこの記事が大変参考になりました。
この場を借りて御礼申し上げます。

なお、その関数のプログラムは、自分のブログで紹介させて頂いてます。
http://blog.goo.ne.jp/dc1394/e/3e32499e1e2a700e08b4e3e90780b957
ソースコード(プロジェクト)は以下に置いてあります。
https://skydrive.live.com/#cid=706AAA2BAD30EFEA&id=706AAA2BAD30EFEA%21177

何か問題があればすぐに消しますので、よろしくお願いいたします。

Re: 高速なメモリコピーについて

> 初めまして。dc1394と申します。
> 高速なメモリコピーを行う関数をintrinsic命令で実装してみまして、その際にamamanさんのこの記事が大変参考になりました。
> この場を借りて御礼申し上げます。
>
> なお、その関数のプログラムは、自分のブログで紹介させて頂いてます。
> http://blog.goo.ne.jp/dc1394/e/3e32499e1e2a700e08b4e3e90780b957
> ソースコード(プロジェクト)は以下に置いてあります。
> https://skydrive.live.com/#cid=706AAA2BAD30EFEA&id=706AAA2BAD30EFEA%21177
>
> 何か問題があればすぐに消しますので、よろしくお願いいたします。

ありがとうございます。どんどんご活用下さい。
 
 
あまラボへようこそ
このブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。

ファイルのダウンロードはホームページの方でお願い致します。

質問・要望・不具合報告はこちら
アマレコTV
アマミキ!
アマレココ
アマレコ・ライト
ファンタジーリモート
AMVコーデック



ホームページ
カテゴリ
最新コメント
カレンダー
03 | 2024/04 | 05
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 - - - -
最新記事
最新トラックバック
ブログ内タグ

アマレコTV ビデオキャプチャ アマレコVR AMVコーデック Oculus アマレココ Quest アマミキ! コーデック gQuest SC500 動画配信 Pico GO ファンタジーリモート 4K アマレコライト Unity プラグイン G2 AMV4 oculus SC512 ライブ機能 パススルー機能 Passthrough デスクトップキャプチャ AVX2 リモートソフト FAQ アセット機能 質問コーナー DirectShow HDキャプチャ ニコニコ動画 Asset 120Hz 背景透過 レゴ 遅延 解説動画 組み換え 可変再生速度 MetaQuest LEGO Quest3 Meta VR XL2420T GV-USB2 2 Pico4 背景透過V3 アマステ 液晶モニター デインターレース ベンチマーク 倍速液晶 Pro VRonVR AMV2MT MonsterX3A Intensity PS4 VideoKeeper2 designs インストール Alternate AVX XCAPTURE-1 RDT233WX-Z GV-USB SD-USB2CAP4 31024 32ZP2 31006 ffmpeg 画像処理 60fps Robust Matting RGBキャプチャ Rift Video Shadow Play WindowsMR RYZEN UtVideo T2 HDMI NVEnc HDCP QSV LameACM OBS 音遅延 MP3 Haswell 電源オプション 録画 MonsterXU3.0R オーバーレイ XCapture-1 Kabelake 音ズレ フィギュア ハイパースレッディングテクノロジー HT 31021 MPC 液晶テレビ DirectShowFilter プレビュー 擬似NTSCキャプチャ SD-USB2CUP4 Livetube AtomでHDキャプチャ キャプチャーツール シンクライアント イベント IntensityPro DC-HD1 額縁遅延 REGZA ZP3 倍速補完処理 32ZP32 SSE リプレイ機能 モノステ 倍速駆動 ゲームスムーズモード Preferred Hand Tracking 2.0 ハンドジェスチャー SkyBox ファイルマネージャプラス API python pytorch パカラーススルー機能 AssetBundle アルファ付きVR動画 RVM AI XML アルファ付き動画 クロマキー 物理処理 download ダウンロード APIパススルー機能 passthrough Filter Tweaker SteamVR VR動画 LAVFilters GPU使用率 GV-USB3 キャプチャカード 可逆圧縮 フレーム間圧縮 VRコントローラー AMPlayer 60Hz 検証 新プレイヤー機能 新アマレコVR MR Windows 90Hz SKnet 

ブログ内検索
月別アーカイブ
アマレココに関するリンク
お世話になっているソフトのリンク
RSSリンクの表示
管理画面
  • 管理画面