掌桥专利:专业的专利平台
掌桥专利
首页

操作地址确定方法、PCIe系统、电子设备及存储介质

文献发布时间:2023-06-19 10:06:57


操作地址确定方法、PCIe系统、电子设备及存储介质

技术领域

本申请涉及设备控制技术领域,特别涉及操作地址确定方法、PCIe系统、电子设备及计算机可读存储介质。

背景技术

PCIe是一种高速串行计算机扩展总线标准,是业内通用的高速串行总线。PCIe主机(即主机端)和PCIe设备(即设备端)可以利用PCIe总线进行通讯。相关技术中,主机端通过将具体的操作地址写入位于设备端中的一个连续地址空间,使得设备端得知需要被操作的操作地址,进而控制设备端执行相应的操作。然而,为了防止设备端中需要分配的连续地址空间超过系统可分配的地址空间,从而导致地址分配异常,因此相关技术中通常将连续地址空间设置的较小。而较小的连续地址空间,使得主机端仅能写入较少的操作地址,导致主机端对设备端进行控制和访问时受到较大限制,进而使得PCIe主机和PCIe设备的使用受到限制,因此相关技术具有较大的局限性。

发明内容

有鉴于此,本申请的目的在于提供操作地址确定方法、PCIe系统、电子设备及计算机可读存储介质,使得PCIe主机可以不受限制地对PCIe设备进行控制和访问。

为解决上述技术问题,本申请提供了一种操作地址确定方法,应用于PCIe主机,包括:

PCIe主机获取操作地址;

基于偏移地址块信息,生成所述操作地址对应的目标基地址和目标偏移地址;

基于所述目标基地址和所述目标偏移地址生成寄存器设置指令;

将所述寄存器设置指令发送至PCIe设备,以便对所述PCIe设备中用于存储所述目标基地址的第一寄存器和/或用于存储所述目标偏移地址的第二寄存器进行设置。

可选地,所述基于所述目标基地址和所述目标偏移地址生成寄存器设置指令,包括:

获取当前基地址,并利用所述当前基地址与所述目标基地址进行匹配检测,得到第一检测结果;

获取当前偏移地址,并利用所述当前偏移地址与所述目标偏移地址进行匹配检测,得到第二检测结果;

利用检测结果为不匹配的地址信息生成所述寄存器设置指令;所述检测结果包括所述第一检测结果和所述第二检测结果,所述地址信息包括所述目标基地址和/或所述目标偏移地址。

可选地,还包括:

获取目标操作信息,并利用所述目标操作信息生成操作指令;

将所述操作指令发送至所述PCIe设备。

本申请还提供了另一种操作地址确定方法,应用于PCIe设备,包括:

PCIe设备在检测到操作指令后,从第一寄存器中读取目标基地址;

从第二寄存器中读取目标偏移地址;

对所述目标基地址和所述目标偏移地址进行拼位处理,得到操作地址。

可选地,还包括:

获取寄存器设置指令,并检测所述寄存器设置指令中地址信息的数量;

若所述数量为一个,则识别所述地址信息对应的地址类别,并基于所述地址类别对所述第一寄存器或所述第二寄存器进行设置;

若所述数量为两个,则识别所述地址类别,并根据所述地址类别利用两个所述地址信息分别对所述第一寄存器和所述第二寄存器进行设置。

可选地,所述对所述目标基地址和所述目标偏移地址进行拼位处理,得到操作地址,包括:

获取所述目标基地址对应的基地址位数和所述目标偏移地址对应的偏移地址位数;

根据所述基地址位数,利用所述目标基地址生成高位信息;

根据所述偏移地址位数,利用所述目标偏移地址生成低位信息;

对所述高位信息和所述低位信息进行拼位操作,得到所述操作地址。

可选地,还包括:

将所述操作地址发送至目标部件,以便所述目标部件基于所述操作地址执行所述操作指令对应的目标操作。

本申请还提供了一种PCIe系统,包括PCIe主机和PCIe设备,其中,所述PCIe主机用于执行上述第一种操作地址确定方法,所述PCIe设备用于执行上述第二种操作地址确定方法。

本申请还提供了一种电子设备,包括存储器和处理器,其中:

所述存储器,用于保存计算机程序;

所述处理器,用于执行所述计算机程序,以实现上述的操作地址确定方法。

本申请还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的操作地址确定方法。

本申请提供的操作地址确定方法,应用于PCIe主机,PCIe主机获取操作地址;基于偏移地址块信息,生成操作地址对应的目标基地址和目标偏移地址;基于目标基地址和目标偏移地址生成寄存器设置指令;将寄存器设置指令发送至PCIe设备,以便对PCIe设备中用于存储目标基地址的第一寄存器和/或用于存储目标偏移地址的第二寄存器进行设置。

