fc2ブログ
 

連載1 高速なメモリーコピー 補足

今回は宿題となっていたmmx命令のmovntqについて試してきました。この命令は連載の中で紹介したsse命令のmovntdqと似た働きをしますが、一度に処理できるデータ量が8バイトと少ない代わりにアライメントの制約を受けないと言うメリットがあります。この辺のメリットとデメリットがどう作用するかを試してきました。

check
アライメント
パソコン2 Celeron
  
memcpy()
ssememcpy()
mmxmemcpy()
check1
(dst+0, src+0)
1076 MB/s
1594 MB/s
1524 MB/s
check2
(dst+1, src+0)
473 MB/s
1580 MB/s
1400 MB/s
check3
(dst+0, src+1)
898 MB/s
1578 MB/s
1534 MB/s
check4
(dst+1, src+1)
709 MB/s
1600 MB/s
1288 MB/s
check5
(dst+3, src+2)
460 MB/s
1584 MB/s
1288 MB/s
memcpy()は連載1-7回のデータをそのまま転載しています。

 
パソコン2
Celeron
CPU
Intel Celeron 420
(Conroe-L) 1.6GHz
Socket 775LGA
Chipset
i945G/GZ
Memory
DDR2, 1GB (single)
read=3.3GB/s
write=1.2GB/s
OS
Windows2000
Pro SP4
補足
デスクトップPC

mmxmemcpy()movntqを使ったメモリーコピー処理となり、メモリーのアライメントは一切そろえずひたすらmovqで読込んでmovntqで書き込んでいきます。
一方ssememcpy()は以前と同じものです。全ての条件でアライメントを揃えて処理しています。なお、memcpy()は今回データを取っていないので前回のものをそのまま記載しています。
全体的に見てmovntqは予想以上に良い結果となりました。アライメントが揃っているcheck1ではssememcpy()に肉薄していますし、書き込みのアライメントのみ揃っているcheck3でも肉薄しています。check2,4,5では恐らく書き込み側のアライメントが揃っていないためにパフォーマンスが低下していますが、memcpy()と比べるとパフォーマンスの低下は低く良好な結果だと思います。
 
最後になりますが、きっちりアライメントを揃えてからsseの専用命令を使うのがベストですが、sse命令が使えない、レジスターが足りない、プログラムをシンプルにしたいなどの理由からmmxを使った処理も十分検討に値すると思いました。
 
次回からは「コーデックを使った画像転送システム」を紹介いたします。ファンタジーリモートの心臓部とも言える重要な部分ですが実はとっても簡単です。コーデックに関するドキュメントなどググってもあまり出てこないのでその辺を意識した連載にしたいと思っています。
関連記事


コメントの投稿

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

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

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



ホームページ
カテゴリ
最新コメント
カレンダー
08 | 2023/09 | 10
- - - - - 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 質問コーナー アセット機能 ニコニコ動画 HDキャプチャ DirectShow 背景透過 120Hz Asset レゴ 遅延 解説動画 組み換え 可変再生速度 Meta LEGO MetaQuest VR GV-USB2 XL2420T 2 Pico4 倍速液晶 液晶モニター デインターレース ベンチマーク アマステ Intensity VRonVR AMV2MT MonsterX3A Pro 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 電源オプション 音ズレ 録画 オーバーレイ XCapture-1 MonsterXU3.0R フィギュア ハイパースレッディングテクノロジー HT 31021 MPC 液晶テレビ DirectShowFilter プレビュー 擬似NTSCキャプチャ SD-USB2CUP4 Livetube AtomでHDキャプチャ キャプチャーツール シンクライアント イベント IntensityPro DC-HD1 額縁遅延 REGZA ZP3 倍速補完処理 32ZP32 Kabelake リプレイ機能 モノステ 倍速駆動 ゲームスムーズモード LAVFilters SkyBox Hand Tracking 2.0 ファイルマネージャプラス pytorch APIパススルー機能 API python ハンドジェスチャー パカラーススルー機能 アルファ付き動画 アルファ付きVR動画 RVM クロマキー ダウンロード AssetBundle 物理処理 download passthrough 検証 Preferred Filter Tweaker SteamVR GPU使用率 可逆圧縮 SKnet GV-USB3 キャプチャカード VR動画 フレーム間圧縮 新プレイヤー機能 AMPlayer 60Hz 新アマレコVR 90Hz VRコントローラー MR Windows SSE 

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