CN116418869A - 用于缓存一致性的装置和方法 - Google Patents

用于缓存一致性的装置和方法 Download PDF

Info

Publication number
CN116418869A
CN116418869A CN202310005924.XA CN202310005924A CN116418869A CN 116418869 A CN116418869 A CN 116418869A CN 202310005924 A CN202310005924 A CN 202310005924A CN 116418869 A CN116418869 A CN 116418869A
Authority
CN
China
Prior art keywords
cxl
memory
devices
work
available capacity
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
Application number
CN202310005924.XA
Other languages
English (en)
Inventor
池洙荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from KR1020220056857A external-priority patent/KR20230107086A/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN116418869A publication Critical patent/CN116418869A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules

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)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)

Abstract

一种装置,包括:多个计算快速链路(CXL)设备,每个CXL设备包括存储器和用于处理存储在存储器中的工作的处理器;以及交换机,被配置为将CXL设备彼此连接,其中,多个CXL设备中的第一CXL设备基于多个CXL设备中的至少一部分CXL设备的存储器的可用容量从该至少一部分CXL设备中选择至少一个第二CXL设备,以分发存储在第一CXL设备的存储器中的工作。

Description

用于缓存一致性的装置和方法
相关申请的交叉引用
本申请要求于2022年1月7日向韩国知识产权局提交的韩国专利申请No.10-2022-0003014以及2022年5月9日向韩国知识产权局提交的韩国专利申请No.10-2022-0056857的优先权,其公开内容通过引用的方式全部并入本文。
技术领域
本公开涉及一种用于缓存一致性的装置和方法。
背景技术
异构计算是指使用超过一种处理器或内核的***。例如,在异构计算中,为特殊用途开发的加速器可以与通用处理器一起工作。
这种加速器需要与处理器的高性能连接,并共享内存空间以减少开销和延迟。因此,已经开发或正在开发将处理器连接到各种加速器以保持存储器和缓存一致性的芯片到芯片互连协议。
发明内容
本公开的实施例提供了一种用于缓存一致性的装置和方法,可以有效地管理存储器资源。
本公开的实施例提供了一种用于缓存一致性的装置和方法,其可以减少数据变形。
本公开的实施例提供了一种装置,包括:多个CXL设备,每个CXL设备包括存储器和用于处理存储在存储器中的工作的处理器;以及交换机,被配置为将CXL设备彼此连接,其中,多个CXL设备中的第一CXL设备基于多个CXL设备中的至少一部分CXL设备的存储器的可用容量来从所述至少一部分CXL设备中选择至少一个第二CXL设备,以分发存储在第一CXL设备的存储器中的工作。
本发明实施例提供了一种装置,包括:多个第一设备,每个第一设备包括存储器和用于处理存储在存储器中的工作的处理器;以及第二设备,被配置为基于每个第一设备的工作处理速率和每个第一设备的存储器的可用容量,来确定第一设备中的要向其分发工作的至少一个第一设备和要分发的工作量,并将基于与每个第一设备相对应的工作量的工作分发给要向其分发该工作的至少一个第一设备。
本发明实施例提供了一种由包括多个CXL设备的计算***执行的方法,该方法包括:检查CXL设备的可用容量;基于多个CXL设备的可用容量,在CXL设备中选择要向其分发工作的至少一个第一CXL设备;检查至少一个第一CXL设备的工作处理速率;以及基于至少一个第一CXL设备的工作处理速率,来确定要向所述至少一个第一CXL设备中的每个第一CXL设备分配的工作的分发量。
附图说明
图1示出了根据本公开的实施例的计算机***的框图。
图2示出了表示根据本公开的实施例的计算机***的一些元件的详细框图。
图3示出了根据本公开的实施例的计算快速链路(CXL)设备的存储器。
图4示出了表示根据本公开的实施例的工作分发方法的流程图。
图5示出了根据本公开的实施例的CXL设备之间的工作分发方法的流程图。
图6示出了根据本公开的实施例的CXL设备的存储器。
图7示出了根据本公开的实施例在其上执行工作分发方法的CXL设备的存储器。
图8示出了根据本公开的另一实施例的计算机***的框图。
图9示出了根据本公开的实施例的服务器***的框图。
具体实施方式
在以下详细描述中,将显示和描述本公开的某些实施例。如本领域技术人员将认识到的,所描述的实施例可以以各种不同的方式进行修改,所有这些均不脱离本公开的精神或范围。
因此,附图和描述在本质上应被认为是说明性的,而不是限制性的。在整个说明书中,相同的附图标记可以表示相同的元件。在参照附图描述的流程图中,可以改变操作的顺序,可以合并多个操作,可以划分一些操作,并且可以不执行特定操作。
此外,除非使用诸如“一个”或“单个”的明确表达,否则以单数形式书写的表达可以被解释为单数或复数。包括诸如第一、第二等序数的术语将用于描述各种组件,并且不应被解释为限制这些组件。这些术语可以用于将一个元件与另一元件区分开的目的。
图1示出了根据本公开的实施例的计算机***的框图。
参照图1,计算机***100可以包括主机110、多个存储器120a和120b、以及至少一个计算快速链路(CXL)设备130a、130b...、130h。在实施例中,计算机***100可以被包括在诸如个人计算机、膝上型计算机、服务器、媒体播放器和数码相机之类的用户设备中,或者诸如导航***、黑匣子或车载电子设备之类的汽车设备中。或者,计算机***100可以是移动***,诸如便携式通信终端(例如,移动电话)、智能手机、平板个人计算机(PC)、可穿戴设备、保健设备或物联网(物联网)设备。
主机110可以控制计算***100的整体操作。在实施例中,主机110可以是各种处理器之一,诸如中央处理单元(CPU)、图形处理单元(GPU)、神经处理单元(NPU)、张量处理单元(TPU)等。在实施例中,主机110可以包括单核处理器或多核处理器。
在实施例中,主机110可以划分工作、将工作分发给CXL设备130、并收集其结果。主机110可以将包括数据和用于处理数据的程序(例如,工作负载)的工作分发给CXL设备130。在一些实施例中,主机110可以检查CXL设备130a、...、和130h的可用存储器。主机110可以根据CXL设备130a、...、和130h的可用存储器来确定是否将工作分发给CXL设备130a、...、和130h中的每个CXL设备。主机110可以通过进一步考虑当前存储在每个存储设备120a和120b中的待处理数据量来确定是否将工作分发给CXL设备130a、...、和130h中的每个CXL设备。主机110可以检查CXL设备130a、...、和130h的工作处理速率。主机110可以使用CXL设备130a、...、和130h的工作处理速率来将工作分发给CXL设备130a、...、和130h;可以计算直到主机110接收到结果为止的时间;将该时间与由主机110处理当前被存储在存储器件120a和120b中的每个存储器件中的待处理工作所花费的时间进行比较;并且可以确定是否将工作分发给CXL设备130a、...、和130h中的每个CXL设备。主机110可以根据CXL设备130a、...、和130h的工作处理速率来确定要分发给CXL设备130a、...、和130h中的每个CXL设备的工作数据量。
存储器件120a和120b可以用作计算机***100的主存储器或***存储器。在实施例中,存储器件120a和120b中的每个存储器件可以是动态随机存取存储器(DRAM),并且可以具有双列直插式存储器模块(DIMM)的形态因素。然而,本公开的范围不限于此,并且存储器件120a和120b可以包括非易失性存储器,诸如闪存、相变随机存取存储器(PRAM)、电阻式随机存取存储器(RRAM)和磁阻随机存取存储器(MRAM)。
存储器件120a和120b可以通过双倍数据速率(DDR)接口直接与主机110通信。在实施例中,主机110可以包括被配置为控制多个存储器件120a和120b的存储控制器。然而,本公开的范围不限于此,并且存储器件120a和120b可以包括非易失性存储器,诸如,闪存、PRAM、RRAM和MRAM。
CXL设备130可以包括CXL控制器131、处理器132和存储器133。
CXL控制器131可以包括设计成实现专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)的知识产权(IP)电路。在各种实施例中,CXL控制器131可以支持CXL协议(例如,CXL2.0协议或任何其他版本)。CXL控制器131可以对CXL分组和存储器133的存储器接口的信号进行转换。
CXL控制器131可以划分工作、可以将工作分发给CXL设备130、并且可以收集分发给CXL设备130的工作的结果。CXL控制器131可以将包括数据和用于处理数据的程序(例如,工作负载)的工作分发给CXL设备130。在一些实施例中,CXL设备130a、130b、...、和130h中的一个CXL设备(例如,130a)的CXL控制器(例如,131a)可以检查其他CXL设备130b、...、和130h的可用存储器。CXL设备130a、130b、...、和130h中的一个CXL设备(例如,130a)的CXL控制器(例如,131a)可以确定是否根据CXL设备130b、...、和130h中的可用存储器,将工作分发给其他CXL设备130b、...、和130h中的每个CXL设备。CXL设备130a、130b、...、和130h中的一个CXL设备(例如,130a)的CXL控制器(例如,131a)可以通过进一步考虑当前存储在存储器(例如,130a的133a)中的待处理工作量,确定是否将工作分发给CXL设备130b、...、和130h中的每个CXL设备。在一些实施例中,CXL设备130a、130b、...、和130h中的一个CXL设备(例如,130a)的CXL控制器(例如,131a)可以检查其他CXL设备130b、...、和130h的工作处理速率。CXL设备130a、130b、...、130h中的一个CXL设备(例如,130a)的CXL控制器(例如131a)可以通过使用其他CXL设备130b、...、和130h的工作处理速率,来计算将工作分发给其他CXL设备130b、...、和130h与接收被分发给其他CXL设备130b、...、和130h的工作的结果之间的预期时间,并且可以通过将该预期时间与由处理器(例如,130a的132a)处理当前被存储在存储器133a中的待处理工作所花费的时间进行比较,来确定是否将工作分发给其他CXL设备130b、...、和130h中的每个CXL设备。CXL设备130a、130b、...、和130h中的一个CXL设备(例如,130a)的CXL控制器(例如,131a)可以根据其他CXL设备130b、...、和130h的工作处理速率,来确定要分发给其他CXL设备130b、...、和130h中的每个CXL设备的工作的数据量。
处理器132可以被配置为控制CXL设备130的整体操作。处理器132可以执行由CXL设备130执行的各种操作,并且可以处理数据。例如,处理器132可以对存储在存储器133中的数据执行操作。处理器132可以对存储在存储器133中的数据执行过滤。处理器132可以使用分布式工作的程序来处理分布式工作的数据。
在实施例中,CXL设备130a、130b、...、和130h中的每个CXL设备可以被实现为单独的存储器件或存储模块。CXL设备130a、130b、...、和130h中的每个CXL设备可以通过不同的物理端口连接到缓存一致性接口115。换句话说,由主机110管理的存储区域可以通过将CXL设备130a、130b、...130h连接到缓存一致性接口115来增加容量。CXL设备130a、130b、...、和130h的多个存储器133a、133b、...、和133h中的至少一些存储器可以作为一个存储器集群来管理。在一些实施例中,存储器133a、133b、...、和133h中的至少一些存储器可以作为直接连接的存储器集群、池化的存储器集群、分布式存储器集群或分解的存储器集群中的至少一种来管理。
存储器133可以包括动态随机存取存储器(DRAM)、非与(NAND)闪存、高带宽存储器(HBM)、混合存储立方体(HMC)、双列直插式存储器模块(DIMM)、Optane DIMM、非易失性DIMM(NVMDIMM)、双倍数据速率同步DRAM(DDR SDRAM)、低功耗双倍数据速率同步动态随机存取存储器或其组合中的一种。
在实施例中,主机110和CXL设备130可以被配置为彼此共享相同的接口。例如,主机110和CXL设备130可以通过缓存一致性接口115彼此通信。主机110可以通过缓存一致性接口115访问CXL设备130的存储器133,并且CXL设备130还可以通过缓存一致性接口115访问主机110的存储器120a和120b和/或另一CXL设备130的存储器133。例如,CXL设备130b可以通过缓存一致性接口115访问CXL设备130a的存储器133a。
在实施例中,缓存一致性接口115可以指代低延迟、高带宽链路,其通过支持输入和输出(IO)协议的一致性、存储器访问和动态协议复用,实现加速器、存储器件或各种电子设备之间的各种连接。在下文中,为了更好地理解和描述方便,假设主机110和CXL设备130通过CXL接口115彼此通信。然而,缓存一致性接口115不限于此,主机110和CXL设备130可以基于诸如GEN-Z协议、NVLink协议、用于加速器的缓存一致性互连(CCIX)协议的各种计算接口和开放一致性处理器加速器接口(CAPI)协议等彼此通信。
作为一种基于***组件互连快速(PCIe)5.0的开放式通信行业标准,CXL可以提供固定且相对较短的数据分组大小,从而实现相对较高的带宽和较低的固定延迟。因此,CXL可以支持缓存一致性,并且CXL非常适合创建与存储器的连接。CXL可以在服务器中用于提供主机110与CXL设备130(例如,加速器、存储器件与网络接口电路(或“网络接口控制器”或网络接口卡(NIC)))之间的连接。
诸如CXL之类的缓存一致性协议可用于异构计算,例如在标量、向量和缓冲存储器***中。CXL可以用于通过利用信道、重定时器、***的PHY层、接口的逻辑方面和来自PCIe5.0的协议来提供缓存一致接口。CXL事务层可以包括在单个链路上同时运行的三个多路复用子协议,它们可以被分别称为CXL.io、CXL.cache和CXL.mem。CXL.io可以包含可能类似于PCIe的I/O语义。CXL.cache可以包括缓存语义,CXL.mem可以包括内存语义,并且缓存语义和内存语义都可以是可选的。与PCIe类似,CXL可以支持:(i)可划分的x16、x8和x4的基本宽度,(ii)8GT/s和16GT/s,其中数据速率为32GT/s能够降到128b/130b,(iii)300W(x16连接器中为75W),以及(iv)即插即用。为了支持即插即用,PCIe或CXL设备链路也可以开始对Gen1的PCIe进行训练,可以协商CXL,并且可以在完成Gen1-5训练后开始CXL事务。
图2示出了表示根据本公开的实施例的计算机***的一些元件的详细框图。
参照图2,主机200和CXL设备220a、220b、...、和220h可以通过CXL交换机210彼此通信。CXL交换机210可以是包括在CXL接口中的组件。换句话说,CXL交换机210可以是图1所示的CXL接口115的一部分。CXL交换机210可以被配置为调解主机200与CXL设备220之间的通信。例如,当主机200和CXL设备220彼此通信时,CXL交换机210可以被配置为将从主机200发送的诸如请求、数据、响应或信号的信息发送到CXL设备220或将从CXL设备220发送的诸如请求、数据、响应或信号的信息发送到主机200。当CXL设备220a、220b、...、和220h彼此通信时,CXL交换机210可以被配置为在CXL设备220a、220b、...、和220h之间传递诸如请求、数据、响应或信号之类的信息。
主机200可以包括CXL控制器201。CXL控制器201可以通过CXL交换机210与CXL设备220通信。CXL控制器201可以连接到主机200的存储控制器202和相关的存储器203。
CXL交换机210可以用于通过连接的CXL设备220a、220b、...、和220h之间的一对多和多对一交换来实现存储器集群。例如,CXL交换机210(i)可以将多个根端口连接到一个端点,(ii)可以将一个根端口连接到多个端点,或者(iii)可以将多个根端口连接到多个端点。
除了为CXL分组提供分组交换功能之外,CXL交换机210还可用于将CXL设备220a、220b、...、和220h连接到一个或多个主机200。CXL交换机210(i)可以允许CXL设备220a、220b、...、和220h包含具有不同特性的不同类型的存储器,(ii)可以将CXL设备220a,220b、...、和220h的存储器虚拟化,并允许将不同特性(例如,访问频率)的数据存储在适当类型的存储器中,并且(iii)可以支持远程直接存储访问(RDMA)。这里,将存储器“虚拟化”是指在处理电路与存储器之间执行存储地址转换。
CXL设备220a可以包括CXL控制器221、处理器222、存储控制器223和存储器224。其他CXL设备220b、...、和220h也可以包括与CXL设备220a的组件相同或相似的组件。换句话说,CXL设备220b可以包括CXL控制器、处理器、存储控制器和存储器。
CXL控制器221可以连接到CXL交换机210。CXL控制器221可以通过CXL交换机210与主机200和/或其他CXL设备220b、...、和220h通信。CXL控制器221可以包括用于CXL.io路径的PCIe5.0(或其他版本)架构,并且可以添加特定于CXL的CXL.cache路径和CXL.mem路径。在另一实施例中,CXL控制器221可以被配置为向后兼容旧的缓存一致性协议,诸如CXL1.1。CXL控制器221可以被配置为实现CXL.io、CXL.mem和CXL.cache协议或其他合适的缓存一致性协议。CXL控制器221可以被配置为支持不同的CXL设备类型,诸如类型1、类型2和/或类型3的CXL设备。CXL控制器221可以被配置为支持PCIe协议,诸如PCIe5.0协议。CXL控制器221可以被配置为通过使用任何合适的PIPE接口宽度(例如,8位、16位、32位、64位和128位可配置PIPE接口宽度)来支持PIPE 5.x协议。CXL控制器221可以被配置为支持各种CXL设备配置,诸如关于图2所示和描述的那些配置。
处理器222可以被配置为控制CXL设备220a的整体操作。处理器222可以对存储在存储器224中的数据执行操作。处理器222可以对存储在存储器224中的数据执行过滤。
存储控制器223可以控制存储器224,使得数据被存储在存储器224中或者从存储器224中读取数据。在实施例中,存储控制器223可以被实现为符合标准协议,诸如双倍数据速率(DDR)接口、图形DDR(GDDR)接口和低功率DDR(LPDDR)接口。存储器224可以在存储控制器223的控制下存储数据或输出存储的数据。
存储控制器223可以被配置为管理存储器224。在一些实施例中,存储控制器223可以检查存储器224的可用容量。
在实施例中,CXL设备220a的存储器224的至少一部分区域可以被分配为CXL设备220a的专用区域,并且CXL设备220a的其余区域可以用作可由主机200或其他CXL设备220b、...、和220h访问的区域。
在实施例中,CXL设备220a的存储器224的至少一部分区域存储由CXL设备220a分发的工作的数据和程序,并且CXL设备220a的存储器224的其余区域可以存储由主机200或其他CXL设备220b、...、和220h分发的工作的数据和程序。这将参照图3进行描述。
图3示出了根据本公开的实施例的CXL设备的存储器。
参照图3,存储器300可以包括多个存储块310。在实施例中,作为物理存储器的存储器300可以被划分为多个物理存储块310。换句话说,存储块310可以是物理存储块。在另一实施例中,存储器块310可以是被虚拟化的存储器300所划分成的块。存储块310中的每一个可以被分配为用于每个设备(例如,主机200和CXL设备220a、...、和220h)的专用存储空间。
分发的工作可以被存储在存储器300中。在一些实施例中,可以将对应的工作指派给存储块310中的每一个存储块。第一工作被指派给存储器300的块320a,第二工作可以被指派给存储器300的块320b,第三工作被指派给存储器300的块320c,并且第四工作可以被指派给存储器300的块320d。第一工作至第四工作可以由设备(例如,主机200和CXL设备220a、...、和220h)中的一个或多个设备指派。
尽管上面已经描述了以块为单位分配工作,但是存储器300的存储空间可以被划分为除了块以外的单元,并且可以将工作存储在经划分的存储空间中。块是用于指示存储器300的容量的单位,并且存储器300的容量的描述不限于此。
存储器300可以包括其中没有存储工作的可用空间。可以不向存储器300的一些块320e分配工作。存储器300的一些块320e可以作为特定设备的专用空间而不被分配。存储器300的可用容量可以对应于块320e的容量。
返回参照图2,存储控制器223可以检查存储器224的可用容量。存储控制器223可以将要从其他设备分发的工作分配到存储器224的可用空间。例如,来自CXL设备220b的工作可以被存储在存储器224的可用空间中。
在实施例中,主机200和CXL设备220可以使用输入和输出协议CXL.io彼此通信。CXL.io可以具有基于PCIe的非一致性输入和输出协议。主机200和CXL设备220可以通过使用CXL.io来彼此交换用户数据或各种信息。
在实施例中,主机200和CXL设备220可以使用存储器访问协议(例如,CXL.cache)来彼此通信。CXL设备220可以使用CXL.cache来访问主机200的存储器203的一部分。
在实施例中,主机200和CXL设备220可以使用存储器访问协议(例如,CXL.mem)来彼此通信。主机200可以使用CXL.mem来访问CXL设备(例如,220a)的存储器224的一些区域。
上述访问类型(CXL.io、CXL.cache、CXL.mem等)仅仅是示例,本公开的范围不限于此。
在实施例中,CXL设备220可以基于CXL接口安装在物理端口(例如,PCIe物理端口)上。在实施例中,CXL设备220可以基于E1.S、E1.L、E3.S、E3.L、PCIe AIC(CEM)形态因素来实现。可选地,CXL设备220可以基于U.2形态因素、M.2形态因素或其他各种类型的基于PCIe的形态因素或其他各种类型的小形态因素来实现。CXL设备220可以以各种形态因素实现,并且可以支持能够安装到物理端口或从物理端口移除的热插拔功能。
图4示出了表示根据本公开的实施例的工作分发方法的流程图。
接下来,将参照图2至图4描述工作分发方法。以下,将CXL设备220a作为操作对象进行说明。
CXL设备220a的CXL控制器221检查其他CXL设备220b、...、和220h的存储器的可用容量(S400)。例如,CXL控制器221可以通过CXL交换机210向CXL设备220b、...、和220h中的每个CXL设备请求可用容量。响应于该请求,CXL设备220b、...、和220h中的每个CXL设备的存储控制器可以检查对应存储器的可用容量。CXL设备220b、...、和220h中的每个CXL设备的CXL控制器可以通过CXL交换机210将检查的存储器的可用容量发送到CXL控制器221。此外,可以使用各种方法检查通过CXL交换机210连接的CXL设备220a、220b、...、和220h中的每个CXL设备220a、220b、...、和220h的可用容量,但是本公开不限于以上描述。
当待处理工作的数据过多地存储在存储器224中时,CXL设备220a的CXL控制器221可以执行步骤S400。例如,CXL设备220a可以从主机200接收工作请求。当确定从主机200请求的工作不能在预定时段内执行时,CXL设备220a的CXL控制器221可以检查其他CXL设备220b、...、和220h的存储器的可用容量。可选地,当确定花费过多时间来处理从主机200请求的工作时,CXL设备220a的CXL控制器221可以检查其他CXL设备220b、...、和220h的存储器的可用容量。可选地,当包括在从主机200请求的工作中的数据(例如,待处理的所有数据)不能存储在存储器224中时,CXL设备220a的CXL控制器221可以检查其他CXL设备220b、...、和220h的存储器的可用容量。此外,CXL设备220a的CXL控制器221可以在各种情况下启动步骤S400,但本发明不限于上述说明。
CXL设备220a的CXL控制器221基于检查的可用容量来确定要向其指派工作的CXL设备(S402)。在一些实施例中,CXL控制器221可以基于其他CXL设备220b、...、和220h中的每个CXL设备的可用容量,来确定是否将工作分配给其他CXL设备220b、...、和220h中的每个CXL设备。例如,当至少一个CXL设备的可用容量大于或等于存储器224的可用容量时,CXL控制器221可以确定将工作分配给CXL设备220b、...、和220h中的至少一个CXL设备。当其他CXL设备220b、...、和220h中的至少一个CXL设备的可用容量等于或大于参考可用容量时,CXL控制器221可以确定将工作分配给至少一个CXL设备。
CXL控制器221确定被选择用于处理工作的至少一个CXL设备的处理速率(S404)。在一些实施例中,CXL控制器221可以通过将工作发送到被选择用于处理工作的至少一个CXL设备并从该至少一个CXL设备接收处理结果,来确定被选择用于处理工作的至少一个CXL设备的处理速率。应当理解,可以针对被选择用于处理工作的每个CXL设备执行该过程。例如,CXL控制器221可以通过CXL交换机210将要分配的工作的程序和一些数据发送到被选择用于处理工作的至少一个CXL设备。CXL控制器221可以通过CXL交换机210从被选择用于处理工作的至少一个CXL设备接收工作的结果。CXL交换机210可以通过使用从向至少一个CXL设备发送要分配给该至少一个CXL设备的工作的程序和一些数据开始直到从该至少一个CXL设备接收该工作的结果为止的处理时间,来确定被选择用于处理工作的至少一个CXL设备的处理速率。CXL交换机210可以将所确定的至少一个CXL设备的处理速率发送到CXL控制器221。在一些实施例中,CXL交换机210还可以将与处理时间有关的信息发送到CXL控制器221。CXL控制器221可以基于向CXL交换机210发送工作的程序和一些数据的时间和从CXL交换机210接收该工作的结果的时间、以及从CXL交换机210传送的处理时间,来进一步确定经由CXL交换机210的数据传输速率。
在实施例中,CXL控制器221可以基于至少一个CXL设备的可用容量,来校准被选择用于处理工作的至少一个CXL设备的处理速率。在一些实施例中,当至少一个CXL设备的可用容量小于或等于该至少一个CXL设备的存储器容量的预定百分比时,CXL控制器221可以将被选择用于处理工作的至少一个CXL设备的处理速率校准为较低。例如,当被选择用于处理工作的至少一个CXL设备的可用容量是该至少一个CXL设备的存储器容量的一半时,CXL控制器221可以将至少一个CXL设备的处理速率降低一半以校正或补偿该缺陷。此外,当被选择用于处理工作的至少一个CXL设备的可用容量是该至少一个CXL设备的存储器容量的四分之一时,CXL控制器221可以将至少一个CXL设备的处理速率降低成四分之一以校正或补偿该缺陷。
CXL控制器221基于被选择用于处理工作的至少一个CXL设备的处理速率,来确定工作分发量(S406)。CXL控制器221可以考虑到将存储在存储器224中的一些待处理工作分配给被选择用于处理工作的至少一个CXL设备并由至少一个CXL设备对其进行处理所花费的时间,以及处理器222处理存储在存储器224中的未分配给该至少一个CXL设备的其他工作所花费的时间,来确定分发量。例如,CXL控制器221可以确定要被分配给被选择用于处理工作的至少一个CXL设备的分发量,使得将存储在存储器224中的一些待处理工作分配给至少一个CXL设备并由至少一个CXL设备对其进行处理所花费的时间与处理器222处理存储在存储器224中的未分配给该至少一个CXL设备的其他工作所花费的时间基本相同。CXL控制器221可以确定要分配给至少一个CXL设备的工作分发量按照经校正的处理速率的顺序增加。由于CXL控制器221使用经校正的处理速率,所以可以为具有小的可用容量的CXL设备确定小的工作分发量。因此,根据实施例的CXL设备220可以防止不能处理所分配的工作的问题,该问题可能由于要向其分配工作的CXL设备的可用容量不足而发生,尽管工作仅按处理速率进行分配。
在一些实施例中,CXL控制器221可以通过使用至少一个CXL设备的处理速率,来计算将存储在存储器224中的一些待处理工作分配给被选择用于处理该部分工作的至少一个CXL设备并由至少一个CXL设备对其进行处理所需的时间。在一些实施例中,CXL控制器221可以进一步通过使用在步骤S404中额外计算的数据传输速率,来计算将存储在存储器224中的一些待处理工作分配给被选择用于处理该部分工作的至少一个CXL设备并由至少一个CXL设备对其进行处理所需的时间。CXL控制器221可以通过使用至少一个CXL设备的处理速率和数据传输速率,来计算将存储在存储器224中的一些待处理工作分配给被选择用于处理该部分工作的至少一个CXL设备并由至少一个CXL设备对其进行处理所需的时间。
CXL控制器221根据所确定的工作分发量将工作分发给被选择用于处理工作的至少一个CXL设备(S408)。CXL控制器221可以通过CXL交换机210,将存储在存储器224中的工作中的根据所确定的工作分发量的工作发送到被选择用于处理工作的至少一个CXL设备。
当执行步骤S408并且待处理工作的数据过多地存储在存储器224中时,CXL设备220a的CXL控制器221可以再次执行步骤S400。类似地,即使待处理工作的数据过多地存储在其他CXL设备220b、...、和220h中的每个CXL设备的存储器224中,也可以由其他CXL设备220b、...、和220h中的每个CXL设备再次执行步骤S400。
根据如上所述的根据实施例的工作分发方法,由CXL设备220a处理的工作由其他CXL设备220b、...、和220h处理,从而可以增加每小时的吞吐量。
图5示出了根据本公开的实施例的CXL设备之间的工作分发方法的流程图。
图5示出了CXL设备CXL DEVICE#0将工作分发给其他CXL设备CXL DEVICE#1、...、和#n的情况。参照图5,在步骤S500中,CXL设备CXL DEVICE#0可以检查其他CXL设备CXLDEVICE#1、...、和#n的可用容量。CXL设备CXL DEVICE#0将用于检查可用容量的命令RQ_RS发送到CXL交换机CXL SWITCH,并且CXL交换机CXL SWITCH将命令RQ_RS发送到其他CXL设备CXL DEVICE#1、...、和#n。当CXL设备CXL DEVICE#1、...、和#n接收到命令RQ_RS时,它们可以检查由分配给它们的存储器的进程使用的总存储量,以检查可用容量。
CXL设备CXL DEVICE#1、...和#n将其存储器的可用容量发送到CXL交换机CXLSWITCH,作为对命令RQ_RS的响应ACK1、...和ACKn,并且CXL交换机CXL SWITCH可以将其他CXL设备CXL DEVICE#1、...、#n的响应ACK1、...、ACKn发送到CXL设备CXL DEVICE#0。关于步骤S500,将结合图6进行描述。
图6示出了根据本公开实施例的在执行工作分发方法之前的CXL设备的存储器。
一起参照图5和图6,待处理工作数据过多地存储在CXL设备CXL DEVICE#0的存储器610中。存储器610的一部分611由待处理工作的数据使用,并且存储器610的其余部分612是可用的。其他CXL设备CXL DEVICE#1、...、和#n的存储器620a、620b、...、和620h的一部分621a、621b、...、和621h正由其他CXL设备CXL DEVICE#1、...、和#n中的每个CXL设备当前正处理的进程使用。其他CXL设备CXL DEVICE#1、...、和#n的存储器620a、620b、...、和620h的其余部分622a、622b、...、和622h是可用的。其他CXL设备CXL DEVICE#1、...、和#n可以将存储器620a、620b、...、和620h的容量中的其余部分622a、622b、...、和622h的容量报告给CXL设备CXL DEVICE#0作为可用容量。
在步骤S502中,CXL设备CXL DEVICE#0可以基于其他CXL设备CXL DEVICE#1、...、和#n中的每个CXL设备的可用容量,来确定要向其分配工作的CXL设备。在一些实施例中,CXL设备CXL DEVICE#0可以通过将存储器620a、620b、...、和620h中的每一个存储器的可用容量与存储器610的可用容量进行比较,来确定要向其分配工作的CXL设备。例如,由于存储器620a和620h的可用容量大于或等于存储器610的可用容量,CXL设备CXL DEVICE#0可以确定将工作指派给包括存储器620a和620h的CXL设备。由于存储器620b的可用容量小于存储器610的可用容量,CXL设备CXL DEVICE#0可以确定不将工作指派给包括存储器620b的CXL设备。在另一实施例中,CXL设备CXL DEVICE#0可以通过将存储器620a、620b、...、和620h的可用容量分别与参考容量进行比较,来确定要向其分配工作的CXL设备。
在步骤S504中,CXL设备CXL DEVICE#0可以确定其他CXL设备CXL DEVICE#1、...、和#n的处理速率。在一些实施例中,CXL设备CXL DEVICE#0可以将测试工作T_DATA发送到其他CXL设备CXL DEVICE#1、...、和#n中的要向其分配工作的每个CXL设备。在其他CXL设备CXL DEVICE#1、...、和#n中,要向其分配工作的每个CXL设备可以处理测试工作T_DATA并发送其结果(RT_DATA1、...、和RT_DATAn)。CXL设备CXL DEVICE#0可以通过使用其发送测试工作T_DATA并接收每个结果RT_DATA1、...、和RT_DATAn所花费的时间,来确定工作处理速率。
CXL设备CXL DEVICE#0可以通过CXL交换机CXL SWITCH将测试工作T_DATA发送到其他CXL设备CXL DEVICE#1、...和#n中的要向其分配工作的CXL设备中的每个设备。CXL设备CXL DEVICE#0可以通过CXL交换机CXL SWITCH从其他CXL设备CXL DEVICE#1、...、和#n中的要向其分配工作的每个CXL设备接收结果RT_DATA1、...、和RT_DATAn。CXL交换机CXLSWITCH可以通过使用数据处理时间,来确定对应CXL设备的处理速率,其中,数据处理时间从将测试工作T_DATA发送到其他CXL设备CXL DEVICE#1、...、和#n中的要向其分配工作的每个CXL设备开始直到从CXL设备接收到对应的结果RT_DATA1、...、和RT_DATAn为止。例如,CXL交换机CXL SWITCH可以通过使用从将测试工作T_DATA发送到CXL设备CXL DEVICE#1开始直到接收到结果RT_DATA1为止的数据处理时间,来确定CXL设备CXL DEVICE#1的处理速率。CXL交换机CXL SWITCH可以将所确定的CXL设备的处理速率传送到CXL设备CXL DEVICE#0。在一些实施例中,CXL交换机CXL SWITCH也可以将与处理时间有关的信息发送到CXL设备CXL DEVICE#0。CXL设备CXL DEVICE#0可以将测试工作T_DATA发送到CXL交换机CXLSWITCH,并且可以进一步基于从CXL交换机CXL SWITCH接收到对应结果RT_DATA1、...、和RT_DATAn的时间以及从CXL交换机CXL SWITCH接收到的处理时间,确定经由CXL交换机CXLSWITCH的数据传输速率。
在实施例中,CXL设备CXL DEVICE#0可以校正已经向其发送测试工作T_DATA的CXL设备的处理速率。在一些实施例中,CXL设备CXL DEVICE#0可以将具有较小可用容量的CXL设备的处理速率校正为较慢。当已经向其发送测试工作T_DATA的CXL设备的可用容量小于或等于CXL设备的存储器容量的一定百分比时,CXL设备CXL DEVICE#0可以将该CXL设备的处理速率校正为较小值。例如,当已经向其发送测试工作T_DATA的CXL设备的可用容量小于CXL设备的存储器容量的一半时,CXL设备CXL DEVICE#0可以将该CXL设备的处理速率校正为具有原始计算值的一半的速率。
在步骤S506中,CXL设备CXL DEVICE#0可以基于在其他CXL设备CXL DEVICE#1、...、和#n中的要向其分配工作的每个CXL设备的处理速率(或经校正的处理速率),来确定工作分发量。CXL设备CXL DEVICE#0可以通过进一步考虑其他CXL设备CXL DEVICE#1、...、和#n的数据传输速率,来确定工作分发量。
CXL设备CXL DEVICE#0可以确定工作分发量,使得将存储在存储器610中的一些待处理工作分配给其他CXL设备CXL DEVICE#1、...、和#n并对该工作进行处理所花费的时间、以及CXL设备CXL DEVICE#0处理存储在存储器610中的未分配给其他CXL设备CXL DEVICE#1、...、和#n的其余工作所花费的时间被最小化。
在步骤S508中,CXL设备CXL DEVICE#0可以基于所确定的工作分发量,发送与在其他CXL设备CXL DEVICE#1、...、和#n中的要向其分配工作的每个CXL设备相对应的工作PDATA1、...、和P_DATAn,并且分配有工作P_DATA1、...、和P_DATAn的每个CXL设备可以将工作结果RP_DATA1、...、和RP_DATAn发送到CXL设备CXL DEVICE#0。这将参照图7一起描述。
图7示出了根据本公开的实施例在其上执行工作分发方法的CXL设备的存储器。
一起参照图5和图7,CXL设备CXL DEVICE#0可以将存储在CXL设备CXL DEVICE#0的存储器610中的工作的一部分数据(613)分发给其他CXL设备。该部分数据613可以存储在存储器620a和620h的一部分623a和623h中。存储在存储器620a和620h的一部分623a和623h中的数据可以由每个CXL设备的处理器处理。由于可用容量不足,可能无法将工作从CXL设备CXL DEVICE#0分配到存储器620b。
根据实施例,CXL设备CXL DEVICE#0可以实时检查其他CXL设备CXL DEVICE#1、......和#n的可用容量,可以根据检查到的可用容量来确定能够处理的工作量,并且可以将工作分发给其他CXL设备CXL DEVICE#1、...、和#n,以缩短工作的处理时间。
在上文中,已经作为示例描述了一个CXL设备将工作分发给其他CXL设备。因此,即使当若干CXL设备将工作分发给其他CXL设备时,也可以应用根据本公开的工作分发方法。此外,即使当主机将工作分发给其他CXL设备时,也可以应用根据本公开的工作分发方法。
图8示出了根据本公开的另一实施例的计算机***的框图。
参照图8,计算机***800可以包括第一CPU 810a、第二CPU 810b、GPU 830、NPU840、CXL交换机815、CXL存储器850、CXL存储设备852、PCIe设备854和加速器(例如,CXL设备)856。
第一CPU 810a、第二CPU 810b、GPU 830、NPU 840、CXL存储器850、CXL存储设备852、PCIe设备854和加速器856可以连接到CXL交换机815,并且它们可以通过CXL交换机815彼此通信。
在实施例中,第一CPU 810a、第二CPU 810b、GPU 830和NPU 840中的每一个可以是参照图1至图7描述的主机,并且可以直接耦接到单独的存储器820a、820b、820c、820d和820e。
在实施例中,CXL存储器850、CXL存储设备852和PCIe设备854可以是参照图1至图7描述的CXL设备。可以通过第一CPU 810a、第二CPU 810b、GPU 830和NPU 840中的任何一个或多个将工作分发给CXL存储器850、CXL存储设备852和PCIe设备854,并且可以通过CXL存储器850、CXL存储设备852和PCIe设备854中的任何一个或多个将工作分发给CXL存储器850、CXL存储设备852和PCIe设备854。
在实施例中,CXL交换机815可以连接到被配置为支持各种功能的PCIe设备854或加速器856,并且PCIe设备854或加速器856可以通过CXL交换机815与第一CPU 810a、第二CPU 810b、GPU 830和NPU 840中的每一个通信,或者可以访问CXL存储器850和CXL存储设备852。
在实施例中,CXL交换机815可以连接到外部网络860或架构,并且可以被配置为通过外部网络860或架构与外部服务器通信。
图9示出了根据本公开的实施例的服务器***的框图。
参照图9,示出了作为收集各种数据并提供服务的设施的数据中心900。数据中心900也可以被称为数据存储中心。数据中心900可以是用于操作搜索引擎和数据库的***,并且可以是在政府或诸如银行的公司机构中使用的计算机***。数据中心900可以包括应用服务器910a、...、和910h以及存储设备服务器920a、...、和920h。应用服务器的数量和存储设备服务器的数量可以根据实施例不同地选择,并且可以彼此不同。
在下文中,将主要描述第一存储设备服务器920a的配置。应用服务器910a、...、910h和存储设备服务器920a、...、920h中的每一个可以具有彼此相似的结构,并且可以通过网络NT彼此通信。
第一存储设备服务器920a可以包括处理器921、存储器922、交换机923、存储设备925、CXL存储器924和网络接口卡(NIC)926。处理器921可以控制第一存储设备服务器920a的整体操作,可以访问存储器922,可以执行加载到存储器922中的命令,或者可以处理数据。处理器921和存储器922可以直接连接,并且可以不同地选择包括在一个存储设备服务器920a中的处理器921的数量和存储器922的数量。
在实施例中,处理器921和存储器922可以提供处理器-存储器对。在实施例中,处理器921的数量和存储器922的数量可以不同。处理器921可以包括单核处理器或多核处理器。第一存储设备服务器920a的以上描述可以类似地应用于应用服务器910a、...、和910h中的每一个。
交换机923可以被配置为调解或路由被包括在第一存储设备服务器920a中的各种组件之间的通信。在实施例中,交换机923可以是图2和图5中描述的CXL交换机等。换句话说,交换机923可以是基于CXL协议实现的交换机。
CXL存储器924和存储设备925可以是参照图1至图7描述的CXL设备。
CXL存储器924可以连接到交换机923。存储设备925可以包括CXL接口电路CXL_IF、控制器CTRL和NAND闪存NAND。存储设备925可以根据处理器921的请求存储数据或输出存储的数据。
应用服务器910a、...、和910h可以不包括存储设备925。
网络接口卡(NIC)926可以连接到CXL交换机923。NIC926可以经由网络NT与其他存储设备服务器920a、...、和920h或其他应用服务器910a、...、和910h通信。
在实施例中,NIC 926可以包括网络接口卡、网络适配器等。NIC926可以通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络NT。NIC 926可以包括内部存储器、数字信号处理器(DSP)、主机总线接口等,并且可以通过主机总线接口连接到处理器921和/或交换机923。在实施例中,NIC 926可以与处理器921、交换机923或存储设备925中的至少一个集成。
在实施例中,网络NT可以使用光纤通道(FC)、以太网等来实现。在这种情况下,作为用于相对高速率数据传输的介质的FC可以使用提供高性能和高可用性的光学交换机。根据网络NT的访问方法,存储设备服务器920a、...、和920h可以被提供为文件存储设备、块存储设备或对象存储设备。
在实施例中,网络NT可以是仅存储网络,诸如存储区域网络(SAN)。例如,SAN可以是使用FC网络并根据FC协议(FCP)实现的FC-SAN。作为另一示例,SAN可以是IP-SAN,其使用TCP/IP网络并根据iSCSI(基于TCP/IP的SCSI或互联网SCSI)协议来实现。在实施例中,网络NT可以是通用网络,诸如TCP/IP网络。例如,网络NT可以根据诸如基于以太网的FC(FCoE)、网络附加存储(NAS)和基于架构的NVMe(NVMe-oF)等协议来实现。
在实施例中,应用服务器910a、...、和910h中的至少一个应用服务器可以通过网络NT将用户或客户端请求存储的数据存储在存储设备服务器920a、...、和920h之一中。应用服务器910a、...、和910h中的至少一个应用服务器可以通过网络NT从存储设备服务器920a、...、和920h之一获取用户或客户端请求读取的数据。例如,应用服务器910a、...、和910h中的至少一个应用服务器可以实现为web服务器或数据库管理***(DBMS)。
在实施例中,应用服务器910a、...、和910h中的至少一个应用服务器可以通过网络NT访问包括在另一应用服务器中的存储器、CXL存储器或存储设备,或者可以通过网络NT访问包括在存储设备服务器920a、...、和920h中的存储器、CXL存储器或存储设备。因此,应用服务器910a、...、和910h中的至少一个应用服务器可以对存储在其他应用服务器910a、...、和910h和/或存储设备服务器920a、...、和920h中的数据执行各种操作。例如,应用服务器910a、...、和910h中的至少一个应用服务器可以执行命令以在其他应用服务器910a、...、和910h和/或存储设备服务器920a、...、和920h之间移动或复制数据。在这种情况下,可以将数据直接移动到应用服务器910a、...、和910h的存储器或CXL存储器,或者经由存储设备服务器920a、...、和920h的存储器或CXL存储器从存储设备服务器920a、...、和920h的存储设备中移动数据。为了安全或隐私,可以对通过网络移动的数据进行加密。
在一些实施例中,参照图1至图9描述的每个组件或两个或更多个组件的组合可以实现为数字电路、可编程或非可编程逻辑器件或阵列、专用集成电路(ASIC)等。
尽管已经结合目前被认为是示例性实施例的内容描述了本公开,但是应当理解,本公开不限于所公开的实施例,相反,旨在涵盖包括在所附权利要求的精神和范围内的各种修改和等效布置。

Claims (20)

1.一种用于缓存一致性的装置,包括:
多个计算快速链路CXL设备,每个CXL设备包括存储器和用于处理存储在所述存储器中的工作的处理器;以及
交换机,被配置为将CXL设备彼此连接,
其中,所述多个CXL设备中的第一CXL设备基于所述多个CXL设备中的至少一部分CXL设备的存储器的可用容量从所述至少一部分CXL设备中选择至少一个第二CXL设备,以分发存储在所述第一CXL设备的存储器中的工作。
2.根据权利要求1所述的装置,其中,
所述第一CXL设备基于所述至少一个第二CXL设备的工作处理速率,来确定分发给所述至少一个第二CXL设备的工作量。
3.根据权利要求2所述的装置,其中,
所述第一CXL设备向所述至少一个第二CXL设备中的每个第二CXL设备发送测试工作,并从所述至少一个第二CXL设备中的每个第二CXL设备接收所述测试工作的结果,以确定所述至少一个第二CXL设备中的每个第二CXL设备的工作处理速率。
4.根据权利要求2所述的装置,其中,
所述第一CXL设备基于所述至少一个第二CXL设备中的每个第二CXL设备的可用容量,来校正所述至少一个第二CXL设备中的每个第二CXL设备的工作处理速率。
5.根据权利要求4所述的装置,其中,
所述第一CXL设备将所述至少一个第二CXL设备中的具有较小可用容量的第二CXL设备的工作处理速率校正为较慢。
6.根据权利要求2所述的装置,其中,
所述第一CXL设备基于将存储在所述第一CXL设备的所述存储器中的一部分工作分配给所述至少一个第二CXL设备并对存储在所述存储器中的所述一部分工作进行处理所需的第一时间、以及所述第一CXL设备对存储在所述第一CXL设备的所述存储器中的未分配给所述至少一个第二CXL设备的其余工作进行处理所需的第二时间,来确定要分发给所述至少一个第二CXL设备的工作量。
7.根据权利要求6所述的装置,其中,
所述第一CXL设备确定要分发给所述至少一个第二CXL设备的工作量,使得所述第一时间和所述第二时间基本相等。
8.根据权利要求1所述的装置,其中,
所述第一CXL设备将包括可用容量等于或大于所述第一CXL设备的存储器的可用容量的存储器在内的CXL设备选择作为所述至少一个第二CXL设备。
9.根据权利要求1所述的装置,其中,
所述第一CXL设备将包括可用容量大于或等于参考可用容量的存储器在内的CXL设备选择作为所述至少一个第二CXL设备。
10.根据权利要求1所述的装置,其中,
所述第一CXL设备通过所述交换机向所述多个CXL设备中的除了所述第一CXL设备之外的其余CXL设备发送用于检查可用容量的命令,以及
所述其余CXL设备中的每个CXL设备在接收到所述命令时,通过检查所述CXL设备的存储器使用情况来检查所述CXL设备的可用容量。
11.根据权利要求1所述的装置,其中,
所述第一CXL设备根据要分发给所述至少一个第二CXL设备的工作量将工作分发给所述至少一个第二CXL设备,检查所述多个CXL设备中的所述CXL设备的存储器的可用容量,并基于所述CXL设备的所述存储器的所述可用容量,从所述多个CXL设备中选择至少一个第三CXL设备,其中存储在所述第一CXL设备的所述存储器中的所述工作还被进一步分发给所述至少一个第三CXL设备。
12.根据权利要求1所述的装置,其中,
从所述多个CXL设备中的除所述第一CXL设备之外的至少一个其余CXL设备分发的工作被存储在所述第一CXL设备的所述存储器中。
13.根据权利要求1所述的装置,其中,
所述工作包括数据和用于处理所述数据的程序。
14.一种用于缓存一致性的装置,包括:
多个第一设备,每个第一设备包括存储器和用于处理存储在所述存储器中的工作的处理器;以及
第二设备,被配置为基于每个第一设备的工作处理速率和每个第一设备的存储器的可用容量,来确定第一设备中的要向其分发工作的至少一个第一设备和要分发的工作量,并将基于与每个第一设备相对应的工作量的工作分发给要向其分发所述工作的所述至少一个第一设备。
15.根据权利要求14所述的装置,其中,
所述第二设备基于第一设备的存储器的可用容量,来校正每个第一设备的工作处理速率,并基于第一设备的经校正的工作处理速率,来确定与每个第一设备相对应的工作量。
16.根据权利要求15所述的装置,其中,
所述与每个第一设备相对应的工作量随着每个第一设备的经校正的工作处理速率的增加而增加。
17.一种由包括多个计算快速链路CXL设备在内的计算***执行的用于缓存一致性的方法,所述方法包括:
检查CXL设备的存储器可用容量;
基于所述多个CXL设备的存储器可用容量,在所述CXL设备中选择要向其分发工作的至少一个第一CXL设备;
检查所述至少一个第一CXL设备的工作处理速率;以及
基于所述至少一个第一CXL设备的工作处理速率,来确定要分配给所述至少一个第一CXL设备中的每个第一CXL设备的工作的分发量。
18.根据权利要求17所述的方法,其中,
检查所述至少一个第一CXL设备的工作处理速率包括:
向所述至少一个第一CXL设备中的每个第一CXL设备发送测试工作;
从所述至少一个第一CXL设备中的每个第一CXL设备接收所述测试工作的结果;以及
基于从向所述至少一个第一CXL设备中的每个第一CXL设备发送测试工作开始直到从所述至少一个第一CXL设备中的每个第一CXL设备接收所述测试工作的结果为止的时间,来计算所述至少一个第一CXL设备的工作处理速率。
19.根据权利要求17所述的方法,还包括:
基于所述至少一个第一CXL设备中的每个第一CXL设备的存储器可用容量,来校正所述至少一个第一CXL设备中的每个第一CXL设备的工作处理速率,
其中,确定工作的分发量包括:基于经校正的工作处理速率,来确定要分配给所述至少一个第一CXL设备中的每个第一CXL设备的工作的分发量。
20.根据权利要求19所述的方法,其中,
校正工作处理速率包括:
将所述至少一个第一CXL设备中的具有较小存储器可用容量的第一CXL设备的工作处理速率校正为较慢。
CN202310005924.XA 2022-01-07 2023-01-03 用于缓存一致性的装置和方法 Pending CN116418869A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2022-0003014 2022-01-07
KR20220003014 2022-01-07
KR1020220056857A KR20230107086A (ko) 2022-01-07 2022-05-09 캐시-일관성을 위한 장치 및 방법
KR10-2022-0056857 2022-05-09

Publications (1)

Publication Number Publication Date
CN116418869A true CN116418869A (zh) 2023-07-11

Family

ID=87052175

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310005924.XA Pending CN116418869A (zh) 2022-01-07 2023-01-03 用于缓存一致性的装置和方法

Country Status (2)

Country Link
US (1) US20230222062A1 (zh)
CN (1) CN116418869A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118113631A (zh) * 2024-04-30 2024-05-31 山东海量信息技术研究院 一种数据处理***、方法、设备、介质及计算机程序产品

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118113631A (zh) * 2024-04-30 2024-05-31 山东海量信息技术研究院 一种数据处理***、方法、设备、介质及计算机程序产品
CN118113631B (zh) * 2024-04-30 2024-07-02 山东海量信息技术研究院 一种数据处理***、方法、设备、介质及计算机程序产品

Also Published As

Publication number Publication date
US20230222062A1 (en) 2023-07-13

Similar Documents

Publication Publication Date Title
US10248607B1 (en) Dynamic interface port assignment for communication transaction
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
CN105408880A (zh) 对共享存储装置的持久存储器的直接访问
US11809290B2 (en) Storage system and storage queue processing following port error
TWI797022B (zh) 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法
CN116418869A (zh) 用于缓存一致性的装置和方法
US9910813B1 (en) Single function using multiple ports
US20220147470A1 (en) System, device, and method for accessing memory based on multi-protocol
CN115687193A (zh) 存储模块、包括其的***以及存储模块的操作方法
US20220137864A1 (en) Memory expander, host device using memory expander, and operation method of sever system including memory expander
US10552050B1 (en) Multi-dimensional computer storage system
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US20040034751A1 (en) Asymmetrical load balancing for mirrored storage volumes
KR20220082563A (ko) 스토리지 장치 및 이의 동작 방법
EP3959619B1 (en) Multi-processor/endpoint data splitting system
KR20230107086A (ko) 캐시-일관성을 위한 장치 및 방법
EP4209916A1 (en) Apparatus and method for cache-coherence
CN114372011A (zh) 用于访问设备附加存储器的***、设备和方法
KR102403477B1 (ko) 스토리지 장치와 이를 포함하는 호스트-스토리지 시스템
US20230214258A1 (en) Storage controller and storage device
EP4283457A2 (en) Computing system for managing distributed storage devices, and method of operating the same
KR20230107085A (ko) 캐시-일관성을 위한 장치 및 방법
US20230376238A1 (en) Computing system for managing distributed storage devices, and method of operating the same
US20240168675A1 (en) Storage apparatus and method for data integrity
US20220164286A1 (en) Memory controller, system including the same, and operating method of memory device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication