CN113490915A - 扩展存储器操作 - Google Patents
扩展存储器操作 Download PDFInfo
- Publication number
- CN113490915A CN113490915A CN202080016964.9A CN202080016964A CN113490915A CN 113490915 A CN113490915 A CN 113490915A CN 202080016964 A CN202080016964 A CN 202080016964A CN 113490915 A CN113490915 A CN 113490915A
- Authority
- CN
- China
- Prior art keywords
- computing device
- memory
- computing
- command
- data
- 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.)
- Withdrawn
Links
- 230000015654 memory Effects 0.000 title claims abstract description 319
- 238000000034 method Methods 0.000 claims abstract description 43
- 238000012545 processing Methods 0.000 claims abstract description 40
- 238000004891 communication Methods 0.000 claims description 32
- 230000004044 response Effects 0.000 claims description 29
- 238000012937 correction Methods 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 239000000872 buffer Substances 0.000 description 35
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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
- 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
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/24—Loading of the microprogram
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了与扩展存储器操作有关的系统、设备和方法。扩展存储器操作可以包含由单个地址和操作数指定的操作,并且可以由包含处理单元和存储器资源的计算装置来执行。所述计算装置可以在没有接收到中间命令的情况下对通过计算瓦片流式传输的数据执行扩展存储器操作。在实例中,计算装置被配置成:接收执行操作的命令,所述操作包括利用所述计算装置的所述处理单元对数据执行操作;并且确定对应于所述操作的操作数存储在所述存储器资源中。所述计算装置可以进一步使用存储在所述存储器资源中的所述操作数来执行所述操作。
Description
技术领域
本公开总体上涉及半导体存储器和方法,并且更具体地涉及用于扩展存储器操作的设备、系统和方法。
背景技术
存储器装置通常以内部半导体集成电路的形式设置于计算机或其它电子系统中。存在许多不同类型的存储器,包含易失性存储器和非易失性存储器。易失性存储器可能需要电力来维护其数据(例如,主机数据、错误数据等)并且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)和晶闸管随机存取存储器(TRAM)等等。非易失性存储器可以通过在不供电时保留所存储的数据来提供持久数据,并且可以包含NAND闪速存储器、NOR闪速存储器和电阻可变存储器(如相变随机存取存储器(PCRAM))、电阻式随机存取存储器(RRAM)和磁阻式随机存取存储器(MRAM),如自旋扭矩转移随机存取存储器(STT RAM),等等。
存储器装置可以耦接到主机(例如,主机计算装置),以在计算机或电子系统操作时存储供主机使用的数据、命令和/或指令。例如,当在计算系统或其它电子系统的操作期间,数据、命令和/或指令可以在主机与存储器装置之间转移。
附图说明
图1是根据本公开的若干个实施例的呈包含设备的计算系统的形式的功能框图,所述设备包含存储控制器和若干个存储器装置。
图2是根据本公开的若干个实施例的呈包含存储控制器的设备的形式的功能框图。
图3是根据本公开的若干个实施例的呈包含存储控制器的设备的形式的另一功能框图。
图4A是根据本公开的若干个实施例的呈包含存储控制器的设备的形式的又另一功能框图。
图4B是根据本公开的若干个实施例的呈包含存储控制器的设备的形式的又另一功能框图。
图4C是根据本公开的若干个实施例的呈包含存储控制器的设备的形式的又另一功能框图。
图5是根据本公开的若干个实施例的呈计算瓦片的形式的框图。
图6是根据本公开的若干个实施例的呈计算瓦片的形式的另一框图。
图7是根据本公开的若干个实施例的表示用于扩展存储器操作的示例方法的流程图。
具体实施方式
描述了与扩展存储器操作有关的系统、设备和方法。扩展存储器操作可以包含由单个地址和操作数指定的操作,并且可以由包含处理单元和存储器资源的计算装置来执行。所述计算装置可以在没有接收到中间命令的情况下对通过计算瓦片流式传输的数据执行扩展存储器操作。在实例中,计算装置被配置成:接收执行操作的命令,所述操作包括利用所述计算装置的所述处理单元对数据执行操作;并且确定对应于所述操作的操作数存储在所述存储器资源中。所述计算装置可以进一步使用存储在所述存储器资源中的所述操作数来执行所述操作。
如本文所使用的,“扩展存储器操作”是指可以由单个地址(例如,存储器地址)和操作数(如,64位操作数)指定的存储器操作。操作数可以表示为多个位(例如,一个位串或一串位)。然而,实施例不限于由64位操作数指定的操作,并且所述操作可以由与64位相比更大的操作数(例如,128位等)或更小的操作数(例如32位)指定。如本文所描述的,可访问以用于执行扩展存储器操作的有效地址空间是主机计算系统或存储控制器可访问的存储器装置或文件系统的大小。
扩展存储器操作可以包含可以由计算瓦片(例如,本文图d1-6中展示的计算瓦片110/210/310/410/510/610)的处理装置(例如,如本文图5和6中展示的精简指令集计算装置536/636等处理装置)执行的指令和/或操作。在一些实施例中,执行扩展存储器操作可以包含:检索存储在存储器资源(例如,本文图5和6中展示的计算瓦片存储器538/638)中的数据和/或指令;在计算瓦片内执行操作(例如,不将数据或指令传送到计算瓦片外部的电路系统);以及将扩展存储器操作的结果存储在计算瓦片的存储器资源中或辅助存储件(例如,存储器装置,如本文图1中展示的存储器装置116)中。
扩展存储器操作的非限制性实例可以包含浮点加法累加、32位复杂操作、平方根地址(SQRT(addr))操作、转换操作(例如,在浮点格式与整数格式之间转换,和/或在浮点格式与posit格式之间转换)、将数据归一化为固定格式、绝对值操作等。在一些实施例中,扩展存储器操作可以包含由计算瓦片执行的就地更新的操作(例如,其中扩展存储器操作的结果存储于在执行扩展存储器操作之前存储用于执行扩展存储器操作的操作数的地址处),以及其中使用先前存储的数据来确定新数据的操作(例如,其中存储在特定地址处的操作数用于生成盖写存储操作数的特定地址的新数据的操作)。
因此,在一些实施例中,执行扩展存储器操作可以减轻或消除锁定或互斥操作,因为扩展存储器操作可以在计算瓦片内执行,这可以减少多个线程执行之间的竞争。例如,在执行扩展存储器操作期间降低或消除线程上的锁定或互斥操作的执行可以使计算系统性能提高,因为扩展存储器操作可以在同一计算瓦片内并行执行或者跨彼此通信的计算瓦片中的两个或更多个计算瓦片并行执行。另外,在一些实施例中,当本文描述的扩展存储器操作的结果从执行所述操作的计算瓦片传送到主机时,所述扩展存储器操作可以减轻或消除锁定或互斥操作。
存储器装置可以用于在计算装置中存储重要数据或关键数据,并且可以在与计算装置相关联的主机之间传送此类数据。然而,随着存储器装置所存储的数据的大小和数量的增加,往返于主机的数据传送可能变得既耗时又耗费资源。例如,当主机使用大数据块请求执行存储器操作时,强制请求所耗费的时间量和/或资源量可能与和数据块相关联的数据的大小和/或数量成比例地增加。
随着存储器装置的存储能力的增加,这些影响可能变得更显著,因为越来越多的数据能够被存储器装置存储并且因此可用于存储器操作。另外,因为可以处理数据(例如,可以对数据执行存储器操作),所以随着能够存储在存储器装置中的数据量的增加,可以处理的数据量也可以增加。这可能导致处理时间的增加和/或处理资源消耗的增加,所述处理时间的增加和/或处理资源消耗的增加在执行某些类型的存储器操作时可能会更严重。为了减轻这些和其它问题,本文的实施例可以允许使用存储器装置、一或多个计算瓦片和/或存储器阵列来执行扩展存储器操作。
在一些方法中,执行存储器操作可能需要多个时钟周期和/或对计算系统的如存储器装置和/或存储器阵列等存储器的多个函数调用。相比之下,本文的实施例可以允许执行扩展存储器操作,其中存储器操作用单个函数调用或命令来执行。例如,与利用至少一个命令和/或函数调用来加载要被操作的数据并且然后利用至少一个后续函数调用或命令来存储已经被操作的数据的方法相比,本文的实施例可以允许在没有至少一个函数调用或命令的情况下执行存储器操作。
与执行存储器操作需要多个函数调用和/或命令的方法相比,通过减少在执行存储器操作中利用的函数调用和/或命令的数量,可以减少在执行此类操作中消耗的时间量和/或在执行此类操作中消耗的计算资源量。进一步地,本文的实施例可以减少存储器装置和/或存储器阵列内的数据移动,因为数据可能不需要在执行存储器操作之前被加载到特定位置。与某些方法相比,这可以减少处理时间,尤其是在大量数据需要进行存储器操作的情况下。
进一步地,与一些方法相比,本文描述的扩展存储器操作可以允许更大的类型字段集。例如,由主机执行以请求使用存储器装置(例如,存储器子系统)中的数据执行操作的指令可以包含类型、地址和数据字段。所述类型可以对应于被请求的特定操作,所述地址可以对应于存储在执行操作中要使用的数据的地址,并且所述数据字段可以对应于执行操作中要使用的数据(例如,操作数)。在一些方法中,类型字段可能限于不同大小的读取和/或写入以及一些简单的整数累加操作。相比之下,本文的实施例可以允许利用更宽范围的类型字段,因为当执行扩展存储器操作时可以使用的有效地址空间可以对应于存储器装置的大小。通过扩展可用于执行操作的地址空间,本文的实施例因此可以允许更宽范围的类型字段,并且因此,与不允许有效地址空间(即存储器装置的大小)的方法相比,可以执行更宽范围的存储器操作。
在本公开的以下详细说明中,参考了附图,所述附图形成所述详细说明的一部分,并且在所述附图中,通过图解的方式示出了可以如何实践本公开的一或多个实施例。对这些实施例的描述的详细程度足以使本领域的普通技术人员能够实践本公开的实施例,并且应当理解的是,可以利用其它实施例,并且在不背离本公开的范围的情况下,可以做出工艺改变、电气改变和结构改变。
如本文所使用的,如“X”、“Y”、“N”、“M”、“A”、“B”、“C”、“D”等指示符,尤其是关于附图中的附图标记的指示符,表明可以包含若干个如此指定的特定特征。还应当理解,本文使用的术语仅出于描述特定实施例的目的而并非旨在进行限制。如本文所使用的,除非上下文另外明确规定,否则单数形式“一(a)”、“一个(an)”和“所述(the)”可以包含单数个参考物和复数个参考物两者。另外,“若干个”、“至少一个”以及“一或多个”(例如,若干个存储器组)可以指代一或多个存储器组,然而“多个”旨在指代不止一个此类物品。此外,贯穿本申请,词语“可以(can)”和“可以(may)”以允许的意义(即,有可能、能够)而非强制性的意义(即,必须)使用。术语“包含(include)”和其派生词意指“包含但不限于”。术语“耦接(coupled)”和“耦接(coupling)”意指物理地或用于访问以及移动(传输)命令和/或数据的直接或间接连接,视情况而定。术语“数据”和“数据值”在本文中可互换地使用并且可以具有相同的含义,视情况而定。
本文中的附图遵循编号惯例,其中一或多个第一数字对应于附图图号,并且其余数字标识附图中的元件或组件。可以通过使用类似的数字来标识不同图之间的类似元件或组件。例如,104可以引用图1中的元件“04”,并且类似的元件可以在图2中被引用为204。一组或多个类似的元件或组件通常可以在本文中用单个元件图号来指代。例如,多个参考元件110-1、110-2、…、110-N通常可以被称为110。如将理解的,可以添加、交换和/或消除在本文的各个实施例中示出的元件,以提供本公开的若干个另外的实施例。另外,在图中提供的元件的比例和/或相对尺度旨在展示本公开的某些实施例并且不应以限制性的意义而采用。
图1是根据本公开的若干个实施例的呈包含设备的计算系统100的形式的功能框图,所述设备包含存储控制器104和若干个存储器装置116-1、…、116-N。如本文所使用的,“设备”可以指但不限于各种结构或结构组合中的任何结构或结构组合,如电路或电路系统、管芯或晶粒、一或多个模块、一或多个装置或一或多个系统。在图1展示的实施例中,存储器装置116-1、…、116-N可以包含一或多个存储器模块(例如,单列直插存储器模块、双列直插存储器模块等)。存储器装置116-1、…、116-N可以包含易失性存储器和/或非易失性存储器。在若干个实施例中,存储器装置116-1、…、116-N可以包含多芯片装置。多芯片装置可以包含若干种不同的存储器类型和/或若干个存储器模块。例如,存储器系统可以包含任何类型的模块上的非易失性或易失性存储器。
存储器装置116-1、…、116-N可以提供计算系统100的主存储器,或者可以用作整个计算系统100的另外的存储器或存储件。每个存储器装置116-1、…、116-N可以包含存储器胞元,例如,易失性存储器胞元和/或非易失性存储器胞元的一或多个阵列。阵列可以是具有例如NAND架构的闪存阵列。实施例不限于特定类型的存储器装置。例如,存储器装置可以包含RAM、ROM、DRAM、SDRAM、PCRAM、RRAM和闪速存储器等等。
在存储器装置116-1、…、116-N包含非易失性存储器的实施例中,存储器装置116-1、…、116-N可以是闪速存储器装置,如NAND或NOR闪速存储器装置。然而,实施例不限于此,并且存储器装置116-1、…、116-N可以包含其它非易失性存储器装置,如非易失性随机存取存储器装置(例如,NVRAM、ReRAM、FeRAM、MRAM、PCM)、“新兴”存储器装置,如3-D交叉点(3DXP)存储器装置等或其组合。非易失性存储器的3D XP阵列与可堆叠交叉网格数据存取阵列结合可以基于体电阻的改变执行位存储。另外,与许多基于闪速的存储器相比,3D XP非易失性存储器可以执行写入原地操作,其中可以在非易失性存储器胞元先前未被擦除的情况下对所述非易失性存储器胞元进行编程。
如图1中展示的,主机102可以耦接到存储控制器104,所述存储控制器可以继而耦接到存储器装置116-1、…、116-N。在若干个实施例中,每个存储器装置116-1、…、116-N可以经由通道(例如,通道107-1、…、107-N)耦接到存储控制器104。在图1中,包含编排控制器106的存储控制器104经由通道103耦接到主机102,并且编排控制器106经由通道105耦接到主机102。主机102可以是主机系统如个人膝上型计算机、台式计算机、数字相机、智能电话、存储卡读取器和/或支持物联网的装置以及各种其它类型的主机,并且可以包含存储器存取装置,例如处理器(或处理装置)。本领域的普通技术人员应理解,“处理器”可以意指一或多个处理器,如并行处理系统、若干个协处理器等。
主机102可以包含系统主板和/或背板并且可以包含若干个处理资源(例如,一或多个处理器、微处理器或其它某种类型的控制电路系统)。在一些实施例中,主机102可以包含主机控制器101,例如,所述主机控制器可以被配置成通过生成命令并将命令传送到存储控制器104以引起如扩展存储器操作等操作的执行来控制主机102和/或所述存储控制器的至少一些操作。主机控制器101可以包含电路系统(例如,硬件),所述电路系统可以被配置成控制主机102和/或存储控制器104的至少一些操作。例如,主机控制器101可以是专用集成电路(ASIC)、现场可编程门阵列(FPGA)或被配置成控制主机102和/或存储控制器104的至少一些操作的电路系统和/或逻辑的其它组合。
系统100可以包含单独的集成电路,或者主机102、存储控制器104、编排控制器106、片上网络(NoC)108和/或存储器装置116-1、…、116-N可以位于同一集成电路上。系统100可以是例如服务器系统和/或高性能计算(HPC)系统和/或其一部分。尽管图1中示出的实例展示了具有冯·诺依曼(Von Neumann)架构的系统,但是本公开的实施例可以在非冯·诺依曼架构上实施,所述非冯·诺依曼架构可以不包含通常与冯·诺依曼架构相关联的一或多个组件(例如,CPU、ALU等)。
存储控制器104可以包含编排控制器106、片上网络(NoC)108、多个计算瓦片110-1、…、110-N和媒体控制器112,所述多个计算瓦片在本文中结合图5和6进行更详细地描述。多个计算瓦片110在本文中可以被称为“计算装置”。编排控制器106(或者,为简单起见,“控制器”)可以包含被配置成在执行本文所述的操作期间向计算瓦片110-1、…、110-N分配和解除分配资源的电路系统和/或逻辑。例如,编排控制器106可以在执行本文所述的扩展存储器操作期间向计算瓦片110-1、…、110-N分配和解除分配资源。在一些实施例中,编排控制器106可以是专用集成电路(ASIC)、现场可编程门阵列(FPGA)或被配置成编排由计算瓦片110-1、…、110-N执行的操作(例如,扩展存储器操作)的电路系统和/或逻辑的其它组合。例如,编排控制器106可以包含用于控制计算瓦片110-1、…、110-N对接收到的数据块执行操作从而对数据(例如,数据块)执行扩展存储器操作的电路系统和/或逻辑。
编排控制器106可以被配置成从存储器装置116-1、…、116-N中的一或多个存储器装置请求数据块,并且使计算瓦片110-1、…、110-N对数据块执行操作(例如,扩展存储器操作)。可以执行所述操作以评估可以由与数据块相关联的单个地址和一或多个操作数指定的函数。编排控制器106可以被进一步配置成使扩展存储器操作的结果被存储在计算瓦片110-1、…、110-N中的一或多个计算瓦片中和/或被传送到接口(例如,通信路径103和/或105)和/或主机102。
在一些实施例中,编排控制器106可以是多个计算瓦片110之一。例如,编排控制器106可以包含与计算瓦片110-1、…、110-N所包含的电路系统相同或相似的电路系统,如本文结合图4B更详细地描述的。然而,在一些实施例中,编排控制器106可以是与计算瓦片110-1、…、110-N不同或分开的组件,并且因此可以包含与计算瓦片110不同的电路系统,如图1所示。
NoC 108可以是允许编排控制器106与计算瓦片110-1、…、110-N之间的通信的通信子系统。NoC 108可以包含用于促进编排控制器106与计算瓦片110-1、…、110-N之间的通信的电路系统和/或逻辑。在一些实施例中,如本文结合图2更详细地描述的,NoC 108可以接收来自计算瓦片110-1、…、110-N的输出(例如,已经执行过扩展存储器操作的数据)并且将来自计算瓦片110-1、…、110-N的输出传送到编排控制器106和/或主机102,反之亦然。例如,NoC 108可以被配置成接收已经经受由计算瓦片110-1、…、110-N进行的扩展存储器操作的数据,并且将与扩展存储器操作的结果相对应的数据传送到编排控制器106和/或主机102。在一些实施例中,如本文结合图4B更详细地描述的,NoC 108可以包含编排控制器106的至少一部分。例如,NoC 108可以包含包括编排控制器106或其一部分的电路系统。
尽管在图1中示出了NoC 108,但是实施例不限于利用NoC 108来在编排控制器106与计算瓦片110-1、…、110-N之间提供通信路径。例如,如存储控制器交叉开关(XBAR)等其它通信路径可以用于促进计算瓦片110-1、…、110-N与编排控制器106之间的通信。
媒体控制器112可以是“标准”或“哑”媒体控制器。例如,媒体控制器112可以被配置成对存储器装置116-1、…、116-N执行简单的操作如复制、写入、读取、纠错等。然而,在一些实施例中,媒体控制器112不对与存储器装置116-1、…、116-N相关联的数据执行处理(例如,用于操纵数据的操作)。例如,媒体控制器112可以使读取和/或写入操作被执行以经由通信路径107-1、…、107-N从存储器装置116-1、…、116-N读取数据或经由所述通信路径将数据写入到所述存储器装置,但是媒体控制器112可以不对从存储器装置116-1、…、116-N读取的或写入到所述存储器装置的数据执行处理。在一些实施例中,媒体控制器112可以是非易失性媒体控制器,但是实施例不限于此。
图1的实施例可以包含未展示以免模糊本公开的实施例的另外的电路系统。例如,存储控制器104可以包含用于锁存通过I/O电路系统在I/O连接上提供的地址信号的地址电路系统。地址信号可以由行解码器和列解码器接收和解码,以存取存储器装置116-1、…、116-N。本领域的技术人员将理解,地址输入连接的数量可以取决于存储器装置116-1、…、116-N的密度和架构。
在一些实施例中,可以使用图1所示的计算系统100、通过选择性地将数据(例如,文件)存储或映射到计算瓦片110中来执行扩展存储器操作。数据可以被选择性地存储在计算瓦片存储器的地址空间(例如,如本文图5中展示的计算瓦片存储器538的块543-1等部分)中。在一些实施例中,可以响应于从主机102和/或编排控制器106接收到的命令而将数据选择性地存储或映射在计算瓦片110中。在从主机102接收命令的实施例中,命令可以通过接口(例如,通信路径103和/或105)被传送到计算瓦片110。接口103/105可以是外围组件互连快速(PCIe)总线、双数据速率(DDR)接口或其它合适的接口或总线。然而,实施例不限于此,并且在计算瓦片从编排控制器106接收命令的实施例中,命令可以直接从编排控制器106传送或通过NoC 108传送。
在数据(例如,待用于执行扩展存储器操作的数据)被映射到计算瓦片110中的非限制性实例中,主机控制器101可以将命令传送到计算瓦片110以发起使用映射到计算瓦片110中的数据执行扩展存储器操作。在一些实施例中,主机控制器101可以查找对应于映射到计算瓦片110中的数据的地址(例如,物理地址),并且基于所述地址确定所述地址(并且因此,数据)被映射到哪个计算瓦片(例如,计算瓦片110-1)。然后,命令可以被传送到包含地址(并且因此,数据)的计算瓦片(例如,计算瓦片110-1)。
在一些实施例中,数据可以是64位操作数,但是实施例不限于具有特定大小或长度的操作数。在数据是64位操作数的实施例中,一旦主机控制器101基于存储数据的地址将用于发起执行扩展存储器操作的命令传送到正确的计算瓦片(例如,计算瓦片110-1),计算瓦片(例如,计算瓦片110-1)就可以使用数据执行扩展存储器操作。
在一些实施例中,计算瓦片110可以跨连续地址空间单独寻址,这可以促进如本文所描述的扩展存储器操作的执行。也就是说,存储数据或数据映射到的地址对于所有计算瓦片110可以是唯一的,使得当主机控制器101查找所述地址时,所述地址对应于特定计算瓦片(例如,计算瓦片110-1)中的位置。
例如,第一计算瓦片(例如,计算瓦片110-1)可以具有与其相关联的第一组地址,第二计算瓦片(例如,计算瓦片110-2)可以具有与其相关联的第二组地址,第三计算瓦片(例如,计算瓦片110-3)可以具有与其相关联的第三组地址,直到第n计算瓦片(例如,计算瓦片110-N),所述第n计算瓦片可以具有与其相关联的第n组地址。也就是说,第一计算瓦片110-1可以具有一组地址0000000到0999999,第二计算瓦片110-2可以具有一组地址1000000到1999999,第三计算瓦片110-3可以具有一组地址2000000到2999999,等等。应当理解,这些地址数字仅仅是说明性而非限制性的,并且可以取决于计算瓦片110的架构和/或大小(例如,存储容量)。
作为扩展存储器操作包括浮点加法累加操作(FLOATINGPOINT_ADD_ACCUMULATE)的非限制性实例,计算瓦片110可以将目的地地址视为浮点数,将浮点数添加到存储在计算瓦片110的所述地址处的自变数,并将结果存储回原始地址中。例如,当主机控制器101(或编排控制器106)发起执行浮点加法累加扩展存储器操作时,主机查找的计算瓦片110的地址(例如,数据映射到的计算瓦片中的地址)可以被视为浮点数,并且存储在所述地址中的数据可以被视为用于执行扩展存储器操作的操作数。响应于接收到用于发起扩展存储器操作的命令,数据(例如,本实例中的操作数)映射到的计算瓦片110可以执行加法操作,以将数据添加到地址(例如,地址的数值)并将加法结果存储回计算瓦片110的原始地址中。
如上所述,在一些实施例中,执行此类扩展存储器操作可以只需要将单个命令(例如,请求命令)从主机102(例如,从主机控制器101)传送到存储器装置104,或者从编排控制器106传送到计算瓦片110。相比于一些先前的方法,这可以减少例如多个命令通过接口103/105的时间量和/或数据(如操作数)在计算瓦片110内从一个地址移动到另一个地址的时间量。
另外,根据本公开的扩展存储器操作的执行可以进一步减少处理功率或处理时间的量,因为映射到执行扩展存储器操作的计算瓦片110中的数据可以用作扩展存储器操作的操作数和/或数据映射到的地址可以用作扩展存储器操作的操作数,这与在执行操作之前必须从不同位置检索和加载操作数的方法相反。也就是说,至少因为本文的实施例允许跳过操作数的加载,所以与加载操作数并随后存储在操作数之间执行的操作的结果的方法相比,计算系统100的性能可以得到改善。
进一步地,在一些实施例中,因为可以使用地址和存储在地址中的数据在计算瓦片110内执行扩展存储器操作,并且在一些实施例中,因为扩展存储器操作的结果可以存储回原始地址中,所以在执行扩展存储器操作期间,可以减少或不需要锁定或互斥操作。在执行扩展存储器操作期间降低或消除线程上的锁定或互斥操作的执行可以使计算系统100的性能提高,因为扩展存储器操作可以在同一计算瓦片110内并行执行,或者跨计算瓦片110中的两个或更多个计算瓦片并行执行。
在一些实施例中,计算瓦片110中的数据的有效映射可以包含基地址、段大小和/或长度。基地址可以对应于存储数据映射的计算瓦片110中的地址。段大小可以对应于计算系统100可以处理的数据的量(例如,以字节为单位),并且长度可以对应于与数据相对应的位的数量。应注意,在一些实施例中,存储在计算瓦片110中的数据在主机102上是不可缓存的。例如,可以在计算瓦片110内完全执行扩展存储器操作,而不会在执行扩展存储器操作期间阻碍或以其它方式向主机102传送数据或从所述主机传送数据。
在基地址为4096、段大小为1024并且长度为16,386的非限制性实例中,映射地址7234可以在第三段中,所述第三段可以对应于多个计算瓦片110中的第三计算瓦片(例如,计算瓦片110-3)。在本实例中,主机102、编排控制器106和/或NoC 108可以向第三计算瓦片110-3转发执行扩展存储器操作的命令(例如,请求)。第三计算瓦片110-3可以确定数据是否存储在第三计算瓦片110-3的存储器(例如,本文图5和6展示的计算瓦片存储器538/638)中的映射地址中。如果数据存储在映射地址(例如,第三计算瓦片110-3中的地址)中,则第三计算瓦片110-3可以使用所述数据执行所请求的扩展存储器操作,并且可以将扩展存储器操作的结果存储回最初存储数据的地址中。
在一些实施例中,包含执行扩展存储器操作所请求的数据的计算瓦片110可以由主机控制器101、编排控制器106和/或NoC 108来确定。例如,可用于所有计算瓦片110的总地址空间的一部分可以被分配给每个相应的计算瓦片。因此,主机控制器101、编排控制器106和/或NoC 108可以被提供有与总地址空间的哪些部分对应于哪些计算瓦片110相对应的信息,并且因此可以指示相关的计算瓦片110执行扩展存储器操作。在一些实施例中,主机控制器101、编排控制器106和/或NoC 108可以将对应于相应计算瓦片110的地址(或地址范围)存储在如表等数据结构中,并且基于存储在数据结构中的地址指示计算瓦片110执行扩展存储器操作。
然而,实施例不限于此,并且在一些实施例中,主机控制器101、编排控制器106和/或NoC 108可以确定存储器资源(例如,本文图5和6展示的每个计算瓦片存储器538/638)的大小(例如,数据量),并且基于与每个计算瓦片110相关联的存储器资源的大小和可用于所有计算瓦片110的总地址空间来确定哪个计算瓦片110存储将用于执行扩展存储器操作的数据。在主机控制器101、编排控制器106和/或NoC 108基于可用于所有计算瓦片110的总地址空间和可用于每个计算瓦片110的存储器资源量来确定存储将用于执行扩展存储器操作的数据的计算瓦片110的实施例中,可以跨计算瓦片存储器资源的多个非重叠部分执行扩展存储器操作。
继续以上实例,如果所请求的地址中没有数据,则第三计算瓦片110-3可以如本文结合图2、3、4A-4C、5和6更详细描述的那样请求数据,并且一旦数据被加载到第三计算瓦片110-3的地址中,就执行扩展存储器操作。在一些实施例中,一旦计算瓦片(例如,本实例中的第三计算瓦片110-3)完成了扩展存储器操作,就可以通知编排控制器106和/或主机102,和/或可以将扩展存储器操作的结果传送到编排控制器106和/或主机102。
图2是根据本公开的若干个实施例的呈包含存储控制器204的设备的形式的功能框图。存储控制器204可以类似于图1中展示的存储控制器104。如图2所示,存储控制器204可以包含媒体控制器212、多个计算瓦片210-1、…、210-N、片上网络(NoC)208和编排控制器206。
媒体控制器212可以被配置成响应于来自编排控制器206或主机(如图1中展示的主机102)的请求而从耦接到存储控制器204的存储器装置(例如,图1中展示的存储器装置116-1、…、116-N)检索数据块211A-1、…、211A-N、211B-1、…、211B-N、211C-1、…、211C-N、211D-1、…、211D-N、211E-1、…、211E-N。媒体控制器随后可以使数据块211A-1、…、211A-N、211B-1、…、211B-N、211C-1、…、211C-N、211D-1、…、211D-N、211E-1、…、211E-N传送到计算瓦片210-1、…、210-N和/或编排控制器206。
类似地,媒体控制器212可以被配置成从计算瓦片210和/或编排控制器206接收数据块211A-1、…、211A-N、211B-1、…、211B-N、211C-1、…、211C-N、211D-1、…、211D-N、211E-1、…、211E-N。媒体控制器随后可以使数据块211A-1、…、211A-N、211B-1、…、211B-N、211C-1、…、211C-N、211D-1、…、211D-N、211E-1、…、211E-N传送到耦接到存储控制器204的存储器装置。
数据块211的大小可以为大约4千字节(但是实施例不限于此特定大小),并且可以响应于由编排控制器206和/或主机生成的一或多个命令而由计算瓦片210-1、…、210-N以流式传输的方式进行处理。在一些实施例中,数据块211可以是32位、64位、128位等,字或数据组块和/或数据块211可以对应于在执行扩展存储器操作中使用的操作数。
例如,如本文结合图5和6更详细地描述的,因为计算瓦片210可以响应于完成对先前的数据块211执行扩展存储器操作而对第二数据块211执行扩展存储器操作(例如,处理),所以当数据块211由计算瓦片210处理时,数据块211可以通过计算瓦片210连续地流式传输。在一些实施例中,数据块211可以在不存在来自编排控制器206和/或主机的中间命令的情况下以流式传输的方式通过计算瓦片210进行处理。也就是说,在一些实施例中,编排控制器206(或主机)可以发出命令以使计算瓦片210处理所述计算瓦片接收到的数据块211,并且随后由计算瓦片210接收到的数据块211可以在不存在来自编排控制器206的另外的命令的情况下进行处理。
在一些实施例中,处理数据块211可以包含使用数据块211执行扩展存储器操作。例如,计算瓦片210-1、…、211-N可以响应于来自编排控制器206的命令而对数据块211执行扩展存储器操作,以评估一或多个功能,移除不需要的数据,提取相关数据或者结合扩展存储器操作的执行以其它方式使用数据块211。
在数据(例如,用于执行扩展存储器操作的数据)被映射到计算瓦片210中的一或多个计算瓦片中的非限制性实例中,编排控制器206可以将命令传送到计算瓦片206,以发起使用映射到计算瓦片210中的数据执行扩展存储器操作。在一些实施例中,编排控制器206可以查找对应于映射到计算瓦片210中的数据的地址(例如,物理地址),并且基于所述地址确定所述地址(并且因此,数据)映射到哪个计算瓦片(例如,计算瓦片210-1)。然后,命令可以被传送到包含地址(并且因此,数据)的计算瓦片(例如,计算瓦片210-1)。在一些实施例中,命令可以通过NoC 208传送到计算瓦片(例如,计算瓦片210-1)。
编排控制器206(或主机)可以被进一步配置成向计算瓦片210-1、…、210-N发送命令以分配和/或解除分配可用于在使用数据块211执行扩展存储器操作中使用的计算瓦片210-1、…、210-N的资源。在一些实施例中,分配和/或解除分配可用于计算瓦片210-1、…、210-N的资源可以包含选择性地启用计算瓦片210中的一些计算瓦片,同时选择性地禁用计算瓦片210中的一些计算瓦片。例如,如果需要少于总数的计算瓦片210来处理数据块211,则编排控制器206可以向要用于处理数据块211的计算瓦片210发送命令,以仅启用期望处理数据块211的那些计算瓦片210。
在一些实施例中,编排控制器206可以进一步被配置成发送命令以使由计算瓦片210执行的操作(如扩展存储器操作)的执行同步。例如,编排控制器206(和/或主机)可以向第一计算瓦片(例如,计算瓦片210-1)发送命令以使第一计算瓦片执行第一扩展存储器操作,并且编排控制器206(或主机)可以向第二计算瓦片(例如,计算瓦片210-2)发送命令以使用第二计算瓦片执行第二扩展存储器操作。通过编排控制器206使由计算瓦片210执行的操作(如扩展存储器操作)的执行同步可以进一步包含使计算瓦片210在特定时间或以特定顺序执行特定操作。
如上所述,由执行扩展存储器操作产生的数据可以存储在计算瓦片210中的在执行扩展存储器操作之前数据所被存储的原始地址中,然而,在一些实施例中,由执行扩展存储器操作产生的数据块可以在执行扩展存储器操作之后转换成逻辑记录213-1、…、213-N。逻辑记录213可以包括与其物理位置无关的数据记录。例如,逻辑记录213可以是指向计算瓦片210中的至少一个计算瓦片中的地址(例如,位置)的数据记录,在所述地址中存储了与执行扩展存储器操作相对应的物理数据。
如本文结合图5和6更详细地描述的,扩展存储器操作的结果可以存储在计算瓦片存储器(例如,图5中展示的计算瓦片存储器538或图6中展示的计算瓦片存储器638)的地址中,所述地址与在执行扩展存储器操作之前存储数据的地址相同。然而,实施例不限于此,并且扩展存储器操作的结果可以存储在计算瓦片存储器的地址中,所述地址与在执行扩展存储器操作之前存储数据的地址相同。在一些实施例中,逻辑记录213可以指向这些地址位置,使得扩展存储器操作的结果可以从计算瓦片210进行存取并且传送到计算瓦片210外部的电路系统(例如,主机)。
在一些实施例中,编排控制器206可以直接从媒体控制器212接收数据块211E-1、…、211E-N和/或直接将所述数据块发送到所述媒体控制器。这可以允许编排控制器206将未由计算瓦片210处理的数据块211E-1、…、211E-N(例如,未用于执行扩展存储器操作的数据块)传送到媒体控制器212并且将所述数据块从所述媒体控制器传送。
例如,如果编排控制器206从耦接到存储控制器204的主机(例如,图1中展示的主机102)接收到待由耦接到存储控制器204的存储器装置(例如,图1中展示的存储器装置116)存储的未处理的数据块211E-1、…、211E-N,则编排控制器206可以使未处理的数据块211E-1、…、211E-N传送到媒体控制器212,所述媒体控制器继而可以使未处理的数据块211E-1、…、211E-N传送到耦接到存储控制器204的存储器装置。
类似地,如果主机请求未处理的(例如,完整的)数据块(例如,未由计算瓦片210处理的数据块),则媒体控制器212可以使完整的数据块211E-1、…、211E-N传送到编排控制器206,所述编排控制器可以随后将未处理的数据块211E-1、…、211E-N传送到主机。
图3是根据本公开的若干个实施例的呈包含存储控制器304的设备的形式的另一功能框图。存储控制器304可以类似于本文图1中展示的存储控制器104或图2中展示的存储控制器204。如图3所示,存储控制器304可以包含媒体控制器312、多个计算瓦片310-1、…、310-N、片上网络(NoC)308和编排控制器306。
媒体控制器312可以被配置成响应于来自编排控制器306的请求而从耦接到存储控制器304的存储器装置(例如,图1中展示的存储器装置116-1、…、116-N)检索数据块311A-1、…、311A-N、311B-1、…、311B-N、311C-1、…、311C-N、311D-1、…、311D-N、311E-1、…、311E-N和/或逻辑记录313A-1、…、313A-N、313B-1、…、313B-N、313C-1、…、313C-N、313D-1、…、313D-N、313E-1、…、313E-N。媒体控制器随后可以使数据块311A-1、…、311A-N、311B-1、…、311B-N、311C-1、…、311C-N、311D-1、…、311D-N、311E-1、…、311E-N和/或逻辑记录313A-1、…、313A-N、313B-1、…、313B-N、313C-1、…、313C-N、313D-1、…、313D-N、313E-1、…、313E-N传送到计算瓦片310-1、…、310-N和/或编排控制器306。
类似地,媒体控制器312可以被配置成从计算瓦片310和/或编排控制器306接收数据块311A-1、…、311A-N、311B-1、…、311B-N、311C-1、…、311C-N、311D-1、…、311D-N、311E-1、…、311E-N和/或逻辑记录313A-1、…、313A-N、313B-1、…、313B-N、313C-1、…、313C-N、313D-1、…、313D-N、313E-1、…、313E-N。媒体控制器随后可以使数据块311A-1、…、311A-N、311B-1、…、311B-N、311C-1、…、311C-N、311D-1、…、311D-N、311E-1、…、311E-N和/或逻辑记录313A-1、…、313A-N、313B-1、…、313B-N、313C-1、…、313C-N、313D-1、…、313D-N、313E-1、…、313E-N传送到耦接到存储控制器304的存储器装置。
数据块311的大小可以为大约4千字节,并且可以响应于由编排控制器306和/或主机生成的一或多个命令而由计算瓦片310-1、…、310-N以流式传输的方式进行处理。在一些实施例中,数据块311可以是32位、64位、128位等,字或数据组块和/或数据块311可以对应于在执行扩展存储器操作中使用的操作数。在一些实施例中,处理数据块311可以包含使用数据块311执行扩展存储器操作。例如,计算瓦片310-1、…、310-N可以响应于来自编排控制器306和/或主机的命令而对数据块311执行扩展存储器操作。例如,计算瓦片310-1、…、310-N可以响应于来自编排控制器306和/或主机的命令而处理数据块311,生成逻辑记录313,和/或将逻辑记录传送到计算瓦片310外部的位置。
图4A-4C展示了根据本公开的若干个实施例的呈包含存储控制器404的设备的形式的功能框图的各种实例。在图4A-4C中,媒体控制器412与多个计算瓦片410、NoC 408和编排控制器406通信,所述编排控制器与输入/输出(I/O)缓冲器422通信。尽管在图4A-4C中示出了八(8)个离散的计算瓦片410,但是应当理解,实施例不限于包含八个离散的计算瓦片410的存储控制器404。例如,存储控制器404可以包含一或多个计算瓦片410,这取决于存储控制器404和/或其中部署有存储控制器404的整个系统的特性。
如图4A-4C所示,媒体控制器412可以包含直接存储器存取(DMA)组件418和DMA通信子系统419。DMA 418可以促进媒体控制器418与如图1中展示的存储器装置116-1、…、116-N等存储器装置之间的通信,所述存储器装置独立于如图1中展示的主机102等主机的中央处理单元而耦接到存储控制器404。DMA通信子系统419可以是如交叉开关(“XBAR”)、片上网络或允许在媒体控制器412、耦接到存储控制器404的存储装置和/或计算瓦片410之间进行互连和互操作的其它通信子系统等通信子系统。
在一些实施例中,NoC 408可以促进计算瓦片410的相应地址空间之间的可见性。例如,每个计算瓦片410-1、…、410-8可以响应于接收到数据和/或文件而将所述数据存储在计算瓦片410的存储器资源(例如,本文图5和6中展示的计算瓦片存储器548或计算瓦片存储器638)中。计算瓦片410可以将与计算瓦片410存储器资源中的存储有数据的位置相对应的地址(例如,物理地址)相关联。另外,计算瓦片410可以将与数据相关联的地址解析(例如,分解)为逻辑块。
在一些实施例中,可以将与数据相关联的第零逻辑块传送到处理装置(例如,本文图5和6中展示的精简指令集计算(RISC)装置536或RISC装置636)。特定计算瓦片(例如,计算瓦片410-2)可以被配置成识别特定的逻辑地址集对于所述计算瓦片410-2是可存取的,而其它计算瓦片(例如,计算瓦片410-3、410-4等)可以被配置成识别不同的逻辑地址集对于那些计算瓦片410是可存取的。换句话说,第一计算瓦片(例如,计算瓦片410-2)可以存取与所述计算瓦片410-2相关联的第一逻辑地址集,并且第二计算瓦片(例如,计算瓦片410-3)可以存取与所述第二计算瓦片相关联的第二逻辑地址集,等等。
如果在第一计算瓦片(例如,计算瓦片410-2)处请求与第二逻辑地址集(例如,第二计算瓦片410-3可存取的逻辑地址)相对应的数据,则NoC 408可以促进第一计算瓦片(例如,计算瓦片410-2)与第二计算瓦片(例如,计算瓦片410-3)之间的通信,以允许第一计算瓦片(例如,计算瓦片410-2)存取与第二逻辑地址集(例如,第二计算瓦片410-3可存取的逻辑地址集)相对应的数据。也就是说,NoC 408可以促进计算瓦片410之间的通信,以允许计算瓦片410的地址空间彼此可见。
在一些实施例中,计算瓦片410之间的促进地址可见性的通信可以包含:通过第一计算瓦片(例如,计算瓦片410-1)的事件队列(例如,图5和6中展示的事件队列532和632)来接收请求存取与第二逻辑地址集相对应的数据的消息;将所请求的数据加载到第一计算瓦片的存储器资源(例如,本文图5和6中展示的计算瓦片存储器538和638)中;以及将所请求的数据传送到消息缓冲器(例如,本文图5和6中展示的消息缓冲器534和634)。一旦数据已由消息缓冲器缓冲,就可以通过NoC 408将数据传送到第二计算瓦片(例如,计算瓦片410-2)。
例如,在执行扩展存储器操作期间,编排控制器406和/或第一计算瓦片(例如,计算瓦片410-1)可以确定由主机命令(例如,由如图1中展示的主机102等主机生成的用于发起执行扩展存储器操作的命令)指定的地址对应于多个计算瓦片410中的第二计算瓦片(例如,计算瓦片410-2)的存储器资源中的位置。在这种情况下,可以生成计算瓦片命令,并将计算瓦片命令从编排控制器406和/或第一计算瓦片410-1发送到第二计算瓦片410-2,以发起使用存储在由计算瓦片命令指定的地址处的第二计算瓦片410-2的存储器资源中的操作数来执行扩展存储器操作。
响应于接收到计算瓦片命令,第二计算瓦片410-2可以使用存储在由计算瓦片命令指定的地址处的第二计算瓦片410-2的存储器资源中的操作数来执行扩展存储器操作。这可以减少来自主机与存储控制器和/或计算瓦片410之间的命令流量,因为主机不需要生成另外的命令来引起执行扩展存储器操作,这可以通过例如减少与向主机传送命令和从主机传送命令相关联的时间来提高计算系统的整体性能。
在一些实施例中,编排控制器406可以确定执行扩展存储器操作可以包含执行多个子操作。例如,扩展存储器操作可以被解析或分解成两个或更多个子操作,所述子操作可以作为执行整个扩展存储器操作的一部分来执行。在这种情况下,编排控制器406和/或NoC408可以利用上述地址可见性来促进各个计算瓦片410执行子操作。响应于子操作的完成,编排控制器406可以使子操作的结果合并成与扩展存储器操作的结果相对应的单个结果。
在其它实施例中,请求存储在计算瓦片410中的数据的应用可以知道哪些计算瓦片410包含所请求的数据。在此实例中,所述应用可以从相关的计算瓦片410请求数据,和/或地址可以被加载到多个计算瓦片410中并且可以通过NoC 408由请求数据的应用来存取。
如图4A所示,编排控制器406包括与NoC 408物理分离的离散电路系统。NoC 408可以是以一或多个集成电路的形式提供的通信子系统,所述通信子系统允许计算瓦片410、媒体控制器412和/或编排控制器406之间进行通信。NoC 408的非限制性实例可以包含XBAR或允许编排控制器406、计算瓦片410和/或媒体控制器412进行互连和/或互操作的其它通信子系统。
如上所述,响应于接收到由编排控制器406、NoC 408和/或主机(例如,图1中展示的主机102)生成的命令,可以实现使用存储在计算瓦片410中的数据和/或来自通过计算瓦片410流式传输的数据块的数据执行扩展存储器操作。
如图4B所示,编排控制器406驻留在多个计算瓦片410-1、…、410-8中的计算瓦片410-1之一上。如本文所使用的,术语“驻留在…上”是指物理地位于特定组件上的某物。例如,编排控制器406“驻留在”计算瓦片410之一上是指编排控制器406物理耦接到特定计算瓦片的条件。术语“驻留在…上”可以在本文中与如“部署在…上”或“位于…上”等其它术语互换使用。
如上所述,响应于接收到由计算瓦片410-1/编排控制器406、NoC 408和/或主机生成的命令,可以实现使用存储在计算瓦片410中的数据和/或来自通过计算瓦片410流式传输的数据块的数据执行扩展存储器操作。
如图4C所示,编排控制器406驻留在NoC 408上。在一些实施例中,将编排控制器406设置为NoC 408的一部分使得编排控制器406和NoC 408紧密耦接,这可以减少使用编排控制器406执行扩展存储器操作的时间消耗。
如上所述,响应于接收到由编排控制器406、NoC 408和/或主机生成的命令,可以实现使用存储在计算瓦片410中的数据和/或来自通过计算瓦片410流式传输的数据块的数据执行扩展存储器操作。
图5是根据本公开的若干个实施例的呈计算瓦片510的形式的框图。如图5所示,计算瓦片510可以包含:排队电路系统,所述排队电路系统可以包含系统事件队列530和/或事件队列532;以及消息缓冲器534(例如,出站缓冲电路系统)。计算瓦片510可以进一步包含如精简指令集计算(RISC)装置536等处理装置(例如,处理单元)、计算瓦片存储器538部分和直接存储器存取缓冲器539(例如,入站缓冲电路系统)。RISC装置536可以是可以采用如RISC-V ISA等精简指令集架构(ISA)的处理资源,然而实施例不限于RISC-V ISA,并且可以使用其它处理装置和/或ISA。为了简单起见,RISC装置536可以被称为“处理单元”。在一些实施例中,图5中示出的计算瓦片510可以用作编排控制器(例如,本文图1-4中展示的编排控制器106/206/306/406)。
系统事件队列530、事件队列532和消息缓冲器534可以与如图1-4中分别展示的编排控制器106、206、306和406等编排控制器通信。在一些实施例中,系统事件队列530、事件队列532和消息缓冲器534可以与编排控制器直接通信,或者系统事件队列530、事件队列532和消息缓冲器534可以与片上网络(如分别在图1-3中展示的NoC 108、208和308)进行通信,所述片上网络可以进一步与编排控制器和/或主机(如图1中展示的主机102)通信。
系统事件队列530、事件队列532和消息缓冲器534可以从编排控制器和/或主机接收消息和/或命令和/或可以向编排控制器和/或主机发送消息和/或命令,以控制计算瓦片510的操作,以便对由计算瓦片510存储的数据(例如,本文图2和3中展示的数据块211和311)执行扩展存储器操作。在一些实施例中,命令和/或消息可以包含用于在执行扩展存储器操作期间分配或解除分配可用于计算瓦片510的资源的消息和/或命令。另外,命令和/或消息可以包含用于使计算瓦片510的操作与部署在存储控制器(例如,图1-4中分别展示的存储控制器104、204、304和404)中的其它计算瓦片同步的命令和/或消息。
例如,系统事件队列530、事件队列532和消息缓冲器534可以促进计算瓦片510、编排控制器和/或主机之间的通信,以使计算瓦片510使用存储在计算瓦片存储器538中的数据来执行扩展存储器操作。在非限制性实例中,系统事件队列530、事件队列532和消息缓冲器534可以处理从编排控制器和/或主机接收到的命令和/或消息,以使计算瓦片510对存储的数据和/或与存储数据的计算瓦片存储器538内的物理地址相对应的地址执行扩展存储器操作。这可以允许在将数据传送到计算瓦片510外部的电路系统(如编排控制器、NoC或主机(例如,本文图1中展示的主机102))之前,使用存储在计算瓦片存储器538中的数据来执行扩展存储器操作。
系统事件队列530可以从编排控制器或NoC接收中断消息。中断消息可以由系统事件队列532处理,以使从编排控制器、主机或NoC发送的命令或消息立即执行。例如,中断消息可以指示系统事件队列532使计算瓦片510中止未决命令或消息的操作,并且代替地执行从编排控制器、主机或NoC接收到的新命令或消息。在一些实施例中,新命令或消息可以涉及发起使用存储在计算瓦片存储器538中的数据的扩展存储器操作的命令或消息。
事件队列532可以接收可以串行处理的消息。例如,事件队列532可以从编排控制器、主机或NoC接收消息和/或命令,并且可以以串行方式处理接收到的消息,使得按照接收消息的顺序来处理消息。可以由事件队列接收并处理的消息的非限制性实例可以包含来自编排控制器和/或NoC的发起对数据块的处理的请求消息(例如,计算瓦片510上的远程程序调用)、来自其它计算瓦片的提供或改变接收消息请求的计算瓦片的计算瓦片存储器538中的特定存储器位置的内容的请求消息(例如,用于发起在计算瓦片之间进行远程读取或写入操作的消息)、来自其它计算瓦片的使使用存储在计算瓦片中的数据执行扩展存储器操作同步的同步消息请求等。
消息缓冲器534可以包括缓冲区域以缓冲要从计算瓦片510被传送到计算瓦片510外部的电路系统(如编排控制器、NoC和/或主机)的数据。在一些实施例中,消息缓冲器534可以以串行方式操作,使得数据(例如,扩展存储器操作的结果)按照由消息缓冲器534接收数据的顺序从缓冲器传送出计算瓦片510。消息缓冲器534可以进一步通过控制数据从消息缓冲器534传送的速率来提供路由控制和/或瓶颈控制。例如,消息缓冲器534可以被配置成以允许在不对编排控制器、NoC和/或主机造成数据瓶颈或路由问题的情况下从计算瓦片510传送数据的速率来从计算瓦片510传送数据。
RISC装置536可以与系统事件队列530、事件队列532和消息缓冲器534通信,并且可以处理由系统事件队列530、事件队列532和消息缓冲器534接收到的命令和/或消息,以促进对由计算瓦片510存储或接收到的数据执行操作。例如,RISC装置536可以包含被配置成处理命令和/或消息以引起使用由计算瓦片510存储或接收到的数据来执行扩展存储器操作的电路系统。RISC装置536可以包含单核或者可以是多核处理器。
在一些实施例中,计算瓦片存储器538可以是如随机存取存储器(例如,RAM、SRAM等)等存储器资源。然而,实施例不限于此,并且计算瓦片存储器538可以包含各种寄存器、高速缓存、缓冲器和/或存储器阵列(例如,1T1C、2T2C、3T等DRAM阵列)。计算瓦片存储器538可以被配置成接收并存储来自例如存储器装置(如本文图1中展示的存储器装置116-1、…、116-N)的数据。在一些实施例中,计算瓦片存储器538的大小可以为大约256千字节(KB),然而实施例不限于此特定大小,并且计算瓦片存储器538的大小可以大于或小于256KB。
计算瓦片存储器538可以被划分成一或多个可寻址存储器区域。如图5所示,计算瓦片存储器538可以被划分成可寻址存储器区域,从而可以在其中存储各种类型的数据。例如,一或多个存储器区域可以存储由计算瓦片存储器538使用的指令(“INSTR”)541,一或多个存储器区域可以存储数据543-1、…、543-N,所述数据可以在执行扩展存储器操作期间用作操作数,和/或一或多个存储器区域可以用作计算瓦片存储器538的本地存储器(“LOCALMEM.”)545部分。尽管在图5中示出了二十(20)个不同的存储器区域,但是应当理解,计算瓦片存储器538可以被划分为任意数量的不同的存储器区域。
如以上所讨论的,可以响应于由编排控制器(例如,本文图1-4中展示的编排控制器106、206、306、406)和/或主机(例如,本文图1中展示的主机102)生成的消息和/或命令而从存储器装置检索数据并且将数据存储在计算瓦片存储器538中。在一些实施例中,命令和/或消息可以由如在图1-4中分别展示的媒体控制器112、212、312或412等媒体控制器处理。一旦数据由计算瓦片510接收,所述数据就可以由DMA缓冲器539缓冲并且随后被存储在计算瓦片存储器538中。
因此,在一些实施例中,计算瓦片510可以提供对从存储器装置接收到的数据的操作的数据驱动执行。例如,计算瓦片510可以响应于从存储器装置接收到数据而开始对所述数据执行操作(例如,扩展存储器操作等)。
例如,因为从存储器装置到计算瓦片510的数据传送的不确定性(例如,因为在将数据传送到计算瓦片510之前由媒体控制器执行纠错操作而使得某些数据可能花费更长的时间才能到达计算瓦片510等),所以与不以数据驱动的方式工作的方法相比,对数据的操作的数据驱动执行可以提高计算性能。
在一些实施例中,编排控制器可以发送由计算瓦片510的系统事件队列530接收到的命令或消息。如上所述,命令或消息可以是指示计算瓦片510请求数据并对数据执行扩展存储器操作的中断。然而,由于从存储器装置到计算瓦片510的数据传送的不确定性,数据可能没有立即准备好从存储器装置发送到计算瓦片510。然而,一旦数据由计算瓦片510接收,计算瓦片510就可以立即开始使用数据执行扩展存储器操作。换句话说,计算瓦片510可以响应于接收到数据而开始对数据执行扩展存储器操作,而不需要来自外部电路系统(如主机)的用于引起执行扩展存储器操作的另外的命令或消息。
在一些实施例中,可以通过选择性地在计算瓦片存储器538中移动数据以执行所请求的扩展存储器操作来执行扩展存储器操作。在请求执行浮点加法累加扩展存储器操作的非限制性实例中,可以将其中存储在执行扩展存储器操作中待用作操作数的数据的计算瓦片存储器538中的地址添加到数据中,并且浮点加法累加操作的结果可以存储于在执行浮点加法累加扩展存储器操作之前存储数据的计算瓦片存储器538中的地址中。在一些实施例中,RISC装置536可以执行指令以引起执行扩展存储器操作。
随着扩展存储器操作的结果被传送到消息缓冲器534,后续数据可以从DMA缓冲器539传送到计算瓦片存储器538,并且可以在计算瓦片存储器538中发起使用所述后续数据的扩展存储器操作。通过在使用先前数据的扩展存储器操作完成之前将后续数据缓冲到计算瓦片510中,可以在不存在来自编排控制器或主机的发起对后续数据的扩展存储器操作的另外的命令或消息的情况下将数据通过计算瓦片连续地流式传输。另外,通过抢先将后续数据缓冲到DMA缓冲器539中,由于从存储器装置到计算瓦片510的数据传送的不确定性引起的延迟可以得到减轻,因为扩展存储器操作是对正通过计算瓦片510流式传输的数据执行的。
当扩展存储器操作的结果要从计算瓦片510移动到计算瓦片510外部的电路系统(例如,NoC、编排控制器和/或主机)时,RISC装置536可以将命令和/或消息发送到编排控制器和/或主机,所述编排控制器和/或主机可以继而发送命令和/或消息以从计算瓦片存储器538请求扩展存储器操作的结果。
计算瓦片存储器538可以响应于请求扩展存储器操作的结果的命令和/或消息而将扩展存储器操作的结果传送到期望的位置(例如,传送到NoC、编排瓦片和/或主机)。例如,响应于请求扩展存储器操作的结果的命令,扩展存储器操作的结果可以被传送到消息缓冲器534,并且随后被传送出计算瓦片510。
图6是根据本公开的若干个实施例的呈计算瓦片610的形式的另一框图。如图6所示,计算瓦片610可以包含系统事件队列630、事件队列632和消息缓冲器634。计算瓦片610可以进一步包含指令高速缓存635、数据高速缓存637、如精简指令集计算(RISC)装置636等处理装置、计算瓦片存储器638部分和直接存储器存取缓冲器639。图6所示的计算瓦片610可以类似于图5中展示的计算瓦片510,然而图6中展示的计算瓦片610进一步包含指令高速缓存635和/或数据高速缓存637。在一些实施例中,图6中示出的计算瓦片610可以用作编排控制器(例如,本文图1-4中展示的编排控制器106/206/306/406)。
指令高速缓存635和/或数据高速缓存637的大小可以小于计算瓦片存储器638的大小。例如,计算瓦片存储器可以为大约256KB,而指令高速缓存635和/或数据高速缓存637的大小为大约32KB。然而,实施例不限于这些特定大小,只要指令高速缓存635和/或数据高速缓存637的大小小于计算瓦片存储器638的大小即可。
在一些实施例中,指令高速缓存635可以存储和/或缓冲在RISC装置636到计算瓦片存储器638之间传送的消息和/或命令,而数据高速缓存637可以存储和/或缓冲在计算瓦片存储器638与RISC装置636之间传送的数据。
图7是根据本公开的若干个实施例的表示用于扩展存储器操作的示例方法750的流程图。在框752处,方法750可以包含由耦接到多个计算装置的控制器接收发起执行操作的命令,所述多个计算装置中的每个计算装置彼此耦接并且每个计算装置包括处理单元和被配置为处理单元的高速缓存的存储器阵列,所述操作包括利用所述多个计算装置中的特定计算装置的处理单元对数据执行操作。控制器瓦片可以类似于本文图1-3和4A-4C中展示的编排控制器106/206/306/406。计算装置可以类似于本文图1-、4A-4C和5-6中展示的计算瓦片110/210/310/410/510/610。
在一些实施例中,接收发起执行操作的命令可以包含接收与特定计算装置中的存储器位置相对应的地址,所述特定计算装置中存储与操作执行相对应的操作数。例如,如上所述,地址可以是其中存储在操作执行中用作操作数的数据的存储器部分(例如,计算瓦片存储器,如本文图5和6中展示的计算瓦片存储器538/638)中的地址。
在框754处,方法750可以包含由控制器确定所述多个计算装置中的特定计算装置是否存储与由所述命令指示的操作相对应的操作数。特定计算装置可以类似于本文图1-6中展示的计算瓦片110/210/310/410/510/610之一。
在框756处,方法750可以包含响应于确定特定计算装置存储操作数而由特定计算装置对数据执行操作。在一些实施例中,如本文所描述的,执行操作可以包含执行扩展存储器操作。所述操作可以进一步包含在没有从可耦接到控制器的主机接收到主机命令的情况下由特定计算装置执行操作。响应于执行操作的完成,方法750可以包含向可耦接到控制器的主机发送通知。
在一些实施例中,发起执行操作的命令可以包含与特定计算装置的存储器阵列中的位置相对应的地址,并且方法750可以包含将操作的结果存储在与特定计算装置中的位置相对应的地址中。例如,方法750可以包含将操作的结果存储在与特定计算装置中的存储器位置相对应的地址中,在执行扩展存储器操作之前与执行操作相对应的操作数被存储在所述存储器位置中。也就是说,在一些实施例中,操作的结果可以存储在计算装置的在执行操作之前存储用作操作的操作数的数据的同一地址位置中。
在一些实施例中,方法750可以包含由控制器确定与执行操作相对应的操作数未由特定计算瓦片存储。响应于此确定,方法750可以进一步包含由控制器确定与执行操作相对应的操作数存储在耦接到所述多个计算装置的存储器装置中。方法750可以进一步包含:从存储器装置检索与执行操作相对应的操作数;使与执行操作相对应的操作数存储在所述多个计算装置中的至少一个计算装置中;和/或引起使用所述至少一个计算装置执行操作。存储器装置可以类似于图1中展示的存储器装置116。
在一些实施例中,方法750可以进一步包含:确定至少一个子操作将作为操作的一部分被执行;向不同于特定计算装置的计算装置发送命令以引起执行子操作;和/或使用所述不同于特定计算装置的计算装置来执行子操作作为执行操作的一部分。例如,在一些实施例中,可以做出操作将分解为多个子操作的确定,并且控制器可以使不同的计算装置执行不同的子操作作为执行操作的一部分。在一些实施例中,编排控制器可以在与通信子系统(如本文图1-4中展示的NoC 108/208/308/408)协作的情况下将子操作指配给计算装置中的两个或更多个计算装置,作为执行操作的一部分。
尽管本文已经展示并描述了具体实施例,但是本领域的普通技术人员应理解,旨在实现相同结果的布置可以替换所示出的具体实施例。本公开旨在覆盖本公开的一或多个实施例的改编形式或变化形式。应理解,上面的描述以说明性方式而非限制性方式进行。回顾以上描述,以上实施例的组合和本文未具体描述的其它实施例对于本领域的技术人员而言将是显而易见的。本公开的一或多个实施例的范围包含以上结构和工艺被使用的其它应用。因此,本公开的一或多个实施例的范围应当参考所附权利要求连同与此类权利要求被赋予的等效物的全部范围确定。
在以上具体实施方式中,出于使本公开简单化的目的,在单个实施例中将一些特征分组在一起。本公开的此方法不应被解释为反映本公开的所公开实施例必须使用比每项权利要求中明确引用的特征更多的特征。相反,正如以下的权利要求书所反映的,创造性主题在于少于单个公开的实施例的全部特征。因此,下面的权利要求据此并入到具体实施方式中,其中每项权利要求作为单独的实施例而独立存在。
Claims (25)
1.一种设备,其包括:
计算装置,所述计算装置包括处理装置和被配置为所述处理装置的高速缓存的存储器资源,其中所述计算装置被配置成:
接收执行操作的命令,所述操作包括利用所述计算装置的所述处理单元对数据执行操作;
确定对应于所述操作的操作数是否存储在所述存储器资源中;并且
响应于所述确定而使用存储在所述存储器资源中的所述操作数来执行所述操作。
2.根据权利要求1所述的设备,其中执行所述操作的所述命令包括地址部分、段大小部分和长度部分中的至少一个。
3.根据权利要求1所述的设备,其中所述计算装置被进一步配置成在不存在用于加载所述操作数或存储所述操作数的中间操作的情况下执行所述操作。
4.根据权利要求1所述的设备,其中所述计算装置被进一步配置成在没有从所述计算装置外部的电路系统接收到中间命令的情况下执行所述操作。
5.根据权利要求1所述的设备,其中所述操作数包括长度为32位或更长的位串。
6.根据权利要求1到5中任一权利要求所述的设备,其中所述计算装置是第一计算装置,并且其中所述第一计算装置耦接到第二计算装置,并且其中所述第一计算装置被配置成:
确定对应于扩展存储器操作的所述操作数未存储在所述第一计算装置的所述存储器资源中;
响应于确定所述操作数未存储在所述第一计算装置的所述存储器资源中而确定所述操作数存储在对应于所述第二计算装置的存储器资源中;
向所述第二装置发送命令,以发起使用存储在第二计算装置的所述存储器资源中的所述操作数来执行所述操作;并且
由所述第二计算装置使用存储在所述第二计算装置的所述存储器资源中的所述操作数来执行所述操作。
7.根据权利要求6所述的设备,其中所述第一计算装置被配置成确定所述操作数存储在对应于所述第二计算装置的存储器资源中并且将所述命令发送到所述第二计算装置,以发起在没有从所述计算装置外部的电路系统接收到中间命令的情况下执行所述操作,并且
其中所述第二计算装置被配置成在不存在继发起使用存储在第二计算装置的所述存储器资源中的所述操作数执行所述操作的所述命令之后的命令的情况下,使用存储在所述第二计算装置的所述存储器资源中的所述操作数来执行所述操作。
8.根据权利要求1到5中任一权利要求所述的设备,其中所述计算装置被配置成将所述操作的结果存储于在执行所述操作之前存储所述操作数的所述存储器资源的地址位置中。
9.一种方法,其包括:
由耦接到多个计算装置的控制器接收发起执行操作的命令,所述多个计算装置中的每个计算装置彼此耦接并且每个计算装置包括处理单元和被配置为所述处理单元的高速缓存的存储器阵列,所述操作包括利用所述多个计算装置中的特定计算装置的所述处理单元对数据执行操作;
由所述控制器确定所述多个计算装置中的所述特定计算装置是否存储与由所述命令指示的所述操作相对应的操作数;
响应于确定所述特定计算装置存储所述操作数而由所述特定计算装置对所述数据执行所述操作。
10.根据权利要求9所述的方法,其中所述命令包括与所述特定计算装置的所述存储器阵列中的位置相对应的地址。
11.根据权利要求10所述的方法,其进一步包括将所述操作的结果存储在与所述特定计算装置中的所述位置相对应的所述地址中。
12.根据权利要求9所述的方法,其进一步包括:
由所述控制器确定与执行所述操作相对应的所述操作数未由所述特定计算装置存储;
由所述控制器确定与执行所述操作相对应的所述操作数存储在耦接到所述多个计算装置的存储器装置中;
从所述存储器装置检索与执行所述操作相对应的所述操作数;
使与执行所述操作相对应的所述操作数存储在所述多个计算装置中的至少一个计算装置中;以及
引起使用所述至少一个计算装置执行所述操作。
13.根据权利要求9所述的方法,其中执行扩展存储器操作进一步包括在没有从能够耦接到所述多个计算装置的主机接收到主机命令的情况下,由所述特定计算装置执行所述扩展存储器操作。
14.根据权利要求9所述的方法,其进一步包括:
确定至少一个子操作将作为所述操作的一部分被执行;
向不同于所述特定计算装置的计算装置发送命令,以引起执行所述子操作;以及
使用不同于所述特定计算装置的所述计算装置来执行所述子操作作为执行所述操作的一部分。
15.根据权利要求9到14中任一权利要求所述的方法,其进一步包括响应于所述扩展存储器操作的完成而向能够耦接到所述多个计算装置的主机发送通知。
16.一种系统,其包括:
主机;
控制器,所述控制器耦接到所述主机和至少一个存储器装置,所述存储控制器包括:
子控制器;
通信子系统;以及
多个计算装置,所述多个计算装置耦接到所述子控制器和所述通信子系统,其中每个计算装置包括相应的存储器资源和处理单元,并且其中所述多个计算装置中的第一计算装置被配置成:
接收执行操作的主机命令,所述操作包括利用所述第一计算装置的所述处理单元对数据执行操作,其中所述主机命令包含与对应于所述多个计算装置中的特定计算装置的存储器资源相关联的地址;
确定由所述主机命令指定的所述地址对应于所述第一计算装置的存储器资源中的位置;并且
响应于确定由所述命令指定的所述地址对应于所述第一计算装置的所述存储器资源中的所述位置而使用存储在由所述主机命令指定的所述地址处的所述第一计算装置的所述存储器资源中的操作数来执行所述操作。
17.根据权利要求16所述的系统,其中所述第一计算装置被进一步配置成在不存在继所述主机命令之后的命令的情况下执行所述操作。
18.根据权利要求16所述的系统,其中所述多个计算装置中的所述第一计算装置被进一步配置成:
确定由所述主机命令指定的所述地址对应于所述多个计算装置中的第二计算装置的存储器资源中的位置;
向所述第二计算装置发送命令,以发起使用存储在由所述命令指定的所述地址处的所述第二计算装置的所述存储器资源中的操作数来执行所述扩展存储器操作;并且
使用所述第二计算装置、使用存储在由所述命令指定的所述地址处的所述第二计算装置的所述存储器资源中的所述操作数来执行所述操作。
19.根据权利要求18所述的系统,其中所述多个计算装置中的所述第一计算装置被进一步配置成通过所述通信子系统向所述第二计算装置发送所述命令。
20.根据权利要求18所述的系统,其中所述第二计算装置被进一步配置成在不存在继所述命令之后的命令的情况下执行所述操作。
21.根据权利要求16所述的系统,其中所述第一计算装置被进一步配置成:
确定至少一个子操作将作为所述操作的一部分被执行;
向所述多个计算装置中的第二计算装置发送命令,以引起执行所述子操作;并且
使用所述第二计算装置执行所述子操作作为执行所述操作的一部分。
22.根据权利要求21所述的系统,其中所述第二计算装置被进一步配置成在没有从所述主机接收到命令的情况下执行所述子操作。
23.根据权利要求21所述的系统,其中所述第二计算装置被进一步配置成向所述第一计算装置发送所述子操作的结果,并且其中所述第一计算装置被进一步配置成在执行所述操作时使用所述子操作的所述结果。
24.根据权利要求16所述的系统,其进一步包括耦接到所述控制器的存储器装置,其中所述子控制器被配置成对由所述存储器装置存储的数据执行读取、写入、复制、擦除和纠错操作。
25.根据权利要求16到24中任一权利要求所述的系统,其中所述第一计算装置被进一步配置成将所述操作的结果存储在与由所述主机命令指定的所述地址相对应的所述第一计算装置的所述存储器资源中的所述位置中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/366,774 US10983795B2 (en) | 2019-03-27 | 2019-03-27 | Extended memory operations |
US16/366,774 | 2019-03-27 | ||
PCT/US2020/015293 WO2020197620A1 (en) | 2019-03-27 | 2020-01-28 | Extended memory operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113490915A true CN113490915A (zh) | 2021-10-08 |
Family
ID=72607740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080016964.9A Withdrawn CN113490915A (zh) | 2019-03-27 | 2020-01-28 | 扩展存储器操作 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10983795B2 (zh) |
EP (1) | EP3948526A4 (zh) |
KR (1) | KR20210134048A (zh) |
CN (1) | CN113490915A (zh) |
WO (1) | WO2020197620A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11327802B2 (en) * | 2019-07-31 | 2022-05-10 | Microsoft Technology Licensing, Llc | System and method for exporting logical object metadata |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5129093A (en) * | 1987-11-18 | 1992-07-07 | Hitachi, Ltd. | Method and apparatus for executing an operation request signal in a loosely coupled parallel computer having processor elements capable of updating memory contents and minimizing exclusive control of sharable distributed memories |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
US20140176187A1 (en) * | 2012-12-23 | 2014-06-26 | Advanced Micro Devices, Inc. | Die-stacked memory device with reconfigurable logic |
CN106471485A (zh) * | 2014-06-02 | 2017-03-01 | 美光科技公司 | 用于在可扩展存储器系统协议中重新排序数据包传输的系统及方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7254696B2 (en) | 2002-12-12 | 2007-08-07 | Alacritech, Inc. | Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests |
US8332580B2 (en) * | 2008-04-02 | 2012-12-11 | Zikbit Ltd. | System, method and apparatus for memory with embedded associative section for computations |
US20100017649A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation | Data storage system with wear-leveling algorithm |
US8438455B2 (en) | 2008-12-31 | 2013-05-07 | Intel Corporation | Error correction in a solid state disk |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
US8683135B2 (en) | 2010-10-31 | 2014-03-25 | Apple Inc. | Prefetch instruction that ignores a cache hit |
US9104532B2 (en) * | 2012-12-14 | 2015-08-11 | International Business Machines Corporation | Sequential location accesses in an active memory device |
US9009171B1 (en) | 2014-05-02 | 2015-04-14 | Palantir Technologies Inc. | Systems and methods for active column filtering |
US9477295B2 (en) | 2014-05-15 | 2016-10-25 | Dell Products, L.P. | Non-volatile memory express (NVMe) device power management |
US9003109B1 (en) | 2014-05-29 | 2015-04-07 | SanDisk Technologies, Inc. | System and method for distributed computing in non-volatile memory |
US20150371684A1 (en) | 2014-06-18 | 2015-12-24 | NXGN Data, Inc. | Ultra high capacity ssd |
WO2016126478A1 (en) * | 2015-02-06 | 2016-08-11 | Micron Technology, Inc. | Apparatuses and methods for memory device as a store for program instructions |
US10372358B2 (en) | 2015-11-16 | 2019-08-06 | International Business Machines Corporation | Access processor |
US10114795B2 (en) * | 2016-12-30 | 2018-10-30 | Western Digital Technologies, Inc. | Processor in non-volatile storage memory |
US10909037B2 (en) | 2017-04-21 | 2021-02-02 | Intel Corpor Ation | Optimizing memory address compression |
-
2019
- 2019-03-27 US US16/366,774 patent/US10983795B2/en active Active
-
2020
- 2020-01-28 KR KR1020217033925A patent/KR20210134048A/ko not_active Application Discontinuation
- 2020-01-28 EP EP20777539.6A patent/EP3948526A4/en not_active Withdrawn
- 2020-01-28 WO PCT/US2020/015293 patent/WO2020197620A1/en unknown
- 2020-01-28 CN CN202080016964.9A patent/CN113490915A/zh not_active Withdrawn
-
2021
- 2021-03-25 US US17/212,330 patent/US11579882B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5129093A (en) * | 1987-11-18 | 1992-07-07 | Hitachi, Ltd. | Method and apparatus for executing an operation request signal in a loosely coupled parallel computer having processor elements capable of updating memory contents and minimizing exclusive control of sharable distributed memories |
CN102124443A (zh) * | 2008-08-15 | 2011-07-13 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
US20140176187A1 (en) * | 2012-12-23 | 2014-06-26 | Advanced Micro Devices, Inc. | Die-stacked memory device with reconfigurable logic |
CN106471485A (zh) * | 2014-06-02 | 2017-03-01 | 美光科技公司 | 用于在可扩展存储器系统协议中重新排序数据包传输的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US10983795B2 (en) | 2021-04-20 |
KR20210134048A (ko) | 2021-11-08 |
WO2020197620A1 (en) | 2020-10-01 |
EP3948526A4 (en) | 2022-12-14 |
US20210208890A1 (en) | 2021-07-08 |
EP3948526A1 (en) | 2022-02-09 |
US11579882B2 (en) | 2023-02-14 |
US20200310810A1 (en) | 2020-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102288830B1 (ko) | 텐서 메모리 액세스를 촉진할 수 있는 메모리 디바이스 및 방법 | |
US11907814B2 (en) | Data path for GPU machine learning training with key value SSD | |
CN113994314A (zh) | 扩展存储器接口 | |
US20240134541A1 (en) | Storage device operation orchestration | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
CN113900710A (zh) | 扩展存储器组件 | |
US11579882B2 (en) | Extended memory operations | |
CN114341816A (zh) | 三层层次型存储器系统 | |
CN113227956B (zh) | 计算瓦片 | |
CN117296033A (zh) | 用于半导体装置的可调定时器组件 | |
CN114258528A (zh) | 阶层式存储器设备 | |
CN114258534B (zh) | 阶层式存储器系统 | |
CN114127852B (zh) | 扩展存储器接口 | |
CN114303124B (zh) | 分级存储器设备 | |
CN114341818B (zh) | 分级存储器设备 | |
KR20220034939A (ko) | 메모리에서 추론 | |
CN114270311A (zh) | 分级存储器系统 | |
CN113851168A (zh) | 扩展存储器架构 | |
CN114270442A (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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20211008 |