PCIe ATS
ATS简介
ATS包括地址转换和地址作废两个部分;
ATS需要满足以下要求:
- 组件必须兼容PCIe-1.1组件;
- ATS是通过Capability和相关配置结构使能;为了使能ATS,软件需要检测该Capability和让该Function发送ATS TLP;
- ATS TLP是通过地址或Requester ID路由;
- ATS TLP需要满足协议规定的顺序规则;
- ATS TLP通过Switch不能被改变;
- Function允许转换地址和非转换地址转换;
- ATS transaction不能依赖地址来发送额外的信息;
地址转换
Function产生ATS转换请求,经PCIe拓扑路由到达RC,RC将该请求推给TA;
TA在收到地址转换请求后,查找其本地ATPT,并给Function反馈查找结果(成功或失败)。
TA反馈查找结果包括以下步骤:
- 确认该Function是否被配置为可以发送ATS转换请求;
- 确实该Function是否能访问ATS转换请求指示的存储以及是否有相关访问权限;
- 确认转换能够被提供给该Function;
- TA发送ATS转换成功或失败状态给RC;RC返回ATS转换Completion给Function;
Function接收到ATS转换Completion后,会更新ATC来反映该转换或者指示该转换不存在;此后,该Function会根据Completion结果产生转换地址或不转换地址的请求。
转换申请TLP
Attribute域
RO可以被设置,且会影响相关转换完成TLP的返回顺序,其他域保留;
Length域
- 指示这个申请可以返回多少个转换;
- 每个转换8bytes长度,表示一个或者多个STU;
- Length最大不能超过RCB;
- Length必须指示偶数数目个DWORD;
- 若Length大于RCB或其最低bit不为0,TA会将其当作异型包;
Untranslated Adderess域
- 转换申请包含32bit或64bit非转换地址;
- 该域表示要被转换的地址;
- TA会根据转换申请内地址来判断转换申请的有效性;
- 允许TA返回的转换小于申请个数,但是不能大于申请个数;
No Write(NW) Flag
- 1表示Function对于这个转换,只会发送读操作;
转换完成TLP
完成状态如下表所示:
000b |
Success |
表示成功;只会出现在CPLD内; |