1

データを整列する必要がある理由 (およびパディングのようにそれを達成するために行われたすべての努力) を理解しているので、メモリアクセスの数を減らすことができますが、これは、プロセッサが 4 の倍数のアドレスをフェッチできることを前提としています (32 ビットを使用していると仮定します)。建築)。そして、その仮定のために、メモリを整列させる必要があります。

私の質問は
、4 の倍数のアドレス (効率、ハードウェアの制限、別のアドレス) にアクセスできるのはなぜですか?

これを行う利点はどれですか?利用可能なすべてのアドレスにアクセスできないのはなぜですか?

4

1 に答える 1

4

メモリは、メモリ バスに接続されたハードウェア (RAM) から構成されます。バスが広いほど、データのフェッチに必要なサイクルが少なくなります。メモリが 1 バイト幅の場合、1 つの 32 ビット値を読み取るのに 4 サイクルが必要です。時間の経過とともにメモリ アーキテクチャが進化し、プロセッサのクラス (組み込み、低電力、高性能など) とキャッシュの設計によっては、メモリの幅が非常に広くなる場合があります (たとえば、256 ビット)。

非常に幅の広い内部バス (RAM またはキャッシュの間) とレジスター (レジスターの幅の 2 倍など) を考えると、データ パスにバレル シフターがある場合、アライメントに関係なく 1 サイクルで値をフェッチできます。バレル シフターは高価なため、すべてのプロセッサーに搭載されているわけではありません。パスに 1 つもないと、値を揃えるために複数のサイクルが必要になります。

于 2010-04-27T20:50:14.070 に答える