Implicit Routing
既然有了前面我们讲的基于三种资源(ID、Memory、IO)的两种路由方式ID路由和地址路由,为什么还要有个隐式路由(Implicit Routing,也叫模糊路由)呢?
一是因为PCI总线有一些边带信号来传送信息和控制,在PCIe中采用消息(Message)机制来实现。PCIe Spec规定消息的路由方式为隐式路由。
二是在系统中,有一些报文是由EP发给RC的或者RC发出的广播报文,这些广播报文可以传递到系统中每一个设备,这时候就不需要按照ID和地址路由来区分设备了。
所谓隐式也就是这个意思,有潜规则的传播 :)。我个人更喜欢把Implicit叫做隐式而不是模糊。
EP收到隐式路由的报文,如果是RC发出的广播报文(通常是RC发出的)或者本地报文(Local – Terminate at Receiver,通常是INTx消息),EP接收此报文。
Switch的处理则分上下行。如果上行端口收到RC的广播报文,则讲此报文发给所有下行端口。如果下行口收到发向RC的消息报文,则将此报文直接转发到上行端口,送给RC;如果收到本地消息报文,则接收此报文,不再向上或向下传播。
哪些消息是需要隐式路由的呢?如下:(注:不需要特意去记忆或理解这些,有个印象就好)
- INTx Interrupt Signaling
中断信号。PCI里面有INTx的信号
- Power Management
电源管理用
- Error Signaling
错误相关的信号
- Locked Transaction Support
支持Lock事务
- Slot Power Limit Support
功率限制
- Vendor-Defined Messages
厂商自定义
- LTR Messages
Latency Tolerance Reporting
- OBFF Messages
Optimized Buffer Flush/Fill