CN102880559B - 基于应用敏感的微处理器末端高速缓存控制方法及装置 - Google Patents
基于应用敏感的微处理器末端高速缓存控制方法及装置 Download PDFInfo
- Publication number
- CN102880559B CN102880559B CN201210269038.XA CN201210269038A CN102880559B CN 102880559 B CN102880559 B CN 102880559B CN 201210269038 A CN201210269038 A CN 201210269038A CN 102880559 B CN102880559 B CN 102880559B
- Authority
- CN
- China
- Prior art keywords
- data
- replacement
- microoperation
- data line
- array
- 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
Abstract
本发明公开了一种基于应用敏感的微处理器末端高速缓存控制方法及装置,方法步骤如下:1)设置第一配置寄存器和第二配置寄存器;1)创建第一配置寄存器和第二配置寄存器;2)在接收指令时,译码部件获取缓存失效寄存器值、替换优先寄存器值;3)当所述指令失效时失效控制逻辑根据所述缓存失效寄存器值执行失效逻辑控制,且失效控制逻辑首先通过替换逻辑根据所述替换优先寄存器值对数据阵列内部的数据行执行替换操作;装置包括译码部件、标签阵列、有效位存储阵列、替换指示位存储阵列、替换逻辑、失效控制逻辑、数据阵列、第一配置寄存器和第二配置寄存器。本发明为应用程序调优加速实现了基础硬件支持,灵活性高。
Description
技术领域
本发明涉及微处理器中末端高速缓存(LLC:Last-Level Cache)性能提升优化方法,具体涉及一种根据应用特征灵活配置末端高速缓存的微操作指令类型和替换算法、提高末端高速缓存的执行性能的基于应用敏感的微处理器末端高速缓存控制方法及装置。
背景技术
现有技术的高速缓存流水线中的微指令译码通常与高速缓存接收到的命令形成固定映射,或与高速缓存的内部状态有关,但不能通过软件方法进行修改,如T2处理器的高速缓存是L2Cache,它的微指令产生只与接收到交叉开关部件的报文类型有关,这种方法忽略了应用程序本身的特点,无法表征出访存报文更宏观的特性。此外,现有技术微处理器末端高速缓存的替换算法通常也是设计时固定的,例如T2处理器的L2Cache采用了分组的NRU(Nearest-Recently Used,最近最少使用)算法,该算法只考虑了应用程序微观层面上的访存使用频率,而忽略了程序算法本身在使用数据集的宏观特性。
发明内容
本发明要解决的技术问题是提供一种能够通过针对不同应用程序访存模式灵活配置微操作映射方法和替换方法从而实现针对应用程序进行调优加速的基于应用敏感的微处理器末端高速缓存控制方法及装置。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于应用敏感的微处理器末端高速缓存控制方法,其实施步骤如下:
1)创建第一配置寄存器和第二配置寄存器;所述第一配置寄存器存储有一组与一致性引擎发出的指令类型一一对应的缓存失效寄存器值;所述第二配置寄存器存储有一组与一致性引擎发出的指令类型一一对应的替换优先寄存器值;
2)在接收到一致性引擎的指令时,译码部件在将所述指令译码为末端高速缓存的微操作时一并获取所述指令对应第一配置寄存器中的缓存失效寄存器值、对应第二配置寄存器中的替换优先寄存器值;
3)失效控制逻辑根据所述缓存失效寄存器值执行失效逻辑控制,当所述指令失效时,如果缓存失效寄存器值为1,则失效控制逻辑将直接向存储控制器发送读写指令而不再改变数据阵列现有的状态以及数据;如果缓存失效寄存器值为0,则失效控制逻辑首先通过替换逻辑根据所述替换优先寄存器值对数据阵列内部的数据行执行替换操作,然后将所述指令的写入数据或者从内存中读回的数据写入到数据阵列中被替换的数据行中;如果微操作的替换优先寄存器值为1,则在回填替换指示位存储阵列的时候,该数据行对应路号下的替换指示位将被置位为1,由于替换逻辑优先选择替换指示位为0的数据行进行替换,因此该数据行将优先保存在末端高速缓存中;如果该微操作的替换优先寄存器值为0,则在回填替换指示位存储阵列的时候,该数据行对应路号下的替换指示位将被置位为0,这样该数据行将来在末端高速缓存中优先替换出去。
作为本发明基于应用敏感的微处理器末端高速缓存控制方法的进一步改进:
所述步骤3)的详细步骤包括:
3.1)判断所述指令对应微操作的地址是否命中末端高速缓存,如果未命中则跳转执行步骤3.3),否则继续执行下一步;
3.2)检查所述微操作的类型,如果微操作为修改替换优先级命令则替换逻辑将微操作的替换优先寄存器值更新,否则继续保持微操作的替换优先寄存器值不变,最终替换逻辑将替换优先寄存器值回填至替换指示位存储阵列的替换指示位;如果微操作为读命令或者读旁路命令,则从末端高速缓存的数据阵列中读取所述微操作对应的数据行返回给一致性引擎部件;如果微操作为写命令或写旁路命令,则将最新数据写入末端高速缓存的数据体阵列中;最后退出处理流程;
3.3)检查缓存失效寄存器值,如果所述缓存失效寄存器值不为1,则跳转到3.5),否则继续执行下一步;
3.4)检查所述微操作的类型;如果微操作为读旁路指令则向内存控制器发送读命令,读命令的数据返回后直接发送给一致性引擎且不在末端高速缓存的数据阵列中保留备份;如果微操作是写旁路命令,则将写旁路命令的数据直接发送给内存控制器更新内存;如果微操作是修改替换优先级命令或空值则不做任何操作;最后退出处理流程;
3.5)替换逻辑从替换指示位存储阵列中读取同组数据行的替换指示位并从中选取一路数据行进行替换;
3.6)更新末端高速缓存中标志阵列中对应被替换数据行的标志值,根据替换优先寄存器值更新替换指示位存储阵列中对应被替换数据行的替换指示位,将有效位存储阵列中对应被替换数据行的有效位置为1;
3.7)检查微操作的类型,如果微操作为读命令或预取命令则跳转到3.9);如果微操作为空命令并退出处理流程;如果微操作为写指令则继续执行下一步;
3.8)将写指令的数据写入末端高速缓存的数据阵列中并将被替换的数据发送给内存控制器写回内存并退出处理流程;
3.9)向内存控制器发送读请求,在读请求的数据返回后将返回数据写入到末端高速缓存的数据阵列中对应的数据行,并将被替换的数据行写回内存;如果微操作为读命令,将返回数据发送给一致性引擎;最后退出处理流程。
所述步骤3.5)的详细步骤包括:
3.5.1)根据所述微操作的地址中寻址部分的值为索引在末端高速缓存的标签阵列中查找匹配的一个数据组,并获取所述数据组中每一路数据的替换指示位和有效位;
3.5.2)从所述数据组中查找第一个替换指示位为0且有效位为1的数据行,如果没有找到则将所述替换指示位置为全0,并重新查找第一个替换指示位为0且有效位为1的数据行;
3.5.3)最后将查找得到的数据行作为被替换的数据进行替换。
所述步骤3.5.1)中查找得到匹配的数据组后,首先将所述数据组分成多个子数据组;所述步骤3.5.2)中从所述数据组中查找第一个替换指示位为0且有效位为1的数据行时具体是指分别同时针对每一个子数据组查找第一个替换指示位为0且有效位为1的数据行,然后根据从任意一个子数据组中最早找到的第一个替换指示位为0且有效位为1的数据行作为最终找到的第一个替换指示位为0且有效位为1的数据行。
本发明还提供一种基于应用敏感的微处理器末端高速缓存控制装置,包括译码部件、标签阵列、有效位存储阵列、替换指示位存储阵列、替换逻辑、失效控制逻辑、数据阵列,所述译码部件分别通过标签阵列、有效位存储阵列、替换指示位存储阵列和替换逻辑相连,所述替换逻辑通过失效控制逻辑与数据阵列相连,所述译码部件与替换逻辑之间还设有第一配置寄存器和第二配置寄存器,所述第一配置寄存器存储有一组与一致性引擎发出的指令类型一一对应的缓存失效寄存器值,所述第二配置寄存器存储有一组与一致性引擎发出的指令类型一一对应的替换优先寄存器值;在接收到一致性引擎的指令时,所述译码部件在将所述指令译码为末端高速缓存的微操作时一并获取所述指令对应第一配置寄存器中的缓存失效寄存器值、对应第二配置寄存器中的替换优先寄存器值;所述失效控制逻辑根据所述缓存失效寄存器值执行失效逻辑控制,当所述指令失效时,如果缓存失效寄存器值为1,则所述失效控制逻辑将直接向存储控制器发送读写指令而不再改变数据阵列现有的状态以及数据;如果缓存失效寄存器值为0,则所述失效控制逻辑首先通过替换逻辑根据所述替换优先寄存器值对数据阵列内部的数据行执行替换操作,然后将所述指令的写入数据或者从内存中读回的数据写入到数据阵列中被替换的数据行中;如果微操作的替换优先寄存器值为1,则在回填替换指示位存储阵列的时候,该数据行对应路号下的替换指示位将被置位为1,由于替换逻辑优先选择替换指示位为0的数据行进行替换,因此该数据行将优先保存在末端高速缓存中;如果该微操作的替换优先寄存器值为0,则在回填替换指示位存储阵列的时候,该数据行对应路号下的替换指示位将被置位为0,这样该数据行将来在末端高速缓存中优先替换出去。
本发明基于应用敏感的微处理器末端高速缓存控制方法具有下述优点:本发明通过创建第一配置寄存器和第二配置寄存器,在接收到一致性引擎的指令时,译码部件在将指令译码为末端高速缓存的微操作时一并获取指令对应第一配置寄存器中的缓存失效寄存器值、对应第二配置寄存器中的替换优先寄存器值,并使得失效控制逻辑根据缓存失效寄存器值执行失效逻辑控制、执行替换时失效控制逻辑首先通过替换逻辑根据替换优先寄存器值对数据阵列内部的数据行执行替换操作,因此能够实现针对应用程序特点,结合程序运行时动态配置的第一配置寄存器和第二配置寄存器的值,改变一致性引擎指令与末端非一致性高速缓存的微操作类型的映射关系,并调整末端非一致性高速缓存的替换优先级,能够动态适应应用程序的访存特征,对不同应用分别加速,细微调优,具有很高的灵活性,为应用程序调优加速实现了基础的硬件支持。
本发明基于应用敏感的微处理器末端高速缓存控制装置由于具有实现基于应用敏感的微处理器末端高速缓存控制方法的结构,因此也具有上述基于应用敏感的微处理器末端高速缓存控制方法相应的技术效果。
附图说明
图1为本发明实施例装置的框架结构示意图。
图2为本发明实施例装置的工作流程示意图。
图例说明:1、译码部件;2、标签阵列;3、有效位存储阵列;4、替换指示位存储阵列;5、替换逻辑;6、失效控制逻辑;7、数据阵列;8、第一配置寄存器;9、第二配置寄存器。
具体实施方式
本实施例基于应用敏感的微处理器末端高速缓存控制方法的实施步骤如下:
1)创建第一配置寄存器(B-Reg寄存器)和第二配置寄存器(P-Reg寄存器);第一配置寄存器存储有一组与一致性引擎发出的指令类型一一对应的缓存失效寄存器值;第二配置寄存器存储有一组与一致性引擎发出的指令类型一一对应的替换优先寄存器值;
2)在接收到一致性引擎的指令时,译码部件在将指令译码为末端高速缓存的微操作时一并获取指令对应第一配置寄存器中的缓存失效寄存器值、对应第二配置寄存器中的替换优先寄存器值;
3)失效控制逻辑根据缓存失效寄存器值执行失效逻辑控制,当指令失效时,如果缓存失效寄存器值为1,则失效控制逻辑将直接向存储控制器发送读写指令而不再改变数据阵列现有的状态以及数据;如果缓存失效寄存器值为0,则失效控制逻辑首先通过替换逻辑根据替换优先寄存器值对数据阵列内部的数据行执行替换操作,然后将指令的写入数据或者从内存中读回的数据写入到数据阵列中被替换的数据行中。
本实施例在末端高速缓存中设置两组配置寄存器——B-Reg寄存器和P-Reg寄存器,并扩充了相关控制逻辑,B-Reg寄存器用于表征来自于一致性引擎的指令是否会导致数据在末端高速缓存中保留备份,P-Reg寄存器用于控制一致性引擎指令被译码为末端高速缓存的微操作时该数据在末端高速缓存中的替换优先级。一致性引擎发出的指令类型以及后续在末端高速缓存中的副本存储情况说明如下表1所示。
表1
指令类型 | 命令说明 |
WriteBack | 数据写回命令,之后末端高速缓存中没有副本 |
WriteUpdate | 数据写回命令,之后末端高速缓存中至少有1个最新副本 |
ReadShared | 共享读命令,之后末端高速缓存中拥有大于1个副本 |
ReadExclusive | 独占读命令,之后末端高速缓存中只拥有1个副本 |
DmaWrite | Dma写命令,之后末端高速缓存中拥有0个副本 |
DmaRead | Dma读命令,之后末端高速缓存中拥有0个副本 |
Prefetch | 数据预取命令,将特定地址数据预取到末端高速缓存中 |
UpdatePriority | 修改特定物理地址数据替换优先级的命令 |
本实施例中,译码部件将来自于一致性引擎的指令译码时每一个微操作对应一个三位的微操作码{R,W,B},其中最高位R位表示该指令是否是读语义,W位表示该位是否有写语义,B位来自于上述B-Reg控制器译码,表示是否旁路到内存。
本实施例中,B-Reg寄存器和P-Reg寄存器均为6位寄存器,译码部件在将一致性引擎命令译码为末端高速缓存微操作时,获取微操作码的映射规则如下表2所示。
表2
译码得到末端高速缓存微操作类型说明如下表3所示。
表3
某条指令中译码出来的对应B-Reg寄存器值为1,则该指令如果失效的时候,失效控制逻辑将直接向存储控制器发送读写指令,而不再改变现有末端缓存的状态,如果是读指令的话,数据从存储控制器返回后也将不回存到末端高速缓存中;如果对应B-Reg寄存器值为0,则该指令失效时,失效控制逻辑首先产生替换操作,将数据阵列中的一行数据写回到内存,同时将写指令的数据写入到被替换的数据阵列行中,或将从内存中读回的数据写入到被替换的数据阵列行中;如果该微操作的P-Reg寄存器值为1,则在回填替换指示位存储阵列(U阵列)的时候,该数据行对应路号下的替换指示位将被置位为1,由于替换逻辑优先选择替换指示位为0的数据行进行替换,因此该数据行将优先保存在末端高速缓存中;如果该微操作的P-Reg寄存器值为0,则在回填替换指示位存储阵列(U阵列)的时候,该数据行对应路号下的替换指示位将被置位为0,这样该数据行将来在末端高速缓存中优先替换出去。
本实施例中,步骤3)的详细步骤包括:
3.1)判断指令对应微操作的地址是否命中末端高速缓存,如果未命中则跳转执行步骤3.3),否则继续执行下一步;
3.2)检查微操作的类型,如果微操作为修改替换优先级命令则替换逻辑将微操作的替换优先寄存器值更新,否则继续保持微操作的替换优先寄存器值不变,最终替换逻辑将替换优先寄存器值回填至替换指示位存储阵列的替换指示位;如果微操作为读命令或者读旁路命令,则从末端高速缓存的数据阵列中读取微操作对应的数据行返回给一致性引擎部件;如果微操作为写命令或写旁路命令,则将最新数据写入末端高速缓存的数据体阵列中;最后退出处理流程;
3.3)检查缓存失效寄存器值,如果缓存失效寄存器值不为1,则跳转到3.5),否则继续执行下一步;
3.4)检查微操作的类型;如果微操作为读旁路指令则向内存控制器发送读命令,读命令的数据返回后直接发送给一致性引擎且不在末端高速缓存的数据阵列中保留备份;如果微操作是写旁路命令,则将写旁路命令的数据直接发送给内存控制器更新内存;如果微操作是修改替换优先级命令或空值则不做任何操作;最后退出处理流程;
3.5)替换逻辑从替换指示位存储阵列中读取同组数据行的替换指示位并从中选取一路数据行进行替换;
3.6)更新末端高速缓存中标志阵列中对应被替换数据行的标志值,根据替换优先寄存器值更新替换指示位存储阵列中对应被替换数据行的替换指示位,将有效位存储阵列中对应被替换数据行的有效位置为1;
3.7)检查微操作的类型,如果微操作为读命令或预取命令则跳转到3.9);如果微操作为空命令并退出处理流程;如果微操作为写指令则继续执行下一步;
3.8)将写指令的数据写入末端高速缓存的数据阵列中并将被替换的数据发送给内存控制器写回内存并退出处理流程;
3.9)向内存控制器发送读请求,在读请求的数据返回后将返回数据写入到末端高速缓存的数据阵列中对应的数据行,并将被替换的数据行写回内存;如果微操作为读命令,将返回数据发送给一致性引擎;最后退出处理流程。
本实施例中,步骤3.5)的详细步骤包括:
3.5.1)根据微操作的地址中寻址部分的值为索引在末端高速缓存的标签阵列中查找匹配的一个数据组,并获取数据组中每一路数据的替换指示位和有效位;
3.5.2)从数据组中查找第一个替换指示位为0且有效位为1的数据行,如果没有找到则将替换指示位置为全0,并重新查找第一个替换指示位为0且有效位为1的数据行;
3.5.3)最后将查找得到的数据行作为被替换的数据进行替换。
步骤3.5.1)中查找得到匹配的数据组后,首先将数据组分成多个子数据组;步骤3.5.2)中从数据组中查找第一个替换指示位为0且有效位为1的数据行时具体是指分别同时针对每一个子数据组查找第一个替换指示位为0且有效位为1的数据行,然后根据从任意一个子数据组中最早找到的第一个替换指示位为0且有效位为1的数据行作为最终找到的第一个替换指示位为0且有效位为1的数据行;本实施例通过将数据组分成多个子数据组,针对各个子数据组进行并行处理,能够提高替换逻辑的处理性能。
如图1所示,本实施例基于应用敏感的微处理器末端高速缓存控制装置包括译码部件1、标签阵列2、有效位存储阵列3、替换指示位存储阵列4、替换逻辑5、失效控制逻辑6、数据阵列7,译码部件1分别通过标签阵列2、有效位存储阵列3、替换指示位存储阵列4和替换逻辑5相连,替换逻辑5通过失效控制逻辑6与数据阵列7相连,译码部件1与替换逻辑5之间还设有第一配置寄存器8(下文中简称B-Reg寄存器)和第二配置寄存器9(下文中简称P-Reg寄存器),第一配置寄存器8存储有一组与一致性引擎发出的指令类型一一对应的缓存失效寄存器值,第二配置寄存器9存储有一组与一致性引擎发出的指令类型一一对应的替换优先寄存器值;在接收到一致性引擎的指令时,译码部件1在将指令译码为末端高速缓存的微操作时一并获取指令对应第一配置寄存器8中的缓存失效寄存器值、对应第二配置寄存器9中的替换优先寄存器值;失效控制逻辑6根据缓存失效寄存器值执行失效逻辑控制,当指令失效时,如果缓存失效寄存器值为1,则失效控制逻辑6将直接向存储控制器发送读写指令而不再改变数据阵列7现有的状态以及数据;如果缓存失效寄存器值为0,则失效控制逻辑6首先通过替换逻辑5根据替换优先寄存器值对数据阵列7内部的数据行执行替换操作,然后将指令的写入数据或者从内存中读回的数据写入到数据阵列7中被替换的数据行中。
译码部件1将来自于一致性引擎的指令译码为末端高速缓存的内部微操作,表1给出了一致性引擎的指令的主要类型,这些指令将按照表2给出的映射关系译码到表3所示的非一致性末端高速缓存的微操作。除了上述指令以外,本实施例还能够根据需要扩展支持更多的指令和微操作类型。标签阵列2(Tag阵列)用于保存末端高速缓存微操作地址中不用于寻址的那一部分地址位,其项数由指令地址中用于寻址的那一部分地址位决定,本实施例能够不局限于标签阵列2和微操作地址的具体参数指标,本实施例中一致性引擎发出的指令的指令地址为40位,其中10位用于寻址,因此标签阵列2共有1024组,本实施例中每组标签阵列2有32路,对应32路数据行。有效位存储阵列3(V阵列)用于记录缓存项的有效位(V位),替换指示位存储阵列4(U阵列)用于记录缓存项的替换指示位(U位)。与标签阵列2的结构对应,有效位存储阵列3和替换指示位存储阵列4都有1024项,每项数据32位与标签阵列2中的每一路相对应,如第0位对应第0路,第31位对应第31路。有效位存储阵列3中的数据用于表征标签阵列2的某一组中的某一路是否有效,替换指示位存储阵列4中的数据用来指示标签阵列2的某一组中的某一路在替换时如何选择。替换逻辑5实现了基于有效位存储阵列3存储的有效位、替换指示位存储阵列4存储的替换指示位执行替换策略,其具体方法如下:当某条末端高速缓存中的微操作失效需要发生替换时,首先以该微操作的地址中寻址部分的值为索引选出有效位存储阵列3和替换指示位存储阵列4中的各一项数据,然后从选出第一个替换指示位(U位)为0且有效位(V位)为1的路进行替换,如果没有替换指示位(U位)为0且有效位(V位)为1的路,则将所有的替换指示位(U位)置为全0后再次进行选择。实际实现中为了更好的提高替换逻辑5的性能,本实施例中将32位替换指示位(U位)分成4组,每组内部先各按此方法选出一路,然后从这4组中再选出一路进行替换。本实施例中对应表3所列的操作中只有Rd、Wr和Pf微操作可能会产生替换,其它命令均不会产生替换。失效控制逻辑6是末端高速缓存与存储控制器进行交互的接口,主要负责访存的报文的产生以及访存返回数据的接收和处理。数据阵列7负责存储和控制末端高速缓存中的数据。
如图2所示,本实施例基于应用敏感的微处理器末端高速缓存控制装置的详细工作步骤如下:
A1)译码部件1读标签阵列2(Tag阵列)、有效位存储阵列3(V阵列)、替换指示位存储阵列4(U阵列)、第一配置寄存器8(B-Reg)和第二配置寄存器9(P-Reg寄存器),将来自于一致性引擎的指令译码为末端高速缓存内部的微操作OP={R,W,B}得到其中的缓存失效寄存器值(B值),获取该指令对应的替换优先寄存器值(P值)。
A2)计算该微操作OP的地址是否在末端高速缓存的数据阵列7中失效,如果失效转到A5),否则继续执行以下步骤。
A3)如果微操作是SetP,则将P值更新为SetP携带的数据位,否则P值仍然为步骤1)中读出的P值;然后将P值回填到替换指示位存储阵列4(U阵列)中的相应数据行的替换指示位(U位)。
A4)如果微操作是Rd或RdB,则从数据阵列7中读出相应数据行返回给一致性引擎部件,如果是Wr或WrB指令,则将最新数据写入到数据阵列7中对应的数据行中。之后跳转到A12)。
A5)如果指令译码得到的微操作码中的B值不为1,则跳转到A7),否则继续执行以下步骤。
A6)如果微操作是RdB指令,则向内存发送读命令,数据返回后直接传给一致性引擎而不在末端高速缓存的数据阵列7中保留备份。如果微操作是WrB指令,则将最新数据直接更新到内存。如果微操作是SetP或Null则不做任何操作。之后跳转到A12)。
A7)从替换指示位存储阵列4(U阵列)中读取同组数据行的替换指示位,并从中选取一路数据行进行替换。
A8)将被替换数据行对应的标签值(Tag值)修改为新的标签值和有效位(V位)置1并回填到标签阵列2和有效位存储阵列3的相应位置,同时根据1)中读到的替换优先寄存器值(P值)修改替换指示位存储阵列4(U阵列)相应的替换指示位(U位)。
A9)检查微操作的类型,如果是Rd或Pf操作,跳转到A11);如果是Null操作,跳转到A12);如果是Wr操作则继续执行以下步骤。
A10)将最新数据写入数据阵列7中对应的数据行并将被替换的数据写回内存。之后跳转到A12)。
A11)向内存发送读请求,数据返回后将返回数据写入到数据阵列7中对应的数据行,并将被替换的数据写回内存。如果是Rd操作,还需将返回数据传给一致性引擎。
A12)流程结束。
本实施例中对于第一配置寄存器8(B-Reg寄存器)和第二配置寄存器9(P-Reg寄存器)的具体值可以根据应用程序的特点进行灵活配置,B-Reg寄存器的配置和P-Reg的配置有一定的功能相关性,程序员可以将它们直接按位相反配置,也可以各自独立的更细致的按指令分别配置。
本实施例给出了几种典型应用下配置B-Reg寄存器和P-Reg寄存器的方法:
1、对于一个数据集比较大的应用程序而言,程序员需要充分利用片上末端高速缓存资源存储尽量多的数据,那么如果一致性高速缓存中已经有某个数据副本了,末端高速缓存中就应该尽量不要保存该副本。按照表1中给出的来自一致性引擎的指令类型的说明,WriteBack指令、DmaRead和DmaWrite指令结束后一致性高速缓存中将没有副本了,因此可以考虑当这些指令失效时,在末端高速缓存中保留一个数据副本,因此置B-Reg=6’b011100(最高位为B-Reg[5],最低位为B-Reg[0])。同样,当WriteBack、DmaRead和DmaWrite指令在末端高速缓存中命中时,这些数据行将在替换时优先考虑保留下来,因此考虑将P-Reg寄存器的值配置为6'b100011(最高位为P-Reg[5],最低位为P-Reg[0])。
2、对于数据集比较小且共享数据使用比较频繁的应用程序,一致性引擎访问末端高速缓存的延时可能比访问一致性高速缓存的延时还要小,程序员想尽量将末端高速缓存用于保存共享数据,也就是说如果一致性高速缓存中已经有某个数据副本了,末端高速缓存中就应该尽量也保存一个副本。按照表1中的指令的说明,只有WriteUpdate和ReadShared指令暗示一致性高速缓存中的数据是共享数据,并被多个处理核共享使用,那么当这些指令失效时,应该考虑在末端高速缓存中也保留一个数据副本,因此可以考虑将B-Reg寄存器的值配置为6'b100111。同样,当WriteUpdate和ReadShared指令在末端高速缓存中命中时,这些数据行将在替换时优先考虑保留下来,因此考虑将P-Reg寄存器的值配置为6'b011000。
3、对于磁盘访问程序,其产生的一致性引擎指令中包含大量DMA指令,写磁盘会产生DmaRead指令,读磁盘会产生DmaWrite指令。DmaRead的数据已经使用完毕,因此不需要在末端高速缓存备份副本,可以考虑置B-Reg[0]=1,P-Reg[0]=0;DMA写的数据通常将很快会被用户程序使用,因此考虑置B-Reg[1]=0,P-Reg[1]=1。
因此,本实施例的可以针对应用程序特点,通过运行时动态配置B-Reg寄存器和P-Reg寄存器的值,改变一致性引擎指令与末端非一致性高速缓存的微操作类型的映射关系,并调整末端非一致性高速缓存的替换优先级,可以动态适应应用程序的访存特征,对不同应用分别加速,细微调优,具有很高的灵活性,本实施例只给出对这种优化控制方法的硬件支持,不限定用户采用何种算法具体来配置第一配置寄存器8(B-Reg寄存器)和第二配置寄存器9(P-Reg寄存器)。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (5)
1.一种基于应用敏感的微处理器末端高速缓存控制方法,其特征在于其实施步骤如下:
1)创建第一配置寄存器和第二配置寄存器;所述第一配置寄存器存储有一组与一致性引擎发出的指令类型一一对应的缓存失效寄存器值;所述第二配置寄存器存储有一组与一致性引擎发出的指令类型一一对应的替换优先寄存器值;
2)在接收到一致性引擎的指令时,译码部件在将所述指令译码为末端高速缓存的微操作时一并获取所述指令对应第一配置寄存器中的缓存失效寄存器值、对应第二配置寄存器中的替换优先寄存器值;
3)失效控制逻辑根据所述缓存失效寄存器值执行失效逻辑控制,当所述指令失效时,如果缓存失效寄存器值为1,则失效控制逻辑将直接向存储控制器发送读写指令而不再改变数据阵列现有的状态以及数据;如果缓存失效寄存器值为0,则失效控制逻辑首先通过替换逻辑根据所述替换优先寄存器值对数据阵列内部的数据行执行替换操作,然后将所述指令的写入数据或者从内存中读回的数据写入到数据阵列中被替换的数据行中;如果微操作的替换优先寄存器值为1,则在回填替换指示位存储阵列的时候,该数据行对应路号下的替换指示位将被置位为1,由于替换逻辑优先选择替换指示位为0的数据行进行替换,因此该数据行将优先保存在末端高速缓存中;如果该微操作的替换优先寄存器值为0,则在回填替换指示位存储阵列的时候,该数据行对应路号下的替换指示位将被置位为0,这样该数据行将来在末端高速缓存中优先替换出去。
2.根据权利要求1所述的基于应用敏感的微处理器末端高速缓存控制方法,其特征在于,所述步骤3)的详细步骤包括:
3.1)判断所述指令对应微操作的地址是否命中末端高速缓存,如果未命中则跳转执行步骤3.3),否则继续执行下一步;
3.2)检查所述微操作的类型,如果微操作为修改替换优先级命令则替换逻辑将微操作的替换优先寄存器值更新,否则继续保持微操作的替换优先寄存器值不变,最终替换逻辑将替换优先寄存器值回填至替换指示位存储阵列的替换指示位;如果微操作为读命令或者读旁路命令,则从末端高速缓存的数据阵列中读取所述微操作对应的数据行返回给一致性引擎部件;如果微操作为写命令或写旁路命令,则将最新数据写入末端高速缓存的数据体阵列中;最后退出处理流程;
3.3)检查缓存失效寄存器值,如果所述缓存失效寄存器值不为1,则跳转到3.5),否则继续执行下一步;
3.4)检查所述微操作的类型;如果微操作为读旁路指令则向内存控制器发送读命令,读命令的数据返回后直接发送给一致性引擎且不在末端高速缓存的数据阵列中保留备份;如果微操作是写旁路命令,则将写旁路命令的数据直接发送给内存控制器更新内存;如果微操作是修改替换优先级命令或空值则不做任何操作;最后退出处理流程;
3.5)替换逻辑从替换指示位存储阵列中读取同组数据行的替换指示位并从中选取一路数据行进行替换;
3.6)更新末端高速缓存中标志阵列中对应被替换数据行的标志值,根据替换优先寄存器值更新替换指示位存储阵列中对应被替换数据行的替换指示位,将有效位存储阵列中对应被替换数据行的有效位置为1;
3.7)检查微操作的类型,如果微操作为读命令或预取命令则跳转到3.9);如果微操作为空命令并退出处理流程;如果微操作为写指令则继续执行下一步;
3.8)将写指令的数据写入末端高速缓存的数据阵列中并将被替换的数据发送给内存控制器写回内存并退出处理流程;
3.9)向内存控制器发送读请求,在读请求的数据返回后将返回数据写入到末端高速缓存的数据阵列中对应的数据行,并将被替换的数据行写回内存;如果微操作为读命令,将返回数据发送给一致性引擎;最后退出处理流程。
3.根据权利要求2所述的基于应用敏感的微处理器末端高速缓存控制方法,其特征在于,所述步骤3.5)的详细步骤包括:
3.5.1)根据所述微操作的地址中寻址部分的值为索引在末端高速缓存的标签阵列中查找匹配的一个数据组,并获取所述数据组中每一路数据的替换指示位和有效位;
3.5.2)从所述数据组中查找第一个替换指示位为0且有效位为1的数据行,如果没有找到则将所述替换指示位置为全0,并重新查找第一个替换指示位为0且有效位为1的数据行;
3.5.3)最后将查找得到的数据行作为被替换的数据进行替换。
4.根据权利要求3所述的基于应用敏感的微处理器末端高速缓存控制方法,其特征在于:所述步骤3.5.1)中查找得到匹配的数据组后,首先将所述数据组分成多个子数据组;所述步骤3.5.2)中从所述数据组中查找第一个替换指示位为0且有效位为1的数据行时具体是指分别同时针对每一个子数据组查找第一个替换指示位为0且有效位为1的数据行,然后根据从任意一个子数据组中最早找到的第一个替换指示位为0且有效位为1的数据行作为最终找到的第一个替换指示位为0且有效位为1的数据行。
5.一种基于应用敏感的微处理器末端高速缓存控制装置,包括译码部件(1)、标签阵列(2)、有效位存储阵列(3)、替换指示位存储阵列(4)、替换逻辑(5)、失效控制逻辑(6)、数据阵列(7),所述译码部件(1)分别通过标签阵列(2)、有效位存储阵列(3)、替换指示位存储阵列(4)和替换逻辑(5)相连,所述替换逻辑(5)通过失效控制逻辑(6)与数据阵列(7)相连,其特征在于:所述译码部件(1)与替换逻辑(5)之间还设有第一配置寄存器(8)和第二配置寄存器(9),所述第一配置寄存器(8)存储有一组与一致性引擎发出的指令类型一一对应的缓存失效寄存器值,所述第二配置寄存器(9)存储有一组与一致性引擎发出的指令类型一一对应的替换优先寄存器值;在接收到一致性引擎的指令时,所述译码部件(1)在将所述指令译码为末端高速缓存的微操作时一并获取所述指令对应第一配置寄存器(8)中的缓存失效寄存器值、对应第二配置寄存器(9)中的替换优先寄存器值;所述失效控制逻辑(6)根据所述缓存失效寄存器值执行失效逻辑控制,当所述指令失效时,如果缓存失效寄存器值为1,则所述失效控制逻辑(6)将直接向存储控制器发送读写指令而不再改变数据阵列(7)现有的状态以及数据;如果缓存失效寄存器值为0,则所述失效控制逻辑(6)首先通过替换逻辑(5)根据所述替换优先寄存器值对数据阵列(7)内部的数据行执行替换操作,然后将所述指令的写入数据或者从内存中读回的数据写入到数据阵列(7)中被替换的数据行中;如果微操作的替换优先寄存器值为1,则在回填替换指示位存储阵列(4)的时候,该数据行对应路号下的替换指示位将被置位为1,由于替换逻辑(5)优先选择替换指示位为0的数据行进行替换,因此该数据行将优先保存在末端高速缓存中;如果该微操作的替换优先寄存器值为0,则在回填替换指示位存储阵列(4)的时候,该数据行对应路号下的替换指示位将被置位为0,这样该数据行将来在末端高速缓存中优先替换出去。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210269038.XA CN102880559B (zh) | 2012-07-31 | 2012-07-31 | 基于应用敏感的微处理器末端高速缓存控制方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210269038.XA CN102880559B (zh) | 2012-07-31 | 2012-07-31 | 基于应用敏感的微处理器末端高速缓存控制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102880559A CN102880559A (zh) | 2013-01-16 |
CN102880559B true CN102880559B (zh) | 2015-01-21 |
Family
ID=47481892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210269038.XA Active CN102880559B (zh) | 2012-07-31 | 2012-07-31 | 基于应用敏感的微处理器末端高速缓存控制方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102880559B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375957B (zh) * | 2013-08-15 | 2018-10-09 | 华为技术有限公司 | 一种数据替换的方法和设备 |
US10545685B2 (en) * | 2017-08-30 | 2020-01-28 | Micron Technology, Inc. | SLC cache management |
CN112612727B (zh) * | 2020-12-08 | 2023-07-07 | 成都海光微电子技术有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
CN117130663A (zh) * | 2023-09-19 | 2023-11-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728838B2 (en) * | 2000-08-21 | 2004-04-27 | Texas Instruments Incorporated | Cache operation based on range of addresses |
CN1661571A (zh) * | 2003-09-04 | 2005-08-31 | 国际商业机器公司 | 高速缓存的数据替换系统和确定方法 |
CN1690985A (zh) * | 2004-04-20 | 2005-11-02 | 日立环球储存科技荷兰有限公司 | 用于高速缓存的磁盘装置和控制方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8407432B2 (en) * | 2005-06-30 | 2013-03-26 | Intel Corporation | Cache coherency sequencing implementation and adaptive LLC access priority control for CMP |
-
2012
- 2012-07-31 CN CN201210269038.XA patent/CN102880559B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728838B2 (en) * | 2000-08-21 | 2004-04-27 | Texas Instruments Incorporated | Cache operation based on range of addresses |
CN1661571A (zh) * | 2003-09-04 | 2005-08-31 | 国际商业机器公司 | 高速缓存的数据替换系统和确定方法 |
CN1690985A (zh) * | 2004-04-20 | 2005-11-02 | 日立环球储存科技荷兰有限公司 | 用于高速缓存的磁盘装置和控制方法 |
Non-Patent Citations (3)
Title |
---|
Aamer Jaleel等.Last Level Cache(LLC) Performance of Data Mining Workloads On a CMP-A Case Study of Parallel Bioinformatics Workloads.《High-Performance Computer Architecture,2006》.2006,第88-98页. * |
谢伦国等.存储级并行与处理器微体系结构.《计算机学报》.2011,第34卷(第4期),全文. * |
隋秀峰.高性能微处理器中自适应高速缓存管理策略研究.《中国博士学位论文全文数据库信息科技辑》.2011,(第6期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN102880559A (zh) | 2013-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
US10019381B2 (en) | Cache control to reduce transaction roll back | |
US9396117B2 (en) | Instruction cache power reduction | |
US20180300258A1 (en) | Access rank aware cache replacement policy | |
US20080270702A1 (en) | Method and apparatus for an efficient multi-path trace cache design | |
CN103729306B (zh) | 高速缓存块无效的方法和数据处理设备 | |
US11847058B2 (en) | Using a second content-addressable memory to manage memory burst accesses in memory sub-systems | |
CN103513957A (zh) | 高性能缓存系统和方法 | |
EP1831791A2 (en) | Method for programmer-controlled cache line eviction policy | |
US20130159679A1 (en) | Providing Hint Register Storage For A Processor | |
EP1869557B1 (en) | Global modified indicator to reduce power consumption on cache miss | |
CN102880559B (zh) | 基于应用敏感的微处理器末端高速缓存控制方法及装置 | |
CN104662520A (zh) | 用于管理具有不同高速缓存能力的跨页指令的方法和设备 | |
CN103778070A (zh) | 多个块一致性操作的并行处理 | |
JPH04270431A (ja) | データ 処理装置のメモリ システム | |
US7290092B2 (en) | Runtime register allocator | |
US11327903B2 (en) | Multiple guard tag setting instruction | |
US20220398198A1 (en) | Tags and data for caches | |
JP2007272681A (ja) | キャッシュメモリ装置及びそのキャッシュラインの入れ替え方法 | |
US11048617B2 (en) | Method of accessing metadata when debugging a program to be executed on processing circuitry | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 | |
CN116340204A (zh) | 区域感知增量预取器 | |
Paik et al. | Cost model based analyses on performance effects of loop transformations in block associative sector translation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |