2

確かにあまり成功していませんが、メモリの配置について学習しようとしています。IBM のこの記事を使用しています。

ダブルバイトメモリアクセスの粒度セクションからのこの抜粋が何を意味するのか、誰か説明してもらえますか?

ただし、アドレス 1 から読み取るとどうなるか注意してください。アドレスがプロセッサのメモリ アクセス境界に均等に収まらないため、プロセッサは余分な作業を行う必要があります。このようなアドレスは、アラインされていないアドレスと呼ばれます。アドレス 1 はアラインされていないため、2 バイトの粒度を持つプロセッサは余分なメモリ アクセスを実行する必要があり、操作が遅くなります。

別のメモリアクセスが順番に行われるのはなぜですか? メモリアクセス境界とはどういう意味で、メモリアクセス境界上にあるのですか?

上位レベルのプログラミング (Objective-C および C++) しか扱っていないため、CPU に関する知識は非常に限られています。どんな助けでも大歓迎です!

ありがとう!

4

1 に答える 1

6

この例では、2 バイト アクセス粒度を持つ CPU で 4 連続バイトのブロックを読み取ろうとするとどうなるかを説明しています。このタイプの CPU では、メモリは常に偶数バイトから始まるバイトのペアとしてアクセスされます。

バイト 0 で始まるブロックを読み取ろうとすると、バイト 0-1 とバイト 2-3 の 2 つの読み取りを実行する必要があります。

バイト 1 から始まるブロックを読み取ろうとすると、バイト 0 ~ 1 (バイト 1 を取得するため)、バイト 2 ~ 3、およびバイト 4 ~ 5 (バイト 4 を取得するため) の 3 つの読み取りを実行する必要があります。

メモリ アクセスの粒度は、一度にアクセスするバイト数であり、メモリ アクセス境界は、これらの各バイト グループの開始点です。バイトのグループは常に粒度の偶数倍数でアドレス指定されます。2 バイト粒度の場合は偶数アドレスで始まり、4 バイト粒度の場合は 4 の倍数になります。

例えとして、各フロアに 4 つのユニットがあるマンションを考えてみましょう。ユニット 0 ~ 3 は 0 階、ユニット 4 ~ 7 はフロア 1 などです。しかし、チラシを 1 ~ 4 の下に滑り込ませたい場合は、2 つのフロアに移動する必要があります。1 ~ 3 はフロア 0、ユニット 4 はフロア 2 です。

于 2013-05-18T03:10:42.970 に答える