アドレス、サイズ、アライメントなど、メモリ(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 のように分割されています。
例:
  1. Addr 0x0000_0FFCへ4Byte Data Access、
    4KB境界をまたがない→可能
  2. Addr 0x0000_1FFCへ4Byte Data Access、
    4KB境界をまたがない→可能
  3. Addr 0x0000_0FFCへ8Byte Data Access、
    4KB境界0x0000_1000をまたぐ→不可
  4. Addr 0x0000_1FFCへ8Byte Data Access、
    4KB境界0x0000_2000をまたぐ→不可
  5. 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


ロード/ストア命令においてデータサイズでアライメントされているアドレスへアクセス
アクセスするデータのサイズに揃えられたアドレスを用る
例:
  1. 4Byte Data転送のAddr(0x0000, 0x0004, 0x0008, 0x000C, ...)
  2. 8Byte Data転送のAddr(0x0000, 0x0008, 0x0010, 0x0018, ...)
  3. 16Byte Data転送のAddr(0x0000, 0x0010, 0x0020, 0x0030, ...)
C言語を扱う上で話の出てくるアライメントを意識した構造体の定義の話などにもつながります。

unaligned access


ロード/ストア命令においてデータサイズでアライメントされていないアドレスへのアクセス
例:
  1. Addr 0x0002へ、4Byteアクセス
  2. 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


以上
勉強中

このエントリーをはてなブックマークに追加
コメントを閉じる

コメント

コメントフォーム
記事の評価
  • リセット
  • リセット