CN116991479B - 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 - Google Patents
超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 Download PDFInfo
- Publication number
- CN116991479B CN116991479B CN202311273770.9A CN202311273770A CN116991479B CN 116991479 B CN116991479 B CN 116991479B CN 202311273770 A CN202311273770 A CN 202311273770A CN 116991479 B CN116991479 B CN 116991479B
- Authority
- CN
- China
- Prior art keywords
- data
- tag
- cache
- logic
- error correction
- 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
- 238000012937 correction Methods 0.000 title claims abstract description 92
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000004590 computer program Methods 0.000 claims description 12
- 230000009191 jumping Effects 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种超长指令字缓存标签体的前瞻执行‑旁路纠错方法及装置,本发明包括针对当前请求,通过旁路的方式获取从标签体中读出的未校验的标签值,在缓存访问流水线中的命中判断逻辑对标签值进行前瞻的命中判断的同时,对标签值进行校验,若校验通过则正常执行;否则,禁止缓存访问流水线访问数据体;对读出的标签值进行纠错,并将纠错后的标签值重新送入缓存访问流水线以实现超长指令字缓存标签体的前瞻执行‑旁路纠错。本发明旨在不增加延迟、不引入关键路径且对性能影响低的前提下为标签增加纠错码,进一步提高超长指令字缓存的可靠性,且适用于在任何需要保持流水线延迟、不引入关键路径的前提下为缓存增加标签纠错码的情形。
Description
技术领域
本发明涉及计算机的微处理器技术领域,具体涉及一种超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置。
背景技术
超长指令字(Very Long Instruction Word,VLIW)架构是现代高性能微处理器使用较多的一种多发射设计方法,在VLIW架构中,编译器静态完成指令间的相关性检测和调度,并将多条可并行执行的指令组合成一个指令包。VLIW架构中具有许多不同的、可并行执行的功能单元,取指时一次取出一个指令包,指令包中不同的指令会被发往不同的功能单元,完成执行过程。由于硬件只用负责取指和发射,不用关注指令间的相关性,因此其解码逻辑较超标量更简单、功耗更低。要通过软件方式静态完成调度,处理器中各个功能单元的延迟(即运算时间)就必须固定,这样在才能在编译时确定指令执行的结果何时可用,从而完成指令调度。在微架构上,通常采用锁步的方式实现VLIW,即任意功能单元的停顿会导致所有功能单元停顿。高速缓存(Cache)是缓解处理器与存储器速度差的有效方案,被各类处理器所广泛使用。Cache的基本工作原理,是将频繁访问的少量数据存入高速小容量的片上存储器,能够快速满足处理器的大量访存需求,从而降低整体访存延迟。VLIW架构处理器也广泛使用Cache,在这些处理器中,Cache同样要遵守VLIW架构的固定延迟要求,因而从访问Cache到返回数据所需的时钟周期是固定的。为了保证Cache的可靠性,Cache除了存储原始数据外,还存储对应的纠错码(Error Correcting Code,ECC),写入时编码、读取时解码,能够纠正数据在Cache中存储时出现过的错误。若要进一步提高Cache的可靠性,除了数据之外,Cache中所存储的Tag也应该增加纠错码。对于VLIW架构处理器中的Cache,由于存在固定延迟要求,不能在Cache流水线中为Tag解码增加流水线级数,否则会导致延迟增加;直接将Tag解码并入已有的流水站,则会导致关键路径问题。
图1为VLIW架构下两路组相联映射Cache典型的流水线,现以该流水线作为基本流水线来说明该方法的原理。流水线中各流水站的主要功能如下:命中判断站:Cache接收到访存地址后访问Tag存储体(标签体/标签体),获取两路标签值(Tag值),并进行命中判断。数据访问站:根据命中结果访问两路数据存储体中被命中的一路。若为写操作,则数据进行ECC编码后写入数据存储体;若为读,则读出带纠错码的数据。出现缺失时,停顿整个流水线并处理缺失。ECC解码站:读出带纠错码的数据后,还需进行ECC解码操作,判断数据存储是否出错,并执行相应的纠错。经过解码、纠错后的数据最终可以返回。该流水线中,只有数据体带有纠错码,而标签体无纠错码。为了保证命中判断结果的可靠性,从而进一步提高Cache的可靠性,需要为标签体也添加纠错码。但是,ECC解码逻辑的延时较长,如果直接加入到标签体输出与命中判断逻辑之间,会导致关键路径;如果为标签体也增加ECC解码站,则Cache流水线级数增加,延迟也将增加,违反VLIW最初设定的固定延迟要求,导致整个微处理器需要重新设计。因此,需要一种方法能够在不引入关键路径、不增加Cache流水线延迟且对性能影响低的情况下,为标签体添加纠错码。
图2所示为TI公司的标签纠错解决方案。该方案中,标签体与数据体都在最开始访问并解码。得到解码后的标签与数据后,根据标签进行命中判断,由于使用了纠错后的标签,此时的命中判断情形是可靠的。根据Cache的命中情况,如果是读,则从两路数据中选择一路输出;如果是写,则写入被命中的一路。该方案在一个周期内需要读取4个存储体,每次解码也需解码2路标签、2路数据,会增大功耗。为了保证功耗与资源开销,TI将两路组相联变为直接映射,每次只读取一路标签、一路数据,并解码一路标签、一路数据,数据输出时也不用进行多选。该方案虽然满足不增加流水线延迟、不引入关键路径的需求,也不增加额外的硬件资源与功耗,但将Cache由两路组相联变为直接映射,会导致Cache的缺失率升高,从而影响Cache性能。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置,本发明旨在不增加延迟、不引入关键路径且对性能影响低的前提下为标签增加纠错,提高超长指令字缓存的可靠性,而且能够保持超长指令字缓存为两路组相联而不会影响性能。
为了解决上述技术问题,本发明采用的技术方案为:
一种超长指令字缓存标签体的前瞻执行-旁路纠错方法,包括:
S101,针对当前请求,通过旁路的方式获取从标签体中读出的未校验的标签值,在缓存访问流水线中的命中判断逻辑对标签值进行前瞻的命中判断的同时,对标签值进行校验,若校验通过,则跳转步骤S102;否则跳转步骤S103;
S102,若前瞻的命中判断的结果为命中,则允许缓存访问流水线中的数据访问逻辑使用标签值对从数据体中读出的数据值,再通过缓存访问流水线中的数据校验逻辑对数据值进行校验后输出,结束并退出;
S103,禁止缓存访问流水线中的数据访问逻辑针对当前请求访问数据体;对读出的标签值进行纠错,并将纠错后的标签值重新送入缓存访问流水线中的命中判断逻辑以通过命中判断逻辑对标签值进行命中判断,若命中判断的结果为命中,则允许缓存访问流水线中的数据访问逻辑使用标签值对从数据体中读出的数据值,再通过缓存访问流水线中的数据校验逻辑对数据值进行校验后输出,结束并退出。
可选地,步骤S103中将纠错后的标签值重新送入缓存访问流水线中的命中判断逻辑时,包括先将校验不通过的请求放入重执行队列,然后再通过重执行队列的调度机制,将重执行队列中存储的校验不通过的请求按照顺序重新读取标签值并纠错,再将纠错后的标签值送入缓存访问流水线中的命中判断逻辑。
可选地,步骤S101中对标签值进行校验是指对标签值进行ECC解码校验。
可选地,步骤S103中对读出的标签值进行纠错是指对标签值进行ECC纠错。
可选地,所述通过缓存访问流水线中的数据校验逻辑对数据值进行校验是指通过缓存访问流水线中的数据校验逻辑对数据值进行ECC校验纠错。
此外,本发明还提供一种用于应用前文所述超长指令字缓存标签体的前瞻执行-旁路纠错方法的超长指令字缓存标签体的前瞻执行-旁路纠错装置,包括:
旁路校验模块,用于针对当前请求,通过旁路的方式获取从标签体中读出的标签值,在缓存访问流水线中的命中判断逻辑对标签值进行前瞻的命中判断的同时,对标签值进行校验,若校验不通过,则发送发现错误信号给纠错控制器;
纠错控制器,用于在收到错误信号后禁止缓存访问流水线中的数据访问逻辑针对当前请求访问数据体,否则允许缓存访问流水线中的数据访问逻辑使用标签值对从数据体中读出的数据值;且在禁止缓存访问流水线中的数据访问逻辑针对当前请求访问数据体后将校验不通过的请求放入重执行队列;
重执行队列,用于将存储的校验不通过的请求重新读取标签值并纠错,再将纠错后的标签值送入缓存访问流水线中的命中判断逻辑;
所述旁路校验模块、纠错控制器以及重执行队列依次相连。
此外,本发明还提供一种超长指令字缓存装置,包括标签体、数据体以及缓存访问流水线,所述缓存访问流水线中包括依次相连的标签读取逻辑、命中判断逻辑、数据访问逻辑和数据校验逻辑,所述超长指令字缓存装置还包括前文所述的超长指令字缓存标签体的前瞻执行-旁路纠错装置,所述标签读取逻辑的输出端分别与命中判断逻辑、前瞻执行-旁路纠错装置的旁路校验模块相连,所述数据访问逻辑的控制端与纠错控制器相连,所述前瞻执行-旁路纠错装置的重执行队列的输出端与标签读取逻辑的输入端相连。
此外,本发明还提供一种微处理器,包括带有相互连接的缓存装置和处理器核的处理器本体,所述缓存装置为前文所述的超长指令字缓存装置。
此外,本发明还提供一种计算机设备,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述超长指令字缓存标签体的前瞻执行-旁路纠错方法。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述超长指令字缓存标签体的前瞻执行-旁路纠错方法。
和现有技术相比,本发明主要具有下述优点:本发明包括针对当前请求,通过旁路的方式获取从标签体中读出的未校验的标签值,在缓存访问流水线中的命中判断逻辑对标签值进行前瞻的命中判断的同时,对标签值进行校验,若校验通过则正常执行;否则,禁止缓存访问流水线访问数据体;对读出的标签值进行纠错,并将纠错后的标签值重新送入缓存访问流水线以实现超长指令字缓存标签体的前瞻执行-旁路纠错,通过上述方法,使得本发明能够在不增加延迟、不引入关键路径且对性能影响低的前提下为标签增加纠错码,进一步提高超长指令字缓存的可靠性,且适用于在任何需要保持流水线延迟、不引入关键路径的前提下为缓存增加标签纠错码的情形,而且能够保持超长指令字缓存为两路组相联而不会影响性能。
附图说明
图1为现有技术中VLIW架构下两路组相联映射Cache典型的流水线。
图2为现有技术中TI公司对于标签体纠错的解决方案。
图3为本发明实施例中前瞻执行-旁路纠错方法的原理结构示意图。
图4为本发明实施例中两路标签均不出错的仿真波形示意图。
具体实施方式
本发明超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置的原理是前瞻执行-旁路纠错,即:由于访问存储器时数据出错的概率极小,因此读出数据是否出错是一个良好的被预测事件,只需简单地静态预测每一次读取都未出错,便能得到一个正确率极高的预测器。若静态预测标签读取无错,访问标签体后可利用未解码的标签直接参与后续命中判断等过程,采用前瞻执行的方式完成Cache访问,标签解码过程就不用再加入Cache流水线,可以成为旁路,从而避免关键路径,也不会增加流水线延迟。
本实施例超长指令字缓存(Cache)标签体的前瞻执行-旁路纠错方法包括:
S101,针对当前请求,通过旁路的方式获取从标签体中读出的未校验的标签值,在缓存访问流水线中的命中判断逻辑对标签值进行前瞻的命中判断的同时,对标签值进行校验,若校验通过,则跳转步骤S102;否则跳转步骤S103;
S102,若前瞻的命中判断的结果为命中,则允许缓存访问流水线中的数据访问逻辑使用标签值对从数据体中读出的数据值,再通过缓存访问流水线中的数据校验逻辑对数据值进行校验后输出,结束并退出;
S103,禁止缓存访问流水线中的数据访问逻辑针对当前请求访问数据体;对读出的标签值进行纠错,并将纠错后的标签值重新送入缓存访问流水线中的命中判断逻辑以通过命中判断逻辑对标签值进行命中判断,若命中判断的结果为命中,则允许缓存访问流水线中的数据访问逻辑使用标签值对从数据体中读出的数据值,再通过缓存访问流水线中的数据校验逻辑对数据值进行校验后输出,结束并退出。
本实施例中,步骤S103中将纠错后的标签值重新送入缓存访问流水线中的命中判断逻辑时,包括先将校验不通过的请求放入重执行队列,然后再通过重执行队列的调度机制,将重执行队列中存储的校验不通过的请求按照顺序重新读取标签值并纠错,再将纠错后的标签值送入缓存访问流水线中的命中判断逻辑。
需要说明的是,步骤S101中对标签值进行校验可以根据需要采用所需的校验技术。例如作为一种可选的实施方式,本实施例步骤S101中对标签值进行校验是指对标签值进行ECC解码校验。本实施例步骤S103中对读出的标签值进行纠错是指对标签值进行ECC纠错。
本实施例中,通过缓存访问流水线中的数据校验逻辑对数据值进行校验是指通过缓存访问流水线中的数据校验逻辑对数据值进行ECC校验纠错。
如图3所示,本实施例还提供一种用于应用前文所述超长指令字缓存标签体的前瞻执行-旁路纠错方法的超长指令字缓存标签体的前瞻执行-旁路纠错装置,包括:
旁路校验模块,用于针对当前请求,通过旁路的方式获取从标签体中读出的标签值,在缓存访问流水线中的命中判断逻辑对标签值进行前瞻的命中判断的同时,对标签值进行校验,若校验不通过,则发送发现错误信号给纠错控制器;
纠错控制器,用于在收到错误信号后禁止缓存访问流水线中的数据访问逻辑针对当前请求访问数据体,否则允许缓存访问流水线中的数据访问逻辑使用标签值对从数据体中读出的数据值;且在禁止缓存访问流水线中的数据访问逻辑针对当前请求访问数据体后将校验不通过的请求放入重执行队列;
重执行队列,用于将存储的校验不通过的请求重新读取标签值并纠错,再将纠错后的标签值送入缓存访问流水线中的命中判断逻辑;
所述旁路校验模块、纠错控制器以及重执行队列依次相连。
本实施例中标签体存储带纠错码的标签,流水线主要结构与功能同基本流水线相同,增加了纠错控制器与重执行队列作为纠错旁路。上述流水线中,从标签体读出的标签值,一方面送往解码模块进行解码,另一方面直接进行命中判断。该方式通过静态预测标签值无错,将原始标签直接用于命中判断,属于前瞻执行。若标签解码无错,则采用未解码标签前瞻执行的结果,与采用解码后标签执行的结果相同,流水线正常流动即可。若标签解码发现错误则所有处于前瞻执行状态的指令都需要重新执行。由于指令的访存地址可能存在相关性,流水线本身包含有解决地址相关性的逻辑。重执行出错的指令时,后续指令与出错指令可能存在相关性,从而受到当前出错指令的影响,故后续指令也需要重新执行。因此,当标签解码出现错误时,在Cache流水线中出错指令及其之后的所有指令都应重新执行。如图3所示,标签解码出错后(①发现出错),将发送错误信号给纠错控制器。标签出错,说明前瞻执行的判断结果不可信,纠错控制器将禁止当前请求访问数据体、修改Cache的任何状态。纠错控制器将停顿流水线,并将当前出错指令及其之后的指令导向旁路,进入重执行队列(②进入旁路)。当所有指令都进入重执行队列后,在纠错控制器的控制下,重执行队列中的指令依次读取标签并解码(③读取Tag并解码),再用解码后的标签值重新完成命中判断等过程(④重新执行)。当所有指令都回到原流水线后,纠错过程结束,流水线恢复执行。由于需要复用原流水线,故原流水线中命中判断、数据访问两个流水站在旁路纠错过程中不能停顿,而其余流水站需要停顿。采用上述旁路纠错、重执行的方式,最大程度地利用了现有的流水线,重执行与正常执行复用相同的逻辑,资源消耗低。同时,由于指令按序进入重执行队列、按序完成重执行,指令间的地址相关性也可以由原流水线中的相关逻辑进行处理,旁路无需考虑地址相关性,降低了设计复杂度。将指令导入重执行队列时,确定所有待重执行的指令都被导入后,才能启动重执行。本实施例中采用固定等待的方式来保证所有指令都导入完毕。当前出错指令一定会被导向旁路,但其后的流水站可能有指令,也可能是空指令。在将指令导向旁路时,若从出错指令开始向后计起,共有n个流水站,则固定等待n个周期让指令流向旁路。由于最多需要重执行n条指令,经过n个周期后,不论出错指令后面是否跟有空指令,都能保证所有需要重执行的指令都进入重执行队列,且硬件实现只需使用一个计数器,开销极低。考虑到片上存储器出错的概率较小,因此固定等待的方式对性能影响也很小。
下文将通过具体实验对本实施例所提出方法进行评估与分析,实验所用的流水线中,重执行指令的数量为3,故重执行队列的深度为3,固定等待的周期为3。Cache为两路组两联映射,包含两路标签体,故标签的出错情况共有四种:两个标签体都不出错、标签0出错、标签1出错及两个标签体都出错。
实验考虑三条指令A、B、C连续访问Cache的情况,每条指令都由一个ID值进行标记用以区分。A指令的ID为2,访存地址为0x0_8000_0000;B指令ID为3,访存地址为0x0_9000_0000;C指令ID为4,访存地址为0x0_A000_0000。由于三条指令的访存地址索引相同,将映射在Cache中的同一组。设访问开始前,A、B的数据均在Cache内,A在第0路,B在第1路;C的数据不在Cache中。
图4为两个标签体都不出错的正常情况,A、B、C三条指令按照顺序进入Cache流水线。由于A、B数据均在Cache内,故A、B被判断为命中;C的数据不在,故C被判断为缺失。该正常情形下,旁路没有被触发。
此外,在标签0出现错误的情况下,A、B、C三条指令扔按序进入Cache流水线,但由于标签0出现错误,指令A被误判为缺失,ECC解码器也在同一周期给出错误信号onebiterr_bsy1,部分流水站将被停顿。与此同时,A、B、C三条指令在纠错控制器的控制下被导向旁路,按序进入重执行队列。当三条指令都进入重执行队列后,纠错控制器将指令从队列弹出(fifo_rd信号),重新读取标签体并完成解码操作。完成标签解码后,标签中的错误将被纠正,在纠错控制器的控制下,指令将携带纠正后的标签值返回流水线重新执行。由于重新执行时采用了正确的标签值,A指令此时被正确判断为命中,旁路纠错过程结束,流水线恢复正常执行。针对标签0出错的情况,旁路可以正确完成纠错与重执行流程。
在标签1出错的情况下,与标签0出错相比其主要区别在于:(1)由于此时是标签1出错,故指令B被误判为缺失,A、C判断正确。(2)虽然指令A的判断正确,但由于指令A读取标签时会读取两个标签体,其读出标签1后经解码同样会发出错误信号并停顿响应流水站,此时onebiterr_bsy2有效。因此,旁路纠错机制仍然是由指令A触发的。
在两个标签体都出错的情况下,由于标签0、标签1均出错,故指令A、B均被误判为缺失,错误信号onebiterr_bsy1、错误信号onebiterr_bsy2 均被置位。指令A解码发现错误后即进入旁路纠错流程,经过重执行后A、B被正确判断为命中。
经过上述实验验证,本实施例的超长指令字缓存标签体的前瞻执行-旁路纠错方法在无错的情况下不会触发,在任意出错的情况下都能有效纠错并完成指令的重执行。对于采用直接映射或路数更多的组相联映射Cache,本实施例的超长指令字缓存标签体的前瞻执行-旁路纠错方法同样适用。
综上所述,本实施例的超长指令字缓存标签体的前瞻执行-旁路纠错方法在硬件上仅仅增加了重执行队列与纠错控制器,得益于在微架构上有效复用原流水线,硬件开销很低。与TI公司的标签纠错解决方案相比,本实施例的超长指令字缓存标签体的前瞻执行-旁路纠错方法无需将Cache变为直接映射,不会导致缺失率的增加,对性能的影响也较低。
此外,本实施例还提供一种超长指令字缓存装置,包括标签体、数据体以及缓存访问流水线,所述缓存访问流水线中包括依次相连的标签读取逻辑、命中判断逻辑、数据访问逻辑和数据校验逻辑,所述超长指令字缓存装置还包括所述的超长指令字缓存标签体的前瞻执行-旁路纠错装置,所述标签读取逻辑的输出端分别与命中判断逻辑、前瞻执行-旁路纠错装置的旁路校验模块相连,所述数据访问逻辑的控制端与纠错控制器相连,所述重执行队列的输出端与标签读取逻辑的输入端相连。
此外,本实施例还提供一种微处理器,包括带有相互连接的缓存装置和处理器核的处理器本体,所述缓存装置为前文所述的超长指令字缓存装置。此外,本实施例还提供一种计算机设备,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行前文所述超长指令字缓存标签体的前瞻执行-旁路纠错方法。此外,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行前文所述超长指令字缓存标签体的前瞻执行-旁路纠错方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种超长指令字缓存标签体的前瞻执行-旁路纠错方法,其特征在于,包括:
S101,针对当前请求,通过旁路的方式获取从标签体中读出的未校验的标签值,在缓存访问流水线中的命中判断逻辑对标签值进行前瞻的命中判断的同时,对标签值进行校验,若校验通过,则跳转步骤S102;否则跳转步骤S103;
S102,若前瞻的命中判断的结果为命中,则允许缓存访问流水线中的数据访问逻辑使用标签值对从数据体中读出的数据值,再通过缓存访问流水线中的数据校验逻辑对数据值进行校验后输出,结束并退出;
S103,禁止缓存访问流水线中的数据访问逻辑针对当前请求访问数据体;对读出的标签值进行纠错,并将纠错后的标签值重新送入缓存访问流水线中的命中判断逻辑以通过命中判断逻辑对标签值进行命中判断,若命中判断的结果为命中,则允许缓存访问流水线中的数据访问逻辑使用标签值对从数据体中读出的数据值,再通过缓存访问流水线中的数据校验逻辑对数据值进行校验后输出,结束并退出;
步骤S103中将纠错后的标签值重新送入缓存访问流水线中的命中判断逻辑时,包括先将校验不通过的请求放入重执行队列,然后再通过重执行队列的调度机制,将重执行队列中存储的校验不通过的请求按照顺序重新读取标签值并纠错,再将纠错后的标签值送入缓存访问流水线中的命中判断逻辑。
2.根据权利要求1所述的超长指令字缓存标签体的前瞻执行-旁路纠错方法,其特征在于,步骤S101中对标签值进行校验是指对标签值进行ECC解码校验。
3.根据权利要求1所述的超长指令字缓存标签体的前瞻执行-旁路纠错方法,其特征在于,步骤S103中对读出的标签值进行纠错是指对标签值进行ECC纠错。
4.根据权利要求1所述的超长指令字缓存标签体的前瞻执行-旁路纠错方法,其特征在于,所述通过缓存访问流水线中的数据校验逻辑对数据值进行校验是指通过缓存访问流水线中的数据校验逻辑对数据值进行ECC校验纠错。
5.一种用于应用权利要求1~4中任意一项所述超长指令字缓存标签体的前瞻执行-旁路纠错方法的超长指令字缓存标签体的前瞻执行-旁路纠错装置,其特征在于,包括:
旁路校验模块,用于针对当前请求,通过旁路的方式获取从标签体中读出的标签值,在缓存访问流水线中的命中判断逻辑对标签值进行前瞻的命中判断的同时,对标签值进行校验,若校验不通过,则发送发现错误信号给纠错控制器;
纠错控制器,用于在收到错误信号后禁止缓存访问流水线中的数据访问逻辑针对当前请求访问数据体,否则允许缓存访问流水线中的数据访问逻辑使用标签值对从数据体中读出的数据值;且在禁止缓存访问流水线中的数据访问逻辑针对当前请求访问数据体后将校验不通过的请求放入重执行队列;
重执行队列,用于将存储的校验不通过的请求重新读取标签值并纠错,再将纠错后的标签值送入缓存访问流水线中的命中判断逻辑;
所述旁路校验模块、纠错控制器以及重执行队列依次相连。
6.一种超长指令字缓存装置,包括标签体、数据体以及缓存访问流水线,所述缓存访问流水线中包括依次相连的标签读取逻辑、命中判断逻辑、数据访问逻辑和数据校验逻辑,其特征在于,所述超长指令字缓存装置还包括权利要求5所述的超长指令字缓存标签体的前瞻执行-旁路纠错装置,所述标签读取逻辑的输出端分别与命中判断逻辑、前瞻执行-旁路纠错装置的旁路校验模块相连,所述数据访问逻辑的控制端与纠错控制器相连,所述前瞻执行-旁路纠错装置的重执行队列的输出端与标签读取逻辑的输入端相连。
7.一种微处理器,包括带有相互连接的缓存装置和处理器核的处理器本体,其特征在于,所述缓存装置为权利要求6所述的超长指令字缓存装置。
8.一种计算机设备,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~4中任意一项所述超长指令字缓存标签体的前瞻执行-旁路纠错方法。
9.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~4中任意一项所述超长指令字缓存标签体的前瞻执行-旁路纠错方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311273770.9A CN116991479B (zh) | 2023-09-28 | 2023-09-28 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311273770.9A CN116991479B (zh) | 2023-09-28 | 2023-09-28 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116991479A CN116991479A (zh) | 2023-11-03 |
CN116991479B true CN116991479B (zh) | 2023-12-12 |
Family
ID=88521796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311273770.9A Active CN116991479B (zh) | 2023-09-28 | 2023-09-28 | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991479B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117389630B (zh) * | 2023-12-11 | 2024-03-05 | 北京开源芯片研究院 | 一种数据缓存方法、装置、电子设备及可读存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631454B1 (en) * | 1996-11-13 | 2003-10-07 | Intel Corporation | Processor and data cache with data storage unit and tag hit/miss logic operated at a first and second clock frequencies |
CN102591947A (zh) * | 2010-12-28 | 2012-07-18 | 微软公司 | 用于数据去重复的快速且低ram占用的索引 |
CN103279329A (zh) * | 2013-05-08 | 2013-09-04 | 中国人民解放军国防科学技术大学 | 支持同步edac校验的高效取指流水线 |
CN104866454A (zh) * | 2015-04-13 | 2015-08-26 | 中国人民解放军国防科学技术大学 | 面向板级高速总线的写报文前瞻处理方法及装置 |
CN105335247A (zh) * | 2015-09-24 | 2016-02-17 | 中国航天科技集团公司第九研究院第七七一研究所 | 高可靠系统芯片中Cache的容错结构及其容错方法 |
CN105740168A (zh) * | 2016-01-23 | 2016-07-06 | 中国人民解放军国防科学技术大学 | 一种容错目录高速缓存控制器 |
CN106844281A (zh) * | 2016-11-22 | 2017-06-13 | 北京控制工程研究所 | 一种适用于PowerPC处理器的高可靠指令Cache |
CN108710582A (zh) * | 2017-03-31 | 2018-10-26 | 英特尔公司 | 用于基于局部性的指令处理的选择性启用的系统、设备和方法 |
CN110069285A (zh) * | 2019-04-30 | 2019-07-30 | 海光信息技术有限公司 | 一种检测分支预测的方法及处理器 |
CN110889147A (zh) * | 2019-11-14 | 2020-03-17 | 中国人民解放军国防科技大学 | 一种利用填充缓存抵御Cache边信道攻击的方法 |
CN114175001A (zh) * | 2019-07-29 | 2022-03-11 | 美光科技公司 | 存储器感知预取和高速缓存旁路系统和方法 |
CN114675882A (zh) * | 2020-12-24 | 2022-06-28 | 英特尔公司 | 用于可缩放预留站的方法、系统和装置 |
CN115878189A (zh) * | 2022-12-26 | 2023-03-31 | 中国人民解放军国防科技大学 | 一种流水线前端数据流输出方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080282034A1 (en) * | 2005-09-19 | 2008-11-13 | Via Technologies, Inc. | Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor |
US10223090B2 (en) * | 2015-10-23 | 2019-03-05 | Yong-Kyu Jung | Branch look-ahead system apparatus and method for branch look-ahead microprocessors |
US10229059B2 (en) * | 2017-03-31 | 2019-03-12 | Intel Corporation | Dynamic fill policy for a shared cache |
-
2023
- 2023-09-28 CN CN202311273770.9A patent/CN116991479B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631454B1 (en) * | 1996-11-13 | 2003-10-07 | Intel Corporation | Processor and data cache with data storage unit and tag hit/miss logic operated at a first and second clock frequencies |
CN102591947A (zh) * | 2010-12-28 | 2012-07-18 | 微软公司 | 用于数据去重复的快速且低ram占用的索引 |
CN103279329A (zh) * | 2013-05-08 | 2013-09-04 | 中国人民解放军国防科学技术大学 | 支持同步edac校验的高效取指流水线 |
CN104866454A (zh) * | 2015-04-13 | 2015-08-26 | 中国人民解放军国防科学技术大学 | 面向板级高速总线的写报文前瞻处理方法及装置 |
CN105335247A (zh) * | 2015-09-24 | 2016-02-17 | 中国航天科技集团公司第九研究院第七七一研究所 | 高可靠系统芯片中Cache的容错结构及其容错方法 |
CN105740168A (zh) * | 2016-01-23 | 2016-07-06 | 中国人民解放军国防科学技术大学 | 一种容错目录高速缓存控制器 |
CN106844281A (zh) * | 2016-11-22 | 2017-06-13 | 北京控制工程研究所 | 一种适用于PowerPC处理器的高可靠指令Cache |
CN108710582A (zh) * | 2017-03-31 | 2018-10-26 | 英特尔公司 | 用于基于局部性的指令处理的选择性启用的系统、设备和方法 |
CN110069285A (zh) * | 2019-04-30 | 2019-07-30 | 海光信息技术有限公司 | 一种检测分支预测的方法及处理器 |
CN114175001A (zh) * | 2019-07-29 | 2022-03-11 | 美光科技公司 | 存储器感知预取和高速缓存旁路系统和方法 |
CN110889147A (zh) * | 2019-11-14 | 2020-03-17 | 中国人民解放军国防科技大学 | 一种利用填充缓存抵御Cache边信道攻击的方法 |
CN114675882A (zh) * | 2020-12-24 | 2022-06-28 | 英特尔公司 | 用于可缩放预留站的方法、系统和装置 |
CN115878189A (zh) * | 2022-12-26 | 2023-03-31 | 中国人民解放军国防科技大学 | 一种流水线前端数据流输出方法及系统 |
Non-Patent Citations (2)
Title |
---|
SMA:前瞻性多线程体系结构;肖刚, 周兴铭, 徐明, 邓;计算机学报(第06期);第582-590页 * |
面向访问模式的多核末级Cache 优化方法;刘胜等;《国防科技大学学报》;第79-85页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116991479A (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7975130B2 (en) | Method and system for early instruction text based operand store compare reject avoidance | |
US4982402A (en) | Method and apparatus for detecting and correcting errors in a pipelined computer system | |
JP5137948B2 (ja) | ローカル及びグローバル分岐予測情報の格納 | |
US7478228B2 (en) | Apparatus for generating return address predictions for implicit and explicit subroutine calls | |
JP5356531B2 (ja) | シーケンス検出又は命令に関連付けられた情報に基づいた命令の最適化性能 | |
CN116991479B (zh) | 超长指令字缓存标签体的前瞻执行-旁路纠错方法及装置 | |
CN109918130A (zh) | 一种具有快速数据旁路结构的四级流水线risc-v处理器 | |
US9021240B2 (en) | System and method for Controlling restarting of instruction fetching using speculative address computations | |
US20010005882A1 (en) | Circuit and method for initiating exception routines using implicit exception checking | |
JP4220473B2 (ja) | 制御スペキュレーションの性能を向上するメカニズム | |
US20130326200A1 (en) | Integrated circuit devices and methods for scheduling and executing a restricted load operation | |
US6189093B1 (en) | System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register | |
US20040054993A1 (en) | Hybrid mechanism for more efficient emulation and method therefor | |
US20140129805A1 (en) | Execution pipeline power reduction | |
CN116302648A (zh) | 一种基于双核锁步处理器的故障处理方法 | |
US20070079076A1 (en) | Data processing apparatus and data processing method for performing pipeline processing based on RISC architecture | |
US20070050600A1 (en) | Preventing loss of traced information in a data processing apparatus | |
US6754813B1 (en) | Apparatus and method of processing information for suppression of branch prediction | |
US11086715B2 (en) | Touch instruction | |
US7519799B2 (en) | Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof | |
CN208580395U (zh) | 一种处理器流水线结构 | |
CN113254082B (zh) | 条件分支指令处理方法及系统、cpu、芯片 | |
US9542190B2 (en) | Processor with fetch control for stoppage | |
CN114116002A (zh) | 一种存储重命名的实现方法、处理器及计算机设备 | |
CN115437695A (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 |