前面我们知道了ARM怎么通过硬件实现内存的隔离,这里我们来看看ARM核对内存的访问流程是什么。
因为系统启动完成后,系统运行于内存中,ARM核处理的数据都来自于内存,即在系统运行过程中,ARM核会从内存中获取数据。
而支持TrustZone技术的ARM核在访问内存的过程中对安全世界状态和正常世界状态进行了不同的处理。
1、ARM核获取内存数据的过程
当ARM核需要从内存中获取数据时,将需要访问的内存的虚拟地址(VA)传递给MMU, MMU会到TLB中查找是否存在该虚拟地址对应的物理地址(PA),若没有对应的转换条目,MMU将会使用虚拟地址和页表进行虚拟地址到物理地址的转换操作,并将获取到的虚拟地址与物理地址的转换条目存放到TLB中以便下次再次访问时直接使用。(页表转换是放在内存中的一个特殊位置)
完成虚拟地址到物理地址的转换后,MMU会将物理地址发送到Cache中进行匹配操作。如果Cache命中,Cache则会直接将命中的物理地址的数据返回给ARM核。
如果在Cache中并未命中,则会将请求发送到AXI总线上,从内存硬件中读取物理地址对应的数据,然后将数据返回给ARM核,并将结果同步到Cache中。
这是整个访问过程:(这个流程未涉及安全与正常世界的区分,下面会讲讲,这里先有个大概的流程认识)
2、获取缓存数据的过程
ARM核支持TrustZone后ÿ