CN115509609A - 数据处理装置和方法 - Google Patents
数据处理装置和方法 Download PDFInfo
- Publication number
- CN115509609A CN115509609A CN202211145854.XA CN202211145854A CN115509609A CN 115509609 A CN115509609 A CN 115509609A CN 202211145854 A CN202211145854 A CN 202211145854A CN 115509609 A CN115509609 A CN 115509609A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- hit
- processor core
- access request
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 31
- 238000003672 processing method Methods 0.000 claims abstract description 13
- 238000010586 diagram Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 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/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
-
- 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/3824—Operand accessing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例提供了一种数据处理装置和方法,涉及计算机技术领域。该装置包括:处理器核,其发出数据访问请求;高速缓存的控制器,其用于在接收到数据访问请求时,在所述高速缓存中查询高速缓存标签,并将查询的标签与数据访问请求的地址进行比较,以推测是否命中,若推测结果为命中,则直接访问所述高速缓存读取数据并返回给所述处理器核,其中,在推测是否命中的阶段进行对标签的校准和高速缓存的实际命中判断,以及在将数据返回给所述处理器核的阶段进行所述数据的校准。本申请实施例的方案,通过比较数据访问请求的地址和获取的标签,推测是否命中,且在推测命中的情况下,直接进行数据读取,可以有效降低因进行ECC校准带来的延时,从而提高CPU的性能。
Description
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种数据处理装置和方法。
背景技术
在中央处理器(central processing unit,简称CPU)的设计中,加载使用延时(load to use latency)是一项重要指标,直接影响到CPU的性能。
因此,为了提高CPU的性能,降低Cache访问过程中的时延是亟待解决的问题。
发明内容
本申请实施例提供了一种数据处理装置和方法。
根据本申请实施例的第一方面,提供了一种数据处理装置,包括:
处理器核,其发出数据访问请求;
高速缓存的控制器,其用于在接收到数据访问请求时,在所述高速缓存中查询高速缓存标签,并将查询的标签与数据访问请求的地址进行比较,以推测是否命中,若推测结果为命中,则直接访问所述高速缓存读取数据并返回给所述处理器核,
其中,在推测是否命中的阶段进行对标签的校准和高速缓存的实际命中判断,以及在将数据返回给所述处理器核的阶段进行所述数据的校准。
在一个可能的实现方式中,所述控制器,其还用于:
若高速缓存的实际命中判断为否,则确定推测结果错误,取消向所述高速缓存发出的数据访问请求。
在又一个可能的实现方式中,所述控制器,其还用于:
若推测结果为未命中,且高速缓存的实际命中判断为是,则确定推测结果错误,在进行高速缓存的实际命中判断后的阶段访问所述高速缓存读取数据并返回给所述处理器核。
在另一个可能的实现方式中,所述控制器,其还用于:
若进行数据校准的结果为存在数据错误信息,,向所述处理器核发送第一信号,其中,所述第一信号用于表征返回给所述处理器核的数据有误;
对返回给所述处理器核的数据进行修正,并向所述处理器核重发正确的数据。
在另一个可能的实现方式中,所述控制器,其还用于:
若进行数据校准的结果为大于1bit的数据错误信息,向所述处理器核发送第二信号,其中,所述第二信号用于表征返回给所述处理器核的数据有误且不可修正。
根据本申请实施例的第二方面,提供了一种数据处理方法,该方法包括:
根据接收到的数据访问请求,在高速缓存中查询高速缓存标签;
将查询的标签与数据访问请求的地址进行比较,以推测是否命中;
若推测结果为命中,则直接访问所述高速缓存读取数据并返回给处理器核;
其中,在推测是否命中的阶段进行对标签的校准和高速缓存的实际命中判断,以及在将数据返回给处理器核的阶段进行所述数据的校准。
在一个可能的实现方式中,还包括:
若高速缓存的实际命中判断为否,则确定推测结果错误,取消向所述高速缓存发出的数据访问请求。
在又一个可能的实现方式中,还包括:
若推测结果为未命中,且高速缓存的实际命中判断为是,则确定推测结果错误,在进行高速缓存的实际命中判断后的阶段访问所述高速缓存读取数据并返回给所述处理器核。
在另一个可能的实现方式中,还包括:
若进行数据校准的结果为存在数据错误信息,向所述处理器核发送第一信号,其中,所述第一信号用于表征返回给所述处理器核的数据有误;
对返回给所述处理器核的数据进行修正,并向所述处理器核重发正确的数据。
在另一个可能的实现方式中,还包括:
若进行数据校准的结果为大于1bit的数据错误信息,向所述处理器核发送第二信号,其中,所述第二信号用于表征返回给所述处理器核的数据有误且不可修正。
本申请实施例中,通过比较数据访问请求的地址和获取的标签,推测是否命中,且在推测命中的情况下,直接进行数据读取,可以有效降低因进行ECC校准带来的延时,从而提高CPU的性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种数据处理方法的结构示意图;
图2为本申请另一实施例提供的一种数据处理方法的流程示意图;
图3为实现本申请实施例提供的一种数据处理方法的流水线的示意图;
图4为本申请另一实施例提供的一种数据处理方法的流程示意图;
图5为本申请实施例提供的一种数据处理装置的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了在提高CPU时钟频率的同时降低延时,处理器核(core)访问Cache的过程中:在查询缓存标签(Cache Tag)时,则要对从标签内存中读出的标签进行ECC校准并修正,这样才能保证读到的标签是正确的,进而基于查询到的标签判断是否命中(hit)。
如果命中则去数据内存(Data Ram)中读取数据,如果失败(miss)则去下级Cache(如:L3 cache或系统Cache)中读取数据,并将读取到的数据返回给处理器核。在读取数据时,要对从数据内存中读出的数据进行ECC校准并修正,这样才能保证读到的数据是正确的。
但是,ECC校准并修正是一个延时较高的逻辑,通常需要1~2个时钟周期(cycle)才能完成。而在现有设计中,由于必须经过ECC校准,加载使用延时中就包含了ECC校准引入的延时,进而影响了CPU的性能。
因此,为了提高CPU的性能,降低Cache访问过程中的时延是亟待解决的问题。
针对现有技术中存在的上述技术问题,本申请实施例提供了一种数据处理装置和方法。
首先、对本申请实施例的相关技术进行描述。
1、Cache
Cache是位于CPU和DRAM(Dynamic Random Access Memory,动态随机存取存储器)主存之间的缓存存储器,其规模较小,但速度很高,通常由SRAM(Static Random AccessMemory,静态存储器)组成。Cache的功能是提高CPU数据输入输出的速率。CPU的通用寄存器的速度远高于主存,当CPU直接从主存中存取数据时要等待一定时间周期,而Cache则可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了重复存取数据,减少了CPU的等待时间,因而提高了系统的效率。
多级Cache包括L1 cache(一级高速缓存器)和L2 cache(二级高速缓存器),以及L3 cache(三级高速缓存器),其中,L1 cache主要是集成在CPU内部,L2 cache集成在主板上或是CPU上。L1 Cache包括L1I-cache(一级指令高速缓存器)和L1 D-cache(一级数据高速缓存器),其中,L1 I-cache负责存储指令,L1 D-cache负责存储数据。两者的区别是L1D-cache中的数据可以写回,L1 I-cache中的数据是只读的。
2、错误检查和纠正(Error Correcting Code,简称ECC)校准
内存是一种电子器件,在其工作过程中难免会出现错误,而对于稳定性要求高的用户来说,内存错误可能会引起致命性的问题。内存错误根据其原因还可分为硬错误和软错误。硬错误是由于硬件的损害或缺陷造成的,因此数据总是不正确,此类错误是无法纠正的;软错误是随机出现的,例如在内存附近突然出现电子干扰等因素都可能造成内存软错误的发生。
为了能检测和纠正内存软错误,提出了一种ECC校准技术,这种技术与奇偶校准(Parity)不同的是如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位检验位,也就是说当数据位为16位时ECC位为6位,32位时ECC位为7位,数据位为64位时ECC位为8位,依此类推,数据位每增加一倍,ECC位只增加一位。总之,在内存中ECC能够容许错误,并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断,且ECC具有自动更正的能力,可以将Parity无法检查出来的错误位查出并将错误修正。
其次,下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
图1为本申请实施例提供的一种数据处理方法的流程示意图。如图1所示的方法包括:
S1、根据接收到的数据访问请求,在高速缓存中查询高速缓存标签。
S2、将查询的标签与数据访问请求的地址进行比较,以推测是否命中。
S3、若推测结果为命中,则直接访问高速缓存读取数据并返回给处理器核。
其中,在推测是否命中的阶段进行对标签的校准和高速缓存的实际命中判断,以及在将数据返回给处理器核的阶段进行数据的校准。
本申请实施例中,通过比较数据访问请求的地址和获取的标签,推测是否命中,且在推测命中的情况下,直接进行数据读取,可以有效降低因进行ECC校准带来的延时,从而提高CPU的性能。
在一些实施例中,上述方法还可以包括:
S4(图中未示出)、若高速缓存的实际命中判断为否,则确定推测结果错误,取消向高速缓存发出的数据访问请求。
本申请实施例中,通过在推测是否命中的阶段进行对高速缓存的实际命中判断,并基于高速缓存的实际命中判断为否的结果,确定推测命中结果有误,以便取消向高速缓存发出的数据访问请求,避免误操作。
在另一些实施例中,上述方法还可以包括:
S5(图中未示出)、若推测结果为未命中,且高速缓存的实际命中判断为是,则确定推测结果错误,在进行高速缓存的实际命中判断后的阶段访问高速缓存读取数据并返回给处理器核。
本申请实施例中,通过在推测是否命中的阶段进行对高速缓存的实际命中判断,在推测结果未命中的情况下,基于高速缓存的实际命中判断为是的结果,确定推测命中结果有误,以便在高速缓存的实际命中判断后的阶段访问高速缓存读取数据并返回给处理器核,确保可以读取到数据。
在另一些实施例中,上述方法还可以包括:
S6(图中未示出)、若进行数据校准的结果为存在数据错误信息,向处理器核发送第一信号,其中,第一信号用于表征返回给处理器核的数据有误。
S7(图中未示出)、对返回给处理器核的数据进行修正,并向处理器核重发正确的数据。
本申请实施例中,通过在将数据返回给处理器核的阶段进行该数据的校准,且在数据校准的结果为1bit的数据错误信息,向处理器核发送用于表征返回给处理器核的数据有误的第一信号,并对返回给处理器核的数据进行修正后向处理器核重发正确的数据,从而确保读取数据的正确性。
在另一些实施例中,上述方法还可以包括:
S8(图中未示出)、若进行数据校准的结果为大于1bit的数据错误信息,向处理器核发送第二信号,其中,第二信号用于表征返回给处理器核的数据有误且不可修正。
本申请实施例中,通过在将数据返回给处理器核的阶段进行该数据的校准,且在数据校准的结果为大于1bit的数据错误信息,向处理器核发送用于表征返回给处理器核的数据有误且不可修正的第二信号,以便通知处理器核无法读取正确的数据。
图2为本申请另一实施例提供的一种数据处理方法的流程示意图。如图2所示的方法包括:
S101、标签流水线基于来自处理器核的数据访问请求获取标签。
S102、在第一时钟周期内,根据数据访问请求和获取的标签,确定第一命中结果。
S103、若第一命中结果为命中二级高速缓存器L2 cache,在第一时钟周期内向数据流水线发送数据访问请求。
S104、数据流水线在第三时钟周期内将读取到的数据返回给处理器核。
其中,标签流水线用于基于来自处理器核的数据访问请求获取标签内存中的标签,并基于获取的标签将该数据访问请求传送到数据流水线。数据流水线用于基于数据访问请求将数据内存中的数据传送到处理器核。
在该实施例中,标签流水线在基于来自处理器核的数据访问请求获取标签后,若在第一时钟周期内,根据数据访问请求和获取的标签,确定第一命中结果为命中L2 cache,则在该第一时钟周期内向数据流水线发送数据访问请求,并且数据流水线在第三时钟周期内将读取到的数据返回给处理器核。通过根据数据访问请求和获取的标签,确定推测的命中结果,且在推测命中的情况下,直接进行数据读取,可以有效降低因进行ECC校准带来的延时,从而提高CPU的性能。
在一些实施例中,步骤S102具体可以包括:将数据访问请求对应的地址与获取的标签中的地址进行比较,确定第一命中结果。
具体的,将数据访问请求对应的地址与获取的标签中的地址进行比较,若二者一致,则确定第一命中结果为命中(hit),否则,确定第一命中结果为未命中(miss)。
本申请实施例中提供了一种可能的实现方式,在确定第一命中结果后,方法还包括:
S105(图中未示出)、在第一时钟周期内,对标签进行校准,得到第二命中结果。
S106(图中未示出)、若第一命中结果和第二命中结果相同,且均为命中L2 cache,确定不执行在第二时钟周期内向数据流水线发送数据访问请求的操作。
S107(图中未示出)、若第一命中结果和第二命中结果不同,确定第一命中结果错误,并执行相应操作。
具体的,在该实施例中,在根据数据访问请求和获取的标签,确定推测的命中结果后,需要对获取的标签进行ECC校准,根据校准结果确定真实的命中结果,即第二命中结果,再将推测的第一命中结果和真实的第二命中结果进行比较,确定要执行的相应操作。
如果第一命中结果和第二命中结果相同,且均为命中,则确定不执行在第二时钟周期(第一时钟周期的下一个时钟周期)内向数据流水线发送数据访问请求的操作。也就是说,基于推测的第一命中结果已经在第一时钟周期内给数据流水线发送了数据访问请求,则在第一时钟周期的下一个时钟周期内不再给数据流水线发起数据访问请求,从而可以有效降低因ECC校准带入的延时。
如果第一命中结果和第二命中结果不同,确定第一命中结果错误,并执行相应操作。也就是说,推测的第一命中结果与真实的第二命中结果不同,则说明推测的第一命中结果是错误的,则需要执行一些操作,以对基于错误的推测命中结果进行的数据读取的过程进行修正。
在一种可能的实现方案中,步骤S107具体可以包括:
若第一命中结果为命中L2 cache,第二命中结果为未命中L2 cache,取消在第一时钟周期内发送的数据访问请求;
若第一命中结果为未命中L2 cache,第二命中结果为命中L2 cache,确定在第二时钟周期内向数据流水线发送数据访问请求。
具体的,在该实施例中,如果推测的第一命中结果为命中,真实的第二命中结果为未命中,则说明推测的命中结果错误,且实际上未命中,需要取消在第一时钟周期内发送的数据访问请求。如果推测的第一命中结果为未命中,真实的第二命中结果为命中,则说明推测的命中结果错误,且实际上命中了,需要在第一时钟周期的下一个时钟周期(即第二时钟周期)内向数据流水线发送数据访问请求,以读取数据。
需要说明的是,上述ECC校准的过程,可以采用现有相关技术来实现,为了描述的简洁,在此不再赘述。
本申请实施例中提供了一种可能的实现方式,在步骤104之后,还可以包括:
S108(图中未示出)、数据流水线在第三时钟周期内,对读取的数据进行校准,得到校准结果。
S109(图中未示出)、根据校准结果,确定在第四时钟周期内要执行的操作。
具体的,在该实施例中,数据流水线在第三周期内读取数据并返回给处理器核之后,还需要对读取的数据进行ECC校准,并基于校准结果确定在第四时钟周期(第三时钟周期的下一个时钟周期)内要执行的相应操作。
也就是说,在该实施例中,为了确保基于推测的命中结果,由数据流水线返回给处理器核的数据的正确性,需要对读取的数据进行ECC校准,并基于校准结果确定是否要执行一些操作,以对基于读取错误的数据进行修正。
本申请实施例中提供了一种可能的实现方式,步骤S109具体可以包括:
若校准结果为1bit的错误信息,确定在第四时钟周期内向处理器核发送第一信号,其中,第一信号用于表征在第三时钟周期内返回给处理器核的数据有误。
对在第三时钟周期内返回给处理器核的数据进行修正,并在第五时钟周期内向处理器核重发正确的数据。
具体的,在该实施例中,如果对读取的数据进行ECC校准后的结果为1bit的错误,则需要在第三时钟周期的下一个时钟周期(即第四时钟周期)内向处理器核发送,用于表征在第三时钟周期内返回给处理器核的数据有误的信号,并对该数据进行修正后,在第四时钟周期的下一个时钟周期(即第五时钟周期)内向处理器核重新发送修正后的正确的数据。
本申请实施例中提供了另一种可能的实现方式,步骤S109具体可以包括:若校准结果为大于1bit的错误信息,确定在第四时钟周期内向处理器核发送第二信号。其中,第二信号用于表征在第三时钟周期内返回给处理器核的数据有误且不可修正。
具体的,在该实施例中,如果对读取的数据进行ECC校准后的结果为大于1bit的错误,则需要在第三时钟周期的下一个时钟周期(即第四时钟周期)内向处理器核发送,用于表征在第三时钟周期内返回给处理器核的数据有误且不可修正的信号,以通知处理器核此前返回的数据是错误的。
下面结合图3和图4对本申请实施例的技术方案进行详细的描述。其中,图3为实现本申请实施例提供的一种用于数据处理的流水线的示意图。如图3所示,横向为标签流水线(tag pipeline),分为标签仲裁(tArb)、t1、t2以及t3四个流水线(pipeline)。纵向为数据流水线(data pipeline),分为数据仲裁(dArb)、d1、d2、d3、d4以及d5六个pipeline。
图4为本申请另一实施例提供的一种数据处理方法的流程示意图。如图4所示,该方法包括:
S201、读请求(可以对应上文中的数据访问请求)到达L2 cache后在标签流水线的tArb流水线阶段访问Tag Ram。
S202、在t1流水线阶段从Tag Ram中读出标签数据,并在读出标签后打一拍到t2,即触发下一个时钟周期,进入t2流水线阶段。
S203、在t2流水线阶段(可以对应上文中的第一时钟周期)直接将读请求的地址与读取的标签数据中的标签进行比较,提前得到一个推测性的命中结果(可以对应上文中的第一命中结果),可以称为预测命中(prediction hit,简写为pred_hit)。
S204、判断pred_hit是否为命中。若是,则执行步骤S205,若否,则执行步骤S206。
S205、如果pred_hit=1(即pred_hit为命中),就暂且认为L2是命中的,直接向数据流水线发起读请求以读取数据(data)。
现有设计方案中,在t2流水线阶段要对读取的标签(tag)进行ECC校准,然后才能判断命中与否(结果为hit或miss)。在该实施例的方案中,在ECC校准之前直接用请求的地址和tag进行比较,提前得到一个推测性的命中结果,如果pred_hit=1,就暂且认为L2是命中的,直接去读data,从而可以有效的降低因ECC校准带来的延时。
S206、在t2流水线阶段要对读取的标签(tag)进行ECC校准,以得到真实的命中结果hit(可以对应上文中的第二命中结果),并在完成ECC校准后打一拍到t3,即触发下一个时钟周期,进入t3流水线阶段。
S207、在t3流水线阶段(可以对应上文中的第二时钟周期),比较第一命中结果和第二命中结果,并根据比较结果,确定要执行的相应操作。
具体的,在该实施例中,如果pre_hit=1且hit=1,说明推测的hit是正确的,t3流水线阶段就不再给data pipe发起读请求。如果pre_hit=1且hit=0,说明推测的hit是错误的,此时要取消掉t2流水线阶段发起的read请求。如果pre_hit=0且hit=1,说明推测的hit是错误的,t3流水线阶段给data pipe发起读请求。
S208、数据流水线的dArb流水线阶段根据读请求开始读数据内存(data Ram)。
需要说明的是,因为L2 cache的data Ram一般较大,在d2流水线阶段才能读出数据,且d2流水线阶段没有多余的时间做更多的事情,只能打一拍到d3,即触发下一个时钟周期,进入d3流水线阶段。
S209、在d3流水线阶段(可以对应上文中的第三时钟周期)把data提前返回给core。
现有设计方案中,在d3流水线阶段始对data进行ECC校准,得到正确的data后,在d5流水线阶段才把data提前返回给core。在该实施例的方案中,在ECC校准之前直接在d3把data提前返回给core。因此,相比现有的方案,可以缩短2个时钟周期的延时。
S210、在d3流水线阶段对数据进行ECC校准,根据校准结果,确定d4流水线阶段给core发起的信号。
具体的,在该实施例中,如果d3流水线阶段进行ECC校准后发现1bit ECC错误,那么就在d4阶段给core发起重发(resend)信号(可以对应上文中的第一信号),表示之前的data有误,在下一拍(即下一个时钟周期)会重新发送正确的data给core。于是在d4阶段(可以对应上文中的第四时钟周期)完成对1bit data错误的修正,然后打一拍到d5(可以对应上文中的第五时钟周期)返回给core。
如果d3流水线阶段进行ECC校准后发现1bit以上ECC错误,此时ECC算法已没能力修正data,只能在d4阶段给core发起错误信号(可以对应上文中的第二信号),表示之前的data有误且不可修正。
结合上述具体流程,从图3中可以看出,本申请实施例的设计利用推测hit的方式在t2阶段就发起对data的访问,比现有设计在t3阶段读data快了1个时钟周期。然后利用提前返回data的方式在d3阶段就把data返回给core,比现有设计在d5返回data快了2个时钟周期。因此,一共缩短了3个时钟周期的延时,从而让本申请实施例的设计中L2 hit延时减少到5个时钟周期(现有设计中L2 hit延时为8个时钟周期)。
由于L2 cache命中率高且ECC出现错误的几率比较低,所以本申请的方案在绝大多数load场景中可以减少延时,提高CPU的性能。
综上,本申请实施例中的方案,利用推测命中的方式绕开了tag ECC校准,利用提前返回data的方式绕开了data ECC校准,有效的缩短了L2hit延时。同时,通过取消读请求和/或重发数据的方式,在提高CPU性能的同时又保证了所读取数据的正确性。
图5为本申请实施例提供的一种数据处理装置的结构意图。如图5所示的装置包括:处理器核10和高速缓存20及其的控制器30,其中,
处理器核10发出数据访问请求。高速缓存的控制器30用于在接收到处理器核10发出的数据访问请求时,在高速缓存20中查询高速缓存标签,并将查询的标签与数据访问请求的地址进行比较,以推测是否命中,若推测结果为命中,则直接访问高速缓存20读取数据并返回给处理器核10。
其中,在推测是否命中的阶段进行对标签的校准和高速缓存的实际命中判断,以及在将数据返回给处理器核的阶段进行数据的校准。
在该实施例中,通过比较数据访问请求的地址和获取的标签,推测是否命中,且在推测命中的情况下,直接进行数据读取,可以有效降低因进行ECC校准带来的延时,从而提高CPU的性能。
在一些实施例中,控制器30还用于:若高速缓存的实际命中判断为否,则确定推测结果错误,取消向高速缓存20发出的数据访问请求。
在另一些实施例中,控制器30还用于:若推测结果为未命中,且高速缓存的实际命中判断为是,则确定推测结果错误,在进行高速缓存的实际命中判断后的阶段访问高速缓存20读取数据并返回给处理器核10。
在另一些实施例中,控制器30还用于:若进行数据校准的结果为存在数据错误信息,向处理器核10发送第一信号,其中,该第一信号用于表征返回给处理器核10的数据有误,对返回给处理器核10的数据进行修正,并向处理器核10重发正确的数据。
在另一些实施例中,控制器30还用于:若进行数据校准的结果为大于1bit的数据错误信息,向处理器核10发送第二信号,其中,该第二信号用于表征返回给处理器核10的数据有误且不可修正。
本申请实施例的装置可执行本申请实施例提供的数据处理方法,其实现原理和能够达到的效果相类似,本申请各实施例的装置中的各元件所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各元件的详细功能描述具体可以参见前文中的数据处理方法中的描述,此处不再赘述。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (10)
1.一种数据处理装置,其中,包括:
处理器核,其发出数据访问请求;
高速缓存的控制器,其用于在接收到数据访问请求时,在所述高速缓存中查询高速缓存标签,并将查询的标签与数据访问请求的地址进行比较,以推测是否命中,若推测结果为命中,则直接访问所述高速缓存读取数据并返回给所述处理器核,
其中,在推测是否命中的阶段进行对标签的校准和高速缓存的实际命中判断,以及在将数据返回给所述处理器核的阶段进行所述数据的校准。
2.根据权利要求1所述的装置,其中,所述控制器,其还用于:
若高速缓存的实际命中判断为否,则确定推测结果错误,取消向所述高速缓存发出的数据访问请求。
3.根据权利要求1所述的装置,其中,所述控制器,其还用于:
若推测结果为未命中,且高速缓存的实际命中判断为是,则确定推测结果错误,在进行高速缓存的实际命中判断后的阶段访问所述高速缓存读取数据并返回给所述处理器核。
4.根据权利要求1或3所述的装置,其中,所述控制器,其还用于:
若进行数据校准的结果为存在数据错误信息,向所述处理器核发送第一信号,其中,所述第一信号用于表征返回给所述处理器核的数据有误;
对返回给所述处理器核的数据进行修正,并向所述处理器核重发正确的数据。
5.根据权利要求1或3所述的装置,其中,所述控制器,其还用于:
若进行数据校准的结果为大于1bit的数据错误信息,向所述处理器核发送第二信号,其中,所述第二信号用于表征返回给所述处理器核的数据有误且不可修正。
6.一种数据处理方法,其中,包括:
根据接收到的数据访问请求,在高速缓存中查询高速缓存标签;
将查询的标签与数据访问请求的地址进行比较,以推测是否命中;
若推测结果为命中,则直接访问所述高速缓存读取数据并返回给处理器核;
其中,在推测是否命中的阶段进行对标签的校准和高速缓存的实际命中判断,以及在将数据返回给处理器核的阶段进行所述数据的校准。
7.根据权利要求6所述的方法,其中,还包括:
若高速缓存的实际命中判断为否,则确定推测结果错误,取消向所述高速缓存发出的数据访问请求。
8.根据权利要求6所述的方法,其中,还包括:
若推测结果为未命中,且高速缓存的实际命中判断为是,则确定推测结果错误,在进行高速缓存的实际命中判断后的阶段访问所述高速缓存读取数据并返回给所述处理器核。
9.根据权利要求6或8所述的方法,其中,还包括:
若进行数据校准的结果为存在数据错误信息,向所述处理器核发送第一信号,其中,所述第一信号用于表征返回给所述处理器核的数据有误;
对返回给所述处理器核的数据进行修正,并向所述处理器核重发正确的数据。
10.根据权利要求6或8所述的方法,其中,还包括:
若进行数据校准的结果为大于1bit的数据错误信息,向所述处理器核发送第二信号,其中,所述第二信号用于表征返回给所述处理器核的数据有误且不可修正。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211145854.XA CN115509609A (zh) | 2022-09-20 | 2022-09-20 | 数据处理装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211145854.XA CN115509609A (zh) | 2022-09-20 | 2022-09-20 | 数据处理装置和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115509609A true CN115509609A (zh) | 2022-12-23 |
Family
ID=84504162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211145854.XA Pending CN115509609A (zh) | 2022-09-20 | 2022-09-20 | 数据处理装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115509609A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719760A (zh) * | 2023-05-15 | 2023-09-08 | 合芯科技有限公司 | 一种低延迟处理缓存读取请求的方法、设备及存储介质 |
CN116932424A (zh) * | 2023-09-14 | 2023-10-24 | 上海芯联芯智能科技有限公司 | 一种基于ecc检测的缓存访问方法、装置、介质和设备 |
-
2022
- 2022-09-20 CN CN202211145854.XA patent/CN115509609A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719760A (zh) * | 2023-05-15 | 2023-09-08 | 合芯科技有限公司 | 一种低延迟处理缓存读取请求的方法、设备及存储介质 |
CN116932424A (zh) * | 2023-09-14 | 2023-10-24 | 上海芯联芯智能科技有限公司 | 一种基于ecc检测的缓存访问方法、装置、介质和设备 |
CN116932424B (zh) * | 2023-09-14 | 2023-12-15 | 上海芯联芯智能科技有限公司 | 一种基于ecc检测的缓存访问方法、装置、介质和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115509609A (zh) | 数据处理装置和方法 | |
JP5658128B2 (ja) | Nandフラッシュ・メモリにおける確率論的多層エラー訂正のためのシステム、方法、およびコンピュータ・プログラム | |
US8051337B2 (en) | System and method for fast cache-hit detection | |
US8589763B2 (en) | Cache memory system | |
US8321757B2 (en) | Method and apparatus for error correction | |
CN110352407A (zh) | 纠错码存储器 | |
US20120079346A1 (en) | Simulated error causing apparatus | |
CN110442473B (zh) | 一种非易失性数据存储方法、装置、电子设备及介质 | |
JPWO2007096997A1 (ja) | メモリ制御装置およびメモリ制御方法 | |
CN103077095A (zh) | 内存数据的纠错方法及装置及计算机系统 | |
JP4339914B2 (ja) | エラー訂正コード生成方法及びメモリ管理装置 | |
US10489244B2 (en) | Systems and methods for detecting and correcting memory corruptions in software | |
JP2011065503A (ja) | キャッシュメモリシステム及びキャッシュメモリのway予測の制御方法 | |
US8176388B1 (en) | System and method for soft error scrubbing | |
US20230325276A1 (en) | Error correction method and apparatus | |
JP2011257966A (ja) | キャッシュ装置及び情報処理装置 | |
CN110955916B (zh) | 一种数据完整性保护方法、系统及相关设备 | |
CN112181712B (zh) | 一种提高处理器核可靠性的方法及装置 | |
US8359528B2 (en) | Parity look-ahead scheme for tag cache memory | |
KR20160125745A (ko) | 반도체 장치 | |
JP5843804B2 (ja) | 演算装置およびエラー処理方法 | |
CN116932424B (zh) | 一种基于ecc检测的缓存访问方法、装置、介质和设备 | |
JP2007257628A (ja) | 記憶された情報データの読み取りのための誤り訂正と誤り検出の方法およびそのための記憶制御ユニット | |
US20240103967A1 (en) | Memory Decoder Providing Optimized Error Detection and Correction for Data Distributed Across Memory Channels | |
CN110597656B (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 |