CN105653481A - 基于PCIe总线的数据传输方法和装置 - Google Patents
基于PCIe总线的数据传输方法和装置 Download PDFInfo
- Publication number
- CN105653481A CN105653481A CN201410647345.6A CN201410647345A CN105653481A CN 105653481 A CN105653481 A CN 105653481A CN 201410647345 A CN201410647345 A CN 201410647345A CN 105653481 A CN105653481 A CN 105653481A
- Authority
- CN
- China
- Prior art keywords
- tlp
- bus
- request
- pcie
- field
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明公开了一种基于PCIe总线的数据传输方法和装置,属于通信技术领域。所述方法包括:NTB接收请求设备发送的请求TLP,请求TLP包括Requester?ID字段、Tag字段和地址字段,Requester?ID字段携带请求设备的总线号、设备号和功能号,地址字段用于指示目标设备的地址,Requester?ID字段携带请求设备的总线号、设备号和功能号,请求设备和目标设备分别在通过NTB连接的第一、二PCIe总线域;采用NTB在第二PCIe总线域中的总线号、设备号和功能号替换请求TLP中的请求设备的总线号、设备号和功能号,并发送给目标设备。本发明通过将请求TLP中的请求设备的总线号、设备号和功能号分别替换为NTB在第二PCIe总线域中的总线号、设备号和功能号,当IOMMU对请求TLP进行合法性检测时,不会再引起错误。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种基于PCIe总线的数据传输方法和装置。
背景技术
外围设备高速互连(PeripheralComponentInterconnectExpress,简称“PCIe”)为总线和接口标准。在处理器系统中,PCIe总线属于局部总线,主要用于连接外部设备。在一个处理器系统中,PCIe设备使用独立的地址空间,即PCIe总线的地址空间,也称为PCIe总线域。处理器可以通过根联合体(RootComplex,简称“RC”)访问RC所属的PCIe总线域中的PCIe设备,该RC所属的PCIe总线域中的PCIe设备也可以通过RC访问主存储器。在包括多个处理器系统的计算机系统中,可以采用PCIe非透明桥(Non-TransparentBridging,简称“NTB”)将不同的PCIe总线域的地址空间进行隔离,以连接不同的处理器系统,此时该NTB同时作为与其连接的两个PCIe总线域的PCIe设备。一个处理器系统中的处理器可以通过NTB访问另一个处理器系统中的处理器或者另一个处理器系统的PCIe总线域中的PCIe设备。
当一个处理器系统中的处理器(简称为第一处理器)通过NTB访问另一个处理器系统中的处理器(简称为第二处理器)时,例如,第一处理器想读取第二处理器管理的存储器中的数据时,NTB会对第一处理器发送的存储器读请求事务层包(TransactionLayerPacket,简称“TLP”)中的请求者身份标识RequesterID(即第一处理器的RC在第一PCIe总线域中的ID)进行转换,以满足第二PCIe总线域中的地址空间的要求。
现有技术中,提供了一种NTB对RequesterID进行转换的方法,以存储器读请求TLP为例,当NTB接收到第一处理器发送的存储器读请求TLP时,先在显示查找表(Look-UpTable,简称“LUT”)中建立索引,并将该存储器读请求TLP中的RequesterID1的中的BusNumber1和DeviceNumber1以该索引对应的表项内容保存在LUT中,再将该存储器读请求TLP中的BusNumber1修改为NTB在第二处理器对应的PCIe总线域中的BusNumber2,将DeviceNumber1修改为LTU的索引值,FunctionNumber1保持不变,然后将修改后的存储器读请求TLP发送给第二处理器。
当第二处理器中的输入输出存储管理单元(input/outputmemorymanagementunit,简称“IOMMU”)开启时,会对存储器读请求TLP进行合法性检测,由于现有的NTB对存储器读请求TLP进行转换时,其RequesterID中只有BusNumber采用了NTB在第二PCIe总线域中的BusNumber,而DeviceNumber为LUT的索引值,FunctionNumber为NTB在第一PCIe总线域中的FunctionNumber,在IOMMU查询的页表结构中并不存在这样的RequesterID对应的PCIe设备(说明该读请求TLP不合法),因此,会引起IOMMU错误,例如不支持的请求等,导致IOMMU无法正常工作。
发明内容
本发明实施例提供了一种基于PCIe总线的数据传输方法和装置,可以使IOMMU对请求TLP进行合法性检测时,不会再引起错误,所述技术方案如下:
第一方面,本发明实施例提供了一种基于PCIe总线的数据传输方法,所述方法包括:
非透明桥接收请求设备发送的请求事务层包TLP,所述请求TLP包括请求者身份标识RequesterID字段、标识Tag字段和地址字段,所述地址字段用于指示目标设备的地址,所述请求者身份标识RequesterID字段携带所述请求设备的总线号、设备号和功能号,所述请求设备属于第一PCIe总线域,所述目标设备属于第二PCIe总线域,所述第一PCIe总线域和所述第二PCIe总线域通过所述非透明桥连接;
分别采用所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求TLP中的所述请求设备的总线号、设备号和功能号,得到替换后的请求TLP;
将所述替换后的请求TLP发送给所述目标设备。
进一步地,当所述请求TLP为读请求TLP时,在所述分别采用所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述TLP中的所述请求设备的总线号、设备号和功能号之前,所述方法还包括:
保存所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号与所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值的映射关系。
可选地,当所述TLP为读请求TLP时,所述方法还包括:
接收所述目标设备发送的读完成TLP,所述读完成TLP包括请求者身份标识RequesterID字段、完成者身份标识CompleterID字段和标识Tag字段,所述完成者身份标识CompleterID字段携带所述目标设备的总线号、设备号和功能号;
采用所述读完成TLP中的标识Tag字段的值,根据所述映射关系,得到所述请求设备的总线号、设备号和功能号以及所述读请求TLP中携带的标识Tag字段的值;
采用得到的所述请求设备的总线号、设备号和功能号,替换所述读完成TLP中的请求者身份标识RequesterID字段中的总线号、设备号和功能号;
采用得到的所述读请求TLP中携带的标识Tag字段的值,替换所述读完成TLP中的标识Tag字段的值;
采用所述非透明桥在所述第一PCIe总线域中的总线号、设备号和功能号,替换所述完成者身份标识CompleterID字段中的总线号、设备号和功能号,得到替换后的读完成TLP;
将所述替换后的读完成TLP发送给所述请求设备。
进一步地,所述保存所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号与所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值的映射关系,包括:
将所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值保存为显示查找表LUT中的索引;
将所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号保存为所述索引对应的表项。
进一步地,所述分别采用所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求TLP中的所述请求设备的总线号、设备号和功能号,包括:
从PCIe配置空间寄存器中读取所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号;
采用读取到的所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求设备发送的所述请求TLP中的所述请求设备的总线号、设备号和功能号。
第二方面,本发明实施例提供了一种基于PCIe总线的数据传输装置,所述装置包括:
第一接收模块,用于非透明桥接收请求设备发送的请求事务层包TLP,所述请求TLP包括请求者身份标识RequesterID字段、标识Tag字段和地址字段,所述地址字段用于指示目标设备的地址,所述请求者身份标识RequesterID字段携带所述请求设备的总线号、设备号和功能号,所述请求设备属于第一PCIe总线域,所述目标设备属于第二PCIe总线域,所述第一PCIe总线域和所述第二PCIe总线域通过所述非透明桥连接;
第一替换模块,用于分别采用所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求TLP中的所述请求设备的总线号、设备号和功能号,得到替换后的请求TLP;
发送模块,用于将所述替换后的请求TLP发送给所述目标设备。
当所述请求TLP为读请求TLP时,所述装置还包括:
保存模块,用于保存所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号与所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值的映射关系。
可选地,当所述TLP为读请求TLP时,所述接收模块还用于接收所述目标设备发送的读完成TLP,所述读完成TLP包括请求者身份标识RequesterID字段、完成者身份标识CompleterID字段和标识Tag字段,所述完成者身份标识CompleterID字段携带所述目标设备的总线号、设备号和功能号;
所述装置还包括:获取模块,用于采用所述读完成TLP中的标识Tag字段的值,根据所述映射关系,得到所述请求设备的总线号、设备号和功能号以及所述读请求TLP中携带的标识Tag字段的值;
第二替换模块,用于采用得到的所述请求设备的总线号、设备号和功能号,替换所述读完成TLP中的请求者身份标识RequesterID字段中的总线号、设备号和功能号;
所述第二替换模块还用于采用得到的所述读请求TLP中携带的标识Tag字段的值,替换所述读完成TLP中的标识Tag字段的值;
第三替换模块,用于采用所述非透明桥在所述第一PCIe总线域中的总线号、设备号和功能号,替换所述完成者身份标识CompleterID字段中的总线号、设备号和功能号,得到替换后的读完成TLP;
所述发送模块还用于将所述替换后的读完成TLP发送给所述请求设备。
进一步地,所述保存模块,包括:
第一索引单元,用于将所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值保存为显示查找表LUT中的索引;
第二索引单元,用于将所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号保存为所述索引对应的表项。
进一步地,所述第一替换模块,包括:
读取单元,用于从PCIe配置空间寄存器中读取所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号;
替换单元,用于采用读取到的所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求设备发送的所述请求TLP中的所述请求设备的总线号、设备号和功能号。
本发明实施例提供的技术方案带来的有益效果是:
通过非透明桥将请求TLP中的请求者身份标识RequesterID字段的总线号、设备号和功能号分别替换为非透明桥在第二PCIe总线域中的总线号、设备号和功能号,使非透明桥发送给目标设备的请求TLP中的请求者身份标识RequesterID对应的PCIe设备为PCIe总线初始化中已经存在于页表中的设备,当IOMMU开启,对请求TLP进行合法性检测时,不会再引起错误,IOMMU可以正常工作。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是基于PCIe总线的数据传输架构的示意图;
图2是本发明实施例一提供的一种基于PCIe总线的数据传输方法的流程图;
图3是本发明实施例二提供的一种基于PCIe总线的数据传输方法的流程图;
图4是本发明实施例三提供的一种基于PCIe总线的数据传输方法的流程图;
图5是本发明实施例四提供的一种基于PCIe总线的数据传输装置的结构示意图;
图6是本发明实施例五提供的一种基于PCIe总线的数据传输装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了更好地理解本发明的实施例,下面结合图1,以包括两个采用NTB连接的处理器系统的计算机系统为例,对本发明中涉及的基于PCIe总线的数据传输架构做简要地介绍。
参见图1,该计算机系统包括中央处理器1(CenterProssecingUnit,简称“CPU”)、CPU2、PCIe总线3、PCIe总线4、主存储器6、主存储器7、PCIe交换机8和PCIe交换机9,其中,CPU1中集成有RC12,CPU2中集成有RC13,RC12与主存储器6连接,PCIe总线3的两端分别与RC12和PCIe交换机8连接,RC13与主存储器7连接,PCIe总线4的两端分别与RC13和PCIe交换机9连接,PCIe交换机8上连接有PCIe设备82和PCIe设备83,PCIe交换机9上连接有PCIe设备91,且PCIe交换机8和PCIe交换机9中分别集成有NTB,PCIe交换机8和PCIe交换机9通过各自的NTB相互连接,RC12、PCIe交换机8、PCIe设备82和PCIe设备83属于PCIe总线域10,RC13、PCIe交换机9和PCIe设备91属于PCIe总线域11。
RC可以包括连接PCIe设备的接口以及IOMMU等。在本发明实施例中,PCIe设备可以为PCIe端点、PCIe桥和PCIe交换机等。
其中,IOMMU的重要组成部分为直接存储器访问(DirectMemoryAccess,简称“DMA”)重映射。在系统初始化的过程中,RC会给每个PCIe设备分别分配总线号(BusNumber)、设备号(DeviceNumber)和功能号(FunctionNumber),且每个PCIe设备的总线号(BusNumber)、设备号(DeviceNumber)和功能号(FunctionNumber)在该PCIe设备所在的PCIe总线域内唯一。因此,在系统初始化时,RC可以将每个PCIe设备的总线号(BusNumber)、设备号(DeviceNumber)和功能号(FunctionNumber)作为索引,在DMA重映射的输入输出(In\Out,简称“IO”)页表中保存每个PCIe设备能够访问的主存空间的地址。
当PCIe设备访问主存储器的空间时,IOMMU会根据访问请求中的BusNumber、DeviceNumber和FunctionNumber查找DMA重映射的IO页表,以确定是否存在与该PCIe设备对应的IO页表的页表项,如果不存在,则上报给相应的中央处理器,由中央处理器向该PCIe设备发送IOMMU错误,如果存在时,IOMMU将查找结果转换为PCIe设备所要访问的主存储器的物理地址。
以上计算机系统的结构仅为举例,在其他的实现方式中,RC也可以不集成在CPU中,而是作为一个单独的芯片或者集成在北桥芯片中。
实施例一
本发明实施例提供了一种基于PCIe总线的数据传输方法,适用于前述计算机系统,该方法的执行主体为NTB。参见图2,该方法包括:
步骤201:非透明桥接收请求设备发送的请求TLP,该请求TLP包括请求者身份标识RequesterID字段、标识Tag字段和地址字段,地址字段用于指示目标设备的地址,请求者身份标识RequesterID字段携带请求设备的总线号、设备号和功能号,请求设备属于第一PCIe总线域,目标设备属于第二PCIe总线域,第一PCIe总线域和第二PCIe总线域通过所述非透明桥连接。
该请求设备可以为RC或PCIe设备,例如,请求设备可以为图1中的RC12,也可以是PCIe设备81、PCIe设备82和PCIe交换机8,第一PCIe总线域为PCIe总线域10。该目标设备可以为RC或PCIe设备。例如,目标设备可以是图1中的RC13,也可以是PCIe设备91,第二PCIe总线域为PCIe总线域11。
步骤202:分别采用非透明桥在第二PCIe总线域中的总线号、设备号和功能号,替换请求TLP中的请求设备的总线号、设备号和功能号,得到替换后的请求TLP。
步骤203:将替换后的请求TLP发送给目标设备。
其中,请求TLP可以是读请求TLP或写请求TLP。实现时,该NTB可以集成在PCIe交换机中,也可以不集成在PCIe交换机中,而是作为一个单独的芯片,或者集成在RC中。
本发明实施例通过非透明桥将请求TLP中的请求者身份标识RequesterID字段的总线号、设备号和功能号分别替换为非透明桥在第二PCIe总线域中的总线号、设备号和功能号,使非透明桥发送给目标设备的请求TLP中的请求者身份标识RequesterID对应的外围设备为PCIe总线初始化中已经存在于页表中的设备,当IOMMU开启,对请求TLP进行合法性检测时,不会再引起错误,IOMMU可以正常工作。
实施例二
本发明实施例提供了一种基于PCIe总线的数据传输方法,适用于前述计算机系统,该方法的执行主体为NTB。本实施例中,以请求TLP为读请求TLP为例,对本发明进行说明,参见图3,方法包括:
步骤301:接收请求设备发送的读请求TLP。
其中,读请求TLP可以包括请求者身份标识RequesterID字段、标识Tag字段和地址字段,请求者身份标识RequesterID字段携带请求设备在第一PCIe总线域中的总线号(BusNumber)、设备号(DeviceNumber)和功能号(FunctionNumber),第一PCIe总线域为请求设备所在的PCIe总线域。地址字段用于指示目标设备的地址。
实现时,读请求TLP可以是存储器读请求TLP和输入输出I/O读请求TLP。
在PCIe总线标准中,请求者身份标识RequesterID和标识Tag字段合称为TransactionID。同一时间段内,TransactionID字段必须是唯一的,即该时间段内一个PCIe总线域中不存在两个或两个以上的读请求TLP中的TransactionID字段的值完全相同。在这同一时间段内,同一个PCIe设备发送的多个TLP(例如读请求TLP),其RequesterID字段是相同的,因此,可以将Tag字段取为不同的值,以区分同一时间段内,同一个PCIe设备发送的各个TLP。也就是说,同一PCIe设备发送的请求TLP中的Tag字段的值唯一,所以可以采用NTB对接收的某个请求TLP进行转换后得到的请求TLP的标识Tag字段的值作为索引,例如图1中的PCIe交换机8中的NTB将从RC12接收的读请求TLP中的Tag字段替换为第二PCIe总线域中的Tag字段,并将替换后的读请求TLP在第二PCIe总线域中的Tag字段的值作为索引。
实现时,请求设备可以为RC或PCIe设备。例如,参见图1,请求设备为CPU1中的RC12,第一PCIe总线域为PCIe总线域10。其中,PCIe设备可以是PCIe端点(Endpoint)(例如网卡、显卡等)、PCIe交换机和PCI桥片等。PCI桥片可以将PCIe总线转换为PCI总线或者PCI-X总线之后,连接PCI设备或者PCI-X设备。
在步骤301之前,还可以包括请求设备将自己在第一PCIe总线域中的总线号、设备号和功能号写入读请求TLP的请求者身份标识RequesterID字段中。
具体地,PCIe总线规定,在一个PCIe总线域空间中,最多只能有256条PCIe总线,因此,在一个TLP中,总线号(BusNumber)字段的长度为8比特(bit),在每一条PCIe总线中最多包含32个设备,因此,一个TLP中的设备号(DeviceNumber)字段的长度为5比特,每一个PCIe设备中最多包含8个功能,因此,一个TLP中的功能号(FunctionNumber)字段的长度为5比特。由于PCIe总线使用“端对端”的连接方式,在每条PCIe总线上只能连接一个下游PCIe设备,当该下游PCIe设备为PCIe端点时,其设备号(DeviceNumber)的值通常为0,当下游PCIe设备为PCIe交换机(Switch)时,可以通过PCIe交换机在一条PCIe总线上连接多个PCIe设备,则多个PCIe设备的设备号(DeviceNumber)可以取不同的值。
在本实施例中,当系统通电后,CPU可以通过枚举的方式(例如采用深度优先搜索算法)对PCIe总线域中的总线号进行初始化,并将初始化结果保存在PCIe设备的配置空间寄存器中,CPU再对各个总线号对应的PCIe设备的设备号和功能号进行初始化,然后CPU再将各组总线号、设备号和功能号作为DMA重映射的IO页表的索引进行保存。
需要说明的是,一个完整的TLP一般可以包括一个或者多个TLPPrefix(前缀)、TLP头和DataPayload(数据有效负载)等,而请求者身份标识RequesterID字段、标识Tag字段和地址字段均携带于TLP头中,此为现有技术,在此省略详细描述。
步骤302:保存读请求TLP中携带的标识Tag字段的值、请求设备的总线号、设备号和功能号与替换后的读请求TLP在第二PCIe总线域中的标识Tag字段的值的映射关系。
该读请求TLP在第二PCIe总线域中的标识Tag字段的值由NTB分配。实现时,各个读请求TLP的标识Tag字段的值可以采用顺序编号的方式依次产生。替换后的读请求TLP在第二PCIe总线域中的标识Tag字段的值与请求设备的总线号、设备号和功能号以及读请求TLP中携带的标识Tag字段的值(即读请求TLP在第一PCIe总线域中的标识Tag字段的值)的映射关系可以采用表格的形式(例如,LUT等)进行保存。
其中,保存读请求TLP中携带的Tag字段的值、请求设备的总线号、设备号和功能号与替换后的读请求TLP在第二PCIe总线域中的标识Tag字段的值的映射关系,可以包括:
将替换后的读请求TLP在第二PCIe总线域中的Tag字段的值保存为显示查找表LUT中的索引;
将读请求TLP中携带的标识Tag字段的值、请求设备的总线号、设备号和功能号保存为索引对应的表项。例如,一读请求TLP替换前后的标识Tag字段的值为分别为6和5、在第一PCIe总线域中的总线号为2、设备号为1、功能号为4,则可以建立索引为Tag值5,显示查找表LUT中的对应的表项是Tag值为6、总线号为2、设备号为1、功能号为4的记录。
其中,该显示查找表LUT可以由NTB建立和维护。容易理解地,标识Tag字段的长度决定了NTB能够暂存多少个同类型的TLP,如果标识Tag字段长度为5,NTB能够暂存32个不同类型的TLP;如果PCIe设备使能了扩展标识(ExtendedTag)位,则标识Tag字段可以由8位组成,此时NTB能够暂存256个不同类型的TLP。当标识Tag字段的长度为8比特时,该显示查找表LUT可以包括256个表项。
步骤303:分别采用非透明桥在第二PCIe总线域中的总线号、设备号和功能号,替换读请求TLP中的请求设备的总线号、设备号和功能号,得到替换后的读请求TLP。
实现时,分别采用非透明桥在第二PCIe总线域中的总线号、设备号和功能号,替换读请求TLP中的请求设备的总线号、设备号和功能号,可以包括:
从PCIe配置空间寄存器中读取非透明桥在第二PCIe总线域中的总线号、设备号和功能号;其中,PCIe配置空间寄存器从数字电路来讲通常就是一组D触发器构成,能存储01比特,不同01比特组成的字段对应不同的总线号、设备号和功能号。PCIe配置空间寄存器的不同的地址空间分配给不同的PCIe总线域。
采用读取到的非透明桥在第二PCIe总线域中的总线号、设备号和功能号,替换读请求TLP中的请求设备的总线号、设备号和功能号。
步骤304:将替换后的读请求TLP发送给目标设备。
实现时,NTB是采用基于地址(Address)的路由的将读请求TLP发送给目标设备。该目标设备的路由信息携带于读请求TLP的TLP头的地址Address字段中。
当目标设备接收到读请求TLP时,IOMMU会根据读请求TLP中的BusNumber、DeviceNumber和FunctionNumber(即NTB在第二PCIe总线域中的总线号、设备号和功能号)查询DMA重映射的IO页表,以检测该读请求TLP的合法性。由于NTB在第二PCIe总线域中的总线号、设备号和功能号在系统初始化时,已经分配,所以IOMMU对该读请求TLP检测结果为合法。
步骤305:接收目标设备发送的读完成TLP。
其中,读完成TLP可以包括请求者身份标识RequesterID字段、完成者身份标识CompleterID字段和标识Tag字段。该完成者身份标识CompleterID字段携带目标设备在第二PCIe总线域中的总线号、设备号和功能号。读完成TLP中的Tag字段的值仍为替换后的读请求TLP在第二PCIe总线域中的Tag字段的值。
实现时,该读完成TLP还携带有读请求TLP所请求访问的数据,该数据可以承载于读请求TLP的数据有效负载(DataPayload)字段中。
需要说明的是,完成者身份标识CompleterID字段也携带于TLP头中,此为现有技术,在此省略详细描述。
步骤306:采用读完成TLP中的Tag字段的值,查找LUT,得到请求设备在第一PCIe总线域中的的总线号、设备号和功能号以及读请求TLP中携带的标识Tag字段的值。
读完成TLP中的Tag字段的值仍为替换后的读请求TLP在第二PCIe总线域中的Tag字段的值,所以可以直接用读完成TLP中的Tag字段的值查找LUT表。
步骤307:采用得到的请求设备在第一PCIe总线域中的总线号、设备号和功能号,替换读完成TLP中的请求者身份标识RequesterID字段中的总线号、设备号和功能号。
步骤308:采用得到的读请求TLP中携带的标识Tag字段的值,替换读完成TLP中的标识Tag字段的值。
需要说明的是,步骤307和308的执行没有先后顺序,也可以先执行步骤308,再执行步骤307。
步骤309:采用非透明桥在第一PCIe总线域中的总线号、设备号和功能号,替换完成者身份标识CompleterID字段中的总线号、设备号和功能号,得到替换后的读完成TLP。
其中,非透明桥可以直接从PCIe配置空间寄存器中读取非透明桥在第一PCIe总线域中的总线号、设备号和功能号,并采用读取到的非透明桥在第一PCIe总线域中的总线号、设备号和功能号,替换完成者身份标识CompleterID字段中的总线号、设备号和功能号,得到替换后的读完成TLP。
步骤310:将转换后的读完成TLP发送给请求设备。
在步骤305~310中,目标设备采用基于ID(即读完成TLP中的BusNumber、DeviceNumber和FunctionNumber)的路由方式向NTB发送读完成TLP,NTB也采用基于ID的路由方式向请求设备发送读完成TLP。
本发明实施例通过非透明桥将读请求TLP中的请求者身份标识RequesterID字段的总线号、设备号和功能号分别替换为非透明桥在第二PCIe总线域中的总线号、设备号和功能号,使非透明桥发送给目标设备的读请求TLP中的请求者身份标识RequesterID对应的PCIe设备为PCIe总线初始化中已经存在于页表中的外围设备,当IOMMU开启,对读请求TLP进行合法性检测时,不会再引起错误,IOMMU可以正常工作。
实施例三
本发明实施例提供了一种基于PCIe总线的数据传输方法,适用于前述计算机系统,该方法的执行主体为NTB。本实施例中的请求TLP为写请求TLP,参见图4,该方法包括:
步骤401:非透明桥接收请求设备发送的写请求TLP,写请求TLP包括请求者身份标识RequesterID字段、标识Tag字段和地址字段,地址字段用于指示目标设备的地址,请求者身份标识RequesterID字段携带请求设备的总线号、设备号和功能号,请求设备属于第一PCIe总线域,目标设备属于第二PCIe总线域,第一PCIe总线域和第二PCIe总线域通过非透明桥连接。
其中,写请求TLP可以是存储器写请求TLP和I/O写请求TLP。
步骤402:分别采用非透明桥在第二PCIe总线域中的总线号、设备号和功能号,替换写请求TLP中的请求设备的总线号、设备号和功能号,得到替换后的写请求TLP。
步骤403:将替换后的写请求TLP发送给目标设备。
本发明实施例通过非透明桥将写请求TLP中的请求者身份标识RequesterID字段的总线号、设备号和功能号分别替换为非透明桥在第二PCIe总线域中的总线号、设备号和功能号,使非透明桥发送给目标设备的写请求TLP中的请求者身份标识RequesterID对应的PCIe设备为PCIe总线初始化中已经存在于页表中的外围设备,当IOMMU开启,对写请求TLP进行合法性检测时,不会再引起错误,IOMMU可以正常工作。
实施例四
本发明实施例提供了一种基于PCIe总线的数据传输装置,可以用于实现实施例一提供的方法,参见图5,该装置包括:第一接收模块41、第一替换模块42和发送模块43。
其中,第一接收模块41用于非透明桥接收请求设备发送的请求事务层包TLP,请求TLP包括请求者身份标识RequesterID字段、标识Tag字段和地址字段,地址字段用于指示目标设备的地址,请求者身份标识RequesterID字段携带请求设备的总线号、设备号和功能号,请求设备属于第一PCIe总线域,目标设备属于第二PCIe总线域,第一PCIe总线域和第二PCIe总线域通过非透明桥连接。
第一替换模块42用于分别采用非透明桥在第二PCIe总线域中的总线号、设备号和功能号,替换请求TLP中的请求设备的总线号、设备号和功能号,得到替换后的请求TLP。
发送模块43用于将替换后的请求TLP发送给目标设备。
本发明实施例通过非透明桥将请求TLP中的请求者身份标识RequesterID字段的总线号、设备号和功能号分别替换为非透明桥在第二PCIe总线域中的总线号、设备号和功能号,使非透明桥发送给目标设备的请求TLP中的请求者身份标识RequesterID对应的PCIe设备为PCIe总线初始化中已经存在于页表中的外围设备,当IOMMU开启,对请求TLP进行合法性检测时,不会再引起错误,IOMMU可以正常工作。
实施例五
本发明实施例提供了一种基于PCIe总线的数据传输装置,可以用于实现实施例二或实施例三提供的方法。参见图6,该装置包括:接收模块51、保存模块52、第一替换模块53、发送模块54、获取模块55、第二替换模块56和第三替换模块57。
其中,第一接收模块51用于非透明桥接收请求设备发送的请求事务层包TLP,请求TLP包括请求者身份标识RequesterID字段、标识Tag字段和地址字段,地址字段用于指示目标设备的地址,请求者身份标识RequesterID字段携带请求设备的总线号、设备号和功能号,请求设备属于第一PCIe总线域,目标设备属于第二PCIe总线域,第一PCIe总线域和第二PCIe总线域通过非透明桥连接。
在本实施例中,请求TLP可以是读请求TLP或写请求TLP。
当请求TLP为读请求TLP时,保存模块52用于保存读请求TLP中携带的标识Tag字段的值、请求设备的总线号、设备号和功能号与替换后的读请求TLP在第二PCIe总线域中的标识Tag字段的值的映射关系。
第一替换模块53用于分别采用非透明桥在第二PCIe总线域中的总线号、设备号和功能号,替换请求TLP中的请求设备的总线号、设备号和功能号,得到替换后的请求TLP。
发送模块54用于将替换后的请求TLP发送给目标设备。
可选地,当请求TLP为读请求TLP时,接收模块51还用于接收目标设备发送的读完成TLP,读完成TLP包括请求者身份标识RequesterID字段、完成者身份标识CompleterID字段和标识Tag字段,完成者身份标识CompleterID字段携带目标设备的总线号、设备号和功能号;
获取模块55用于采用读完成TLP中的标识Tag字段的值,根据映射关系,得到请求设备的总线号、设备号和功能号以及所述读请求TLP中携带的标识Tag字段的值;
第二替换模块56用于采用得到的请求设备的总线号、设备号和功能号,替换读完成TLP中的请求者身份标识RequesterID字段中的总线号、设备号和功能号;
第二替换模块56还用于采用得到的读请求TLP中携带的标识Tag字段的值,替换读完成TLP中的标识Tag字段的值;
第三替换模块57用于采用非透明桥在第一PCIe总线域中的总线号、设备号和功能号,替换完成者身份标识CompleterID字段中的总线号、设备号和功能号,得到替换后的读完成TLP;
发送模块54还用于将替换后的读完成TLP发送给请求设备。
实现时,保存模块52可以包括:
第一索引单元521用于将替换后的读请求TLP在第二PCIe总线域中的标识Tag字段的值保存为显示查找表LUT中的索引;
第二索引单元522用于将读请求TLP中携带的标识Tag字段的值、请求设备的总线号、设备号和功能号保存为索引对应的表项。
第一替换模块53可以包括:
读取单元531用于从PCIe配置空间寄存器中读取非透明桥在第二PCIe总线域中的总线号、设备号和功能号;
替换单元532用于采用读取到的非透明桥在第二PCIe总线域中的总线号、设备号和功能号,替换请求TLP中的请求设备的总线号、设备号和功能号。
本发明实施例通过非透明桥将请求TLP中的请求者身份标识RequesterID字段的总线号、设备号和功能号分别替换为非透明桥在第二PCIe总线域中的总线号、设备号和功能号,使非透明桥发送给目标设备的请求TLP中的请求者身份标识RequesterID对应的PCIe设备为PCIe总线初始化中已经存在于页表中的外围设备,当IOMMU开启,对请求TLP进行合法性检测时,不会再引起错误,IOMMU可以正常工作。
需要说明的是:上述实施例提供的基于PCIe总线的数据传输装置在进行数据传输时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将芯片的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于PCIe总线的数据传输装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于PCIe总线的数据传输方法,其特征在于,所述方法包括:
非透明桥接收请求设备发送的请求事务层包TLP,所述请求TLP包括请求者身份标识RequesterID字段、标识Tag字段和地址字段,所述地址字段用于指示目标设备的地址,所述请求者身份标识RequesterID字段携带所述请求设备的总线号、设备号和功能号,所述请求设备属于第一PCIe总线域,所述目标设备属于第二PCIe总线域,所述第一PCIe总线域和所述第二PCIe总线域通过所述非透明桥连接;
分别采用所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求TLP中的所述请求设备的总线号、设备号和功能号,得到替换后的请求TLP;
将所述替换后的请求TLP发送给所述目标设备。
2.根据权利要求1所述的方法,其特征在于,当所述请求TLP为读请求TLP时,在所述分别采用所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求TLP中的所述请求设备的总线号、设备号和功能号之前,所述方法还包括:
保存所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号与所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值的映射关系。
3.根据权利要求2所述的方法,其特征在于,当所述请求TLP为读请求TLP时,所述方法还包括:
接收所述目标设备发送的读完成TLP,所述读完成TLP包括请求者身份标识RequesterID字段、完成者身份标识CompleterID字段和标识Tag字段,所述完成者身份标识CompleterID字段携带所述目标设备的总线号、设备号和功能号;
采用所述读完成TLP中的标识Tag字段的值,根据所述映射关系,得到所述请求设备的总线号、设备号和功能号以及所述读请求TLP中携带的标识Tag字段的值;
采用得到的所述请求设备的总线号、设备号和功能号,替换所述读完成TLP中的请求者身份标识RequesterID字段中的总线号、设备号和功能号;
采用得到的所述读请求TLP中携带的标识Tag字段的值,替换所述读完成TLP中的标识Tag字段的值;
采用所述非透明桥在所述第一PCIe总线域中的总线号、设备号和功能号,替换所述完成者身份标识CompleterID字段中的总线号、设备号和功能号,得到替换后的读完成TLP;
将所述替换后的读完成TLP发送给所述请求设备。
4.根据权利要求2所述的方法,其特征在于,所述保存所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号与所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值的映射关系,包括:
将所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值保存为显示查找表LUT中的索引;
将所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号保存为所述索引对应的表项。
5.根据权利要求1所述的方法,其特征在于,所述分别采用所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求TLP中的所述请求设备的总线号、设备号和功能号,包括:
从PCIe配置空间寄存器中读取所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号;
采用读取到的所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求设备发送的所述请求TLP中的所述请求设备的总线号、设备号和功能号。
6.一种基于PCIe总线的数据传输装置,其特征在于,所述装置包括:
接收模块,用于非透明桥接收请求设备发送的请求事务层包TLP,所述请求TLP包括请求者身份标识RequesterID字段、标识Tag字段和地址字段,所述地址字段用于指示目标设备的地址,所述请求者身份标识RequesterID字段携带所述请求设备的总线号、设备号和功能号,所述请求设备属于第一PCIe总线域,所述目标设备属于第二PCIe总线域,所述第一PCIe总线域和所述第二PCIe总线域通过所述非透明桥连接;
第一替换模块,用于分别采用所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求TLP中的所述请求设备的总线号、设备号和功能号,得到替换后的请求TLP;
发送模块,用于将所述替换后的请求TLP发送给所述目标设备。
7.根据权利要求6所述的装置,其特征在于,当所述请求TLP为读请求TLP时,所述装置还包括:
保存模块,用于保存所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号与所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值的映射关系。
8.根据权利要求7所述的装置,其特征在于,当所述请求TLP为读请求TLP时,所述接收模块还用于接收所述目标设备发送的读完成TLP,所述读完成TLP包括请求者身份标识RequesterID字段、完成者身份标识CompleterID字段和标识Tag字段,所述完成者身份标识CompleterID字段携带所述目标设备的总线号、设备号和功能号;
所述装置还包括:获取模块,用于采用所述读完成TLP中的标识Tag字段的值,根据所述映射关系,得到所述请求设备的总线号、设备号和功能号以及所述读请求TLP中携带的标识Tag字段的值;
第二替换模块,用于采用得到的所述请求设备的总线号、设备号和功能号,替换所述读完成TLP中的请求者身份标识RequesterID字段中的总线号、设备号和功能号;
所述第二替换模块还用于采用得到的所述读请求TLP中携带的标识Tag字段的值,替换所述读完成TLP中的标识Tag字段的值;
第三替换模块,用于采用所述非透明桥在所述第一PCIe总线域中的总线号、设备号和功能号,替换所述完成者身份标识CompleterID字段中的总线号、设备号和功能号,得到替换后的读完成TLP;
所述发送模块还用于将所述替换后的读完成TLP发送给所述请求设备。
9.根据权利要求7所述的装置,其特征在于,所述保存模块,包括:
第一索引单元,用于将所述替换后的读请求TLP在所述第二PCIe总线域中的标识Tag字段的值保存为显示查找表LUT中的索引;
第二索引单元,用于将所述读请求TLP中携带的标识Tag字段的值、所述请求设备的总线号、设备号和功能号保存为所述索引对应的表项。
10.根据权利要求6所述的装置,其特征在于,所述第一替换模块,包括:
读取单元,用于从PCIe配置空间寄存器中读取所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号;
替换单元,用于采用读取到的所述非透明桥在所述第二PCIe总线域中的总线号、设备号和功能号,替换所述请求设备发送的所述请求TLP中的所述请求设备的总线号、设备号和功能号。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410647345.6A CN105653481B (zh) | 2014-11-14 | 2014-11-14 | 基于PCIe总线的数据传输方法和装置 |
PCT/CN2015/094300 WO2016074619A1 (zh) | 2014-11-14 | 2015-11-11 | 基于PCIe总线的数据传输方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410647345.6A CN105653481B (zh) | 2014-11-14 | 2014-11-14 | 基于PCIe总线的数据传输方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105653481A true CN105653481A (zh) | 2016-06-08 |
CN105653481B CN105653481B (zh) | 2019-03-26 |
Family
ID=55953745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410647345.6A Active CN105653481B (zh) | 2014-11-14 | 2014-11-14 | 基于PCIe总线的数据传输方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105653481B (zh) |
WO (1) | WO2016074619A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445573A (zh) * | 2015-08-11 | 2017-02-22 | 杭州华为数字技术有限公司 | 固件升级方法、装置及高速外围设备互联集群系统 |
CN111651397A (zh) * | 2020-05-09 | 2020-09-11 | 济南浪潮高新科技投资发展有限公司 | 一种访问PXIe外设模块的方法和设备 |
CN113498595A (zh) * | 2020-01-22 | 2021-10-12 | 华为技术有限公司 | 一种基于PCIe的数据传输方法及装置 |
WO2022246614A1 (zh) * | 2021-05-24 | 2022-12-01 | 华为技术有限公司 | 一种数据传输的方法及装置 |
CN116257479A (zh) * | 2023-05-16 | 2023-06-13 | 北京象帝先计算技术有限公司 | 重排序缓冲器、系统、装置、设备及传输方法 |
CN116303148A (zh) * | 2023-05-17 | 2023-06-23 | 北京中科网威信息技术有限公司 | 多插槽设备网卡探测方法、装置、电子设备及存储介质 |
CN117076374A (zh) * | 2023-10-17 | 2023-11-17 | 苏州元脑智能科技有限公司 | 一种PCIe流式总线的转换方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101242371B (zh) * | 2008-03-14 | 2010-11-10 | 杭州华三通信技术有限公司 | 基于PCIe交换架构路由器堆叠的方法、系统和装置 |
US20120096192A1 (en) * | 2010-10-19 | 2012-04-19 | Hitachi, Ltd. | Storage apparatus and virtual port migration method for storage apparatus |
CN103430161A (zh) * | 2012-11-15 | 2013-12-04 | 华为技术有限公司 | 一种基于PCIE Switch通信的方法、装置及系统 |
WO2014027416A1 (ja) * | 2012-08-17 | 2014-02-20 | 富士通株式会社 | 情報処理装置、及び情報処理装置の制御方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5903801B2 (ja) * | 2011-08-23 | 2016-04-13 | 富士通株式会社 | 通信装置およびid設定方法 |
-
2014
- 2014-11-14 CN CN201410647345.6A patent/CN105653481B/zh active Active
-
2015
- 2015-11-11 WO PCT/CN2015/094300 patent/WO2016074619A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101242371B (zh) * | 2008-03-14 | 2010-11-10 | 杭州华三通信技术有限公司 | 基于PCIe交换架构路由器堆叠的方法、系统和装置 |
US20120096192A1 (en) * | 2010-10-19 | 2012-04-19 | Hitachi, Ltd. | Storage apparatus and virtual port migration method for storage apparatus |
WO2014027416A1 (ja) * | 2012-08-17 | 2014-02-20 | 富士通株式会社 | 情報処理装置、及び情報処理装置の制御方法 |
CN103430161A (zh) * | 2012-11-15 | 2013-12-04 | 华为技术有限公司 | 一种基于PCIE Switch通信的方法、装置及系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445573A (zh) * | 2015-08-11 | 2017-02-22 | 杭州华为数字技术有限公司 | 固件升级方法、装置及高速外围设备互联集群系统 |
CN113498595A (zh) * | 2020-01-22 | 2021-10-12 | 华为技术有限公司 | 一种基于PCIe的数据传输方法及装置 |
CN111651397A (zh) * | 2020-05-09 | 2020-09-11 | 济南浪潮高新科技投资发展有限公司 | 一种访问PXIe外设模块的方法和设备 |
WO2022246614A1 (zh) * | 2021-05-24 | 2022-12-01 | 华为技术有限公司 | 一种数据传输的方法及装置 |
CN116257479A (zh) * | 2023-05-16 | 2023-06-13 | 北京象帝先计算技术有限公司 | 重排序缓冲器、系统、装置、设备及传输方法 |
CN116257479B (zh) * | 2023-05-16 | 2023-08-15 | 北京象帝先计算技术有限公司 | 重排序缓冲器、系统、装置、设备及传输方法 |
CN116303148A (zh) * | 2023-05-17 | 2023-06-23 | 北京中科网威信息技术有限公司 | 多插槽设备网卡探测方法、装置、电子设备及存储介质 |
CN116303148B (zh) * | 2023-05-17 | 2023-08-22 | 北京中科网威信息技术有限公司 | 多插槽设备网卡探测方法、装置、电子设备及存储介质 |
CN117076374A (zh) * | 2023-10-17 | 2023-11-17 | 苏州元脑智能科技有限公司 | 一种PCIe流式总线的转换方法、装置、设备及介质 |
CN117076374B (zh) * | 2023-10-17 | 2024-02-09 | 苏州元脑智能科技有限公司 | 一种PCIe流式总线的转换方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016074619A1 (zh) | 2016-05-19 |
CN105653481B (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105653481A (zh) | 基于PCIe总线的数据传输方法和装置 | |
CN105283855B (zh) | 一种寻址方法及装置 | |
US10560262B2 (en) | Information-processing system, information-processing apparatus, management apparatus, and processing method | |
KR101835851B1 (ko) | PCIe 패브릭 확장 방법 및 시스템 | |
CN102722458B (zh) | 一种用于多根共享系统的i/o重映射方法和装置 | |
CN101430664B (zh) | 一种多处理器系统及Cache一致性消息传输方法 | |
CN102388357B (zh) | 访问存储设备的方法及系统 | |
US10198183B2 (en) | Tunneling of storage operations between storage nodes | |
US7774575B2 (en) | Integrated circuit capable of mapping logical block address data across multiple domains | |
CN100589089C (zh) | 处理直接存储器访问请求的设备和方法 | |
CN107329704A (zh) | 一种缓存镜像方法及控制器 | |
CN105912492A (zh) | Axi互联总线的扩展方法 | |
CN104111870A (zh) | 一种中断处理装置及中断处理方法 | |
US8364879B2 (en) | Hierarchical to physical memory mapped input/output translation | |
CN102760109A (zh) | 数据的通信方法、装置及系统 | |
US10628373B2 (en) | Systems and methods for transmitting an access request via a flexible register access bus | |
CN106776366B (zh) | 地址访问方法及装置 | |
CN115543894B (zh) | 存储系统、数据处理方法及装置、存储介质及电子设备 | |
US8316169B2 (en) | Physical to hierarchical bus translation | |
US8375156B2 (en) | Intelligent PCI-express transaction tagging | |
US8606984B2 (en) | Hierarchical to physical bus translation | |
US8775776B2 (en) | Hash table using hash table banks | |
CN112783971B (zh) | 交易记录方法、交易查询方法、电子设备及存储介质 | |
CN104750634A (zh) | 读取方法及系统,互联设备控制器 | |
US10394707B2 (en) | Memory controller with memory resource memory management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |