从零开始讲PCIe(6)——PCI-X概述

news2024/10/5 15:03:43

一、概述

        PCI-X 在硬件和软件上与 PCI 具有向后兼容性,同时提供了更高的性能和效率。它使用与 PCI 相同的连接器格式,因此 PCI-X 设备可以插入 PCI 插槽,反之亦然。而且,PCI-X 采用相同的配置模型,因此在 PCI 系统上运行的设备驱动程序、操作系统和应用程序也可以在 PCI-X 系统上运行。

        为了在不改变 PCI 信号模型的情况下实现更高的速度,PCI-X 引入了一些改进来优化总线时序。首先,PCI-X 实现了锁相环(PLL)时钟发生器,这些时钟发生器可以在内部生成相移时钟,使输出稍早驱动,输入稍晚采样,从而改善了总线时序。其次,PCI-X 的输入信号在目标设备的输入引脚处通过寄存器(锁存器)进行处理,从而缩短了建立时间。这些手段节省了时间,增加了总线上信号传播的时间预算,从而支持更高的时钟频率。

二、典型的PCI-X模型

        一个基于Intel 7500服务器芯片组的系统示例如图1-15所示。该系统中的MCH芯片包含三个高性能的Hub Link 2.0端口,这些端口连接到三个PCI-X Hub 2桥接器(P64H2)。每个桥接器支持两条PCI-X总线,这些总线可以运行在最高133 MHz的频率下。Hub Link 2.0能够满足PCI-X流量的高带宽需求。

        需要注意的是,这里依然存在与66 MHz PCI相同的负载问题,这意味着为了支持更多设备,需要使用大量的总线,导致解决方案相对昂贵。不过,带宽相比过去有了显著提高。尽管负载问题依然存在,PCI-X的高频率和较高的带宽为系统提供了更快的性能。

三、PCI-X 事务

        图1-16展示了一个PCI-X突发内存读取事务的示例。需要注意的是,PCI-X在第一个数据阶段后不允许插入等待状态(Wait States)。这是因为在事务的属性阶段(Attribute phase),传输大小已经提供给了目标设备,因此目标设备准确知道所需传输的数据量。

        此外,大多数PCI-X总线周期是突发传输(burst),数据通常以128字节为块进行传输。这些特点使得总线利用率更高,同时设备的缓冲区管理也更加高效,从而大大提升了整体系统的性能和传输效率。这种设计减少了总线上的延迟和不确定性,使得数据传输更加顺畅。

四、PCI-X 特性

4.1 分离事务模型(Split-Transaction Model)

        分离事务模型(Split-Transaction Model)是PCI-X为提高总线效率而引入的一种改进模型。在传统的PCI读取事务中,总线控制器(Bus Master)发起对目标设备的读取请求。如果目标设备无法立即完成该请求,它可以通过等待状态(Wait States)来保持总线,或者在延迟事务过程中发出重试(Retry)。与此不同,PCI-X总线通过分离事务处理这些情况。

        在分离事务模型中,发起读取请求的设备称为请求方(Requester),而完成请求的设备则称为完成方(Completer)。当完成方无法立即响应请求时,它会记录事务的详细信息(包括地址、事务类型、字节数和请求方ID),并发出一个分离响应(split response)信号。这意味着请求方需要将该事务放入队列中,结束当前的总线周期,并将总线释放到空闲状态,以便其他事务可以使用总线。

        在等待数据的同时,请求方可以执行其他操作,比如发起新的请求,甚至是向同一个完成方发出新的请求。完成方在收集到所请求的数据后,会通过总线仲裁重新获取总线的控制权,发起一个分离完成(split completion)事务,并返回请求的数据。此时,请求方会认领分离完成的总线周期,并从完成方接收数据。分离完成看起来类似于系统中的写事务。

        这种分离事务模型之所以可行,是因为在事务的属性阶段(Attribute phase),请求方不仅说明了所请求的数据量,还标明了自身的Bus:Device编号,从而使得完成方能够准确地将数据返回给正确的设备。虽然完成整个数据传输需要两个总线事务(读取请求和分离完成),但在这期间总线可以处理其他事务,而请求方无需通过重试来轮询设备是否准备好数据。

        分离事务模型显著提高了总线的利用效率。与标准PCI协议50%至60%的传输效率相比,PCI-X的协议增强使其传输效率提高到了约85%。这种改进让总线在处理事务时更加灵活和高效,特别是在多个设备共享同一总线的情况下。

