詳しいことはこちらを・・・・って書こうかと思ったけど、どうやら書いただけでアップしていない記事がありました。
なので、この辺りに貼り付けておきます。
Resizable BARの説明
-------------------------------------
ReBarもしくは Resizable BAR
AMD的に言うならSAM もしくは Smart Access Memoryと呼ばれる物
これはPCIeのVer.2.1あたりで制定されたもので、PCIeの仕様で言うならResizable BARであって、それにAMDが専用の名称を付けたのがSmart Access Memoryということで、基本全く同じ物だそうです。
さて、これが何かと言われても、分からない人が多いでしょう。
もちろん、ググれば色々と出て来ます。
簡単に言うと、メモリにアクセスする際に、
従来の物だと、所々境界があって扱いづらいので
全体にアクセス出来た方が楽だよね? ってことでPCIeに追加された仕様という訳です。
ようするに、PCIeの仕様です。
だけど、当然ながら、
PCIeを提供するCPU
物理配線をするマザーボード
対象となるGPU
実際に動作させるOS
と色々な物が対応している必要があります。
まぁ、とりあえず、Resizable BARが何故必要なのかという説明をしましょうか
最近は大量のデータを送受信する関係で、GPUには数Gのメモリが搭載されていることが殆どです。
当然、その大量のデータをストレージから読み出して、GPUのメモリにいれておいて上げないと、GPUは画面に表示するデータが足りないことになってしまいます。
しかし大量のデータを送信するには、PCIeの仕様が微妙だった。
今でこそ、PCIeのストレージも有り、大容量データの送受信が当たり前ですが、初めはそうでは無かった訳です。
なので、上位アドレスを指定して、そこに対してデータを送信する。
上位アドレスを変更し直して、次のデータを送る。
とても面倒だし時間が掛かったのです。
そこに追加されたResizable BARは何かというと・・・
Resizableはサイズの変更が可能という意味ですね。 まぁ、それだけだと何の意味もありませんが?
問題は、BARの方
Base Address Register
ここで言うベースアドレス と言う物が何かというと、上で書いた「上位アドレスを指定」の部分です。
Registerはレジスタ。CPUにも沢庵有りますが、値をいれる場所ですね。
実際にこれらがどう言う風に実装されているのかは分かりませんが、
ベースアドレスを指定し直さなくても、メモリ全体にアクセス出来るということです。
でも、そこまでしか考慮しなかった場合、大した違いは出ない。
一部のアプリケーション(主にゲーム)は大量のデータを使うので多少の効果はあるかもしれませんが、ベースアドレスの再指定がそこまで時間が掛かる訳がありません。
ミリ秒単位の誤差でしか有りません。
でも、PICe4.0の特徴は以前(3.0等)に比べて帯域が広い。
Resizable BARは全体に対して大量のデータを一気に書き込むのに非常に適している訳です。
-------------------------------------
さて、当然ながら、ゲーム等も対応していなければ成りません。
DXに任せて全く何も気にせずデータを書き込んでいるようなゲームでしたら、自動的に対応するかも知れませんが?
アグレッシブにデータを入れ替えるアプリケーションほどResizable BARの恩恵はすさまじいのです。
すでにSAMや3060でResizable BARを使ったいくつかのベンチマークがありますが?
少ないものでも数% 大きいものでは数十%のパフォーマンスがアップすることが分かっています。
nVidiaも困ったでしょうね~
AMDはRyzen 5000シリーズにて満を持して発表した訳です。
しかし上で書いたようにResizable BARはPCIeのVer.2.1頃に導入された機能です。
帯域の狭いそんな頃合いに実装されても大した意味は無かったでしょうけど4.0なら大きな違いがあります。
そして、愚直にその機能を導入していたAMDのCPUとintelのCPUは実は既に対応していました。
intelとしては、使われない機能だとしても、導入せざるを得なかったのでしょうね?
その辺りを特に気にしていなかったマザーボードメーカーはたまったものでは有りません(笑
一応気にしてある程度機能はあったのでしょうね?
AGESAの更新と共に各メーカーは無事に対応させました。
そして、問題はGPUですよ。
RadeonにてSAMが発表されて・・・・発表するくらいですから、Radeonは当然対応している。
対応していないのはnVidiaだけになってしまいました。
テストをしない訳にも行かないので結局最下位の3060から導入を開始し、半月のテストを経て全モデルへの導入を行いました。
まぁ、Resizable BARの実装その物は、大した面倒でも無かったでしょうが?
今まで無かったVBIOSの配布と更新機能の提供。
これらも含めて大変な一ヶ月だったでしょうね?
さて、ここまで書いてきたのですから、当然書く訳です。
あたしの使っている
Ryzen7 3800XTでも問題なく動作しています。
AMDもそろそろサポート対象として発表すれば良いのに?
これが対応前(BIOSで機能は有効済み、有効にしていないとそもそも出ない)
これが対応した結果
後は、NGSが対応してくれれば何の問題も無い。
要望を送るだけです。
※追加 ❌1
それにしても
0830000000 - 7FFFFFFFFFという膨大なメモリ空間はすごいですね~
GPUはそのうちの
7C00000000 - 7DFFFFFFFFしか使っていませんけどね、
では、計算してみましょうか?
7E00000000 - 7C00000000 = 200000000
ではこれを10進数に直しましょうか?
8388608
ですね。
これを1024で割っていけば綺麗に8Gとなります。
後ろに8Gの空きがありますが・・・?
ようするにリソースの要求範囲としては最大容量の3060あたりの16Gを想定しているのでしょうか?
ただ、3090になると24G実装している訳ですから、範囲が違うと思いますけれど?
単純に考えると
7A00000000 - 7FFFFFFFFF
になっているか?後ろを空けておいて(32G実装を考慮して)
7800000000 - 7DFFFFFFFF
あたりでしょうか?
そのうち誰かが公開するでしょう。
それはそれとして、
7800000000 - 7FFFFFFFFF で 32Gな訳ですから?
7000000000 - 7FFFFFFFFF で 64G
1000000000 - 7FFFFFFFFF で7倍の448G
0830000000 - 0FFFFFFFFF で2096M
450Gと48Mの容量ですね。
この大容量メモリを使いこなせるPCは生まれるのでしょうか??
※追加 ❌2
因みにResizable BARその物はPICeの機能。
アプリケーションとして特別対応させなくても、それなりに効きますが?
当たり前な話しですが、
ギリギリまでチューニングしたアプリケーションは、
256Mずつデータを用意して、256Mずつデータの差し替えをして動くように作られて居ます。
ようするにResizable BARの恩恵を受けにくい。
ギリギリのアプリケーションほど恩恵を受けず、データを大量に使用するほどほどのアプリケーションほど恩恵を受けやすい。
「DX11もDX12関係なく、全てのアプリケーションが恩恵を受ける」と書いている記事があるけれど、それは言い過ぎ。
逆にデータをまとめすぎないようにDetuneする必要がある。
対応させる必要はあります。