CN118679457A - 利用存储器中处理(pim)资源加速在主机上执行的非pim指令 - Google Patents
利用存储器中处理(pim)资源加速在主机上执行的非pim指令 Download PDFInfo
- Publication number
- CN118679457A CN118679457A CN202280086753.1A CN202280086753A CN118679457A CN 118679457 A CN118679457 A CN 118679457A CN 202280086753 A CN202280086753 A CN 202280086753A CN 118679457 A CN118679457 A CN 118679457A
- Authority
- CN
- China
- Prior art keywords
- pim
- memory
- data
- register
- read
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 80
- 230000004044 response Effects 0.000 claims abstract description 14
- 230000004913 activation Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 abstract description 7
- 239000000872 buffer Substances 0.000 description 35
- 238000010586 diagram Methods 0.000 description 12
- 238000001994 activation Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000008685 targeting Effects 0.000 description 5
- 230000003213 activating effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 241000724291 Tobacco streak virus Species 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令。在一个具体实施中,存储器控制器识别用以将第一数据写入到第一存储器位置的第一写入指令,其中第一写入指令不是存储器中处理(PIM)指令。存储器控制器接着将第一数据写入到第一PIM寄存器。适时地,存储器控制器将第一数据从第一PIM寄存器移动到第一存储器位置。在另一个具体实施中,存储器控制器识别与第一读取指令相关联的第一存储器位置,其中所述第一读取指令不是存储器中处理(PIM)指令。存储器控制器识别PIM寄存器与第一存储器位置相关联。存储器控制器接着响应于第一读取指令而从PIM寄存器读取第一数据。
Description
背景技术
计算系统通常包括多个多个处理器,该多个处理资源可检索并执行指令并且将所执行的指令的结果存储到合适的位置。处理器(例如,中央处理单元(CPU)或图形处理单元(GPU))可包括多个功能单元,诸如例如算术逻辑单元(ALU)电路、浮点单元(FPU)电路和/或组合逻辑块,该多个功能单元可用于通过对数据执行算术运算来执行指令。例如,功能单元电路可用于对操作数执行算术运算,诸如加法、减法、乘法和/或除法。通常,处理器耦合到外部存储器,且经由处理器与存储器之间的总线或互连来存取数据以执行一组指令。为了减少获取或存储存储器中的数据的访问量,计算系统可采用临时存储最近访问或修改的数据以供处理器或处理器群组使用的高速缓存分级结构。然而,可通过将某些操作卸载到以存储器为中心的执行单元来进一步改善处理性能,其中处理资源在存储器内部和/或存储器附近实施,使得更靠近存储数据的存储器位置而不是使数据更靠近处理器来执行数据处理。以存储器为中心的执行设备可通过减少外部通信(即,处理器到存储器的通信)来节省时间,并且还可节省功率。
用于以存储器为中心的处理的一个平台是存储器中处理(PIM)架构。PIM架构支持存储器密集型任务的执行,同时减轻主机处理器上的工作负荷,例如,处理器内核可以实现包括诸如PIM指令之类的特殊指令的指令集架构(ISA),以将操作卸载到诸如PIM单元之类的以存储器为中心的处理器。当处理器内核执行PIM指令时,PIM指令中指示的操作不在处理器内核上执行。相反,PIM指令被卸载到启用PIM的存储器设备内的PIM单元以供执行。一旦PIM指令在处理器内核中完成,存储器控制器就发出包括PIM命令、操作数值和存储器地址以及其它元数据的PIM指令。在接收到PIM指令时,PIM单元执行所指定的PIM操作。为了执行PIM操作,PIM单元包括算术逻辑单元和用于保存从内核接收的操作数值以及PIM操作的中间值的寄存器堆。在一个示例中,在每一存储器组中提供一个PIM单元。
应用程序或经编译代码可包括PIM代码以将PIM资源用于存储器密集型任务。然而,并非应用程序的所有部分都服从使用PIM的加速。另外,存在不具有服从PIM加速的代码的应用。当处理器内核不向存储器组发出PIM指令时,PIM资源处于空闲,并且PIM寄存器堆中的PIM寄存器未被使用。
附图说明
图1阐述根据本公开的具体实施的用于利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的示例系统的框图。
图2阐述根据本发明的具体实施的支持利用PIM资源来加速在主机上执行的非PIM指令的示例存储器系统的框图。
图3是示出根据本公开的具体实施的利用PIM资源来加速在主机上执行的非PIM指令的示例方法的流程图。
图4阐述说明根据本发明的具体实施的利用PIM资源来加速在主机上执行的非PIM指令的另一示例方法的流程图。
图5阐述说明根据本发明的具体实施的利用PIM资源来加速在主机上执行的非PIM指令的另一示例方法的流程图。
图6阐述说明根据本发明的具体实施的利用PIM资源来加速在主机上执行的非PIM指令的另一示例方法的流程图。
图7阐述说明根据本发明的具体实施的利用PIM资源来加速在主机上执行的非PIM指令的另一示例方法的流程图。
图8阐述说明根据本发明的具体实施的利用PIM资源来加速在主机上执行的非PIM指令的另一示例方法的流程图。
具体实施方式
根据本发明的具体实施涉及利用存储器中处理(PIM)资源(例如PIM寄存器)来加速非PIM存储器指令。在各种具体实施中,使用PIM寄存器来缓冲用于非PIM读取指令及非PIM写入指令的数据,使得可在PIM寄存器与存储器阵列之间有机会传送数据,例如,当存储器组空闲时或当存储器行已打开时。在一些实现方案中,PIM寄存器用作写入缓冲器以增加非PIM写入指令从存储器控制器写入队列中排出的速率。将数据写入PIM寄存器比从存储器读取快,因为其不需要打开和关闭存储器行。写入到PIM寄存器的数据可在(例如)存储器组空闲时写入到存储器阵列。在其它具体实施中,PIM寄存器用作读取缓冲器(例如,分级缓冲器、早期获取缓冲器、预取缓冲器和/或存储器侧高速缓冲存储器)以减少读取等待时间。在拾取非PIM读取指令以供存储器控制器分派之前,可将非PIM读取指令所针对的数据读取到PIM寄存器中。当非PIM读取指令准备好在存储器控制器处被拾取时,从PIM寄存器读取数据,这更快,因为它不需要打开和关闭存储器行。鉴于下面公开内容,本领域技术人员将认识到具体实施的其他特征和优点。
一种具体实施涉及利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的方法。该方法包括识别用以将第一数据写入到第一存储器位置的第一写入指令,其中第一写入指令不是存储器中处理(PIM)指令。该方法还包括将第一数据写入到第一PIM寄存器。该方法进一步包括将第一数据从第一PIM寄存器移动到第一存储器位置。在一个变型中,第一数据在存储器组空闲周期期间被移动到第一存储器位置。在另一变型中,在存储器组刷新周期期间将第一数据写入第一PIM寄存器。在又一变型中,当存储器通道处于读取模式时,将第一数据移动到第一存储器位置。在另外的变型中,通过分派PIM写入指令将第一数据写入第一PIM寄存器,并且通过分派PIM存储指令将第一数据存储在第一存储器位置处。
在一些变型中,将第一数据写入到第一PIM寄存器包括更新PIM寄存器映射表以包括将第一PIM寄存器与第一存储器位置相关联的第一条目。在一些变型中,该方法进一步包括在PIM寄存器映射表中识别将第二PIM寄存器与第二存储器位置相关联的第二条目。在这些变型中,第一存储器位置和第二存储器位置被包括在一个存储器行中。在这些变型中,该方法还包括在行激活阶段期间将第二PIM寄存器中的第二数据移动到第二存储器位置,在该行激活阶段中,第一数据被移动到第一存储器位置。
另一具体实施涉及利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的另一方法。该方法包括识别与第一读取指令相关联的第一存储器位置,其中第一读取指令不是PIM指令。该方法还包括识别PIM寄存器与第一存储器位置相关联。该方法进一步包括响应于第一读取指令而从PIM寄存器读取第一数据。在一些变型中,PIM寄存器映射表中的条目将第一PIM寄存器与第一存储器位置相关联。在一些变型中,通过分派PIM读取指令来从PIM寄存器读取第一数据。
在一些变体中,方法进一步包括将第一数据从第一存储器位置加载到PIM寄存器中。在这些变型中,方法还包括更新PIM寄存器映射表以包括使PIM寄存器与第一存储器位置相关联的条目。在一些变型中,通过分派PIM加载指令来将第一数据加载到PIM寄存器中。在一些变型中,当存储器通道处于写入模式时将第一数据加载到PIM寄存器中,且当存储器通道处于读取模式时从PIM寄存器读取第一数据。在一些变型中,推测性地将第一数据加载到PIM寄存器中。
在一些变型中,方法进一步包括从第二存储器位置读取第二数据,其中第一存储器位置及第二存储器位置对应于存储器行中的循序列。在这些变型中,将第一数据从第一存储器位置加载到PIM寄存器中,同时从第二存储器位置读取第二数据。在一些变型中,分派单个命令以从第二存储器位置读取第二数据并从第一存储器位置加载第一数据。在一些变型中,分派单个命令以从PIM寄存器读取第一数据并关闭存储器行。
又一具体实施涉及一种用于利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的装置。该装置包括处理器和耦合到该处理器的存储器控制器。该存储器控制器包括被配置为识别用以将第一数据写入到第一存储器位置的第一写入指令的逻辑,其中第一写入指令不是存储器中处理(PIM)指令。逻辑北进一步配置为将第一数据写入到第一PIM寄存器。逻辑被进一步配置为将第一数据从第一PIM寄存器移动到第一存储器位置。在一个变型中,第一数据在存储器组空闲周期期间被移动到第一存储器位置。在另一变型中,在存储器组刷新周期期间将第一数据写入第一PIM寄存器。在又一变型中,当存储器通道处于读取模式时,将第一数据移动到第一存储器位置。在另外的变型中,通过分派PIM写入指令将第一数据写入第一PIM寄存器,并且通过分派PIM存储指令将第一数据存储在第一存储器位置处。
在一些变型中,将第一数据写入到第一PIM寄存器包括更新PIM寄存器映射表以包括将第一PIM寄存器与第一存储器位置相关联的第一条目。在一些变型中,逻辑被进一步配置为在PIM寄存器映射表中识别将第二PIM寄存器与第二存储器位置相关联的第二条目。在这些变型中,第一存储器位置和第二存储器位置被包括在一个存储器行中。在这些变型中,逻辑被进一步配置为在行激活阶段期间将第二PIM寄存器中的第二数据移动到第二存储器位置,在行激活阶段中将第一数据移动到第一存储器位置。
又一具体实施涉及用于利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的另一装置。该装置包括处理器和耦合到该处理器的存储器控制器。该存储器控制器包括被配置为识别与第一读取指令相关联的第一存储器位置的逻辑,其中第一读取指令不是PIM指令。逻辑被进一步配置为识别PIM寄存器与第一存储器位置相关联。逻辑被进一步配置为响应于第一读取指令而从PIM寄存器读取第一数据。在一些变型中,PIM寄存器映射表中的条目将第一PIM寄存器与第一存储器位置相关联。在一些变型中,通过分派PIM读取指令来从PIM寄存器读取第一数据。
在一些变型中,逻辑被进一步配置为将第一数据从第一存储器位置加载到PIM寄存器中。在这些变型中,逻辑被进一步配置为更新PIM寄存器映射表以包括使PIM寄存器与第一存储器位置相关联的条目。在一些变型中,通过分派PIM加载指令来将第一数据加载到PIM寄存器中。在一些变型中,当存储器通道处于写入模式时将第一数据加载到PIM寄存器中,且当存储器通道处于读取模式时从PIM寄存器读取第一数据。在一些变型中,推测性地将第一数据加载到PIM寄存器中。
在一些变型中,逻辑被进一步配置为从第二存储器位置读取第二数据,其中第一存储器位置和第二存储器位置对应于一个存储器行中的循序列。在这些变型中,将第一数据从第一存储器位置加载到PIM寄存器中,同时从第二存储器位置读取第二数据。在一些变型中,分派单个命令以从第二存储器位置读取第二数据并从第一存储器位置加载第一数据。在一些变型中,分派单个命令以从PIM寄存器读取第一数据并关闭存储器行。
将从图1开始更详细地描述根据本公开的具体实施。贯穿本说明书和附图,相同的参考标号指代相同的元件。图1阐述根据本公开的用于利用存储器内处理(PIM)资源来加速在主机上执行的非PIM指令的示例系统100的框图。图1的示例系统100包括主机设备170,其具有包括一个或多个处理器内核104的处理器132。虽然在图1中描绘了四个处理器内核,但是应当理解,主机设备170可以包括比所描绘的更多或更少的处理器内核。在各种示例中,处理器内核104是CPU内核、GPU内核或本领域普通技术人员已知的其他内核。处理器内核104发出存储器指令或命令以通过(例如)将存储在存储器设备中的数据读取到处理器高速缓冲存储器中或将处理器高速缓冲存储器中的数据写入到存储器设备来在处理器132与存储器设备180之间传送数据。这些操作通常通过常规加载和存储指令来执行,这些指令由存储器控制器140通过由内核104共享的末级高速缓存160分派给存储器设备180。在一些示例中,主机设备170每存储器通道188包括一个存储器控制器140,其中存储器通道对应于一个或一个以上存储器组184、186或一些其它存储器分区。存储器控制器140维持一个或一个以上分派队列(例如,写入队列110及读取队列112)以用于排队待分派到存储器通道或其它存储器分区的存储器指令。命令总线144提供存储器控制器140与存储器设备之间的接口以用于分派存储器指令和命令。数据总线146提供用于在存储器设备180与主机设备170之间传送数据的接口。
在图1的示例中,存储器设备180是启用PIM的存储器设备,其包括至少一个PIM单元150以执行由处理器内核104分派的PIM指令。例如,处理器内核104可以是CPU、GPU或加速器内核。PIM单元150的特征在于相对于主机处理器132更快地访问数据。因此,PIM单元150可以在处理器内核104的指导下运行,以执行存储器密集型任务。在图1的示例中,PIM单元150、152耦合到相应存储器阵列182、192(例如,DRAM阵列)。存储器阵列182、192可为存储器设备180中的存储器组、存储器通道或其它存储器层级分区的存储器单元的一个或一个以上阵列。在不失一般性的情况下,在此特定示例中,假设每一PIM单元150、152耦合到包括存储器阵列182、192的相应存储器组184、186。本领域技术人员将会理解,在不脱离本公开的精神的情况下,可采用启用PIM的存储器设备中的PIM模块和存储器分区(物理的或逻辑的)的各种配置。启用PIM的存储器设备180可以是诸如双倍数据速率(DDRx)存储器设备、图形DDRx(GDDRx)存储器设备、低功率DDRx(LPDDRx)存储器设备、高带宽存储器(HBM)设备、混合存储器立方体(HMC)设备、非易失性随机存取存储器(NV-RAM)设备或支持PIM的其他存储器设备之类的存储器设备。尽管本文的示例是在PIM平台的上下文中提供的,但是应当理解,这些示例可应用于其他类型的以存储器为中心的处理平台,诸如进程近存储器(PNM)。
在一些具体实施中,PIM单元150包括:控制逻辑114,其用于对从处理器内核104发出的指令或命令进行解码(例如,命令解码器);算术逻辑单元(ALU)116,其执行PIM指令中所指示的操作;以及PIM寄存器堆118,其包括多个经索引寄存器,其用于保持用于对存储器的加载/存储操作的数据或ALU计算的中间值。在一些示例中,ALU 116能够执行相对于处理器内核104的ALU的有限的一组操作,从而使得ALU 116实现起来不太复杂,并且例如更适合于存储器内嵌实施方式。PIM指令可在PIM寄存器与存储器阵列之间移动数据,且其还可触发对ALU 116中的此数据的计算。在一些示例中,PIM单元150还包括命令缓冲器122,其存储由主机设备170写入到命令缓冲器122中的PIM指令。在一些示例中,主机处理器132向每一执行单元150的ALU 116发出PIM指令。在具有命令缓冲器122的具体实施中,主机处理器132发出命令,该命令包括到保持待由ALU 116执行的操作的命令缓冲器的行中的索引。在具有命令缓冲器122的这些具体实施中,主机-存储器接口不需要用额外命令引脚进行修改以覆盖PIM操作所需的所有可能操作码。
在一些示例中,存储器设备180每DRAM组件(例如,组、通道、芯片、等级、模块、裸片等)包括一个PIM单元150、152。在一些具体实施中,从处理器内核104发出的PIM指令可通过打开/关闭行及读取/写入列来存取来自DRAM组的数据(类似于常规DRAM命令)。在这些具体实施中,每个PIM指令携带目标地址以及使用目标地址处的数据要执行的操作,该目标地址也用于将PIM指令引导到适当的PIM单元。PIM单元150可在物理地址空间的不同子集上操作。举例来说,当PIM指令到达执行单元150时,其可与其它PIM指令和以物理地址空间的相同子集为目标的对DRAM的存储器存取一起串行化。
为了进一步解释,图2阐述根据本公开的具体实施的启用PIM的存储器系统200的示例的框图。在图2中所描绘的示例中,启用PIM的存储器系统200实施为HBM系统,其包括堆叠在存储器接口裸片204(例如,基础逻辑裸片)上的多个存储器裸片202(例如,DRAM内核)。存储器裸片202包括组织成通道或伪通道的多个存储器组206,其中通道或伪通道中的存储器组共享I/O总线。在图2中所描绘的示例中,伪通道228包括若干个存储器组206,但读者将了解,通道或伪通道中的存储器组的数目可由存储器系统设计者选择。I/O总线由将每一存储器裸片202连接到存储器接口裸片204的TSV实施。存储器接口裸片204通过高速链路(例如,内插器晶片、裸片到裸片互连等)通信地耦合到主机处理器系统(例如,图1的主机设备170)。在存储器接口裸片204处从存储器控制器(例如,图1的存储器控制器140)接收命令和数据且路由到存储器裸片202中的适当通道或伪通道且路由到目标存储器组。命令及数据可包括PIM命令及用于在启用PIM的存储器系统200中执行那些PIM命令的基于主机的数据。
在一些示例中,存储器组206包括存储器阵列210,其为具有字线(行)及位线(列)的存储器位单元的矩阵,其耦合到行缓冲器212,该行缓冲器在向/从存储器阵列210读取或写入数据时充当高速缓冲存储器。举例来说,存储器阵列210可为DRAM单元阵列。存储器组206还包括I/O线读出放大器(IOSA)214,其放大从存储器阵列210读取的数据,用于输出到I/O总线(或输出到PIM单元,如下文将描述)。存储器组206还包括(为了易于理解)此处未示出的额外组件,例如行解码器、列解码器、命令解码器以及额外读出放大器、驱动器、信号和缓冲器。
在一些具体实施中,存储器组206包括使用存储在存储器阵列210中的数据来执行PIM计算的PIM单元226。PIM单元226包括能够在存储器组206内执行基本计算的PIM ALU218以及包括多个PIM寄存器的PIM寄存器堆220,该多个PIM寄存器用于存储PIM计算的结果以及用于存储来自存储器阵列的数据和/或用作PIM计算的操作数的主机生成的数据。PIM单元226还包括控制逻辑216,其用于将来自存储器阵列210的数据及来自I/O总线的主机产生的数据加载到PIM寄存器堆220中,以及用于将结果数据写入到存储器阵列210。当PIM计算或PIM计算序列完成时,PIM寄存器堆220中的结果被写回到存储器阵列210。借助于其与存储器阵列210的物理接近度,PIM单元226能够比如果将操作数数据传输到主机用于计算且将结果数据传输回到存储器阵列210的情况更快地完成PIM任务。
返回到图1,在一些具体实施中,处理器ISA界定对应于PIM寄存器堆118的一组架构的PIM寄存器(例如,八个经索引寄存器)。在一些示例中,由ISA提供的PIM存储器指令包括用以将数据从存储器阵列182加载到PIM寄存器堆118中的PIM寄存器中的PIM加载指令(例如,PIM_Ld),以及用以将数据从PIM寄存器堆118中的PIM寄存器移动到存储器阵列182的PIM存储指令(“PIM_St”)。在一些示例中,由ISA提供的PIM算术指令(例如,“PIM_Add”、“PIM_Multiply”等)包括将使用寄存器堆118中的数据存储在PIM ALU 116上执行的指令。在各种示例中,PIM指令的操作数包括架构的PIM寄存器、存储器地址、以及来自处理器内核104寄存器的值或其他内核计算的值。在一些示例中,ISA进一步提供允许存储器控制器140直接从PIM寄存器堆118读取数据的PIM读取指令(“PIM_Read”)及允许存储器控制器140直接将数据写入到PIM寄存器堆118的PIM写入指令(“PIM_Write”)。典型地,这样的指令不被应用程序使用或者不被包括在编译的PIM代码中,因为它们需要通过数据总线传输数据,这消除了由PIM平台提供的优点(例如,最小化主机-存储器数据流量、最小化相关联的能量成本以及减少这些操作的等待时间)。相反,PIM读取和PIM写入指令通常用于调试PIM代码。
在一些示例中,当处理器内核104发出读取数据的常规指令或写入数据的指令到存储器阵列182、192时,该指令由存储器控制器140接收。存储器控制器接着响应于读取指令或写入指令而将读取命令或写入命令分派到存储器设备180。存储器控制器还可分派命令以打开及关闭存储器阵列中的行。在一些示例中,当处理内核104发出PIM指令(例如,PIM加载指令或PIM存储指令)时,PIM指令由存储器控制器104接收。存储器控制器接着响应于PIM指令而将对应PIM命令(例如,PIM加载命令或PIM存储命令)分派到存储器设备180中的PIM单元(例如,PIM单元150或152)。在本公开的上下文中,与由处理器内核104发出的针对存储器设备180中的PIM单元的PIM指令相比,由处理器内核发出的用以从存储器设备180中的存储器阵列读取数据或向其写入数据的指令被称为“非PIM指令”。如下文将更详细描述,根据本公开的一些具体实施提供存储器控制器,其响应于从处理器内核104接收到非PIM指令而将PIM命令分派给存储器设备180。
如前所述,当不执行PIM操作时(即,当处理器不向PIM单元150发送PIM指令时),PIM寄存器堆118是未使用的。根据本公开,存储器控制器140利用PIM寄存器堆118来加速指向存储器设备180的非PIM存储器指令,例如读取和写入指令。如上所述,存储器控制器140响应于从处理器132接收到PIM指令而分派PIM命令。根据本公开,存储器控制器140分派不基于从处理器132接收的PIM指令的PIM命令。即,存储器控制器140分派PIM命令以管理PIM寄存器堆118来加速非PIM指令。在一些示例中,存储器控制器140采用PIM读取命令及PIM写入命令连同PIM加载命令及PIM存储命令来使用PIM寄存器堆118执行非PIM读取指令及非PIM写入指令。
如本文中所使用,“分派”非PIM指令或PIM指令可通过存储器控制器140经由命令总线144在主机设备170与存储器设备180之间发出存储器命令来执行。因此,分派非PIM指令可被解释为分派非PIM命令(例如,非PIM读取或写入命令)到存储器设备以执行在从处理器132接收的非PIM指令中指定的存储器操作。此外,即使在未从处理器132接收到对应PIM指令的情况下,存储器控制器140也可将PIM命令分派到存储器设备以执行特定PIM操作。
在一些具体实施中,存储器控制器逻辑130使用PIM寄存器堆118来缓冲存储器设备180中针对非PIM写入指令的写入操作。通常,存储器控制器140通过将存储器通道方向切换到写入模式而从存储器控制器写入队列110排出写入指令。当存储器通道188处于写入模式时,存储器控制器140不能从存储器设备读取数据。因此,存储器通道在写入模式中花费的时间量是重要的,因为正进行的读取操作被停止。为了减少存储器通道188在写入模式中花费的时间量,存储器控制器逻辑130使用PIM写入命令将写入指令排出到PIM寄存器堆118。举例来说,在非PIM写入指令将数据写入到存储器阵列182中的目标存储器位置的情况下,存储器控制器逻辑130改为使用PIM写入命令将数据写入到PIM寄存器。随后,存储器控制器逻辑130使用PIM存储命令将数据从PIM寄存器移动到存储器阵列182中的目标存储器位置。这可以机会主义地进行,例如当存储器通道或存储器组空闲时。此外,可在存储器通道处于读取模式时执行非PIM指令写入数据从PIM寄存器到存储器阵列182中的目标存储器位置的移动,因为数据操作数已存在于存储器设备180中。将非PIM指令的数据写入到PIM寄存器中减少了存储器通道188在写入模式中所花费的时间量,因为其不需要关闭当前打开的存储器行和激活目的地存储器行。
使用PIM寄存器作为写缓冲器还可以减少读等待时间,例如通过存储到加载的转发。在一些示例中,存储器控制器逻辑130响应于非PIM读取指令而直接从PIM寄存器读取非PIM写入指令的经缓冲结果。存储器控制器逻辑130使用PIM读取命令读取经缓冲的写入数据,这不需要关闭当前打开的存储器行。在其它示例中,存储器控制器逻辑130通过从非PIM读取指令的关键路径移除非PIM写入指令来加速非PIM读取指令。举例来说,在非PIM写入指令招致与非PIM读取指令的行缓冲器冲突的情况下,存储器控制器逻辑130将非PIM写入指令排出到PIM寄存器堆。考虑一示例,其中两个非PIM写入指令将数据写入到分别位于DRAM行0及行1处的两个DRAM列A0及A1,随后是从DRAM行2中的DRAM列P0读取数据的非PIM读取指令。因为所有这些访问都是针对不同的DRAM行,所以它们都招致行缓冲器冲突。行0和行1的预充电和激活落在访问列P0的关键路径上。然而,存储器控制器逻辑130减少在可通过使用PIM写入命令将非PIM写入指令的数据写入到PIM寄存器堆118来读取列P0处的数据之前所需的循环数目。因此,从DRAM行2中的列P0读取数据的非PIM读取指令较早地完成,因为不必针对两个非PIM写入指令关闭和打开DRAM行。因此,减少了对列P0的更关键读取的等待时间。非PIM写入指令的写入数据可稍后,例如在存储器组闲置周期期间排出到DRAM。
将PIM寄存器用作写入缓冲器还允许写入合并,这进一步减少了在写入模式中花费的时间量,因为对保持在PIM寄存器中的相同数据的多次写入不需要关闭当前打开的存储器行和激活目的地行。在一些示例中,在多个非PIM指令通过重叠写到同一列或通过写入行的不同列而将数据写入到同一存储器行的情况下,存储器控制器逻辑130将写入数据累积在PIM寄存器中,直到那些写入使用PIM存储命令机会性地迁移到存储器阵列182中的存储器行为止。
在一些具体实施中,存储器控制器逻辑130使用PIM寄存器堆118来缓冲或分级存储器设备182中的非PIM读取指令的读取操作。举例来说,在许多情况下,从一列读取数据的非PIM指令之后是从存储器行中的下一列读取数据的非PIM指令。PIM寄存器可以用作该相邻数据的早期获取或预取缓冲器。在一些示例中,存储器控制器逻辑130分派非PIM读取命令以从列读取数据,同时分派PIM加载命令以将行中的下一相邻列加载到PIM寄存器中。为了避免加宽命令总线以适应这些并行指令,在一些示例中,存储器控制器逻辑130分派单个命令,该单个命令组合了经由数据总线从行中的一列读取数据和将来自该行中的下一列的数据加载到PIM寄存器中。可以使用PIM读取命令来读取PIM寄存器中的数据。在保持在PIM寄存器中的数据是要从行读取的最后数据的情况下,可以较早地关闭该行,因为可以使用PIM读取命令来读取PIM寄存器中的数据。因此,可以更早地打开下一行,并且减少了来自该下一行的任何读取的读取等待时间。应注意,尽管可能需要加宽存储器组内的数据总线以适应从两列并行读取数据,但主机设备170与存储器设备180之间的数据总线的宽度可保持不变。为了进一步减少等待时间,在一些示例中,存储器控制器逻辑130分派将用以从PIM寄存器读取数据的PIM读取命令与用以关闭开放行的预充电命令组合的单个命令。这进一步减少了直到下一行可以被激活为止的循环数。
在一些具体实施中,存储器控制器逻辑130通过使用PIM寄存器堆118作为用于分级读取的早期获取缓冲器来减少读取等待时间。当将数据写入到存储器阵列中时,存储器控制器逻辑130将存储器通道188的方向切换到写入模式。因此,在写入阶段期间,存储器控制器逻辑130不发出对闲置组的读取,因为通道处于写入模式中且数据不能被读取到存储器控制器。然而,存储器控制器逻辑可经由命令总线144分派PIM加载命令,其不需要任何数据通过数据总线146。因此,在一些示例中,存储器控制器逻辑130在写入模式期间通过分派PIM加载命令以将数据从闲置组加载到PIM寄存器中来分级非PIM读取指令。考虑其中非PIM读取指令在写入模式期间在存储器控制器读取队列中待决的示例。存储器控制器逻辑130分派PIM加载命令以将来自非PIM指令所针对的存储器位置的数据加载到PIM寄存器中。当存储器通道188切换回到读取模式时,存储器控制器逻辑130使用PIM读取命令从PIM寄存器读取数据,而不是从非PIM指令中所识别的存储器位置读取数据。使用PIM读取命令不会导致在关键路径上的预充电和激活等待时间。这将减少非PIM读取指令的平均存储器存取等待时间,且借此改进性能和能量效率。此外,在存储器控制器逻辑仅基于存储器控制器队列中的读取流量分派PIM加载命令以将数据提取到PIM寄存器的具体实施中,此流可为非推测性的。
在一些具体实施中,存储器控制器逻辑130使用PIM寄存器堆118作为存储器侧高速缓冲存储器或预取缓冲器。举例来说,存储器控制器逻辑130可基于推测算法用使用PIM加载命令加载的数据预填充PIM寄存器堆118。如果非PIM读取指令命中存储器侧高速缓冲存储器,那么存储器控制器逻辑可使用PIM读取命令从PIM寄存器堆118读取所请求的数据,这比从存储器阵列读取快,因为不需要打开存储器行。
在一些具体实施中,存储器控制器140包括PIM寄存器映射表142以促进使用PIM寄存器堆118来加速非PIM指令。PIM寄存器映射表142将存储器位置映射到PIM寄存器。举例来说,为了利用PIM寄存器作为非PIM指令的写入缓冲器,存储器控制器逻辑130将写入数据的写入目的地从非PIM写入指令的目标存储器位置重新映射到PIM寄存器。存储器控制器逻辑130使用PIM写入命令将写入数据写入到PIM寄存器,且更新PIM寄存器映射表142以包括PIM寄存器与目标存储器位置之间的关联。存储器控制器逻辑130接着基于PIM寄存器与记录于PIM寄存器映射表中的目标存储器位置之间的关联而机会性地将写入数据从PIM寄存器移动到目标存储器位置。类似地,举例来说,为了利用PIM寄存器作为早期获取或预取缓冲器,存储器控制器逻辑130将数据从存储器位置加载到PIM寄存器中且更新PIM寄存器映射表142以包括PIM寄存器与存储器位置之间的关联。当非PIM读取指令命中PIM寄存器映射表142时(即,非PIM读取指令的目标存储器位置与PIM寄存器映射表142中的存储器位置匹配),将非PIM读取指令的源从非PIM读取指令的目标存储器位置重新映射到与存储器位置相关联的PIM寄存器,且使用PIM读取命令从PIM寄存器读取数据。在一些示例中,PIM寄存器映射表142包括多个条目,其中每一条目将PIM寄存器索引映射到存储器位置。
考虑其中DRAM组中的每一PIM寄存器为32字节且每一DRAM列为64字节的示例。因此,对于每个DRAM组具有2*N个寄存器的PIM寄存器堆,每个DRAM组最多有N个PIM寄存器映射表条目。因此,存储器控制器逻辑130必须跟踪M*N个PIM寄存器的物理地址,其中M是每通道的DRAM组的数目。对于每通道具有16个DRAM组且每组每PIM寄存器堆具有16个寄存器的DRAM配置,存储器控制器逻辑130必须维持包括16*8=128个条目的PIM寄存器映射表。在此示例中,PIM寄存器映射表142可组织为K路集关联高速缓冲存储器(K<N),其中集的数目等于M。索引位可由DRAM组选择位提供(来自存储器指令的物理地址)。剩余的物理地址位可用作标签。PIM寄存器索引可被存储在每个PIM寄存器映射表条目中。在K=N的情况下,PIM寄存器映射表不需要存储PIM寄存器索引,因为其由每一PIM寄存器映射表集暗示(归因于跨越所有组的PIM寄存器与PIM寄存器映射表条目之间的一对一映射)。在一些具体实施中,每一PIM寄存器映射表条目具有有效位,该有效位在PIM寄存器正保持已经由PIM写入命令写入到PIM寄存器或经由PIM加载命令加载到PIM寄存器中的数据的情况下被设定。即,有效位指示PIM寄存器是否保持与非PIM指令相关的有效数据。每当经由PIM存储命令从PIM寄存器刷新数据或经由PIM读取命令从PIM寄存器读取数据时,复位有效位,因此释放PIM寄存器以供重新使用。
为了进一步解释,图3阐述了说明根据本发明的一些具体实施的用于利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的示例方法的流程图和存储器设备。图3的示例包括存储器控制器310,其可在一些或所有方面类似于图1的存储器控制器140,尤其在于存储器控制器310被配置为分派PIM加载命令及PIM存储命令以在存储器位置与PIM寄存器之间移动数据,以及分派PIM读取命令及PIM写入命令以从PIM寄存器读取数据及将数据写入到PIM寄存器。图3的示例还包括启用PIM的存储器设备312,其可在一些或所有方面类似于图1的存储器设备180,尤其在于存储器设备312包括耦合到包括PIM寄存器堆354的PIM单元352的至少一个存储器阵列350(例如,DRAM组)。存储器阵列350中的行356可包括物理地址1到P的范围。例如,物理地址可以指示行-列地址。尽管出于解释的目的仅描绘一个行356,但将了解,存储器阵列将包括数千行。PIM寄存器堆354包括PIM寄存器1到R。在一些示例中,每一PIM寄存器1到R由PIM寄存器索引表示。
图3的示例方法包括识别302用以将第一数据322写入到第一存储器位置324的第一写入指令320,其中第一写入指令320不是存储器中处理(PIM)指令。在一些示例中,非PIM写入指令320识别存储器设备312的存储器阵列中的存储器位置324(例如,物理存储器地址),以及待写入到存储器位置324的数据322(或指向保存数据的数据缓冲器的指针)。举例来说,写入指令320可指定数据322及作为数据322的目的地的在DRAM组中的行-列地址(例如,“物理地址1”)。在一些示例中,当在存储器控制器310处接收非PIM写入指令时,非PIM写入指令在写入队列中排队。当写入指令320前进到写入队列的头部时,存储器控制器310识别与写入指令320相关联的存储器位置324。在一些具体实施中,识别302第一写入指令320包括确定写入指令320是否应作为对存储器位置324的写入或作为对PIM寄存器326的写入而分派。
在一些示例中,存储器控制器310基于包括存储器位置324的存储器组中的行缓冲器的状态来确定是将数据322写入到存储器位置324还是写入到PIM寄存器326。举例来说,如果对存储器位置324的写入招致行缓冲器损失,那么存储器控制器310可确定数据322将被写入到PIM寄存器326。当写入指令320的存储器位置324位于与当前在行缓冲器中打开的行不同的行中时,招致行缓冲器损失。举例来说,如果存储器设备312正忙于将数据写入到行0且写入指令320的物理地址1位于行1中,那么存储器控制器必须等待存储器设备312完成对行0的写入,且接着关闭行0且激活行1以将数据322写入到物理地址1。该过程可能需要多个存储器周期。然而,将数据322写入到PIM寄存器所需的存储器循环的数目少得多,因为不需要关闭行0且打开行1。
在一些示例中,存储器控制器310基于用于写入队列中的其它写入指令的存储器位置来确定是将数据322写入到存储器位置324还是PIM寄存器326。在写入队列包括以同一行为目标的多个写入指令且那些写入指令与以不同行为目标的写入指令散置的情况下,存储器控制器310可确定以同一行为目标的写入指令应合并于PIM寄存器中。尽管存储器控制器310在分派写入指令时必须维持相同的地址写入排序,但存储器控制器310可通过将写入指令排放到PIM寄存器来对写入指令进行分组。因此,可将以同一行为目标的写入指令发送到PIM寄存器,使得稍后可将其排放到同一存储器行。
在一些示例中,存储器控制器310基于读取队列中的读取指令来确定是将数据322写入到存储器位置324还是PIM寄存器326。举例来说,如果存储器控制器310确定读取队列中的读取指令将读取写入指令320的结果,那么存储器控制器310可将与写入指令320相关联的数据322写入到PIM寄存器326,因此允许待决读取指令从PIM寄存器读取数据322,从而避免打开存储器行且因此减少读取指令的等待时间。作为另一示例,如果存储器控制器310确定应加速待决读取指令,那么可将写入指令320的数据322写入到PIM寄存器326,使得可比将数据写入到存储器位置324的情况更早地将存储器通道切换到读取模式。这是因为写入PIM寄存器326不需要关闭当前行并激活包括存储器位置324的行。
图3的方法还包括将数据322写入304到第一PIM寄存器326。在一些具体实施中,存储器控制器310使用PIM写入命令将第一数据322写入到第一PIM寄存器326,该PIM写入命令识别第一PIM寄存器326的寄存器索引和待写入到第一PIM寄存器326的数据322。在图3所描绘的示例中,存储器控制器将数据322写入到PIM寄存器1。
在一些具体实施中,存储器控制器310在存储器组刷新操作期间将第一数据322写入304到第一PIM寄存器326。举例来说,一些存储器设备实施按组刷新策略。在刷新阶段期间,存储器控制器310将行激活到行缓冲器中并对其进行预充电。在此示例中,用以刷新来自组的一组行的刷新操作持续约若干纳秒。在此时间期间,如果通道处于写入模式且非PIM指令320以正被刷新的组为目标,那么存储器控制器310使用PIM写入命令将数据322写入到PIM寄存器326。这样,刷新操作的等待时间与向PIM寄存器传送数据的PIM写入指令的等待时间重叠。因为存储器组刷新是内部存储器操作并且不使用存储器通道(数据或命令总线),所以重叠是可能的。另外,PIM写入指令不使用刷新操作所利用的行缓冲器。
图3的方法还包括将第一数据322从第一PIM寄存器326移动306到第一存储器位置324。在一些具体实施中,存储器控制器310使用PIM存储命令将第一数据322迁移到第一存储器位置。举例来说,PIM存储命令指定保存数据322的PIM寄存器326的寄存器索引和作为写入指令320的目的地的存储器位置324。在一个示例中,将第一数据322移动306到存储器位置324包括关闭打开的行且激活包括存储器位置324的DRAM行(除非DRAM行已打开),接着将数据322写入到行缓冲器,且最终关闭行。举例来说,如图3中所描绘,激活DRAM行356(其包括存储器位置324)且将数据322从PIM寄存器1移动到行356中。当DRAM行356关闭时,数据322持续存在于DRAM阵列的行中的存储器位置324处。在一些具体实施中,将第一数据322移动306到存储器位置324是机会性地执行的。在一个示例中,第一数据322在存储器组空闲时移动到存储器位置324。在另一示例中,当存储器通道处于读取模式时,将第一数据322移动到存储器位置。
为了进一步解释,图4阐述了说明根据本发明的一些具体实施的用于利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的示例方法的流程图。图4的方法类似于图3的方法。然而,图4的方法与图3的方法的不同之处在于,将第一数据322写入304到第一PIM寄存器326包括更新402PIM寄存器映射表404以包括使第一PIM寄存器326与第一存储器位置324相关联的条目406。在一些变型中,在存储器通道内的所有PIM寄存器与PIM寄存器映射表条目之间存在一对一映射。在这些具体实施中,存储器控制器310用非PIM写入指令320中所识别的存储器位置324更新对应于PIM寄存器326的条目406,该PIM寄存器保存用于非PIM写入指令320的数据322。在不存在一对一映射的其它变型中,存储器控制器310分配包括PIM寄存器326的PIM寄存器索引和存储器位置324的条目406。例如,在图4的示例中,存储器控制器310向PIM寄存器1写入数据322,并且将PIM寄存器1的PIM寄存器索引和物理地址1存储在PIM寄存器映射表404的条目406中。在一些示例中,存储器控制器310设定条目406的有效位以指示条目406包括必须移动到存储器阵列的有效写入数据。当存储器控制器310确定存储器组闲置且在PIM寄存器映射表中存在用于该存储器组的PIM寄存器的有效条目时,存储器控制器310使用PIM存储命令将那些PIM寄存器中的数据移动到存储器阵列,如先前所论述。
为了进一步解释,图5阐述了说明根据本发明的一些具体实施的用于利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的示例方法的流程图。图5的方法类似于图4的方法。然而,图5的方法还包括在PIM寄存器映射表404中识别502将第二PIM寄存器526与第二存储器位置524相关联的第二条目506,其中第一存储器位置324和第二存储器位置524包括于一个存储器行中。在一些具体实施中,存储器控制器310确定PIM寄存器映射表404中的两个或两个以上有效条目是否与同一存储器组行中的存储器位置相关联。在此情况下,存储器控制器310在同一行激活阶段期间将对应PIM寄存器中的数据移动到存储器组行。以此方式,仅激活行一次以将用于多个非PIM写入指令的数据移动到存储器阵列。举例来说,存储器控制器310可识别写入队列中的多个非PIM写入指令存取同一存储器组行,但那些指令与存取不同存储器组行的非PIM写入指令散置。在此示例中,存储器控制器310可通过将相关联数据写入到PIM寄存器且接着使用PIM寄存器映射表404来跟踪保存可在单行激活期间移动的数据的PIM寄存器而将指令分组到同一存储器组行。在另一示例中,存储器控制器310可确定在写入队列中待决的一个或一个以上非PIM写入指令被引导到与正保存在PIM寄存器中的数据相同的存储器行。在此示例中,存储器控制器310可等待与待决非PIM写入指令相关联的数据被写入到PIM寄存器,且接着在同一行激活期间将两个PIM寄存器中的数据移动到存储器行。
在又一示例中,以同一存储器位置为目标的两个或两个以上非PIM写入指令在PIM寄存器中合并,使得在PIM寄存器中与第一非PIM写入指令相关联的第一数据曾被移动到组中的存储器位置之前,第一数据被后续非PIM写入指令的第二数据覆写。例如,存储器控制器310可以确定在第一非PIM写入指令将重写第一非PIM写入指令之后排队的第二非PIM写入指令。代替将第一非PIM写入指令的数据写入到存储器,将此数据写入到PIM寄存器以允许对同一存储器位置的后续写入在PIM寄存器中合并。在一个示例中,当非PIM写入指令准备好分派时,存储器控制器310将准备好的非PIM写入指令的存储器位置与其它入队的非PIM写入指令交叉参考以确定准备好的非PIM写入指令的数据应被写入到PIM寄存器。PIM寄存器中合并的非PIM写入指令的数据随后被机会性地移动到存储器位置。以此方式,使用PIM寄存器将非PIM写入指令合并到同一存储器位置避免了针对这些非PIM写入指令中的每一者的多个单独行激活。
在图5中所描绘的示例中,PIM寄存器映射表包括响应于将数据522写入到存储器位置524(即,“物理地址2”)的另一非PIM写入指令而添加的条目506。这里,数据522被写入不同的PIM寄存器526(即,“PIM寄存器2”)。因此,条目506将PIM寄存器2与物理地址2相关联。在此示例中,存储器控制器310确定物理地址1和物理地址2在同一存储器组行中。因此,PIM寄存器326、526中的数据322、522可以在不关闭当前行和打开另一行的情况下被移动。
图5的示例还包括在行激活阶段期间将第二PIM寄存器526中的第二数据522移动到第二存储器位置524,其中将第一数据322移动到第一存储器位置324。在一些实现中,存储器控制器310通过以下操作来同时移动PIM寄存器326、526中的数据322、522:打开包括存储器位置324、524的行,分派将数据322写入第一存储器位置324的第一PIM存储命令,分派将数据522写入第二存储器位置524的第二PIM存储命令,并且最终关闭该行。
为了进一步解释,图6阐述了说明根据本发明的一些具体实施的用于利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的示例方法的流程图。图6的示例包括存储器控制器610,其可在一些或所有方面类似于图1的存储器控制器140,尤其在于存储器控制器610被配置为分派PIM加载命令及PIM存储命令以在存储器位置与PIM寄存器之间移动数据,以及分派PIM读取命令及PIM写入命令以从PIM寄存器读取数据及将数据写入到PIM寄存器。图6的示例还包括启用PIM的存储器设备612,其可在一些或所有方面类似于图1的存储器设备180,尤其在于存储器设备612包括耦合到包括PIM寄存器堆654的PIM单元652的至少一个存储器阵列650(例如,DRAM组)。存储器阵列650中的行656可包括物理地址1到P的范围。例如,物理地址可以指示行-列地址。尽管出于解释的目的仅描绘一个行656,但将了解,存储器阵列将包括数千行。PIM寄存器堆654包括PIM寄存器1到R。在一些示例中,每一PIM寄存器1到R由PIM寄存器索引表示。
图6的示例方法包括识别602与第一读取指令620相关联的第一存储器位置624,其中第一读取指令620不是存储器中处理(PIM)指令。在一些示例中,非PIM读取指令320指定存储器阵列650中将从其读取数据322的存储器位置624(例如,物理存储器地址)。在一些示例中,当在存储器控制器610处接收非PIM读取指令时,非PIM读取指令在读取队列中排队。当读取指令620被存储器控制器610拾取时,识别与读取指令620相关联的存储器位置624且准备读取数据622。
图6的示例方法还包括识别604PIM寄存器626与第一存储器位置624相关联。在一些具体实施中,存储器控制器610确定非PIM读取指令620所针对的数据是否存储于PIM寄存器中。举例来说,存储器控制器610可跟踪PIM寄存器626与存储器位置624之间的关联,其中存储器位置624是保存在PIM寄存器626中的数据622的源或保存在PIM寄存器626中的数据622的目的地。例如,保存在PIM寄存器626中的数据622可以是作为缓冲指向存储器位置624的非PIM写入指令的一部分而写入到PIM寄存器626的数据;或者,保存在PIM寄存器中的数据622可以是通过PIM加载命令从存储器位置624加载到PIM寄存器626的数据。
在一些具体实施中,存储器控制器610使用PIM寄存器映射表614来跟踪PIM寄存器626与存储器位置624之间的关联,如图6中所描绘。然而,将了解,存储器控制器610可通过其它技术来跟踪PIM寄存器与存储器位置之间的关联,或保存在PIM寄存器中的数据。在一些示例中,PIM寄存器映射表614包括将PIM寄存器与存储器位置相关联的条目,如上文所论述。在图6的示例中,条目616将PIM寄存器626与存储器位置624相关联。举例来说,条目616使PIM寄存器626的PIM寄存器索引与存储器位置624的物理地址或部分物理地址(例如,DRAM行-列地址)相关联。因此,在一些示例中,当存储器控制器610采取非PIM读取指令以分派到存储器设备612时,存储器控制器611确定存储器位置624是否命中PIM寄存器映射表614。在识别出条目616中指示存储器位置624后,存储器控制器610确定条目616中指示的PIM寄存器626保持非PIM读取指令所针对的数据622。
图6的示例方法还包括响应于第一读取指令620而从PIM寄存器626读取606第一数据622。在一些具体实施中,为了服务非PIM读取指令620,存储器控制器610读取保存在PIM寄存器626中的数据622,而不是将非PIM读取指令分派给存储器设备612。在一些示例中,存储器控制器610通过分派PIM读取命令来读取数据622。
为了进一步解释,图7阐述了说明根据本发明的一些具体实施的用于利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的示例方法的流程图。图7的方法类似于图6的方法。然而,图7的方法还包括将第一数据622从第一存储器位置624加载702到PIM寄存器626中。在从PIM寄存器读取数据以服务于非PIM读取指令之前,首先将数据加载到PIM寄存器中。在一些具体实施中,存储器控制器610将PIM加载命令分派给存储器设备612。数据622可在多种情况下加载到PIM寄存器626中以加速非PIM读取指令620。
在一些示例中,当存储器通道处于写入模式中时,存储器控制器610将非PIM读取指令620识别为存储器控制器读取队列中的待决指令。为了减少非PIM读取指令620的读取等待时间,在这些示例中,存储器控制器610在存储器通道处于写入模式时将数据622从第一存储器位置624加载702到PIM寄存器626中(即,存储器控制器610正主动地分派写入命令且将数据写入到存储器通道中)。存储器控制器可在存储器通道处于写入模式中时分派PIM加载命令,因为PIM加载命令不需要经由数据总线传送读取数据。在一些示例中,当包括存储器位置的DRAM组处于闲置状态(即,存储器控制器610不将数据写入到DRAM组)时,将数据622加载到PIM寄存器626中。当存储器通道改变到读取模式时,从PIM寄存器626读取606数据622,而不会招致与关闭打开的行且激活包括存储器位置的行相关联的等待时间。因此,PIM寄存器626充当非PIM读取指令的分级缓冲器,其改进性能且能量高效。
在一些示例中,存储器控制器610基于推测而非存储器控制器读取队列中的非PIM读取指令620的存在而将数据622从存储器位置624加载702到PIM寄存器626中。例如,存储器控制器610可以采用多种试探法来推测哪些存储器位置应当是PIM加载命令的目标。在一个示例中,存储器控制器610可跟踪由对同一存储器行的读取指令存取的列的模式且发出PIM加载命令以将存储器行的剩余列中的一者或一者以上预取到PIM寄存器。如果读取指令的列地址模式正以连续列次序存取同一行,那么一种试探法是在关闭打开的行之前将行的下一连续未读取列预取到PIM寄存器中。在另一示例中,存储器控制器610用来自频繁存取的存储器行的存储器组的数据预加载PIM寄存器。举例来说,存储器控制器610可使用表来跟踪每组频繁存取的行。在存储器控制器610关闭频繁存取的存储器行之前,存储器控制器可分派PIM加载命令以将未读列从行复制到PIM寄存器中。存储器控制器610可使用上文所提及的下一顺序列试探法或所属领域的技术人员将认识到的其它预取算法。
图7的方法还包括更新704PIM寄存器映射表614以包括将PIM寄存器626与第一存储器位置624相关联的条目616。在一些具体实施中,在将数据622加载到PIM寄存器626中后,存储器控制器610在PIM寄存器映射表614中指示PIM寄存器626保持与存储器位置624相关联的数据622,如上文所论述。举例来说,条目616可包括PIM寄存器626的PIM寄存器索引及存储器位置624的物理地址或部分物理地址(例如,存储器组行-列地址)。在图7的示例中,条目616指示PIM寄存器1保持与物理地址2(即,存储器位置624)相关联的数据。在一些示例中,存储器控制器610将条目616标记为保持有效读取数据。
为了进一步解释,图8阐述了说明根据本发明的一些具体实施的用于利用存储器中处理(PIM)资源来加速在主机上执行的非PIM指令的示例方法的流程图。图8的方法类似于图7的方法。然而,图8的方法还包括从第二存储器位置824读取第二数据822,其中第一存储器位置624及第二存储器位置824对应于存储器行中的循序列。在一些示例中,存储器控制器610基于从存储器行656的邻近列中的第二存储器位置824读取数据的先前非PIM读取指令而将来自第一列中的第一存储器位置624的数据622加载702到第一PIM寄存器626中。考虑一示例:其中在读取队列中存在两个待决的非PIM读取指令,其存取存储器行656的循序列A1及A2(例如,物理地址1及物理地址2),且接着存取到不同存储器行的另一读取指令,这需要关闭行656。通常,存储器控制器分派命令以打开行656,接着分派读取命令到列A1,接着分派读取命令到列A2,且接着关闭行R。这里,存储器控制器610分派命令以打开行656,接着分派命令以组合数据822列A1的读取和PIM加载命令以将数据622从列A2加载到PIM寄存器626中,接着关闭行656。因此,行656可比在典型情况下更早关闭,从而允许新行比在典型情况下更早激活,且因此减少读取指令存取新行的总等待时间。这里假设存储器组内的数据总线支持数据从两列的并行传送,一列通过主机-存储器数据总线,另一列传送到PIM寄存器。然而,在主机-存储器数据总线上仅传送一列,且因此不需要增加总线通道。
在上述的一个变型中,为了避免加宽命令总线以并行地发送非PIM读取命令(即,从组阵列读取的命令)和PIM加载命令,可将非PIM读取命令和PIM加载命令组合成单个特殊命令。因此,当特殊读取命令从存储器组行中的列读取数据时,下一顺序列中的数据被加载到指定的PIM寄存器中。这不需要额外的列地址位,因为数据总是从下一个顺序列取出。因此,在一些示例中,此指令用于经由数据总线从存储器位置624读取数据822,同时将数据622从存储器位置824加载到PIM寄存器626中。
在上述的另一变型中,为了提前关闭存储器行,将从PIM寄存器读取数据622的PIM写入命令与关闭存储器行的命令相组合。举例来说,存储器控制器610可发出从PIM寄存器626读取数据622同时关闭行656的特殊命令。该操作是可能的,因为数据622已经从行656被读取到PIM寄存器中。与从PIM寄存器读取数据并行地关闭打开的行允许比上述典型情况更早地激活新的行。
鉴于以上公开内容,读者将领会,本公开内容的具体实施支持使用空闲PIM资源来加速非PIM指令。将PIM寄存器用作写入缓冲器增加了写入指令可从存储器控制器写入队列排出的速率,这减少了存储器通道在写入模式中所花费的时间量。这又加速将存储器通道切换到读取模式以处理待决非PIM读取指令。将PIM寄存器用作读取缓冲器通过在分派非PIM读取指令之前将数据传送到PIM寄存器来减少读取等待时间,因为当非PIM读取指令被存储器控制器分派时,其不需要非PIM读取指令来打开行。此外,当存储器行被激活时,PIM寄存器与DRAM之间的数据传送的分组节约了能量并改善了性能。
具体实施可以是系统、装置、方法和/或逻辑。本公开中的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任何组合编写的源代码或目标代码,编程语言包括诸如Smalltalk、C++等面向对象的编程语言,以及诸如“C”编程语言或类似编程语言以及功能编程语言的常规过程编程语言。在一些具体实施中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令。
本公开的各方面在此参考根据本公开的一些具体实施的方法、装置(系统)和逻辑电路的流程图图示和/或框图进行描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可通过逻辑电路来实现。
逻辑电路可在处理器(例如CPU、GPU或加速器)、其他可编程数据处理装置或其他设备中实现,导致在处理器、其他可编程装置或其他设备上执行一系列操作步骤以得到计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本公开的各种具体实施的系统、方法和逻辑电路的可能具体实施的架构、功能和操作。就这一点而言,流程图或框图中的每个框可表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可基本上同时执行,或者这些框有时可以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
虽然已经参考本公开的具体实施具体地示出和描述了本公开,但是应当理解,在不脱离以下权利要求的精神和范围的情况下,可在其中进行方式和细节上的各种改变。因此,本文所述的具体实施应当被认为仅是描述性意义的,而不是出于限制性目的。本公开不是由详细描述而是由所附权利要求限定的,并且在该范围内的所有差异将被解释为包括在本公开中。
Claims (31)
1.一种方法,所述方法包括:
将第一写入指令的第一数据写入到第一存储器中处理(PIM)寄存器,其中所述第一写入指令不是PIM指令;以及
将所述第一数据从所述第一PIM寄存器移动到第一存储器位置。
2.根据权利要求1所述的方法,所述方法进一步包括:
识别所述第一写入指令以将所述第一数据写入到所述第一存储器位置。
3.根据权利要求1所述的方法,其中所述第一数据在组空闲周期期间被移动到所述第一存储器位置。
4.根据权利要求1所述的方法,其中当存储器通道处于读取模式时,将所述第一数据移动到所述第一存储器位置。
5.根据权利要求1所述的方法,其中通过分派PIM写入命令将所述第一数据写入所述第一PIM寄存器;并且其中通过分派PIM存储命令将所述第一数据存储在所述第一存储器位置处。
6.根据权利要求1所述的方法,其中将所述第一数据写入所述第一PIM寄存器包括:
更新PIM寄存器映射表以包括将所述第一PIM寄存器与所述第一存储器位置相关联的第一条目。
7.根据权利要求6所述的方法,所述方法进一步包括:
在所述PIM寄存器映射表中识别将第二PIM寄存器与第二存储器位置相关联的第二条目,其中所述第一存储器位置和所述第二存储器位置被包括在一个存储器行中;以及
在行激活阶段期间,将所述第二PIM寄存器中的第二数据移动到所述第二存储器位置,在所述行激活阶段中,所述第一数据被移动到所述第一存储器位置。
8.一种方法,所述方法包括:
接收与第一存储器位置相关联的第一读取指令,其中所述第一读取指令不是存储器中处理(PIM)指令;以及
响应于所述第一读取指令从PIM寄存器读取第一数据。
9.根据权利要求8所述的方法,所述方法进一步包括识别所述PIM寄存器与所述第一存储器位置相关联。
10.根据权利要求8所述的方法,其中PIM寄存器映射表中的条目将所述第一PIM寄存器与所述第一存储器位置相关联。
11.根据权利要求8所述的方法,其中通过分派PIM读取命令从所述PIM寄存器读取所述第一数据。
12.根据权利要求8所述的方法,所述方法进一步包括:
将所述第一数据从所述第一存储器位置加载到所述PIM寄存器中;以及
更新PIM寄存器映射表以包括将所述PIM寄存器与所述第一存储器位置相关联的条目。
13.根据权利要求12所述的方法,其中通过分派PIM加载命令来将所述第一数据加载到所述PIM寄存器中。
14.根据权利要求12所述的方法,其中当存储器通道处于写入模式时,将所述第一数据加载到所述PIM寄存器中;并且其中当所述存储器通道处于读取模式时从所述PIM寄存器读取所述第一数据。
15.根据权利要求12所述的方法,其中所述第一数据被推测地加载到所述PIM寄存器中。
16.根据权利要求12所述的方法,所述方法进一步包括:
从第二存储器位置读取第二数据,其中所述第一存储器位置和所述第二存储器位置对应于存储器行中的循序列;
其中将所述第一数据从所述第一存储器位置加载到所述PIM寄存器中,同时从所述第二存储器位置读取所述第二数据。
17.根据权利要求16所述的方法,其中分派单个命令以从所述第二存储器位置读取所述第二数据并从所述第一存储器位置加载所述第一数据。
18.根据权利要求16所述的方法,其中分派单个命令以从PIM寄存器读取所述第一数据并关闭所述存储器行。
19.一种装置,所述装置包括:
处理器;以及
存储器控制器,所述存储器控制器包括逻辑,所述逻辑被配置为:
将第一写入指令的第一数据写入到第一存储器中处理(PIM)寄存器,其中所述第一写入指令不是PIM指令;以及
将所述第一数据从所述第一PIM寄存器移动到第一存储器位置。
20.根据权利要求19所述的装置,其中所述存储器控制器还包括被配置为识别用以将所述第一数据写入到所述第一存储器位置的所述第一写入指令的逻辑。
21.根据权利要求19所述的装置,其中将所述第一数据写入所述第一PIM寄存器包括:
更新PIM寄存器映射表以包括将所述第一PIM寄存器与所述第一存储器位置相关联的第一条目。
22.根据权利要求19所述的装置,其中在存储器组刷新周期期间将所述第一数据写入所述第一PIM寄存器。
23.根据权利要求19所述的装置,其中当存储器通道处于读取模式时,将所述第一数据移动到所述第一存储器位置。
24.一种装置,所述装置包括:
处理器;以及
存储器控制器,所述存储器控制器包括逻辑,所述逻辑被配置为:
接收与第一存储器位置相关联的第一读取指令,其中所述第一读取指令不是存储器中处理(PIM)指令;以及
响应于所述第一读取指令从PIM寄存器读取第一数据。
25.根据权利要求24所述的装置,其中PIM寄存器映射表中的条目将所述第一PIM寄存器与所述第一存储器位置相关联。
26.根据权利要求24所述的装置,其中所述存储器控制器包括被配置为进行以下项的逻辑:
将所述第一数据从所述第一存储器位置加载到所述PIM寄存器中;以及
更新PIM寄存器映射表以包括将所述PIM寄存器与所述第一存储器位置相关联的条目。
27.根据权利要求26所述的装置,其中当存储器通道处于写入模式时,将所述第一数据加载到所述PIM寄存器中;并且其中当所述存储器通道处于读取模式时从所述PIM寄存器读取所述第一数据。
28.一种系统,所述系统包括:
处理器;
存储器控制器;以及
启用存储器中处理(PIM)的存储器,其中所述存储器控制器包括逻辑,所述逻辑被配置为:
响应于与第一存储器位置相关联的读取指令:从所述启用PIM的存储器的PIM寄存器读取第一数据,其中所述读取指令不是PIM指令;以及
响应于与第二存储器位置相关联的写入指令:将所述写入指令的第二数据写入到第二PIM寄存器,其中所述写入指令不是PIM指令;以及将所述第二数据从所述第二PIM寄存器移动到所述第二存储器位置。
29.根据权利要求28所述的系统,其中当存储器通道处于写入模式时,将所述第一数据加载到所述PIM寄存器中;并且其中当所述存储器通道处于读取模式时从所述PIM寄存器读取所述第一数据。
30.根据权利要求28所述的系统,其中所述第二数据在组刷新期间被写入所述第二PIM寄存器。
31.根据权利要求28所述的系统,其中当存储器通道处于读取模式时,将所述第二数据移动到所述第二存储器位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/564,155 | 2021-12-28 | ||
US17/564,155 US11921634B2 (en) | 2021-12-28 | 2021-12-28 | Leveraging processing-in-memory (PIM) resources to expedite non-PIM instructions executed on a host |
PCT/US2022/052886 WO2023129386A1 (en) | 2021-12-28 | 2022-12-14 | Leveraging processing-in-memory (pim) resources to expedite non-pim instructions executed on a host |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118679457A true CN118679457A (zh) | 2024-09-20 |
Family
ID=85150570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280086753.1A Pending CN118679457A (zh) | 2021-12-28 | 2022-12-14 | 利用存储器中处理(pim)资源加速在主机上执行的非pim指令 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11921634B2 (zh) |
KR (1) | KR20240121294A (zh) |
CN (1) | CN118679457A (zh) |
WO (1) | WO2023129386A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12073251B2 (en) | 2020-12-29 | 2024-08-27 | Advanced Micro Devices, Inc. | Offloading computations from a processor to remote execution logic |
US12019733B2 (en) * | 2022-03-11 | 2024-06-25 | Intel Corporation | Compartment isolation for load store forwarding |
US12026401B2 (en) * | 2022-06-30 | 2024-07-02 | Advanced Micro Devices, Inc. | DRAM row management for processing in memory |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903916A (en) | 1996-12-16 | 1999-05-11 | Intel Corporation | Computer memory subsystem and method for performing opportunistic write data transfers during an access latency period within a read or refresh operation |
JP3481485B2 (ja) | 1999-01-28 | 2003-12-22 | エヌイーシーコンピュータテクノ株式会社 | マルチプロセッサシステム |
US7546438B2 (en) | 2001-07-19 | 2009-06-09 | Chung Shine C | Algorithm mapping, specialized instructions and architecture features for smart memory computing |
NL1019546C2 (nl) | 2001-12-12 | 2003-06-19 | Double Bw Systems B V | Werkwijze voor het adresseren van een geheugen. |
US6944746B2 (en) | 2002-04-01 | 2005-09-13 | Broadcom Corporation | RISC processor supporting one or more uninterruptible co-processors |
US6986023B2 (en) | 2002-08-09 | 2006-01-10 | Intel Corporation | Conditional execution of coprocessor instruction based on main processor arithmetic flags |
US8566568B2 (en) | 2006-08-16 | 2013-10-22 | Qualcomm Incorporated | Method and apparatus for executing processor instructions based on a dynamically alterable delay |
US8359462B1 (en) | 2007-11-21 | 2013-01-22 | Marvell International Ltd. | Method and apparatus for programmable coupling between CPU and co-processor |
US20190377580A1 (en) | 2008-10-15 | 2019-12-12 | Hyperion Core Inc. | Execution of instructions based on processor and data availability |
WO2014120193A1 (en) | 2013-01-31 | 2014-08-07 | Hewlett-Packard Development Company, L. P. | Non-volatile multi-level-cell memory with decoupled bits for higher performance and energy efficiency |
US10055228B2 (en) | 2013-08-19 | 2018-08-21 | Shanghai Xinhao Microelectronics Co. Ltd. | High performance processor system and method based on general purpose units |
KR102402672B1 (ko) | 2015-09-01 | 2022-05-26 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법 |
KR101814577B1 (ko) | 2015-10-16 | 2018-01-03 | 삼성전자주식회사 | 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치 |
US9767028B2 (en) * | 2015-10-30 | 2017-09-19 | Advanced Micro Devices, Inc. | In-memory interconnect protocol configuration registers |
FR3055715B1 (fr) * | 2016-09-08 | 2018-10-05 | Upmem | Methodes et dispositifs pour contourner le cache interne d'un controleur memoire dram evolue |
US10133668B2 (en) | 2016-09-27 | 2018-11-20 | Intel Corporation | Technologies for providing cross data storage device communications |
US10387037B2 (en) | 2016-12-31 | 2019-08-20 | Intel Corporation | Microarchitecture enabling enhanced parallelism for sparse linear algebra operations having write-to-read dependencies |
KR102665410B1 (ko) | 2018-07-30 | 2024-05-13 | 삼성전자주식회사 | 메모리 장치의 내부 프로세싱 동작 방법 |
US10824567B2 (en) | 2018-12-04 | 2020-11-03 | International Business Machines Corporation | Selectively preventing pre-coherence point reads in a cache hierarchy to reduce barrier overhead |
US11210100B2 (en) | 2019-01-08 | 2021-12-28 | Apple Inc. | Coprocessor operation bundling |
KR20220067961A (ko) * | 2020-11-18 | 2022-05-25 | 삼성전자주식회사 | 프로세싱-인-메모리 및 프로세싱-인-메모리를 이용한 인스트럭션 출력 방법 |
US11868777B2 (en) | 2020-12-16 | 2024-01-09 | Advanced Micro Devices, Inc. | Processor-guided execution of offloaded instructions using fixed function operations |
US20220188233A1 (en) | 2020-12-16 | 2022-06-16 | Advanced Micro Devices, Inc. | Managing cached data used by processing-in-memory instructions |
US11355170B1 (en) * | 2020-12-16 | 2022-06-07 | Micron Technology, Inc. | Reconfigurable processing-in-memory logic |
US11625249B2 (en) | 2020-12-29 | 2023-04-11 | Advanced Micro Devices, Inc. | Preserving memory ordering between offloaded instructions and non-offloaded instructions |
US12073251B2 (en) | 2020-12-29 | 2024-08-27 | Advanced Micro Devices, Inc. | Offloading computations from a processor to remote execution logic |
KR20220127601A (ko) * | 2021-03-11 | 2022-09-20 | 삼성전자주식회사 | 인터페이스를 이용하여 내부 프로세싱을 수행하는 메모리 시스템, 메모리 장치 및 메모리 장치의 동작 방법 |
-
2021
- 2021-12-28 US US17/564,155 patent/US11921634B2/en active Active
-
2022
- 2022-12-14 CN CN202280086753.1A patent/CN118679457A/zh active Pending
- 2022-12-14 WO PCT/US2022/052886 patent/WO2023129386A1/en unknown
- 2022-12-14 KR KR1020247023068A patent/KR20240121294A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
US20230205693A1 (en) | 2023-06-29 |
US11921634B2 (en) | 2024-03-05 |
KR20240121294A (ko) | 2024-08-08 |
WO2023129386A1 (en) | 2023-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11580038B2 (en) | Quasi-volatile system-level memory | |
US11921634B2 (en) | Leveraging processing-in-memory (PIM) resources to expedite non-PIM instructions executed on a host | |
US20210406170A1 (en) | Flash-Based Coprocessor | |
EP1565827B1 (en) | Microprocessor including cache memory supporting multiple accesses per cycle | |
US7953953B2 (en) | Method and apparatus for reducing page replacement time in system using demand paging technique | |
US6247094B1 (en) | Cache memory architecture with on-chip tag array and off-chip data array | |
US5423016A (en) | Block buffer for instruction/operand caches | |
JP3512678B2 (ja) | キャッシュメモリ制御装置および計算機システム | |
CN109952567B (zh) | 用于旁通高级dram存储器控制器的内部高速缓存的方法和装置 | |
US8117395B1 (en) | Multi-stage pipeline for cache access | |
EP0848331A1 (en) | Multi-ported and interleaved cache memory | |
JP2003504757A (ja) | 外部メモリアクセス用バッファリングシステムバス | |
US7836253B2 (en) | Cache memory having pipeline structure and method for controlling the same | |
CN107851017B (zh) | 用于传输多个数据结构的设备和方法 | |
US20220206869A1 (en) | Virtualizing resources of a memory-based execution device | |
US6539457B1 (en) | Cache address conflict mechanism without store buffers | |
CN111736900B (zh) | 一种并行双通道的cache设计方法和装置 | |
US20240103763A1 (en) | Bank-Level Parallelism for Processing in Memory | |
US20110320747A1 (en) | Identifying replacement memory pages from three page record lists | |
US20040078544A1 (en) | Memory address remapping method | |
US8214597B2 (en) | Cache tentative read buffer | |
CN114911724A (zh) | 一种基于多bank的cache预取技术的访存结构 | |
US8127082B2 (en) | Method and apparatus for allowing uninterrupted address translations while performing address translation cache invalidates and other cache operations | |
US7124236B1 (en) | Microprocessor including bank-pipelined cache with asynchronous data blocks | |
EP4443305A1 (en) | Method for storing and accessing a data operand in a memory unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |