Documentation/arm64/memory.txt

Chinese translated version ofDocumentation/arm64/memory.txt

If you have any comment orupdate 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.

Chinesemaintainer:沈芳丽 fairyshen@163.com

---------------------------------------------------------------------
Documentation/arm64/memory.txt
的中文翻译

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

中文版维护者:沈芳丽 fairyshen@163.com

中文版翻译者:沈芳丽 fairyshen@163.com

中文版校译者:沈芳丽 fairyshen@163.com

 

         Memory Layout on AArch64 Linux

           AArch64 Linux的内存布局

Author: Catalin Marinas <catalin.marinas@arm.com>
Date  : 20 February 2012
 
作者:Catalin Marinas <catalin.marinas@arm.com>
日期:2012220

 

This document describes the virtual memory layout used by the AArch64
Linux kernel. The architecture allows up to 4 levels of translation
tables with a 4KB page size and up to 3 levels with a 64KB page size.

 

本文档介绍了AArch64 Linux内核使用的虚拟内存布局。该架构允许一个

4KB页大小的4个级别的和64KB页大小3个级别的转换表。

  

AArch64 Linux uses 3 levels of translation tables with the 4KB page 
configuration, allowing 39-bit (512GB) virtual addresses for both user
and kernel. With 64KB pages, only 2 levels of translation tables are
used but the memory layout is the same.
 
AArch64 Linux使用4KB页配置3个级别的翻译表,允许39位(512GB)的用户
和内核虚拟地址。64KB的页面,只有2级的转换表被使用,但存储器布局是一
样的。
 
 
User addresses have bits 63:39 set to 0 while the kernel addresses have
the same bits set to 1. TTBRx selection is given by bit 63 of the
virtual address. The swapper_pg_dir contains only kernel (global)
mappings while the user pgd contains only user (non-global) mappings.
The swapper_pgd_dir address is written to TTBR1 and never written to TTBR0.
 
63:39位的用户地址设置为0,而具有相同位的内核地址设置为1TTBRx
择由63位的虚拟地址给予swapper_pg_dir包含内核(全球)映射而PGD用户只
包含唯一用户(非全局)的映射。swapper_pgd_dir地址被写定为TTBR1,从来
没有写过TTBR0
 
 
AArch64 Linux memory layout
Start                   End                     Size            Use
----------------------------------------------------------------- 0000000000000000     0000007fffffffff       512GB           user
  
ffffff8000000000       ffffffbbfffeffff      ~240GB          vmalloc
ffffffbbffff0000         ffffffbbffffffff       64KB          [guard page]
 
ffffffbc00000000       ffffffbdffffffff       8GB            vmemmap
ffffffbe00000000       ffffffbffbbfffff      ~8GB      [guard, future vmmemap]
 
ffffffbffbc00000        ffffffbffbdfffff       2MB         earlyprintk device
 
ffffffbffbe00000        ffffffbffbe0ffff      64KB          PCI I/O space
 
ffffffbbffff0000         ffffffbcffffffff      ~2MB          [guard]
ffffffbffc000000        ffffffbfffffffff       64MB          modules
 
ffffffc000000000       ffffffffffffffff      256GB       kernel logical memory map
 
AArch64 Linux的内存布局:
开始                     结束                     大小           使用
----------------------------------------------------------------- 0000000000000000     0000007fffffffff       512GB           user
  
ffffff8000000000      ffffffbbfffeffff      ~240GB          vmalloc
ffffffbbffff0000        ffffffbbffffffff       64KB          [guard page]
 
ffffffbc00000000      ffffffbdffffffff       8GB            vmemmap
ffffffbe00000000     ffffffbffbbfffff      ~8GB      [guard, future vmmemap]
 
ffffffbffbc00000      ffffffbffbdfffff       2MB         earlyprintk device
ffffffbffbe00000      ffffffbffbe0ffff      64KB          PCI I/O space
 
ffffffbbffff0000       ffffffbcffffffff      ~2MB          [guard]
 
ffffffbffc000000      ffffffbfffffffff       64MB          modules
ffffffc000000000     ffffffffffffffff      256GB       kernel logical memory map
 
 
Translation table lookup with 4KB pages:
+--------+--------+--------+--------+--------+--------+--------+--------+
 |63    56|55    48|47    40|39    32|31    24|23    16|15     8|7      0|
  +--------+--------+--------+--------+--------+--------+--------+--------+
   |                 |         |         |         |         |
   |                 |         |         |         |         v
   |                 |         |         |         |   [11:0]  in-page offset
   |                 |         |         |         +-> [20:12] L3 index
   |                 |         |         +-----------> [29:21] L2 index
   |                 |         +---------------------> [38:30] L1 index
   |                 +-------------------------------> [47:39] L0 index (not used)
   +-------------------------------------------------> [63] TTBR0/1
 
 
查找4KB页的转换表:
+--------+--------+--------+--------+--------+--------+--------+--------+
 |63    56|55    48|47    40|39    32|31    24|23    16|15     8|7      0|
  +--------+--------+--------+--------+--------+--------+--------+--------+
   |                 |         |         |         |         |
   |                 |         |         |         |         v
   |                 |         |         |         |   [11:0]  in-page offset
   |                 |         |         |         +-> [20:12] L3 index
   |                 |         |         +-----------> [29:21] L2 index
   |                 |         +---------------------> [38:30] L1 index
   |                 +-------------------------------> [47:39] L0 index (not used)
   +-------------------------------------------------> [63] TTBR0/1
 
 
 
Translation table lookup with 64KB pages:
+--------+--------+--------+--------+--------+--------+--------+--------+
  |63    56|55    48|47    40|39    32|31    24|23    16|15     8|7      0|
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |                 |    |               |              |
  |                 |    |               |              v
   |                 |    |               |            [15:0]  in-page offset
  |                 |    |               +----------> [28:16] L3 index
   |                 |    +--------------------------> [41:29] L2 index (only 38:29 used)
   |                 +-------------------------------> [47:42] L1 index (not used)
   +-------------------------------------------------> [63] TTBR0/1
 
查找64KB页的转换表:
+--------+--------+--------+--------+--------+--------+--------+--------+
  |63    56|55    48|47    40|39    32|31    24|23    16|15     8|7      0|
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |                 |    |               |              |
  |                 |    |               |              v
   |                 |    |               |            [15:0]  in-page offset
  |                 |    |               +----------> [28:16] L3 index
   |                 |    +--------------------------> [41:29] L2 index (only 38:29 used)
   |                 +-------------------------------> [47:42] L1 index (not used)
   +-------------------------------------------------> [63] TTBR0/1
 
 
 
When using KVM, the hypervisor maps kernel pages in EL2, at a fixed offset 
from the kernel VA (top 24 bits of the kernel VA set to zero):
Start                   End                     Size            Use
---------------------------------------------------------------------------------------------------------------
0000004000000000        0000007fffffffff         256GB          kernel objects mapped in HYP
 
 
使用KVM时,虚拟机管理程序在一个固定的偏移内核VA(前24位的内核VA设置为零)映射在
内核页的EL2
Start                   End                     Size            Use
---------------------------------------------------------------------------------------------------------------
0000004000000000        0000007fffffffff         256GB          kernel objects mapped in HYP
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值