CN115454502A - 用于调度simt架构处理器的返回数据的方法及相应处理器 - Google Patents
用于调度simt架构处理器的返回数据的方法及相应处理器 Download PDFInfo
- Publication number
- CN115454502A CN115454502A CN202211069312.9A CN202211069312A CN115454502A CN 115454502 A CN115454502 A CN 115454502A CN 202211069312 A CN202211069312 A CN 202211069312A CN 115454502 A CN115454502 A CN 115454502A
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- memory
- read data
- processor
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000013500 data storage Methods 0.000 claims abstract description 31
- 238000013507 mapping Methods 0.000 claims description 49
- 230000004044 response Effects 0.000 claims description 6
- 239000000284 extract Substances 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or 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/0877—Cache access modes
- G06F12/0884—Parallel mode, e.g. in parallel with main memory or CPU
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了用于调度SIMT处理器的返回数据的方法及相应处理器,其中在高速缓冲存储器准备好与来自处理器的访存控制单元的访存请求对应的读数据之后,向访存控制单元发送指示读数据准备好的通知,而非直接返回数据本身,同时对保存读数据的缓存块进行锁定;访存控制单元根据处理器对数据的访问次序从高速缓冲存储器中提取相应访存请求的读数据存入处理器的寄存器堆。在该解决方案中,处理器的访存控制单元利用高速缓冲存储器的数据存储空间充当对返回数据进行调度的临时存储空间,既不会增加额外的硬件成本,又改善了处理器内部存储空间的利用率。
Description
技术领域
本申请涉及处理器中访存数据处理,尤其涉及并行处理器中返回数据的调度方法及相应处理器。
背景技术
本部分的陈述仅仅是为了提供与本申请的技术方案有关的背景信息,以帮助理解,其对于本申请的技术方案而言并不一定构成现有技术。
在诸如GPGPU之类的并行处理器中,通常采用单指令多线程(SIMT,SingleInstruction Multiple Threads)架构来实现数据的并行处理以提高性能。在SIMT处理器中,允许同一条指令的多数据分开寻址,即同一条指令中包含的多个线程可以同时访问不同地址的数据。SIMT处理器中各个计算核心(core)的访存请求都会发送到处理器的访存控制单元(LSU,Load/Store Unit)。访存控制单元可以对这些线程的访存请求执行诸如合并相同地址的请求之类的预处理操作,然后会把这些访存请求发到L1缓存。如果访存请求需要的数据在L1缓存中(即命中),L1缓存会将相关的数据返回给访存控制单元LSU;如果没有命中,则L1缓存会从下一级存储器读取相关数据,然后返回给访存控制单元。这些返回的数据(也可统称为返回数据)最终会被LSU放到处理器的寄存器堆中以供各计算核心使用。
然而来自多个线程的不同访存请求在L1缓存中有些会命中,而有些不会命中。命中的情况下,访存请求所访问的数据会及时返回至处理器中,而没有命中的情况下,访存请求所访问的数据会被从下级存储器加载至L1缓存中,然后再进行返回。因此对于这些访存请求返回数据的次序并非是按照访存请求的到达次序依次返回的,而是乱序返回的。因此,先返回至寄存器堆中的数据可能并非是计算核心当前需要执行的数据,而处理器的寄存器资源又有限,当真正所需的数据随后被返回时,可能会面临寄存器资源冲突的问题。尽管可以在访存控制单元中设置一个临时的数据存储空间来暂存从L1缓存返回的数据,然后由访存控制单元根据处理器的执行需求来依次调度这些返回的数据发给处理器,以避免处理器内部寄存器资源的冲突。但在处理器的访存控制单元中设置临时的数据储存空间不仅增加了硬件成本,而且增加了处理器芯片面积开销。尤其是对于SIMT架构的处理器,同一指令的多个线程会涉及大量的读返回数据,要暂存这些读返回数据更是需要一个相对较大的数据存储空间。
需要说明的是,上述内容仅用于帮助理解本申请的技术方案,并不作为评价本申请的现有技术的依据。
发明内容
根据本申请实施例的第一方面,提供了一种用于调度SIMT架构处理器的返回数据的方法,其包括:由访存控制单元将处理器的多个线程的访存请求发送至高速缓冲存储器;由高速缓冲存储器响应于获取到访存请求对应的读数据,向访存控制单元发送指示读数据准备好的通知,并为读数据所在的缓存块设置锁定标记;由访存控制单元根据处理器对数据的访问次序确定各个访存请求对应的读数据的返回次序;由访存控制单元基于所接收的通知并根据所确定的返回次序从高速缓冲存储器中获取相应访存请求的读数据并将其存入处理器的寄存器堆。
在这样的实施例中,该方法利用L1缓存的数据存储空间来充当访存控制单元LSU用于对处理器的返回数据进行调度的临时存储空间,不需要增加任何硬件成本,还改善了处理器内部存储空间的利用率。
在一些实施例中,该方法还可以包括由高速缓冲存储器响应于相应的读数据已经被返回至访存控制单元,为该读数据所在的缓存块清除锁定标记。这样可以使得该缓存块能用于保存其他数据,改善了高速缓冲存储器的存储空间利用率。
在一些实施例中,所述高速缓冲存储器仅对没有锁定标记的缓存块进行替换。该方法还可包括由高速缓冲存储器响应于来自访存控制单元的释放相应读数据的指示,为该读数据所在的缓存块清除锁定标记。这是考虑到同一个读数据,访存控制单元可能会使用或调度很多次,访存控制单元可以在完成对一个读数据的最后一次读取后,通知高速缓冲存储器可以释放这个读数据。这样可以减少高速缓冲存储器的缓存替换频率和访存次数,还可以提高返回数据的利用率。
在一些实施例中,所述指示读数据准备好的通知中包含指示相应读数据在高速缓冲存储器的存储位置的信息。其中从高速缓冲存储器中获取相应的读数据包括:由访存控制单元从指示该读数据准备好的通知中提取指示该读数据在高速缓冲存储器的存储位置的信息,向高速缓冲存储器发送读取该存储位置的数据的读命令;以及由高速缓冲存储器响应于收到所述读命令,从所述存储位置提取相应的数据返回给访存控制单元。
根据本申请实施例的第二方面,提供了一种支持单指令多线程架构的处理器,包括寄存器堆、访存控制单元和高速缓冲存储器。其中访存控制单元被配置为:将处理器的多个线程的访存请求发送至高速缓冲存储器;接收从高速缓冲存储器发送的指示读数据准备好的通知;根据处理器对数据的访问次序确定各个访存请求对应的读数据的返回次序;以及基于所接收的通知并根据所确定的返回次序从高速缓冲存储器中获取相应的读数据并将其存入处理器的寄存器堆。高速缓冲存储器被配置为:接收从访存控制单元发送的多个访存请求;以及响应于获取到访存请求对应的读数据,向访存控制单元发送指示读数据准备好的通知,并为所述读数据所在的缓存块设置锁定标记。
在一些实施例中,高速缓冲存储器可以被配置为响应于来自访存控制单元释放相应的读数据的指示,为该读数据所在的缓存块清除锁定标记。
在一些实施例中,高速缓冲存储器可以被配置为仅对没有锁定标记的缓存块进行替换。
在一些实施例中,高速缓冲存储器可包括控制器、用于保存标签的标签存储单元、由多个缓存块构成的数据存储单元和映射单元。映射单元用于保存标签与缓存块之间的映射关系。所述缓存块的数量大于所述标签的数量,每个缓存块都设置有标签绑定位和状态位,所述标签绑定位用于指示该缓存块是否与标签绑定,所述状态位充当锁定标记,用于指示该缓存块是否被锁定。所述控制器可以被配置为:
对于接收到的访存请求,在缓存命中时从映射单元中确定命中的标签所对应的缓存块,向访存控制单元发送指示读数据准备好的通知,并设置该缓存块的状态位,以指示该缓存块已经被锁定;
对于接收到的访存请求,在缓存未命中时执行下列操作:
在标签存储单元中为该访存请求分配一个标签存储位置以存放该访存请求的访存地址中相应的标签字段,并从数据存储单元中选择未被锁定且未与标签绑定的多个缓存块的其中一个分配给该访存请求;
在映射单元中将所分配的标签存储位置原来对应的缓存块的标签绑定位设置为指示未与标签绑定,接着在该标签存储位置与分配给该访存请求的缓存块之间建立映射关系,并将分配给该访存请求的缓存块的标签绑定位设置为指示已与标签绑定;
从下一级存储器获取该访存请求要访问的数据并将其保存在为该访存请求分配的缓存块中,并向访存控制单元发送指示读数据准备好的通知,以及设置该缓存块的状态位,以指示该缓存块已经被锁定。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
在附图中:
图1为根据本申请一个实施例的用于调度SIMT架构处理器的返回数据的方法的流程示意图。
图2为根据本申请一个实施例的处理器访存单元与L1缓存的交互流程示意图。
图3为根据本申请一个实施例的L1缓存的功能模块结构示意图。
图4为根据本申请一个实施例的L1缓存中标签与缓存块之间的动态映射关系示意图。
具体实施方式
为了使本申请的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本申请进一步详细说明。应当理解,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动下获得的所有其他实施例,都属于本申请保护的范围。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在硬件上,高速缓冲存储器位于处理器和主存之间。为了进一步提升性能,还可以引入多级缓存,在L1缓存后面连接L2缓存,在L2缓存和主存之间连接L3缓存。但在本申请的实施例中以及下文提及的高速缓冲存储器(Cache)指的是在处理器内部包含的L1缓存,即第一级缓存。高速缓冲存储器中通常包括控制器、用于保存标签的标签存储单元和用于保存数据的数据存储单元。Cache的数据存储空间被平均分成相等大小的多个缓存块(也可称为缓存行),每个缓存块都设置有唯一对应的标签,Cache与主存之间的数据传输的最小单位为缓存块大小。虽然标签也是Cache的一部分,但通常提及Cache大小时,仅指Cache最大能容纳的数据总量,即Cache的数据存储单元的存储空间大小。例如Cache大小为64字节,并且缓存块大小是8字节,则该Cache中包括8个缓存块,而Cache的控制器从主存中一次性存取的数据量为8字节。
当Cache的控制器收到访存请求时,其通过访存请求中的地址(可简称为访存地址)来判断数据是否已缓存在Cache中。该访存地址通常包括三个部分:标签(tag)、索引(index)和偏移量(offset)。其中偏移量用于寻址缓存块中某个数据,索引用于定位Cache中的某一个组,而标签用于与通过索引指定的组中包含的各缓存块的对应tag进行比对以判断是否命中。这样,L1缓存在收到访存请求时,通过该访存请求中地址的索引字段可以定位到相应的组,取访存地址中的标签字段与该组中包含的各个缓存块的tag进行比较,如果有匹配的tag,则说明缓存命中,可以根据访存地址中偏移量字段提取与所匹配的tag对应的缓存块中相应数据返回给处理器。如果不相等,则说明要访问的数据不在L1缓存中(即“缺失”或“未命中”)。在缓存未命中的情况下,L1缓存的控制器为要访问的数据分配一个缓存块及其相应tag,从下一级存储器中加载该数据至所分配的缓存块中,并将该访存地址对应的标签字段保存在该缓存块对应的tag中。
发明人在研究中发现,当SIMT架构的处理器中多个线程的不同访存请求经由访存控制单元LSU发送至L1缓存时,有些会命中而有些未命中,而由于现有的L1缓存控制器都是在具有满足访存请求的数据后立刻将其进行返回,因此不同访存请求的数据是乱序返回至访存控制单元。如上文提到的,这可能会最终造成处理器的寄存器资源冲突。如果采用在LSU中设置临时数据存储空间来对返回数据进行调度,不仅会造成硬件成本的增加,而且这样的读返回数据会在L1缓存和LSU中同时有复制,造成了处理器内部存储空间的浪费。
因此,在本申请的实施例中提供了一种用于调度SIMT架构处理器的返回数据的方法,其利用L1缓存的数据存储空间来充当访存控制单元LSU用于对处理器的返回数据进行调度的临时存储空间,不需要增加任何硬件成本,还改善了处理器内部存储空间的利用率。
图1示出了根据本申请一个实施例的用于调度SIMT架构处理器的返回数据的方法的流程示意图。在步骤S1)访存控制单元将处理器的多个线程的访存请求发送至高速缓冲存储器。高速缓冲存储器的控制器会根据访存请求中的访存地址判断该访存请求要访问的数据是否已经被缓存在高速缓冲存储器中,如果没有,则从下一级存储器加载该访存请求对应的数据。
在步骤S2)在高速缓冲存储器准备好访存请求对应的读数据时,并不将准备好的读数据本身直接返回访存控制单元,而是先向访存控制单元发送指示读数据准备好的通知,通知LSU已经相应访存请求的读数据已经准备完毕。在发送指示读数据准备好的通知的同时,高速缓冲存储器需要确保相应读数据保存或锁定在其内部,以便供后续LSU使用。例如,可以通过对保存相应读数据的缓存块设置锁定标记来实现。通过这样的锁定标记指示该缓存块目前被锁定,这样该缓存块中保存的数据暂时不参与L1缓存的替换过程,从而确定在该锁定的缓存块中保存的数据不会被L1缓存替换出去。在一个实施例中,在高速缓冲存储器中为每个缓存块设置专用的状态位来指示该缓存块是否被锁定,以F(false)或0指示未锁定,而T(true)或1指示锁定。这样给缓存块设置或清除锁定标记可以通过调整该缓存块的状态位来实现。
在步骤S3),对于处理器的访存控制单元而言,其可以从L1缓存收到多个访存请求对应的读数据已经准备好的通知。访存控制单元在收到每个访存请求的读数据已经准备好的通知后,并非立即从L1缓存中提取相应数据来发送到处理器的寄存器堆中,而是可根据处理器对数据的访问次序确定对于各个访存请求对应的读数据的返回次序,以便按照这样的返回次序对各个访存请求的读数据进行调度。这样就可以根据处理器处理数据的需求向其返回相应的数据,从而尽量减少了上文提到的处理器寄存器资源冲突的发生。
在步骤S4),访存控制单元按照所确定的返回次序和先前已经收到的各访存请求的相应读数据准备好的通知,从高速缓冲存储器中获取相应的读数据并将其存入处理器的寄存器堆。从L1缓存发给访存控制单元的指示读数据准备好的通知中可以包含指示相应读数据在高速缓冲存储器的存储位置的信息,例如存储该读数据的缓存块的位置、该读数据在缓存块中的偏移量等。这样,当访存控制单元从高速缓冲存储器中获取相应的读数据时,可以从指示该读数据准备好的通知中提取指示该读数据在高速缓冲存储器的存储位置的信息,向高速缓冲存储器发送读取该存储位置的数据的读命令。而高速缓冲存储器响应于收到LSU对于相应读数据的读命令,定位该读数据的存储位置,并提取相应的数据返回给访存控制单元。
在上述的实施例中,访存控制单元并不需要设置大的数据存储空间来暂存各访存请求的返回数据,而只需要保存用于在L1缓存中定位读返回数据的指示信息(例如指针)即可,并不需要保存真正的返回数据本身。这样不仅减小了访存控制单元的硬件成本和处理器芯片面积开销,而且访存控制单元也不会受制于存储数据空间的大小,可以发出更多的访存请求。另外,相同的数据只占用L1缓存的一个存储位置,而不需要在LSU和L1缓存中同时存储,由此改善了处理器的存储空间利用率。尤其是对于SIMT架构的并行处理器,经常涉及来自多个线程的访问相同地址的不同访存请求,所返回的相同数据只需要占用L1缓存的一个数据位置即可。
在一个实施例中,高速缓冲存储器在根据来自访存控制单元的读数据命令将相应的读数据返回至访存控制单元时,可以对于该读数据所在的缓存块清除锁定标记,例如将该缓存块的状态位从1修改为0。这意味着解除锁定后的缓存块中的数据可以被替换出L1缓存中。在又一个实施例中,高速缓冲存储器只有收到来自访存控制单元发出的释放相应的读数据的指示时,才能对该读数据所在的缓存块清除锁定标记。这是考虑到同一个读数据,访存控制单元可能会使用或调度很多次,访存控制单元可以在完成对一个读数据的最后一次读取后,通知L1缓存可以释放这个读数据了。这样,不仅可以提高返回数据的利用率还能优化L1缓存的效率。尤其是对于SIMT架构的并行处理器,经常涉及来自多个线程的不同访存请求访问相同地址,LSU在收到这些访存请求时,可以统计访问该同一地址的访存请求的数量并将其存入一个计数器。这样对与该数据对应的各个访存请求,LSU对于在L1缓存中保存的该数据会执行多次读取,每执行一次,计数器减1,直到最后一次读取完成后,即可指示L1缓存释放该数据。
在本申请的一些实施例中,还提供了一种支持单指令多线程架构的处理器,其访存控制单元和高速缓冲存储器与现有的SIMT处理器不同。在该实施例中,访存控制单元按照上文结合图1介绍的方法对各访存请求的读返回数据进行调度。高速缓冲存储器中每个缓存块都设置有状态位来指示该缓存块是否被锁定。被锁定的缓存块中保存的数据不能被替换出该高速缓冲存储器。该高速缓冲存储器的控制器按照上文结合图1介绍的方法参与对各访存请求对应的数据的调度,在此不再赘述。
图2给出了在根据本发明一个实施例的处理器中,在进行返回数据的调度时访存单元与L1缓存的交互流程示意。如图2所示,L1缓存的控制器在获取到访存请求对应的读数据时,向访存控制单元发送指示读数据准备好的通知。该访存控制单元接收并保存来自L1缓存发出的各访存请求对应的读数据准备好的通知,在根据处理器对数据的访问次序确定各个访存请求对应的读数据的返回次序后,依次向L1缓存发出指示读取相应数据的读数据命令。L1缓存的控制器根据收到的读数据命令从其数据存储单元提取相应数据返回给访存控制单元。当访存控制单元处理完某个访存请求时,可以向L1缓存发出释放该访存请求对应的读数据的指示。L1缓存的控制器基于来自访存控制单元的释放数据的指示,对存放相应数据的缓存块的锁定标记进行清除,以允许该缓存块能参与L1缓存的替换过程。
在上述实施例的处理器中,利用L1缓存的数据存储空间来充当访存控制单元LSU用于对处理器的返回数据进行调度的临时存储空间,不需要增加任何硬件成本,还改善了处理器内部存储空间的利用率。
图3给出了可适用于本申请实施例的方法及处理器的L1缓存300的功能模块结构示意图。该L1缓存不仅包括控制器301、用于保存标签的标签存储单元302、由多个缓存块构成的数据存储单元303,还包括映射单元304。其中映射单元304用于保存标签与缓存块之间的映射关系。
与现有的L1缓存中标签与缓存块一一对应的固定映射关系不同,在L1缓存300中标签与缓存块之间是动态映射的。也就是每个标签不再固定地与某个缓存块绑定,而是可以动态地映射到或绑定于任一个缓存块。数据存储单元303中缓存块的数量大于标签存储单元302中所包含的标签的数量。每个缓存块可以与一个标签绑定,也可以不与任一标签绑定。每个缓存块都设置有标签绑定位和状态位。标签绑定位用于指示该缓存块是否与标签绑定,例如当缓存块与某个标签绑定时,可以将其标签绑定位设置为1、y或T等,而缓存块不再绑定任何标签时,可将其标签绑定位设置为0、n或F等。状态位可以充当上述的缓存块锁定标记,用于指示该缓存块是否已经被锁定。每个缓存块只有在未绑定任何标签且未被锁定的情况下,才允许释放其中的数据资源,即可以参与L1缓存的数据替换,可用于存放新的数据。
在该实施例中,标签与缓存块之间的映射关系被保存在映射单元304中。映射单元304例如可以表格的形式保存标签序号与缓存块序号之间的一一映射关系。标签序号用于指示标签存储单元302中保存的每个标签的位置。缓存块序号用于指示数据存储单元303中每个缓存块的位置。图4给出了根据本申请一个示例的标签与缓存块之间的映射关系示意图。如图4所示,标签存储单元中共有k+1个标签,而数据存储单元中共有n+1个缓存块,其中n和k都是自然数,且n大于k。映射单元中保存有这k+1个标签当前与各个缓存块的映射关系。第1个标签t0当前映射至第6个缓存块d5,第2个标签t1当前映射至第9个缓存块d8,……,第k+1个标签当前映射至第24个缓存块d23。由于缓存块数量大于标签数量,因此数据存储单元中会存在一些缓存块未绑定任何标签。对于这些未绑定任何标签的缓存块中存放的数据,有些已经被锁定,而有些未被锁定。这些状态可以根据各个缓存块的tag绑定位和状态位来指示。可以看出,映射单元304所保存的标签与缓存块之间的映射关系实际上所体现或反映的是标签存储单元302中各个存储位置当前保存的标签与数据存储单元303中相应缓存块当前保存的数据块之间的映射关系。因此也可以理解为映射单元304记录的是标签的存储位置与其对应数据的存储位置之间的映射。
在现有的L1缓存中,标签和缓存块中的数据是固定绑定的一一对应关系,二者必须是同步更新的。即当每个缓存块中的数据更新时,该缓存块对应的标签也会同时被更新;反之亦然,当标签存储单元302的某个存储位置保存的标签更新时,与该标签对应的缓存块中的数据也一定会被同时更新。而在本申请的实施例中,通过引入了映射单元304实现了标签与缓存块中数据的动态映射或动态绑定。标签和缓存块中的数据可以不必同步更新。例如,当标签存储单元302中某个存储位置保存的标签被替换为新标签时,可以在数据存储单元303中为该新标签对应的数据分配新的缓存块,并在映射单元304中建立该新标签与新分配的缓存块之间的映射即可,而与原来在该存储位置保存的旧标签相对应的缓存块中的数据仍然保留在数据存储单元303中。也就是说,在本申请的高速缓冲存储器中,其数据存储单元中有些缓存块是与标签相绑定的,而有些缓存块处于没有绑定标签的状态。而对于这些处于没有绑定标签状态的缓存块,其中一些时被锁定的缓存块,如上文提到的供访存控制单元临时暂存返回数据。待访存控制单元对该缓存块中的数据操作完毕时,会发出释放数据的指示。L1缓存的控制器只有在收到来自访存控制单元的释放数据的指示之后,才会对存储相应数据的缓存块清除锁定标记,使得该缓存块可以被用来重新使用的,即允许其中缓存新的数据。而对于没有绑定标签状态但被锁定的缓存块,则不允许其参与重新分配或任何更新操作。
采用通过这种动态映射方式避免了由于访存控制单元需要利用L1缓存的数据存储空间来临时暂存返回数据对于L1缓存正常工作模式的影响,可以在不改变L1缓存的现有标签检索范围和存储空间的情况下,SIMT处理器多个线程的访存请求的读返回数据无条件地临时暂存在L1缓存中。因此,通过实施例的方案在不影响L1缓存性能的情况下,利用L1缓存的数据存储空间来充当访存控制单元进行数据调度的临时存储空间,既避免了较大的硬件成本开销,又改善了处理器内部存储空间的利用率。
在一些实施例中,映射单元304可以采用诸如SRAM、DRAM之类的随机存取存储器来实现,在其他上以诸如数组、链表等数据结构来保存标签序号与缓存块序号之间的一一映射关系。以数组为例,该数组中元素的数量为标签存储单元302中可存储的标签的数量。数组中第一个元素中保存的是标签存储单元302中第一个标签当前所对应的缓存块的序号,依次类推。在又一些实施例中,映射单元304可以采用寄存器的形式实现,例如,将映射单元304实现为一组寄存器,各个寄存器分别对应于标签存储单元302中各标签的存储位置,而每个寄存器的值为相应位置的标签对应的缓存块的序号。这样的采用寄存器形式实现的映射单元可以进一步减少L1缓存中对于映射关系的存储所占的成本和面积,提高解析标签和缓存块之间映射关系的速度。
继续参考图3,当该L1缓存300接收到自SIMT处理器的访存控制单元LSU发送的访存请求时,控制器301对于接收到的访存请求中包含的访存地址进行解析。根据访存地址中索引字段定位到相应的组,然后将访存请求中标签字段与所定位的组中包含的标签进行比较。如果能找到匹配的标签,则缓存命中,说明该访存请求要访问的数据已经被缓存在该高速缓冲存储器中。如果比对完所有的标签都没有找到相匹配的标签,则说明该访存请求要访问的数据还没缓存在该L1缓存中,此时控制器301需要从下一级存储器(例如L2缓存或主存等)中将该访存请求要访问的数据读取至L1缓存中。
在缓存命中的情况下,控制器301根据映射单元304中所保存的标签与缓存块的映射关系确定该命中的标签对应的是哪个缓存块,向访存控制单元发送指示读数据准备好的通知,并设置该缓存块的状态位,以指示该缓存块已经被锁定。
在缓存未命中的情况下,控制器301为该访存请求分配一个标签,例如将访存请求中包含的访存地址的标签部分作为新分配的标签,并将新分配的标签保存在标签存储单元302中,这时需要用该新分配的标签去替换在标签存储单元302的其中一个存储位置保存的原有标签,从而实现标签的更新。实际上就是在标签存储单元302为该访存请求的标签分配了存储位置。同时,控制器301还需要在数据存储单元303中为该访存请求分配一个缓存块,以便能存放从下一级存储器中读取的该访存请求要访问的数据。为了在分配给该访存请求的标签和缓存块之间建立对应关系,控制器301还需要更新映射单元304中标签与缓存块之间的映射关系,以使得标签存储单元302中分配给该访存请求的标签与在数据存储单元303中分配给该访存请求的缓存块之间建立映射。例如,根据该标签在标签存储单元302中存储位置的序号在映射单元304中查找该标签序号对应的缓存块序号,将找到的缓存块序号对应的缓存块的标签绑定位设置为指示未与标签绑定,并将找到的缓存块序号替换为分配给该访存请求的缓存块在数据存储单元303中的序号。在映射单元304中建立相应映射之后,将分配给该访存请求的缓存块的标签绑定位设置为指示已与标签绑定。接着,控制器301就可以从下一级存储器读取包含该访存请求要访问的数据并将其保存在为该访存请求分配的缓存块中,并向访存控制单元发送指示读数据准备好的通知,以及设置该缓存块的状态位,以指示该缓存块已经被锁定,从而确保该缓存块当前保存的数据不会被L1缓存替换出去。
应理解,对于本文中提到的处理器和高速缓冲存储器中诸如访存控制单元、控制器之类的模块及其执行的方法步骤,除了以纯计算机可读程序代码方式实现之外,完全可以通过将相应功能模块、过程或步骤进行逻辑编程在使得这些模块以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等形式来实现相同功能。因此,这样实现的控制器、访存控制单元等可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件的内部结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现相关过程或方法步骤的软件模块又可以是硬件部件内的结构。
本说明书中针对“各个实施例”、“一些实施例”、“一个实施例”、或“实施例”等的参考指代的是结合所述实施例所描述的特定特征、结构、或性质包括在至少一个实施例中。因此,短语“在各个实施例中”、“在一些实施例中”、“在一个实施例中”、或“在实施例中”等在整个说明书中各地方的出现并非必须指代相同的实施例。此外,特定特征、结构、或性质可以在一个或多个实施例中以任何合适方式组合。因此,结合一个实施例中所示出或描述的特定特征、结构或性质可以整体地或部分地与一个或多个其他实施例的特征、结构、或性质无限制地组合,只要该组合不是非逻辑性的或不能工作。
本说明书中“包括”和“具有”以及类似含义的术语表达,意图在于覆盖不排他的包含,例如包含了一系列步骤或单元的过程、方法、系统、产品或设备并不限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。“一”或“一个”也不排除多个的情况。另外,本申请附图中的各个元素仅仅为了示意说明,并非按比例绘制。
虽然本申请已经通过上述实施例进行了描述,然而本申请并非局限于这里所描述的实施例,在不脱离本申请范围的情况下还包括所做出的各种改变以及变化。
Claims (10)
1.一种用于调度单指令多线程架构处理器的返回数据的方法,所述处理器包括寄存器堆、访存控制单元和高速缓冲存储器,所述方法包括:
由访存控制单元将处理器的多个线程的访存请求发送至高速缓冲存储器;
由高速缓冲存储器响应于获取到访存请求对应的读数据,向访存控制单元发送指示读数据准备好的通知,并为读数据所在的缓存块设置锁定标记;
由访存控制单元根据处理器对数据的访问次序确定各个访存请求对应的读数据的返回次序;
由访存控制单元基于所接收的通知并根据所确定的返回次序从高速缓冲存储器中获取相应访存请求的读数据并将其存入处理器的寄存器堆。
2.根据权利要求1所述的方法,还包括由高速缓冲存储器响应于相应的读数据已经被返回至访存控制单元,为该读数据所在的缓存块清除锁定标记。
3.根据权利要求1所述的方法,还包括由高速缓冲存储器响应于来自访存控制单元的释放相应读数据的指示,为该读数据所在的缓存块清除锁定标记。
4.根据权利要求1-3中任一项所述的方法,其中所述指示读数据准备好的通知中包含指示相应读数据在高速缓冲存储器的存储位置的信息。
5.根据权利要求4所述的方法,其中从高速缓冲存储器中获取相应的读数据包括:
由访存控制单元从指示该读数据准备好的通知中提取指示该读数据在高速缓冲存储器的存储位置的信息,向高速缓冲存储器发送读取该存储位置的数据的读命令;
由高速缓冲存储器响应于收到所述读命令,从所述存储位置提取相应的数据返回给访存控制单元。
6.根据权利要求1-3中任一项所述的方法,其中所述高速缓冲存储器仅对没有锁定标记的缓存块进行替换。
7.一种支持单指令多线程架构的处理器,包括寄存器堆、访存控制单元和高速缓冲存储器,其中:
访存控制单元被配置为:
将处理器的多个线程的访存请求发送至高速缓冲存储器;
接收从高速缓冲存储器发送的指示读数据准备好的通知;
根据处理器对数据的访问次序确定各个访存请求对应的读数据的返回次序;
基于所接收的通知并根据所确定的返回次序从高速缓冲存储器中获取相应的读数据并将其存入处理器的寄存器堆;
高速缓冲存储器被配置为:
接收从访存控制单元发送的多个访存请求;
响应于获取到访存请求对应的读数据,向访存控制单元发送指示读数据准备好的通知,并为所述读数据所在的缓存块设置锁定标记。
8.根据权利要求7所述的处理器,其中高速缓冲存储器被配置为响应于来自访存控制单元释放相应的读数据的指示,为该读数据所在的缓存块清除锁定标记。
9.根据权利要求7所述的处理器,其中所述高速缓冲存储器被配置为仅对没有锁定标记的缓存块进行替换。
10.根据权利要求7-9中任一项所述的处理器,其中所述高速缓冲存储器包括控制器、用于保存标签的标签存储单元、由多个缓存块构成的数据存储单元和映射单元,其中:
映射单元用于保存标签与缓存块之间的映射关系;
所述缓存块的数量大于所述标签的数量,每个缓存块都设置有标签绑定位和状态位,所述标签绑定位用于指示该缓存块是否与标签绑定,所述状态位充当锁定标记,用于指示该缓存块是否被锁定;
所述控制器被配置为:
对于接收到的访存请求,在缓存命中时从映射单元中确定命中的标签所对应的缓存块,向访存控制单元发送指示读数据准备好的通知,并设置该缓存块的状态位,以指示该缓存块已经被锁定;
对于接收到的访存请求,在缓存未命中时执行下列操作:
在标签存储单元中为该访存请求分配一个标签存储位置以存放该访存请求的访存地址中相应的标签字段,并从数据存储单元中选择未被锁定且未与标签绑定的多个缓存块的其中一个分配给该访存请求;
在映射单元中将所分配的标签存储位置原来对应的缓存块的标签绑定位设置为指示未与标签绑定,接着在该标签存储位置与分配给该访存请求的缓存块之间建立映射关系,并将分配给该访存请求的缓存块的标签绑定位设置为指示已与标签绑定;
从下一级存储器获取该访存请求要访问的数据并将其保存在为该访存请求分配的缓存块中,并向访存控制单元发送指示读数据准备好的通知,以及设置该缓存块的状态位,以指示该缓存块已经被锁定。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211069312.9A CN115454502B (zh) | 2022-09-02 | 2022-09-02 | 用于调度simt架构处理器的返回数据的方法及相应处理器 |
PCT/CN2023/102570 WO2024045817A1 (zh) | 2022-09-02 | 2023-06-27 | 用于调度simt架构处理器的返回数据的方法及相应处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211069312.9A CN115454502B (zh) | 2022-09-02 | 2022-09-02 | 用于调度simt架构处理器的返回数据的方法及相应处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115454502A true CN115454502A (zh) | 2022-12-09 |
CN115454502B CN115454502B (zh) | 2023-06-02 |
Family
ID=84301349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211069312.9A Active CN115454502B (zh) | 2022-09-02 | 2022-09-02 | 用于调度simt架构处理器的返回数据的方法及相应处理器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115454502B (zh) |
WO (1) | WO2024045817A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024045817A1 (zh) * | 2022-09-02 | 2024-03-07 | 杭州登临瀚海科技有限公司 | 用于调度simt架构处理器的返回数据的方法及相应处理器 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118502925B (zh) * | 2024-07-17 | 2024-10-15 | 山东浪潮科学研究院有限公司 | GPU cache的访问方法、装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1916877A (zh) * | 2005-08-19 | 2007-02-21 | 国际商业机器公司 | 在处理器与存储器流控制器间传送命令参数的系统和方法 |
CN101464839A (zh) * | 2009-01-08 | 2009-06-24 | 中国科学院计算技术研究所 | 一种访存缓冲装置及方法 |
EP2503453A1 (en) * | 2011-03-22 | 2012-09-26 | Fujitsu Limited | Processor core with data error detection, and method for instruction execution in the same, with error avoidance |
CN104615386A (zh) * | 2015-02-12 | 2015-05-13 | 杭州中天微系统有限公司 | 一种核外高速缓存装置 |
CN104699631A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | Gpdsp中多层次协同与共享的存储装置和访存方法 |
CN109408411A (zh) * | 2018-09-25 | 2019-03-01 | 浙江工商大学 | 基于数据访问次数的GPGPU的L1 Cache管理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10719447B2 (en) * | 2016-09-26 | 2020-07-21 | Intel Corporation | Cache and compression interoperability in a graphics processor pipeline |
CN114970848A (zh) * | 2022-05-20 | 2022-08-30 | 上海登临科技有限公司 | 用于并行处理器的数据搬运装置及相应处理器 |
CN115454502B (zh) * | 2022-09-02 | 2023-06-02 | 杭州登临瀚海科技有限公司 | 用于调度simt架构处理器的返回数据的方法及相应处理器 |
-
2022
- 2022-09-02 CN CN202211069312.9A patent/CN115454502B/zh active Active
-
2023
- 2023-06-27 WO PCT/CN2023/102570 patent/WO2024045817A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1916877A (zh) * | 2005-08-19 | 2007-02-21 | 国际商业机器公司 | 在处理器与存储器流控制器间传送命令参数的系统和方法 |
CN101464839A (zh) * | 2009-01-08 | 2009-06-24 | 中国科学院计算技术研究所 | 一种访存缓冲装置及方法 |
EP2503453A1 (en) * | 2011-03-22 | 2012-09-26 | Fujitsu Limited | Processor core with data error detection, and method for instruction execution in the same, with error avoidance |
CN104615386A (zh) * | 2015-02-12 | 2015-05-13 | 杭州中天微系统有限公司 | 一种核外高速缓存装置 |
CN104699631A (zh) * | 2015-03-26 | 2015-06-10 | 中国人民解放军国防科学技术大学 | Gpdsp中多层次协同与共享的存储装置和访存方法 |
CN109408411A (zh) * | 2018-09-25 | 2019-03-01 | 浙江工商大学 | 基于数据访问次数的GPGPU的L1 Cache管理方法 |
Non-Patent Citations (1)
Title |
---|
刘天义;肖俊华;章隆兵;沈海华;: "提升处理器指针追逐访存性能的指令标签辅助的数据预取机制" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024045817A1 (zh) * | 2022-09-02 | 2024-03-07 | 杭州登临瀚海科技有限公司 | 用于调度simt架构处理器的返回数据的方法及相应处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN115454502B (zh) | 2023-06-02 |
WO2024045817A1 (zh) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115454502B (zh) | 用于调度simt架构处理器的返回数据的方法及相应处理器 | |
US5778434A (en) | System and method for processing multiple requests and out of order returns | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
CN1908890B (zh) | 用于使用记录板机制处理加载锁定指令的方法和装置 | |
US11403226B2 (en) | Cache with set associativity having data defined cache sets | |
US11372648B2 (en) | Extended tags for speculative and normal executions | |
US11734015B2 (en) | Cache systems and circuits for syncing caches or cache sets | |
CN115168247B (zh) | 用于并行处理器中动态共享存储空间的方法及相应处理器 | |
US6317806B1 (en) | Static queue and index queue for storing values identifying static queue locations | |
US11860786B2 (en) | Data defined caches for speculative and normal executions | |
US11010288B2 (en) | Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution | |
US7093100B2 (en) | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes | |
US11954493B2 (en) | Cache systems for main and speculative threads of processors | |
US7260674B2 (en) | Programmable parallel lookup memory | |
EP0297265A2 (en) | An instruction control mechanism for a computer system | |
US7802062B2 (en) | Non-blocking variable size recyclable buffer management | |
EP0394173A2 (en) | High concurrency manager of open files | |
JP2004206369A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |