扩展内存的访问方法、设备以及系统与流程

文档序号:11828632阅读:267来源:国知局
扩展内存的访问方法、设备以及系统与流程

本发明涉及计算机领域,尤其涉及扩展内存的访问方法、设备以及系统。



背景技术:

大数据(Big Data)的应用对计算机处理能力提出了越来越高的要求。提高计算机处理能力的一个重要指标在于内存容量的提升,一种应用场景下,在现有内存芯片集成度有限的条件下,通过扩展芯片连接多个内存芯片,从而实现内存容量的扩展。另外一个应用场景是,越来越多的计算机系统中,增加应用加速芯片来进行某些特定应用的加速处理,比较常见的如GPU(Graphic Processing Unit,图形处理单元)加速,用来对图形图像数据进行处理,这类应用加速芯片一般可采用ASIC(Application Specific Integrated Circuit,专用集成电路)或者FPGA(Field Programmable Gate Array,现场可编程门阵列)来实现。

上述两种应用场景可通过图1进行说明,图1中包括处理器(Processor)系统101,系统内存102,内存扩展芯片103,以及扩展内存104,其中,处理器系统101中集成了内存控制器1011。其中,系统内存102通过内存总线和处理器系统101相连,扩展内存104通过内存总线和内存扩展芯片103相连,处理器系统101通过内存控制器1011和内存扩展芯片103可以采用多种方式总线相连接。

现有技术一中的实现方式是采用I/O总线来连接处理器系统101和内存扩展芯片103,常用的I/O总线为PCI-E(Peripheral Component Interconnect-Express,高速外设部件互连标准)、Intel QPI(Quick Path Interconnect,快速通道互连)或者AMD HT(Hyper Transport,超级传输) 总线。采用上述I/O总线,会存在延迟较大的问题,且需要对内存扩展芯片103进行精细的流水线设计,以此掩盖数据访问的延迟。

现有技术二中的实现方式是采用内存总线来连接处理器系统101和内存扩展芯片103,采用内存总线能够使得内存扩展芯片103和处理器系统101能够直接共享扩展内存104,访存的延迟较小。

现有技术二中这种技术手段也存在如下问题:由于在处理器系统101和扩展内存104之间存在内存扩展芯片103,当处理器系统101发出对扩展内存104中的数据进行访问的内存访问请求后,集成内存控制器1011接受该内存访问请求后,采用DDR(Double Data Rate)协议访问扩展内存104时,内存扩展芯片103的存在带来了额外的时延,使得内存访问请求的处理结果无法按照DDR协议要求的时延内返回,从而影响上述计算机系统对扩展内存104访问的可行性。

为了解决上面时延的问题,现有技术采用修改内存控制器的时序参数的方式,即通过对处理器内部集成的内存控制器的时序参数进行修改,使得处理器的时序参数大于内存实际的内存访问延迟,但是由于处理器支持的最大时序参数设置范围有限,很难补偿访问扩展内存过程中额外的访问延迟。



技术实现要素:

基于上述问题,本发明实施例提供一种扩展内存的访问方法、设备以及系统,有效地解决在访问扩展内存过程中的时延无法补偿的问题。

本发明实施例第一方面提供了一种计算机对扩展内存的访问方法,其中,计算机中的处理器系统通过内存总线连接到扩展内存系统,扩展内存系统包括扩展内存控制器和扩展内存,当计算机的处理器系统需要访问存储在扩展内存上的待访问数据时,该方法包括:

扩展内存控制器接收计算机的处理器系统串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地 址,其中,物理地址为待访问数据在扩展内存上的存储地址,所述N≥1且N为整数;

在接收到N+1条内存访问请求中的第一条内存访问请求时,扩展内存控制器根据所述第一条内存访问请求携带的访问地址确定物理地址,向扩展内存发送获取待访问数据的读取请求,并向所述处理器系统返回特定响应消息,读取请求包含所述物理地址;

在接收到扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求,在内存总线协议规定的访问时延内,扩展内存控制器向处理器系统返回特定响应消息;

在接收到扩展内存返回的待访问数据后,扩展内存控制器将待访问数据写入数据缓冲器,并停止向所述处理器系统返回特定响应消息;

当再次接收到N+1条内存访问请求中的一条内存访问请求时,扩展内存控制器从数据缓冲器读取待访问数据,并返回给所述处理器系统。

结合第一方面,在第一种可能的实现方式中,上述N+1条内存访问请求中的每一条内存访问请求的访问地址具有相同的Bank地址,不同的行地址。

结合第一方面以及第一方面的第一种可能的实现方式,在第二种可能的实现方式中,扩展内存控制器预先设置N+1条内存访问请求中每条内存访问请求所包含的访问地址和待访问数据在所述扩展内存中的物理地址的映射关系;扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址,包括:扩展内存控制器根据第一条内存访问请求携带的访问地址查询映射关系,得到物理地址。

结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,当扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址之后,该方法实施方式还包括:扩展内存控制器在数据缓冲器中创建记录,该记录包括标签字段和数据字段,将标签字段设置为物理地址。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述记录中还包括有效性字段,所述方法还包括:所述扩展内存控制器将所述有效性字段设置为无效。

结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,每接收到所述N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求之后,该方法实施方式还包括:扩展内存控制器根据每一条内存访问请求携带的访问地址查询映射关系,得到物理地址;根据物理地址查询数据缓冲器中的记录,确定记录的有效性字段为无效时,生成特定响应消息。

结合第一方面的第四种可能的实现方式,在第六种可能的实现方式中,在接收到扩展内存返回的待访问数据后,扩展内存控制器将待访问数据写入数据缓冲器,包括:扩展内存控制器在数据缓冲器查找物理地址对应的记录,将上述记录中的数据字段设置为待访问数据,并将有效性字段设置为有效。

本发明实施例第二方面提供了一种对扩展内存的访问方法,计算机通过内存总线连接到扩展内存系统,扩展内存系统包括扩展内存控制器和扩展内存,当计算机的处理器系统需要访问存储在扩展内存上的待访问数据时,该方法实施例包括:

处理器系统接收待访问数据的存储地址;

所述待访问数据的存储地址,处理器系统生成N+1条内存访问请求,N+1条内存访问请求包含的访问地址互不相同且都指向同一物理地址,物理地址为待访问数据在扩展内存上的存储地址,所述N≥1且N为整数;

处理器系统将上述N+1条内存访问请求发送给扩展内存控制器。

结合第二方面,在第一种可能的实现方式中,所述根据所述待访问数据的存储地址,所述处理器系统生成N+1条内存访问请求之前,还包括:

根据所述计算机从所述扩展内存获取数据的时延参数,确定数值N,其中,所述计算机从所述扩展内存获取数据的时延参数包括以下任一参数之一 或其任意组合:内存访问请求通过所述扩展内存控制器到达所述扩展内存的传输延迟tPD1,所述内存访问请求读取的数据从所述扩展内存到达所述扩展内存控制器的传输延迟tPD2,以及所述处理器系统发出连续两条内存访问请求的时间间隔T_Interval。

结合第二方面的第一种可能的实现方式中,在第二种可能的实现方式中,根据所述计算机从所述扩展内存获取数据的时延参数,确定数值N包括:确定数值N,其中N≥[(tPD1+tPD2)/T_Interval],其中,[*]为取整函数。

结合第二方面的第一种可能的实现方式以及第二种可能的实现方式中,在第三种可能的实现方式中,所述连续两条内存访问请求的时间间隔T_Interval为:tGAPmin=tRCD+tRTP+tRP,或者T_Fence(即处理器执行Fence指令所需要的时延)。

结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式以及第二方面的第三种可能的实现方式,在第四种可能的实现方式中,根据待访问数据的存储地址,处理器系统生成N+1条内存访问请求,该方法实施方式还包括:

待访问数据的存储地址为虚拟地址,根据待访问数据的虚拟地址进行虚拟地址到物理地址的转换,得到与虚拟地址Addr_Virtual对应的物理地址Addr_Physical;

根据物理地址Addr_Physical生成N个访问地址Addr_Physical(n),其中,n为整数且1≤n≤N,其中,N个访问地址的行地址Addr_Physical_Row(n)=n*M+Addr_Physical_Row,n为整数且1≤n≤N,M为扩展内存所包括的内存行的数目,Addr_Physical_Row为物理地址Addr_Physical的行地址;所述N个物理地址中每个物理地址除行地址之外的其他地址和所述物理地址Addr_Physical除行地址之外的其他地址相同;

处理器系统根据Addr_Physical以及Addr_Physical(n),n为整数且1≤n≤N生成上述N+1条内存访问请求。

本发明实施例第三方面提供了一种计算机中的扩展内存控制器,应用于计算机的处理器系统对扩展内存中待访问数据的访问,计算机中的处理器系统通过内存总线连接到扩展内存系统,扩展内存系统包括扩展内存控制器和扩展内存,该扩展内存控制器包括:

接收模块,用于接收来自计算机的处理器系统串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地址,物理地址为待访问数据在所述扩展内存上的存储地址,所述N≥1且N为整数;

执行模块,用于在接收到所述N+1条内存访问请求中的第一条内存访问请求时,根据所述第一条内存访问请求携带的访问地址确定物理地址,所述物理地址为所述待访问数据在所述扩展内存上的存储地址,生成获取所述待访问数据的读取请求,并向所述处理器系统返回特定响应消息,所述读取请求包含所述物理地址;在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的一条内存访问请求,在内存总线协议规定的访问时延内,产生特定响应消息;在接收到扩展内存返回的待访问数据后,将待访问数据写入数据缓冲器;在待访问数据被写入到所述数据缓冲器之后,当再次接收到N+1条内存访问请求中的一条内存访问请求时,从数据缓冲器读取所述待访问数据,并发送给所述发送模块;

发送模块,用于向扩展内存发送所述读取请求;在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的一条内存访问请求,在内存总线协议规定的访问时延内,向处理器系统返回特定响应消息;以及从执行模块接收待访问数据,将待访问数据发送给处理器系统。

结合第三方面,在第一种可能的实现方式中,N+1条内存访问请求中的每一条内存访问请求的访问地址具有相同的Bank地址,不同的行地址。

结合第三方面以及第三方面的第一种可能的实现方式,在第二种可能的实现方式中,执行模块,还用于预先设置N+1条内存访问请求中每条内存访 问请求所包含的访问地址和待访问数据在所述扩展内存中的物理地址的映射关系;根据第一条内存访问请求携带的访问地址查询第一条内存访问请求所包含的地址和待访问数据在扩展内存中的物理地址之间的映射关系,确定待访问数据在扩展内存中的物理地址。

结合第三方面第二种可能的实现方式,在第三种可能的实现方式中,执行模块,还用于当根据第一条内存访问请求携带的访问地址确定物理地址之后,在所述数据缓冲器中创建记录,所述记录中包括标签字段和数据字段,将所述标签字段设置为所述物理地址。

结合第三方面第三种可能的实现方式,在第四种可能的实现方式中,所述记录中还包括有效性字段,所述执行模块,还用于将所述记录中的所述有效性字段设置为无效。

结合第三方面第四种可能的实现方式,在第五种可能的实现方式中,执行模块,还用于在每接收到一条内存访问请求之后,查询每一条内存访问请求携带的访问地址查询所述映射关系,确定物理地址;根据物理地址查询数据缓冲器中的记录,确定记录的有效性字段为无效时,生成特定响应消息。

结合第三方面第四种可能的实现方式,在第六种可能的实现方式中,执行模块,在接收到扩展内存返回的待访问数据之后,还用于在数据缓冲器查找物理地址对应的记录,将记录中的数据字段设置为待访问数据,并将有效性字段设置为有效。