可见,该方法中的PCIe主机在设置操作地址时,根据偏移地址块信息确定操作地址对应的目标基地址和目标偏移地址,并生成对应的寄存器设置指令,寄存器设施指令被发送给PCIe设备,以便对PCIe设备中的第一寄存器和/或第二寄存器进行设置。第一寄存器用于存储目标基地址,第二寄存器用于存储目标偏移地址。利用目标基地址和目标偏移地址,可以将PCIe设备中的操作地址划分为多个与偏移地址块信息对应的偏移地址块,通过设置第一寄存器选择偏移地址块,并通过设置第二寄存器选择偏移地址块中具体的偏移地址。记录目标基地址和目标偏移地址所需的数据空间的大小远远小于全量地址空间的长度,因此可以减少PCIe设备需要分配的连续地址空间的长度,在PCIe设备中可分配的地址空间较小的情况下也可以允许PCIe主机对PCIe设备中各个操作地址进行访问,使得PCIe主机可以不受限制地对PCIe设备进行控制和访问,进而使其应用不再受到限制,解决了相关技术局限性较大的问题。

此外,本申请还提供了PCIe系统、电子设备及计算机可读存储介质,同样具有上述有益效果。

附图说明

为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例提供的一种操作地址确定方法所适用的硬件组成框架示意图;

图2为本申请实施例提供的一种PCIe系统的硬件组成框架示意图;

图3为本申请实施例提供的一种操作地址确定方法的流程示意图;

图4为本申请实施例提供的一种具体的寄存器设置指令生成过程的流程示意图;

图5为本申请实施例提供的另一种操作地址确定方法的流程示意图;

图6为本申请实施例提供的一种操作地址生成过程的流程示意图;

图7为本申请实施例提供的一种具体的操作地址生成过程示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了便于理解,先对本申请实施例提供的操作地址确定方法对应的方案所使用的硬件组成框架进行介绍。请参考图1,图1为本申请实施例提供的一种操作地址确定方法所适用的硬件组成框架示意图。其中电子设备100可以包括处理器101和存储器102,还可以进一步包括多媒体组件103、信息输入/信息输出(I/O)接口104以及通信组件105中的一种或多种。

其中,处理器101用于控制电子设备100的整体操作,以完成操作地址确定方法中的全部或部分步骤;存储器102用于存储各种类型的数据以支持在电子设备100的操作,这些数据例如可以包括用于在该电子设备100上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,SRAM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、只读存储器(Read-Only Memory,ROM)、磁存储器、快闪存储器、磁盘或光盘中的一种或多种。在本实施例中,存储器102中至少存储有用于实现以下功能的程序和/或数据:

获取操作地址;

基于偏移地址块信息,生成操作地址对应的目标基地址和目标偏移地址;

基于目标基地址和目标偏移地址生成寄存器设置指令;

将寄存器设置指令发送至PCIe设备,以便对PCIe设备中用于存储目标基地址的第一寄存器和/或用于存储目标偏移地址的第二寄存器进行设置。

或者,存储器102中存储有用于实现以下功能的程序和/或数据:

在检测到操作指令后,从第一寄存器中读取目标基地址;

从第二寄存器中读取目标偏移地址;

对目标基地址和目标偏移地址进行拼位处理,得到操作地址。

多媒体组件103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或通过通信组件105发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口104为处理器101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件105用于电子设备100与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件105可以包括:Wi-Fi部件,蓝牙部件,NFC部件。

电子设备100可以被一个或多个应用专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field ProgrammableGate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行操作地址确定方法。

当然,图1所示的电子设备100的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备100可以包括比图1所示的更多或更少的部件,或者组合某些部件。电子设备100具体可以为PCIe系统中的PCIe主机或PCIe设备。

进一步的,请参考图2,图2为本申请实施例提供的一种PCIe系统的硬件组成框架示意图。由图2可知,该PCIe系统可以包括:PCIe主机11和PCIe设备12,二者之间通过PCIe总线13连接,需要说明的是,PCIe总线13为单个PCIe总线或利用多个PCIe总线构成的网络。

在本申请实施例中,PCIe主机11与PCIe设备12的硬件结构可以参考图1中电子设备100。两者进行数据交互,实现PCIe主机通过PCIe总线13控制PCIe设备的效果。

其中,PCIe主机11和PCIe设备12可以是同一种电子设备,例如,FPGA设备内部具有PCIe硬核,可以被作为PCIe设备,因此,PCIe主机11和PCIe设备12均可以为FPGA设备;但它们也可以是不同类型的电子设备,例如,PCIe主机11可以是终端,例如计算机等固定终端,PCIe设备12可以是FPGA设备。在一种可能的实施方式中,可以利用计算能力强的服务器作为PCIe设备12来提高数据处理效率。同时利用成本低,应用范围广的终端作为PCIe主机11,用于实现PCIe设备12与用户之间的交互。该交互过程可以为:PCIe主机11受用户控制,获取操作地址并生成寄存器设置指令,通过PCIe总线13发送给PCIe设备。PCIe设备基于寄存器设置指令设置第一寄存器和/或第二寄存器,并在接收到操作指令时执行对应的目标操作。

PCIe系统内包括PCIe主机和PCIe设备,PCIe设备内开辟有连续的地址空间,PCIe主机通过修改该连续的地址空间对PCIe设备进行控制,以便实现设备的各项功能。可以理解的是,该地址空间越大,PCIe主机可写入的数据就越多,相应的,对PCIe设备的控制就可以越全面,若可以实现对PCIe设备的全地址编码,则可以实现对PCIe设备的全面控制。例如,当PCIe设备为FPGA设备,且其内部采用32bit(比特)的AIX4总线时,若想要实现全地址编码,则需要2^32=4Gbytes长度的连续地址空间,而绝大部分PCIe设备都无法提供这么大的连续地址空间。为了能够使PCIe设备成功挂载到PCIe系统内,只能退而求其次,在PCIe设备内开辟较小的连续地址空间,例如开辟512Mbytes长度的连续地址空间,而采用较小的连续地址空间必然会导致PCIe主机对PCIe设备的控制和访问受到限制。另外,在某些情况下,控制受到限制的PCIe设备可能无法正常工作,因此PCIe系统在某些情况下的应用同样可能因连续地址空间不足而受到限制。

为了解决上述问题,本实施例提供了一种操作地址确定方法,该方法应用于PCIe主机。请参考图3,图3为本申请实施例提供的一种操作地址确定方法的流程示意图。该实施例中的方法包括:

S101:PCIe主机获取操作地址。

操作地址用于表示PCIe设备执行操作的具体位置,其具体内容不做限定。本实施例并不限定PCIe主机获取操作地址的具体方式,例如可以由用户输入操作地址;或者可以由其他电子设备向PCIe主机发送操作地址;或者可以由PCIe主机在程序运行时自动生成操作地址。进一步的,本实施例也不限定PCIe主机获取操作地址的时机,例如可以在检测到获取指令时获取操作地址,获取指令可以在本地生成,或者可以由外部输入。在获取操作地址时,可以仅获取操作地址,或者可以同时获取与操作地址相对应的其他信息,例如目标操作信息。目标操作信息与目标操作相对应,用于说明对于该操作地址处具体执行哪些操作。

S102:基于偏移地址块信息,生成操作地址对应的目标基地址和目标偏移地址。

为了在PCIe设备中开辟了较小连续地址空间的情况下仍然可以实现对PCIe设备的全量控制,可以将PCIe设备中的全量地址空间划分为多个偏移地址块,偏移地址块与偏移地址块信息相对应,偏移地址块信息用于说明各个偏移地址块的具体大小。目标基地址和目标偏移地址分别存储于PCIe设备中不同的连续地址空间内,通过划分偏移地址块,可以利用目标基地址和目标偏移地址的方式对具体的操作地址进行表示。目标基地址用于选择偏移地址块,目标偏移地址用于表明操作地址在该偏移地址块内对应的偏移量。由此可见,目标基地址的数量即为偏移地址块的数量,目标偏移地址的数量小于或等于最大的偏移地址块内地址的数量。二者相加,得到的总数量(即连续地址空间的总长度)必然远远小于全量地址空间中地址的数量,而通过目标基地址和目标偏移地址可以实现对PCIe设备全量地址空间的访问,实现了采用较小的连续地址空间对PCIe设备进行全量地址空间访问的效果,解决了PCIe主机对PCIe设备的控制和访问受到限制的问题。

本实施例并不限定偏移地址块的具体划分方式,可以理解的是,各个偏移地址块的大小可以相同也可以不同,具体大小不做限定。例如,可以基于移窗的思想对PCIe设备中的各个地址进行处理。具体的,移窗的思想即为将PCIe设备中的全量地址空间按照一定顺序(例如地址由小到大或地址由大到小)连续地划分为多个与窗口大小相等的偏移地址块。在另一种实施方式中,还可以划分为多个大小不同的偏移地址块。

因此,在对PCIe设备进行操作地址设置时,需要确定操作地址对应的目标基地址和目标偏移地址,而确定目标基地址和目标偏移地址需要基于偏移地址块信息。偏移地址块信息记录了各个偏移地址块的大小,在一种优选的实施方式中,各个偏移地址块的大小均相同,在这种情况下,偏移地址块信息只需记录单个偏移地址块的大小即可,且各个偏移地址块对应的最大偏移地址也相同,导致PCIe设备中记录偏移地址的连续地址空间的利用率达到最大。可以理解的是,根据偏移地址块大小的不同,偏移地址块的数量也不同。根据偏移地址块信息,可以确定操作地址具体所属的偏移地址块,完成了目标基地址的确定,在确定目标基地址后,根据操作地址在该偏移地址块中相对于地址块起始地址的偏移量确定目标偏移地址,得到与操作地址对应的目标基地址和目标偏移地址。地址块起始地址即为偏移地址块中的最小地址。

需要说明的是,上述过程为一种具体的实施过程,即PCIe主机获取的操作地址为正常形式的操作地址。在另一种实施方式中,操作地址本身即为目标基地址信息和目标偏移地址信息的形式,在这种情况下,可以利用偏移地址块信息对输入的目标基地址信息和目标偏移地址信息进行检测或修正,得到对应的目标基地址和目标偏移地址。例如,根据偏移地址块信息确定目标基地址信息对应的偏移地址块的大小,若输入的偏移地址信息大于目标基地址对应的偏移地址块的长度,则可以利用偏移地址块信息重新确定目标基地址和目标偏移地址。

S103:基于目标基地址和目标偏移地址生成寄存器设置指令。

在得到目标基地址和目标偏移地址后,基于其生成对应的寄存器设置指令,寄存器设置指令用于发送给PCIe设备,对PCIe设备进行设置。本实施例并不限定寄存器设置指令的具体生成方式,例如可以分别生成目标基地址对应的基地址设置指令和目标偏移地址对应的偏移地址设置指令,并将基地址设置指令和偏移地址设置指令封装为整体的寄存器设置指令。在另一种情况中,还可以判断是否需要对PCIe设备进行目标基地址和目标偏移地址的全部设置,例如在某些情况下,当前PCIe设备内的当前基地址和操作地址对应的基地址(即目标基地址)相同,在这种情况下,可以不对目标基地址进行设置,仅对目标偏移地址进行设置。

S104:将寄存器设置指令发送至PCIe设备,以便对PCIe设备中用于存储目标基地址的第一寄存器和/或用于存储目标偏移地址的第二寄存器进行设置。

在得到寄存器设置指令后,将其发送至PCIe设备,以便对PCIe设备内目标基地址对应的连续地址空间和目标偏移地址对应的连续地址空间进行设置。在本实施例中,目标基地址对应的连续地址空间可以被称为第一寄存器,或者可以称为基地址寄存器,即BaseAddress Register。目标偏移地址对应的连续地址空间可以被称为第二寄存器,或者可以称为偏移地址寄存器,即Offset Address Register。第一寄存器和第二寄存器的具体位置不做限定,二者可以相邻,或者中间间隔有其他地址空间。通过将寄存器设置指令发送至PCIe设备,可以使得PCIe设备根据寄存器设置指令对第一寄存器和/或第二寄存器进行设置,使PCIe设备得知目标操作对应的位置,即操作地址。第一寄存器和第二寄存器的总长度远小于PCIe设备全量地址空间的长度,绝大部分PCIe设备均可提供,实现了采用较小的连续地址空间对PCIe设备进行全量地址空间访问的效果。

应用本申请实施例提供的操作地址确定方法,PCIe主机在设置操作地址时,根据偏移地址块信息确定操作地址对应的目标基地址和目标偏移地址,并生成对应的寄存器设置指令,寄存器设施指令被发送给PCIe设备,以便对PCIe设备中的第一寄存器和/或第二寄存器进行设置。第一寄存器用于存储目标基地址,第二寄存器用于存储目标偏移地址。利用目标基地址和目标偏移地址,可以将PCIe设备中的操作地址划分为多个与偏移地址块信息对应的偏移地址块,通过设置第一寄存器选择偏移地址块,并通过设置第二寄存器选择偏移地址块中具体的偏移地址。记录目标基地址和目标偏移地址所需的数据空间的大小远远小于全量地址空间的长度,因此可以减少PCIe设备需要分配的连续地址空间的长度,在PCIe设备中可分配的地址空间较小的情况下也可以允许PCIe主机对PCIe设备中各个操作地址进行访问,使得PCIe主机可以不受限制地对PCIe设备进行控制和访问,进而使其应用不再受到限制,解决了相关技术局限性较大的问题。

在一种具体的实施方式中,为了减少PCIe设备对寄存器进行设置消耗的计算资源,同时减少对PCIe主机和PCIe设备通讯资源的浪费,可以检测PCIe设备需要被设置的寄存器,并生成该寄存器对应的寄存器设置指令。请参考图4,图4为本申请实施例提供的一种具体的寄存器设置指令生成过程的流程示意图,包括:

S1031:获取当前基地址,并利用当前基地址与目标基地址进行匹配检测,得到第一检测结果。

在本实施例中,PCIe主机每次在设置完PCIe设备中的寄存器后,可以记录本次对PCIe设备的设置,被记录的设置包括当前基地址和当前偏移地址。当需要生成寄存器设置指令时,可以获取当前基地址,并将其与PCIe设备需要被设置为的基地址(即目标基地址)进行匹配检测,判断二者是否相同,即从基地址方面,判断PCIe设备在本次设置前的状态(即当前基地址)和本次设置后的状态(即目标基地址)是否相同,并将判断结果作为第一检测结果。在某些情况中,上次设置的当前操作地址和本次将要设置的操作地址可能属于相同的偏移地址块,因此当前基地址和目标基地址相同。

S1032:获取当前偏移地址,并利用当前偏移地址与目标偏移地址进行匹配检测,得到第二检测结果。

相应的,在生成寄存器设置指令时,同样获取当前偏移地址,并将其与目标偏移地址进行匹配检测,得到对应的第二检测结果。在某些情况下,上次设置的当前操作地址和本次将要设置的操作地址不属于同一个偏移地址块,但是其在对应的地址块中的偏移量相同,此时,当前偏移地址则与目标偏移地址相匹配。

需要说明的是,本实施例并不限定S1031和S1032两个步骤的具体执行顺序,例如可以并行执行,即两个步骤同时执行,以便提高寄存器设置指令的生成速度;或者可以串行执行,即先执行其中一个,执行完毕后执行另一个,以便降低生成寄存器设置指令时的计算资源消耗峰值。

S1033:利用检测结果为不匹配的地址信息生成寄存器设置指令。

需要说明的是,检测结果包括第一检测结果和第二检测结果,地址信息包括目标基地址和/或目标偏移地址。在得到第一检测结果和第二检测结果后,判断其是否为不匹配,若两个检测结果均为不匹配,则说明第一寄存器和第二寄存器都需要设置,则利用目标基地址和目标偏移地址共同生成寄存器设置指令,PCIe设备获取到寄存器设置指令后对第一寄存器和第二寄存器进行设置。若其中一个为不匹配,则利用对应的目标基地址或目标偏移地址单独生成寄存器设置指令,PCIe设备在获取到寄存器设置指令后对对应的寄存器进行设置。

应用本申请实施例提供的操作地址确定方法,在生成寄存器设置指令时判断是否需要对寄存器进行设置,在当前基地址或当前偏移地址与操作地址(包括目标基地址和目标偏移地址)不匹配时才对其对应的寄存器进行设置,减少PCIe设备对寄存器进行设置消耗的计算资源。

基于上述实施例,PCIe主机还可以向PCIe设备发送操作指令,以便控制PCIe设备执行对应的目标操作。具体的,还可以包括:

步骤11:获取目标操作信息,并利用目标操作信息生成操作指令。

目标操作信息用于指定目标操作,目标操作为PCIe设备可以执行的任意一个或多个操作。目标操作信息的具体内容不做限定,例如可以为操作序号,或者可以为操作名称。在获取目标操作信息后,利用其生成操作指令,操作指令的具体生成过程不做限定,可以参考相关技术,在此不再赘述。

步骤12:将操作指令发送至PCIe设备。

在得到操作指令后,将其发送至PCIe设备处,以便PCIe设备执行操作指令对应的目标操作。

需要说明的是,本实施例并不限定操作指令发送步骤与寄存器设置指令发送步骤的执行顺序,二者可以同时执行,即在发送寄存器设置指令的同时发送操作指令,或者可以串行执行,即先发送寄存器设置指令对寄存器进行设置,再发送操作指令使PCIe设备基于操作地址执行目标操作。

相应的,基于上述实施例,PCIe设备在获取操作指令后,可以基于第一寄存器和第二寄存器确定操作地址。具体的,请参考图5,图5为本申请实施例提供的另一种操作地址确定方法的流程示意图,包括:

S201:PCIe设备在检测到操作指令后,从第一寄存器中读取目标基地址。

可以理解的是,PCIe设备在检测到操作指令后,需要确定操作地址,以便基于操作地址执行操作指令指定的目标操作。在PCIe设备中,操作地址以目标基地址和目标偏移地址的方式分别记录,在需要生成操作地址时,从第一寄存器中读取目标基地址。

S202:从第二寄存器中读取目标偏移地址。

相应的,为了生成操作地址,还需要从第二寄存器中读取目标偏移地址。本实施例并不限定目标基地址的读取步骤和目标偏移地址的读取步骤的具体执行顺序,在一种可行的实施方式中,可以在检测到操作指令后同时读取目标基地址和目标偏移地址;在另一种实施方式中,可以在检测到操作指令后先读取两个地址信息中的其中一个,在读取完毕后再读取另外一个。

S203:对目标基地址和目标偏移地址进行拼位处理,得到操作地址。

在得到目标基地址和目标偏移地址后,对其进行拼位处理,得到对应的操作地址。拼位处理的具体处理方式不做限定,例如可以直接对将目标基地址和目标偏移地址作为高位数据和低位数据进行拼接,在这种情况下,拼位处理即为单纯的数据拼位;或者可以将目标基地址和目标偏移地址基于偏移地址块信息进行操作地址的恢复,得到操作地址,在这种情况下,拼位处理即为操作地址恢复处理。

进一步的,在得到操作地址后,还可以执行后续操作,例如基于操作地址执行目标操作。在得到操作地址之后,还可以包括:

步骤21:将操作地址发送至目标部件,以便目标部件基于操作地址执行操作指令对应的目标操作。

本实施例中,目标部件为具体执行目标操作的部件,其具体内容不做限定,可以为PCIe设备内的部件,也可以为与PCIe设备相连的但不属于PCIe设备的部件。在检测到操作指令后,可以根据其确定需要执行的目标操作,在得到操作地址后,可以将其发送给目标部件,以便目标部件根据操作地址执行目标操作。操作地址的具体发送方式,以及目标操作的具体执行顺序本实施例不做限定,可以参考相关技术,在此不再赘述。

应用本申请实施例提供的操作地址确定方法,PCIe设备内设置有两个寄存器,其中第一寄存器用于存储目标基地址,第二寄存器用于存储目标偏移地址。利用目标基地址和目标偏移地址,可以将PCIe设备中的操作地址划分为多个与偏移地址块信息对应的偏移地址块,PCIe主机可以通过设置第一寄存器选择偏移地址块,并通过设置第二寄存器选择偏移地址块中具体的偏移地址,而PCIe设备可以在需要确定操作地址时,从第一寄存器和第二寄存器中分别读出目标基地址和目标偏移地址,并利用其生成操作地址。记录目标基地址和目标偏移地址所需的数据空间的大小远远小于全量地址空间的长度,因此可以减少PCIe设备需要分配的连续地址空间的长度,在PCIe设备中可分配的地址空间较小的情况下也可以允许PCIe主机对PCIe设备中各个操作地址进行访问,使得PCIe主机可以不受限制地对PCIe设备进行控制和访问,进而使其应用不再受到限制,解决了相关技术局限性较大的问题。

进一步的,基于上述实施例,寄存器设置指令可能包括两项地址信息(即包括目标基地址和目标偏移地址),也可能仅包括一项地址信息(即仅包括目标基地址,或仅包括目标偏移地址)。在这种情况下,设置寄存器的过程,可以包括:

步骤31:获取寄存器设置指令,并检测寄存器设置指令中地址信息的数量。

本实施例中,地址信息为寄存器设置指令中的目标基地址和/或目标偏移地址,其数量可以为一个或两个。在获取到寄存器设置指令后,对其中的地址信息的数量进行检测,若地址信息的数量为一个,则说明并不是同时对第一寄存器和第二寄存器进行设置;若地址信息的数量为两个,则说明第一寄存器和第二寄存器均需要被设置。

步骤32:若数量为一个,则识别地址信息对应的地址类别,并基于地址类别对第一寄存器或第二寄存器进行设置。

具体的,若地址信息的数量为一个,则说明仅需要对单个寄存器进行设置。为了确定地址信息对应的寄存器,需要识别其对应的地址类别,并基于地址类别确定对应的寄存器,进而利用地址信息对第一寄存器或第二寄存器进行设置。本实施例并不限定识别地址信息对应的地址类别的具体识别方式,例如在一种实施方式中,可以为地址信息附上类别标识,根据类别标识对地址信息的地址类别进行识别;在另一种实施方式中,目标基地址和目标偏移地址的长度通常不同,因此可以检测地址信息的长度,根据其长度确定具体的地址类别,即地址信息为目标基地址还是目标偏移地址。

步骤33:若数量为两个,则识别地址类别,并根据地址类别利用两个地址信息分别对第一寄存器和第二寄存器进行设置。

若数量为两个,则同样需要识别其对应的地址类别,并根据地址类别分别对第一寄存器和第二寄存器进行设置。设置的具体方式即为将地址信息写入寄存器中。应用本申请实施例提供的操作地址确定方法,可以准确地根据寄存器设置指令对PCIe设备中的寄存器进行设置。

进一步的,在一种实施方式中,可以根据地址信息的位数进行拼位处理,直接利用目标基地址和目标偏移地址生成操作地址。请参考图6,图6为本申请实施例提供的一种操作地址生成过程的流程示意图,包括:

S2031:获取目标基地址对应的基地址位数和目标偏移地址对应的偏移地址位数。

基地址位数即为目标基地址的长度,相应的,偏移地址位数即为目标偏移地址的长度。本实施例并不限定基地址位数和偏移地址位数的具体大小,根据偏移地址块信息和PCIe设备全量地址空间大小的不同,基地址位数和偏移地址位数也可以不同。例如当全量地址空间的大小为4Gbytes,单个偏移地址块的大小为4Mbytes,则共有1024个偏移地址块,目标基地址的取值范围为0~1023,为了对其进行表示,则需要10个比特位,因此基地址长度为10。目标偏移地址的取值范围为0x00_0000~0x3F_FFFF,因此其需要22个比特位进行表示。需要说明的是,在本实施例中,基地址位数和偏移地址位数的和应当小于PCIe设备内的总线位数,以便将操作地址发送给目标部件。该总线位数一般为32或64。

S2032:根据基地址位数,利用目标基地址生成高位信息。

由于目标基地址并不是真正的地址,而是用于选择偏移地址块的信息。同时,由于基地址位数和偏移地址位数之和可能并不能完全等于PCIe设备内的总线位数,因此在拼位生成操作地址后,传输操作地址时传输的数据中不仅会存在操作地址,还会存在一些无效数据位。因此在生成操作地址时,不能直接简单地将目标基地址和目标偏移地址进行拼接得到操作地址,而是需要在操作地址中将其进行声明,以便能够准确解析得到目标基地址和目标偏移地址,进而得到准确的操作地址。

本实施例中,可以将目标基地址在高位传输,将目标偏移地址在低位传输。需要说明的是,高位和低位为目标基地址和目标偏移地址之间的相对关系,并不是说明其在传输操作地址时传输的数据中的位置。例如目标偏移地址可以在传输的数据中的最低位,目标基地址可以位于与其相邻的高位,或者位于传输的数据中的最高位。为了确定目标基地址在传输的数据中的具体位置,可以在得到基地址位数后,根据基地址位数在传输的数据中保留足够的数据位用于传输目标基地址,得到的高位信息中的具体内容与目标基地址相同,同时还声明了其具体占用的位置。

S2033:根据偏移地址位数,利用目标偏移地址生成低位信息。

相应的,同样利用目标偏移地址和偏移地址位数生成低位信息。可以理解的是,由于基地址位数和偏移地址位数固定不变,因此S2031步骤可以在第一次生成操作地址时执行,并将基地址位数和偏移地址位数进行记录,在后续生成操作地址时,可以直接根据记录,利用目标基地址和目标偏移地址进行拼位操作。

S2034:对高位信息和低位信息进行拼位操作,得到操作地址。

在得到高位信息和低位信息后对其进行拼位操作,例如可以利用拼位操作符对其进行整合,形成的新地址即为操作地址。拼位操作得到的操作地址不仅包括目标基地址和目标偏移地址的具体内容,同时还声明了基地址位数、偏移地址位数,以及二者在传输操作地址时传输的数据中的位置关系。可以理解的是,利用这种拼位操作得到的操作地址的形式可能与PCIe主机获取到的操作地址的形式不同,但是二者实质相同,均指向了一个具体的地址。

由于在某些情况下,传输操作地址时传输的数据可能还包括无效数据,因此还可以进一步利用操作地址生成传输信息,根据传输信息对操作地址进行传输。最终得到的传输信息存在多种可能的形式,例如可以为{[无效数据位],[目标基地址],[目标偏移地址]},或{[目标基地址],[目标偏移地址],[无效数据位]}。

具体的,请参考图7,图7为本申请实施例提供的一种具体的操作地址生成过程示意图。其中,PCIe设备为FPGA设备,其内部采用32位的AIX4总线进行通信,因此其全量地址空间的长度为2^32=4Gbytes,即为FPGA 4Gbytes space。本实施例中,将全量地址空间划分为多个4Mbytes的偏移地址块。BAR0即为第一寄存器,用于记录目标基地址,目标基地址的取值范围为0x000~0x3FF,即0~1023,需要利用10bit表示,其长度为1Kbytes。BAR1为第二寄存器,其用于记录目标偏移地址,需要利用22bit表示,长度为4Mbytes,取值范围为0x00_0000~0x3F_FFFF。目标基地址可以称为Base_address,目标偏移地址可以称为Offset_address。在读取得到目标基地址和目标偏移地址后,利用拼位操作符{}进行拼位处理,得到操作地址,操作地址可以用NEW TLP ADDRESS表示,其共有32位,其中:

NEW TLP ADDRESS={Base_address[9:0],Offset_address[21:0]}

其中,[9:0]和[21:0]用于声明基地址位数和偏移地址位数,Base_address[9:0]即为高位信息,Offset_address[21:0]即为低位信息,利用逗号将其分开,并根据其先后关系确定目标基地址和目标偏移地址处于高位或低位。该操作地址为32位,其中各个数据位具有了具体的含义,使得可以根据含义准确传输操作地址,并使得接收操作地址的部件可以准确获取操作地址。需要说明的是,上述实施例中目标基地址和目标偏移地址的长度之和刚好等于PCIe设备内的总线位数32,因此操作地址本身即为传输信息。在其他实施方式中,目标基地址和目标偏移地址的长度之和可能小于PCIe设备内的总线位数。

下面对本申请实施例提供的操作地址确定装置进行介绍,下文描述的操作地址确定装置与上文描述的操作地址确定方法可相互对应参照。

本申请实施例提供了一种操作地址确定装置,应用于PCIe主机,包括:

操作地址获取模块,用于PCIe主机获取操作地址;

地址拆分模块,用于基于偏移地址块信息,生成操作地址对应的目标基地址和目标偏移地址;

寄存器设置指令生成模块,用于基于目标基地址和目标偏移地址生成寄存器设置指令;

第一发送模块,用于将寄存器设置指令发送至PCIe设备,以便对PCIe设备中用于存储目标基地址的第一寄存器和/或用于存储目标偏移地址的第二寄存器进行设置。

可选地,寄存器设置指令生成模块,包括:

第一检测单元,用于获取当前基地址,并利用当前基地址与目标基地址进行匹配检测,得到第一检测结果;

第二检测单元,用于获取当前偏移地址,并利用当前偏移地址与目标偏移地址进行匹配检测,得到第二检测结果;

生成单元,用于利用检测结果为不匹配的地址信息生成寄存器设置指令;检测结果包括第一检测结果和第二检测结果,地址信息包括目标基地址和/或目标偏移地址。

可选地,还包括:

操作指令生成模块,用于获取目标操作信息,并利用目标操作信息生成操作指令;

第二发送模块,用于将操作指令发送至PCIe设备。

相应的,本申请实施例还提供了一种操作地址确定装置,应用于PCIe设备,包括:

第一读取模块,用于PCIe设备在检测到操作指令后,从第一寄存器中读取目标基地址;

第二读取模块,用于从第二寄存器中读取目标偏移地址;

拼位处理模块,用于对目标基地址和目标偏移地址进行拼位处理,得到操作地址。

可选地,还包括:

数量检测模块,用于获取寄存器设置指令,并检测寄存器设置指令中地址信息的数量;

第一设置模块,用于若数量为一个,则识别地址信息对应的地址类别,并基于地址类别对第一寄存器或第二寄存器进行设置;

第二设置模块,用于若数量为两个,则识别地址类别,并根据地址类别利用两个地址信息分别对第一寄存器和第二寄存器进行设置。

可选地,拼位处理模块,包括:

位数获取单元,用于获取目标基地址对应的基地址位数和目标偏移地址对应的偏移地址位数;

高位信息生成单元,用于利用目标基地址和基地址位数生成高位信息;

低位信息生成单元,用于利用目标偏移地址和偏移地址位数生成低位信息;

拼位单元,用于对高位信息和低位信息进行拼位操作,得到操作地址。

可选地,还包括:

地址发送模块,用于将操作地址发送至目标部件,以便目标部件基于操作地址执行操作指令对应的目标操作。

下面对本申请实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的操作地址确定方法可相互对应参照。

本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的操作地址确定方法的步骤。

该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 操作地址确定方法、PCIe系统、电子设备及存储介质
  • 一种操作系统确定方法、装置、电子设备及存储介质
技术分类

06120112422914