存储器单元和方法

文档序号:10557127阅读:757来源:国知局
存储器单元和方法
【专利摘要】公开了一种存储器单元和方法。存储器单元包括:至少一个控制器,操作为与至少一个相应持久存储设备进行接口连接,所述持久存储设备操作为根据文件系统存储文件;以及文件映射单元,操作为响应于来自处理器的存储器管理单元的虚拟文件访问请求,其中,所述虚拟文件访问请求具有与识别要访问的数据的文件之一相关联的虚拟地址空间内的虚拟地址,所述文件映射单元使用预存储的映射信息将虚拟地址映射到所述文件之一内的数据的物理地址,并且发出具有物理地址的物理访问请求以访问所述文件之一中的数据。以这种方式,不需要响应于每个数据访问请求而调用至少一个软件功能或启用异常处理例程来询问文件系统的文件分配结构,而是,存储器单元可以在不需要调用软件功能或激活异常处理例程的情况下,利用预存储的映射信息来将虚拟地址转换、映射或变换为物理地址。这很大程度上加速了访问请求,其使得将持久存储设备用于将该设备上存储的文件映射到虚拟存储器空间变得更具吸引力。
【专利说明】
存储器单元和方法
技术领域
[0001] 本发明涉及数据处理,具体地,涉及一种处理来自处理器的用于访问(access)存 储在存储器中的数据的访问请求的存储器单元。
【背景技术】
[0002] 典型的数据处理装置可以具有一个或多个处理器核,其被布置为执行应用于从存 储器向处理器核供应的数据值的指令序列。尽管存在各种技术来提高这种数据处理装置在 执行处理存储器中存储的数据值的指令时的性能,但是这些技术都有各自的缺点。
[0003] 因此,期望提供一种改善的用于访问存储器中的数据值的技术。

【发明内容】

[0004] 根据第一方面,提供了一种存储器单元,包括:至少一个控制器,能够操作为与至 少一个相应的持久存储设备进行接口连接,所述持久存储设备能够操作为根据文件系统来 存储文件;以及文件映射单元,操作为:响应于来自处理器的存储器管理单元的、具有虚拟 地址空间内的与文件之一相关联的识别要访问的数据的虚拟地址的虚拟文件访问请求,使 用预存储的映射信息将虚拟地址映射到所述文件之一内的数据的物理地址,并且发出具有 物理地址的物理访问请求以访问所述文件之一中的数据。
[0005] 第一方面认识到现有存储器的一个问题在于它们具有相矛盾的特性。例如,尽管 随机存取存储器(RAM)耐用且快速,但是其成本较高,且其与持久存储器或存储设备(例如 固态驱动器或闪存设备)相比消耗大量功率并且占用大量空间,而持久存储器或存储设备 较不耐用,更便宜,占用更少空间,但是比RAM慢得多。因此,虽然持久存储器或存储设备更 适于存储非常大量的数据,但是访问这种数据却比从RAM访问慢得多。
[0006] 第一方面还认识到:当将数据存储在基于文件的系统中时,这种持久存储器或存 储设备的特性通常是复杂的,这是因为对这种基于文件的系统的数据访问请求通常需要请 求调用在处理器上执行的操作系统的至少一个软件功能。通常,操作系统询问文件分配结 构以识别所请求的数据的位置。这种操作由于以下事实而是复杂的:执行操作系统的处理 器可能不是本地处理器而是主机处理器,因此可能会在通信时产生延迟,这样进一步加剧 了在对持久存储设备进行访问请求时产生的延迟或时延。备选地,一些主机处理器与一些 操作系统结合能够操作为将基于文件系统中的文件映射到存储器中的虚拟地址。对该虚拟 地址的访问引起异常产生,其使得需要询问文件分配结构以识别所请求的数据的位置。异 常处理例程通常在运行于主机处理器上的软件中实施,其会引入延迟,这会进一步加剧当 对持久存储设备进行访问请求时产生的延迟或时延。通常,将数据存储在基于文件的系统 中是用于非常大的文件的唯一实际选项,其中,使用传统存储器分配或者在诸如在断电事 件中需要数据的持久性时,存储这种非常大的文件是不太现实的。然而,上述延迟使得这种 持久存储设备的使用极不适于具有频繁的读请求或频繁的写请求的处理,尽管这些持久存 储设备存在能够持久地存储非常大的数据文件的有利特性。
[0007] 因此,提供了一种存储器单元。该存储器单元可以包括一个或多个控制器,所述一 个或多个控制器与一个或多个关联的持久存储设备进行接口连接。持久存储设备可以根据 文件系统的文件分配结构存储文件。存储器单元还可以包括文件映射单元。文件映射单元 可以对虚拟文件访问请求进行响应。虚拟文件访问请求可以涉及虚拟地址空间内的与文件 系统中的文件之一相关联或分配到所述文件之一的虚拟地址。虚拟地址可以标识要访问的 数据。文件映射单元可以使用预存储的映射信息将虚拟地址映射到文件中的数据的物理地 址。文件映射单元可以发出具有物理地址的物理访问请求,以访问文件中的数据。以这种方 式,不需要响应于每个数据访问请求而调用至少一个软件功能或发起异常处理例程来询问 文件系统的文件分配结构,而是,存储器单元可以在不需要调用软件功能或激活异常处理 例程的情况下,利用预存储的映射信息来将虚拟地址转换、映射或变换为物理地址。这样很 大程度上加速了访问请求,其使得将持久存储设备用于将设备上存储的文件映射到虚拟存 储器空间变得更具吸引力。
[0008] 在一个实施例中,处理逻辑包括处理器和处理器的存储器管理单元中的至少一 个。将清楚的是,在处理器包括相干矢量线程化(coherent vector threaded,CVT)或类似 的高度线程化处理器的情况下,当所请求的数据被访问时,正在等待数据访问的任何线程 可以等待并被停止调度,而代之以调度其它线程。
[0009] 在一个实施例中,映射信息针对文件的子集的至少一部分将虚拟地址与物理地址 相关联,所述文件的子集是被指示为能够由操作为产生虚拟访问请求的程序所访问的文 件。因此,可以为所述文件的子集提供映射信息,所述文件的子集被指示为能够执行以产生 虚拟访问请求的程序需要访问的文件。将清楚的是,在文件非常大并且大得不能在有限虚 拟地址空间中分配或被存储器存储的情况下,可能需要映射文件的子集。将清楚的是,映射 文件的子集或文件的部分还可以提高性能,例如通过增加高速缓存命中率来提高数据高速 缓存的效率。信息的映射可以将处理逻辑使用的虚拟地址相关于或映射到持久存储设备中 的数据的物理地址。
[0010] 在一个实施例中,文件映射单元操作为从主机处理器接收映射信息。将清楚的是, 可以由合适的处理逻辑(例如主机处理器或处理逻辑)来提供映射信息。
[0011] 在一个实施例中,映射信息是在接收到虚拟访问请求之前预存储的。因此,不再是 响应于每个访问请求询问文件分配结构,而是可以替代为由存储器单元在接收到虚拟访问 请求之前产生和存储映射信息。将清楚的是,这样显著地提高了确定物理地址的速度。
[0012] 在一个实施例中,文件映射单元操作为通过下述方式将虚拟地址映射到物理地 址:使用虚拟地址的选定比特,以根据映射函数产生物理地址。因此,映射信息可以提供映 射函数,其指示应该利用或操纵虚拟地址的哪些比特、部分或字段来产生物理地址。
[0013] 在一个实施例中,映射函数执行对虚拟地址的选择、操纵和逻辑运算中的至少一 个,以产生物理地址。因此,可以仅基于提供给存储器单元的虚拟地址确定物理地址。
[0014] 在一个实施例中,虚拟地址空间被推导为在虚拟地址的选定比特中包含针对文件 的子集的至少一部分的物理地址,所述文件的子集被指示为可以由操作为产生虚拟地址请 求的程序所访问。因此,可以提取虚拟地址中的特定比特来提供物理地址。
[0015] 在一个实施例中,文件映射单元操作为:根据与虚拟映射空间相关联的预存储的 大小信息,确定包括物理访问请求的数据在内的数据量。因此,可以提供对响应于访问请求 要访问的数据量的指示。
[0016] 在一个实施例中,至少一个控制器操作为:响应于物理访问请求,从相应的持久存 储设备中访问数据量。
[0017] 在一个实施例中,存储器单元包括:物理地址高速缓存(即,物理标记的高速缓 存),其操作为存储数据量。物理地址高速缓存根据或使用其物理地址来缓存数据,并且可 以使用至少一部分物理地址来存储数据。
[0018] 在一个实施例中,物理地址高速缓存的缓存行的大小超过了数据量。因此,在物理 地址高速缓存中可以访问和存储小于整个缓存行的数据量。将清楚的是,这可以加快从持 久存储设备访问数据的速度。
[0019] 在一个实施例中,物理地址高速缓存的缓存行的大小是取决于与虚拟访问请求的 虚拟地址空间相关联的预存储的大小信息的多个大小中的一个。因此,存储器单元可以操 作为:针对与关联于不同预存储的大小信息的虚拟地址空间中的虚拟访问请求相对应的物 理访问请求,在不同的缓存行大小上进行操作。将清楚的是,这可以加快从持久存储设备访 问数据的速度。
[0020] 在一个实施例中,每个缓存行的标签字段与物理地址相关联。
[0021 ]在一个实施例中,当访问请求是读请求时,文件映射单元操作为:响应于虚拟访问 请求,提供由与物理访问请求相关联的物理地址所识别的数据。因此,文件映射单元可以响 应于虚拟访问请求而提供数据。
[0022] 在一个实施例中,当访问请求是写请求时,文件映射单元操作为:提供由映射到与 物理访问请求相关联的物理地址的与虚拟访问请求相关联的虚拟地址所识别的数据。因 此,文件映射单元可以提供要存储在所指示的物理地址中的与虚拟地址相关联的数据。
[0023] 在一个实施例中,当访问请求是写请求时,文件映射单元操作为识别数据中的修 改的数据。例如可以使用由访问请求提供的修改的比特来指示修改的数据。
[0024] 在一个实施例中,存储器单元包括虚拟地址高速缓存(即,虚拟标记的高速缓存), 其操作为存储由文件映射单元提供的重映射到与虚拟访问请求相关联的虚拟地址的数据。 因此,虚拟地址高速缓存根据或使用其虚拟地址映射来缓存数据,并且可以存储与虚拟地 址相关联的数据。
[0025] 在一个实施例中,虚拟地址高速缓存的缓存行的大小超过了数据量。
[0026] 在一个实施例中,虚拟地址高速缓存的缓存行的大小是取决于与虚拟访问请求的 虚拟地址空间相关联的预存储的大小信息的多个大小中的一个。
[0027] 在一个实施例中,每个缓存行的标签字段与虚拟地址相关联。
[0028] 在一个实施例中,文件映射单元操作为:从主机处理器接收主机访问请求,以访问 由与文件的子集的至少一部分相关联的地址所识别的数据,并且确定与虚拟访问请求和主 机访问请求相关联的访问类型。因此,存储器单元可以从多于一个处理器接收访问请求,并 且可以确定由这些处理器做出的访问请求的类型,以确定如何处理它们。
[0029] 在一个实施例中,主机访问请求包括以下项之一:用于访问由虚拟地址识别的数 据的虚拟访问请求,以及用于访问由物理地址识别的数据的物理访问请求。因此,主机处理 器可以做出虚拟访问请求和物理访问请求两者。
[0030] 在一个实施例中,文件映射单元操作为:当虚拟访问请求和主机访问请求都是读 请求时,响应于虚拟访问请求和主机虚拟访问请求两者而提供数据。因此,当访问请求都是 读访问请求时,存储器单元可以响应于这些请求中的每个而提供所请求的数据。
[0031] 在一个实施例中,文件映射单元操作为:当主机访问请求是读请求并且虚拟访问 请求是读/写请求时,向主机处理器提供表明已经响应于虚拟访问请求修改了数据的指示。 在一个实施例中,文件映射单元操作为:当主机访问请求是读请求并且虚拟访问请求是读/ 写请求时,向主机处理器提供用以从其高速缓存移除已经响应于虚拟访问请求而修改的数 据的指示。在一个实施例中,文件映射单元操作为:当主机访问请求是读请求并且虚拟访问 请求是读/写请求时,向主机处理器提供表明已经响应于虚拟访问请求而被修改的数据的 指示。因此,当主机请求是读请求并且虚拟访问请求是读/写请求时,文件映射单元可以向 主机处理器提供表明何时主机已经读取的数据已经响应于虚拟访问请求发生了修改的指 示。附加地或备选地,存储器单元可以向主机处理器提供表明已经响应于所述虚拟访问请 求而修改的数据的指示。附加地或备选地,存储器单元可以向主机处理器提供表明从其高 速缓存移除已经响应于所述虚拟访问请求而修改的数据的指示。
[0032] 在一个实施例中,文件映射单元操作为:当主机访问请求是读请求、虚拟访问请求 是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的文件的子集的 至少一部分相关联时,向主机处理器提供表明何时响应于虚拟访问请求修改了数据的指 示。在一个实施例中,文件映射单元操作为:当主机访问请求是读请求、虚拟访问请求是读/ 写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的文件的子集的至少一 部分相关联时,向主机处理器提供表明当响应于虚拟访问请求被修改时的数据的指示。在 一个实施例中,文件映射单元操作为:当主机访问请求是读请求、虚拟访问请求是读/写请 求并且所述读/写请求与被识别为要求主机处理器数据一致性的文件的子集的至少一部分 相关联时,向主机处理器提供表明已经当针对被识别为要求主机处理器数据一致性的文件 的子集的至少一部分的虚拟访问请求已经停止时,响应于虚拟访问请求已经修改的数据的 指示。因此,当主机访问请求是读请求并且虚拟访问请求是读/写请求,并且读/写请求与被 识别为要求数据一致性的数据有关时,存储器单元可以向主机处理器提供表明何时响应于 虚拟访问请求而修改了数据的指示。附加地或备选地,存储器单元可以提供表明响应于虚 拟访问请求而修改的数据的指示。附加地或备选地,存储器单元可以向主机处理器提供表 明当针对该数据的访问请求已经停止发生时响应于虚拟访问请求已经修改的数据的指示。
[0033] 在一个实施例中,存储器单元包括修改缓冲器,其中文件映射单元操作为:当虚拟 访问请求是针对文件的子集的至少一部分的读请求并且主机访问请求是读/写请求时,将 响应于主机访问请求而修改的数据存储在修改缓冲器中,直到针对文件的子集的所述至少 一部分的虚拟访问请求停止为止。因此,可以提供修改缓冲器,并且当虚拟访问请求是读请 求且主机访问请求是读/写请求时,修改缓冲器可以存储响应于主机访问请求而修改的数 据,直到虚拟访问请求停止发生职位。从处理逻辑的视角来看,这有效地冻结了数据的状 态,直到处理逻辑完成了对文件的子集的至少一部分的处理为止或者主机处理器进行的所 有修改都停止为止。
[0034] 在一个实施例中,文件映射单元操作为:确定主机访问请求是否与修改缓冲器所 存储的数据有关,如果是,则响应于主机访问请求而利用修改缓冲器存储的数据。因此,当 处理逻辑获取冻结数据的同时,主机继续被继续提供有存储在修改缓冲器中的修改的数 据。
[0035] 在一个实施例中,修改缓冲器操作为:当针对文件的子集的至少一部分的虚拟访 问请求停止时,写出由修改缓冲器存储的数据。因此,可以从修改缓冲器提供修改的数据, 以便一旦主机访问请求停止发生时就更新冻结数据。
[0036] 在一个实施例中,文件映射单元操作为:当主机访问请求是读/写请求并且虚拟访 问请求是读/写请求时,将响应于主机访问请求和虚拟访问请求而修改的数据进行合并。因 此,可以由文件映射单元响应于访问请求对修改的数据进行合并或组合。
[0037]根据第二方面,提供了一种方法,包括:响应于来自处理逻辑的、具有虚拟地址空 间内的识别要访问的数据的且与持久存储设备根据文件系统所存储的文件相关联的虚拟 地址的虚拟文件访问请求,使用预存储的映射信息将虚拟地址映射到所述文件之一内的数 据的物理地址,并且发出具有物理地址的物理访问请求以访问所述文件之一中的数据。 [0038] 在一个实施例中,处理逻辑包括至少一个处理器和处理器的存储器管理单元。 [0039]在一个实施例中,映射信息针对文件的子集的至少一部分将虚拟地址与物理地址 相关联,所述文件的子集是被指示为能够由操作为产生虚拟访问请求的程序所访问的文 件。
[0040]在一个实施例中,所述方法包括从主机处理器接收映射信息。
[0041 ]在一个实施例中,所述方法包括在接收到虚拟访问请求之前预存储映射信息。 [0042]在一个实施例中,映射的步骤包括通过下述方式来将虚拟地址映射到物理地址: 利用虚拟地址的选定比特,以根据映射函数产生物理地址。
[0043] 在一个实施例中,映射函数对虚拟地址执行选择、操纵和逻辑运算中的至少一个, 以产生物理地址。
[0044] 在一个实施例中,虚拟地址空间被推导为在虚拟地址的选定比特中包括针对文件 的子集的至少一部分的物理地址,所述文件的子集被指示为可以由操作为产生虚拟地址请 求的程序所访问。
[0045] 在一个实施例中,所述方法包括:根据与虚拟映射空间相关联的预存储的大小信 息,确定包括物理访问请求的数据在内的数据量。
[0046] 在一个实施例中,所述方法包括:响应于物理访问请求从相应持久存储设备中访 问数据量。
[0047]在一个实施例中,所述方法包括将数据量存储在物理地址高速缓存(即,物理标记 的高速缓存)中。
[0048]在一个实施例中,物理地址高速缓存的缓存行的大小超过了数据量。
[0049] 在一个实施例中,物理地址高速缓存的缓存行的大小是取决于预存储的与虚拟访 问请求的虚拟地址空间相关联的大小信息的多个大小之一。
[0050] 在一个实施例中,每个缓存行的标签字段与物理地址相关联。
[0051] 在一个实施例中,当访问请求是读请求时,所述方法包括:响应于虚拟访问请求, 提供由与物理访问请求相关联的物理地址所识别的数据。
[0052] 在一个实施例中,当访问请求是写请求时,所述方法包括:提供由映射到与物理访 问请求相关联的物理地址的与虚拟访问请求相关联的虚拟地址所识别的数据。
[0053] 在一个实施例中,当访问请求是写请求时,所述方法包括识别数据中的修改的数 据。
[0054] 在一个实施例中,所述方法包括将重映射到与虚拟访问请求相关联的虚拟地址的 数据存储在虚拟地址高速缓存(即,虚拟标记的高速缓存)中。
[0055] 在一个实施例中,虚拟地址高速缓存的缓存行的大小超过了数据量。
[0056] 在一个实施例中,虚拟地址高速缓存的缓存行的大小是取决于预存储的与虚拟访 问请求的虚拟地址空间相关联的大小信息的多个大小之一。
[0057]在一个实施例中,每个缓存行的标签字段与虚拟地址相关联。
[0058]在一个实施例中,所述方法包括:从主机处理器接收主机访问请求,以访问由与文 件的子集的至少一部分相关联的地址所识别的数据,并且确定与虚拟访问请求和主机访问 请求相关联的访问类型。
[0059]在一个实施例中,主机访问请求包括以下项之一:用于访问由虚拟地址识别的数 据的虚拟访问请求、以及用于访问由物理地址识别的数据的物理访问请求。
[0060]在一个实施例中,所述方法包括:当虚拟访问请求和主机访问请求都是读请求时, 响应于虚拟访问请求和主机虚拟访问请求两者而提供数据。
[0061] 在一个实施例中,所述方法包括:当主机访问请求是读请求并且虚拟访问请求是 读/写请求时,向主机处理器提供表明已经响应于虚拟访问请求修改了数据的指示。在一个 实施例中,所述方法包括:当主机访问请求是读请求并且虚拟访问请求是读/写请求时,向 主机处理器提供表明从其高速缓存移除已经响应于虚拟访问请求发生了修改的数据的指 示。在一个实施例中,所述方法包括:当主机访问请求是读请求并且虚拟访问请求是读/写 请求时,向主机处理器提供表明已经响应于虚拟访问请求而被修改的数据的指示。
[0062] 在一个实施例中,所述方法包括:当文件映射单元操作为当主机访问请求是读请 求、虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性 的文件的子集的至少一部分相关联时,向主机处理器提供表明何时响应于虚拟访问请求修 改了数据的指示。在一个实施例中,所述方法包括:当文件映射单元操作为当主机访问请求 是读请求、虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据 一致性的文件的子集的至少一部分相关联时,向主机处理器提供表明当响应于虚拟访问请 求被修改时的数据的指示。在一个实施例中,所述方法包括:当文件映射单元操作为当主机 访问请求是读请求、虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处 理器数据一致性的文件的子集的至少一部分相关联时,向主机处理器提供表明已经当针对 被识别为要求主机处理器数据一致性的文件的子集的至少一部分的虚拟访问请求停止时, 响应于虚拟访问请求而修改的数据的指示。
[0063] 在一个实施例中,所述方法包括:当虚拟访问请求是针对文件的子集的至少一部 分的读请求并且主机访问请求是读/写请求时,将响应于主机访问请求而修改的数据存储 在修改缓冲器中,直到针对文件的子集的至少一部分的虚拟访问请求停止为止。
[0064] 在一个实施例中,所述方法包括:确定主机访问请求是否与修改缓冲器存储的数 据有关,如果是,则响应于主机访问请求而利用修改缓冲器存储的数据。
[0065] 在一个实施例中,所述方法包括:当针对文件的子集的至少一部分的虚拟访问请 求已经停止时,写出由修改缓冲器存储的数据。
[0066] 在一个实施例中,所述方法包括:当主机访问请求是读/写请求并且虚拟访问请求 是读/写请求时,将响应于主机访问请求和虚拟访问请求而修改的数据合并。
[0067] 根据第三方面,提供了一种计算机程序产品,操作为当在计算机上执行时,执行第 二方面的方法步骤。
[0068] 在所附独立和从属权利要求中阐述了更具体和更优选的方面。从属权利要求的特 征可以在合适时与独立权利要求的特征相组合,并且可以按照除在权利要求中明确阐述的 那样以外进行组合。
[0069]在将装置特征描述为操作为提供功能的情况下,将清楚的是,这包括提供该功能 或者适于或被配置为提供该功能的装置特征。具体地,在特征包括操作为提供功能的逻辑 的情况下,将清楚的是,这包括被配置为提供该功能的电路。
【附图说明】
[0070]现在将进一步参照附图描述本发明的实施例,其中:
[0071 ]图1示出了根据一个实施例的存储器单元10;
[0072]图2示意地示出了存储在持久存储设备中的文件的布置;
[0073]图3示出了所执行的主处理步骤,以便分配虚拟地址空间中的虚拟地址范围并且 利用预存储的信息对文件映射单元进行编程;
[0074] 图4示出了处理器之一对虚拟地址和物理地址两者一起编码的布置;
[0075] 图5示出了一种混合方法,其中利用地址操纵和查找表使用两者以将虚拟地址映 射到物理地址;以及
[0076] 图6示出了响应于数据访问请求的存储器单元的示例操作。
【具体实施方式】
[0077] 遞
[0078] 在更详细地讨论实施例之前,首先提供概述。实施例提供一种存储器单元,其被布 置为使持久(且通常是高时延的)存储设备(例如诸如固态驱动器之类的静态存储设备)与 一个或多个处理器进行接口连接。处理器执行包括指令序列或线程的一个或多个程序。在 执行这些指令期间,对数据值执行处理。为了提高处理,指令根据已知技术针对数据值使用 虚拟地址。使用虚拟地址能够使得存储在存储器中的数据的实际物理地址被解耦,从而即 使当数据值在不同时间或针对不同处理器被存储在不同物理位置的情况下,也可以执行相 同程序。
[0079] 一些处理器与一些操作系统结合可操作用于将持久存储设备上的基于文件的系 统中的文件映射到存储器中的虚拟地址。到该虚拟地址的访问通常会产生异常,其造成需 要询问文件分配结构以识别所请求的数据的位置。当与存储器单元连接的处理器识别出文 件访问请求与由持久存储设备所存储的数据相关联时,向存储器单元发送文件访问请求, 而不是执行软件异常处理程序。存储器单元随后接收来自处理器的与这些虚拟地址相关联 的文件访问请求。
[0080]存储器单元使用预先存储在存储器单元中的信息,以将虚拟地址转换或变换为存 储在持久存储设备中的文件的物理地址。使用该预存储的信息避免了下述需要:调用软件 处理来检查文件分配结构,从而确定要访问的文件中的数据的虚拟地址所映射到的持久存 储设备中的物理地址。将清楚的是,当访问存储设备中的文件时,尤其是在由协处理器(coprocessor) 产生数据访问请求 (其通常需要主机处理器调用异常处理程序) 的情况下,调用 这种软件功能会造成显著的延迟,这进一步加剧了已经成为这种持久存储设备的特性的访 问时延或延迟。通过使用预存储的信息,存储器单元能够比其它方式下更快速地确定物理 地址本身,从而加速了对这种持久存储设备的访问。这在当高度线程化处理器(例如CVT处 理器)并行地产生大量文件访问时尤其有益,其中,每个文件访问通常需要调用软件处理以 确定正在访问的持久存储设备中的文件的一部分的物理地址。
[0081] 预存储的信息可以按照多种不同方式在虚拟地址和物理地址之间映射。例如,可 以提供某种形式的查找表来对虚拟和物理地址进行映射,可以操纵地址的位(bits)以在虚 拟地址和物理地址之间进行映射,或者可以使用这两者的组合。这使得存储器单元能够在 不需要获得任何进一步的信息或者访问持久存储设备来访问文件分配结构的情况下,执行 物理地址和虚拟地址之间的映射。该预存储的信息通常仅涉及被指示为在程序执行期间能 够被访问的文件或者这些文件的部分,并且主机处理器一旦确定了这种映射,通常可以非 常高效地询问文件分配结构。
[0082] 为了进一步提高存储器单元的性能,可以提供可以写入和/或读取与访问相关联 的数据的一个或多个高速缓存。这有助于减少对于持久存储设备的访问次数;通常,持久存 储设备存储太大而不能被存储器单元缓存或者不能被存储在处理器本地的存储器中的文 件。
[0083] 存储器单元架构
[0084]图1示出了根据一个实施例的存储器单元10。与存储器单元10耦接的是一个或多 个持久存储设备20A-20N的集合。在该示例中,持久存储设备20A-20N的集合是固态驱动器 (例如单核或多核NAND闪存)。然而,将清楚的是,还可以使用其它持久存储设备,例如电、 磁、光、化学或生物存储设备,以及网络存储设备,其与传统随机存取存储器(RAM)相比可能 展现出较高的访问时延。通常,每个持久存储设备20A-20N经由相应总线25A-25N与关联控 制器30A-30N耦接。每个控制器30A-30N操作为通过相应总线25A-25N从关联的持久存储设 备20A-20N获取一个或多个数据块或簇,所述数据块或簇一般在512字节和8千字节(kR)之 间。在该实施例中,数据块具有4KB的数据大小。持久存储设备20A-20N通常还集成有用于将 持久存储器接口连接到总线25A-25N的控制器(未示出)。
[0085] 本地处理器40(例如相干矢量线程化(CVT)的处理器或其它高度线程化的处理器) 经由总线45与存储器单元10耦接。在该实施例中,总线45包括支持传输地址(ADDR)、数据 (DATA)和数据修改掩码(MOD)(其标识已经被本地处理器40修改的数据;通常由于该数据在 本地处理器40本地的存储器中被标记为变脏)的64字节总线。
[0086] 通常,主机处理器50还经由总线55与存储器单元10耦接。总线55还支持传输地址、 数据和数据修改掩码。主机处理器50和本地处理器40操作为分别经由总线55、45做出数据 访问请求,以访问由持久存储设备20A-20N存储的数据。
[0087] 在主机处理器50和本地处理器40共处一处的实施例中,总线55和45可以结合为单 条总线。
[0088]存储器单元10包括文件映射单元(FMU)60,其操作为控制从本地处理器40和/或主 机处理器50接收的数据访问。具体地,文件映射单元60将从本地处理器40或主机处理器50 接收到的与虚拟地址相关联的访问请求转换为与物理地址相关联的访问请求,以便访问存 储在持久存储设备20A-20N上的文件存储器中的文件,这将在下文进行更详细地解释。 [0089]为了改善存储器单元10的性能,可以提供可选的虚拟地址高速缓存70和可选的物 理地址高速缓存80。在该示例中,虚拟地址高速缓存70被配置为多路集相关高速缓存,其在 每个条目中存储4kB缓存行数据和9比特TAG。换言之,虚拟地址高速缓存70是使用其虚拟地 址来存储数据的虚拟标记的高速缓存。在该示例中,物理地址高速缓存80被配置为多路集 相关(set associative)高速缓存,其在每个条目中存储4kB缓存行数据和16比特TAG。换言 之,物理地址高速缓存80是使用其物理地址来存储数据的物理标记的高速缓存。将清楚的 是,可以将虚拟地址高速缓存70和物理地址高速缓存80两者的大小和配置选择为适合于由 本地处理器40和/或主机处理器50做出的数据请求的大小和/或由持久存储设备20A-20N返 回的数据的大小。
[0090] 在该示例中,主机处理器50经由总线57与文件映射单元60耦接,其中在所述总线 上提供预存储的映射信息,这将在下文进行更详细地描述。
[0091] 文件系统结构
[0092] 图2示意地示出了存储在持久存储设备20A-20N中的文件的布置。示出针对三个文 件的相对简单的示例;文件A、B和C存储在持久存储设备20A-20N的不同盘上。文件被存储为 持久存储设备20A-20N中的块或簇。例如,文件A的第一块或簇A1被存储为开始于盘0上的物 理地址41000(16进制)。下一块或簇A2被存储为开始于盘1上的物理地址64000。
[0093]根据已知技术,由持久存储设备20A-20N存储的文件的指示与形成这些文件的块 或簇的开始位置一起被存储在持久存储设备20A-20N中的文件分配结构27中。在这些已知 技术中,当处理器尝试访问存储在持久存储设备20A-20N中的数据时,处理器询问文件分配 结构27以识别相关文件或文件块的物理地址,或者异常发生并且软件处理对文件分配结构 27的询问,以识别要访问的相关文件或文件块或簇的物理地址。
[0094] 示例操作
[0095] 主机处理器50通常执行程序,并且该程序的一部分试图利用本地处理器40的高度 线程化、高并行处理的属性,以对由持久存储设备20A-20N存储的一个或多个文件(通常非 常大)执行数据处理。例如,由持久存储设备20A-20N存储的文件可以是非常大的数据库文 件、首频或视频文件等。
[0096] 在概述中,主机处理器50向本地处理器40提供要执行(通常以高度线程化方式执 行)的程序,并且指定要在本地处理器40的处理期间访问的文件或文件部分。主机处理器50 执行软件,以使用文件分配结构27确定持久存储设备20A-20N中的文件的簇或块的物理地 址,所述文件的簇或块被主机处理器50识别为在由主机处理器50提供给本地处理器40的程 序的执行期间需要被本地处理器40访问。主机处理器50还向在执行程序时要被本地处理器 40利用的这些文件或文件部分分配虚拟存储器地址。主机处理器50向文件映射单元60提供 该映射信息,该映射信息将虚拟地址与物理地址进行映射。
[0097]图3示出了所执行的主处理步骤,以便分配虚拟地址空间中的虚拟地址范围并且 利用预存储的信息对文件映射单元进行编程,以使其能够将虚拟地址映射到物理地址。在 步骤S10,通常主机处理器50(或者甚至是本地处理器40)识别持久存储设备20A-20N中的文 件将需要被本地处理器40访问。这可以发生于本地处理器40执行程序之前或其期间。
[0098] 在步骤S20,检查文件分配结构27,确定要访问的文件(或其部分或窗口)的物理地 址,并且分配虚拟地址空间中的相应的虚拟地址范围。
[0099] 在步骤S30,确定是否要设置附加功能参数以增强存储器单元用于在特定地址范 围内进行存储器访问的性能。如果是,则提供对该附加功能的指示。
[0100] 在步骤S40,通过预存储该信息来配置文件映射单元60,以使得在进行这种数据访 问之前进行虚拟-物理地址转换。
[0101] 考虑文件A,主机处理器50将从文件分配结构27中确定文件A包括九个块或簇A1-A9,每个块的块大小为4kB;其中簇A1开始于物理地址41000,块A2开始于64000,簇A3和A4开 始于70000,簇A5-A8开始于10000,而簇A9开始于20000。因此,主机处理器50将虚拟地址空 间内的从〇〇〇〇到8FFF的虚拟地址范围分配用于文件A,并且将存储将虚拟地址范围映射到 物理地址范围的映射信息。
[0102] 映射信息-查找表
[0103]在下面的表1中提供了该映射信息的一个可能实施例,其中虚拟地址和物理地址 之间具有直接映射。
[0105]
[0106]由要被由本地处理器40执行的程序访问的持久存储设备20A-20N存储的其它文件 可以具有按照相似方式分配的虚拟地址和存储的映射信息。将清楚的是,如果虚拟地址空 间不足以包括所有文件,则这些文件的部分或窗口可以被分配虚拟地址,并且可以为文件 的那些部分或窗口提供映射信息。
[0107] 映射信息-地址位操纵
[0108] 图4示出了备选布置,其中,主机处理器50对虚拟地址和物理地址两者一起进行编 码,并且映射信息指示如何对虚拟地址的位进行重新排序和操纵以提取物理地址。例如,图 3示出了对虚拟地址和物理地址两者进行编码的示例64比特地址。位0至37指示由文件映射 单元使用的虚拟地址空间分配。位38至62指示物理地址的一部分,而位63指示该地址与存 储在持久存储设备20A-20N中的数据有关。
[0109] 从图4中可以看到,产生了访问请求,并且由于位63被设置,因此访问请求被发送 给存储器单元1 〇。文件映射单元60接收访问请求,并且位0至37被提取以指示访问请求的虚 拟地址。位38至62被提取,并且与位0至11级联,以获得物理地址。在一个实施例中,本地处 理器40操纵虚拟地址位38至62,从而级联的地址等于期望的物理地址。在另一实施例中,文 件映射单元60或主机处理器50执行该操纵。
[0110] 映射信息-混合方法
[0111]图5示出了一种混合方法,其中利用地址操纵和查找表使用两者来将虚拟地址映 射到物理地址。在图5中示出的实施例中,可以期望能够在与持久存储设备20A上的物理地 址相对应的虚拟地址和与持久存储设备20B上的物理地址相对应的虚拟地址之间进行区 分。
[0112] 提供了示例虚拟地址100 0000(16进制)以及相应的物理地址11041000(16进制)。 为了区分虚拟地址100对应于持久存储设备20A或20B中的哪个,要求在持久存储设备20A的 情况下将第一位120设置为0,或者在持久存储设备20B的情况下将第一位120设置为1。在物 理地址110中,如果第一位130低于或等于4,则其指向持久存储设备20A;如果第一位130大 于或等于5,则其指向持久存储设备20B,如图2中所示。因此,如果存储器单元10接收到具有 虚拟地址100的虚拟地址请求,并且该虚拟地址的第一位120是1,则存储器单元因此已经接 收到关于虚拟访问请求对应于持久存储设备20B上的数据并且物理地址110的第一位130将 大于或等于5的信息。
[0113] 在图5所示的实施例中,调整上述处理步骤S40,从而其不是针对文件A在虚拟地址 空间中分配一个虚拟地址范围0000-8FFF,而是在虚拟地址空间中分配三个虚拟地址范围 〇〇〇〇〇-〇〇FFF、10000-12FFF和01000-05FFF(如表140中所示),每个虚拟地址范围对应于文 件A的一部分或窗口。
[0114] 文件映射单元操作
[0115] 图6示出了存储器单元10响应于数据访问请求做出的示例操作。在该示例中,数据 访问请求涉及由本地处理器40做出的针对持久存储设备20A-20N中的64字节数据的读请 求。
[0116] 在步骤S100,本地处理器40(或其存储器管理单元(未示出))识别该访问请求是针 对与持久存储设备20A-20N相关联的虚拟地址。因此,通过总线45将访问请求传送到存储器 单元10。
[0117] 如果提供了虚拟地址高速缓存70,则处理进行到步骤S120,其中,确定针对虚拟地 址的访问请求是否导致虚拟地址高速缓存70中的命中。如果发生命中,则在步骤S130,从适 当的缓存行返回64字节数据。
[0118] 如果在步骤S120确定发生缓存未命中,则虚拟地址高速缓存70尝试检索包含64字 节数据的4kB缓存行。因此,在步骤S140,由文件映射单元60从虚拟地址高速缓存70或通过 总线45接收包含虚拟地址的访问请求。根据上述技术,文件映射单元60使用映射信息将虚 拟地址映射到物理地址。例如,根据上述示例,针对虚拟地址0040的访问请求将被映射到物 理地址41040。
[0119] 在步骤S150,确定文件或存储器地址范围是否具有与其相关联的附加功能(例如 地址范围是否支持来自不同处理器的同时访问)。如果不存在相关联的附加功能,则处理进 行到步骤S160。
[0120]如果提供了物理地址高速缓存80,则在步骤S160,确定针对指定的物理地址是否 发生了高速缓存命中。如果发生了高速缓存命中,则请求的64字节被返回给虚拟地址高速 缓存70 (虚拟地址高速缓存70进而对虚拟访问请求作出响应)或直接返回给总线45。
[0121]如果发生高速缓存未命中,则在步骤S180,物理地址高速缓存80或文件映射单元 60向适当的控制器30A-30N发起访问请求,以从相应持久存储设备20A-20N获取包括所请求 的64字节数据的数据量。取决于预存储的大小信息,该数据量可以是恒定的数据量或可变 的数据量。访问的恒定数据量可以例如等于持久存储设备和其文件分配结构27的块或簇的 大小(通常为4kB)、或者物理地址高速缓存80或虚拟地址高速缓存70的缓存行大小。备选 地,根据预存储的大小信息来访问可变数据量。该预存储的大小信息通常在步骤S30被存 储,并且提供虚拟访问请求和被访问的数据量之间的映射,并且通常地,指示该数据是被存 储在物理地址高速缓存80还是虚拟地址高速缓存70的缓存行中,或者该数据如何被存储在 物理地址高速缓存80或虚拟地址高速缓存70的缓存行中。因此,当第一虚拟存储器空间中 的虚拟访问请求被预存储的大小信息配置为获取512字节,并且第二虚拟存储器空间中的 虚拟访问请求被预存储的大小信息配置为获取8kB,则在步骤S180,针对第一虚拟存储器空 间的虚拟访问请求将在持久存储设备20A-20N上访问512字节,而在虚拟访问请求是针对第 二虚拟存储器空间的情况下,在持久存储设备20A-20N上访问8kB。将清楚的是,这可以加速 存储器单元10的操作,因为512字节数据访问和8kB数据访问的特性(例如在总线25A-25N上 的传输时间)不同。
[0122] 在一个实施例中,虚拟地址高速缓存70被划分为两个或更多区域,其中每个区域 对应于一个或多个虚拟地址空间。每个区域的缓存行大小被设置为由针对该区域的预存储 的大小信息所定义的大小。每个虚拟访问请求访问与预存储的大小信息和虚拟地址高速缓 存70中的相应区域的缓存行大小两者相匹配的数据量。
[0123] 将清楚的是,当本地处理器40是CVT处理器时,可以阻止调度正在等待所请求的数 据的程序线程,但是可以调度其它线程,直到所请求的数据可用。 _]同时数据访问
[0125] 如果做出了对相同数据的多个访问(通常来自本地处理器40和主机处理器50两 者),则存储器单元10可以如下操作:
[0126] 主机处理器读访问-本地处理器读访问
[0127] 当主机处理器50和本地处理器40对相同数据执行读访问时,这些读访问中的每个 由存储器单元10提供服务。
[0128] 主机处理器读访问-本地处理器读/写访问
[0129] 当主机处理器50对可被本地处理器40写入的数据执行读请求时,则每当本地处理 器40改变已被提供给主机处理器50的数据时,就在每次改变数据时向主机处理器50提供修 改报告。修改报告可以指示数据的修改值或者仅指示主机处理器50所存储的数据无效。备 选地,存储器单元10可以允许本地处理器40修改已经被主机处理器50读取的数据,并且一 旦本地处理器40的访问已经结束,就向主机处理器50发送修改报告,其中所述修改报告请 求使由本地处理器40修改的且向主机处理器50提供的所有数据被无效化。在处理步骤S155 触发这种修改报告的创建或修改。
[0130] 主机处理器读/写-本地处理器读
[0131] 当主机处理器50做出对提供给本地处理器40的数据的读/写访问时,可以不发生 特殊处理。备选地,可以实施冻结功能,其中,提供修改缓冲器(未示出),其存储由主机处理 器50写入的任何修改的数据,直到修改停止,之后对数据的累积修改被写出。
[0132] 主机处理器读/写-本地处理器读/写
[0133] 在主机处理器50和本地处理器40均对相同数据执行读和写操作的事件下,可以将 修改比特设置为指示存储的数据已经被修改,从而其它处理器可以使已经被修改的数据无 效化,或者阻止用过期的缓存数据(称为陈旧数据)覆写该修改后的数据。通常,在基于文件 的系统中的预期行为是仅写入由主机处理器50修改的数据,而不会写入来自主机处理器的 高速缓存的陈旧数据。因此,通常预期本地处理器40仅写入由本地处理器40修改的数据,而 不写入来自本地处理器的高速缓存的陈旧数据。
[0134] 如果分别设置了总线45和总线55的修改比特,则相应值将被写入。如果没有设置 该修改比特,则相应值将不被写入。因此,本地处理器40仅写入其已经修改的数据值,并且 主机处理器50仅写入其已经修改的数据值。
[0135] 综上,如上所述,固态驱动器(SSD)通常使用单核或多核NAND闪存。虽然期望利用 SSD作为主介质来执行对大量数据的处理(价格更便宜、有益于大容量的更多空间、功率有 效性),当前并不可能实现这一点(由于访问时延(通常突发长度为4kB)以及由于耐用性程 度)。此外,当对要求通常仅在基于文件的存储器中可用的大量存储的数据处理进行并行处 理时或者在需要数据持久性的情况下(例如计算机重启或断电的事件下),期望能够以并行 方式部分地访问文件,包括以不同偏移(从文件的开始处看到的点)对相同文件进行并行的 同时访问。还期望每个线程能够选择性地且针对同时写入(同时写入文件的字节)修改数 据,以符合标准化行为(写入可以以任意顺序发生,但是"陈旧数据"(过期缓存的数据)不应 该损害文件)。然而,从文件系统进行获取处理对于处理功率非常严格,其通常包括当前执 行线程的上下文开关,要求取得由操作系统设置的固定长度的完整数据突发(通常为4kB) 以及附加软件操作,以确保上述标准化行为。
[0136] 读和写访问时延的数量级差异以及自然突发长度的差异使得使用SSD作为计算机 中的主存储器并不实际。一个变通方法在于:将文件映射到存储器,从而隐含地使用RAM来 按块(所述块适合于SSD的自然突发长度)对SSD的内容进行缓存。该变通方法的缺点在于: 其需要该缓存被实施在软件中,从而会严重地攫取CHJ资源。
[0137] 将文件映射到存储器中还需要在软件中采取以下附加步骤:注意到对虚拟存储器 (其中映射了文件)的特定部分的访问已经失败(例如已经漏掉了 4kB存储器页);在文件分 配结构内查找文件的示例性4kB部分的物理位置(其取决于文件系统而不同);请求从存储 设备到存储器的4kB读取;自由地修改该4kB页,并且在存储器中时具有单个字节粒度;将 4kB页写回到文件系统;在一些文件系统中,其包括:再次查找物理位置,因为在某些文件系 统中,当被再次重新写入时,文件的部分可能会改变位置;以及如果需要的化,调整文件分 配结构。在一个实施例中,存储器单元10在步骤S155向主机存储器50报告文件的一部分已 经被再次写入,从而主机处理器50可以提供到上述改变的位置的映射,并且根据需要调整 文件分配结构。
[0138] 与运行操作系统的主机处理器连接的CVT处理器(例如通用图形处理单元(GPU)) 通常将请求主机将文件映射到主机存储器空间中。如果设备能够访问主机存储器空间,则 其仍然会在某种程度上触发上述存储器页未命中,使得主机执行上述步骤,从而可以在存 储器中访问文件的部分,并且确保所述文件的部分在稍后被正确地修改并且存储回来。这 还是非常低效的,因为其要求所有修改遍历主机-设备总线。
[0139] 因此,如上所述,一些实施例提供多个闪速控制器(通常是能够与固态驱动器接口 连接的控制器),所述闪速控制器连接到主机可编程的硬件实施的文件映射单元,所述文件 映射单元能够操作为映射文件分配结构中的文件的子集,所述文件映射单元具有修改报告 功能,能够操作为支持(可选地,同时支持)多个文件系统,所述文件映射单元连接到处理器 (通常为CVT处理器),并且通常还连接到主机处理器(或者通过该处理器连接到该单元,或 者直接连接到该单元),并且可选地连接到高速缓存,所述高速缓存可以位于处理器连接和 文件映射单元之间或者位于文件映射单元和所述多个闪速控制器之间(或位于这两处),在 高速缓存位于处理器连接和文件映射单元之间的情况下,可以从所映射的文件的子集中获 益,这是因为这种机制减小了标签大小并减小了文件映射单元(虚拟地址高速缓存)上的负 载。在实施例中,提供了一种在多个这种设备之间的互连。在实施例中,能够支持关于当向 高速缓存写入某些东西时哪些比特已经被修改的修改掩码或写掩码(比特掩码)。在实施例 中,缓存行长度是可配置的(可在通过预测在硬件中运行时配置,可在文件映射单元的主机 编程期间针对每个文件配置)。在实施例中,与高速缓存相结合提供了一种文件映射单元的 功能:缓冲在初始映射之后对文件的所有后续写入,从而有效地将文件冻结在其被映射时 所处的状态(冻结缓冲)。在实施例中,所创建的修改报告向主机处理器报告由本地处理器 对映射的文件的修改(包括写掩码),从而主机处理豁可以更新其可能保持的所述文件的任 何缓冲或使所述缓冲无效(这更也被称为赶出高速缓存)。
[0140] 此外,一些实施例提供多个闪速控制器,所述多个闪速控制器连接到主机可编程 文件映射单元,并且连接到处理器(通常为CVT处理器),且通常连接到可选地能够存储写掩 码的高速缓存(优选地为可配置长度的高速缓存),并且通常提供(通过PCI高速)到主机系 统的连接,并且通常提供某个附加高速缓存存储器(RAM)和某个处理器主存储器(RAM),以 及可选地提供在不同芯片上、在不同电路板上或在不同计算机中的这些系统之间的连接。
[0141] 在本地处理器上执行的、从被定义为基于文件的持久存储器中的文件或存储器地 址进行的、在处理器的高速缓存中未命中的读取,将可选地在文件映射单元之前的高速缓 存中发生命中。如果发生高速缓存未命中,则文件映射单元通过使用以下之一遍历预存储 在文件映射单元中的主机编程的结构,来将其虚拟存储器地址解析为其在持久存储器中的 物理地址(文件的该部分的位置):对地址中的比特的操纵(重新排序或编程修改);到排序 的位置列表的折半查找;遍历二叉树;利用查找表处理地址或地址的一部分;查找哈希表 等。
[0142] 可选地,可能在文件映射单元之后,在高速缓存中发生命中。如果发生高速缓存未 命中,则可以从一个或多个闪速控制器获取具有数据长度(该长度是运行时可配置的或可 针对每个文件主机可编程配置的)的突发。
[0143] 在高速缓存位于文件映射单元(虚拟地址高速缓存)之前的情况下,高速缓存不映 射物理存储器空间,而是例如通过下述方式构造虚拟存储器空间:针对每个映射的文件将 起始指针指派进该空间,并且随后将文件的每个字节的虚拟地址计算为起始指针+文件中 的偏移(通常以字节为单位)。这还可以用于减少用于高速缓存的标签所需的存储器(当具 有片上高速缓存的标签从而用于存储标签的存储器非常有限时,这是非常有价值的)。
[0144] 尽管本文参照附图详细地公开了本发明的示意性实施例,但是应理解,本发明不 限于精确的实施例,并且在不脱离由所附权利要求及其等同物限定的本发明的范围的情况 下,本领域技术人员可以进行各种改变和修改。
[0145] 在以下编号段落中阐述了本发明的方面和实施例。应理解,本发明包括这些方面。
[0146] 段落1、一种存储器单元,包括:
[0147] 至少一个控制器,能够操作为与至少一个相应的持久存储设备进行接口连接,所 述持久存储设备能够操作为根据文件系统来存储文件;以及
[0148] 文件映射单元,能够操作为,响应于来自处理逻辑的、具有虚拟地址空间内的与所 述文件之一相关联的标识要访问的数据的虚拟地址的虚拟文件访问请求,使用预存储的映 射信息将所述虚拟地址映射到所述文件之一内的所述数据的物理地址,并且发出具有所述 物理地址的物理访问请求以访问所述文件之一中的所述数据。
[0149] 段落2、根据段落1所述的存储器单元,其中所述映射信息针对所述文件的子集的 至少一部分将虚拟地址与物理地址相关联,所述文件的子集是被指示为能够由操作为产生 所述虚拟访问请求的程序所访问的文件。
[0150] 段落3、根据段落1或2所述的存储器单元,其中,所述映射信息是在接收到所述虚 拟访问请求之前预存储的。
[0151] 段落4、根据前述任一段落所述的存储器单元,其中所述文件映射单元能够操作为 通过以下方式将所述虚拟地址映射到所述物理地址:利用所述虚拟地址的选定的位,以根 据映射函数产生所述物理地址。
[0152] 段落5、根据前述任一段落所述的存储器单元,其中所述文件映射单元能够操作 为,根据与虚拟映射空间相关联的预存储的大小信息,确定包括所述物理访问请求的所述 数据在内的数据量。
[0153]段落6、根据前述任一段落所述的存储器单元,包括物理地址高速缓存,所述物理 地址高速缓存能够操作为存储所述数据量,并且其中所述物理地址高速缓存的缓存行的大 小超过所述数据量。
[0154] 段落7、根据前述任一段落所述的存储器单元,其中当所述访问请求是读请求时, 所述文件映射单元能够操作为响应于所述虚拟访问请求而提供由与所述物理访问请求相 关联的所述物理地址所标识的所述数据。
[0155] 段落8、根据前述任一段落所述的存储器单元,其中当所述访问请求是写请求时, 所述文件映射单元能够操作为提供由与所述虚拟访问请求相关联的所述虚拟地址所标识 的数据,其中所述虚拟地址被映射到与所述物理访问请求相关联的所述物理地址。
[0156] 段落9、根据前述任一段落所述的存储器单元,其中,当所述访问请求是所述写请 求时,所述文件映射单元能够操作为识别所述数据中的修改的数据。
[0157] 段落10、根据前述任一段落所述的存储器单元,包括虚拟地址高速缓存,所述虚拟 地址高速缓存能够操作为存储由所述文件映射单元提供的、重映射到与所述虚拟访问请求 相关联的所述虚拟地址的所述数据。
[0158] 段落11、根据前述任一段落所述的存储器单元,其中所述文件映射单元能够操作 为:从主机处理器接收用以访问由与所述文件的子集的所述至少一部分相关联的地址所标 识的数据的主机访问请求;以及确定与所述虚拟访问请求和所述主机访问请求相关联的访 问类型。
[0159] 段落12、根据段落11所述的存储器单元,其中所述文件映射单元能够操作为:当所 述虚拟访问请求和所述主机访问请求都是读请求时,响应于所述虚拟访问请求和主机虚拟 访问请求这两者而提供数据。
[0160] 段落13、根据段落11或12所述的存储器单元,其中所述文件映射单元能够操作为: 当所述主机访问请求是读请求而所述虚拟访问请求是读/写请求时,提供以下项中的至少 一个:
[0161] 向所述主机处理器表明已经响应于所述虚拟访问请求修改了数据的指示;
[0162] 向所述主机处理器表明从其高速缓存移除已经响应于所述虚拟访问请求而修改 的数据的指示;
[0163] 向所述主机处理器表明已经响应于所述虚拟访问请求而被修改的数据的指示。
[0164] 段落14、根据段落11至13中任一段所述的存储器单元,其中所述文件映射单元能 够操作为:当所述主机访问请求是读请求、所述虚拟访问请求是读/写请求并且所述读/写 请求与被识别为要求主机处理器数据一致性的所述文件的子集的至少一部分相关联时,提 供以下项中的至少一个:
[0165] 向所述主机处理器表明何时响应于所述虚拟访问请求修改了数据的指示;
[0166] 向所述主机处理器表明当响应于所述虚拟访问请求被修改时的数据的指示;以及
[0167] 向所述主机处理器表明当针对被识别为要求主机处理器数据一致性的所述文件 的子集的所述至少一部分的所述虚拟访问请求已经停止时,响应于所述虚拟访问请求而修 改的数据的指示。
[0168] 段落15、根据段落11至14中任一段所述的存储器单元,包括修改缓冲器,其中所述 文件映射单元能够操作为:当所述虚拟访问请求是针对所述文件的子集的至少一部分的读 请求并且所述主机访问请求是读/写请求时,将响应于所述主机访问请求而修改的数据存 储在所述修改缓冲器中,直到针对所述文件的子集的所述至少一部分的虚拟访问请求停止 为止。
[0169] 段落16、根据段落15所述的存储器单元,其中所述文件映射单元能够操作为:确定 主机访问请求是否涉及由所述修改缓冲器存储的数据,如果是,则响应于所述主机访问请 求而使用由所述修改缓冲器存储的所述数据。
[0170] 段落17、根据段落15或16所述的存储器单元,其中所述修改缓冲器能够操作为:当 针对所述文件的子集的所述至少一部分的所述虚拟访问请求已经停止时,写出由所述修改 缓冲器存储的所述数据。
[0171] 段落18、根据段落11至17中任一段所述的存储器单元,其中所述文件映射单元能 够操作为:当所述主机访问请求是读/写请求并且所述虚拟访问请求是读/写请求时,将响 应于所述主机访问请求和所述虚拟访问请求而修改的数据进行合并。
[0172] 段落19、一种方法,包括:
[0173] 响应于来自处理逻辑的、具有虚拟地址空间内的标识要访问的数据的与由持久存 储设备根据文件系统所存储的文件相关联的虚拟地址的虚拟文件访问请求,使用预存储的 映射信息将所述虚拟地址映射到所述文件之一内的所述数据的物理地址,并且发出具有所 述物理地址的物理访问请求以访问所述文件之一中的所述数据。
[0174]段落20、一种计算机程序产品,操作为当在计算机上执行时,执行段落19所述的方 法步骤。
【主权项】
1. 一种存储器单元,包括: 至少一个控制器,能够操作为与至少一个相应的持久存储设备进行接口连接,所述持 久存储设备能够操作为根据文件系统来存储文件;以及 文件映射单元,能够操作为,响应于来自处理逻辑的、具有虚拟地址空间内的与所述文 件之一相关联的标识要访问的数据的虚拟地址的虚拟文件访问请求,使用预存储的映射信 息将所述虚拟地址映射到所述文件之一内的所述数据的物理地址,并且发出具有所述物理 地址的物理访问请求以访问所述文件之一中的所述数据。2. 根据权利要求1所述的存储器单元,其中所述映射信息针对所述文件的子集的至少 一部分将虚拟地址与物理地址相关联,所述文件的子集是被指示为能够由操作为产生所述 虚拟访问请求的程序所访问的文件。3. 根据权利要求1所述的存储器单元,其中,所述映射信息是在接收到所述虚拟访问请 求之前预存储的。4. 根据权利要求1所述的存储器单元,其中所述文件映射单元能够操作为通过以下方 式将所述虚拟地址映射到所述物理地址:利用所述虚拟地址的选定的位,以根据映射函数 产生所述物理地址。5. 根据权利要求1所述的存储器单元,其中所述文件映射单元能够操作为,根据与虚拟 映射空间相关联的预存储的大小信息,确定包括所述物理访问请求的所述数据在内的数据 量。6. 根据权利要求1所述的存储器单元,包括物理地址高速缓存,所述物理地址高速缓存 能够操作为存储所述数据量,并且其中所述物理地址高速缓存的缓存行的大小超过所述数 据量。7. 根据权利要求1所述的存储器单元,其中,当所述访问请求是读请求时,所述文件映 射单元能够操作为响应于所述虚拟访问请求而提供由与所述物理访问请求相关联的所述 物理地址所标识的所述数据。8. 根据权利要求1所述的存储器单元,其中当所述访问请求是写请求时,所述文件映射 单元能够操作为提供由与所述虚拟访问请求相关联的所述虚拟地址所标识的数据,其中所 述虚拟地址被映射到与所述物理访问请求相关联的所述物理地址。9. 根据权利要求1所述的存储器单元,其中,当所述访问请求是所述写请求时,所述文 件映射单元能够操作为识别所述数据中的修改的数据。10. 根据权利要求1所述的存储器单元,包括虚拟地址高速缓存,所述虚拟地址高速缓 存能够操作为存储由所述文件映射单元提供的、重映射到与所述虚拟访问请求相关联的所 述虚拟地址的所述数据。11. 根据权利要求1所述的存储器单元,其中所述文件映射单元能够操作为:从主机处 理器接收用以访问由与所述文件的子集的所述至少一部分相关联的地址所标识的数据的 主机访问请求;以及确定与所述虚拟访问请求和所述主机访问请求相关联的访问类型。12. 根据权利要求11所述的存储器单元,其中所述文件映射单元能够操作为:当所述虚 拟访问请求和所述主机访问请求都是读请求时,响应于所述虚拟访问请求和主机虚拟访问 请求这两者而提供数据。13. 根据权利要求11所述的存储器单元,其中所述文件映射单元能够操作为:当所述主 机访问请求是读请求而所述虚拟访问请求是读/写请求时,提供以下项中的至少一个: 向所述主机处理器表明已经响应于所述虚拟访问请求修改了数据的指示; 向所述主机处理器表明从其高速缓存移除已经响应于所述虚拟访问请求而修改的数 据的指示; 向所述主机处理器表明已经响应于所述虚拟访问请求而被修改的数据的指示。14. 根据权利要求11所述的存储器单元,其中所述文件映射单元能够操作为:当所述主 机访问请求是读请求、所述虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求 主机处理器数据一致性的所述文件的子集的至少一部分相关联时,提供以下项中的至少一 个: 向所述主机处理器表明何时响应于所述虚拟访问请求修改了数据的指示; 向所述主机处理器表明当响应于所述虚拟访问请求被修改时的数据的指示;以及 向所述主机处理器表明当针对被识别为要求主机处理器数据一致性的所述文件的子 集的所述至少一部分的所述虚拟访问请求已经停止时,响应于所述虚拟访问请求而修改的 数据的指示。15. 根据权利要求11所述的存储器单元,包括修改缓冲器,其中所述文件映射单元能够 操作为:当所述虚拟访问请求是针对所述文件的子集的至少一部分的读请求并且所述主机 访问请求是读/写请求时,将响应于所述主机访问请求而修改的数据存储在所述修改缓冲 器中,直到针对所述文件的子集的所述至少一部分的虚拟访问请求停止为止。16. 根据权利要求15所述的存储器单元,其中所述文件映射单元能够操作为:确定主机 访问请求是否涉及由所述修改缓冲器存储的数据,如果是,则响应于所述主机访问请求而 使用由所述修改缓冲器存储的所述数据。17. 根据权利要求15所述的存储器单元,其中所述修改缓冲器能够操作为:当针对所述 文件的子集的所述至少一部分的所述虚拟访问请求已经停止时,写出由所述修改缓冲器存 储的所述数据。18. 根据权利要求11所述的存储器单元,其中所述文件映射单元能够操作为:当所述主 机访问请求是读/写请求并且所述虚拟访问请求是读/写请求时,将响应于所述主机访问请 求和所述虚拟访问请求而修改的数据进行合并。19. 一种方法,包括: 响应于来自处理逻辑的、具有虚拟地址空间内的标识要访问的数据的与由持久存储设 备根据文件系统所存储的文件相关联的虚拟地址的虚拟文件访问请求,使用预存储的映射 信息将所述虚拟地址映射到所述文件之一内的所述数据的物理地址,并且发出具有所述物 理地址的物理访问请求以访问所述文件之一中的所述数据。20. -种计算机程序产品,操作为:当在计算机上执行时,执行根据权利要求19所述的 方法步骤。
【文档编号】G06F12/10GK105917319SQ201480072440
【公开日】2016年8月31日
【申请日】2014年11月19日
【发明人】托马斯·里希特, 埃温·利兰, 戴维·盖尔
【申请人】斯瓦姆64有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1