4.2 消息信号中断(MSI, Message Signaled Interrupts)

        消息信号中断(MSI, Message Signaled Interrupts) 是PCI-X设备的一项必需功能,它的引入是为了减少或消除多个设备共享中断的需求,这在传统中断架构中是常见的。MSI通过一种更有效的方式来处理设备的中断请求。

        在MSI中,设备通过发起一次内存写事务来生成中断请求,该写操作使用一个预定义的地址范围,这些地址被理解为中断请求,并且应该发送给一个或多个CPU。写入的数据是与该设备相关联的唯一中断向量。CPU接收到该中断向量后,可以立即跳转到该设备的中断服务例程,避免了传统中断机制中寻找哪个设备产生中断的开销。

        此外,MSI不需要额外的边带引脚(sideband pins),这进一步简化了硬件设计,同时提高了系统性能和中断处理效率。MSI的引入显著提升了中断管理的灵活性和效率,特别是在多设备和多CPU的环境下。

五、事务属性(Transaction Attributes)

        事务属性(Transaction Attributes)是PCI-X为了提高总线事务效率而新增的一项功能,每个事务在开始时增加了一个属性阶段(Attribute Phase)。在这一阶段,请求方会提供一些关键信息,例如请求的字节数以及请求方的Bus:Device 编号,这些信息可以帮助优化总线上的事务处理。此外,PCI-X还引入了两个新的位:No Snoop位和Relaxed Ordering位,用于进一步优化事务。

        No Snoop位的目的是减少事务延迟。通常,当涉及内存数据的读写时,需要检查CPU的缓存(称为snooping),以确保内存地址没有被缓存。如果该地址已被缓存,则可能需要先将缓存数据写回内存或将其失效,再允许事务继续处理。然而,snoop过程会增加事务的延迟。在某些情况下,软件可能知道所请求的内存地址不会存在于CPU缓存中(例如该地址已定义为不可缓存),因此无需进行snoop操作。为此,No Snoop位允许系统跳过缓存检查步骤,从而减少延迟,提高效率。

        另一方面,Relaxed Ordering位用于放宽事务的顺序要求。通常,总线上发出的事务需要按照严格顺序(Strongly Ordered model)通过桥接器的缓冲区处理,这有助于解决事务之间的依赖问题,例如先写后读的情况。然而,并非所有事务都存在依赖关系,强制保持顺序可能会导致性能下降。如果请求方知道某个事务与之前的事务无关,它可以设置Relaxed Ordering位,告知桥接器允许该事务跳过队列中的其他事务,从而提高性能。

        通过引入这些属性,PCI-X显著提高了总线事务的处理效率,尤其是在缓存管理和事务顺序上的灵活性,使得系统能够更高效地处理各种事务请求,减少延迟和资源浪费。

六、高性能PCI-X

6.1 PCI和PCI-X 1.0并行总线模型的通用时钟方法中存在的问题

        在尝试将像PCI和PCI-X这样的总线迁移到更高速度时,并行总线设计面临一些固有的限制,这在常用时钟模型(Common Clock Approach)中尤其明显。图1-18说明了这一问题。这种设计采用了公共或分布式时钟,数据在一个时钟沿被驱动,在下一个时钟沿被锁存,因此总的时序预算是一个时钟周期的时间。显然,时钟频率越高,时钟周期就越短,时序预算也就越小。

        在高频率下,由于时钟周期缩短,信号传输和锁存数据的时间非常有限。这种紧缩的时序预算会导致信号传输延迟增加和同步困难,因为信号在并行总线上的传播距离可能导致接收设备无法及时锁存数据。这种问题在传统的并行总线架构中变得愈发严重,使得在更高频率下保持可靠的信号传输成为一项挑战。

        因此,随着时钟频率的提升,保持并行总线设计的同步和信号完整性变得更加困难。这是传统的PCI和PCI-X 1.0在追求更高速度时遇到的主要瓶颈之一。

        在并行总线设计中需要注意的第一个问题是信号偏移(signal skew)。当多个数据位同时发送时,它们会经历略有不同的延迟,并在接收端以不同的时间到达。如果这些差异过大,接收端可能会因为时钟和数据不同步而发生错误采样,图中说明了这一问题。

        第二个问题是时钟偏移(clock skew),这是指多个设备之间的时钟到达时间不完全相同。由于公共时钟信号到达不同设备的时间不一致,进一步缩短了可用的时序预算。这使得各设备在高速情况下更难保持同步。

        第三个问题是信号传播时间(flight time),即信号从发送方传输到接收方所需的时间。时钟周期或时序预算必须大于信号传播时间,才能确保信号能够在时钟周期内正确传递到接收端。为此,电路板设计需要保证信号路径足够短,以便信号传播延迟小于时钟周期。然而,在许多板设计中,实现足够短的信号路径可能并不实际。

6.2 PCI-X 2.0 源时钟模型

        为了在这些限制下进一步提高性能,可以使用两种技术。首先,可以优化现有协议,使其更高效。其次,可以将总线模型更改为源同步时钟模型(source synchronous clocking model),其中总线信号和时钟(或选通脉冲)同时传输,并确保它们经历相同的传播延迟。这种技术能够有效解决信号和时钟不同步的问题。PCI-X 2.0协议采用了这种源同步时钟模型,从而克服了并行总线设计中时钟和信号同步的瓶颈,进一步提升了系统性能。

        由于意识到PCI-X 2.0的高成本设计主要吸引高端市场,PCI-X 2.0还引入了ECC(错误校正码)的生成和检查功能。相比传统的奇偶校验,ECC更为强大和复杂,能够在发生单比特错误时进行自动修正,并能有效检测多比特错误。虽然这种改进增加了成本,但对于高端平台来说,可靠性至关重要,因此这成为了PCI-X 2.0的合理选择。

        尽管PCI-X 2.0在带宽、效率和可靠性方面都有所提升,但并行总线模型的局限性逐渐显现,难以满足对更高带宽和更低成本的不断需求。PCI-X2.0总线虽然性能优异,但是却几乎很少得到应用,由于其高功耗高成本,且并行总线的引脚过多,需要极其复杂的PCB设计,导致PCI-X2.0只在极少数高端的市场中得到了应用(如服务器市场等)。为了解决这些问题,设计者转向了一种串行接口的新模型。虽然这种新总线在物理层面上与并行总线有很大不同,但它仍然保持了软件上的向后兼容性,这种新模型就是我们熟知的PCI Express(PCIe)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2190061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apollo9.0 Planning2.0决策规划算法代码详细解析 (4): PlanningComponent::Proc()

🌟 面向自动驾驶规划算法工程师的专属指南 🌟 欢迎来到《Apollo9.0 Planning2.0决策规划算法代码详细解析》专栏!本专栏专为自动驾驶规划算法工程师量身打造,旨在通过深入剖析Apollo9.0开源自动驾驶软件栈中的Planning2.0模块&am…

webpack插件 --- webpack-bundle-analyzer【查看包体积】

const UglifyJsPlugin require(uglifyjs-webpack-plugin) // 清除注释 const CompressionWebpackPlugin require(compression-webpack-plugin); // 开启压缩// 是否为生产环境 const isProduction process.env.NODE_ENV production; const { BundleAnalyzerPlugin } requi…

大数据可视化分析建模论

大数据可视化分析建模论 前言大数据可视化分析建模 前言 在这个信息爆炸的时代,数据如同潮水般涌来,我们每天都在与海量的数据打交道。数据已经成为了企业决策、科研创新以及社会发展的核心要素。如何从这些纷繁复杂的数据中提取有价值的信息&#xff0…

C++多态、虚函数以及抽象类

目录 1.多态的概念 2.多态的定义及实现 2.1多态的构成条件 2.1.1实现多态还有两个必要条件 2.1.2虚函数 2.1.3虚函数的重写/覆盖 2.1.4多态场景的题目 2.1.5虚函数重写的一些其他问题 2.1.5.1协变(了解) 2.1.5.2析构函数的重写 2.1.6override和final关键字 2.…

【Java】JAVA知识总结浅析

Java是一门功能强大的编程语言,广泛应用于多个领域。Java的编程思想,包括面向过程和面向对象编程,Java的发展历史,各版本的特点,JVM原理,数据类型,Java SE与Java EE的区别,应用场景&…

《业务三板斧:定目标、抓过程、拿结果》读书笔记2

为什么要看懂“目标全景图”? 很多管理者在定目标时缺乏全局思维,“只见树木,不见森林”,导 致定出来的目标短浅,管理者如井底之蛙。“目标全景图”是企业的 整个目标体系,如图1-1所示。管理者看懂“目标全…

