用于向贮存设备发送命令的系统和方法与流程

未命名 10-19 阅读:79 评论:0

用于向贮存设备发送命令的系统和方法
1.对相关申请的交叉引用
2.本技术要求于2022年3月21日提交的题为“cxl ssd for the next-gen data center infrastructure”的美国临时申请号63/322,221的优先权和权益,其全部内容通过引用并入本文。
技术领域
3.本公开总体上涉及用于向贮存设备(storage device)发送命令的系统和方法。


背景技术:

4.贮存设备可以代表在计算设备处执行的应用来存储数据。在执行期间,应用可以向贮存设备发出可以改变数据的一个或多个命令。
5.在该背景技术部分中公开的上述信息仅用于增强对本公开的背景技术的理解,因此其可以包含不构成现有技术的信息。


技术实现要素:

6.在各种实施例中,本文描述的包括与向贮存设备发送命令相关的系统、方法和装置。
7.一种方法包括在计算设备处存储与存储区域相关联的访问粒度准则。该方法进一步包括接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求。该方法还包括响应于存储操作请求满足访问粒度准则,基于存储操作请求从计算设备向贮存设备发送命令。
8.一种存储指令的计算机可读贮存设备,所述指令可由处理器执行以执行操作,所述操作包括在计算设备处存储与存储区域相关联的访问粒度准则。所述操作进一步包括接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求。所述操作还包括:响应于存储操作请求满足访问粒度准则,基于存储操作请求从计算设备向贮存设备发送命令。
9.一种系统包括贮存设备和计算设备。计算设备被配置为存储与贮存设备的存储区域相关联的访问粒度准则。计算设备还被配置为接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求。计算设备还被配置为响应于存储操作请求满足访问粒度准则,基于存储操作请求向贮存设备发送命令。
附图说明
10.当考虑到以下附图阅读本技术时,将更好地理解本技术的上述方面和其他方面,其中相同的附图标记表示相似或相同的元件:
11.图1是用于向贮存设备发送命令的系统的图。
12.图2是用于向贮存设备发送命令的系统的另一图。
13.图3是用于向贮存设备发送命令的系统的另一图。
14.图4是用于向贮存设备发送命令的系统的另一图。
15.图5是用于向贮存设备发送命令的另一系统的图。
16.图6是用于向贮存设备发送命令的另一系统的图。
17.图7是用于向贮存设备发送命令的方法的流程图。
18.图8是用于向贮存设备发送命令的另一方法的流程图
19.图9是用于刷新高速缓存的方法的流程图。
20.图10是包括计算机可读贮存设备的计算设备的图,该计算机可读贮存设备具有可执行以向贮存设备发送命令的指令
21.虽然本技术易于进行各种修改和替代形式,但是其具体实施例在附图中以示例的方式示出并且将在本文中进行描述。附图可能未按比例绘制。然而,应当理解,附图及其详细描述并不旨在将本技术限制于所公开的特定形式,而是相反,本发明旨在覆盖落入由所附权利要求限定的本技术的精神和范围内的所有修改、等同物和替代物。
具体实施方式
22.在附图和下面的描述中阐述了本文描述的主题的一个或多个实施例的细节。根据说明书、附图和权利要求,主题的其他特征、方面和优点将变得显而易见。
23.现在将在下文中参考附图更全面地描述本公开的各种实施例,在附图中示出了一些但不是所有实施例。实际上,本公开可以以许多不同的形式实施,并且不应被解释为限于本文阐述的实施例;相反,提供这些实施例使得本公开将满足适用的法律要求。除非另有说明,否则术语“或”在本文中以替代和连接意义使用。术语“说明性”和“示例”用于作为没有质量水平指示的示例。相同的附图标记始终指代相同的元件。每个附图中的箭头描绘了双向数据流和/或双向数据流能力。术语“路径”、“途径”和“路线”在本文中可互换使用。
24.本公开的实施例可以以各种方式实现,包括作为包含制品的计算机程序产品。计算机程序产品可以包括存储应用、程序、程序组件、脚本、源代码、程序代码、目标代码、字节代码、编译代码、解释代码、机器代码、可执行指令等(在本文中也称为可执行指令、用于执行的指令、计算机程序产品、程序代码和/或本文可互换使用的类似术语)的非暂时性计算机可读存储介质。这种非暂时性计算机可读存储介质包括所有计算机可读介质(包括易失性和非易失性介质)。
25.在一个实施例中,非易失性计算机可读存储介质可以包括软盘、柔性盘、硬盘、固态存储器(sss)(例如固态驱动器(ssd))、固态卡(ssc)、固态组件(ssm)、企业闪存驱动器、磁带或任何其他非暂时性磁介质等。非易失性计算机可读存储介质也可以包括穿孔卡、纸带、光学标记片(或具有孔图案或其他光学可识别标记的任何其他物理介质)、光盘只读存储器(cd-rom)、可重写光盘(cd-rw)、数字通用光盘(dvd)、蓝光光盘(bd)、任何其他非暂时性光学介质等。这样的非易失性计算机可读存储介质还可以包括只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存(例如串行、nand、nor等)、多媒体存储卡(mmc)、安全数字(sd)存储卡、智能媒体卡、compactflash(cf)卡、记忆棒等。此外,非易失性计算机可读存储介质还可以包括导电桥接随机访问存储器(cbram)、相变随机访问存储器(pram)、铁电随机访问存储器(feram)、非易失性随机访问存储器(nvram)、磁阻随机访问存储器(mram)、电阻随机访问存
储器(rram)、硅-氧化物-氮化物-氧化物-硅存储器(sonos)、浮接栅极随机访问存储器(fjgram)、千足虫存储器、赛道存储器等。
26.在一个实施例中,易失性计算机可读存储介质可以包括随机访问存储器(ram)、动态随机访问存储器(dram)、静态随机访问存储器(sram)、快速页面模式动态随机访问存储器(fpm dram)、扩展数据输出动态随机访问存储器(edo dram)、同步动态随机访问存储器(sdram)、双倍数据速率同步动态随机访问存储器(ddr sdram)、双倍数据速率二型同步动态随机访问存储器(ddr2 sdram)、双倍数据速率三型同步动态随机访问存储器(ddr3sdram)、rambus动态随机访问存储器(rdram)、双晶体管ram(ttram)、晶闸管ram(t-ram)、零电容器(z-ram)、rambus直插式存储器组件(rimm)、双列直插式存储器组件(dimm)、单列直插式存储器组件(simm)、视频随机访问存储器(vram)、高速缓冲存储器(包括各种级别)、闪存、寄存器存储器等。应当理解,在实施例被描述为使用计算机可读存储介质的情况下,其他类型的计算机可读存储介质可以代替上述计算机可读存储介质或除了上述计算机可读存储介质之外使用。
27.应当理解,本公开的各种实施例也可以被实现为方法、装置、系统、计算设备、计算实体等。这样,本公开的实施例可以采取执行存储在计算机可读存储介质上的指令以执行某些步骤或操作的装置、系统、计算设备、计算实体等的形式。因此,本公开的实施例还可以采取完全硬件实施例、完全计算机程序产品实施例和/或包括执行某些步骤或操作的计算机程序产品和硬件的组合的实施例的形式。
28.下面参考框图和流程图说明本公开的实施例。因此,应当理解,框图和流程图图示的每个框可以以计算机程序产品、完全硬件实施例、硬件和计算机程序产品的组合、和/或在计算机可读存储介质上执行指令、操作、步骤和可互换使用的类似词语(例如,可执行指令、用于执行的指令、程序代码等)的装置、系统、计算设备、计算实体等的形式实现。例如,可以顺序地执行代码的检索、加载和执行,使得一次检索、加载和执行一个指令。在一些示例实施例中,可以并行执行检索、加载和/或执行,使得多个指令被一起检索、加载和/或执行。因此,这样的实施例可以产生执行框图和流程图图示中指定的步骤或操作的专门配置的机器。因此,框图和流程图图示支持用于执行指定指令、操作或步骤的实施例的各种组合。
29.公开了用于向贮存设备发送命令的系统和方法。这些系统和方法可以基于访问粒度选择性地将所请求的命令发送到贮存设备,以便维持存储在贮存设备处的数据的一致视图。
30.贮存设备可以支持不同粒度的访问。例如,贮存设备可以支持块级(例如,4千字节(kb)、512字节(b)等)和字节级访问。贮存设备可以支持其他粒度,并且可以支持两个以上的粒度。以不同粒度访问存储区域可能导致损坏的数据。例如,不同粒度的访问路径可以具有不同的高速缓存系统。因此,如果一个访问路径已经高速缓存了特定存储地址,则使用另一个粒度访问更改该存储地址可能导致一致性问题。本公开提供用于基于访问的粒度(或相关联的因素,诸如与粒度相关联的访问路径)来控制存储器访问的系统和方法。因此,所公开的系统和方法可以提供以各种粒度对贮存设备的一致访问。
31.参考图1,示出了用于向贮存设备发送命令的系统100。系统100可以支持存储命令的多于一个的访问粒度。系统100包括计算设备102和贮存设备(storage device)108。计算
设备102包括处理器104和存储设备(memory device)106。
32.处理器104包括中央处理器单元(cpu)、图形处理器单元(gpu)、现场可编程门阵列(fpga)、专用集成电路(asic)、另一种类型的处理器或其任何组合。处理器104可以用复杂指令集计算机(cisc)架构、精简指令集计算机(risc)架构、另一种类型的计算机架构或其任何组合来实现。
33.存储设备106包括易失性存储器、非易失性存储器、另一类型的存储器或其任何组合。易失性存储器的示例包括动态随机访问存储器(dram)、静态随机访问存储器(sram)、电阻式随机访问存储器(reram)等。非易失性存储器的示例包括只读存储器(rom)、可编程只读存储器(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、闪存、硬盘驱动器等。
34.计算设备102可以对应于个人计算机、移动电话设备、服务器计算机、另一类型的计算机或其任何组合。贮存设备108包括易失性存储器、非易失性存储器、另一类型的存储器或其任何组合。在一些实施方式中,贮存设备108是计算设备102的组件。
35.计算设备102直接或间接地连接到贮存设备108。间接连接是指包括中间设备的连接,而直接连接是指不包括中间设备的连接。连接可以是无线的或有线的。如本文将进一步讨论的,在特定示例中,计算设备102通过外围部件互连快速(pcie)链路(或其他链路)使用计算快速链路(cxl)协议(或另一高速缓存一致协议)与贮存设备108通信。
36.存储设备106存储与存储区域相关联的访问粒度准则116。访问粒度准则116可以是存储区域与第一访问粒度(例如,4kb、64b等)之间的关联。访问粒度准则116可以由处理器104执行的应用、由处理器104执行的操作系统、由处理器104执行的其他软件或由另一个源放置在存储设备106中。存储区域可以对应于贮存设备108的物理存储空间(例如,地址范围)或者对应于可以被转换为贮存设备108的地址的虚拟化地址空间。在一些示例中,存储区域对应于文件或文件的区。访问粒度准则116可以在存储区域和第一访问粒度之间,或者可以在存储区域和与第一访问粒度相关的属性之间是明确的。例如,访问粒度准则116可以在存储区域和与第一访问粒度相关的访问路径、协议等之间。在特定示例中,访问粒度准则116与指示要使用第一粒度(或对应属性,诸如访问路径、协议等)排他地访问存储区域的锁定对应。在另一示例中,存储区域可以包括贮存设备108的物理地址范围,其可以被映射到由计算设备102使用的多于一个虚拟存储地址。多于一个虚拟存储地址中的每个虚拟存储地址可以由计算设备102用来以不同的粒度访问物理地址范围。存储区域与第一访问粒度之间的访问粒度准则116可以与对多于一个虚拟存储地址中的一个或多个虚拟存储地址的锁定对应。
37.在操作中,处理器104接收存储操作请求110(例如,读取命令、写入命令或另一类型的存储访问命令)。在一些示例中,可以从在处理器104处执行的应用接收存储操作请求110。存储操作请求110指示存储区域的第一部分。基于(例如,响应于)存储操作请求110,处理器104可以确定存储操作请求110满足(例如,具有被指示为针对存储区域所准许的访问粒度、与被准许访问存储区域的访问协议相关联、以与存储区域相关联且被解锁的虚拟存储地址为目标、以未锁定的虚拟存储地址为目标等)访问粒度准则116。基于存储操作请求110满足访问粒度准则116,处理器104可以向贮存设备发出基于存储操作请求110的命令114。命令114可以简单地是存储操作请求110,或者可以对应于存储操作请求110的转换。命令114对应于以第一粒度以存储区域的第一部分为目标的存储操作(例如,读取、写入等)。
因此,满足所存储的访问粒度准则116的命令可以由处理器104传递到贮存设备108。
38.在特定示例中,存储操作请求110指示要通过cxl.io使用非易失性存储器快速(nvme)协议来访问存储区域(例如,根据该协议的访问可以与4kb粒度相关联)。访问粒度准则116可以对应与指示存储区域(例如,贮存设备108上的物理地址的范围)被锁定到nvme协议(例如,4kb粒度)访问的锁定。处理器104可以确认访问粒度准则116被存储操作请求110的第一访问粒度(例如,存储操作请求110的nvme协议命令类型)满足,并且基于该确定,向贮存设备108发出命令114。在该示例中,命令114可以对应于nvme命令。
39.在另一示例中,访问粒度准则116可以指示由加载/存储访问路径(例如,cxl.mem路径)用来以64b粒度访问贮存设备的物理地址范围的虚拟存储地址范围被解锁。存储操作请求110可以以解锁的虚拟存储地址范围中的虚拟存储地址为目标。因此,处理器104可以将命令114传递到贮存设备108。命令114可以包括虚拟存储地址或虚拟存储地址的转换。可替代地,访问粒度准则116可以不包括关于由加载/存储访问路径利用的虚拟存储地址范围的信息(例如,可以不包括针对该范围的锁定)。在这种情况下,处理器104也可以考虑虚拟存储地址以满足访问粒度准则。
40.基于所请求的访问粒度(或相关联的属性,诸如访问路径/协议/等)来控制对贮存设备108的访问可以提供用于以不同粒度对贮存设备108进行一致访问的机制。
41.图2示出系统100基于访问粒度拒绝存储操作请求的示例。在操作中,处理器104接收第二存储操作请求210(例如,读取命令、写入命令或另一类型的存储器访问命令)。在一些示例中,可以从在处理器104处执行的应用接收第二存储操作请求210。第二存储操作请求210指示存储区域的第二部分。基于(例如,响应于)第二存储操作请求210,处理器104可以确定第二存储操作请求210的第二访问粒度未能满足访问粒度准则116(例如,具有与被准许访问存储区域的访问粒度不同的访问粒度、与不被准许访问存储区域的协议或访问路径相关联、以与存储区域相关联但被锁定的虚拟地址为目标等等)。基于第二存储操作请求210未能满足访问粒度准则116,处理器104可以发出拒绝指示214(例如,向生成第二存储操作请求210的应用)。因此,不满足所存储的访问粒度准则116的请求可以被处理器104拒绝。
42.在特定实例中,第二存储操作请求210指示将经由cxl.mem使用加载或存储操作来访问存储区域(例如,根据此协议的访问可以与64b粒度相关联)。访问粒度准则116可以与指示存储区域(例如,贮存设备108上的物理地址的范围)被锁定到nvme协议(例如,4kb粒度)访问的锁定对应。处理器104可以确认访问粒度准则116没有被第二存储操作请求210(例如,第二存储操作请求210的加载/存储命令类型)满足,并且基于该确定,发出拒绝指示214。
43.在另一示例中,访问粒度准则116可以指示由nvme访问路径用来以块粒度访问贮存设备的物理地址范围的虚拟存储地址范围被锁定。第二存储操作请求210可能以锁定的虚拟存储地址范围中的虚拟存储地址为目标。因此,处理器104可以发出拒绝214。
44.基于所请求的访问粒度(或相关联的属性,诸如访问路径、协议、目标虚拟地址等)拒绝对贮存设备108中的存储器位置的访问可以防止具有不同高速缓存系统的不同访问路径对存储器位置的访问。因此,可以维持存储在贮存设备108中的数据的一致性。
45.图3示出系统100更新访问粒度准则的示例。在操作中,处理器104接收更新与存储区域相关联的访问粒度准则的请求310。例如,请求310可以指示新的准许的访问粒度、新的
不准许的访问粒度、新的准许的访问路径或协议(例如,与特定访问粒度相关联)、新的不准许的访问路径或协议、新的解锁虚拟地址(与特定访问粒度相关联)、新的锁定虚拟地址或其组合。可以从在处理器104处执行的应用或操作系统接收请求310。处理器104将更新的访问粒度准则316存储在存储设备306中。更新的访问粒度准则316与存储区域相关联。
46.图4图示系统100可以基于更新的访问粒度准则316向贮存设备108发送命令。在所图示的示例中,计算设备102接收第二存储操作请求210。基于第二存储操作请求210满足更新的访问粒度准则316,处理器104向贮存设备发出第二命令414。由处理器104确定第二存储操作请求210满足更新的访问粒度准则316可以遵循与关于图1描述的由处理器104确定存储操作请求110满足访问粒度准则116相同的过程。
47.因此,系统100可以在针对贮存设备108中的特定存储区域的所支持的访问粒度之间切换。在一些实施方式中,一旦系统100将特定存储区域锁定到特定访问粒度,其他粒度的存储器访问请求就不被允许,直到去除锁定为止(例如,通过在处理器104处执行的应用)。
48.图1-图4的系统100可以包括除了所示的那些之外的各种部件。例如,计算设备102可以包括附加的处理器、通信接口、存储设备、输出设备等。此外,贮存设备108可以包括处理器、存储介质、通信接口等。
49.参考图5,示出了基于访问粒度来控制发送到cxl存储设备的命令的系统500。系统500可以对应于上述系统100。系统500包括计算设备502和cxl贮存设备。
50.计算设备602执行应用604和操作系统606。计算设备602可以对应于图1的计算设备102。计算设备602可以包括个人计算机、移动设备(诸如智能电话设备)、服务器计算机或其他类型的计算设备。计算设备502(例如,在诸如处理器104的处理器处)执行应用504和操作系统506。应用504可以对应于访问存储器的任何计算应用。在一些实施方式中,应用504包括深度学习推荐模型(dlrm)应用。dlrm应用可以访问相对大量的数据(例如,太字节)。因此,以第一相对大的粒度(例如,512b或4kb块)进行的数据访问可以是有效的。然而,dlrm应用的一些功能可能依赖于相对少量的数据。使用第一访问粒度访问相对少量的数据可能导致dlrm应用将用于一些功能的更多数据的移动。因此,对于一些功能,以第二相对更小粒度(例如,64b)进行的数据访问可能更有效。
51.操作系统506管理应用504可访问的存储空间。管理存储空间可以包括在由应用504使用的虚拟地址与由cxl贮存设备510识别的地址(例如,物理地址或另外的虚拟地址)之间进行转换。在一些实施方式中,操作系统506通过第一协议(例如,cxl.io)向cxl贮存设备510发送第一访问粒度的命令(例如,nvme命令),并且通过第二协议(例如,cxl.mem)发送第二访问粒度的命令(例如,存储器加载/存储命令)。管理存储空间还可以包括在存储器的部分(例如,存储器范围、对象(诸如文件)等)上放置锁(例如,访问准则)。在一些情况下,锁可以限制对存储器的一部分的所有访问,限制对特定访问粒度的访问,限制对特定访问协议(例如,nvme、加载/存储、cxl.mem、cxl.io等)的访问,限制对另一准则的访问,或其组合。
52.计算设备包括pcie连接器508。pcie连接器508可包括u.2连接器、m.2连接器、或另一类型的连接器。
53.cxl贮存设备510包括pcie连接器512、fpga 526和pcie存储设备518。pcie贮存设备518可以包括被配置为通过pcie操作的固态驱动器、硬盘驱动器、其他贮存设备或其组
合。cxl贮存设备510被配置成以多于一个访问粒度通过pcie连接器512提供对pcie贮存设备518的访问。pcie连接器512可以包括u.2连接器、m.2连接器或另一类型的连接器。
54.fpga526包括cxl端点(ep)知识产权(ip)块522。cxl ep ip块522被配置成用于管理在计算设备502与cxl贮存设备510之间交换的cxl协议消息。
55.fpga526还包括高速缓存516。高速缓存516可以包括dram、sram、另一种类型的存储器或其组合。高速缓存516被配置为以第一粒度(例如,512b或4kb块)高速缓存从pcie贮存设备518取回的数据,以便以第二粒度(例如,64b粒度)提供访问。高速缓存516还可以被配置为存储要以第二粒度写入pcie贮存设备518的数据。该数据最终可以以第一粒度被写入pcie贮存设备518。
56.fpga 526还包括nvme请求生成器ip块514。nvme请求生成器ip块514被配置为基于来自cxl ep ip块522的信号生成nvme请求。这些nvme请求被发送到pcie贮存设备518。例如,cxl ep ip块522可以指令nvme请求生成器ip块514响应于高速缓存516处的高速缓存未命中而生成对数据块的nvme请求。
57.fpga 526还包括cxl到pci ip块520。cxl到pci ip块520被配置为基于来自cxl ep ip块522的信号将通过cxl.io接收的消息(例如,通过cxl的nvme消息)转换为pcie消息(例如,通过pcie的nvme消息)。例如,cxl到pci ip块520可以从cxl.io消息中提取nvme读取请求,并将nvme读取请求封装在pcie消息中以传输到pcie贮存设备518。
58.fpga 526还包括pcie ip块524。pcie ip块524被配置为与pcie贮存设备518交换pcie消息。在一些示例中,pcie ip块包括u.2连接器、m.2连接器或另一类型的pcie连接器。
59.在第一示例操作中,应用504向操作系统506发送以虚拟地址为目标的写入命令。操作系统506将虚拟地址转换为与cxl贮存设备510相关联的转换地址,生成以转换地址为目标的nvme命令,并且使用cxl.io协议通过pcie连接器508将nvme命令发送到cxl贮存设备510。cxl贮存设备510在pcie连接器512处接收nvme命令。cxl ep ip块522将通过cxl.io的nvme消息转发到cxl到pci ip块520。cxl到pci ip块520将通过cxl.io的nvme消息转换为通过pcie的nvme消息,并将其发送到pcie ip块524以传输到pcie贮存设备518。基于nvme命令,pcie贮存设备518以第一粒度(例如,512b或4kb块)将数据写入pcie贮存设备。
60.在第二示例操作中,应用504向操作系统506发送以虚拟地址为目标的读取命令。操作系统506将虚拟地址转换为与cxl贮存设备510相关联的转换地址,生成以转换地址为目标的nvme命令,并且使用cxl.io协议通过pcie连接器508将nvme命令发送到cxl贮存设备510。cxl贮存设备510在pcie连接器512处接收nvme命令。cxl ep ip块522将通过cxl.io的nvme消息转发到cxl到pci ip块520。cxl到pci ip块520将通过cxl.io的nvme消息转换为通过pcie的nvme消息,并将其发送到pcie ip块524以传输到pcie贮存设备518。基于nvme命令,pcie贮存设备518以第一粒度向计算设备502返回数据。
61.在第三示例操作中,应用504向操作系统506发送以虚拟地址为目标的存储命令。操作系统506将虚拟地址转换为与cxl贮存设备510相关联的转换地址,生成以转换地址为目标的存储器存储命令,并且使用cxl.mem协议通过pcie连接器508将存储器存储命令发送到cxl贮存设备510。cxl贮存设备510在pcie连接器512处接收存储器存储命令。cxl ep ip块522确定转换地址是否被高速缓存在高速缓存516中。响应于高速缓存516高速缓存转换地址,cxl ep ip块522被配置成以第二访问粒度(例如,64b)覆写关于转换地址的高速缓存
条目。响应于针对转换地址的高速缓存未命中,cxl ep ip块522被配置成在新条目中将数据存储在高速缓存516中。cxl ep ip块522被配置为触发对nvme请求生成器ip块514的写入,以生成用于根据高速缓存驱逐策略以第一粒度向pcie贮存设备518写入数据的nvme请求。pcie ip块518将nvme请求传送到pcie贮存设备518,并且pcie贮存设备518以第一粒度将数据写入pcie贮存设备518的存储介质。
62.在第四示例操作中,应用504向操作系统506发送以虚拟地址为目标的加载命令。操作系统506将虚拟地址转换为与cxl贮存设备510相关联的转换地址,生成以转换地址为目标的存储器加载命令,并且使用cxl.mem协议通过pcie连接器508将存储器加载命令发送到cxl贮存设备510。cxl贮存设备510在pcie连接器512处接收存储器加载命令。cxl ep ip块522确定转换地址是否被高速缓存在高速缓存516中。响应于高速缓存516高速缓存转换地址,cxl ep ip块522被配置成用于以第二访问粒度(例如,64b)向计算设备502返回关于转换地址的高速缓存条目。响应于转换地址的高速缓存未命中,cxl ep ip块522被配置为触发nvme请求生成器ip块514生成nvme请求,以便以第一粒度从pcie贮存设备518请求转换地址处的数据。pcie ip块518将nvme请求传送到pcie贮存设备518,并且pcie贮存设备518以第一粒度将数据返回到fpga 526以存储在高速缓存516中。然后,cxl ep ip块522以第二粒度向计算设备502返回高速缓存516的条目。
63.因此,尽管底层贮存设备支持一个访问粒度,但是cxl贮存设备510通过实现第一访问路径(例如,cxl.io)和第二访问路径(例如,cxl.mem)来支持多于一个访问粒度的访问,第一访问路径以pcie贮存设备518的本原访问粒度操作,并且第二访问路径利用高速缓存以第一访问粒度高速缓存来自底层贮存设备的数据,使得可以以其中更少的事务被发送到底层贮存设备的第二访问粒度访问和操纵数据。由于在每个访问路径中使用不同的高速缓存结构,因此如果pcie贮存设备518的特定物理地址要同时通过两个路径被访问,则计算设备502可能接收存储在pcie贮存设备518中的数据的冲突视图。为了防止存储在pcie贮存设备518处的数据的不一致视图,计算设备502基于访问粒度准则来管理对cxl贮存设备510的访问,如本文所述。
64.应当注意,系统500是出于说明的目的而提供的,并且可以用以变化的访问粒度提供对贮存设备的访问的其他系统来修改或替换。例如,计算设备502和cxl贮存设备510可以通过除pcie之外的协议(诸如以太网)进行通信。作为另一示例,cxl贮存设备510可以用支持其他多协议访问的贮存设备代替。因此,计算设备502可以通过除了cxl.io和cxl.mem之外的协议发送访问请求。作为另一示例,fpga526可以由asic、中央处理器单元或其他类型的处理器代替。在一些实现方式中,fpga526的功能由pcie贮存设备518的控制器(asic或其他处理设备)来实现。因此,计算设备502可以通过pcie连接与pcie贮存设备518直接通信。在一些实现方式中,pcie贮存设备518可以用另一类型的贮存设备替换,诸如串行ata(sata)、通用串行总线、串行附接scsi(sas)或其他类型的贮存设备。此外,贮存设备可以根据除nvme之外的协议进行操作。与本文所示出和描述的其他图一样,在示例中可以包括除了所示出的那些组件之外的附加组件。
65.图6是示出用于向贮存设备发送命令的系统600中的存储地址空间的抽象概念的图。在一些示例中,系统600对应于系统100或系统500。系统600包括计算设备602,诸如计算设备102或计算设备502。计算设备602执行应用604和操作系统606。应用604访问由操作系
统606管理的一个或多个存储空间。应用604可以对应于应用504,并且操作系统606可以对应于操作系统506。
66.系统600还包括存储设备646和贮存设备648。由操作系统606管理的存储空间可以对应于存储设备646中、贮存设备648中或其组合中的物理存储空间。存储设备646可以包括易失性存储设备,诸如dram、sram等。贮存设备648可以包括非易失性存储器,诸如固态驱动器、硬盘驱动器、另一类型的非易失性存储器或其组合。贮存设备648也可以包括易失性存储器。在一些示例中,存储设备646、存储设备648或其组合对应于cxl贮存设备510的组件。贮存设备648可以对应于pcie贮存设备518。
67.操作系统606向应用604提供用于第一访问粒度存储操作的文件系统610空间。此外,操作系统606向应用604提供虚拟存储地址范围616以用于第二访问粒度存储操作。
68.操作系统606被配置为将虚拟存储器608映射到包括第一部分622和第二部分624的存储池(memory pool)。例如,操作系统606可以从应用604接收存储器访问请求(例如,加载或存储操作)。存储器访问请求可以标识虚拟存储器608中的虚拟地址。操作系统606然后可以将虚拟地址转换成储存器池中的转换地址且将包含转换地址的命令输出到贮存设备648(例如,cxl贮存设备510或贮存设备108)。
69.此外,操作系统606被配置为将文件系统610映射到贮存池(storage pool)636。例如,操作系统606可以从应用604接收存储器访问请求(例如,读取或写入请求)。存储器访问请求可以标识文件系统610中的虚拟地址或对象。操作系统606然后可以将虚拟地址或地址转换成贮存池636中的转换地址且将包含转换地址的命令输出到贮存设备648(例如,cxl贮存设备510或贮存设备108)。
70.操作系统606被配置为将关于存储池的第一部分622的存储器访问发送到存储设备646,并且将关于存储池的第二部分624的存储器访问发送到贮存设备648。贮存设备648被配置为将存储池的第二部分624映射到贮存设备648中的物理地址。贮存设备648还被配置为将贮存池636映射到贮存设备648中的物理地址。因此,贮存设备648中的物理地址可以由通过文件系统610的第一路径和通过虚拟存储器608的第二路径两者访问。应用604可以向文件系统610发出第一粒度的存储器访问请求,并且向虚拟存储器608发出第二粒度的存储器访问请求。
71.在操作中,应用604可以发出将文件620写入文件系统610的命令。然后,操作系统606可以发出命令(例如,nvme命令)以将文件在第一贮存池位置638、第二贮存池位置640、第三贮存池位置642和第四贮存池位置644处写入贮存池636。贮存设备648可以将贮存池位置638、640、642、644转换为贮存设备648中的物理地址,并将文件写入物理地址。
72.应用604还可以向操作系统606发出存储器映射命令621,以将文件系统610中的文件映射到虚拟存储地址范围616处的虚拟存储器608。基于存储器映射命令621,操作系统606将文件放置在虚拟存储器608中的文件映射的虚拟存储地址范围616处,并且指示贮存设备648将文件620放置到存储池的第二部分624中的第一位置628、第二位置630、第三位置632和第四位置634处。贮存设备648可以将贮存设备648中的文件620的物理地址映射到存储池的第二部分624中的位置628、630、632、634,而不是移动贮存设备648中的数据。为了防止文件620的不一致视图,操作系统606可以对文件系统610中与文件620相对应的虚拟地址放置锁。因为通过虚拟存储器608和文件系统610的存储器访问使用不同的访问粒度,所以
锁可以被认为是访问粒度准则。基于该锁,操作系统606可以拒绝针对文件系统610中的文件620的存储器访问请求。因此,系统600可以通过采用对存储器访问的基于访问粒度的控制来提供文件620的一致视图。
73.在一些实现方式中,操作系统606可以响应于存储器映射命令621且在没有中间命令的情况下创建位置628、630、632、634与贮存设备648中的物理地址范围之间的映射。在其他实现方式中,当从应用604接收到关于文件620的对应部分的存储器访问命令时,操作系统606可以创建位置628、630、632、634之间的映射。例如,响应于来自应用604的对地址范围616中的虚拟存储地址的访问请求,操作系统606可以将文件620的第一部分添加到第一位置628。等待将文件620的部分添加到存储池可以减少与创建和维护存储池和贮存设备648之间的映射(例如,页表)相关联的开销。
74.操作系统606可以基于来自应用604的命令来释放锁。在一些实施方式中,释放文件系统610中的文件620上的锁可以包括将锁放置在虚拟存储地址范围616上。释放锁还可以包括操作系统606向贮存设备648(例如,cxl贮存设备510或贮存设备108)发出命令以将与虚拟存储地址范围616相关联的高速缓存条目冲刷(例如,驱逐)到贮存设备648。例如,操作系统506可以向cxl ep ip块522发出命令,以将高速缓存516的与存储位置628、630、632、634相对应的条目冲刷到pcie贮存设备518。因此,cxl ep ip块522可以指令nvme请求生成器ip块514生成一个或多个nvme请求以将高速缓存的条目写入pcie贮存设备518(例如,以块粒度)。
75.参考图7,示出向贮存设备发送命令的方法700。方法700可以由诸如计算设备102、计算设备502或计算设备602的计算设备执行。方法700包括在702处存储与存储区域相关联的访问粒度准则。例如,计算设备102(例如,计算设备102的处理器104)可以存储与存储设备106中的存储区域相关联的访问粒度准则116。访问粒度准则116可以包括对存储对象(例如,文件)、存储地址(例如,贮存设备108的虚拟地址或物理存储地址)或存储范围(例如,贮存设备108的虚拟存储地址范围或物理存储地址范围)的锁。存储对象、存储地址或存储范围可以与以特定访问粒度(例如,通过与特定访问粒度相关联的特定访问路径,诸如cxl.io或cxl.mem)访问贮存设备108处的数据相关联。锁可以防止以特定访问粒度访问贮存设备108的特定物理地址。访问粒度准则116可以与存储对象、存储地址或存储地址范围和访问粒度或与访问粒度相关联的特性(诸如访问路径(例如,cxl.io或cxl.mem)或访问协议(例如,nvme或存储器加载/存储))之间的关联对应。该关联可以指示访问粒度被准许或不被准许访问存储对象、存储地址或存储地址范围。
76.作为另一示例,操作系统506可以存储关于与使用基于块的nvme命令访问pcie贮存设备518的物理地址相关联的特定存储对象、存储地址或存储地址范围的锁,或者可以存储关于与使用字节可寻址存储器/加载存储命令访问pcie贮存设备518的物理地址相关联的特定存储对象、存储地址或存储地址范围的锁。
77.作为另一示例,操作系统606可以存储防止访问文件系统610中的文件620的锁。因此,对文件的块级访问可以被禁用。可替代地,操作系统606可以存储防止访问虚拟存储地址范围616的锁。因此,对文件的字节级访问可以被禁用。
78.方法700进一步包含在704处接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求。例如,处理器104可以接收请求访问存储区域的第一部分的存储操作请求
110。存储操作请求110可以显式地指示所请求的访问粒度或隐式地指示所请求的访问粒度(例如,基于所指示的存储地址、存储对象、存储范围、访问协议、访问路径等)。
79.作为另一示例,应用504可以向操作系统506发出存储操作命令。存储操作命令可以包括与使用cxl.mem路径(例如,字节级粒度)或cxl.io路径(例如,块级粒度)来访问存储在pcie贮存设备518处的数据相关联的地址。
80.作为另一示例,应用604可以向操作系统606发出存储操作命令。存储操作命令可以包括文件系统610的地址(例如,用于贮存设备648上的数据的块级访问的虚拟地址)或虚拟存储器608中的地址(用于贮存设备648上的数据的字节级访问的虚拟地址)。
81.方法700还包括,在706处,响应于存储操作请求满足访问粒度准则,基于存储操作请求向贮存设备发送命令。例如,处理器104可以响应于存储操作请求110满足与存储区域相关联的访问粒度准则116而发送命令114。为了说明,处理器104可以响应于访问粒度准则116指示存储操作请求110所针对的地址被解锁(例如,通过包括地址被解锁的显式指示或通过不包括地址被锁定的指示)或响应于存储操作请求110的访问粒度或相关联的特性与存储区域的准许的访问粒度或相关联的特性——如由访问粒度准则116所指示的——对应而发送命令114。
82.作为另一示例,操作系统506可以响应于确定来自应用504的请求的目标地址被解锁而通过cxl.mem或cxl.io向cxl贮存设备510发出命令。
83.作为另一示例,操作系统606可以响应于确定来自应用604的请求的目标地址被解锁而向贮存设备648发出命令。
84.因此,方法700可以基于访问粒度准则选择性地向贮存设备发出存储命令。因此,方法700可以被用在支持用于访问贮存设备的多个访问粒度的系统中,以便呈现贮存设备中的数据的一致视图。在一些实现中,诸如cxl贮存设备510的贮存设备可以执行方法700以选择性地向另一贮存设备(例如,pcie贮存设备518)发出命令。例如,fpga526的cxl ep ip块522可以被配置为执行方法700。
85.参考图8,示出选择性地向贮存设备发送或拒绝命令的方法800。方法800可以由诸如计算设备102、计算设备502或计算设备602的计算设备执行。此外,方法800可以由管理对另一贮存设备的访问的贮存设备(例如,由cxl贮存设备510)执行。
86.方法800包含在802处接收请求访问存储区域的第一部分的存储操作请求。例如,处理器104可以接收存储操作请求110或第二存储操作请求210(例如,来自在处理器104处执行的应用)。请求110、210可以包括存储器加载请求、存储器存储请求、写入请求(例如,nvme写入)、读取请求(例如,nvme读取)、另一类型的存储器访问或其组合。请求110、210可以以贮存设备108的存储区域(例如,物理存储范围)为目标。
87.方法800进一步包含在804处确定存储操作请求是否满足访问粒度准则。例如,处理器104可以确定存储操作请求110或存储操作请求210是否满足与存储区域相关联的访问粒度准则116。该确定可以包括确定请求110、210是否以如由访问粒度准则116所指示的锁定(或解锁)的存储地址、存储地址范围、存储对象等为目标。确定可以包括确定请求110、210的访问粒度或相关联的特性(例如,访问路径、访问协议等)是否满足存储在访问粒度准则116中的关联。访问粒度准则116可以指示准许的访问、不准许的访问或其组合。
88.方法800还包括在806处响应于存储操作请求满足访问粒度准则而基于存储操作
请求向贮存设备发送命令。例如,处理器104可以响应于存储操作请求110满足访问粒度准则116而向贮存设备108发送命令114。命令可以对应于存储操作请求110的转换。例如,命令114可以包括由存储操作请求110指示的地址的转换,命令114可以被转换成与存储操作请求110相比不同的协议,命令114可以封装存储操作请求110,或其组合。
89.方法800进一步包含在808处响应于存储操作请求未能满足访问粒度准则而输出拒绝指示。例如,处理器104可以响应于第二存储操作请求210未能满足访问粒度准则116而输出拒绝指示214。拒绝指示214可以被输出到在处理器104处执行的应用。在一些实施方式中,拒绝指示214对应于错误消息或错误标志。
90.因此,方法800可以基于访问粒度准则选择性地发送存储命令或拒绝。因此,方法800可以呈现存储在支持多个访问粒度(例如,通过不同访问路径)的贮存设备处的数据的一致视图。
91.参考图9,示出将存储区域映射到第二空间的方法900。方法900可以由诸如计算设备102、计算设备502或计算设备602的计算设备执行。此外,方法800可以由管理对另一贮存设备的访问的贮存设备(例如,由cxl贮存设备510)执行。
92.方法900包括在902处将存储区域映射到与第一访问粒度相关联的第一空间。例如,操作系统606可以将文件620放置在文件系统610中,并将文件系统610中的文件620映射到贮存池位置638、640、642、644。贮存池位置638、640、642、644可以被映射(例如,通过操作系统606或通过贮存设备648,诸如cxl贮存设备510)到贮存设备648(例如,存储区域)中的物理地址。文件620在文件系统610中的位置或贮存池位置638、640、642、644可以对应于第一空间。通过文件系统610访问文件620与第一访问粒度(例如,512b或5kb块)相关联。
93.在另一示例中,操作系统506可以将与cxl.mem访问相关联的虚拟地址映射到以64b粒度的pcie贮存设备518的物理地址范围。
94.方法900还包括在904处接收将存储区域映射到与第二访问粒度相关联的第二空间的请求。例如,操作系统606可以从应用604接收存储器映射命令621。存储器映射命令621可以请求将文件620放置到虚拟存储器608中。虚拟存储器608与第二访问粒度(例如,64b)相关联。
95.在另一示例中,操作系统506可以接收将pcie贮存设备518的物理地址范围映射到与以512b或4kb块粒度的cxl.io访问相关联的虚拟地址的请求。
96.方法900还包括在906处发起高速缓存冲刷。例如,操作系统606可以冲刷存储在由计算设备602、贮存设备648或贮存设备648维护的文件系统610处的数据的任何高速缓存。
97.在另一示例中,操作系统506可以指令cxl ep ip块522将与高速缓存516中的物理地址范围相关联的条目冲刷到pcie贮存设备518。
98.方法900还包括将存储区域映射到与第二访问粒度相关联的第二空间。例如,操作系统606可以将虚拟存储器608中的地址范围616映射到存储池位置628、630、632、634,存储池位置628、630、632、634被映射到贮存设备648的物理地址范围。
99.在另一示例中,操作系统506将pcie贮存设备518的物理地址范围映射到与以512b或4kb块粒度的cxl.io访问相关联的虚拟地址。
100.因此,方法900可以响应于以一个访问粒度访问数据的请求来冲刷与另一个访问粒度相关联的高速缓存。应当注意,可以冲刷访问路径中的比图中所示更多的高速缓存。例
如,计算设备102、计算设备502或计算设备602可以维护与一个或更多个访问粒度相关联的一个或多个高速缓存,并且可以基于以不同的访问粒度访问数据的请求来冲刷这些高速缓存。类似地,贮存设备108、cxl贮存设备510、pcie贮存设备618或贮存设备648可以包括与所图示的相比额外的高速缓存机制。响应于以不同访问粒度访问数据的请求,可以冲刷与一个访问粒度相关联的高速缓存机制。
101.参考图10,示出计算设备1000是包括处理器1004和计算机可读贮存设备1006的设备。计算机可读贮存设备1006可以包括非易失性存储器、易失性存储器、光贮存设备、另一类型的贮存设备或其组合。计算机可读贮存设备1006存储基于访问粒度的控制指令1008,控制指令1008可由处理器1004执行以执行本文关于图1-9描述的方法或操作中的一个或多个。类似的计算机可读贮存设备可以存储指令以对fpga进行编程以执行本文描述的一个或多个操作。
102.在一些示例中,基于x匹配y,x对应于y。例如,第一id可以被确定为对应于与第一id匹配(例如,具有与第一id相同的值)的第二id。在其他示例中,x基于x与y相关联(例如,链接到y)而对应于y。例如,x可以通过映射数据结构与y相关联。
103.某些实施例可以在硬件、固件和软件中的一个或组合中实现。其他实施例也可以被实现为存储在计算机可读贮存设备上的指令,其可以由至少一个处理器读取和执行以执行本文描述的操作。计算机可读贮存设备可以包括用于以机器(例如,计算机)可读的形式存储信息的任何非暂时性存储器机制。例如,计算机可读贮存设备可以包括只读存储器(rom)、随机访问存储器(ram)、磁盘存储介质、光存储介质、闪存设备以及其他贮存设备和介质。
104.如本文档内所使用的,术语“通信”旨在包括发送、或接收、或发送和接收两者。当描述由一个设备发送并由另一个设备接收的数据的组织时,这在权利要求中可能特别有用,但是仅需要这些设备中的一个设备的功能来侵权该权利要求。类似地,当仅要求保护这些设备之一的功能时,两个设备之间的双向数据交换(两个设备在交换期间发送和接收)可以被描述为“通信”。如本文关于无线通信信号所使用的术语“传送”包括发送无线通信信号和/或接收无线通信信号。例如,能够传送无线通信信号的无线通信单元可以包括用于将无线通信信号发送到至少一个其他无线通信单元的无线发送器,和/或用于从至少一个其他无线通信单元接收无线通信信号的无线通信接收器。
105.一些实施例可以与各种设备和系统结合使用,例如,个人计算机(pc)、台式计算机、移动计算机、膝上型计算机、笔记本计算机、平板计算机、服务器计算机、手持计算机、手持设备、个人数字助理(pda)设备、手持pda设备、车载设备、非车载设备、混合设备、车辆设备、非车辆设备、移动或便携式设备、消费者设备、非移动或非便携式设备、无线通信站、无线通信设备、无线接入点(ap)、有线或无线路由器、有线或无线调制解调器、视频设备、音频设备、音频-视频(a/v)设备、有线或无线网络、无线区域网络、无线视频区域网络(wvan)、局域网(lan)、无线lan(wlan)、个人区域网络(pan)、无线pan(wpan)等。
106.一些实施例可以与单向和/或双向无线电通信系统、蜂窝无线电话通信系统、移动电话、蜂窝电话、无线电话、个人通信系统(pcs)设备、包含无线通信设备的pda设备、移动或便携式全球定位系统(gps)设备、包含gps接收器或收发器或芯片的设备、包含射频识别(rfid)元件或芯片的设备、多输入多输出(mimo)收发器或设备、单输入多输出(simo)收发
器或设备、多输入单输出(miso)收发器或设备、具有一个或多个内部天线和/或外部天线的设备、数字视频广播(dvb)设备或系统、多准则无线电设备或系统、有线或无线手持设备,例如智能电话、无线应用协议(wap)设备等。
107.一些实施例可以与遵循一个或多个无线通信协议的一种或多种类型的无线通信信号和/或系统结合使用,例如,射频(rf)、红外(ir)、频分复用(fdm)、正交fdm(ofdm)、时分复用(tdm)、时分多址(tdma)、扩展tdma(e-tdma)、通用分组无线电服务(gprs)、扩展gprs、码分多址(cdma)、宽带cdma(wcdma)、cdma2000、单载波cdma、多载波cdma、多载波调制(mdm)、离散多音(dmt)、蓝牙tm、蓝牙tm或蓝牙tm。全球定位系统(gps)、wi-fi、wi-max、zigbeetm、超宽带(uwb)、全球移动通信系统(gsm)、2g、2.5g、3g、3.5g、4g、第五代(5g)移动网络、3gpp、长期演进(lte)、高级lte、gsm演进增强数据速率(edge)等。其他实施例可以用在各种其他设备、系统和/或网络中。
108.尽管上面已经描述了示例处理系统,但是本文描述的主题和功能操作的实施例可以在其他类型的数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者它们中的一个或多个的组合。
109.本文描述的主题和操作的实施例可以在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本文描述的主题的实施例可以实现为一个或多个计算机程序,即,计算机程序指令的一个或多个组件,其编码在计算机存储介质上,用于由信息/数据处理装置执行或控制信息/数据处理装置的操作。可替代地或另外地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,其被生成以编码信息/数据,用于传输到合适的接收器装置以供信息/数据处理装置执行。计算机存储介质可以是计算机可读贮存设备、计算机可读存储基板、随机或串行访问存储器阵列或设备、或者它们中的一个或多个的组合,或者被包括在其中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是在人工生成的传播信号中编码的计算机程序指令的源或目的地。计算机存储介质还可以是一个或多个单独的物理组件或介质(例如,多个cd、磁盘或其他贮存设备),或者被包括在一个或多个单独的物理组件或介质(例如,多个cd、磁盘或其他贮存设备)中。
110.本文描述的操作可以被实现为由信息/数据处理装置对存储在一个或多个计算机可读贮存设备上或从其他源接收的信息/数据执行的操作。
111.术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述中的多个或组合。该装置可以包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。装置和执行环境可以实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
112.计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且可以以任何形式部署,包括作为独立程序或作为组件、组件、子例程、对象或适用于计算环境的其他单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或信息/数据(例如,存储在标
记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个组件、子程序或代码部分的文件)中。计算机程序可以被部署为在一个计算机上或在位于一个站点处或分布在多个站点上并通过通信网络互连的多个计算机上执行。
113.本文描述的过程和逻辑流可以由运行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入信息/数据进行操作并生成输出来执行动作。作为示例,适合于执行计算机程序的处理器包括通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机访问存储器或两者接收指令和信息/数据。计算机的元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量贮存设备(例如磁盘、磁光盘或光盘),或者可操作地耦合以从其接收信息/数据或向其传输信息/数据或两者。然而,计算机不需要具有这样的设备。适用于存储计算机程序指令和信息/数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cdrom和dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
114.为了提供与用户的交互,本文描述的主题的实施例可以在具有用于向用户显示信息/数据的显示设备(例如crt(阴极射线管)或lcd(液晶显示器)监视器)以及用户可以通过其向计算机提供输入的键盘和定点设备(例如鼠标或轨迹球)的计算机上实现。其他种类的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求将网页发送到用户的客户端设备上的网络浏览器。
115.本文描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件,例如作为信息/数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或web浏览器的客户端计算机,用户可以通过该图形用户界面或web浏览器与本文描述的主题的实施例交互,或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字信息/数据通信(例如通信网络)互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互联网络(例如因特网)和对等网络(例如adhoc对等网络)。
116.计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将信息/数据(例如,html页面)发送到客户端设备(例如,用于向与客户端设备交互的用户显示信息/数据和从与客户端设备交互的用户接收用户输入的目的)。可以在服务器处从客户端设备接收在客户端设备处生成的信息/数据(例如,用户交互的结果)。
117.虽然本说明书包含许多具体实施例细节,但是这些不应被解释为对任何实施例或可能要求保护的范围的限制,而是作为特定于特定实施例的特征的描述。本文在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上
下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面可以将特征描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合中删除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变型。
118.类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
119.因此,已经描述了主题的特定实施例。其它实施例在所附权利要求书的范围内。在一些情况下,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。另外,附图中描绘的过程不一定需要所示的特定顺序或相继顺序来实现期望的结果。在某些实施例中,多任务和并行处理可能是有利的。
120.受益于前述描述和相关附图中呈现的教导,这些实施例所属领域的技术人员将想到本文阐述的本公开的许多修改和其他实施例。因此,应当理解,实施例不限于所公开的具体实施例,并且修改和其他实施例旨在包括在所附权利要求的范围内。尽管本文采用了特定术语,但是它们仅在一般性和描述性意义上使用,而不是出于限制的目的。
121.以下声明描述了根据本公开的示例,然而这些声明不限制本公开的范围。
122.声明1:一种公开的方法,包括在计算设备处存储与存储区域相关联的访问粒度准则。所公开的方法进一步包含接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求。所公开的方法还包括:响应于存储操作请求满足访问粒度准则,基于存储操作请求从计算设备向贮存设备发送命令。
123.声明2:如声明1所述的方法,还可以包括:接收请求以与第一访问粒度不同的第二访问粒度访问存储区域的第二部分的第二存储操作请求;以及基于访问粒度准则输出第二存储操作请求被拒绝的指示。
124.声明3:如声明1或2中任一项所述的方法,还可以包括存储更新的访问粒度准则。所述方法可以进一步包含接收请求以第二访问粒度访问存储区域的第二部分的第二存储操作请求。所述方法还可以包括:响应于第二存储操作请求满足更新的访问粒度准则,基于第二存储操作请求从计算设备向贮存设备发送第二命令。
125.声明4:在如声明3所述的方法中,可以响应于来自应用的请求而存储更新的访问粒度准则。
126.声明5:如声明4或5中任一项所述的方法还可以包括在贮存设备处发起高速缓存冲刷。
127.声明6:在声明1-5中任一项的方法中,存储区域可以对应于文件。
128.声明7:在声明1-5中任一项的方法中,存储区域可以对应于文件的区。
129.声明8:在如声明1-7中任一项所述的方法中,存储区域可以对应于地址空间中的地址范围。
130.声明9:在如声明1-7中任一项所述的方法中,访问粒度准则可以对应于与以第二访问粒度访问存储区域相关联的虚拟存储地址范围上的锁。
131.声明10:一种计算机可读贮存设备,可以存储可由处理器执行以执行操作的指令,所述操作包括在计算设备处存储与存储区域相关联的访问粒度准则。所述操作还可以包括接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求。所述操作还可以包括:响应于存储操作请求满足访问粒度准则,基于存储操作请求从计算设备向贮存设备发送命令。
132.声明11:在如声明10所述的计算机可读贮存设备中,所述操作还可以包括接收第二存储操作请求,第二存储操作请求请求以与第一访问粒度不同的第二访问粒度访问存储区域的第二部分。所述操作可以进一步包含基于访问粒度准则输出第二存储操作请求被拒绝的指示。
133.声明12:在如声明10或11中任一项所述的计算机可读贮存设备中,所述操作还可以包括存储更新的访问粒度准则。所述操作可以进一步包括接收请求以第二访问粒度访问存储区域的第二部分的第二存储操作请求。操作还可以包括:响应于第二存储操作请求满足更新的访问粒度准则,基于第二存储操作请求从计算设备向贮存设备发送第二命令。
134.声明13:在如声明12所述的计算机可读贮存设备中,更新的访问粒度准则可以响应于来自应用的请求而被存储。
135.声明14:在如声明12或13中任一项所述的计算机可读贮存设备中,所述操作可以进一步包括在贮存设备处发起高速缓存冲刷。
136.声明15:在如声明11-14中任一项所述的计算机可读贮存设备中,存储区域可以对应于文件。
137.声明16:在如声明11-14中任一项所述的计算机可读贮存设备中,存储区域可以对应于文件的区。
138.声明17:一种系统可以包括贮存设备和计算设备。计算设备可以被配置为存储与贮存设备的存储区域相关联的访问粒度准则。计算设备还可以被配置为接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求。计算设备还可以被配置为响应于存储操作请求满足访问粒度准则,基于存储操作请求向贮存设备发送命令。
139.声明18:在如声明17所述的系统中,所述计算设备还可以被配置为接收请求以与第一访问粒度不同的第二访问粒度访问存储区域的第二部分的第二存储操作请求。计算设备还可以被配置为基于访问粒度准则输出第二存储操作请求被拒绝的指示。
140.声明19:在根据权利要求17-18中任一项所述的系统中,所述计算设备还可以被配置为存储更新的访问粒度准则。计算设备还可以被配置为接收请求以第二访问粒度访问存储区域的第二部分的第二存储操作请求。计算设备还可以被配置为响应于第二存储操作请求满足更新的访问粒度准则,基于第二存储操作请求向贮存设备发送第二命令。
141.声明20:在如声明17-19中任一项所述的系统中,所述贮存设备可以包括高速缓存,并且所述计算设备可以进一步被配置成发起对高速缓存中的条目的驱逐。

技术特征:
1.一种方法,包括:在计算设备处存储与存储区域相关联的访问粒度准则;接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求;以及响应于存储操作请求满足访问粒度准则,基于存储操作请求从计算设备向贮存设备发送命令。2.根据权利要求1所述的方法,还包括:接收请求以与第一访问粒度不同的第二访问粒度访问存储区域的第二部分的第二存储操作请求;以及基于访问粒度准则输出第二存储操作请求被拒绝的指示。3.根据权利要求1所述的方法,还包括:存储更新的访问粒度准则;接收请求以第二访问粒度访问存储区域的第二部分的第二存储操作请求;以及响应于第二存储操作请求满足更新的访问粒度准则,基于第二存储操作请求从计算设备向贮存设备发送第二命令。4.根据权利要求3所述的方法,其中,更新的访问粒度准则响应于来自应用的请求而被存储。5.根据权利要求3所述的方法,还包括:在贮存设备处发起高速缓存冲刷。6.根据权利要求1所述的方法,其中,存储区域对应于文件。7.根据权利要求1所述的方法,其中,存储区域对应于文件的区。8.根据权利要求1所述的方法,其中,存储区域对应于地址空间中的地址范围。9.根据权利要求1所述的方法,其中,访问粒度准则对应于与以第二访问粒度访问存储区域相关联的虚拟存储地址范围上的锁。10.一种存储指令的计算机可读贮存设备,所述指令可由处理器执行以执行操作,所述操作包括:在计算设备处存储与存储区域相关联的访问粒度准则;接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求;以及响应于存储操作请求满足访问粒度准则,基于存储操作请求从计算设备向贮存设备发送命令。11.根据权利要求10所述的计算机可读贮存设备,其中,所述操作还包括:接收请求以与第一访问粒度不同的第二访问粒度访问存储区域的第二部分的第二存储操作请求;以及基于访问粒度准则输出第二存储操作请求被拒绝的指示。12.根据权利要求10所述的计算机可读贮存设备,其中,所述操作还包括:存储更新的访问粒度准则;接收请求以第二访问粒度访问存储区域的第二部分的第二存储操作请求;以及响应于第二存储操作请求满足更新的访问粒度准则,基于第二存储操作请求从计算设备向贮存设备发送第二命令。13.根据权利要求12所述的计算机可读贮存设备,其中,更新的访问粒度准则响应于来自应用的请求而被存储。
14.根据权利要求12所述的计算机可读贮存设备,其中,所述操作还包括在贮存设备处发起高速缓存冲刷。15.根据权利要求11所述的计算机可读贮存设备,其中,存储区域对应于文件。16.根据权利要求11所述的计算机可读贮存设备,其中,存储区域对应于文件的区。17.一种系统,包括:贮存设备;以及计算设备,被配置为:存储与贮存设备的存储区域相关联的访问粒度准则;接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求;和响应于存储操作请求满足访问粒度准则,基于存储操作请求向贮存设备发送命令。18.根据权利要求17所述的系统,其中,计算设备还被配置为:接收请求以与第一访问粒度不同的第二访问粒度访问存储区域的第二部分的第二存储操作请求;以及基于访问粒度准则输出第二存储操作请求被拒绝的指示。19.根据权利要求17所述的系统,其中,计算设备还被配置为:存储更新的访问粒度准则;接收请求以第二访问粒度访问存储区域的第二部分的第二存储操作请求;以及响应于第二存储操作请求满足更新的访问粒度准则,基于第二存储操作请求向贮存设备发送第二命令。20.根据权利要求17所述的系统,其中,贮存设备包括高速缓存,并且其中,计算设备还被配置为发起高速缓存中的条目的驱逐。

技术总结
一种方法包括在计算设备处存储与存储区域相关联的访问粒度准则。所述方法进一步包含接收请求以第一访问粒度访问存储区域的第一部分的存储操作请求。所述方法还包括响应于存储操作请求满足访问粒度准则,基于存储操作请求从计算设备向贮存设备发送命令。求从计算设备向贮存设备发送命令。求从计算设备向贮存设备发送命令。


技术研发人员:M
受保护的技术使用者:三星电子株式会社
技术研发日:2023.03.21
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