HVM的缓存与内存控制

来源:互联网 发布:网龙网络 编辑:程序博客网 时间:2024/06/05 20:47

缓存控制

概述
用户级别的Hexagon缓存管理指令可以在HVM用户下进行使用,如dcfetch, icinva,dccleaninva,dccleana,dcinva

有些缓存控制指令必须通过VMM进行处理,那么可以用虚拟指令vmcache来实现

HVM的缓存操作
虚拟指令vmcache用于实现难以以用户界别的Hexagon缓存控制指令实现的缓存操作。下图列出了所有的HVM指定的缓存控制操作:
这里写图片描述
缓存控制的虚拟指令
下图列出了HVM缓存控制的虚拟指令:
这里写图片描述

内存管理

概述
HVM映射虚拟地址0x0000_0000至0xfeff_ffff置于一个32位的逻辑地址空间,既可以使用一系列的转换或者1或2级别的虚拟页框架。在HVM运行时,转换是可见而且可操作的。

VMM负责在填充物理处理器TLB时,验证并尽可能的转换信息。在普通的操作中,转换根据VMM进行导入
内在的逻辑/物理内存
“逻辑”地址指那些无法被HVM MMU所转换的地址。由于虚拟仪器操作以及配置的原因,VMM中将会有无法更改的物理地址或地址映射
线性转换
虚拟转逻辑地址的转换通过转换列表来实现,下图显示了列表入口的格式:
这里写图片描述
这里写图片描述

虚拟页表入口
HVM定义了两级虚拟页表。第一级将虚拟地址分为1020个4MB的段,每一段代表一个页表入口
这里写图片描述
这里写图片描述
第一级列表入口总是包含着映射的虚拟内存页的大小
对于4MB或者更大的页表,第一级入口包含了对也标的转换与授权信息
对于小于4MB的页表,第一级入口包含了第二级入口矩阵的指针

第一级页表入口可解码入口类型以及页大小。其他的位根据入口类型各有不同

如果定义的大小超过或等于4M,那么二级页表没必要定义映射:入口定义了页的映射以及权限。对于更小的页,入口被解释为一个目录入口,指向一个二级页
页目录入口
一个页表入口包含了一个指向二级页表的指针。入口的最有效位指向了二级表中逻辑地址的有效位
下图显示了页目录入口的格式:
这里写图片描述

页表入口
页表入口用于定义特定内存页的虚拟-逻辑转换。

虚页表入口可指定一级缓存上的4MB或16MB的转换,下图显示了相应的格式

页表入口(L1-4MB)
这里写图片描述
页表入口(L1-16MB)
这里写图片描述
第二级页表为连续的4MB地址空间指定转换。每个入口拥有相同的转换大小。这种统一的大小在一级中被确定。

下图显示了一个二级的页表入口:
这里写图片描述

这里写图片描述

这里写图片描述
缓存属性
在页表入口中,C域控制了虚拟页的缓存属性。如果虚拟别名映射了相同的逻辑页,那么缓存的行为将是不确定的。
这里写图片描述
缓存属性Device Access应该在Load与store操作留下副作用时使用

缓存属性Uncached Memory不允许对内存进行缓存。然而,可以实现重新store以及load
更新旧的内存映射
虚拟指令vmclrmap刷新可能的旧虚拟映射

Vmclrmap可接受很大范围内的虚拟地址。它使得虚拟地址转换的拷贝从虚拟仪器中净化(包括TLB),从而为特定范围内的虚拟地址腾出空间。
内存管理的虚拟指令
下图列出了所有的内存管理虚拟指令
这里写图片描述

0 0
原创粉丝点击