CN112380150B - 计算装置以及用于加载或更新数据的方法 - Google Patents

计算装置以及用于加载或更新数据的方法 Download PDF

Info

Publication number
CN112380150B
CN112380150B CN202011260055.8A CN202011260055A CN112380150B CN 112380150 B CN112380150 B CN 112380150B CN 202011260055 A CN202011260055 A CN 202011260055A CN 112380150 B CN112380150 B CN 112380150B
Authority
CN
China
Prior art keywords
processing unit
address
memory
addresses
instruction
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
CN202011260055.8A
Other languages
English (en)
Other versions
CN112380150A (zh
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.)
Shanghai Bi Ren Technology Co ltd
Original Assignee
Shanghai Biren Intelligent Technology Co Ltd
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 Shanghai Biren Intelligent Technology Co Ltd filed Critical Shanghai Biren Intelligent Technology Co Ltd
Priority to CN202011260055.8A priority Critical patent/CN112380150B/zh
Publication of CN112380150A publication Critical patent/CN112380150A/zh
Priority to US17/523,833 priority patent/US11669327B2/en
Application granted granted Critical
Publication of CN112380150B publication Critical patent/CN112380150B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • 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/781On-chip cache; Off-chip memory
    • 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/7825Globally asynchronous, locally synchronous, e.g. network on chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开的实施例涉及计算装置和用于加载数据的方法,涉及计算机领域。根据该方法,第一处理单元向近存储器处理单元发送第一指令,第一指令包括第一地址、多个第二地址和操作类型;近存储器处理单元响应于第一指令,对第一存储器的多个第二地址上的多个数据项执行与操作类型相关联的操作,以生成操作结果;近存储器处理单元将操作结果存储到第一存储器的第一地址;第一处理单元发出清空指令,以用于使得第一地址上的操作结果对于第一处理单元可见;以及第一处理单元发出读取指令,以读取第一地址上的操作结果到第一处理单元。由此,能够在近存储器处理单元灵活处理数据并高效地读取操作结果回第一处理单元。

Description

计算装置以及用于加载或更新数据的方法
技术领域
本公开的实施例总体涉及计算机领域,具体涉及计算装置、用于加载数据的方法以及用于更新数据的方法。
背景技术
嵌入表数据读取已经在很多计算机应用中得到了广泛应用,尤其是在诸如个性化推荐模型的人工智能应用中。对于深度学习推荐模型(DLRM)来说,通过SparseLengthsSum(SLS)表示的稀疏嵌入操作由以下两个动作组成:首先在巨大的嵌入表中进行小量的稀疏查找,接着对嵌入表项进行缩减,例如池化(pooling)。
传统方案通过近存储器数据处理(Near Memory Processing,NMP)来实现稀疏嵌入操作。参照图1,其示出了根据现有技术的用于近存储器数据处理的架构100的示意框图。如图1所示,架构100包括向量处理单元110、片上网络(Network On Chip,NOC)120、近存储器处理单元130以及中央处理单元(CPU)的主存储器140,其中向量处理单元110经由片上网络120与近存储器处理单元130和主存储器140连接,近存储器处理单元130与主存储器140耦接。主存储器140中存储有多个嵌入表1-n。向量处理单元110对主存储器140上的多个嵌入表1-n发起稀疏嵌入操作。近存储器处理单元130对多个嵌入表1-n执行稀疏嵌入操作,从而提升嵌入表数据查找操作的效率。
但是,如何通过片上网络将读取数据高效地从主存储器140传输到向量处理单元110是个挑战。此外在读取表项到向量处理单元110使得权重梯度能够添加到这些表项仍然开销巨大,同时通过片上网络传输写入数据也仍然面临挑战。
发明内容
提供了一种计算装置和用于加载数据的方法,能够在近存储器处理单元灵活处理数据并高效地读取操作结果回第一处理单元。此外,还提供了另一种计算装置以及用于更新数据的方法,能够在近存储器处理单元灵活处理数据并减少数据更新过程的数据移动开销。
根据本公开的第一方面,提供了一种计算装置。该计算装置包括:第一处理单元;第一存储器,与第一处理单元经由片上网络相连;近存储器处理单元,与第一存储器耦接;第一处理单元被配置为经由片上网络向近存储器处理单元发送第一指令,第一指令包括第一地址、多个第二地址和操作类型,第一地址和多个第二地址与第一存储器相关联;近存储器处理单元被配置为响应于第一指令,对第一存储器的多个第二地址上的多个数据项执行与操作类型相关联的操作,以生成操作结果;以及近存储器处理单元还被配置为将操作结果存储到第一存储器的第一地址;第一处理单元还被配置为发出清空指令,用于使得第一地址上的操作结果对于第一处理单元可见;以及第一处理单元还被配置为发出用于从第一地址读取数据的读取指令,以读取第一地址上的操作结果到第一处理单元。
根据本公开的第二方面,提供了一种用于加载数据的方法。该方法包括:第一处理单元经由片上网络向近存储器处理单元发送第一指令,第一指令包括第一地址、多个第二地址和操作类型,第一地址和多个第二地址与第一存储器相关联;近存储器处理单元响应于第一指令,对第一存储器的多个第二地址上的多个数据项执行与操作类型相关联的操作,以生成操作结果;近存储器处理单元将操作结果存储到第一存储器的第一地址;第一处理单元发出清空指令,以用于使得第一地址上的操作结果对于第一处理单元可见;以及第一处理单元发出读取指令,以用于读取第一地址上的操作结果到第一处理单元。
根据本公开的第三方面,提供了另一种计算装置。该计算装置包括:第一处理单元;第一存储器,与第一处理单元经由片上网络相连;近存储器处理单元,与第一存储器耦接;第一处理单元被配置为经由片上网络向第一存储器发送写入指令,写入指令包括第一地址和多项写入数据,以便将多项写入数据写入第一存储器的第一地址;第一处理单元还被配置为发出清空指令,用于使得第一地址上的多项写入数据对于第一处理单元可见;第一处理单元还被配置为经由片上网络向近存储器处理单元发送更新指令,更新指令包括第一地址和多个第二地址,多个第二地址与第一存储器相关联;近存储器处理单元还被配置为响应于更新指令,将第一存储器的多个第二地址上的多个数据项与第一地址上的多项写入数据进行预定操作,以生成经更新的多个数据项;以及近存储器处理单元还被配置为将经更新的多个数据项存储到多个第二地址。
根据本公开的第四方面,提供了一种用于更新数据的方法。该方法包括:第一处理单元经由片上网络向第一存储器发送写入指令,所述写入指令包括第一地址和多项写入数据,以用于将所述多项写入数据写入所述第一存储器的第一地址;所述第一处理单元发出清空指令,以用于使得所述第一地址上的多项写入数据对于所述第一处理单元可见;所述第一处理单元经由所述片上网络向近存储器处理单元发送更新指令,所述更新指令包括所述第一地址和多个第二地址,所述多个第二地址与所述第一存储器相关联;所述近存储器处理单元响应于所述更新指令,将所述第一存储器的所述多个第二地址上的多个数据项与所述第一地址上的多项写入数据进行预定操作,以生成经更新的多个数据项;以及所述近存储器处理单元将经更新的所述多个数据项存储到所述多个第二地址。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1是根据现有技术的用于近存储器数据处理的架构100的示意框图。
图2是根据本公开的实施例的计算装置200的示意框图。
图3是根据本公开的实施例的用于加载数据的方法300的示意图。
图4是根据本公开的实施例的用于更新数据的方法400的示意图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,如何通过片上网络将读取数据高效地从主存储器140传输到向量处理单元110是个挑战。此外,在读取表项到向量处理单元110使得权重梯度能够添加到这些表项仍然开销巨大,同时通过片上网络传输写入数据也仍然面临挑战。
为了解决上述问题中的至少一个,本公开提供了一种计算装置、用于加载数据的方法以及用于更新数据的方法。
图2示出了根据本公开的实施例的计算装置100的示意框图。如图2所示,计算装置200包括至少一个第一处理单元210、片上网络220、至少一个近存储器处理单元230、至少一个第一存储器240以及主存储器250。应当理解,虽然图2中示出了2个第一处理单元210、2个近存储器处理单元230以及2个第一存储器240,但是这只是举例说明,第一处理单元210、近存储器处理单元230以及第一存储器240的数量可以更多或更少,本公开的范围在此不受限制。
关于第一处理单元210,其可以用于处理用于向量和/或标量的指令。第一处理单元210例如包括但不限于向量处理单元,例如向量处理器,或者实现某一功能的硬件电路、专用集成电路等等。
关于片上网络220,其例如包括但不限于在第一处理单元210和第一存储器240之间连接的总线等。片上网络的总线带宽例如包括但不限于1024比特、2048比特。
关于近存储器处理单元230,其与第一存储器240耦接。近存储器处理单元230可以经由片上网络220从第一处理单元210接收与第一存储器240中的数据相关联的指令,并响应于指令对第一存储器240中的数据执行相关操作。
关于第一存储器240,其经由片上网络220与第一处理单元210相连。第一存储器240例如包括但不限于动态随机存取存储器(DRAM)、高带宽存储器(High BandwidthMemory,HBM)。第一存储器240作为第一处理单元210的本地存储器。第一存储器240可以存储有多个数据项,例如包括但不限于多个嵌入表,或者嵌入表中的多个表项。
在一些实施例中,第一存储器240中存储的多个数据项所占据的存储空间小于或等于数据项的长度和与第二地址的长度相对应的寻址数量之间的乘积。例如,嵌入表中的表项具有固定长度的数据元素,例如32比特浮点数。在此情况下,第一存储器240中用于嵌入表项的存储空间可以确定为小于或等于16GB,使得嵌入表项的物理地址能够表示为32比特。由此,第一存储器240中用于嵌入表的范围使得相比于通常64比特的通用地址,能够更高效地表示指向嵌入表项的地址。
关于主存储器250,其可与中央处理单元(CPU)(未示出)相关联并且可以通过例如PCIe连接到第一处理单元210和第一存储器240。主存储器250例如包括但不限于动态随机存取存储器(DRAM)。主存储器250中可以存储多个数据项,例如包括但不限于多个嵌入表1-n。
可以经由直接存储器访问(DMA)将多个数据项,例如嵌入表1-n中的至少一部分嵌入表或者嵌入表中的多个表项,从主存储器250复制到第一存储器240。
在一些实施例中,第一处理单元210可以被配置为经由片上网络220向近存储器处理单元230发送第一指令,第一指令包括第一地址、多个第二地址和操作类型,第一地址和多个第二地址与第一存储器240相关联。
第一地址和多个第二地址的长度例如可以为32比特。第一指令中包括的第二地址的数量可以基于片上网络的带宽和第二地址的长度来确定,例如可以通过片上网络的总线带宽除以第二地址的长度来确定第一指令中的第二地址的数量。
例如,在片上网络220的总线带宽为1024比特以及第二地址长度为32比特的情况下,可以确定第一指令中可以包括32个第二地址。又如,在片上网络220的总线带宽为2048比特以及第二地址长度为64比特的情况下,可以确定第一指令中可以包括32个第二地址,或者在片上网络220的总线带宽为2048比特以及第二地址长度为32比特的情况下,可以确定第一指令中可以包括64个第二地址。由此,第二地址的数量能够充满片上网络的总线带宽,从而实现更好的总线利用率。
近存储器处理单元230可以被配置为响应于第一指令,对第一存储器240的多个第二地址上的多个数据项执行与操作类型相关联的操作,以生成操作结果。操作类型例如包括但不限于池化、拼接。
具体来说,近存储器处理单元230可被配置为响应于第一指令,从第一存储器240的多个第二地址上获取多个数据项,以及对获取的多个数据项执行与操作类型相关联的操作,以生成操作结果。
生成操作结果之后,近存储器处理单元230还可以被配置为将操作结果存储到第一存储器240的第一地址。
第一处理单元210还被配置为发出清空(flush)指令,以用于使得第一地址上的操作结果对于第一处理单元210可见。例如,第一指令可能在片上网络的某处缓存或排队,发出清空指令可使得在片上网络的某处缓存或排队的第一指令得到执行,从而生成并在第一地址存储操作结果。
第一处理单元210还被配置为发出读取指令,以用于读取第一地址上的操作结果到第一处理单元210。
由此,通过每近存储器单元分配用于操作结果的地址空间能够灵活处理一个或多个用户的数据,随后由于片上网络中的缓存高效地充满片上网络的总线能够高效地将处理后的结果读取回第一处理单元。
在一些实施例中,第一指令中的多个第二地址可形成第一序列,例如A[0],A[1],…A[31]。第一指令中还可包括第二序列,第二序列用于指示与多个用户相关联的多个连续地址个数的。例如,m个用户,每个用户的连续地址个数为n[i],i=0,1,…m-1。
近存储器处理单元230还可以被配置为基于第二序列,将第一序列划分为多个地址集合。
以上文的第一序列和第二序列为例,可以将第一序列分为A[0]-A[n[0]-1],A[n[0]]-A[n[0]+n[1]-1],A[n[0]+n[1]]-A[n[0]+n[1]+n[2]-1],……A[n[0]+n[1]++n[2]+…+n[m-1]]-A[31]这m个地址集合。具体来说,以m为3,第二序列为10,15,7举例来说明,可以将第一序列划分为A[0]-A[9],A[10]-A[24],以及A[25]-A[31]这3个地址集合。
近存储器处理单元230还可以被配置为对多个地址集合上的多个数据集合分别执行与操作类型相关联的操作,以生成与多个用户相关联的多个操作结果,多个数据集合中的数据集合包括多个数据项中的至少一个数据项。
以A[0]-A[9],A[10]-A[24],以及A[25]-A[31]这3个地址集合和池化操作来举例说明,对A[0]-A[9]上的10个数据项进行相加,生成用户1的操作结果1,对A[10]-A[24]上的15个数据项进行相加,生成用户2的操作结果2,以及对A[25]-A[31]上的7个数据项进行相加,生成用户3的操作结果3。
近存储器处理单元230还可以被配置为基于第一地址、与多个用户相关联的多个连续地址个数在第二序列中的位置以及数据项的长度,确定与多个用户相关联的多个第三地址。
具体来说,与用户相关联的第三地址例如可以等于第一地址+(该用户的连续地址个数在第二序列中的位置*数据项的长度)。还是以以m为3,第二序列为10,15,7,数据项的长度为32比特来举例来说明,用户1的连续地址个数10在第二序列中的位置为0,则与用户1相关联的第三地址可以等于第一地址+(0*32比特),用户2的连续地址个数15在第二序列中的位置为1,则与用户2相关联的第三地址可以等于第一地址+(1*32比特),用户3的连续地址个数7在第三序列中的位置为2,则与用户3相关联的第三地址可以等于第一地址+(2*32比特)。
近存储器处理单元230还可以被配置为将多个操作结果存储到第一存储器的多个第三地址。
继续上面的例子,可以将操作结果1存储在第一地址+(0*数据项的长度),将操作结果2存储在第一地址+(1*数据项的长度),以及将操作结果3存储在第一地址+(2*数据项的长度)。
由此,能够针对与多个用户相关联的第一指令,实现多用户的数据处理和结果存储,便于用于多用户的结果读取。在单个用户的数据地址不足以充满片上网络的总线带宽的情况下,通过在第一指令中结合多个用户的数据地址,能够充满总线带宽,提高总线利用率,从而高效地将数据传输回第一处理单元。
备选地或者附加地,在一些实施例中,第一处理单元210可以被配置为经由片上网络220向第一存储器240发送写入指令,写入指令包括第一地址和多项写入数据,以用于将多项写入数据写入第一存储器240的第一地址。写入数据例如包括但不限于权重梯度,用于被加到对应表项上,对应表项例如权重。
例如,可以将多项写入数据写入第一存储器240中以第一地址开始的地址空间上。以3项写入数据为例,可以将第1项写入数据写入第一地址,将第2项写入数据写入与第一地址+数据项的长度相对应的地址,将第3项写入数据写入与第一地址+2*数据项的长度相对应的地址。
第一处理单元210还可以被配置为发出清空指令,以用于使得第一地址上的多项写入数据对于第一处理单元210可见。例如,写入指令可能在片上网络的某处缓存或排队,发出的清空指令将促使在片上网络220中缓存或排队的写入指令得到执行,从而使得多项写入数据被写入到第一存储器240的第一地址,从而对于第一处理单元210可见。
第一处理单元210还可以被配置为经由片上网络210向近存储器处理单元230发送更新指令,更新指令包括第一地址和多个第二地址。更新指令用于指示近存储器处理单元230将第一地址上的多项写入数据与多个第二地址上的多个数据项进行预定操作,并将操作结果作为多个数据项的更新结果更新到多个第二地址上。应当理解,多项写入数据的数量和多个数据项的数量是相匹配的。在一些实施例中,多个第二地址与一个或多个用户相关联。
更新指令中包括的第二地址的数量可以基于片上网络的带宽和第二地址的长度来确定,例如可以通过片上网络的总线带宽除以第二地址的长度来确定第一指令中的第二地址的数量。第一地址和第二地址的其他说明可参见上文,这里不再赘述。数据项例如包括但不限于嵌入表项,通常也称为权重。
近存储器处理单元230还可以被配置为响应于更新指令,将第一存储器240的多个第二地址上的多个数据项与第一地址上的多项写入数据进行预定操作,以生成经更新的多个数据项。预定操作例如包括但不限于相加、相减。
具体来说,近存储器处理单元230可以被配置为响应于更新指令,从第一存储器240的多个第二地址读取多个数据项,以及从第一存储器240的第一地址读取多项写入数据,并对读取的多个数据项和多项写入数据分别进行预定操作,生成经更新的多个数据项。
近存储器处理单元230还可以被配置为将经更新的多个数据项存储到多个第二地址。
由此,通过在近存储器处理单元执行对数据的诸如相加的预定操作,避免了将诸如表项的数据提取到诸如向量处理器的第一处理单元,因此极大地降低了数据移动开销。此外,通过每近存储器单元分配用于中间写入数据的地址空间能够对于一次更新灵活处理一个或多个用户的数据。一次通过片上网络传输一大块数据的方式相比于通过片上网络多次传输一小块数据也更高效。
图3示出了根据本公开的实施例的用于加载数据的方法300的示意图。应当理解的是,方法300还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框302处,第一处理单元210经由片上网络220向近存储器处理单元230发送第一指令,第一指令包括第一地址、多个第二地址和操作类型,第一地址和多个第二地址与第一存储器240相关联。
在框304处,近存储器处理单元230响应于第一指令,对第一存储器240的多个第二地址上的多个数据项执行与操作类型相关联的操作,以生成操作结果。
具体来说,近存储器处理单元230可响应于第一指令,从第一存储器240的多个第二地址上获取多个数据项,随后对获取的多个数据项执行与操作类型相关联的操作,以生成操作结果。
在框306处,近存储器处理单元230将操作结果存储到第一存储器240的第一地址。
在框308处,第一处理单元210发出清空指令,以用于使得第一地址上的操作结果对于第一处理单元210可见。
在框310处,第一处理单元210发出用于读取指令,以用于读取第一地址上的操作结果到第一处理单元210。
由此,通过每近存储器单元分配用于操作结果的地址空间能够灵活处理一个或多个用户的数据,随后由于片上网络中的缓存高效地充满片上网络的总线能够高效地将处理后的结果读取回第一处理单元。
在一些实施例中,第一指令中的多个第二地址可形成第一序列。第一指令中还可以包括第二序列,第二序列用于指示与多个用户相关联的多个连续地址个数。
在此情况下,近存储器处理单元230可以基于第二序列,将第一序列划分为多个地址集合。
近存储器处理单元230可以对多个地址集合上的多个数据集合分别执行与操作类型相关联的操作,以生成与多个用户相关联的多个操作结果,多个数据集合中的每一个数据集合包括多个数据项中的至少一个数据项。
近存储器处理单元230可以基于第一地址、与多个用户相关联的多个连续地址个数在第二序列中的位置以及数据项的长度,确定与多个用户相关联的多个第三地址。
近存储器处理单元230可以将多个操作结果存储到第一存储器240的多个第三地址。
下文示出了当操作类型是池化的情况下在近存储器处理单元230处执行的示例逻辑流程。
Figure BDA0002774358370000111
由此,能够针对与多个用户相关联的第一指令,实现多用户的数据处理和结果存储,便于用于多用户的结果读取。在单个用户的数据地址不足以充满片上网络的总线带宽的情况下,通过在第一指令中结合多个用户的数据地址,能够充满总线带宽,提高总线利用率,从而高效地将数据传输回第一处理单元。
图4示出了根据本公开的实施例的用于更新数据的方法400的示意图。应当理解的是,方法400还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框402处,第一处理单元210经由片上网络220向第一存储器240发送写入指令,写入指令包括第一地址和多项写入数据,以用于将多项写入数据写入第一存储器240的第一地址。
在框404处,第一处理单元210发出清空指令,以用于使得第一地址上的多项写入数据对于第一处理单元210可见。
在框406处,第一处理单元210经由片上网络220向近存储器处理单元230发送更新指令,更新指令包括第一地址和多个第二地址。
在框408处,近存储器处理单元230响应于更新指令,将第一存储器的多个第二地址上的多个数据项与第一地址上的多项写入数据进行预定操作,以生成经更新的多个数据项。
在框410处,近存储器处理单元230将经更新的多个数据项存储到多个第二地址。
下文示出了当预定操作是相加的情况下在近存储器处理单元230处执行的示例逻辑流程。
Figure BDA0002774358370000121
由此,通过在近存储器处理单元执行对数据的诸如相加的预定操作,避免了将诸如表项的数据提取到诸如向量处理器的第一处理单元,因此极大地降低了数据移动开销。此外,通过每近存储器单元分配用于中间写入数据的地址空间能够对于一次更新灵活处理一个或多个用户的数据。一次通过片上网络传输一大块数据的方式相比于通过片上网络多次传输一小块数据也更高效。
本领域技术人员可以理解,这里所描述的方法步骤不仅仅局限于附图中所示例性示出的顺序,而是可以按照任何其他可行的顺序来执行。
本公开的以上描述用于使本领域的任何普通技术人员能够实现或使用本公开。对于本领域普通技术人员来说,本公开的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本公开的精神和保护范围的情况下应用于其它变形。因此,本公开并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。

Claims (20)

1.一种用于加载数据的方法,包括:
第一处理单元经由片上网络向近存储器处理单元发送第一指令,所述第一指令包括第一地址、多个第二地址和操作类型,所述第一地址和所述多个第二地址与第一存储器相关联;
所述近存储器处理单元响应于所述第一指令,对所述第一存储器的所述多个第二地址上的多个数据项执行与所述操作类型相关联的操作,以生成操作结果;
所述近存储器处理单元将所述操作结果存储到所述第一存储器的第一地址;
所述第一处理单元发出清空指令,以用于使得所述第一地址上的操作结果对于所述第一处理单元可见;以及
所述第一处理单元发出读取指令,以用于读取所述第一地址上的操作结果到所述第一处理单元。
2.根据权利要求1所述的方法,其中所述近存储器处理单元对所述第一存储器的所述多个第二地址上的多个数据项执行与所述操作类型相关联的操作包括:
基于第二序列,将由所述多个第二地址形成的第一序列划分为多个地址集合,所述第二序列包括在所述第一指令中并且用于指示与多个用户相关联的多个连续地址个数;以及
对所述多个地址集合上的多个数据集合分别执行与所述操作类型相关联的操作,以生成与所述多个用户相关联的多个操作结果,所述多个数据集合中的每一个数据集合包括所述多个数据项中的至少一个数据项。
3.根据权利要求2所述的方法,其中所述近存储器处理单元将所述操作结果存储到所述第一存储器的第一地址包括:
基于所述第一地址、所述多个连续地址个数在所述第二序列中的位置以及所述数据项的长度,确定与所述多个用户相关联的多个第三地址;以及
将所述多个操作结果存储到所述第一存储器的所述多个第三地址。
4.根据权利要求1所述的方法,其中所述多个数据项经由直接存储器访问从主存储器复制到所述多个第二地址。
5.根据权利要求1所述的方法,其中所述第二地址的数量基于所述片上网络的带宽和所述第二地址的长度而确定。
6.根据权利要求1所述的方法,所述第一地址和所述多个第二地址的长度为32比特。
7.根据权利要求1所述的方法,其中所述第一处理单元包括向量处理单元。
8.根据权利要求1所述的方法,其中所述多个数据项所占据的存储空间小于或者等于数据项的长度和与所述第二地址的长度相对应的寻址数量之间的乘积。
9.根据权利要求1所述的方法,其中所述多个数据项包括多个嵌入表项。
10.根据权利要求9所述的方法,其中所述操作类型包括池化或拼接。
11.一种计算装置,包括:
第一处理单元;
第一存储器,与所述第一处理单元经由片上网络相连;
近存储器处理单元,与所述第一存储器耦接;
所述第一处理单元被配置为经由所述片上网络向所述近存储器处理单元发送第一指令,所述第一指令包括第一地址、多个第二地址和操作类型,所述第一地址和所述多个第二地址与所述第一存储器相关联;
所述近存储器处理单元被配置为响应于所述第一指令,对所述第一存储器的所述多个第二地址上的多个数据项执行与所述操作类型相关联的操作,以生成操作结果;以及
所述近存储器处理单元还被配置为将所述操作结果存储到所述第一存储器的第一地址;
所述第一处理单元还被配置为发出清空指令,以用于使得所述第一地址上的操作结果对于所述第一处理单元可见;以及
所述第一处理单元还被配置为发出读取指令,以用于读取所述第一地址上的操作结果到所述第一处理单元。
12.根据权利要求11所述的计算装置,其中所述近存储器处理单元还被配置为执行以下步骤:
基于第二序列,将由所述多个第二地址形成的第一序列划分为多个地址集合,所述第二序列包括在所述第一指令中并且用于指示与多个用户相关联的多个连续地址个数;以及
对所述多个地址集合上的多个数据集合分别执行与所述操作类型相关联的操作,以生成与所述多个用户相关联的多个操作结果,所述多个数据集合中的每一个数据集合包括所述多个数据项中的至少一个数据项。
13.根据权利要求12所述的计算装置,其中所述近存储器处理单元还被配置为执行以下步骤:
基于所述第一地址、所述多个连续地址个数在所述第二序列中的位置以及所述数据项的长度,确定与所述多个用户相关联的多个第三地址;以及
将所述多个操作结果存储到所述第一存储器的所述多个第三地址。
14.根据权利要求11所述的计算装置,其中所述第一存储器与主存储器耦接,以及所述多个数据项经由直接存储器访问从主存储器复制到所述多个第二地址。
15.根据权利要求11所述的计算装置,其中所述第二地址的数量基于所述片上网络的带宽和所述第二地址的长度而确定。
16.根据权利要求11所述的计算装置,所述第一地址和所述多个第二地址的长度为32比特。
17.根据权利要求11所述的计算装置,其中所述第一处理单元包括向量处理单元。
18.根据权利要求11所述的计算装置,其中所述多个数据项所占据的存储空间小于或等于数据项的长度和与所述第二地址的长度相对应的寻址数量之间的乘积。
19.根据权利要求11所述的计算装置,其中所述多个数据项包括多个嵌入表项。
20.根据权利要求19所述的计算装置,其中所述操作类型包括池化或拼接。
CN202011260055.8A 2020-11-12 2020-11-12 计算装置以及用于加载或更新数据的方法 Active CN112380150B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202011260055.8A CN112380150B (zh) 2020-11-12 2020-11-12 计算装置以及用于加载或更新数据的方法
US17/523,833 US11669327B2 (en) 2020-11-12 2021-11-10 Computing device and method for loading data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011260055.8A CN112380150B (zh) 2020-11-12 2020-11-12 计算装置以及用于加载或更新数据的方法

Publications (2)

Publication Number Publication Date
CN112380150A CN112380150A (zh) 2021-02-19
CN112380150B true CN112380150B (zh) 2022-09-27

Family

ID=74583152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011260055.8A Active CN112380150B (zh) 2020-11-12 2020-11-12 计算装置以及用于加载或更新数据的方法

Country Status (2)

Country Link
US (1) US11669327B2 (zh)
CN (1) CN112380150B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112100121B (zh) * 2020-11-17 2021-02-12 北京壁仞科技开发有限公司 计算装置、计算设备以及可编程调度方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8200992B2 (en) * 2007-09-24 2012-06-12 Cognitive Electronics, Inc. Parallel processing computer systems with reduced power consumption and methods for providing the same
US9208084B2 (en) * 2009-06-29 2015-12-08 Oracle America, Inc. Extended main memory hierarchy having flash memory for page fault handling
WO2012174128A1 (en) * 2011-06-13 2012-12-20 Paneve, Llc General purpose digital data processor, systems and methods
US8836709B2 (en) * 2011-08-18 2014-09-16 International Business Machines Corporation Vector register file caching of context data structure for maintaining state data in a multithreaded image processing pipeline
EP2771797A4 (en) * 2011-10-28 2015-08-05 Univ California MULTICOUSE COMPUTER PROCESSOR
US8966457B2 (en) * 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
CN107092561B (zh) * 2011-12-29 2021-03-12 英特尔公司 具有直接存取的多级存储器
EP3060982A4 (en) * 2013-10-25 2017-06-28 Advanced Micro Devices, Inc. Ordering and bandwidth improvements for load and store unit and data cache
US9619396B2 (en) * 2015-03-27 2017-04-11 Intel Corporation Two level memory full line writes
CN105721354B (zh) * 2016-01-18 2019-06-14 云南磊奥明科技有限公司 片上网络互联方法及装置
US10423446B2 (en) * 2016-11-28 2019-09-24 Arm Limited Data processing
US10740236B2 (en) * 2017-05-12 2020-08-11 Samsung Electronics Co., Ltd Non-uniform bus (NUB) interconnect protocol for tiled last level caches
US10592424B2 (en) * 2017-07-14 2020-03-17 Arm Limited Range-based memory system

