本申请涉及存储器管理设备及其对应方法。
背景技术:
存储器一般用于存储数据。存储器存取时间,连同其它参数(如,处理器速度)一起,可以决定系统的运行速度。例如,在传统的系统中,处理器可能不能在存取存储器的同时执行其它任务,例如,执行指令。因此,已经开发出存储器管理方法来使得能够高效地存取存储器和/或高效地处理存储于存储器中的数据。
us20130057562a1示出了用于存取存储于存储器中的图形数据的技术。在一些实现方式中,所述技术可以包括独立于在例如图形处理单元(gpu)(其是处理器的例子)上执行一个或多个程序,而执行数据修改任务。例如,该文档的技术可以允许gpu将涉及存储器管理和数据修改的任务从涉及数据处理的任务分离开,并允许独立执行这些任务。作为一个例子,在本文文档中描述的技术可以允许gpu从存储器取回数据或将数据存储在存储器中,并且与执行这样的指令并行地,执行一个或多个程序的指令。作为另一例子,在该专利中描述的技术可以允许gpu将数据转化为更适当的形式(其指令待被执行),然后独立于执行指令本身而利用之。
然而,仍需要一种改善的存储器设备、存储器管理系统和相关联的方法,其例如可以减少处理器关于存储器操作的负担。
技术实现要素:
独立权利要求定义了本申请的各种方面。从属权利要求定义了另外的实施例。除非另有表述,否则来自不同权利要求的特征可以组合。
根据一个实施例,本申请提供了一种用于计算设备的存储器模块,在本文也称作数据存储器模块。
计算设备设置有软件程序,其包括用于发现、组织和/或改变数据的指令。计算设备的一个例子是计算机或服务器。另一例子可以是设置有存储器、处理器和其它部件的集成系统。数据存储器模块用于存储例如上述数据,所述数据由计算设备使用。
数据存储器模块可以包括:主存储器(例如,主存储器单元)、至少一个高速缓存存储器(例如,高速缓存存储器单元)以及存储器复制设备(例如,存储器复制单元)。
高速缓存存储器通常是较小且更快的存储器,其存储主存储器的频繁使用的数据的副本。计算机的中央处理单元(cpu)或其它处理器(例如,图形处理单元(gpu))通常使用高速缓存存储器来减少从主存储器存取数据的平均时间。在实践中,通常要求预定的等待时间来在主存储器和高速缓存存储器之间同步数据。
所述同步在涉及大量数据时是尤其重要的,并且可以保持在高速缓存存储器中的数据和主存储器中的数据彼此一致。
存储器复制设备与所述主存储器和高速缓存存储器通信地连接。
存储器复制设备包括至少一个直接存储器存取(dma)端口、地址转换(addresstranslation)设备和经缓存的存取模块(cachedaccessmodule)设备。
dma端口用于存取在主存储器中的数据和在高速缓存存储器中的数据。经由dma端口,存储器复制设备能够独立于处理器(例如,cpu或gpu)存取数据。
地址转换设备用于在存储器物理地址和存储器虚拟地址之间和/或在高速缓存存储器地址和主存储器地址之间进行转换。
经缓存的存取模块设备用于经由所述dma端口在所述高速缓存存储器和所述主存储器之间读取和写入数据,用于维持数据完整性和一致性。
dma端口允许独立于处理器(例如,cpu或gpu)在主存储器和高速缓存存储器之间转移数据。事实上,在实施例中,这使得处理器在该存取数据期间可以自由执行其它任务。从而这允许更高效地使用计算资源,这在主存储器和高速缓存存储器之间转移大量数据时是尤其重要的。
在主存储器和高速缓存存储器之间的该形式的数据转移可以主要基于硬件来执行数据转移。例如,存储器复制设备可以被实现为集成电路例如专用集成电路(asic),并可以与高速缓存存储器和主存储器集成在一起。该形式的数据转移可以更快,并对转移大量数据有用。
该方法不同于使用处理器例如cpu在高速缓存存储器和主存储器之间转移数据的许多传统实现方式,所述传统实现方式主要基于在处理器上运行的软件来进行数据转移。
根据另一方面,本申请还提供了一种计算设备。所述计算设备包括:至少一个处理核心模块;以及上述存储器模块。所述处理核心模块在存储器模块中存储数据并从存储器模块读取数据。
根据另一方面,本申请还提供了一种计算机服务器。所述计算机服务器包括网络模块,其包括上述计算设备。
网络模块可以包括从由路由器设备、网关设备和网络附接存储(nas)设备组成的组中选择的一个或多个设备。
根据另一方面,本申请提供一种操作存储器模块的方法。
所述方法包括:例如通过地址转换设备,在存储器物理地址和存储器虚拟地址之间或者在高速缓存存储器地址和主存储器地址之间转换地址。所述方法还包括(例如,在地址转换之后):经由直接存储器存取(dma)(例如,对应的dma端口)在高速缓存存储器和主存储器之间读取和/或写入数据,以便维持在所述高速缓存存储器和所述主存储器之间的数据完整性和一致性。这可以例如通过经缓存的存取模块设备执行。
根据另一方面,本申请提供一种计算机,其具有存储器设备、存储器复制设备和中央处理单元(cpu)。存储器复制设备可以是硬件存储器复制(hwmemcopy)引擎。
在该方面的存储器设备包括主存储器、高速缓存存储器(cachemamory)和缓冲存储器(buffermemory)。所述存储器设备可以利用动态随机存取存储器(dram)和/或静态随机存取存储器(sram)来实现。
不同于其它的诸如路由器、网关和网络附接存储(nas)设备等设备的存储器,存储器复制设备不使用处理器(例如cpu)的资源。存储器复制设备可以改善联网吞吐量和/或可以改善或最大化(例如在嵌入式cpu上的)应用性能。存储器复制设备可以高效地使得与存储器数据有关的负荷保持远离处理器(如cpu或gpu)。该负荷可以包括由于存储器地址转换和复制数据引起的负荷,这将在下文描述。
计算机的软件应用通常使用存储器的虚拟地址方案以便更容易地实现。
虚拟地址对应于物理地址。在一个例子中,存储器设备具有起始虚拟地址0x8000000,其对应于物理地址0x0000000。
存储器复制设备可以提供虚拟存储器地址到其对应的物理存储器地址的高效转换。
存储器复制设备还可以将数据从源存储器段(sourcememorysegment)高效地复制到目的地存储器段(destinationmemorysegment),同时维持在主存储器、高速缓存存储器和缓冲存储器之间的一致性。
该一致性可以涉及将在缓冲存储器(在该情况下也称作源缓冲存储器)中的数据复制或写入到主存储器,以及若需要则复制或写入到高速缓存存储器。该数据有时被称作“脏”行(“dirty”lines)。
类似地,该一致性还可以涉及从缓冲存储器(在该情况下也称作目的地缓冲存储器)复制到主存储器,以及若需要则复制到高速缓存存储器。之后,可以执行高速缓存存储器(目的地)的存储器淘汰(memoryeviction),并且新数据可以被写入到目的地缓冲存储器。
现在将描述根据实施例的操作存储器复制设备的方法。该方法包括地址转换的步骤和高速缓存存储器一致性的步骤。
提到地址转换,在发起期间或者当在源存储器段和目的地存储器段之间的映射改变时,软件驱动程序或其它实体配置或生成用于存储器复制设备的地址转换规则。
软件驱动程序然后向存储器复制设备提供存储器复制(memcopy)请求命令。存储器复制(memcopy)请求命令表示是否将源地址和/或目的地地址转换以便优化虚拟地址的使用,虚拟地址在软件中可用或被使用在软件中以进行特定操作。
存储器复制设备随后基于生成的地址转换规则执行适当的地址转换。存储器复制设备可以针对未映射地址执行地址转换,或者可以针对已映射地址实现简化的存储器管理单元(mmu)逻辑。
关于高速缓存存储器一致性,软件驱动程序可以用memcopy请求命令向存储器复制设备表示:是将从源地址和/或目的地地址读取数据,还是数据将对高速缓存存储器写入(writeto)/直写(writethrough)。
如果要求对高速缓存存储器的缓冲存储器的存取,则存储器复制设备可以转换各自的地址以便指向与物理地址空间相对应的高速缓存存储器区域地址。
随后,存储器复制设备可以发起从缓冲存储器的直接存储器存取(dma)读取,或者可以发起对缓冲存储器的dma写入,以维持高速缓存存储器例如与主存储器和/或缓冲存储器相一致。
dma读取和/或dma写入可以以遍历高速缓存存储器子系统和一致性管理器的方式来进行。
这可以通过使用驱动器边带信号(driversidebandsignal)、或通过执行到高速缓存存储器地址空间的地址变换或转换来进行。这一点可以被实现的一种途径是:将经变换的“存取通过(accessthrough)”高速缓存存储器地址呈现给互连,该互连然后利用i/o高速缓存存储器一致性端口将该地址路由通过cpu高速缓存存储器子系统(其可以包括高速缓存存储器),同时向该子系统呈现原始地址(在高速缓存存储器地址变换之前)。
简而言之,在一些方面,本申请提供硬件存储器复制模块,用于执行通常作为软件命令而被提供的存储器复制。这可以通过执行在物理地址和虚拟地址之间的地址转换来进行。与对从源存储器到目的地存储器的同构(homogeneous)数据路径的支持相结合,软件旗标(softwareflag)可以被用来表示:来自源存储器的数据是被发送到物理存储器地址,还是被发送到高速缓存(虚拟)存储器地址。这可以允许源存储器和目的地存储器具有不同的属性。
在一些方面,由系统使用的关于物理和虚拟地址的存储器复制的方法可以通过检查由该系统使用的开源驱动程序来检测。
由本申请的一些方面提供的存储器复制设备可以不同于使用两个复制进程的系统。这样的系统具有更大的开销,并且要求更多的系统带宽来实现或执行相同的任务。
上文只是对一些实施例的一些特征或要素的简要概述,并不应被解释为限制性的,因为其它实施例可以包括不同的特征或要素。来自不同实施例的特征或要素可以彼此组合。
附图说明
图1示出了存储器复制引擎。
具体实施方式
在后续具体实施方式中,提供描述本申请实施例的细节。然而,本领域技术人员可以理解的是,实施例可以在没有这些细节的情况下实践。换句话说,通过多个特征或要素描述实施例仅为了向技术人员提供更好的理解,而不应被解释为表明所有这些特征或要素都对于实施例的实现是必要的。
所描述的一些实施例可以具有类似的部分。类似的部分可以具有相同的名称或类似的附图标号。在适当时,对这样的一个部分的描述通过引用适用于另一类似部分,由此减少了文本的重复并提供了更简洁的描述。然而,这并不暗示类似的部分必须以相同方式实现。
图1示出了例示实施例的计算模块10。虽然模块10将被描述为包括多个模块或系统,但这些模块或系统中的两个或更多个还可以被实现在一起作为单个模块或系统。
计算模块10包括处理器子系统13、双数据速率(ddr)同步动态随机存取存储器(dram)模块16、以及硬件存储器复制(hwmemcopy)引擎19。
处理器子系统13包括第一计算核心21,其具有第一高速缓存存储器24;第二计算核心26,其具有第二高速缓存存储器28;以及输入输出控制端口(iocu)模块30。在其它实施例中,可以提供仅一个这样的核心或多于两个核心。核心可以实现于单个处理器(例如,cpu或gpu)中,但也可以设置在不同处理器中。
hwmemcopy引擎19包括地址转换模块32和经缓存的存取模块34,以及存储器输入/输出(i/o)模块37、以及命令寄存器40、以及结果寄存器43。
存储器i/o模块37连接到互连模块46,该互连模块连接到iocu模块30的端口48以及ddrdram模块16的ddr端口51。
命令寄存器40连接到计算核心21和26。
结果寄存器43连接到让步管理器(yieldmanager)模块52,该让步管理器模块继而连接到计算核心21和26。
下文描述了使用hwmemcopy引擎19的方法。
软件驱动程序写入hwmemcopy引擎19的地址转换模块32的寄存器,用于配置通过hwmemcopy引擎19进行的将虚拟存储器地址到物理存储器地址的转换。替代于软件驱动程序(在例如核心21、26的一个或两个上运行的),在其它实施例中另一实体(例如,硬件模块)也可以执行对应的功能。
软件驱动器还配置在hwmemcopy引擎19中的高速缓存存储器存取变换参数,以使得hwmemcopy引擎19能够执行高速缓存存储器i/o操作。
当存储器复制操作被发起时,软件驱动程序向hwmemcopy引擎19的命令寄存器40提供源缓冲存储器地址、目的地缓冲存储器地址。软件驱动程序还向命令寄存器40提供关于源地址转换的旗标数据(flagdata)、关于目的地地址转换的旗标数据、关于高速缓存源i/o缓冲存储器的旗标数据、和/或关于高速缓存目的地i/o缓冲存储器的旗标数据。
hwmemcopy引擎19的地址转换模块32接下来在需要时执行对源主存储器地址和目的地主存储器地址的转换。
地址转换模块32还可以在需要时也执行对源高速缓存存储器地址和目的地高速缓存存储器地址的转换。
hwmemcopy引擎19接下来利用将dma读取信道耦合到dma写入信道的存储器i/o模块37从源缓冲存储器读取数据并将对应的数据写入到目的地缓冲存储器。
存储器i/o模块37的dma-r引擎55随后可以将物理源存储器地址和字节每突发(bytesperburst)数据发送到互连模块46,以读取源缓冲存储器。
互连模块46基于地址的地址范围,例如,基于地址是属于ddr存储器(其可以是主存储器的一个例子)的地址范围还是属于另一存储器(例如,高速缓存存储器)的或一般的处理器子系统的地址范围,来决定是向ddr端口51还是向iocu端口48提出请求。
如果互连模块46将地址引导到iocu端口48,则地址已被调整为反映其物理存储器地址。
如果接收到的地址不在高速缓存存储器24和/或28内,则高速缓存存储器子系统接下来从ddr端口51读取数据。
由dma-r引擎信道读取的该数据被传递给dma-w引擎信道,其将源地址和字节每突发转移到互连模块46,以便将数据写入到源缓冲存储器。
互连模块46随后基于目的地存储器地址的地址范围来决定是将该数据呈现给ddr端口51还是iocu端口48。
如果互连模块46将存储器地址转移到iocu端口48,则存储器地址被调整为反映目的地存储器的物理存储器地址。
高速缓存存储器子系统随后经由ddr端口51将期望的数据写入,以维持高速缓存一致性。在高速缓存存储器24和28中的一些数据可能不一致,并且不需要被写入到ddr端口51以改善性能。另外,在一级(l1)数据高速缓存中的高速缓存数据可以被适当地替换。
一旦一个dma操作的所有突发段(burstsegment)都已完成,则hwmemcopy引擎19就将关于所请求的存储器复制(memcpy)操作的完成的中断信号发布到各个发出请求的cpu核心21或26。
该存储器复制方式具有的优点是没有过分占用(hog)cpu时间。hwmemcopy引擎19尤其改善联网吞吐量并最大化嵌入式cpu的应用性能。
这不同于使用存储器复制(也称作memcpy函数)的多种软件系统,其显著地过分占用了cpu时间,因为cpu必须运行各个软件。使用这样的软件方法的系统的例子是诸如路由器、网关以及网络附接存储(nas)设备等的软件系统。在实施例中,在这样的系统中可以使用上述技术而不是传统软件方法。
虽然上述说明包含了许多特异性,但是这不应该被解释为限制实施例的范围,而只是提供更详细的例示。
上述一些实施例的优点不应该被解释为限制实施例的范围,而仅应被解释为在将所描述的实施例投入实践时的可能的实现方式。其它实施例可能不具有如所述的这种优点。因此,本申请的范围应该由权利要求及其等同物来确定,而不是由所给出的例子来确定。