CN105917319B - 存储器单元和方法 - Google Patents

存储器单元和方法 Download PDF

Info

Publication number
CN105917319B
CN105917319B CN201480072440.6A CN201480072440A CN105917319B CN 105917319 B CN105917319 B CN 105917319B CN 201480072440 A CN201480072440 A CN 201480072440A CN 105917319 B CN105917319 B CN 105917319B
Authority
CN
China
Prior art keywords
access request
data
virtual
file
files
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480072440.6A
Other languages
English (en)
Other versions
CN105917319A (zh
Inventor
托马斯·里希特
埃温·利兰
戴维·盖尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Swam 64 Co Ltd
Original Assignee
Swam 64 Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Swam 64 Co Ltd filed Critical Swam 64 Co Ltd
Publication of CN105917319A publication Critical patent/CN105917319A/zh
Application granted granted Critical
Publication of CN105917319B publication Critical patent/CN105917319B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

公开了一种存储器单元和方法。存储器单元包括:至少一个控制器,操作为与至少一个相应持久存储设备进行接口连接,所述持久存储设备操作为根据文件系统存储文件;以及文件映射单元,操作为响应于来自处理器的存储器管理单元的虚拟文件访问请求,其中,所述虚拟文件访问请求具有与识别要访问的数据的文件之一相关联的虚拟地址空间内的虚拟地址,所述文件映射单元使用预存储的映射信息将虚拟地址映射到所述文件之一内的数据的物理地址,并且发出具有物理地址的物理访问请求以访问所述文件之一中的数据。以这种方式,不需要响应于每个数据访问请求而调用至少一个软件功能或启用异常处理例程来询问文件系统的文件分配结构,而是,存储器单元可以在不需要调用软件功能或激活异常处理例程的情况下,利用预存储的映射信息来将虚拟地址转换、映射或变换为物理地址。这很大程度上加速了访问请求,其使得将持久存储设备用于将该设备上存储的文件映射到虚拟存储器空间变得更具吸引力。

Description

存储器单元和方法
技术领域
本发明涉及数据处理,具体地,涉及一种处理来自处理器的用于访问(access)存储在存储器中的数据的访问请求的存储器单元。
背景技术
典型的数据处理装置可以具有一个或多个处理器核,其被布置为执行应用于从存储器向处理器核供应的数据值的指令序列。尽管存在各种技术来提高这种数据处理装置在执行处理存储器中存储的数据值的指令时的性能,但是这些技术都有各自的缺点。
因此,期望提供一种改善的用于访问存储器中的数据值的技术。
发明内容
根据第一方面,提供了一种存储器单元,包括:至少一个控制器,能够操作为与至少一个相应的持久存储设备进行接口连接,所述持久存储设备能够操作为根据文件系统来存储文件;以及文件映射单元,操作为:响应于来自处理器的存储器管理单元的、具有虚拟地址空间内的与文件之一相关联的识别要访问的数据的虚拟地址的虚拟文件访问请求,使用预存储的映射信息将虚拟地址映射到所述文件之一内的数据的物理地址,并且发出具有物理地址的物理访问请求以访问所述文件之一中的数据。
第一方面认识到现有存储器的一个问题在于它们具有相矛盾的特性。例如,尽管随机存取存储器(RAM)耐用且快速,但是其成本较高,且其与持久存储器或存储设备(例如固态驱动器或闪存设备)相比消耗大量功率并且占用大量空间,而持久存储器或存储设备较不耐用,更便宜,占用更少空间,但是比RAM慢得多。因此,虽然持久存储器或存储设备更适于存储非常大量的数据,但是访问这种数据却比从RAM访问慢得多。
第一方面还认识到:当将数据存储在基于文件的系统中时,这种持久存储器或存储设备的特性通常是复杂的,这是因为对这种基于文件的系统的数据访问请求通常需要请求调用在处理器上执行的操作系统的至少一个软件功能。通常,操作系统询问文件分配结构以识别所请求的数据的位置。这种操作由于以下事实而是复杂的:执行操作系统的处理器可能不是本地处理器而是主机处理器,因此可能会在通信时产生延迟,这样进一步加剧了在对持久存储设备进行访问请求时产生的延迟或时延。备选地,一些主机处理器与一些操作系统结合能够操作为将基于文件系统中的文件映射到存储器中的虚拟地址。对该虚拟地址的访问引起异常产生,其使得需要询问文件分配结构以识别所请求的数据的位置。异常处理例程通常在运行于主机处理器上的软件中实施,其会引入延迟,这会进一步加剧当对持久存储设备进行访问请求时产生的延迟或时延。通常,将数据存储在基于文件的系统中是用于非常大的文件的唯一实际选项,其中,使用传统存储器分配或者在诸如在断电事件中需要数据的持久性时,存储这种非常大的文件是不太现实的。然而,上述延迟使得这种持久存储设备的使用极不适于具有频繁的读请求或频繁的写请求的处理,尽管这些持久存储设备存在能够持久地存储非常大的数据文件的有利特性。
因此,提供了一种存储器单元。该存储器单元可以包括一个或多个控制器,所述一个或多个控制器与一个或多个关联的持久存储设备进行接口连接。持久存储设备可以根据文件系统的文件分配结构存储文件。存储器单元还可以包括文件映射单元。文件映射单元可以对虚拟文件访问请求进行响应。虚拟文件访问请求可以涉及虚拟地址空间内的与文件系统中的文件之一相关联或分配到所述文件之一的虚拟地址。虚拟地址可以标识要访问的数据。文件映射单元可以使用预存储的映射信息将虚拟地址映射到文件中的数据的物理地址。文件映射单元可以发出具有物理地址的物理访问请求,以访问文件中的数据。以这种方式,不需要响应于每个数据访问请求而调用至少一个软件功能或发起异常处理例程来询问文件系统的文件分配结构,而是,存储器单元可以在不需要调用软件功能或激活异常处理例程的情况下,利用预存储的映射信息来将虚拟地址转换、映射或变换为物理地址。这样很大程度上加速了访问请求,其使得将持久存储设备用于将设备上存储的文件映射到虚拟存储器空间变得更具吸引力。
在一个实施例中,处理逻辑包括处理器和处理器的存储器管理单元中的至少一个。将清楚的是,在处理器包括相干矢量线程化(coherent vector threaded,CVT)或类似的高度线程化处理器的情况下,当所请求的数据被访问时,正在等待数据访问的任何线程可以等待并被停止调度,而代之以调度其它线程。
在一个实施例中,映射信息针对文件的子集的至少一部分将虚拟地址与物理地址相关联,所述文件的子集是被指示为能够由操作为产生虚拟访问请求的程序所访问的文件。因此,可以为所述文件的子集提供映射信息,所述文件的子集被指示为能够执行以产生虚拟访问请求的程序需要访问的文件。将清楚的是,在文件非常大并且大得不能在有限虚拟地址空间中分配或被存储器存储的情况下,可能需要映射文件的子集。将清楚的是,映射文件的子集或文件的部分还可以提高性能,例如通过增加高速缓存命中率来提高数据高速缓存的效率。信息的映射可以将处理逻辑使用的虚拟地址相关于或映射到持久存储设备中的数据的物理地址。
在一个实施例中,文件映射单元操作为从主机处理器接收映射信息。将清楚的是,可以由合适的处理逻辑(例如主机处理器或处理逻辑)来提供映射信息。
在一个实施例中,映射信息是在接收到虚拟访问请求之前预存储的。因此,不再是响应于每个访问请求询问文件分配结构,而是可以替代为由存储器单元在接收到虚拟访问请求之前产生和存储映射信息。将清楚的是,这样显著地提高了确定物理地址的速度。
在一个实施例中,文件映射单元操作为通过下述方式将虚拟地址映射到物理地址:使用虚拟地址的选定比特,以根据映射函数产生物理地址。因此,映射信息可以提供映射函数,其指示应该利用或操纵虚拟地址的哪些比特、部分或字段来产生物理地址。
在一个实施例中,映射函数执行对虚拟地址的选择、操纵和逻辑运算中的至少一个,以产生物理地址。因此,可以仅基于提供给存储器单元的虚拟地址确定物理地址。
在一个实施例中,虚拟地址空间被推导为在虚拟地址的选定比特中包含针对文件的子集的至少一部分的物理地址,所述文件的子集被指示为可以由操作为产生虚拟地址请求的程序所访问。因此,可以提取虚拟地址中的特定比特来提供物理地址。
在一个实施例中,文件映射单元操作为:根据与虚拟映射空间相关联的预存储的大小信息,确定包括物理访问请求的数据在内的数据量。因此,可以提供对响应于访问请求要访问的数据量的指示。
在一个实施例中,至少一个控制器操作为:响应于物理访问请求,从相应的持久存储设备中访问数据量。
在一个实施例中,存储器单元包括:物理地址高速缓存(即,物理标记的高速缓存),其操作为存储数据量。物理地址高速缓存根据或使用其物理地址来缓存数据,并且可以使用至少一部分物理地址来存储数据。
在一个实施例中,物理地址高速缓存的缓存行的大小超过了数据量。因此,在物理地址高速缓存中可以访问和存储小于整个缓存行的数据量。将清楚的是,这可以加快从持久存储设备访问数据的速度。
在一个实施例中,物理地址高速缓存的缓存行的大小是取决于与虚拟访问请求的虚拟地址空间相关联的预存储的大小信息的多个大小中的一个。因此,存储器单元可以操作为:针对与关联于不同预存储的大小信息的虚拟地址空间中的虚拟访问请求相对应的物理访问请求,在不同的缓存行大小上进行操作。将清楚的是,这可以加快从持久存储设备访问数据的速度。
在一个实施例中,每个缓存行的标签字段与物理地址相关联。
在一个实施例中,当访问请求是读请求时,文件映射单元操作为:响应于虚拟访问请求,提供由与物理访问请求相关联的物理地址所识别的数据。因此,文件映射单元可以响应于虚拟访问请求而提供数据。
在一个实施例中,当访问请求是写请求时,文件映射单元操作为:提供由映射到与物理访问请求相关联的物理地址的与虚拟访问请求相关联的虚拟地址所识别的数据。因此,文件映射单元可以提供要存储在所指示的物理地址中的与虚拟地址相关联的数据。
在一个实施例中,当访问请求是写请求时,文件映射单元操作为识别数据中的修改的数据。例如可以使用由访问请求提供的修改的比特来指示修改的数据。
在一个实施例中,存储器单元包括虚拟地址高速缓存(即,虚拟标记的高速缓存),其操作为存储由文件映射单元提供的重映射到与虚拟访问请求相关联的虚拟地址的数据。因此,虚拟地址高速缓存根据或使用其虚拟地址映射来缓存数据,并且可以存储与虚拟地址相关联的数据。
在一个实施例中,虚拟地址高速缓存的缓存行的大小超过了数据量。
在一个实施例中,虚拟地址高速缓存的缓存行的大小是取决于与虚拟访问请求的虚拟地址空间相关联的预存储的大小信息的多个大小中的一个。
在一个实施例中,每个缓存行的标签字段与虚拟地址相关联。
在一个实施例中,文件映射单元操作为:从主机处理器接收主机访问请求,以访问由与文件的子集的至少一部分相关联的地址所识别的数据,并且确定与虚拟访问请求和主机访问请求相关联的访问类型。因此,存储器单元可以从多于一个处理器接收访问请求,并且可以确定由这些处理器做出的访问请求的类型,以确定如何处理它们。
在一个实施例中,主机访问请求包括以下项之一:用于访问由虚拟地址识别的数据的虚拟访问请求,以及用于访问由物理地址识别的数据的物理访问请求。因此,主机处理器可以做出虚拟访问请求和物理访问请求两者。
在一个实施例中,文件映射单元操作为:当虚拟访问请求和主机访问请求都是读请求时,响应于虚拟访问请求和主机虚拟访问请求两者而提供数据。因此,当访问请求都是读访问请求时,存储器单元可以响应于这些请求中的每个而提供所请求的数据。
在一个实施例中,文件映射单元操作为:当主机访问请求是读请求并且虚拟访问请求是读/写请求时,向主机处理器提供表明已经响应于虚拟访问请求修改了数据的指示。在一个实施例中,文件映射单元操作为:当主机访问请求是读请求并且虚拟访问请求是读/写请求时,向主机处理器提供用以从其高速缓存移除已经响应于虚拟访问请求而修改的数据的指示。在一个实施例中,文件映射单元操作为:当主机访问请求是读请求并且虚拟访问请求是读/写请求时,向主机处理器提供表明已经响应于虚拟访问请求而被修改的数据的指示。因此,当主机请求是读请求并且虚拟访问请求是读/写请求时,文件映射单元可以向主机处理器提供表明何时主机已经读取的数据已经响应于虚拟访问请求发生了修改的指示。附加地或备选地,存储器单元可以向主机处理器提供表明已经响应于所述虚拟访问请求而修改的数据的指示。附加地或备选地,存储器单元可以向主机处理器提供表明从其高速缓存移除已经响应于所述虚拟访问请求而修改的数据的指示。
在一个实施例中,文件映射单元操作为:当主机访问请求是读请求、虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的文件的子集的至少一部分相关联时,向主机处理器提供表明何时响应于虚拟访问请求修改了数据的指示。在一个实施例中,文件映射单元操作为:当主机访问请求是读请求、虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的文件的子集的至少一部分相关联时,向主机处理器提供表明当响应于虚拟访问请求被修改时的数据的指示。在一个实施例中,文件映射单元操作为:当主机访问请求是读请求、虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的文件的子集的至少一部分相关联时,向主机处理器提供表明已经当针对被识别为要求主机处理器数据一致性的文件的子集的至少一部分的虚拟访问请求已经停止时,响应于虚拟访问请求已经修改的数据的指示。因此,当主机访问请求是读请求并且虚拟访问请求是读/写请求,并且读/写请求与被识别为要求数据一致性的数据有关时,存储器单元可以向主机处理器提供表明何时响应于虚拟访问请求而修改了数据的指示。附加地或备选地,存储器单元可以提供表明响应于虚拟访问请求而修改的数据的指示。附加地或备选地,存储器单元可以向主机处理器提供表明当针对该数据的访问请求已经停止发生时响应于虚拟访问请求已经修改的数据的指示。
在一个实施例中,存储器单元包括修改缓冲器,其中文件映射单元操作为:当虚拟访问请求是针对文件的子集的至少一部分的读请求并且主机访问请求是读/写请求时,将响应于主机访问请求而修改的数据存储在修改缓冲器中,直到针对文件的子集的所述至少一部分的虚拟访问请求停止为止。因此,可以提供修改缓冲器,并且当虚拟访问请求是读请求且主机访问请求是读/写请求时,修改缓冲器可以存储响应于主机访问请求而修改的数据,直到虚拟访问请求停止发生职位。从处理逻辑的视角来看,这有效地冻结了数据的状态,直到处理逻辑完成了对文件的子集的至少一部分的处理为止或者主机处理器进行的所有修改都停止为止。
在一个实施例中,文件映射单元操作为:确定主机访问请求是否与修改缓冲器所存储的数据有关,如果是,则响应于主机访问请求而利用修改缓冲器存储的数据。因此,当处理逻辑获取冻结数据的同时,主机继续被继续提供有存储在修改缓冲器中的修改的数据。
在一个实施例中,修改缓冲器操作为:当针对文件的子集的至少一部分的虚拟访问请求停止时,写出由修改缓冲器存储的数据。因此,可以从修改缓冲器提供修改的数据,以便一旦主机访问请求停止发生时就更新冻结数据。
在一个实施例中,文件映射单元操作为:当主机访问请求是读/写请求并且虚拟访问请求是读/写请求时,将响应于主机访问请求和虚拟访问请求而修改的数据进行合并。因此,可以由文件映射单元响应于访问请求对修改的数据进行合并或组合。
根据第二方面,提供了一种方法,包括:响应于来自处理逻辑的、具有虚拟地址空间内的识别要访问的数据的且与持久存储设备根据文件系统所存储的文件相关联的虚拟地址的虚拟文件访问请求,使用预存储的映射信息将虚拟地址映射到所述文件之一内的数据的物理地址,并且发出具有物理地址的物理访问请求以访问所述文件之一中的数据。
在一个实施例中,处理逻辑包括至少一个处理器和处理器的存储器管理单元。
在一个实施例中,映射信息针对文件的子集的至少一部分将虚拟地址与物理地址相关联,所述文件的子集是被指示为能够由操作为产生虚拟访问请求的程序所访问的文件。
在一个实施例中,所述方法包括从主机处理器接收映射信息。
在一个实施例中,所述方法包括在接收到虚拟访问请求之前预存储映射信息。
在一个实施例中,映射的步骤包括通过下述方式来将虚拟地址映射到物理地址:利用虚拟地址的选定比特,以根据映射函数产生物理地址。
在一个实施例中,映射函数对虚拟地址执行选择、操纵和逻辑运算中的至少一个,以产生物理地址。
在一个实施例中,虚拟地址空间被推导为在虚拟地址的选定比特中包括针对文件的子集的至少一部分的物理地址,所述文件的子集被指示为可以由操作为产生虚拟地址请求的程序所访问。
在一个实施例中,所述方法包括:根据与虚拟映射空问相关联的预存储的大小信息,确定包括物理访问请求的数据在内的数据量。
在一个实施例中,所述方法包括:响应于物理访问请求从相应持久存储设备中访问数据量。
在一个实施例中,所述方法包括将数据量存储在物理地址高速缓存(即,物理标记的高速缓存)中。
在一个实施例中,物理地址高速缓存的缓存行的大小超过了数据量。
在一个实施例中,物理地址高速缓存的缓存行的大小是取决于预存储的与虚拟访问请求的虚拟地址空间相关联的大小信息的多个大小之一。
在一个实施例中,每个缓存行的标签字段与物理地址相关联。
在一个实施例中,当访问请求是读请求时,所述方法包括:响应于虚拟访问请求,提供由与物理访问请求相关联的物理地址所识别的数据。
在一个实施例中,当访问请求是写请求时,所述方法包括:提供由映射到与物理访问请求相关联的物理地址的与虚拟访问请求相关联的虚拟地址所识别的数据。
在一个实施例中,当访问请求是写请求时,所述方法包括识别数据中的修改的数据。
在一个实施例中,所述方法包括将重映射到与虚拟访问请求相关联的虚拟地址的数据存储在虚拟地址高速缓存(即,虚拟标记的高速缓存)中。
在一个实施例中,虚拟地址高速缓存的缓存行的大小超过了数据量。
在一个实施例中,虚拟地址高速缓存的缓存行的大小是取决于预存储的与虚拟访问请求的虚拟地址空间相关联的大小信息的多个大小之一。
在一个实施例中,每个缓存行的标签字段与虚拟地址相关联。
在一个实施例中,所述方法包括:从主机处理器接收主机访问请求,以访问由与文件的子集的至少一部分相关联的地址所识别的数据,并且确定与虚拟访问请求和主机访问请求相关联的访问类型。
在一个实施例中,主机访问请求包括以下项之一:用于访问由虚拟地址识别的数据的虚拟访问请求、以及用于访问由物理地址识别的数据的物理访问请求。
在一个实施例中,所述方法包括:当虚拟访问请求和主机访问请求都是读请求时,响应于虚拟访问请求和主机虚拟访问请求两者而提供数据。
在一个实施例中,所述方法包括:当主机访问请求是读请求并且虚拟访问请求是读/写请求时,向主机处理器提供表明已经响应于虚拟访问请求修改了数据的指示。在一个实施例中,所述方法包括:当主机访问请求是读请求并且虚拟访问请求是读/写请求时,向主机处理器提供表明从其高速缓存移除已经响应于虚拟访问请求发生了修改的数据的指示。在一个实施例中,所述方法包括:当主机访问请求是读请求并且虚拟访问请求是读/写请求时,向主机处理器提供表明已经响应于虚拟访问请求而被修改的数据的指示。
在一个实施例中,所述方法包括:当文件映射单元操作为当主机访问请求是读请求、虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的文件的子集的至少一部分相关联时,向主机处理器提供表明何时响应于虚拟访问请求修改了数据的指示。在一个实施例中,所述方法包括:当文件映射单元操作为当主机访问请求是读请求、虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的文件的子集的至少一部分相关联时,向主机处理器提供表明当响应于虚拟访问请求被修改时的数据的指示。在一个实施例中,所述方法包括:当文件映射单元操作为当主机访问请求是读请求、虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的文件的子集的至少一部分相关联时,向主机处理器提供表明已经当针对被识别为要求主机处理器数据一致性的文件的子集的至少一部分的虚拟访问请求停止时,响应于虚拟访问请求而修改的数据的指示。
在一个实施例中,所述方法包括:当虚拟访问请求是针对文件的子集的至少一部分的读请求并且主机访问请求是读/写请求时,将响应于主机访问请求而修改的数据存储在修改缓冲器中,直到针对文件的子集的至少一部分的虚拟访问请求停止为止。
在一个实施例中,所述方法包括:确定主机访问请求是否与修改缓冲器存储的数据有关,如果是,则响应于主机访问请求而利用修改缓冲器存储的数据。
在一个实施例中,所述方法包括:当针对文件的子集的至少一部分的虚拟访问请求已经停止时,写出由修改缓冲器存储的数据。
在一个实施例中,所述方法包括:当主机访问请求是读/写请求并且虚拟访问请求是读/写请求时,将响应于主机访问请求和虚拟访问请求而修改的数据合并。
根据第三方面,提供了一种计算机程序产品,操作为当在计算机上执行时,执行第二方面的方法步骤。
在所附独立和从属权利要求中阐述了更具体和更优选的方面。从属权利要求的特征可以在合适时与独立权利要求的特征相组合,并且可以按照除在权利要求中明确阐述的那样以外进行组合。
在将装置特征描述为操作为提供功能的情况下,将清楚的是,这包括提供该功能或者适于或被配置为提供该功能的装置特征。具体地,在特征包括操作为提供功能的逻辑的情况下,将清楚的是,这包括被配置为提供该功能的电路。
附图说明
现在将进一步参照附图描述本发明的实施例,其中:
图1示出了根据一个实施例的存储器单元10;
图2示意地示出了存储在持久存储设备中的文件的布置;
图3示出了所执行的主处理步骤,以便分配虚拟地址空间中的虚拟地址范围并且利用预存储的信息对文件映射单元进行编程;
图4示出了处理器之一对虚拟地址和物理地址两者一起编码的布置;
图5示出了一种混合方法,其中利用地址操纵和查找表使用两者以将虚拟地址映射到物理地址;以及
图6示出了响应于数据访问请求的存储器单元的示例操作。
具体实施方式
概述
在更详细地讨论实施例之前,首先提供概述。实施例提供一种存储器单元,其被布置为使持久(且通常是高时延的)存储设备(例如诸如固态驱动器之类的静态存储设备)与一个或多个处理器进行接口连接。处理器执行包括指令序列或线程的一个或多个程序。在执行这些指令期间,对数据值执行处理。为了提高处理,指令根据已知技术针对数据值使用虚拟地址。使用虚拟地址能够使得存储在存储器中的数据的实际物理地址被解耦,从而即使当数据值在不同时间或针对不同处理器被存储在不同物理位置的情况下,也可以执行相同程序。
一些处理器与一些操作系统结合可操作用于将持久存储设备上的基于文件的系统中的文件映射到存储器中的虚拟地址。到该虚拟地址的访问通常会产生异常,其造成需要询问文件分配结构以识别所请求的数据的位置。当与存储器单元连接的处理器识别出文件访问请求与由持久存储设备所存储的数据相关联时,向存储器单元发送文件访问请求,而不是执行软件异常处理程序。存储器单元随后接收来自处理器的与这些虚拟地址相关联的文件访问请求。
存储器单元使用预先存储在存储器单元中的信息,以将虚拟地址转换或变换为存储在持久存储设备中的文件的物理地址。使用该预存储的信息避免了下述需要:调用软件处理来检查文件分配结构,从而确定要访问的文件中的数据的虚拟地址所映射到的持久存储设备中的物理地址。将清楚的是,当访问存储设备中的文件时,尤其是在由协处理器(co-processor)产生数据访问请求(其通常需要主机处理器调用异常处理程序)的情况下,调用这种软件功能会造成显著的延迟,这进一步加剧了已经成为这种持久存储设备的特性的访问时延或延迟。通过使用预存储的信息,存储器单元能够比其它方式下更快速地确定物理地址本身,从而加速了对这种持久存储设备的访问。这在当高度线程化处理器(例如CVT处理器)并行地产生大量文件访问时尤其有益,其中,每个文件访问通常需要调用软件处理以确定正在访问的持久存储设备中的文件的一部分的物理地址。
预存储的信息可以按照多种不同方式在虚拟地址和物理地址之间映射。例如,可以提供某种形式的查找表来对虚拟和物理地址进行映射,可以操纵地址的位(bits)以在虚拟地址和物理地址之间进行映射,或者可以使用这两者的组合。这使得存储器单元能够在不需要获得任何进一步的信息或者访问持久存储设备来访问文件分配结构的情况下,执行物理地址和虚拟地址之间的映射。该预存储的信息通常仅涉及被指示为在程序执行期间能够被访问的文件或者这些文件的部分,并且主机处理器一旦确定了这种映射,通常可以非常高效地询问文件分配结构。
为了进一步提高存储器单元的性能,可以提供可以写入和/或读取与访问相关联的数据的一个或多个高速缓存。这有助于减少对于持久存储设备的访问次数;通常,持久存储设备存储太大而不能被存储器单元缓存或者不能被存储在处理器本地的存储器中的文件。
存储器单元架构
图1示出了根据一个实施例的存储器单元10。与存储器单元10耦接的是一个或多个持久存储设备20A-20N的集合。在该示例中,持久存储设备20A-20N的集合是固态驱动器(例如单核或多核NAND闪存)。然而,将清楚的是,还可以使用其它持久存储设备,例如电、磁、光、化学或生物存储设备,以及网络存储设备,其与传统随机存取存储器(RAM)相比可能展现出较高的访问时延。通常,每个持久存储设备20A-20N经由相应总线25A-25N与关联控制器30A-30N耦接。每个控制器30A-30N操作为通过相应总线25A-25N从关联的持久存储设备20A-20N获取一个或多个数据块或簇,所述数据块或簇一般在512字节和8千字节(kB)之间。在该实施例中,数据块具有4KB的数据大小。持久存储设备20A-20N通常还集成有用于将持久存储器接口连接到总线25A-25N的控制器(未示出)。
本地处理器40(例如相干矢量线程化(CVT)的处理器或其它高度线程化的处理器)经由总线45与存储器单元10耦接。在该实施例中,总线45包括支持传输地址(ADDR)、数据(DATA)和数据修改掩码(MOD)(其标识已经被本地处理器40修改的数据;通常由于该数据在本地处理器40本地的存储器中被标记为变脏)的64字节总线。
通常,主机处理器50还经由总线55与存储器单元10耦接。总线55还支持传输地址、数据和数据修改掩码。主机处理器50和本地处理器40操作为分别经由总线55、45做出数据访问请求,以访问由持久存储设备20A-20N存储的数据。
在主机处理器50和本地处理器40共处一处的实施例中,总线55和45可以结合为单条总线。
存储器单元10包括文件映射单元(FMU)60,其操作为控制从本地处理器40和/或主机处理器50接收的数据访问。具体地,文件映射单元60将从本地处理器40或主机处理器50接收到的与虚拟地址相关联的访问请求转换为与物理地址相关联的访问请求,以便访问存储在持久存储设备20A-20N上的文件存储器中的文件,这将在下文进行更详细地解释。
为了改善存储器单元10的性能,可以提供可选的虚拟地址高速缓存70和可选的物理地址高速缓存80。在该示例中,虚拟地址高速缓存70被配置为多路集相关高速缓存,其在每个条目中存储4kB缓存行数据和9比特TAG。换言之,虚拟地址高速缓存70是使用其虚拟地址来存储数据的虚拟标记的高速缓存。在该示例中,物理地址高速缓存80被配置为多路集相关(set associative)高速缓存,其在每个条目中存储4kB缓存行数据和16比特TAG。换言之,物理地址高速缓存80是使用其物理地址来存储数据的物理标记的高速缓存。将清楚的是,可以将虚拟地址高速缓存70和物理地址高速缓存80两者的大小和配置选择为适合于由本地处理器40和/或主机处理器50做出的数据请求的大小和/或由持久存储设备20A-20N返回的数据的大小。
在该示例中,主机处理器50经由总线57与文件映射单元60耦接,其中在所述总线上提供预存储的映射信息,这将在下文进行更详细地描述。
文件系统结构
图2示意地示出了存储在持久存储设备20A-20N中的文件的布置。示出针对三个文件的相对简单的示例;文件A、B和C存储在持久存储设备20A-20N的不同盘上。文件被存储为持久存储设备20A-20N中的块或簇。例如,文件A的第一块或簇A1被存储为开始于盘0上的物理地址41000(16进制)。下一块或簇A2被存储为开始于盘1上的物理地址64000。
根据已知技术,由持久存储设备20A-20N存储的文件的指示与形成这些文件的块或簇的开始位置一起被存储在持久存储设备20A-20N中的文件分配结构27中。在这些已知技术中,当处理器尝试访问存储在持久存储设备20A-20N中的数据时,处理器询问文件分配结构27以识别相关文件或文件块的物理地址,或者异常发生并且软件处理对文件分配结构27的询问,以识别要访问的相关文件或文件块或簇的物理地址。
示例操作
主机处理器50通常执行程序,并且该程序的一部分试图利用本地处理器40的高度线程化、高并行处理的属性,以对由持久存储设备20A-20N存储的一个或多个文件(通常非常大)执行数据处理。例如,由持久存储设备20A-20N存储的文件可以是非常大的数据库文件、音频或视频文件等。
在概述中,主机处理器50向本地处理器40提供要执行(通常以高度线程化方式执行)的程序,并且指定要在本地处理器40的处理期间访问的文件或文件部分。主机处理器50执行软件,以使用文件分配结构27确定持久存储设备20A-20N中的文件的簇或块的物理地址,所述文件的簇或块被主机处理器50识别为在由主机处理器50提供给本地处理器40的程序的执行期间需要被本地处理器40访问。主机处理器50还向在执行程序时要被本地处理器40利用的这些文件或文件部分分配虚拟存储器地址。主机处理器50向文件映射单元60提供该映射信息,该映射信息将虚拟地址与物理地址进行映射。
图3示出了所执行的主处理步骤,以便分配虚拟地址空间中的虚拟地址范围并且利用预存储的信息对文件映射单元进行编程,以使其能够将虚拟地址映射到物理地址。在步骤S10,通常主机处理器50(或者甚至是本地处理器40)识别持久存储设备20A-20N中的文件将需要被本地处理器40访问。这可以发生于本地处理器40执行程序之前或其期间。
在步骤S20,检查文件分配结构27,确定要访问的文件(或其部分或窗口)的物理地址,并且分配虚拟地址空间中的相应的虚拟地址范围。
在步骤S30,确定是否要设置附加功能参数以增强存储器单元用于在特定地址范围内进行存储器访问的性能。如果是,则提供对该附加功能的指示。
在步骤S40,通过预存储该信息来配置文件映射单元60,以使得在进行这种数据访问之前进行虚拟-物理地址转换。
考虑文件A,主机处理器50将从文件分配结构27中确定文件A包括九个块或簇A1-A9,每个块的块大小为4kB;其中簇A1开始于物理地址41000,块A2开始于64000,簇A3和A4开始于70000,簇A5-A8开始于10000,而簇A9开始于20000。因此,主机处理器50将虚拟地址空间内的从0000到8FFF的虚拟地址范围分配用于文件A,并且将存储将虚拟地址范围映射到物理地址范围的映射信息。
映射信息-查找表
在下面的表1中提供了该映射信息的一个可能实施例,其中虚拟地址和物理地址之间具有直接映射。
虚拟地址范围 物理地址范围
0000-0FFF 41000-41FFF
1000-1FFF 64000-64FFF
2000-3FFF 70000-71FFF
4000-7FFF 10000-13FFF
8000-8FFF 20000-20FFF
表1
由要被由本地处理器40执行的程序访问的持久存储设备20A-20N存储的其它文件可以具有按照相似方式分配的虚拟地址和存储的映射信息。将清楚的是,如果虚拟地址空间不足以包括所有文件,则这些文件的部分或窗口可以被分配虚拟地址,并且可以为文件的那些部分或窗口提供映射信息。
映射信息-地址位操纵
图4示出了备选布置,其中,主机处理器50对虚拟地址和物理地址两者一起进行编码,并且映射信息指示如何对虚拟地址的位进行重新排序和操纵以提取物理地址。例如,图3示出了对虚拟地址和物理地址两者进行编码的示例64比特地址。位0至37指示由文件映射单元使用的虚拟地址空间分配。位38至62指示物理地址的一部分,而位63指示该地址与存储在持久存储设备20A-20N中的数据有关。
从图4中可以看到,产生了访问请求,并且由于位63被设置,因此访问请求被发送给存储器单元10。文件映射单元60接收访问请求,并且位0至37被提取以指示访问请求的虚拟地址。位38至62被提取,并且与位0至11级联,以获得物理地址。在一个实施例中,本地处理器40操纵虚拟地址位38至62,从而级联的地址等于期望的物理地址。在另一实施例中,文件映射单元60或主机处理器50执行该操纵。
映射信息-混合方法
图5示出了一种混合方法,其中利用地址操纵和查找表使用两者来将虚拟地址映射到物理地址。在图5中示出的实施例中,可以期望能够在与持久存储设备20A上的物理地址相对应的虚拟地址和与持久存储设备20B上的物理地址相对应的虚拟地址之间进行区分。
提供了示例虚拟地址100 00000(16进制)以及相应的物理地址110 41000(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的信息。
在图5所示的实施例中,调整上述处理步骤S40,从而其不是针对文件A在虚拟地址空间中分配一个虚拟地址范围0000-8FFF,而是在虚拟地址空间中分配三个虚拟地址范围00000-00FFF、10000-12FFF和01000-05FFF(如表140中所示),每个虚拟地址范围对应于文件A的一部分或窗口。
文件映射单元操作
图6示出了存储器单元10响应于数据访问请求做出的示例操作。在该示例中,数据访问请求涉及由本地处理器40做出的针对持久存储设备20A-20N中的64字节数据的读请求。
在步骤S100,本地处理器40(或其存储器管理单元(未示出))识别该访问请求是针对与持久存储设备20A-20N相关联的虚拟地址。因此,通过总线45将访问请求传送到存储器单元10。
如果提供了虚拟地址高速缓存70,则处理进行到步骤S120,其中,确定针对虚拟地址的访问请求是否导致虚拟地址高速缓存70中的命中。如果发生命中,则在步骤S130,从适当的缓存行返回64字节数据。
如果在步骤S120确定发生缓存未命中,则虚拟地址高速缓存70尝试检索包含64字节数据的4kB缓存行。因此,在步骤S140,由文件映射单元60从虚拟地址高速缓存70或通过总线45接收包含虚拟地址的访问请求。根据上述技术,文件映射单元60使用映射信息将虚拟地址映射到物理地址。例如,根据上述示例,针对虚拟地址0040的访问请求将被映射到物理地址41040。
在步骤S150,确定文件或存储器地址范围是否具有与其相关联的附加功能(例如地址范围是否支持来自不同处理器的同时访问)。如果不存在相关联的附加功能,则处理进行到步骤S160。
如果提供了物理地址高速缓存80,则在步骤S160,确定针对指定的物理地址是否发生了高速缓存命中。如果发生了高速缓存命中,则在步骤S170,请求的64字节被返回给虚拟地址高速缓存70(虚拟地址高速缓存70进而对虚拟访问请求作出响应)或直接返回给总线45。
如果发生高速缓存未命中,则在步骤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上的传输时间)不同。
在一个实施例中,虚拟地址高速缓存70被划分为两个或更多区域,其中每个区域对应于一个或多个虚拟地址空间。每个区域的缓存行大小被设置为由针对该区域的预存储的大小信息所定义的大小。每个虚拟访问请求访问与预存储的大小信息和虚拟地址高速缓存70中的相应区域的缓存行大小两者相匹配的数据量。
将清楚的是,当本地处理器40是CVT处理器时,可以阻止调度正在等待所请求的数据的程序线程,但是可以调度其它线程,直到所请求的数据可用。
同时数据访问
如果做出了对相同数据的多个访问(通常来自本地处理器40和主机处理器50两者),则存储器单元10可以如下操作:
主机处理器读访问-本地处理器读访问
当主机处理器50和本地处理器40对相同数据执行读访问时,这些读访问中的每个由存储器单元10提供服务。
主机处理器读访问-本地处理器读/写访问
当主机处理器50对可被本地处理器40写入的数据执行读请求时,则每当本地处理器40改变已被提供给主机处理器50的数据时,就在每次改变数据时向主机处理器50提供修改报告。修改报告可以指示数据的修改值或者仅指示主机处理器50所存储的数据无效。备选地,存储器单元10可以允许本地处理器40修改已经被主机处理器50读取的数据,并且一旦本地处理器40的访问已经结束,就向主机处理器50发送修改报告,其中所述修改报告请求使由本地处理器40修改的且向主机处理器50提供的所有数据被无效化。在处理步骤S155触发这种修改报告的创建或修改。
主机处理器读/写-本地处理器读
当主机处理器50做出对提供给本地处理器40的数据的读/写访问时,可以不发生特殊处理。备选地,可以实施冻结功能,其中,提供修改缓冲器(未示出),其存储由主机处理器50写入的任何修改的数据,直到修改停止,之后对数据的累积修改被写出。
主机处理器读/写-本地处理器读/写
在主机处理器50和本地处理器40均对相同数据执行读和写操作的事件下,可以将修改比特设置为指示存储的数据已经被修改,从而其它处理器可以使已经被修改的数据无效化,或者阻止用过期的缓存数据(称为陈旧数据)覆写该修改后的数据。通常,在基于文件的系统中的预期行为是仅写入由主机处理器50修改的数据,而不会写入来自主机处理器的高速缓存的陈旧数据。因此,通常预期本地处理器40仅写入由本地处理器40修改的数据,而不写入来自本地处理器的高速缓存的陈旧数据。
如果分别设置了总线45和总线55的修改比特,则相应值将被写入。如果没有设置该修改比特,则相应值将不被写入。因此,本地处理器40仅写入其已经修改的数据值,并且主机处理器50仅写入其已经修改的数据值。
综上,如上所述,固态驱动器(SSD)通常使用单核或多核NAND闪存。虽然期望利用SSD作为主介质来执行对大量数据的处理(价格更便宜、有益于大容量的更多空间、功率有效性),当前并不可能实现这一点(由于访问时延(通常突发长度为4kB)以及由于耐用性程度)。此外,当对要求通常仅在基于文件的存储器中可用的大量存储的数据处理进行并行处理时或者在需要数据持久性的情况下(例如计算机重启或断电的事件下),期望能够以并行方式部分地访问文件,包括以不同偏移(从文件的开始处看到的点)对相同文件进行并行的同时访问。还期望每个线程能够选择性地且针对同时写入(同时写入文件的字节)修改数据,以符合标准化行为(写入可以以任意顺序发生,但是“陈旧数据”(过期缓存的数据)不应该损害文件)。然而,从文件系统进行获取处理对于处理功率非常严格,其通常包括当前执行线程的上下文开关,要求取得由操作系统设置的固定长度的完整数据突发(通常为4kB)以及附加软件操作,以确保上述标准化行为。
读和写访问时延的数量级差异以及自然突发长度的差异使得使用SSD作为计算机中的主存储器并不实际。一个变通方法在于:将文件映射到存储器,从而隐含地使用RAM来按块(所述块适合于SSD的自然突发长度)对SSD的内容进行缓存。该变通方法的缺点在于:其需要该缓存被实施在软件中,从而会严重地攫取CPU资源。
将文件映射到存储器中还需要在软件中采取以下附加步骤:注意到对虚拟存储器(其中映射了文件)的特定部分的访问已经失败(例如已经漏掉了4kB存储器页);在文件分配结构内查找文件的示例性4kB部分的物理位置(其取决于文件系统而不同);请求从存储设备到存储器的4kB读取;自由地修改该4kB页,并且在存储器中时具有单个字节粒度;将4kB页写回到文件系统;在一些文件系统中,其包括:再次查找物理位置,因为在某些文件系统中,当被再次重新写入时,文件的部分可能会改变位置;以及如果需要的化,调整文件分配结构。在一个实施例中,存储器单元10在步骤S155向主机存储器50报告文件的一部分已经被再次写入,从而主机处理器50可以提供到上述改变的位置的映射,并且根据需要调整文件分配结构。
与运行操作系统的主机处理器连接的CVT处理器(例如通用图形处理单元(GPU))通常将请求主机将文件映射到主机存储器空间中。如果设备能够访问主机存储器空间,则其仍然会在某种程度上触发上述存储器页未命中,使得主机执行上述步骤,从而可以在存储器中访问文件的部分,并且确保所述文件的部分在稍后被正确地修改并且存储回来。这还是非常低效的,因为其要求所有修改遍历主机-设备总线。
因此,如上所述,一些实施例提供多个闪速控制器(通常是能够与固态驱动器接口连接的控制器),所述闪速控制器连接到主机可编程的硬件实施的文件映射单元,所述文件映射单元能够操作为映射文件分配结构中的文件的子集,所述文件映射单元具有修改报告功能,能够操作为支持(可选地,同时支持)多个文件系统,所述文件映射单元连接到处理器(通常为CVT处理器),并且通常还连接到主机处理器(或者通过该处理器连接到该单元,或者直接连接到该单元),并且可选地连接到高速缓存,所述高速缓存可以位于处理器连接和文件映射单元之间或者位于文件映射单元和所述多个闪速控制器之间(或位于这两处),在高速缓存位于处理器连接和文件映射单元之间的情况下,可以从所映射的文件的子集中获益,这是因为这种机制减小了标签大小并减小了文件映射单元(虚拟地址高速缓存)上的负载。在实施例中,提供了一种在多个这种设备之间的互连。在实施例中,能够支持关于当向高速缓存写入某些东西时哪些比特已经被修改的修改掩码或写掩码(比特掩码)。在实施例中,缓存行长度是可配置的(可在通过预测在硬件中运行时配置,可在文件映射单元的主机编程期间针对每个文件配置)。在实施例中,与高速缓存相结合提供了一种文件映射单元的功能:缓冲在初始映射之后对文件的所有后续写入,从而有效地将文件冻结在其被映射时所处的状态(冻结缓冲)。在实施例中,所创建的修改报告向主机处理器报告由本地处理器对映射的文件的修改(包括写掩码),从而主机处理器可以更新其可能保持的所述文件的任何缓冲或使所述缓冲无效(这里也被称为赶出高速缓存)。
此外,一些实施例提供多个闪速控制器,所述多个闪速控制器连接到主机可编程文件映射单元,并且连接到处理器(通常为CVT处理器),且通常连接到可选地能够存储写掩码的高速缓存(优选地为可配置长度的高速缓存),并且通常提供(通过PCI高速)到主机系统的连接,并且通常提供某个附加高速缓存存储器(RAM)和某个处理器主存储器(RAM),以及可选地提供在不同芯片上、在不同电路板上或在不同计算机中的这些系统之间的连接。
在本地处理器上执行的、从被定义为基于文件的持久存储器中的文件或存储器地址进行的、在处理器的高速缓存中未命中的读取,将可选地在文件映射单元之前的高速缓存中发生命中。如果发生高速缓存未命中,则文件映射单元通过使用以下之一遍历预存储在文件映射单元中的主机编程的结构,来将其虚拟存储器地址解析为其在持久存储器中的物理地址(文件的该部分的位置):对地址中的比特的操纵(重新排序或编程修改);到排序的位置列表的折半查找;遍历二叉树;利用查找表处理地址或地址的一部分;查找哈希表等。
可选地,可能在文件映射单元之后,在高速缓存中发生命中。如果发生高速缓存未命中,则可以从一个或多个闪速控制器获取具有数据长度(该长度是运行时可配置的或可针对每个文件主机可编程配置的)的突发。
在高速缓存位于文件映射单元(虚拟地址高速缓存)之前的情况下,高速缓存不映射物理存储器空间,而是例如通过下述方式构造虚拟存储器空间:针对每个映射的文件将起始指针指派进该空间,并且随后将文件的每个字节的虚拟地址计算为起始指针+文件中的偏移(通常以字节为单位)。这还可以用于减少用于高速缓存的标签所需的存储器(当具有片上高速缓存的标签从而用于存储标签的存储器非常有限时,这是非常有价值的)。
尽管本文参照附图详细地公开了本发明的示意性实施例,但是应理解,本发明不限于精确的实施例,并且在不脱离由所附权利要求及其等同物限定的本发明的范围的情况下,本领域技术人员可以进行各种改变和修改。
在以下编号段落中阐述了本发明的方面和实施例。应理解,本发明包括这些方面。
段落1、一种存储器单元,包括:
至少一个控制器,能够操作为与至少一个相应的持久存储设备进行接口连接,所述持久存储设备能够操作为根据文件系统来存储文件;以及
文件映射单元,能够操作为,响应于来自处理逻辑的、具有虚拟地址空间内的与所述文件之一相关联的标识要访问的数据的虚拟地址的虚拟文件访问请求,使用预存储的映射信息将所述虚拟地址映射到所述文件之一内的所述数据的物理地址,并且发出具有所述物理地址的物理访问请求以访问所述文件之一中的所述数据。
段落2、根据段落1所述的存储器单元,其中所述映射信息针对所述文件的子集的至少一部分将虚拟地址与物理地址相关联,所述文件的子集是被指示为能够由操作为产生所述虚拟访问请求的程序所访问的文件。
段落3、根据段落1或2所述的存储器单元,其中,所述映射信息是在接收到所述虚拟访问请求之前预存储的。
段落4、根据前述任一段落所述的存储器单元,其中所述文件映射单元能够操作为通过以下方式将所述虚拟地址映射到所述物理地址:利用所述虚拟地址的选定的位,以根据映射函数产生所述物理地址。
段落5、根据前述任一段落所述的存储器单元,其中所述文件映射单元能够操作为,根据与虚拟映射空间相关联的预存储的大小信息,确定包括所述物理访问请求的所述数据在内的数据量。
段落6、根据前述任一段落所述的存储器单元,包括物理地址高速缓存,所述物理地址高速缓存能够操作为存储所述数据量,并且其中所述物理地址高速缓存的缓存行的大小超过所述数据量。
段落7、根据前述任一段落所述的存储器单元,其中当所述访问请求是读请求时,所述文件映射单元能够操作为响应于所述虚拟访问请求而提供由与所述物理访问请求相关联的所述物理地址所标识的所述数据。
段落8、根据前述任一段落所述的存储器单元,其中当所述访问请求是写请求时,所述文件映射单元能够操作为提供由与所述虚拟访问请求相关联的所述虚拟地址所标识的数据,其中所述虚拟地址被映射到与所述物理访问请求相关联的所述物理地址。
段落9、根据前述任一段落所述的存储器单元,其中,当所述访问请求是所述写请求时,所述文件映射单元能够操作为识别所述数据中的修改的数据。
段落10、根据前述任一段落所述的存储器单元,包括虚拟地址高速缓存,所述虚拟地址高速缓存能够操作为存储由所述文件映射单元提供的、重映射到与所述虚拟访问请求相关联的所述虚拟地址的所述数据。
段落11、根据前述任一段落所述的存储器单元,其中所述文件映射单元能够操作为:从主机处理器接收用以访问由与所述文件的子集的所述至少一部分相关联的地址所标识的数据的主机访问请求;以及确定与所述虚拟访问请求和所述主机访问请求相关联的访问类型。
段落12、根据段落11所述的存储器单元,其中所述文件映射单元能够操作为:当所述虚拟访问请求和所述主机访问请求都是读请求时,响应于所述虚拟访问请求和主机虚拟访问请求这两者而提供数据。
段落13、根据段落11或12所述的存储器单元,其中所述文件映射单元能够操作为:当所述主机访问请求是读请求而所述虚拟访问请求是读/写请求时,提供以下项中的至少一个:
向所述主机处理器表明已经响应于所述虚拟访问请求修改了数据的指示;
向所述主机处理器表明从其高速缓存移除已经响应于所述虚拟访问请求而修改的数据的指示;
向所述主机处理器表明已经响应于所述虚拟访问请求而被修改的数据的指示。
段落14、根据段落11至13中任一段所述的存储器单元,其中所述文件映射单元能够操作为:当所述主机访问请求是读请求、所述虚拟访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的所述文件的子集的至少一部分相关联时,提供以下项中的至少一个:
向所述主机处理器表明何时响应于所述虚拟访问请求修改了数据的指示;
向所述主机处理器表明当响应于所述虚拟访问请求被修改时的数据的指示;以及
向所述主机处理器表明当针对被识别为要求主机处理器数据一致性的所述文件的子集的所述至少一部分的所述虚拟访问请求已经停止时,响应于所述虚拟访问请求而修改的数据的指示。
段落15、根据段落11至14中任一段所述的存储器单元,包括修改缓冲器,其中所述文件映射单元能够操作为:当所述虚拟访问请求是针对所述文件的子集的至少一部分的读请求并且所述主机访问请求是读/写请求时,将响应于所述主机访问请求而修改的数据存储在所述修改缓冲器中,直到针对所述文件的子集的所述至少一部分的虚拟访问请求停止为止。
段落16、根据段落15所述的存储器单元,其中所述文件映射单元能够操作为:确定主机访问请求是否涉及由所述修改缓冲器存储的数据,如果是,则响应于所述主机访问请求而使用由所述修改缓冲器存储的所述数据。
段落17、根据段落15或16所述的存储器单元,其中所述修改缓冲器能够操作为:当针对所述文件的子集的所述至少一部分的所述虚拟访问请求已经停止时,写出由所述修改缓冲器存储的所述数据。
段落18、根据段落11至17中任一段所述的存储器单元,其中所述文件映射单元能够操作为:当所述主机访问请求是读/写请求并且所述虚拟访问请求是读/写请求时,将响应于所述主机访问请求和所述虚拟访问请求而修改的数据进行合并。
段落19、一种方法,包括:
响应于来自处理逻辑的、具有虚拟地址空间内的标识要访问的数据的与由持久存储设备根据文件系统所存储的文件相关联的虚拟地址的虚拟文件访问请求,使用预存储的映射信息将所述虚拟地址映射到所述文件之一内的所述数据的物理地址,并且发出具有所述物理地址的物理访问请求以访问所述文件之一中的所述数据。
段落20、一种计算机程序产品,操作为当在计算机上执行时,执行段落19所述的方法步骤。

Claims (19)

1.一种存储器单元,包括:
至少一个控制器,能够操作为与至少一个相应的持久存储设备进行接口连接,所述持久存储设备能够操作为根据文件系统来存储文件;以及
文件映射单元,能够操作为,响应于从处理逻辑接收的、具有虚拟地址空间内的标识要访问的数据的且与所述文件之一相关联的虚拟地址的虚拟文件访问请求:使用包括文件映射单元内预存储的映射函数在内的预存储的映射信息,通过根据映射函数用所述虚拟地址的选定的位与从所述虚拟地址的选定的位导出的至少一位进行级联来生成所述文件之一内的所述数据的物理地址,将所述虚拟地址映射到所述物理地址;以及,向所述持久存储设备发出物理访问请求,所述物理访问请求具有所述物理地址以访问所述文件之一中的所述数据。
2.根据权利要求1所述的存储器单元,其中所述映射信息针对所述文件的子集的至少一部分将虚拟地址与物理地址相关联,所述文件的子集是被指示为能够由操作为产生所述虚拟文件访问请求的程序所访问的文件。
3.根据权利要求1所述的存储器单元,其中,所述映射信息是在接收到所述虚拟文件访问请求之前预存储的。
4.根据权利要求1所述的存储器单元,其中所述文件映射单元能够操作为,根据与虚拟映射空间相关联的预存储的大小信息,确定包括所述物理访问请求的所述数据在内的数据量。
5.根据权利要求4所述的存储器单元,包括物理地址高速缓存,所述物理地址高速缓存能够操作为存储所述数据量,并且其中所述物理地址高速缓存的缓存行的大小超过所述数据量。
6.根据权利要求1所述的存储器单元,其中,当所述访问请求是读请求时,所述文件映射单元能够操作为响应于所述虚拟文件访问请求而提供由与所述物理访问请求相关联的所述物理地址所标识的所述数据。
7.根据权利要求1所述的存储器单元,其中当所述访问请求是写请求时,所述文件映射单元能够操作为提供由与所述虚拟文件访问请求相关联的所述虚拟地址所标识的数据,其中所述虚拟地址被映射到与所述物理访问请求相关联的所述物理地址。
8.根据权利要求1所述的存储器单元,其中,当所述访问请求是写请求时,所述文件映射单元能够操作为识别所述数据中的修改的数据。
9.根据权利要求1所述的存储器单元,包括虚拟地址高速缓存,所述虚拟地址高速缓存能够操作为存储由所述文件映射单元提供的、重映射到与所述虚拟文件访问请求相关联的所述虚拟地址的所述数据。
10.根据权利要求1所述的存储器单元,其中所述文件映射单元能够操作为:从主机处理器接收用以访问由与所述文件的子集的至少一部分相关联的地址所标识的数据的主机访问请求;以及确定与所述虚拟文件访问请求和所述主机访问请求相关联的访问类型。
11.根据权利要求10所述的存储器单元,其中所述文件映射单元能够操作为:当所述虚拟文件访问请求和所述主机访问请求都是读请求时,响应于所述虚拟文件访问请求和主机虚拟访问请求这两者而提供数据。
12.根据权利要求11所述的存储器单元,其中所述文件映射单元能够操作为:当所述主机访问请求是读请求而所述虚拟文件访问请求是读/写请求时,提供以下项中的至少一个:
向所述主机处理器表明已经响应于所述虚拟文件访问请求修改了数据的指示;
向所述主机处理器表明从其高速缓存移除已经响应于所述虚拟文件访问请求而修改的数据的指示;
向所述主机处理器表明已经响应于所述虚拟文件访问请求而被修改的数据的指示。
13.根据权利要求10所述的存储器单元,其中所述文件映射单元能够操作为:当所述主机访问请求是读请求、所述虚拟文件访问请求是读/写请求并且所述读/写请求与被识别为要求主机处理器数据一致性的所述文件的子集的至少一部分相关联时,提供以下项中的至少一个:
向所述主机处理器表明何时响应于所述虚拟文件访问请求修改了数据的指示;
向所述主机处理器表明当响应于所述虚拟文件访问请求被修改时的数据的指示;以及
向所述主机处理器表明当针对被识别为要求主机处理器数据一致性的所述文件的子集的所述至少一部分的所述虚拟文件访问请求已经停止时,响应于所述虚拟文件访问请求而修改的数据的指示。
14.根据权利要求10所述的存储器单元,包括修改缓冲器,其中所述文件映射单元能够操作为:当所述虚拟文件访问请求是针对所述文件的子集的至少一部分的读请求并且所述主机访问请求是读/写请求时,将响应于所述主机访问请求而修改的数据存储在所述修改缓冲器中,直到针对所述文件的子集的所述至少一部分的虚拟访问请求停止为止。
15.根据权利要求14所述的存储器单元,其中所述文件映射单元能够操作为:确定主机访问请求是否涉及由所述修改缓冲器存储的数据,如果是,则响应于所述主机访问请求而使用由所述修改缓冲器存储的所述数据。
16.根据权利要求14所述的存储器单元,其中所述修改缓冲器能够操作为:当针对所述文件的子集的所述至少一部分的所述虚拟文件访问请求已经停止时,写出由所述修改缓冲器存储的所述数据。
17.根据权利要求10所述的存储器单元,其中所述文件映射单元能够操作为:当所述主机访问请求是读/写请求并且所述虚拟文件访问请求是读/写请求时,将响应于所述主机访问请求和所述虚拟文件访问请求而修改的数据进行合并。
18.一种访问数据的方法,包括:
响应于从处理逻辑接收的、具有虚拟地址空间内的标识要访问的数据的且与由持久存储设备根据文件系统所存储的文件相关联的虚拟地址的虚拟文件访问请求:使用包括文件映射单元内预存储的映射函数在内的预存储的映射信息,通过根据映射函数用所述虚拟地址的选定的位与从所述虚拟地址的选定的位导出的至少一位进行级联来生成所述文件之一内的所述数据的物理地址,将所述虚拟地址映射到所述物理地址;以及,向所述持久存储设备发出物理访问请求,所述物理访问请求具有所述物理地址以访问所述文件之一中的所述数据。
19.一种计算机可读存储介质,包含计算机可读指令,所述指令在计算机上执行时,使得所述计算机实现根据权利要求18所述的方法。
CN201480072440.6A 2013-11-22 2014-11-19 存储器单元和方法 Active CN105917319B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/087,816 US9792221B2 (en) 2013-11-22 2013-11-22 System and method for improving performance of read/write operations from a persistent memory device
US14/087,816 2013-11-22
PCT/EP2014/075037 WO2015075076A1 (en) 2013-11-22 2014-11-19 Memory unit and method

Publications (2)

Publication Number Publication Date
CN105917319A CN105917319A (zh) 2016-08-31
CN105917319B true CN105917319B (zh) 2020-01-10

Family

ID=51945870

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480072440.6A Active CN105917319B (zh) 2013-11-22 2014-11-19 存储器单元和方法

Country Status (4)

Country Link
US (1) US9792221B2 (zh)
EP (1) EP3072052A1 (zh)
CN (1) CN105917319B (zh)
WO (1) WO2015075076A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9792221B2 (en) * 2013-11-22 2017-10-17 Swarm64 As System and method for improving performance of read/write operations from a persistent memory device
US9600179B2 (en) * 2014-07-30 2017-03-21 Arm Limited Access suppression in a memory device
US9489309B2 (en) * 2014-10-31 2016-11-08 Oracle International Corporation Method and system for dynamic cache partitioning using address remapping
US10318175B2 (en) * 2017-03-07 2019-06-11 Samsung Electronics Co., Ltd. SSD with heterogeneous NVM types
CN108694014A (zh) * 2017-04-06 2018-10-23 群晖科技股份有限公司 用来进行内存空间保留及管理的方法与装置
KR102456173B1 (ko) * 2017-10-27 2022-10-18 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20200104601A (ko) 2019-02-27 2020-09-04 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
CN108241516B (zh) * 2018-02-09 2021-06-18 深圳科立讯通信有限公司 嵌入式系统程序加载方法、装置、计算机设备和存储介质
GB2571539B (en) * 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
CN110392084B (zh) * 2018-04-20 2022-02-15 伊姆西Ip控股有限责任公司 在分布式系统中管理地址的方法、设备和计算机程序产品
US10725908B2 (en) * 2018-08-10 2020-07-28 Microsoft Technology Licensing, Llc. Fast initialization of complex in-memory data structures
KR20200106682A (ko) * 2019-03-05 2020-09-15 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작방법
US11249804B2 (en) 2019-10-07 2022-02-15 International Business Machines Corporation Affinity based optimization of virtual persistent memory volumes
CN111125019A (zh) * 2019-12-20 2020-05-08 北京无线电测量研究所 文件检索方法、写入方法、系统、fpga芯片及装置
CN111796882A (zh) * 2020-07-21 2020-10-20 北京联想软件有限公司 电子设备系统处理方法、装置及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3764996A (en) * 1971-12-23 1973-10-09 Ibm Storage control and address translation
US5708790A (en) * 1995-12-12 1998-01-13 International Business Machines Corporation Virtual memory mapping method and system for address translation mapping of logical memory partitions for BAT and TLB entries in a data processing system
US8407448B1 (en) * 2008-05-06 2013-03-26 Emc Corporation Shared storage I/O elimination through mapping client integration into a hypervisor
CN103064632A (zh) * 2012-12-04 2013-04-24 记忆科技(深圳)有限公司 固态硬盘及其虚拟化方法、系统
CN103324578A (zh) * 2013-06-20 2013-09-25 深圳市瑞耐斯技术有限公司 一种nand闪存设备及其随机写入方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4825412A (en) * 1988-04-01 1989-04-25 Digital Equipment Corporation Lockout registers
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US7085909B2 (en) * 2003-04-29 2006-08-01 International Business Machines Corporation Method, system and computer program product for implementing copy-on-write of a file
US8819357B2 (en) * 2011-07-12 2014-08-26 Vmware, Inc. Method and system for ensuring cache coherence of metadata in clustered file systems
US9158672B1 (en) * 2011-10-17 2015-10-13 Rambus Inc. Dynamic deterministic address translation for shuffled memory spaces
US20140281366A1 (en) * 2013-03-15 2014-09-18 Cognitive Electronics, Inc. Address translation in a system using memory striping
US9792221B2 (en) * 2013-11-22 2017-10-17 Swarm64 As System and method for improving performance of read/write operations from a persistent memory device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3764996A (en) * 1971-12-23 1973-10-09 Ibm Storage control and address translation
US5708790A (en) * 1995-12-12 1998-01-13 International Business Machines Corporation Virtual memory mapping method and system for address translation mapping of logical memory partitions for BAT and TLB entries in a data processing system
US8407448B1 (en) * 2008-05-06 2013-03-26 Emc Corporation Shared storage I/O elimination through mapping client integration into a hypervisor
CN103064632A (zh) * 2012-12-04 2013-04-24 记忆科技(深圳)有限公司 固态硬盘及其虚拟化方法、系统
CN103324578A (zh) * 2013-06-20 2013-09-25 深圳市瑞耐斯技术有限公司 一种nand闪存设备及其随机写入方法

Also Published As

Publication number Publication date
EP3072052A1 (en) 2016-09-28
US9792221B2 (en) 2017-10-17
CN105917319A (zh) 2016-08-31
WO2015075076A1 (en) 2015-05-28
US20150149742A1 (en) 2015-05-28

Similar Documents

Publication Publication Date Title
CN105917319B (zh) 存储器单元和方法
US10896128B2 (en) Partitioning shared caches
US8495301B1 (en) System and method for scatter gather cache processing
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
CN113508368A (zh) 用于存储器子系统中的单独的只读高速缓存和写入-读取高速缓存的未完成命令队列的使用
US6782453B2 (en) Storing data in memory
KR20170098187A (ko) 저장 서브시스템을 위한 연관적 및 원자적 라이트-백 캐싱 시스템 및 방법
US20110161597A1 (en) Combined Memory Including a Logical Partition in a Storage Memory Accessed Through an IO Controller
JP2008502069A (ja) メモリ・キャッシュ制御装置及びそのためのコヒーレンシ動作を実行する方法
CN109219804B (zh) 非易失内存访问方法、装置和系统
US6332179B1 (en) Allocation for back-to-back misses in a directory based cache
CN113711193A (zh) 用以存取存储器子系统中的高速缓存数据的队列中的优先级调度
US11126573B1 (en) Systems and methods for managing variable size load units
JP2020030822A (ja) インメモリコンピューティングのための大容量メモリシステム
US7702875B1 (en) System and method for memory compression
US9128856B2 (en) Selective cache fills in response to write misses
CN110851074A (zh) 嵌入式参考计数器和特殊数据模式自动检测
JPH08314802A (ja) キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法
EP0470736A1 (en) Cache memory system
US11436150B2 (en) Method for processing page fault by processor
CN113254363A (zh) 具有部分逻辑到物理地址转换表的非易失性存储控制器
CN107423232B (zh) Ftl快速访问方法与装置
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
US11847074B2 (en) Input/output device operational modes for a system with memory pools
EP4116829A1 (en) Systems and methods for managing variable size load units

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant