CN117742793B - 数据缓存指令的指令合并电路、方法及芯片 - Google Patents
数据缓存指令的指令合并电路、方法及芯片 Download PDFInfo
- Publication number
- CN117742793B CN117742793B CN202311444853.XA CN202311444853A CN117742793B CN 117742793 B CN117742793 B CN 117742793B CN 202311444853 A CN202311444853 A CN 202311444853A CN 117742793 B CN117742793 B CN 117742793B
- Authority
- CN
- China
- Prior art keywords
- instruction
- cache
- type
- data
- merging
- 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 66
- 238000012545 processing Methods 0.000 claims description 35
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本申请提供的数据缓存指令的指令合并电路、方法及芯片,包括:第一确定模块,用于响应于当前时刻下接收到的第一指令,确定第一指令指示的缓存地址、第一线程标识以及指令类型;第一指令表征需要进行数据缓存处理;第一线程标识为执行第一指令的线程的标识;第二确定模块,用于若确定指令类型为可合并类型,则在第一队列中,确定具有缓存地址和第一线程标识的数据缓存指令为第二指令;第一队列中包括至少一个数据缓存指令;合并模块,用于若确定第一指令和第二指令可以进行合并,则合并第一指令和第二指令,得到合并后的指令;替换模块,用于基于合并后的指令替换第一队列中的第二指令以确保数据准确缓存,提高指令存储队列的资源利用率。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种数据缓存指令的指令合并电路、方法及芯片。
背景技术
目前,在处理器执行数据缓存操作时,每接收到一个数据缓存指令即可执行一次实时的数据缓存处理。
然而,当处理器所接收到的数据缓存指令较多时,仍采用逐一执行的数据缓存方式容易导致数据缓存效率较低,且未被实时执行的数据缓存指令也会占用较多的存储空间,导致设备存储资源无法得到有效利用。
发明内容
本申请提供的数据缓存指令的指令合并电路、方法及芯片,用以确保数据缓存的准确性,提高指令存储队列资源利用率。
第一方面,本申请提供一种数据缓存指令的指令合并方法,所述方法包括:
响应于当前时刻下接收到的第一指令,确定所述第一指令指示的缓存地址、第一线程标识以及指令类型;所述第一指令表征需要进行数据缓存处理;所述缓存地址用于指示待缓存数据对应的缓存行的地址;所述第一线程标识为执行所述第一指令的线程的标识;
若确定所述指令类型为可合并类型,则在第一队列中,确定具有所述缓存地址和所述第一线程标识的数据缓存指令为第二指令;所述第一队列中包括至少一个数据缓存指令;
若确定所述第一指令和所述第二指令可以进行合并,则合并所述第一指令和所述第二指令,得到合并后的指令,并基于所述合并后的指令替换所述第一队列中的所述第二指令。
一个示例中,确定所述第一指令和所述第二指令可以进行合并,包括:
确定当前时刻下所述第二指令的合并状态;所述合并状态用于表征当前是否可以进行合并处理;
若合并状态表征当前可以进行合并处理,则确定所述第一指令和所述第二指令可以进行合并。
一个示例中,确定当前时刻下所述第二指令的合并状态,包括:
若确定历史时段内曾接收到第一类型的缓存指令,或者,第二类型的缓存指令,或者,所述第二指令的指令类型为不可合并类型,则确定当前时刻下所述第二指令的合并状态为不可合并状态;所述历史时段为在当前时刻之前,所述第一队列的目标通道中存储有具有所述缓存地址的数据缓存指令的时段;
所述第一类型的缓存指令为具有所述缓存地址,且与所述第二指令所指示的第二线程标识不同的缓存指令;所述第二类型的缓存指令为具有所述缓存地址,且指令类型为不可合并类型的缓存指令;所述目标通道为所述第二指令当前在所述第一队列中所对应的存储通道。
一个示例中,所述方法还包括:
若确定所述历史时段内未接收到所述第一类型的缓存指令,且未接收到所述第二类型的缓存指令,所述第二指令的指令类型为可合并类型,则确定当前时刻下所述第二指令所对应的计时时长;所述计时时长用于表征所述目标通道中,存储有具有所述缓存地址的缓存指令的时长;
若确定所述计时时长小于预设阈值,则确定所述第二指令的合并状态为可合并状态。
一个示例中,所述方法还包括:
若确定所述历史时段内未接收到所述第一类型的缓存指令,且未接收到所述第二类型的缓存指令,所述第二指令的指令类型为可合并类型,则确定当前时刻下所述第二指令所对应的数据量;所述数据量用于指示所述第二指令所指示的待缓存数据所占用的存储空间;
若所述数据量表征所述第二指令所指示的待缓存数据所占用的存储空间与缓存行所对应的存储空间相同,则确定所述第二指令的合并状态为不可合并状态。
一个示例中,所述方法还包括:
若确定所述指令类型为不可合并类型,则在第一队列中,确定具有所述缓存地址的数据缓存指令为第三指令;
调整所述第三指令的合并状态为不可合并状态;所述合并状态用于表征当前是否可以进行合并处理。
一个示例中,所述方法还包括:
将所述第一指令写入第二队列中。
一个示例中,所述方法还包括:
若确定所述指令类型为可合并类型,且所述第一队列中不存在第二指令,则确定具有所述缓存地址,且不具有所述第一线程标识的数据缓存指令为第四指令;
调整所述第四指令的合并状态为不可合并状态;所述合并状态用于表征当前是否可以进行合并处理;
将所述第一指令写入所述第一队列中未被占用的存储空间处,并确定所述第一指令的合并状态为可合并状态。
一个示例中,所述方法还包括:
确定第一队列中各通道所对应的优先级;所述优先级表征所述通道中所存储的指令的执行顺序,且所述优先级与所述通道中的指令所对应的更新时间呈负相关;所述更新时间为所述通道中的指令被替换时所对应的替换时间中的最大值。
第二方面,本申请提供一种数据缓存指令的指令合并电路,所述电路包括:
第一确定模块,用于响应于当前时刻下接收到的第一指令,确定所述第一指令指示的缓存地址、第一线程标识以及指令类型;所述第一指令表征需要进行数据缓存处理;所述缓存地址用于指示待缓存数据对应的缓存行的地址;所述第一线程标识为执行所述第一指令的线程的标识;
第二确定模块,用于若确定所述指令类型为可合并类型,则在第一队列中,确定具有所述缓存地址和所述第一线程标识的数据缓存指令为第二指令;所述第一队列中包括至少一个数据缓存指令;
合并模块,用于若确定所述第一指令和所述第二指令可以进行合并,则合并所述第一指令和所述第二指令,得到合并后的指令;
替换模块,用于基于所述合并后的指令替换所述第一队列中的所述第二指令。
一个示例中,合并模块,包括:
第一确定单元,用于确定当前时刻下所述第二指令的合并状态;所述合并状态用于表征当前是否可以进行合并处理;
第二确定单元,用于若合并状态表征当前可以进行合并处理,则确定所述第一指令和所述第二指令可以进行合并;
合并单元,用于合并所述第一指令和所述第二指令,得到合并后的指令。
一个示例中,第一确定单元,具体用于:
若确定历史时段内曾接收到第一类型的缓存指令,或者,第二类型的缓存指令,或者,所述第二指令的指令类型为不可合并类型,则确定当前时刻下所述第二指令的合并状态为不可合并状态;所述历史时段为在当前时刻之前,所述第一队列的目标通道中存储有具有所述缓存地址的数据缓存指令的时段;
所述第一类型的缓存指令为具有所述缓存地址,且与所述第二指令所指示的第二线程标识不同的缓存指令;所述第二类型的缓存指令为具有所述缓存地址,且指令类型为不可合并类型的缓存指令;所述目标通道为所述第二指令当前在所述第一队列中所对应的存储通道。
一个示例中,所述第一确定单元,还用于:
若确定所述历史时段内未接收到所述第一类型的缓存指令,且未接收到所述第二类型的缓存指令,所述第二指令的指令类型为可合并类型,则确定当前时刻下所述第二指令所对应的计时时长;所述计时时长用于表征所述目标通道中,存储有具有所述缓存地址的缓存指令的时长;
若确定所述计时时长小于预设阈值,则确定所述第二指令的合并状态为可合并状态。
一个示例中,所述第一确定单元,还用于:
若确定所述历史时段内未接收到所述第一类型的缓存指令,且未接收到所述第二类型的缓存指令,所述第二指令的指令类型为可合并类型,则确定当前时刻下所述第二指令所对应的数据量;所述数据量用于指示所述第二指令所指示的待缓存数据所占用的存储空间;
若所述数据量表征所述第二指令所指示的待缓存数据所占用的存储空间与缓存行所对应的存储空间相同,则确定所述第二指令的合并状态为不可合并状态。
一个示例中,所述电路还包括:
第三确定模块,用于若确定所述指令类型为不可合并类型,则在第一队列中,确定具有所述缓存地址的数据缓存指令为第三指令;
第一调整模块,用于调整所述第三指令的合并状态为不可合并状态;所述合并状态用于表征当前是否可以进行合并处理。
一个示例中,所述电路还包括:
第一存储模块,用于将所述第一指令写入第二队列中。
一个示例中,所述电路还包括:
第四确定模块,用于若确定所述指令类型为可合并类型,且所述第一队列中不存在第二指令,则确定具有所述缓存地址,且不具有所述第一线程标识的数据缓存指令为第四指令;
第二调整模块,用于调整所述第四指令的合并状态为不可合并状态;所述合并状态用于表征当前是否可以进行合并处理;
第二存储模块,用于将所述第一指令写入所述第一队列中未被占用的存储空间处;
第五确定模块,用于确定所述第一指令的合并状态为可合并状态。
一个示例中,所述电路还包括:
第六确定模块,确定第一队列中各通道所对应的优先级;所述优先级表征所述通道中所存储的指令的执行顺序,且所述优先级与所述通道中的指令所对应的更新时间呈负相关;所述更新时间为所述通道中的指令被替换时所对应的替换时间中的最大值。
第三方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面中所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面中所述的方法。
第五方面,本申请提供一种计算机程序产品,计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现如第一方面中所述的方法。
第六方面,本申请提供一种处理器芯片,包括第二方面中任一项所述的电路。
本申请提供的数据缓存指令的指令合并电路、方法及芯片,包括:第一确定模块,用于响应于当前时刻下接收到的第一指令,确定第一指令指示的缓存地址、第一线程标识以及指令类型;第一指令表征需要进行数据缓存处理;第一线程标识为执行第一指令的线程的标识;第二确定模块,用于若确定指令类型为可合并类型,则在第一队列中,确定具有缓存地址和第一线程标识的数据缓存指令为第二指令;第一队列中包括至少一个数据缓存指令;合并模块,用于若确定第一指令和第二指令可以进行合并,则合并第一指令和第二指令,得到合并后的指令;替换模块,用于基于合并后的指令替换第一队列中的第二指令以确保数据准确缓存,提高指令存储队列的资源利用率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种数据缓存指令的指令合并方法的流程示意图;
图2为本申请实施例提供的第二种数据缓存指令的指令合并方法的流程示意图;
图3为本申请实施例提供的第三种数据缓存指令的指令合并方法的流程示意图;
图4为本申请实施例提供的一种数据缓存指令的指令合并电路的结构示意图;
图5为本申请实施例提供的又一种数据缓存指令的指令合并电路的结构示意图;
图6为本申请实施例所提供的一种指令合并处理电路的结构示意图;
图7为本申请实施例提供的一种指令合并示意图;
图8为本申请实施例提供的又一种指令合并示意图;
图9为本申请实施例提供的另一种指令合并示意图;
图10为本申请实施例中提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
目前,在处理器的缓存过程中,处理器所对应的缓存中通常由多个缓存行组成,并且缓存行为处理器一次缓存的最小单位。当处理器接收到的数据缓存指令中指示缓存的数据的数据量小于缓存行中可存储的数据的最大数据量时可以通过增加数据缓存指令合并模块,将多组需要缓存的数据合并起来,以提高缓存行的访问效率,并提高指令存储队列的空间利用率。
相关技术中,在进行数据缓存指令合并处理时,通常可以采用比对两个指令中所指示的需要缓存的数据所对应的缓存行地址的方式,若二者一致,则可以执行指令合并。
然而,当存在多个线程需要向同一缓存行中缓存数据时,上述合并方式容易出现多个线程的地址访问冲突的现象,进而容易出现数据丢失,无法准确缓存的现象。
本申请中,通过结合数据缓存指令所对应的缓存地址、线程标识以及指令类型,来确定两个指令之间是否可以进行合并,并且最终合并的两个指令中的缓存地址以及线程标识为相同的,进而,可以避免同一缓存地址被多个线程同时访问所造成的访问冲突的问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为本申请实施例提供的一种数据缓存指令的指令合并方法的流程示意图,如图1所示,该方法包括以下步骤:
S101、响应于当前时刻下接收到的第一指令,确定第一指令指示的缓存地址、第一线程标识以及指令类型;第一指令表征需要进行数据缓存处理;缓存地址用于指示待缓存数据对应的缓存行的地址;第一线程标识为执行第一指令的线程的标识。
示例性地,本实施例中,在当前时刻下接收到用于表征需要进行数据缓存处理的第一指令时,首先可以解析出第一指令中所携带的缓存地址、第一线程标识以及指令类型。
其中,缓存地址可以表征出第一指令所指示缓存的待缓存数据需要存储的缓存行的缓存地址。此外,第一线程标识为需要执行第一指令所指示的数据缓存处理的线程的线程标识。
此外,本实施例中的指令类型可以指示出第一指令是否可以归属于可以进行合并处理的可合并类型。
S102、若确定指令类型为可合并类型,则在第一队列中,确定具有缓存地址和第一线程标识的数据缓存指令为第二指令;第一队列中包括至少一个数据缓存指令。
示例性地,本实施例中,若根据所接收到的第一指令中的指令类型确定出第一指令归属于可以进行指令合并处理类型的指令,则可以在用于缓存之前接收到的数据缓存指令的第一队列中,筛选出与第一指令具有相同的缓存地址以及相同的第一线程标识的数据缓存指令,并将筛选出的数据缓存指令作为第二指令。
需要说明的是,第一队列中所缓存的指令可以理解为之前所接收到的,但尚未被执行的用于指示进行数据缓存处理的指令。
此外,在一种可能的实现方式中,在匹配第一队列中的数据缓存指令和第一指令各自所包含的缓存地址和线程标识时,可以第一指令与第一队列中的每一数据缓存指令均进行比对;或者,也可以仅将第一指令与第一队列中的指令类型为可合并类型的数据缓存指令进行比对。
S103、若确定第一指令和第二指令可以进行合并,则合并第一指令和第二指令,得到合并后的指令,并基于合并后的指令替换第一队列中的第二指令。
示例性地,本实施例中在第一队列中筛选出第二指令之后,进一步的还需要确定第一指令和第二指令之间是否可以进行合并。
举例来说,在实际应用中,可以将预先设置指令合并条件,当满足上述合并条件时,才可以确定第一指令和第二指令可以进行合并。
例如,合并条件可以为:根据当前处理器资源的消耗量确定,若当前处理器的资源消耗量较大时,为了避免数据缓存带来更多的资源消耗,可以执行指令合并处理;若当前处理器的资源消耗量较小时,则无需对第一指令和第二指令进行数据合并处理。
又或者,合并条件可以为:当前是否处于可进行指令合并的模式,举例来说,在实际应用中,在设备操作界面中,可以向用户提供指令合并模式选择开关,当用户打开时上述指令合并模式选择开关时,则确定当前可以对第一指令和第二指令进行合并。若用户未选中上述开关,则确定当前无法进行指令合并处理。
需要说明的是,本实施例中对于确定第一指令和第二指令是否可以合并的方式不做具体限制。
在确定第一指令和第二指令可以进行合并处理时,可以将第一指令所指示需要进行缓存的待缓存数据和第二指令中所指示的待缓存数据进行合并,进而得到合并后的指令,并用合并后的指令替换第一队列中的第二指令,以便后续可以直接执行第一队列中的合并后的指令,减少对缓存资源的访问次数。
可以理解的是,本实施例中,在第一队列中可以将与当前所接收到的第一指令所携带的第一线程标识和缓存地址相同的数据缓存指令,确定为预先选中的有可能与第一指令进行合并处理的第二指令。进而确保后续执行合并处理的两个指令为携带有相同的线程标识以及相同缓存地址的指令。通过上述方式可以避免线程标识不同,但缓存地址相同的指令进行合并之后执行时,会出现多个线程同时争抢同一缓存行的访问权限的情况,进而容易导致数据缓存过程中出现数据丢失的现象。即,本实施例所提供的合并方法,可以适用于多线程的设备进行数据缓存的场景,并且在确保数据准确缓存的情况下,进一步的还可以减少缓存资源的访问次数,降低第一队列中实际的资源量,提高第一队列的资源利用率。
图2为本申请实施例提供的第二种数据缓存指令的指令合并方法的流程示意图,如图2所示,该方法包括以下步骤:
S201、响应于当前时刻下接收到的第一指令,确定第一指令指示的缓存地址、第一线程标识以及指令类型;第一指令表征需要进行数据缓存处理;缓存地址用于指示待缓存数据对应的缓存行的地址;第一线程标识为执行第一指令的线程的标识。
S202、若确定指令类型为可合并类型,则在第一队列中,确定具有缓存地址和第一线程标识的数据缓存指令为第二指令;第一队列中包括至少一个数据缓存指令。
示例性地,步骤S201与步骤S202的技术原理可以参见步骤S101和步骤S102,此处不再赘述。
S203、确定当前时刻下第二指令的合并状态;合并状态用于表征当前是否可以进行合并处理。
示例性地,本实施例中,第一队列中所存储的数据缓存指令各自对应有各自的合并状态,并且,不同时刻下所对应的合并状态可能不同。其中,指令所对应的合并状态可以用于表征指令是否可以进行指令合并处理。
一个示例中,在确定第二指令的合并状态时,若第二指令的指令类型为可合并类型时,则表征第二指令当前可以进行合并处理;
又或者,若确定第二指令的剩余等待时长大于预设值,且第二指令的指令类型为可合并类型时,则确定第二指令的合并状态为当前可以进行合并处理。需要说明的是,第二指令所对应的剩余等待时长可以理解为当前时刻至第二指令的预期执行时刻之间的时长为剩余等待时长。此外,预设值为根据两个指令合并时所对应的耗时时长所确定的。即,当确定第二指令即将被执行,且剩余等待时长不足以将第一指令和第二指令进行合并时,此时,可以确定第一指令和第二指令无法被合并。
一个示例中,在执行步骤S203时可以通过以下步骤实现“若确定历史时段内曾接收到第一类型的缓存指令,或者,第二类型的缓存指令,或者,第二指令的指令类型为不可合并类型,则确定当前时刻下第二指令的合并状态为不可合并状态;历史时段为在当前时刻之前,第一队列的目标通道中存储有具有缓存地址的数据缓存指令的时段;第一类型的缓存指令为具有缓存地址,且与第二指令所指示的第二线程标识不同的缓存指令;第二类型的缓存指令为具有缓存地址,且指令类型为不可合并类型的缓存指令;目标通道为第二指令当前在第一队列中所对应的存储通道。”
示例性地,本实施例中,由于在实际应用中,第一队列中的指令会经历被执行取出以及被合并等不同的处理,在确定第二指令所对应的合并状态时,首先需要第一队列中存储有第二指令所对应的存储通道(即,上述目标通道)中,持续存储有具有第二指令的缓存地址的数据缓存指令的持续时段,即上述历史时段。并确定在上述历史时段中,是否曾经接收到过与第二指令所对应的缓存地址相同,但线程标识不同的第一类型的缓存指令,或者,是否层接收到过与第二指令所对应的缓存地址相同,但指令类型为不可合并类型的第二类型的缓存指令,若确定接收到过上述第一类型的缓存指令、第二类型的缓存指令中的一项或者多项,都可以确定该第二指令当前时刻下所对应的合并状态为不可进行合并处理的状态。
并且,当第二指令的类型本身为不可合并类型时,也可以确定第二指令的合并状态为不可合并状态。
可以理解的是,本实施例中,通过结合历史时段内所接收到的指令来确定第二指令所对应的合并状态,并且,若曾经接收到过上述第一类型的缓存指令,则为了避免后续出现多线程争抢同一缓存行的访问权限的现象,可以将其设置为不可合并的状态,以便上述缓存指令在不同时刻下执行,避免访问权限的争抢。此外,若历史时段内接收到过第二类型的缓存指令时,由于第二类型的缓存指令无法进行合并处理,且为了确保无法合并处理的缓存指令可以按顺序执行,则确定第二类型的缓存指令为不可合并处理的状态。
举例来说,T1时刻下接收到指令1,T2时刻下接收到指令2,T3时刻下接收到指令3,其中T3时刻为当前时刻,指令3可以看做是本实施例中的第一指令。T1小于T2,且T1时刻所对应的指令1可以理解为本实施例中的第二指令。而,指令2可以理解为与第二指令具有相同缓存地址,但指令类型为不可合并类型的指令,则此时,确定指令1的合并状态为不可合并状态,进而可以避免当前时刻之后,若接收到指令T4时,若指令T4和指令T1具有相同的缓存地址和进程标识时,若合并指令T4和指令T1,则容易导致指令1、指令2、指令4之间的数据缓存时的缓存顺序无法满足接收到的指令要求的现象。
一个示例中,在上述实施例的基础上,还可以通过以下步骤确定第二指令的合并状态,具体包括以下步骤:“若确定历史时段内未接收到第一类型的缓存指令,且未接收到第二类型的缓存指令,第二指令的指令类型为可合并类型,则确定当前时刻下第二指令所对应的计时时长;计时时长用于表征目标通道中,存储有具有缓存地址的缓存指令的时长;若确定计时时长小于预设阈值,则确定第二指令的合并状态为可合并状态。”
示例性地,本实施例中,在确定第二指令的合并状态时,若未接收到第一类型的指令、第二类型的指令,并且确定第二指令为可合并类型的指令时,进一步地还可以结合第二指令所处的目标通道中,存储有具有第二指令所指示的缓存地址的缓存指令的时长,即计时时长,也就是上述历史时段所对应的时长。
进一步的,若确定第二指令所对应的计时时长小于预设阈值时,则确定该目标通道中所对应存储指令的时间较短,因此,还可以进一步的将该指令所对应的合并状态设置为可合并状态,以便后续可以与其余指令进行合并。若确定第二指令所对应的计时时长大于等于预设阈值时,则表征目标通道中的指令已等待较长时间,需要立即执行,以确保缓存行中缓存的数据也可以及时更新。
可以理解的是,本实施例中,进一步的还可以结合第一队列中,通道中所对应存储指令的计时时长,来确定指令的状态是否为可合并状态,以确保第一队列中的数据也可以及时缓存至缓存行中。
一个示例中,在上述实施例的基础上,还可以通过以下步骤确定第二指令的合并状态,具体包括以下步骤:“若确定历史时段内未接收到第一类型的缓存指令,且未接收到第二类型的缓存指令,第二指令的指令类型为可合并类型,则确定当前时刻下第二指令所对应的数据量;若数据量表征第二指令所指示的待缓存数据所占用的存储空间与缓存行所对应的存储空间相同,则确定第二指令的合并状态为不可合并状态。”
示例性地,本实施例中,在确定第二指令的合并状态时,若未接收到第一类型的指令、第二类型的指令,并且确定第二指令为可合并类型的指令时,进一步的还可以结合当前时刻下,第二指令所对应指示的待缓存数据的数据量来确定。
若进一步确定第二指令中的待缓存数据所需要占用的存储空间与缓存行所对应的存储空间相同,即待缓存数据会占用缓存行所对应的全部存储空间时,则可以确定当前第二指令的合并状态为不可合并状态。
此外,当确定第二指令中的待缓存数据所需要占用的存储空间小于缓存行所对应的存储空间时,则此时可以将第二指令的合并状态确定为可合并状态。
在实际应用中也可以将数据量所表征的占用的存储空间的大小与缓存行所对应的存储空间大小二者的比值和预设取值进行比较,若比值大于预设取值,则确定合并状态为不可合并状态。
可以理解的是,本实施例中可以结合第二指令所指示的待缓存数据的所占用的存储空间和缓存行的存储空间进行比对,来确定第二指令的合并状态。进而,当确定出第二指令中所指示的待合并数据所需要占用的存储空间和缓存行的存储空间一致时,则进一步将合并状态确定为不可合并状态,以便后续可以及时的将待缓存数据全部写入缓存空间中,以避免指令状态长时间处于可合并状态时,无法及时更新缓存中的数据。
在一种可能的实现方式中,上述两种方式也可以相互结合,来确定第二指令所对应的合并状态,即,在确定历史时段内未接收到第一类型的缓存指令,且未接收到第二类型的缓存指令,第二指令的指令类型为可合并类型时,可以结合第二指令所对应的计时时长以及第二指令所对应的数据量来确定合并状态。例如,计时时长和数据量只要有一项超出其所对应的阈值,则可以确定合并状态为不可合并状态。若二者均未超出各自所对应的阈值,则确定合并状态为可合并状态。
S204、若合并状态表征当前可以进行合并处理,则确定第一指令和第二指令可以进行合并。
示例性地,本实施例中,在确定出第二指令当前时刻下所对应的合并状态之后,若确定第二指令当前支持进行合并处理,则确定两个指令当前可以进行合并。
一个示例中,若合并状态表征第二指令当前不支持进行合并处理,则确定第一指令和第二指令无法进行合并处理。
在实际应用中,第一队列中各数据缓存指令所对应的合并状态可以为实时更新确定的,当数据缓存指令所对应的合并状态被确定为不可合并状态时,则可以不再实时更新确定该数据缓存指令所对应的合并状态。
可以理解的是,本实施例中,可以通过确定第二指令的合并状态来确定第一指令和第二指令是否可以合并,进而,在确定出第二指令确定支持合并处理时,对第一指令和第二指令进行合并,以提高第一队列的存储利用率,降低后续的缓存行访问次数。
S205、合并第一指令和第二指令,得到合并后的指令,并基于合并后的指令替换第一队列中的第二指令。
示例性地,步骤S205的技术原理可以参见步骤S103,此处不再赘述。
本实施例中,在筛选出第一指令所对应的第二指令之后,可以根据第二指令所对应的合并状态来进一步确定是否执行对第一指令和第二指令的合并处理,以便提高后续指令的处理效率。并且,在确定第二指令的合并状态时,可以从第二指令所对应的历史时段中所接收到的指令、第二指令所对应的计时时长、第二指令所对应的数据量多个维度来确定其所对应的合并状态,以便确保第一队列中指令所指示的待缓存数据可以及时存储至缓存空间中。
图3为本申请实施例提供的一种数据缓存指令的指令合并方法的流程示意图,如图3所示,该方法包括以下步骤:
S301、响应于当前时刻下接收到的第一指令,确定第一指令指示的缓存地址、第一线程标识以及指令类型;第一指令表征需要进行数据缓存处理;缓存地址用于指示待缓存数据对应的缓存行的地址;第一线程标识为执行第一指令的线程的标识。
S302、若确定指令类型为可合并类型,则在第一队列中,确定具有缓存地址和第一线程标识的数据缓存指令为第二指令;第一队列中包括至少一个数据缓存指令。
S303、若确定第一指令和第二指令可以进行合并,则合并第一指令和第二指令,得到合并后的指令,并基于合并后的指令替换第一队列中的第二指令。
示例性地,步骤S301-S303的技术原理可以参见步骤S101-S103,此处不再赘述。
S304、若确定指令类型为不可合并类型,则在第一队列中,确定具有缓存地址的数据缓存指令为第三指令。
示例性地,本实施例中,在确定接收到的第一指令所对应的指令类型为不可进行合并处理的指令类型时,则确定第一指令无法与第一队列中所对应的数据缓存指令进行合并。并且,在该场景下,还需要进一步根据当前所接收到的第一指令,对第一队列中的数据缓存指令所对应的合并状态进行调整。
具体地,可以在第一队列中,匹配与第一指令具有相同缓存地址的数据缓存指令为第三指令。
在实际应用中,不可进行合并处理的指令可以为具有执行顺序要求的指令。
S305、调整第三指令的合并状态为不可合并状态;合并状态用于表征当前是否可以进行合并处理。
示例性地,本实施例中,在确定出第三指令之后,可以将第三指令所对应的合并状态调整为不可合并状态。
可以理解的是,本实施例中,通过将上述第三指令的合并状态调整为不可合并状态的方式,可以避免在当前时刻之后,若接收到指示需要在第三指令所对应的缓存地址中缓存数据的第五指令时,若第五指令和第三指令进行合并,而第一指令无法与第三指令合并时,容易导致第一指令所对应的缓存行中的缓存数据无法按序更新缓存,即指令的执行顺序发生错误,导致缓存的数据发生错误的现象。
S306、将第一指令写入第二队列中。
示例性地,在确定出第一指令所对应的指令类型为不可合并类型时,可以将第一指令存储至与第二队列中,即,无需将第一指令存储至第一队列中,以确保第一队列中所存储的指令所对应的指令类型均为可合并类型,以便第一指令和第一队列中的指令进行比较时,还需要逐一确定各数据缓存指令所对应的指令类型的复杂操作,以提高指令合并的处理效率。
S307、若确定指令类型为可合并类型,且第一队列中不存在第二指令,则确定具有缓存地址,且不具有第一线程标识的数据缓存指令为第四指令。
示例性地,本实施例中,在确定出当前所接收到的第一指令为可合并类型的指令,但第一队列中不存在与第一指令具有相同缓存地址和线程标识的第二指令时,本实施例中,可以将第一队列中所包含的与第一指令具有相同缓存地址的数据缓存指令确定为第四指令。
S308、调整第四指令的合并状态为不可合并状态;合并状态用于表征当前是否可以进行合并处理。
示例性地,在确定出上述第四指令之后,进一步地,对第四指令所对应的合并状态进行调整,即,将上述第四指令所对应的合并状态调整为不可合并的状态,即,避免了后续具有相同数据缓存地址,但具有不同线程标识的指令合并所导致的线程访问冲突的现象。
S309、将第一指令写入第一队列中未被占用的存储空间处,并确定第一指令的合并状态为可合并状态。
示例性地,在调整上述第四指令所对应的合并状态之后,进一步地,还可以将上述第一指令写入第一队列中,并将第一指令所对应的合并状态也配置为可合并状态,以便避免后续指令与第四指令进行合并所导致的线程冲突的现象。
可以理解的是,本实施例中,当第一指令为可合并类型的指令,且第一队列中不存在第一指令,但存在第四指令时,可以将第四指令合并状态均设置为不可合并状态,进而确保不会出现多个线程对同一缓存行的访问权限进行争抢的现象,以确保缓存行中的数据存储的准确性。
在上述任一实施例的基础上,当接收到新的第一指令时,还需要确定第一队列中各通道所对应的优先级;优先级表征通道中所存储的指令的执行顺序,且优先级与通道中的指令所对应的更新时间呈负相关;更新时间为通道中的指令被替换时所对应的替换时间中的最大值。
示例性地,本实施例中,在接收到新的第一指令之后,还需要实时确定第一队列中各通道中所对应的指令的执行优先级。
需要说明的是,本实施例中,第一队列中各通道各自所对应的指令的执行优先级与通过所对应的更新时间相关。其中,更新时间可以理解为更新该通道所对应的指令所指示的待缓存数据的时间。若更新时间越大,则对应的执行顺序越靠后,即优先执行更新时间越早的通道所对应的指令。
并且,进一步,当上述第二队列中也存在已缓存的指令时,也需要结合第一队列中指令所对应的更新时间,以及第二队列中指令所对应的接收时间,按照时间进行排序,以确保指令按序执行。
可以理解的是,本实施例中,通过通道所对应的更新时间对队列中所缓存的指令的执行优先级进行排序,以确保可以根据指令所对应的待缓存数据所接收到的时间早晚,按序更新至缓存中。
在实际应用中所接收到的数据缓存指令中若预先设置有指令所对应的执行时间,则进一步的在确定执行顺序时,需要结合指令所对应配置的执行时间,确定对应的执行优先级,以确保指令按照时序要求执行。
图4为本申请实施例提供的一种数据缓存指令的指令合并电路的结构示意图,如图4所示,该电路包括:
第一确定模块401,用于响应于当前时刻下接收到的第一指令,确定第一指令指示的缓存地址、第一线程标识以及指令类型;第一指令表征需要进行数据缓存处理;缓存地址用于指示待缓存数据对应的缓存行的地址;第一线程标识为执行第一指令的线程的标识。
示例性地,本实施例中所提供的指令合并电路可应用于处理器芯片中,用于对处理器芯片所接收到的用于指示进行数据缓存的数据缓存指令进行合并处理。
本实施例中所提供的指令合并电路中包括依次连接地第一确定模块、第二确定模块、合并模块以及替换模块。其中,第一确定模块可用于获取处理器所获取到的第一指令,并对所接收到的第一指令进行解析,以便确定出第一指令所指示的缓存地址、第一线程标识以及第一指令的指令类型。
第二确定模块402,用于若确定指令类型为可合并类型,则在第一队列中,确定具有缓存地址和第一线程标识的数据缓存指令为第二指令;第一队列中包括至少一个数据缓存指令。
示例性地,与第一确定模块连接的第二确定模块可以接收第一确定模块所解析出的内容。第二确定模块在接收到解析后的内容之后,首先会判断解析得到的内容中的指令类型,若确定第一指令的指令类型为可合并类型,则需要在用于缓存数据缓存指令的第一队列中,匹配缓存地址和第一线程标识均与第一指令所指示的内容一致的第二缓存指令。
合并模块403,用于若确定第一指令和第二指令可以进行合并,则合并第一指令和第二指令,得到合并后的指令。
示例性地,本实施例中,与第二确定模块连接的合并模块,会基于第二确定模块所查找到的第二指令以及第二确定模块所发送的第一指令的解析内容,确定第一指令和第二指令是否可以进行合并处理,若可以进行合并处理,则对第一指令和第二指令进行合并。举例来说,在对第一指令和第二指令进行合并时,由于二者所携带的缓存地址以及进程标识均相同,则仅需要对二者所携带的需要缓存的数据进行合并,进而得到合并后的指令。
替换模块404,用于基于合并后的指令替换第一队列中的第二指令。
示例性地,替换模块可以用于接收与其连接的合并模块所发送的合并后的指令,并在第一队列中将第一队列中缓存的第二指令替换为合并后的指令。
可以理解的是,通过上述指令合并电路,可以将具有相同缓存地址以及相同线程标识的合并在一起,进而避免相关技术中仅基于缓存地址判断是否可以进行指令合并所导致的后续线程之间会争抢执行合并后的指令的现象。
需要说明的是,本实施例提供的电路,可用于实现上述方法提供的技术方案,其实现原理和技术效果类似,具体实现逻辑也可以参见上述方法实施例中的描述。
图5为本申请实施例提供的又一种数据缓存指令的指令合并电路的结构示意图,如图5所示,在图5所示的电路结构的基础上,合并模块403,包括:
第一确定单元4031,用于确定当前时刻下第二指令的合并状态;合并状态用于表征当前是否可以进行合并处理;
第二确定单元4032,用于若合并状态表征当前可以进行合并处理,则确定第一指令和第二指令可以进行合并;
合并单元4033,用于合并第一指令和第二指令,得到合并后的指令。
示例性地,本实施例中,合并模块中包括依次连接的第一确定单元、第二确定单元以及合并单元。其中,合并模块中的第一确定单元在接收到与合并模块连接的第二确定模块所确定的第二指令之后,第一确定单元会解析判断第二指令所对应的合并状态,并将所确定的合并状态发送至第二确定单元。与第一确定单元连接的第二确定单元用于根据第一确定单元所发送的合并状态,确定当前是否需要执行对第一指令和第二指令的合并处理。若确定需要执行合并处理,则可以向与第二确定单元连接的合并单元发送需要执行合并处理的指令,并由合并单元对所获取到的第一指令以及第二指令进行合并。
需要说明的是,此处具体实现原理可以参见图2中所示的实施例的描述,此处不再赘述。
一个示例中,第一确定单元4031,具体用于:
若确定历史时段内曾接收到第一类型的缓存指令,或者,第二类型的缓存指令,或者,第二指令的指令类型为不可合并类型,则确定当前时刻下第二指令的合并状态为不可合并状态;历史时段为在当前时刻之前,第一队列的目标通道中存储有具有缓存地址的数据缓存指令的时段;
第一类型的缓存指令为具有缓存地址,且与第二指令所指示的第二线程标识不同的缓存指令;第二类型的缓存指令为具有缓存地址,且指令类型为不可合并类型的缓存指令;目标通道为第二指令当前在第一队列中所对应的存储通道。
示例性地,本实施例中,第一确定单元在确定第二指令当前时刻下所对应的合并状态时,会基于历史时段下所接收到的指令进行判断,需要说明的是,此处具体实现原理可以参见图2中S203所示的实施例的描述,此处不再赘述。
一个示例中,第一确定单元4031,还用于:若确定历史时段内未接收到第一类型的缓存指令,且未接收到第二类型的缓存指令,第二指令的指令类型为可合并类型,则确定当前时刻下第二指令所对应的计时时长;计时时长用于表征目标通道中,存储有具有缓存地址的缓存指令的时长;若确定计时时长小于预设阈值,则确定第二指令的合并状态为可合并状态。
示例性地,本实施例中,合并模块中的第一确定单元在确定第二指令当前时刻下所对应的合并状态时,还会结合指令所对应的计时时长来确定。需要说明的是,此处具体实现原理可以参见图2中S203所示的实施例的描述,此处不再赘述。
一个示例中,第一确定单元4031,还用于:若确定历史时段内未接收到第一类型的缓存指令,且未接收到第二类型的缓存指令,第二指令的指令类型为可合并类型,则确定当前时刻下第二指令所对应的数据量;数据量用于指示第二指令所指示的待缓存数据所占用的存储空间;若数据量表征第二指令所指示的待缓存数据所占用的存储空间与缓存行所对应的存储空间相同,则确定第二指令的合并状态为不可合并状态。
示例性地,本实施例中在合并模块第一确定单元在确定第二指令当前时刻下所对应的合并状态时,还会结合第二指令中所指示的需要缓存的数据的数据量确定。需要说明的是,此处具体实现原理可以参见图2中S203所示的实施例的描述,此处不再赘述。
一个示例中,电路还包括:
第三确定模块405,用于若确定指令类型为不可合并类型,则在第一队列中,确定具有缓存地址的数据缓存指令为第三指令;
第一调整模块406,用于调整第三指令的合并状态为不可合并状态;合并状态用于表征当前是否可以进行合并处理。
示例性地,本实施例中所提供的指令合并电路中还包括与第一确定模块连接的第三确定模块以及与第三确定模块连接的第一调整模块。具体地,在第一确定模块解析得到第一指令所指示的指令类型、第一线程标识以及缓存地址之后,也可以将解析出的内容发送至第三确定模块。并由第三确定模块根据所接收到的指令类型,确定是否对第一队列中的第三指令的合并状态进行调整。若确定需要调整,则第三确定模块会基于与其连接的第一调整模块对上述第三指令的合并状态进行调整。需要说明的是,此处具体实现原理可以参见图3中S304-S305所示的实施例的描述,此处不再赘述。
一个示例中,电路还包括:
第一存储模块407,用于将第一指令写入第二队列中。
示例性地,本实施例中,在指令合并电路中还包括与第一调整模块连接的第一存储模块,当第一调整模块将第三指令的合并状态调整完毕之后,进一步的第一存储模块还可以将所接收到的第一指令写入至第二队列中进行存储。需要说明的是,此处具体实现原理可以参见图3中S306所示的实施例的描述,此处不再赘述。
一个示例中,电路还包括:
第四确定模块408,用于若确定指令类型为可合并类型,且第一队列中不存在第二指令,则确定具有该缓存地址,且不具有第一线程标识的数据缓存指令为第四指令;
第二调整模块409,用于调整第四指令的合并状态为不可合并状态;合并状态用于表征当前是否可以进行合并处理;
第二存储模块810,用于将第一指令写入第一队列中未被占用的存储空间处;
第五确定模块811,用于确定第一指令的合并状态为可合并状态。
示例性地,本实施例中的指令合并电路中还包括依次连接的第四确定模块、第二调整模块、第二存储模块以及第五确定模块。其中,第四确定模块还与第一确定模块连接,用于接收第一确定模块所生成的解析后的第一指令的指令类型、第一线程标识以及缓存地址。之后,若第四确定模块确定第一队列中存在第四指令,则第四确定模块会指示第二调整模块对第四指令的合并状态进行调整。并在确定第四指令的合并状态调整之后,由于第二调整模块连接的第二存储模块将第一指令写入第一队列中,并基于第五确定模块将第一指令当前的合并状态调整为可合并状态。需要说明的是,此处具体实现原理可以参见图3中S307-S309所示的实施例的描述,此处不再赘述。
一个示例中,电路还包括:
第六确定模块,用于确定第一队列中各通道所对应的优先级;优先级表征通道中所存储的指令的执行顺序,且优先级与通道中的指令所对应的更新时间呈负相关;更新时间为通道中的指令被替换时所对应的替换时间中的最大值。
本实施例提供的电路,用于实现上述方法提供的技术方案,其实现原理和技术效果类似,不再赘述。
举例来说,图6为本申请实施例所提供的一种指令合并处理装置的结构示意图。其中,包括有处理器、逻辑单元1、逻辑单元2、逻辑单元3、计数器、逻辑单元4以及指令存储队列(即,本申请中的第一队列)。其中,处理器所接收到的数据缓存指令中通常包括有缓存地址、线程标识、指令类型以及待缓存数据。逻辑单元1用于对需要将处理器发下来的指令,进行指令解析,得到指令所对应的缓存地址、线程标识、指令类型、存储数据等信息;同时将解析后的信息发送分别发送至逻辑单元2与逻辑单元3。
逻辑单元2在获取到逻辑单元1发送的解析后的信息之后,同时遍历指令存储队列,将请求指令的缓存地址、线程标识、指令类型指令存储队列中的信息做比较,同时获取逻辑单元3所确定的第一队列的各通道所对应的指令的合并状态,以选择合适的指令存储队列通道。
逻辑单元3为合并开关控制单元,在获取到逻辑单元1发送的解析后的信息之后,用于确定当前时刻下第一队列的各通道所对应的指令的合并状态。在实际应用中合并状态可以根据开关的关断或导通状态来记录。并且,逻辑单元3支持基于外部输入的外部条件,确定各通道所对应的合并开关的状态。
计数器,用于在确定第一队列中存在一条新的存储通道中被写入指令后,计数器开始启动,确定该通道所对应的计时时长。并且,可以配置计数器的阈值,即,在阈值所对应的时段内,该通道均可以进行指令合并,若计数器所确定的计时时长达到阈值,则确定合并状态为不可合并的状态。
逻辑单元4,为指令合并单元,用于将指令存储队列中某一条通道的存储数据取出,与新的指令合并后重新存入指令存储队列中,并确定该通道中的指令所对应的执行优先级。
指令存储队列,具有若干存储通道,用于存放数据缓存指令所携带的缓存缓存地址、线程标识、指令类型、存储数据等信息。
在实际应用中,处理器会将当前时刻下接收到的第一指令发送至逻辑单元1,并由逻辑单元1解析第一指令所携带的信息,其中,包括缓存地址、线程标识、指令类型、存储数据等信息;之后,由逻辑单元2遍历第一队列中的所有通道,将每个通道中的缓存地址、线程标识、指令类型与第一指令所对应的信息比较,如果第一指令与其中一个通道中的地址相同、线程标识相同、指令类型相同时,预先选中该通道中的指令为第二指令。之后,逻辑单元2需要从逻辑单元3中读取这条通道的合并状态,如果合并状态为可合并状态,则将第一指令的存储数据与这条通道的存储数据进行合并,再存入这条通道中,同时改变这条通道的执行优先级;若合并状态为不可合并状态,则选择一条空的通道,将第一指令所对应的缓存地址、线程标识、指令类型、存储数据等信息存入其中;最后等待处理单元逐一仲裁指令存储队列中的指令的优先级,并逐一依次处理各个通道中的指令。
此外,在逻辑单元2遍历第一队列时,还需要根据以下合并状态确定条件,对第一队列中的通道所对应的合并条件进行调整:
1)如果通道中的缓存地址与当前时刻接收到的第一指令中的缓存地址相同,线程标识不同时,为防止不同线程访问地址冲突的现象,指令不允许跨线程合并,则关闭该通道的合并开关,以表征该通道的合并状态为不可合并状态;
2)如果通道中的缓存地址与当前时刻接收到的第一指令中的缓存地址相同,当前时刻接收到的第一指令的指令类型为不可合并指令,则关闭该通道的合并开关;
3)当逻辑单元2选中新的通道时,即将当前时刻下接收到的第一指令存储至一个新的未被占用的存储通道时,且指令类型为可合并指令,计数器开始启动,可配置的若干周期内,满足条件的数据缓存指令均可以进行合并;计数器达到阈值时,关闭该通道的合并开关;
4)当进行多次指令合并后,通道所对应的指令中的待存储数据粒度与总线处理时所对应的缓存行的数据粒度相当时,如一个数据缓存指令中可以携带16byte数据,而执行数据缓存指令时,总线一次操作会对64byte进行读写访问,则经过若干次指令合并后,缓存数据需要对64byte均进行修改时,关闭该通道的合并开关;
5)若当前时刻接收到的第一指令为不可合并类型时,则这类指令最终不会存至该指令缓存队列中,为保证执行顺序的正确性,会将第一队列中与第一指令具有相同缓存地址的指令所对应的通道合并开关所对应的合并开关关闭。
图7为本申请实施例提供的一种指令合并示意图;如图7所示,图中第一指令所指示的缓存数据A与通道中的缓存数据B合并后得到缓存数据AB,缓存数据A和缓存数据B存储的空间没有相交,最终通道中保存的缓存数据信息为缓存数据AB。其中,缓存数据A所处的长矩形区域用于表征缓存行最大可支持存储的存储空间大小。
图8为本申请实施例提供的又一种指令合并示意图;如图8所示图中所示第一指令请求中的缓存数据C与通道中的缓存数据D合并后得到缓存数据CD,缓存数据C和缓存数据D存储的空间存在交集,则第一指令请求携带的缓存数据C覆盖与缓存数据D相交的部分,最终通道中保存的缓存数据信息为缓存数据CD。
图9为本申请实施例提供的另一种指令合并示意图;如图9所示,当一个通道中的指令经过多次合并处理后,该通道中的指令所对应的缓存数据达到缓存行的最大缓存粒度,此时可以控制该通道的合并开关关闭,即,该通道中的不再进行合并,即合并状态被配置为不可合并状态,以便后续根据处理器仲裁确定的优先级执行该通道所对应的指令。
需要说明的是,本申请所可以用于处理器的缓存设计中,适用于多线程处理器,并且支持结合多种因素确定合并状态方式,以确保数据访问的正确性;同时可以接入逻辑单元3也可以接收外部的合并状态确定条件(例如,计时时长确定合并状态的方式、指令类型确定合并状态的方式),以便可扩展的适配不同的处理器设计。此外,计数器阈值,可以根据处理器的工作模式、处理器的功耗与性能的需求中选择不同的阈值;例如,在休眠状态下、功耗较高、处理器性能需求较高的状态下可以设置较高的计数器阈值,以支持多次数据缓存指令的合并,提高了访问缓存行的效率;并确保不会造成线程冲突、地址冲突的现象。
本申请实施例提供一种处理器芯片,用于执行上述任一实施例中所提供的方法。
本申请实施例提供一种处理器芯片,包括上述任一实施例中所提供的电路。
本申请提供一种电子设备,以及与处理器通信连接的存储器;
存储器存储计算机执行指令;
处理器执行存储器存储的计算机执行指令,以实现如上述实施例中任一项的方法。
图10为本申请实施例中提供的一种电子设备的结构示意图,如图10所示,该电子设备包括:
处理器(processor)291,电子设备还包括了存储器(memory)292;还可以包括通信接口(Communication Interface)293和总线294。其中,处理器291、存储器292、通信接口293、可以通过总线294完成相互间的通信。通信接口293可以用于信息传输。处理器291可以调用存储器292中的逻辑指令,以执行上述实施例的方法。
此外,上述的存储器292中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器292作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本申请实施例中的方法对应的程序指令/模块。处理器291通过运行存储在存储器292中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的方法。
存储器292可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器292可以包括高速随机存取存储器,还可以包括非易失性存储器。
本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现任一项的方法。
本申请提供一种计算机程序产品,计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现任一项的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种数据缓存指令的指令合并电路,其特征在于,包括:
第一确定模块,用于响应于当前时刻下接收到的第一指令,确定所述第一指令指示的缓存地址、第一线程标识以及指令类型;所述第一指令表征需要进行数据缓存处理;所述缓存地址用于指示待缓存数据对应的缓存行的地址;所述第一线程标识为执行所述第一指令的线程的标识;
第二确定模块,用于若确定所述指令类型为可合并类型,则在第一队列中,确定具有所述缓存地址和所述第一线程标识的数据缓存指令为第二指令;所述第一队列中包括至少一个数据缓存指令;
合并模块,用于若确定所述第一指令和所述第二指令可以进行合并,则合并所述第一指令和所述第二指令,得到合并后的指令;
替换模块,用于基于所述合并后的指令替换所述第一队列中的所述第二指令。
2.根据权利要求1所述的电路,其特征在于,合并模块,包括:
第一确定单元,用于确定当前时刻下所述第二指令的合并状态;所述合并状态用于表征当前是否可以进行合并处理;
第二确定单元,用于若合并状态表征当前可以进行合并处理,则确定所述第一指令和所述第二指令可以进行合并;
合并单元,用于合并所述第一指令和所述第二指令,得到合并后的指令。
3.根据权利要求2所述的电路,其特征在于,第一确定单元,具体用于:
若确定历史时段内曾接收到第一类型的缓存指令,或者,第二类型的缓存指令,或者,所述第二指令的指令类型为不可合并类型,则确定当前时刻下所述第二指令的合并状态为不可合并状态;所述历史时段为在当前时刻之前,所述第一队列的目标通道中存储有具有所述缓存地址的数据缓存指令的时段;
所述第一类型的缓存指令为具有所述缓存地址,且与所述第二指令所指示的第二线程标识不同的缓存指令;所述第二类型的缓存指令为具有所述缓存地址,且指令类型为不可合并类型的缓存指令;所述目标通道为所述第二指令当前在所述第一队列中所对应的存储通道。
4.根据权利要求3所述的电路,其特征在于,所述第一确定单元还用于:
若确定所述历史时段内未接收到所述第一类型的缓存指令,且未接收到所述第二类型的缓存指令,所述第二指令的指令类型为可合并类型,则确定当前时刻下所述第二指令所对应的计时时长;所述计时时长用于表征所述目标通道中,存储有具有所述缓存地址的缓存指令的时长;
若确定所述计时时长小于预设阈值,则确定所述第二指令的合并状态为可合并状态。
5.根据权利要求3所述的电路,其特征在于,所述第一确定单元还用于:
若确定所述历史时段内未接收到所述第一类型的缓存指令,且未接收到所述第二类型的缓存指令,所述第二指令的指令类型为可合并类型,则确定当前时刻下所述第二指令所对应的数据量;所述数据量用于指示所述第二指令所指示的待缓存数据所占用的存储空间;
若所述数据量表征所述第二指令所指示的待缓存数据所占用的存储空间与缓存行所对应的存储空间相同,则确定所述第二指令的合并状态为不可合并状态。
6.根据权利要求1所述的电路,其特征在于,所述电路还包括:
第三确定模块,用于若确定所述指令类型为不可合并类型,则在第一队列中,确定具有所述缓存地址的数据缓存指令为第三指令;
第一调整模块,用于调整所述第三指令的合并状态为不可合并状态;所述合并状态用于表征当前是否可以进行合并处理。
7.根据权利要求6所述的电路,其特征在于,所述电路还包括:
第一存储模块,用于将所述第一指令写入第二队列中。
8.根据权利要求1-7中任一项所述的电路,其特征在于,所述电路还包括:
第四确定模块,用于若确定所述指令类型为可合并类型,且所述第一队列中不存在第二指令,则确定具有所述缓存地址,且不具有所述第一线程标识的数据缓存指令为第四指令;
第二调整模块,用于调整所述第四指令的合并状态为不可合并状态;所述合并状态用于表征当前是否可以进行合并处理;
第二存储模块,用于将所述第一指令写入所述第一队列中未被占用的存储空间处;
第五确定模块,用于确定所述第一指令的合并状态为可合并状态。
9.一种数据缓存指令的指令合并方法,其特征在于,包括:
响应于当前时刻下接收到的第一指令,确定所述第一指令指示的缓存地址、第一线程标识以及指令类型;所述第一指令表征需要进行数据缓存处理;所述缓存地址用于指示待缓存数据对应的缓存行的地址;所述第一线程标识为执行所述第一指令的线程的标识;
若确定所述指令类型为可合并类型,则在第一队列中,确定具有所述缓存地址和所述第一线程标识的数据缓存指令为第二指令;所述第一队列中包括至少一个数据缓存指令;
若确定所述第一指令和所述第二指令可以进行合并,则合并所述第一指令和所述第二指令,得到合并后的指令;
基于所述合并后的指令替换所述第一队列中的所述第二指令。
10.一种处理器芯片,其特征在于,所述处理器芯片包括权利要求1-8中任一项所述的电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311444853.XA CN117742793B (zh) | 2023-11-01 | 2023-11-01 | 数据缓存指令的指令合并电路、方法及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311444853.XA CN117742793B (zh) | 2023-11-01 | 2023-11-01 | 数据缓存指令的指令合并电路、方法及芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117742793A CN117742793A (zh) | 2024-03-22 |
CN117742793B true CN117742793B (zh) | 2024-07-02 |
Family
ID=90251545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311444853.XA Active CN117742793B (zh) | 2023-11-01 | 2023-11-01 | 数据缓存指令的指令合并电路、方法及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117742793B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114416397A (zh) * | 2021-12-30 | 2022-04-29 | 上海阵量智能科技有限公司 | 一种芯片、访问内存的方法及计算机设备 |
CN115269455A (zh) * | 2022-09-30 | 2022-11-01 | 湖南兴天电子科技股份有限公司 | 基于fpga的磁盘数据读写控制方法、装置和存储终端 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860107A (en) * | 1996-10-07 | 1999-01-12 | International Business Machines Corporation | Processor and method for store gathering through merged store operations |
US20070067567A1 (en) * | 2005-09-19 | 2007-03-22 | Via Technologies, Inc. | Merging entries in processor caches |
JP5658336B1 (ja) * | 2013-09-04 | 2015-01-21 | Necプラットフォームズ株式会社 | ストアマージ処理装置、ストアマージ処理システム、ストアマージ処理方法、及び、ストアマージ処理プログラム |
US11403221B2 (en) * | 2020-09-24 | 2022-08-02 | Advanced Micro Devices, Inc. | Memory access response merging in a memory hierarchy |
CN113867801A (zh) * | 2021-09-30 | 2021-12-31 | 上海壁仞智能科技有限公司 | 指令缓存、指令缓存组及其请求合并方法 |
CN114416178A (zh) * | 2021-12-16 | 2022-04-29 | 北京小米移动软件有限公司 | 数据访问方法、装置及非临时性计算机可读存储介质 |
-
2023
- 2023-11-01 CN CN202311444853.XA patent/CN117742793B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114416397A (zh) * | 2021-12-30 | 2022-04-29 | 上海阵量智能科技有限公司 | 一种芯片、访问内存的方法及计算机设备 |
CN115269455A (zh) * | 2022-09-30 | 2022-11-01 | 湖南兴天电子科技股份有限公司 | 基于fpga的磁盘数据读写控制方法、装置和存储终端 |
Also Published As
Publication number | Publication date |
---|---|
CN117742793A (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102456085B1 (ko) | 로우 버퍼 충돌을 감소시키기 위한 동적 메모리 재매핑 | |
KR100524575B1 (ko) | 데이타 처리시스템에서 복수개의 메모리 억세스 리퀘스트신호를리오더링하는 방법 | |
CN107844429B (zh) | 存储器控制电路、存储器系统以及处理器系统 | |
JP5498505B2 (ja) | データバースト間の競合の解決 | |
CN108279927B (zh) | 可调整指令优先级的多通道指令控制方法及系统、控制器 | |
CN109669888A (zh) | 一种可配置且高效的嵌入式Nor-Flash控制器及控制方法 | |
CN101876911B (zh) | 基于PCI/PCIe总线多CPU系统启动方法及模块 | |
US11366689B2 (en) | Hardware for supporting OS driven observation and anticipation based on more granular, variable sized observation units | |
EP1760580A1 (en) | Processing operation information transfer control system and method | |
CN110737618B (zh) | 内嵌处理器进行快速数据通信的方法、装置及存储介质 | |
CN112039999A (zh) | 一种内核态访问分布式块存储系统的方法及系统 | |
CN101504567A (zh) | 一种cpu、cpu指令系统及降低cpu功耗的方法 | |
CN114780248A (zh) | 资源访问方法、装置、计算机设备及存储介质 | |
US20150234747A1 (en) | Cache memory controller and cache memory control method | |
CN113867801A (zh) | 指令缓存、指令缓存组及其请求合并方法 | |
CN117742793B (zh) | 数据缓存指令的指令合并电路、方法及芯片 | |
CN108959149A (zh) | 一种基于共享内存的多核处理器交互总线设计方法 | |
EP3702911B1 (en) | Hardware for supporting os driven load anticipation based on variable sized load units | |
CN116841458A (zh) | 存储器读写控制方法、系统、终端及存储介质 | |
JP2010061620A (ja) | Dma装置及びdma転送方法 | |
US8452920B1 (en) | System and method for controlling a dynamic random access memory | |
CN113076070A (zh) | 数据处理方法和装置 | |
CN113946435A (zh) | 内存管理技术及计算机系统 | |
CN115658570B (zh) | 闪存编程方法和闪存接口电路 | |
CN115794750B (zh) | 异步i/o系统文件打开/关闭的控制方法、装置及设备 |
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 |