CN116635841A - 寄存器的近存储器确定 - Google Patents

寄存器的近存储器确定 Download PDF

Info

Publication number
CN116635841A
CN116635841A CN202180085234.9A CN202180085234A CN116635841A CN 116635841 A CN116635841 A CN 116635841A CN 202180085234 A CN202180085234 A CN 202180085234A CN 116635841 A CN116635841 A CN 116635841A
Authority
CN
China
Prior art keywords
register
local
memory
pim
memory module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180085234.9A
Other languages
English (en)
Inventor
奥努尔·卡依拉恩
穆罕默德·阿西姆·伊布拉西姆
沙泽恩·阿加
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN116635841A publication Critical patent/CN116635841A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • 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/16Memory access

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)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Software Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

存储器模块包括寄存器选择逻辑,以选择用于处理PIM命令的替代本地源和/或目的地寄存器。该寄存器选择逻辑使用基于地址的寄存器选择方法来基于由PIM命令指定的地址数据和由存储器模块保持的分割地址,选择替代本地源和/或目的地寄存器。该寄存器选择逻辑可替代地使用基于寄存器数据的方法来基于存储在一个或多个本地寄存器中的数据,选择替代本地源和/或目的地寄存器。配置有本文所述的寄存器选择逻辑的支持PIM的存储器模块能够选择替代本地源和/或目的地寄存器,以在执行PIM命令的PIM执行单元处或附近处理该PIM命令。

Description

寄存器的近存储器确定
背景技术
本节所述的方法是可以实行的方法,但不一定是先前已经设想或实行过的方法。因此,除非另有说明,否则不应假设:本节所述的任何方法仅由于其包含在本节中而假定它们是现有技术。另外,不应假设:本节所述的任何方法仅由于其包含在本节中而假定它们是公知的、例行的或常规的。
由于计算吞吐量比存储器带宽扩展得更快,一直在开发各种技术以保持用数据供养的不断增长的计算能力。存储器内嵌处理(PIM)将处理能力并入存储器模块内,使得可直接在存储器模块内处理任务。在动态随机存取存储器(DRAM)的上下文中,示例性PIM配置包括向量计算元件和本地寄存器。向量计算元件和本地寄存器允许存储器模块在本地执行一些计算,诸如算术计算。这允许存储器控制器在不需要跨存储器模块接口的数据移动的情况下并行地触发多个存储器模块处的本地计算,这可极大地改善性能,尤其是对于数据密集型工作负载而言。
当存储器控制器向多个目标存储体并行地发出广播PIM命令,使得这些目标存储体中的所有目标存储体同时使用相同的本地寄存器来执行相同的指令时,最佳地实现了PIM的有益效果。这对于这些存储体中的所有存储体使用相同的本地寄存器但对不同的数据执行相同的计算的常规工作负载很有效。然而,对于不规则工作负载,其中计算需要针对存储体中的一些存储体使用不同的本地寄存器,PIM的有益效果更有限,因为必须向那些存储体发出单独的一组PIM命令,这会导致附加的命令循环。不规则工作负载的一个示例是称为光线跟踪的图形渲染技术,其中不同树节点的数据可潜在地累加在独立的寄存器中。因此,需要一种用于以减少不规则工作负载所需的PIM命令循环的数目的方式来实施PIM的方法。
附图说明
在附图的图中以示例而非限制的方式描绘了实施方案,并且在附图中相同的附图标号是指类似的元件。
图1A是描绘存储器排布结构的框图。
图1B描绘了使用分割地址来选择替代本地寄存器的高级示例。
图1C描绘了PIM执行单元的示例性具体实施。
图1D描绘了PIM执行单元的另一示例性具体实施。
图2A是描绘用于使用由存储器模块保持的分割地址来确定应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器来处理PIM命令的方法的流程图。
图2B是描绘用于使用存储器模块中的本地寄存器的内容来确定应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器来处理PIM命令的方法的流程图。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对实施方案的透彻理解。然而,对于本领域的技术人员将显而易见的是,可以在没有这些具体细节的情况下实践这些实施方案。在其他情况下,以框图形式示出了公知的结构和设备,以避免不必要地模糊这些实施方案。
I.概述
II.架构
III.基于地址的寄存器选择
IV.基于寄存器数据的寄存器选择
I.概述
存储器模块包括寄存器选择逻辑,以选择将用于处理PIM命令的替代本地源和/或目的地寄存器。根据一个实施方案,寄存器选择逻辑使用基于地址的寄存器选择方法来基于由PIM命令指定的地址数据和由存储器模块保持的分割地址,选择替代本地源和/或目的地寄存器。根据另一实施方案,寄存器选择逻辑使用基于寄存器数据的方法来基于存储在一个或多个本地寄存器中的数据,选择替代本地源和/或目的地寄存器。如本文所用,术语“本地寄存器”指的是存储器模块中实施以供该存储器模块中的PIM执行单元使用的任何类型的本地存储。
这些实施方案是本文所述的技术方案的一部分,其解决了与将PIM用于不规则工作负载相关联的技术问题。配置有本文所述的寄存器选择逻辑的支持PIM的存储器模块能够选择替代本地源和/或目的地寄存器,以在执行PIM命令的PIM执行单元处或附近处理该PIM命令。这允许在多个存储体并行地处理广播PIM命令,即使是在一些存储体需要使用不同的本地源和/或本地目的地寄存器的情况下。这也消除了对需要使用不同的本地源和/或本地目的地寄存器的存储体的附加PIM命令的需要,这对于不规则工作负载是尤其有益的。
II.架构
图1A是描绘存储器排布结构100的框图。存储器排布结构100包括存储器控制器110和存储器模块120。存储器控制器110和存储器模块120经由命令总线130和数据总线140通信耦合。如本文所用,术语“总线”是指任何类型的有线或无线电耦合,诸如电线、导体和/或无线通信链路。图中描绘了实施方案,并且出于解释的目的,在单个存储器模块120的上下文中描述了实施方案,但是实施方案适用于具有任意数量的存储器模块的存储器排布结构。存储器排布结构100可包括图中未描绘且出于解释的目的而在本文中描述的其它元件。
存储器控制器110管理去往和来自存储器模块120的数据流并且可实施为独立元件,例如在与微处理器分离的裸片上、与微处理器分离但在与微处理器相同的裸片上实施,或作为集成存储器控制器集成到微处理器中。实施方案适用于任何类型的存储器控制器110。
存储器模块120,例如可以是DRAM存储器模块,包括具有N+1个存储体(存储体0-存储体N)和对应的PIM执行单元(PIM执行单元0-PIM执行单元N)的存储器阵列。每个存储体可包括由二维阵列限定的单元,但实施方案不限于DRAM存储器模块或存储体本身,或具有由二维阵列限定的单元的存储体,并且适用于其它存储器单元组织。存储器阵列和存储体可包括图中未描绘且出于解释的目的而在本文中描述的其它元件,诸如缓冲器和解码器。
PIM执行单元包括用于处理PIM命令的处理逻辑和存储(诸如,本地寄存器),例如,以执行逻辑运算、算术运算等。虽然实施方案在图中得到了描绘并且在本文中在基于PIM的存储器模块的上下文中得到了描述,但是实施方案不限于该上下文并且适用于非基于PIM的存储器模块。根据一个实施方案,PIM执行单元各自包括寄存器选择器,用于选择源和/或目的地寄存器,以使用基于地址的寄存器选择或基于寄存器数据的选择来处理PIM命令,如在下文中更详细描述的。寄存器选择器可以通过由硬件元件实施的寄存器选择逻辑来实施,并且可以包括用于存储替代寄存器的本地存储,如在下文中更详细描述的。
III.基于地址的寄存器选择
基于地址的寄存器选择方法通常涉及基于由PIM命令指定的地址数据来选择源和/或目的地寄存器。
A.分割地址
使用由存储器模块保持的分割地址来确定应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器来处理PIM命令。根据一个实施方案,将由PIM命令指定的地址数据与分割地址进行比较以生成比较结果。比较结果用于确定应当使用由PIM命令指定的初始本地寄存器还是替代源和/或目的地寄存器来处理PIM命令。如本文所用,术语“替代源和/或目的地寄存器”是指不同于由PIM命令指定的源和/或目的地寄存器的源和/或目的地寄存器。
如本文所用,术语“分割地址”是指存储器地址且该分割地址可存储于存储器模块中的任何地方。例如,分割地址可被存储在PIM执行单元中的指定本地寄存器中、寄存器选择器中、或存储体中的存储器位置中。分割地址可经由独立命令来指定,例如由主机线程以用分割地址编程存储器模块120。分割地址也可以在要执行的PIM命令中指定,例如,通过未使用的参数数据。分割地址可被编程一次,例如在从存储器供应商装运之前。可选地,分割地址可以被重新编程以允许PIM执行单元用初始分割地址编程并且然后用更新的分割地址重新编程。这种重新编程也可以在每个程序的基础上进行。本文在对存储器模块120中的所有存储体使用单个分割地址的上下文中描述实施方案,但实施方案不限于此示例,且分割地址可为存储体特定的。例如,可以为每一存储体编程独立的分割地址,或者可以为存储器模块编程默认的分割地址并且为特定存储体编程独立的分割地址,对于该特定存储体,将使用与默认分割地址不同的分割地址。根据下文中更详细描述的实施方案,多个分割地址可以用于每个存储体。虽然这增加了寄存器选择器实现的逻辑的复杂性,但它提供了附加的编程灵活性,这对于特定类型的不规则工作负载可能是有益的。
图1B描绘了使用分割地址来选择替代本地寄存器的高级示例。图1B的示例包括两个存储体和标记为R1和R2的两个本地寄存器。为了解释的目的,每个存储体包括映射到地址1到16的八个存储器位置。对于规则工作负载,其中存储在存储体1和存储体2中的所有数据值需要被聚集到单个本地寄存器中,即R1=R1+AddrX,主机线程相继发出16个单个类型的PIM命令,诸如广播命令,其指定加法运算、R1的源寄存器、R1的目的地寄存器和存储器地址。这使得存储在两个存储体中的所有数据值被聚集到本地寄存器R1中。
然而,对于不规则工作负载,一些数据值可能需要聚集到不同的目的地寄存器中,例如基于主机线程正在执行的特定工作。如图1B中的箭头所描绘,存储体1的所有八个位置中的值及存储体2中的前五个值(一起表示地址1到13)聚集到本地寄存器R1中,且将存储体2中的后三个值(表示地址14到16)聚集到本地寄存器R2中。这需要向存储体2发出独立的PIM命令以将最后三个值聚集到本地寄存器R2中。一个PIM命令被发出五次以将存储体2中的前五个值聚集到本地寄存器R1中,并且不同的PIM命令被发出三次以将存储体2中的后三个值聚集到本地寄存器R2中。
使用具有分割地址的基于地址的寄存器选择方法消除了发出不同PIM命令以将来自存储体2的数据值聚集到本地寄存器R1和R2中的需要。相反,发出八次的单个广播PIM命令可用于将来自存储体1和存储体2两者的数据值聚集到本地寄存器R1和R2中,如图1B中所描绘。在处理每个PIM命令期间,PIM执行单元中的寄存器选择器将PIM命令中所指定的存储器地址与分割地址进行比较。当由PIM命令指定的存储器地址小于或等于分割地址时,则使用由PIM命令指定的初始本地目的地寄存器来处理PIM命令。然而,当由PIM命令指定的存储器地址大于分割地址时,代替由PIM命令指定的本地目的地寄存器,由寄存器选择器选择替代本地目的地寄存器,并且将其用于处理PIM命令。
在图1B所示的分割地址被设置为13的示例中,针对存储体1的PIM执行单元的寄存器选择器使用PIM命令中指定的本地寄存器R1作为目的地寄存器,并且存储体1中的所有值被累加到PIM命令中指定的本地寄存器R1中。针对存储体2的PIM执行单元的寄存器选择器还使用PIM命令中指定的本地寄存器R1作为目的地寄存器来累加存储体2中的前五个值,因为它们在地址9-13中。但是,针对存储体2的PIM执行单元的寄存器选择器选择本地寄存器R2作为替代寄存器,用于累加存储体2中的最后三个值,因为这些值存储在地址14-16中,这些地址都大于分割地址13。这导致来自存储体1和存储体2的前13个值被累加到本地寄存器R1中并且来自存储体2的最后三个值被累加到本地寄存器R2中。
尽管在小于或等于的基础上进行比较的上下文中描述该示例,但实施方案不限于该类型的比较并且可使用其它类型,诸如小于、等于、等于或大于以及大于。另外,如下文所述,寄存器选择器可基于比较的结果来选择替代源寄存器和/或替代目的地寄存器,并且可独立地动态地选择源寄存器和目的地寄存器。
图1C描绘了PIM执行单元150的示例性具体实施,该PIM执行单元包括使用分割地址来选择针对PIM命令的替代本地源和/或目的地寄存器的能力。PIM执行单元150可包括图1C中未描绘或出于解释的目的而在本文中描述的其它元件。
从图1C的左侧开始,PIM执行单元150包括比较器152,该比较器将来自PIM命令的目标地址数据(诸如来自列解码器的列地址)与分割地址进行比较,并且生成提供到源寄存器选择器154和目的地寄存器选择器156两者的比较结果。如本文先前所述,分割地址可以是PIM执行单元150特有的地址,也可以是存储器模块120中的所有PIM执行单元共用的地址。实施方案不限于使用来自列解码器的列地址,并且可使用其它地址信息。
在由比较器152实施的比较逻辑是大于的情况下,则由比较器152生成的比较结果可以是例如逻辑“1”(如果目标地址数据大于分割地址)和逻辑“0”(如果目标地址数据不大于(即,小于或等于)分割地址)。比较结果“0”意味着应当使用PIM命令中指定的初始本地寄存器值,而比较结果“1”意味着应当使用替代本地源和/或目的地寄存器代替由PIM命令指定的本地源和/或目的地寄存器。如本文先前所述,比较器152不限于实施大于比较逻辑并且可使用其它比较逻辑,例如,小于、小于或等于、等于或大于或等于。
源寄存器选择器154和目的地寄存器选择器156可由任意数量和类型的硬件逻辑元件(包括存储元件)实施。源寄存器选择器154将来自比较器152的比较结果和由硬件元件(未描绘)基于PIM命令中指定的源寄存器而生成的初始本地源寄存器选择作为输入。源寄存器选择器154生成控制信号,以供复用器164选择PIM本地寄存器160中的一者用作针对算术逻辑单元(ALU)162的源寄存器。
根据一个实施方案,如果来自比较器152的比较结果不满足指定逻辑条件,如例如由比较结果逻辑“0”所指示,例如,当目标地址数据小于或等于分割地址时,则源寄存器选择器154使用初始本地源寄存器选择作为源寄存器选择信号,使得复用器164选择对应于初始本地源寄存器选择的源PIM本地寄存器160。如果来自比较器152的比较结果满足指定的逻辑条件,如例如由比较结果逻辑“1”所指示,则由源寄存器选择器154生成的源寄存器选择信号对应于替代本地源寄存器而不是初始本地源寄存器选择。
ALU 162响应于来自源寄存器选择器154的本地源寄存器选择信号,将来自PIM命令中指定的存储器地址的存储器数据与来自由复用器164选择的PIM本地寄存器160的寄存器数据相加,并且生成存储到由解复用器158选择的目的地PIM本地寄存器160的和。
目的地寄存器选择器156将来自比较器152的比较结果和由硬件元件(未描绘)基于PIM命令中指定的目的地寄存器而生成的初始本地目的地寄存器选择作为输入。目的地寄存器选择器156生成控制信号,以供解复用器158选择PIM本地寄存器160中的一者用作用于存储由ALU 162生成的和的本地目的地寄存器。类似于上述源寄存器选择器154,如果来自比较器152的比较结果不满足指定逻辑条件,如由比较结果逻辑“0”所指示,则目的地寄存器选择器156使用初始本地目的地寄存器选择作为目的地寄存器选择信号,使得解复用器158选择对应于初始本地目的地寄存器选择的PIM本地寄存器160。如果来自比较器152的比较结果满足指定逻辑条件,如例如由比较结果逻辑“1”所指示,则由目的地寄存器选择器156生成的目的地寄存器选择信号对应于替代本地目的地寄存器而不是初始本地目的地寄存器选择。所使用的特定逻辑值(例如,逻辑“0”和“1”)可根据特定具体实施而切换。
图1C中描绘的PIM执行单元150包括选择由PIM命令指定的初始本地源寄存器和/或初始本地目的地寄存器、或者与由PIM命令指定的初始本地源和/或本地目的地寄存器不同的替代本地源和/或本地目的地寄存器的灵活性。替代本地源和目的地寄存器可由不同的PIM执行单元独立地并且以不同的方式动态地选择,并且该方法可与任何类型的PIM命令一起使用。例如,当针对存储体1的PIM执行单元实施R1=R1+AddrX时,针对存储体2的PIM执行单元实施R2=R1+AddrX(源寄存器R1未改变并且目的地寄存器从R1改变为R2),或者R1=R2+AddrX(源寄存器R1改变为R2并且目的地寄存器R1未改变)。因此,对于由指定Ri=Ri+AddrX的主机线程发出的广播PIM命令,一些PIM执行单元使用Ri作为本地源和目的地寄存器,而其它PIM执行单元使用R(i+a)或R(i-a)作为本地源和/或目的地寄存器,其中“i”是标识特定本地寄存器的数据,并且“a”表示调整量。替代本地源和目的地寄存器也可以不同。在先前示例中,PIM执行单元可将R(i+a)或R(i+b)用于本地源或目的地寄存器,其中“b”表示与“a”不同的调整量。PIM执行单元150还可以在选择针对由PIM执行单元执行的其它PIM命令(例如,减法、乘法等)的寄存器时使用这种灵活性。
根据一个实施方案,分割地址是行特定的并且基于每个存储器模块或每个存储体而被编程。在该示例中,提供到比较器152的分割地址取决于已激活的特定行。如果行特定分割地址在所有存储体上是相同的,则可使用广播PIM命令来编程行特定分割地址。使用独立的PIM命令来编程行和存储体特定分割地址。
根据另一实施方案,每行可使用多个分割地址。多个分割地址可以与单个分割地址相同的方式(例如,在基于每个存储器模块或每个存储体)编程。在该示例中,PIM执行单元150包括另一比较器,该另一比较器将目标地址数据与第二分割地址进行比较并且将第二比较结果提供到源寄存器选择器154和目的地寄存器选择器156。源寄存器选择器154和目的地寄存器选择器156分别使用这两个比较结果以及初始本地源寄存器选择和初始本地目的地寄存器选择,以1)确定是使用初始本地源和/或目的地寄存器还是使用替代本地源和/或目的地寄存器;并且2)如果是,则确定替代本地源和/或目的地寄存器。本文所述的可编程能力允许主机线程根据要执行的工作类型来动态地配置和重新配置PIM执行单元。
B.替代本地源和/或目的地寄存器
可使用几种不同的方法来确定替代本地源和/或目的地寄存器。根据一个实施方案,在PIM命令中(例如在未使用的参数值中)指定替代本地源和/或目的地寄存器。如果源寄存器选择器154和/或目的地寄存器选择器156基于来自比较器152的比较结果来确定应当使用替代本地源寄存器和/或替代本地目的地寄存器来处理PIM命令,则源寄存器选择器154和/或目的地寄存器选择器156分别从PIM命令中用于标识替代本地源寄存器和/或替代本地目的地寄存器的附加信息中标识替代本地源寄存器和/或替代本地目的地寄存器。可以在PIM命令中指定多个替代本地寄存器以支持具有多个分割点的具体实施。
根据另一实施方案,标识一个或多个替代本地源和/或本地目的地寄存器的数据存储在存储器模块中,并且用于在源寄存器选择器154和/或目的地寄存器选择器156确定应当使用替代本地源和/或替代本地目的地寄存器时选择替代本地源和/或本地目的地模块。例如,标识替代本地源寄存器和替代本地目的地寄存器的替代寄存器数据存储在PIM执行单元150内的本地存储中或存储器模块120中的其它位置。替代寄存器数据可由主机线程编程和重新编程。对于特定PIM命令,如果源寄存器选择器154基于来自比较器152的比较结果来确定应当使用替代本地源寄存器,则由源寄存器选择器154生成并且被提供到复用器164的控制信号对应于替代寄存器数据中指定的替代源寄存器。类似地,如果对于特定PIM命令,目的地寄存器选择器156基于来自比较器152的比较结果来确定应当使用替代本地目的地寄存器,则由目的地寄存器选择器156生成并且被提供到解复用器158的控制信号对应于替代寄存器数据中指定的替代目的地寄存器。
替代寄存器数据可指定单个替代源寄存器值和/或单个替代目的地寄存器值。替代地,替代寄存器数据可指定多个替代本地源和/或本地目的地寄存器值,例如在替代本地寄存器列表中。数据(诸如指针)可由PIM执行单元150保持以跟踪下一替代本地源和/或目的地寄存器,并且当下一替代本地源寄存器或下一替代本地目的地寄存器被使用时,该指针被更新为以“循环”方式指向替代本地寄存器列表中的下一替代本地源寄存器或下一替代本地目的地寄存器。可以在替代寄存器数据中保持针对替代本地源寄存器和目的地寄存器的独立的指针,使得可独立地跟踪替代本地源寄存器和目的地寄存器。
根据一个实施方案,基于由源寄存器选择器154和/或目的地寄存器选择器156实施的特定处理逻辑来确定替代本地源和/或目的地寄存器。处理逻辑可执行一个或多个算术运算(例如,加法、减法等)或逻辑运算以确定替代本地源和/或目的地寄存器。这可包括使用PIM命令中指定的本地寄存器信息。例如,源寄存器选择器154和/或目的地寄存器选择器156可被配置为从PIM命令中指定的源和/或目的地寄存器值加上或减去常数值。
假设特定PIM命令指定源寄存器R1、目的地寄存器R1、加法运算以及AddrX(即,R1=R1+AddrX),以将存储在存储器位置AddrX处的值与存储在本地寄存器R1中的当前值相加。在该示例中,在接收到来自比较器152的指示应当使用替代本地寄存器的比较结果后,由源寄存器选择器154和/或目的地寄存器选择器156实施的处理逻辑通过将常数值k与由特定PIM命令指定的目的地和源寄存器值而生成确定性替代寄存器ID(即,R(1+k)=R(1+k)+AddrX)。由源寄存器选择器154和/或目的地寄存器选择器156实施的处理逻辑可以不同,并且一者可例如执行加法,而另一者执行减法,或使用不同的常数等。本地源和本地目的地寄存器两者不必改变。根据一个实施方案,由源寄存器选择器154和/或目的地寄存器选择器156实施的处理逻辑是可编程的。例如,可使一组编程命令可用于主机线程以指定处理逻辑和/或由处理逻辑使用的数据的细节,诸如前述常数。
在源寄存器选择器154或目的地寄存器选择器156确定大于本地寄存器的可用数量的本地寄存器值的情况下,处理逻辑被配置为将该寄存器值“翻转”为第一本地寄存器。例如,假设PIM执行单元具有四个本地寄存器R0至R3。进一步假设针对PIM执行单元的处理逻辑基于Rj+1来确定替代源或目的地寄存器,其中“j”是由PIM命令指定的寄存器值。在“j”的值为三(对应于本地寄存器R3)的情况下,处理逻辑将替代本地寄存器值确定为R0而非R4(其不是有效本地寄存器值)。
替代本地源和/或目的地寄存器可经由数据总线来识别。例如,可经由数据总线140传输本文先前所述的替代寄存器数据。
图2A是描绘用于使用由存储器模块保持的分割地址来确定应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器来处理PIM命令的方法的流程图200。在步骤202中,在存储器模块(诸如存储器模块120)处接收PIM命令。PIM命令可以是针对存储器模块120中的存储体中的所有存储体的广播PIM命令。
在步骤204中,将来自PIM命令的地址数据与分割地址进行比较以生成比较结果。例如,比较器152将来自PIM命令的目标地址数据(诸如来自列解码器的列地址)与由存储器模块120保持的分割地址进行比较,并且生成比较结果。分割地址可以是特定存储体和对应的PIM执行单元特有的,也可以是存储器模块120内的所有存储体共用的。来自PIM命令(即,由PIM命令指定)的地址数据可存储在例如本地寄存器、存储器等中,并且然后被检索用于比较步骤204。
在步骤206中,作出应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器来处理PIM命令的确定。例如,如本文先前所述,源寄存器选择器154和目的地寄存器选择器156分别使用来自比较器152的比较结果以及PIM命令中指定的初始本地源和目的地寄存器来确定应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器。
如果在步骤206中作出应当使用由PIM命令指定的初始本地寄存器来处理PIM命令的确定,则在步骤208中,使用由PIM命令指定的初始本地源寄存器和初始本地目的地寄存器来处理PIM命令。
如果在步骤206中作出不应当使用由PIM命令指定的初始本地寄存器来处理PIM命令的确定,则在步骤210中,确定替代本地源寄存器和/或替代本地目的地寄存器。例如,替代本地源寄存器和/或替代本地目的地寄存器可如本文先前所述来确定。在步骤212中,使用替代本地源寄存器和/或替代本地目的地寄存器来处理PIM命令。
图2A的过程可由多个PIM执行单元并行地执行,其中PIM执行单元中的一些PIM执行单元使用PIM命令中指定的初始本地源和目的地寄存器,而其它PIM执行单元使用通过使用本文所述的技术确定的替代本地源和/或目的地寄存器。这消除了对附加命令循环的需要,该附加命令循环用于将独立的PIM命令发送到需要使用与广播PIM命令中指定的那些寄存器不同的本地源和/或目的地寄存器来执行其计算的PIM执行单元。
IV.基于寄存器数据的寄存器选择
基于寄存器数据的寄存器选择方法通常涉及基于存储在由PIM执行单元使用的本地寄存器中的数据来选择本地源和/或目的地寄存器。根据一个实施方案,如果满足寄存器条件,则使用替代本地源和/或目的地寄存器来代替PIM命令中指定的本地源和/或目的地寄存器。寄存器条件可由任何类型的运算表示,诸如比较运算。例如:
如果Rx≥Ry,则R1=R1+AddrX;否则R2=R2+AddrX,其中Rx、Ry、R1、R2是本地寄存器,AddrX是寄存器地址或存储器地址,并且AddrX可由PIM命令指定。因此,如果存储在本地寄存器Rx中的当前值大于或等于存储在寄存器Ry中的当前值,则将位置AddrX处的值加到寄存器R1。否则,将位置Addrx处的值加到寄存器R2。
实施方案不限于使用小于或等于比较运算来比较位置的内容,并且可使用其它比较运算,包括小于、等于、大于或等于以及大于。另外,实施方案不限于将寄存器的内容与另一寄存器的内容进行比较,并且可将寄存器的内容与存储器位置的内容进行比较。例如,如果Rx≥AddrY,则R1=R1+AddrX;否则R2=R2+AddrX,其中AddrY是存储器位置。
用于确定是否满足寄存器条件的寄存器和/或存储器位置(例如,先前示例中的Rx、Ry、AddrY)可被指定以与基于寄存器数据的寄存器选择方法一起使用。替代地,寄存器和/或存储器位置可以在用于处理PIM命令的寄存器组中。寄存器和/或存储器位置可以与本文先前在基于地址数据的寄存器选择方法中所述相同的方式来编程。例如,线程可发出指定要在比较中使用的两个寄存器的寄存器ID或者寄存器ID和存储器地址的特殊命令。根据一个实施方案,可基于先前指令(例如,该先前指令设置用于选择寄存器和/或存储器位置的标记)的结果来选择用于确定是否满足寄存器条件的寄存器和/或存储器位置。
此外,寄存器和/或存储器位置的内容也可由线程编程。例如,在先前示例中,比较运算:如果Rx≥Ry,则R1=R1+AddrX;否则R2=R2+AddrX,Rx和Ry的内容可由线程编程以实现正在执行的工作的特定结果。该线程或另一线程稍后可以在执行不同类型的工作之前改变寄存器和/或存储器位置的内容。被指定在比较中使用的寄存器和/或存储器位置可以是预先指定的,并且线程仅需要发送要在比较中使用的值。例如,假设寄存器R1和R3被指定要在比较中使用,即,如果R1≥R3。线程发出特殊命令以指定寄存器R1和R3的值,并且指定值存储在寄存器中。然后在PIM命令处理期间使用这些值来确定应当使用PIM命令中指定的初始本地源和/或目的地寄存器还是替代本地源和/或目的地寄存器,如本文先前所述。
图1D描绘了来自图1C的PIM执行单元150的示例性具体实施,不同在于比较器152的输入是寄存器X和Y(即,RegX和RegY)的内容。如果比较器152实施小于或等于比较,则如果寄存器X中的值小于或等于寄存器Y中的值,那么由比较器152生成的比较结果为逻辑“1”,否则为逻辑“0”。替代本地源和/或目的地寄存器以与本文先前关于基于地址数据的寄存器选择方法所述相同的方式来选择。
实施方案不限于图1C和图1D中描绘的PIM执行单元150的示例性具体实施。例如,根据一个实施方案,使用ALU 162代替比较器152来执行图1C中的目标地址数据和分割地址的比较以及图1D中的寄存器RegX和RegY的内容的比较。比较结果由ALU 162提供到源寄存器选择器154和目的地寄存器选择器156。替代地,比较结果可以作为标记存储在一位寄存器中,并且该标记由源寄存器选择器154和目的地寄存器选择器156使用。
图2B是描绘用于使用存储器模块中的本地寄存器的内容来确定应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器来处理PIM命令的方法的流程图250。在步骤252中,在存储器模块(诸如存储器模块120)处接收PIM命令。PIM命令可以是针对存储器模块120中的存储体中的所有存储体的广播PIM命令。
在步骤254中,将本地寄存器的内容与另一本地寄存器或存储器地址的内容进行比较。例如,将寄存器Rx的内容与寄存器Ry的内容进行比较。
在步骤256中,作出应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器来处理PIM命令的确定。例如,如本文先前所述,源寄存器选择器154和目的地寄存器选择器156分别使用来自比较器152的比较结果以及PIM命令中指定的初始本地源和目的地寄存器来确定应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器。比较结果可指示例如寄存器Rx的内容是否小于或等于寄存器Ry,即,是否Rx≤Ry。如先前所述,可使用其它比较运算,例如等于、大于或等于或大于,并且可将寄存器的内容与另一寄存器(例如,Ry)的内容或存储器地址(例如,AddrY)的内容进行比较。除了比较运算之外,可将逻辑运算应用于寄存器和/或存储器位置的内容,以确定应当使用由PIM命令指定的初始本地寄存器还是替代本地寄存器来处理PIM命令。
如果在步骤256中作出应当使用由PIM命令指定的初始本地寄存器来处理PIM命令的确定,则在步骤258中,使用由PIM命令指定的初始本地源寄存器和初始本地目的地寄存器来处理PIM命令。
如果在步骤256中作出不应当使用由PIM命令指定的初始本地寄存器来处理PIM命令的确定,则在步骤260中,确定替代本地源寄存器和/或替代本地目的地寄存器。例如,替代本地源寄存器和/或替代本地目的地寄存器可如本文先前所述来确定。在步骤262中,使用替代本地源寄存器和/或替代本地目的地寄存器来处理PIM命令。
与图2A的过程一样,图2B的过程可由多个PIM执行单元并行地执行,其中PIM执行单元中的一些PIM执行单元使用PIM命令中指定的本地源和目的地寄存器,而其它PIM执行单元使用通过使用本文所述的技术的替代本地源和/或目的地寄存器。这消除了对附加命令循环的需要,附加命令循环将独立且唯一的PIM命令发送到需要使用不同的本地源和/或目的地寄存器来执行其计算的PIM执行单元。
尽管出于解释的目的在本文中在支持PIM的存储器模块的上下文中描述实施方案,但实施方案适用于其它上下文,诸如单指令多数据(SIMD)类架构,以允许相同的指令使用不同的寄存器对不同的数据进行操作。例如,在线程分散的情况下,当“if”和“else”语句包括具有不同的寄存器ID的相同的指令时,这可帮助执行波前的硬件通道同时在不同的指令上取得进展。

Claims (20)

1.一种存储器模块,包括:
寄存器选择逻辑,所述寄存器选择逻辑被配置为基于由存储器命令指定的第一地址数据和由所述存储器模块保持的第二地址数据来确定针对所述存储器命令的本地源寄存器或本地目的地寄存器中的一者或多者。
2.根据权利要求1所述的存储器模块,其中所述寄存器选择逻辑被进一步配置为:
通过将由所述存储器命令指定的所述第一地址数据与由所述存储器模块保持的所述第二地址数据进行比较来生成比较结果,以及基于由所述存储器命令指定的所述第一地址数据和由所述存储器模块保持的所述第二地址数据,使用所述比较结果来确定本地源寄存器或本地目的地寄存器中的所述一者或多者。
3.根据权利要求2所述的存储器模块,其中所述寄存器选择逻辑被进一步配置为响应于所述比较结果满足逻辑条件,使用由所述存储器命令指定的替代寄存器作为针对所述存储器命令的所述本地源寄存器或所述本地目的地寄存器。
4.根据权利要求2所述的存储器模块,其中所述寄存器选择逻辑被进一步配置为响应于所述比较结果满足逻辑条件,使用存储在所述存储器模块中的替代寄存器数据作为针对所述存储器命令的所述本地源寄存器或所述本地目的地寄存器。
5.根据权利要求2所述的存储器模块,其中所述寄存器选择逻辑被进一步配置为响应于所述比较结果满足逻辑条件,基于由所述存储器命令指定的本地源寄存器或本地目的地寄存器来确定本地源寄存器或本地目的地寄存器中的所述一者或多者。
6.根据权利要求5所述的存储器模块,其中基于由所述存储器命令指定的本地源寄存器或本地目的地寄存器来确定本地源寄存器或本地目的地寄存器中的所述一者或多者包括递增或递减由所述存储器命令指定的本地源寄存器标识值或本地目的地寄存器标识值中的一者或多者。
7.根据权利要求1所述的存储器模块,其中:
所述存储器命令是存储器内嵌处理器(PIM)命令,并且
本地源寄存器或本地目的地寄存器中的所确定的一者或多者不同于由所述PIM命令指定的本地源寄存器或本地目的地寄存器。
8.一种存储器模块,包括:
寄存器选择逻辑,所述寄存器选择逻辑被配置为基于所述存储器模块的本地寄存器的内容来确定用于处理存储器命令的本地源寄存器或本地目的地寄存器中的一者或多者。
9.根据权利要求8所述的存储器模块,其中所述寄存器选择逻辑被进一步配置为:
通过将所述存储器模块的所述本地寄存器的所述内容与所述存储器模块的另一本地寄存器的内容或所述存储器模块中的存储器位置的内容中的一者或多者进行比较来生成比较结果,以及
使用所述比较结果来确定用于处理所述存储器命令的本地源寄存器或本地目的地寄存器中的所述一者或多者。
10.根据权利要求9所述的存储器模块,其中所述寄存器选择逻辑被进一步配置为响应于所述比较结果满足逻辑条件,使用由所述存储器命令指定的替代寄存器作为针对所述存储器命令的所述本地源寄存器或所述本地目的地寄存器。
11.根据权利要求9所述的存储器模块,其中所述寄存器选择逻辑被进一步配置为响应于所述比较结果满足逻辑条件,使用存储在所述存储器模块中的替代寄存器数据作为针对所述存储器命令的所述本地源寄存器或所述本地目的地寄存器。
12.根据权利要求9所述的存储器模块,其中所述寄存器选择逻辑被进一步配置为响应于所述比较结果满足逻辑条件,基于由所述存储器命令指定的本地源寄存器或本地目的地寄存器来确定本地源寄存器或本地目的地寄存器中的所述一者或多者。
13.根据权利要求12所述的存储器模块,其中基于由所述存储器命令指定的本地源寄存器或本地目的地寄存器来确定本地源寄存器或本地目的地寄存器中的所述一者或多者包括递增或递减由所述存储器命令指定的本地源寄存器标识值或本地目的地寄存器标识值中的一者或多者。
14.根据权利要求8所述的存储器模块,其中:
所述存储器命令是存储器内嵌处理器(PIM)命令,并且
本地源寄存器或本地目的地寄存器中的所确定的一者或多者不同于由所述PIM命令指定的本地源寄存器或本地目的地寄存器。
15.一种方法,包括:
由存储器模块处的寄存器选择逻辑基于由存储器命令指定的第一地址数据和由所述存储器模块保持的第二地址数据来确定针对所述存储器命令的本地源寄存器或本地目的地寄存器中的一者或多者。
16.根据权利要求15所述的方法,所述方法还包括:
通过将由所述存储器命令指定的所述第一地址数据与由所述存储器模块保持的所述第二地址数据进行比较来生成比较结果,以及基于由所述存储器命令指定的所述第一地址数据和由所述存储器模块保持的所述第二地址数据,使用所述比较结果来确定本地源寄存器或本地目的地寄存器中的所述一者或多者。
17.根据权利要求16所述的方法,所述方法还包括:响应于所述比较结果满足逻辑条件,使用由所述存储器命令指定的替代寄存器作为针对所述存储器命令的所述本地源寄存器或所述本地目的地寄存器。
18.根据权利要求16所述的方法,所述方法还包括:响应于所述比较结果满足逻辑条件,使用存储在所述存储器模块中的替代寄存器数据作为针对所述存储器命令的所述本地源寄存器或所述本地目的地寄存器。
19.根据权利要求16所述的方法,所述方法还包括:响应于所述比较结果满足逻辑条件,基于由所述存储器命令指定的本地源寄存器或本地目的地寄存器来确定本地源寄存器或本地目的地寄存器中的所述一者或多者。
20.根据权利要求19所述的方法,其中基于由所述存储器命令指定的本地源寄存器或本地目的地寄存器来确定本地源寄存器或本地目的地寄存器中的所述一者或多者包括递增或递减由所述存储器命令指定的本地源寄存器标识值或本地目的地寄存器标识值中的一者或多者。
CN202180085234.9A 2020-12-18 2021-12-07 寄存器的近存储器确定 Pending CN116635841A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/126,977 2020-12-18
US17/126,977 US11966328B2 (en) 2020-12-18 2020-12-18 Near-memory determination of registers
PCT/US2021/062215 WO2022132502A1 (en) 2020-12-18 2021-12-07 Near-memory determination of registers

Publications (1)

Publication Number Publication Date
CN116635841A true CN116635841A (zh) 2023-08-22

Family

ID=82021341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180085234.9A Pending CN116635841A (zh) 2020-12-18 2021-12-07 寄存器的近存储器确定

Country Status (6)

Country Link
US (1) US11966328B2 (zh)
EP (1) EP4264417A4 (zh)
JP (1) JP2023554311A (zh)
KR (1) KR20230117200A (zh)
CN (1) CN116635841A (zh)
WO (1) WO2022132502A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240000773A (ko) * 2022-06-24 2024-01-03 에스케이하이닉스 주식회사 프로세싱-인-메모리 컴퓨팅 시스템 및 그의 메모리 컨트롤러

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
US5553264A (en) * 1994-06-24 1996-09-03 Digital Equipment Corporation Method and apparatus for efficient cache refilling by the use of forced cache misses
KR0179840B1 (ko) 1995-09-22 1999-05-15 문정환 레지스터 제어장치
CN101689141B (zh) 2007-06-20 2012-10-17 富士通株式会社 高速缓存装置、运算处理装置及其控制方法
US9996348B2 (en) * 2012-06-14 2018-06-12 Apple Inc. Zero cycle load
US9767028B2 (en) 2015-10-30 2017-09-19 Advanced Micro Devices, Inc. In-memory interconnect protocol configuration registers
US9977609B2 (en) * 2016-03-07 2018-05-22 Advanced Micro Devices, Inc. Efficient accesses of data structures using processing near memory
US10733089B2 (en) * 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US11055220B2 (en) * 2019-08-19 2021-07-06 Truememorytechnology, LLC Hybrid memory systems with cache management

Also Published As

Publication number Publication date
EP4264417A4 (en) 2024-10-23
US20220197647A1 (en) 2022-06-23
EP4264417A1 (en) 2023-10-25
KR20230117200A (ko) 2023-08-07
US11966328B2 (en) 2024-04-23
WO2022132502A1 (en) 2022-06-23
JP2023554311A (ja) 2023-12-27

Similar Documents

Publication Publication Date Title
US8086806B2 (en) Systems and methods for coalescing memory accesses of parallel threads
US7937567B1 (en) Methods for scalably exploiting parallelism in a parallel processing system
US8726292B2 (en) System and method for communication in a multithread processor
CN107766079B (zh) 处理器以及用于在处理器上执行指令的方法
US10114795B2 (en) Processor in non-volatile storage memory
US20210081248A1 (en) Task Scheduling
US10761851B2 (en) Memory apparatus and method for controlling the same
US8615770B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
US8572355B2 (en) Support for non-local returns in parallel thread SIMD engine
US9513923B2 (en) System and method for context migration across CPU threads
US10152328B2 (en) Systems and methods for voting among parallel threads
US20210082520A1 (en) Processor in non-volatile storage memory
US20230061711A1 (en) Inter-layer communication techniques for memory processing unit architectures
US8589942B2 (en) Non-real time thread scheduling
CN116635841A (zh) 寄存器的近存储器确定
US20160188531A1 (en) Operation processing apparatus and method
US8413151B1 (en) Selective thread spawning within a multi-threaded processing system
CN111078289B (zh) 用于执行多线程系统的子线程的方法和多线程系统
US20150279465A1 (en) Systems and methods for order scope transitions using cam
US8959497B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
US20040236929A1 (en) Logic circuit and program for executing thereon
US8417735B1 (en) Instruction-efficient algorithm for parallel scan using initialized memory regions to replace conditional statements
KR20090055765A (ko) 멀티미디어 데이터 처리를 위한 다중 simd 프로세서 및이를 이용한 연산 방법
US10620958B1 (en) Crossbar between clients and a cache
JP2006018411A (ja) プロセッサ

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