SDXI 简介

SDXI体系结构独立于底层IO互连结构。SDXI规范包括了PCIe相关内容,在该规范文件中经常会用PCIe来举例子。下图描述了一个SDXI功能部件用到的、可寻址访问的数据结构。为了便于实现高效地软件虚拟化,大部分SDXI体系结构状态信息都是系统主存上的数据结构;还有少量状态信息用到MMIO控制寄存器和PCI配置空间寄存器。SDXI采用内存数据结构是为了便于特权软件实现有选择地自陷。

软件必须保证,SDXI功能部件能够对下表内存数据结构的可读/可写操作,也就是说,下面描述的数据结构是由软件在系统主存中进行初始化,SDXI功能部件也可以访问。

1)4K字节长度的CXT_L2表必须按照4K字节对齐,每条表项长度为8字节,SDXI只读。

2)4K字节长度的CXT_L1表必须按照4K字节对齐,每条表项长度为32字节,SDXI只读。

3)RKey表都是按照4K字节对齐,每条表项长度都是16字节,SDXI只读。表长度软件可配置。

4)Error日志按照4K字节对齐,每条日志64字节长度,SDXI写。日志缓冲区长度软件可配置。

上述SDXI功能部件的全局结构,不是每个应用上下文的专属结构。

SDXI用了L2/L1两级表结构来枚举所有的应用上下文,这点类似MMU中的页表。每个应用上下文都有一个16位的“上下文序号”,这点类似CPU设计当中的进程号ASID。与CPU的ASID不同,SDXI并没有独立“上下文序号”寄存器来,而是通过当前应用上下文对应的L1/L2级表项偏移来计算获得,高9位是L2级偏移,低7位是L1级偏移;其中偏移量是按照表项来计算,而不是按照字节来计算。

  1. 1. CXT_L2表
    1. 每个表项64位,最大512项表项;每个有效表项指向一个4KB的L1级表。
  2. 2. CXT_L1表
  3. 每个表项为32字节,一共有128个表项。每个表项主要是指向一个具体应用上下文的CXT_CTL结构、AKey表;当然,表项还包含一些相关的属性设置,例如cxt_pasid。

下面介绍每个应用上下文的专属结构:从软件看,就是进程使用SDXI功能部件时的SDXI状态控制信息;从SDXI功能部件角度来看,就是一个描述符环和相关的状态控制信息对应的内存数据结构。

1)AKey表都是按照4K字节对齐,每条表项长度都是16字节,SDXI只读。表长度软件可配置。

2)64字节长度的CXT_CTL寄存器按照64字节对齐,SDXI只读。

3)描述符命令环必须按照64字节对齐,一个描述符长度为64字节,SDXI可读写。

4)16字节的CXT_STS必须按照16字节对齐,该结构包含了命令环的读索引,SDXI可读写。

5)8字节的写索引必须按照8字节对齐,SDXI只读。

6)32字节的CST_BLK必须按照32字节对齐。

7)原子操作的返回数据,SDXI可读写。

8)命令操作的数据缓冲区。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值