对用于快速pci高速多功能设备地址解码的数据解码的利记博彩app
【专利摘要】一种利用目标函数数据查找表的快速PCIe多功能设备地址解码的装置和方法。在PCIe请求分组内提供一个或者多个解码指示(例如,作为目标的函数),由此消除在端点设备中在解码过程期间对于目标函数搜索的需要。这支持单个解码器在复杂的多功能设备中的单步解码实现。
【专利说明】对用于快速PCI高速多功能设备地址解码的数据解码
【技术领域】
[0001]本发明涉及数据通信领域,并且更特别地涉及一种利用目标函数数据查找表的快速PCIe多功能设备地址解码的装置和方法。
【背景技术】
[0002]外围部件互联高速(PCIe)是被设计用于旧的PC1、PC1-X和AGP总线标准的计算机扩展卡标准。PCIe标准的当前版本支持硬件I/O虚拟化。PCIe基于点对点拓扑,其中分离的串行链路将每个设备连接到根联合体(root complex)(主机)。PCIe总线链路支持在任何两个端点(endpoint)之间的全双工通信,而对跨多个端点的并发访问没有限制。PCIe通信被封装在分组中,其中对数据和状态消息流量分组化和解分组化的工作由PCIe端口的事务层处理。
【发明内容】
[0003]因此,根据本发明提供了一种PCI高速(PCIe)地址解码的方法,该方法包括:在PCIe主机中提供查找表,查找表操作用于执行从地址范围向目标函数的映射;以及利用查找表,向PCIe端点发送地址和建议的目标函数;在PCIe端点利用建议的目标函数对接收的地址解码;以及核实建议的目标函数信息。
[0004]还根据本发明提供了一种用于在PCI高速(PCIe)主机中使用的PCIe地址解码的方法,该方法包括:接收PCIe请求,每个PCIe请求具有地址;根据每个所述地址确定目标设备函数;以及向被发布给PCIe端点的请求指派目标函数。
[0005]还根据本发明提供了一种用于在PCI高速(PCIe)主机中使用的PCIe地址解码的方法,该方法包括:在PCIe总线初始化阶段期间扫描PCIe设备和函数;向函数指派地址范围;以及构建向目标函数映射地址范围的查找表。
[0006]还根据本发明提供了一种用于在PCI高速(PCIe)主机中使用的PCIe地址解码的方法,该方法包括:接收来自PCIe主机的读取/写入请求分组;确定请求分组是否包括建议的目标函数数据;以及如果是的话,验证在所述分组中接收的所述目标函数数据。
【专利附图】
【附图说明】
[0007]在此仅通过示例的方式参考附图描述本发明,在附图中:
[0008]图1是图示了示例PCIe网络的框图,该PCIe网络并入了本发明的PCIe快速地址解码机制;
[0009]图2是图示了用于PCIe端点中的地址解码的第一示例并行方式的示图;
[0010]图3是图示了用于PCIe端点中的地址解码的第一示例依序方式的示图;
[0011]图4是图示了用于PCIe端点中的地址解码的第三示例并行解码数据方式的示图;
[0012]图5是图示了本发明的PCIe快速地址解码方法的流程图。
【具体实施方式】
[0013]对PCI高速(PCIe)标准的当前增强(比如交替请求者ID解译(ARI)和单根I/O虚拟化(SR-1OV))在单个PCIe上引入了提高了水平的多功能应用集成。此类应用利用在被实施于设备上的各种函数之间共享的到主机的共同PCIe连接。在图1中示出了图示了示例PCIe网络的系统视图,该PCIe网络并入了本发明的PCIe快速地址解码机制。
[0014]被一般地识别为10的系统包括PCI主机12、PCIe交换机22和多个PCIe端点24。PCIe交换机22经由PCI链路20连接到PCIe主机和端点。PCIe主机12包括一个或者多个处理器核14和包括到函数映射表18的地址的PCIe根联合体16。PCIe端点24包括地址解码电路26、多个函数0、1、".Ν28和多个配置空间29。
[0015]每个函数28实施其自己的PCIe配置29,该PCIe配置29提供在函数的操作之上的标准控制手段。函数的配置空间逻辑的大部分致力于配置和控制向这一函数指派的地址区域。每个传入事务穿过地址解码逻辑以便确定目标设备。PCIe标准允许地址空间指派和编程中的重要灵活性,从而导致针对每个函数需要的复杂地址解码逻辑。
[0016]利用提高了水平的多功能应用集成,逻辑设计者在实施快速和高效的地址解码中面对挑战。一种方式是执行如在图2中所示的并行解码方式。被一般地引用为30的该并行方案包括多个配置空间F0、FU…、Fn34、BAR解码器32和RX地址信息38。RX地址被同时向所有BAR解码器应用以生成解码的函数/BAR36。
[0017]利用并行解码方式,PCI端点设备针对每个函数实施专用的解码逻辑(BAR解码器)。在单个步骤中为所有函数并行执行地址解码。这种方式要求使用许多解码逻辑实例,从而导致具有潜在的控制信号路由问题的非常大的解码逻辑尺寸。
[0018]第二方式是执行如在图3中所示的依序地址解码。被一般地引用为40的该依序方案包括多个配置空间H)、F1、...、Fn46、串行BAR选择复用器44和BAR解码器42。串行BAR选择复用器接收来自配置空间46和选择控制52的数据。BAR解码器电路42接收在读取/写入请求分组中接收的RX地址信息48和串行BAR选择复用器的输出并且操作用于生成解码的函数/BAR50。串行BAR选择复用器依序选择函数配置空间数据中的每个函数配置空间数据以用于由BAR解码器42匹配。
[0019]利用依序解码方式,端点为每个支持的函数执行地址解码直至目标函数被标识。使用单个共享的地址解码器42执行地址解码。地址解码在多个步骤中被执行,由此在每个步骤中,函数之一向解码器中加载它的地址配置46并且解码结果被评估。解码序列在积极解码(positive decode)被确定时停止。虽然这种方式利用了最小逻辑资源,但是它要求重大解码延时,从而导致带宽退化。
[0020]在第三方式中,在PCIe请求头部内提供一个或者多个解码指示(decodedirective)(例如,作为目标的函数),由此消除了在端点中在解码过程期间对于目标函数搜索的需要。这支持单个解码器在复杂的多功能设备中的单步解码实现。
[0021]在图4中示出了图示了用于PCIe端点中的地址解码的第三示例并行解码数据方式的示图。被一般地引用为60的该解码数据方案包括多个配置空间R)、F1、...、Fn66、BAR选择复用器64和BAR解码器62。BAR选择复用器接收来自配置空间66的数据并且直接使用从主机接收的选择地址配置之一的扩展的解码数据70。BAR解码器62接收在读取/写入请求分组中接收的RX地址信息68和BAR选择复用器64的输出并且操作用于生成确认的(验证的)函数/BAR72。BAR选择复用器选择函数配置空间数据以用于由BAR解码器62匹配(验证)。
[0022]在一个实施例中,根据解码数据机制,PCIe主机(或者任何其他请求者)在PCIe请求分组中包括目标函数数据。端点中的PCIe函数实施配置空间能力,该配置空间能力提供在使用在请求中的目标函数解码信息之上的控制。注意,这一特征可以是可选的。因此,并不实施解码数据机制的设备简单地忽略读取/写入请求分组中的目标函数数据并且使用在前描述的并行方案或者依序方案执行地址解码。
[0023]在图5中示出了图示了本发明的PCIe快速地址解码方法的流程图。PCIe端点设备接收PCIe读取/写入请求(步骤80)。分组的内容然后被验证为被正常执行(步骤82)PCIe端点检查目标函数数据是否已被包括在请求分组中(步骤84)。
[0024]PCIe端点然后检查目标函数数据的使用是否被支持(步骤86)。注意,在一个实施例中,解码数据特征可以通过在设备配置空间中设置标记被控制。如果目标函数数据未被包括在请求分组中或者目标函数数据的使用在设备配置空间中未被支持,则端点设备使用在前描述的并行方案或者依序方案执行地址解码序列(例如,在依序方案中,端点为每个支持的函数执行地址解码直至目标函数被标识)(步骤92)。
[0025]如果目标函数存在于请求分组中并且目标函数数据的使用在设备配置空间中被支持,则端点设备检查请求地址是否与建议的目标函数的地址范围之一匹配(步骤88)。如果目标函数地址被积极地检测到,则地址解码被验证并且完成(步骤90)。如果地址范围不再解码的配置函数地址内,则设备端点可以采取进一步的行动,包括例如由于目标函数数据的错误使用而报告错误或者尝试并行或者依序地址解码。
[0026]注意,PCIe主机如何执行地址范围到目标函数映射以及目标函数信息如何被传达到端点并非关键。在一个实施例中,请求发起器(例如,PCIe主机)在PCIe总线初始化阶段期间在PCIe地址范围和目标设备/函数之间创建映射。在这一初始化阶段期间,主机软件扫描所有PCIe设备和函数从而询问它们的地址范围要求并且随后指派地址范围。在这一阶段期间,在主机中构建在地址范围和目标函数之间的表链接。这一查找表然后用于向被发布给PCIe端点的请求指派目标函数属性。
[0027]目标函数数据按照任何适当的方式被并入PCIe请求中,以下呈现了若干可能的示例。
[0028]在第一方案中,部分或者完整目标函数数据被包括在被正常保留的PCIe请求头部比特中。在第二方案中,PCIe头部扩展机制被用来容纳函数解码数据。在第三方案中,目标函数数据被包括在数据负载内,其中定义的头部字段指示目标数据在负载中的存在。在第四方案中,目标数据代替被包括在请求分组的末尾处的端到端循环冗余校验(ECRC)元数据。
[0029]以下描述用于构建根端口查找表以及确定目标函数号码的不例方法的描述。在一个实施例中,根端口实施固定尺寸查找表,该固定尺寸查找表保持用于地址范围的具有关键延时要求的子集的地址到函数号码解译。对其他函数的请求在没有函数解码的情况下被发送。注意,这可能由于穿过依序解码路径而引发更高的处理延时。
[0030]第一,主机软件针对地址范围要求(例如,针对每个设备/函数的范围的数目和范围大小)扫描所有PCIe设备的配置空间。注意,典型地这是标准PCIe过程。第二,主机软件创建存储器映射从而向设备/函数指派地址范围并且向函数的配置空间写入基地址值。第三,主机软件随着PCIe范围被指派为所有PCIe范围创建完整地址到函数映射表。该表被存储在主存储器中。
[0031]接着,主机软件为性能关键函数利用地址到函数号码映射初始化根端口映射表。该表可以被飞速(on the fly)更新/重载以支持改变的系统要求。接着,根端口映射表可以充当本地高速缓存。例如,如果请求未在根端口映射表中找到函数信息,则它的地址被捕获并且软件例程被调用以确定具有用于这种类型的请求的转译是否关键。如果软件或者其他机制决定需要该转译,则函数信息从主存储器中的映射表被取读并且存储在本地根端口表中。如果表为满,则现存条目之一可以被删除。
[0032]在一个实施例中,根端口查找表条目结构包括以下各项:(1)有效比特;(2)基地址(例如,上至64比特);(3)范围大小,其是系统依赖的并且作用以指示范围大小的log2值(假设范围总是2的幂);以及⑷目标函数信息(例如,上至16比特)。
[0033]这里使用的术语仅出于描述特定实施例的目的并且并不旨在于限制本发明。如这里所使用的,单数形式的“一”、“一个”和“该”旨在于也包括复数形式,除非上下文明确地另有指示。还将理解,术语“包括”和/或“包含”当在本说明书中被使用时指定所陈述的特征、整体、步骤、操作、元件和/或部件的存在,但并不排除一个或者多个其他特征、整体、步骤、操作、元件、部件和/或其分组的存在或添加。
[0034]以下权利要求中的所有装置或者步骤加功能元素的对应结构、材料、动作和等效物旨在于包括用于结合如具体要求保护的其他要求保护的元素执行功能的任何结构、材料或者动作。本发明的描述已经出于例示和描述的目的而被呈现,但是并非旨在于是穷尽的或者限于按照所公开形式的本发明。由于本领域技术人员将容易地想起许多修改和改变,因此本发明旨在于并未限于这里描述的有限数目的实施例。因此,将领会到,可以借助的所有适当变型、修改和等效物落入本发明的范围内。实施例被选择和描述以便最佳地说明本发明的原理和实际应用,以及使得本领域普通技术人员能够理解如适合于所预期的特定使用的、对于具有各种修改的各种实施例的本发明。
【权利要求】
1.一种PCI高速(PCIe)地址解码的方法,所述方法包括,在PCIe主机中: 接收PCIe请求,每个PCIe请求具有地址; 根据每个所述地址确定目标设备函数;以及 向被发布给PCIe端点的请求指派所述目标函数。
2.根据权利要求1所述的方法,所述方法包括,在PCIe主机中: 在PCIe总线初始化阶段期间扫描PCIe设备和函数; 向函数指派地址范围;以及 构建向所述目标函数映射所述地址范围的查找表。
3.根据权利要求2所述的方法,还包括利用所述查找表以根据PCI请求地址确定目标设备函数。
4.根据权利要求3所述的方法,还包括向PCIe端点发送并入了所述请求地址和所述目标函数信息的PCIe读取/写入请求分组。
5.根据任一前述权利要求所述的方法,所述方法包括,在PCIe端点中: 接收来自PCIe主机的读取/写入请求分组; 确定所述请求分组是否包括建议的目标函数数据;以及 如果是的话,验证在所述分组中接收的所述目标函数数据。
6.根据权利要求5所述的方法,其中所述目标函数数据针对于基地址寄存器(BAR)内容被验证。
7.根据权利要求5所述的方法,其中使用正常保留的头部比特向所述端点传达所述目标函数信息。
8.根据权利要求5所述的方法,其中使用PCIe头部扩展向所述端点传达所述目标函数信息。
9.根据权利要求5所述的方法,其中在数据负载内向所述端点传达所述目标函数信息,所述数据负载在对应的头部中具有指示目标函数信息在所述负载中存在的字段。
10.根据权利要求14所述的方法,其中向所述端点传达所述目标函数信息以代替在分组的末尾处被正常包括的端到端循环冗余校验(ECRC)元数据。
11.根据权利要求1所述的方法,所述方法包括: 在PCIe主机中提供查找表,所述查找表操作用于执行从地址范围向目标函数的映射;以及 利用所述查找表,向PCIe端点发送地址和建议的目标函数; 在所述PCIe端点利用所述建议的目标函数对接收的所述地址解码;以及 核实建议的目标函数信息。
12.根据权利要求1或11所述的方法,其中使用正常保留的头部比特向所述端点传达所述目标函数信息。
13.根据权利要求1或11所述的方法,其中使用PCIe头部扩展向所述端点传达所述目标函数信息。
14.根据权利要求1或11所述的方法,其中在数据负载内向所述端点传达所述目标函数信息,所述数据负载在对应的头部中具有指示目标函数信息在所述负载中存在的字段。
15.根据权利要求14所述的方法,其中向所述端点传达所述目标函数信息以代替在分 组的末尾处被正常包括的端到端循环冗余校验(ECRC)元数据。
【文档编号】G06F13/38GK104169897SQ201380012163
【公开日】2014年11月26日 申请日期:2013年2月25日 优先权日:2012年3月2日
【发明者】I·格拉诺维斯基, E·阿达 申请人:国际商业机器公司