在 ARM SMMU(System Memory Management Unit)中,Stream Table 是一个非常关键的数据结构,它用于管理和映射设备的内存访问请求。它的作用主要体现在以下几个方面:
1. 设备请求的流分类
- 在系统中,不同的外设可能通过 SMMU 发送内存访问请求。SMMU 将这些请求按照来源(如来自哪个外设或请求的上下文)进行分类,这种分类叫做流(Stream)。每个流都有一个唯一的Stream ID,用于标识具体的外设请求来源。
- Stream Table 就是根据这些 Stream ID 来管理和记录不同流的属性和映射信息。每个流对应 Stream Table 中的一项记录。
2. 地址空间转换
- Stream Table 中的每一项记录指定了一个设备的 Stream ID 应该使用哪个上下文描述符(Context Descriptor)。上下文描述符中包含有地址转换信息,比如虚拟地址到物理地址的映射,访问权限等。
- 当一个外设发出内存访问请求时,SMMU 会根据 Stream ID 从 Stream Table 中查找对应的上下文描述符,从而决定如何将该请求的虚拟地址转换为物理地址。
3. 访问权限控制
- Stream Table 中的记录不仅用于地址转换,还包含访问控制信息。这些信息可以指定某些设备只能访问特定的内存区域,或者完全禁止访问某些内存区域,从而提高系统的安全性。
- 通过 Stream Table 的配置,可以实现对每个外设内存访问的细粒度控制,确保系统的安全和稳定性。
总结
在 ARM SMMU 中,Stream Table 的主要作用是管理和映射不同外设发出的内存访问请求。它通过记录不同流的上下文描述符和访问权限,帮助 SMMU 将虚拟地址转换为物理地址,并控制访问权限。这是实现设备内存访问虚拟化和安全性的核心机制之一。
标签:SMMU,Stream,外设,访问,内存,Table,ARM,SteamTable From: https://www.cnblogs.com/linhaostudy/p/18350841