CN114372011A - 用于访问设备附加存储器的***、设备和方法 - Google Patents
用于访问设备附加存储器的***、设备和方法 Download PDFInfo
- Publication number
- CN114372011A CN114372011A CN202110796960.3A CN202110796960A CN114372011A CN 114372011 A CN114372011 A CN 114372011A CN 202110796960 A CN202110796960 A CN 202110796960A CN 114372011 A CN114372011 A CN 114372011A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- host processor
- message
- controller
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0828—Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了一种用于访问设备附加存储器的***、设备和方法。经由总线连接到主机处理器的设备包括:加速器电路,所述加速器电路被配置为基于从所述主机处理器接收到的消息进行操作;和控制器,所述控制器被配置为控制对连接到所述设备的存储器的访问,其中,所述控制器还被配置为响应于从所述加速器电路接收到的读取请求向所述主机处理器提供请求一致性解析的第一消息,以及从所述存储器预取第一数据。
Description
相关申请的交叉引用
本申请基于2020年10月15日在韩国知识产权局提交的韩国专利申请No.10-2020-0133743并要求该申请的优先权,该专利申请的公开内容通过引用整体合并于此。
技术领域
示例实施例涉及存储器访问,并且更具体地,涉及用于访问设备附加存储器(device-attached memory)的***、设备和方法。
背景技术
被配置为处理数据的装置可以通过访问存储器来执行各种操作。例如,装置可以处理从存储器读取的数据或将处理后的数据写入存储器。根据***所需的性能和功能,通过被配置为提供高带宽和低延迟的链路而彼此通信的各种装置可以被包括在***中。***中包括的存储器可以被两个或更多个装置共享和访问。因此,***的性能不仅取决于每个装置的操作速度,还取决于装置之间的通信效率以及访问存储器所花费的时间。
发明内容
示例实施例提供了用于减少存储器访问的延迟的***、设备和方法。
根据示例实施例的一方面,提供了一种经由总线连接到主机处理器的设备,所述设备包括:加速器电路,所述加速器电路被配置为基于从所述主机处理器接收到的消息进行操作;和控制器,所述控制器被配置为控制对连接到所述设备的存储器的访问,其中,所述控制器还被配置为响应于从所述加速器电路接收到的读取请求向所述主机处理器提供请求一致性解析的第一消息,以及从所述存储器预取第一数据。
根据示例实施例的一方面,提供了一种***,包括:主机处理器,所述主机处理器包括至少一个被配置为执行指令的核;设备,所述设备经由总线连接到所述主机处理器,并且被配置为被设置为主机偏置模式或设备偏置模式;和存储器,所述存储器连接到所述设备,并且被配置为被所述主机处理器通过所述设备访问,其中,所述设备还被配置为在所述主机偏置模式下向所述主机处理器提供请求一致性解析的第一消息,以及在从所述主机处理器接收到指示完成了所述一致性解析的第二消息之前从所述存储器预取第一数据。
根据示例实施例的一方面,提供了一种操作经由总线连接到主机处理器的设备的方法,所述方法包括:将主机偏置模式设置为用于访问连接到所述设备的存储器的模式;经由所述总线向所述主机处理器提供第一消息,所述第一消息请求对所述存储器中的与地址相对应的区域进行一致性解析;基于所述地址从所述存储器中的所述区域预取第一数据;和经由所述总线从所述主机处理器接收第二消息,所述第二消息指示完成了对所述存储器中的所述区域的所述一致性解析,其中,在接收到所述第二消息之前开始所述第一数据的预取。
附图说明
通过下面结合附图的详细描述,将更清楚地理解示例实施例,在附图中:
图1是根据示例实施例的***的框图;
图2A和图2B是根据示例实施例的***的示例的框图;
图3A和图3B是访问设备附加存储器的方法的示例的消息图;
图4是根据示例实施例的***的框图;
图5是根据示例实施例的访问设备附加存储器的方法的消息图;
图6是根据示例实施例的缓冲器的框图;
图7是根据示例实施例的设备存储器的框图;
图8是根据示例实施例的访问设备附加存储器的方法的消息图;
图9是根据示例实施例的访问设备附加存储器的方法的流程图;
图10是根据示例实施例的访问设备附加存储器的方法的流程图;
图11A和图11B是根据示例实施例的访问设备附加存储器的方法的示例的流程图;
图12是根据示例实施例的***的框图;和
图13是包括根据示例实施例的***的数据中心的框图。
具体实施方式
图1是根据示例实施例的***100的框图。***100可以是包括彼此通信的设备110和主机处理器120的任意计算***(或计算***中包括的组件)。例如,***100可以被包括在诸如台式计算机、服务器或自助服务终端之类的固定计算***中,或者诸如膝上型计算机、移动电话或可穿戴设备之类的便携式计算***中。另外,在一些实施例中,***100可以被包括在片上***(SoC)或***级封装件(SiP)中,其中,设备110和主机处理器120被实现在单个芯片或封装件中。如图1所示,***100可以包括设备110、主机处理器120、设备存储器130和主机存储器140。
参照图1,设备110和主机处理器120可以经由链路150彼此通信,并且可以经由链路150在它们之间发送或接收消息和/或数据。尽管将参照基于支持计算快速链路(computeexpress link,CXL)协议的CXL规范的链路150来描述本公开的示例实施例,但是作为非限制性示例,设备110和主机处理器120可以基于诸如XBus协议、NVLink协议、无穷结构协议、加速器高速缓存一致性互连(cache coherent interconnect for accelerators,CCIX)协议和一致性加速器处理器接口(CAPI)之类的一致性互连技术彼此通信。
在一些实施例中,链路150可以支持多种协议,并且消息和/或数据可以通过多种协议来发送。例如,链路150可以支持包括非一致性协议(例如,CXL.io)、一致性协议(例如,CXL.cache)和存储器访问协议(或存储器协议)(例如,CXL.mem)的CXL协议。在一些实施例中,作为非限制性示例,链路150可以支持诸如***组件互连(PCI)、快速PCI(PCIe)、通用串行总线(USB)和串行高级技术附件(SATA)之类的协议。在本文中,链路150支持的协议可以被称为互连协议。
在一些实施例中,设备110可以指用于向主机处理器120提供有用功能的任意设备,并且对应于CXL规范的加速器。例如,由主机处理器120执行的软件可以将计算和/或输入/输出(I/O)任务的至少一部分转移(offload)到设备110。在一些实施例中,设备110可以包括下面至少一种:可编程组件,例如图形处理单元(GPU)和神经处理单元(NPU);被配置为提供固定功能的组件,例如知识产权(IP)核;以及可重新配置的组件,例如现场可编程门阵列(FPGA)。如图1所示,设备110可以包括物理层111、多协议多路复用器(MUX)112、接口电路113和加速器电路114,并且可以与设备存储器130通信。
加速器电路114可以执行由设备110提供给主机处理器120的有用功能,并且可以被称为加速器逻辑。如图1所示,加速器电路114可以使用多种协议通过接口电路113与主机处理器120通信。接口电路113可以基于用于在加速器电路114与主机处理器120之间进行通信的消息和/或数据来确定多种协议中的一种协议。接口电路113可以连接到多协议多路复用器112中包括的至少一个协议队列,并且通过至少一个协议队列向主机处理器120发送消息和/或数据和从主机处理器120接收消息和/或数据。在一些实施例中,接口电路113和多协议多路复用器112可以被集成在一个组件中。在一些实施例中,多协议多路复用器112可以包括分别与由链路150支持的多种协议相对应的多个协议队列。另外,在一些实施例中,多协议多路复用器112可以在不同协议的通信之间进行仲裁,并且向物理层111提供所选择的通信。在一些实施例中,物理层111可以通过单个互连件、总线、迹线(trace)等连接到主机处理器120中的物理层121。
设备存储器130可以如图1所示连接到设备110,并且被称为设备附加存储器。如图1所示,当设备存储器130被包括在***100中时,加速器电路114可以基于独立于链路150的协议(即,设备专用协议)与设备存储器130通信。在一些实施例中,如下面参照图2A和图2B描述的,设备110可以包括控制器,该控制器作为被配置为访问设备存储器130的组件,并且加速器电路114可以通过控制器访问设备存储器130。控制器不仅可以提供加速器电路114对设备存储器130的访问,还可以提供主机处理器120经由链路150对设备存储器130的访问。在一些实施例中,设备存储器130可以对应于CXL规范的设备附加存储器。
主机处理器120可以是***100的主处理器,例如中央处理单元(CPU),并且在一些实施例中,主机处理器120可以对应于CXL规范的主机处理器(或主机)。如图1所示,主机处理器120可以连接到主机存储器140,并且包括物理层121、多协议多路复用器(MUX)122、接口电路123、一致性/高速缓存电路(coherence/cache circuit)124、总线电路125、至少一个核126以及I/O设备127。
至少一个核126可以执行指令,并且可以连接到一致性/高速缓存电路124。一致性/高速缓存电路124可以包括高速缓存层级,并且可以被称为一致性/高速缓存逻辑。如图1所示,一致性/高速缓存电路124可以与至少一个核126和接口电路123通信。例如,一致性/高速缓存电路124可以实现通过包括一致性协议和存储器访问协议的两种或更多种协议的通信。在一些实施例中,一致性/高速缓存电路124可以包括直接存储器访问(DMA)电路。I/O设备127可以用于与总线电路125通信。例如,总线电路125可以是PCIe逻辑,并且I/O设备127可以是PCIe I/O设备。
接口电路123可以实现主机处理器120的组件(例如,一致性/高速缓存电路124和总线电路125)与设备110之间的通信。在一些实施例中,接口电路123可以根据多种协议(例如,非一致性协议、一致性协议和存储器协议)实现主机处理器120的组件与设备110之间的消息和/或数据的通信。例如,接口电路123可以基于用于主机处理器120的组件与设备110之间的通信的消息和/或数据来确定多种协议中的一种协议。
多协议多路复用器122可以包括至少一个协议队列。接口电路123可以连接到至少一个协议队列,并且通过至少一个协议队列向设备110发送消息和/或数据和从设备110接收消息和/或数据。在一些实施例中,接口电路123和多协议多路复用器122可以被集成到一个组件中。在一些实施例中,多协议多路复用器122可以包括分别与由链路150支持的多种协议相对应的多个协议队列。另外,在一些实施例中,多协议多路复用器122可以在不同协议的通信之间进行仲裁,并且向物理层121提供所选择的通信。
设备110可以具有取决于设备110与设备存储器130之间的带宽的性能,因此,可以在设备110与设备存储器130之间提供很大的带宽。另外,主机处理器120可以通过链路150和设备110访问设备存储器130。为了优化对设备存储器130的访问的性能,可以动态设置对设备存储器130的访问模式。例如,如下面参照图2A和图2B所述,可以在设备存储器130主要被设备110访问的时段内设置设备偏置模式,并且可以在设备存储器130主要被主机处理器120访问的时段内设置主机偏置模式。
为了执行任务,即使在主机偏置模式下,设备110也可以在设备存储器130中写入数据或从设备存储器130读取数据。为此,如下面参照图2A和2B所述,在访问设备存储器130之前,在主机偏置模式下设备110可能需要向主机处理器120发送消息和从主机处理器120接收消息,因此,在主机偏置模式下设备110对设备存储器130的访问可能被延迟。如下面参照附图所述,在主机处理器120频繁访问设备存储器130的情况下,即在主机偏置模式下,设备110可以与和主机处理器120的通信并行地从设备存储器130预取(prefetch)数据,因此,可以减少设备110对设备存储器130的访问延迟。另外,由于减少了设备110对设备存储器130的访问延迟,因此不仅可以提高设备110执行任务的效率,而且可以改善***100的性能。
图2A和图2B是根据示例实施例的***的示例的框图。特别地,图2A的框图示出了被设置为设备偏置模式作为对设备存储器230a的访问模式的***200a,并且图2B的框图示出了被设置为主机偏置模式作为对设备存储器230b的访问模式的***200b。设备偏置模式和主机偏置模式可以以任意方式在彼此之间切换,例如,基于CXL规范的软件辅助和/或硬件自主性在彼此之间动态地切换。在图2A和图2B中,虚线箭头表示用于设备210a或210b对设备存储器230a或230b的访问的通信,并且实线箭头表示用于主机处理器220a或220b对设备存储器230a或230b的访问的通信。在下文中,将省略先前相对于图2A和图2B给出的描述。
参照图2A,***200a可以包括设备210a、主机处理器220a和设备存储器230a。设备210a可以包括能够与主机处理器220a和设备存储器230a通信的控制器211a,并且在一些实施例中,控制器211a可以对应于CXL规范的数据一致性引擎(DCOH)。尽管在图2A中未示出,但是,设备210a还可以包括被配置为执行由设备210a提供给主机处理器220a的功能并且通过控制器211a访问设备存储器230a的组件(例如,图1的加速器电路114)。
主机处理器220a可以包括一致性桥接器(coherence bridge)222a和一致性引擎221a。一致性桥接器222a可以基于定义设备210a与主机处理器220a之间的交互的一致性协议(例如,CXL.cache)与设备210a通信。例如,一致性桥接器222a可以从设备210a接收请求(例如,D2H请求)、响应(例如,D2H响应)和数据(例如,D2H数据),并且向设备210a提供请求(例如,H2D请求)、响应(例如,H2D响应)和数据(例如,H2D数据)。一致性引擎221a可以基于存储器协议(例如,CXL.mem)与设备210a通信,并且解析给定地址的一致性。在一些实施例中,一致性引擎221a可以对应于CXL规范的本地代理。
可以为了要由设备210a执行的任务的效率设置设备偏置模式,并且在设备偏置模式下,设备210a可以基于高带宽和低延迟来访问设备存储器230a。例如,如图2A中的虚线箭头所标示的,控制器211a可以访问设备存储器230a而无需咨询主机处理器220a中的一致性引擎221a。另外,在设备偏置模式下,主机处理器220a可以访问设备存储器230a,但是如图2A中的实线箭头所标示的,主机处理器220a可以通过执行与设备210a的通信C1然后执行与控制器211a的通信C2来访问设备存储器230a。
参照图2B,***200b可以包括设备210b、主机处理器220b和设备存储器230b。设备210b可以包括控制器211b,并且主机处理器220b可以包括一致性桥接器222b和一致性引擎221b。尽管在图2B中未示出,但是设备210b还可以包括被配置为执行由设备210b提供给主机处理器220b的功能并且通过控制器211b访问设备存储器230b的组件(例如,图1的加速器电路114)。
可以为主机处理器220b访问设备存储器230b设置主机偏置模式,并且在主机偏置模式下,设备210b对设备存储器230b的访问可能不是最佳的。例如,可以为主机处理器220b推送用于要在设备210b中执行的任务的输入(例如,运算对象)或提取由设备210b执行的任务的结果,设置主机偏置模式。如图2B中的实线箭头所标示的,在主机偏置模式下,主机处理器220b可以通过控制器211b访问设备存储器230b,这类似于访问主机存储器(例如,图1的140)。
为了通过设备210b或设备210b中包括的加速器电路执行任务,即使在主机偏置模式下,也可能需要设备210b对设备存储器230b的访问。当设备210b在主机偏置模式下访问设备存储器230b时,为了存储器一致性,如图2B中的虚线箭头所标示的,控制器211b可以通过执行与主机处理器220b的通信C3来请求对设备存储器230b的访问的许可,通过执行与主机处理器220b的通信C4来从主机处理器220b接收对设备存储器230b的访问的许可,然后通过通信C5访问设备存储器230b。因此,在主机偏置模式下,设备210b对设备存储器230b的访问可能被延迟。
图3A和图3B是访问设备附加存储器的方法的示例的消息图。特别地,图3A的消息图示出了根据比较示例的在主机偏置模式下设备310a对设备存储器330a的访问,并且图3B示出了根据本发明构思的示例实施例的在主机偏置模式下设备310b对设备存储器330b的访问。在下文中,将省略先前相对于图3A和图3B给出的描述。
参照图3A,在操作S31中,设备310a可以向主机处理器320a提供包括地址ADR的第一消息MSG1。例如,设备310a可以向主机处理器320a提供包括地址ADR的第一消息MSG1,以便读取存储在设备存储器330a的与地址ADR相对应的区域中的数据DAT。在一些实施例中,如下面参照图9所述,第一消息MSG1可以请求对与地址ADR相对应的区域的一致性解析。在一些实施例中,可以基于一致性协议(例如,CXL.cache)将第一消息MSG1从设备310a提供给主机处理器320a。
在操作S32中,主机处理器320a可以向设备310a提供第二消息MSG2。例如,响应于在操作S31中接收到的第一消息MSG1,主机处理器320a可以通过第二消息MSG2许可设备310a对设备存储器330a的与第一消息MSG1中包括的地址ADR相对应的区域的访问。在一些实施例中,如下面参照图9所述,第二消息MSG2可以指示完成了对与地址ADR相对应的区域的一致性解析。在一些实施例中,可以基于存储器协议(例如,CXL.mem)将第二消息MSG2从主机处理器320a提供给设备310a。
在操作S33中,设备310a可以向设备存储器330a提供读取命令CMD和地址ADR,并且在操作S34中,设备存储器330a可以向设备310a提供数据DAT。例如,响应于在操作S32中接收到的第二消息MSG2,设备310a可以向设备存储器330a提供读取命令CMD和地址ADR,以从设备存储器330a的与地址ADR相对应的区域读取数据DAT。设备存储器330a可以响应于读取命令CMD向设备310a提供存储在与地址ADR相对应的区域中的数据DAT。如上面参照图1所述,设备310a和设备存储器330a可以基于设备专用协议彼此通信。
参照图3B,在操作S35中,设备310b可以向主机处理器320b提供包括地址ADR的第一消息MSG1。例如,设备310b可以向主机处理器320b提供包括地址ADR的第一消息MSG1,以便读取存储在设备存储器330b的与地址ADR相对应的区域中的数据DAT。
在操作S36中,设备310b可以向设备存储器330b提供读取命令CMD和地址ADR。与图3A的示例相比,设备310b可以在接收到从主机处理器320b提供的第二消息MSG2之前,向设备存储器330b提供读取命令CMD和地址ADR。即,设备310b可以在接收到从主机处理器320b提供的第二消息MSG2之前,开始从设备存储器330b读取数据DAT的操作。在一些实施例中,与图3B中所示的不同,操作S36可以与操作S35并行地执行,或者可以顺序地执行操作S36和操作S35。
在操作S37中,主机处理器320b可以向设备310b提供第二消息MSG2。例如,响应于在操作S35中接收到的第一消息MSG1,主机处理器320b可以通过第二消息MSG2来许可设备310b对设备存储器330b的与第一消息MSG1中包括的地址ADR相对应的区域的访问。
在操作S38中,设备存储器330b可以向设备310b提供数据DAT。例如,设备存储器330b可以响应于在操作S36中接收到的读取命令CMD,向设备310b提供存储在与地址ADR相对应的区域中的数据DAT。在一些实施例中,与图3B中所示的不同,设备310b可以同时接收第二消息MSG2和数据DAT,或者在接收第二消息MSG2之前接收数据DAT。
图3B的设备310b可以比图3A的设备310a更早地使用数据DAT。例如,图3A的设备310a可以在操作S34中从设备存储器330a接收数据DAT之后使用数据DAT,因此,图3A的设备310a可以在从在操作S31中第一消息MSG1被提供给主机处理器320a的时间点起经过了时间T31的时间点使用数据DAT。作为另一示例,图3B的设备310b可以在操作S38中接收到数据DAT的时间点和在操作S37中从主机处理器320b接收到第二消息MSG2的时间点当中的较晚时间点使用数据DAT。因此,图3B的设备310b可以在从在操作S35中第一消息MSG1被提供给主机处理器320b的时间点起经过了时间T32的时间点使用数据DAT。与图3A的示例不同,在图3B的示例中,从设备存储器330b读取数据DAT所花费的时间段可以至少部分地与和主机处理器320b通信的时间段重叠,因此,在图3B中设备310b对设备存储器330b的访问延迟可以短于在图3A中设备310a对设备存储器330a的访问延迟(T32<T31)。在本文中,与图3B的示例相同,在从主机处理器320b接收到第二消息MSG2之前开始或执行从设备存储器330b读取数据DAT的操作可以被称为数据DAT的预取。在一些实施例中,数据DAT的预取可以包括如图3B所示的由设备310b执行的从设备存储器330b接收数据DAT的操作,或者包括如下面参照图8所述的将数据DAT从设备存储器330b内部的较低层存储器复制到较高层存储器的操作。
图4是根据示例实施例的***400的框图。特别地,图4的框图示出了设备410以及主机处理器420和设备存储器430的示例结构。参照图4,设备410可以包括加速器电路412、控制器414和缓冲器416。
加速器电路412可以执行由设备410提供给主机处理器420的功能,如上面参照图1所述。为此,加速器电路412可以通过控制器414与主机处理器420通信并且访问设备存储器430。在一些实施例中,加速器电路412可以与缓冲器416通信,即,从缓冲器416接收数据或将数据提供给缓冲器416。
控制器414可以控制对设备存储器430的访问,并且可以被称为一致性引擎。例如,控制器414可以被设置为设备偏置模式或主机偏置模式,并且基于所设置的模式来控制加速器电路412和/或主机处理器420对设备存储器430的访问。在一些实施例中,控制器414可以向主机处理器420提供第一消息MSG1,并且对设备存储器430执行读取操作,如上面参照图3B所描述的。下面将参照图5等来描述控制器414的操作的示例。
缓冲器416可以与控制器414通信,并且临时存储从控制器414提供的数据。例如,控制器414可以将从设备存储器430读取的数据和/或要写入设备存储器430的数据临时存储在缓冲器416中。在一些实施例中,如下面参照图6所述,控制器414可以将从设备存储器430预取的数据存储在缓冲器416中。
图5是根据示例实施例的访问设备附加存储器的方法的消息图。特别地,图5的消息图示出了随时间在设备存储器530、主机处理器520以及设备中包括的加速器电路512和控制器514之间发送和接收的消息和/或数据。在图5的示例中,假定控制器514和主机处理器520被设置为主机偏置模式。
参照图5,在操作S51中,加速器电路512可以向控制器514提供包括地址ADR的读取请求REQ。例如,加速器电路512可以要求存储在设备存储器530的与地址ADR相对应的区域中的数据DAT以执行给定功能,因此,加速器电路512可以向控制器514提供包括地址ADR的读取请求REQ。
在操作S52中,控制器514可以向主机处理器520提供包括地址ADR的第一消息MSG1。在主机偏置模式下,控制器514可以向主机处理器520提供包括地址ADR的第一消息MSG1,以便处理从加速器电路512提供的读取请求REQ。
在操作S53中,控制器514可以向设备存储器530提供读取命令CMD和地址ADR。例如,为了预取数据DAT,控制器514可以在从主机处理器520接收到第二消息MSG2之前向设备存储器530提供读取命令CMD和地址ADR。
在操作S54中,主机处理器520可以向控制器514提供第二消息MSG2。例如,在操作S52中从控制器514接收到的第一消息MSG1可以请求对设备存储器530的与地址ADR相对应的区域的一致性解析,并且主机处理器520可以向控制器514提供指示完成了一致性解析的第二消息MSG2。在一些实施例中,第二消息MSG2可以对应于由CXL规范的CXL.mem协议支持的MemRdFwd。
在操作S55中,设备存储器530可以向控制器514提供数据DAT。例如,设备存储器530可以响应于在操作S53中接收到的读取命令CMD向控制器514提供存储在与地址ADR相对应的区域中的数据DAT。如上面参照图3B所述,在一些实施例中,控制器514可以在接收第二消息MSG2之前接收数据DAT,或者同时接收第二消息MSG2和数据DAT。
在操作S56中,控制器514可以向加速器电路512提供包括数据DAT的响应RES。如上所述,由于控制器514对数据DAT的预取,向主机处理器520提供第一消息MSG1和从主机处理器520接收第二消息MSG2的时间段可以至少部分地与从设备存储器530读取数据DAT的时间段重叠。因此,可以减少从加速器电路512发出包括地址ADR的读取请求REQ的时间点到加速器电路512接收到包括数据DAT的响应RES的时间点所花费的时间,结果,加速器电路512可以较早地基于数据DAT完成任务。
图6是根据示例实施例的缓冲器600的框图。特别地,图6的缓冲器600可以是图4的缓冲器416的示例,并且对应于图5的操作S55结束之后的状态。在下文中,将参照图5描述图6,并且假设图5的控制器514访问图6的缓冲器600。
在一些实施例中,控制器514可以通过从设备存储器530读取数据DAT并将读取的数据DAT存储在缓冲器600中来预取数据DAT。例如,如图6所示,控制器514可以将包括从设备存储器530读取的数据DAT的第一条目601存储在缓冲器600中。当数据DAT被完全存储在缓冲器600中时,控制器514可以将数据DAT从缓冲器600提供给加速器电路512。
如图6所示,第一条目601可以包括就绪字段RDY和数据字段DATA。数据字段DATA可以包括从设备存储器530读取的数据,并且就绪字段RDY可以指示数据是否被完全存储在数据字段DATA中。例如,如图6所示,第一条目601可以在数据字段DATA中完全包括数据DAT,因此,就绪字段RDY可以具有值“1”。
控制器514可以基于包括在就绪字段RDY中的值向加速器电路512提供数据DAT。例如,当从加速器电路512接收到读取请求REQ时,控制器514可以在缓冲器600中生成包括具有值“0”的就绪字段RDY的第一条目601。当从主机处理器520接收到第二消息MSG2时,控制器514可以基于第一条目601中的就绪字段RDY的值,提供存储在缓冲器600中的数据DAT,或者等待直到数据DAT被完全存储在缓冲器600中。
图7是根据示例实施例的设备存储器700的框图。特别地,图7的设备存储器700可以是图4的设备存储器430的示例,并且在下文中,将参照图4描述图7,并且假定图4的设备存储器430是图7的设备存储器700。
在一些实施例中,设备存储器700可以具有分层结构。例如,如图7所示,设备存储器700可以包括第一层存储器L1至第n层存储器Ln(n是大于1的整数)。较高层存储器(例如,靠近第一层存储器L1的存储器)可以具有相对小的容量和相对快的响应速度,而较低层存储器(例如,靠近第n层存储器Ln的存储器)可以具有相对大的容量和相对慢的响应速度。
控制器414可以通过将存储在较低层存储器中的数据复制到较高层存储器来执行数据预取。例如,如图7所示,控制器414可以将存储在与地址ADR相对应的第n层存储器Ln的区域中的数据DAT复制到第一层存储器L1,并且还可以将地址ADR存储在第一层存储器L1中,以便响应于从加速器电路412接收到的包括地址ADR的读取请求REQ来预取数据DAT。与数据DAT仅存储在第n层存储器Ln中的情况相比,当数据DAT如图7所示被存储在第一层存储器L1中时,可以更早地从设备存储器700读取数据DAT。下面将参照图8描述访问如图7的设备存储器700的分层结构的设备存储器的方法的示例。
图8是根据示例实施例的访问设备附加存储器的方法的消息图。特别地,图8的消息图示出了随时间在主机处理器820、设备存储器中包括的近存储器832和远存储器834以及设备中包括的加速器电路812和控制器814之间发送和接收的消息和/或数据。在一些实施例中,图8的近存储器832可以对应于图7的第一层存储器L1,并且图8的远存储器834可以对应于图7的第n层存储器Ln。在图8的示例中,假定控制器814和主机处理器820被设置为主机偏置模式。
参照图8,在操作S81中,加速器电路812可以向控制器814提供包括地址ADR的读取请求REQ。例如,加速器电路812可以要求存储在与地址ADR相对应的远存储器834的区域中的数据DAT以执行给定功能,因此,加速器电路812可以向控制器814提供包括地址ADR的读取请求REQ。
在操作S82中,控制器814可以向主机处理器820提供包括地址ADR的第一消息MSG1。在主机偏置模式下,控制器814可以向主机处理器820提供包括地址ADR的第一消息MSG1,以便处理从加速器电路812提供的读取请求REQ。在操作S83中,控制器814可以向远存储器834提供第一读取命令CMD1和地址ADR。尽管为了方便理解图8示出了将第一读取命令CMD1和地址ADR提供给远存储器834,但是在一些实施例中,可以将第一读取命令CMD1和地址ADR提供给设备存储器中包括的控制对近存储器832和远存储器834的访问的存储器控制器。
在操作S84中,远存储器834可以响应于第一读取命令CMD1和第一地址ADR向近存储器832提供数据DAT。在操作S85中,主机处理器820可以响应于第一消息MSG1向控制器814提供第二消息MSG2。在操作S86中,控制器814可以响应于第二消息MSG2向近存储器832提供第二读取命令CMD2和地址ADR。
在操作S87中,近存储器832可以向控制器814提供数据DAT。例如,响应于在操作S86中接收到的第二读取命令CMD2,设备存储器中包括的控制器可以识别近存储器832中的包括地址ADR的条目,从近存储器832读取所识别的条目中包括的数据DAT,并且向控制器814提供读取的数据DAT。通过从近存储器832提供数据DAT,可以减少从控制器814从主机处理器820接收第二消息MSG2到控制器814从设备存储器接收数据DAT所花费的时间。
在操作S88中,控制器814可以向加速器电路812提供包括数据DAT的响应RES。如上所述,由于控制器814的预取,向主机处理器820提供第一消息MSG1以及从主机处理器820接收第二消息MSG2的时间段可以至少部分地与从设备存储器中的远存储器834读取数据DAT的时间段重叠。因此,可以减少从加速器电路812发出包括地址ADR的读取请求REQ的时间点到加速器电路812接收到包括数据DAT的响应RES的时间点所所花费的时间,结果,加速器电路812可以较早地基于数据DAT完成任务。
图9是根据示例实施例的访问设备附加存储器的方法的流程图。特别地,图9的流程图示出了设备读取存储在设备附加存储器中的数据的操作方法的示例。如图9所示,访问设备附加存储器的方法可以包括多个操作S110至S190。在一些实施例中,图9的方法可以由图4的设备410执行,并且在下文中,将参照图4描述图9。
参照图9,在操作S110中,可以确定是否触发读取。例如,加速器电路412可以通过发出对存储在设备存储器430中的数据的读取请求来触发数据读取(或读取操作),以便执行任务。控制器414可以从加速器电路412接收包括地址的读取请求。如图9所示,当触发了设备410对设备存储器430的读取操作时,随后可以执行操作S120。
在操作S120中,可以确定用于访问设备存储器430的偏置模式。例如,当控制器414从加速器电路412接收到读取请求时,控制器414可以识别当前设置的模式是设备偏置模式还是主机偏置模式。如上面参照图2A和图2B所述,可以以各种方式来设置用于访问设备存储器430的偏置模式,并且控制器414可以识别所设置的偏置模式。如图9所示,当识别出设备偏置模式时,随后可以执行操作S130。否则,当识别出主机偏置模式时,随后可以并行地执行操作S150和S170。
当在操作S120中识别出设备偏置模式时,可以在操作S130中从设备存储器430读取数据。例如,如上面参照图2A所述,在设备偏置模式下,设备410可以独立于主机处理器420,基于高带宽和低延迟访问设备存储器430。因此,当在设备偏置模式下接收到加速器电路412的读取请求时,控制器414可以基于读取请求中包括的地址从设备存储器430读取数据。在一些实施例中,控制器414可以将从设备存储器430读取的数据存储在缓冲器416中。
在操作S140中,可以使用读取的数据。例如,加速器电路412可以从控制器414接收包括数据的响应,并且基于接收到的数据来执行任务。在一些实施例中,加速器电路412可以(例如,通过控制器414)从缓冲器416接收数据。
当在操作S120中识别出主机偏置模式时,可以在操作S150中请求一致性解析。例如,控制器414可以向主机处理器420提供在操作S110中接收到的读取请求中包括的地址,并且请求对设备存储器430的与地址相对应的区域的一致性解析。在主机偏置模式下,因为设备存储器430的存储器一致性由主机处理器420管理,所以控制器414可以向主机处理器420提供用于请求一致性解析的消息(例如,图5的MSG1)。下面将参照图10描述操作S150的示例。
在操作S160中,可以完成一致性解析。例如,主机处理器420可以完成已经从设备410中的控制器414请求的一致性解析,并且向设备410的控制器414提供指示完成了一致性解析的消息(例如,图5的MSG2)。在一些实施例中,主机处理器420可以向控制器414提供由CXL规范的CXL.mem协议支持的MemRdFwd,并且MemRdFwd可以指示数据从设备存储器430被转发到设备410,而无需主机处理器420完成任何操作。下面将参照图10描述操作S160的示例。
当在操作S120中识别出主机偏置模式时,可以与操作S150和S160并行地在操作S170中预取数据。例如,控制器414可以与和主机处理器420通信以解析一致性并行地从设备存储器430预取数据。因此,如下面参照附图所述,可以减少加速器电路412在主机偏置模式下获取数据所花费的时间。下面将参照图11A和图11B描述操作S170的示例。
在操作S160和S170之后,可以在操作S180中确定预取是否完成。例如,根据与操作S150和S160并行地执行操作S170,在操作S160中完成一致性解析的时间点(即,控制器414从主机处理器420接收到指示一致性解析的消息(例如,图5的MSG2)的时间点),数据可能无法完全被预取。在一些实施例中,控制器414可以基于如上面参照图6所述的缓冲器600中的就绪字段RDY的值来确定是否完成预取。另外,在一些实施例中,当数据预取包括从设备存储器430中的较低层存储器到较高层存储器的数据复制时,控制器414可以通过读取存储在设备存储器430中的较高层存储器中的数据来确定预取的完成。如图9所示,当预取完成时,随后可以执行操作S190。
在操作S190中,可以使用预取的数据。例如,加速器电路412可以接收由控制器414预取的数据,并且基于接收到的数据来执行任务。在一些实施例中,当由控制器414预取的数据被存储在缓冲器416中时,加速器电路412可以接收存储在缓冲器416中的数据。
图10是根据示例实施例的访问设备附加存储器的方法的流程图。特别地,图10的流程图示出了图9的操作S150和S160的示例。如上面参照图9所述,可以在图10的操作S150'中请求一致性解析,并且可以在操作S160'中完成一致性解析。在一些实施例中,图10的操作S150'和S160'可以由图4的控制器414执行,并且在下文中,将参照图4和图9描述图10。
在图9的操作S120之后,在操作S150'中,可以基于第一协议向主机处理器420提供第一消息MSG1。如上面参照图1所述,设备410和主机处理器420可以基于多种协议彼此通信,并且控制器414可以基于多种协议中的第一协议向主机处理器420提供用于请求一致性解析的第一消息MSG1。在一些实施例中,第一协议是一致性协议,并且可以对应于CXL规范的CXL.cache,并且第一消息MSG1可以对应于CXL规范的Rd*。
在操作S160'中,可以基于第二协议从主机处理器420接收第二消息MSG2。即,可以基于第二协议来接收第二消息MSG2,该第二协议不同于在操作S150'中用于提供第一消息MSG1的第一协议。在一些实施例中,第二协议是存储器协议,并且可以对应于CXL规范的CXL.mem,并且第二消息MSG2可以对应于CXL规范的MemRdFwd。如图10所示,可以在操作S160'之后执行图9的操作S180。
图11A和图11B是根据示例实施例的访问设备附加存储器的方法的示例的流程图。特别地,图11A和图11B的流程图分别示出了图9的操作S170的示例。如上面参照图9所述,可以在操作S170中预取数据。在一些实施例中,图11A的操作S170'和图11B的操作S170”可以由图4的控制器414和/或设备存储器430执行,并且在下文中,将参照图4和图9描述图11A和图11B。
参照图11A,操作S170'可以包括多个操作S171至S174。在操作S171中,可以从设备存储器430读取数据。例如,控制器414可以基于从加速器电路412接收到的读取请求中包括的地址来从设备存储器430读取数据。接下来,在操作S172中,可以将读取的数据存储在缓冲器416中。例如,控制器414可以将从设备存储器430接收到的数据顺序地存储在缓冲器416中。在一些实施例中,控制器414可以去激活存储在缓冲器416中的数据的就绪信息。例如,如上面参照图6所述,控制器414可以在缓冲器416中生成条目,并且将值“0”存储在条目的就绪字段RDY中。
在操作S173中,可以确定数据是否被完全存储在缓冲器416中。例如,控制器414可以确定是否从设备存储器430的与从加速器电路412提供的地址相对应的区域中接收到所有数据并且是否所有数据都被存储在缓冲器416中。如图11A所示,当数据被完全存储时,可以在操作S174中激活数据的就绪信息。例如,如上面参照图6所述,控制器414可以将值“1”存储在条目的就绪字段RDY中。
参照图11B,在操作S170”中,可以将数据从较低层存储器复制到较高层存储器。例如,图4的设备存储器430可以具有诸如图7的设备存储器700的分层结构,并且包括分别对应于不同层的两个或更多个存储器。控制器414可以向设备存储器430提供指示将存储在较低层存储器中的数据复制到较高层存储器以便预取数据的命令,并且设备存储器430或包括在设备存储器430中的存储控制器可以读取存储在较低层存储器中的数据,并且将读取的数据存储在较高层存储器中。因此,通过将数据复制到提供相对快的响应速度的较高层存储器,可以减少此后从设备存储器430读取数据所花费的时间。
图12是根据示例实施例的***的框图。特别地,图12的框图示出了包括多个CPU的***5。
参照图12,***5可以包括第一CPU 11和第二CPU 21,并且包括分别连接到第一CPU 11和第二CPU 21的第一双倍数据速率(DDR)存储器12和第二DDR存储器22。第一CPU 11和第二CPU 21可以基于处理器互连技术通过互连***30连接。如图12所示,互连***30可以提供至少一个CPU到CPU的一致性链路(CPU-to-CPU coherent link)。
***5可以包括与第一CPU 11通信的第一I/O设备13和第一加速器14,并且包括连接到第一加速器14的第一设备存储器15。第一CPU 11和第一I/O设备13可以经由总线16彼此通信,并且第一CPU 11和第一加速器14可以经由总线17彼此通信。另外,***5可以包括与第二CPU 21通信的第二I/O设备23和第二加速器24,并且包括连接到第二加速器24的第二设备存储器25。第二CPU 21和第二I/O设备23可以经由总线26彼此通信,并且第二CPU 21和第二加速器24可以经由总线27彼此通信。在一些实施例中,可以省略***5中的第一设备存储器15和第二设备存储器25中的至少一者。
另外,***5可以包括远程远存储器40。第一CPU 11和第二CPU 21可以分别经由总线18和28连接到远程远存储器40。远程远存储器40可以用于***5中的存储器扩展,并且总线18和28可以用作存储器扩展端口。在一些实施例中,可以省略***5中的远程远存储器40。
可以经由总线16、17、18、26、27和28执行基于多种协议中的至少一些协议的通信。例如,可以基于非一致性协议经由每条总线16、17、18、26、27和28提供关于初始配置等的信息。另外,可以基于一致性协议和/或存储器协议经由总线17和27提供消息和/或数据。另外,可以基于存储器协议经由总线18和28提供消息和/或数据。
为了访问第一设备存储器15,可以将第一加速器14设置为设备偏置模式或主机偏置模式。如上面参照附图所述,当触发对第一设备存储器15的读取操作时,在主机偏置模式下,第一加速器14可以与经由总线17向第一CPU 11通知对第一设备存储器15的访问并行地预取存储在第一设备存储器15中的数据。因此,当经由总线17从第一CPU 11接收到对第一设备存储器15的访问的许可时,第一加速器14可以使用预取的数据,并且结果,可以快速完成基于数据的任务。
与第一加速器14相似,为了访问第二设备存储器25,可以将第二加速器24设置为设备偏置模式或主机偏置模式。如上面参照附图所述,当触发对第二设备存储器25的读取操作时,在主机偏置模式下,第二加速器24可以与经由总线27向第二CPU 21通知对第二设备存储器25的访问并行地预取存储在第二设备存储器25中的数据。因此,当经由总线27从第二CPU 21接收到对第二设备存储器25的访问的许可时,第二加速器24可以使用预取的数据,并且结果,可以快速完成基于数据的任务。
图13是根据示例实施例的包括***的数据中心7的框图。在一些实施例中,上面参照附图描述的***可以被包括为数据中心7中的应用服务器和/或存储服务器。
参照图13,数据中心7可以收集各种数据,提供服务,并且被称为数据存储中心。例如,数据中心7可以是用于运行搜索引擎和数据库的***,或者是在诸如银行或政府组织的公司中使用的计算***。如图13所示,数据中心7可以包括应用服务器50_1至50_n和存储服务器60_1至60_m(m和n是大于1的整数)。根据实施例,可以不同地选择应用服务器50_1至50_n的数目n和存储服务器60_1至60_m的数目m,并且应用服务器50_1至50_n的数目n可以不同于存储服务器60_1至60_m的数目m(m≠n)。
应用服务器50_1或50_n可以包括以下至少一种:处理器51_1或51_n、存储器52_1或52_n、开关53_1或53_n、网络接口控制器(NIC)54_1或54_n以及存储设备55_1或55_n。处理器51_1或51_n可以控制应用服务器50_1或50_n的一般操作,并且访问存储器52_1或52_n以执行加载在存储器52_1或52_n上的指令和/或数据。作为非限制性示例,存储器52_1或52_n可以包括双倍数据速率同步动态随机存取存储器(DDR SDRAM)、高带宽存储器(HBM)、混合存储器立方体(HMC)、双列直插式存储器模块(DIMM)、Optane DIMM或非易失性DIMM(NVMDIMM)。根据实施例,可以不同地选择应用服务器50_1或50_n中包括的处理器和存储器的数目。在一些实施例中,处理器51_1或51_n和存储器52_1或52_n可以提供处理器-存储器对。在一些实施例中,处理器51_1至51_n的数目可以不同于存储器52_1至52_n的数目。处理器51_1或51_n可以包括单核处理器或多核处理器。在一些实施例中,如图13中的虚线所示,可以省略应用服务器50_1或50_n中的存储设备55_1或55_n。根据实施例,可以不同地选择应用服务器50_1或50_n中包括的存储设备55_1或55_n的数目。处理器51_1或51_n、存储器52_1或52_n、开关53_1或53_n、NIC 54_1或54_n和/或存储设备55_1或55_n可以通过上面参照附图描述的链路彼此通信。
存储服务器60_1或60_m可以包括以下至少一种:处理器61_1或61_m、存储器62_1或62_m、开关63_1或63_m、NIC 64_1或64_m以及存储设备65_1或65_m。处理器61_1或61_m以及存储器62_1或62_m可以与上述应用服务器50_1或50_n中的处理器51_1或51_n以及存储器52_1或52_n类似地操作。
应用服务器50_1至50_n以及存储服务器60_1至60_m可以通过网络70彼此通信。在一些实施例中,可以通过使用光纤通道(FC)、以太网等来实现网络70。FC可以是用于以相对高的速率传输数据的介质,并且被配置为提供高性能/高可用性的光开关可以用于FC。根据网络70的访问模式,可以将存储服务器60_1至60_m提供为文件存储器、块存储器或对象存储器。
在一些实施例中,网络70可以是诸如存储区域网络(SAN)的存储专用网络。例如,SAN可以是能够使用FC网络并且根据FC协议(FCP)实现的FC-SAN。作为另一示例,SAN可以是使用传输控制协议/互联网协议(TCP/IP)网络并且根据TCP/IP上的小型计算机***接口(SCSI)或互联网SCSI(iSCSI)协议实现的IP-SAN。在一些实施例中,网络70可以是诸如TCP/IP网络的通用网络。例如,可以根据以太网上的FC(FCoE)协议、网络附加存储(NAS)协议、结构上的快速非易失性存储器(NVMe)(NVMe over fabrics,NVMe-oF)协议等来实现网络70。
在下文中,将主要描述应用服务器50_1和存储服务器60_1,但是关于应用服务器50_1的描述也可以应用于其他应用服务器(例如,50_n),并且关于存储服务器60_1的描述可以也可以应用于其他存储服务器(例如,60_m)。
应用服务器50_1可以通过网络70将用户或客户端请求存储的数据存储在存储服务器60_1至60_m之一中。另外,应用服务器50_1可以通过网络70从存储服务器60_1到60_m之一获取用户或客户端请求读取的数据。例如,应用服务器50_1可以由Web服务器、数据库管理***(DBMS)等实现。
应用服务器50_1可以通过网络70访问应用服务器50_n中包括的存储器52_n和/或存储设备55_n,和/或通过网络70访问存储服务器60_1至60_m中包括的存储器62_1至62_m和/或存储设备65_1至65_n。因此,应用服务器50_1可以对存储在应用服务器50_1至50_n和/或存储服务器60_1至60_m中的数据执行各种操作。例如,应用服务器50_1可以执行用于在应用服务器50_1至50_n和/或存储服务器60_1至60_m之间移动或复制数据的指令。在这种情况下,可以通过存储服务器60_1至60_m中的存储器62_1至62_m或直接地将数据从存储服务器60_1至60_m中的存储设备65_1至65_m移动到应用服务器50_1至50_n中的存储器52_1至52_n。在一些实施例中,为了安全或隐私,通过网络70移动的数据可以是加密数据。
在存储服务器60_1中,接口IF可以提供处理器61_1与控制器CTRL之间的物理连接以及NIC 64_1与控制器CTRL之间的物理连接。例如,接口IF可以由通过专用电缆直接访问存储设备65_1的直接附加存储(DAS)模式实现。另外,例如,接口IF可以通过诸如以下各种接口方案实现:高级技术附件(ATA)、串行ATA(SATA)、外部SATA(e-SATA)、SCSI、串行连接SCSI(SAS)、PCI、PCIe、NVMe、电气和电子工程师协会(IEEE)1394、通用串行总线(USB)、安全数字(SD)卡、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)、通用闪存(UFS)、嵌入式UFS(eUFS)和紧凑型闪存(CF)接口。
在存储服务器60_1中,开关63_1可以在处理器61_1的控制下将处理器61_1选择性地连接到存储设备65_1,或者将NIC 64_1选择性地连接到存储设备65_1。
在一些实施例中,NIC 64_1可以包括网络接口卡、网络适配器等。NIC 64_1可以通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络70。NIC 64_1可以包括内部存储器、数字信号处理器(DSP)、主机总线接口等,并且可以通过主机总线接口连接到处理器61_1、开关63_1等。在一些实施例中,NIC 64_1可以与处理器61_1、开关63_1和存储设备65_1中的至少一者集成。
在应用服务器50_1至50_n或存储服务器60_1至60_m中,处理器51_1至51_n或61_1至61_m可以通过向存储设备55_1至55_n或65_1至65_m或存储器52_1至52_n或62_1至62_m发送命令来编程或读取数据。在本文中,可以通过纠错码(ECC)引擎对数据进行纠错。数据可以包括作为数据总线反转(DBI)数据或数据屏蔽(DM)处理数据的循环冗余码(CRC)信息。为了安全或隐私,数据可以是加密数据。
存储设备55_1至55_n或65_1至65_m可以响应于从处理器51_1至51_n或61_1至61_m接收的读取命令,向非易失性存储设备NVM(例如,NAND闪存设备)发送控制信号和命令/地址信号。因此,当从非易失性存储设备NVM读取数据时,读取使能信号可以被输入为输出控制信号,并且用于将数据输出到DQ总线。可以使用读取使能信号来产生数据选通信号。可以根据写入使能信号的上升沿或下降沿来锁存命令和地址信号。
控制器CTRL通常可以控制存储设备65_1的操作。在实施例中,控制器CTRL可以包括静态随机存取存储器(SRAM)。控制器CTRL可以响应于写入命令而将数据写入非易失性存储设备NVM中,或者响应于读取命令而从非易失性存储设备NVM读取数据。例如,可以基于从主机(例如,存储服务器60_1中的处理器61_1、存储服务器60_m中的处理器61_m或应用服务器50_1或50_n中的处理器51_1或51_n)提供的请求来生成写入命令和/或读取命令。缓冲器BUF可以临时存储(缓冲)要写入非易失性存储设备NVM中的数据或从非易失性存储设备NVM读取的数据。在一些实施例中,缓冲器BUF可以包括DRAM。另外,缓冲器BUF可以存储元数据,并且元数据可以指示用户数据,或者由控制器CTRL生成的用于管理非易失性存储设备NVM的数据。为了安全或隐私,存储设备65_1可以包括安全元件(SE)。
尽管已经参照本发明构思的实施例具体示出和描述了本发明构思,但是应当理解的是,在不脱离所附权利要求的精神和范围的情况下,可以对本文进行形式和细节上的各种改变。
Claims (20)
1.一种经由总线连接到主机处理器的设备,所述设备包括:
加速器电路,所述加速器电路被配置为基于从所述主机处理器接收到的消息进行操作;和
控制器,所述控制器被配置为控制对连接到所述设备的存储器的访问,
其中,所述控制器还被配置为响应于从所述加速器电路接收到的读取请求,向所述主机处理器提供请求一致性解析的第一消息,以及从所述存储器预取第一数据。
2.根据权利要求1所述的设备,其中,所述控制器还被配置为:从所述主机处理器接收指示完成了所述一致性解析的第二消息,以及响应于所述第二消息向所述加速器电路提供所述第一数据。
3.根据权利要求2所述的设备,其中,所述控制器进一步被配置为基于第一协议经由所述总线向所述主机处理器提供所述第一消息,以及基于第二协议经由所述总线从所述主机处理器接收所述第二消息,并且
其中,所述主机处理器被配置为基于所述第二协议通过所述总线和所述控制器访问所述存储器。
4.根据权利要求1所述的设备,其中,所述控制器进一步被配置为:
被所述主机处理器设置为主机偏置模式或设备偏置模式,
向所述主机处理器提供所述第一消息,以及
在所述主机偏置模式下响应于接收到的所述读取请求,预取所述第一数据。
5.根据权利要求4所述的设备,其中,所述控制器进一步被配置为在所述设备偏置模式下响应于所述读取请求:
从所述存储器读取所述第一数据,以及
向所述加速器电路提供所述第一数据。
6.根据权利要求1所述的设备,所述设备还包括:缓冲器,所述缓冲器被配置为存储被预取的所述第一数据的副本,
其中,所述控制器进一步被配置为向所述加速器电路提供存储在所述缓冲器中的所述第一数据的所述副本。
7.根据权利要求6所述的设备,其中,所述缓冲器还被配置为存储就绪信息,所述就绪信息指示存储在所述缓冲器中的所述第一数据的所述副本是否有效,并且
其中,所述控制器进一步被配置为:当从所述主机处理器接收到指示完成了所述一致性解析的第二消息时,基于所述就绪信息向所述加速器电路提供存储在所述缓冲器中的所述第一数据的所述副本,或者等待从所述存储器接收所述第一数据。
8.根据权利要求1所述的设备,其中,所述存储器包括较高层存储器和较低层存储器,并且
其中,所述控制器进一步被配置为通过将数据从所述较低层存储器复制到所述较高层存储器作为所述第一数据的副本来预取所述第一数据。
9.根据权利要求8所述的设备,其中,所述控制器还被配置为响应于指示完成了所述一致性解析的第二消息,向所述加速器电路提供所述第一数据的所述副本,所述第二消息是从所述主机处理器接收到的。
10.一种***,包括:
主机处理器,所述主机处理器包括至少一个被配置为执行指令的核;
设备,所述设备经由总线连接到所述主机处理器,并且被配置为被设置为主机偏置模式或设备偏置模式;和
存储器,所述存储器连接到所述设备,并且被配置为被所述主机处理器通过所述设备访问,
其中,所述设备还被配置为:在所述主机偏置模式下,向所述主机处理器提供请求一致性解析的第一消息,以及在从所述主机处理器接收到指示完成了所述一致性解析的第二消息之前从所述存储器预取第一数据。
11.根据权利要求10所述的***,其中,所述设备进一步被配置为基于第一协议经由所述总线向所述主机处理器提供所述第一消息,以及基于第二协议经由所述总线从所述主机处理器接收所述第二消息,并且
其中,所述主机处理器被配置为基于所述第二协议通过所述总线和通过所述设备访问所述存储器。
12.根据权利要求10所述的***,其中,所述设备还被配置为:在所述设备偏置模式下,不向所述主机处理器提供所述第一消息,而从所述存储器读取所述第一数据。
13.根据权利要求10所述的***,其中,所述设备包括缓冲器,所述缓冲器被配置为存储被预取的所述第一数据的副本,并且
其中,所述设备进一步被配置为当从所述主机处理器接收到所述第二消息时使用存储在所述缓冲器中的所述第一数据的所述副本。
14.根据权利要求10所述的***,其中,所述存储器包括:
较高层存储器;和
较低层存储器,并且
其中,所述设备进一步被配置为通过将数据从所述较低层存储器复制到所述较高层存储器来预取所述第一数据。
15.一种操作经由总线连接到主机处理器的设备的方法,所述方法包括:
将主机偏置模式设置为用于访问连接到所述设备的存储器的模式;
经由所述总线向所述主机处理器提供第一消息,所述第一消息请求对所述存储器中的与地址相对应的区域进行一致性解析;
基于所述地址从所述存储器中的所述区域预取第一数据;和
经由所述总线从所述主机处理器接收第二消息,所述第二消息指示完成了对所述存储器中的所述区域的所述一致性解析,
其中,在接收到所述第二消息之前开始所述第一数据的预取。
16.根据权利要求15所述的方法,所述方法还包括从所述存储器检测对所述存储器中的所述区域的读取的触发,
其中,响应于检测到所述触发,执行所述第一消息的提供和所述第一数据的预取。
17.根据权利要求15所述的方法,其中,所述第一消息的提供包括基于第一协议向所述主机处理器提供所述第一消息,
其中,所述第二消息的接收包括基于第二协议从所述主机处理器接收所述第二消息,并且
其中,所述方法还包括基于所述第二协议从所述主机处理器接收用于访问所述存储器的第三消息。
18.根据权利要求15所述的方法,其中,所述第一数据的预取包括:
基于所述地址从所述存储器读取所述第一数据;和
将所述第一数据的副本存储在所述设备中包括的缓冲器中。
19.根据权利要求18所述的方法,其中,所述第一数据的预取还包括:当所述第一数据的所述副本被完全存储在所述缓冲器中时,激活就绪信息,并且
其中,所述方法还包括:当接收到所述第二消息时,基于所述就绪信息,使用存储在所述缓冲器中的所述第一数据的所述副本,或者等待从所述存储器接收所述第一数据。
20.根据权利要求15所述的方法,其中,所述第一数据的预取包括:将所述第一数据从所述存储器中包括的较低层存储器复制到所述存储器中包括的较高层存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0133743 | 2020-10-15 | ||
KR1020200133743A KR20220049978A (ko) | 2020-10-15 | 2020-10-15 | 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114372011A true CN114372011A (zh) | 2022-04-19 |
Family
ID=77021252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110796960.3A Pending CN114372011A (zh) | 2020-10-15 | 2021-07-14 | 用于访问设备附加存储器的***、设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11586543B2 (zh) |
EP (1) | EP3985520A1 (zh) |
KR (1) | KR20220049978A (zh) |
CN (1) | CN114372011A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240020027A1 (en) * | 2022-07-14 | 2024-01-18 | Samsung Electronics Co., Ltd. | Systems and methods for managing bias mode switching |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7058767B2 (en) | 2003-04-28 | 2006-06-06 | International Business Machines Corporation | Adaptive memory access speculation |
US8281079B2 (en) | 2004-01-13 | 2012-10-02 | Hewlett-Packard Development Company, L.P. | Multi-processor system receiving input from a pre-fetch buffer |
US7490184B2 (en) | 2005-06-08 | 2009-02-10 | International Business Machines Corporation | Systems and methods for data intervention for out-of-order castouts |
JP2007241612A (ja) | 2006-03-08 | 2007-09-20 | Matsushita Electric Ind Co Ltd | マルチマスタシステム |
US7814279B2 (en) | 2006-03-23 | 2010-10-12 | International Business Machines Corporation | Low-cost cache coherency for accelerators |
US7600078B1 (en) | 2006-03-29 | 2009-10-06 | Intel Corporation | Speculatively performing read transactions |
US20080320233A1 (en) * | 2007-06-22 | 2008-12-25 | Mips Technologies Inc. | Reduced Handling of Writeback Data |
US20090106498A1 (en) | 2007-10-23 | 2009-04-23 | Kevin Michael Lepak | Coherent dram prefetcher |
KR102276912B1 (ko) | 2017-06-07 | 2021-07-13 | 삼성전자주식회사 | 스토리지 시스템 및 이의 동작 방법 |
US11263143B2 (en) | 2017-09-29 | 2022-03-01 | Intel Corporation | Coherent accelerator fabric controller |
US10606785B2 (en) | 2018-05-04 | 2020-03-31 | Intel Corporation | Flex bus protocol negotiation and enabling sequence |
US11036650B2 (en) | 2019-09-19 | 2021-06-15 | Intel Corporation | System, apparatus and method for processing remote direct memory access operations with a device-attached memory |
US11416397B2 (en) * | 2019-10-14 | 2022-08-16 | Intel Corporation | Global persistent flush |
-
2020
- 2020-10-15 KR KR1020200133743A patent/KR20220049978A/ko unknown
-
2021
- 2021-07-14 CN CN202110796960.3A patent/CN114372011A/zh active Pending
- 2021-07-20 US US17/380,805 patent/US11586543B2/en active Active
- 2021-07-22 EP EP21187164.5A patent/EP3985520A1/en active Pending
-
2023
- 2023-02-08 US US18/166,244 patent/US11983115B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230185717A1 (en) | 2023-06-15 |
US20220121574A1 (en) | 2022-04-21 |
US11586543B2 (en) | 2023-02-21 |
KR20220049978A (ko) | 2022-04-22 |
US11983115B2 (en) | 2024-05-14 |
EP3985520A1 (en) | 2022-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741034B2 (en) | Memory device including direct memory access engine, system including the memory device, and method of operating the memory device | |
US10540303B2 (en) | Module based data transfer | |
US20220147470A1 (en) | System, device, and method for accessing memory based on multi-protocol | |
US11921639B2 (en) | Method for caching data, a host device for caching data, and a storage system for caching data | |
CN115687193A (zh) | 存储模块、包括其的***以及存储模块的操作方法 | |
US11983115B2 (en) | System, device and method for accessing device-attached memory | |
US20230325277A1 (en) | Memory controller performing selective and parallel error correction, system including the same and operating method of memory device | |
US11962675B2 (en) | Interface circuit for providing extension packet and processor including the same | |
US11809341B2 (en) | System, device and method for indirect addressing | |
US11853215B2 (en) | Memory controller, system including the same, and operating method of memory device for increasing a cache hit and reducing read latency using an integrated commad | |
US20240248850A1 (en) | Memory device, system including the same, and operating method of memory device | |
US20220147458A1 (en) | Semiconductor device | |
KR20240115587A (ko) | 메모리 장치, 이를 포함하는 시스템 및 메모리 장치의 동작 방법 | |
US20230359379A1 (en) | Computing system generating map data, and method of operating the same | |
KR20230169885A (ko) | 영구 메모리 장치 및 컴퓨팅 시스템 | |
CN115756557A (zh) | 网络存储器的固件升级方法以及网络存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |