2017-08-11 13 views

答えて

0

通常のメモリ - ほとんど常にキャッシュ可能とマークされる - ユーザ空間またはカーネルのためか。それ以外の場合は、そのメモリを使用すると大きなパフォーマンスが低下します。

一般に、メモリが実際には外部デバイス(つまりメモリチップ以外のデバイス)の一部である場合、メモリをキャッシュ不可能にする必要があるのは、使用されるPCIデバイスのBAR領域デバイス制御レジスタを実装する。

キャッシュの読み取りと書き込みは、通常、と多く、の基礎となるRAMの読み書きよりも高速です。そして、キャッシングは読み書きを「束ねる」ことができるので、RAMチップ上の操作は大幅に少なくなります。欠点は、それを使用することによって、RAMの読み書きに対する正確な制御を一般に断念することです。

通常、メインRAMはキャッシュコントローラによって決定される「ランダム」時間に読み書きされ、通常は「キャッシュライン」と呼ばれる大きなブロック(32,64,128のブロック)で読み書きされます1バイトずつ。 (:それは今までにキャッシュから転送される前に、それが上書きされてしまうかもしれません、これまでならば)あなたがキャッシュされたメモリに値を書き込むと、その値は、いくつかの不確定後の時間まで、実際のRAMチップに書き込まれないことがあります。これは、もちろん、あなたが記憶のユーザーとして隠されていることです - 一般的にそれを知る必要はありません。

しかし、書き込み先のメモリが制御レジスタである場合(たとえば、デバイスのモードや特性を設定した場合)、そのレジスタの値を、不確定ではない後で、あなたはそのレジスタへの書き込みは、アドレス空間内で近くに位置することができる任意の他のレジスタに影響を与えたくありません。あなたは、ステータス・レジスタの値を読めば

同様に、それは「揮発性」であるかもしれない:あなたが値をキャッシュしたくないので、連続した2つが同じレジスタの読み取りで、すなわち、その値が変更される可能性があります。そして、レジスタを読むことは副作用があるかもしれないので、アクセスするために明示的な読み込みが必要なだけです。

関連する問題