访问存储设备的方法和存储设备转让专利

申请号 : CN201680057568.4

文献号 : CN108139992B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈云宋昆鹏仇连根

申请人 : 华为技术有限公司

摘要 :

一种访问存储设备的方法和存储设备。所述方法包括:接收对该存储设备进行第二访问操作的第一行指令,该第一行指令携带第一访问地址,该第一访问地址包括第一行地址以及第一读写指示信息(S210);根据该第一读写指示信息,确定该第一访问操作是读操作或写操作(S220);根据确定的第一访问操作,进行该确定的第一访问操作的准备操作,该准备操作用于该存储设备在预设时间阙值内完成该读操作或该写操作的准备过程(S230);接收对该存储设备进行该第一访问操作的列指令,该列指令携带列地址(S240);根据该第一行地址和该列地址,访问该存储设备中该第一行地址和该列地址对应的地址空间(S250)。所述存储设备能够提前识别出访问操作,从而延长了访问响应时间。

权利要求 :

1.一种访问存储设备的方法,其特征在于,包括:

接收对所述存储设备进行第一访问操作的第一行指令,所述第一行指令携带第一访问地址,所述第一访问地址包括第一行地址以及第一读写指示信息;

根据所述第一读写指示信息,确定所述第一访问操作是读操作或写操作;

根据确定的第一访问操作,进行所述确定的第一访问操作的准备操作,所述准备操作用于所述存储设备在预设时间阈值内完成所述读操作或所述写操作的准备过程;

接收对所述存储设备进行所述第一访问操作的列指令,所述列指令携带列地址;

根据所述第一行地址和所述列地址,访问所述存储设备中所述第一行地址和所述列地址对应的地址空间。

2.根据权利要求1所述的方法,其特征在于,所述根据确定的第一访问操作,进行所述确定的访问操作的准备操作包括:根据所述确定的第一访问操作,配置所述存储设备的数据接口传输方向,所述数据接口传输方向包括输入方向和输出方向。

3.根据权利要求1所述的方法,其特征在于,所述第一读写指示信息包括至少一个字段;

其中,所述根据所述第一读写指示信息,确定所述第一访问操作是读操作或写操作包括:根据所述至少一个字段的取值,确定所述第一访问操作是所述读操作或所述写操作。

4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:接收对所述存储设备进行第二访问操作的第二行指令,所述第二行指令携带第二访问地址,所述第二访问地址包括第二行地址以及第二读写指示信息;

根据所述第二读写指示信息,确定所述第二访问操作是所述读操作或所述写操作;

根据确定的第二访问操作与所述确定的第一访问操作是否相同,确定是否修改所述存储设备的数据接口传输方向;

在所述确定的第二访问操作与所述确定的第一访问操作相同时,确定不修改所述存储设备的数据接口传输方向。

5.一种存储设备,其特征在于,包括:

第一接收模块,用于接收对所述存储设备进行第一访问操作的第一行指令,所述第一行指令携带第一访问地址,所述第一访问地址包括第一行地址以及第一读写指示信息;

第一确定模块,用于根据所述第一读写指示信息,确定所述第一访问操作是读操作或写操作;

第一处理模块,用于根据所述第一确定模块确定的第一访问操作,进行所述确定的第一访问操作的准备操作,所述准备操作用于所述存储设备在预设时间阈值内完成所述读操作或所述写操作的准备过程;

第二接收模块,用于接收对所述存储设备进行所述第一访问操作的列指令,所述列指令携带列地址;

第二处理模块,用于根据所述第一行地址和所述列地址,访问所述存储设备中所述第一行地址和所述列地址对应的地址空间。

6.根据权利要求5所述的存储设备,其特征在于,所述第一处理模块具体用于:根据所述确定的第一访问操作,配置所述存储设备的数据接口传输方向,所述数据接口传输方向包括输入方向和输出方向。

7.根据权利要求5所述的存储设备,其特征在于,所述第一读写指示信息包括至少一个字段;

所述第一确定模块具体用于:

根据所述至少一个字段的取值,确定所述第一访问操作是所述读操作或所述写操作。

8.根据权利要求5至7中任一项所述的存储设备,其特征在于,所述存储设备还包括:第三接收模块,用于接收对所述存储设备进行第二访问操作的第二行指令,所述第二行指令携带第二访问地址,所述第二访问地址包括第二行地址以及第二读写指示信息;

第二确定模块,用于根据所述第二读写指示信息,确定所述第二访问操作是所述读操作或所述写操作;

第三确定模块,用于根据确定的第二访问操作与所述确定的第一访问操作是否相同,确定是否修改所述存储设备的数据接口传输方向;

第三处理模块,在所述确定的第二访问操作与所述确定的第一访问操作相同时,用于确定不修改所述存储设备的数据接口传输方向。

9.一种存储设备,其特征在于,包括:命令译码和执行模块、命令地址接口模块、时钟域转换电路模块、数据接口模块和数据存储模块;

所述命令地址接口模块,用于接收对所述存储设备进行第一访问操作的第一行指令,以及接收对所述存储设备进行所述第一访问操作的列指令;

所述时钟域转换电路模块,用于转换所述命令地址接口模块接收的所述第一行指令和所述列指令的时钟域;

所述命令译码和执行模块,用于对通过所述时钟域转换电路模块转换时钟域后的第一行指令和列指令进行译码,识别出所述第一行指令携带第一访问地址和所述列指令携带列地址,其中,所述第一访问地址包括第一行地址以及第一读写指示信息,并根据所述第一读写指示信息确定所述第一访问操作是读操作或写操作,以及根据确定的所述第一访问操作进行所述确定的第一访问操作的准备操作,所述准备操作用于所述存储设备在预设时间阈值内完成所述读操作或所述写操作的准备过程;

所述数据接口模块,用于接收或发送数据;

所述数据存储模块,用于根据所述命令译码和执行模块识别出的所述第一行地址和所述列地址,将所述数据接口模块接收的数据存储到所述第一行地址和所述列地址对应的地址空间,或者通过所述数据接口模块发送所述第一行地址和所述列地址对应的地址空间中的数据。

10.根据权利要求9所述的存储设备,其特征在于,所述命令译码和执行模块具体用于:根据所述确定的第一访问操作,配置所述数据接口模块的传输方向,所述数据接口模块的传输方向包括输入方向和输出方向。

11.根据权利要求9所述的存储设备,其特征在于,所述第一读写指示信息包括至少一个字段;

所述命令译码和执行模块具体用于:

根据所述至少一个字段的取值,确定所述第一访问操作是所述读操作或所述写操作。

12.根据权利要求9至11中任一项所述的存储设备,其特征在于,所述命令地址接口模块,还用于接收对所述存储设备进行第二访问操作的第二行指令;

所述时钟域转换电路模块,还用于转换所述命令地址接口模块接收的所述第二行指令的时钟域;

所述命令译码和执行模块,还用于对通过所述时钟域转换电路模块转换时钟域后的第二行指令进行译码,识别出所述第二行指令携带第二访问地址,其中,所述第二访问地址包括第二行地址以及第二读写指示信息,并根据所述第二读写指示信息确定所述第二访问操作是所述读操作或所述写操作,以及根据确定的第二访问操作与所述确定的第一访问操作是否相同,确定是否修改所述数据接口模块的传输方向,在所述确定的第二访问操作与所述确定的第一访问操作相同时,用于确定不修改所述数据接口模块的传输方向。

说明书 :

访问存储设备的方法和存储设备

技术领域

[0001] 本申请涉及计算机领域,并且更具体地,涉及访问存储设备的方法和存储设备。

背景技术

[0002] 双倍数据速率(Double Data Rate,DDR)技术具有高带宽(最高可达200Gbit/s)、低延迟(数十纳秒级别)的特点,具有承载系统互连的潜力。由于DDR总线原本被设计用来直接访问动态随机存储器(Dynamic Random Access Memory,DRAM)内存颗粒,因此只需十几到几十个纳秒即可完成读写访问,时延很短。中央处理器(Central Processing Unit,CPU)中的内存控制器是基于电子工程设计发展联合会议(Joint Electron  Device Engineering Council,JEDEC)的协议设计和实现,能够设置的读写延迟同样较短。因此,在计算机存在扩展设备的条件下,譬如:非易失性存储(Non-volatile Memory,NVM)芯片、现场可编程门阵列(Field-Programmable Gate Array,FPGA)芯片,CPU通过DDR总线访问这些扩展设备时,会出现访问时序不满足DDR协议要求,导致扩展设备无法和CPU正常通信。例如,当CPU发出一个读命令后,扩展设备在规定的时间内没有回复正确的数据,导致CPU采集到错误的数据,从而引起系统错误。
[0003] 现有技术提出利用DDR总线协议中保留的命令字段,扩展出提前读/写命令,在需要向扩展设备发起访问请求时,内存控制器先发送扩展的提前读写命令,再发送常规的激活行指令(Active,ACT)指令及读指令或写指令。扩展设备根据接收到的提前读/写命令,执行访问准备操作,再根据正常的读写命令给出响应。这样每次进行读写访问,都需要内存控制器提前发出提前读写指令,然后才是正常的读写指令,造成带宽占用较大,CPU功耗较高。

发明内容

[0004] 本申请实施例提供一种访问存储设备的方法和存储设备,能够减少带宽占用。
[0005] 第一方面,提供了一种访问存储设备的方法。该方法包括:接收对该存储设备进行第一访问操作的第一行指令,该第一行指令携带第一访问地址,该第一访问地址包括第一行地址以及第一读写指示信息;根据该第一读写指示信息,确定该第一访问操作是读操作或写操作;根据确定的第一访问操作,进行该确定的第一访问操作的准备操作,该准备操作用于该存储设备在预设时间阈值内完成该读操作或该写操作的准备过程;接收对该存储设备进行该第一访问操作的列指令,该列指令携带列地址;根据该第一行地址和该列地址,访问该存储设备中该第一行地址和该列地址对应的地址空间。
[0006] 存储设备接收携带第一读写指示信息和行地址的行指令,根据该第一读写指示信息确定该访问操作是读操作还是写操作,并根据确定的访问操作进行能够使得该存储设备在预设时间阈值内完成该确定的访问操作的准备操作,再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间,使得该存储设备提前识别出访问操作是读操作还是写操作,延长了存储设备进行读写操作的响应时间,进而能够与CPU进行通信。也就是说,CPU避免了在发送行指令之前单独发送读写指令,就能够实现与存储设备的通信,减少了带宽占用。
[0007] 结合第一方面,在一些可能的实现方式中,该根据确定的第一访问操作,进行该确定的访问操作的准备操作包括:根据该确定的第一访问操作,配置该存储设备的数据接口传输方向,该数据接口传输方向包括输入方向和输出方向。
[0008] 存储设备根据行指令携带的第一读写指示信息,可以提前识别出对存储设备进行的访问操作是读操作还是写操作,从而能够进行访问操作的准备操作。该准备操作可以是打开存储设备的数据收发接口,以及配置数据收发接口的传输方向。这样,该存储设备能够在接收到行指令时就可以提前识别出对存储设备进行的读写操作,相当于延长了存储设备进行读写操作的响应时间,进而能够与CPU进行通信。
[0009] 结合第一方面,在一些可能的实现方式中,该第一读写指示信息包括至少一个字段;其中,该根据该第一读写指示信息,确定该第一访问操作是读操作或写操作包括:根据该至少一个字段的取值,确定该第一访问操作是读操作或写操作。
[0010] 该读写指示信息可以是至少一个字段,存储设备可以预先配置该至少一个字段的值与读写操作的映射关系,这样存储设备根据该至少一个字段的取值可以确定对存储设备进行的访问操作是读操作还是写操作,存储设备可以提前为确定的访问操作做好准备工作,相当于延长了访问该存储设备的响应时间,从而该存储设备能够与CPU正常通信。
[0011] 结合第一方面,在一些可能的实现方式中,该方法还包括:接收对该存储设备进行第二访问操作的第二行指令,该第二行指令携带第二访问地址,该第二访问地址包括第二行地址以及第二读写指示信息;根据该第二读写指示信息,确定该第二访问操作是读操作或写操作;根据确定的第二访问操作与该确定的第一访问操作是否相同,确定是否修改该存储设备的数据接口传输方向;若根据该确定的第二访问操作与该确定的第一访问操作相同,确定不修改该存储设备的数据接口传输方向。
[0012] 若存储设备根据第二读写指示信息确定的访问操作与根据第一读写指示信息确定的访问操作不相同时,这时需要进行调整数据接口的传输方向;若存储设备根据第二读写指示信息确定的访问操作与根据第一读写指示信息确定的访问操作相同时,则不需要修改数据接口的传输方向,这样存储设备可以进一步减少操作步骤,降低功耗。
[0013] 第二方面,本申请提供了一种存储设备,该存储设备包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的模块。
[0014] 第三方面,本申请提供了一种存储设备,该存储设备包括命令译码和执行模块、命令地址接口模块、时钟域转换电路模块、数据接口模块和数据存储模块;该命令地址接口模块,用于接收对该存储设备进行第一访问操作的第一行指令,以及接收对该存储设备进行该第一访问操作的列指令;该时钟域转换电路模块,用于转换该命令地址接口模块接收的该第一行指令和该列指令的时钟域;该命令译码和执行模块,用于对通过该时钟域转换电路模块转换时钟域后的第一行指令和列指令进行译码,识别出该第一行指令携带第一访问地址和该列指令携带列地址,其中,该第一访问地址包括第一行地址以及第一读写指示信息,并根据该第一读写指示信息确定该第一访问操作是读操作或写操作,以及根据确定的该第一访问操作进行该确定的第一访问操作的准备操作,该准备操作用于该存储设备在预设时间阈值内完成该读操作或该写操作的准备过程;该数据接口模块,用于接收或发送数据;该数据存储模块,用于根据该命令译码和执行模块识别出的该第一行地址和该列地址,将该数据接口模块接收的数据存储到该第一行地址和该列地址对应的地址空间,或者通过该数据接口模块发送该第一行地址和该列地址对应的地址空间中的数据。
[0015] 结合第三方面,在一些可能的实现方式中,该命令译码和执行模块具体用于:根据该确定的第一访问操作,配置该数据接口模块的传输方向,该数据接口模块的传输方向包括输入方向和输出方向。
[0016] 结合第三方面,在一些可能的实现方式中,该第一读写指示信息包括至少一个字段;该命令译码和执行模块具体用于:根据该至少一个字段的取值,确定该第一访问操作是该读操作或该写操作。
[0017] 结合第三方面,在一些可能的实现方式中,该命令地址接口模块,还用于接收对该存储设备进行第二访问操作的第二行指令;该时钟域转换电路模块,还用于转换该命令地址接口模块接收的该第二行指令的时钟域;该命令译码和执行模块,还用于对通过该时钟域转换电路模块转换时钟域后的第二行指令进行译码,识别出该第二行指令携带第二访问地址,其中,该第二访问地址包括第二行地址以及第二读写指示信息,并根据该第二读写指示信息确定该第二访问操作是该读操作或该写操作,以及根据确定的第二访问操作与该确定的第一访问操作是否相同,确定是否修改该数据接口模块的传输方向,在该确定的第二访问操作与该确定的第一访问操作相同时,用于确定不修改该数据接口模块的传输方向。
[0018] 第四方面,提供了一种访问存储设备的系统,该系统包括:CPU、通信接口和上述第二方面或上述第三方面的存储设备。CPU与存储设备和通信接口连接。存储设备用于存储指令,CPU用于执行该指令,通信接口用于在CPU的控制下与其他网元进行通信。该CPU执行该存储设备存储的指令时,该执行使得该CPU执行第一方面或第一方面的任意可能的实现方式中的方法。
[0019] 第五方面,提供了一种计算机存储介质,该计算机存储介质中存储有程序代码,该程序代码用于指示执行上述第一方面或第一方面的任一种可能的实现方式中的访问存储设备的方法的指令。
[0020] 基于上述技术方案,存储设备接收携带第一读写指示信息和行地址的行指令,根据该第一读写指示信息确定该访问操作是读操作还是写操作,并根据确定的访问操作进行能够使得该存储设备在预设时间阈值内完成该确定的访问操作的准备操作,再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间,使得该存储设备提前识别出访问操作是读操作还是写操作,延长了存储设备进行读写操作的响应时间,进而能够与CPU进行通信,且避免了CPU在发送行指令之前单独发送读写指令,减少了带宽占用。

附图说明

[0021] 下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
[0022] 图1是本申请存储设备的结构示意图;
[0023] 图2是现有技术的读指令访问存储设备的方法的示意图;
[0024] 图3a和图3b分别是现有技术的读、写指令访问存储设备的方法的示意图;
[0025] 图4是本申请实施例的访问存储设备的方法的示意图;
[0026] 图5a和图5b是本申请存储设备的地址空间的示意图;
[0027] 图6是本申请实施例的访问存储设备的方法的示意性流程图;
[0028] 图7是本申请实施例的存储设备的示意性框图;
[0029] 图8是本申请实施例的系统的示意性框图;
[0030] 图9是本申请实施例的存储设备的结构示意图。

具体实施方式

[0031] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
[0032] 为了方便理解本申请实施例,首先在介绍本申请实施例之前引入以下几个要素。
[0033] 现场可编程门阵列(FPGA)兼备高能效和高灵活性两个方面,大约是通用处理器10~100倍之间的效率。此外,FPGA非常适合做细粒度的加速。
[0034] 内存/NVM扩展技术是通过内存扩展可以满足大数据处理对于内存计算的需求,提高计算性能,降低任务的处理时延;或者是通过NVM扩展,可以提高数据存储的容量和访问性能,满足海量存储需求。由于DDR接口具有高带宽、低延迟的特点,并且其工作模式的设计就是为了访问内存,是扩展内存和NVM的首选。其中,NVM为基于新的半导体材料而出现的多种新型内存技术,具有停止供电后数据不丢失的特性。
[0035] 模组存在的串行检测(Serial Presence Detect,SPD),是通过芯片问的集成电路总线(Inter-Integrated Circuit,IIC)串行接口连接的电可擦只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)对内存插槽中的模组存在的信息检查装置,存储着内存模组的配置信息,用来协助内存控制器端精确调整内存的物理/时序参数,以达到最佳使用效果。
[0036] 本申请实施例中,访问操作的准备操作是指根据行地址和访问指令访问存储设备的存储空间能够进行的准备操作,可以是存储设备能够提前进行的所有准备操作或者是部分需要时间较长的准备操作等,只要能够使得存储设备接收到列指令后在DDR协议规定的时间内完成读写操作的准备操作,都在本申请保护的范围之内,为描述方便,本申请以该准备操作为耗时较长的配置数据收发接口的传输方向为例进行说明。
[0037] 应理解,本申请实施例中,存储设备可以是基于FPGA的存储设备,或者是功能相似的其他存储设备。为了描述方便,下述实施例以FPGA存储设备为例进行说明,但本申请对此并不限定。
[0038] 图1示出了FPGA存储设备的结构示意图。如图1所示,基于FPGA的存储设备100主要有数据接口模块101,时钟域转换电路模块102,命令译码(Dec)和执行模块103,以及数据存储模块104、命令地址接口模块105等几部分组成。
[0039] 其中,数据接口电路模块101还包括接收部分和发送部分。数据接口电路部分101的接收部分主要是采样接收从高速总线接口上的数据等高速串行信号,并进行串并转换,转换成速度相对低的并行信号;数据接口电路部分101的发送部分主要是从FPGA内部接收数据,进行并串转换,调制等,然后发送到高速总线接口上。
[0040] 命令地址接口模块105的接收部分主要是采样接收从高速总线接口上的地址和命令等高速串行信号,并进行串并转换,转换成速度相对低的并行信号。
[0041] 因为命令或地址是单向的从FPGA外部往FPGA内部流动的,所以命令地址接口模块105只有接收部分,而数据接口电路模块101因为要接收和发送数据,是双向的接口,还需要有方向的控制电路进行发送和接收方向的转换。
[0042] 时钟域转换电路模块102是把信号从接口电路时钟域转化成FPGA内部时钟域,或者把信号从FPGA内部时钟域转换到接口电路时钟域中,因为在硬件电路中,其信号必须要与该部分的时钟信号相匹配,否则会出现信号采样错误发生。
[0043] 命令译码和执行模块103,对命令总线上的命令和地址进行译码,以翻译出正确的DDR的命令序列,并根据内部的状态执行相应的命令。
[0044] 存储设备内部的存储部分104用于存储读写的数据。
[0045] DDR访问总线上的命令顺序有ACT、列指令(Column Address Select,CAS)等命令序列。具体地,首先是ACT命令,用于打开某个Rank/Bank Group/Bank命令内的行;然后是CAS命令,用于选择行内的列地址,最后才是数据总线上的双向数据控制引脚(Bi-directional Data Strobe,DQS)/双向数据总线(Bi-directional data bus,DQ);等访问完该行后,用PreCharge命令关闭该行;DDR总线上的各命令之间必须满足DDR标准规范规定的时序要求。
[0046] DDR标准中几个时间信息的定义:
[0047] 行指令到列指令时延(time RAS-to-CAS Delay,tRCD):从ACT命令到接收到列指令之间的时间;
[0048] CAS附加潜伏期(Posted CAS Additive Latency,AL);
[0049] 列地址读命令潜伏期(Column Address Select Latency,CL):从内部携带读命令的CAS指令发出到第一笔数据输出的这段时间,CL只在读取时使用;
[0050] 列地址写命令潜伏期(CAS Write Latency,CWL):从内部携带写命令的CAS指令到第一个可见的数据输入之间的时间定义为CWL。这是DDR3新增的时序参数,仅在写操作时使用;
[0051] 读命令潜伏期(time of Read Latency,RL):读命令时,CAS命令到数据总线上的第一个DQ的延时,一般RL=AL+CL;
[0052] 写命令潜伏期(time of Write Latency,WL):写命令时,CAS命令到数据总线上的第一个DQ的延时,一般WL=AL+CWL。
[0053] 目前大多数的CPU不支持AL不等于0的情况。上述计算中,以AL=0为例进行说明,但本申请并不限于此。
[0054] DDR为一种数据传输技术,在随路时钟信号的上升沿下降沿都有一次数据传输,相对单沿采样可以使数据的传输速率提高一倍,目前广泛应于内存领域。由于DDR总线原本被设计用来直接访问DRAM内存颗粒,只需十几到几十个纳秒即可完成读写访问,时延很短。因此,DDR协议中规定的关键时延参数CL/RL、CWL/WL的有效范围都较小。例如,DDR4协议中的CL有效范围为9~24个时钟周期(如下表1所示),最大值对应30ns。
[0055] 表1
[0056] A6 A5 A4 A2 CAS Latency0 0 0 0 9
0 0 0 1 10
0 0 1 0 11
0 0 1 1 12
0 1 0 0 13
0 1 0 1 14
0 1 1 0 15
0 1 1 1 16
1 0 0 0 18
1 0 0 1 20
1 0 1 0 22
1 0 1 1 24
1 1 0 0 Reserved
1 1 0 1 Reserved
1 1 1 0 Reserved
1 1 1 1 Reserved
[0057] 由于CPU中的内存控制器是基于JEDEC的协议设计和实现,能够设置的读写延迟同样较短。因此,直接在内存侧进行互连和内存/NVM访问的扩展会出现访问时序不满足协议要求,导致扩展存储设备无法和CPU正常通信。例如,如图2所示,当CPU首先发出ACT指令,再发出一个读命令(图中的读(READ)指令)后,扩展存储设备的反应时间只有t=tCL,若DDR存储设备不能在规定的时间内给出响应(例如,输出数据(Dout)),就会造成CPU采集到错误的数据,进而无法与扩展存储设备进行通信。
[0058] 现有技术提出利用DDR总线协议中保留的命令字段,扩展出提前读/写命令PR1/PW1、PR2/PW2(如表2所示),在需要向扩展存储设备发起访问请求时,内存控制器先给出扩展的提前读/写命令,再给出常规的ACT指令及读指令或写指令。扩展存储设备根据接收到的提前读/写命令,执行读写访问,再根据正常的DDR读写命令给出响应。
[0059] 表2
[0060]
[0061] 因此,如图3a和图3b所示,现有技术中,每次进行读写访问的时候,都需要内存控制器提前发出PR1/PW1、PR2/PW2的指令,然后才是正常的ACT指令、读指令(RD)或写指令(WR),多余的PR1/PW1、PR2/PW2指令的操作需要占用较大的DDR访问带宽。
[0062] 图4示出了根据本申请一个实施例的访问存储设备的方法200的示意图,该方法200可以由存储设备执行。该方法200包括:
[0063] S210,接收对该存储设备进行第一访问操作的第一行指令,该第一行指令携带第一访问地址,该第一访问地址包括第一行地址以及第一读写指示信息;
[0064] S220,根据该第一读写指示信息,确定该第一访问操作是读操作或写操作;
[0065] S230,根据确定的第一访问操作,进行该确定的第一访问操作的准备操作,该准备操作用于该存储设备在预设时间阈值内完成该读操作或该写操作的准备过程;
[0066] S240,接收对该存储设备进行该第一访问操作的列指令,该列指令携带列地址;
[0067] S250,根据该第一行地址和该列地址,访问该存储设备中该第一行地址和该列地址对应的地址空间。
[0068] 具体而言,存储设备接收ACT指令,ACT指令用于激活DDR中的某一行数据。该ACT指令携带第一访问地址,该第一访问地址包括第一行地址以及第一读写指示信息,存储设备根据该第一读写指示信息确定该访问操作是读操作还是写操作,并根据确定的访问操作进行能够使得该存储设备在预设时间阈值内完成该确定的访问操作的准备操作,再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间。
[0069] 存储设备根据该第一读写指示信息确定对存储设备进行的访问操作为读操作(即访问指令为读指令)时,进行将数据发送出去所需的准备操作;存储设备根据该第一读写指示信息确定对存储设备进行的访问操作为写操作(即访问指令为写指令)时,进行将接收到的数据存储到的存储空间所需的准备操作。这样,该存储设备能够提前识别出即将对存储设备进行的访问操作进行读操作还是写操作。换句话说,存储设备根据第一读写指示信息能够提前获知访问指令为读指令或写指令,这样存储设备能够延长访问操作的响应的时间,即满足DDR协议要求在规定的时间内完成数据的读操作或写操作,从而该存储设备能够与CPU正常通信。
[0070] 如图2所示,现有技术中,当CPU发出一个读命令(即CAS指令携带的读写指示信息)后,存储设备的反应时间即从接收到CAS指令计时只有t=tCL,由表1可知,CL≤20周期,但是扩展的存储设备一般的延迟都比较大,例如,FPGA设备在1600MT/s的速率下,RL需要28-30周期左右,无法满足标准的DDR协议的时延。FPGA设备在不同速率下,RL时延不同,具体的对应关系如表3所示。
[0071] 表3
[0072]DDR4速率(MT/s) RL延迟值(周期)
1333 26~28
1600 28~30
1866 32
2133 38
[0073] 本发明实施例以FPGA存储设备的速率为1600MT/s为例进行说明,CPU通过ACT指令中携带的第一读写指示信息提前获知访问操作为读操作(或写操作)时,存储设备访问操作的反应时间可以扩展为ACT指令和CAS指令之间的时间与CAS指令到数据出现在总线上(或数据存储到地址空间中)的时间之和,即t=tRCD+tCL(tCWL)。
[0074] 表4
[0075]
[0076] 例如,如表4所示RCD=10周期时,双倍数据速率的DDR4的速率为1600MT/s,实际速率为1600/2=800MT/s,即周期为1/800=1.25ns,也就是说,tCL=10*1.25=12.5ns。RCD的最小值为12.5ns(即10周期),没有最大值。所以RL=RCD+CL>30周期,从而能够满足28-30周期的要求,使得CPU能够与FPGA存储设备进行通信。
[0077] 应理解,本申请实施例中,对“命令”和“指令”不进行区分,即描述的含义是一致的。本申请实施例中的“访问指令”和“访问地址”即为通常描述的“访存指令”和“访存地址”,本申请实施例对此也不进行区分。
[0078] 因此,本申请实施例的访问存储设备的方法,通过接收携带第一读写指示信息和行地址的行指令,根据该第一读写指示信息确定该访问操作是读操作还是写操作,并根据确定的访问操作进行能够使得该存储设备在预设时间阈值内完成该确定的访问操作的准备操作,再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间,使得该存储设备提前识别出访问操作是读操作还是写操作,延长了存储设备进行读写操作的响应时间,进而能够与CPU进行通信。此外,本申请实施例避免了CPU在发送行指令之前单独发送读写指令,减少了带宽占用。
[0079] 可选地,该第一读写指示信息包括至少一个字段;其中,该根据该第一读写指示信息,确定该第一访问操作是读操作或写操作包括:根据该至少一个字段的取值,确定该第一访问操作是读操作或写操作。
[0080] 该第一读写指示信息可以是至少一个字段,存储设备可以根据该至少一个字段确定对该存储设备进行的访问操作是读操作还是写操作。该至少一个字段可以是访问地址的高位字段,存储设备可以通过在访问地址扩展的高位字段值的不同确定是读指令还是写指令,例如,若访问地址除包含行地址还包括一个字段,该字段的值为0表示访问指令为写指令;该字段的值为1表示访问指令为读指令。
[0081] 应理解,该至少一个字段为多个字段时,存储设备可以提前配置好该多个字段的值分别与访问指令的映射关系。
[0082] 还应理解,该读写指示信息还可以是其他能够用于区分访问指令为读指令或写指令的指示信息,本申请对此不进行限定。
[0083] 可选地,存储设备还可以根据该第一读写指示信息的值是否属于该存储设备的地址空间确定对该存储设备的访问操作是读操作还是写操作。例如,存储设备将模组存在的串行检测(Serial Presence Detect,SPD)信息中预留的字节空间(即真实存在的存储空间)确定为写地址空间。第一读写指示信息为至少一个字段时,存储设备根据该至少一个字段的值是否属于写地址空间的地址范围,确定访问操作为读操作或写操作。若该至少一个字段的值属于写地址空间的地址范围,则确定该访问指令为写指令;若至少一个字段的值不属于写地址空间,则确定该访问指令为读指令。
[0084] 应理解,存储设备也可以将SPD信息中预留的字节空间确定为读地址空间,存储设备根据该至少一个字段的值是否属于读地址空间确定访问操作为读操作或写操作。若访问地址属于读地址空间,确定访问操作为读操作,否则为写操作。
[0085] 需要说明的是,该至少一个字段为地址高位时,以低位地址(即行地址)为最大值计算该至少一个字段的值是否属于该存储设备的地址空间。
[0086] 可选地,该第一读写指示信息通过至少一个字段表示时,存储设备还可以根据该至少一个字段的取值确定一个虚拟的地址空间,存储设备还包括SPD信息中存储预留的字节空间(即真实存在的存储空间)。这样,存储设备包括两个地址空间,可以分别看作读地址空间和写地址空间。
[0087] 需要说明的是,该至少一个字段可以地址高位,以低位地址(即行地址)为最大值,根据该至少一个字段确定的地址空间实际为虚拟的空间,并不是该存储设备真正存在的空间。
[0088] 存储设备根据该至少一个字段的值确定该访问地址属于写地址空间时,则被认为是写命令(即对存储设备进行写操作)。如图5a所示,FPGA实际的存储空间为0x00000000~0x0000FFFF。通过对存储空间的映射,使得CPU启动时,看到的存储空间如图5b所示,写地址空间为0x00000000~0x0000FFFF,读地址空间为0x00010000~0x0001FFFF。
[0089] 具体地,在FPGA存储设备中可以设置2个Rank/Bank Group/Bank地址空间,读地址空间为Rank0/Bank Group0/Bank0地址,写地址空间为Rank1/Bank Group1/Bank1地址。在CPU的基本输入/输出系统(Basic Input/Output System,BIOS)启动的时候,把这两段地址空间映射到特定的地址空间段。假设FPGA存储设备内部的地址空间大小为0x10000,通过地址取值范围的不同来区分是读指令还是写指令。例如,读地址空间为0x00100000~0x0010ffff,写地址空间为0x00110000~0x0011ffff。可选地,读地址空间和写地址空间两者的区别可以仅在于地址的高位。
[0090] 再例如,假设真实的地址空间(即写地址空间)为0~10,读地址对应的地址空间(即虚拟地址空间)为10~20的,当ACT指令携带的访存地址中行地址为5,至少一个字段的值为10,即访问地址为15,其中的地址大于10表示该访存命令是读命令,而真正的读地址还是15-10=5,综合起来就是从地址为5的地址空间中读取数据;如果行地址为5,至少一个字段的值为0,则表示为写命令,将数据存储到地址为5的地址空间中。
[0091] FPGA内部的命令接口电路从命令地址总线上接收到高速的命令/地址串行数据后,先转换成低速的并行信号,经过时钟域转换电路后,进入命令译码电路,翻译出DDR的命令;执行单元判断是否是ACT命令,若是ACT命令,则根据ACT命令携带的第一读写指示信息,判断是读命令还是写命令。这样,存储设备根据该第一读写指示信息,可以提前确定出访问指令是读指令还是写指令。再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间,使得存储设备能够延长从识别出访问指令到给出响应的时间,即满足DDR协议要求,从而该存储设备能够与CPU正常通信。
[0092] 可选地,在本申请一个实施例中,该根据确定的第一访问操作,进行该确定的访问操作的准备操作包括:根据该确定的第一访问操作,配置该存储设备的数据接口传输方向,该数据接口传输方向包括输入方向和输出方向。
[0093] 具体而言,存储设备根据ACT指令携带的第一读写指示信息,可以提前确定对该存储设备进行的访问操作,并进行该访问操作的准备操作。该准备操作可以是打开数据收发接口,以及调整数据收发接口的数据传输方向等。具体地,若存储设备根据该第一读写指示信息确定对该存储设备的访问操作为读操作,则存储设备调整数据收发接口为发送状态。若存储设备根据该第一读写指示信息确定对该存储设备的访问操作为写操作,则存储设备调整数据收发接口为接收状态。
[0094] 可选地,在本申请一个实施例中,该方法还包括:接收对该存储设备进行第二访问操作的第二行指令,该第二行指令携带第二访问地址,该第二访问地址包括第二行地址以及第二读写指示信息;根据该第二读写指示信息,确定该第二访问操作是读操作或写操作;根据该第二读写指示信息确定的第二访问操作与该第一读写指示信息确定的第一访问操作是否相同,确定是否修改该存储设备的数据接口传输方向;若根据该第二读写指示信息确定的第二访问操作与该第一读写指示信息确定的第一访问操作相同,确定不修改该存储设备的数据接口传输方向。
[0095] 具体而言,存储设备完成一次访问操作(表示为第一访问操作)之后,会记录第一访问操作最终执行的是读操作还是写操作。存储设备接收到下一个对该存储设备进行访问操作(表示为第二访问操作)的第二行指令,该第二行指令与第一行指令类似携带有第二访问地址,且该第二访问地址包括第二行地址和第二读写指示信息,存储设备根据该第二读写指示信息确定该第二访问操作为读操作还写操作。此时,存储设备可以根据第二读写指示信息确定的第二访问操作与存储的第一访问操作是否相同,确定是否需要修改存储设备数据接口的传输方向。
[0096] 若存储设备根据第二读写指示信息确定的访问操作与根据第一读写指示信息确定的访问操作相同时,则不需要修改数据接口的传输方向;若第二读写指示信息确定的访问操作与第一读写指示信息确定的访问操作不相同时,这时候才需要进行调整数据接口的传输方向。这样,在若第二读写指示信息确定的访问操作与第一读写指示信息确定的访问操作相同时,存储设备可以进一步减少操作步骤,降低功耗。
[0097] 可选地,在本申请一个实施例中,存储设备接收到携带行地址和第一读写指示信息的ACT指令后,还会接收到CAS指令(即列指令),且该CAS指令也会携带读写指示信息(表示为第三读写指示信息),该第三读写指示信息用于确定对存储设备进行的访问操作为读操作或写操作。因此,存储设备在接收到CAS指令后,可以根据第一读写指示信息确定的访问指令与根据第二读写指示信息确定的访问指令是否相同,确定是否能够访问存储设备的地址空间。若根据第一读写指示信息确定的访问操作与第三读写指示信息确定的访问操作相同,则存储设备访问ACT携带的行地址和CAS携带的列地址对应的存储空间。本申请实施例存储设备能够提前识别出读写指令,提前启动读写访问操作,提高了总线传输效率和CPU处理效率。
[0098] 可选地,在本申请一个实施例中,如果存储设备根据ACT指令携带的第一读写指示信息确定的访问操作,和根据后续的CAS指令携带的第二读写指示信息确定的访问操作不一致时,则存储设备给出此次DDR访问异常的信息,通过纠错码(Error Correction Code,ECC)或者Alert_n管脚信息通知CPU。
[0099] CPU在接收到ECC错误或Alert_n的错误指示时,判断访问的存储空间是否符合访问的特性,进行修正后继续访问。
[0100] 因此,本申请实施例的访问存储设备的方法,通过接收携带第一读写指示信息和行地址的行指令,根据该第一读写指示信息确定该访问操作是读操作还是写操作,并根据确定的访问操作进行能够使得该存储设备在预设时间阈值内完成该确定的访问操作的准备操作,再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间,使得该存储设备提前识别出访问操作是读操作还是写操作,延长了存储设备进行读写操作的响应时间,进而能够与CPU进行通信。此外,本申请实施例避免了CPU在发送行指令之前单独发送读写指令,减少了带宽占用。
[0101] 图6示出了根据本申请一个实施例的访问存储设备的方法的交互流程图。本申请实施例中的各种术语的含义与前述各实施例相同。
[0102] 应注意,这只是为了帮助本领域技术人员更好地理解本申请实施例,而非限制本申请实施例的范围。
[0103] 310,CPU在第一ACT指令上携带第一访问地址,该第一访问地址包括第一行地址以及第一读写指示信息。
[0104] 320,CPU向存储设备发送第一ACT指令。
[0105] 330,存储设备根据该第一读写指示信息,配置数据收发接口的传输方向。
[0106] 存储设备根据第一读写指示信息,确定第一访问操作为读操作还是写操作,并根据确定的第一访问操作配置对应的数据收发接口的传输方向。若第一访问操作为读操作,则存储设备调整数据收发接口为发送状态。若第一访问操作为写操作,则存储设备调整数据收发接口为接收状态。
[0107] 340,CPU向存储设备发送第一CAS指令,该CAS指令携带第一列地址。
[0108] 存储设备接收到携带第一读写指示信息的第一ACT指令后,还会接收到第一CAS指令,且该第一CAS指令携带列地址。
[0109] 350,存储设备根据第一行地址和第一列地址,访问第一行地址和第一列地址对应的地址空间。
[0110] 360,CPU在第二ACT指令上携带第二访问地址,该第二访问地址包括第二行地址以及第二读写指示信息。
[0111] 370,CPU向存储设备发送第二ACT指令。
[0112] 380,存储设备根据该第一读写指示信息确定的访问操作与第二读写指示信息确定的访问操作是否相同,确定是否修改数据接口的传输方向。
[0113] 若不同,则需要配置合适的数据接口的传输方向,若相同,则不需要修改数据接口的传输方向,存储设备可以进一步减少操作步骤,降低功耗。
[0114] 390,CPU向存储设备发送第二CAS指令,该第二CAS指令携带第二列地址。
[0115] 400,CPU根据第二行地址和第二列地址,访问第二行地址和第二列地址对应的地址空间。
[0116] 应理解,上述相应信息的具体指示方式可参考前述各实施例,为了简洁,在此不再赘述。
[0117] 因此,本申请实施例的访问存储设备的方法,通过接收携带第一读写指示信息和行地址的行指令,根据该第一读写指示信息确定该访问操作是读操作还是写操作,并根据确定的访问操作进行能够使得该存储设备在预设时间阈值内完成该确定的访问操作的准备操作,再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间,使得该存储设备提前识别出访问操作是读操作还是写操作,延长了存储设备进行读写操作的响应时间,进而能够与CPU进行通信。此外,本申请实施例避免了CPU在发送行指令之前单独发送读写指令,减少了带宽占用。
[0118] 应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0119] 上文中详细描述了根据本申请实施例的访问存储设备的方法,下面将描述根据本申请实施例的存储设备。
[0120] 图7示出了根据本申请实施例的存储设备500的示意性框图。如图7所示,该存储设备500包括:
[0121] 第一接收模块510,用于接收对该存储设备进行第一访问操作的第一行指令,该第一行指令携带第一访问地址,该第一访问地址包括第一行地址以及第一读写指示信息;
[0122] 第一确定模块520,用于根据该第一读写指示信息,确定该第一访问操作是读操作或写操作;
[0123] 第一处理模块530,用于根据该第一确定模块520确定的第一访问操作,进行该确定的第一访问操作的准备操作,该准备操作用于该存储设备在预设时间阈值内完成该读操作或该写操作的准备过程;
[0124] 第二接收模块540,用于接收对该存储设备进行该第一访问操作的列指令,该列指令携带列地址;
[0125] 第二处理模块550,用于根据该第一行地址和该列地址,访问该存储设备中该第一行地址和该列地址对应的地址空间。
[0126] 因此,本申请实施例提供的存储设备,通过接收携带第一读写指示信息和行地址的行指令,根据该第一读写指示信息确定该访问操作是读操作还是写操作,并根据确定的访问操作进行能够使得该存储设备在预设时间阈值内完成该确定的访问操作的准备操作,再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间,使得该存储设备提前识别出访问操作是读操作还是写操作,延长了存储设备进行读写操作的响应时间,进而能够与CPU进行通信。此外,本申请实施例避免了CPU在发送行指令之前单独发送读写指令,减少了带宽占用。
[0127] 可选地,在本申请一个实施例中,该第一处理模块530具体用于:根据该确定的第一访问操作,配置该存储设备的数据接口传输方向,该数据接口传输方向包括输入方向和输出方向。
[0128] 可选地,在本申请一个实施例中,该第一读写指示信息包括至少一个字段;该第一确定模块520具体用于:根据该至少一个字段的取值,确定该第一访问操作是读操作或写操作。
[0129] 可选地,在本申请一个实施例中,该存储设备500还包括:第三接收模块,用于接收对该存储设备进行第二访问操作的第二行指令,该第二行指令携带第二访问地址,该第二访问地址包括第二行地址以及第二读写指示信息;第二确定模块,用于根据该第二读写指示信息,确定该第二访问操作是读操作或写操作;第三确定模块,用于根据确定的第二访问操作与该确定的第一访问操作是否相同,确定是否修改该存储设备的接口传输方向;第三处理模块,若根据该确定的第二访问操作与该确定的第一访问操作相同,用于确定不修改该存储设备的接口传输方向。
[0130] 根据本申请实施例的存储设备500可对应于根据本申请实施例的访问存储设备的方法的存储设备,并且存储设备500中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。
[0131] 因此,本申请实施例提供的存储设备,通过接收携带第一读写指示信息和行地址的行指令,根据该第一读写指示信息确定该访问操作是读操作还是写操作,并根据确定的访问操作进行能够使得该存储设备在预设时间阈值内完成该确定的访问操作的准备操作,再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间,使得该存储设备提前识别出访问操作是读操作还是写操作,延长了存储设备进行读写操作的响应时间,进而能够与CPU进行通信。此外,本申请实施例避免了CPU在发送行指令之前单独发送读写指令,减少了带宽占用。
[0132] 图8示出了本申请的访问存储设备的系统700,该系统700包括:CPU702、本申请实施例的存储设备500,至少一个网络接口705或者其他通信接口,和至少一个通信总线703,用于实现各设备之间的连接通信。通过至少一个网络接口(可以是有线或者无线)实现与至少一个其他网元之间的通信连接。
[0133] 应理解,在本申请实施例中,该处理器702还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何读写延迟较短的处理器等。
[0134] 该通信总线703除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等,该702和该存储设备500还可以通过其他类型的总线进行通信,例如,光纤或光波导等,但是为了清楚说明起见,在图中将各种总线都标为通信总线703。
[0135] 本申请实施例还提供一种计算机存储介质,该计算机存储介质可以存储用于指示上述任一种方法的程序指令。
[0136] 可选地,该存储介质具体可以为存储设备500。
[0137] 如图9所示,本申请实施例还提供了一种存储设备800,该存储设备800为用于执行上述访问存储设备的方法功能的硬件设备。
[0138] 该存储设备800包括接口模块801,至少一个时钟域转换电路模块802,命令译码和执行模块803,以及数据存储模块804。接口模块101还包括数据接口模块和命令地址接口模块,其中数据接口模块还包括接收部分和发送部分。数据接口模块的接收部分主要是采样接收从高速总线接口上的数据等高速串行信号,并进行串并转换,转换成速度相对低的并行信号;数据接口模块的发送部分主要是从FPGA内部接收数据,进行并串转换,调制等,然后发送到高速总线接口上。命令地址接口模块的接收部分主要是采样接收从高速总线接口上的地址和命令数据等高速串行信号,并进行串并转换,转换成速度相对低的并行信号。时钟域转换电路102是把信号从接口电路时钟域转化成FPGA内部时钟域,或者把信号从FPGA内部时钟域转换到接口电路时钟域中,因为在硬件电路中,其信号必须要与该部分的时钟信号相匹配,否则会出现信号采样错误发生。命令译码和执行模块803对命令总线上的命令和地址进行译码,以翻译出正确的DDR的命令序列,并根据内部的状态执行相应的命令。数据存储模块804用于存储读写的数据。
[0139] 该存储设备800通过命令地址接口接收对所述存储设备进行第一访问操作的第一行指令,并通过时钟域转换电路802传输到命令译码和执行模块803,命令译码和执行模块803翻译出该第一行指令携带第一访问地址,该第一访问地址包括第一行地址以及第一读写指示信息,并根据该第一读写指示信息,确定该第一访问操作是读操作或写操作,以及根据确定的第一访问操作,进行该第一访问操作的准备操作,通过命令地址接口接收对所述存储设备进行第一访问操作的列指令,并通过时钟域转换电路802传输到命令译码和执行模块803,命令译码和执行模块803翻译出该第一列指令携带列地址,数据存储模块804根据该第一行地址和列地址访问存设备中第一行地址和列地址对应的地址空间。例如,将数据存储到第一行地址和列地址对应的地址空间中,或者是将第一行地址和列地址对应的地址空间中的数据发送出去。
[0140] 可选地,作为一个实施例,命令译码和执行模块803对访问操作进行准备操作包括配置接口模块801数据的传输方向,
[0141] 可选地,作为一个实施例,该第一读写指示信息包括至少一个字段,命令译码和执行模块803还用于根据该至少一个字段的取值,确定该第一访问操作是读操作或写操作。
[0142] 可选地,作为一个实施例,该存储设备800通过命令地址接口接收对该存储设备进行第二访问操作的第二行指令,该第二行指令携带第二访问地址,并通过时钟域转换电路802传输到命令译码和执行模块803,命令译码和执行模块803翻译出该第二访问地址包括第二行地址以及第二读写指示信息,并根据该第二读写指示信息,确定该第二访问操作是读操作或写操作,以及根据确定的第二访问操作与该确定的第一访问操作是否相同,确定是否修改接口模块801数据的传输方向,若根据该确定的第二访问操作与该确定的第一访问操作相同,确定不修改该存储设备的数据接口传输方向。
[0143] 从本申请实施例提供的以上技术方案可以看出,存储设备通过接收携带第一读写指示信息和行地址的行指令,根据该第一读写指示信息确定该访问操作是读操作还是写操作,并根据确定的访问操作进行能够使得该存储设备在预设时间阈值内完成该确定的访问操作的准备操作,再接收携带列地址的列指令,并访问行地址和列地址对应的地址空间,使得该存储设备提前识别出访问操作是读操作还是写操作,延长了存储设备进行读写操作的响应时间,进而能够与CPU进行通信。此外,本申请实施例避免了CPU在发送行指令之前单独发送读写指令,减少了带宽占用。
[0144] 应理解,本申请中的具体的例子只是为了帮助本领域技术人员更好地理解本申请实施例,而非限制本申请实施例的范围。
[0145] 应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0146] 应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0147] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0148] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0149] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0150] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0151] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0152] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0153] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以该权利要求的保护范围为准。