目前流量控制从理论到实现大多基于多通道技术,本节也仅讨论基于多通道的流量控制的基本原理。目前几乎所有流量控制算法的核心都是根据接收端缓冲区的容量,向发送端提供反馈。流量控制针对端到端的数据传递,目前流行的流量控制方法共有两种,分别为Rate-Based机制和Credit-Based机制。......
2023-10-20
流量控制(Flow Control)的概念起源于网络通信。一个复杂的网络系统由各类设备(如交换机、路由器、核心网),与这些设备之间的连接通路组成。从数据传输的角度来看,整个网络中具有两类资源,一类是数据通路,另一类是数据缓冲。
数据通路是网络上最珍贵的资源,直接决定了数据链路可能的最大带宽;而数据缓冲是另外一个重要的资源。当一个网络上的设备从一点传送到另外一点时,需要通过网络上的若干节点才能最终到达目的地。在这些网络节点中含有缓冲区,暂存在这个节点中没有处理完毕的报文。网络设备使用这些数据缓冲,可以搭建数据传送的传送流水线,从而提高数据传送性能。最初在网络设备中只为一条链路提供了一个缓冲区,如图9-1所示。
图9-1 基于单数据通路的数据传递
当网络设备使用单数据通路进行数据传递时,假设在该通路中正在传递两个数据报文,分别是A和B。其中数据报文B需要经过Node1~5才能到达最终的目的地,而数据报文B在经过Node 3时发现由于Node 3正在向Node 4发送一个数据报文A。从而数据报文B到达Node 3后,由于Node 4的接收缓存被数据报文A占用,而无法继续传递。此时虽然在整个数据通路中,Node 4和Node 5之间的通路是空闲的,但是报文B还是无法通过Node 3和4,因为在Node 4中只有一个数据缓冲,而这个数据缓冲正在被报文A使用。
使用这种数据传送规则会因为一个节点的数据缓冲被占用,而影响了后继报文的数据传递。为了解决这个问题,在现代网络节点中设置了多个虚通路VC,不同的数据报文可以使用不同的通路进行传递。从而有效解决了单数据通路带来的问题,基于多通路的数据传递如图9-2所示。
图9-2 基于双数据通路的数据传递
如上图所示,所谓多通路是指在每一个节点内设置两个以上的缓存。上例中设置了两个缓存,报文A经过Node 1~5时使用缓存2进行缓存,然后进行数据传递,而报文B使用缓存1进行缓存。因此虽然报文A因为某种原因不能继续传递,也只是将报文阻塞在缓存2中,而不影响报文B的数据传递。
所谓VC是指缓存到缓存之间的传递通路。如图9-2所示的例子中含有两个VC,分别是VC1和VC2。其中VC1对应节点间缓存1到缓存1的数据传递,而VC2对应缓存2到缓存2的数据传递。VC间的数据传递,如Node 1的缓存1/2到Node 2的缓存1/2,都要使用实际的物理链路“链路1”,这也是将VC称为“虚”通路的主要原因。(www.chuimin.cn)
在一个实际的系统中,虚通路的使用需要遵循一定的规则。如在PCIe总线中,将不同的数据报文根据TC分为8类,并约定这些TC报文可以使用哪些VC进行数据传递。在PCIe总线中使用TC/VC的映射表,决定TC与VC的对应关系。
PCIe总线规定同一类型的TC报文只能与一条VC对应,当然从理论上讲,不同的TC报文可以与不同的VC对应,也可以实现一种自适应的算法根据实际情况实现TC报文和VC的对应关系。只是使用这种方法需要付出额外的硬件代价,效果也不一定明显。
下文以图9-2所示的数据传递为例,进一步对此说明相同类型的报文使用不同VC的情况。假设报文A和B属于相同种类的报文,但是报文A使用VC1,而报文B使用VC2。首先报文A传递到Node 4后被阻塞。而报文B使用的VC和报文A使用的VC不同,报文B最终也会到达Node 4。
由于报文A和报文B属于相同类型的报文,Node 4阻塞报文B的概率非常大,因为Node 4已经阻塞了报文A。阻塞报文A的原因在很大概率上也会对报文B适用。此时两个虚通路都被同一种类型的报文阻塞,其他报文将无法通过。因此在实际应用中,相同类型的数据报文多使用同一个VC进行数据传递,而在PCIe总线中,一个TC只能对应一个VC。
目前多通路技术的应用已经普遍应用到网络传输中,虚通路是一种防止节点拥塞的有效方法。但是在网络传送中,还存在一种不可避免的拥塞现象,即某一条链路或者某个节点是整个系统的瓶颈。
我们假设图9-2中Node 4将报文转发到Node 5的速度低于Node 3发送报文的速度。在这种情况下,Node 4将成为整个传送路径上的瓶颈,无论Node 4中的缓存1和2有多大,总会被填满,从而造成节点拥塞。
当缓存填满后,如果Node 3继续向Node 4发送报文时,Node 4将丢弃这些报文,之后Node 3将会择时重发这个报文,而Node 4仍然会继续丢弃这个报文,这种重复丢弃的行为将极大降低网络带宽的利用率,而且Node 3也会成为网络中新的瓶颈,从而引发连锁反应,造成整个网络的拥塞。为了避免这类事件发生,网络中的各个组成部件需要对数据传送进行一定的流量控制,合理地接收和发送报文。
如上文所述,在网络中有两类资源,一类是数据通路,另一类是数据缓冲。而流量控制的作用是合理地管理这两类资源,使这些资源能够被有效利用。
有关PCI Express体系结构导读的文章
目前流量控制从理论到实现大多基于多通道技术,本节也仅讨论基于多通道的流量控制的基本原理。目前几乎所有流量控制算法的核心都是根据接收端缓冲区的容量,向发送端提供反馈。流量控制针对端到端的数据传递,目前流行的流量控制方法共有两种,分别为Rate-Based机制和Credit-Based机制。......
2023-10-20
[1]本节出现的Switch指传统的Switch,在MR-IOV规范定义的Switch与此并不相同,详见第13.3.2节。[4]这种方式也可以被认为是SoC平台总线从共享总线结构升级到Switch结构。[10]该表存在于PCI Express Extended Capabilities结构中,详见第4.3.3节。[14]从体系结构的角度上看,MCH和ICH仅仅是一个称呼,实际上并不重要。[36]如图4-1所示,发送端和接收端都有相应的发送逻辑和接收逻辑。[39]在正常情况下,接收逻辑RX的DC共模电压为0,ZRX-DC虽然较小也不会影响其正常工作。......
2023-10-20
在一段程序中,存在大量的分支预测指令,因而在某种程度上增加了指令Fetch的难度。但是分支预测单元并不会每次都能正确判断分支指令的执行路径,这为指令Fetch制造了不小的麻烦,在这个背景下许多分支预测策略应运而生。在PowerPC处理器中,条件转移指令“bc”表示Taken;而“bc-”表示Not Taken。BTB的功能相当于存放转移指令的Cache,其状态机转换也与Cache类似。转移指令B执行完毕后,将实际执行结果Rc更新到BHR寄存器中,并同时更新PHT中对应的Entry。......
2023-10-20
如图8-6所示,Detect状态由Detect.Quiet、Detect.Active两个子状态组成。在正常情况下,PCIe链路将从Detect状态迁移到Polling状态。而在Detect状态中,PCIe设备的发送逻辑TX将直接进入到“Electrical Idle”状态,并不会使用Idle序列通知对端设备的接收逻辑RX。当PCIe设备处于Detect.Quiet状态超过12ms之后,或者检测到PCIe链路上的任何一个Lane退出“Electrical Idle”状态时,PCIe设备将进入Detect.Active状态。......
2023-10-20
PCIe总线在进行链路训练时,将使用LTSSM状态机。LTSSM状态机由“Detect”、“Pol-ling”、“Configuration”、“Disabled”、“Hot Reset”、“Loopback”、“L0”、“L0s”、“L1”、“L2”和“Recovery”共11个状态组成。LTSSM状态机的转换逻辑如图8-5所示,而各个状态的含义如下所示。图8-5 LTSSM示意图●Detect状态。当PCIe链路被复位或者数据链路层通过填写某些寄存器后,LTSSM将进入该状态。该状态也是LTSSM的初始状态。该状态是LTSSM状态机的重要状态。......
2023-10-20
而接收逻辑RX处于Electrical Idle状态时,其DC共模输入阻抗必须在PCIe总线规范要求的范围内。如果在“Electrical Idle Exit detector”部件没有正常工作之前,发送逻辑TX就退出Electrical Idle状态,对端的接收逻辑RX将不能检查到这个状态变化,从而导致错误。值得注意的是,这种推断出的Idle状态并不等同于Electrical Idle状态。PCIe总线通过上表判断而得出的Idle状态称为Logical Idle状态。Electrical Idle状态是PCIe链路的相对静止状态,使用的功耗较低。......
2023-10-20
而PCI总线的突发传送仍然存在缺陷。为此PCI-X总线使用基于数据块的突发传送方式,发送端以ADB为单位,将数据发送给接收端,一次突发读写为一个以上的ADB。采用这种方式,接收端可以事先预知是否有足够的接收缓冲,接收来自发送端的数据,从而可以及时断连当前总线周期,以节约PCI-X总线的带宽。因此在PC领域和嵌入式领域很少有基于PCI-X总线的设备,PCI-X设备仅在一些高端服务器上出现。因此本节不对PCI-X总线做进一步描述。......
2023-10-20
MSI Capability结构共有四种组成方式,分别是32和64位的Message结构,32位和64位带中断Masking的结构。MSI Capability寄存器的结构如图10-1所示。图10-1 MSI Capability结构●Capability ID字段记载MSI Capability结构的ID号,其值为0x05。表10-1 MSI Cabalibities结构的Message Control字段[67] 此时PCI设备配置空间Command寄存器的“Interrupt Disable”位为1。当MSI En able位有效时,该字段存放MSI报文使用的数据。该字段需要与Mask Bits字段联合使用。......
2023-10-20
相关推荐