Pikachu- Over Permission-垂直越权

以admin 账号登陆,添加一个用户; 把添加用户的这个请求发送到 repeater; 退出admin,使用普通用户pikachu登陆; 只有查看权限; 使用pikachu 用户的认证信息,替换repeater处管理员创建用户请求的…

【电力系统】配电网前推后带法求电力系统潮流

摘要 在配电网潮流计算中,前推后带法是一种常用的算法,适用于径向结构配电网。本文通过详细介绍前推后带法的基本原理和计算流程,并结合实际实验结果展示了该方法在电力系统中的应用。实验结果表明,该方法在潮流计算中具有较高的…

Android Framework AMS(02)AMS启动及相关初始化5-8

该系列文章总纲链接:专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明: 说明:本章节主要涉及systemserver启动AMS及初始化AMS相关操作。同时由于该部分内容过多,因此拆成2个章节,本章节是第二章节&…

CSS元素显示类型

display 属性是 CSS 中最重要的属性之一&#xff0c;主要用来控制元素的布局&#xff0c;通过 display 属性您可以设置元素是否显示以及如何显示。 根据元素类型的不同&#xff0c;每个元素都有一个默认的 display 属性值&#xff0c;例如<div>默认的 display 属性值为 …

Pandas基础学习

导入 导入pandas一般是这样导入的 import pandas as pdSeries 创建 s1 pd.Series([5, 17, 3, 26, 31])注意Series的第一个字母要大写&#xff0c;表明这其实是Series类的构建函数, 返回的是Series类的实例 获得元素或者索引 单独获得元素 s1.values单独获得索引值 s…

基于springboot的校园物流管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的校园物流管理系统1拥有两种角色 管理员&#xff1a;物流管理&#xff08;揽件、寄出&#xff09;、用户管理等 用户&#xff1a;收件、寄件、个人物流信息管理等 1.1 …

proto3语法

文章目录 字段规则消息类型定义与使用序列化写入文件hexdump工具反序列化读取文件decode命令选项enum类型设置电话类型 Any类型设置地址信息 oneof类型设置其他联系人信息 map类型添加备注信息 默认值更新消息更新规则 未知字段输出未知字段消息 option选项常用选项 本章代码仓…

Leetcode 剑指 Offer II 097.不同的子序列

题目难度: 困难 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个字符串 s 和一个字符串 t &#xff0c;计算在 s 的子序列…

NVIDIA网卡系列之ConnectX-5规格信息(100G-PCIe 3.0x16-8PF512VF-2016年发布)

背景 NVIDIA ConnectX-5系列的网卡&#xff0c;早期还在Mellanox未被NVIDIA收购的时候就发布了&#xff0c;主流支持100G&#xff0c;主要用在PCIe3.0&#xff0c;最大支持200G的产品。虽然已经发布多年&#xff0c;但是目前还是在大量使用。100Gbps的速率对比普通网卡来讲&am…

基于SSM的电影院售票系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 前言 近些年的电影在人们文娱活动中占据重要地位&#xff0c;另外&#xff0c;由于人们的生活越来越富有&#xff0c;越来越多的人们不再选择在家里看电影&#xff0c;而是选择去电影院看电影。但是&#xff0c;以往的售票方式是…

在Visual Studio中使用CMakeLists.txt集成EasyX库的详细指南

EasyX库是一款专为Windows平台设计的轻量级C图形库&#xff0c;适合初学者和教育领域使用。结合Visual Studio和CMake工具链&#xff0c;用户可以轻松创建C项目&#xff0c;并集成EasyX库&#xff0c;实现丰富的图形编程效果。本文将详细介绍如何在Visual Studio中通过CMakeLis…

分布式事务(Seata-AT模式)

角色说明 TC (Transaction Coordinator) - 事务协调者 维护全局和分支事务的状态,驱动全局事务提交或回滚。 TM (Transaction Manager) - 事务管理器 定义全局事务的范围:开始全局事务、提交或回滚全局事务。 RM (Resource Manager) - 资源管理器 管理分…

macOS编译和运行prometheus2.54

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文详述了在macOS(M2芯片)上编译和运行prometheus2.54版本的过程&#xff0c;以及安装node_exporter和grafana并使用prometheus指标进行展示 本地…

【含文档】基于Springboot+Vue的活力健身馆管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…