8051アーキテクチャには3つの個別のアドレス空間があり、コアRAMは8ビットアドレスを使用するため、最大256バイト、XDATAは読み取り/書き込み機能を備えた16ビットアドレス空間(64Kバイト)、プログラム空間は16ビットアドレス空間です。実行および読み取り専用データ機能を備えています。アドレス範囲が狭く、コアと密接に結合しているため、コアRAMのアドレス指定は、コードスペースとアクセスサイクルの点でより効率的です。
元の8051コアには小さなオンチップRAM(256バイトのアドレス空間がありましたが、一部のバリアントは実際のメモリの半分でした)があり、XDATAは(プログラムメモリではなく)オフチップデータメモリを参照していました。ただし、最新の8051アーキテクチャデバイスのほとんどは、オンチップXDATAとプログラムメモリを備えています。
したがって、パフォーマンスが重要な場合はコアメモリを使用し、より大きなメモリオブジェクトにはXDATAを使用する場合があります。ただし、ほとんどの場合、コンパイラがこの決定を行う必要があります(コンパイラのマニュアルを確認してください。メモリの割り当て方法が詳しく説明されています)。命令セットを使用すると、スタックをコアメモリに効率的に実装できますが、静的および動的に割り当てられたデータは、通常、XDATAでより適切に割り当てられます。コンパイラにXDATAキーワードがある場合、それはコンパイラの戦略を上書きし、コードの移植性を低下させるため、コンパイラの戦略が何らかの理由で失敗した場合にのみ使用する必要があります。
[編集]コアメモリには32バイトのビットアドレス指定可能な領域が含まれていることにも注意してください。ビットアドレス指定命令は、この領域への8ビットアドレスを使用して個々のビットに直接アクセスします。この領域は256バイトのバイトアドレス指定可能なコアメモリ内に存在するため、ビットアドレスとバイトアドレス指定の両方が可能です[/ edit]