memory.txt 4.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
Chinese translated version of Documentation/arm64/memory.txt

If you have any comment or update to the content, please contact the
original document maintainer directly.  However, if you have a problem
communicating in English you can also ask the Chinese maintainer for
help.  Contact the Chinese maintainer if this translation is outdated
or if there is a problem with the translation.

Maintainer: Catalin Marinas <catalin.marinas@arm.com>
Chinese maintainer: Fu Wei <tekkamanninja@gmail.com>
---------------------------------------------------------------------
Documentation/arm64/memory.txt 的中文翻译

如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文
交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
译存在问题,请联系中文版维护者。

英文版维护者: Catalin Marinas <catalin.marinas@arm.com>
中文版维护者: 傅炜  Fu Wei <tekkamanninja@gmail.com>
中文版翻译者: 傅炜  Fu Wei <tekkamanninja@gmail.com>
中文版校译者: 傅炜  Fu Wei <tekkamanninja@gmail.com>

以下为正文
---------------------------------------------------------------------
		     Linux 在 AArch64 中的内存布局
		     ===========================

作者: Catalin Marinas <catalin.marinas@arm.com>
日期: 2012 年 02 月 20 日

本文档描述 AArch64 Linux 内核所使用的虚拟内存布局。此构架可以实现
页大小为 4KB 的 4 级转换表和页大小为 64KB 的 3 级转换表。

AArch64 Linux 使用页大小为 4KB 的 3 级转换表配置,对于用户和内核
都有 39-bit (512GB) 的虚拟地址空间。对于页大小为 64KB的配置,仅
使用 2 级转换表,但内存布局相同。

用户地址空间的 63:39 位为 0,而内核地址空间的相应位为 1。TTBRx 的
选择由虚拟地址的 63 位给出。swapper_pg_dir 仅包含内核(全局)映射,
而用户 pgd 仅包含用户(非全局)映射。swapper_pgd_dir 地址被写入
TTBR1 中,且从不写入 TTBR0。


AArch64 Linux 内存布局:

起始地址			结束地址			大小		用途
-----------------------------------------------------------------------
0000000000000000	0000007fffffffff	 512GB		用户空间

50
ffffff8000000000	ffffffbbfffeffff	~240GB		vmalloc
51

52
ffffffbbffff0000	ffffffbbffffffff	  64KB		[防护页]
53

54
ffffffbc00000000	ffffffbdffffffff	   8GB		vmemmap
55

56
ffffffbe00000000	ffffffbffbbfffff	  ~8GB		[防护页,未来用于 vmmemap]
57

58
ffffffbffbe00000	ffffffbffbe0ffff	  64KB		PCI I/O 空间
59

60
ffffffbbffff0000	ffffffbcffffffff	  ~2MB		[防护页]
61 62 63

ffffffbffc000000	ffffffbfffffffff	  64MB		模块

64
ffffffc000000000	ffffffffffffffff	 256GB		内核逻辑内存映射
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93


4KB 页大小的转换表查找:

+--------+--------+--------+--------+--------+--------+--------+--------+
|63    56|55    48|47    40|39    32|31    24|23    16|15     8|7      0|
+--------+--------+--------+--------+--------+--------+--------+--------+
 |                 |         |         |         |         |
 |                 |         |         |         |         v
 |                 |         |         |         |   [11:0]  页内偏移
 |                 |         |         |         +-> [20:12] L3 索引
 |                 |         |         +-----------> [29:21] L2 索引
 |                 |         +---------------------> [38:30] L1 索引
 |                 +-------------------------------> [47:39] L0 索引 (未使用)
 +-------------------------------------------------> [63] TTBR0/1


64KB 页大小的转换表查找:

+--------+--------+--------+--------+--------+--------+--------+--------+
|63    56|55    48|47    40|39    32|31    24|23    16|15     8|7      0|
+--------+--------+--------+--------+--------+--------+--------+--------+
 |                 |    |               |              |
 |                 |    |               |              v
 |                 |    |               |            [15:0]  页内偏移
 |                 |    |               +----------> [28:16] L3 索引
 |                 |    +--------------------------> [41:29] L2 索引 (仅使用 38:29 )
 |                 +-------------------------------> [47:42] L1 索引 (未使用)
 +-------------------------------------------------> [63] TTBR0/1