CN114428587A - 存储器扩展器、异构计算装置和异构计算装置的操作方法 - Google Patents
存储器扩展器、异构计算装置和异构计算装置的操作方法 Download PDFInfo
- Publication number
- CN114428587A CN114428587A CN202111239813.2A CN202111239813A CN114428587A CN 114428587 A CN114428587 A CN 114428587A CN 202111239813 A CN202111239813 A CN 202111239813A CN 114428587 A CN114428587 A CN 114428587A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- task
- accelerator
- extender
- 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
- 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
- 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/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
- G06F13/1631—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
-
- 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/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/387—Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
-
- 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/0638—Organizing or formatting or addressing of data
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了存储器扩展器、异构计算装置和异构计算装置的操作方法。所述存储器扩展器包括:存储器装置,存储多个任务数据。控制器控制存储器装置。控制器通过计算快速链路(CXL)接口从外部的中央处理器(CPU)接收元数据和管理请求,并且响应于管理请求而在管理模式下进行操作。在管理模式下,控制器通过CXL接口从加速器接收读取请求和第一地址,并且响应于读取请求而基于元数据将所述多个任务数据中的一个发送到加速器。
Description
本申请要求于2020年10月29日在韩国知识产权局提交的第10-2020-0141710号韩国专利申请的优先权,该韩国专利申请的公开通过引用全部包含于此。
技术领域
在此描述的本公开的实施例涉及计算系统,更具体地,涉及存储器扩展器、使用该存储器扩展器的异构计算装置以及该异构计算装置的操作方法。
背景技术
计算系统可以将各种信息技术(IT)服务提供给用户。随着各种IT服务被提供给用户,由计算系统处理的数据的量增大。出于该原因,存在对提高处理数据的速度的需求。计算系统正在发展成为提供各种IT服务的异构计算环境。现今,正在开发用于在异构计算环境内以高的速度处理数据的各种技术。
发明内容
本公开的实施例提供了具有提高的性能的存储器扩展器、使用该存储器扩展器的异构计算装置以及该异构计算装置的操作方法。
根据一个实施例,存储器扩展器包括:存储器装置,存储多个任务数据;以及控制器,控制存储器装置。控制器通过计算快速链路(CXL)接口从外部的中央处理器(CPU)接收元数据和管理请求,并且响应于管理请求而在管理模式下进行操作。在管理模式下,控制器通过CXL接口从加速器接收读取请求和第一地址,并且响应于读取请求而基于元数据将所述多个任务数据中的一个发送到加速器。
根据一个实施例,异构计算装置包括:中央处理器(CPU);存储器,在CPU的控制下存储数据;加速器,对多个任务数据重复地执行计算,并且生成多个结果数据;以及存储器扩展器,响应于来自CPU的管理请求而在管理模式下进行操作,并且在管理模式下对将要提供到加速器的所述多个任务数据和从加速器提供的所述多个结果数据进行管理。CPU、加速器和存储器扩展器通过异构计算接口彼此进行通信。
根据一个实施例,包括通过计算快速链路(CXL)接口连接的中央处理器(CPU)、加速器和存储器扩展器的异构计算装置的操作方法包括:由CPU将元数据发送到存储器扩展器;由CPU将管理请求发送到存储器扩展器;由CPU将任务请求发送到加速器;由加速器响应于任务请求而将读取请求发送到存储器扩展器;由存储器扩展器响应于读取请求而基于元数据将多个任务数据中的第一任务数据发送到加速器;由加速器对第一任务数据执行第一计算,以生成第一结果数据;由加速器将写入请求和第一结果数据发送到存储器扩展器;以及由存储器扩展器响应于写入请求而存储第一结果数据。
附图说明
通过参照附图详细地描述本公开的实施例,本公开的以上和其他目的和特征将变得清楚。
图1是示出根据本公开的实施例的计算装置的示图。
图2是示出图1的计算装置的操作的流程图。
图3是示出图1的存储器扩展器的配置的框图。
图4是示出由图3的控制器的元数据管理器管理的元数据的示图。
图5A是示出图1的计算装置的操作的流程图。
图5B是示出图5A的操作S103中的管理请求的报头信息的示图。
图6是示出图1的存储器扩展器的操作的流程图。
图7是示出由图1的存储器扩展器基于单元大小管理的数据集的示图。
图8是示出由图1的存储器扩展器基于分隔符管理的数据集的示图。
图9是示出由图1的存储器扩展器管理的数据集的示图。
图10是用于描述根据图9的实施例的操作的流程图。
图11A是示出图1的计算装置的操作的示图。
图11B是示出图11A的完成的报头信息的示图。
图12是示出图1的计算装置的操作的流程图。
图13是示出图1的计算装置的操作的流程图。
图14是示出图1的存储器扩展器的操作的流程图。
图15是示出根据本公开的实施例的计算装置的框图。
图16是示出图15的计算装置的操作的流程图。
图17是示出图15的存储器扩展器的操作的流程图。
图18A是示出根据本公开的实施例的存储器扩展器的操作的流程图。
图18B是示出图18A的操作S1010中的状态请求中所包括的报头信息的示图。
图19是示出适用于根据本公开的存储器扩展器的固态驱动器(SSD)系统的框图。
图20是示出包括在根据本公开的实施例的存储器扩展器中的存储器装置的三维结构的电路图。
图21是示出应用有根据本公开的实施例的服务器系统的数据中心的框图。
图22是用于描述应用于本公开的实施例的异构计算接口的示例(例如,CXL接口)的示图。
具体实施方式
以下,本公开的实施例可以被详细地和清楚地描述到使得本领域技术人员容易实现本公开的程度。
图1是示出根据本公开的实施例的计算装置的示图。参照图1,计算装置100可以包括中央处理器(CPU)101、存储器102、加速器103和存储器扩展器110。在一个实施例中,计算装置100可以包括异构计算装置或异构计算系统。异构计算系统可以是这样的系统,该系统包括彼此有机地连接的不同类型的计算装置并且被配置为执行各种功能。例如,如图1中所示,计算装置100可以包括CPU 101和加速器103。CPU 101和加速器103可以是不同类型的计算装置。以下,为了便于描述,使用了简单表述“计算装置”,但本公开不限于此。例如,计算装置可以指示异构计算装置。
CPU 101可以是被配置为控制计算装置100的整体操作的处理器核。例如,CPU 101可以被配置为对操作系统的指令或在计算装置100上驱动的各种程序进行解码,并且基于解码的结果处理数据。CPU 101可以与存储器102通信。由CPU 101处理的数据或在CPU 101的操作期间所需要的数据可以被存储在存储器102中。在一个实施例中,存储器102可以是基于双列直插式存储器模块(DIMM)的存储器,并且可以与CPU 101直接进行通信。存储器102可以用作CPU 101的缓冲存储器、高速缓存存储器或系统存储器。
加速器103可以包括被配置为执行特定计算的处理器核或计算机(或计算器)。例如,加速器103可以是被配置为执行人工智能(AI)操作的计算机或处理器,诸如图形处理器(GPU)或神经处理器(NPU)。在一个实施例中,加速器103可以在CPU 101的控制下执行计算操作。
存储器扩展器110可以在CPU 101的控制下进行操作。例如,存储器扩展器110可以通过异构计算接口与CPU 101进行通信。在一个实施例中,异构计算接口可以包括基于计算快速链路(compute express link,CXL)协议的接口。以下,为了便于描述,假设异构计算接口是基于CXL协议的接口(即,CXL接口),但本公开不限于此。例如,异构计算接口可以通过基于诸如以下协议的各种计算接口中的至少一种被实现:Gen-Z协议、NVLink协议、CCIX(Cache Coherent Interconnect for Accelerators,用于加速器的高速缓存一致性互连)协议和开放式CAPI(Coherent Accelerator Processor Interface,一致性加速器处理器接口)协议。
存储器扩展器110可以由CPU 101通过CXL接口控制,以存储数据或输出存储的数据。也就是说,CPU 101可以使用存储器扩展器110作为具有与存储器102的功能相似的功能的存储器区域。在一个实施例中,存储器扩展器110可以对应于由CXL标准定义的类型3(Type 3)存储器装置。
存储器扩展器110可以包括控制器111和存储器装置112。控制器111可以将数据存储在存储器装置112中,或者可以读取存储在存储器装置112中的数据。
在一个实施例中,加速器103可以与CXL接口连接。加速器103可以通过CXL接口从CPU 101接收任务命令,并且可以响应于接收的任务命令而通过CXL接口从存储器扩展器110接收数据。加速器103可以对接收的数据执行计算操作,并且可以通过CXL接口将计算操作的结果存储在存储器扩展器110中。
在一个实施例中,将要由加速器103处理的数据可以由CPU 101管理。在这种情况下,每当通过加速器103处理计算时,可需要通过CPU 101的数据分配,从而导致性能的降低。根据本公开的实施例的存储器扩展器110可以被配置为基于来自CPU 101的元数据对分配或将要分配给加速器103的数据进行管理。以下,将参照所附附图更充分地描述根据本公开的实施例的存储器扩展器110的操作。
图2是示出图1的计算装置的操作的流程图。将参照图2描述CPU 101直接管理将要由加速器103处理的数据的操作。在下文中,除非另外定义,否则假设组件之间的通信在基于CXL协议的通信分组(packet)的基础上被执行。也就是说,CPU 101、加速器103和存储器扩展器110可以通过CXL接口彼此进行通信,在CPU 101、加速器103和存储器扩展器110之间交换的请求或数据可以具有基于CXL协议的通信分组的结构。然而,本公开不限于此。例如,CPU 101、加速器103和存储器扩展器110可以通过基于诸如以下协议的各种计算接口中的至少一种而彼此进行通信:Gen-Z协议、NVLink协议、CCIX协议和开放式CAPI协议。
以下,为了便于描述,假设将要由加速器103处理的数据被存储在存储器扩展器110中。也就是说,CPU 101可以在存储器扩展器110中存储将要由加速器103处理的数据。然而,本公开不限于此。
参照图1和图2,在操作S1中,CPU 101可以将任务请求RQ_task和第一地址AD1发送到加速器103。任务请求RQ_task可以是针对与第一地址AD1对应的数据的任务开始命令。第一地址AD1可以是由CPU 101管理的存储器地址,与第一地址AD1对应的数据可以被存储在存储器扩展器110的存储器装置112中。
在操作S2中,加速器103可以响应于任务请求RQ_task而将读取请求RQ_rd和第一地址AD1发送到存储器扩展器110。在操作S3中,存储器扩展器110可以将与第一地址AD1对应的第一数据DT1发送到加速器103。在操作S4中,加速器103可以对第一数据DT1执行计算。在操作S5中,加速器103可以将第一数据DT1的计算结果(即,第一结果数据RST1)和写入请求RQ_wr发送到存储器扩展器110。在操作S6中,存储器扩展器110可以将第一结果数据RST1存储在存储器装置112中。在操作S7中,加速器103可以生成对CPU 101的中断。在一个实施例中,中断可以是提供以下通知的信息:与第一地址AD1对应的第一数据DT1被完全地计算,并且第一结果数据RST1被存储在存储器扩展器110中。
在操作S8中,CPU 101可以响应于中断而将任务请求RQ_task和第二地址AD2发送到加速器103。在操作S9中,加速器103可以响应于任务请求RQ_task而将读取请求RQ_rd和第二地址AD2发送到存储器扩展器110。在操作S10中,存储器扩展器110可以将与第二地址AD2对应的第二数据DT2发送到加速器103。在操作S11中,加速器103可以对第二数据DT2执行计算。在操作S12中,加速器103可以将第二数据DT2的计算结果(即,第二结果数据RST2)和写入请求RQ_wr发送到存储器扩展器110。在操作S13中,存储器扩展器110可以将第二结果数据RST2存储在存储器装置112中。在操作S14中,加速器103可以生成对CPU 101的中断。在操作S15中,CPU101可以响应于中断而将任务请求RQ_task和第三地址AD3发送到加速器103。CPU 101、加速器103和存储器扩展器110可以重复地执行以上处理,直到包括在任务中的所有的数据被完全计算。
如上所述,在将要由加速器103处理的数据由CPU 101管理的情况下,每当一次计算被加速器103完成,对CPU 101的中断可以被生成,并且CPU101重复地(例如,再次)将地址发送到加速器103。以上重复操作和中断可使得CPU 101的利用率(utilization)低。
图3是示出图1的存储器扩展器的配置的框图。图4是示出由图3的控制器的元数据管理器管理的元数据的示图。参照图1、图3和图4,控制器111可以包括处理器111a、SRAM111b、元数据管理器111c、数据管理器111d、进度管理器111e、主机接口电路111f和存储器接口电路111g。
处理器111a可以被配置为控制控制器111或存储器扩展器110的整体操作。SRAM(静态随机存取存储器)111b可以作为控制器111的缓冲存储器或系统存储器进行操作。在一个实施例中,以下将要描述的组件(诸如,元数据管理器111c、数据管理器111d和进度管理器111e)可以通过软件、硬件或它们的组合被实现。通过软件而实现的组件可以被存储在SRAM 111b中,并且可以由处理器111a驱动。
元数据管理器111c可以被配置为管理存储在存储器扩展器110中的元数据MDT。例如,元数据MDT可以是从CPU 101提供的信息。元数据MDT可以包括存储器扩展器110将数据分配给加速器103、存储结果数据或管理参考数据所需要的信息。
如图4中所示,元数据MDT可以包括任务元数据MDT_t和参考元数据MDT_r。任务元数据MDT_t可以包括任务编号TN、数据管理模式dataMNGMode、数据起始地址dAD_s、数据结束地址dAD_e、任务数据的单元大小tUS、任务数据的分隔符(delimiter)tDL、加速器标识符ACID、结果数据起始地址rAD_s和结果数据结束地址rAD_e中的至少一个。
任务编号TN可以是用于对由CPU 101分配的任务进行区分的编号或标识符。数据管理模式dataMNGMode可以指示管理与相关任务相关联的数据或结果数据的方式。在一个实施例中,数据管理方式可以包括各种管理方式(诸如,堆(Heap)、队列和键值)。
数据起始地址dAD_s可以指示存储有将要在相关任务中处理的数据集的存储器区域的起始地址,数据结束地址dAD_e可以指示存储有将要在相关任务中处理的数据集的存储器区域的结束地址。
任务数据的单元大小tUS可以指示用于对数据起始地址dAD_s与数据结束地址dAD_e之间的数据集进行划分的单位。例如,在数据起始地址dAD_s与数据结束地址dAD_e之间的数据集为16千字节,并且任务数据的单元大小tUS被设置为2千字节的情况下,数据集可以被划分为8(=16/2)个单元数据,并且加速器103可以接收一个单元数据,并可以对接收的单元数据执行计算。
任务数据的分隔符tDL可以指示用于对数据起始地址dAD_s与数据结束地址dAD_e之间的数据集进行划分的字符或标记。例如,在任务数据的分隔符tDL被设置为“,”的情况下,数据起始地址dAD_s与数据结束地址dAD_e之间的数据集可以基于分隔符“,”被划分为单元数据。在一个实施例中,通过任务数据的分隔符tDL而划分的单元数据的大小可以是不同的。
加速器标识符ACID可以是用于指定将对相关任务进行处理的加速器的信息。在一个实施例中,如参照所附附图所述,计算装置可以包括多个加速器。在这种情况下,单独的多个任务可以分别被分配给多个加速器,CPU可以基于分配给每个加速器的任务来设置元数据的加速器标识符ACID。
结果数据起始地址rAD_s可以指示存储有加速器103所计算出的结果数据的存储器区域的起始地址。结果数据结束地址rAD_e可以指示存储有加速器103所计算出的结果数据的存储器区域的结束地址。
在一个实施例中,由加速器103执行的特定计算可需要参考包括在存储器扩展器110中的参考数据或不同数据、以及任务数据。在这种情况下,参考数据可以基于参考元数据MDT_r被选择。
例如,参考元数据MDT_r可以包括参考编号RN、操作码、参考起始地址rAD_s、参考结束地址rAD_e、参考数据的单元大小rUS、参考数据的分隔符rDL、标签、寿命和保留信息中的至少一个。
参考编号RN可以是用于标识将要进行参考的数据的信息。
操作码可以指示定义利用参考数据的计算操作或内部计算的信息。
参考起始地址rAD_s可以指示存储有参考数据的存储器区域的起始地址,参考结束地址rAD_e可以指示存储有参考数据的存储器区域的结束地址。
参考数据的单元大小rUS可以指示用于对参考数据进行划分的数据大小,参考数据的分隔符rDL可以是用于对参考数据进行划分的字符或标记。除了目标数据不同之外,参考数据的单元大小rUS和参考数据的分隔符rDL在功能和操作上与任务数据的单元大小tUS和任务数据的分隔符tDL相似,因此,将省略附加的描述以避免冗余。
标签可以包括与利用参考数据的计算操作或内部计算相关联的标签信息。寿命可以包括关于计算操作在其期间被执行的时间(例如,计算操作的结束时间)的信息。保留信息可以包括与元数据MDT相关联的任何其他信息。
参考数据可以基于上述参考元数据MDT_r被选择,各种计算操作(诸如,算术操作、合并操作和向量操作)可以对任务数据和选择的参考数据执行。在一个实施例中,参考元数据MDT_r的信息可以对应于任务元数据MDT_t的部分信息。
以下,为了更好地理解,假设元数据MDT是任务元数据MDT_t。也就是说,在以下将要描述的实施例中,假设加速器103对任务数据执行计算。然而,本公开不限于此。例如,参考数据可以通过利用参考元数据MDT_r被选择,各种计算可以对任务数据和选择的参考数据执行。
元数据管理器111c可以管理上述元数据MDT。
数据管理器111d可以被配置为管理存储在存储器装置112中的数据。例如,数据管理器111d可以通过使用单元大小或分隔符来辨识存储在存储器装置112中的任务数据,并且可以顺序地输出辨识的单元数据。可选地,数据管理器111d可以被配置为将来自加速器103的结果数据顺序地存储在存储器装置112中。在一个实施例中,数据管理器111d可以包括读取计数器和写入计数器,读取计数器被配置为管理任务数据的输出,写入计数器被配置为管理结果数据的输入。
进度管理器111e可以响应于来自CPU 101的进度检查请求而将关于任务进度情况的信息提供给CPU 101。例如,进度管理器111e可以基于由数据管理器111d管理的读取计数器和写入计数器的值来检查正在被计算的任务数据和计算被完成的任务数据的情况,并且可以将检查的信息提供给CPU 101。
控制器111可以通过主机接口电路111f与CPU 101和加速器103通信。主机接口电路111f可以是基于CXL协议的接口电路。主机接口电路111f可以被配置为支持诸如Gen-Z协议、NVLink协议、CCIX协议和开放式CAPI协议的各种异构计算接口中的至少一种以及异构计算接口(诸如,CXL协议)。
控制器111可以被配置为通过存储器接口电路111g控制存储器装置112。存储器接口电路111g可以被配置为根据存储器装置112的种类而支持各种接口。在一个实施例中,存储器接口电路111g可以被配置为支持诸如切换接口(toggle interface)或双倍数据速率(DDR)接口的存储器接口。
图5A是示出图1的计算装置的操作的流程图。图5B是示出图5A的操作S103中的管理请求的报头信息的示图。将提供以下将要描述的实施例以容易地描述本公开的技术特征,并且本公开不限于此。例如,在以下将要描述的流程图中,特定操作被示出为独立的操作,但本公开不限于此。例如,一些操作可以被一个请求集成。
以下,为了便于描述,假设用于加速器103的计算的任务数据被CPU 101预先地存储在存储器扩展器110中。
以下,除非另外定义,否则假设组件之间的通信基于CXL协议被执行。也就是说,组件之间的通信可以在基于CXL协议的通信分组的基础上被执行。然而,本公开不限于此。例如,组件可以基于上述接口之一彼此进行通信。
参照图1、图3、图5A和图5B,在操作S101中,CPU 101可以将写入请求RQ_wr和元数据MDT发送到存储器扩展器110。
在操作S102中,存储器扩展器110可以存储元数据MDT。例如,控制器111的元数据管理器111c可以在存储器装置112或SRAM 111b中对元数据MDT进行存储和管理。
在一个实施例中,操作S101和操作S102可以在计算装置100的初始化操作中被执行。也就是说,存储器扩展器110针对任务数据执行管理操作所需要的元数据MDT可以在初始化操作期间被加载。可选地,存储器扩展器110可以以单独的固件的形式存储元数据MDT。在这种情况下,代替操作S101和操作S102,CPU 101可以将用于加载固件的请求提供给存储器扩展器110,并且存储器扩展器110可以通过加载固件来存储元数据MDT。
在操作S103中,CPU 101可以将管理请求RQ_mg发送到存储器扩展器110。管理请求RQ_mg可以是用于请求与加速器103的计算相关联的任务数据管理操作的消息或通信分组。例如,管理请求RQ_mg可以对应于CXL协议的M2S RwD(Master to Subordinate Requestwith Data,带有数据的主到从请求)消息或通信分组。在这种情况下,管理请求RQ_mg可以包括图5B中示出的第一CXL报头CXL_header1。
第一CXL报头CXL_header1可以包括有效字段Valid、存储器操作码字段MEMopcode、元字段MetaField、元值字段MetaValue、监听类型字段SNP Type、地址字段Address、标签字段Tag、业务类别(traffic class)字段TC、有损(poison)字段Poison、保留字段RSVD和位置字段Position。
有效字段Valid可以包括关于相关请求是否有效的信息。
存储器操作码字段MEM opcode可以包括关于存储器操作的信息。在一个实施例中,根据本公开的实施例的管理请求RQ_mg的存储器操作码字段MEM opcode可以包括关于存储器扩展器110的数据管理操作的启动的信息(例如,“1101”、“1110”或“1111”)。
元字段MetaField可以包括指示元数据的更新是否被需要的信息。元值字段MetaValue可以包括元数据的值。在一个实施例中,根据本公开的实施例的元数据MDT和上述元数据可以是不同的。
监听类型字段SNP Type可以包括关于监听类型的信息。
地址字段Address可以包括关于主机的物理地址的信息,其与存储器操作码字段相关联。在一个实施例中,根据本公开的实施例的管理请求RQ_mg的地址字段Address可以包括关于将要进行管理的数据的起始存储器地址的第一地址信息“地址[1]”以及关于将要进行管理的数据的结束存储器地址的第二地址信息“地址[2]”。
标签字段Tag可以包括用于标识预分配的存储器区域的标签信息。在一个实施例中,根据本公开的实施例的管理请求RQ_mg的标签字段Tag可以包括相关的任务编号(参照任务元数据MDT_t)。
业务类别字段TC可以包括定义与请求相关联的服务质量(QoS)的信息。
有损字段Poison可以包括指示在与请求相关联的数据中是否存在错误的信息。
位置字段Position可以包括元数据MDT的地址。保留字段RSVD可以包括与请求相关联的任何其他信息。在一个实施例中,与由CXL标准(版本1.1)定义的M2S RwD字段相比,位置字段Position可以是新添加的字段。在一个实施例中,位置字段Position可以被省略,与位置字段Position相关联的信息可以被包括在保留字段RSVD或业务类别字段TC中。
如上所述,根据本公开的实施例的管理请求RQ_mg可以通过修改由CXL协议定义的M2S RwD消息的一些字段而被生成。
在一个实施例中,操作S101中的写入请求RQ_wr可以利用操作S103中的管理请求RQ_mg被替换。在这种情况下,CPU 101可以同时或通过一个操作将管理请求RQ_mg和元数据MDT发送到存储器扩展器110。在这种情况下,响应于管理请求RQ_mg,存储器扩展器110可以存储元数据MDT,并且可以开始针对任务数据的管理操作。
在一个实施例中,响应于管理请求RQ_mg,存储器扩展器110可以如下地执行针对任务数据的管理操作。
在操作S104中,CPU 101可以将第一任务请求RQ_task1和第一任务地址dAD_s1发送到加速器103。第一任务地址dAD_s1可以是与分配给加速器103的任务对应的数据集的起始地址或初始地址。
在操作S105中,加速器103可以将第一任务地址dAD_s1和读取请求RQ_rd发送到存储器扩展器110。
在操作S106中,存储器扩展器110可以将与第一地址AD1对应的第一数据DT1发送到加速器103。例如,响应于操作S103中的管理请求RQ_mg,存储器扩展器110可以处于执行针对任务数据的管理操作的模式。在这种情况下,响应于来自加速器103的读取请求RQ_rd和第一任务地址dAD_s1,存储器扩展器110可以基于元数据MDT查找与第一任务地址dAD_s1对应的任务,并且可以检查与找到的任务对应的读取计数。读取计数可以指示发送的单元数据的数量。存储器扩展器110可以将与第一任务地址dAD_s1与读取计数之和对应的地址的数据提供给加速器103。当读取计数为“0”时(即,在第一任务数据输出的情况下),在操作S106中,与第一地址AD1对应的第一数据DT1可以被发送到加速器103。
在操作S107中,加速器103可以对第一数据DT1执行计算。在操作S108中,加速器103可以将第一数据DT1的计算结果(即,第一结果数据RST1)、第一结果地址rAD_s1和写入请求RQ_wr发送到存储器扩展器110。
在操作S109中,存储器扩展器110可以存储第一结果数据RST1。例如,响应于操作S103中的管理请求RQ_mg,存储器扩展器110可以处于执行针对任务数据的管理操作的模式。在这种情况下,响应于来自加速器103的写入请求RQ_wr和第一结果地址rAD_s1,存储器扩展器110可以基于元数据MDT查找与第一结果地址rAD_s1对应的任务,并且可以检查与找到的任务对应的写入计数。写入计数可以指示从加速器103接收的结果数据的数量。存储器扩展器110可以将接收的任务数据存储在对应于第一结果地址rAD_s1与写入计数之和的地址处。当写入计数为“0”时(即,在第一结果数据输入的情况下),在操作S109中,第一结果数据RST1可以被存储在与第一结果地址rAD_s1对应的存储器区域中。
在操作S110中,加速器103可以将读取请求RQ_rd和第一任务地址dAD_s1发送到存储器扩展器110。在一个实施例中,响应于对操作S108中的请求的响应从存储器扩展器110被接收,加速器103可以执行操作S110。操作S110可以与操作S105相同。
在操作S111中,存储器扩展器110可以响应于读取请求RQ_rd和第一任务地址dAD_s1,将与第二地址AD2对应的第二数据DT2发送到加速器103。例如,如上所述,操作S110可以与操作S105相同。然而,因为存储器扩展器110处于执行针对任务数据的管理操作的模式,所以存储器扩展器110可以根据关于针对相同地址的读取请求的读取计数来输出不同的数据。也就是说,在操作S111中,读取计数可以为“1”(例如,因为第一数据DT1在操作S106中被输出)。在这种情况下,存储器扩展器110可以将与第一任务地址dAD_s1与读取计数“1”之和对应的第二地址AD2的第二数据DT2提供给加速器103。换言之,在存储器扩展器110在管理模式下进行操作的情况下,即使读取请求与相同的地址一起从加速器103被接收,不同的单元数据也可以根据读取计数而被输出。
在操作S112中,加速器103可以对第二数据DT2执行计算。在操作S113中,加速器103可以将第二数据DT2的计算结果(即,第二结果数据RST2)、第一结果地址rAD_s1和写入请求RQ_wr发送到存储器扩展器110。
在操作S114中,存储器扩展器110可以存储第二结果数据RST2。在一个实施例中,存储器扩展器110可以以与操作S109中描述的方式相似的方式来存储第二结果数据RST2。例如,存储器扩展器110可以基于元数据MDT查找与第一结果地址rAD_s1对应的任务,并且可以检查与找到的任务对应的写入计数。存储器扩展器110可以将接收的任务数据存储在对应于第一结果地址rAD_s1与写入计数之和的地址处。当写入计数为“1”时(即,在第二结果数据输入的情况下),在操作S114中,第二结果数据RST2可以被存储在对应于第一结果地址rAD_s1与写入计数“1”之和的存储器区域中。换言之,在存储器扩展器110在管理模式下进行操作的情况下,即使写入请求与相同的地址一起从加速器103被接收,结果数据也可以根据写入计数而被存储在不同的存储器区域处。
然后,加速器103和存储器扩展器110可以执行操作S115至操作S117。操作S115至操作S117与上述操作相似,因此,将省略附加的描述以避免冗余。
如上所述,根据本公开的一个实施例,存储器扩展器110可以响应于来自CPU 101的管理请求RQ_mg,执行针对任务数据的管理操作。在这种情况下,加速器103可以从存储器扩展器110接收多个任务数据,可以对接收的任务数据执行计算,并且可以将多个结果数据存储在存储器扩展器110中,而无需CPU 101的附加的干预。也就是说,与如参照图2描述的相比,在加速器103重复地执行多个计算时,因为中断不从加速器103被生成,所以CPU101可以执行任何其他操作。因此,可以提高CPU 101的利用率。
图6是示出图1的存储器扩展器的操作的流程图。参照图1、图5A和图6,在操作S201中,存储器扩展器110可以从CPU 101接收元数据MDT。存储器扩展器110可以存储和管理由此接收的元数据MDT。
在操作S202中,存储器扩展器110可以从CPU 101接收管理请求RQ_mg。管理请求RQ_mg可以包括参照图6描述的第一CXL报头。存储器扩展器110可以响应于管理请求RQ_mg而执行针对任务数据的管理操作。
在操作S203中,存储器扩展器110可以从加速器103接收读取请求RQ_rd和第一任务地址dAD_s1。
在操作S204中,存储器扩展器110可以检查读取计数RC。例如,存储器扩展器110可以基于元数据MDT查找与第一任务地址dAD_s1对应的任务,并且可以检查与找到的任务对应的读取计数RC。
在操作S205中,存储器扩展器110可以将存储在与读取计数RC和第一任务地址dAD_s1之和(即,dAD_s1+RC)对应的存储器区域中的数据DT发送到加速器103。在一个实施例中,在操作S205之后,存储器扩展器110可以使与找到的任务对应的读取计数RC的值增大“1”那么多。
在操作S206中,存储器扩展器110可以从加速器103接收结果数据RST、第一结果地址rAD_s1和写入请求RQ_wr。
在操作S207中,存储器扩展器110可以检查写入计数WC。例如,存储器扩展器110可以基于元数据MDT查找与第一结果地址rAD_s1对应的任务,并且可以检查与找到的任务对应的写入计数WC。
在操作S208中,存储器扩展器110可以将结果数据RST存储在与写入计数WC与第一结果地址rAD_s1之和(即,rAD_s1+WC)对应的存储器区域中。在一个实施例中,在操作S208之后,存储器扩展器110可以使与找到的任务对应的写入计数WC的值增大“1”那么多。
如上所述,在存储器扩展器110执行管理操作的情况下,存储器扩展器110可以响应于从加速器103接收的读取请求RQ_rd,基于元数据MDT输出任务数据。可选地,在存储器扩展器110执行管理操作的情况下,存储器扩展器110可以响应于从加速器103接收的写入请求RQ_wr,基于元数据MDT存储结果数据。
图7是示出由图1的存储器扩展器基于单元大小管理的数据集的示图。参照图1和图7,存储器装置112可以存储用于第一任务Task_1的数据集。用于第一任务Task_1的数据集可以被存储在第一任务起始地址dAD_s1与第一任务结束地址dAD_e1之间的存储器区域中。在用于第一任务Task_1的数据集基于第一单元大小US_1被划分的情况下,用于第一任务Task_1的数据集可以被划分为第一数据DT1至第四数据DT4,并且第一数据DT1至第四数据DT4中的每个可以具有第一单元大小US_1。
在一个实施例中,用于第一任务Task_1的结果数据集可以被存储在第一结果起始地址rAD_s1与第一结果结束地址rAD_e1之间的存储器区域中。第一任务起始地址dAD_s1与第一任务结束地址dAD_e1之间的存储器区域以及第一结果起始地址rAD_s1与第一结果结束地址rAD_e1之间的存储器区域可以是不同的存储器区域,或者可以至少部分地彼此重叠。
在用于第一任务Task_1的数据集基于第一单元大小US_1被划分的情况下,用于第一任务Task_1的结果数据集也可以基于第一单元大小US_1被划分。在这种情况下,用于第一任务Task_1的结果数据集可以被划分为第一结果数据RST1至第四结果数据RST4。
在一个实施例中,第一结果数据RST1可以指示第一数据DT1的计算结果,第二结果数据RST2可以指示第二数据DT2的计算结果,第三结果数据RST3可以指示第三数据DT3的计算结果,第四结果数据RST4可以指示第四数据DT4的计算结果。也就是说,结果数据被顺序地存储所按照的顺序可以与单元数据被顺序地输出所按照的顺序相同。然而,本公开不限于此。例如,结果数据可以被非顺序地存储。例如,第一结果数据RST1可以指示第三数据DT3的计算结果,第二结果数据RST2可以指示第一数据DT1的计算结果,第三结果数据RST3可以指示第四数据DT4的计算结果,第四结果数据RST4可以指示第二数据DT2的计算结果。存储结果数据的顺序可以根据计算操作的特性而被不同地改变或修改。
图8是示出由图1的存储器扩展器基于分隔符管理的数据集的示图。参照图1和图8,存储器装置112可以存储用于第二任务Task_2的数据集。用于第二任务Task_2的数据集可以被存储在第二任务起始地址dAD_s2与第二任务结束地址dAD_e2之间的存储器区域中。在用于第二任务Task_2的数据集基于第二分隔符DL_2被划分的情况下,用于第二任务Task_2的数据集可以被划分为第五数据DT5至第八数据DT8,并且第五数据DT5至第八数据DT8可以具有不同的大小。
用于第二任务Task_2的结果数据集可以被存储在第二结果起始地址rAD_s2与第二结果结束地址rAD_e2之间的存储器区域中。第二任务起始地址dAD_s2与第二任务结束地址dAD_e2之间的存储器区域以及第二结果起始地址rAD_s2与第二结果结束地址rAD_e2之间的存储器区域可以是不同的存储器区域,或者可以至少部分地彼此重叠。
用于第二任务Task_2的结果数据集可以被划分为第五结果数据RST5至第八结果数据RST8,第五结果数据RST5至第八结果数据RST8的大小可以分别与第五数据DT5至第八数据DT8的大小对应。在一个实施例中,存储结果数据的顺序可以如参照图7描述的被不同地改变或修改,因此,将省略附加的描述以避免冗余。
图9是示出由图1的存储器扩展器管理的数据集的示图。图10是用于描述根据图9的实施例的操作的流程图。参照图1、图9和图10,存储器装置112可以存储用于第三任务Task_3的数据集。用于第三任务Task_3的数据集可以被存储在第三任务起始地址dAD_s3与第三任务结束地址dAD_e3之间的存储器区域中。在用于第三任务Task_3的数据集基于第三分隔符DL_3被划分的情况下,用于第三任务Task_3的数据集可以被划分为第九数据DT9至第十二数据DT12。
在一个实施例中,第九数据DT9至第十二数据DT12的一部分(例如,第十数据DT10)可以不被存储在存储器装置112中。在这种情况下,第十数据DT10可以被存储在与CPU 101直接连接的存储器102中,存储器扩展器110可以包括第十数据DT10的地址点ADP而不是第十数据DT10。地址点ADP可以指示关于实际存储有第十数据DT10的位置的信息(即,关于存储器102的地址的信息)。
在第十数据DT10被输出时,存储器扩展器110可以将与第十数据DT10对应的地址点ADP提供给加速器103。加速器103可以基于地址点ADP从CPU 101接收第十数据DT10。
例如,如图10中所示,CPU 101、加速器103和存储器扩展器110可以执行操作S301至操作S305。除了任务请求是第三任务请求RQ_task3并且任务数据的初始地址是第三任务起始地址dAD_s3之外,操作S301至操作S305与图5A的操作S101至操作S105相似,因此,将省略附加的描述以避免冗余。
在操作S306中,存储器扩展器110可以确定地址点ADP是否被存储在与将要发送到加速器103的任务数据对应的存储器区域中。当确定地址点ADP未被存储在与将要发送到加速器103的任务数据对应的存储器区域中时,在操作S307中,存储器扩展器110和加速器103可以执行与发送和计算任务数据相关联的操作。操作S307与参照图5A描述的操作(即,在存储器扩展器110与加速器103之间交换任务数据的操作以及执行针对数据的计算的操作)相似,因此,将省略附加的描述以避免冗余。
当确定地址点ADP被存储在与将要发送到加速器103的任务数据对应的存储器区域中时,在操作S308中,存储器扩展器110可以将关于地址点ADP的信息发送到加速器103。
在操作S309中,加速器103可以响应于从存储器扩展器110接收的地址点ADP而将地址点ADP和读取请求RQ_rd发送到CPU 101。
在操作S310,CPU 101可以响应于读取请求RQ_rd而将读取命令RD和地址点ADP发送到存储器102;在操作S311中,存储器102可以将与地址点ADP对应的第十数据DT10发送到CPU 101。在一个实施例中,操作S310和操作S311可以基于CPU 101与存储器102之间的通信接口(例如,DDR接口)被执行。
在操作S312,CPU 101可以将第十数据DT10发送到加速器103。加速器103和存储器扩展器110可以执行操作S313和操作S314。操作S313和操作S314与参照图5A描述的数据计算操作和结果数据存储操作相似,因此,将省略附加的描述以避免冗余。
如上所述,存储器扩展器110可以存储实际数据的地址点信息,而不是存储与任务数据集的一部分对应的实际数据。在这种情况下,在管理操作被执行之前,即使整个任务数据集未被存储在存储器扩展器110中,从CPU 101接收任务数据集的处理也可以被省略,因此,可以提高计算装置100的整体性能。
图11A是示出图1的计算装置的操作的示图。图11B是示出图11A的完成的报头信息的示图。参照图1、图11A和图11B,CPU 101、加速器103和存储器扩展器110可以执行操作S401至操作S414。操作S401至操作S414与参照图5A描述的元数据存储操作、管理操作启动请求、任务数据读取操作、任务数据计算操作和结果数据存储操作相似,因此,将省略附加的描述以避免冗余。
在一个实施例中,通过操作S410至操作S411从存储器扩展器110发送到加速器103的第n数据DTn可以是与分配的任务相关联的最后一个任务数据或最后一个单元数据。
在这种情况下,在作为第n数据DTn的计算结果的结果数据RSTn被存储在存储器扩展器110中之后(即,在操作S414之后),在操作S415中,存储器扩展器110可以将与分配的任务相关联的完成发送到CPU 101。响应于接收的完成,CPU 101可以识别出分配的任务被完成,并且可以分配下一任务。
在一个实施例中,在所有分配的任务被完成之后,在操作S416中,存储器扩展器110可以将完成发送到加速器103。响应于接收的完成,加速器103可以识别出分配的任务被完成。
在一个实施例中,在将完成发送到CPU 101之后,存储器扩展器110可以停止管理操作。在这种情况下,当新的管理请求RQ_mg从CPU 101发送到存储器扩展器110时,存储器扩展器110可以再次执行管理操作。可选地,在将完成发送到CPU 101然后,存储器扩展器110可以继续执行管理操作,直到用于停止管理操作的明确请求从CPU 101被接收。
在一个实施例中,与分配的任务相关联的完成可以具有基于CXL协议的S2M DRS(Subordinate to Master Data Response,从到主数据响应)消息或通信分组的结构。例如,完成可以包括图11B中示出的第二CXL报头CXL_header2。
第二CXL报头CXL_header2可以包括有效字段Valid、存储器操作码字段MEMopcode、元字段MetaField、元值字段MetaValue、标签字段Tag、业务类别字段TC、有损字段Poison、保留字段RSVD以及位置字段Position。第二CXL报头CXL_header2的每个字段参照图5B被描述,因此,将省略附加的描述以避免冗余。
在一个实施例中,包括在根据本公开的完成中的存储器操作码字段MEM opcode可以包括关于分配的任务的处理结果的信息(例如,指示“正常”、“异常”、“错误”或“中断”的信息)。包括在根据本公开的完成中的标签字段Tag可以包括关于完成的任务的任务编号的信息。包括在根据本公开的完成中的位置字段Position可以包括关于结果数据的地址的信息。包括在根据本公开的完成中的保留字段RSVD可以包括关于分配的任务的各种统计信息(例如,吞吐量、处理时间和处理错误计数)。
在一个实施例中,如在以上参照图5B给出的描述中,图11B的位置字段Position可以被新添加到由CXL标准(版本1.1)定义的S2M DRS的字段。可选地,图11B的位置字段Position可以被省略,并且与位置字段Position相关联的信息可以被包括在保留字段RSVD或业务类别字段TC中。
图12是示出图1的计算装置的操作的流程图。参照图1和图12,CPU 101、加速器103和存储器扩展器110可以执行操作S501至操作S514。操作S501至操作S514与参照图5A描述的元数据存储操作、管理操作启动请求、任务数据读取操作、任务数据计算操作和结果数据存储操作相似,因此,将省略附加的描述以避免冗余。
在一个实施例中,通过操作S510至操作S511从存储器扩展器110发送到加速器103的第n数据DTn可以是与分配的任务相关联的最后一个任务数据或最后一个单元数据。
在这种情况下,在作为第n数据DTn的计算结果的结果数据RSTn被存储在存储器扩展器110中之后(即,在操作S514之后),在操作S515中,存储器扩展器110可以将与分配的任务相关联的完成发送到加速器103。在操作S516中,加速器103可以响应于来自存储器扩展器110的完成而将完成发送到CPU 101。除了完成通过加速器103从存储器扩展器110被提供到CPU101之外,完成的分组结构与参照图11A和图11B描述的分组结构相似,因此,将省略附加的描述以避免冗余。
图13是示出图1的计算装置的操作的流程图。参照图1和图13,CPU 101、加速器103和存储器扩展器110可以执行操作S601至操作S614。操作S601至操作S614与参照图5A描述的元数据存储操作、管理操作启动请求、任务数据读取操作、任务数据计算操作和结果数据存储操作相似,因此,将省略附加的描述以避免冗余。
在一个实施例中,通过操作S610至操作S611从存储器扩展器110发送到加速器103的第n数据DTn可以是与分配的任务相关联的最后一个任务数据或最后一个单元数据。
在这种情况下,作为第n数据DTn的计算结果的结果数据RSTn可以被存储在存储器扩展器110中(操作S614)。然后,在操作S615中,读取请求RQ_rd和第一任务地址dAD_s1可以从加速器103被接收。存储器扩展器110可以基于元数据MDT和读取计数(或读取计数器的值)来检查最后一个单元数据被发送到加速器103。在这种情况下,在操作S616中,存储器扩展器110可以将结束数据EoD发送到加速器103。响应于结束数据EoD,加速器103可以识别出分配的任务被完成。在操作S617,加速器103可以将完成发送到CPU 101。
如上所述,一个任务可以包括针对多个单元数据的计算操作。在一个任务被完成的情况下,完成可以从加速器103或存储器扩展器110被发送到CPU101。也就是说,与参照图2描述的方式相比,可以防止频繁地生成中断,因此,可以提高计算装置100的整体性能。
图14是示出图1的存储器扩展器的操作的流程图。参照图1和图14,在操作S701中,存储器扩展器110可以接收请求RQ。在一个实施例中,请求RQ可以是通过CXL接口从CPU101、加速器103或任何其他组件接收的请求。
在操作S702中,存储器扩展器110可以确定当前操作模式是否为管理模式(即,执行管理操作的模式)。例如,如上所述,存储器扩展器110可以响应于来自CPU 101的管理请求RQ_mg而执行针对任务数据的管理操作。
当确定存储器扩展器110处于管理模式时,在操作S703中,存储器扩展器110可以基于参照图3至图13描述的方法(即,管理模式)处理请求RQ。当确定存储器扩展器110不处于管理模式时,在操作S704中,存储器扩展器110可以基于正常模式处理请求RQ。
例如,假设请求RQ是读取请求,并且第一地址与请求RQ一起被接收。在这种情况下,当存储器扩展器110处于管理模式时,存储器扩展器110可以基于元数据MDT查找与第一地址对应的任务,并且可以输出与第一地址与对应于找到的任务的读取计数之和对应的存储器区域的数据。相反,当存储器扩展器110不处于管理模式(即,处于正常模式)时,存储器扩展器110可以输出与第一地址对应的存储器区域的数据。
在以上实施例中,描述了这样的配置,在该配置中,CPU 101将任务请求RQ_task和任务起始地址dAD_s提供给加速器103,并且加速器103将读取请求RQ_rd和任务起始地址dAD_s发送到存储器扩展器110,但本公开不限于此。例如,任务起始地址dAD_s可以利用任务编号TN被替换,并且存储器扩展器110可以从加速器103接收任务编号,并可以基于元数据MDT管理与接收的任务编号对应的任务数据和结果数据。
图15是示出根据本公开的实施例的计算装置的框图。参照图15,计算装置1000可以包括CPU 1010、存储器1011、多个加速器1210至1260以及存储器扩展器1100。计算装置1000的CPU 1010、存储器1011和存储器扩展器1100参照图1被描述,因此,将省略附加的描述以避免冗余。多个加速器1210至1260中的每个可以执行与参照图1描述的加速器103的操作相似的操作,因此,将省略附加的描述以避免冗余。
CPU 1010、多个加速器1210至1260以及存储器扩展器1100可以通过CXL接口彼此进行通信。多个加速器1210至1260中的每个可以被配置为如参照图1至图14描述的执行从CPU 1010分配的计算。也就是说,多个加速器1210至1260可以被配置为执行并行计算。存储器扩展器1100可以被配置为,如参照图1至图14描述的管理将要在多个加速器1210至1260中的每个处进行计算的任务数据或者结果数据。存储器扩展器1100可以包括控制器1110和存储器装置1120。除了计算装置1000包括多个加速器之外,CPU 1010、多个加速器1210至1260以及存储器扩展器1100之间的通信与参照图1至图14描述的通信相似,因此,将省略附加的描述以避免冗余。将参照图16更充分地描述利用多个加速器的并行计算的实施例。
在一个实施例中,包括在计算装置1000中的加速器1210至1260的数量可以被不同地改变或修改。
图16是示出图15的计算装置的操作的流程图。为了便于描述,将描述利用第一加速器1210和第二加速器1220的并行计算。然而,本公开不限于此。参照图15和图16,CPU1010和存储器扩展器1100可以执行操作S801至操作S803。操作S801至操作S803与参照图5A描述的操作S101至操作S103相似,因此,将省略附加的描述以避免冗余。
在操作S804中,CPU 1010可以将任务请求RQ_task发送到第一加速器1210。在操作S805中,CPU 1010可以将任务请求RQ_task发送到第二加速器1220。在一个实施例中,提供到第一加速器1210的任务请求RQ_task和提供到第二加速器1220的任务请求RQ_task可以与相同的任务相关联。可选地,提供到第一加速器1210的任务请求RQ_task和提供到第二加速器1220的任务请求RQ_task可以与不同的任务相关联。可选地,提供到第一加速器1210的任务请求RQ_task和提供到第二加速器1220的任务请求RQ_task可以不包括关于任务的信息(例如,任务编号或任务起始地址)。
以下,假设提供到第一加速器1210的任务请求RQ_task和提供到第二加速器1220的任务请求RQ_task不包括关于任务的信息(例如,任务编号或任务起始地址)。然而,本公开不限于此。在提供到第一加速器1210的任务请求RQ_task和提供到第二加速器1220的任务请求RQ_task包括关于任务的信息(例如,任务编号或任务起始地址)的情况下,在针对任务数据的读取请求或针对结果数据的写入请求中,任务编号或任务起始地址可以被提供到存储器扩展器1100。在这种情况下,存储器扩展器1100可以如参照图1至图14描述的进行操作。
在操作S806中,第一加速器1210可以将读取请求RQ_rd发送到存储器扩展器1100。在操作S807中,存储器扩展器1100可以将用于第一任务的第一数据DT1发送到第一加速器1210。例如,响应于读取请求RQ_rd,存储器扩展器1100可以在元数据MDT中搜索与发送读取请求RQ_rd的第一加速器1210的加速器标识符对应的第一任务。存储器扩展器1100可以将与由此找到的第一任务对应的任务数据(即,第一数据DT1)发送到第一加速器1210。在一个实施例中,如参照图1至图14所述,第一数据DT1可以是从与任务起始地址与对应于由此找到的第一任务的读取计数之和对应的存储器区域输出的数据。
在操作S808中,第一加速器1210可以对第一数据DT1执行计算操作。
在操作S809中,第二加速器1220可以将读取请求RQ_rd发送到存储器扩展器1100。在操作S810中,响应于来自第二加速器1220的读取请求RQ_rd,存储器扩展器1100可以将用于第二任务的第二数据DT2发送到第二加速器1220。在一个实施例中,除了加速器不同并且发送的数据不同之外,操作S810可以与操作S807相似,因此,将省略附加的描述以避免冗余。
在操作S811中,第二加速器1220可以对第二数据DT2执行计算操作。
在操作S812中,第一加速器1210可以将作为针对第一数据DT1的计算操作的结果的第一结果数据RST1和写入请求RQ_wr发送到存储器扩展器1100。在操作S813中,存储器扩展器1100可以响应于来自第一加速器1210的写入请求RQ_wr而存储第一结果数据RST1。在一个实施例中,用于存储第一结果数据RST1的存储器区域可以基于第一加速器1210的加速器标识符和元数据MDT被确定。例如,存储器扩展器1100可以在元数据MDT中搜索与第一加速器1210的加速器标识符对应的任务,并且可以基于与找到的任务对应的结果数据起始地址以及写入计数(或写入计数器的值)来确定用于存储第一结果数据RST1的存储器区域。除了搜索与加速器标识符对应的任务编号的操作之外,剩余的组件与上述组件相似(例如,在操作上相似),因此,将省略附加的描述以避免冗余。
在操作S814中,第二加速器1220可以将写入请求RQ_wr和第二结果数据RST2发送到存储器扩展器1100。在操作S815中,存储器扩展器1100可以存储第二结果数据RST2。操作S815与操作S814相似,因此,将省略附加的描述以避免冗余。
在一个实施例中,第一加速器1210和第二加速器1220与存储器扩展器1100之间的通信可以被并行地执行。例如,在第一加速器1210执行计算操作(即,操作S808)时,第二加速器1220和存储器扩展器1100可以执行发送读取请求RQ_rd的操作和发送任务数据的操作。可选地,在第二加速器1220执行计算操作(即,操作S811)时,第一加速器1210和存储器扩展器1100可以执行发送写入请求RQ_wr的操作和发送结果数据的操作。
如上所述,根据本公开的实施例的存储器扩展器1100可以被配置为管理将要由多个加速器处理的任务数据和由多个加速器处理过的结果数据。
在一个实施例中,根据CPU 1010的任务分配方式,多个加速器1210至1260可以被配置为并行地处理相同的任务,或者处理不同的任务。
图17是示出图15的存储器扩展器的操作的流程图。参照图15和图17,在操作S911中,存储器扩展器1100可以从多个加速器1210至1260之中的第一加速器1210接收读取请求RQ_rd。在一个实施例中,读取请求RQ_rd可以包括参照图5A描述的任务起始地址。可选地,读取请求RQ_rd可以包括关于将要由第一加速器1210处理的任务的信息(例如,任务编号)。可选地,读取请求RQ_rd可以包括关于第一加速器1210的信息(例如,加速器标识符)。
在操作S912中,存储器扩展器1100可以基于元数据MDT查找与第一加速器1210对应的任务。例如,存储器扩展器1100可以基于包括在读取请求RQ_rd中的信息中的至少一个(例如,任务起始地址、任务编号和/或加速器标识符)来搜索相关任务。
在操作S913中,存储器扩展器1100可以检查找到的任务的读取计数。在操作S914中,存储器扩展器1100可以将与读取计数对应的数据发送到第一加速器1210。操作S913和操作S914(即,读取计数检查操作和数据发送操作)与参照图6描述的读取计数检查操作和数据发送操作相似,因此,将省略附加的描述以避免冗余。
在一个实施例中,在数据被发送到第一加速器1210之后,存储器扩展器1100可以使找到的任务的读取计数增大“1”那么多。
为了便于描述,描述了任务数据被发送到第一加速器1210的配置,但本公开不限于此。例如,与剩余的加速器中的每个相关联的任务数据发送操作可以以与参照操作S911至操作S914描述的方式相似的方式被执行。
在操作S921中,存储器扩展器1100可以从第二加速器1220接收写入请求RQ_wr和第二结果数据RST2。在一个实施例中,如在参照操作S911给出的以上描述中,写入请求RQ_wr可以包括结果起始地址、关于处理的任务的信息(例如,任务编号)或诸如加速器标识符的信息。
在操作S922中,存储器扩展器1100可以基于元数据MDT来搜索与第二加速器1220对应的任务。搜索操作(即,操作S922)与操作S912相似,因此,将省略附加的描述以避免冗余。
在操作S923中,存储器扩展器1100可以检查找到的任务的写入计数。在操作S924中,存储器扩展器1100可以将结果数据存储在与写入计数对应的区域中。操作S923和操作S924与参照图5A描述的写入计数检查操作和结果数据存储操作相似,因此,将省略附加的描述以避免冗余。
为了便于描述,描述了来自第二加速器1220的结果数据被存储的配置,但本公开不限于此。例如,从剩余的加速器中的每个接收的结果数据可以以与参照操作S921至操作S924描述的方式相似的方式被存储。
图18A是示出根据本公开的实施例的存储器扩展器的操作的流程图。图18B是示出图18A的操作S1010中的状态请求中所包括的报头信息的示图。为了便于描述,将以根据图18A的流程图的操作被图15的存储器扩展器1100执行来给出描述。然而,本公开不限于此。
参照图15、图18A和图18B,在操作S1010中,存储器扩展器110可以从CPU 1010接收状态请求。例如,CPU 1010可以将各种任务分配给多个加速器1210至1260,并且可以请求存储器扩展器1100对将要由多个加速器1210至1260处理的任务数据执行管理操作。存储器扩展器1100可以基于元数据MDT来管理任务数据和结果数据,而无需CPU 1010的干预。当各种任务被执行时,CPU 1010可以检查正在执行的任务的进度状态。在这种情况下,CPU 1010可以将状态请求发送到存储器扩展器1100。
在一个实施例中,状态请求可以是CXL协议的M2S Req(Master to SubordinateRequest,主到从请求)消息或通信分组。例如,状态请求可以包括图18B中示出的第三CXL报头CXL_header3。第三CXL报头CXL_header3可以包括有效字段Valid、存储器操作码字段MEMopcode、元字段MetaField、元值字段MetaValue、监听类型字段SNP Type、地址字段Address、标签字段Tag、业务类别字段TC和保留字段RSVD。第三CXL报头CXL_header3的每个字段在上面被描述,因此,将省略附加的描述以避免冗余。
在一个实施例中,根据本公开的实施例的状态请求的存储器操作码字段MEMopcode可以根据用于对包括在存储器扩展器1100中的数据的处理状态进行查询的命令的类型而被设置为各种值(例如,“1101”、“1110”或“1111”)。在一个实施例中,用于查询处理状态的命令的类型可以包括下面的类型:简单查询、查询后中断和查询后等待。
在一个实施例中,根据本公开的实施例的状态请求的标签字段Tag可以包括关于任务编号的信息。
在一个实施例中,根据本公开的实施例的状态请求的地址字段Address可以指示查询请求数据的范围。在一个实施例中,查询请求数据可以指示将要关于处理状态进行检查的任务数据。
在一个实施例中,根据本公开的实施例的状态请求的保留字段RSVD可以包括诸如查询请求单元(或查询单元)或查询请求时间(或查询时间)的信息。
以上查询请求的报头信息被提供作为示例,并且本公开不限于此。
在操作S1020中,存储器扩展器1100可以检查读取计数和写入计数。例如,基于读取计数或写入计数,存储器扩展器1100可以确定与包括在状态请求中的地址字段对应的数据是否被处理。详细地,与第一任务相关联的读取计数“10”可以指示与第一任务对应的多个任务数据中的第一任务数据至第十任务数据被发送到加速器。可选地,与第一任务相关联的写入计数“10”可以指示与第一任务对应的多个结果数据中的第一结果数据至第十结果数据被存储在存储器扩展器1100中。也就是说,当前处理的任务的状态可以基于读取计数(或读取计数器的值)以及写入计数(或写入计数器的值)被检查。
在操作S1030中,存储器扩展器1100可以将关于读取计数和写入计数的信息提供给CPU 1010。CPU 1010可以基于从存储器扩展器1100接收的信息来检查当前任务的进度状态。
如上所述,根据本公开,存储器扩展器可以为多个加速器中的每个执行数据管理操作。在这种情况下,CPU可以不单独地控制多个加速器,并且多个加速器中的每个可以不生成对CPU的单独的中断,直到特定单元的任务被完成。因此,可以提高计算装置的性能,并且可以提高CPU的利用率。
图19是示出适用于根据本公开的存储器扩展器的固态驱动器(SSD)系统的框图。参照图19,SSD系统2000可以包括主机2100和存储装置2200。存储装置2200可以通过信号连接器2201与主机2100交换信号SIG,并且可以通过电源连接器2202被供应电力PWR。存储装置2200包括SSD控制器2210、多个非易失性存储器(NVM)2221至222n、辅助电源2230以及缓冲存储器2240。
SSD控制器2210可以响应于从主机2100接收的信号SIG而控制多个非易失性存储器2221至222n。多个非易失性存储器2221至222n可以在SSD控制器2210的控制下进行操作。辅助电源2230通过电源连接器2202与主机2100连接。辅助电源2230可以通过从主机2100供应的电力PWR被充电。当电力PWR未从主机2100被平稳地供应时,辅助电源2230可以对存储装置2200进行供电。缓冲存储器2240可以用作存储装置2200的缓冲存储器。
在一个实施例中,主机2100可以包括如参照图1至图18B描述的CPU和多个加速器。在一个实施例中,存储装置2200可以是参照图1至图18B描述的存储器扩展器。主机2100和存储装置2200可以通过CXL接口彼此进行通信,并且可以根据参照图1至图18B描述的实施例进行操作。
图20是示出包括在根据本公开的实施例的存储器扩展器中的存储器装置的三维结构的电路图。在一个实施例中,存储器装置可以基于各种存储器被实现。将参照图20描述基于特定存储器结构的存储器装置的配置,但本公开不限于此。例如,存储器装置可以基于各种存储器中的至少一种被实现。
参照图20,存储器装置可以以三维堆叠结构被实现。例如,存储器装置包括第一存储器单元阵列层MCA1至第四存储器单元阵列层MCA4。第一存储器单元阵列层MCA1至第四存储器单元阵列层MCA4可以包括多个存储器单元MC1、MC2、MC3和MC4。
第一存储器单元阵列层MCA1至第四存储器单元阵列层MCA4可以沿第三方向D3堆叠,沿第一方向D1和第二方向D2延伸的导电线CL1和CL2可以交替地形成在第一存储器单元阵列层MCA1至第四存储器单元阵列层MCA4之间。例如,第一导电线CL1可以沿第一方向D1延伸,第二导电线CL2可以沿第二方向D2延伸。第一存储器单元阵列层MCA1可以形成在第一导电线CL1上方,第二导电线CL2可以形成在第一存储器单元阵列层MCA1与第二存储器单元阵列层MCA2之间。第一导电线CL1可以形成在第二存储器单元阵列层MCA2与第三存储器单元阵列层MCA3之间,第二导电线CL2可以形成在第三存储器单元阵列层MCA3与第四存储器单元阵列层MCA4之间。第一导电线CL1可以形成在第四存储器单元阵列层MCA4上方。第一导电线CL1和第二导电线CL2可以与在第三方向D3上相邻的存储器单元电连接。
在一个实施例中,目标位线和目标字线可以根据目标存储器单元MC的位置被确定。例如,在第一存储器单元阵列层MCA1的第一存储器单元MC1是目标存储器单元MC的情况下,导电线CL1a和CL2a可以被选择为目标线。在第二存储器单元阵列层MCA2的第二存储器单元MC2是目标存储器单元MC的情况下,导电线CL2a和CL1b可以被选择为目标线。在第三存储器单元阵列层MCA3的第三存储器单元MC3是目标存储器单元MC的情况下,导电线CL1b和CL2b可以被选择为目标线。也就是说,目标线可以根据目标存储器单元MC的位置被选择,选择的目标线可以根据目标存储器单元的位置而用作位线和字线或者用作字线和位线。然而,本公开不限于此。
图21是示出应用了根据本公开的实施例的服务器系统的数据中心的框图。参照图21,作为维护各种各样的数据并提供与数据相关联的各种服务的设施的数据中心3000可以被称为“数据存储中心”。数据中心3000可以是用于搜索引擎或数据库管理的系统,或者可以是用于各种机构的计算系统。数据中心3000可以包括多个应用服务器3100_1至3100_n和多个存储服务器3200_1至3200_m。应用服务器3100_1至3100_n的数量和存储服务器3200_1至3200_m的数量可以被不同地改变或修改。
以下,为了便于描述,将描述第一存储服务器3200_1的示例。剩余的存储服务器3200_2至3200_m以及多个应用服务器3100_1至3100_n中的每个可以具有与第一存储服务器3200_1的结构相似的结构。
第一存储服务器3200_1可以包括处理器3210_1、存储器3220_1、交换机3230_1、网络接口连接器(NIC)3240_1、存储装置3250_1和计算快速链路(CXL)接口控制器3260_1。处理器3210_1可以执行(例如,控制)第一存储服务器3200_1的整体操作。存储器3220_1可以在处理器3210_1的控制下存储各种指令或数据。处理器3210_1可以被配置为访问存储器3220_1以执行各种指令或处理数据。在一个实施例中,存储器3220_1可以包括诸如以下的各种存储器装置中的至少一种:DDR SDRAM(双倍数据速率同步DRAM)、HBM(高带宽存储器)、HMC(混合存储器立方体)、DIMM(双列直插式存储器模块)、傲腾(Optane)DIMM和NVDIMM(非易失性DIMM)。
在一个实施例中,包括在第一存储服务器3200_1中的处理器3210_1的数量和包括在第一存储服务器3200_1中的存储器3220_1的数量可以被不同地改变或修改。在一个实施例中,包括在第一存储服务器3200_1中的处理器3210_1和存储器3220_1可以构成处理器-存储器对,包括在第一存储服务器3200_1中的处理器-存储器对的数量可以被不同地改变或修改。在一个实施例中,包括在第一存储服务器3200_1中的处理器3210_1的数量和包括在第一存储服务器3200_1中的存储器3220_1的数量可以是不同的。处理器3210_1可以包括单核处理器或多核处理器。
在处理器3210_1的控制下,交换机3230_1可以将处理器3210_1和存储装置3250_1选择性地连接,或者可以将NIC 3240_1、存储装置3250_1和CXL接口控制器3260_1选择性地连接。
NIC 3240_1可以将第一存储服务器3200_1与网络NT连接。NIC 3240_1可以包括网络接口卡、网络适配器等。NIC 3240_1可以通过有线接口、无线接口、蓝牙接口或光学接口与网络NT连接。NIC 3240_1可以包括内部存储器、DSP(数字信号处理器)、主机总线接口等,并且可以通过主机总线接口与处理器3210_1或交换机3230_1连接。主机总线接口可以包括诸如以下的各种接口中的至少一种:ATA(高级技术附件)接口、SATA(串行ATA)接口、e-SATA(外部SATA)接口、SCSI(小型计算机系统接口)接口、SAS(串行附接SCSI)接口、PCI(外围组件互连)接口、PCIe(PCI快速)接口、NVMe(NVM快速)接口、IEEE 1394接口、USB(通用串行总线)接口、SD(安全数字)卡接口、MMC(多媒体卡)接口、eMMC(嵌入式多媒体卡)接口、UFS(通用闪存)接口、eUFS(嵌入式通用闪存)接口和CF(紧凑型闪存)卡接口。在一个实施例中,NIC3240_1可以与处理器3210_1、交换机3230_1和存储装置3250_1中的至少一个集成。
在处理器3210_1的控制下,存储装置3250_1可以存储数据,或者可以输出存储的数据。存储装置3250_1可以包括控制器(CTRL)3251_1、非易失性存储器3252_1(例如,NAND闪存)、DRAM 3253_1和接口(I/F)3254_1。在一个实施例中,存储装置3250_1还可以包括用于安全性或隐私性的安全元件(SE)。
控制器3251_1可以控制存储装置3250_1的整体操作。在一个实施例中,控制器3251_1可以包括SRAM。响应于通过接口3254_1接收的信号,控制器3251_1可以将数据存储在非易失性存储器3252_1中,或者可以输出存储在非易失性存储器3252_1中的数据。在一个实施例中,控制器3251_1可以被配置为基于切换接口或ONFI(开放式NAND闪存接口)来控制非易失性存储器3252_1。
DRAM 3253_1可以被配置为临时存储将要存储在非易失性存储器3252_1中的数据或从非易失性存储器3252_1读取的数据。DRAM 3253_1可以被配置为存储控制器3251_1进行操作所需要的各种数据(例如,元数据和映射数据)。接口3254_1可以提供控制器3251_1与处理器3210_1、交换机3230_1或NIC 3240_1之间的物理连接。在一个实施例中,接口可以被实现为支持允许存储装置3250_1通过专用电缆的直接连接的DAS(Direct-AttachedStorage,直接连接存储)方式。在一个实施例中,接口3254_1可以通过主机接口总线而基于上述各种接口中的至少一种被实现。
第一存储服务器3200_1的以上组件被提供作为示例,并且本公开不限于此。第一存储服务器3200_1的以上组件可以应用于剩余的存储服务器3200_2至3200_m中的每个或多个应用服务器3100_1至3100_n中的每个。在一个实施例中,应用服务器3100_1至3100_n的存储装置3150_1至3150_n中的每个可以被选择性地省略。
多个应用服务器3100_1至3100_n和多个存储服务器3200_1至3200_m可以通过网络NT彼此进行通信。网络NT可以通过利用光纤通道(FC)、以太网等被实现。在这种情况下,FC可以是用于高速数据传输的介质,并且可以使用提供高性能/高可用性的光交换机。根据网络NT的访问方式,存储服务器3200_1至3200_m可以被设置为文件存储设备、块存储设备或对象存储设备。
在一个实施例中,网络NT可以是存储专用网络(诸如,存储区域网络(SAN))。例如,SAN可以是使用FC网络并按照FC协议(FCP)实现的FC-SAN。可选地,SAN可以是使用TCP/IP网络并按照iSCSI(或通过TCP/IP的SCSI,或互联网SCSI)协议实现的IP-SAN。在一个实施例中,网络NT可以是一般网络(诸如,TCP/IP网络)。例如,网络NT可以按照诸如FCoE(通过以太网的FC)、NAS(网络连接存储)或NVMe-oF(通过光纤的NVMe)的协议被实现。
在一个实施例中,多个应用服务器3100_1至3100_n中的至少一个可以被配置为通过网络NT访问剩余的应用服务器中的至少一个或多个存储服务器3200_1至3200_m中的至少一个。
例如,第一应用服务器3100_1可以通过网络NT将用户或客户端请求的数据存储在多个存储服务器3200_1至3200_m中的至少一个中。可选地,第一应用服务器3100_1可以通过网络NT从多个存储服务器3200_1至3200_m中的至少一个获得用户或客户端请求的数据。在这种情况下,第一应用服务器3100_1可以利用网页服务器、数据库管理系统(DBMS)等被实现。
也就是说,第一应用服务器3100_1的处理器3110_1可以通过网络NT访问另一应用服务器(例如,3100_n)的存储器(例如,3120_n)或存储装置(例如,3150_n)。可选地,第一应用服务器3100_1的处理器3110_1可以通过网络NT访问第一存储服务器3200_1的存储器3220_1或存储装置3250_1。如此,第一应用服务器3100_1可以对存储在剩余的应用服务器3100_2至3100_n或多个存储服务器3200_1至3200_m中的数据执行各种操作。例如,第一应用服务器3100_1可以执行或发布用于在剩余的应用服务器3100_2至3100_n之间或在多个存储服务器3200_1至3200_m之间移动或复制数据的指令。在这种情况下,作为移动或复制的目标的数据可以通过存储服务器3200_1至3200_m的存储器3220_1至3220_m从存储服务器3200_1至3200_m的存储装置3250_1至3250_m被移动到应用服务器3100_1至3100_n的存储器3120_1至3120_n,或者从存储服务器3200_1至3200_m的存储装置3250_1至3250_m被直接移动到应用服务器3100_1至3100_n的存储器3120_1至3120_n。通过网络NT传输的数据可以是为了安全性或隐私性而加密的数据。
在一个实施例中,多个存储服务器3200_1至3200_m和多个应用服务器3100_1至3100_n可以通过CXL接口与存储器扩展器3300连接。存储器扩展器3300可以用作多个存储服务器3200_1至3200_m和多个应用服务器3100_1至3100_n中的每个的扩展存储器。多个存储服务器3200_1至3200_m和多个应用服务器3100_1至3100_n可以基于参照图1至图18B描述的方式而通过CXL接口和存储器扩展器3300彼此进行通信。
图22是用于描述应用于本公开的实施例的异构计算接口的示例(例如,CXL接口)的示图。在图22中,将参照CXL接口描述与根据本公开的实施例的存储器扩展器连接的异构计算接口,但本公开不限于此。例如,异构计算接口可以通过基于诸如以下协议的各种计算接口中的至少一种被实现:Gen-Z协议、NVLink协议、CCIX协议和开放式CAPI协议。
参照图22,异构计算系统4000可以包括多个CPU 4100和4200、多个存储器4110和4210、加速器4120和4220、可选存储器(optional memory)4130和4230以及存储器扩展器4300。多个CPU 4100和4200中的每个可以是被配置为处理各种操作/运算/计算的处理器。多个CPU 4100和4200可以通过单独的链路彼此进行通信。在一个实施例中,单独的链路可以包括CPU之间的一致性链路。
多个CPU 4100和4200可以分别与多个存储器4110和4210进行通信。例如,第一CPU4100可以与第一存储器4110直接进行通信,第二CPU 4200可以与第二存储器4210直接进行通信。第一存储器4110和第二存储器4210中的每个可以包括DDR存储器。在一个实施例中,根据本公开的实施例的分配给不同的虚拟机的虚拟存储器可以是从DDR存储器4110和4210分配的存储器。
多个CPU 4100和4200可以通过flex(柔性)总线与加速器4120和4220进行通信。加速器4120和4220可以是独立于多个CPU 4100和4200执行操作的计算器或处理器。加速器4120可以在对应的CPU 4100的控制下进行操作,加速器4220可以在对应的CPU 4200的控制下进行操作。加速器4120和4220可以分别与可选存储器4130和4230连接。在一个实施例中,多个CPU 4100和4200可以被配置为通过flex总线以及加速器4120和4220对可选存储器4130和4230进行访问。
多个CPU 4100和4200可以通过flex总线与存储器扩展器4300进行通信。多个CPU4100和4200可以使用存储器扩展器4300的存储器空间。
在一个实施例中,flex总线可以是被配置为选择PCIe协议或CXL协议的总线或端口。也就是说,flex总线可以被配置为根据与其连接的装置的特性或通信类型来选择PCIe协议或CXL协议。在一个实施例中,存储器扩展器4300可以像参照图1至图18B描述的存储器扩展器一样进行操作,并且可以基于CXL协议与多个CPU 4100和4200进行通信。
在一个实施例中,基于flex总线的通信结构在图22中被示出为在组件之间是独立的,但本公开不限于此。例如,图22中示出的各种组件之间的CXL通信可以通过相同的总线或相同的链路被执行。
根据本公开,通过异构计算接口与CPU和多个加速器连接的存储器扩展器可以被配置为对将要提供到多个加速器的数据或从多个加速器接收的数据进行管理。如此,可以减少CPU的与数据管理相关联的负担。因此,提供了具有提高的性能的存储器扩展器、使用该存储器扩展器的异构计算装置以及该异构计算装置的操作方法。
如在本领域中传统的一样,实施例可以以执行描述的一个或多个功能的块的形式被描述和示出。这些块(在此可以被称为单元或模块等)通过模拟和/或数字电路(诸如,逻辑门)、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬线电路等被物理地实现,并且可以可选地由固件和/或软件驱动。例如,电路可以被实现在一个或多个半导体芯片中,或者在基底支撑件(诸如,印刷电路板等)上。构成块的电路可以通过专用硬件被实现,或者通过处理器(例如,一个或多个编程的微处理器以及关联电路)被实现,或者通过用于执行块的一些功能的专用硬件和用于执行块的其他功能的处理器的组合被实现。在不脱离公开的范围的情况下,实施例的每个块可以被物理地分离为两个或更多个交互且独立的块。同样地,在不脱离公开的范围的情况下,实施例的块可以被物理地组合为更复杂的块。一个实施例的一方面可以通过存储在非暂时性存储器介质内并由处理器执行的指令而被实现。
尽管已经参照本公开的实施例描述了本公开,但对本领域普通技术人员而言将清楚的是,在不脱离如在所附权利要求中阐述的本公开的精神和范围的情况下,可以对其做出各种改变和修改。
Claims (20)
1.一种存储器扩展器,包括:
存储器装置,被配置为存储多个任务数据;以及
控制器,被配置为控制存储器装置,其中,控制器被配置为:通过计算快速链路接口从外部的中央处理器接收元数据和管理请求;响应于管理请求而在管理模式下进行操作;以及在管理模式下,通过计算快速链路CXL接口从加速器接收读取请求和第一地址,并响应于读取请求而基于元数据将所述多个任务数据中的一个任务数据发送到加速器。
2.根据权利要求1所述的存储器扩展器,其中,管理请求是基于CXL协议的带有数据的主到从请求M2S RwD消息。
3.根据权利要求2所述的存储器扩展器,其中:
管理请求包括第一CXL报头,并且
第一CXL报头包括:
存储器操作码字段,指示管理模式的启动;
第一地址字段,指示所述多个任务数据的起始存储器地址;
第二地址字段,指示所述多个任务数据的结束存储器地址;
标签字段,指示与所述多个任务数据相关联的任务编号;以及
位置字段,指示元数据的存储器地址。
4.根据权利要求1所述的存储器扩展器,其中,控制器还被配置为,在管理模式下:
从加速器接收写入请求和第一结果数据;以及
响应于写入请求而基于元数据将第一结果数据存储在存储器装置中。
5.根据权利要求1所述的存储器扩展器,其中,元数据包括以下中的至少一个:
任务编号,与对应于所述多个任务数据的任务相关联;
数据管理模式,指示与所述多个任务数据相关联的管理方式;
所述多个任务数据的起始存储器地址;
所述多个任务数据的结束存储器地址;
单元大小,与所述多个任务数据相关联;
分隔符,用于对所述多个任务数据进行区分;
加速器标识符,与任务编号对应;
多个结果数据的起始存储器地址,所述多个结果数据与所述多个任务数据相关联;以及
所述多个结果数据的结束存储器地址。
6.根据权利要求1至5中的任一项所述的存储器扩展器,其中,控制器还被配置为,在管理模式下:当分别与多个任务数据相关联的多个结果数据被存储在存储器装置中时,通过CXL接口将完成发送到中央处理器。
7.根据权利要求6所述的存储器扩展器,其中,所述完成是基于CXL协议的从到主数据响应S2M DRS消息。
8.根据权利要求7所述的存储器扩展器,其中:
所述完成包括第二CXL报头,并且
第二CXL报头包括:
存储器操作码字段,指示所述多个任务数据的计算结果的种类;
标签字段,指示与所述多个任务数据相关联的任务编号;
位置字段,指示所述多个结果数据的存储器地址;以及
保留字段,包括关于所述多个任务数据的统计信息。
9.根据权利要求1至4中的任一项所述的存储器扩展器,其中,控制器还被配置为,在管理模式下:
通过CXL接口从中央处理器接收状态请求;以及
响应于状态请求,将关于与所述多个任务数据相关联的读取计数器的信息和关于与多个结果数据相关联的写入计数器的信息发送到中央处理器。
10.根据权利要求9所述的存储器扩展器,其中,状态请求是基于CXL协议的主到从请求M2S Req消息。
11.根据权利要求10所述的存储器扩展器,其中:
状态请求包括第三CXL报头,并且
第三CXL报头包括:
存储器操作码字段,指示对与所述多个任务数据相关联的处理状态进行查询的方式;
标签字段,指示与所述多个任务数据相关联的任务编号;
地址字段,指示将要从所述多个任务数据之中进行查询的任务数据的范围;以及
保留字段,指示处理状态的查询单元或查询时间。
12.一种异构计算装置,包括:
中央处理器;
存储器,被配置为:在中央处理器的控制下存储数据;
加速器,被配置为:对多个任务数据重复地执行计算并且生成多个结果数据;以及
存储器扩展器,被配置为:响应于来自中央处理器的管理请求而在管理模式下进行操作,并且在管理模式下,对将要提供到加速器的所述多个任务数据和从加速器提供的所述多个结果数据进行管理,其中,
中央处理器、加速器和存储器扩展器通过异构计算接口彼此进行通信。
13.根据权利要求12所述的异构计算装置,其中,异构计算接口是基于计算快速链路CXL协议、Gen-Z协议、NVlink协议、用于加速器的高速缓存一致性互连CCIX协议、开放式一致性加速器处理器接口CAPI协议的接口。
14.根据权利要求12所述的异构计算装置,其中,存储器扩展器还被配置为:
从中央处理器接收元数据;以及
基于元数据对所述多个任务数据和所述多个结果数据进行管理。
15.根据权利要求14所述的异构计算装置,其中,存储器扩展器被配置为:当存储器扩展器从加速器接收到全部所述多个结果数据时,通过异构计算接口将完成发送到中央处理器。
16.根据权利要求12至15中的任一项所述的异构计算装置,其中,当加速器分别对所述多个任务数据执行所述计算时,加速器不生成对中央处理器的中断。
17.一种异构计算装置的操作方法,所述异构计算装置包括通过计算快速链路CXL接口连接的中央处理器、加速器和存储器扩展器,所述方法包括:
由中央处理器将元数据发送到存储器扩展器;
由中央处理器将管理请求发送到存储器扩展器;
由中央处理器将任务请求发送到加速器;
由加速器响应于任务请求而将读取请求发送到存储器扩展器;
由存储器扩展器响应于读取请求而基于元数据将多个任务数据中的第一任务数据发送到加速器;
由加速器对第一任务数据执行第一计算,以生成第一结果数据;
由加速器将写入请求和第一结果数据发送到存储器扩展器;以及
由存储器扩展器响应于写入请求而存储第一结果数据。
18.根据权利要求17所述的方法,其中,加速器在执行第一计算之后不生成对中央处理器的中断。
19.根据权利要求17所述的方法,还包括,在第一结果数据被存储在存储器扩展器中之后:
由加速器将读取请求发送到存储器扩展器;以及
由存储器扩展器响应于读取请求而基于元数据将多个任务数据中的第二任务数据发送到加速器。
20.根据权利要求19所述的方法,还包括:
由加速器对第二任务数据执行第二计算,以生成第二结果数据;
由加速器将写入请求和第二结果数据发送到存储器扩展器;以及
由存储器扩展器响应于写入请求而基于元数据存储第二结果数据,其中,
第一结果数据和第二结果数据被存储在不同的存储器区域中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2020-0141710 | 2020-10-29 | ||
KR1020200141710A KR20220056986A (ko) | 2020-10-29 | 2020-10-29 | 메모리 확장기, 이종 컴퓨팅 장치, 및 이종 컴퓨팅 장치의 동작 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114428587A true CN114428587A (zh) | 2022-05-03 |
Family
ID=78332606
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111239813.2A Pending CN114428587A (zh) | 2020-10-29 | 2021-10-25 | 存储器扩展器、异构计算装置和异构计算装置的操作方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11726701B2 (zh) |
EP (1) | EP3992804A1 (zh) |
KR (1) | KR20220056986A (zh) |
CN (1) | CN114428587A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302659A (zh) * | 2023-04-27 | 2023-06-23 | 摩尔线程智能科技(北京)有限责任公司 | Gpu显存错误处理方法及装置、电子设备和存储介质 |
CN117493237A (zh) * | 2023-12-29 | 2024-02-02 | 苏州元脑智能科技有限公司 | 计算设备、服务器、数据处理方法和存储介质 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113535611A (zh) * | 2020-04-22 | 2021-10-22 | 华为技术有限公司 | 数据处理方法及装置、异构系统 |
US11892955B2 (en) * | 2021-06-01 | 2024-02-06 | Microchip Technology Inc. | System and method for bypass memory read request detection |
US12093566B2 (en) * | 2022-03-01 | 2024-09-17 | Micron Technology, Inc. | Memory controller for managing raid information |
EP4283474A1 (en) * | 2022-05-23 | 2023-11-29 | Samsung Electronics Co., Ltd. | Storage device, memory device, and computing system including the same |
KR20240090078A (ko) * | 2022-12-13 | 2024-06-21 | 삼성전자주식회사 | 연산가능한 네트워크 인터페이스 카드 및 이를 포함하는 전자 장치 |
KR102691864B1 (ko) * | 2023-07-12 | 2024-08-05 | 메티스엑스 주식회사 | 데이터 처리 가속 장치 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR970007277B1 (ko) | 1994-06-29 | 1997-05-07 | 재단법인 한국전자통신연구소 | 주종관계를 갖는 다중 프로세서간의 통신장치 및 그 방법 |
US7430652B2 (en) * | 2003-03-28 | 2008-09-30 | Tarari, Inc. | Devices for performing multiple independent hardware acceleration operations and methods for performing same |
US7084248B2 (en) | 2004-07-14 | 2006-08-01 | Gene Tools, Llc | Peptide composition and method for delivering substances into the cytosol of cells |
US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US20090307416A1 (en) | 2008-06-04 | 2009-12-10 | Intitio Corporation | Ssd with a controller accelerator |
KR101227885B1 (ko) | 2010-12-16 | 2013-01-30 | 텔코웨어 주식회사 | 공유 메모리 채널 다중화 방법 및 그 장치 |
US10467176B2 (en) * | 2015-02-25 | 2019-11-05 | Hitachi, Ltd. | Information processing apparatus |
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
KR102442921B1 (ko) | 2017-12-11 | 2022-09-13 | 삼성전자주식회사 | 디지털 시그널 프로세서(dsp)의 태스크 관리 효율을 높일 수 있는 전자 장치 |
EP3830713A1 (en) | 2018-07-31 | 2021-06-09 | Marvell Asia Pte, Ltd. | Metadata generation at the storage edge |
KR102655094B1 (ko) * | 2018-11-16 | 2024-04-08 | 삼성전자주식회사 | 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법 |
US11216404B2 (en) * | 2019-08-05 | 2022-01-04 | Intel Corporation | Mechanism for device interoperability of switches in computer buses |
US11816052B2 (en) * | 2019-10-22 | 2023-11-14 | Intel Corporation | System, apparatus and method for communicating telemetry information via virtual bus encodings |
US11698879B2 (en) * | 2019-12-06 | 2023-07-11 | Intel Corporation | Flexible on-die fabric interface |
US12007929B2 (en) * | 2020-10-09 | 2024-06-11 | Altera Corporation | Low-latency optical connection for CXL for a server CPU |
-
2020
- 2020-10-29 KR KR1020200141710A patent/KR20220056986A/ko unknown
-
2021
- 2021-10-20 EP EP21203651.1A patent/EP3992804A1/en active Pending
- 2021-10-25 CN CN202111239813.2A patent/CN114428587A/zh active Pending
- 2021-10-25 US US17/509,669 patent/US11726701B2/en active Active
-
2023
- 2023-06-29 US US18/344,837 patent/US20230342073A1/en active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302659A (zh) * | 2023-04-27 | 2023-06-23 | 摩尔线程智能科技(北京)有限责任公司 | Gpu显存错误处理方法及装置、电子设备和存储介质 |
CN116302659B (zh) * | 2023-04-27 | 2023-08-08 | 摩尔线程智能科技(北京)有限责任公司 | Gpu显存错误处理方法及装置、电子设备和存储介质 |
CN117493237A (zh) * | 2023-12-29 | 2024-02-02 | 苏州元脑智能科技有限公司 | 计算设备、服务器、数据处理方法和存储介质 |
CN117493237B (zh) * | 2023-12-29 | 2024-04-09 | 苏州元脑智能科技有限公司 | 计算设备、服务器、数据处理方法和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20220056986A (ko) | 2022-05-09 |
US11726701B2 (en) | 2023-08-15 |
US20220137865A1 (en) | 2022-05-05 |
US20230342073A1 (en) | 2023-10-26 |
EP3992804A1 (en) | 2022-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3992804A1 (en) | Memory expander, heterogeneous computing device using memory expander, and operation method of heterogeneous computing | |
CN108776576B (zh) | 用于聚合的网上NVMe装置的聚合存储方法 | |
US10542333B2 (en) | Technologies for a low-latency interface to data storage | |
US11550512B2 (en) | Analytics, algorithm architecture, and data processing system and method | |
EP3458931A1 (en) | Independent scaling of compute resources and storage resources in a storage system | |
US20220334975A1 (en) | Systems and methods for streaming storage device content | |
US9652182B2 (en) | Shareable virtual non-volatile storage device for a server | |
US10789167B2 (en) | Information processing apparatus and method for controlling storage device | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
US11706895B2 (en) | Independent scaling of compute resources and storage resources in a storage system | |
US12079506B2 (en) | Memory expander, host device using memory expander, and operation method of sever system including memory expander | |
TWI797022B (zh) | 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 | |
CN115687193A (zh) | 存储模块、包括其的系统以及存储模块的操作方法 | |
CN114625313A (zh) | 存储设备及其操作方法 | |
CN110308865B (zh) | 存储器系统、计算系统及其操作方法 | |
CN116257471A (zh) | 一种业务处理方法及装置 | |
US10430241B2 (en) | Systems and methods for scalable cloud computing by optimally utilizing management controller for host compute processing | |
KR20240148519A (ko) | 공유 메모리 장치 혹은 메모리 확장 장치에서 데이터 종류에 따른 데이터 입출력 동작을 수행하는 장치 및 방법 | |
CN118689783A (zh) | 存储装置、方法、设备和存储系统 | |
CN118672725A (zh) | 存储控制器以及操作包括存储控制器的电子系统的方法 | |
CN115862699A (zh) | 存储控制器和包括该存储控制器的存储系统 | |
CN115480700A (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 |