Also Published As

Publication number Publication date
US20220147354A1 (en) 2022-05-12
US11669327B2 (en) 2023-06-06
CN112380150A (zh) 2021-02-19

Similar Documents

Publication Publication Date Title
US11074190B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
EP3493084B1 (en) Method for processing data in bloom filter and bloom filter
JP6505132B2 (ja) メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法
JP5203358B2 (ja) データをプリフェッチする装置および方法
US20180011791A1 (en) Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US11349639B2 (en) Circuit and method for overcoming memory bottleneck of ASIC-resistant cryptographic algorithms
CN101361049B (zh) 用于高级高速缓存驱逐候选对象标识的巡查窥探
JP6599898B2 (ja) 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供
CN107430550B (zh) 非对称集组合的高速缓存
CN105144120A (zh) 基于存储器地址将来自高速缓存行的数据存储到主存储器
CN109918131B (zh) 一种基于非阻塞指令cache的指令读取方法
CN105446897A (zh) 高速缓存哈希
CN113934655B (zh) 解决高速缓冲存储器地址二义性问题的方法和装置
JP2018503924A (ja) 中央処理ユニット(cpu)ベースのシステム内の圧縮メモリコントローラ(cmc)による連続読取り動作を使用するメモリ帯域幅圧縮の提供
CN112380150B (zh) 计算装置以及用于加载或更新数据的方法
CN112380147B (zh) 计算装置以及用于加载或更新数据的方法
WO2020135209A1 (zh) 减少存储体冲突的方法
CN115033185A (zh) 访存处理方法和装置、存储装置、芯片、板卡、电子设备
JP3935871B2 (ja) パイプラインを有する計算回路のためのメモリ・システムおよびパイプラインの機能ユニットにデータを提供する方法
TWI759397B (zh) 用於比較並交換異動的裝置、主機設備及方法
US20180129605A1 (en) Information processing device and data structure
US10789176B2 (en) Technologies for a least recently used cache replacement policy using vector instructions
CN114924794B (zh) 一种存储部件的发射队列的地址存储、调度方法和装置
CN112559389A (zh) 存储控制装置、处理装置、计算机系统和存储控制方法
CN113656330B (zh) 确定访问地址的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai

Patentee after: Shanghai Bi Ren Technology Co.,Ltd.

Country or region after: China

Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai

Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address