与主机处理器通信的设备、包括该设备的系统以及操作该设备的方法
1.相关申请的交叉引用
2.本技术基于并要求于2020年11月23日向韩国知识产权局提交的韩国专利申请no.10-2020-0158053的优先权,其公开内容通过引用整体并入本文。
技术领域
3.本发明构思涉及存储器控制器,更具体地,涉及基于单个命令执行存储操作和高速缓存管理的存储器控制器、包括该存储器控制器的系统以及存储器件的运行方法。
背景技术:
4.被配置为处理数据的装置可以通过访问存储器来执行各种操作。例如,装置可以处理从存储器读取的数据,或者将处理后的数据写入存储器。由于系统所需的性能和功能,经由提供高带宽和低延迟的链路相互通信的各种装置可以被包括在系统中。系统中包括的存储器可以被两个或更多个装置共享和访问。因此,系统的性能不仅取决于每个装置的运行速度,还取决于装置之间的通信效率以及访问存储器所需的时间。
技术实现要素:
5.本发明构思提供了用于降低存储器访问延迟(latency)的系统、设备和运行方法。
6.根据实施例的设备包括:第一接口电路,所述第一接口电路被配置为与主机处理器通信;第二接口电路,所述第二接口电路被配置为与包括多个存储区域的存储器通信;高速缓冲存储器,所述高速缓冲存储器包括被配置为临时存储数据的多个高速缓存行(cache line);以及控制器,所述控制器被配置为从所述主机处理器接收包括存储操作信息和高速缓存管理信息的集成命令,基于根据所述存储操作信息指示的第一命令控制所述存储器,以及基于所述高速缓存管理信息控制所述多个高速缓存行当中的至少一个高速缓存行。
7.根据本发明构思的一方面,提供了一种系统,包括:主机处理器,所述主机处理器包括至少一个被配置为执行指令的核;设备附连存储器,所述设备附连存储器包括多个存储区域;以及设备,所述设备被配置为与所述主机处理器和所述设备附连存储器通信,其中,所述设备包括高速缓冲存储器,并且还被配置为基于从所述主机处理器接收到的集成命令来控制所述高速缓冲存储器和所述设备附连存储器,所述集成命令包括对所述设备附连存储器中的第一条数据的读取命令和用于所述高速缓冲存储器的高速缓存管理信息。
8.根据本发明构思的另一方面,提供了一种操作经由总线连接到主机处理器并且连接到设备附连存储器的设备的方法,所述设备附连存储器包括多个存储区域,所述方法包括:从所述主机处理器接收包括存储操作信息和高速缓存管理信息的集成命令;根据所述存储操作信息,向所述设备附连存储器发送对第一条数据的读取命令;以及根据所述高速缓存管理信息,控制包括在所述设备中的高速缓冲存储器,所述高速缓冲存储器包括多个高速缓存行,其中,所述高速高速缓存管理信息指示以下至少一项:高速缓存保持所述多个
高速缓存行当中的临时存储了所述第一条数据的第一高速缓存行、高速缓存冲刷所述第一高速缓存行、或预取与所述第一条数据不同的第二条数据。
附图说明
9.通过以下结合附图的详细描述,将更清楚地理解本发明构思的实施例,在附图中:
10.图1是根据实施例的系统的框图;
11.图2是根据实施例的系统的框图;
12.图3是根据实施例的系统的框图;
13.图4示出了根据实施例的数据树结构;
14.图5示出了根据实施例的集成命令的字段;
15.图6a是根据比较示例的信号交换图;
16.图6b是根据实施例的信号交换图;
17.图7是根据实施例的执行高速缓存维持的信号交换图;
18.图8是根据实施例的执行高速缓存清空和垃圾收集的信号交换图;
19.图9是根据实施例的执行预取的信号交换图的示例;
20.图10是根据实施例的执行预取的信号交换图的另一示例;
21.图11是根据实施例的系统的框图;
22.图12a是根据实施例的包括多个中央处理单元(cpu)的系统的框图;
23.图12b是根据实施例的包括多个cpu的系统的框图;和
24.图13是根据实施例的包括系统的数据中心的框图。
具体实施方式
25.在下文中,将参照附图详细描述本发明构思的实施例。
26.图1是根据实施例的系统100的框图。
27.参照图1,系统100可以包括包含相互通信的设备110和主机处理器120的任何计算系统(或计算系统中包括的组件)。例如,系统100可以被包括在诸如台式计算机、服务器和信息亭之类的固定计算系统中,或者诸如膝上型计算机、移动电话和可穿戴设备之类的便携式计算系统中。此外,在一些实施例中,系统100可以被包括在设备110和主机处理器120实现在一个芯片或封装件中的片上系统(soc)或系统级封装件(sip)中。如图1所示,系统100可以包括设备110、主机处理器120、设备附连存储器(device-attached memory)130和主机存储器140。根据各种实施例,系统100可以不包括设备附连存储器130。参照图1,设备110和主机处理器120可以经由链路150相互通信,并且可以经由链路150彼此发送或接收消息和/或数据。
28.将参考基于支持计算快速链路(cxl)协议的cxl规范的链路150来描述本发明构思的实施例。然而,作为非限制性示例,设备110和主机处理器120可以基于一致性互连技术(例如xbus协议、nvlink协议、infinity fabric协议、加速器高速缓存一致性互连(ccix)协议以及一致性加速器处理器接口(capi))相互通信。
29.在一些实施例中,链路150可以支持多种协议,并且可以利用多种协议来传输消息和/或数据。例如,链路150可以支持cxl协议,包括非一致性协议(例如,cxl.io)、一致性协
议(例如,cxl.cache)和存储器访问协议(或存储协议)(例如,cxl.mem)。在一些实施例中,作为非限制性示例,链路150可以支持诸如外围组件互连(pci)、快速pci(pcie)、通用串行总线(usb)和串行高级技术附件(sata)之类的协议。在本发明构思中,链路150支持的协议也可以被称为互连协议。
30.设备110可以包括向主机处理器120提供功能的任何设备。在一些实施例中,参考cxl规范2.0,设备110可以对应于支持cxl规范的加速器。例如,由主机处理器120执行的软件可以将计算和/或输入/输出(i/o)操作的至少一部分卸载到设备110。在一些实施例中,设备110可以包括以下至少一项:诸如图形处理单元(gpu)和神经处理单元(npu)的可编程组件,诸如互联网协议(ip)核的提供固定功能的组件,以及诸如现场可编程门阵列(fpga)的可重构的组件。如图1所示,设备110可以包括物理层111、多协议复用器(mux)112、接口电路113和加速器电路114,并且设备110可以与设备附连存储器130通信。
31.加速器电路114可以执行由设备110提供给主机处理器120的功能,并且也可以被称为加速器逻辑。如图1所示,当系统100中包括设备附连存储器130时,加速器电路114可以与设备附连存储器130通信,并且可以基于链路150的独立协议(即,设备特定协议)与设备附连存储器130通信。此外,如图1所示,加速器电路114可以使用多种协议经由接口电路113与主机处理器120通信。
32.接口电路113可以基于用于在加速器电路114与主机处理器120之间通信的消息和/或数据来确定多种协议中的一种协议。接口电路113可以连接到多协议mux 112中包括的至少一个协议队列,并经由至少一个协议队列向主机处理器120和从主机处理器120收发消息和/或数据。在一些实施例中,接口电路113和多协议mux 112可以集成为一个组件。在一些实施例中,多协议mux 112可以包括与链路150支持的多种协议中的每种协议对应的多个协议队列。此外,在一些实施例中,多协议mux112可以在使用不同协议的通信之间进行仲裁,并且向物理层111提供所选择的通信。在一些实施例中,物理层111可以经由单个互连、总线、迹线或诸如此类连接到主机处理器120的物理层121。
33.主机处理器120可以包括系统100的主处理器,例如中央处理单元(cpu),并且在一些实施例中,可以对应于cxl规范的主机处理器(或主机)。如图1所示,主机处理器120可以连接到主机存储器140,并且可以包括物理层121、多协议复用器(mux)122、接口电路123、一致性/高速缓存电路(coherence/cache circuit)124、总线电路125、至少一个核126以及输入/输出(i/o)设备127。
34.至少一个核126可以执行指令,并且可以连接到一致性/高速缓存电路124。一致性/高速缓存电路124可以包括高速缓存层次结构,并且可以被称为一致性/高速缓存逻辑。如图1所示,一致性/高速缓存电路124可以与至少一个核126和接口电路123通信。例如,一致性/高速缓存电路124可以利用包括一致性协议和存储器访问协议的两种或更多种协议来实现通信。在一些实施例中,一致性/高速缓存电路124可以包括直接存储器访问(dma)电路。i/o设备127可以用于与总线电路125通信。例如,总线电路125可以包括pcie逻辑,并且i/o设备127可以包括pcie i/o设备。
35.接口电路123可以实现主机处理器120的组件与设备110之间的通信,例如,一致性/高速缓存电路124和总线电路125与设备110之间的通信。在一些实施例中,接口电路123可以根据诸如非一致性协议、一致性协议和存储协议之类的多种协议,实现主机处理器120
的组件与设备110之间的消息和/或数据的通信。例如,接口电路123可以基于用于在主机处理器120的组件与设备110之间通信的消息和/或数据来确定多种协议中的一种协议。
36.多协议mux 122可以包括至少一个协议队列。接口电路123可以连接到至少一个协议队列,并且可以经由至少一个协议队列与设备110交换消息和/或数据。在一些实施例中,接口电路123和多协议mux 122可以集成为一个组件。在一些实施例中,多协议mux 122可以包括与链路150支持的多种协议中的每种协议对应的多个协议队列。此外,在一些实施例中,多协议mux 122可以在使用不同协议的通信之间进行仲裁,并向物理层121提供所选择的通信。
37.图2是根据实施例的系统200的框图。
38.参照图2,系统200可以包括设备210、主机处理器220、设备存储器230和主机存储器240。在一些实施例中,设备存储器230可以对应于图1中的设备附连存储器130。
39.如上面参照图2所描述的,设备210和主机处理器220可以基于多种协议相互通信。多种协议可以包括存储协议mem、一致性协议coh和非一致性协议io。在一些实施例中,参考cxl规范2.0,存储协议mem、一致性协议coh和非一致性协议io可以分别对应于cxl.mem、cxl.cache和cxl.io。非一致性协议io可以对应于pcie事务(transaction)层,并且可以用于系统200的设备发现、中断管理、提供对寄存器的访问以及处理信号错误的操作。
40.存储协议mem可以是主机处理器220经由加速器(例如,图1中的加速器电路114)访问存储器(例如,图1中的设备附连存储器130)时使用的协议。存储协议mem可以定义主设备(master)与从设备(subordinate)之间的事务。
41.在cxl.mem协议中,主设备可以被称为触发请求的代理。例如,在memrd命令的事务的情况下,主设备可以对应于触发memrd命令的主机处理器220。
42.在cxl.mem协议中,从设备可以被称为负责响应由主设备触发的请求的代理。例如,在memrd命令的事务的情况下,从设备可以对应于存储器件。存储器件可以包括图1所示的主机存储器140,或设备附连存储器130。
43.存储协议mem可以定义从主设备到从设备的事务和从从设备到主设备的事务。例如,参考cxl规范2.0,从主设备到从设备的事务可以被称为主从(master to subordinate,m2s)事务,从从设备到主设备的事务可以被称为从主(s2m)事务。
44.根据各种实施例,设备210可以对应于至少三种类型中的任何一种。当系统200不包括主机存储器240时,设备210可以对应于cxl规范中定义的第一类型(类型1)。包括类型1的设备210的系统200中的多种协议可以仅包括一致性协议coh和非一致性协议io。当设备210对应于类型1时,主机处理器220可以使用设备210将主机处理器220的数据高速缓存到设备存储器230中。当设备210对应于类型1时,系统200可以支持设备到主机(d2h)高速缓存一致性和主机到设备(h2d)监听事务。
45.当设备210作为加速器运行时(例如,当设备210包括图1中的加速器电路114时),设备210可以对应于cxl规范中定义的第二类型(类型2)。包括类型2的设备210的系统200中的多种协议可以包括一致性协议coh、非一致性协议io和存储协议mem中的所有协议。例如,主机处理器220可以利用非一致性协议io来搜索设备210,可以利用存储协议mem访问与找到的设备210对应的设备存储器230,并允许设备210利用一致性协议coh来使用主机处理器220的存储器。
46.当设备210作为存储器扩展器运行时,设备210可以对应于cxl规范中定义的第三类型(类型3)。包括类型3的设备210的系统200中的多种协议可以包括非一致性协议io和存储协议mem。例如,主机处理器220可以利用非一致性协议io来识别设备210并连接到设备210,并利用存储协议mem来访问设备210的存储器池。设备210可以与设备存储器230通信,并且可以包括用于访问设备存储器230的存储器控制器211。在一些实施例中,与图2所示的不同,存储器控制器211可以在设备210外部,并且可以与设备存储器230集成。此外,主机处理器220可以与主机存储器240通信,并且可以包括用于访问主机存储器240的存储器控制器221。在一些实施例中,与图2所示的不同,存储器控制器221可以在主机处理器220外部,并且可以与主机存储器240集成。
47.根据各种实施例,设备存储器230可以以各种类型的存储器实现,并且作为示例,可以实现为储存级存储器(storage class memory,scm)。
48.scm可以同时具有非易失性存储器特性和易失性存储器特性,并且可以以字节为单位进行访问。例如,scm可以包括相变随机存取存储器(ram)(pram)、铁电ram(feram)、磁ram(mram)、电阻ram(rram)、自旋转移扭矩(stt)-mram,或诸如此类。
49.图3是根据实施例的系统300的框图。
50.参照图3,系统300可以包括远系统存储器305、主机310和主机附连存储器315。图3中的主机310可以对应于图1中的主机处理器120和/或图2中的主机处理器220。参照图3,远系统存储器305可以包括设备320和设备附连存储器330。图3中的设备320可以对应于图1中的设备110和/或图2中的设备210。图3的设备附连存储器330可以对应于图1中的设备附连存储器130和/或图2中的设备存储器230。将省略重复的描述。
51.设备320可以支持cxl规范。例如,设备320可以对应于cxl规范的类型3。设备320可以包括第一接口(if)电路321-1、第二if电路321-2、控制器322和设备高速缓冲存储器327。控制器322可以至少包括垃圾收集单元323、磨损均衡单元324、高速缓存管理单元325和预取单元326。图3中的控制器322可以对应于上述存储器控制器(图2中的211)。
52.垃圾收集单元323可以根据控制器322的控制来控制设备附连存储器330执行垃圾收集。例如,当从主机310接收到集成命令intg cmd时,控制器322可以基于包含在集成命令intg cmd中的高速缓存管理信息和/或附加管理信息确定是否已执行垃圾收集。
53.集成命令intg cmd可以是根据本发明构思的各种实施例定义的命令,并且可以包括指示主机310从设备附连存储器330请求的存储操作(例如,读取操作和写入操作)的存储操作信息、指示对设备高速缓冲存储器327的高速缓存行进行操作(例如,高速缓存冲刷(cache flush)和高速缓存保持(cache keep))的高速缓存管理信息、以及指示对设备附连存储器330的至少一个存储区域进行操作的附加管理信息。
54.控制器322可以控制垃圾收集单元323对设备附连存储器330的至少一个存储区域(例如,第一存储区域331至第五存储区域335中的至少一个存储区域)执行垃圾收集或阻止垃圾收集。例如,当控制器322接收到指示预取存储在特定存储区域中的数据的高速缓存管理信息时,控制器322可以将存储在特定存储区域中的数据高速缓存到设备高速缓冲存储器327中,并阻止对特定存储区域执行垃圾收集或避开对特定存储区域执行垃圾收集。作为另一示例,控制器322可以接收指示清空临时存储了特定存储区域的数据的高速缓存行的高速缓存管理信息。控制器322可以对附加管理信息已经识别的特定存储区域抢先执行垃
圾收集。
55.在这种情况下,即使当垃圾收集单元323除了从主机310接收到集成命令之外,没有接收到指示执行垃圾收集的另外单独命令时,垃圾收集单元323也可以被激活以执行垃圾收集。换句话说,即使当没有接收到指示垃圾收集的命令时,控制器322也可以独立于主机310而控制设备320执行垃圾收集。
56.控制器322可以控制磨损均衡单元324对设备附连存储器330的至少一个存储区域(例如,第一存储区域331至第五存储区域335中的至少一个存储区域)执行磨损均衡。
57.第一接口电路321-1可以与主机310通信。换句话说,第一接口电路321-1可以传达(mediate)在主机310与设备320之间交换的信号。根据实施例,第一接口电路321-1可以经由加速器电路(例如,图1中的加速器电路114)与主机310通信。第一接口电路321-1可以从主机310接收集成命令。
58.第二接口电路321-2可以与设备附连存储器330通信。根据实施例,第二接口电路321-2可以根据集成命令intg cmd当中的存储操作信息从控制器322向设备附连存储器330发送命令。此外,第二接口电路321-2可以根据集成命令intg cmd当中的附加管理信息从控制器322向设备附连存储器330发送用于对设备附连存储器330的至少一个存储区域(例如,第一存储区域331至第五存储区域335中的至少一个存储区域)执行磨损均衡和/或垃圾收集的控制信号。
59.图4示出了根据实施例的数据树结构。
60.参照图4,多条数据可以具有树型数据结构。例如,树类型可以对应于二叉树的类型。
61.根据各种实施例,数据结构可以包括多个节点。
62.第一条数据data 1可以存储在根节点中。根节点可以被称为二叉树中包括的多个节点当中排列在最高层的节点。
63.多个节点中的每个节点可以存储关于第一指针和第二指针中的至少一个指针的用户数据和信息。第一指针和第二指针中的每个指针可以包括用于指示可以经由根节点引用的子节点的地址信息。例如,参照图4,第一指针可以包括用于跳转到包括第二条数据data 2的第二节点的地址信息,并且可以包括用于跳转到包括第三条数据data 3的第三节点的地址信息。
64.根据各种实施例,任意节点可以只有一个子节点。例如,第三节点的第一指针可以为“空(null)”,并且第三节点的第二指针可以包括用于跳转到第六节点的地址信息。第三节点可以只有一个子节点(例如,第六节点)。
65.在上述实施例中,基于采用二叉树来说明数据结构,但不限于此。根据各种实施例,数据结构可以采用二叉搜索树、三叉树和非平衡二叉树中的至少一种。
66.根据各种实施例,一起参照图3和图4,主机310可以预先存储关于二叉树的信息。主机310可以预先存储每个节点所存储的信息和关于每个节点所指示的子节点的信息。主机310可以基于先前存储的二叉树信息来生成集成命令intg cmd并向设备320发送集成命令intg cmd。例如,当期望在第一条数据data 1之后读取第三条数据data 3时,主机310可以向设备320发送关于请求第一条数据data 1的读取操作的存储操作信息,以及包含关于请求预取第三条数据data 3的高速缓存管理信息的集成命令intg cmd。
67.图5示出了根据实施例的集成命令intg cmd的字段。
68.参照图5、图3和图4,集成消息500可以至少包括第一字段f1至第五字段f5。包括在集成消息500中的第一字段f1至第五字段f5中的每一个字段可以包括至少一个比特,并且与至少一个比特值对应的信息可以由协议定义。该协议可以对应于cxl协议。
69.第一字段f1可以对应于有效字段。有效字段可以包括单个比特。当有效字段的比特值为“1”时,集成命令intg cmd在接收端可以被识别为有效(例如,在m2s请求的情况下,接收端是从设备,并且在h2d请求的情况下,接收端是所述设备)。
70.作为操作代码,第二字段f2可以包括定义存储操作的多个比特。参考cxl规范,第二字段f2可以对应于“memopcode”字段。第二字段f2可以包括指示存储操作的四个比特。例如,在一般存储器数据读取(memrddata)操作的情况下,第二字段f2可以包括“0001”。
71.当设备210被实现为多逻辑设备(mld)时,第三字段f3可以作为逻辑设备ld的标识符(id)被包括在设备210中。第三字段f3可以包括四个比特,并且这四个比特可以指示逻辑设备ld当中的任何一个逻辑设备ld。
72.作为高速缓存管理字段,第四字段f4可以包括关于执行了与第二字段f2对应的存储操作之后设备高速缓冲存储器327的高速缓存管理信息。高速缓存管理信息可以包括用于控制与对应于第二字段f2的存储操作相关的设备高速缓冲存储器327的信息。高速缓存管理信息可以指用于改变要存储在设备高速缓冲存储器327中的数据以增加高速缓存命中的可能性并防止高速缓存未命中的任何信息。例如,高速缓存管理信息可以包括指示高速缓存冲刷、高速缓存保持和预取的信息中的至少一种信息。
73.作为附加管理字段,第五字段f5可以包括关于控制了与第四字段f4对应的设备高速缓冲存储器327之后设备附连存储器330的信息。附加管理字段可以包括指示有效使用设备附连存储器330的操作的信息。例如,附加管理字段可以包括指示对设备附连存储器330进行垃圾收集和/或磨损均衡的信息。设备210可以基于第五字段f5的附加管理信息来控制控制器322。例如,当高速缓存管理信息指示高速缓存冲刷时,设备210可以控制设备附连存储器330对存储与高速缓存冲刷对应的数据的存储区域执行垃圾收集。
74.图6a是根据比较示例的信号交换图。
75.参照图6a,主机310可以向设备320发送预命令pre cmd(s10)。作为用于减少延迟的命令,预命令pre cmd可以包括用于在解决高速缓存一致性之前允许主机310访问设备附连存储器330的存储器的命令。参考cxl规范2.0,预命令pre cmd可以对应于memspecrd命令。
76.根据各种实施例,设备320可能不响应于接收到预命令pre cmd而发送完成消息,并且可能根据高速缓存行的条件而任意丢弃预命令pre cmd。例如,当正在进行针对相同高速缓存行地址的另一存储器访问时,设备320可能丢弃接收到的预命令pre cmd。为了防止远系统存储器305的性能下降,与其他命令相比,预命令pre cmd可能具有较低的优先级。参照图6a,预命令pre cmd可以具有memspecrd的操作代码和第一地址addr1的元值(meta value)。
77.设备320可以向设备附连存储器330发送预命令pre cmd(s20)。例如,当预命令pre cmd包括memspecrd的操作代码时,设备320可以向设备附连存储器330发送memrd命令。因为预命令pre cmd是即使在解决高速缓存一致性之前也允许存储器访问的命令,所以设备320
可以向设备附连存储器330发送memrd命令,而不管高速缓存一致性是否已经解决。响应于接收到预命令pre cmd,设备附连存储器330可以允许访问第一地址addr1。在操作s20的时间点可能还没有解决高速缓存一致性。
78.主机310可以向设备320发送后命令post cmd(s30)。根据各种实施例,当预命令pre cmd是memspecrd命令时,后命令post cmd可以对应于memrd命令。作为另一示例,当预命令pre cmd为memspecwr命令时,后命令post cmd可以对应于memwr命令。
79.设备320可以执行命令合并(s40)。参考cxl规范2.0,命令合并可以对应于跟踪器合并(tracker merging)。命令合并可以是合并地址信息与关于该地址信息将要由设备320执行的预命令信息的过程,地址信息即在预命令pre cmd解决高速缓存一致性之前允许存储器访问的第一地址addr1。根据各种实施例,设备320可以通过比较关于预命令pre cmd的地址信息与关于后命令post cmd的地址信息是否相同来执行命令合并。例如,当这两条地址信息彼此不匹配时,设备320可以丢弃从设备附连存储器330输出的用于读取数据的数据包。
80.设备附连存储器330可以向设备320发送与第一地址addr1对应的读取数据,并且设备320可以向主机310输出读取数据(s50和s60)。仅当利用操作s40中的命令合并关于预命令pre cmd的地址信息与关于后命令post cmd的地址信息彼此匹配时,可以控制设备320向主机310发送读取数据。
81.参考上述实施例,主机310可以通过将预命令pre cmd发送到设备320来在解决高速缓存一致性之前实现存储器访问,并且可以通过随后将后命令post cmd发送到设备320来减少延迟。但是,当考虑到预命令pre cmd的低优先级时,因为预命令pre cmd在设备320一侧被丢弃的可能性有点高,并且对于一次存储操作,至少需要两种信令(预命令pre cmd和后命令post cmd),所以可能增加远系统存储器305的管理开销。
82.图6b是根据实施例的信号交换图。
83.参照图6b,主机310可以向设备320发送集成命令intg cmd(s110)。集成命令intg cmd可以包括存储操作信息、高速缓存管理信息和附加管理信息。
84.存储操作信息可以包括关于存储操作的信息和主机310向设备320请求的地址。例如,一起参照图4和图6b,当主机310请求读取第一条数据data 1时,操作信息可以包括memrd的操作代码和关于存储了第一条数据data 1的第一地址addr1的信息。
85.高速缓存管理信息可以包括关于设备320对设备高速缓冲存储器327执行的管理以及高速缓存行地址的信息。例如,管理信息可以包括指示对多个高速缓存行当中的至少一个高速缓存行执行高速缓存保持、高速缓存冲刷和预取中的至少一项的信息。高速缓存行地址信息可以指示作为高速缓存保持、高速缓存冲刷或预取的对象的高速缓存行。主机310可以通过除了存储操作信息之外还在一个集成命令intg cmd中包括高速缓存管理信息并发送该集成命令intg cmd来增加高速缓存命中并减少读取延迟。
86.例如,当期望在第一条数据data 1之后依次读取第四条数据data4时,主机310可以向设备320发送包括关于请求读取第一条数据data1的存储操作信息和关于请求预取第四条数据data 4的高速缓存管理信息的集成命令intg cmd。设备320可以基于接收到的集成命令intg cmd读取第一条数据data 1,将读取数据输出至主机310,并预取第四条数据data 4以存储于设备高速缓冲存储器327中。此后,当主机310请求读取第四条数据data 4
时,由于第四条数据data 4已经存储在设备高速缓冲存储器327中,设备320可以确定高速缓存命中,并且可以基于低延迟将第四条数据data 4输出到主机310。
87.附加管理信息可以包括指示对设备附连存储器330的附加操作的信息。例如,附加管理信息可以至少包括指示对设备附连存储器330的特定存储区域进行垃圾收集的信息和/或关于对设备附连存储器330进行磨损均衡的信息。
88.设备320可以向设备附连存储器330发送操作命令operation cmd(s120)。设备320可以通过对从主机310接收到的集成命令intg cmd进行解码来获得存储操作信息。存储操作信息可以包括关于要对设备附连存储器330执行的存储操作的命令信息。例如,集成命令intg cmd可以包括指示用于第一地址addr1的存储器读取请求的存储操作信息。在这种情况下,设备320可以基于存储操作信息向设备附连存储器330发送读取命令。例如,读取命令可以包括memrd的操作代码和作为元值的第一地址addr 1的地址值。
89.设备320可以执行高速缓存管理(s130)。设备320可以通过对从主机310接收的集成命令intg cmd进行解码来获得高速缓存管理信息。高速缓存管理信息可以包括指示要对设备320中包括的设备高速缓冲存储器327执行的高速缓存操作的命令信息。例如,当高速缓存管理信息指示对第一条数据data 1进行的高速缓存冲刷时,设备320可以通过首先盖写(overwrite)设备高速缓冲存储器327的多个高速缓存行当中的存储了第一条数据data 1的高速缓存行来执行高速缓存冲刷。
90.设备320可以向设备附连存储器330发送附加管理命令additional management cmd(s140)。附加管理命令additional management cmd可以包括基于集成命令intg cmd中包括的附加管理信息而生成的命令。设备320可以根据可以通过对集成命令intg cmd进行解码而获得的附加管理信息来发送指示垃圾收集和/或磨损均衡的附加管理命令additional management cmd。
91.在上述实施例中,附加管理信息已经被描述为被包括在集成命令intg cmd中,但不限于此。根据各种实施例,设备320可以预先存储附加管理信息被映射到高速缓存管理信息的表。当高速缓存管理信息被包括在集成命令intg cmd中时,设备320可以参考该表,用于对高速缓存管理信息进行解码并识别与解码后的高速缓存管理信息对应的附加管理信息。例如,当高速缓存管理信息对应于对第三条数据data 3进行的高速缓存冲刷时,响应于高速缓存冲刷所预先映射的附加管理信息可以包括指示对存储了用于高速缓存冲刷的目标数据的存储区域执行垃圾收集的信息。
92.图7是根据实施例的执行高速缓存保持的信号交换图。
93.参照图7,主机310可以向设备320发送第一集成命令first intg cmd(s210)。主机310可以请求读取第一条数据data 1,同时考虑到调用第一条数据data 1的频率较高,可以请求将第一条数据data 1保持在设备高速缓冲存储器327。
94.第一集成命令first intg cmd可以包括第一存储操作信息和第一高速缓存管理信息。第一存储操作信息可以包括请求读取第一条数据data 1的memrd操作代码,以及关于指示第一条数据data 1的存储区域的第一地址addr1的信息。第一高速缓存管理信息可以包括指示高速缓存保持的操作代码和表示第一条数据data 1是高速缓存保持的目标数据的高速缓存数据信息。
95.设备320可以对接收到的第一集成命令first intg cmd进行解码,并且基于解码
后的第一集成命令first intg cmd向设备附连存储器330发送读取命令read cmd(s220)。设备320的控制器322可以基于第一集成命令first intg cmd请求读取存储在第一地址addr1中的第一条数据data 1。设备320可以从设备附连存储器330接收读取数据(s230)。读取数据可以是存储在第一地址addr1的第一条数据data1。
96.设备320可以对第一条数据data 1执行高速缓存保持(s240)。例如,当读取的第一条数据data 1被存储在设备高速缓冲存储器327的多个高速缓存行当中的第三高速缓存行中时,设备320可以防止对已经存储了第一条数据data 1的第三高速缓存行进行盖写。当来自设备附连存储器330的数据被接收和被高速缓存时,设备320可以控制设备高速缓冲存储器327优先盖写除了第三高速缓存行之外的剩余高速缓存行。
97.设备320可以向主机310输出读取数据read data(s250)。读取数据read data可以是第一集成命令first intg cmd所请求的第一条数据data 1。
98.在上述实施例中,示出了s240中的高速缓存保持在s250中的输出读取数据read data的操作之前,但是实施例不限于此。根据各种实施例,设备320可以首先将读取数据输出到主机310,然后对临时存储了输出的读取数据read data的高速缓存行执行高速缓存保持。
99.设备320可以从主机310接收对读取第一条数据data 1的请求(s260)。设备320可以从主机310接收第一条数据data 1的读取命令read cmd,并且可以抢先搜索设备高速缓冲存储器327。设备320可以搜索设备高速缓冲存储器327,并且当第一条数据data 1没有存储在设备高速缓冲存储器327中时,可以确定存在高速缓存未命中,并且可以请求设备附连存储器330读取第一条数据data 1。在这种情况下,根据上述实施例,设备320可以基于高速缓存管理信息维持存储了第一条数据data 1的高速缓存行。相应地,第一条数据data 1仍可以存储在设备高速缓冲存储器327中。设备320可以识别出第一条数据data 1在设备高速缓冲存储器327中,并立即向主机310输出第一条数据data 1。换句话说,主机310可以利用第一集成命令first intg cmd,通过指示不仅读取第一条数据data 1,而且还维持第一条数据data 1的高速缓存保持,来减小第一条数据data 1的读取延迟。
100.图8是根据实施例的用于执行高速缓存冲刷和垃圾收集的信号交换图。
101.参照图8,主机310可以向设备320发送第二集成命令second intg cmd(s310)。主机310可以请求读取第三条数据data 3,并请求对第三条数据data 3进行高速缓存冲刷。换句话说,主机310可以确定在读取第三条数据data 3之后,第三条数据data 3将不再需要,并产生第二集成命令second intg cmd。
102.第二集成命令second intg cmd可以包括第二存储操作信息、第二高速缓存管理信息和第二附加管理信息。第二存储操作信息可以包括用于请求读取第三条数据data 3的memrd操作代码和表示第三条数据data 3的存储区域的第三地址信息。第二高速缓存管理信息可以包括指示高速缓存冲刷的高速缓存冲刷操作代码,以及表示作为高速缓存冲刷的目标数据的第三条数据data 3的高速缓存数据信息。第二附加管理信息可以包括指示对存储了第三条数据data 3的存储区域进行垃圾收集的信息。
103.设备320可以向设备附连存储器330发送读取命令read cmd(s320)。设备320可以对接收到的第二集成命令second intg cmd进行解码,并且基于第二集成命令second intg cmd中的第二存储操作信息向设备附连存储器330发送指示读取第三地址addr3的读取命令
read cmd。设备320可以从设备附连存储器330接收读取数据read data(s330)。读取数据read data可以是存储在第三地址addr3中的第三条数据data 3。设备320可以向主机310输出读取的第三条数据data 3(s340)。
104.设备320可以对第三条数据data 3执行高速缓存冲刷(s350)。例如,读取的第三条数据data 3可以存储在设备高速缓冲存储器327的多个高速缓存行当中的第一高速缓存行中。为了执行高速缓存冲刷,设备320可以响应于向主机310输出第三条数据data 3而清除(clear)第一高速缓存行。或者,设备320可以为第一高速缓存行设定较高的盖写优先级。因此,下一轮要高速缓存的数据可以优先盖写在第一高速缓存行上。
105.设备320可以指示设备附连存储器330对第三条数据data 3执行垃圾收集(s360)。根据实施例,设备320可以根据通过对第二集成命令second intg cmd进行解码获得的第二附加管理信息来指示垃圾收集。根据另一实施例,设备320可以预先存储附加管理表。附加管理表可以预先存储映射到高速缓存管理信息的附加管理信息。例如,当高速缓存管理信息用于高速缓存冲刷时,被映射的附加管理信息可以包括指示垃圾收集的信息。设备320可以基于第二附加管理信息或附加管理表来控制设备附连存储器330对作为存储了第三条数据data 3的区域的第三地址addr3执行垃圾收集。
106.图9是根据实施例的执行预取的信号交换图的示例。
107.参照图9,主机310可以加载预先存储的二叉树信息(s410)。主机310可以基于二叉树信息识别在多个节点之间形成子节点的关系,并且可以基于识别的关系确定要预取的数据。
108.主机310可以向设备320发送对第一条数据data 1的读取命令read cmd(s420)。设备320可以接收第一条数据data 1的读取命令read cmd,并搜索设备高速缓冲存储器327。设备320可以识别出第一条数据data 1没有被高速缓存,并向设备附连存储器330发送对第一地址addr1的读取命令read cmd(s430)。响应于接收到对第一地址addr1的读取命令read cmd,设备附连存储器330可以向设备320输出存储在第一地址addr1中的第一条数据data 1(s440)。设备320可以向主机310输出读取数据read data(s450)。读取数据read data可以对应于读取命令read cmd所指示的第一条数据data 1。
109.主机310可以向设备320发送第三集成命令third intg cmd(s460)。主机310可以在读取第一条数据data 1之后,预先识别要被调用的第二条数据data 2和第三条数据data 3。调用第三条数据data 3可以在调用第二条数据data 2之后。
110.第三集成命令third intg cmd可以包括第三存储操作信息和第三高速缓存管理信息。第三存储操作信息可以包括请求读取第二条数据data 2的memrd操作代码,以及关于表示第二条数据data 2的存储区域的第二地址addr2的信息。第三高速缓存管理信息可以包括指示预取的操作代码,以及表示作为预取的目标数据的第三条数据data 3的高速缓存数据信息。
111.设备320可以向设备附连存储器330发送对第二条数据data 2的读取命令read cmd和对第三条数据data 3的预取命令pref cmd(s470)。参照图9,虽然示出了对第二条数据data 2的读取命令read cmd与对第三条数据data 3的预取命令pref cmd被同时发送,但是实施例不限于此。可以首先发送对被抢先调用的第二条数据data 2的读取命令read cmd,并且可以稍后发送对临时存储在设备高速缓冲存储器327中的第三条数据data 3的预
取命令pref cmd。
112.设备附连存储器330可以向设备320输出第二条数据data 2和第三条数据data 3(s480)。根据各种实施例,设备附连存储器330可以基于命令之间的优先级顺序地读取数据。设备附连存储器330可以将读取命令read cmd的优先级与预取命令pref cmd的优先级进行比较。设备附连存储器330可以首先执行高优先级的读取命令read cmd。设备附连存储器330可以首先向设备320输出对应于读取命令read cmd的第二条数据data 2,稍后再输出对应于预取指令pref cmd的第三条数据data 3。
113.设备320可以向主机310输出作为读取数据的第二条数据data 2(s490)。设备320可以响应于对第二条数据data 2的读取命令read cmd,输出第二条数据data 2,并将第三条数据data 3高速缓存在设备高速缓冲存储器327中。
114.主机310可以向设备320发送对第三条数据data 3的读取命令read cmd(s500)。设备320可以基于发送的读取命令read cmd抢先搜索设备高速缓冲存储器327。因为设备高速缓冲存储器327已经高速缓存了第三条数据data 3,所以设备320可以确定高速缓存命中。此后,设备320可以将存储在设备高速缓冲存储器327中的第三条数据data 3输出到主机310。因此,主机310可以通过对期望被调用的数据指示预取来执行低延迟的数据读取。
115.在上述实施例中,为了避免第二条数据data 2和第三条数据data3之间的信道竞争,设备320被示为向设备附连存储器330发送不同优先级的命令中的每一个命令,但实施例不限于此。根据各种实施例,设备320可以在发送对第二条数据data 2的读取命令read cmd之前发送指示预取第二条数据data 2和第三条数据data 3的命令。在这种情况下,主机310可以通过进一步包括表示第二条数据data 2和第三条数据data 3中的一者的附加比特来发送命令。在这种情况下,当附件比特为1时,设备320可以首先预取第二条数据data 2,并且当附加比特为0时,设备320可以首先预取第三条数据data 3。换句话说,主机310可以通过发送包括附加比特的预取命令或者通过与预取命令一起发送读取命令来防止信道竞争。
116.图10是根据实施例的执行预取的信号交换图的另一示例。
117.参照图10,主机310可以加载预先存储的二叉树信息(s510)。操作s510可以对应于图9中的操作s410。
118.主机310可以向设备320发送第四集成命令fourth intg cmd(s520)。设备320可以基于在操作s510中加载的二叉树结构请求读取根节点的第一条数据data 1,同时可以请求预先预取下层节点的多条数据。
119.第四集成命令fourth intg cmd可以包括第四存储操作信息和第四高速缓存管理信息。第四存储操作信息可以包括请求读取第一条数据data 1的memrd操作代码,以及关于表示第一条数据data 1的存储区域的第一地址addr1的信息。第四高速缓存管理信息可以包括请求预取的操作代码,以及表示要被预先预取的下层节点的编号的编号信息。
120.主机310可以基于在操作s510中加载的二叉树结构来识别关于第一条数据data 1的下层节点的信息。例如,还参照图4,主机310可以基于二叉树结构识别要被预取的第一条数据data 1的根节点的下层节点(例如,第二节点、第四节点和第五节点)。主机310可以基于多个高速缓存行的使用状态(或使用模式)、当前运行的应用中稍后被请求的数据的统计信息等,预先确定要被预取的下层节点的编号。例如,除了对第一条数据data 1的读取命令
read cmd之外,主机310还可以在第四集成命令fourth intg cmd中包括表示三条信息的附加比特。此外,主机310(或主机处理器)可以基于当前运行的应用的类型、应用中的数据的输入和/或输出的统计信息以及应用的使用模式中的至少一者来生成高速缓存管理信息。
121.根据各种实施例,除了编号信息之外,第四集成命令fourth intg cmd的高速缓存管理信息还可以包括表示预取顺序的信息。例如,主机310可以请求顺序地预取下层节点,或者可以明确地表示预取节点编号的顺序。
122.设备320可以向设备附连存储器330发送对第一地址的读取命令read cmd(s530)。设备320可以对第四集成命令fourth intg cmd进行解码,并基于第四存储操作信息指示读取第一条数据data 1。此后,响应于在操作s530中接收到的读取命令read cmd,设备附连存储器330可以向设备320输出存储在第一地址addr1中的第一条数据data1(s540)。
123.设备320可以向设备附连存储器330发送指示预取多个节点的预取命令pref cmd(s550)。设备320可以基于包括在第四集成命令fourth intg cmd中的第四高速缓存管理信息来确定按照特定顺序要预取多少个下层节点。例如,当主机310请求针对第一条数据data 1顺序预取三个下层节点时,设备320可以顺序地向设备附连存储器330发送三个预取命令pref cmd。顺序发送的预取命令pref cmd可以分别表示第二地址addr2、第四地址addr4和第五地址addr5。
124.设备附连存储器330可以向设备320输出与预取命令pref cmd对应的数据(s560)。设备附连存储器330可以根据从设备320接收预取命令pref cmd的顺序输出数据。例如,当顺序地接收到分别表示第二地址addr2、第四地址addr4和第五地址addr5的预取命令pref cmd时,设备附连存储器330可以向设备320顺序地输出第二条数据data 2、第四条数据data 4和第五条数据data 5。设备320可以将接收到的数据顺序地高速缓存在设备高速缓冲存储器327中。
125.主机310可以向设备320发送请求读取第二条数据data 2的命令(s570)。因为第二条数据已经通过第四集成命令fourth intg cmd预先高速缓存在设备高速缓冲存储器327中,所以设备320可以基于读取命令read cmd确定高速缓存命中。设备320可以直接向主机310输出设备高速缓冲存储器327中存储的第二条数据data 2。
126.主机310可以向设备320发送请求读取第四条数据data 4的命令(s580)。因为第四条数据data 4已经通过第四集成命令fourth intg cmd预先高速缓存在设备高速缓冲存储器327中,所以设备320可以基于读取命令read cmd确定高速缓存命中。设备320可以直接向主机310输出设备高速缓冲存储器327中存储的第四条数据data 4。
127.图11是根据实施例的系统的框图。
128.参照图11,系统800可以包括根复合体810、与其连接的cxl存储器扩展器820和存储器830。根复合体810可以包括归属代理和i/o桥,归属代理可以基于一致性协议cxl.mem与cxl存储器扩展器820通信,并且i/o桥可以基于非一致性协议csl.io与cxl存储器扩展器820通信。在cxl协议库中,归属代理可以对应于主机侧的代理,其被布置为针对给定地址解决系统800的整体一致性。
129.cxl存储器扩展器820可以包括存储器控制器821,并且存储器控制器821可以执行存储器控制器(例如,图2中的211、图3中的322)的操作。
130.此外,根据实施例,cxl存储器扩展器820可以基于非一致性协议cxl.io或pcie经
由i/o桥向根复合体810输出数据。
131.存储器830可以包括第一存储区域m1至第n存储区域mn,并且第一存储区域m1至第n存储区域mn中的每一个存储区域可以被实现为各种单元的存储器。作为示例,当存储器830包括多个易失性存储芯片或非易失性存储芯片时,第一存储区域m1至第n存储区域mn中的每一个存储区域的单元可以是存储芯片。或者,第一存储区域m1至第n存储区域mn中的每一个存储区域的单元可以被实现为对应于在诸如半导体裸片(die)、块、存储体(bank)和区块(rank)之类的存储器中定义的各种尺寸。
132.根据一个实施例,第一存储区域m1至第n存储区域mn可以具有分层结构。例如,第一存储区域m1可以包括高层存储器,并且第n存储区域mn可以包括低层存储器。当存储器为高层时,存储器的容量相对较小,响应速度较快;当存储器为低层时,存储器的容量相对较大,响应速度较慢。由于这种差异,每个存储区域的可实现的最小延迟(或最大延迟)或最大纠错级别可以彼此不同。
133.因此,主机可以为第一存储区域m1至第n存储区域mn中的每一个存储区域设置纠错选项。在这种情况下,主机可以向存储器控制器821发送多个纠错选项设置消息。每个纠错选项设置消息可以包括参考延迟、参考纠错级别和标识存储区域的标识符。因此,存储器控制器821可以识别纠错选项设置消息的存储区域标识符,并且可以为第一存储区域m1至第n存储区域mn中的每一个存储区域设置纠错选项。
134.作为另一示例,可变纠错码(ecc)电路或固定ecc电路可以根据存储了要被读取的数据的存储区域来执行纠错操作。例如,具有高重要性的数据可以存储在高层存储器中,并且更大的权重可以赋予给准确性而不是延迟。因此,对于存储在高层存储器中的数据,可以省略可变ecc电路的操作,并且可以由固定ecc电路执行纠错操作。作为另一示例,具有低重要性的数据可以存储在低层存储器中。存储在低层存储器中的数据可以对其延迟赋予权重,并且可以省略固定ecc电路的操作。换句话说,对于具有低重要性的数据的读取请求,可以在可变ecc电路已经执行纠错操作或省略纠错操作后立即读取数据,并且可以向主机发送该数据。根据数据的重要性和存储了数据的存储区域,可以以各种方式执行选择性纠错操作和/或并行纠错操作,并且不限于上述实施例。
135.存储区域标识符也可以被包括在存储器控制器821的响应消息中。读取请求消息可以包括具有读取目标数据的地址的存储区域标识符。响应消息可以包括用于包括读取数据的存储区域的存储区域标识符。
136.图12a和图12b是根据实施例的系统的示例的框图。
137.图12a和图12b的框图分别表示包括多个cpu的系统900a和900b。将省略重复的描述。
138.参照图12a,系统900a可以包括第一cpu 11a和第二cpu 21a,以及分别连接到第一cpu 11a和第二cpu 21a的第一双倍数据速率(ddr)12a和第二ddr 22a。第一cpu 11a和第二cpu 21a可以经由基于处理器互连技术的互连系统30a彼此连接。如图12a所示,互连系统30a可以提供cpu之间的至少一个一致性链接,即cpu到cpu。
139.系统900a可以包括与第一cpu 11a通信的第一i/o设备13a和第一加速器14a,以及连接到第一加速器14a的第一设备存储器15a。第一cpu11a和第一i/o设备13a可以经由总线16a相互通信,并且第一cpu 11a和第一加速器14a可以经由总线17a相互通信。此外,系统
900a可以包括与第二cpu 21a通信的第二i/o设备23a和第二加速器24a,以及连接到第二加速器24a的第二设备存储器25a。第二cpu 21a和第二i/o设备23a可以经由总线26a相互通信,并且第二cpu 21a和第二加速器24a可以经由总线27a相互通信。
140.基于协议的通信可以经由总线16a、总线17a、总线26a和总线27a来执行,并且协议可以支持上面参照附图描述的选择性纠错操作和/或并行纠错操作。因此,可以减少对存储器(例如,第一设备存储器15a、第二设备存储器25a、第一ddr存储器12a和/或第二ddr存储器22a)进行纠错操作所需的延迟,因此可以提高系统900a的性能。
141.参照图12b,类似于图12a的系统900a,系统900b可以包括第一cpu 11b和第二cpu 21b、第一ddr存储器12b和第二ddr存储器22b、第一i/o设备13b和第二i/o设备23b以及第一加速器14b和第二加速器24b,并且还可以包括远程远存储器(remote far memory)40。第一cpu11b和第二cpu 21b可以经由互连系统30b相互通信。第一cpu 11b和第二cpu 21b可以分别经由总线16b和总线17b连接到第一i/o设备13b和第二i/o设备23b,并且第一cpu 11b和第二cpu 21b可以分别经由总线26b和总线27b连接到第一加速器14b和第二加速器24b。
142.第一cpu 11b和第二cpu 21b可以分别经由第一总线18和第二总线28连接到远程远存储器40。远程远存储器40可以用于扩展系统900b中的存储器,并且第一总线18和第二总线28可以用作存储器扩展端口。对应于第一总线18和第二总线28以及总线16b、总线17b、总线26b和总线27b的协议也可以支持上面参照附图描述的选择性纠错操作和/或并行纠错操作。因此,可以减少对远程远存储器40的纠错所需的延迟,并且可以提高系统900b的性能。
143.图13是根据实施例的包括系统的数据中心的框图。
144.参照图13,在上面一些实施例中描述的系统可以作为应用服务器和/或存储服务器被包括在数据中心1中。此外,已经应用于实施例的与存储器控制器的选择性纠错操作和/或并行纠错操作相关的实施例可以应用于应用服务器和/或存储服务器中的每一者。
145.参照图13,数据中心1可以收集各种数据,提供服务,并且可以被称为数据存储中心。例如,数据中心1可以包括用于使用搜索引擎和数据库的系统,并且可以包括由诸如银行或政府机构的法人团体使用的计算系统。如图13所示,数据中心1可以包括第一应用服务器50_1至第n应用服务器50_n以及第一存储服务器60_1至第m存储服务器60_m(n和m是大于1的整数)。第一应用服务器50_1至第n应用服务器50_n的数目n和第一存储服务器60_1至第m存储服务器60_m的数目m可以根据实施例不同地选择,但是第一应用服务器50_1至第n应用服务器50_n的数目n可以不同于第一存储服务器60_1至第m存储服务器60_m的数目m。
146.第一应用服务器50_1至第n应用服务器50_n可以包括第一处理器51_1至第n处理器51_n、第一存储器52_1至第n存储器52_n、第一交换机53_1至第n交换机53_n、第一网络接口控制器(nic)54_1至第n nic 54_n,以及第一存储设备55_1至第n存储设备55_n中的至少一者。第一处理器51_1至第n处理器51_n可以控制第一应用服务器50_1至第n应用服务器50_n的操作,并且可以通过访问第一存储器52_1至第n存储器52_n来执行加载在第一存储器52_1至第n存储器52_n中的指令和/或数据。作为非限制性示例,第一存储器52_1至第n存储器52_n可以包括双倍数据速率(ddr)同步dram(sdram)、高带宽存储器(hbm)、混合存储立方体(hmc)、双列直插式存储模块(dimm)、傲腾(optane)dimm或非易失性dimm(nvmdimm)。
147.根据实施例,可以不同地选择处理器的数目和第一应用服务器50_1至第n应用服
务器50_n中包括的处理器的数目。在一些实施例中,第一处理器51_1至第n处理器51_n和第一存储器52_1至第n存储器52_n可以提供处理器-存储器对。在一些实施例中,第一处理器51_1至第n处理器51_n的数目可以不同于第一存储器52_1至第n存储器52_n的数目。第一处理器51_1至第n处理器51_n可以包括单核处理器或多核处理器。在一些实施例中,在第一应用服务器50_1至第n应用服务器50_n中可以如图13中的虚线所示省略第一存储设备55_1至第n存储设备55_n。可以根据实施例不同地选择第一应用服务器50_1至第n应用服务器50_n中包括的第一存储设备55_1至第n存储设备55_n的数目。第一处理器51_1至第n处理器51_n、第一存储器52_1至第n存储器52_n、第一交换机53_1至第n交换机53_n、第一nic 54_1至第n nic 54_n、以及第一存储设备55_1至第n存储设备55_n可以经由上面参照附图描述的链路相互通信。
148.第一存储服务器60_1至第m存储服务器60_m可以包括第一处理器61_1至第m处理器61_m、第一存储器62_1至第m存储器62_m、第一交换机63_1至第m交换机63_m、第一nic 64_1至第m nic 64_m、以及第一存储设备65_1至第m存储设备65_m中的至少一者。第一处理器61_1至第m处理器61_m和第一存储器62_1至第m存储器62_m可以分别与第一应用服务器50_1至第n应用服务器50_n的第一处理器51_1至第n处理器51_n和第一存储器52_1至第n存储器52_n类似地运行。
149.第一应用服务器50_1至第n应用服务器50_n和第一存储服务器60_1至第m存储服务器60_m可以经由网络70相互通信。在一些实施例中,可以利用光纤通道(fc)、以太网或诸如此类来实现网络70。fc可以包括用于相对高速数据传输的介质,并且可以使用提供高性能/高可用性的光交换机。根据网络70的访问方法,第一存储服务器60_1至第m存储服务器60_m可以被提供为文件存储装置、块存储装置或对象存储装置。
150.在一些实施例中,网络70可以包括诸如存储区域网络(san)之类的存储专用网络。例如,san可以包括能够使用fc网络并根据fc协议(fcp)实现的fc-san。或者,san可以包括能够使用传输控制协议(tcp)/ip并根据互联网小型计算机系统接口(scsi)(iscsi)(即,通过tcp/ip的scsi或互联网scsi)实现的互联网协议(ip)san(ip_san)。在一些实施例中,网络70可以包括诸如tcp/ip网络之类的通用网络。例如,网络70可以根据诸如以太网fc(fcoe)、网络附加存储(nas)和光纤(of)节点版本管理器(nvm)快速(nvme)之类的协议来实现。
151.在下文中,将主要对第一应用服务器50_1和第一存储服务器60_1进行描述,但需要说明的是,对第一应用服务器50_1的描述也可以适用于其他应用服务器(例如,50_n),并且对第一存储服务器的描述也可以适用于其他存储服务器(例如,60_m)。
152.第一应用服务器50_1可以经由网络70将用户或客户端请求的数据存储在第一存储服务器60_1至第m存储服务器60_m中的一者中。此外,第一应用服务器50_1可以经由网络70获得用户或客户端请求从第一存储服务器60_1至第m存储服务器60_m中的一者读取的数据。例如,第一应用服务器50_1可以实现为网络服务器、数据库管理系统(dbms)、或诸如此类。
153.第一应用服务器50_1可以经由网络70访问第n应用服务器50_n中包括的第n存储器52_n和/或第n存储设备55_n,和/或可以经由网络70访问第一存储服务器60_1至第m存储服务器60_m中包括的第一存储器62_1至第m存储器62_m和/或第一存储设备65_1至第m存储
设备65_m。因此,第一应用服务器50_1可以对存储在第一应用服务器50_1至第n应用服务器50_n和/或第一存储服务器60_1至第m存储服务器60_m中的数据执行各种操作。例如,第一应用服务器50_1可以执行用于在第一应用服务器50_1至第n应用服务器50_n和/或第一存储服务器60_1至第m存储服务器60_m之间移动数据或复制数据的命令。在这种情况下,数据可以经由第一存储器62_1至第m存储器62_m从第一存储服务器60_1至第m存储服务器60_m的第一存储设备65_1至第m存储设备65_m移动到第一应用服务器50_1至第n应用服务器50_n或直接从第一存储服务器60_1至第m存储服务器60_m的第一存储设备65_1至第m存储设备65_m移动到第一应用服务器50_1至第n应用服务器50_n。在一些实施例中,经由网络70移动的数据可以是为了安全或隐私而加密的数据。
154.在第一存储服务器60_1中,接口if可以提供第一处理器61_1与控制器ctrl之间的物理连接以及第一nic 64_1与控制器ctrl之间的物理连接。例如,接口if可以以利用专用电缆直接连接第一存储设备65_1的直接附加存储(das)方法来实现。此外,例如,接口i/f可以以诸如以下各种接口方法来实现:高级技术附件(ata)、串行ata(sata)、外部sata(e-sata)、小型计算机系统接口(scsi)、串行附加scsi(sas)、外围组件互连(pci)、pci快速(pcie)、节点版本管理器(nvm)快速(nvme)、ieee 1394、通用串行总线(usb)、安全数字(sd)卡、多媒体卡(mmc)、嵌入式多媒体卡(emmc)、通用闪存存储(ufs)、嵌入式通用闪存(eufs)和紧凑型闪存(cf)卡。
155.在第一存储服务器60_1中,第一交换机63_1可以根据第一处理器61_1的控制,选择性地将第一处理器61_1连接到第一存储设备65_1,或者将第一nic 64_1连接到第一存储设备65_1。
156.在一些实施例中,第一nic 64_1可以包括网络接口卡、网络适配器或诸如此类。第一nic 64_1可以经由有线接口、无线接口、蓝牙接口、光接口等连接到网络70。第一nic 64_1可以包括内部存储器、数字信号处理器(dsp)、主机总线接口或诸如此类,并且可以经由主机总线接口连接到第一处理器61_1和/或第一交换机63_1。在一些实施例中,第一nic 64_1可以与第一处理器61_1、第一交换机63_1和第一存储设备65_1中的至少一者集成。
157.在第一应用服务器50_1至第n应用服务器50_n或第一存储服务器60_1至第m存储服务器60_m中,第一处理器50_1至第n处理器50_n或第一处理器61_1至第m处理器61_m可以通过分别发送命令到第一应用服务器55_1至第n应用服务器55_n或第一应用服务器65_1至第m应用服务器65_m,或者第一存储器52_1至第n存储器52_n或第一存储器62_1至第m存储器62_m来编程或读取数据。在这种情况下,数据可以是由错误检查和纠正(ecc)引擎处理的纠错数据。数据可以是通过数据总线反转(dbi)或数据屏蔽(dm)处理的数据,并且可以包括循环冗余码(crc)信息。数据可以是为了安全或隐私而加密的数据。
158.第一存储设备55_1至第n存储设备55_n或第一存储设备65_1至第m存储设备65_m可以响应于从第一处理器51_1至第n处理器51_n或第一处理器61_1至第m处理器61_m读取的读取命令read cmd,分别向nvm(例如,nand闪存器件)发送控制信号和命令信号和/或地址信号。因此,当从非易失性存储器件nvm读取数据时,可以输入读取使能信号作为数据输出控制信号,并且可以将数据输出到dq总线。可以利用读取使能信号来产生数据选通信号。可以根据写入使能信号的上升沿或下降沿来锁存命令信号和地址信号。
159.控制器ctrl可以控制第一存储设备65_1至第m存储设备65_m中的一者的操作。在
实施例中,控制器ctrl可以包括静态随机存取存储器(ram)(sram)。控制器ctrl可以响应于写入命令将数据写入非易失性存储器件nvm,或者可以响应于读取命令从非易失性存储器件nvm读取数据。例如,写入命令和/或读取命令可以基于从主机提供的请求而生成,主机例如是第一存储服务器60_1中的第一处理器61_1、第m存储服务器60_m中的第m处理器61_m、或第一应用服务器50_1至第n应用服务器50_n中的第一处理器51_1至第n处理器51_n。缓冲器buf可以临时存储(缓冲)要被写入非易失性存储器件nvm中的数据或从非易失性存储器件nvm读取的数据。在一些实施例中,缓冲器buf可以包括动态ram(dram)。此外,缓冲器buf可以存储元数据,并且元数据可以被称为用户数据或在用于管理非易失性存储器件nvm的控制器ctrl中产生的数据。第一存储设备65_1可以包括用于安全或隐私的安全元件(se)。
160.根据示例实施例,由附图中的块表示的组件、元件、模块或单元(在本段中统称为“组件”)中的至少一者可以体现为执行如上所述相应功能的各种数目的硬件、软件和/或固件结构。根据示例实施例,这些组件中的至少一个组件可以使用可以通过一个或更多个微处理器或其他控制装置的控制来执行相应功能的直接电路结构,例如存储器、处理器、逻辑电路、查找表等。此外,这些组件中的至少一个组件可以具体体现为模块、程序、或代码的一部分,其包含用于执行指定逻辑功能并由一个或更多个微处理器或其他控制装置执行的一个或更多个可执行指令。此外,这些组件中的至少一个组件可以包括诸如执行相应功能的中央处理单元(cpu)、微处理器或诸如此类的处理器或可以由诸如执行相应功能的中央处理单元(cpu)、微处理器或诸如此类的处理器来实现。这些组件中的两个或更多个组件可以组合成一个单个组件,该单个组件执行所组合的两个或更多个组件的所有操作或功能。此外,这些组件中的至少一个组件的至少部分功能可以由这些组件中的另一个组件来执行。上述示例性实施例的功能方面可以以在一个或更多个处理器上执行的算法实现。此外,由块或处理步骤表示的组件可以采用用于电子配置、信号处理和/或信号控制、数据处理等的任何数目的相关技术。
161.虽然已经参考本发明构思的示例实施例具体地示出和描述了本发明构思,但是应当理解的是,在不脱离所附权利要求的精神和范围的情况下,可以对本文进行形式和细节上的各种改变。
技术特征:
1.一种与主机处理器通信的设备,所述设备包括:第一接口电路,所述第一接口电路被配置为与所述主机处理器通信;第二接口电路,所述第二接口电路被配置为与包括多个存储区域的存储器通信;高速缓冲存储器,所述高速缓冲存储器包括被配置为临时存储数据的多个高速缓存行;以及控制器,所述控制器被配置为从所述主机处理器接收包括存储操作信息和高速缓存管理信息的集成命令,基于根据所述存储操作信息指示的第一命令控制所述存储器,以及基于所述高速缓存管理信息控制所述多个高速缓存行中的至少一个高速缓存行。2.根据权利要求1所述的设备,其中,所述集成命令还包括附加管理信息,并且其中,所述控制器包括:垃圾收集单元,所述垃圾收集单元被配置为基于所述附加管理信息指示垃圾收集,对所述存储器执行所述垃圾收集;磨损均衡单元,所述磨损均衡单元被配置为基于所述附加管理信息指示磨损均衡,对所述存储器执行所述磨损均衡;高速缓存管理单元,所述高速缓存管理单元被配置为基于所述高速缓存管理信息指示高速缓存冲刷或高速缓存保持中的至少一者,对所述高速缓冲存储器执行所述高速缓存冲刷或所述高速缓存保持中的所述至少一者;以及预取单元,所述预取单元被配置为基于所述高速缓存管理信息指示预取,将从所述存储器读取的数据预取到所述高速缓冲存储器。3.根据权利要求2所述的设备,其中,所述控制器进一步被配置为:基于所述存储操作信息向所述存储器发送对第一条数据的读取命令,基于所述高速缓存管理信息指示所述高速缓存保持,控制所述高速缓冲存储器避开对所述多个高速缓存行当中的存储了所述第一条数据的第一高速缓存行的盖写,以及基于在避开所述盖写之后接收到对所述第一条数据的所述读取命令,确定出高速缓存命中。4.根据权利要求2所述的设备,其中,所述控制器进一步被配置为:基于所述存储操作信息向所述存储器发送对第一条数据的读取命令,向所述主机处理器输出从所述存储器接收到的所述第一条数据,以及基于所述高速缓存管理信息指示所述高速缓存冲刷,控制所述高速缓冲存储器清除所述多个高速缓存行当中的存储了所述第一条数据的第一高速缓存行。5.根据权利要求4所述的设备,其中,所述控制器进一步被配置为:基于所述第一高速缓存行被清除,根据所述附加管理信息控制所述存储器,以对所述多个存储区域当中的存储了所述第一条数据的存储区域执行所述垃圾收集。6.根据权利要求2所述的设备,其中,所述控制器进一步被配置为:基于所述存储操作信息,向所述存储器发送对第一条数据的读取命令;基于所述高速缓存管理信息,向所述存储器发送对与所述第一条数据的下层节点对应的第二条数据的预取命令;将从所述存储器预取的所述第二条数据存储到所述高速缓冲存储器中;以及基于在预取所述第二条数据之后从所述主机处理器接收到对所述第二条数据的读取
命令,确定出高速缓存命中。7.根据权利要求6所述的设备,其中,所述高速缓存管理信息还包括请求预取存储在所述多个存储区域中的至少两个存储区域中的数据的信息。8.根据权利要求1所述的设备,其中,所述设备经由总线连接到所述主机处理器,并且其中,所述第一接口电路进一步被配置为基于所述总线的协议与所述主机处理器通信。9.根据权利要求1所述的设备,其中,所述高速缓存管理信息由所述主机处理器基于以下至少一项生成:运行中的应用的类型、所述应用中的数据的输入和/或输出的统计信息、或者所述应用的使用模式。10.一种系统,所述系统包括:主机处理器,所述主机处理器包括至少一个被配置为执行指令的核;设备附连存储器,所述设备附连存储器包括多个存储区域;以及设备,所述设备被配置为与所述主机处理器和所述设备附连存储器通信,其中,所述设备包括高速缓冲存储器,并且还被配置为:基于从所述主机处理器接收到的集成命令来控制所述高速缓冲存储器和所述设备附连存储器,所述集成命令包括对所述设备附连存储器中的第一条数据的读取命令和用于所述高速缓冲存储器的高速缓存管理信息。11.根据权利要求10所述的系统,其中,所述高速缓冲存储器包括多个高速缓存行,所述多个高速缓存行被配置为存储从所述设备附连存储器读取的数据,并且其中,所述设备进一步被配置为,基于所述高速缓存管理信息指示对所述第一条数据进行高速缓存保持,执行以下操作,:根据所述读取命令,从所述设备附连存储器接收所述第一条数据,将所述第一条数据存储在所述多个高速缓存行当中的第一高速缓存行上,以及对所述第一条数据执行所述高速缓存保持;以及基于在所述高速缓存保持之后接收到对所述第一条数据的所述读取命令,确定出高速缓存命中。12.根据权利要求10所述的系统,其中,所述设备进一步被配置为:根据所述读取命令,从所述设备附连存储器接收所述第一条数据,将所述第一条数据存储在所述高速缓冲存储器的多个高速缓存行当中的第一高速缓存行上,向所述主机处理器输出从所述设备附连存储器接收到的所述第一条数据,以及控制所述高速缓冲存储器清除存储了所述第一条数据的所述第一高速缓存行。13.根据权利要求12所述的系统,其中,所述设备还包括映射表,在所述映射表中指示高速缓存冲刷的高速缓存管理信息被映射到垃圾收集或磨损均衡中的至少一者,其中,所述设备进一步被配置为:基于所述映射表和指示所述高速缓存冲刷的所述高速缓存管理信息,控制对所述第一条数据执行所述垃圾收集或所述磨损均衡中的所述至少一者。14.根据权利要求10所述的系统,其中,所述设备进一步被配置为:基于所述高速缓存管理信息,向所述设备附连存储器发送对第二条数据的预取命令,所述第二条数据对应于所述第一条数据的下层节点;以及
将从所述设备附连存储器读取的所述第二条数据存储在所述高速缓冲存储器的多个高速缓存行当中的高速缓存行上,向所述主机处理器输出从所述设备附连存储器读取的所述第一条数据,以及基于在存储所述第二条数据之后从所述主机处理器接收到对所述第二条数据的读取命令确定出高速缓存命中。15.根据权利要求14所述的系统,其中,所述高速缓存管理信息还包括请求预取存储在所述多个存储区域当中的至少两个存储区域中的数据的信息。16.根据权利要求15所述的系统,其中,所述高速缓存管理信息还包括指示所述至少两个存储区域的预取顺序的信息。17.根据权利要求10所述的系统,其中,所述主机处理器经由总线连接到所述设备,并且还被配置为基于所述总线的协议与所述设备通信。18.根据权利要求17所述的系统,其中,所述协议至少包括计算快速链路协议。19.根据权利要求10所述的系统,其中,所述高速缓存管理信息由所述主机处理器基于以下至少一项生成:运行中的应用的类型、所述应用中的数据的输入和/或输出的统计信息、或者所述应用的使用模式。20.一种操作经由总线连接到主机处理器并且连接到设备附连存储器的设备的方法,所述设备附连存储器包括多个存储区域,所述方法包括:从所述主机处理器接收包括存储操作信息和高速缓存管理信息的集成命令;根据所述存储操作信息,向所述设备附连存储器发送对第一条数据的读取命令;以及根据所述高速缓存管理信息,控制包括在所述设备中的高速缓冲存储器,所述高速缓冲存储器包括多个高速缓存行,其中,所述高速缓存管理信息指示以下至少一项:对所述多个高速缓存行当中的临时存储了所述第一条数据的第一高速缓存行进行高速缓存保持、对所述第一高速缓存行进行高速缓存冲刷、或预取与所述第一条数据不同的第二条数据。21.根据权利要求20所述的方法,所述方法还包括:向所述主机处理器输出所述第一条数据;以及基于所述高速缓存管理信息指示所述高速缓存冲刷,向所述设备附连存储器发送控制信号,所述控制信号指示对所述多个存储区域当中的对应于所述第一条数据的存储区域进行垃圾收集。22.根据权利要求20所述的方法,所述方法还包括:向所述主机处理器输出所述第一条数据;基于所述高速缓存管理信息指示预取所述第二条数据,将所述第二条数据存储在所述多个高速缓存行当中的第二高速缓存行上;在输出所述第一条数据之后,接收对所述第二条数据的读取指令;以及基于接收到对所述第二条数据的所述读取命令,确定出高速缓存命中,并向所述主机处理器输出存储在所述多个高速缓存行当中的所述第二高速缓存行上的所述第二条数据。
技术总结
提供了一种与主机处理器通信的设备、包括该设备的系统以及运行该设备的方法。所述设备包括:第一接口电路,被配置为与主机处理器通信;第二接口电路,被配置为与包括多个存储区域的存储器通信;高速缓冲存储器,包括被配置为临时存储数据的多个高速缓存行;以及控制器,被配置为从主机处理器接收包括存储操作信息和高速缓存管理信息的集成命令,基于根据存储操作信息指示的第一命令控制存储器,以及基于高速缓存管理信息控制多个高速缓存行中的至少一个高速缓存行。至少一个高速缓存行。至少一个高速缓存行。
技术研发人员:郑园燮 南喜铉 李正浩
受保护的技术使用者:三星电子株式会社
技术研发日:2021.10.08
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-10777.html