假定在一个系统中,一共具有n条VC,而且这几条VC都使用N23算法进行流量控制,那么在使用Static流量控制方式时,该系统一共需要的缓冲大小为×Packet_Size[62]。目前接收缓存的分配常使用两种算法,分别是Sender-Oriented和Receiver-Oriented管理算法。......
2023-10-20
为便于Credit-Based流量控制机制的讨论,假设在网络中存在三类节点,分别是Up-stream节点、Current节点和Downstream节点,这些节点之间通过实际的物理链路互连,在每一个节点内部都使用两个VC,其结构如图9-4所示。
图9-4 Upstream Current与Downstream节点的关系
其中Upstream节点通过物理链路将数据报文发向Current节点,而Current节点通过物理链路将数据报文发向Downstream节点。在虚通路的设计中,每个节点的发送端口和接收端口之间具有分属于不同VC的数据缓冲,这些数据缓冲之间的互连组成了不同的VC。
Current节点首先将来自Upstream节点的报文暂存在数据缓冲中,然后再发送到Down-stream节点。当Upstream节点通过Current节点,向Downstream节点发送数据报文时,流量控制发生在Upstream节点和Current节点、Current节点和Downstream节点之间,而不是Upstream节点到Downstream节点。简而言之,流量控制发生在链路的两端,基于端到端之间,而不是基于节点到节点间。
在Upstream节点、Current节点和Downstream节点中存在两个VC,下文以其中的一个VC为例,说明如何使用Credit-Based机制进行数据传递。值得注意的是,Current节点、Up-stream节点和Downstream节点只是一个相对概念。Current节点也可以从Downstream节点接收数据报文,而向Upstream节点转发这些数据报文,从而组成一个双向通路。为简便起见,本章仅讨论在单向通路下,Credit-Based流量控制机制的原理与实现。
Credit-Based机制基于“Credit”进行数据传递,当Upstream节点需要发送数据报文时,需要具备足够的Credit,才能向Current节点发送数据。这个Credit由Current节点提供,并与Upstream节点保存的Credit同步,为此Current节点需要定时向Upstream发送“传递Credit”的数据报文。
下文为简便起见,假设节点间传送的数据报文,其长度固定,而且每次只能传递一个数据报文。Credit-Based机制需要使用以下参数进行报文传递。
●Buf_Alloc参数。该参数保存在Current节点中接收数据缓冲的总大小。Upstream节点能够发送的数据报文总数不能大于该参数。
●Crd_Bal参数。该参数是Upstream节点可以发送的数据报文数,Current节点需要定时向Upstream节点发送Credit报文。Upstream节点收到该报文后,使用该报文中的“Credit”同步Crd_Bal参数。Upstream节点可以发送的数据报文数不能超过Credit_Bal参数。
●Tx_Cnt参数。该参数为Upstream节点已经发送的数据报文数。
●Fwd_Cnt参数。该参数为Current节点转发到Downstream节点的数据报文数。
Credit-Based流量控制使用的各个参数之间的关系如图9-5所示。
(www.chuimin.cn)
图9-5 使用Credit-Based机制进行数据传递
1.Upstream节点向Current节点发送报文
Upstream节点向Current节点发送报文时,Current节点必须有足够的缓冲,而且Current节点需要预先将其剩余的缓冲数量,即Credit(其值为一个正整数),及时地发送给Up-stream节点。Upstream节点使用Crd_Bal参数保存这个Credit。
Crd_Bal参数的初始值为Buf_Alloc,即Current节点能够接收的最大报文个数,该值在系统初始化时由Current节点发向Upstream节点。因此Upstram节点在流量控制机制初始化完毕后,Crd_Bal参数与Current节点中能够存放的最大报文数相同。
Upstream节点每成功发送一个数据报文后,Crd_Bal值减1,当Crd_Bal参数为0时,Upstream节点不能向Current节点发送数据报文。此时Upstream节点必须等待Current节点发送Credit报文,更新Crd_Bal参数后,才能继续发送数据报文。
2.Current节点向Upstream节点发送Credit
Current节点收到来自Upstream节点的数据报文后,将会根据链路的实际情况,将这些报文转发到Downstream节点。
假设在一段时间之内,Current节点共收到了Tx_Cnt个报文,而转发了Fwd_Cnt个报文,那么此时在Current节点中还能容纳Buf_Aloc-(Tx_Cnt-Cx_Cnt)个报文空间。Current节点将这个值作为Credit,发送到Upstream节点。而Upstream节点将根据这个Credit的值更新Crd_Bal参数。
3.Current节点将报文转发到Downstream节点
Current节点接收到报文之后再将其转发出去涉及一些路由算法。常用的算法有Cut-Through路由和Wormhole路由算法。
当使用Wormhole路由方式时,一个报文将被分解为若干个Flit,包括Header Flit、Data Flit和Tail Flit。当数据报文到达Current节点后,Current节点立即对Header Flit进行分析,首先根据路由算法决定发向哪个Downstream节点[61]。如果在对应的Downstream节点中,链路空闲且有足够的缓冲资源时,Current节点将发送Data Flit直到Tail Flit,即发送整个数据报文;如果对应的Downstram节点没有资源接收这个报文,数据报文将在Current节点中存储。
Cut-Through路由与Wormhole路由类似。采用Cut-Through路由时,Downstream节点必须具有接收整个报文的能力时,才能接收报文;而采用Wormhole路由时,Downstream节点具有接收部分报文的能力时,就可以接收报文。采用Wormhole路由的优点是数据报文传送延时较短,每一个节点所需要的数据缓存相对较小。当网络发生拥塞时,采用Wormhole路由技术可能会使一个报文分别缓冲在Current节点和Downstream节点中,而使用Cut-Though路由技术数据报文最终缓冲在一个节点中。
巨型机一般使用Wormhole技术进行报文传递,而网络系统中多使用Cut-Though路由技术。有关Wormhole和Cut-Though技术的优劣分析超出了本书的范围,本书不会对此进行详细分析。巨型机应用针对的是可预知的网络拓扑结构,而网络系统的拓扑结构是变化的。在一个网络拓扑结构可预知的前提下,采用Wormhole技术可以在避免拥塞的前提下,降低网络报文的传递延时;而对于一个未知的网络拓扑结构,使用Cut-Though技术更为合理。
有关PCI Express体系结构导读的文章
假定在一个系统中,一共具有n条VC,而且这几条VC都使用N23算法进行流量控制,那么在使用Static流量控制方式时,该系统一共需要的缓冲大小为×Packet_Size[62]。目前接收缓存的分配常使用两种算法,分别是Sender-Oriented和Receiver-Oriented管理算法。......
2023-10-20
PCI总线作为处理器系统的局部总线,其主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器。孤立地研究PCI总线并不可取,因为PCI总线仅是处理器系统的一个部分。深入理解PCI总线需要了解一些与处理器体系结构相关的知识。PCI规范并没有对HOST主桥的设计进行约束。PCI桥是PCI总线的一个重要组成部件,该部件的存在使得PCI总线极具扩展性。PCI总线提供的峰值带宽远高于这些总线。......
2023-10-20
图9-3 Rate-based流量控制机制假设Node 1与Node 2之间共存在5个VC,即在链路1的两端设置了5组缓存。采用Rate-Based流量控制机制可以有效解决“可预知带宽”的数据传递。因为Rate-Based流量控制的实时性较弱,当一个VC需要瞬间传递大量报文时,Rate-Bsed机制不能及时地为这条VC提供足够的数据传送率;而当一个VC拥塞时,也不能及时地降低数据传送率。因此使用Rate-Based机制并不能满足网络上突发数据传送的需要,此时需要使用Credit-Based机制对流量进行控制。......
2023-10-20
目前流量控制从理论到实现大多基于多通道技术,本节也仅讨论基于多通道的流量控制的基本原理。目前几乎所有流量控制算法的核心都是根据接收端缓冲区的容量,向发送端提供反馈。流量控制针对端到端的数据传递,目前流行的流量控制方法共有两种,分别为Rate-Based机制和Credit-Based机制。......
2023-10-20
流量控制的概念起源于网络通信。我们假设图9-2中Node 4将报文转发到Node 5的速度低于Node 3发送报文的速度。在这种情况下,Node 4将成为整个传送路径上的瓶颈,无论Node 4中的缓存1和2有多大,总会被填满,从而造成节点拥塞。为了避免这类事件发生,网络中的各个组成部件需要对数据传送进行一定的流量控制,合理地接收和发送报文。而流量控制的作用是合理地管理这两类资源,使这些资源能够被有效利用。......
2023-10-20
图12-1 Capric卡的组成结构Capric卡基于PCIe总线,主要功能是通过DMA读写方式与HOST处理器进行数据交换。Capric卡由LogiCORE、发送部件、接收部件、BAR空间、DMA控制逻辑和FPGA片内SRAM组成,其工作原理较为简单。Capric卡仅使用了BAR0空间,处理器使用存储器映像寻址方式,而不是I/O映像寻址方式访问BAR0空间。......
2023-10-20
PCI Express Extended Capabilities结构存放在PCI配置空间0x100之后的位置,该结构是PCIe设备独有的,PCI设备并不支持该结构。在一个PCIe设备中可能含有多个PCI Express Extended Capabilities结构,并形成一个单向链表,其中第一个Capability结构的基地址为0x100,其结构如图4-19所示。图4-19 PCI Express Extended Capabilities结构一个PCI Express Extended Capabilities结构由以下参数组成。但是在PCIe总线中,这些扩展的Capability结构并没有得到充分利用。本节仅详细介绍PCI Express Extended Capabilities结构组中的MFVC结构。......
2023-10-20
PCIe V2.1总线规范引入原子操作的概念,原子操作仅能在存储器访问中使用。PCIe设备使用一次原子操作可以实现之前需要多次数据操作才能完成的数据交换任务,除此之外PCIe设备使用原子操作还可以避免使用带锁的PCIe总线事务。这一过程不可被其他总线事务中断,PCIe设备保证这一过程为原子操作。目前,PCIe总线共支持3种原子操作,分别为FetchAdd、Swap和CAS原子操作。使用完成报文返回PCI总线地址中的原始数据。......
2023-10-20
相关推荐