DTI-ATS入门(1):DTI综述

本文来自自学过程中所记的笔记,可能有不少错漏与胡言乱语,仅供参考,建议主要以ARM官方文件进行参考。原参考文档官网可下载,为了方便各位,我也上传了,需要的自取;
链接:https://pan.baidu.com/s/1voHyFmkpGqABcKH8OSF_Ng
提取码:izix

DTI协议:

DTI接口被ARM SMMU V3架构使用,由以下组件组成:

  1. TCU(Translation Control Unit):翻译控制模块,用于执行转换表遍历,实现MMU V3功能;
  2. 至少一个TBU(Translation Buffer Unit):TBU拦截需要翻译的传输,并对其进行翻译;其主要功能为对TCU的访问并申请翻译,并对翻译的结果进行储存;若有必要,TCU可以要求TBU作废已存储的内容;
  3. 一个支持PCIe ATS(Address Translation Services)的接口:在PCIe ATS功能可用时,该组件可直接与TCU以检索ATS翻译,并使用TBU: 翻译ATS尚未翻译的传输、对ATS已完成一阶翻译的内容进行二阶翻译(?)、对ATS流量进行检查,以确保只有受信任的PCIe端口可以发送ATS事务;
  4. 一个DTI互联,用于管理TBU与TCU之间的通信,并实现PCIe接口的ATS\TCU功能;

这个标准其实分两个协议:

DTI-TBU:用于TBU与TCU之间的通信;

DTI-ATS:用于PCIe接口与TCU之间的通信;

这两个协议都有v1版本与v2版本,v2版本对v1版本的功能有一些增加与修改;

协议接口:DTI协议是一种点对点协议,每条数据通路都包含一条TBU与TCU,或PCIe ATS与TCU之间的链路;

使用SMMU V3架构时,必须提供正确的StreamID与SubstreamID;当使用PCIe接口时,需要提供额外的信息;

下面为一个较有参考价值的SMMU架构:

DTI-ATS入门(1):DTI综述_第1张图片

However,大多数系统都没有单独的SMMU单元。DTI传输的距离可以拉得非常长,甚至可以横跨SoC。TBU一般设置在需要翻译的组件附近;

同时,设备直接包含自己的TBU功能也是被允许的,这样的设计通常见于:

  1. 一个设备有较高级的预存取或转换需求,其超出了通用TBU的能力;
  2. 一个需要与内存高度互联,能实现极低延迟传输的设备,这种设备的TBU通常需要设计得更快,并与整个系统结合得更紧密;

field引用: 有些数值取决于之前的一些消息。因为有些信息对有相同的Field名字,故有必要将需要被Reference的消息特殊化。相关的消息被引用为MSG.FIELD,其他消息被引用为FIELD;

术语缩写:

见下图:
DTI-ATS入门(1):DTI综述_第2张图片
DTI-ATS入门(1):DTI综述_第3张图片

你可能感兴趣的:(硬件架构)