PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

PCI Express 3.0主板——属于未来的话题

  [复制链接]
41#
ice 发表于 2011-9-24 13:04 | 只看该作者
本帖最后由 ice 于 2011-9-24 14:07 编辑

34# part2
(借地方,贴个地址http://teacher.en.rmutt.ac.th/kt ... se%201.0%20spec.pdf

这里的这张图很清楚,不管是upstream还是down stream,都有自己的port,自己的port都是可以配置的。实际上在PLX的pdf里面有说明,最早ASUS主板上用的那个PLX的芯片,3个端口都是4lanes的,并且可配置为1lane,2lanes,4lanes,速率可以配置为1.1速率和2.0速率。(其实在华硕那个P55出来的时候,我就解析过了,如果ocer的论坛还在,不妨一搜)现在的PLX的switch芯片,端口配置更加灵活了。
注意看图片中间的“Switch Fabric”这个是关键。
事实上,这个交换结构隔离了upstream和downstream的端口。
也就是说,upstream的lane数量,运行速率实际上和downstream没什么必然的联系。
依然举PLX芯片连接USB3的例子,并先只考虑PLX一端连1.1 4lane的P55芯片组的pci-e的通道,另一端连接1lane 2.0速率的USB3芯片,并且暂不连上SATA3芯片。
此时,对于H而言,这就是一个在链路上使用了 4lane(1.1速率)的设备,至于这个设备是怎么来的,H不管。
对于USB3芯片而言,它运行在2.0速率 1lane的链路上,至于这个链路是谁提供的,他也不管。
对于PLX switch而言,他的downstream port配置在了1lane 2.0速率,连接着USB3芯片。他的upstream 配置在了 4lanes 1.1速率,连接着P55芯片组。在其内部,有switch Fabric部分,这个部分缓冲接收的数据包,重新打包,按照传递方向上对应端口的速率和lane数,发给switch内部的port部分,传给物理层,通过主板布线,给P55。

如果同时加上SATA3的芯片,在USB3或者SATA3单独运作的时候,应该和上面一样。如果两个设备同时都有传输需求,那么需要时分复用总线,由于整个传输系统卡在1lane 的2.0接口上,假设两个设备都是满载的数据请求,那么两个设备实际上都有一半时间在等待,换句话说,和直接连在1.1接口上没什么区别。不过同时满载不太容易见到,一般而言,加个PLX是switch还是有好处的。


同时做一猜想,因为此时upstream的带宽是downstream的2倍,也就是满载传输的时间是一半(按照上面的说法,upstream实际上增加了一半的空闲周期)。如果switch能交错的从两个downstream获取数据,这样可以使upstream满载。但是这可能需要片内容纳大量的缓存,另外,也可能和pci-e协议的细节不相容。具体怎样,不得而知了。不过如果谁能做实验测得上述配置条件下,USB3和SATA3持续性地传输数据的速率超过pci-e 1.1 1lane的极限,那倒是可以佐证的。(不过由于这个过程中还有其他因素影响,如果是没有达到pci-e 1.1的极限,也不能做出相反的结论,因为有可能是卡在其他地方。)

BTW,pci-e总线是完全双向的,所以这里的upstream和downstream不代表数据流向,应该约定,接近root complex方向为upstream,接近终端device为downstream。
42#
ice 发表于 2011-9-24 13:20 | 只看该作者
34# part3
说说原文中图片下面的一些话

1:“时分复用是异步的...”
异步是一个相当广泛的概念,这句话并没有让我确实明白,不过链路(总线)的时分复用,前面已经说了很多,请参考。

2:“这样也能够解释...1:...2:...”
请根据上面两楼的说法,设备或者HOST连接到switch的lane数量是可以配置的,upstream port和downstream port实际上是被switch Fabric隔离的,他们的lane数量,运行速率没有必然的联系。
例如一个NF200 upstream 连接8X 2.0,down stream 连接16X 2.0。对于显卡而言,连接他的port配置为16X,所以会显示为16X,但是和H通信时,取决于整个链路中最窄的地方,(对H而言,连接他的只是一个8X的设备)因而,还是8X的速度,显卡端徒有16X的端口,但是会插入大概一半的的等待时间。

3:switch端口的速率和lanes是可配置的。
43#
ice 发表于 2011-9-24 14:10 | 只看该作者
本帖最后由 ice 于 2011-9-24 14:26 编辑

回复 37# lk111wlq


   一般认为(参考以太网的分层结构),switch(原文中第二种)是数据链路层(第二层)的设备。他的权限和所能实现的功能,都在数据链路层和以下的物理层。并且一般认为物理层实现是固定的,所以switch主要讨论数据链路层的特性。
举例而言,从北桥直接引出来的pci-e lanes要北桥支持拆分,才可以用switch(第一类)拆分。这里面北桥内部包含有pci-e控制器,可能是switch或者更可能是级别更高的root complex。

从NF200等switch(第二类)引出来的pci-e lanes,要该switch支持拆分,在downstream才可以用switch(第一类)拆分。

如果是一个4lane的端口只使用1lane,那么不用拆分,也不需要switch(第一类),只是后面剩余的lanes只能闲置。
补充一下:最早的可拆分pci-e的主板,用的是一片单独的PCB来拆分pci-e 通道,也有的是用跳线的。这其实和第一类 switch等价。所以说,第一类switch就是一个电子可调的固定开关。之所以后来改用这种switch,除了电子可调比较省事以外,应该也和这种一次性做好的元件电气特性更好有关,因为pci-e的频率越来越高了。一次性焊在主板上的元件,不用担心金手指氧化,灰尘等等。
44#
ice 发表于 2011-9-24 14:17 | 只看该作者
回复 40# lk111wlq


   这个貌似是图中VOQs的作用。根据需要,分配两个设备公平共享总线。你可以再仔细查证一下。
45#
lk111wlq  楼主| 发表于 2011-9-24 16:18 | 只看该作者
回复 41# ice


   多谢指教! 这个需要我花费许多时间来消化了.. 以后遇到疑问还请不吝赐教~ 再次感谢!
46#
flyerwang 发表于 2011-9-24 17:16 | 只看该作者
回帖支持,好文章!
47#
ice 发表于 2011-9-24 18:25 | 只看该作者
回复 45# lk111wlq


   不谢不谢,探讨嘛~
48#
yanleiberg 发表于 2011-10-6 16:54 | 只看该作者
需要多快的内存才能达到pcie3 16x的速度?
49#
donnyng 发表于 2011-10-7 02:56 | 只看该作者
同时,现有显卡均为PCIE Gen3规范,在一年内PCIE Gen3规范的显卡都不太可能出现

20楼的,是不是有错误?

现在是g2规范吧?

评分

参与人数 1活跃度 +20 收起 理由
lk111wlq + 20 认真阅读,多谢指正~

查看全部评分

50#
lk111wlq  楼主| 发表于 2011-10-8 12:41 | 只看该作者
回复 49# donnyng


   已修正~  说明这位童鞋有认真阅读,再次感谢~
51#
bennyenson 发表于 2011-10-13 12:08 | 只看该作者
专业的...mark下
52#
travis 发表于 2011-10-23 14:23 | 只看该作者
回复  ice


   多谢建议~
物理层的电气特性属于硬条件,本人没有相关专业知识,也无法去说明了。对于这个 ...
lk111wlq 发表于 2011-9-23 00:24


简单说一种是受控的单刀双掷开关,通过外部信号切换哪个通道与上行相连,而PLX/NF200那种桥接器是在内部主动管理数据的流向,等于是个hub。
53#
travis 发表于 2011-10-23 14:31 | 只看该作者
回复  ice


   就是说即使switch和物理层都支持pcie lane的拆分,还需要数据链路层做出相应的反应(数据 ...
lk111wlq 发表于 2011-9-24 12:27


对于第一种单刀双掷mux而言,主板提供给它一个SEL信号(可能是利用了GPIO),就唯一地决定了它的出口连接到哪组PCI-e,也就是物理层的连接方式。

评分

参与人数 1活跃度 +50 收起 理由
lk111wlq + 50 我很赞同

查看全部评分

54#
汽车爱好3 发表于 2011-10-24 09:26 | 只看该作者
呵呵,加油!
55#
wuchanjieji1988 发表于 2011-10-24 15:13 | 只看该作者
意义应该还不大,2k以内的显卡现在甚至连pcie2.0 8x的带宽已经能满足需求,这个等2015年只有才可能有实际意义吧
56#
ice 发表于 2011-10-25 23:14 | 只看该作者
回复 52# travis


   基本上是这样,可是以太网的hub还可以通过碰撞协议和时隙等,让各路都可以用,尽管效率低下,而这个就关死了。
57#
leedemon 发表于 2011-10-26 14:26 | 只看该作者
34#
原文:“第二种switch的话,我的理解是:将上端的数据队列接收,拆包后判断需要发送到哪个显卡处理(因 ...
ice 发表于 2011-9-24 12:36




你们讨论得确实认真啊!如果是switch的话,PCIe传送数据跟以太网的结构有点不一样,不是把上层的数据加到DL的包头来处理的。具体可以看PCIe的spec  chapter3 data link layer Specification,在Data link层传送2种包,DLLP(数据链路层数据包)和TLP(事务层数据包)。DLLP是端到端的,就是从一个PCIe接口到另外一个PCIe接口,负责流量控制,出错重传,电源管理的工作。但是TLP是可以从PCIe device到另外一个PCIe device,比如从某个复杂的PCIe bus端经过好几级的switch到达RC。像你说的NF200允许2张显卡内部通讯,就是利用这个机制,从一个显卡(作为PCIe的Endpoint)到另外一张显卡(另外一个Endpoint)。怎么控制包是传送到某个EP还是RC,得用到TLP的路由机制,这得看TLP具体的类型然后可以分为用地址来路由和用Device ID来做路由,规则比较负责...
时分的概念是在Physical Layer物理层的,这个时分是把一个包拆开分到多个lane传送,链路层应该没有。因为从链路的角度看,就是一条PCIE连线,PCIe的数据传送都是基于包的,必须发完一个包再发另一个包,所以这里的流量控制,qos控制,都是基于包来调度的。
接switch应该不受upstream port所接的downstream port的限制,只要switch能支持PCIe设备的枚举过程,就能让RC发现这个设备并给它分配地址和id,这样就可以正常工作的
58#
ice 发表于 2011-10-26 16:19 | 只看该作者
你们讨论得确实认真啊!如果是switch的话,PCIe传送数据跟以太网的结构有点不一样,不是把上层的数据加到DL的包头来处理的。具体可以看PCIe的spec  chapter3 data link layer Specification,在Data link层传送2种包,DLLP(数据链路层数据包)和TLP(事务层数据包)。DLLP是端到端的,就是从一个PCIe接口到另外一个PCIe接口,负责流量控制,出错重传,电源管理的工作。但是TLP是可以从PCIe device到另外一个PCIe device,比如从某个复杂的PCIe bus端经过好几级的switch到达RC。像你说的NF200允许2张显卡内部通讯,就是利用这个机制,从一个显卡(作为PCIe的Endpoint)到另外一张显卡(另外一个Endpoint)。怎么控制包是传送到某个EP还是RC,得用到TLP的路由机制,这得看TLP具体的类型然后可以分为用地址来路由和用Device ID来做路由,规则比较负责...
时分的概念是在Physical Layer物理层的,这个时分是把一个包拆开分到多个lane传送,链路层应该没有。因为从链路的角度看,就是一条PCIE连线,PCIe的数据传送都是基于包的,必须发完一个包再发另一个包,所以这里的流量控制,qos控制,都是基于包来调度的。
接switch应该不受upstream port所接的downstream port的限制,只要switch能支持PCIe设备的枚举过程,就能让RC发现这个设备并给它分配地址和id,这样就可以正常工作的
leedemon 发表于 2011-10-26 14:26


感谢仁兄如此给力的讨论!
我是2005年看过1.0的白皮书,6年过去了,也再没有看过,只能凭印象说说,供大家参考,讨论。
1:关于DLLP和TLP我完全同意您的看法,此外,可以提供一个消息,就是在intel的芯片组上,NV的显卡不能通过芯片组实现点对点的互相传递信息,但是如果是AMD的芯片组,或者NF200或者PLX的pci-e switch,那么是可以的,这是一个从事CUDA开发的朋友告诉我的,这应该和各家的路由机制有关。
2:时分复用的概念,这一块,不完全同意。首先我认为时分复用的概念并非只和物理层有关;其次,对于pci-e的实现,全部基于包的调度,这一点没有异议,但是根据我的印象,这个包是不能再拆分的,也就是说发送到物理层上某个lane传输的时候,一个数据包是最小单位。假定当前要传输一个数据包,那么即使有16lanes,也是只能空闲15个,而利用其中的一个。数据包发送以后,在接收端,有一个缓冲,在这里面根据一些ID类的信息,进行重排,检验,重发等流控和校验的机制。如若这样的话,那么一个switch或者RC,原本支持16X的lanes,如果要支持双8X,那么其内部必须有同时控制两路分别进行缓冲,重排,流控等的能力,如果要分拆成4路4X,那么必须具备同时管理4路的能力。因而我认为,并非随便的一个switch或者RC都能具备这种能力,也就是说,lanes不能任意拆分。

欢迎仁兄不吝赐教,指正!
59#
leedemon 发表于 2011-10-26 19:05 | 只看该作者
回复 58# ice


1的问题我是这样猜测的:现在看Z68或者P67的结构图,RC都是整合到CPU里面去的,所以在intel的平台上面,显卡都是直接连接到CPU的RC,传统意义上面的北桥都被整合进CPU了。Intel CPU里面的RC不允许连接到下行端口的EP互相通信,所以没法互相传递消息。 AMD芯片组,NF200和PLX的switch应该是支持了这个功能,所以能互相通信。


2的话,呵呵,估计你时间久了东西有些忘记了吧。链路层里面,包是最小结构,但是到物理层最小结构是byte(应该说是经过8/10b的转码,3.0就是128/130b的转码),我贴一张截图给你就明白了。然后一个switch有几个port(包括上行和下行的port),就必须支持几个port的校验,重发机制,你说的没错。



可以看到图上,一个packet的经过转码后的数据流,是按照按照顺序分别拆分到每条lane上面传送的,有多少条lane就会拆成多少份,这样才能有效利用到多条lane的带宽。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1活跃度 +50 收起 理由
lk111wlq + 50 我很赞同

查看全部评分

60#
lk111wlq  楼主| 发表于 2011-10-26 19:32 | 只看该作者
回复 59# leedemon


   嗯,这个图是8/10b编码的,参考128/130b编码的也是这样拆分至多lane中传输。一开始我还看不明白数据包是怎么拆分后进行传输的呢,现在明白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部