• ベストアンサー

ナゼVRAMの読み込みは遅い?

昨日質問を立てたのですが回答が付かなかったので、路線を変更して再質問させていただきます。 とりあえず今回はハードウェアカテで(笑) 1.(CPUから見て)何故VRAMへの書き込みは速いのに、読み込みは遅いんでしょうか? 2.VRAMの読み込みが速い機種もあると聞きますが、何処の何と言う機能(?)が改善に役立つんでしょうか? 近況は面倒なので昨日の質問をコピペ(笑) >2,3年前、DirectXでPCゲームを作っている際に、画像データの編集でAGPの上りと下りの転送速度差で大いに苦労したのを思い出しました。 >当時は何も気にせず「そんなものか」と思ったものですが、今になって無性に気になります。 >というわけで、このあたりに詳しい方お願いします。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#11476
noname#11476
回答No.6

補足読みました。 その場合だとCPUは遅いAGP経由でアクセスしますから絶対遅くなると思いますよ。 読み込みと書き込みをランダムに繰り返しますから。 そしてCPUのキャッシュも効きません。 VRAMの速度ではなくてAGPの速度に制限されているんですね。 (VRAM自体は最近ではDDRとか高速RAMを使うしバスも広いからかなり早い。) 対して単純に書き込む場合は、一度に転送できるのでAGPのバースト転送で最大速度で送り出せます。 この差は非常に大きいですよ。 バースト転送でアドレッシングがいらなくなるとざっくり半分になりますので。 CPU-AGP-VRAMのアクセスは当然(HELで)転送するデータ量×2(CPU行きと戻り)ですから、先のバーストとあわせて4倍違うわけですね。 (HELでのCPU-メモリ間の速度も考えれば差が縮まるかもしれませんけど、でもAGPよりは早いはず) >読み込みも速いマシンが存在する記述を見たことがあるんため、質問2が存在します(笑)。 う~ん(笑)、なんだろ。 もしこれの速度を早くしようとすると、、、、、 あ、そういえばメインメモリ上にVRAMを展開することが出来るので(たとえば815Eの内臓ビデオ)、それだったら違いはないですよね。 この場合VRAM=メインメモリですから(そして画面表示用データをAGPで送るんです)、速度に差は出ないかと。

g_dori
質問者

お礼

度々ありがとうございます。 CPUは32bit、AGPは128bitですから、プログラム次第ではバースト転送に対してで2×2×4(128/32)倍かそれ以上の差がつくかもしれませんね。(8bit単位の処理など) だんだん見えてきたような気がします。というかこれが決定打かな?? 当時のソースは残っていたと思うので、2については自分で調べてみたいのですが・・・今になってオンボードビデオのマシンを持ってないのが悔やまれます(笑)

その他の回答 (5)

noname#11476
noname#11476
回答No.5

あ、あともともとの書き込み/読み込みの速度差であれば、DRAMだから読み込みの方が遅くなりますね。 これはVRAMでもメインメモリでも同じなんですけど、メインメモリはCPUのキャッシュが効くのとメモリバースト転送なども出来るからメインメモリのほうが早そうですね。 AGPのバースト転送はVRAM自体のメモリバーストを使っているわけではないでしょうから。(これは推測ですが)

noname#11476
noname#11476
回答No.4

あぁ、ごめんなさい。 ようやく言っている意味を理解しました。おまけに一つ前の補足のHAL/HELを取り違えていましたね。 すいません。 整理すると、CPU-メモリ間とVRAM-グラフイックチップ間は高速、でもAGPは遅い。 動画については、 ・CPUでの処理がメインとなる動画編集だとメインメモリで編集して送り出したほうがずっと早い。 (CPUから直接だと遅いAGPを経由しなければならないから) で理解できると思います。 HAL<HELだったというのは、、、処理内容によるのではないでしょうか。 HALのつもりでもそうなっていなかった場合、CPUが直接VRAMにアクセスしているかも知れないですよね。 HELの場合だとメインメモリで処理してから転送するでしょうから。 そういう関係ではないかと??? #ちょっと自信無しです。

g_dori
質問者

補足

こちらこそ申し訳ありません、用語の使い方が悪かったです。 DirectXでHALの設定を行うとサーフェイス(画像イメージ)がVRAMに、HELだとメインメモリに作成されます。プログラム内ではHALとHELのフラグを変更するのみで、その他は一切変更無しです。 そしてその環境でCPUで画像加工を行うと、以下のようになります。 HEL:CPU-メインメモリ間で画像編集  →最終的に出来上がったイメージをVRAMに転送、表示   #VRAMに対して書き込みのみ HAL:CPU-VRAM間で画像編集  →直接VRAMに描画、表示   #VRAMに対して書き込み、読み込みの両方 こういうことをすると、HALの方が圧倒的に遅いんです。 つまるところ下記HPの下の方にある「▲VRAMにCPUでアクセスする時の注意事項」に書かれている理由が知りたいのですが・・・ http://www1.odn.ne.jp/ceb94660/memo/memo.html 偶然このページを見つけてしまいましたが、ここに書かれているように禁止されていたんでしょうか・・? 尚、他のBBS等で読み込みも速いマシンが存在する記述を見たことがあるんため、質問2が存在します(笑)

noname#11476
noname#11476
回答No.3

>HALとHEL それはCPUの処理よりは専用チップの処理のほうが格段に早いに決まっていると思うのですが。 これって別に転送速度の話ではないと思うのですが。 HALでの処理は画像転送でなくて、カード内の高速BUSを使って専用チップで処理なので。 HELだと汎用のCPUで処理→遅いバス→カード内VRAM転送ですよね。 二重に遅い処理があるとおもいます。 10年以上前からのVRAMの変遷を考えれば、初めはCPUからのアクセスと画像表示のためのアクセス(RAMDAC)の両方をシェアしていたので遅くて、でもDual Port RAM(CPU側のアクセスと独立にRAMDACからアクセス可能)になってかなり改善されましたね。 その後も変遷を続けていて、AGP4X位のビデオカードになればカード内のBUSは128bit位のバス幅でしょうからカード内は非常に高速だと思いますよ。

noname#11476
noname#11476
回答No.2

それはもちろんバス転送速度はメモリ間よりも周辺機器用のバス(PCI、AGP)の方が遅いからでしょうね。 メモリバス66MHzの自体ではPCIは33MHzだったし、メモリバス100MHz/133MHzの現在主流はPCIより早いAGP(×1)ですがそれでも66MHzですから。 あとメモリ直接の場合はreadでキャッシュが効くので、これもまた速さを感じる理由ですね。

g_dori
質問者

補足

すみません、ちょっと納得しがたいのですが・・・ VRAMのRead/Writeの速度差の回答にはなっていないような気がします。 昔作った自作の画像加工ルーチンを伴うヘボプログラムで、HALとHELとを比較して、10倍以上HALの方が遅かった経験があります。 インターフェースによる速度差は認識してますが、コマンド応答やらタイミングの問題を考慮しても、ここまで差がつくとそれ以外の問題が大きいと思うんです。(ちなみに当時使用したPCはAGP4x、PC133のメモリアクセスよりもVRAMアクセスの方が理論上高速でした) プログラムに欠陥があり、実際はVRAMのRead/Writeの速度差が、メインメモリのRead/Writeの速度差と大差ないとしたら、例えば動画編集ソフトはVRAMを使用した方が効率が良い場合が多いと思いますが、残念ながらそういう市販ソフトは見かけません。 ですから何かがあると思うのですが・・・ これらの認識は間違っているでしょうか?

noname#25358
noname#25358
回答No.1

 1.について心当たりがあるので。  大昔の話なんで現状がどうか分かりませんが、昔のRAMは、パソコンの種類によっては読み込みが遅いのが当たり前でした。(たとえばMSXとか(笑))  というのも、RAMというのは種類によっては「破壊読み込み」という方法によって読み込みを行うからです。  RAMのあるビットからデータを読み込もうとすると、そのビットに電気信号を送らなければいけません。  ところが、RAMのビットというのは電気信号によって反転する性質があるため、データを読み込むと、読み込み元のビットの情報は破壊されてしまうのです。  なんで、次のプロセスに移る前に再書き込み作業が必要になり、結果として読み込みだけが遅くなります。  現在、破壊読み込みせずにすむのが主流なのか、いまだ破壊読み込みが主流なのかはよく分かりません(^_^;  それどころか、破壊読み込みしないRAMというのが存在するかどうかも分かりませんが(笑)

g_dori
質問者

お礼

ありがとうございます、勉強になります。 たしかにメインメモリでさえ、多くのベンチ結果を見てもWriteよりReadの方が遅いですから、破壊したものを修復しているのかもしれませんね。 ただ気になる点が、いくら遅いといっても、メインメモリの場合は倍も違いなかったと思いますが、AGPやPCI接続のビデオカードのVRAMの場合、比較にならないほど遅かったと記憶しています。(コレが間違い??) ならばオンボードビデオでメインメモリを共有する物が同程度、ということになるんでしょうか・・? う~む・・・

関連するQ&A