CN117978775A - Pci-e非透明桥的地址转换方法、装置、设备及介质 - Google Patents

Pci-e非透明桥的地址转换方法、装置、设备及介质 Download PDF

Info

Publication number
CN117978775A
CN117978775A CN202410148710.2A CN202410148710A CN117978775A CN 117978775 A CN117978775 A CN 117978775A CN 202410148710 A CN202410148710 A CN 202410148710A CN 117978775 A CN117978775 A CN 117978775A
Authority
CN
China
Prior art keywords
address
transaction layer
data packet
layer data
prefix
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.)
Pending
Application number
CN202410148710.2A
Other languages
English (en)
Inventor
石俊斌
李树青
孙华锦
张磊
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.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
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 Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202410148710.2A priority Critical patent/CN117978775A/zh
Publication of CN117978775A publication Critical patent/CN117978775A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2596Translation of addresses of the same type other than IP, e.g. translation from MAC to MAC addresses
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种PCI‑E非透明桥的地址转换方法、装置、设备及介质,涉及计算机技术领域。该方法包括:获取事务层数据包,并判断事务层数据包中是否携带事务层数据包前缀;若事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息;当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址;基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。通过本申请的技术方案,极大地拓展了PCI‑E域之间的空间映射能力。

Description

PCI-E非透明桥的地址转换方法、装置、设备及介质
技术领域
本发明涉及计算机技术领域,特别涉及一种PCI-E非透明桥的地址转换方法、装置、设备及介质。
背景技术
PCI-E(Peripheral Component Interconnect Express),即快速外设组件互联,是高性能、通用的I/O(Input/Output,输入/输出)互连,为各种未来的计算和通信平台而定义。PCI-E架构定义了通过PCI-PCI桥之间相互连接的总线层次结构,这种层次结构形成一棵树,称为PCI-E域。当前许多的应用场景例如多主机系统冗余(Host systemredundancy)、主机故障转移(Host Failover)、智能适配器模式(Intelligent Adaptermodel)等,需要将两个独立的PCI-E域互连起来,为了解决跨PCI-E拓扑结构域的访问,引入了NTB(Non-Transparent-Bridge,非透明桥)实现域间通讯。
NTB的结构如图1所示,由两个PCI-E功能(NT Endpoint)组成,并通过桥接功能相互连接。这两个0型PCI-E功能被称为非透明(NT)端点(又称NT功能),每个功能使用PCI-E基地址寄存器(BAR)公布一个或多个内存窗口。NT功能支持直接地址转换和查找表地址转换。对于直接地址转换模式,因为在PCI-E域中BAR数量有限,而每个BAR地址空间只能一对一地映射到目标地址空间并且要求各自的地址是连续的,无法实现一个BAR空间向多个目标空间映射的功能,导致只能映射到很有限的Target host(目标主机)存储空间或Device(设备),使用受限。对于查找表地址转换模式,虽然能够实现将连续的地址空间映射到多个离散的目标地址的功能,其本质是将连续的大空间划分为多个小空间,导致每个目标的空间缩减,而且地址的划片数量和Index(索引)位数相关且通常是固定的。例如Index为六位,那么会将空间等比例划分为64份,哪怕只需映射到很少的几个目标空间,但BAR空间的分配并不会因此而减少。举例来说,如果目标窗口大小为10M,源端的BAR空间就需要640M的连续空间。可见,当前的PCI-E域之间的空间映射能力存在一定缺陷,在实际应用中其实现方式效果并不理想。
发明内容
有鉴于此,本发明的目的在于提供一种PCI-E非透明桥的地址转换方法、装置、设备及介质,能够极大地拓展PCI-E域之间的空间映射能力,实现在有限的BAR空间上,从小窗口到大窗口或者由单个窗口到多个窗口的转换。其具体方案如下:
第一方面,本申请公开了一种PCI-E非透明桥的地址转换方法,包括:
获取事务层数据包,并判断所述事务层数据包中是否携带事务层数据包前缀;
若所述事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息;
当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址;
基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。
可选的,所述按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息,包括:
将所述事务层数据包前缀中的第一个字节中的格式字段定义为第一预设值,并将所述第一个字节中的类型字段定义为第二预设值;
将所述事务层数据包前缀中的第二个字节定义为预设固定值;
将所述事务层数据包前缀中的第三个字节和第四个字节定义为非透明桥地址转换选择字段,以便通过所述非透明桥地址转换选择字段确定转换基地址寄存器中存储的地址转换信息。
可选的,所述判断所述事务层数据包中是否携带事务层数据包前缀之后,还包括:
当所述事务层数据包没有携带所述事务层数据包前缀时,确定当前地址转换模式的模式类型;
如果当前地址转换模式为直接地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据基准地址寄存器的内存窗口中的地址,将所述原始地址的基地址替换为相应的转换基地址寄存器的内容以得到第一翻译地址,并将所述原始地址的偏移量添加至所述第一翻译地址以得到第一转换后的事务层数据包地址,以便利用当前所述第一转换后的事务层数据包地址将所述事务层数据包转发至目标域;
如果当前地址转换模式为查找表地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据基准地址寄存器的内存窗口中的地址,利用所述原始地址的索引确定查找表中的目标表项,将所述原始地址的基地址和所述原始地址的索引替换为与所述目标表项对应的转换基地址寄存器的内容以得到第二翻译地址,并将所述原始地址的偏移量添加至所述第二翻译地址以得到第二转换后的事务层数据包地址,以便利用当前所述第二转换后的事务层数据包地址将所述事务层数据包转发至目标域。
可选的,所述当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址之前,还包括:
确定所述事务层数据包中在所述第一个字节中的阻塞位处于关闭状态的目标事务层数据包;
对所述目标事务层数据包进行合法性校验,并对校验不通过的目标事务层数据包进行丢弃。
可选的,所述当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址,包括:
当所述事务层数据包到达非透明端点的端口时,如果当前地址转换模式为直接地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据所述非透明桥地址转换选择字段确定转换表的入口,并利用与所述转换表的入口对应的转换基地址寄存器的内容替换所述原始地址的基地址以得到第三翻译地址,并将所述原始地址的偏移量添加至所述第三翻译地址以得到第三转换后的事务层数据包地址;其中,所述转换表的表项的长度根据所述目标域的大小和数量确定;
当所述事务层数据包到达非透明端点的端口时,如果当前地址转换模式为查找表地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据所述非透明桥地址转换选择字段确定转换表的入口,并利用与所述转换表的入口对应的索引确定查找表中的目标表项,将所述原始地址的基地址和所述原始地址的索引替换为与所述目标表项对应的转换基地址寄存器的内容以得到第四翻译地址,并将所述原始地址的偏移量添加至所述第四翻译地址以得到第四转换后的事务层数据包地址。
可选的,所述当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址之后,还包括:
去除所述事务层数据包前缀;
相应的,所述基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域,包括:
基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将去除了所述事务层数据包前缀的所述事务层数据包转发至目标域。
可选的,所述基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域,包括:
基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标主机的内存,或目标端点设备的基准地址寄存器的地址空间。
第二方面,本申请公开了一种PCI-E非透明桥的地址转换装置,包括:
数据包获取模块,用于获取事务层数据包,并判断所述事务层数据包中是否携带事务层数据包前缀;
前缀定义模块,用于若所述事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息;
地址转换模块,用于当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址;
数据包转发模块,用于基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。
第三方面,本申请公开了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如前所述的PCI-E非透明桥的地址转换方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如前所述的PCI-E非透明桥的地址转换方法。
本申请提供了一种PCI-E非透明桥的地址转换方法,包括:获取事务层数据包,并判断所述事务层数据包中是否携带事务层数据包前缀;若所述事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息;当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址;基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。
本申请的有益技术效果为:通过对事务层数据包的前缀进行预定义,使得事务层数据包前缀中携带有地址转换信息。当事务层数据包到达非透明桥的非透明端口时,能够根据地址转换信息灵活选择动态翻译映射表,将BAR空间动态地转换到多个窗口,这些窗口可以是连续的,也可以是分散的,从而实现在有限的BAR空间上,实现从小窗口到大窗口,或者由单个窗口到多个窗口的转换,极大地拓展了PCI-E域之间的地址映射能力。
此外,本申请提供的一种PCI-E非透明桥的地址转换装置、设备及存储介质,与上述PCI-E非透明桥的地址转换方法对应,效果同上。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种非透明网桥示意图;
图2为本申请公开的一种PCI-E拓扑结构示意图;
图3为本申请公开的一种交换机内部逻辑框图;
图4为本申请公开的一种非透明网桥连接两个PCI-E域的示意图;
图5为本申请公开的一种NT端口地址转换示意图;
图6为本申请公开的一种执行请求者ID转换示意图;
图7为本申请公开的一种直接地址转换示意图;
图8为本申请公开的一种直接转化模式地址映射示意图;
图9为本申请公开的一种查找表地址转换示意图;
图10为本申请公开的一种查找表转换模式地址映射示意图;
图11为本申请公开的一种PCI-E非透明桥的地址转换方法流程图;
图12为本申请公开的一种TLP数据包示意图;
图13为本申请公开的一种TLP数据Format与Type字段示意图;
图14为本申请公开的一种转换基地址寄存器事务层数据包前缀示意图;
图15为本申请公开的一种NTB直接地址转换示意图;
图16为本申请公开的一种内存请求事务层数据包头部格式示意图;
图17为本申请公开的一种NTB直接地址转换地址映射示意图;
图18为本申请公开的一种NTB查找表地址转换示意图;
图19为本申请公开的一种PCI-E非透明桥的地址转换装置结构示意图;
图20为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对一些关键术语解释如下:
PCI:Peripheral Component Interconnect,即外围设备互联,是由PCISIG(PCISpecial Interest Group)推出的局部并行总线标准。
PCI Express/PCI-E:Peripheral Component Interconnect Express,即快速外设组件互联,适用于工作站、服务器、通信平台和嵌入式设备,能够使用PCI系统配置软件实现枚举和配置PCI Express硬件而无需进行修改。PCI Express是高性能、通用的I/O互连,为各种未来的计算和通信平台而定义,关键的PCI属性,如其使用模型、负载存储架构和软件接口被保留下来,而其并行总线的实现被高度可扩展的完全串行接口所取代。PCIExpress利用点对点互连、基于交换机的技术和分组协议,提供全新的性能和功能水平。
Logical Bus:逻辑总线。在配置空间中具有相同总线编号的设备集合之间的逻辑连接。
Device:设备。层次结构中一个或多个功能的集合,由共同的总线号和设备号识别。
Function:功能。在设备中,配置空间中的一个可寻址实体,用于指多功能设备中的一个功能或指单功能设备中的唯一功能。Bus、Device、Function即BDF,用于PCI-E基于ID的寻址。
Configuration Space:配置空间,PCI Express架构中的四个地址空间之一。用于配置功能,具有配置空间地址的数据包。四个地址空间分别为:内存空间、I/O空间、配置空间,以及Message信息。
Hierarchy:层次结构。树状结构的PCI Express I/O互连拓扑结构,其中用于路由、请求者、完成者识别的配置空间地址(ID)是唯一的。
Requester ID:请求者ID。是请求者的总线号、设备号和功能号的组合。
Completer ID:完成者ID。是完成者的总线号、设备号和功能号的组合。
Routing ID:路由ID。请求者ID或者完成者ID用于识别PCI Express功能。
Transaction ID:交易ID。交易描述符的一个组成部分,包括Requester ID、以及Tag(标签)。
Port:端口。从逻辑上讲是一个组件和PCI Express链接之间的接口;从物理上讲是位于同一芯片上的一组发射器和接收器,定义了一个链接。
Endpoint(简称EP),即端点,为协议定义的系统元素,是具有00h型配置空间头的功能。
Root Complex(RC),根复合体。协议定义的系统元素,包括至少一个主机桥、根端口、或根综合体集成端点。
Host Bridge:主机桥。根复合体RC的组成部分,用于将主机CPU(CentralProcessing Unit,中央处理器)连接到层次结构上。
Switch:交换机。协议定义的系统元素,连接两个或多个端口,允许数据包从一个端口路由到另一个。对于配置软件来说,交换机就像一个虚拟PCI-to-PCI桥的集合。
BAR:Base Address Register,基准地址寄存器。存在于配置空间内,用于确定某个function所需要的系统内存空间的数量,并为映射到功能内存空间提供基准地址。基准地址寄存器可以映射到内存空间或I/O空间。
TLP:Transaction Layer Packet,即PCI Express架构中的事务层数据包。它负责整个通信链路上的数据传输。PCI-E协议将事务层的数据主要分割为两类:Request和Completion。每个TLP会包含Header头部字段,标示出有效载荷(Payload)中数据的属性;以及其传输方式(例如读请求、写请求等)。其中,Request TLP用于发起读写请求;CompletionTLP则用于响应这些请求。在PCI-E系统中,TLP就像是“邮寄包裹”,用于保证信息从源端发送到目的端并可靠地被执行和反馈。
TLP Prefix:TLP前缀。TLP Prefix功能是协议可选的,实现方法为通过在TLPHeader之前附加一个或多个DW(代表一个双字,32bit)的前缀数据来使TLP携带更多额外的信息,从而实现TLP PH、PASID、MR-IOV以及Vendor自定义的功能。
NTB:Non-Transparent Bridge,即非透明桥。是PCI Express架构中使用的桥接技术,它的主要作用是连接两个或更多的独立的PCI-E地址域,使之能够彼此通信和共享资源。
其次,本实施例中对当前通过BAR实现PCI-E域之间的空间映射的相关技术进行详细说明。
如图2所示为PCI-E基本的拓扑结构。原生PCI Express系统中有三种基本设备类型:Root Complex(RC,根聚合体):在PCI-E树中只有一个Root Complex,是CPU、Memory、PCI-E Bus之间通信的枢纽并实现各类外设总线的聚合;Switch:连接RC以及多个EndpointDevices,亦可通过Switch的级联使得PCI-E具有良好的扩展性;Endpoint:接入到PCI-EBus上的PCI-E Device,分为两种类型:PCI-E Endpoint和Legacy Endpoint。图2中,PCI/PCI-X Bridge作为PCI/PCI-X Bus和PCI-E Bus之间的桥接,以此支持标准的PCI/PCI-XDevices。
其中,Switch是体现PCI-E可扩展性以及正确寻址路由的关键组件。如图3所示,其内部的核心是Virtual PCI-PCI Bridge,即P2P桥,用于Bus之间的连接以及TLP数据包的路由。因此,通过Switch之间的级联,除了实现端口的扩展,还通过总线的互联拓展了链路,形成包括众多Bus、Device的树型拓扑结构。PCI-E架构定义了通过PCI-PCI桥互相连接的总线层次结构,这种层次结构形成一棵树,称为PCI-E域。PCI-E域由单个内存地址空间、I/O地址空间和ID地址空间组成。PCI-E ID由总线、设备和功能编号组成,唯一定义域中的元素,即BDF(Bus Number、Device Number、Function Number)。
作为主机的Host,CPU可以通过地址路由或者ID路由访问拓扑中的所有Device设备。在此过程Switch中的P2P桥进行数据包的路由与转发,但不会修改数据包中的地址和ID,因此也称作透明桥,即TB(Transparent Bridge)。
通过上述PCI-E Switch的拓展,使得在PCI-E域内可以实现高效的通信。但许多的应用场景,例如多主机系统冗余、主机故障转移、智能适配器模式等就需将两个独立的PCI-E域互连起来。为了解决跨PCI-E拓扑结构域的访问,引入了NTB的方法,通过非透明网桥(NTB或NT桥)可以实现这种域间通讯。
如图4所示,Station X和Station Y为两个独立的PCI-E域空间,相互之间通过NTB进行互联。NTB由两个背对背的NT(Non-Transparent)端点组成的,一个是虚拟侧端点(Virtual Endpoint),一个是链接侧端点(Link Endpoint)。图中,链接侧端点由主机HostX枚举发现,虚拟侧端点由列举内部虚拟PCI总线的主机Host Y发现。也就是说,NTB将两个独立的地址/主机域进行了地址隔离与连接。
图1中展示的NTB的结构由两个PCI-E功能(NT Endpoint)组成,并通过桥接功能相互连接。这两个0型PCI-E功能被称为非透明端点(NT端点,又称NT功能),每个功能使用PCI-E基地址寄存器(BAR)公布一个或多个内存窗口。以NT端点定义的内存窗口为目标的内存请求操作,会在PCI-E域内路由到该端点。当非透明桥接器接收到针对BAR的内存操作时,它会将事务地址转换为对方域中的新地址并将事务转发到对方域;完成(Completions)TLP包的处理方式与此类似。
如图5所示,当TLP包到达链接侧端点,其TLP address(如图中0x1000)如果落入配置的BAR地址空间Window中,则NT功能进行地址翻译转换为0x2000并转发到Virtual域。相反的方向处理方式相同。需要注意的是,PCI-E标准定义了四种事务类型:内存读写、IO读写、配置读写以及消息。内存读写与IO读写请求,事务为地址路由、Completions TLP为ID路由,因此在地址转换的同时还会进行ID的转换。当NT端点收到请求TLP时,将执行请求者ID查找和转换操作。总线字段由目标NT端点的捕获总线号替换,设备字段和功能字段用映射表匹配项号替换。如图6所示,因为不是本发明重点,不再详述。
NT功能支持直接地址转换和查找表地址转换。
直接地址转换逻辑如图7所示。当NTB端点接收到事务层数据包(TLP)时,从PCI-E事务层数据包中提取地址字段;将地址和类型与BAR0至BAR6进行比较;如果地址位于其中一个BAR的窗口(Window)大小内,则原始地址的基地址被替换为相应的转换基地址寄存器(Translate)的内容。在数据包转发到目标NTB端点之前,原始地址偏移被添加到翻译地址中。如果地址在BAR0至BAR6中找不到匹配,则丢弃数据包。例如,如图8所示为直接地址转换模式从Primary域到Secondary域的地址映射。
查找表地址转换逻辑如图9所示。在查找表地址转换中,地址字段在逻辑上分为基地址、索引和偏移量。基地址用于比较BAR寄存器;索引用于指定查找表中的一个条目;偏移量是内存窗口中的偏移地址。当NTB端点接收到数据包时,从PCI-E事务层数据包中提取地址字段;将基址和类型与BAR0至BAR6进行比较;如果地址在BAR窗口(Window)大小内,则基地址和原始地址的索引将被索引指向的相应查找表项(包含翻译后的基地址)的内容替换。在数据包被转发到查找表项中指定的目标NTB端点之前,原始地址偏移将被添加到翻译地址中。例如,如图10所示为查找表地址转换模式从Host A地址空间到Host B地址空间的地址映射。
通过前文分析可知,对于直接地址转换模式,因为在PCI-E域中BAR数量有限,而每个BAR地址空间只能一对一地映射到目标地址空间,并且要求各自的地址是连续的,无法实现一个BAR空间向多个目标空间映射的功能,导致只能映射到很有限的Target host存储空间或Device设备,使用受限。对于查找表地址转换模式,虽然能够实现将连续的地址空间映射到多个离散的目标地址的功能,其本质是将连续的大空间划分为多个小空间,导致每个目标的空间缩减。而且地址的划片数量和Index位数相关且通常是固定的。例如Index为六位,那么会将空间等比例划分为64份,哪怕只需映射到很少的几个目标空间,但BAR空间的分配并不会因此而减少。举例来说,如果目标窗口大小为10M,源端的BAR空间就需要640M的连续空间。
为解决上述缺陷,本申请提供了一种PCI-E非透明桥的地址转换方案,能够极大地拓展PCI-E域之间的空间映射能力,实现在有限的BAR空间上,从小窗口到大窗口或者由单个窗口到多个窗口的转换。
本发明实施例公开了一种PCI-E非透明桥的地址转换方法,参见图11所示,该方法包括:
S101:获取事务层数据包,并判断所述事务层数据包中是否携带事务层数据包前缀。
由前述内容可知,当TLP包到达非透明桥的其中一侧端点时,如果TLP address,落入配置的BAR地址空间Window中,则NT功能进行地址翻译并转发到目标域。本申请实施例中,提供一种有效的NTB实现地址转换的方法,同时也考虑到对传统方法的兼容性以覆盖各种使用场景,首先获取事务层数据包。通常情况下,CPU通过RC或者Device设备通过EP发送TLP请求包。
进一步的,判断所述事务层数据包中是否携带事务层数据包前缀。可以理解的是,按照PCI-E协议规定,通用的TLP包括Prefix(前缀)、Header(头部)、Data(数据)、Digest(开销块)这4部分,格式如图12所示。其中,TLP Prefix与TLP Digest是可选项。因此,需要判断事务层数据包中是否携带事务层数据包前缀。
本申请实施例中,通过TLP Prefix携带地址转换信息并定义相关功能字段以及相应的检测规则。因此,当事务层数据包中携带事务层数据包前缀时,能够通过本发明提供的方法实现PCI-E非透明桥的地址转换,从而拓展PCI-E域之间的空间映射能力;当事务层数据包中没有携带事务层数据包前缀时,还能够兼容传统的转换模式实现PCI-E非透明桥的地址转换,从而覆盖各种使用场景。
S102:若所述事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息。
本申请实施例中针对事务层数据包中携带所述事务层数据包前缀的情况进行说明,事务层数据包中没有携带所述事务层数据包前缀的情况将在后面实例中进行详细说明。
TLP Prefix由PCI-E V2.1引入,实现方法为通过在TLP Header之前附加1个或多个DW(4个Byte)的前缀数据使TLP携带更多额外的信息,从而实现TLP PH(ProcessingHints,处理提示)、PASID(Process Address Space ID,地址空间ID)、MR-IOV(Multi-RootI/O Virtualization,多根输入输出虚拟化)及其它Vendor(供应商)自定义的功能。TLPPrefix与Header同样有Fmt(format,格式)和Type(类型)两个字段,如图13所示。
其中,Fmt用以指示是否为TLP前缀或TLP Header;Type用以指示TLP Prefix的类型。通过检测Byte 0的Fmt字段来判断是否为TLP Prefix,若Fmt=100b,则表示当前DW为TLP Prefix。TLP Prefix分为两大类:Local和End-End;其中,Local TLP Prefix用以在PCI-E链路两侧传递信息,End-End用以在两个EP端点之间传递信息。这两大类通过Type字段第4bit来加以区分,如表一所示:
表一
TLP Type Fmt[2:0] Type[4:0] 说明
LPrfx 100 0L3L2L1L0 Local TLP Prefix.L[3:0]:Local子类型
EPrfx 100 1E3E2E1E0 End-End TLP Prefix.E[3:0]:End-End子类型
其中,End-End TLP Prefix具有如下特点:End-End TLP Prefix的出现不会破该TLP原本的路由规则;若后续TLP受ECRC(End-to-end CRC)保护,则End-End TLP Prefix同样受ECRC保护;对于路由元件,每个出口端口中的End-End TLP Prefix Blocking(阻塞)位决定包含End-End TLP Prefix的TLP是否可以通过该出口端口传输。如果转发受阻,整个TLP将被丢弃,并报告TLP前缀受阻错误。如果被阻止的TLP是非已发布请求,出口端口将返回"不支持的请求完成状态"。本申请实施例中使用End-End TLP Prefix,可以细分为几小类,如表二所示:
表二
End-End TLP Prefix Type E[3:0] 说明
TPH 0000 TPH-TLP Processing Hints
PASID 0001 PASID-Process Address Space ID
VendPrefixE0 1110 Vendor自定义End-End TLP Prefix
VendPrefixE1 1111 Vendor自定义End-End TLP Prefix
Reserved.
根据表中内容可知,VendPrefixE0和VendPrefixE1类型被保留用作供应商定义的终端TLP前缀。在按照预设格式定义规则对事务层数据包前缀进行定义时,具体的,将所述事务层数据包前缀中的第一个字节中的格式字段定义为第一预设值。根据表一内容可知,该第一预设值用以指示TLP前缀类型,由于使用的是End-End TLP Prefix,因此,该第一预设值为100。同时,将所述第一个字节中的类型字段定义为第二预设值。根据表二内容可知,基于格式字段定义为100,为了实现类型字段的自定义模式,该第二预设值可以为11110或者11111。进一步的,将所述事务层数据包前缀中的第二个字节定义为预设固定值,该值的选取可以根据实际情况进行设置,在此不进行具体限定;然后,将所述事务层数据包前缀中的第三个字节和第四个字节定义为非透明桥地址转换选择字段,以便通过所述非透明桥地址转换选择字段确定转换基地址寄存器中存储的地址转换信息。
示例性的,如图14所示,本申请实施例中使用VendPrefixE0对Translate TLPPrefix格式进行定义。其中,Byte0:{Fmt[2:0],Type[4:0]}={100,11110},表明是自定义End-End TLP前缀;Byte1:Translate_flag=0xE9,固定值,表示Translate TLP前缀子类型,在TLP接收过程中用于合法性检验;Byte2、Byte3:Translate_select[15:0],用于NTB地址转换选择。另外,可以考虑在PCI-E Prefix中携带指向不同NT的域信息,实现任意PCI-E域之间的通讯。
S103:当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址。
需要指出的是,如果事务层数据包携带TLP Prefix,对于中间路由元件(Switch),每个出口端口中的End-End TLP Prefix Blocking位,决定包含End-End TLP Prefix的TLP是否可以通过该出口端口传输。因此需要确保End-End TLP Prefix Blocking Bit处于关闭状态,以保证End-End TLP Prefix的正常通过。
具体的,确定所述事务层数据包中在所述第一个字节中的阻塞位处于关闭状态的目标事务层数据包。进一步的,对所述目标事务层数据包进行合法性校验,并对校验不通过的目标事务层数据包进行丢弃。可以理解的是,由于在TLP Prefix中定义了相关用于合法性校验的字节,因此,当数据包到达NT端口时,将根据Translate TLP Prefix的定义检测其合法性。如果不符合,则丢弃此TLP包。
本申请实施例中,通过Translate TLP Prefix前缀中携带地址转换信息,根据所述地址转换信息对所述事务层数据包进行地址转换,得到转换后的事务层数据包地址。如此一来,能够利用前缀动态地选择目标映射地址,实现从一个BAR空间到多个目标空间转换的目的,达到从小空间向大空间的映射和一个空间向多个空间的映射,拓展了PCI-E域间的地址映射能力。并且利用定义的前缀能够对转换表进行配置,使用简洁灵活。
S104:基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。
本申请实施例中,当NT功能进行地址翻译得到转换后的事务层数据包地址后,将事务层数据包转发到目标域。需要指出的是,TLP在NT中的地址转换过程还包括ID转换,但不属于发明内容,具体的内容可参照前文图6的说明,在此不再赘述。另外,经过地址域ID转换后的TLP数据包,去掉Translate TLP Prefix头然后转发到目标域,完成NTB的域间通讯功能。也即,基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将去除了所述事务层数据包前缀的所述事务层数据包转发至目标域。
本申请实施例中,针对所述事务层数据包的转发操作,将所述事务层数据包转发到的目标域可以是目标主机的内存(host memory),实现目标主机与内存的访问;也可以是目标端点设备(EP Device)的基准地址寄存器(BAR)的地址空间,实现目标域中EP设备的访问。
本申请实施例适用于PCI-E域之间需要通讯,并且需要大空间访问或多个设备访问的情况。另外,也可以考虑拓展本实施例中NTB背靠背的结构模式,实现多NT间的互联,提供更灵活的拓扑结构。
本申请提供了一种PCI-E非透明桥的地址转换方法,包括:获取事务层数据包,并判断所述事务层数据包中是否携带事务层数据包前缀;若所述事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息;当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址;基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。
本申请的有益技术效果为:通过对事务层数据包的前缀进行预定义,使得事务层数据包前缀中携带有地址转换信息。当事务层数据包到达非透明桥的非透明端口时,能够根据地址转换信息灵活选择动态翻译映射表,将BAR空间动态地转换到多个窗口,这些窗口可以是连续的,也可以是分散的,从而实现在有限的BAR空间上,实现从小窗口到大窗口,或者由单个窗口到多个窗口的转换,极大地拓展了PCI-E域之间的地址映射能力。
本实施例中针对事务层数据包中没有携带所述事务层数据包前缀的情况进行详细说明。其中,所述判断所述事务层数据包中是否携带事务层数据包前缀之后,还包括如下流程:
当所述事务层数据包没有携带所述事务层数据包前缀时,确定当前地址转换模式的模式类型。
本申请实施例中,如果TLP没有携带TLP Prefix,则默认选择Target Space0作为转换地址,即与传统方式兼容,进一步的,确定地址转换模式。
如果当前地址转换模式为直接地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据基准地址寄存器的内存窗口中的地址,将所述原始地址的基地址替换为相应的转换基地址寄存器的内容以得到第一翻译地址,并将所述原始地址的偏移量添加至所述第一翻译地址以得到第一转换后的事务层数据包地址,以便利用当前所述第一转换后的事务层数据包地址将所述事务层数据包转发至目标域。
在一种具体的实施方式中,如果当前地址转换模式为直接地址转换模式,当NTB端点接收到事务层数据包(TLP)时,从PCI-E事务层数据包中提取地址字段,将地址和类型与BAR的内存窗口的地址进行比较。如果地址位于其中一个BAR的窗口(Window)大小内,则原始地址的基地址被替换为相应的转换基地址寄存器(Translate)的内容得到第一翻译地址。并且,在数据包转发到目标NTB端点之前,原始地址偏移被添加到第一翻译地址中。需要指出的是,如果地址在BAR的内存窗口中找不到匹配,则丢弃数据包。
如果当前地址转换模式为查找表地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据基准地址寄存器的内存窗口中的地址,利用所述原始地址的索引确定查找表中的目标表项,将所述原始地址的基地址和所述原始地址的索引替换为与所述目标表项对应的转换基地址寄存器的内容以得到第二翻译地址,并将所述原始地址的偏移量添加至所述第二翻译地址以得到第二转换后的事务层数据包地址,以便利用当前所述第二转换后的事务层数据包地址将所述事务层数据包转发至目标域。
在另一种具体的实施方式中,如果当前地址转换模式为查找表地址转换模式,地址字段在逻辑上分为基地址、索引和偏移量。基地址用于比较BAR寄存器;索引用于指定查找表中的一个条目;偏移量是内存窗口中的偏移地址。当NTB端点接收到数据包时,从PCI-E事务层数据包中提取地址字段。将基址和类型与BAR的内存窗口中的地址进行比较,如果地址在BAR窗口(Window)大小内,则基地址和原始地址的索引将被索引指向的相应查找表中的目标表项(包含翻译后的基地址)的内容替换得到第二翻译地址。并且,在数据包被转发到查找表中的目标表项指定的目标NTB端点之前,原始地址偏移将被添加到第二翻译地址中。
可见,按照PCI-E协议规定,TLP Prefix是可选项。如果TLP没有携带TLP Prefix,本实施例能够兼容传统的转换模式实现PCI-E非透明桥的地址转换。
本实施例中针对事务层数据包中携带所述事务层数据包前缀的情况,对上述实施例中的S103进行详细说明。其中,所述当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址,包括如下具体实施流程:
当所述事务层数据包到达非透明端点的端口时,如果当前地址转换模式为直接地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据所述非透明桥地址转换选择字段确定转换表的入口,并利用与所述转换表的入口对应的转换基地址寄存器的内容替换所述原始地址的基地址以得到第三翻译地址,并将所述原始地址的偏移量添加至所述第三翻译地址以得到第三转换后的事务层数据包地址;其中,所述转换表的表项的长度根据所述目标域的大小和数量确定。
在一种具体的实施方式中,如果事务层数据包中携带所述事务层数据包前缀,那么Translate TLP Prefix格式可参考图14所示。如果当前地址转换模式为直接地址转换模式,示例性的,以图15为例进行说明。如图15所示,根据事务层数据包前缀中携带的地址转换信息Translate_select[15:0]选择Translate转换表入口,选中Translate_03。使用其存储的Translate_Address替换原始TLP中的Base Address。然后和Offset组合形成转换后的TLP地址(Translated Address),同时去除Translate TLP Prefix转发至目标域。图中示例为Link端至Virtual端的地址转换过程,相反方向,转换方法相同,在此不再进行详述。图中TLP header及包含地址格式如图16所示。
由前述实施例公开内容可知,目标域可以是host memory或者EP Device的BAR地址空间。因此,采用上述方法实现Host A地址域通过BAR窗口向Host B地址域进行映射的过程如图17所示。通过适当的配置转换地址,可实现目标空间连续或离散。其中,左图相当于通过小窗口向大窗口的映射,右图相当于通过一个窗口向多个区域的映射,且每个目标区域和BAR window的空间大小是相等的。
当所述事务层数据包到达非透明端点的端口时,如果当前地址转换模式为查找表地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据所述非透明桥地址转换选择字段确定转换表的入口,并利用与所述转换表的入口对应的索引确定查找表中的目标表项,将所述原始地址的基地址和所述原始地址的索引替换为与所述目标表项对应的转换基地址寄存器的内容以得到第四翻译地址,并将所述原始地址的偏移量添加至所述第四翻译地址以得到第四转换后的事务层数据包地址。
在另一种具体的实施方式中,在查找表转换模式下使用,总体思路与直接地址转换模式相同。需要指出的是,要注意Index的使用。示例性的,以图18为例进行说明。如图18所示,根据事务层数据包前缀中携带的地址转换信息Translate_select[15:0]选择Translate转换表入口,利用与所述转换表的入口对应的索引Index_x确定查找表中的目标表项。然后基地址和原始地址的索引将被索引指向的相应查找表中的目标表项(包含翻译后的基地址)的内容替换得到第四翻译地址。进一步的和Offset组合形成转换后的TLP地址(Translated Address),同时去除Translate TLP Prefix转发至目标域。图中示例为Link端至Virtual端的地址转换过程,相反方向,转换方法相同。另外,两个方向可以使用不同的模式,在此不再进行详述。
可见,本实施例中利用PCI-E prefix前缀携带地址转换选取信息,灵活选择动态翻译映射表,将BAR空间动态地转换到多个窗口,这些窗口可以是连续的,也可以是分散的,从而实现在有限的BAR空间上,实现从小窗口到大窗口,或者由单个窗口到多个窗口的转换。
进一步的,基于前述实施例,本实施例对PCI-E非透明桥的地址转换的完整步骤,以NTB直接地址转换为例,说明如下:
1、在硬件中初始化64-bit位宽的Translate列表,长度根据目标域大小和数量确定。例如BAR window空间大小为16M,目标区域为320M,那么需要20个Translate表项;如果目标域是离散的,需要同时考虑每个离散区域的大小及数量;
2、配置寄存器,确定地址转换模式,直接转换方式或者查找表转换方式;
3、PCI-E系统枚举并配置BAR空间,即基地址与空间大小,枚举完成后即可正常发送TLP数据包;
4、CPU通过RC或者Device设备通过EP发送TLP请求包。特别地,按照PCI-E协议规定,TLP Prefix是可选项。如果TLP没有携带TLP Prefix,则默认选择Target Space 0作为转换地址,即与传统方式兼容;如果携带TLP Prefix,对于中间路由元件(Switch),每个出口端口中的End-End TLP Prefix Blocking位,决定包含End-End TLP Prefix的TLP是否可以通过该出口端口传输,因此需要确保End-End TLP Prefix Blocking Bit处于关闭状态,以保证End-End TLP Prefix的正常通过。当数据包到达NT端口时,将根据Translate TLPPrefix的定义,检测其合法性,如果不符合,则丢弃此TLP包;
5、TLP在NT中的地址转换过程还包括ID转换,可参考前文说明;
6、经过地址域ID转换后的TLP数据包去掉Translate TLP Prefix头,转发到目标域,完成NTB的域间通讯功能。
相应的,本申请实施例还公开了一种PCI-E非透明桥的地址转换装置,参见图19所示,该装置包括:
数据包获取模块11,用于获取事务层数据包,并判断所述事务层数据包中是否携带事务层数据包前缀;
前缀定义模块12,用于若所述事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息;
地址转换模块13,用于当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址;
数据包转发模块14,用于基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。
其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
由此可见,通过本实施例的上述方案,包括:获取事务层数据包,并判断所述事务层数据包中是否携带事务层数据包前缀;若所述事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息;当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址;基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。
本申请的有益技术效果为:通过对事务层数据包的前缀进行预定义,使得事务层数据包前缀中携带有地址转换信息。当事务层数据包到达非透明桥的非透明端口时,能够根据地址转换信息灵活选择动态翻译映射表,将BAR空间动态地转换到多个窗口,这些窗口可以是连续的,也可以是分散的,从而实现在有限的BAR空间上,实现从小窗口到大窗口,或者由单个窗口到多个窗口的转换,极大地拓展了PCI-E域之间的地址映射能力。
在一种具体的实施方式中,所述前缀定义模块12,包括:
第一字节定义模块,用于将所述事务层数据包前缀中的第一个字节中的格式字段定义为第一预设值,并将所述第一个字节中的类型字段定义为第二预设值;
第二字节定义模块,用于将所述事务层数据包前缀中的第二个字节定义为预设固定值;
第三字节定义模块,用于将所述事务层数据包前缀中的第三个字节和第四个字节定义为非透明桥地址转换选择字段,以便通过所述非透明桥地址转换选择字段确定转换基地址寄存器中存储的地址转换信息。
在一种具体的实施方式中,所述PCI-E非透明桥的地址转换装置,还包括:
传统方法兼容模块,具体用于:
当所述事务层数据包没有携带所述事务层数据包前缀时,确定当前地址转换模式的模式类型;
如果当前地址转换模式为直接地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据基准地址寄存器的内存窗口中的地址,将所述原始地址的基地址替换为相应的转换基地址寄存器的内容以得到第一翻译地址,并将所述原始地址的偏移量添加至所述第一翻译地址以得到第一转换后的事务层数据包地址,以便利用当前所述第一转换后的事务层数据包地址将所述事务层数据包转发至目标域;
如果当前地址转换模式为查找表地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据基准地址寄存器的内存窗口中的地址,利用所述原始地址的索引确定查找表中的目标表项,将所述原始地址的基地址和所述原始地址的索引替换为与所述目标表项对应的转换基地址寄存器的内容以得到第二翻译地址,并将所述原始地址的偏移量添加至所述第二翻译地址以得到第二转换后的事务层数据包地址,以便利用当前所述第二转换后的事务层数据包地址将所述事务层数据包转发至目标域。
在一种具体的实施方式中,所述地址转换模块13,还包括:
校验模块,用于确定所述事务层数据包中在所述第一个字节中的阻塞位处于关闭状态的目标事务层数据包;对所述目标事务层数据包进行合法性校验,并对校验不通过的目标事务层数据包进行丢弃。
在一种具体的实施方式中,所述地址转换模块13,具体用于:
当所述事务层数据包到达非透明端点的端口时,如果当前地址转换模式为直接地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据所述非透明桥地址转换选择字段确定转换表的入口,并利用与所述转换表的入口对应的转换基地址寄存器的内容替换所述原始地址的基地址以得到第三翻译地址,并将所述原始地址的偏移量添加至所述第三翻译地址以得到第三转换后的事务层数据包地址;其中,所述转换表的表项的长度根据所述目标域的大小和数量确定;
当所述事务层数据包到达非透明端点的端口时,如果当前地址转换模式为查找表地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据所述非透明桥地址转换选择字段确定转换表的入口,并利用与所述转换表的入口对应的索引确定查找表中的目标表项,将所述原始地址的基地址和所述原始地址的索引替换为与所述目标表项对应的转换基地址寄存器的内容以得到第四翻译地址,并将所述原始地址的偏移量添加至所述第四翻译地址以得到第四转换后的事务层数据包地址。
在一种具体的实施方式中,所述地址转换模块13,还包括:
前缀去除模块,用于去除所述事务层数据包前缀;
相应的,所述数据包转发模块14,具体用于:
基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将去除了所述事务层数据包前缀的所述事务层数据包转发至目标域。
在一种具体的实施方式中,所述数据包转发模块14,包括:
第一数据包转发单元,用于基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标主机的内存;
第二数据包转发单元,用于基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标端点设备的基准地址寄存器的地址空间。
进一步的,本申请实施例还公开了一种电子设备,图20是根据一示例性实施例示出的电子设备20结构图,图中内容不能认为是对本申请的使用范围的任何限制。
图20为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的PCI-E非透明桥的地址转换方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222及数据223等,数据223可以包括各种各样的数据。存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的PCI-E非透明桥的地址转换方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请实施例还公开了一种计算机可读存储介质,这里所说的计算机可读存储介质包括随机存取存储器(Random Access Memory,RAM)、内存、只读存储器(Read-Only Memory,ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、磁碟或者光盘或技术领域内所公知的任意其他形式的存储介质。其中,所述计算机程序被处理器执行时实现前述PCI-E非透明桥的地址转换方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的PCI-E非透明桥的地址转换方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种PCI-E非透明桥的地址转换方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种PCI-E非透明桥的地址转换方法,其特征在于,包括:
获取事务层数据包,并判断所述事务层数据包中是否携带事务层数据包前缀;
若所述事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息;
当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址;
基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。
2.根据权利要求1所述的PCI-E非透明桥的地址转换方法,其特征在于,所述按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息,包括:
将所述事务层数据包前缀中的第一个字节中的格式字段定义为第一预设值,并将所述第一个字节中的类型字段定义为第二预设值;
将所述事务层数据包前缀中的第二个字节定义为预设固定值;
将所述事务层数据包前缀中的第三个字节和第四个字节定义为非透明桥地址转换选择字段,以便通过所述非透明桥地址转换选择字段确定转换基地址寄存器中存储的地址转换信息。
3.根据权利要求1所述的PCI-E非透明桥的地址转换方法,其特征在于,所述判断所述事务层数据包中是否携带事务层数据包前缀之后,还包括:
当所述事务层数据包没有携带所述事务层数据包前缀时,确定当前地址转换模式的模式类型;
如果当前地址转换模式为直接地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据基准地址寄存器的内存窗口中的地址,将所述原始地址的基地址替换为相应的转换基地址寄存器的内容以得到第一翻译地址,并将所述原始地址的偏移量添加至所述第一翻译地址以得到第一转换后的事务层数据包地址,以便利用当前所述第一转换后的事务层数据包地址将所述事务层数据包转发至目标域;
如果当前地址转换模式为查找表地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据基准地址寄存器的内存窗口中的地址,利用所述原始地址的索引确定查找表中的目标表项,将所述原始地址的基地址和所述原始地址的索引替换为与所述目标表项对应的转换基地址寄存器的内容以得到第二翻译地址,并将所述原始地址的偏移量添加至所述第二翻译地址以得到第二转换后的事务层数据包地址,以便利用当前所述第二转换后的事务层数据包地址将所述事务层数据包转发至目标域。
4.根据权利要求2所述的PCI-E非透明桥的地址转换方法,其特征在于,所述当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址之前,还包括:
确定所述事务层数据包中在所述第一个字节中的阻塞位处于关闭状态的目标事务层数据包;
对所述目标事务层数据包进行合法性校验,并对校验不通过的目标事务层数据包进行丢弃。
5.根据权利要求2所述的PCI-E非透明桥的地址转换方法,其特征在于,所述当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址,包括:
当所述事务层数据包到达非透明端点的端口时,如果当前地址转换模式为直接地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据所述非透明桥地址转换选择字段确定转换表的入口,并利用与所述转换表的入口对应的转换基地址寄存器的内容替换所述原始地址的基地址以得到第三翻译地址,并将所述原始地址的偏移量添加至所述第三翻译地址以得到第三转换后的事务层数据包地址;其中,所述转换表的表项的长度根据所述目标域的大小和数量确定;
当所述事务层数据包到达非透明端点的端口时,如果当前地址转换模式为查找表地址转换模式,则对所述事务层数据包进行解析以提取所述事务层数据包中的原始地址,然后根据所述非透明桥地址转换选择字段确定转换表的入口,并利用与所述转换表的入口对应的索引确定查找表中的目标表项,将所述原始地址的基地址和所述原始地址的索引替换为与所述目标表项对应的转换基地址寄存器的内容以得到第四翻译地址,并将所述原始地址的偏移量添加至所述第四翻译地址以得到第四转换后的事务层数据包地址。
6.根据权利要求1所述的PCI-E非透明桥的地址转换方法,其特征在于,所述当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址之后,还包括:
去除所述事务层数据包前缀;
相应的,所述基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域,包括:
基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将去除了所述事务层数据包前缀的所述事务层数据包转发至目标域。
7.根据权利要求1至6任一项所述的PCI-E非透明桥的地址转换方法,其特征在于,所述基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域,包括:
基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标主机的内存,或目标端点设备的基准地址寄存器的地址空间。
8.一种PCI-E非透明桥的地址转换装置,其特征在于,包括:
数据包获取模块,用于获取事务层数据包,并判断所述事务层数据包中是否携带事务层数据包前缀;
前缀定义模块,用于若所述事务层数据包中携带所述事务层数据包前缀,则按照预设格式定义规则对所述事务层数据包前缀进行定义,以利用所述事务层数据包前缀携带地址转换信息;
地址转换模块,用于当所述事务层数据包到达非透明端点的端口时,根据所述地址转换信息对所述事务层数据包进行地址转换,以得到转换后的事务层数据包地址;
数据包转发模块,用于基于所述转换后的事务层数据包地址触发针对所述事务层数据包的转发操作,以将所述事务层数据包转发至目标域。
9.一种电子设备,其特征在于,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至7任一项所述的PCI-E非透明桥的地址转换方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的PCI-E非透明桥的地址转换方法。
CN202410148710.2A 2024-01-31 2024-01-31 Pci-e非透明桥的地址转换方法、装置、设备及介质 Pending CN117978775A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410148710.2A CN117978775A (zh) 2024-01-31 2024-01-31 Pci-e非透明桥的地址转换方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410148710.2A CN117978775A (zh) 2024-01-31 2024-01-31 Pci-e非透明桥的地址转换方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN117978775A true CN117978775A (zh) 2024-05-03

Family

ID=90861258

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410148710.2A Pending CN117978775A (zh) 2024-01-31 2024-01-31 Pci-e非透明桥的地址转换方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN117978775A (zh)

Similar Documents

Publication Publication Date Title
US7562176B2 (en) Apparatus and methods for clustering multiple independent PCI express hierarchies
CN108268412B (zh) 用于扩展外围组件互连高速结构的系统和方法
US9025495B1 (en) Flexible routing engine for a PCI express switch and method of use
JP5362980B2 (ja) データ処理システム内で第1のホスト・システムと第2のホスト・システムとの間で通信するための方法、プログラム、およびシステム(ソケット接続および共用メモリを使用するホスト・システム間の通信のためのシステムおよび方法)
US7917681B2 (en) Switch and network bridge apparatus
US7808989B2 (en) Multiple-domain processing system using hierarchically orthogonal switching fabric
US7062581B2 (en) Interconnection fabric enumeration
US9146890B1 (en) Method and apparatus for mapped I/O routing in an interconnect switch
US20060239287A1 (en) Adding packet routing information without ECRC recalculation
US10698849B2 (en) Methods and apparatus for augmented bus numbering
WO2006063297A1 (en) Pci express to advanced switching fabric interface
JP2008165776A (ja) データ処理システムの複数のルート複合体間の通信のために共用メモリを初期設定するための方法、プログラム、およびシステム(複数のルート複合体全域でエンドポイントを共用するために共用メモリを初期設定するためのシステムおよび方法)
JP2008152786A (ja) データ処理システム内で1つまたは複数のエンドポイントの第1の物理機能から第2の物理機能に仮想機能を移行するための方法、プログラム、およびシステム(単一ルート・ステートレス仮想機能の移行のためのシステムおよび方法)
CN104641360A (zh) 对存储器及对等设备的双播PCIe入站写入
WO2022012309A1 (zh) 扩展PCIe系统的方法、PCIe交换设备及PCIe系统
EP2593876A1 (en) System and method for accessing resources of a pci express compliant device
JP5469081B2 (ja) 制御パス入出力仮想化方法
US11409679B2 (en) System component and use of a system component
JP5058615B2 (ja) ノード制御装置および情報処理装置
CN115102780B (zh) 数据传输方法、相关装置、系统及计算机可读存储介质
CN114006875A (zh) 扩展PCIe系统的方法、PCIe交换设备及PCIe系统
KR20110120094A (ko) 통합 입출력 메모리 관리 유닛을 포함하는 시스템 온 칩
US20120324078A1 (en) Apparatus and method for sharing i/o device
CN116414759B (zh) 计算机交换系统及地址分配、枚举、数据分发方法
CN117978775A (zh) Pci-e非透明桥的地址转换方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination