アドレス、サイズ、アライメントなど、メモリ(RAM/ROM)、レジスタアクセスに関する早見ページ
メモリサイズ(Byte) / アドレス一覧表
1 B = 8 Bit
1 KB = 1024 B
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 |
Byteを16進数変換 → Addr
黄色ハイライト:
設計、IF/IP仕様で頻繁に用いられるアドレス
アドレス頻出用語簡単解説
アドレスとか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は不使用
参考:
・https://www.arm.com/ja/architecture/system-architectures/amba/amba-specifications
以上
勉強中