アドレス、サイズ、アライメントなど、メモリ(RAM/ROM)、レジスタアクセスに関する早見ページ
メモリサイズ(Byte) / アドレス一覧表
1 B = 8 Bit
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
※「KiB/MiB/GiB」を慣例的に「KB/MB/GB」と表記しています。
GB(GiB) | MB(MiB) | KB(KiB) | B(Byte) | Address Offset(16進数) |
---|---|---|---|---|
1 B (8 Bit) | 0x0000_0001 | |||
4 B (32 Bit) | 0x0000_0004 | |||
8 B (64 Bit) | 0x0000_0008 | |||
16 B (128 Bit) | 0x0000_0010 | |||
32 B (256 Bit) | 0x0000_0020 | |||
64 B (512 Bit) | 0x0000_0040 | |||
128 B | 0x0000_0080 | |||
256 B | 0x0000_0100 | |||
0.5 KB | 512 B | 0x0000_0200 | ||
1 KB | 1024 B | 0x0000_0400 | ||
4 KB | 4096 B | 0x0000_1000 | ||
8 KB | 8192 B | 0x0000_2000 | ||
16 KB | 16384 B | 0x0000_4000 | ||
32 KB | 32768 B | 0x0000_8000 | ||
64 KB | 65536 B | 0x0001_0000 | ||
128 KB | 131072 B | 0x0002_0000 | ||
256 KB | 262144 B | 0x0004_0000 | ||
0.5 MB | 512 KB | 524288 B | 0x0008_0000 | |
1 MB | 1024 KB | 1048576 B | 0x0010_0000 | |
4 MB | 4096 KB | 4194304 B | 0x0040_0000 | |
8 MB | 8192 KB | 8388608 B | 0x0080_0000 | |
16 MB | 16384 KB | 16777216 B | 0x0100_0000 | |
32 MB | 32768 KB | 33554432 B | 0x0200_0000 | |
64 MB | 65536 KB | 67108864 B | 0x0400_0000 | |
128 MB | 131072 KB | 134217728 B | 0x0800_0000 | |
256 MB | 262144 KB | 268435456 B | 0x1000_0000 | |
0.5 GB | 512 MB | 524288 KB | 536870912 B | 0x2000_0000 |
1 GB | 1024 MB | 1048576 KB | 1073741824 B | 0x4000_0000 |
4 GB | 4096 MB | 4194304 KB | 4294967296 B | 0x1_0000_0000 |
8 GB | 8192 MB | 8388608 KB | 8589934592 B | 0x2_0000_0000 |
16 GB | 16384 MB | 16777216 KB | 17179869184 B | 0x4_0000_0000 |
32 GB | 32768 MB | 33554432 KB | 34359738368 B | 0x8_0000_0000 |
64 GB | 65536 MB | 67108864 KB | 68719476736 B | 0x10_0000_0000 |
128GB | 131072MB | 134217728KB | 137438953472B | 0x20_0000_0000 |
Byteを16進数変換 → Addr
黄色ハイライト:
設計、IF/IP/RAM仕様で頻繁に見かけるアドレス
アドレス頻出用語簡単解説
アドレスとかWrite/Read転送に関する頻出語勉強
4KB Address Boundary
4KBのAddress境界をまたぐ、アクセスが可能かどうかを示す
A transaction must not cross a 4KB address boundary.ARM AMBA AXI Protocol Specification (ARM IHI 0022) p.49
ここでは4KBアドレス境界をまたぐアクセスを禁止しています。もう少し簡単に言うと、1回の転送中 (BURST転送含む) で、ADDR[32:12]が変化してはいけません。
1つの4KB領域は、アドレス領域 0x0000_0000~0x0000_0FFFF、0x0000_1000~0x0000_1FFFF のように分割されています。
例:
-
Addr 0x0000_0FFCへ4Byte Data Access、
4KB境界をまたがない→可能 -
Addr 0x0000_1FFCへ4Byte Data Access、
4KB境界をまたがない→可能 -
Addr 0x0000_0FFCへ8Byte Data Access、
4KB境界0x0000_1000をまたぐ→不可 -
Addr 0x0000_1FFCへ8Byte Data Access、
4KB境界0x0000_2000をまたぐ→不可 -
Addr 0x0000_0FF0から、256beat BURST転送、
4KB境界をまたぐ→不可
Word / Half Word Access
Word:
一度に処理、または転送できるデータ量を示す基本単位。大きさはアーキテクチャによって異なる。Wordサイズの半分のサイズをHalf Wordとも言います。
- 32bitアーキテクチャ 1 Word = 4Byte(32bit)
- 64bitアーキテクチャ 1 Word = 8Byte(64bit)
64bit幅のデータバスに対して、64bitアクセス「=Word Access」、32bitアクセス「=Half Word Access」
aligned access
ロード/ストア命令においてデータサイズでアライメントされているアドレスへアクセス
アクセスするデータのサイズに揃えられたアドレスを用る
例:
C言語を扱う上で話の出てくるアライメントを意識した構造体の定義の話などにもつながります。- 4Byte Data転送のAddr(0x0000, 0x0004, 0x0008, 0x000C, ...)
- 8Byte Data転送のAddr(0x0000, 0x0008, 0x0010, 0x0018, ...)
- 16Byte Data転送のAddr(0x0000, 0x0010, 0x0020, 0x0030, ...)
unaligned access
ロード/ストア命令においてデータサイズでアライメントされていないアドレスへのアクセス
例:
アライメントされていないアクセスが可能かどうかは、モジュール仕様を確認する必要があります。- Addr 0x0002へ、4Byteアクセス
- Addr 0x0003へ、8Byteアクセス
Narrow Access(Narrow転送)
Wordアクセスより小さいアクセスをnarrow(狭い/細い)領域へのアクセスとして、「Narrow Access」と呼ばれます。
BUSプロトコル上ではSTRB信号(APB:PSTRB, AXI:WSTRB)などを用いてWriteアクセス。Readアクセスでは、Wordアクセスを行った上で不要なbitは不使用
memory footprint
メモリー・フットプリント
一般には、物体が専有する物理的な次元の範囲、つまり、物体の大きさを意味する。コンピュータ科学の分野では、ソフトウェア・アプリケーションのメモリー・フットプリントとは、プログラムの実行中に必要なメモリの量を意味する。wikipedia
メモリマップやレジスタ群がメモリ・フットプリントのサイズのあるアドレス空間に配置されることを示します。
- アドレスデコードロジックが単純
- ページ単位が4KBで、MMU(メモリ管理ユニット)との整合性のため
- 将来の拡張性
参考:
・https://www.arm.com/ja/architecture/system-architectures/amba/amba-specifications
以上
勉強中