本发明实施例第四方面提供了一种包括扩展内存的计算机系统,该计算机系统包括:处理器系统、主存储器、如第三方面或第三方面的各个实现方式中所述扩展内存控制器、以及扩展内存,所述扩展内存控制器与所述扩展内存相连,所述扩展内存控制器通过内存接口连接到所述处理器系统,所述处理器系统连接所述主存储器,主存储器用于存放程序存储执行指令,所述处理器系统用于执行所述主存储器存储的所述执行指令,以使得处理器系统 执行如第二方面或第二方面的各个实施方式所述的计算机对扩展内存系统中扩展内存的访问方法。

基于上述技术方案,本发明实施例所提供的扩展内存的访问方法、设备以及系统,扩展内存控制器接收到处理器系统串行发送的N+1条内存访问请求(N为大于等于1的正整数)后,发送读取待访问数据的请求给扩展内存,在从扩展内存读取待访问数据的过程中,扩展内存控制器对于接收到的内存访问请求,会在内存总线协议规定的访问时延内,返回特殊响应消息,这样持续到待访问数据被读取并被写入到数据缓冲器,并在下一个内存访问请求的执行周期内,将待访问数据返回到处理器中。上述过程,利用了N+1个存在行缺失的内存访问请求执行过程中所带来的时延,有效弥补了扩展内存控制器从扩展内存中读取待访问数据,并将待访问数据返回给处理器系统的读取时延。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。

图1是现有技术中包含扩展内存的计算机系统的硬件组成示意图。

图2是本发明实施例中所提供的计算机系统硬件的组成结构示意图。

图3是本发明实施例中计算机对扩展内存的访问时延的分析示意图。

图4是DDR协议中针对内存访问请求执行时的时序分析示意图。

图5A是扩展内存中数据访问处理方法的实施例的流程示意图。

图5B是根据待访问数据的存储地址生成N+1条访问地址的流程示意图。

图6是本发明实施例中处理器检测出的扩展内存空间的示意图。

图7是扩展内存控制器对内存访问请求进行处理的实施例的流程示意 图。

图8是扩展内存控制器按序执行的实施例的流程示意图。

图9是扩展内存控制器乱序执行的实施例的流程示意图。

图10是扩展内存控制器实施例中的组成结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。

一般的,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构、以及其他类型的结构。此外,本领域的技术人员可以明白,各实施例可以用其他计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机以及类似计算设备。各实施例还能在任务由通过通信网络连接的远程处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。

各实施例可被实现为计算机实现的过程、计算系统、或者诸如计算机程序产品或计算机系统执行示例过程的指令的计算机程序的计算机存储介质。例如:计算机可读存储介质可经由易失性计算机存储器、非易失性存储器、硬盘驱动器、闪存驱动器、软盘或紧致盘(Compact Disc)和类似介质中的一个或多个来实现。

贯穿本说明书,术语“处理器系统(Processor System)”指的是包含处理器以及内存控制器的系统,当内存控制器集成在处理器(Processor)内部时,该处理器系统指的是包含该内存控制器的处理器芯片。结合本发明的实施例的应用场景,处理器系统中的处理器芯片用来接收目标程序执行过程中所生成的内存访问指令,根据待访问数据的地址生成内存访问请求,并将内存访 问请求发送给内存控制器,内存控制器根据内存总线协议将内存访问请求分解为可供内存芯片执行的数据读写请求。

贯穿本说明书,术语“内存控制器(Memory Controller)”是计算机系统内部控制内存的计算机组件,通过内存控制器使得内存与处理器之间能够进行数据的交换。在具体应用中,内存控制器可以独立存在于处理器(Processor)之外,也可以集成在处理器中。其中,本说明书中的“内存控制器”是用来实现对系统内存(System Memory)的访问进行控制,更多情况下,内存控制器集成在处理器中,如内存控制器独立于处理器而存在时,内存控制器需要和处理器相连接。

贯穿本说明书,术语“扩展内存控制器”指的是通过内存接口和内存控制器相连接,作为处理器对扩展内存进行访问的桥梁。

贯穿本说明书,术语“扩展内存”指的是通过内存扩展芯片所连接的存储器,用来实现内存的扩展。扩展内存可以采用如下的形式但不限于如下的形式实现,譬如:DRAM(Dynamic Random Access Memory,动态随机存取存储器)、PCM(Phase-Change Memory,相变存储器)、以及MRAM(Magnetic Random Access Memory,磁性随机存储器)等。

贯穿本说明书,术语“内存访问指令”,又简称为“访存指令”,指的是源代码(Source Code)通过编译(Compile)得到目标代码(Object Code)中所包含Load/Store等访存指令时,处理器就需要这些访存指令。在执行的过程中,处理器需要通过虚拟地址(Virtual Address)到物理地址(Physical Address)转换过程,将访存指令中的虚拟地址转换为物理地址,并生成内存访问请求,发送给内存控制器(Memory Controller)执行。

贯穿本说明书,术语“内存访问请求”,又简称为“访存请求”,指的是由处理器对访存指令执行后所生成的对内存中的数据进行访问的请求。访存请求包括:读请求和写请求。

贯穿本说明书,术语“数据缓冲器”指的是用来存储从扩展内存中读取的 待访问数据的存储器件,可以集成在扩展内存控制器内部,也可以和扩展内存控制器独立实现。

本发明实施例对应的系统硬件架构

在介绍本发明具体实施例之前,先对本发明实施例对应的系统硬件组成结构进行介绍,参看图2,包括如下组件:

处理器系统(Processing System)201:包括处理器2011以及内存控制器2012,作为指令的执行组件,在本发明所提供的实施例中,处理器系统201用来接收可执行程序在执行过程中生成的内存访问指令,并根据内存访问指令生成内存访问请求。其中,处理器2011用于对内存访问(Memory Access)指令进行处理,生成内存访问请求,并将内存访问请求发送给内存控制器2012。内存控制器2012根据内存访问请求中所包含的位置属性信息,判断是访问系统内存202或是扩展内存204,当确定是访问系统内存202时,将内存访问请求发送给系统内存202;当确定是访问扩展内存204时,将内存访问请求发送给扩展内存控制器203。

系统内存(Memory)202:指的是通过内存总线直接和处理器系统201相连的存储器,用来暂时存储处理器系统201在执行过程中的运算数据。

扩展内存控制器(Extended Memory Controller)203:用于连接扩展内存204,作为处理器系统201对扩展内存204进行内存访问处理的桥梁。扩展内存控制器203通过如下类型的总线和处理器201相连接,这些类型的总线包括但不限于:DDR(Double Data Rate,双倍数据速率)总线、LPDDR(Low Power DDR,低功耗DDR)总线、或者Wide I/O总线。在扩展内存控制器203中,至少包括如下模块:执行模块2031,用来执行对扩展内存中待访问数据的读取操作,以及数据缓冲器2032,用来暂存执行模块2031从扩展内存204中读取的待访问数据。需要说明的是,数据缓冲器2032作为待访问数据的缓存组件,可以集成在扩展内存控制器203中,也可以独立于 扩展内存控制器203实现。对此,本发明的实施例不加以限定。

扩展内存(Extended Memory)204:指的是区别于系统内存202,作为扩展的存储器使用,用于存储处理器201执行过程中的运算数据。扩展内存204可以采用不同的存储介质实现,譬如:DRAM(Dynamic Random Access Memory,动态随机存取存储器)、PCM(Phase-Change Memory,相变存储器)、以及MRAM(Magnetic Random Access Memory,磁性随机存储器)等。

在图2所示的系统硬件组成结构示意图中,由于作为内存扩展芯片具体实现的扩展内存控制器203的存在,使得处理器系统201发出的对扩展内存204中数据的读取请求在执行的过程中,会存在较长的时延,无法在DDR协议要求的访问时延内返回待访问的数据。结合图2,并通过图3对扩展内存的访问时延问题进行分析:

图3中,执行对扩展内存204中的数据进行读取,包括如下三部分时延:

-tPD1:即处理器系统201发出的内存访问请求从“扩展内存控制器203”到达“扩展内存204”的传播时延,包含信号的传输时延,以及扩展内存控制器203内的逻辑处理时延。

-tRL:即扩展内存204从“收到内存访问请求”至“将待访问数据传输到扩展内存204和扩展内存控制器203上的总线”的时延。

-tPD2:从扩展内存204读取的数据从“扩展内存204至扩展内存控制器203”的传输时延,以及从“扩展内存控制器203”至“处理器系统201中的内存控制器2012”的传输时延。

对于处理器,实际的访存时延为tPD1+tRL+tPD2,这就违反了内存访问协议(如:DDR协议)所要求的tRL时延内返回待访问数据的要求,因此,如何弥补时延tPD1+tPD2就成为本发明实施例的一个出发点。

现有的内存总线协议(常用的是DDR协议)是固定延迟的同步访存协议。对于一次内存访问的执行分如下三个阶段:

A、激活(Activate):即由内存控制器(Memory Controller)发送Activate(激活)命令和行地址(Row Address),把行地址对应的DRAM中的一行数据读取到行缓冲区(Row Buffer)中;

B、读写(Read/Write):即由内存控制器发送Read/Write命令和列地址(Column Address),读写行缓冲区中列地址对应的数据。

C、预充电(Pre-Charge):即由内存控制器发送Pre-Charge命令,关闭行缓冲区。

而对于连续两次内存访问请求,根据其行地址是否相同,可以分为如下两种类型:

(1)行命中(Row Hit),即两次内存访问请求所需要操作的数据位于同一个Bank中的同一行(即Row地址相同),因此,在第一次访问的读写(Read/Write命令)执行后,该行数据仍然位于行缓冲区(Row Buffer)中,因此,不需要进行第一次内存访问请求的预充电阶段以及第二次内存访问请求的激活操作阶段,内存控制器可以直接发送第二次内存访问请求的读写命令以及列地址。

(2)行缺失(Row Miss),即两次内存访问位于同一个Bank中的不同行,在执行完第一次内存访问请求的读写(Read/Write)阶段后,就需要先执行预充电操作(Pre-Charge命令),关闭行缓冲区,然后对第二次内存访问请求的行进行激活操作(Activate命令),把该行数据读取到行缓冲区,最后才能发送第二次内存访问请求的读写命令以及列地址。

图4示出了DDR协议中针对内存访问请求执行过程中的时序要求,其中:

tRL:即从“读(RD)命令发出”到“数据出现在内存总线上”的固定延迟。

tRCD:即从“激活(ACT)命令发出”到“发送读(RD)命令”的最小时间间隔。

tRTP:即从“读(RD)命令发出”到“发送预充电(PRE)命令”的最小时间间隔。

tRP:即从“预充电(PRE)命令发出”到“发送下一个激活(ACT)命令”的最小时间间隔。

根据上面的参数可以计算,发生行缺失的两个读(RD)命令之间的最小时间间隔为tGAPmin=tRCD+tRTP+tRP。

另一方面,还可以利用内存屏障(Memory Barrier)技术,其中内存屏障也称内存栅栏(Memory Bar),内存栅障(memory fence),屏障指令(Fence instruction)等,是一类同步屏障指令,使得CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。

为了弥补扩展内存访问过程中的时延,本发明实施例利用上述多条发生行缺失的内存访问请求执行过程中的时延来弥补对扩展内存中的待访问数据的访问时延。对于应用程序执行对扩展内存204中的数据进行访问的需求,通过软件(如编译器,Compiler)将扩展内存的访问请求编译为多条行缺失的内存访问请求或者在生成的多条内存访问请求之间插入Fence指令,利用发生行缺失的内存访问请求的时延以及执行多条内存访问请求之间的Fence指令所带来的时延,在执行多条内存访问请求的过程中,扩展内存中的待访问数据会先被读取到扩展内存控制器中(数据预取阶段),然后从扩展内存控制器通过内存控制器读取到处理器中(数据读取阶段)。

本发明的方法实施例

图5示出了计算机对扩展内存的访问方法实施例的流程示意图,其中,包括如下步骤:

510、处理器系统接收待访问数据的存储地址。

具体的,通过编译器得到的可执行程序在执行的过程中,产生N+1条 内存访问指令,这N+1条内存访问指令均包含待访问数据的存储地址。具体实现中,待访问数据的存储地址为虚拟地址。

530、处理器系统根据待访问数据的存储地址,处理器系统生成N+1条内存访问请求,N+1条内存访问请求包含的访问地址互不相同且都指向同一物理地址,物理地址为待访问数据在扩展内存上的存储地址,所述N≥1且N为整数。

具体的,生成的N+1个访问地址互不相同,这样就能够避免依据这N+1个访问地址所生成的内存访问请求被处理器在MSHR(Miss-status Handling Registers)内合并。这N+1个访问地址指向同一个物理地址,在具体实现中,这N+1个访问地址和待访问数据在扩展内存中的物理地址存在映射关系。

550、处理器系统将生成的N+1条内存访问请求发送给扩展内存控制器。

具体的,为了弥补对扩展内存中的待访问数据的访问时延,在处理器系统中,处理器在生成这N+1条内存访问请求后,将这N+1条内存访问请求发送给处理器系统中的内存控制器。处理器将这N+1条内存访问请求发送给内存控制器,可以采用依次间隔一定时间发送的方式,也可以一起发送给内存控制器。内存控制器接收到这N+1条内存访问请求之后,判断彼此访问地址不同(尤其是行地址不同),则会识别为行缺失,这样会根据内存访问协议中发生行缺失的内存请求发送时延要求,串行发送这N+1条内存访问请求。

需要说明的是,这N+1内存访问指令是包含在目标程序(Object Program)中,该目标程序是由源程序(Source Program)经过编译器(compiler)的编译得到,对源程序进行编译的计算机系统可以是本发明的实施例中的计算机系统,也可以是第三方计算机系统。

对于包含扩展内存系统的计算机,软件开发者在开发源程序时,会定义每一个变量的类型以及存储位置。对于一些变量,程序员定义暂存在系统内存中,对于另一些变量,程序员定义暂存在扩展内存中。

对于定义在扩展内存中的变量,在程序使用过程中,需要涉及到对该变量(即本说明书所称的“待访问数据”)的读写操作。本发明的实施例中,在对源程序编译的过程中,当存在对存储在扩展内存的某一待访问数据访问需求时,编译器会根据扩展内存的时延参数以及内存总线协议的时延要求,将对待访问数据的访问请求编译为N+1条内存访问请求,N≥1且N为整数。

进一步的,按照如下方式确定需要发送的内存访问请求的数目。

(1)内存访问请求“通过扩展内存控制器”到达“扩展内存的传输延迟”为tPD1,根据所述内存访问请求读取的数据“从扩展内存”到达“所述扩展内存控制器”的传输延迟为tPD2。

具体的,当包含扩展内存的计算机系统一旦确定,上述的两个参数就可以确定。

(2)确定符合DDR协议的发生行缺失的连续两条内存访问请求从处理器发出的时间间隔为tGAPmin=tRCD+tRTP+tRP。

具体的,参看图4以及相关文字的介绍,两条发生行缺失的内存访问请求从处理器发出的时间间隔至少为tRCD+tRTP+tRP,上述参数由DDR协议明确规定。

可拓展的,连续两条内存访问请求从处理器的时间间隔,还可以由处理器在内存访问请求生成后,在每一条内存访问请求之后插入一条fence指令,即利用fence指令的执行实现时延,其中,Fence指令的执行所花的时间为T_Fence。

(3)根据上述参数计算出需要生成的内存访问请求的个数N,即N≥[(tPD1+tPD2)/(tRCD+tRTP+tRP)],其中,[*]为取整函数。可拓展的,当采用处理器在生成的N+1条内存访问请求中插入Fence指令后,所计算出来的N≥[(tPD1+tPD2)/T_Fence],其中,[*]为取整函数。T_Fence即处理器执行Fence指令所需要的时延。

具体实现中,根据待访问数据的存储地址,生成N+1个访问地址可以 采用如下的步骤551-553得到,如图5B所示:

551、待访问数据的存储地址为虚拟地址,根据待访问数据的虚拟地址Addr_Virtual进行虚拟地址到物理地址的转换,得到与虚拟地址Addr_Virtual对应的物理地址Addr_Physical。

需要说明的是,一般情况下,处理器接收到内存访问指令中包含的地址是虚拟地址,根据待访问数据的虚拟地址进行虚拟地址到物理地址的转换,得到与虚拟地址对应的物理地址。

552、根据物理地址Addr_Physical生成N个访问地址Addr_Physical(n),其中,n为整数且1≤n≤N,N个访问地址的行地址Addr_Physical_Row(n)=n*M+Addr_Physical_Row,n为整数且1≤n≤N,M为扩展内存所包括的内存行的数目,Addr_Physical_Row为物理地址Addr_Physical的行地址;N个物理地址中每个物理地址Bank地址和所述物理地址Addr_Physical的Bank地址相同。

具体的,为了生成N+1条存储行缺失的内存访问请求,就需要保证这N+1条内存访问请求的地址中bank地址相同,而行地址是不同的。

这就需要重新定义扩展内存的地址空间。参考图6,以N=1为例,处理器根据待访问数据的物理地址,生成两个访问地址,从而生成两条针对扩展内存的内存访问请求。

在图6中,处理器所能够检测出的内存空间包括两部分:即扩展内存实际内存空间,以及影子空间。其中,扩展内存对应的内存空间包括的内存行为M行,影子空间和扩展内存对应的内存空间具有相同的大小(行列的大小均一致)。为了保证这两条内存访问请求是作为行缺失的内存访问请求,需要保证这两条内存访问请求的地址具有bank地址相同,行地址不同的特征。

因此,内存访问请求的地址中,一条内存访问请求的行地址是i,另一条内存访问请求的行地址是i+M,这样就确保了两者行地址是不同的。另 外,影子空间中的行地址减去偏移量M,就得到了待访问数据在扩展内存空间中的物理地址对应的行地址,这样就确保了这两个地址指向扩展内存上的同一物理地址。

另外,对于扩展内存中的物理地址,除行地址之外,该物理地址中还包括Bank地址,保证生成的N+1个访问地址具有Bank地址相同,行地址不同,这样处理器系统中的内存控制器在接收到这N+1条内存访问请求时,就能够识别为行缺失。

需要说明的是,为了简化本发明实施例的描述,由待访问数据的物理地址生成N+1条访问地址,是默认为处于一个内存芯片(Chip)中。具体实现中,该访问地址作为内存的物理地址,根据内存物理地址的要求,除了Bank地址、行地址之外,还包括:Channel地址、DIMM地址、Rank地址、Chip地址,因此,方案的具体实现中,可以设定“生成的N+1个访问地址”和“待访问数据的物理地址”的Channel地址、DIMM地址、Rank地址、Chip地址保持一致。

可以理解,上述实现方式采用N=1举例,对于其他的取值,可以按照类似的过程来生成内存访问请求的地址,并创建N+1条内存访问请求。

553、处理器系统根据Addr_Physical以及Addr_Physical(n),n为整数且1≤n≤N生成N+1条内存访问请求。

上述实施例中,计算机中处理器系统在对扩展内存中的待访问数据进行访问的过程中,由处理器据此生成N+1条内存访问请求,所生成的N+1条内存访问请求中所包含的访问地址具有相同的bank地址,及不同的行地址,这样由集成在处理器中的内存控制器执行时,会触发行缺失的内存访问请求,利用在执行这N+1条具有行缺失的内存访问请求的过程中,使得扩展内存控制器能够根据这个处理时延,将待访问数据从扩展内存读取出来,并最终返回到处理器。上述实现方式,有效地利用了行缺失情况下的内存访问请求执行过程中的延时,弥补了待访问数据无法在指定的时延范围中返回数据 的问题。

图7示出了扩展内存控制器在接收到处理器系统所发送的N+1内存访问请求之后的处理过程。其中,该扩展内存系统包括:扩展内存控制器和扩展内存,所述计算机中的处理器系统通过内存总线连接到扩展内存控制器,当计算机的处理器系统需要访问存储在扩展内存上的待访问数据时,该方法实施例包括:

710、扩展内存控制器接收计算机的处理器系统串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地址,物理地址为待访问数据在所述扩展内存上的存储地址,所述N≥1且N为整数。

具体的,按照步骤550所描述的过程,扩展内存控制器接收到处理器系统串行发送的N+1条内存访问请求,这N+1条内存访问请求所包含的访问地址互不相同,且这N+1个访问地址都指向同一物理地址。

730、在接收到N+1条内存访问请求中的第一条内存访问请求时,扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址,向扩展内存发送读取请求,并向处理器系统返回特定响应消息,读取请求携带所述物理地址。

具体的,当接收到第一条内存访问请求时,扩展内存控制器根据其访问地址确定物理地址,并向扩展内存发送针对该物理地址的读取请求,该读取请求用于读取扩展内存中的待访问数据。

750、在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求,在内存总线协议规定的访问时延内,扩展内存控制器向处理器系统返回特定响应消息。

具体的,由于读取待访问数据的过程需要较长的时延,且内存总线协议是固定延迟的同步访存协议,因此,针对每一个内存访问请求,扩展内存控制器需要返回一个响应消息,故扩展内存控制器会向处理器返回针对第一条 内存访问请求的特定响应消息。需要说明的是,特定响应消息是处理器和扩展内存控制器约定好的一个特殊的识别码,比如,可以采用0x5a5a5a5a5a5a5a5a作为这一特殊识别码。

需要说明的是,上述特殊识别码是一种可自定义的识别码,在具体实现中,还可以采用其他的识别码。对此,本发明的所有实施例均不加以限定。

770、在接收到扩展内存返回的待访问数据之后,扩展内存控制器将待访问数据写入数据缓冲器,并停止向所述处理器系统返回特定响应消息。

具体的,在步骤730中,由扩展内存控制器发送的读取请求发送到扩展内存中,并从扩展内存读取待访问数据的过程需要较长的时延,在这个阶段,处理器发送的N+1条内存访问请求中会存在一些内存访问请求到达扩展内存控制器,此时,扩展内存控制器收到这些内存访问请求后,就会按照内存总线协议要求的时延内向处理器返回特定响应消息,以便告知处理器待访问数据还未获取到。当扩展内存控制器接收到从扩展内存返回的待访问数据时,则会将待访问数据写入数据缓冲器。

需要说明的是,数据缓冲器可以集成在扩展内存控制器中,也可以独立实现于扩展内存控制器之外。

790、当再次接收到N+1条内存访问请求中的一条内存访问请求时,扩展内存控制器从数据缓冲器读取待访问数据,并返回给处理器。

具体的,由于内存总线协议是固定延迟的同步访存协议,当待访问数据被写入到数据缓冲器之后,在下一个内存访问请求的执行周期内,扩展内存控制器将待访问数据从数据缓冲器读取,并返回给处理器系统。

进一步的,N+1条内存访问请求中的每一条内存访问请求的访问地址具有相同的Bank地址,不同的行地址。具有这个特征的内存访问请求,会被集成在处理器的内存控制器识别为行缺失(Row Miss),进而在执行这N+1条内存访问请求的过程中,能够产生内存访问协议规定的时延。

进一步的,扩展内存控制器预先设置所述N+1条内存访问请求中每条内存访问请求所包含的访问地址和待访问数据在所述扩展内存中的物理地址的映射关系。扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址,包括:扩展内存控制器根据第一条内存访问请求携带的访问地址查询映射关系,确定上述物理地址。

