| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> GIC spec之ITS和LPI中断4 -> 正文阅读 |
|
[开发工具]GIC spec之ITS和LPI中断4 |
2.4 中断转换表????????中断转换表ITT指定每个设备可以创建一定数量的event。ITT中的每个表项为ITE。 ????????在GICv3中,ITE仅被物理中断定义。 ????????在GICv4中,ITE被物理中断和虚拟中断定义,并提供如下区分: (1)物理LPI的entry和使用ICT作为路由信息; (2)虚拟LPI的entry和使用vPE表; ????ITT必须赋予起始ITT地址的连续物理地址空间。大小为2^(DTE.ITT range + 1) * GITS_TYPER.ITT_entry_size。 ????????如果内存在开始分配时不全为0时,行为不可预测。 ????????如果多个ITT在内存中重叠,行为不可预测。 ????????ITS访问ITT使用相同的Shareability和Cacheability属性来指定给Device Table。 ????????对于物理中断,每个ITE描述输入EventID和下列项的映射: (1)被发送到目的PE的输出物理INTID(pINTID); (2)ICID区分Collection表中的项,这决定了LPI的目标PE。为获取更多信息,可以查看Collection table。 ????????对于虚拟中断,每个ITE描述了EventID和下列项的映射: (1)被发送到目的PE的输出虚拟INTID(vINTID); (2)虚拟PE标号(vPEID)区分vPE表中的表项来决定当前host Redistributor。为获取更多信息,查看vPE表; (3)当目标vPE当前没有被调度到物理PE上,如果虚拟中断被转换,物理LPI被发送到物理PE; ????????EventID提供了表的索引值。 Table 5-3 显示了可以被保存在ITE的位数。
2.5 collection表????????Collection表CT提供了collection表项的表。仅对于物理LPI,每个CTE描述了下列两者之间的映射: (1)ITT产生ICID; (2)以GITS_TYPER.PTA定义的格式的目标Redistributor的地址; ????????对于每个ITS存在单独的CT,它可以保持在寄存器中或内存中,或同时存在两者中。查看GITS_BASER<n>.Type和GITS_TYPER.HCC获取更多信息。 ????????TableID提供表的索引值。它源自于ICID。 ????????Table 5-4给出位数可能被赋予给每个CT的例子。
2.6 vPE表????????vPE表由vPE表项组成,vPE表项提供了ITS产生vPEID映射到: (1)目标Redistributor,以GITS_TYPER.PTA定义的格式; (2)与目标vPE相关的虚拟LPI Pending表的基地址; ????????GITS_BASER<n>定义的内存区域保持vPE表并指定了表中的每个项大小。 ????????vPE表描述与ITS相关的所有vPE。Table5-5 描述了在vPE表实现位数。 ????????16bit vPEID提供了表的索引值。
2.7 ITS的控制和配置????????ITS通过内存映射接口被控制和配置:
????????每个ITS有一个使能位GITS_CTLR.Enabled。 2.8 ITS命令接口图5-5 描述了ITS如何提供ITS命令队列使用的基地址和大小。 GITS_CBASER,GITS_CREADR,和GITS_CWRITER定义ITS命令队列。 (1)GITS_CBASER使用下列域: - Valid。该域表明了ITS命令队列分配的内存。 - Cacheability。该域表明了ITS命令队列的访问cacheability属性。 - Shareability。该域表明了ITS命令队列的访问shareability属性。 - Physical address。该域表明包含ITS命令队列的内存的物理基地址。 - Size。该域表明了ITS命令队列的4KB物理内存页的数目。 (2)GITS_CREADR指定了ITS读取下一个命令的基地址偏移; (3)GITS_CWRITER指定了软件写下一个命令free entry的基地址偏移。 一个ITS命令队列项的大小为32byte。这意味着在每个4KB页支持128个项。 ITS命令队列使用小端内存模型。 在ITS命令队列:
NOTE: 所有地址为非安全物理地址。 当第一个命令完成时,ITS开始处理下一个命令。读指针GITS_CREADR随着ITS处理命令的前进。如果GITS_CREADR达到GITS_CBASER指定的内存顶端,指针wrap回到GITS_CBASER指定的基地址。GITS_CWRITER由软件控制。 当GITS_CWRITER和GITS_CREADR指定相同的基地址偏移值时,ITS命令队列为空。 当GITS_CWRITER指向GITS_CREADR后的一个32byte时,ITS命令队列为满。 当GITS_CREADR.Stalled=1时,没有后续命令被处理。 INT ITS命令在执行时产生中断,这会在命令的一个特定的时序完成时产生一个中断。 2.9 转换的顺序及输出到ITS命令????????每个命令队列entry自动被执行,因此一个转换请求或在一个命令之前看到ITS的状态或在这个命令之后看到ITS的状态。 ????????在SYNC或VSYNC命令完成后一个初始化的转换请求使用ITS状态被转换,在命令被执行后ITS状态与该状态保持一致。 ????????在缺少SYNC或VSYNC命令时,ITS命令和转换请的顺序不是由架构定义的。 2.10 INTID映射规则的限制????????如果软件有下列行为,GIC的行为不可预测:
????????NOTE:概念上限制为软件不能映射多个EventID-DeviceID到给定的虚拟机上的vLPI。但是,ITS没有意识到哪个vPE属于相同的虚拟机。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/14 15:06:45- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |