CN113900710B - 扩展存储器组件 - Google Patents

扩展存储器组件 Download PDF

Info

Publication number
CN113900710B
CN113900710B CN202110670361.7A CN202110670361A CN113900710B CN 113900710 B CN113900710 B CN 113900710B CN 202110670361 A CN202110670361 A CN 202110670361A CN 113900710 B CN113900710 B CN 113900710B
Authority
CN
China
Prior art keywords
memory
microcode
computing devices
data
computing device
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.)
Active
Application number
CN202110670361.7A
Other languages
English (en)
Other versions
CN113900710A (zh
Inventor
V·S·拉梅什
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micron Technology Inc
Original Assignee
Micron Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micron Technology Inc filed Critical Micron Technology Inc
Publication of CN113900710A publication Critical patent/CN113900710A/zh
Application granted granted Critical
Publication of CN113900710B publication Critical patent/CN113900710B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

描述与扩展存储器微代码组件相关的用于执行扩展存储器操作的系统、设备及方法。一种实例设备可包含多个计算装置。所述计算装置中的每一者可包含处理单元及存储器阵列。所述实例设备可包含耦合到所述多个计算装置中的每一者且各自包括微代码指令集的多个微代码组件。所述实例设备可进一步包含耦合到主机及所述多个计算装置中的每一者的通信子系统。所述多个计算装置中的每一者可经配置以从所述主机接收请求、检索所述微代码指令集中的至少一者、传送命令及所述微代码指令集中的所述至少一者、及接收执行所述操作的结果。

Description

扩展存储器组件
技术领域
本公开大体上涉及半导体存储器及方法,且更特定来说,涉及用于扩展存储器组件的设备、系统及方法。
背景技术
存储器装置通常被提供为计算机或其它电子系统中的内部半导体集成电路。存在许多不同类型的存储器,包含易失性存储器及非易失性存储器。易失性存储器可能需要电力来维持其数据(例如,主机数据、错误数据等)且包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)及晶闸管随机存取存储器(TRAM)等。非易失性存储器可通过在不供电时保持所存储的数据提供持久性数据且可包含NAND快闪存储器、NOR快闪存储器及电阻可变存储器,例如相变随机存取存储器(PCRAM)、电阻性随机存取存储器(RRAM)及磁阻随机存取存储器(MRAM),例如自旋力矩转移随机存取存储器(STT RAM)等。
存储器装置可经耦合到主机(例如主机计算装置)以存储数据、命令及/或指令以在计算机或电子系统正操作时供主机使用。举例来说,数据、命令及/或指令可在计算或其它电子系统的操作期间在主机与存储器装置之间传送。
发明内容
描述一种扩展存储器组件的设备。在一些实例中,所述设备可包括:多个计算装置,其各自包括:处理单元,其经配置以对数据块执行操作;及存储器阵列,其经配置为每一相应处理单元的高速缓存;多个微代码组件,其耦合到所述多个计算装置中的每一者且各自包括微代码指令集;及通信子系统,其耦合到主机及所述多个计算装置中的每一者;其中所述多个计算装置中的每一者经配置以:从所述主机接收执行操作的请求;检索所述微代码指令集中的至少一者;传送命令及所述微代码指令集中的所述至少一者来执行所述操作的至少一部分;及接收执行所述操作的结果。
描述一种扩展存储器组件的设备。在一些实例中,所述设备可包括:多个计算装置,其各自包括:处理单元,其经配置以对数据块执行操作;及存储器阵列,其经配置为每一相应处理单元的高速缓存;多个微代码组件,其耦合到所述多个计算装置中的每一者且各自包括微代码指令集;且包括耦合到所述多个计算装置中的每一者的多个通信子系统,其中所述多个通信子系统中的每一者经耦合到至少一个硬件加速器;其中所述多个计算装置中的每一者经配置以:从所述主机接收执行操作的请求;从所述微代码组件检索所述微代码指令集中的至少一者;经由所述多个通信子系统中的至少一者传送命令及所述微代码指令集中的所述至少一者以使用所述至少一个硬件加速器执行所述操作的至少一部分;及从所述至少一个硬件加速器接收执行所述操作的结果。
描述一种扩展存储器组件的系统。在一些实例中,所述系统可包括:多个计算装置,其各自包括:处理单元,其经配置以对数据块执行操作;及存储器阵列,其经配置为每一相应处理单元的高速缓存;多个微代码组件,其各自耦合到所述多个计算装置中的相应者且各自存储微代码指令集;第一通信子系统,其耦合到主机及所述多个计算装置中的每一者;及多个第二通信子系统,其耦合到所述多个计算装置中的每一者,其中所述多个第二通信子系统中的每一者经耦合到至少一个硬件加速器;及非易失性存储器装置,其耦合到所述多个第二通信子系统中的至少一者;其中所述多个计算装置中的每一者经配置以:从所述主机接收执行操作的请求,其中所述请求包括命令及所述微代码组件中的至少一者内的用以存取微代码指令的位置的指示;存取所述微代码组件中的所述至少一者内的所述位置处的所述微代码指令;及经由所述多个第二通信子系统中的一者将执行所述操作的至少一部分的所述命令及所述经存取微代码指令发送到所述至少一个硬件加速器;及从所述至少一个硬件加速器接收执行所述操作的所述部分的结果。
描述一种用于扩展存储器组件的方法。在一些实例中,所述方法可包括:经由第一通信子系统将命令从主机传送到多个计算装置中的至少一者,其中所述命令包括包含用于执行操作的微代码指令的耦合到所述多个计算装置中的所述至少一者的微代码组件内的位置的指示;存取所述微代码组件中的所述微代码指令;经由第二通信子系统将与所述命令相关联的数据块从存储器装置传送到所述多个计算装置中的所述至少一者;通过响应于所述命令及所述数据块被所述多个计算装置中的所述至少一者接收对所述数据块执行所述微代码指令来由所述多个计算装置中的所述至少一者执行操作;及经由所述第一通信子系统将所述操作的结果传送到所述主机。
附图说明
图1是根据本公开的数个实施例的呈包含包括第一通信子系统、第二多个通信子系统及多个存储器装置的设备的计算系统的形式的功能框图。
图2A是根据本公开的数个实施例的呈包含包括第一多个通信子系统、第二多个通信子系统及多个存储器装置的设备的计算系统的形式的又另一功能框图。
图2B是根据本公开的数个实施例的呈包含包括通信子系统、多个计算装置及多个微代码组件的设备的计算系统的形式的又另一功能框图。
图3是根据本公开的数个实施例的呈包含包括计算核心、多个通信子系统及多个存储器装置的设备的计算系统的形式的又另一功能框图。
图4是根据本公开的数个实施例的呈包含数个端口的计算核心的设备的形式的功能框图。
图5是表示根据本公开的数个实施例的对应于扩展存储器架构的实例方法的流程图。
具体实施方式
描述与用于执行扩展存储器操作的扩展存储器微代码组件相关的系统、设备及方法。一种实例设备可包含多个计算装置。所述计算装置中的每一者可包含:处理单元,其经配置以对数据块执行操作;及存储器阵列,其经配置为每一相应处理单元的高速缓存。所述实例设备可包含耦合到所述多个计算装置中的每一者且各自包括微代码指令集的多个微代码组件。所述实例设备可进一步包含耦合到主机及所述多个计算装置中的每一者的通信子系统。所述多个计算装置中的每一者可经配置以从主机接收执行操作的请求、检索所述微代码指令集中的至少一者、传送命令及所述微代码指令集中的所述至少一者来执行所述操作的至少一部分、及接收执行所述操作的结果。
扩展存储器架构可传送执行由单个地址及操作数指定的操作的指令且可由包含处理单元及存储器资源的计算装置执行。计算装置可在无需接收介入命令的情况下对流式传输通过计算装置的数据执行扩展存储器操作。在实例中,计算装置经配置以接收执行包括使用计算装置的处理单元对数据执行操作的操作的命令及确定对应于所述操作的操作数被存储于存储器资源中。
如下文将进一步描述,执行操作的命令可包含用以执行操作的微代码指令的位置的指示。微代码指令的位置可在扩展存储器组件内,所述扩展存储器组件也称为微代码组件。微代码组件可包含可由计算装置存取以便执行操作的多个微代码指令。计算装置可使用存储于存储器资源中的操作数及/或存储于微代码组件中的微代码指令进一步执行操作。以此方式,计算装置可节省存储空间且可卸载微代码指令的存取使得越来越多的计算装置可更高效地存取更多微代码指令,而不会抑制计算装置的操作。如本文中使用,微代码指令是指在处理装置中实施更高级机器代码指令或内部状态机排序且将组织层插置于中央处理单元(CPU)硬件与程序设计员可见的指令集架构之间的硬件级指令层。微代码可将机器指令、状态机器数据或其它输入转译成详细的电路级操作序列。此外,微代码可分离机器指令与底层电子器件使得可更自由地设计及更改指令。
计算装置可为能够支持全功能的操作系统(例如Linux)的RISC-V应用程序处理器核心。此特定核心可结合例如物联网(IoT)节点及网关、存储及/或联网等的应用来使用。核心可经耦合到数个端口,例如存储器端口、系统端口、外围端口及/或前端口。作为实例,存储器端口可与存储器装置通信,系统端口可与芯片上加速器或“快速”SRAM通信,外围端口可与芯片外串行端口通信,及/或前端口可与主机接口通信,如下文将结合图4进一步描述。
以此方式,第一通信子系统可用于通过通信子系统(例如选择计算装置的存储器端口的多路复用器)引导来自那个特定端口(例如,那个特定存储器端口)的数据且通过额外通信子系统(例如,例如AXI互连接口等的接口)将其传送到存储器控制器,所述存储器控制器可将数据传送到存储器装置(例如DDR存储器、三维(3-D)交叉点存储器、NAND存储器等)。在实例中,AXI互连接口可符合来自
Figure BDA0003118949810000042
Figure BDA0003118949810000041
AXI版本4规格,包含AXI4-Lite控制寄存器接口子集。
如本文中使用,“扩展存储器操作”是指可由单个地址(例如存储器地址)及操作数(例如64位操作数)指定的存储器操作。操作数可表示为多个位(例如位串或一串位)。然而,实施例不限于由64位操作数指定的操作,且操作可由比64位更大(例如128位等)或更小(例如32位)的操作数指定。如本文中描述,可存取以执行扩展存储器操作的有效地址空间是主机计算系统或存储控制器可存取的存储器装置或文件系统的大小。
扩展存储器操作可包含可由处理装置(例如,由例如核心110、210、310、410的处理装置或图4中明确展示为410的核心计算装置)执行的指令及/或操作。核心的实例可包含可执行指令来执行各种计算任务的精简指令集计算装置或其它硬件处理装置。在一些实施例中,执行扩展存储器操作可包含检索存储于计算装置的存储器资源中的数据及/或指令及/或存储于微代码组件中的微代码指令、在计算装置110内执行操作(例如,无需将数据或指令传送到计算装置外部的电路系统)及将扩展存储器操作的结果存储于计算装置110的存储器资源或次级存储装置中(例如,存储于例如在本文中图1中说明的存储器装置116-1、116-2的存储器装置中)。在一些实施例中,特定计算装置对微代码组件的仅一部分可具有有限的存取。在此例子中,微代码指令的仅一部分可由对应计算装置存取。对微代码组件的存取可为基于费用或支付结构、数据限制或约束、阈值参数及/或额外限制。
扩展存储器操作的非限制性实例可包含浮点加法累加、32位复数运算、平方根地址(SQRT(addr))运算、转换运算(例如,浮点与整数格式之间的转换及/或浮点与假定格式之间的转换)、将数据归一化为固定格式、绝对值运算等。在一些实施例中,扩展存储器操作可包含由计算装置执行的原位更新的操作(例如,其中扩展存储器操作的结果被存储在其中用于执行扩展存储器操作的操作数在扩展存储器操作执行之前被存储的地址处)以及其中先前存储的数据用于确定新数据的操作(例如,其中存储在特定地址处的操作数用于产生盖写存储操作数的特定地址的新数据的操作)。
因此,在一些实施例中,扩展存储器操作的执行可减轻或消除锁定或互斥操作,这是因为扩展存储器操作可在计算装置内执行,这可减少多线程执行之间的争用。在扩展存储器操作的执行期间减少或消除对线程执行锁定或互斥操作可带来例如计算系统的性能的提高,这是因为扩展存储器操作可在同一计算装置内并行执行或跨彼此通信的计算装置中的两者或更多者执行。另外,在一些实施例中,当扩展存储器操作的结果从执行了操作的计算装置传送到主机时,本文中描述的扩展存储器操作可减轻或消除锁定或互斥操作。
存储器装置可用于将重要或关键数据存储于计算装置中且可经由至少一个扩展存储器架构在与计算装置相关联的主机之间传送此类数据。然而,随着由存储器装置存储的数据的大小及数量增加,将数据传送到主机及从主机传送数据会可能变得很耗时且是资源密集的。举例来说,当主机请求执行使用大数据块的存储器操作时,在满足请求时消耗的时间量及/或资源量可与和数据块相关联的数据的大小及/或数量成比例地增加。
随着存储器装置的存储能力增加,这些效应可变得更加显著,这是由于越来越多的数据能够被存储器装置存储且因此可用于存储器操作中。另外,因为数据可被处理(例如,可对数据执行存储器操作),所以随着能够被存储于存储器装置中的数据量增加,可被处理的数据量也可增加。此可导致处理时间增加及/或处理资源消耗增加,这在执行特定类型的存储器操作时可能被加剧。
为了减轻这些及其它问题,本文中的实施例可允许使用存储器装置、一或多个计算装置及/或存储器阵列及第一多个通信子系统(例如PCIe接口、PCIe XDMA接口、AXI互连接口等)及第二多个子系统(例如,接口,例如AXI互连件)来执行扩展存储器操作以便更高效地将数据从计算装置传送到存储器装置及/或从计算装置传送到主机,且反之亦然。此外,通过经由微代码组件卸载到微代码指令及控制对微代码指令的存取,额外存储能力在计算装置上可用于进行数据处理。
在一些实施例中,数据可通过绕过多个计算装置经由这些通信子系统被传送到多个存储器装置。在一些实施例中,数据可通过传递通过多个计算装置中的至少一者经由这些通信子系统传送。取决于数据传送的路线,接口中的每一者可具有唯一速度。如下文将进一步描述,当绕过多个计算装置时,数据可以比在数据被传递通过多个计算装置中的至少一者时更高的速率进行传送。此外,微代码指令可由对应计算装置直接存取,或微代码指令可通过额外接口传送且被传送到主机、到额外计算装置及/或到存储器装置。
在一些方法中,执行存储器操作可能需要多个时钟循环及/或对计算系统的存储器(例如存储器装置及/或存储器阵列)的多个函数调用。相比之下,本文中的实施例可允许执行扩展存储器操作,其中存储器操作使用单个函数调用或命令执行。举例来说,与其中至少一个命令及/或函数调用用于加载将对其进行操作的数据且接着利用用以存储已经对其进行操作的数据的至少一个后续函数调用或命令的方法相比,本文中的实施例可允许使用相较于其它方法更少的函数调用或命令来执行存储器操作。此外,计算系统的计算装置可经由第一通信子系统(例如PCIe接口、多路复用器、芯片上控制网络等)及/或第二通信子系统(例如,接口、例如AXI互连件的互连件等)接收执行存储器操作的请求且可经由所述第一通信子系统及所述第二通信子系统从存储器装置接收用于执行所请求存储器操作的数据块。虽然协力地描述了第一及第二通信子系统,但实施例不限于此。作为实例,对数据的请求及/或数据块的接收可单独经由第一通信子系统或单独经由第二通信子系统。
通过减少用于执行存储器操作的函数调用及/或命令的数目,在执行此类操作时消耗的时间量及/或在执行此类操作时消耗的计算资源量可相较于其中需要多个函数调用及/或命令来执行存储器操作的方法有所减少。此外,本文中的实施例可减少存储器装置及/或存储器阵列内的数据移动,这是因为在执行存储器操作之前可无需将数据加载到特定位置中。此相较于一些方法可减少处理时间,尤其是在其中大量数据经受存储器操作的案例中。
此外,本文中描述的扩展存储器操作可允许相较于一些方法大得多的类型字段集。举例来说,由主机执行以请求使用存储器装置(例如存储器子系统)中的数据执行操作的指令可包含类型、地址及数据字段。指令可经由第一通信子系统(例如多路复用器)及第二通信子系统(例如接口)被发送到多个计算装置中的至少一者,且数据可经由第一及/或第二通信子系统从存储器装置传送。响应于接收到执行特定类型的操作的命令,特定微代码指令可用于执行特定操作。微代码指令的位置可与命令一起发送以便在耦合到接收所述命令的计算装置的微代码组件中进行存取。
类型字段可对应于被请求的特定操作,地址可对应于其中存储将用于执行操作的数据的地址,且数据字段可对应于将用于执行操作的数据(例如操作数)。在一些方法中,类型字段可限于不同大小的读取及/或写入以及一些简单的整数累加运算。相比之下,本文中的实施例可允许利用更广范的类型字段,这是因为在执行扩展存储器操作时可使用的有效地址空间可对应于存储器装置的大小。通过扩展可用于执行操作的地址空间,本文中的实施例因此可允许更广范围的类型字段,且因此,可执行比在不允许作为存储器装置的大小的有效地址空间的方法中更广泛的存储器操作。
在本公开的以下详细描述中,参考形成本公开的一部分且通过说明展示可如何实践本公开的一或多个实施例的附图。足够详细地描述这些实施例以使所属领域的一般技术人员能实践本公开的实施例,且应理解,可利用其它实施例且可在不背离本公开的范围的情况下做出过程变化、电变化及/或结构变化。
如本文中使用,例如特定来说关于图中的参考数字的“X”、“Y”、“N”、“M”、“A”、“B”、“C”、“D”等的标志符指示可包含某个数目的如此指定的特定特征。还应理解,本文使用的术语仅出于描绘特定实施例的目的,且不希望具限制性。如本文使用,单数形式“一(a/an)”及“所述”可包含单数及复数参照物两者,除非上下文另外明确指示。另外,“数个…”、“…中的至少一者”及“…中的一或多者”(例如数个存储器存储体)可指代一或多个存储器存储体,而“多个…”希望指代一个以上此类事物。此外,词“可(can/may)”贯穿此申请案以准许意义(即,具有可能性、能够)而非以强制意义(即,必须)使用。术语“包含”及其派生词意味着“包含(但不限于)”。视上下文而定,术语“耦合(coupled/coupling)”意味着直接或间接物理连接或用于对命令及/或数据的存取及命令及/或数据的移动(传输)。视上下文而定,术语“数据”及“数据值”在本文中互换地使用且可具有相同含义。
本文的图遵循编号惯例,其中第一数字或前几个数字对应于图号且剩余数字识别图中的元件或组件。不同图之间的类似元件或组件可通过使用类似数字来识别。举例来说,104可指代图1中的元件“04”,且类似元件可被指代为图2A中的204。一群组或多个类似元件或组件在本文中一般用单个元件号来指代。举例来说,多个参考元件106-1、106-2、106-3可统称为106。如应了解,本文各种实施例中展示的元件可经添加、交换及/或消除以便提供本公开的数个额外实施例。另外,图中提供的元件的比例及/或相对尺度希望说明本公开的某些实施例且不应以限制意义来理解。
图1是根据本公开的数个实施例的呈包含包括第一通信子系统(“接口”)108、第二多个通信子系统(“接口”)106及多个存储器装置116的设备104的计算系统100的形式的功能框图。如本文中使用,“设备”可指代(但不限于)各种结构或结构的组合中的任一者,例如(举例来说)电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或一或多个系统。在图1中说明的实施例中,存储器装置116-1、…、116-N可包含一或多个存储器模块(例如双倍数据速率(DDR)存储器、三维(3D)交叉点存储器、NAND存储器、单列直插式存储器模块、双列直插式存储器模块等)。存储器装置161-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交叉点(3D XP)存储器装置等;或其组合。3D XP非易失性存储器阵列可基于体电阻变化连同可堆叠交叉栅格式数据存取阵列执行位存储。另外,与许多基于快闪的存储器相比,3D XP非易失性存储器可执行原位写入操作,其中可在先前未擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。
如图1中说明,在替代例中可称为“计算装置”(下文统称为多个计算装置110)的多个核心(“核心”)110-1、110-2可经耦合到通信子系统(例如外围组件互连高速(PCIe)接口、PCIe XDMA接口等)108。通信子系统108可包含经配置以在本文中描述的操作的执行期间将资源从主机102分配及取消分配到计算装置110或分配及取消分配资源到主机102的电路系统及/或逻辑。举例来说,电路系统及/或逻辑可在本文中描述的扩展存储器操作的执行期间将数据请求传达到计算装置110或分配及/或取消分配资源到计算装置110。
计算装置110中的每一者可经耦合到对应微代码组件(“MC”)117。举例来说,计算装置110-1可经耦合到微代码组件117-1,且计算装置110-2可经耦合到微代码组件117-2。微代码组件117可为微代码表、SRAM、存储器存储组件等。微代码组件可存储用于执行特定操作来确定特定结果的微代码指令。
微代码组件117中的每一者可经耦合到通信子系统108。以此方式,计算装置110可存取对应微代码组件117,且通信子系统108也可存取对应微代码组件117。此允许由至少一个计算装置110直接存取微代码组件117,且借此直接存取存储于微代码组件117中的微代码指令且还允许由额外计算装置通过通信子系统108间接存取微代码组件117。
通信子系统108可直接经耦合到多个通信子系统106(例如,例如互连接口的接口)中的至少一者106-1。多个通信子系统106中的每一者可经耦合到控制器112、加速器114、SRAM(例如快速SRAM)118及外围组件120中的对应者。在一个实例中,多个通信子系统106中的第一者106-1可经耦合到控制器112。在此实例中,接口106-1可为存储器接口。控制器112可经由数个通道107-1、…、107-N经耦合到数个存储器装置116-1、…、116-N。
其次,在此实例中且如在图1中说明,多个通信子系统106中的第二者106-2可经耦合到加速器114及SRAM 118。芯片上加速器114可用于执行数个假定操作及/或用于与现场可编程门阵列(FPGA)上包含所描述的数个组件的内部SRAM通信。作为实例,设备104的组件可在FPGA上。
再次,在此实例中,多个通信子系统106中的第三者106-3可经耦合到外围组件120。外围组件120可为通用输入/输出(GPID)LED或通用异步接收器/发射器(UART)中的一者。GPID LED可进一步经耦合到额外LED,且UART可进一步经耦合到串行端口。多个通信子系统106可经由数个AXI总线经耦合到每一对应组件。多个通信子系统106中的第三者106-3可用于通过外围组件120或芯片外串行端口118传送芯片外数据。
主机102可为主机系统,例如个人膝上型计算机、桌面计算机、数码相机、智能电话、存储卡阅读器及/或物联网启用装置以及各种其它类型的主机,且可包含存储器存取装置,例如处理器(或处理装置)。所属领域的一般技术人员应了解,“处理器”可意指一或多个处理器,例如并行处理系统、数个协处理器等。主机102可包含系统母板及/或背板且可包含数个处理资源(例如一或多个处理器、微处理器或某种其它类型的控制电路系统)。在一些实施例中,主机可包含主机控制器101,其可经配置以通过例如产生及传送命令到主机控制器以致使执行例如扩展存储器操作的操作来控制主机102的至少一些操作。主机控制器101可包含可经配置以控制主机102的至少一些操作的电路系统(例如硬件)。举例来说,主机控制器101可为专用集成电路(ASIC)、现场可编程门阵列(FPGA)或经配置以控制主机102的至少一些操作的电路系统及/或逻辑的其它组合。主机102可经由通道103/105与主机接口108通信。
系统100可包含单独集成电路或主机102、通信子系统108、多个通信子系统106、控制器112、芯片上加速器114、SRAM 118、外围组件120及/或存储器装置116-1、…、116-N可在同一集成电路上。系统100可为例如服务器系统及/或高性能计算(HPC)系统及/或其一部分。尽管图1中展示的实例说明具有冯·诺依曼(Von Neumann)架构的系统,但本公开的实施例可实施于非冯·诺依曼架构中,其可不包含通常与冯·诺依曼架构相关联的一或多个组件(例如CPU、ALU等)。
控制器112可经配置以请求来自存储器装置116-1、…、116-N中的一或多者的数据块且致使多个计算装置110对所述数据块执行操作(例如扩展存储器操作)。为了执行操作,计算装置110可存取微代码组件117以存取至少一个微代码指令来执行操作。操作可经执行以评估可由与数据块相关联的单个地址及一或多个操作数指定的功能。控制器112可进一步经配置以致使扩展存储器操作的结果通过多个通信子系统106被存储于计算装置110-1、…、110-N中的一或多者中及/或被传送到通道(例如通信路径103及/或105)及/或主机102。
在一些实施例中,多个通信子系统106可请求远程命令、起始DMA命令、发送读取/写入位置及/或将起始功能执行命令发送到多个计算装置110中的一者。在一些实施例中,多个通信子系统106可请求将数据块从计算装置110的缓冲器复制到存储器控制器112或存储器装置116的缓冲器。反之亦然,多个通信子系统106中的一者可请求将数据块从存储器控制器112或存储器装置116的缓冲器复制到计算装置110的缓冲器。多个通信子系统106可请求将数据块从主机102的缓冲器复制到计算装置110,或反之亦然,请求将数据块从计算装置110复制到主机102。多个通信子系统106可请求将数据块从存储器控制器112或存储器装置116的缓冲器复制到主机102的缓冲器。反之亦然,多个通信子系统106可请求将数据块从主机102的缓冲器复制到存储器控制器112或存储器装置116的缓冲器。此外,在一些实施例中,多个通信子系统106可请求在计算装置110上执行来自主机的命令。多个通信子系统106可请求在额外计算装置110上执行来自计算装置110的命令。多个通信子系统106可请求在计算装置110上执行来自存储器控制器112的命令。在一些实施例中,多个通信子系统106可包含控制器的至少一部分(未说明)。
在一些实施例中,多个通信子系统106可将数据块(例如直接存储存取(DMA)数据块)从计算装置110传送到存储器装置116(经由存储器控制器112),或反之亦然,可将数据块从媒体装置116传送到计算装置110。多个通信子系统106将数据块(例如DMA块)从计算装置110传送到主机102,或反之亦然,将数据块从主机102传送到计算装置110。此外,多个通信子系统106可将数据块(例如DMA块)从主机102传送到媒体装置116,或反之亦然,将数据块从媒体装置116传送到主机102。同样地,来自微代码组件117的微代码指令可传送到主机或从主机传送、传送到存储器装置116或从存储器装置116传送等。
在一些实施例中,多个通信子系统106可从计算装置110-1、…、110-N接收输出(例如已对其执行了扩展存储器操作的数据)且将来自计算装置110-1、…、110-N的输出传送到设备104的控制器115及/或主机102,且反之亦然。举例来说,多个通信子系统106可经配置以接收已经受计算装置110-1、…、110-N的扩展存储器操作的数据且将对应于扩展存储器操作的结果的数据传送到控制器115及/或主机102。在一些实施例中,多个通信子系统106可包含控制器115的至少一部分。举例来说,多个通信子系统106可包含包括控制器115或其一部分的电路系统。作为实例,控制器115可管理多个核心110及/或可控制设备104内的额外操作及通信。在一些实例中,控制器115可管理核心110-1与核心110-2之间的通信。
存储器控制器112可为“标准”或“虚设”存储器控制器。举例来说,存储器控制器112可经配置以对存储器装置116-1、…、116-N执行简单的操作,例如复制、写入、读取、错误校正等。然而,在一些实施例中,存储器控制器112不对与存储器装置116-1、…、116-N相关联的数据执行处理(例如操纵数据的操作)。举例来说,存储器控制器112可致使执行读取及/或写入操作来经由通信路径107-1、…、107-N从存储器装置116-1、…、116-N读取数据或将数据写入到存储器装置116-1、…、116-N,但存储器控制器112可不对从存储器装置116-1、…、116-N读取的数据或写入到存储器装置116-1、…、116-N的数据执行处理。在一些实施例中,存储器控制器112可为非易失性存储器控制器,尽管实施例不限于此。
在一些实施例中,将通信子系统108耦合到多个通信子系统106中的第一者106-1的第一AXI总线是能够比将通信子系统108耦合到计算装置110-1的第二AXI总线更快地传送数据的AXI总线。作为实例,第一AXI总线可以300MHz的速率传送,而第二AXI总线可以100MHz的速率传送。此外,第一AXI总线可为能够比将计算装置110-1耦合到多个通信子系统106中的一者的第三AXI总线更快地传送数据的AXI总线。另外,第四AXI总线可以类似于第二AXI总线的速率在计算装置110与微代码组件117之间传送数据。第五AXI总线可以比第四及第二AXI总线更快的速率在通信子系统108与微代码组件117之间传送数据。第一AXI总线可能能够以比第五AXI总线更快的速率传送数据。作为实例,第五AXI总线可以250MHz的速率传送。
图1的实施例可包含未说明以便不模糊本公开的实施例的额外电路系统。举例来说,设备104可包含用以锁存经由I/O连接通过I/O电路系统提供的地址信号的地址电路系统。地址信号可由行解码器及列解码器接收及解码以存取存储器装置116-1、…、116-N。所属领域的技术人员应了解,地址输入连接的数目可取决于存储器装置116-1、…、116-N的密度及架构。
在一些实施例中,扩展存储器操作可使用图1中展示的计算系统100通过选择性地将数据(例如文件)存储或映射到计算装置110中来执行。数据可被选择性地存储于计算存储器的地址空间中。在一些实施例中,数据可响应于从主机102接收的命令被选择性地存储或映射于计算装置110中。在其中命令是从主机102接收的实施例中,命令可分别经由与主机102相关联的接口(例如通信路径103及/或105)及经由通信子系统及多个通信子系统108及106传送到计算装置110。接口103/105、通信子系统108及多个通信子系统106可为外围组件互连高速(PCIe)总线、双倍数据速率(DDR)接口、互连接口(例如AXI互连接口)、多路复用器(multiplexer/mux)或其它合适的接口或总线。然而,实施例不限于此。
在其中数据(例如其中将用于执行扩展存储器操作的数据)被映射到计算装置110中的非限制性实例中,主机控制器101可将命令传送到计算装置110以使用映射到计算装置110中的数据启动扩展存储器操作的执行。在一些实施例中,主机控制器101可查找对应于映射到计算装置110中的数据的地址(例如物理地址)且基于所述地址确定地址(且因此,数据)被映射到了哪一计算装置(例如计算装置110-1)。接着,命令可被传送到含有所述地址(且因此,所述数据)的计算装置(例如计算装置110-1)。同样地,命令可与特定微代码指令相关联且可被传送到直接经耦合到存储特定微代码指令的微代码组件(例如微代码组件117-1)的计算装置110(例如110-1)。以此方式,微代码指令到计算装置110-1的传送可尽可能地快。
在一些实施例中,数据可为64位操作数,尽管实施例不限于具有特定大小或长度的操作数。在其中数据是64位操作数的实施例中,一旦主机控制器101基于存储数据的地址将用以启动扩展存储器操作的执行的命令传送到正确的计算装置(例如计算装置110-1),计算装置(例如计算装置110-1)就可使用数据执行扩展存储器操作。
在一些实施例中,计算装置110可跨连续地址空间被单独寻址,这可促进本文中所描述的扩展存储器操作的执行。即,数据存储在其处或数据被映射到其的地址对所有计算装置110来说都是唯一的使得当主机控制器101查找地址时,地址对应于特定计算装置(例如计算装置110-1)中的位置。
举例来说,第一计算装置110-1可具有与其相关联的第一组地址,第二计算装置110-2可具有与其相关联的第二组地址,第三计算装置110-3可具有与其相关联的第三组地址,到可具有与其相关联的第n组地址的第n计算装置(例如计算装置110-N)。即,第一计算装置110-1可具有一组地址0000000到0999999,第二计算装置110-2可具有一组地址1000000到1999999,第三计算装置110-3可具有一组地址2000000到2999999等。应了解,这些地址数字仅是说明性而非限制性的,且可取决于计算装置110的架构及/或大小(例如存储容量)。
作为其中扩展存储器操作包括浮点加法累加运算(FLOATINGPOINT_ADD_ACCUMULATE)的非限制性实例,计算装置110可将目的地地址视作浮点数,及将浮点数添加到计算装置110的地址处存储的自变量及将结果存储回到原始地址中。举例来说,当主机控制器101(或设备控制器115(未展示))启动浮点加法累加扩展存储器操作的执行时,主机查找的计算装置110的地址(例如,计算装置中数据被映射到其的地址)可被视作浮点数,且存储于所述地址中的数据可被视作用于执行扩展存储器操作的操作数。响应于启动扩展存储器操作的命令的接收,数据(例如,在此实例中是操作数)被映射到其的计算装置110可执行加法运算以将数据添加到地址(例如,地址的数值值)并将加法的结果存储回到计算装置110的原始地址中。
在一些实施例中,微代码组件117内的位置可跨连续地址空间被单独寻址,这可促进存取微代码指令以执行本文中所描述的操作。即,微代码指令被存储在其处或操作在微代码组件117内被映射到其处以便被执行的地址对一操作来说可为唯一的使得当计算装置接收到执行操作的命令连同微代码组件117内的位置时,地址对应于存储用于执行命令的特定操作的微代码指令的特定微代码组件117中的位置。
如上文描述,在一些实施例中,此类扩展存储器操作的执行可能仅需要单个命令(例如请求命令)从主机102(例如,从主机控制器101)传送到存储器装置104或从控制器115传送到计算装置110。与一些先前方法相比,此可减少例如多个命令横穿接口103、105的时间量及/或数据(例如操作数)从计算装置110内的一个地址移动到另一地址的时间量、执行操作时耗费的时间量。此外,通过在微代码组件117内提供微代码指令,存取微代码组件117来检索微代码指令而非存取可存储用于执行操作的微代码指令的额外计算装置110可防止额外计算装置110使用资源来传送微代码指令。以此方式,计算装置110可代替地使用资源来执行操作。
另外,根据本公开的扩展存储器操作的执行可进一步减少处理功率量或处理时间量,这是由于与其中操作数在操作执行之前必须被检索且必须从不同位置加载的方法相比,映射到扩展存储器操作在其中执行的计算装置110中的数据可用作用于扩展存储器操作的操作数,及/或数据映射到其的地址可用作用于扩展存储器操作的操作数。即,至少因为本文中的实施例允许跳过操作数的加载,所以计算系统100的性能可相较于加载操作数并随后存储在操作数之间执行的操作的结果的方法有所改进。
此外,在一些实施例中,因为扩展存储器操作可使用地址及存储于所述地址中的数据在计算装置110内执行,且在一些实施例中,因为扩展存储器操作的结果可被存储回到原始地址中,所以在扩展存储器操作的执行期间可放宽或不需要锁定或互斥操作。在扩展存储器操作的执行期间减少或消除对线程执行锁定或互斥操作可带来计算系统100的性能的提高,这是因为扩展存储器操作可在同一计算装置110内或跨计算装置110中的两者或更多者并行执行。
在一些实施例中,计算装置110中的数据的有效映射可包含基地址、段大小及/或长度。基地址可对应于计算装置110中数据映射被存储于其中的地址。段大小可对应于计算系统100可处理的数据量(例如,以字节为单元),且长度可对应于对应于所述数据的位数量。应注意,在一些实施例中,存储于计算装置110中的数据可能无法高速缓存在主机102上。举例来说,扩展存储器操作可以完全在计算装置110内执行,而在扩展存储器操作的执行期间不妨碍或以其它方式将数据传送到主机102或从主机102传送数据。
在其中基地址是4096、段大小是1024且长度是16,386的非限制性实例中,经映射地址7234可在第三段中,第三段可对应于多个计算装置110中的第三计算装置(例如图2A中的计算装置210-3)。在此实例中,主机102及/或通信子系统108及多个通信子系统106可将执行扩展存储器操作的命令(例如请求)转发到第三计算装置210-3。第三计算装置210-3可确定数据是否被存储于第三计算装置210-3的存储器中的经映射地址中。如果数据被存储于经映射地址(例如,第三计算装置210-3中的地址中),那么第三计算装置210-3可使用那些数据执行所请求的扩展存储器操作且可将扩展存储器操作的结果存储回到数据最初被存储于其中的地址中。
在一些实施例中,含有经请求用于扩展存储器操作的执行的数据的计算装置110可由主机控制器101及/或通信子系统108及/或多个通信子系统106确定。举例来说,所有计算装置110都可用的总地址空间的一部分可经分配到每一相应计算装置。因此,主机控制器101及/或通信子系统108及/或多个通信子系统106可具备对应于总地址空间的哪些部分对应于哪些计算装置110的信息且因此可引导相关计算装置110执行扩展存储器操作。在一些实施例中,主机控制器101及/或第二通信子系统106可将对应于相应计算装置110的地址(或地址范围)存储于数据结构(例如表)中,且基于存储于数据结构中的地址将扩展存储器操作的执行引导到计算装置110。
然而,实施例不限于此,且在一些实施例中,主机控制器101及/或多个通信子系统106可确定存储器资源的大小(例如数据量),且基于与每一计算装置110相关联的存储器资源的大小及所有计算装置110都可用的总地址空间确定哪些计算装置110存储将用于执行扩展存储器操作的数据。在其中主机控制器101及/或多个通信子系统106基于所有计算装置110都可用的总地址空间及每一计算装置110可用的存储器资源量确定存储将用于执行扩展存储器操作的数据的计算装置110的实施例中,有可能跨计算装置存储器资源的多个非重叠部分执行扩展存储器操作。
继续上述实例,如果在所请求的地址中没有数据,那么第三计算装置210-3可如在本文中关于图2A更详细描述那样请求数据,且一旦数据被加载到第三计算装置210-3的地址中就执行扩展存储器操作。在一些实施例中,一旦扩展存储器操作被计算装置(例如在此实例中是第三计算装置210-3)完成,及/或可通知主机102及/或可将扩展存储器操作的结果传送到存储器装置116及/或主机102。
在一些实施例中,存储器控制器112可经配置以响应于来自设备104的控制器或主机102的请求从耦合到设备104的存储器装置116-1、…、116-N检索数据块。存储器控制器112随后可致使数据块被传送到计算装置110-1、…、110-N及/或设备控制器。类似地,存储器控制器112可经配置以从计算装置110及/或控制器115接收数据块。存储器控制器112随后可致使数据块被传送到耦合到存储控制器104的存储器装置116。
数据块的大小可为约4千字节(尽管实施例不限于此特定大小)且可响应于由控制器115及/或主机产生且经由第二通信子系统106发送的一或多个命令由计算装置110-1、…、110-N以流式传输方式进行处理。在一些实施例中,数据块可为32位、64位、128位等数据字或数据分块,及/或数据块可对应于将用于执行扩展存储器操作的操作数。
举例来说,如关于图2A更详细描述,因为计算装置110可响应于完成对前一数据块执行扩展存储器操作而对第二数据块执行扩展存储器操作(例如过程),所以数据块可在数据块正被计算装置110处理时被连续流式传输通过计算装置110。在一些实施例中,在没有来自控制器及/或主机102的介入命令的情况下,数据块可依流式传输方式通过计算装置110处理。即,在一些实施例中,控制器115(或主机102)可发出致使计算装置110处理其接收到的数据块的命令,且随后被计算装置110接收的数据块可在没有来自控制器的额外命令的情况下被处理。
在一些实施例中,处理数据块可包含使用数据块执行扩展存储器操作。举例来说,计算装置110-1、…、110-N可响应于经由多个通信子系统106的来自控制器的命令对数据块执行扩展存储器操作来评估一或多个功能、移除非所要数据、提取相关数据或以其它方式结合扩展存储器操作的执行使用数据块。
在其中数据(例如其中将用于执行扩展存储器操作的数据)被映射到计算装置110中的一或多者中的非限制性实例中,控制器可将命令传送到计算装置110以使用映射到计算装置110中的数据启动扩展存储器操作的执行。在一些实施例中,控制器115可查找对应于映射到计算装置110中的数据的地址(例如物理地址)且基于所述地址确定地址(且因此,数据)被映射到了哪一计算装置(例如计算装置110-1)。接着,命令可被传送到含有所述地址(且因此,所述数据)的计算装置(例如计算装置110-1)。在一些实施例中,命令可经由第二通信子系统106被传送到计算装置(例如计算装置110-1)。
控制器115(或主机)可进一步经配置以将分配及/或取消分配计算装置110可用于使用数据块执行扩展存储器操作的资源的命令发送到计算装置110。在一些实施例中,分配及/或取消分配计算装置110可用的资源可包含选择性地启用一些计算装置110同时选择性地停用一些计算装置110。举例来说,如果需要比计算装置110的总数更少的计算装置110来处理数据块,那么控制器115可发送命令到将用于处理数据块的计算装置110以仅启用希望处理数据块的那些计算装置110。
在一些实施例中,控制器115可进一步经配置以发送使由计算装置110执行的操作(例如扩展存储器操作)的执行同步的命令。举例来说,控制器115(及/或主机)可将致使第一计算装置110-1执行第一扩展存储器操作的命令发送到第一计算装置110-1,且控制器115(或主机)可将使用第二计算装置执行第二扩展存储器操作的命令发送到第二计算装置110-2。通过控制器115使由计算装置110执行的操作(例如扩展存储器操作)的执行同步可进一步包含致使计算装置110在特定时间或按特定顺序执行特定操作。
如上文描述,由扩展存储器操作的执行产生的数据可经存储于计算装置110中在扩展存储器操作执行之前数据被存储于其中的原始地址中,然而,在一些实施例中,由扩展存储器操作的执行产生的数据可在扩展存储器操作执行之后经转换成逻辑记录。逻辑记录可包括独立于其物理位置的数据记录。举例来说,逻辑记录可为指向计算装置110中的至少一者中的对应于扩展存储器操作的执行的物理数据存储在其处的地址(例如位置)的数据记录。
在一些实施例中,扩展存储器操作的结果可被存储于计算装置存储器的与在扩展存储器操作执行之前数据被存储于其中的地址相同的地址中。然而,实施例不限于此,且扩展存储器操作的结果可被存储于计算装置存储器的与在扩展存储器操作执行之前数据被存储于其中的地址相同的地址中。在一些实施例中,逻辑记录可指向这些地址位置使得扩展存储器操作的结果可从计算装置110存取且被传送到计算装置110外部的电路系统(例如,传送到主机)。
在一些实施例中,控制器115可直接从存储器控制器112接收数据块及/或可将数据块直接发送到存储器控制器112。此可允许控制器115将未被计算装置110处理的数据块(例如未用于执行扩展存储器操作的数据块)传送到存储器控制器112及从存储器控制器112传送所述数据块。
举例来说,如果控制器115从耦合到存储控制器104的主机102接收到将由耦合到存储控制器104的存储器装置116存储的未经处理数据块,那么控制器115可致使未经处理数据块被传送到存储器控制器112,存储器控制器112又可致使未经处理数据块被传送到耦合到存储控制器104的存储器装置。
类似地,如果主机请求未经处理(例如完整)数据块(例如,未被计算装置110处理的数据块),那么存储器控制器112可致使未经处理数据块被传送到控制器115,控制器115随后可将所述未经处理数据块传送到主机。
图2A是根据本公开的数个实施例的呈包含包括第一多个通信子系统208、第二多个通信子系统206、多个微代码组件217及多个存储器装置216的设备204的计算系统200的形式的功能框图。如本文中使用,“设备”可指代(但不限于)各种结构或结构的组合中的任一者,例如(举例来说)电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或一或多个系统。在图2A中说明的实施例中,存储器装置216-1、…、216-N可包含一或多个存储器模块(例如双倍数据速率(DDR)存储器、三维(3D)交叉点存储器、NAND存储器、单列直插式存储器模块、双列直插式存储器模块等)。存储器装置216-1、…、216-N可包含易失性存储器及/或非易失性存储器。在数个实施例中,存储器装置216-1、…、216-N可包含多芯片装置。多芯片装置可包含数个不同存储器类型及/或存储器模块。举例来说,存储器系统可包含关于模块的任何类型的非易失性存储器或易失性存储器。
存储器装置216-1、…、216-N可为计算系统200提供主存储器或可用作整个计算系统100的额外存储器或存储装置。每一存储器装置216-1、…、216-N可包含一或多个存储器单元阵列,例如易失性及/或非易失性存储器单元。所述阵列可为例如具有NAND架构的快闪阵列。实施例不限于特定类型的存储器装置。例如,存储器装置可包含RAM、ROM、DRAM、SDRAM、PCRAM、RRAM及快闪存储器等。
在其中存储器装置216-1、…、216-N包含非易失性存储器的实施例中,存储器装置216-1、…、216-N可为快闪存储器装置,例如NAND或NOR快闪存储器装置。然而,实施例不限于此,且存储器装置216-1、…、216-N可包含:其它非易失性存储器装置,例如非易失性随机存取存储器装置(例如NVRAM、ReRAM、FeRAM、MRAM、PCM);“新兴”存储器装置,例如3-D交叉点(3D XP)存储器装置等;或其组合。3D XP非易失性存储器阵列可基于体电阻变化连同可堆叠交叉栅格式数据存取阵列执行位存储。另外,与许多基于快闪的存储器相比,3D XP非易失性存储器可执行原位写入操作,其中可在先前未擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。
如图2A中说明,主机202可包含主机控制器201。主机102可经由通道203/205与第一多个通信子系统中的第一者208-1(“IF”208-1)通信。IF 208-1可为PCIe接口。IF208-1可经耦合到第一多个通信子系统208中的第二者208-2(“IF”208-2)。IF 208-2可为PCIe XDMA接口。IF 208-2可经耦合到第一多个通信子系统208中的第三者208-3(“IF”208-3)。IF208-3可经耦合到多个计算装置210中的每一者。
此外,IF 208-2可经耦合到第一多个通信子系统208中的第四者208-4(“IF”208-4)。IF 208-4可为消息传递接口(MPI)。举例来说,主机202可发送某一消息,所述消息被IF208-4接收且被IF 208-4保持直到计算装置210或额外接口208检索所述消息以便确定后续动作。后续可能动作可包含在特定计算装置210上执行指定特定功能、设置用于外部接口231的复位向量或读取/修改SRAM 233位置。在替代例中,计算装置210可写入由IF 208-4接收以供主机202存取的消息。主机控制器201可从IF 208-4读取消息且将数据传送到一装置(例如SRAM 233、计算装置210中的寄存器或存储器装置216及/或主机存储器(例如寄存器、高速缓存或主存储器)中的位置)或从所述装置传送数据。IF208-4还可包含用于控制外部接口(例如接口231)的选择的主机寄存器及/或复位向量。
在至少一个实例中,外部接口231可为JTAG接口231,且IF 208-4可用于JTAG选择。在一些实施例中,JTAG接口231(或设备204外部的某接口)可经耦合到微代码组件217-1且可将微代码指令提供到微代码组件217-1。虽然未将JTAG接口231说明为耦合到额外微代码组件,但其可经耦合到额外微代码组件217-2、217-3、217-4、217-5。微代码指令可从设备204外部的装置提供到JTAG接口231。
多个计算装置210各自可经耦合到对应微代码组件217。作为实例,第一计算装置210-1可经耦合到第一微代码组件217-1,第二计算装置210-2可经耦合到第二微代码组件217-2等。多个微代码组件217各自可存储用于执行多个操作的多个微代码指令。微代码组件117可被计算装置210存取且传送被对应计算装置210请求的对应微代码指令。
如图2A中说明,多个计算装置210-1、210-2、210-3、210-4、210-5(下文统称为多个计算装置210)可经耦合到SRAM 233。多个计算装置210可通过总线矩阵经耦合到SRAM 233。此外,多个计算装置210可经耦合到额外多个通信子系统(例如多路复用器)235-1、235-2、235-3。第一多个通信子系统208及/或额外多个通信子系统235可包含经配置以在执行本文中描述的操作期间分配及取消分配资源到计算装置210的电路系统及/或逻辑。举例来说,电路系统及/或逻辑可在本文中描述的扩展存储器操作的执行期间分配及/或取消分配资源到计算装置210。在一个实施例中,SRAM 233可通过接口208-3(或通过其它接口(例如208-2及208-4)、为了便于说明而未说明的连接)经耦合到主机202。以此方式,主机202可通过SRAM 233提供执行特定操作(例如搜索、分类等)的指令。
此外,如图2A中说明,多个计算装置210各自可经耦合到额外通信子系统(例如多路复用器)235-1(通过SRAM 233)、235-2及235-3。额外通信子系统235可包含经配置以在本文中描述的操作的执行期间分配及取消分配资源到计算装置210的电路系统及/或逻辑。举例来说,电路系统及/或逻辑可在本文中描述的扩展存储器操作的执行期间分配及/或取消分配资源到计算装置210。虽然上文描述的实例包含耦合到计算装置中的每一者的SRAM(例如在图2A中或可在计算装置中的每一者内包含SRAM(未说明)),但实例不限于此。举例来说,高速缓存(例如SRAM)可处于例如在设备204外部、在设备204内部等的多个位置。
额外多个通信子系统235可经耦合到第二多个通信子系统(例如,例如互连接口的接口)206-1、206-2、206-3(下文统称为第二多个通信子系统206)。第二多个通信子系统206中的每一者可经耦合到控制器212、加速器214、多个SRAM 218-1、218-2及外围组件221中的对应者。在一个实例中,第二多个通信子系统206可经由数个AXI总线经耦合到对应控制器212、加速器214、多个SRAM 218及/或外围组件221。
如说明,第二多个通信子系统206中的第一者206-1可经耦合到控制器(例如存储器控制器)212。控制器212可经由数个通道207-1、…、207-N经耦合到数个存储器装置216-1、…、216-N。第二多个通信子系统206中的第二者206-2可经耦合到加速器214及多个SRAM218-1、218-2。加速器214可经耦合到逻辑电路系统213。逻辑电路系统213可在与计算装置210、第一多个通信子系统208、第二多个通信子系统206等相同的现场可编程门阵列(FPGA)上。逻辑电路系统213可包含用于执行数个假定操作及/或用于与FPGA上的内部SRAM(218)通信的芯片上加速器。第二多个通信子系统206中的第三者206-3可用于通过外围组件221在芯片外传送数据。
在一些实施例中,将IF 208-3耦合到多个计算装置210、将多个计算装置210耦合到额外多个通信子系统235及将第二多个通信子系统206耦合到控制器、加速器214、SRAM218或外围组件221的第一多个AXI总线可使用比将IF 208-2耦合到IF 208-3及IF 208-4的第二多个AXI总线更快的AXI总线传送速度。作为实例,第一多个AXI总线可具有在50到150MHz的范围内的100MHz等的传送速率,且第二多个AXI总线可具有在150到275MHz的范围的250MHz等的传送速率。第三AXI总线可将IF 208-3耦合到通信子系统206-1且可具有比第一或第二多个AXI总线更快的传送速率。作为实例,第三AXI总线可具有在250MHz到350MHz的范围内的300MHz等的传送速率。
图2B是呈包含接口208-2、计算装置210及微代码组件217的设备204的形式的功能框图。接口208-2可为类似于图1中的接口108-2及图2A中的208-2的接口。接口(“IF”)208-2可为PCIe XDMA接口。IF 208-2可经耦合到主机,例如图2A中的主机202。IF 208-2可经耦合到计算装置210-1、210-2中的每一者及对应微代码组件217-1、217-2中的每一者。主机与IF208-2之间的通信可包含通过IF 208-2从主机传送微代码指令。IF 208-2可将微代码指令传送到微代码组件217中的任一者或两者。虽然未说明,但微代码指令可例如通过JTAG接口(例如图2A中的JTAG接口231)或某其它外部装置从设备204外部的源传送。此外,微代码指令可由主机从微代码组件217检索以将其发送到不在设备204内的额外设备及/或额外计算装置。
计算装置210可包含多个子核心219。作为实例,计算装置210-1可包含多个子核心219-1、219-2、219-3、219-4。同样地,计算装置210-2可包含多个子核心219-5、219-6、219-7、219-8。子核心219中的每一者可包含MMU、PMP及/或高速缓存,如下文将关于图4进一步描述。
子核心219中的每一者可执行数个扩展存储器操作,如上文描述。子核心219可从微代码组件217存取微代码指令来执行操作。在一些实施例中,子核心219可执行操作的至少一部分且可与额外子核心219合作以完成操作。举例来说,计算装置210-1的第一子核心219-1可使用来自微代码组件217-1的第一微代码指令执行操作的第一部分。计算装置210-2的第二子核心219-5可使用来自微代码组件217-2的第二微代码指令执行操作的第二部分。在一些实施例中,计算装置210可接收执行包含执行在地址范围内的微代码组件217中的微代码指令的操作的命令。举例来说,以第一地址开始的微代码指令可从第一地址执行且继续到第二地址,此时微代码指令的执行可终止。以此方式,命令可指示将执行的微代码指令的范围。此外,微代码指令的此范围可由主机一次又一次地重复,这通过由所述主机指示来自存储器装置216的哪些额外数据用于执行微代码指令的此部分来进行。举例来说,微代码指令的地址范围可在从存储器装置216检索的数据的第一部分上执行,且微代码指令的相同地址范围可在也被检索的数据的第二部分上执行。主机可更加高效地对数据的多个部分执行操作,而无需确定微代码指令是否在特定计算装置内且代替地仅指示微代码组件217内的微代码指令的位置。
为了在第一子核心219-1与第二子核心219-5之间通信,可将消息及/或命令传送到可由子核心219中的每一者周期性地存取的邮箱组件223。以此方式,第一子核心219-1可将指示操作的第一部分正被第一子核心219-1执行的消息传送到邮箱组件223,且第二子核心219-5也可留下指示第二部分正被第二子核心219-5执行的消息。响应于第一子核心219-1完成第一部分,第一子核心219-1可将指示第一部分完成的消息传送到邮箱组件223。同样地,响应于第二子核心219-5完成第二部分,第二子核心219-5可将指示第二部分已完成的消息传送到邮箱组件223。第一子核心219-1可检索执行第二部分的结果并在第一计算装置210-1中与第一部分的结果组合。在另一实例中,第一子核心219-1可将第一部分的结果发送到额外计算装置(例如计算装置210-3),且额外计算装置可检索第二部分的结果并组合所述结果以完成操作。此外,所述结果可单独存储于存储器装置(例如图2A中的存储器装置216)中以进行后续检索及处理。
在一些实施例中,IF 208-2可从主机接收执行扩展存储器操作的命令。命令可包含从微代码组件217检索微代码指令的位置的指示。以此方式,主机可发送指示检索微代码指令的位置的命令且避免发送微代码指令本身,从而节省主机存储空间及命令的传送时间。同样地,计算装置210可避免将微代码指令存储于内部高速缓存中且代替地从微代码组件217检索微代码指令。特定计算装置210(及因此试图确定特定结果的特定用户)可存取哪些微代码指令可基于数个存取参数,例如成本基础、用户类型、机构类型、带宽限额等。
图3是根据本公开的数个实施例的呈包含包括多个通信子系统306及多个存储器装置316的设备304的计算系统300的形式的功能框图。如本文中使用,“设备”可指代(但不限于)各种结构或结构的组合中的任一者,例如(举例来说)电路或电路系统、一或多个裸片、一或多个模块、一或多个装置或一或多个系统。在图3中说明的实施例中,存储器装置316-1、…、316-N可包含一或多个存储器模块(例如双倍数据速率(DDR)存储器、三维(3D)交叉点存储器、NAND存储器、单列直插式存储器模块、双列直插式存储器模块等)。存储器装置316-1、…、316-N可包含易失性存储器及/或非易失性存储器。在数个实施例中,存储器装置316-1、…、316-N可包含多芯片装置。多芯片装置可包含数个不同存储器类型及/或存储器模块。举例来说,存储器系统可包含关于模块的任何类型的非易失性存储器或易失性存储器。
如图3中说明,设备304可包含计算装置(例如计算核心)。在一些实施例中,设备304可为FPGA。与图1及2A相比,计算装置310的每一端口可直接经耦合到多个通信子系统306(作为实例,无需经由可为多路复用器的一组额外通信子系统(例如通信子系统108及208)耦合)。计算装置310可经由对应端口连接经耦合到多个通信子系统306,端口连接包含存储器端口(“MemPort”)311-1、系统端口(“SystemPort”)311-2、外围端口(“PeriphPort”)311-3及前端口(“FrontPort”)311-4。此外,计算装置310可经耦合到微代码组件317,其类似于图1、2A及2B中的微代码组件117及217。
存储器端口311-1可直接经耦合到经明确指定以从存储器端口接收数据且将所述数据传送到存储器控制器312的通信子系统306-1。系统端口311-2可直接经耦合到经明确指定以从系统端口311-2接收数据且将所述数据传送到加速器(例如芯片上加速器)314的通信子系统306-2,接着,加速器314可将数据传送到额外逻辑电路系统313。外围端口311-3可直接经耦合到经明确指定以从外围端口311-3接收数据且将所述数据传送到串行端口318的通信子系统306-3。前端口311-4可直接经耦合到经明确指定以从前端口311-4接收数据且将所述数据传送到主机接口320且随后经由通道303及/或305传送到主机302的通信子系统306-4。在此实施例中,在端口与通信子系统之间可不使用多路复用器而是直接连接端口及通信子系统来进行数据传送。
在一些实施例中,通信子系统306可促进计算装置310的相应地址空间之间的可见性。举例来说,计算装置310可响应于数据及/或文件的接收将数据存储于计算装置310的存储器资源中。计算装置可关联对应于其中存储数据的计算装置310的存储器资源中的位置的地址(例如物理地址)。另外,计算装置310可将与数据相关联的地址解析(例如分解)成逻辑块。
在一些实施例中,与数据相关联的第0逻辑块可被传送到处理装置(例如精简指令集计算(RISC)装置)。特定计算装置(例如计算装置110、210、310)可经配置以认识到一组特定逻辑地址是那个计算装置(例如210-2)可存取的,而其它计算装置(例如分别为计算装置210-3、210-4等)可经配置以认识到数组不同逻辑地址是那些计算装置110、210、310可存取的。替代地说,第一计算装置(例如计算装置210-2)可以存取与那个计算装置210-2相关联的第一组逻辑地址,且第二计算装置(例如计算装置210-3)可以存取与其相关联的第二组逻辑地址等。
如果在第一计算装置(例如计算装置210-2)处需要对应于第二组逻辑地址(例如,可由第二计算装置210-3存取的逻辑地址)的数据,那么通信子系统306可促进第一计算装置(例如计算装置210-2)与第二计算装置(例如计算装置210-3)之间的通信以允许第一计算装置(例如计算装置210-2)存取对应于第二组逻辑地址(例如,可由第二计算装置210-3存取的一组逻辑地址)的数据。即,通信子系统308可促进计算装置310(例如210-1)与额外计算装置(例如计算装置210-2、210-3、210-4)之间的通信以允许计算装置的地址空间对彼此可见。
在一些实施例中,计算装置110、210、310之间促进地址可见性的通信可包含由第一计算装置(例如计算装置210-1)的事件队列接收请求存取对应于第二组逻辑地址的数据的消息、将所述所请求的数据加载到第一计算装置的存储器资源中及将所述所请求的数据传送到消息缓冲器。一旦数据被消息缓冲器缓冲,数据就可经由通信子系统310被传送到第二计算装置(例如计算装置210-2)。
举例来说,在扩展存储器操作的执行期间,控制器115、215、315及/或第一计算装置(例如计算装置210-1)可确定由主机命令(例如,由主机(例如图1中说明的主机102)产生的启动扩展存储器操作的执行的命令)指定的地址对应于多个计算装置(110、210)中的第二计算装置(例如计算装置210-2)的存储器资源中的位置。在此情况中,计算装置命令可经产生且从控制器115、215、315及/或第一计算装置210-1发送到第二计算装置210-2以使用在由计算装置命令指定的地址处存储在第二计算装置210-2的存储器资源中的操作数启动扩展存储器操作的执行。
响应于计算装置命令的接收,第二计算装置210-2可使用在由计算装置命令指定的地址处存储在第二计算装置210-2的存储器资源中的操作数执行扩展存储器操作。此可减少来自主机与存储控制器及/或计算装置210、310之间的命令业务,这是因为主机无需产生额外命令来引起扩展存储器操作的执行,这可通过例如减少与将命令传送到主机及从主机传送命令相关联的时间来提高计算系统的整体性能。
在一些实施例中,控制器115、215、315可确定执行扩展存储器操作可包含执行多个子操作。举例来说,扩展存储器操作可经解析或分解成可作为执行整个扩展存储器操作的部分执行的两个或更多个子操作。在此情况中,控制器115、215、315及/或通信子系统106、108、206、208、308可利用上文描述的地址可见性来促进由各种计算装置110、210、310执行子操作。响应于子操作完成,控制器115、215、315可致使子操作的结果被合并成对应于扩展存储器操作的结果的单个结果。
在其它实施例中,请求存储于计算装置110、210、310中的数据的应用程序可了解哪些计算装置110、210、310包含所请求的数据(例如,可具备对应于哪些计算装置110、210、310包含所请求的数据的信息)。在此实例中,应用程序可请求来自相关计算装置110、210、310的数据,且/或地址可经由通信子系统108、106、208、206、308经加载到多个计算装置110、120、130中且被可被请求所述数据的应用程序存取。
控制器115、215、315可为与通信子系统108、106、208、206、308物理分离的离散电路系统且可各自经提供为允许在计算装置110、210、310、存储器控制器112、212、312及/或控制器115、215、315之间进行通信的一或多个集成电路。通信子系统108、106、208、206、308的非限制性实例可包含XBAR或允许控制器115、215、315、计算装置110、210、310及/或存储器控制器112、212、312互连及/或互操作的其它通信子系统。
如上文描述,响应于接收由控制器115、215、315、通信子系统108、106、208、206、308及/或主机(例如图1中说明的主机102)产生的命令,可实现使用存储于计算装置110、210、310中及/或来自流式传输通过计算装置110、210、310的数据块的数据执行扩展存储器操作。
图4是根据本公开的数个实施例的呈包含数个端口411-1、411-2、411-3、411-4的计算核心410的形式的功能框图。计算核心410可包含存储器管理单元(MMU)420、物理存储器保护(PMP)单元422及高速缓存424。
MMU 420是指用于存储器及与处理器相关联的高速缓存操作的计算机硬件组件。MMU 420可负责存储器管理且被集成到处理器中,或在一些实例中,可在单独集成电路(IC)芯片上。MMU 420可用于硬件存储器管理,其可包含监督及调节处理器对随机存取存储器(RAM)及高速缓冲存储器的使用。MMU 420可用于操作系统(OS)存储器管理,这可确保足够的存储器资源可用于每一运行中程序的对象及数据结构。MMU 420可用于应用程序存储器管理,其可分配每一个别程序的所需或所使用的存储器,及接着当操作结束或空间变得可用时回收利用释放的存储器空间。
在一个实施例中,物理存储器可使用PMP单元422来保护以约束对存储器的存取且使进程彼此隔离。PMP单元422可用于设置指定存储器区域的存储器存取特权(读取、写入、执行)。PMP单元422可使用最小4个字节的区域大小支持8个区域。在一些实例中,PMP单元422仅可在称为M模式(或机器模式)的特权模式中进行编程。PMP单元422可强制对U模式存取的许可。然而,经锁定区域可另外强制其对M模式的许可。高速缓存424可为SRAM高速缓存、3D交叉点高速缓存等。高速缓存424可包含8KB、16KB、32KB等且可包含错误校正编码(ECC)。
在一个实施例中,计算核心410还可包含多个端口,其包含存储器端口411-1、系统端口411-2、外围端口411-3及前端口411-4。存储器端口411-1可直接经耦合到经明确指定以从存储器端口411-1接收数据的通信子系统(如图3中说明)。系统端口411-2可直接经耦合到经明确指定以从系统端口411-2接收数据的通信子系统。通过系统端口411-2的数据可被传送到加速器(例如芯片上加速器)。外围端口411-3可直接经耦合到经明确指定以从外围端口411-3接收数据的通信子系统,且此数据可最终被传送到串行端口。前端口411-4可直接经耦合到经明确指定以从前端口411-4接收数据的通信子系统,且此数据可最终被传送到主机接口且随后被传送到主机。
计算核心410可为具完整Linux能力的高速缓存一致的64位RISC-V处理器。在一些实例中,存储器端口411-1、系统端口411-2及外围端口411-3可为传出端口且前端口411-4可为传入端口。计算核心410的实例可包含U54-MC计算核心。计算核心410可包含指令存储器系统、指令提取单元、执行管线单元、数据存储器系统且支持全局、软件及计时器分解。指令存储器系统可包含16千字节(KiB)双向设置相联指令高速缓存。指令存储器系统中的所有块的存取延时可为一个时钟循环。指令高速缓存可不与平台存储器系统的剩余部分保持一致。到指令存储器的写入可通过执行FENCE.I指令来与指令提取流同步。指令高速缓存可具有64个字节的线大小,且高速缓存线填充可触发计算核心410外部的突发存取。
指令提取单元可包含用于改进处理器核心的性能的分支预测硬件。分支预测器可包含:28条目分支目标缓冲器(BTB),其可预测所采用分支的目标;512条目分支历史表(BHT),其可预测条件分支的方向;及6条目返回地址堆叠(RAS),其可预测过程返回的目标。分支预测器可具有一循环延时,使得正确地预测的控制流指令不会导致惩罚。错误预测的控制流指令可引发三循环惩罚。
执行管线单元可为单发出按序管线。管线可包含五个阶段:指令提取、指令解码及寄存器提取、执行、数据存储器存取、及寄存器写回。管线可具有每时钟循环一个指令的峰值执行速率,且可完全被绕过使得多数指令具有一循环结果延时。管线可关于先写后读及写后写危险互锁,使得指令可经调度来避免停顿。
在一个实施例中,数据存储器系统可包含DTIM接口,其可支持高达8KiB。从核心到其自身DTIM的存取延时针对全字可为两个时钟循环且针对较小数量可为三个时钟循环。从一个核心到任何其它核心的DTIM的存储器请求可能不如从一核心到其自身DTIM的存储器请求高效。在硬件中不支持非对齐存取,且其可导致允许软件模拟的陷阱。
在一些实施例中,计算核心410可包含浮点单元(FPU),其可对32位单精度及64位双精度算法的IEEE 754-2008浮点标准提供完全硬件支持。FPU可包含完全管线式的积和熔加单元及迭代除法及平方根单元、量值比较器及浮点到整数转换单元,对次正规及IEEE默认值提供完全硬件支持。
图5是表示根据本公开的数个实施例的对应于扩展存储器架构的实例方法528的流程图。在框530,方法528可包含经由第一通信子系统将命令从主机传送到多个计算装置中的至少一者。所述命令可包含耦合到多个计算装置中的至少一者的包含用于执行操作的微代码指令的微代码组件内的位置的指示。第一通信子系统可经耦合到主机。命令的传送可响应于接收传送数据块以便执行与命令相关联的操作的请求。在一些实施例中,接收启动操作的执行的命令可包含接收对应于其中存储对应于操作的执行的操作数的特定计算装置中的存储器位置的地址。举例来说,如上文描述,地址可为将用作执行操作中的操作数的数据被存储于其中的存储器部分中的地址。另外,接收命令可包含接收存储微代码指令的微代码组件内的地址。
在框532,方法528可包含存取微代码组件中的微代码指令。可在由命令中的数据指示的位置处存取微代码指令。在框534,方法528可包含经由第二通信子系统将与命令相关联的数据块从存储器装置传送到多个计算装置中的至少一者。第二通信子系统可为第二通信子系统206及306,且存储器装置可为存储器装置216及316,如图2A及3中说明。
在框536,方法528可包含通过响应于命令及数据块被多个计算装置中的至少一者接收对数据块执行微代码指令来由多个计算装置中的至少一者执行操作。在一些实施例中,执行操作包含将数据块的大小从第一大小减小到第二大小。在一些实施例中,操作的执行可由控制器引起。控制器可类似于本文中图1到3中说明的控制器115、215、315。在一些实施例中,执行操作可包含执行扩展存储器操作,如本文中描述。操作可进一步包含在未从可耦合到控制器的主机接收到主机命令时由特定计算装置执行操作。
在框538,方法528可包含经由第一通信子系统将操作的结果传送到主机。响应于操作执行完成,方法528可包含将通知发送到可耦合到控制器的主机。方法528可包含将结果发送到主机。
在一些实施例中,所述经减小大小的数据块经由耦合到所述第一通信子系统的PCIe接口被传送到所述主机。在一些实施例中,所述方法可包含基于所述微代码组件的经确定存取参数存取所述微代码组件的一部分。所述经确定存取参数可包含支付费用,且响应于所述支付费用较大,所述微代码组件的所述部分较大,且响应于所述支付费用较小,所述微代码组件的所述部分较小。方法528可包含经由存储器控制器执行以下各者中的至少一者:与所述存储器装置相关联的读取操作;与所述存储器装置相关联的复制操作;与所述存储器装置相关联的错误校正操作;或其组合。方法528可包含使用存储器控制器致使所述经减小大小的数据块被传送到所述存储器装置。
在一些实施例中,方法528可包含经由第一通信子系统将经减小大小的数据块传送到主机。方法528可进一步包含使用额外控制器(例如存储器控制器)致使数据块从存储器装置传送到第二多个通信子系统。方法528可进一步包含经由第一及第二多个通信子系统分配对应于多个计算装置中的相应计算装置的资源以对数据块执行操作。
在一些实施例中,用以启动操作的执行的命令可包含对应于特定计算装置的存储器阵列中的位置的地址,且方法528可包含将操作的结果存储于对应于特定计算装置的位置的地址中。举例来说,方法528可包含将操作的结果存储于对应于特定计算装置中的存储器位置的地址中,其中在扩展存储器操作的执行之前存储对应于操作的执行的操作数。即,在一些实施例中,操作的结果可经存储于计算装置的相同地址位置中,其中在操作的执行之前存储用作操作的操作数的数据。
在一些实施例中,方法528可包含由控制器确定对应于操作的执行的操作数未被特定计算装置存储。响应于此确定,方法528可进一步包含由控制器确定对应于操作的执行的操作数被存储于耦合到多个计算装置的存储器装置中。方法528可进一步包含:从存储器装置检索对应于操作的执行的操作数;致使对应于操作的执行的操作数被存储于多个计算装置中的至少一个计算装置中;及/或使用至少一个计算装置来引起操作的执行。存储器装置可类似于图1中说明的存储器装置116。
在一些实施例中,方法528可进一步包含:确定作为操作的部分将执行至少一个子操作;将命令发送到不同于特定计算装置的计算装置以引起子操作的执行;及/或作为操作的执行的部分使用不同于特定计算装置的计算装置执行子操作。举例来说,在一些实施例中,可作出操作将被分解成多个子操作的确定,且控制器可作为执行操作的部分致使不同计算装置执行不同子操作。在一些实施例中,控制器可作为操作的执行的部分与第一及第二多个通信子系统(例如本文中图1到3中说明的108、106、208及308)协同地将子操作指派到计算装置中的两者或更多者。
尽管本文已说明及描述特定实施例,所属领域的一般技术人员应了解,实现相同结果计算的布置可代替展示的特定实施例。本公开希望涵盖本公开的一或多个实施例的调试或变化。应理解,以说明性方式且非限制性方式进行上文描述。所属领域的技术人员在审阅上文描述之后应明白上文实施例的组合及本文未明确描述的其它实施例。本公开的一或多个实施例的范围包含其中使用上文结构及过程的其它应用。因此,应参考所附权利要求书以及此类权利要求有权获得的等效物完整范围确定本公开的一或多个实施例的范围。
在前述具体实施方式中,出于简化本公开的目的,一些特征被一起分组在单个实施例中。本公开的此方法不应被解译为反映本公开的所公开实施例必须使用比每一权利要求中明确所述的更多的特征的意图。而是,如所附权利要求书反映,发明标的物在于少于所公开单个实施例的所有特征。因此,所附权利要求特此并入到详细描述中,其中每个权利要求独立地作为单独的实施例。

Claims (20)

1.一种设备,其包括:
多个计算装置,其各自包括:
处理单元,其经配置以对数据块执行操作;及
存储器阵列,其经配置为每一相应处理单元的高速缓存;
多个微代码组件,其耦合到所述多个计算装置中的每一者且各自包括微代码指令集;及
通信子系统,其耦合到:
主机;
所述多个计算装置中的每一者;及
硬件加速器;
其中所述多个计算装置中的每一者经配置以:
从所述主机接收执行操作的请求;
检索所述微代码指令集中的至少一者;
传送命令及所述微代码指令集中的所述至少一者到所述硬件加速器以执行所述操作的至少一部分;及
从所述硬件加速器接收执行所述操作的结果。
2.根据权利要求1所述的设备,其中所述多个微代码组件中的至少一者是静态随机存取装置SRAM。
3.根据权利要求1所述的设备,其中所述计算装置中的每一者经配置以从所述微代码组件而非从接收所述请求及传送所述命令的相应计算装置内的高速缓存检索执行所述操作的指令。
4.根据权利要求1所述的设备,其中所述计算装置中的每一者经配置以接收所述请求包括所述计算装置中的每一者经配置以接收对应微代码组件内的用以存取对应微代码指令的位置的指示。
5.根据权利要求1所述的设备,其进一步包括耦合至所述多个计算装置中的每一者的多个额外通信子系统,其中所述多个额外通信子系统中的每一者耦合至所述硬件加速器。
6.根据权利要求1所述的设备,其中所述多个计算装置的每一者的所述处理单元配置有精简指令集架构。
7.根据权利要求1所述的设备,其中所述通信子系统是外围组件互连高速PCIe接口。
8.根据权利要求1所述的设备,其中对所述数据块执行的所述操作包括其中所述数据中的至少一些被排序、重新排序、移除或丢弃的操作、逗号分割值解析操作或这两者。
9.一种设备,其包括:
多个计算装置,其各自包括:
处理单元,其经配置以对数据块执行操作;及
存储器阵列,其经配置为每一相应处理单元的高速缓存;
多个微代码组件,其耦合到所述多个计算装置中的每一者且各自包括微代码指令集;且
包括耦合到所述多个计算装置中的每一者的多个通信子系统,其中所述多个通信子系统中的每一者经耦合到至少一个硬件加速器;
其中所述多个计算装置中的每一者经配置以:
从主机接收执行操作的请求;
从所述微代码组件检索所述微代码指令集中的至少一者;
经由所述多个通信子系统中的至少一者传送命令及所述微代码指令集中的所述至少一者到所述至少一个硬件加速器以执行所述操作的至少一部分;及
从所述至少一个硬件加速器接收执行所述操作的结果。
10.根据权利要求9所述的设备,其中所述加速器是芯片上加速器且经耦合到静态随机存取装置SRAM。
11.根据权利要求9所述的设备,其中所述加速器是芯片上加速器且经耦合到算术逻辑单元ALU,所述ALU经配置以执行算术运算或逻辑运算或这两者。
12.根据权利要求9所述的设备,其中所述至少一个硬件加速器经配置以通过存取耦合到所述多个第二通信子系统的非易失性存储器装置来执行所述操作。
13.根据权利要求9所述的设备,其中所述至少一个硬件加速器经配置以发送使额外硬件加速器执行所述操作的一部分的请求。
14.根据权利要求9所述的设备,其中所述多个计算装置中的每一者经配置以经由所述多个通信子系统中的至少一者将所述命令及所述微代码指令集中的所述至少一者传送到所述至少一个硬件加速器。
15.一种系统,其包括:
多个计算装置,其各自包括:
处理单元,其经配置以对数据块执行操作;及
存储器阵列,其经配置为每一相应处理单元的高速缓存;
多个微代码组件,其各自耦合到所述多个计算装置中的相应者且各自存储微代码指令集;
第一通信子系统,其耦合到主机及所述多个通信子系统(110-1、110-2、210-1、210-2、210-3、210-4、210-5、310、410)中的每一者;及
多个第二通信子系统,其耦合到所述多个计算装置中的每一者,其中所述多个第二通信子系统中的每一者经耦合到至少一个硬件加速器;及
非易失性存储器装置,其耦合到所述多个第二通信子系统中的至少一者;
其中所述多个计算装置中的每一者经配置以:
从所述主机接收执行操作的请求,其中所述请求包括命令及所述微代码组件中的至少一者内的用以存取微代码指令的位置的指示;
存取所述微代码组件中的所述至少一者内的所述位置处的所述微代码指令;及
经由所述多个第二通信子系统中的一者将执行所述操作的至少一部分的所述命令及所述经存取微代码指令发送到所述至少一个硬件加速器;及
从所述至少一个硬件加速器接收执行所述操作的所述部分的结果。
16.根据权利要求15所述的系统,其中所述多个计算装置、所述第一多个通信子系统及所述第二多个通信子系统经配置在现场可编程门阵列FPGA上,且所述非易失性存储器装置在所述FPGA外部。
17.根据权利要求15所述的系统,其中所述多个第一通信子系统直接经耦合到所述多个第二通信子系统。
18.根据权利要求15所述的系统,其中将所述第一多个通信子系统直接耦合到所述第二多个通信子系统的AXI互连件是比将所述多个计算装置耦合到所述第一多个通信子系统及所述第二多个通信子系统的AXI互连件更快的AXI互连件。
19.一种方法,其包括:
经由第一通信子系统将命令从主机传送到多个计算装置中的至少一者,其中所述命令包括包含用于执行操作的微代码指令的耦合到所述多个计算装置中的所述至少一者的微代码组件内的位置的指示;
存取所述微代码组件中的所述微代码指令;
经由第二通信子系统将与所述命令相关联的数据块从存储器装置传送到:
所述多个计算装置中的所述至少一者;及
硬件加速器;
通过响应于所述命令及所述数据块被所述多个计算装置中的所述至少一者接收而在所述硬件加速器中对所述数据块执行所述微代码指令来由所述多个计算装置中的所述至少一者执行操作的至少一部分;及
经由所述第一通信子系统将所述操作的结果传送到所述主机。
20.根据权利要求19所述的方法,其进一步包括:
基于所述微代码组件的经确定存取参数而存取所述微代码组件的一部分;
其中所述经确定存取参数包括支付费用,响应于所述支付费用较大,所述微代码组件的所述部分较大,且响应于所述支付费用较小,所述微代码组件的所述部分较小。
CN202110670361.7A 2020-06-19 2021-06-17 扩展存储器组件 Active CN113900710B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/906,685 US11275581B2 (en) 2020-06-19 2020-06-19 Expended memory component
US16/906,685 2020-06-19

Publications (2)

Publication Number Publication Date
CN113900710A CN113900710A (zh) 2022-01-07
CN113900710B true CN113900710B (zh) 2023-02-21

Family

ID=79022531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110670361.7A Active CN113900710B (zh) 2020-06-19 2021-06-17 扩展存储器组件

Country Status (2)

Country Link
US (1) US11275581B2 (zh)
CN (1) CN113900710B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220121542A1 (en) * 2020-10-20 2022-04-21 Nvidia Corporation Techniques for testing semiconductor devices
US11693812B2 (en) * 2021-02-24 2023-07-04 Mellanox Technologies, Ltd. Multi-host networking systems and methods

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6512683B2 (en) * 2001-04-05 2003-01-28 International Business Machines Corporation System and method for increasing the speed of memories
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
US20110246823A1 (en) * 2010-04-05 2011-10-06 Et International, Inc. Task-oriented node-centric checkpointing (toncc)
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
US20150371684A1 (en) 2014-06-18 2015-12-24 NXGN Data, Inc. Ultra high capacity ssd
US10241913B2 (en) * 2016-01-20 2019-03-26 International Business Machines Corporation Operating local caches for a shared storage device
US9997232B2 (en) * 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10120740B2 (en) * 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US10606587B2 (en) * 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10838899B2 (en) * 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US10262701B2 (en) * 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory

Also Published As

Publication number Publication date
US20210397448A1 (en) 2021-12-23
US11275581B2 (en) 2022-03-15
CN113900710A (zh) 2022-01-07

Similar Documents

Publication Publication Date Title
US10817360B2 (en) Apparatus and methods for debugging on a memory device
US20190294380A1 (en) Apparatuses and methods for in-memory operations
TWI514144B (zh) 積聚分頁錯失之信號傳遞與處置技術
US20240105260A1 (en) Extended memory communication
CN113900710B (zh) 扩展存储器组件
US9032099B1 (en) Writeback mechanisms for improving far memory utilization in multi-level memory architectures
US10761979B2 (en) Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value
WO2020247240A1 (en) Extended memory interface
US11579882B2 (en) Extended memory operations
US11625591B2 (en) Extended memory neuromorphic component
US11481317B2 (en) Extended memory architecture
US11176065B2 (en) Extended memory interface
EP3931707A1 (en) Storage device operation orchestration
WO2009156920A1 (en) Method, register file system, and processing unit device enabling substantially direct cache memory access

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
GR01 Patent grant
GR01 Patent grant