进一步的,步骤730中,当扩展内存控制器根据第一条内存访问请求携带的访问地址确定物理地址之后,该方法实施例还包括:扩展内存控制器在数据缓冲器中创建记录,记录中包括标签字段和数据字段,将标签字段设置为物理地址。

进一步的,步骤730中,记录中还包括有效性字段,该方法实施例还包括:扩展内存控制器将有效性字段设置为无效。

进一步的,步骤750中,在从所述扩展内存读取所述待访问数据的过程中,所述扩展内存控制器每接收到一条内存访问请求之后,该方法还包括:扩展内存控制器查询每一条内存访问请求携带的访问地址查询映射关系,确定物理地址;根据物理地址查询数据缓冲器中的记录,确定记录的有效性字段为无效时,生成特定响应消息。

进一步的,步骤750中,在扩展内存控制器将待访问数据写入数据缓冲器包括:扩展内存控制器在数据缓冲器查找物理地址对应的记录,在记录中将数据字段设置为待访问数据,并将有效性字段设置为有效。

通过上述实现过程,扩展内存控制器在接收到第一条内存访问请求后,发送读取待访问数据的请求给扩展内存,在从扩展内存读取待访问数据的过程中,扩展内存控制器对于接收到的内存访问请求,会在内存总线协议规定的访问时延内,返回特殊响应消息,以便处理器按照行缺失的要求执行下一个内存访问请求的发送,扩展内存控制器会将读取到的数据暂存在数据缓冲器,并在下一个内存访问请求的执行周期内,将待访问数据返回到处理器中。上述过程,利用了N+1个行缺失的内存访问请求的执行所带来的时延,有效 弥补了扩展内存控制器从扩展内存中读取待访问数据,并将待访问数据返回给处理器的时延。

根据实验得到的经验值,在扩展内存的级数不多的情况下,对扩展内存中的数据进行待访问数据的读写时,N=1,即产生两个内存访问请求就能够弥补从扩展内存中读取数据的时延,下面以N=1来介绍两种具体的实现过程:

一、按序执行的方式(参看图8)

根据图6中的包含扩展内存的内存空间,可以看出只需要虚拟一个影子空间即可实现,以图6为例,并结合图2的系统结构图,假设待访问数据位于扩展内存中的第i行,其行地址为i,根据前述方法,所生成两个访问地址的行地址分别为:i,以及i+M。两个访问地址的Bank地址设置为相同。上述生成的访问地址被记录在扩展内存控制器中的缓存器中。

根据生成的两个访问地址,构造两次内存访问请求,由处理器发送给扩展内存控制器,假设处理器开始发送的是行地址为i+M的内存访问请求,然后发送行地址为i的内存访问请求。该方法实施例的执行过程如下:

810、扩展内存控制器接收到第一条内存访问请求,解析该请求,得到其访问地址,识别其行地址为i+M,则向处理器返回特殊识别码。

具体的,由于扩展内存控制器根据行地址能够识别出是扩展内存实际内存空间或者是影子空间,本步骤中,识别出行地址为i+M,则确认该访问地址位于影子空间,产生特殊识别码(譬如:0x5a5a5a5a5a5a5a5a),并返回给处理器。

830、扩展内存控制器生成读取请求,该读取请求中包括待访问数据的物理地址,将读取请求发送给扩展内存,并在内存总线协议规定的一次内存访问请求的处理时延内,获取读取的待访问数据至数据缓冲器。

具体的,扩展内存控制器接收到第一条内存访问请求后,生成针对待访 问数据的读取请求,并发送给扩展内存。利用内存总线协议规定的内存访问请求的时延中,读取待访问数据到数据缓冲器。

850、经过内存总线协议规定的时延,扩展内存控制器接收到第二条内存访问请求,解析该请求,得到其访问地址,识别其行地址为i,则从数据缓冲器读取待访问数据,并返回给处理器。

具体的,在扩展内存控制器将待访问数据读取到数据缓冲器中之后,又接收到处理器发送的第二条内存访问请求,解析该请求获取访问地址中的行地址,判断其行地址为i,即位于扩展内存的实际内存空间中的地址,则从数据缓冲器中读取待访问数据,并返回给处理器。

上述实施例中,按照事先约定的地址访问的顺序,即接收到的第一条内存访问请求包含的访问地址为影子空间的地址,第二条内存访问请求包含的访问地址为实际内存空间的地址,且影子空间的地址和实际内存空间的地址之间具有映射关系,接收到影子空间地址的内存访问请求则触发从扩展内存中读取待访问数据并缓存到数据缓冲器中,接收到实际内存空间中的地址的内存访问请求则触发从数据缓冲器中读取数据给处理器。

可以理解,上述事先约定的地址访问顺序,还可以按照“先实际内存空间的地址,后影子空间的地址”这种顺序,或者进一步拓展的是,两次内存访问请求中包含的地址均为影子空间的地址(即Add1和Add2),只要确保两次内存访问请求所包含的访问地址具有映射关系,且指向同一物理地址。

二、乱序执行的方式(参看图9)

这里所说的乱序指的是访存请求到达扩展内存控制器的顺序和处理器发送内存访问请求的顺序不一致。这种情况下,无法通过访问地址的行地址是处于影子空间还是实际内存空间的方式来判断内存访问请求的发送顺序。因此,这里,采用查询数据缓冲器中是否存有待访问数据的方式进行判断。

假设待访问数据位于扩展内存中的第i行,其行地址为i,根据前述方 法,所生成两个访问地址的行地址分别为:i,以及i+M。两个访问地址的bank地址设置为相同。上述生成的访问地址被记录在扩展内存控制器中的缓存器中。

根据生成的两个访问地址,构造两次内存访问请求,由处理器发送给扩展内存控制器,假设处理器开始发送的是行地址为i+M的内存访问请求,然后发送行地址为i的内存访问请求。该方法实施例的执行过程如下:

910、扩展内存控制器依次接收两条内存访问请求,这两次内存访问请求中的访问地址互不相同,且这两个访问地址指向同一物理地址,该物理地址为待访问数据在扩展内存中的物理地址。

具体的,两次内存访问请求中的访问地址互不相同能够避免依据这两个访问地址所生成的内存访问请求被处理器在MSHR(Miss-status Handling Registers)内合并。两个访问地址指向同一个物理地址,表示这两个访问地址和这一物理地址之间存在映射关系。

930、扩展内存控制器接收到其中一条内存访问请求后,将地址映射到待访问数据的物理地址,并去数据缓冲器中查找。

具体的,数据缓冲器是用来缓存数据的,具体实现中,可以采用Cache来实现的。其中,采用<标识,数据>的方式来存储的,其中,标识可采用待访问数据的物理地址作为标识。

950、当查找不到时,则确定该内存访问请求为第一条内存访问请求,返回特殊识别码给处理器,并发送待访问数据的读取请求给扩展内存中,读取请求中包含物理地址。

具体的,根据步骤930,当扩展内存控制器在数据缓冲器中无法找到待访问数据的记录时,则确定所接收到的内存访问请求为第一条内存访问请求,此时则会生成访问地址为物理地址的读取请求并发送给扩展内存,该读取请求用来读取待访问数据;在这个过程中,扩展内存控制器还会生成特殊识别码(譬如:0x5a5a5a5a5a5a5a5a),发送给处理器,使得处理器根据该特 殊识别码判断待访问数据还未读取到数据缓冲器。

970、当查找到,则确定该内存访问请求为第二条内存访问请求,从数据缓冲器读取数据,并返回给处理器。

具体的,当扩展内存控制器查找到待访问数据的记录时,说明该内存访问请求为第二条内存访问请求,则从数据缓冲器读取数据,并返回给处理器。

通过上述的实现方式,处理器生成两个内存访问请求,发送给扩展内存控制器,使得扩展内存控制器根据两次访存请求读取扩展内存中的待访问数据,这样就解决了处理器访问扩展内存中的待访问数据时的时延无法满足内存访问协议的要求。

本发明的设备实施例

本发明还提供了扩展内存控制器的设备实施例,参看图10,应用于计算机的处理器对扩展内存中待访问数据的访问,所述扩展内存控制器通过内存总线连接到所述计算机,该扩展内存控制器包括:

接收模块1010,用于接收来自计算机的处理器系统串行发送的N+1条内存访问请求,每条内存访问请求所包含的访问地址互不相同且都指向同一物理地址,其中,物理地址为所述待访问数据在所述扩展内存上的存储地址,所述N≥1且N为整数。

执行模块1020,用于在接收到N+1条内存访问请求中的第一条内存访问请求时,根据第一条内存访问请求携带的访问地址确定物理地址,所述物理地址为所述待访问数据在所述扩展内存上的存储地址,向扩展内存发送获取待访问数据的读取请求,以及生成特定响应消息,读取请求包含所述物理地址;在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的一条内存访问请求,在内存总线协议规定的访问时延内,产生特定响应消息;在接收到所述扩展内存返回的待访问数据后,将所述待访问数据写入数据缓冲器1040,并停止向所述处理器系统返回特定响应消息;在 待访问数据被写入到数据缓冲器1040之后,当接收到N+1条内存访问请求中的一条内存访问请求时,从数据缓冲器1040读取所述待访问数据,并发送给发送模块。

发送模块1030,用于向扩展内存发送所述读取请求,并向所述处理器系统返回特定响应消息;在接收到所述扩展内存返回的待访问数据之前,每接收到N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求,在内存总线协议规定的访问时延内,向处理器系统返回特定响应消息;以及从执行模块1020接收待访问数据,将待访问数据发送给处理器系统。

进一步的,上述N+1条内存访问请求中的每一条内存访问请求的访问地址具有Bank地址相同,行地址不同的特征。

进一步的,执行模块1020,还用于预先设置N+1条内存访问请求中每条内存访问请求所包含的访问地址和待访问数据在扩展内存中的物理地址的映射关系;根据第一条内存访问请求携带的访问地址查询第一条内存访问请求所包含的地址和待访问数据在扩展内存中的物理地址之间的映射关系,得到待访问数据在扩展内存中的物理地址。

进一步的,执行模块1020,还用于当根据第一条内存访问请求携带的访问地址确定所述物理地址之后,在所述数据缓冲器中创建记录,所述记录中包括标签字段和数据字段,将所述标签字段设置为所述物理地址。

进一步的,记录中还包括有效性字段,执行模块1020,还用于将记录中的有效性字段设置为无效。

进一步的,执行模块1020,还用于在每接收到所述N+1条内存访问请求中的第一条内存访问请求之后的内存访问请求之后,查询所述每一条内存访问请求携带的访问地址查询所述映射关系,得到物理地址;根据物理地址查询数据缓冲器1040中的记录,确定记录的有效性字段为无效时,生成特定响应消息。

进一步的,执行模块1020,还用于在数据缓冲器1040查找物理地址对 应的记录,在记录中将数据字段设置为待访问数据,并将有效性字段设置为有效。

需要进一步说明的是,在上述扩展内存控制器的实施例中,数据缓冲器1040是集成在扩展内存控制器中,这只是一种较优的实现方式,本领域的技术人员可以理解,该数据缓冲器1040还可以独立于扩展内存控制器实现。

本发明还提供一种包括扩展内存的计算机系统,如图2所示,该计算机系统包括:处理器系统201、系统内存202、如扩展内存控制器的设备实施例所描述的扩展内存控制器203、以及扩展内存204,扩展内存控制器203与扩展内存204相连,扩展内存控制器203通过内存接口连接到处理器201,处理器系统201连接系统内存202,系统内存202用于存放程序存储执行指令,处理器系统201用于执行所述系统内存202存储的所述执行指令,以使得处理器系统201执行如计算机对扩展内存的访问方法实施例中所示计算机对扩展内存系统中扩展内存的访问方法。

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

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可 以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1