PCI-E

转载 2012年03月30日 20:50:49

PCI Express是新一代的总线接口。早在2001年的春季,英特尔公司就提出了要用新一代的技术取代PCI总线和多种芯片的内部连接,并称之为第三代I/O总线技术。随后在2001年底,包括Intel、AMD、DELL、IBM在内的20多家业界主导公司开始起草新技术的规范,并在2002年完成,对其正式命名为PCI Express。它采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。

编辑本段基本概念

  PCI Express的接口根据总线位宽不同而有所差异,包括X1、X4、X8以及X16(X2模式将用于内部接口而非插槽模式)。较短的PCI Express卡可以插入较长的PCI Express插槽中使用。PCI Express接口能够支持热拔插,这也是个不小的飞跃。PCI Express卡支持的三种电压分别为+3.3V、3.3Vaux以及+12V。用于取代AGP接口的PCI Express接口位宽为X16,将能够提供5GB/s的带宽,即便有编码上的损耗但仍能够提供4GB/s左右的实际带宽,远远超过AGP 8X的2.1GB/s的带宽。
  PCI Express规格从1条通道连接到32条通道连接,有非常强的伸缩性,以满足不同系统设备对数据传输带宽不同的需求。例如,PCI Express X1规格支持双向数据传输,每向数据传输带宽250MB/s,PCI Express X1已经可以满足主流声效芯片、网卡芯片和存储设备对数据传输带宽的需求,但是远远无法满足图形芯片对数据传输带宽的需求。 因此,必须采用PCI Express X16,即16条点对点数据传输通道连接来取代传统的AGP总线。PCI Express X16也支持双向数据传输,每向数据传输带宽高达4GB/s,双向数据传输带宽有8GB/s之多,相比之下,目前广泛采用的AGP 8X数据传输只提供2.1GB/s的数据传输带宽。
  尽管PCI Express技术规格允许实现X1(250MB/秒),X2,X4,X8,X12,X16和X32通道规格,但是依目前形式来看,PCI Express X1和PCI Express X16将成为PCI Express主流规格,同时芯片组厂商将在南桥芯片当中添加对PCI Express X1的支持,在北桥芯片当中添加对PCI Express X16的支持。除去提供极高数据传输带宽之外,PCI Express因为采用串行数据包方式传递数据,所以PCI Express接口每个针脚可以获得比传统I/O标准更多的带宽,这样就可以降低PCI Express设备生产成本和体积。另外,PCI Express也支持高阶电源管理,支持热插拔,支持数据同步传输,为优先传输数据进行带宽优化。
  在兼容性方面,PCI Express在软件层面上兼容目前的PCI技术和设备,支持PCI设备和内存模组的初始化,也就是说目前的驱动程序、操作系统无需推倒重来,就可以支持PCI Express设备。PCI Express是新一代能够提供大量带宽和丰富功能以实现令人激动的新式图形应用的全新架构。PCI Express可以为带宽渴求型应用分配相应的带宽,大幅提高中央处理器(CPU)和图形处理器(GPU)之间的带宽。对最终用户而言,他们可以感受影院级图象效果,并获得无缝多媒体体验。
  PCI Express采用串行方式传输Data。它和原有的ISA、PCI和AGP总线不同。这种传输方式,不必因为某个硬件的频率而影响到整个系统性能的发挥。当然了,整个系统依然是一个整体,但是我们可以方便的提高某一频率低的硬件的频率,以便系统在没有瓶颈的环境下使用。以串行方式提升频率增进效能,关键的限制在于采用什么样的物理传输介质。目前人们普遍采用铜线路,而理论上铜这个材质可以提供的传输极限是10 Gbps。这也就是为什么PCI Express的极限传输速度的答案。
  因为PCI Express工作模式是一种称之为“电压差式传输”的方式。两条铜线,通过相互间的电压差来表示逻辑符号0和1。以这种方式进行资料传输,可以支持极高的运行频率。所以在速度达到10Gbps后,只需换用光纤(Fibre Channel)就可以使之效能倍增。
  PCI Express是下一阶段的主要传输总线带宽技术。然而,GPU对总线带宽的需求是子系统中最高的,显而易见的是,视频在PCI Express应占有一定的分量。显然,PCI Express的提出,并非是总线形式的一个结束。恰恰相反,其技术的成熟仍旧需要这个时间。当然了,趁这个时间,那些芯片、主板、视频等厂家是否能出来支持是PCI Express发展的关键。不过,至今依然被看好的AGP8X的性能与PCI Express在性能上的差距虽然不是太明显,但是随着PCI Express的完善,其差距将是不言而喻的。
  PCI-Express是最新的总线和接口标准,它原来的名称为“3GIO”,是由英特尔提出的,很明显英特尔的意思是它代表着下一代I/O接口标准。交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express”。这个新标准将全面取代现行的PCI和AGP,最终实现总线标准的统一。它的主要优势就是数据传输速率高,目前最高可达到10GB/s以上,而且还有相当大的发展潜力。PCI Express也有多种规格,从PCI Express 1X到PCI Express 16X,能满足现在和将来一定时间内出现的低速设备和高速设备的需求。能支持PCI Express的主要是英特尔的i915和i925系列芯片组。当然要实现全面取代PCI和AGP也需要一个相当长的过程,就象当初PCI取代ISA一样,都会有个过渡的过程。

编辑本段PCI Express总线的起源和现状

  2001年春季的IDF上Intel正式公布PCI Express,是取代PCI总线的第三代I/O技术,也称为3GIO。该总线的规范由Intel支持的AWG(Arapahoe Working Group)负责制定。2002 年4月17日,AWG正式宣布3GIO 1.0规范草稿制定完毕,并移交PCI-SIG进行审核。开始的时候大家都以为它会被命名为Serial PCI(受到串行ATA的影响),但最后却被正式命名为PCI Express。2006年正式推出Spec2.0(2.0规范)。
  PCI Express总线技术的演进过程,实际上是计算系统I/O接口速率演进的过程。PCI总线是一种33MHz@32bit或者66MHz@64bit的并行总线,总线带宽为133MB/s到最大533MB/s,连接在PCI总线上的所有设备共享133MB/s~533MB/s带宽。这种总线用来应付声卡、10/100M网卡以及USB 1.1等接口基本不成问题。随着计算机和通信技术的进一步发展,新一代的I/O接口大量涌现,比如千兆(GE)、万兆(10GE)的以太网技术、4G/8G的FC技术,使得PCI总线的带宽已经无力应付计算系统内部大量高带宽并行读写的要求,PCI总线也成为系统性能提升的瓶颈,于是就出现了PCI Express总线。PCI Express总线技术在当今新一代的存储系统已经普遍的应用。PCI Express总线能够提供极高的带宽,来满足系统的需求。
  目前,PCI-E 3.0规范也已经确定,其编码数据速率,比同等情况下的PCI-E 2.0规范提高了一倍,X32端口的双向速率高达32Gbps。

编辑本段与其他传输规格比较

  PCI Express x16 插槽
  PCI Express x1 插槽
  PCIe的规范主要是为了提升电脑内部所有总线的速度,因此频宽有多种不同规格标准,其中PCIe x16是专为显卡所设计的部分。AGP的资料传输效率最高为2.1GB/s,不过对上PCIe x16的8GB/s,很明显的就分出胜负,但8GB/s只有指资料传输的理想值,并不是使用PCIe接口的显示卡,就能够有突飞猛进的效能表现,实际的测试数据上并不会有这么大的差异存在。
  
传输通道数 脚Pin总数 主接口区Pin数 总 长 度 主接口区 长度
x1 36 14 25 mm 7.65 mm
x4 64 42 39 mm 21.65 mm
x8 98 76 56 mm 38.65 mm
x16 164 142 89 mm 71.65 mm
规格 总线宽度 工作时脉 传输速率
PCI 2.3 32 位元 33/66 MHz 133/266 MiB/s
PCI-X 1.0 64 位元 66/100/133 MHz 533/800/1066 MiB/s
PCI-X 2.0(DDR) 64 位元 133 MHz 2.1 GiB/s
PCI-X 2.0(QDR) 64 位元 133 MHz 4.2 GiB/s
AGP 2X 32 位元 66 MHz 532 MiB/s
AGP 4X 32 位元 66 MHz 1.0 GiB/s
AGP 8X 32 位元 66 MHz 2.1 GiB/s
PCI-E 1X 8 位元 2.5 GHz 512 MiB/s(双工)
PCI-E 2X 8 位元 2.5 GHz 1.0 GiB/s(双工)
PCI-E 4X 8 位元 2.5 GHz 2.0 GiB/s(双工)
PCI-E 8X 8 位元 2.5 GHz 4.0 GiB/s(双工)
PCI-E 16X 8 位元 2.5 GHz 8.0 GiB/s(双工)
 甚至对于某些 PCI-E 1X插槽,我们完全可以将其锯开(这样有可能会失去质保),比如可以用来插上NVDIA的显卡做为物理加速卡与ATI显卡一同工作。

编辑本段解决PCI Express协议一致性问题

  在开发第一块基于PCI Express的SoC过程中,ClearSpeed公司为了在有限的时间和预算条件下确保PCI Express协议一致性而面临重重困难。PCI Express是一种复杂的协议,具有特别大的覆盖范围。从管理的角度看,保证协议一致性没有其它更好的方法,只有采用标准驱动的验证过程。遗憾的是,即使做了上千次覆盖相关场景的测试,仍留有相当大的覆盖漏洞,从而使得这个方法没有可预测性,成本也很高。而另外一种普通的随机测试方法也没有足够的可预测性。
  ClearSpeed公司开始意识到,理想的方法可以产生显著的好处:它能最小化技术开发工作量,同时最大化测试应用控制。ClearSpeed公司率先采用Cadence公司提供的商用化PCIe验证IP。这种验证IP被称为UVC,包含了一致性管理系统(CMS),该系统将覆盖空间划分和映射到了PCIe规范。CMS还提供受限随机测试(称为测试序列)形式的一致性测试套件,用于自动取得针对每个PCIe规范部分的高功能性覆盖。
  ClearSpeed公司还在UVC基础上创建了自己的受限随机测试套件。相关覆盖在每次测试组运行之后都会进行分析,从而能清楚地理解覆盖漏洞出现在什么地方,并指导新的测试应在什么地方进行以到达未被覆盖的场景。这种方法还向ClearSpeed提供了无价的项目管理工具,因为它能帮助理解和报告验证状态。ClearSpeed公司目前能够在每个主要的规范领域正常地跟踪覆盖、缺陷统计和测试故障。

工程背景

  ClearSpeed公司的产品范围包括芯片、加速器卡、机架模块、软件和支持。ClearSpeed公司的芯片、加速器卡和机架模块都可以与工业标准的x86系统一起使用。ClearSpeed公司的芯片采用C语言进行编程,并且公司向用户提供可与所有标准软件开发工具协同工作的完整IDE.
  与以前的CXS600芯片相比,主要变化如下:
  1. 一个芯片上有两个处理器内核(“MTAP”)
  2. 芯片上有一个标准的PCIe接口(相对私有PCIx接口而言)
  3. MTAP有多项的改进

总体验证需求和策略

  图1给出了ClearSpeed产品的架构。为了确保这个复杂产品的质量,需要对以下性能进行验证:
  1. 驱动程序代码与芯片的紧密集成
  2. 众多软件库和应用程序的集成
  3. 与各种主机(操作系统和芯片组)环境的兼容性
  4. 高性能和低功率
  从芯片本身看,主要验证挑战是最新引入的PCIe接口。为了应对这些验证挑战,ClearSpeed公司采用了一种适合待测复杂设计的先进验证策略。整个验证策略中有一些要点是可以明确的:
  1. 这种验证策略是以仿真为基础,并采用了覆盖驱动的伪随机方法。
  2. 使用了分层仿真策略,从模块级开始,并逐渐向外扩展。
  3. 与软件的协同仿真非常重要,它有助于展示产品的正确性,并在芯片回厂时为硅片取得成功取得了良好开端。
  4. 软件协同仿真也是分层执行的,从驱动程序开始,一直扩展到应用程序。
  5. 模块和层次体系之间的验证再利用。
  6. 使用验证IP。这样做有利于充分利用该领域专家的现有知识,并有利于加快测试平台的开发速度。
  总的验证指导原则是在芯片开发初期从商业和技术角度获得签字确认标准。这些确认标准是客观性的,可以使用合适的准则进行测量。这样做具有很多优点,包括:
  1. 能够使所有感兴趣方预先同意用于验证的对象。
  2. 能够在项目执行中跟踪向验证签字确认方向发展的进程。
  3. 能够建立流片时的信心。
  为了与上述原则保持一致,预先对CSX700验证确认标准进行了定义。所选的关键指标有:
  1. 功能覆盖目标:
  (1) 优先级1覆盖目标达到100%
  (2) 所有其它覆盖目标至少达到95%,并检查所有未实现的覆盖目标。
  2. 编写和支持的所有系统级测试。
  3. 在所有可用PCIe服务器中工作的原型PCIe。
  4. 检查缺陷发现率以确保(与功能覆盖一起)我们正在接近所有最重要缺陷已经被发现的点。
  5. 检查任何突出并已知未修复的问题,并评估它们的影响。
  下面将在上文描述的总体验证策略框架下讨论PCIe验证策略。

模块级验证

  PCIe模块级测试平台。ClearSpeed公司已经开发过图中所示的AVCI、PVCI和私有协议,因此PCIe接口提出了主要的验证挑战。由于我们使用的IP来自不同的管线PHY和端点内核供应商,因此这种挑战越发艰巨。
  测试平台采用了许多UVC。除了PCIe UVC外,其它UVC都是ClearSpeed公司自己开发的。测试平台的其它部分使用公司自己的UVC有利于建立同质的eRM一致性系统(随后的uRM和现在的OVM)。
  选用第三方VIP的原因是因为:PCIe协议的复杂性;验证任务的工作量以及缺少内部资源;VIP的成熟度;独立的VIP可以由与内部开发小组不相干的外部PCIe专家组开发。

系统级测试

  系统级测试平台包括了芯片和软件驱动堆栈。实际的软件驱动程序基本原样投入使用,除了在堆栈底部做了一些修改,即将调用做进了仿真环境中,并由软件驱动PCIe UVC。更多细节请参考图4。在本例中,驱动程序完成与硬件对话要做的所有事情,并且每个事务都要传送给仿真器。这样运行起来虽然比较慢,但确实能让我们测试DMA引擎等。
  驱动程序可以连接到PCIe层上面的仿真器。这样无需花费时间在完整仿真每个PCI事务上面就可以实现对更高层单元的仿真。这对仿真在处理器上运行的程序来说是非常有用的。
  虽然通过使用UVC可以在测试规范允许的地方(例如在一些要写入的数据中,在定义范围内的地址中)使用受限随机激励,但在系统级主要应用定向测试方法。在系统级存在许多现成的定向测试,主要目标是用它们扩展测试这个芯片的变化(如前所列出的)。许多vPlanning会话被保持以获得测试规范,然后我们就能跟踪这些测试的实现。一旦驱动程序堆栈经验证能与RTL一起工作,就可以运行较高层的软件。
  运行这些应用程序能给功能验证和性能验证带来高度的信心。
  在CSX700的开发过程中,ClearSpeed公司生产了一种基于现有硅片(CSX600)但用FPGA提供PCIe接口的产品,这样允许我们模拟PCIe接口并执行兼容性测试。也就是说,我们能将被模拟的PCIe接口连接到运行各种OS的众多服务器上,从而在流片前确定兼容性问题。它还能让我们更彻底地测试带PCIe的软件驱动程序堆栈接口。
  该方法可以识别主要位于PCIe堆栈物理层中的缺陷(FPGA中的PHY不同于我们芯片中的PHY),也让我们注意到我们连接的服务器中PCIe实现的变化数量,并促使我们提升取得很高覆盖的重要性:我们对覆盖划分优先等级,并为最高优先级对象设定100%的目标。然而,该方法不能识别通过仿真&覆盖也不能发现的PHY外的任何缺陷。这使我们相信,PCIe仿真中的高覆盖将有助于取得很高的首次流片成功率。
  原型的其它优势还表现在软件开发方面。它能帮助PCIe软件驱动程序远早于CSX700硅片开发出来,加快基于CSX700的产品的上市时间。

可配置的验证环境

  用于PCI Express的Incisive UVC能让用户专注于设计的任何部分或整个设计,并针对验证过程中每一阶段的特殊需要优化验证环境。Incisive UVC一般用于在模块、芯片和系统级对PCI Express器件进行功能验证。它也可以通过配置有选择地激活或关闭各个功能模块以及功能覆盖和检测机制来优化特殊任务的验证。这样可以提供到验证收敛的最可预测路径,并最大化在仿真器和工作站方面做出的投资回报。

自动激励产生

  与使用上千次定向测试的其它解决方案不同,用于PCI Express的UVC采用自动激励发生器来减少用户需要做的工作量。利用包含所供序列库在内的自动化情景产生功能,用户可以覆盖主要协议功能以及难以到达的情景和边界案例。通过增加少量测试,剩余的边界案例就能被一一验证。这种方法有助于用户更快地发现更多缺陷,并让设计师有更多的时间进行DUT的私有功能测试。CMS可以实现整个过程的自动化。

使用CMS实现覆盖驱动的验证

  CMS向用户提供了可执行的验证计划(vPlan)。vPlan与Enterprise Manager以及内置功能覆盖模型一起可以提供清晰地报告哪些被覆盖、还有哪些没被覆盖所需的标准。这给用户提供了验证过程的路线图、收敛标准以及可预测的验证过程,并向项目或管理方提供明晰的状态报告。这种方法被称为覆盖驱动的验证,可以帮助验证人员方便地识别覆盖漏洞,并将资源集中用于DUT的有问题部分。
  Cadence的再利用方法可以快速建立功能验证环境,确保在从模块级验证向芯片级、系统级验证转移以及派生设计时能立即再利用基于UVC的环境。这种方法通过消除重复工作而节省了时间与资源。

覆盖点的优先级划分

  通过使用能用来屏蔽掉与DUT无关的覆盖区/条目的“透视图(perspective)”,ClearSpeed公司能够只考虑与实现有关的覆盖点。ClearSpeed使用以下这个透视图:
  “端点, AER = On, VC 1-7 = Off, 完成器退出 = Off, 配置请求重试状态 = Off, 抑制 = Off"
  CMS允许由主要的PCIe模块TPL、TXN、DLL、PHY、PMG、SYS和CONFIG报告覆盖,这有助于ClearSpeed公司根据技术风险划分验证工作的优先级。
  我们认为物理层(PHY)存在较高的风险,因为物理层有两个不同的IP供应商,而且FPGA原型测试中没有覆盖PHY(因为FPGA使用不同的PHY);Power mgt是下一个最高优先级对象,因为在FPGA原型中没有覆盖到它(由于技术限制的原因);数据链路层是下一优先等级,因为它靠近PHY。
  我们还要求更细颗粒的优先级划分:模块内的优先级划分。虽然一般来说可以使用透视图进行优先级划分,但这种方法不能满足所有需要和优先级划分的使用模型。它缺少更细的颗粒和一些对CMS专业用户(如ClearSpeed和IP开发人员)来说更重要的再利用因素。

一致性测试套件

  CMS提供的一致性测试可以使你一开始就有一个很好的基本覆盖,并因此而快速启动验证工作。ClearSpeed公司是比较早介入的,在整个项目中也在不断自我修正(附加的覆盖项目和一致性测试),因此一致性测试取得的覆盖在项目过程中会有变化。据Cadence公司目前估计,用户通过使用现成的CMS测试套件能够达到约70%的覆盖。
  CMS测试也能经过配置进入PCIe协议的边界案例。然后,我们就可以写出许多自己的测试来驱动UVC达到想要的覆盖水平。[1]

编辑本段PCI Express 1.0与PCI Express 2.0的区别

  PCI Express 2.0是PCI Express总线家族中的第二代版本。其中第一代的PCI Express 1.0标志于2002年正式发布,它采用高速串行工作原理,接口传输速率达到2.5GHz,而PCI Express 2.0则在1.0版本基础上更进了一步,将接口速率提升到了5GHz,传输性能也翻了一番。目前新一代芯片组产品均可支持PCI Express 2.0总线技术,X1模式的扩展口带宽总和可达到1GB/s,X16图形接口更可以达到16GB/s的惊人带宽值。

PCI-E配置MSI中断流程解析

在调试PCI-E的MSI中断前,需要先保证将传统中断调通,然后再调试这个。MSI中断究其本质,就是一个存储器读写事件。将MSI Address设置为内存中的某个地址(可以为64位),产生MSI中断时,...

华天易达:intel PCI-E网卡成主流选择

网卡是提供主机与网络间的数据交换的一条通路,在信息化时代里网卡已经成为了一种不可替代的网络设备,被广泛运用在服务器,工控机,网吧等地,同时也成为企业、政府以及各大行业信息化建设的重要技术支撑。面对各种...

PowerPC PCI-E调试相关资料小结

最近在PowerPC的板子上加一个FPGA,需要用PCI-E连接,就调试了PCI-E。由于vxWorks本身已经将驱动写好了,使用时直接调用即可,但是很快就出现了问题:一开始直接使用mmap的方式映射...
  • JuanA1
  • JuanA1
  • 2011年08月17日 19:19
  • 11686

PCI-E配置MSI中断流程解析

在调试PCI-E的MSI中断前,需要先保证将传统中断调通,然后再调试这个。MSI中断究其本质,就是一个存储器读写事件。将MSI Address设置为内存中的某个地址(可以为64位),产生MSI中断时,...
  • JuanA1
  • JuanA1
  • 2011年09月03日 20:52
  • 23999

pci-e转sata控制器siI3124驱动分析笔记(基于linux)

首先提纲挈领的总结下基于pci的驱动原理,摘自Understanding Linux Network Internals 原文配合三张图来讲解,这里就不附图了,相关范例的说明也加以删除 When ...
  • sordyz
  • sordyz
  • 2013年06月27日 17:18
  • 2148

PCI-E配置MSI中断流程解析

在调试PCI-E的MSI中断前,需要先保证将传统中断调通,然后再调试这个。MSI中断究其本质,就是一个存储器读写事件。将MSI Address设置为内存中的某个地址(可以为64位),产生MSI中断时,...
  • mao0514
  • mao0514
  • 2015年01月04日 17:30
  • 5862

Linux下查看PCI-E插槽信息的方法【转载】

在 Linux 下要如何得知 PCI-E Bus 使用的是 Gen(Generation) 1 還是 Gen2 還是新一代的 Gen 3 雖然使用 #lspci 只要可以看到目前系統所有的裝置.但是好...

PCI-E 1x, 4x, 8x, 16x 接口定义

介绍了PCI-E X1,X4,X8,X16的接口定义!

AMD二代推土机调整 砍掉PCI-E 3.0

据报道,AMD最近修改了桌面处理器路线图,取消了原计划的第二代推土机“Komodo”,取而代之的是新款“Vishera”,相应的平台代号也从“Corona”(室女座)改为“Volan”(飞鱼座)。 ...

双子星服务器 插PCI-E光纤网卡遇到的一些问题

使用某厂家双子星服务器搭建测试环境,有两个节点A、B。 安装RedHat 6.8,每台在安装过程中需要2小时,正常来说全选安装应该是30-60分钟就能完成。正常配置IP,网关。插上PCI-E光纤网卡...
  • KgdYsg
  • KgdYsg
  • 2017年11月15日 20:30
  • 103
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PCI-E
举报原因:
原因补充:

(最多只允许输入30个字)