CN101290609A - 平衡快速外围组件互连带宽的系统和方法 - Google Patents

平衡快速外围组件互连带宽的系统和方法 Download PDF

Info

Publication number
CN101290609A
CN101290609A CNA2008100922206A CN200810092220A CN101290609A CN 101290609 A CN101290609 A CN 101290609A CN A2008100922206 A CNA2008100922206 A CN A2008100922206A CN 200810092220 A CN200810092220 A CN 200810092220A CN 101290609 A CN101290609 A CN 101290609A
Authority
CN
China
Prior art keywords
end points
data rate
front side
side bus
operating parameter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2008100922206A
Other languages
English (en)
Other versions
CN101290609B (zh
Inventor
迈克尔·A·佩雷兹
小里卡多·马塔
斯蒂文·方维布尔
查德·J·拉森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101290609A publication Critical patent/CN101290609A/zh
Application granted granted Critical
Publication of CN101290609B publication Critical patent/CN101290609B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
    • G06F13/372Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a time-dependent priority, e.g. individually loaded time counters or time slot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus

Abstract

提供了在多个PCI-Express端点之间平衡总线带宽的系统和方法。固件自动的与已建立的数据结构协调的操作,以设置PCIe端点的操作参数,从而最大化前端总线的可用带宽的使用率,同时最小化同步问题和不能保证PCIe端点的执行的可能性。第一表数据结构包括控制数据处理系统的每个端点的带宽使用的操作参数设置的各种组合。第二表数据结构包含数据处理系统所支持的端点、以及它们相关的最小数据速率、优先级和端点是否具有同步要求的列表。期望带宽平衡级别的设置与这些数据结构一起用于确定如何调整PCIe端点的操作参数。

Description

平衡快速外围组件互连带宽的系统和方法
技术领域
本申请一般涉及改进的数据处理系统和方法。更具体地,本申请针对于平衡多个PCI-Express(快速PCI)适配器之间的PCI-Express带宽的系统和方法。
背景技术
多数的现代计算装置使用输入/输出(I/O)适配器、以及利用由Intel在20世纪90年代首创的外围组件互连标准的某些版本或实现的总线。外围组件互连(PCI)标准规定了用于将外围设备附接到计算机主板上的计算机总线。PCI-Express或者PCIe是PCI计算机总线的实现,其使用现有的PCI编程概念,但使计算机总线基于完全不同、且快得多的串行物理层通信协议。物理层所包括的不是在多个设备之间共享的双向总线,而是连接到确定的两个设备上的单个的单向链路。
图1是根据PCIe规范描述PCI-Express(PCIe)组织拓扑的示例图。如图1所示,PCIe组织拓扑100包括:主处理器(CPU)联合体110;以及耦接到根联合体(root complex)或多根联合体130的存储器120,所述根联合体130即I/O北桥,其按顺序耦接到一个或多个PCIe端点(endpoint)140(在PCIe规范中使用的术语“端点”是指允许PCIe的I/O适配器)、PCI-Express到PCI桥150、以及互连切换器160中的一个或多个。根联合体130表示把CPU/存储器连接到I/O适配器的I/O层级的根。根联合体130包括主桥、零个或者更多的根联合体集成端点、零个或者更多个根联合体事件收集器、以及一个或多个根端口。每个根端口支持分离的I/O层级。I/O层级可以包括根联合体130、零个或者更多个互连切换器160和/或桥150(其包括切换器或PCIe结构)、以及诸如端点170和182-188的一个或多个端点。端点140、170以及182-188例如可以是以太网、SCSI、SAS、或者光纤通道I/O适配器。对于更多的关于PCI和PCIe的信息,可以参考从外围总线连接特别兴趣组的网站www.pcisig.com得到的PCI和PCIe的规范。
CPU联合体110包括一个或多个处理器和存储器(未示出),并且,驻留于在根联合体130之上的中央电子联合体(CEC)190之中。为了把CEC 190连接到根联合体130,使用有时被称为前端(front-side)总线的总线192,例如,在国际商业机器公司(IBM)企业服务器中,称这些总线为GX+总线。前端总线192具有有限的、已知数量的带宽。例如,前端总线192可以支持4G字节/秒的带宽。
在当前已知的配置中,如果端点140、170以及182-188的PCIe通道(lane)用到它们最大的级别,那么,把好几个抽屉(drawer)与其总带宽可以超过在前端总线192上可用的4G字节/秒的带宽的端点140、170以及182-188串接起来是可能的。在PCI标准中的“通道”是不同的信号对的集合,一对用于传输、且一对用于接收。在PCI标准中的“by-N”链路包括N个通道,例如,“x8”链路或槽(slot)支持到达/来自I/O适配器的流量的8个通道。如果经由端点的PCIe通道的流量超过了前端总线192的可用的带宽,则不能保证将达到每个I/O适配器的期望性能,并且,可能随着同步I/O适配器出现问题,所述同步I/O适配器即这样的I/O适配器:其数据传输(例如,与时间相关的诸如实时语音和视频的数据的传输)具有在数据分组传输之间的相同的时间差上传输的数据分组。
PCI-Express可通过创建流量类、以及可以定义哪一个流量具有优先级以及每个通道可以使用多少缓冲空间的虚拟通道,而试图解决这种问题。此解决方案的问题在于:该行业还没有试图利用这种架构特点。由于以尽可能针对操作系统和固件而透明的方式、执行从PCI-X到PCI-Express的过渡,所以,该行业还没有利用多流量类以及虚拟通道。为了完全地利用流量类和虚拟通道,操作系统和固件将不得不意识到这些特点,并且,为了利用这些特点,需要写入新的代码。然而,基本集成操作系统(BIOS)以及已知的操作系统,如微软Windows和Linux,并未作出这种修改,而是尚未为支持多流量类和虚拟信道进行必要的修改。
进一步,从硬件的角度看,对多流量类和多虚拟通道增加支持需要芯片区域的增加的复杂度,例如,仲裁和流控制。此外,由于每个虚拟通道将需要它自己私有的存储器用于发送和接收数据,所以,增加这些支持需要附加的芯片成本开销(real estate)。结果,硬件制造商没有实现对多虚拟通道和多流量类的支持。
现有的PCI-Express适配器不是采用多流量类和虚拟通道,而是仅支持一个虚拟通道和一个流量类。此外,主要的操作系统,如微软windows和Linux,仅仅使用一个流量信道和一个虚拟通道。结果,当前已知的环境经常遭遇到这样的问题:在经由I/O集线器或切换器连接到CPU联合体上的I/O抽屉中的PCI-Express适配器卡集合的总共可能的带宽可能远远超过了I/O集线器、切换器、和/或前端总线的能力。
发明内容
说明性实施例提供了在多个PCI-Express(PCIe)适配器或“端点”之间平衡总线带宽的系统和方法。说明性实施例的机制包括固件、硬件、或者软件机制、以及数据结构,其自动协同操作,以设置PCIe适配器/端点的操作参数,从而最大化前端总线的可用带宽的使用率,同时最小化不能保证PCIe适配器/端点的性能的可能性,并且最小化伴随着同步PCIe适配器/端点的问题。
在一个说明性实施例中,固件利用两个表数据结构,以基于将端点的总的最大和/或最小数据速率与前端总线的最大数据速率(即,前端总线的带宽)的比较,来调整PCIe适配器/端点(此后称作端点)的操作参数。第一表数据结构包括用于控制数据处理系统的每个端点的带宽使用的操作参数设置的各种组合。第二表数据结构包含数据处理系统所支持的端点、以及它们的相关联的最小数据速率和优先级的列表。第二表数据结构进一步指出哪些端点具有同步要求。此外,识别要在特定的数据处理系统中实现的说明性实施例的机制的期望级别的设置,并使用其确定如何调节操作参数。
在操作中,示例性实施例的机制确定前端总线的最大数据速率,并且查询所有的当前附接的端点,以确定每个端点的最大通道、最大存储器读取大小(MMRS)、以及有效负载值是什么,从而为每个端点确定最大数据速率,以便达到所有端点的总的最大数据速率。在确定了所有端点的总的最大数据速率之后,固件比较所有端点的最大数据速率与前端总线的最大数据速率。为了实现数据处理系统的期望性能,基于比较的结果,或者不理睬、或者基于用户选择的带宽平衡的级别调整特定的端点的操作参数。可以进一步基于端点的最小数据速率、以及端点是否具有由第二表数据结构指定的同步要求,而确定操作参数的设置。
在一个说明性实施例中,提供了在多个耦接到数据处理系统的端点之间平衡数据处理系统的前端总线的带宽的方法。该方法可以包括:确定前端总线的最大数据速率;确定多个端点的总的最大数据速率;以及比较多个端点的总的最大数据速率与前端总线的最大数据速率。该方法可以进一步包括:响应于多个端点的总的最大数据速率大于前端总线的最大数据速率,检索多个端点的最小数据速率,并且,基于多个端点的最小数据速率设置多个端点的操作参数。确定前端总线的最大数据速率可以包括以下步骤中的至少一个:从存储最大数据速率值的数据处理系统的寄存器检索最大数据速率值、或者接收对应于前端总线的最大数据速率的值作为至关重要的产品数据的部分。
确定多个端点的总的最大数据速率可以包括:向多个端点中的每个端点查询它们当前的操作参数设置;基于它们当前的操作参数设置,为多个端点的每个确定最大数据速率;以及作为多个端点的每个端点的最大数据速率的总和,计算总的最大数据速率。在多个端点中查询每个端点可以包括:从行业标准寄存器获得端点的操作参数设置,其中,行业标准寄存器的值是响应于与正在加电的端点相对应的槽而被填充的。
基于它们当前的操作参数设置确定多个端点的每个端点的最大数据速率可以包括:使用识别在一个或多个操作参数与最大数据速率的设置之间的相关性的第一数据结构,对多个端点中的每个端点执行查找操作。第一数据结构可以是三维数据结构,该三维数据结构将多个通道操作参数、有效负载大小操作参数、以及最大存储器读取大小操作参数与最大数据速率相关。
所述方法可以进一步包括:如果多个端点的总的最大数据速率小于或者等于前端总线的最大数据速率,则将多个端点的每个端点的操作参数设置为对应于每个端点的最大数据速率的值。检索多个端点的最小数据速率可以包括:使用识别在端点类型、端点优先级、最小数据速率、以及端点是否具有同步要求之间的相关性的第二数据结构,对多个端点中的每个端点执行查找操作。
基于多个端点的最小数据速率设置多个端点的操作参数的步骤可以包括:检索用户带宽平衡级别值;以及基于前端总线的最大数据速率和用户带宽平衡级别值,为前端总线确定调整的数据速率。设置操作参数可以进一步包括:比较多个端点的总的最小数据速率与前端总线的调整的数据速率;以及基于多个端点的总的最小数据速率与前端总线的调整的数据速率的比较结果,设置多个端点的操作参数。
如果多个端点的总的最小数据速率小于或者等于前端总线的调整的数据速率,则基于多个端点的总的最小数据速率与前端总线的调整的数据速率的比较结果而设置多个端点的操作参数的步骤可以包括:基于对应于端点的最小数据速率,通过在第一数据结构中执行查找操作而为每个端点设置操作参数,其中该第一数据结构识别在一个或多个操作参数和数据速率的设置之间的相关性。如果多个端点的总的最小数据速率大于前端总线的调整的数据速率,则基于多个端点的总的最小数据速率与前端总线的调整的数据速率的比较结果而设置多个端点的操作参数的步骤可以包括:使用对应的最小数据速率,基于在第一数据结构中的查找操作,为每个端点设置操作参数;以及发送错误消息给管理员数据处理装置,以指示在配置数据处理系统中的问题。
如果多个端点的总的最小数据速率大于前端总线的调整的数据速率,则基于多个端点的总的最小数据速率与前端总线的调整的数据速率的比较结果而设置多个端点的操作参数的步骤可以包括:基于从识别端点优先级的第二数据结构检索的优先级信息,产生多个端点中的端点的优先级列表;以及基于优先级列表而减少分配给端点的资源,直到多个端点的总的最小数据速率小于或等于前端总线的调整的数据速率为止。该方法可以在数据处理系统的固件中执行。
该方法可以进一步包括:基于第二数据结构,识别具有同步要求的多个端点中的一个或多个端点;以及基于第二数据结构,确定所述一个或多个端点是否具有最高优先级。可以设置总线仲裁器,以便对一个或多个端点赋予比多个端点中的其它端点高的对前端总线的优先级。该方法可以进一步包括:基于第一数据结构,确定处理与用于一个或多个端点的操作参数设置相对应的有效负载大小的时间;以及为多个端点确定理想的有效负载大小,以补偿一个或多个端点的同步要求。可调整有效负载大小设置大于理想有效负载大小的多个端点中的端点的操作参数。
在其它的示例性实施例中,提供了包括具有计算机可读程序的计算机可用介质的计算机程序产品。所述计算机可读程序,当在计算装置执行时,引起计算装置执行上述说明性实施例的方法给出的操作的各种操作或者其组合。
再在另外一个说明性实施例中,提供了数据处理系统。所述系统可以包括固件、前端总线,以及耦接到固件和前端总线的多个端点。固件可以包括当执行时引起所述固件执行上述说明性实施例的方法给出的操作的各种操作或者其组合的指令。
本发明的这些以及其它的特点和优点将在以下的本发明的说明性实施例的具体的描述中被描述,或者,考虑到以下的本发明的说明性实施例的具体的描述,对于本领域的技术人员将变得显而易见。
附图说明
当与附图一起阅读时,本发明、以及优选的使用模式和进一步的目标和由此而来的优点将通过参考以下说明性实施例的详细描述而得以更好的理解,附图中:
图1是图解根据PCIe规范的PCI-Express(PCIe)结构拓扑(fabrictopology)的示例图;
图2是其中可实现说明性实施例的方面的示例性数据处理系统的框图;
图3是说明性实施例的主要的操作组件的示例图;
图4A-4E是根据一个说明性实施例的、用于识别平衡PCIe端点之间的带宽的操作参数的可能的组合的第一三维表数据结构的示例图;
图4F是根据一个说明性实施例的、可用于PCIe端点的写操作的二维表数据结构的示例图;
图5是用于识别支持的PCIe端点、以及PCIe端点是否具有同步要求的第二表数据结构的示例图;
图6A-6B是概述根据一个说明性实施例的、为了平衡带宽而确定PCIe端点的操作参数的设置的示例性操作的流程图;以及
图7是概述根据一个说明性实施例的、为了平衡带宽而调整具有同步要求的PCIe端点的操作参数的示例性操作的流程图。
具体实施方式
说明性实施例提供了平衡多个PCI-Express(PCIe)适配器、或者“端点”之间的前端总线的带宽的机制,使得即使当PCIe端点仅仅支持单个虚拟信道和流量类时,实现数据处理系统的优化性能。说明性实施例的机制可以被实现于数据处理系统中,该数据处理系统自身实现图1的PCIe结构拓扑、或者相似的PCIe结构拓扑。作为其中说明性实施例的示例性方面得以实现的数据处理系统的一个示例框图而提供了图2。应理解,图2仅仅是示例性的,且不意欲断言或者暗示针对其中实现本发明的方面或实施例的数据处理环境的任何限制。在不脱离本发明的精神和范围的条件下,可以做出对所描述的环境的很多修改。
现在参考图2,示出了在其中实现了说明性实施例的方面的示例数据处理系统的框图。数据处理系统200是计算机的例子,其中,可安置实现本发明的说明性实施例的处理的计算机可用代码或指令。可以在固件的软件中提供计算机可用代码或指令。此外,在一些说明性实施例中,说明性实施例的机制可以作为图2的数据处理系统的硬件元件而提供。
在该描述的例子中,数据处理系统200使用包括北桥和存储器控制器集线器(NB/MCH)202、以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)204的集线器架构。处理单元206、主存储器208、以及图形处理器210连接到NB/MCH 202。图形处理器210可以通过加速图形端口(AGP)连接到NB/MCH 202。
在描述的实例中,局域网(LAN)适配器212连接到SB/ICH 204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口及其它的通信端口232、以及PCI/PCIe设备234通过总线238和总线240而连接到SB/ICH 204。PCI/PCIe设备可以包括:例如,以太网适配器、加入(add-in)卡、以及用于笔记本电脑的PC卡。PCI使用卡总线控制器,而PCIe则不是这样。ROM 224可以是例如快闪二进制输入/输出系统(BIOS).
HDD 226以及CD-ROM驱动器230通过总线240连接到SB/ICH 204。HDD 226以及CD-ROM驱动器230可以使用例如集成驱动电子器件(IDE)、或者串行高级技术附连(SATA)接口。超级I/O(SIO)设备236可以连接到SB/ICH 204。
操作系统运行在处理单元206上。操作系统调整并提供在图2中的数据处理系统200中的各种组件的控制。作为客户端,操作系统可以是商业上可用的操作系统,例如,
Figure A20081009222000131
Windows XP(Microsoft和Windows是美国的或者其它国家或两者的微软公司的商标)。例如JavaTM编程系统的面向对象编程系统可以与操作系统协同运行,并且,从在数据系统200上执行的JavaTM程序或应用提供对操作系统的调用(Java是美国的或者其它国家或两者的SunMicrosystems公司的商标)。
作为服务器,数据处理系统200可以是例如
Figure A20081009222000141
eServerTM 计算机系统,其运行在高级交互执行(
Figure A20081009222000143
)操作系统或者
Figure A20081009222000144
操作系统上(eServer、pSeries以及AIX是美国或者其它国家或两者的国际商业机器公司的商标,而LINUX是美国的或者其它国家的Linus Torvald的商标)。数据处理系统200可以是在处理单元206中包括多个处理器的对称多处理器系统(SMP)。可选地,也可以使用单个处理器系统。
操作系统的指令、面向对象编程系统、以及应用或者程序位于例如HDD系统226的存储装置上,并且,可以被载入主存储器208中以便由处理单元206执行。本发明的说明性实施例的处理可以由使用计算机可用程序代码的处理单元206执行,其中,所述计算机可用程序代码可以位于例如主存储器208、ROM224的存储器中,或者,例如,位于一个或多个外围设备226和230中。
诸如图2中示出的总线238或者总线240的总线系统可以包括一个或多个总线。当然,可以使用在附接于构造或架构的不同的组件或设备之间提供数据传输的任何类型的通信构造或架构,而实现该总线系统。诸如图2的调制解调器222或者网络适配器212的通信单元可以包括一个或多个用于传送和接收数据的设备。存储器可以是例如在图2的NB/MCH 202中找到的主存储器208、ROM 224或者高速缓存。
本领域中的那些普通技术人员将理解,图2中的硬件可以根据实现而变化。除了或者取代于图2中描述的硬件,诸如闪存、同等的非易失性存储器、或者光盘驱动器等的其它的内部硬件或者外围设备都可以使用。再者,在不脱离本发明的精神和范围的条件下,除了前述的SMP系统之外,说明性实施例的处理还可以被应用于多处理器数据处理系统。
此外,数据处理系统200可以采用包括客户端计算设备、服务器计算装置、平板(tablet)计算机、膝上形计算机、电话或者其它的通信设备、个人数字助理(PDA)等等的任意数量的不同的数据处理系统的形式。在一些说明性的实例中,数据处理系统200可以是便携式计算装置,其配置有闪存,以提供非易失性存储器,用于存储例如操作系统文件和/或用户产生的数据。数据处理系统200本质上可以是任何已知的或者以后开发的没有架构限制的数据处理系统。
对于这里阐述的说明性实施例特别重要的是,图2的数据处理系统200包括固件290和总线仲裁器(arbiter)295。总线仲裁器295用于仲裁:由构成PCIe结构拓扑的前端总线的PCI/PCIe设备234对总线238、以及由此的北桥/存储器控制器集线器(NB/MCH)202的访问。总线仲裁器295基于由固件290进行的各种PCI/PCIe设备234的操作参数的设置而操作。固件290按照在下文中的说明性实施例而执行操作,以在PCI/PCIe设备234之间平衡总线238和NB/MCH 202的带宽。当针对在固件290中执行的功能描述说明性实施例时,应当理解,说明性实施例的功能可以软件或者硬件的方式实现。即,可以由一个或多个处理器提供并执行:实行该功能的软件指令。此外,在其它说明性实施例中,可以提供一个或多个集成电路设备,以在电路中执行该功能。
作为进一步的实例,在固件290的一个或多个层中提供说明性实施例的功能。例如,启动系统的BIOS、以及在运行时期间处理请求的实时抽象层(real-time abstraction layer)各自可以用于执行此后描述的功能和操作中的一个或者组合。作为实例,由操作系统对PCIe槽(热插拔)的电源开/关的实时请求可以通过固件的实时抽象层服务(RTAS)部分而被处理,其具有管理和监视由RTAS执行的功能和操作的固件的管理程序级别。
说明性实施例提供在多个PCI-Express(PCIe)适配器或“端点”(例如,其可以是PCI/PCIe设备234)之间平衡总线带宽的系统和方法。说明性实施例的机制包括固件、硬件或者软件机制、以及数据结构,其自动协调操作,以设置PCIe适配器/端点的操作参数,使得例如总线238和NB/MCH 202的前端总线的可用带宽的使用率最大化,同时最小化不能保证PCIe适配器/端点的性能的可能性,并且最小化伴随同步PCIe适配器/端点的问题。
说明性实施例利用了这样的事实,即:基本上存在调整PCIe的数据速率、使得在PCIe端点之间提供带宽的平衡的三种方式。平衡带宽的一个选择是调整PCIe端点的通道的数目,例如,x1、x2、x4、x8、或x16。这些通道如同这样的数据管道,其中,大尺寸的管道将提供比任何给定时间能发送的更大的数据流。在当前的技术中,PCIe端点的每个通道可以在每个方向以250兆字节/秒发送。因此,x8端点(即,具有8个通道的端点)可以在每个方向上以2G字节/秒发送。
第二种可以调整带宽以便带宽平衡的方式是:调整最大有效负载(payload)设置。PCIe经由承载有效负载的数据分组发送数据。可以调节这些有效负载的最大大小,以便增加或减少数据经过总线传输的速率。例如,PCIe数据分组的最大有效负载可以根据期望的带宽使用率而被设置为128、256、512、1024、2048或者4096字节。
第三种可以调整带宽以便带宽平衡的方式是:调整最大存储器读大小(MMRS)。MMRS是端点可以在给定时刻从主存储器208请求的最大的数据量,并且,可以是例如,64、128、256、1024、2048或者4096字节。通过修改MMRS,有效地改变PCIe端点可在给定时刻从主存储器读取的数据量。这些操作参数、通道数目、有效负载大小、以及MMRS由本发明的机制所使用,连同用户选择的带宽平衡级别、端点优先级、端点的最小数据速率、以及端点的同步要求,以调整各种PCIe端点的带宽使用率,使得即使当PCIe端点的带宽使用率超过前端总线238和NB/MCH 202的可用带宽时,也可实现数据处理系统的优化性能。
在一个说明性实施例中,在与固件290相关联的存储器(未示出)中提供了两个表数据结构,并且,其由固件290使用,以基于端点的总的最大和/或最小数据速率与前端总线的最大数据速率(例如,前端总线238和NB/MCH202的带宽)的比较,而调整PCIe适配器/端点(此后简称作端点)的操作参数。第一表数据结构包括示出针对最大存储器读大小(MMRS)、有效负载、以及通道设置的组合的数据速率的三维表。第一表数据结构进一步识别其耗费多长时间(如以纳秒为单位)来完成数据传输,这对于如下讨论的同步PCIe端点是重要的。第二表数据结构包含数据处理系统所支持的PCIe端点类型、以及它们的相关联的最小数据速率和优先级的列表。第二表数据结构进一步指出哪些PCIe端点类型具有同步要求,例如每x时间量需要访问流视频数据的视频PCIe端点类型。这些表数据结构可由例如超级管理员(即,具有超过典型的管理员的知识的管理员,例如,具有在PCIe或者试验支持人背景的工程师)提供或者修改。
此外,识别并且使用在特定的数据处理系统中实现的说明性实施例的机制的期望级别的设置,以确定如何调整操作参数。期望级别设置可以被存储于例如可由固件290访问的数据处理系统的非易失性存储器中。例如,这种期望级别设置可以经由操作系统,从BIOS菜单等设置。可以在不脱离本发明的精神和范围的情况下,使用用于存储和提供对固件290的期望级别设置的其它机制。
作为这种期望级别设置的实例,系统管理员可以从预定级别集合(例如,高(H),中(M),或者低(L))中选择特定级别以便使用。H级别设置可以用于指定:固件将设置所有的端点到它们最大的数据速率级别,由此,有效地禁用用于平衡带宽的说明性实施例的机制。L级别设置可以用于指定:固件应当调整端点的数据速率级别,使得它们总的数据速率匹配前端总线的最大数据速率。M级别设置可以用于指定:固件应当调整端点的数据速率级别,使得它们总的数据速率匹配超过前端总线的最大数据速率、但是小于所有的端点的总最大数据速率的所选值。例如,数据速率可以被设置为前端总线的最大数据速率的两倍、前端总线的最大数据速率的三倍、或者前端总线的最大数据速率的任何其它的倍数或者非整倍值。
这些表数据结构和用户选择的平衡级别(例如,H,M,或者L)用于调整PCIe端点之间的总线的带宽的平衡。例如,响应于PCIe端点被加入到数据处理系统、响应于执行说明性实施例的带宽平衡的系统管理员命令、响应于数据处理系统的检测的条件(例如,期望的性能级别,如数据吞吐量)没有满足所需级别、响应于特定事件的发生、响应于带宽平衡操作的时间表等等,一旦数据处理系统启动,就可以执行由固件进行的带宽的平衡。一旦确定执行了平衡操作,那么,如针对图3讨论的那样,说明性实施例的机制操作,以平衡PCIe端点之间的前端总线的带宽。
图3是说明性实施例的主要操作组件的示例图。如图3所示,固件310与第一表数据结构存储装置320、第二表数据结构存储装置330、用户带宽平衡级别存储装置340、以及与PCIe端点360-364的固件相关联的配置数据结构存储装置350-354结合操作,以修改操作参数,例如,PCIe端点360-364的有效负载、通道、MMRS,以在PCIe端点360-364之间平衡前端总线370的带宽。
在操作中,固件310确定前端总线370的最大数据速率。可以通过读取存储最大数据速率值、且可以由固件310访问的数据处理系统的寄存器,而确定前端总线370的最大数据速率。在其它说明性实施例中,前端总线370的最大数据速率可以经由系统重要产品数据(vital product data,VPD)而被传递到系统中。例如,系统VPD识别前端总线370的总线速度。根据此总线速度,固件310可以确定最大数据速率。可选地,系统VPD可以识别最大数据速率本身。可以在不脱离本发明的精神和范围的条件下,使用为前端总线370提供最大数据速率的其它机制。
在识别了前端总线370的最大数据速率之后,固件310随后查询所有当前附接的PCIe端点360-364,并从它们的配置数据结构存储装置350-354确定每个PCIe端点的最大通道数目、MMRS以及有效负载是什么。通道数目、或者通道大小可以在PCIe槽加电时被确定,并且,例如,经由硬件机制而协商总线带宽。通过读取在系统中提供的标准热插控制器(SHPC)寄存器,固件310可以识别当前的通道数目、或者通道大小。固件310可以通过修改SHPC寄存器、以设置可以将PCIe槽配置到的最大通道大小,而修改通道数目或者通道大小,并且,然后,固件310可以经由SHPC寄存器而强制槽重新配置,以强制重新协商,但是,此时具有通道数目或通道大小的限制。MMRS和有效负载设置是由固件310初始化的行业标准PCI寄存器。
随后,固件310使用第一表数据结构,其将数据速率映射到存储于第一表数据结构存储装置320中的诸如有效负载、通道数目以及MMRS的操作参数的组合,以确定每个PCIe端点360-364的最大数据速率。每个PCIe端点360-364的最大数据速率基于来自PCIe端点360-364的配置数据结构存储装置350-354的最大通道、MMRS以及有效负载值而确定。然后,可以对每个PCIe端点360-364的最大数据速率进行总计或求和,以产生所有的PCIe端点360-364的总的最大数据速率。
确定所有的PCIe端点360-364的总的最大数据速率之后,固件310比较所有的PCIe端点360-364的总的最大数据速率与由固件310确定的前端总线370的最大数据速率。如果所有的PCIe端点360-364的总的最大数据速率小于或者等于前端总线的最大数据速率,则将所有的PCIe端点操作参数设置为对应于最大数据速率的它们的值。也就是说,使用在第一表数据结构中的对应于PCIe端点的最大数据速率的有效负载、通道数目以及MMRS的设置,以在它们各自的配置数据存储设备350-354中设置PCIe端点360-364的操作参数。应当注意,通过该操作,每个PCIe端点360-364可以基于它们各自的最大数据速率而具有操作参数的不同的设置。
如果所有PCIe端点360-364的最大数据速率超作前端总线的最大数据速率,则检索用户选择的级别,即,存储在用户带宽平衡级别存储装置340中的用户选择的带宽平衡级别,并使用其来确定如何在PCIe端点360-364之间平衡前端总线370的带宽。
如果例如系统管理员的用户已选择了高(H)操作级别,则设置所有的PCIe端点360-364,以使用它们的最大数据速率。如果用户尚未选择H操作级别,则参考在第二表数据结构存储装置330中的第二表数据结构,以确定每个PCIe端点360-364的最小数据速率是什么。如果在第二表数据结构中不存在特定的PCIe端点360-364,则可以从PCIe端点360-364的行业标准寄存器中获得的、与PCIe端点360-364相关联的类码(class code)可被用来将其与在第二表数据结构中表示的类似的PCIe端点匹配。如果不能基于该类码发现类似的PCIe端点,则可以假定最小数据速率为PCIe端点360-364的最大数据速率,但是,由于PCIe端点360-364是不被数据处理系统所支持的PCIe端点,所以,PCIe端点360-364的优先级可减小为低优先级。
所有的PCIe端点360-364的最小数据速率可以被求和,并且,可被用来与基于前端总线370的最大数据速率、以及带宽平衡机制的操作级别的用户选择(例如,L或M)而确定的前端总线370的数据速率相比较。例如,可以由固件310作出:所有的PCIe端点360-364的总的最小数据速率是否等于或小于前端总线370的最大数据速率(对于设置L)、或者等于或小于前端总线370的最大数据速率(对于设置M)的两倍的确定。如果所有的PCIe端点360-364的总的最小数据速率等于或小于前端总线370数据速率的对应级别,则可以接受所述数据速率,并且,基于最小数据速率,使用第一表数据结构,以识别要由PCIe端点360-364使用的有效负载、MMRS以及通道的设置。然后,固件310可以使用这些操作参数来确定如何在每个PCIe端点360-364的配置数据结构存储装置350-354中修改配置设置。由于改变通道需要端点的重置和重新训练,所以,对PCIe端点360-364的配置的修改主要使用MMRS或有效负载参数来执行。
如果所有的PCIe端点360-364的总的最小数据速率不是小于或等于前端总线370的设置级别数据速率,则存在可以用于实现PCIe端点360-364的可接受的性能的多个选项。作为第一选项,可以基于PCIe端点360-364的最小数据速率,而不考虑所有的PCIe端点360-364的总的最小数据速率是否小于前端总线370的设置级别的数据速率,而由固件310使用从第一表数据结构确定的操作参数而设置PCIe端点360-364的配置。可以发送错误消息给管理员以指示该问题,使得管理员可以采取步骤以确保实现数据处理系统的期望性能。
作为第二选项,可以生成优先级列表,其以优先级排名顺序列出PCIe端点360-364,同时把未知的或者不支持的端点列在列表中的最低级别。然后,固件310可以操作,以减低(cut back on)每个PCIe端点360-364的资源(例如,带宽),其中,百分比的下降是基于PCIe端点360-364在优先级列表中的位置。可以执行减低操作,直到达到期望的目标为止,例如,PCIe端点360-364的总的数据速率等于或者小于前端总线370的设置级别的数据速率。在一些说明性实施例中,PCIe端点的资源可以被减低的量受限于与其最小数据速率相关的特定量,例如,PCIe端点的最小数据速率的一半。在一些说明性实施例中,PCIe端点360-364的资源可以以伴随前端总线370的设置级别数据速率的增加的上述方式而减低,例如,前端总线370的设置级别的数据速率的两倍(对于设置L)、或者前端总线370的设置级别的数据速率的四倍(对于设置M)。这允许在PCIe端点360-364被限制于它们的最小数据速率之下但是还没有到L或M前端总线370限制之间的折中。在任何这些说明性实施例中,可以发送错误消息给管理员以指示问题,使得管理员可以采取步骤以确保实现数据处理系统的期望性能。
对于同步PCIe端点360-364,PCIe端点360-364可能或者可能不想要高数据速率,但是,不管如何,想要达到特定的数据速率要求的可预测的时间。例如,同步PCIe端点360-364可以要求PCIe端点360-364在特定的时间帧内完成直接存储器访问(DMA)写或读操作。
一种允许PCIe端点360-364更早地获得对前端总线370的访问的方法是:通过允许PCIe端点360-364具有高于其它非同步PCIe端点360-364的优先级。另一个方法是:防止其它非同步PCIe端点360-364使用前端总线370进行较长的数据传输。数据传输的长度取决于有效负载的大小。传输有效负载的时间是可预测的时间。
因此,对于说明性实施例的机制,一旦固件310以先前描述的方式建立了数据速率,那么,固件310可以针对同步问题做出调整。如上所讨论的,第二表数据结构包括识别哪些PCIe端点类型(如果有的话)是同步的信息。说明性实施例的固件310可以检查第二表数据结构,以确定当前安装的PCIe端点360-364中的哪些(例如,如果有的话,PCIe端点360)具有同步问题。假设发现了具有同步问题的PCIe端点360,则固件310检查第二表数据结构,以确定PCIe端点360的最小时间要求是什么、以及PCIe端点360的优先级是什么。
如果PCIe端点360具有所有的当前安装的PCIe端点360-364的最高的优先级,并且,如果系统支持PCIe端点360-364的优先级设置,则设置总线仲裁器390,使得此PCIe端点360一直得到优先级。基于第一表数据结构中的信息,而得知要在前端总线370之间处理的每个有效负载大小花费多长时间。基于从第一表数据结构获得的值,可以计算处理有效负载的时间。可选择地,可以通过执行基于从第一表数据结构检索的信息的经验性地获得的处理时间值的查找操作,而确定处理有效负载的时间。
在确定了每个有效负载大小要在前端370之间处理所花费的时间之后,有可能确定:允许其它PCIe端点360-364针对该PCIe端点360及时完成、以满足同步要求的理想有效负载大小是什么。例如,假设第一PCIe端点或者适配器(例如,适配器A)必须等待PCIe端点和适配器B、C和D,以在其可以访问前端总线370之前发送它们的分组。由此,适配器A不得不等待处理头、有效负载、循环冗余校验(CRC)值所需的时间段、以及执行前端总线370的仲裁所需的时间段。作为一个实例,头可以是12-16字节,CRC值可为4字节,并且,仲裁可以是2个时钟周期。不计仲裁时间周期,适配器A将不得不等待在有效负载=4096的情况下发送12336字节、或者在有效负载=128的情况下发送432字节的时间。发送这么多有效负载数据花费的时间取决于通道数目、或者通道大小。因此,理想有效负载大小是确定性的,并且可以被计算。在计算中包括仲裁增加了设置的附加的可能组合,以确保满足同步要求,即,适配器A是否获得高于其它适配器的优先级、是否循环(round-robin)执行仲裁,等等。
在确定了理想的有效负载大小以后,固件310随后可以确定任何其它的PCIe端点362-364是否将它们的有效负载大小设置为比理想的有效负载大小更高的值。如果是这样,则参考第一表数据结构,以查看是否可以修改这些PCIe端点362-364的通道的数目、修改MMRS设置、以及/或者有效负载设置可以被修改为在该较低的有效负载的情况下依旧满足这些PCIe端点362-364的最小数据速率的值。如果是这样,于是则调整PCIe端点362-364的设置。如果正在使用过大的有效负载的PCIe端点的优先级比具有同步问题的PCIe端点360低,则将较低优先级的PCIe端点362-364降级第一增量。
如果正在使用过大的有效负载的PCIe端点362-364是优先级比具有同步问题的PCIe端点360高的PCIe端点,则由于它具有比同步PCIe端点360高的优先级,所以,不修改它的优先级设置。理想地,同步PCIe端点360将比非同步PCIe端点362-364具有更高的优先级,并且因此,该情形比较少见。
图4A-4E是根据一个说明性实施例的、识别在PCIe端点之间平衡带宽的操作参数的可能的组合的第一三维表数据结构的示例图。由于可视化三维表数据结构是困难的,所以,作为一系列的二维表而提供图4A-4E,所述二维表可以被组合在一起而为PCIe端点的读操作产生三维表数据结构。图4A表示:如何以三维方式组合图4B-4E,以产生三维表数据结构。在图4B-4E中示出的每个二维表数据结构是PCIe端点所支持的不同的通道数目、或通道大小,例如,x1,x2,x4,或x8。
提供图4F作为可以用于PCIe端点的写操作的二维表数据结构的例子。因为对写操作而言,由于MMRS引用不能被改变以实现不同的写操作数据速率的最大存储器读大小,仅存在两个可以变更的参数(即,有效负载大小和通道数目)以实现不同的数据速率,所以,示出了用于写操作的单个二维表数据结构。应当理解,可以组合这些表数据结构的设置值,以提供代表实现期望数据速率的各种设置的一个或多个曲线的三维图。
在图4A-4F中的表图描绘了:可以使用多种选项实现具体的数据速率目标。例如,如果需要1760兆字节/秒的数据速率,则可以使用设置的各种组合,作为获得该数据速率的基础。例如,可以使用包括8通道(图4E中的x8)、256字节的有效负载大小、以及4096字节MMRS的设置的组合。类似地,可以使用8通道、512字节的有效负载大小、以及512字节MMRS的组合。为了在PCIe端点上扩展带宽,可能倾向于512字节的MMRS和512字节的有效负载大小。然而,由于同步的原因,较小的有效负载大小可能比较好,并且因此,如果对于特定的配置存在同步问题,则可以使用4096字节的MMRS以及256字节的较小的有效负载大小。
图5是用于识别所支持的PCIe端点、以及PCIe端点是否具有同步要求的第二表数据结构的示例图。应当理解,图5只是示例,并且,可以多个不同的方式执行所支持的PCIe端点、以及同步要求的识别。因此,可以在不脱离本发明的精神和范围的条件下,做出对在图5中示出的图的很多修改。
图5中的第二表数据结构尤其示出了PCIe端点的优先级级别510、PCI端点的类520、以及子类530、PCIe端点的理想数据速率540、PCIe端点550的最小数据速率、以及PCIe端点是否具有同步要求560。示例性的第二表数据结构500的列2-4中的信息用于提供提供商/设备标识、以及子系统提供商/设备标识。每个PCIe端点具有唯一的提供商/设备标识。一些PCIe端点具有子系统提供商/设备标识。当固件行经数据处理系统的PCIe总线时,固件读取这些标识,以确定已发现了哪一个PCIe端点。
优先级级别510识别对应的PCIe端点的优先级。如果多个PCIe端点具有相同的优先级,则它们在优先级级别列510中具有相同的优先级值。例如,如图5所示,以太网端点具有相同的优先级,以及SCSI和IDE端点具有相同的优先级。
类520和子类530允许固件确定PCIe端点的类型。固件使用类520和子类530,来确定不在第二表数据结构中的端点的优先级和同步要求。例如,如果固件不能发现不在表数据结构500中的具体的以太网端点(经由类码),则固件可以使用在表数据结构500中的另一个以太网端点的设置。
此外,如果在表数据结构500中没有发现具体的端点,但是在表数据结构500中存在来自同一提供商的端点,则固件可以选择使用为来自同一提供商指定的端点的同一设置。例如,假设表数据结构500包括Emulex光纤信道适配卡的值。进一步假设固件发现具有不同设备标识的来自Emulex的另一个适配器。不同的标识可以不同,例如,这是由于,其它的适配器是在表数据结构500中的适配器的较老的或者较新的版本。在这种情况中,固件可以选择使用用于其它的Emulex适配器的表数据结构500的值。固件可以进一步执行第二次检查,以查看类/子类520/530是否类似,并且,如果类似,则使用表500中的有关其它Emulex适配器的值。在这种方式中,对使用表数据结构500提供了大量的灵活性,使得在遇到每个新的标识时,不必严格地要求更新表数据结构500。
图6A-6B以及7是概述根据一个说明性实施例的、在PCIe端点之间平衡带宽的示例性操作的流程图。将理解,流程图图示的每个框、以及流程图图示中的框的组合可以通过计算机程序指令实现。可以提供这些计算机程序指令给处理器或者其它的程序数据处理装置以产生机器,使得在处理器或者其它程序数据处理装置上执行的指令创建用于实现在流程图框中指定的功能的装置。这些计算机程序指令还可以被存储在可以引导处理器或者其它可编程数据处理装置以特定方式工作的计算机可读存储器或存储介质中,使得存储于计算机可读存储器或存储介质的指令产生包括实现在流程图框中指定的功能的指令装置的制品。
因此,流程图图示的框支持用于执行指定的功能的装置的组合、用于执行指定功能的步骤的组合、以及用于执行指定功能的程序指令装置。将理解,流程图图示的每个框以及流程图图示出的框的组合可以通过执行指定指令或步骤的特定目的的基于硬件的计算机系统、或者由特定目的的硬件以及计算机指令的组合实现。
此外,提供了用来展示在说明性实施例内执行的操作的流程图。流程图不是为了阐述或者暗示对特定操作的限制,或者,更具体地,操作的顺序。在不脱离本发明的精神和范围的条件下,可以修改流程图的操作以适合特定的实现。
图6A-6B是概述根据一个说明性实施例的、为了平衡带宽而确定PCIe端点的操作参数的设置的示例性操作的流程图。如图6A-6B所示,操作以固件为前端总线确定最大数据速率开始(步骤610)。固件向当前安装的PCIe端点查询它们的最大通道数目、最大MMRS、以及最大有效负载配置参数(步骤615)。固件基于每个PCIe端点的通道的最大数目、MMRS以及有效负载,在第一表数据结构中执行查找操作,以识别PCIe端点的最大数据速率(步骤620)。
固件对每个PCIe端点的最大数据速率求和(步骤625),并且比较PCIe端点的总的最大数据速率与前端总线的最大数据速率(步骤630)。固件确定PCIe端点的总的最大数据速率是否大于前端总线的最大数据速率(步骤635)。如果不是这样,则固件将PCIe端点的操作参数的值设置为与它们各自的最大数据速率相对应的值(步骤640),并且操作终止。
如果PCIe端点的总的最大数据速率大于前端总线的最大数据速率,则固件检索用户选择的带宽平衡级别(步骤645)。固件确定用户选择的带宽平衡级别是否是最高级别(步骤650)。如果是,则操作转向基于PCIe端点的最大数据速率设置PCIe端点的操作参数的步骤640。如果带宽平衡级别不是最高级别,则固件基于用户选择的带宽平衡级别,计算调整了级别的前端总线的最大数据速率,并且,基于存储各种PCIe端点类型的最小数据速率、各种PCIe端点类型的优先级、以及有关哪些PCIe端点类型具有同步要求的信息的第二数据结构,确定所述端点的最大数据速率(步骤655)。
固件比较PCIe端点的总的最小数据速率与前端总线的调整了级别的最大数据速率(步骤660)。固件确定PCIe端点的总的最小数据速率是否小于或等于前端总线的调整了级别的最大数据速率(步骤665)。如果是这样,则固件使用将诸如MMRS、通道数以及有效负载大小的操作参数与特定数据速率相关的第一表数据结构,来将PCIe端点的操作参数设置为与它们各自的最小数据速率相对应的值(步骤670)。然后,操作终止。
如果PCIe端点的总的最小数据速率并不小于或等于前端总线的调整了级别的最大数据速率,则可以如上所述那样执行多个不同的操作。为了在图6A-6B中示出的示例的目的,基于第二数据结构中的优先级信息,执行的操作涉及:固件产生PCIe端点的优先级列表(步骤680)。然后,固件基于优先级列表减低可用于的PCIe端点的前端总线的带宽(步骤685)。可选择地,调整了级别的前端总线的最大数据速率也可以增加。这种减低和可选的前端总线的调整了级别的最大数据速率的增加可以继续,直到达到期望的性能目标为止,例如,可用于PCIe端点的总的可用的带宽等于或者小于前端总线的调整了级别的最大数据速率(步骤690)。
一旦达到性能目标,固件便基于所确定的PCIe端点的数据速率和在第一表数据结构中指定的对应的参数值,而设置操作参数(步骤695)。由于改变通道数需要系统重启,所以,主要基于各种选项的最大MMRS、以及随后的最大有效负载大小、且最后是通道数,来选择数据值的具体组合。由于PCIe端点的总的最小数据速率并不小于或等于前端总线的调整了级别的最大数据速率,所以,固件可以发送错误消息给管理员工作站等等,以将PCIe端点操作参数的设置的潜在的问题通知给管理员(步骤698)。然后,操作终止。
图7是概述根据一个说明性实施例的、为了平衡带宽而调整具有同步要求的PCIe端点的操作参数的示例性操作的流程图。如图7所示,操作开始于固件执行在第二表数据结构中的查找操作、以确定数据处理系统的任何当前安装的PCIe端点具有同步要求(步骤710)。固件确定是否发现同步PCIe端点(步骤720)。如果不是这样,则操作终止。
如果发现了同步PCIe端点,则固件选择同步PCIe端点中的下一个,并且,基于第二表数据结构中的信息确定最小数据速率和同步端点的优先级(步骤740)。固件确定同步PCIe端点的优先级是否大于数据处理系统中的其它PCIe端点的优先级(步骤750)。如果是这样,则固件设置总线仲裁器,以给予同步端点最高优先级(步骤760)。固件随后基于存储在第一表数据结构中的信息而修改其它PCIe端点的操作参数,以便实现同步PCIe端点的同步要求(步骤770)。
此后,或者如果同步PCIe端点的优先级不大于其它PCIe端点(步骤750),则固件确定这是否是在数据处理系统中发现的最后的同步PCIe端点(步骤780)。如果不是,则操作返回到步骤730。如果这是在数据处理系统中发现的最后的同步PCIe端点,则操作终止。
因此,说明性实施例提供了基于PCIe端点的最大和/或最小数据速率、以及前端总线的最大数据速率,自动调整PCIe端点的操作参数的机制。说明性实施例允许前端总线被完全地利用,并且在数据处理系统的多个PCIe端点上平衡其带宽,同时最小化同步要求问题、以及由于超过了前端总线的带宽而不能保证PCIe端点的性能的情形。
应当注意,当根据作为实现本发明的功能的主要操作元件的固件描述说明性实施例时,本发明并不限于此。相反,如上所述,在不脱离本发明的精神和范围的条件下,说明性实施例的机制可以硬件、软件或者硬件与软件的任意组合的方式实现。
此外,当PCIe端点的操作参数的具体的实例(例如,MMRS、通道数目、有效负载大小)用于说明性实施例的描述时,本发明并不仅限于这些具体操作参数的使用。也可以使用表数据结构中的其它的操作参数等等,以实现本发明的说明性实施例的目的。此外,在不脱离本发明的精神和范围的条件下,说明性实施例不需要表数据结构,并且,以上描述的对应于表数据结构的信息可以除了表之外的各种其它形式提供。
此外,当通过对PCIe端点或者适配器的具体应用来描述说明性实施例时,说明性实施例并不限于此。相反,说明性实施例的机制可以被应用于平衡任何类型的总线或者在端点或者数据的源/接收器之间的数据流量机制的带宽。在不脱离本发明的精神和范围的条件下,例如,使用除了PCIe之外的其它协议的端点或者适配器可以是说明性实施例的机制的主题。
应当理解,说明性实施例可以采用完全的硬件实施例、完全的软件实施例或者包含硬件与软件元素两者的实施例的形式。在一个示例性的实施例中,说明性实施例的机制以软件方式实现,其包括但不限制于固件、驻留软件、微码等等。
此外,说明性实施例可以采用可以从提供由计算机或者任何指令执行系统使用、或者与计算机或者任何指令执行系统结合的程序代码的计算机可用或计算机可读介质访问的计算机程序产品的形式。为了这种描述的目的,计算机可用或者计算机可读介质可以是任何包含、存储、通信、传播或者传输由计算机或者任何指令执行系统使用、或者与计算机或者任何指令执行系统结合的程序的设备。
所述介质可以是电子的、磁的、光的、电磁的、红外的或者半导体系统(或者设备或装置)或者传播介质。计算机可读介质的实例包括半导体或者固态存储器、磁带、可拆卸计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、固体盘和光盘。光盘的现有实例包括致密盘-只读存储器(ROM)、致密盘-读/写(CD-R/W)以及DVD。
适合于存储和/或执行程序代码的数据处理系统将包括至少一个直接或者间接的通过系统总线耦接到存储器元件处理器。存储器元件可以包括在程序代码实际执行期间使用的本地存储器、大容量(bulk)存储器、以及为了减少在执行期间必须从构造存储器获取代码的次数而提供的至少一些程序代码的临时存储的高速缓存存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、定点装置等等)可以完全直接的或者通过介于其间的I/O控制器耦接到系统。网络适配器可以耦接到系统,使得数据处理系统能够通过介于其间的私有或者公共网络耦接到其它数据处理系统或者远端打印机或存储装置。调制解调器、电缆调制解调器、以及以太网卡正是一些当前可用的网络适配器的类型。
为了说明和描述的目的,本发明的描述已经展示出来,但并不是穷尽或限制本发明于披露的形式中。对于本领域的普通技术人员而言,多种修改和改变将是显而易见的。为了最好的解释本发明的原理、实际的应用,并且为了本领域的其它技术人员能够理解具有各种修改的适合于预期的具体应用的各种修改的各种实施例的本发明,而选择并描述了本实施例。

Claims (21)

1、一种在数据处理系统中用于在耦接到数据处理系统的多个端点之间平衡数据处理系统的前端总线的带宽的方法,包括:
确定前端总线的最大数据速率;
确定多个端点的总的最大数据速率;
比较多个端点的总的最大数据速率与前端总线的最大数据速率;
响应于多个端点的总的最大数据速率大于前端总线的最大数据速率,检索多个端点的最小数据速率;以及
基于多个端点的最小数据速率,设置多个端点的操作参数。
2、如权利要求1所述的方法,其中,确定前端总线的最大数据速率的步骤包括以下步骤中的至少一个:从存储最大数据速率值的数据处理系统的寄存器检索最大数据速率值;或者接收对应于前端总线的最大数据速率的值作为至关重要的产品数据的部分。
3、如权利要求1所述的方法,其中,确定多个端点的总的最大数据速率的步骤包括:向多个端点中的每个端点查询它们当前的操作参数设置;基于它们当前的操作参数设置,为多个端点的每个端点确定最大数据速率;以及作为多个端点的每个端点的最大数据速率的总和,计算总的最大数据速率。
4、如权利要求3所述的方法,其中,查询多个端点的每个端点的步骤包括:从行业标准寄存器获得端点的操作参数设置,其中,行业标准寄存器的值是响应于与正在加电的端点相对应的槽而被填充的。
5、如权利要求3所述的方法,其中,基于它们当前的操作参数设置为多个端点的每个端点确定最大数据速率的步骤包括:
使用识别在一个或多个操作参数与最大数据速率的设置之间的相关性的第一数据结构,对多个端点中的每个端点执行查找操作。
6、如权利要求5所述的方法,其中,第一数据结构是三维数据结构,该三维数据结构将多个通道操作参数、有效负载大小操作参数、以及最大存储器读取大小操作参数与最大数据速率相关。
7、如权利要求1所述的方法,其中,如果多个端点的总的最大数据速率小于或者等于前端总线的最大数据速率,则将多个端点的每个端点的操作参数设置为对应于每个端点的最大数据速率的值。
8、如权利要求1所述的方法,其中,检索多个端点的最小数据速率的步骤包括:
使用识别在端点类型、端点优先级、最小数据速率、以及端点是否具有同步要求之间的相关性的第二数据结构,对多个端点中的每个端点执行查找操作。
9、如权利要求1所述的方法,其中,基于多个端点的最小数据速率设置多个端点的操作参数的步骤包括:
检索用户带宽平衡级别值;
基于前端总线的最大数据速率和用户带宽平衡级别值,为前端总线确定调整的数据速率;
比较多个端点的总的最小数据速率与前端总线的调整的数据速率;以及
基于多个端点的总的最小数据速率与前端总线的调整的数据速率的比较结果,而设置多个端点的操作参数。
10、如权利要求9所述的方法,其中,如果多个端点的总的最小数据速率小于或者等于前端总线的调整的数据速率,则基于多个端点的总的最小数据速率与前端总线的调整的数据速率的比较结果设置多个端点的操作参数的步骤包括:
基于对应于端点的最小数据速率,通过在第一数据结构中执行查找操作而为每个端点设置操作参数,其中该第一数据结构识别在一个或多个操作参数和数据速率的设置之间的相关性。
11、如权利要求9所述的方法,其中,如果多个端点的总的最小数据速率大于前端总线的调整的数据速率,则基于多个端点的总的最小数据速率与前端总线的调整的数据速率的比较结果而设置多个端点的操作参数的步骤包括:
使用对应的最小数据速率,基于在第一数据结构中的查找操作,为每个端点设置操作参数;以及
发送错误消息给管理员数据处理装置,以指示在配置数据处理系统中的问题。
12、如权利要求9所述的方法,其中,如果多个端点的总的最小数据速率大于前端总线的调整的数据速率,则基于多个端点的总的最小数据速率与前端总线的调整的数据速率的比较结果而设置多个端点的操作参数的步骤包括:
基于从识别端点优先级的第二数据结构检索的优先级信息,产生多个端点中的端点的优先级列表;以及
基于优先级列表而减少分配给端点的资源,直到多个端点的总的最小数据速率小于或等于前端总线的调整的数据速率为止。
13、如权利要求12所述的方法,其中,在数据处理系统的固件中实现该方法。
14、如权利要求8所述的方法,进一步包括:
基于第二数据结构,识别多个端点中的具有同步要求的一个或多个端点;
基于第二数据结构,确定所述一个或多个端点是否具有最高优先级;以及
设置总线仲裁器,以便对一个或多个端点赋予比多个端点中的其它端点高的对前端总线的优先级。
15、如权利要求14所述的方法,进一步包括:
基于第一数据结构,确定处理与用于一个或多个端点的操作参数设置相对应的有效负载大小的时间;
为多个端点确定理想的有效负载大小,以补偿一个或多个端点的同步要求;以及
调整多个端点中的有效负载大小设置大于理想有效负载大小的端点的操作参数。
16、一种包含具有计算机可读程序的计算机可用介质的计算机程序产品,其中,当在计算装置上执行时,该计算机可读程序使计算装置实现根据权利要求1到15中的任一个所述的方法。
17、一种数据处理系统,包括:
固件;
前端总线;以及
多个耦接到固件和前端总线的端点,其中所述固件:
确定前端总线的最大数据速率;
确定多数端点的总的最大数据速率;
比较多个端点的总的最大数据速率与前端总线的最大数据速率;
响应于多个端点的总的最大数据速率大于前端总线的最大数据速率,检索多个端点的最小数据速率;以及
基于多个端点的最小数据速率,设置多个端点的操作参数。
18、如权利要求17所述的系统,其中,固件通过以下步骤,来基于多个端点的当前的操作参数设置而确定多个端点的每个端点的最大数据速率,所述步骤为:使用识别在一个或多个操作参数与最大数据速率的设置之间的相关性的第一数据结构,对多个端点中的每个端点执行查找操作,并且,其中,第一数据结构是三维数据结构,该三维数据结构将多个通道操作参数、有效负载大小操作参数、以及最大存储器读取大小操作参数与最大数据速率相关。
19、如权利要求18所述的系统,其中,固件通过以下步骤来检索多个端点的最小数据速率:使用识别在端点类型、端点优先级、最小数据速率、以及端点是否具有同步要求之间的相关性的第二数据结构,对多个端点中的每个端点执行查找操作。
20、如权利要求19所述的系统,其中,固件通过以下步骤来基于多个端点的最小数据速率而设置多个端点的操作参数,所述步骤为:
检索用户带宽平衡级别值;
基于前端总线的最大数据速率和用户带宽平衡级别值,为前端总线确定调整的数据速率;
比较多个端点的总的最小数据速率与前端总线的调整的数据速率;以及
基于多个端点的总的最小数据速率与前端总线的调整的数据速率的比较结果,设置多个端点的操作参数。
21、如权利要求17所述的系统,其中固件进一步:
基于第二数据结构,识别多个端点中的具有同步要求的一个或多个端点;
基于第二数据结构,确定所述一个或多个端点是否具有最高优先级;以及
设置总线仲裁器,以便对一个或多个端点赋予比多个端点中的其它端点高的对前端总线的优先级;
基于第一数据结构,确定处理与用于一个或多个端点的操作参数设置相对应的有效负载大小的时间;
为多个端点确定理想的有效负载大小,以补偿一个或多个端点的同步要求;以及
调整多个端点中的有效负载大小设置大于理想有效负载大小的端点的操作参数。
CN2008100922206A 2007-04-17 2008-04-17 平衡快速外围组件互连带宽的系统和方法 Expired - Fee Related CN101290609B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/736,024 US7660925B2 (en) 2007-04-17 2007-04-17 Balancing PCI-express bandwidth
US11/736,024 2007-04-17

Publications (2)

Publication Number Publication Date
CN101290609A true CN101290609A (zh) 2008-10-22
CN101290609B CN101290609B (zh) 2010-08-11

Family

ID=39873366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100922206A Expired - Fee Related CN101290609B (zh) 2007-04-17 2008-04-17 平衡快速外围组件互连带宽的系统和方法

Country Status (2)

Country Link
US (1) US7660925B2 (zh)
CN (1) CN101290609B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102279714A (zh) * 2011-08-26 2011-12-14 上海文广科技(集团)有限公司 Io请求控制方法和装置
CN104583994A (zh) * 2012-08-29 2015-04-29 苹果公司 针对计算机系统中组件的整个网络中的写事务限制带宽
CN103905339B (zh) * 2012-12-28 2017-03-15 祥硕科技股份有限公司 电脑仲裁系统、其带宽分配设备以及方法
CN109471833A (zh) * 2017-09-08 2019-03-15 三星电子株式会社 用于最大化PCIe对等连接的带宽的系统和方法
CN110389917A (zh) * 2018-04-20 2019-10-29 纬颖科技服务股份有限公司 用于图形处理器的存储装置以及配置设定调整方法

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571287B2 (en) 2003-03-13 2009-08-04 Marvell World Trade Ltd. Multiport memory architecture, devices and systems including the same, and methods of using the same
US7660925B2 (en) 2007-04-17 2010-02-09 International Business Machines Corporation Balancing PCI-express bandwidth
US8234425B1 (en) 2007-06-27 2012-07-31 Marvell International Ltd. Arbiter module
US7949817B1 (en) 2007-07-31 2011-05-24 Marvell International Ltd. Adaptive bus profiler
US7653773B2 (en) * 2007-10-03 2010-01-26 International Business Machines Corporation Dynamically balancing bus bandwidth
US8131915B1 (en) 2008-04-11 2012-03-06 Marvell Intentional Ltd. Modifying or overwriting data stored in flash memory
US8683085B1 (en) 2008-05-06 2014-03-25 Marvell International Ltd. USB interface configurable for host or device mode
US20100064080A1 (en) * 2008-09-11 2010-03-11 International Business Machines Corporation Managing pci-express max payload size for legacy operating systems
US8423710B1 (en) 2009-03-23 2013-04-16 Marvell International Ltd. Sequential writes to flash memory
US8213236B1 (en) 2009-04-21 2012-07-03 Marvell International Ltd. Flash memory
US8688922B1 (en) 2010-03-11 2014-04-01 Marvell International Ltd Hardware-supported memory management
US8677180B2 (en) 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8918573B2 (en) 2010-06-23 2014-12-23 International Business Machines Corporation Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment
US8615586B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Discovery of logical images at storage area network endpoints
US8416834B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Spread spectrum wireless communication code for data center environments
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
US8656228B2 (en) 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8745292B2 (en) * 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US8417911B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Associating input/output device requests with memory associated with a logical partition
US8645606B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Upbound input/output expansion request and response processing in a PCIe architecture
US8671287B2 (en) 2010-06-23 2014-03-11 International Business Machines Corporation Redundant power supply configuration for a data center
US8756394B1 (en) 2010-07-07 2014-06-17 Marvell International Ltd. Multi-dimension memory timing tuner
US8539132B2 (en) * 2011-05-16 2013-09-17 Qualcomm Innovation Center, Inc. Method and system for dynamically managing a bus of a portable computing device
US8972611B2 (en) * 2011-08-11 2015-03-03 Cisco Technology, Inc. Multi-server consolidated input/output (IO) device
US8756360B1 (en) * 2011-09-26 2014-06-17 Agilent Technologies, Inc. PCI-E compatible chassis having multi-host capability
JP6017584B2 (ja) * 2011-12-21 2016-11-02 インテル コーポレイション 動的リンク幅調整
TW201349166A (zh) * 2012-05-28 2013-12-01 Hon Hai Prec Ind Co Ltd 匯流排帶寬調整方法及系統
KR20150047785A (ko) * 2013-10-25 2015-05-06 삼성전자주식회사 서버 시스템 및 스토리지 시스템
CN103677745B (zh) * 2013-12-10 2017-01-04 中国船舶重工集团公司第七0九研究所 一种在龙芯主板中写入和读取设备标识的方法
US10007441B2 (en) 2014-04-30 2018-06-26 Hewlett Packard Enterprise Development Lp Storage system bandwidth adjustment
WO2016036374A1 (en) 2014-09-04 2016-03-10 Hewlett Packard Enterprise Development Lp Storage system bandwidth determination
US10432711B1 (en) * 2014-09-15 2019-10-01 Amazon Technologies, Inc. Adaptive endpoint selection
KR102611987B1 (ko) 2015-11-23 2023-12-08 삼성전자주식회사 패브릭 네트워크를 이용한 파워 관리 방법 및 이를 적용하는 패브릭 네트워크 시스템
US10102074B2 (en) 2015-12-01 2018-10-16 International Business Machines Corporation Switching allocation of computer bus lanes
US10296484B2 (en) 2015-12-01 2019-05-21 International Business Machines Corporation Dynamic re-allocation of computer bus lanes
US10331605B2 (en) 2016-08-30 2019-06-25 International Business Machines Corporation Dynamic re-allocation of signal lanes
CN107153553B (zh) * 2017-06-09 2020-09-22 苏州浪潮智能科技有限公司 基于CScripts进行Purley平台CPU端PCIe Tx Eq调整的方法
US11151075B2 (en) * 2018-12-14 2021-10-19 Ati Technologies Ulc Data communications with enhanced speed mode
US11537548B2 (en) 2019-04-24 2022-12-27 Google Llc Bandwidth allocation in asymmetrical switch topologies
CN111930660B (zh) * 2020-07-30 2022-04-15 长沙景嘉微电子股份有限公司 Pcie通路配置方法、装置、终端和介质
US20220182283A1 (en) * 2020-12-04 2022-06-09 Hewlett Packard Enterprise Development Lp Dynamic optimizations of server and network layers of datacenter environments
US11449447B2 (en) 2020-12-31 2022-09-20 Texas Instruments Incorporated Latency and jitter for traffic over PCIe
CN113010462B (zh) * 2021-03-12 2023-02-17 英业达科技有限公司 自动调整PCIe信道配置的电路结构与方法
CN117319214B (zh) * 2023-11-30 2024-04-16 北京象帝先计算技术有限公司 一种pcie传输带宽处理方法、pcie终端设备及电子设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6732219B1 (en) * 2001-02-23 2004-05-04 Hewlett-Packard Development Company, L.P. Dynamic allocation of devices to host controllers
US7177971B2 (en) * 2001-08-24 2007-02-13 Intel Corporation General input/output architecture, protocol and related methods to provide isochronous channels
US6918001B2 (en) * 2002-01-02 2005-07-12 Intel Corporation Point-to-point busing and arrangement
US7136953B1 (en) * 2003-05-07 2006-11-14 Nvidia Corporation Apparatus, system, and method for bus link width optimization
US7782325B2 (en) * 2003-10-22 2010-08-24 Alienware Labs Corporation Motherboard for supporting multiple graphics cards
US7099969B2 (en) * 2003-11-06 2006-08-29 Dell Products L.P. Dynamic reconfiguration of PCI Express links
WO2005091154A1 (en) * 2004-03-19 2005-09-29 Koninklijke Philips Electronics N.V. Simulation circuit of pci express endpoint and downstream port for a pci express switch
US7197591B2 (en) * 2004-06-30 2007-03-27 Intel Corporation Dynamic lane, voltage and frequency adjustment for serial interconnect
US7590065B2 (en) * 2004-08-04 2009-09-15 Microsoft Corporation Equal-opportunity bandwidth regulation
TWI286693B (en) * 2004-11-12 2007-09-11 Via Tech Inc Method for dynamically adjusting the data transfer order of PCI Express root ports
CN1645347B (zh) * 2004-11-15 2010-04-21 威盛电子股份有限公司 动态调整高速周边元件连接接口的根端口传输资料的方法
CN101091347B (zh) * 2004-12-29 2013-09-18 英特尔公司 前向纠错和自动重复请求联合操作的方法和装置
US7287114B2 (en) * 2005-05-10 2007-10-23 Intel Corporation Simulating multiple virtual channels in switched fabric networks
US7539801B2 (en) * 2005-05-27 2009-05-26 Ati Technologies Ulc Computing device with flexibly configurable expansion slots, and method of operation
JP4877482B2 (ja) * 2006-04-11 2012-02-15 日本電気株式会社 PCIExpressリンク、マルチホストコンピュータシステム、およびPCIExpressリンクの再構成方法
US7836352B2 (en) * 2006-06-30 2010-11-16 Intel Corporation Method and apparatus for improving high availability in a PCI express link through predictive failure analysis
US7536490B2 (en) * 2006-07-20 2009-05-19 Via Technologies, Inc. Method for link bandwidth management
US20080256400A1 (en) * 2007-04-16 2008-10-16 Chih-Cheng Yang System and Method for Information Handling System Error Handling
US7660925B2 (en) 2007-04-17 2010-02-09 International Business Machines Corporation Balancing PCI-express bandwidth

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102279714A (zh) * 2011-08-26 2011-12-14 上海文广科技(集团)有限公司 Io请求控制方法和装置
CN102279714B (zh) * 2011-08-26 2014-03-26 上海文广科技(集团)有限公司 Io请求控制方法和装置
CN104583994A (zh) * 2012-08-29 2015-04-29 苹果公司 针对计算机系统中组件的整个网络中的写事务限制带宽
CN104583994B (zh) * 2012-08-29 2017-06-06 苹果公司 针对计算机系统中组件的整个网络中的写事务限制带宽
CN103905339B (zh) * 2012-12-28 2017-03-15 祥硕科技股份有限公司 电脑仲裁系统、其带宽分配设备以及方法
CN109471833A (zh) * 2017-09-08 2019-03-15 三星电子株式会社 用于最大化PCIe对等连接的带宽的系统和方法
CN110389917A (zh) * 2018-04-20 2019-10-29 纬颖科技服务股份有限公司 用于图形处理器的存储装置以及配置设定调整方法
CN110389917B (zh) * 2018-04-20 2020-08-04 纬颖科技服务股份有限公司 用于图形处理器的存储装置以及配置设定调整方法

Also Published As

Publication number Publication date
US7660925B2 (en) 2010-02-09
US20080263246A1 (en) 2008-10-23
CN101290609B (zh) 2010-08-11

Similar Documents

Publication Publication Date Title
CN101290609B (zh) 平衡快速外围组件互连带宽的系统和方法
CN101404608B (zh) 动态地平衡带宽的方法和装置
CN100583046C (zh) 用于单根无状态虚拟功能迁移的系统和方法
CN101221544B (zh) 用于执行dma块移动的方法及dma设备
CN101206632B (zh) 用套接字连接和共享存储器在主机系统间通信的系统和方法
CN101206629B (zh) 在运行的PCIe架构中热插/拔新组件的系统和方法
CN101206633B (zh) 用事务协议和共享存储器在主机系统间通信的系统和方法
TWI570563B (zh) 後置中斷架構
CN107278299B (zh) 经由可重配置的虚拟交换机实现次级总线功能性的方法、装置和系统
CN101206634B (zh) 用于初始化共享存储器的系统和方法
CN108337910B (zh) 用于软件定义的互连交换机的架构
US8380883B2 (en) Resource sharing expansion card
CN101221543B (zh) 执行dma块移动的方法、dma设备和数据处理系统
US10621138B2 (en) Network communications using pooled memory in rack-scale architecture
CN100429636C (zh) 管理共享输入/输出结构的地址空间的方法、系统和设备
US7356636B2 (en) Virtualized PCI switch
CN113434446A (zh) 灵活总线协议协商和启用序列
CN108604209B (zh) 扁平化端口桥
CN108292267B (zh) 用于配置装置的方法、系统和设备
CN101416161B (zh) 在分区环境中显露设备特征
US20090113082A1 (en) Device, System, and Method of Speculative Packet Transmission
CN110633241A (zh) 用于非对称接口的动态高速通道方向切换的系统、方法和装置
CN102119508A (zh) 将交换机层级结构后面的多功能设备呈现为单功能设备
Quintero et al. IBM Power Systems 775 for AIX and Linux HPC solution
WO2014035584A1 (en) Limiting bandwidth for write transactions across networks of components in computer systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100811

Termination date: 20150417

EXPY Termination of patent right or utility model