CN112380150B - 计算装置以及用于加载或更新数据的方法 - Google Patents
计算装置以及用于加载或更新数据的方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000012545 processing Methods 0.000 claims abstract description 164
- 230000015654 memory Effects 0.000 claims abstract description 163
- 239000013598 vector Substances 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 13
- 238000011176 pooling Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- 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/781—On-chip cache; Off-chip memory
-
- 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/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction 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处执行的示例逻辑流程。
由此,能够针对与多个用户相关联的第一指令,实现多用户的数据处理和结果存储,便于用于多用户的结果读取。在单个用户的数据地址不足以充满片上网络的总线带宽的情况下,通过在第一指令中结合多个用户的数据地址,能够充满总线带宽,提高总线利用率,从而高效地将数据传输回第一处理单元。
图4示出了根据本公开的实施例的用于更新数据的方法400的示意图。应当理解的是,方法400还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框402处,第一处理单元210经由片上网络220向第一存储器240发送写入指令,写入指令包括第一地址和多项写入数据,以用于将多项写入数据写入第一存储器240的第一地址。
在框404处,第一处理单元210发出清空指令,以用于使得第一地址上的多项写入数据对于第一处理单元210可见。
在框406处,第一处理单元210经由片上网络220向近存储器处理单元230发送更新指令,更新指令包括第一地址和多个第二地址。
在框408处,近存储器处理单元230响应于更新指令,将第一存储器的多个第二地址上的多个数据项与第一地址上的多项写入数据进行预定操作,以生成经更新的多个数据项。
在框410处,近存储器处理单元230将经更新的多个数据项存储到多个第二地址。
下文示出了当预定操作是相加的情况下在近存储器处理单元230处执行的示例逻辑流程。
由此,通过在近存储器处理单元执行对数据的诸如相加的预定操作,避免了将诸如表项的数据提取到诸如向量处理器的第一处理单元,因此极大地降低了数据移动开销。此外,通过每近存储器单元分配用于中间写入数据的地址空间能够对于一次更新灵活处理一个或多个用户的数据。一次通过片上网络传输一大块数据的方式相比于通过片上网络多次传输一小块数据也更高效。
本领域技术人员可以理解,这里所描述的方法步骤不仅仅局限于附图中所示例性示出的顺序,而是可以按照任何其他可行的顺序来执行。
本公开的以上描述用于使本领域的任何普通技术人员能够实现或使用本公开。对于本领域普通技术人员来说,本公开的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本公开的精神和保护范围的情况下应用于其它变形。因此,本公开并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。
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所述的计算装置,其中所述操作类型包括池化或拼接。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100121B (zh) * | 2020-11-17 | 2021-02-12 | 北京壁仞科技开发有限公司 | 计算装置、计算设备以及可编程调度方法 |
Family Cites Families (13)
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 |
-
2020
- 2020-11-12 CN CN202011260055.8A patent/CN112380150B/zh active Active
-
2021
- 2021-11-10 US US17/523,833 patent/US11669327B2/en active Active
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 |