测试装置、cpu芯片及缓存的测试方法

文档序号:6513425阅读:231来源:国知局
测试装置、cpu芯片及缓存的测试方法
【专利摘要】本发明实施方式公开了一种测试装置、CPU芯片及缓存的测试方法,测试装置包括:随机地址产生器,用于将伪随机序列产生的随机数作为随机地址,随机地址为缓存的地址,其中缓存的地址与主存储器的地址具有映射关系;随机数据产生器,用于产生与随机地址一一对应的第一随机数据;测试单元,用于根据第一随机数据对随机地址进行逻辑功能测试。通过以上公开内容,本发明所揭示的技术方案无需占用缓存的I/O端口,可在降低成本的前提下对缓存进行逻辑功能测试。
【专利说明】测试装置、CPU芯片及缓存的测试方法
【技术领域】
[0001]本发明涉及计算机【技术领域】,特别是涉及一种测试装置、CPU芯片及缓存的测试方法。
【背景技术】
[0002]存储器是计算机的核心部件之一。其性能直接关系到整个计算机系统性能的高低。如何以合理的价格,设计出容量和速度满足计算机系统要求的存储器系统,始终是计算机体系结构设计中的关键问题之一。计算机软件设计者和计算机用户对于存储器容量的需求是无止境的,他们希望容量越大越好,而且速度还要快,价格要便宜。仅用单一的一种存储器是很难达到这一目标的。较好的方法是采用存储层次,用多种存储器构成存储器的层次结构。
[0003]为了填补CPU和主存储器在速度上的巨大差距,现代计算机都在CPU和主存储器之间设置一个高速、小容量的缓存(Cache,高速缓存存储器)。缓存对于提高整个计算机系统的性能有重要的意义,几乎是一个不可缺少的部件。
[0004]缓存的结构特点:
[0005](I)缓存的主要操作包括读、写、替换。
[0006](2)缓存的存储容量相比于主存储器的容量较小,但存取速度比主存储器快很多。
[0007](3)主存储器的多个系统地址的数据映射到同一缓存存储结构内。
[0008]缓存在正常使用前需进行测试,以确保其可正常工作,现有技术中,测试缓存的方法主要为测试机台测试。
[0009]典型的测试机台测试需直接存取缓存的I/O端口,由于SoC (System on Chip,系统级芯片)中I/O端口的成本非常昂贵,实际上并不可行。
[0010]因此,现有的存储器测试技术必须占用I/O端口。

【发明内容】

[0011]本发明实施方式提供一种测试装置、CPU芯片及缓存的测试方法,无需占用缓存的
I/O 端口。
[0012]第一方面提供一种测试装置,该测试装置用于测试缓存,包括:随机地址产生器,用于将伪随机序列产生的随机数作为随机地址,随机地址为缓存的地址,其中缓存的地址与主存储器的地址具有映射关系;第一随机数据产生器,用于产生与随机地址一一对应的第一随机数据;测试单元,用于根据第一随机数据对随机地址进行逻辑功能测试,逻辑功能测试包括读测试,测试单元包括控制器和比较器,其中:控制器,用于将第一随机数据写入到随机地址中,读取随机地址中的数据,并判断随机地址是否有效,及是否被修改;比较器,用于在控制器判断到随机地址有效且没有被修改时,将随机地址中的数据与第一随机数据进行比较,在比较结果一致时,控制器输出针对随机地址的读测试合格的结果,在比较结果不一致时,控制器输出针对随机地址的读测试不合格的结果。[0013]在第一方面的第一种可能的实现方式中,逻辑功能测试还包括写测试,随机数据还包括第二随机数据,测试装置还包括第二随机数据产生器,其中:第二随机数据产生器,还用于产生与随机地址一一对应的第二随机数据,其中第二随机数据与第一随机数据不同;控制器,还用于将第二随机数据写入到随机地址中,读取随机地址中的数据,并判断随机地址是否有效,及是否被修改;比较器,还用于在控制器判断到随机地址有效且被修改时,将随机地址中的数据与第二随机数据进行比较,在比较结果一致时,控制器输出针对随机地址的写测试合格的结果,或在比较结果不一致时,控制器输出针对随机地址的写测试不合格的结果。
[0014]在第一方面的第二种可能的实现方式中,逻辑功能测试还包括替换测试,随机数据还包括第二随机数据,测试装置还包括第二随机数据产生器,其中:第二随机数据产生器,还用于产生与随机地址一一对应的第二随机数据,其中第二随机数据与第一随机数据不同;控制器,还用于对随机地址中的数据进行替换,获取替换出的数据,并判断随机地址是否有效,及是否被修改;比较器,还用于在控制器判断到随机地址有效且被修改时,将替换出的数据与第二随机数据进行比较,在比较结果一致时,控制器输出针对随机地址的替换测试合格的结果,或在比较结果不一致时,控制器输出针对随机地址的替换测试不合格的结果。
[0015]结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在比较结果一致时,控制器还用于将第二随机数据写入至随机地址对应的主存储器的地址中。
[0016]结合第一方面、第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第四种可能的实现方式中,随机地址以及随机数据存储于缓存内划分的非测试区域,随机地址为缓存内划分的测试区域的地址,控制器从非测试区域读取随机地址以及随机数据,控制器及比较器根据随机地址以及随机数据对测试区域进行逻辑功能测试。
[0017]第二方面提供一种CPU芯片,包括第一方面以及第一方面的第一至第四种可能的实现方式中的任一者所述的测试装置以及缓存。
[0018]第三方面提供一种缓存的测试方法,包括:将伪随机序列产生的随机数作为随机地址,随机地址为缓存的地址,其中缓存的地址与主存储器的地址具有映射关系;产生与随机地址一一对应的第一随机数据;根据第一随机数据对随机地址进行逻辑功能测试,其中,逻辑功能测试包括读测试,根据第一随机数据对随机地址进行逻辑功能测试包括:将第一随机数据写入到随机地址中,读取随机地址中的数据,并判断随机地址是否有效,及是否被修改;在判断到随机地址有效且没有被修改时,将随机地址中的数据与第一随机数据进行比较,在比较结果一致时,控制器输出针对随机地址的读测试合格的结果,在比较结果不一致时,控制器输出针对随机地址的读测试不合格的结果。
[0019]在第三方面的第一种可能的实现方式中,逻辑功能测试还包括写测试,随机数据还包括第二随机数据,根据随机数据对第一随机地址进行逻辑功能测试还包括:产生与随机地址一一对应的第二随机数据,其中第二随机数据与第一随机数据不同;将第二随机数据写入到随机地址中,读取随机地址中的数据,并判断随机地址是否有效,及是否被修改;在判断到随机地址有效且被修改时,将随机地址中的数据与第二随机数据进行比较,在比较结果一致时,控制器输出针对随机地址的写测试合格的结果,或在比较结果不一致时,控制器输出针对随机地址的写测试不合格的结果。
[0020]在第三方面的第二种可能的实现方式中,逻辑功能测试还包括替换测试,随机数据还包括第二随机数据,根据第一随机数据对随机地址进行逻辑功能测试还包括:产生与随机地址一一对应的第二随机数据,其中第二随机数据与第一随机数据不同;对随机地址中的数据进行替换,获取替换出的数据,并判断随机地址是否有效,及是否被修改;在判断到随机地址有效且被修改时,将替换出的数据与第二随机数据进行比较,在比较结果一致时,控制器输出针对随机地址的替换测试合格的结果,或在比较结果不一致时,控制器输出针对随机地址的替换测试不合格的结果。
[0021]结合第三方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在比较结果一致时,该方法还包括:将第二随机数据写入至随机地址对应的主存储器的地址中。
[0022]结合第三方面、第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第四种可能的实现方式中,根据随机数据对随机地址进行逻辑功能测试包括:将随机地址以及随机数据存储于缓存内划分的非测试区域,随机地址为缓存内划分的测试区域的地址;在非测试区域读取随机地址以及随机数据;根据随机地址以及随机数据对测试区域进行逻辑功能测试。
[0023]区别于现有技术,在本发明实施例提供的测试装置、CPU芯片及缓存的测试方法,利用随机地址产生器产生随机地址,其中该随机地址为缓存的地址,并产生与随机地址对应的第一随机数据,以根据第一随机数据对随机地址进行逻辑功能测试,从而无需占用缓存的I/O端口试。
【专利附图】

【附图说明】
[0024]图1是本发明实施例的计算机系统结构图;
[0025]图2是本发明测试装置第一实施例的装置结构示意图;
[0026]图3是本发明测试装置第二实施例的装置结构示意图;
[0027]图4是根据本发明实施例的缓存划分方式的示意图;
[0028]图5是根据本发明的缓存的标记和索引的数据结构示意图;
[0029]图6是根据本发明的缓存50的数据结构示意图;
[0030]图7是根据本发明的缓存的标记和索引的另一数据结构示意图;
[0031]图8是根据本发明的缓存的另一数据结构示意图;
[0032]图9为本发明测试装置第三实施例的装置结构示意图;
[0033]图10为本发明缓存的测试方法第一实施例的流程图;
[0034]图11为本发明缓存的测试方法第二实施例的流程图;
[0035]图12为本发明缓存的测试方法第二实施例的另一流程图;以及
[0036]图13为本发明缓存的测试方法第二实施例的又一流程图。
【具体实施方式】
[0037]下面结合附图和实施方式对本发明进行详细说明。
[0038]图1是本发明实施例的计算机系统结构图。如图1所示,在计算机的存储器的结构中,在处理器10和主存储器60之间增加一级速度快、但容量较小且每位价格较高的缓存50,缓存50与主存储器60构成一个有机的整体,以弥补主存速度的不足。其中缓存50的存储数据的准确性是影响到系统正常运行和稳定性重要因素。本发明实施例测试方法无需占用缓存的I/O端口,由于I/O端口成本较高,因此本发明实施例可降低系统整体成本。
[0039]如图1所示,本发明实施例所揭示的测试装置40可对缓存50进行相应测试,可以解决现有技术对缓存50进行测试需占用缓存的I/O端口,从而造成成本偏高的技术问题。
[0040]并且,还可解决现有技术不能够针对缓存50的逻辑功能(包括读、写或替换)进行全方位测试的技术问题,进一步地,可解决当缓存50发生写或替换操作,从而造成缓存50与主存储器60对应地址中的数据不同步的技术问题。
[0041]以下请参见图2,图2是本发明测试装置第一实施例的装置结构示意图。测试装置40与缓存50设置于同一 CPU芯片内,测试装置40用于测试缓存50,如图2所示,测试装置40包括以下器件:
[0042]随机地址产生器100,用于产生随机地址,随机地址表示缓存50的地址,其中缓存50的地址与主存储器60的地址具有映射关系。
[0043]第一随机数据产生器201,用于产生与随机地址一一对应的第一随机数据,一种产生方式是把随机地址作为随机数据产生器的种子(seed)来产生第一随机数据,当随机地址唯一时,第一随机数据也唯一。
[0044]测试单元300,用于根据随机数据对随机地址进行逻辑功能测试。具体而言,测试单元300包括控制器301及比较器302,逻辑功能测试包括读测试。
[0045]控制器301,用于将第一随机数据写入到随机地址中,读取随机地址中的数据,并判断随机地址是否有效,及是否被修改,其中,判断随机地址是否有效,及是否被修改具体可通过判断随机地址的标志位valid及标志位dirty来实现。这里所述的标志位valid表示有效位,在缓存的一个块(即本发明所述随机地址)的标志位Valid=I时,表示这个块是有效的,可以正常使用,在标志位Valid=O时,表示这个块是失效的,不能正常使用,若使用的话,会产生异常;标志位dirty表示污染位,在缓存的一个块(即本发明所述随机地址)标的标志位dirty=l时,表示这个块是被修改过的,在标志位dirty=0时,表示这个块是没有被修改过的。在替换时,若被替换的块没有被修改过,则不必写回主存储器,因为这时主存储器中相应地址的内容与高速缓存存储器的这个块一致。其中,标志位valid及标志位dirty设置在与该块对应的目录表项中。当然,于此所述的标志位valid及标志位dirty也可以定义为其他名称,本发明只要保证能够判断到随机地址是否有效,及是否被修改即可,对于标志位valid及标志位dirty的其他名称不作限定。
[0046]比较器302,用于在控制器301判断到随机地址有效且没有被修改(即标志位Valid=I且标志位(Iirty=O)时,将随机地址中的数据与第一随机数据进行比较,在比较结果一致时,控制器301输出针对随机地址的读测试合格的结果,在比较结果不一致时,控制器301输出针对随机地址的读测试不合格的结果。
[0047]本发明实施例提供的测试装置40,利用随机地址产生器100产生随机地址,其中,所产生的随机地址包括多个,其用于分别表示缓存50的地址,利用第一随机数据产生器201产生与随机地址一一对应的第一随机数据,利用控制器301根据第一随机数据对随机地址进行读测试,因此本发明通过随机地址及第一随机数据可对缓存50进行读测试,且无需占用缓存的I/o端口,从而降低成本。
[0048]以下请参见图3,图3是本发明测试装置第二实施例的装置结构示意图。如图3所示,在本实施例中,本发明的测试装置进一步包括第二随机数据产生器202,其中上述的逻辑功能测试包括读测试、写测试以及替换测试。
[0049]具体地,测试装置40通过以下方式对缓存50进行读测试:
[0050]随机地址产生器100,用于将伪随机序列产生的随机数作为随机地址,随机地址为缓存50的地址,其中缓存50的地址与主存储器60的地址具有映射关系;
[0051]第一随机数据产生器201,产生与随机地址一一对应的第一随机数据;
[0052]控制器301,用于将第一随机数据写入到随机地址中,读取随机地址中的数据,并判断随机地址是否有效,及是否被修改,其中,判断随机地址是否有效,及是否被修改具体可通过判断随机地址的标志位valid及标志位dirty来实现,其中,标志位valid表示有效位,在缓存的一个块(即本发明所述随机地址)的标志位Valid=I时,表示这个块是有效的,可以正常使用,在标志位Valid=O时,表示这个块是失效的,不能正常使用,若使用的话,会产生异常;标志位dirty表示污染位,在缓存的一个块(即本发明所述随机地址)标的标志位dirty=l时,表示这个块是被修改过的,在标志位dirty=0时,表示这个块是没有被修改过的,在替换时,若被替换的块没有被修改过,则不必写回主存储器,因为这时主存储器中相应地址的内容与高速缓存存储器的这个块一致。其中,标志位valid及标志位dirty设置在与该块对应的目录表项中,于此不作赘述。当然,于此所述的标志位valid及标志位dirty也可以定义为其他名称,本发明只要保证能够判断到随机地址是否有效,及是否被修改即可,对于标志位valid及标志位dirty的其他名称不作限定。
[0053]比较器302,用于在控制器301判断到随机地址有效且没有被修改(即标志位Valid=I且标志位(Iirty=O)时,将随机地址中的数据与第一随机数据进行比较,在比较结果一致时,控制器301输出针对随机地址的读测试合格的结果,在比较结果不一致时,控制器301输出针对随机地址的读测试不合格的结果。
[0054]在比较结果一致,控制器301输出针对随机地址的读测试合格的结果之后,测试装置40可进一步通过以下方式对缓存50进行写测试:
[0055]第二随机数据产生器202,用于产生与随机地址一一对应的第二随机数据,其中第二随机数据与第一随机数据不同;值得注意的是,第二随机数据产生器202与第一随机数据产生器201为不同型号的随机数据产生器。
[0056]控制器301,用于将第二随机数据写入到随机地址中,读取随机地址中的数据,并判断随机地址是否有效,及是否被修改(具体可判断标志位valid及标志位dirty);
[0057]比较器302,用于在控制器301判断到随机地址有效且被修改(即标志位Valid=I且标志位Clirty=I)时,将随机地址中的数据与第二随机数据进行比较,在比较结果一致时,控制器301输出针对随机地址的写测试合格的结果,或在比较结果不一致时,控制器301输出针对随机地址的写测试不合格的结果。
[0058]可选地,在比较结果一致时,控制器301可进一步将第二随机数据写入至随机地址对应的主存储器60的地址中,由于一个缓存50的地址可能会对应着主存储器60中的多个地址,对于主存储器60而言,当缓存50发生写入操作,存储在缓存50的地址中的数据可能已经不是原先写入的数据了,从缓存50读取的数据与主存储器60的对应地址上数据会不一致,这样在缓存50的后续使用中会发生读写数据错误的问题。因此,在本发明实施例中,在对缓存50的地址进行的写测试合格之后,控制器301进一步令主存储器60对应地址中的数据同步变化为第二随机数据,以保证缓存50上的数据与主存储器60对应地址中的数据保持一致,从而不会影响经测试后的缓存50的后续应用。
[0059]在上述针对随机地址的写或读测试合格的结果之后,测试装置40可进一步通过以下方式对缓存50进行替换测试:
[0060]控制器301,用于对随机地址中的数据进行替换,获取替换出的数据,并判断随机地址是否有效且是否被修改(具体可通过判断随机地址的标志位valid及标志位dirty来实现);
[0061]比较器302,在控制器301判断到随机地址有效且被修改(即在判断到标志位Valid=I且标志位(Iirty=I)时,将替换出的数据与第二随机数据进行比较,在比较结果一致时,控制器301输出针对随机地址的替换测试合格的结果,或在比较结果不一致时,控制器301输出针对随机地址的替换测试不合格的结果。
[0062]可选地,与上述原理相同,在比较结果一致时,控制器301可进一步将第二随机数据写入至随机地址对应的主存储器60的地址中,由于一个缓存50的地址可能会对应着主存储器60中的多个地址,对于主存储器60而言,当缓存50发生替换操作,存储在缓存50的地址中的数据可能已经不是原先写入的数据了,从缓存50读取的数据与主存储器60的对应地址上数据会不一致,这样在缓存50的后续使用中会发生读写数据错误的问题。因此,在本发明实施例中,在对缓存50的地址进行的替换测试合格之后,控制器301进一步令主存储器60对应地址的数据同步变化为第二随机数据,以保证缓存50上的数据与主存储器60对应地址中的数据保持一致,从而不会影响经测试后的缓存50的后续应用。
[0063]为了方便理解,以下将以一具体的应用场景进行说明,首先,随机地址产生器100将伪随机序列产生的随机数OXAA作为随机地址,OXAA作为种子分别输入第一随机数据产生器201和第二随机数据产生器202,第一随机数据产生器201根据OXAA产生第一随机数据0X88,第二随机数据产生器202根据OXAA产生第二随机数据0X55。
[0064]控制器301将第一随机数据0X88写入到缓存50的随机地址OXAA中,在写入之后,读取随机地址OXAA中的数据,并判断随机地址OXAA的标志位valid及标志位dirty,当控制器301判断到随机地址OXAA的标志位Valid=I及标志位dirty=0时,比较器302将随机地址OXAA中的数据与第一随机数据0X88进行比较,在比较结果一致时,控制器301输出针对随机地址OXAA的读测试合格的结果,在比较结果不一致时,控制器301输出针对随机地址OXAA的读测试不合格的结果。
[0065]在上述比较结果一致时,控制器301将第二随机数据0X55写入到随机地址OXAA中,在写入之后,读取随机地址中的数据,并判断随机地址OXAA的标志位valid及标志位dirty,当控制器301判断到随机地址OXAA的标志位Valid=I且标志位dirty=l时,比较器302将随机地址OXAA中的数据与第二随机数据0X55进行比较,在比较结果一致时,控制器301输出针对随机地址OXAA的写测试合格的结果,控制器301将第二随机数据0X55写入至随机地址OXAA对应的主存储器60的地址中,或在比较结果不一致时,控制器301输出针对随机地址OXAA的写测试不合格的结果。
[0066]比较器302将随机地址OXAA中的数据与第一随机数据0X88进行比较,且比较结果一致时,或在比较器302将随机地址OXAA中的数据与第一随机数据0X88进行比较,且比较结果一致时,控制器301可对随机地址OXAA中的数据进行替换,获取替换出的数据,并判断随机地址OXAA的标志位valid及标志位dirty,当控制器301判断到随机地址OXAA的标志位Valid=I且标志位dirty=l时,将从随机地址OXAA中替换出的数据与第二随机数据0X55进行比较,在比较结果一致时,输出针对随机地址OXAA的替换测试合格的结果,控制器301将第二随机数据0X55写入至随机地址OXAA对应的主存储器60的地址中,或在比较结果不一致时,输出针对随机地址OXAA的写测试不合格的结果。
[0067]因此,测试装置40通过以上方式可对缓存50的地址OXAA完成读、写以及替换等逻辑功能测试,并且,在进行写或替换测试时,同步更新与缓存50的地址OXAA对应的主存储器60的地址中的数据。
[0068]由于随机地址产生器100可根据伪随机序列产生不同的随机数,并将不同的随机数作为随机地址,从而覆盖测试缓存50的所有地址。具体地,随机地址产生器100将不同的随机地址分别作为种子分别输入第一随机数据产生器201和第二随机数据产生器202,第一随机数据产生器201产生与不同的随机地址一一对应的多个第一随机数据,第二随机数据产生器202产生与不同的随机地址一一对应的多个第二随机数据,而对于同一个随机地址而言,其对应的第一随机数据及第二随机数据是不相同的。
[0069]因此,测试单元300根据上述的不同的随机地址、多个第一随机数据以及多个第二随机数据对缓存50的所有地址分别进行上述的读、写以及替换测试,从而完成缓存50的所有地址的检测。并且,由于在对缓存50的随机地址进行的写或替换测试合格之后,同步更新主存储器60对应地址中的数据,以保证缓存50上的数据与主存储器60对应地址中的数据保持一致,从而不会影响测试后的缓存50的后续应用。
[0070]以下请参见图4,图4是根据本发明实施例的缓存划分方式的示意图。如图4所示,在本实施例中,缓存50的物理地址可划分为测试区域501和非测试区域502。
[0071]在本发明的备选实施方式中,随机地址随机数据存储于非测试区域502,随机地址为缓存50内划分的测试区域501的地址。控制器301从非测试区域502读取随机地址以及随机数据,控制器301及比较器302根据随机地址以及第二随机数据对测试区域501进行读、写以及替换测试。
[0072]具体而言,随机地址、第一随机数据以及第二随机数据存储于非测试区域502,随机地址为缓存50内划分的测试区域501的地址。控制器301从非测试区域502读取随机地址、第一随机数据以及第二随机数据,控制器301及比较器302根据随机地址、第一随机数据以及第二随机数据对测试区域501进行读、写以及替换测试。
[0073]本实施例的随机地址产生器100、第一随机数据产生器201以及第二随机数据产生器202可作为测试图样产生单元,以产生包括随机地址、随机数据(包括第一随机数据以及第二随机数据)的测试图样。
[0074]在本发明的备选实施方式中,可将该测试图样预先存储于非测试区域,测试单元300 (即控制器301及比较器302)在测试装置40进入测试模式时,在非测试区域502读取该测试图样,并根据该测试图样对测试区域501进行读、写以及替换测试。
[0075]在具体的应用场景中,随机地址产生器100、第一随机数据产生器201和第二随机数据产生器202预先执行以下操作:随机地址产生器100产生随机数OXAA作为随机地址,OXAA作为种子分别输入第一随机数据产生器201和第二随机数据产生器202,第一随机数据产生器201产生与OXAA对应的第一随机数据0X88,第二随机数据产生器202产生与OXAA对应的第二随机数据0X55。其中随机地址0ΧΑΑ、第一随机数据0X88以及第二随机数据0X55存储于非测试区域。并且,随机地址产生器100根据上述方式产生多个随机地址,以对应缓存50的测试区域501的所有地址。
[0076]针对随机地址0ΧΑΑ,控制器301首先将第一随机数据0X88写入到缓存50的随机地址OXAA中,在写入之后,读取随机地址OXAA中的数据,并判断随机地址OXAA的标志位valid及标志位dirty,当控制器301判断到随机地址OXAA的标志位Valid=I及标志位dirty=0时,比较器302将随机地址OXAA中的数据与第一随机数据0X88进行比较,在比较结果一致时,控制器301输出针对随机地址OXAA的读测试合格的结果,在比较结果不一致时,控制器301输出针对随机地址OXAA的读测试不合格的结果。
[0077]在上述比较结果一致时,控制器301将第二随机数据0X55写入到随机地址OXAA中,在写入之后,读取随机地址中的数据,并判断随机地址OXAA的标志位valid及标志位dirty,当控制器301判断到随机地址OXAA的标志位Valid=I且标志位dirty=l时,比较器302将随机地址OXAA中的数据与第二随机数据0X55进行比较,在比较结果一致时,输出针对随机地址OXAA的写测试合格的结果,控制器301将第二随机数据0X55写入至随机地址OXAA对应的主存储器60的地址中,或在比较结果不一致时,输出针对随机地址OXAA的写测试不合格的结果。
[0078]当比较器302将随机地址OXAA中的数据与第一随机数据0X88进行比较,且比较结果一致时,或在比较器302将随机地址OXAA中的数据与第二随机数据0X88进行比较,且比较结果一致时,控制器301可对随机地址OXAA中的数据进行替换,获取替换出的数据,并判断随机地址OXAA的标志位valid及标志位dirty,当控制器301判断到随机地址OXAA的标志位Valid=I且标志位dirty=l时,将从随机地址OXAA中替换出的数据与第二随机数据0X55进行比较,在比较结果一致时,输出针对随机地址OXAA的替换测试合格的结果,控制器301将第二随机数据0X55写入至随机地址OXAA对应的主存储器60的地址中,或在比较结果不一致时,输出针对随机地址OXAA的写测试不合格的结果。
[0079]同理,针对缓存50的测试区域501的其他随机地址而言,控制器301和比较器302执行与上述类似的操作,从而完成对整个测试区域的测试。
[0080]关于缓存50的测试区域501和非测试区域502的选取,可由缓存50的分组结构决定,在现有技术中,一般来说,主存储器60的容量远大于缓存50的容量,因此,当要把一个数据(通常以块为单位)从主存储器60调入缓存50时,就有个如何放置的问题,这就是现有技术中的映象规则所要解决的,现有技术中,映象规则有以下三种:全相联映象、直接映象、以及组相联映象。
[0081]上述的三种映象规则在现有技术中均有介绍,于此不作赘述,以下将以组相联映象作为具体实例进行说明,以揭示出本发明的测试图样在组相联映象架构中的具体存放方式。
[0082]以下请参见图5及图6,图5是根据本发明的缓存的标记(tag)和索引(index)的数据结构示意图。图6是根据本发明的缓存的数据结构示意图。如图5所示,在本发明中,通过将标记20设置为一部分位元为固定位,另一部分为位元为随机位,将索引30设置为所有位元均为固定位。由于在组相联映象架构中,索引30可用于选取特定的组,因此当索引30设置为所有位元均为固定位时,特定的组就被选定为测试区,其余的组可被选定为非测试区,如在图6所示实例中,选定的组为组0,其余的组可被选定为非测试区。
[0083]以下请参见图7及图8,图7是根据本发明的缓存的标记和索引的另一数据结构示意图。图8是根据本发明的缓存的另一数据结构示意图。如图7所示,通过将标记20设置为一部分位元为固定位,另一部分为位元为随机位,将索引30设置为一部分位元为固定位,另一部分为位元为随机位。由于在组相联映象架构中,索引30可用于选取特定的组,因此当索引30设置为所有位元均为为一部分位元为固定位,另一部分为位元为随机位时,可选定多个组作为测试区,其余的组可被选定为非测试区,如在图6所示实例中,选定的组为组O至3。其余的组被选定为非测试区。
[0084]通过将测试图样存储在非测试区,通过读取非测试区的测试图样,并根据测试图样对测试区进行测试,在进行测试时,无需进行测试图样的生成,因此可节约处理时间,提高测试速度,并减少测试错误的发生。
[0085]以下请参见图9,图9为本发明测试装置第三实施例的装置结构示意图。如图9所示,在本实施例中,随机地址产生器包括随机写地址产生器101以及随机读地址产生器102,第一随机数据产生器包括第一随机数据产生器2011以及第一随机数据产生器2012,第二随机数据产生器包括第二随机数据产生器2021以及第二随机数据产生器2022,比较器包括比较器3021、比较器3022以及比较器3023。
[0086]在本实施例中,随机地址产生器包括随机写地址产生器101以及随机读地址产生器102,设置两个第一随机数据产生器2011、2012作为第一随机数据产生器,设置两个第二随机数据产生器2021、2022作为第二随机数据产生器,并设置三个比较器3021、3022、3023、选择器90以及控制器(用于控制上述器件工作,图中未绘示)。
[0087]值得注意的是,本实施与上一实施例的实现原理一致,只是在相关器件的数量上有所不同。以下将具体说明本实施例所揭示的测试装置40的工作方式。
[0088]测试装置40通过以下方式对缓存50进行读测试:
[0089]随机写地址产生器101根据伪随机序列产生随机数,该随机数为随机写地址,随机写地址产生器101将随机写地址作为种子输入至第一随机数据产生器2011,第一随机数据产生器产生与该种子一一对应的第一随机数据。
[0090]在控制器的控制下,第一随机数据经由选择器90的选择写入随机写地址中。
[0091]随机读地址产生器102根据伪随机序列产生随机数,该随机数为随机读地址,值得注意的是,针对同一伪随机序列,随机读地址产生器102根据伪随机序列产生的随机数与上述随机写地址产生器101根据伪随机序列产生的随机数相同。
[0092]随机读地址产生器102将随机读地址作为种子输入至第一随机数据产生器2012,其中该随机读地址与随机写地址相同,第一随机数据产生器2012产生与该种子一一对应的第一随机数据。控制器从随机读地址中读取数据,并判断判断随机写地址的标志位valid及标志位dirty。
[0093]在控制器判断到随机写地址的标志位Valid=I且标志位dirty=0时,比较器3021将随机读地址中的数据与第一随机数据产生器2012产生的第一随机数据进行比较,在比较结果一致时,控制器输出针对随机写地址的读测试合格的结果,在比较结果不一致时,控制器输出针对随机读地址的读测试不合格的结果。
[0094]在比较结果一致时,比较器3021输出针对随机地址的读测试合格的结果之后,测试装置40通过以下方式对缓存50进行写测试:
[0095]控制器将随机读地址作为种子输入至第二随机数据产生器2021,第二随机数据产生器2021产生与该种子一一对应的第二随机数据,其中第二随机数据与第一随机数据不同;
[0096]第二随机数据经选择器90的选择被控制器写入到随机读地址中,控制器读取随机地址中的数据,并判断随机地址的标志位valid及标志位dirty ;
[0097]在控制器判断到随机读地址的标志位Valid=I且标志位dirty=l时,比较器3022将随机读地址中的数据与第二随机数据进行比较,在比较结果一致时,输出针对随机读地址的写测试合格的结果,控制器将第二随机数据写入至随机地址对应的主存储器(图未示)的地址中,或在比较结果不一致时,输出针对随机读地址的写测试不合格的结果。
[0098]在比较结果一致时,输出针对随机地址的写测试合格的结果之后,测试装置40通过以下方式对缓存50进行替换测试:
[0099]控制器对随机读地址中的数据进行替换,获取替换出的数据,并判断随机地址的标志位valid及标志位dirty ;
[0100]在控制器判断到随机读地址的标志位Valid=I且标志位dirty=l时,比较器3022将替换出的数据与第二随机数据进行比较,在比较结果一致时,输出针对随机读地址的替换测试合格的结果,控制器将第二随机数据写入至随机读地址对应的主存储器的地址中,或在比较结果不一致时,输出针对随机地址的替换测试不合格的结果。
[0101]值得注意的是,在本发明中,随机写地址产生器101产生多个随机写地址,随机读地址产生器102产生多个随机读地址,每一随机写地址分别与一随机读地址相同,多个随机读地址为缓存50的所有地址或测试区域的所有地址,通过对多个随机读地址进行上述的读、写及替换测试,从而完成对缓存50的逻辑测试,并且,在进行写或替换测试成功之后,更同步更新随机读地址对应的主存储器的地址中的数据,从而保证缓存50的地址中的数据与主存储器的地址中的数据保持一致。
[0102]上述的比较器、随机地址产生器以及随机数据产生器均由硬件实现,其中比较器具体可为电压比较器,具体电路结构可参考LM324、LM358、uA741、TL081\2\3\4、0P07、OPLM324滞后比较器等现有的芯片的内部电路结构;随机地址产生器以及随机数据产生器具体可由不同的门电路以各种方式组合来实现。
[0103]本发明进一步提供一种CPU芯片,该CPU芯片包括以上实施例中揭示的测试装置和缓存。
[0104]以下请参见图10,图10为本发明缓存的测试方法第一实施例的流程图。如图10所示,本发明缓存的测试方法包括以下步骤:
[0105]步骤701:将伪随机序列产生的随机数作为随机地址,随机地址为缓存的地址,其中缓存的地址与主存储器的地址具有映射关系。
[0106]步骤702:产生与一一随机地址对应的第一随机数据。
[0107]步骤703:根据第一随机数据对随机地址进行逻辑功能测试。
[0108]可选地,上述步骤701可由图2所示的随机地址产生器执行,上述步骤702可由图2所示的第一随机数据产生器201执行,上述步骤703可由图2所示的测试单元300执行。
[0109]值得注意的是,上述步骤701-703也可以由专用集成电路实现,本发明对此不作限定。
[0110]本发明实施例提供的缓存的测试方法,产生随机地址,并产生与随机地址对应的随机数据,根据随机数据对随机地址进行逻辑功能测试,因此本发明可根据随机数据及随机地址对缓存提供逻辑功能测试。
[0111]以下请参见图11,图11为本发明缓存的测试方法第二实施例的流程图。如图11所示,本发明缓存的测试方法包括以下步骤:
[0112]步骤801:将伪随机序列产生的随机数作为随机地址。其中随机地址为缓存的地址,缓存的地址与主存储器的地址具有映射关系。可选地,该步骤可由图3所示的随机地址产生器100执行。
[0113]步骤802:产生与随机地址一一对应的第一随机数据。可选地,该步骤可由图3所不的第一随机数据产生器201执行。
[0114]步骤803:将第一随机数据写入到随机地址中。可选地,该步骤可由图3所示的控制器301执行。
[0115]步骤804:读取随机地址中的数据。可选地,该步骤可由图3所示的控制器301执行。
[0116]步骤805:判断随机地址是否有效,及是否被修改(具体可通过判断标志位valid及标志位dirty实现),在判断到随机地址有效且没有被修改时,(即判断到标志位Valid=I且标志位dirty=。)时,跳至步骤807,在判断到随机地址有效且被修改、或无效(即判断到标志位Valid=I且标志位dirty=l,或标志位valid=0)时,跳至步骤806。可选地,该步骤可由图3所示的控制器301执行。
[0117]步骤806:输出针对随机地址的读测试不合格的结果。可选地,该步骤可由图3所示的控制器301执行。
[0118]步骤807:将随机地址中的数据与第一随机数据进行比较,在比较结果一致时,跳至步骤808,在比较结果不一致时,跳至步骤806。可选地,该步骤可由图3所示的比较器302执行。
[0119]步骤808:输出针对随机地址的读测试合格的结果。可选地,该步骤可由图3所示的控制器301执行。
[0120]以下请参见图12,图12为本发明缓存的测试方法第二实施例的另一流程图。如图12所示,在上述步骤807中,比较结果一致时,本发明缓存的测试方法进一步包括以下步骤:
[0121]步骤809:产生与随机地址一一对应的第二随机数据。其中第二随机数据与第一随机数据不同。可选地,该步骤可由图3所示的第二随机数据产生器202执行。
[0122]步骤810:将第二随机数据写入到随机地址中。可选地,该步骤可由图3所示的控制器301执行。
[0123]步骤811:读取随机地址中的数据。可选地,该步骤可由图3所示的控制器301执行。
[0124]步骤812:判断随机地址是否有效,及是否被修改(具体可通过判断标志位valid及标志位dirty),在判断到随机地址有效且被修改(判断即标志位Valid=I且标志位dirty=l)时,跳至步骤814,在判断到随机地址有效且没被修改(即判断到标志位Valid=I且标志位dirty=0),或无效(即判断到标志位valid=0)时,跳至步骤813。可选地,该步骤可由图3所示的控制器301执行。
[0125]步骤813:输出针对随机地址的写测试不合格的结果。可选地,该步骤可由图3所示的控制器301执行。
[0126]步骤814:将随机地址中的数据与第二随机数据进行比较,在比较结果一致时,跳至步骤815,在比较结果不一致时,跳至步骤813。可选地,该步骤可由图3所示的比较器302执行。
[0127]步骤815:输出针对随机地址的写测试合格的结果,并将第二随机数据写入至随机地址对应的主存储器的地址中。可选地,该步骤可由图3所示的控制器301执行。
[0128]以下请参见图13,图13为本发明缓存的测试方法第二实施例的又一流程图。如图13所示,在上述步骤807中,比较结果一致时,本发明缓存的测试方法进一步包括以下步骤:本发明缓存的测试方法包括以下步骤:
[0129]步骤816:产生与随机地址一一对应的第二随机数据。其中第二随机数据与第一随机数据不同。可选地,该步骤可由图3所示的第二随机数据产生器202执行。
[0130]步骤817:对随机地址中的数据进行替换,获取替换出的数据。可选地,该步骤可由图3所示的控制器301执行。
[0131]步骤818:判断随机地址是否有效,及是否被修改(具体可通过判断随机地址的标志位valid及标志位dirty来实现)。在判断到随机地址有效且被修改(即判断到随机地址的标志位Valid=I且标志位dirty=l)时,跳至步骤819,在判断随机地址无效(即判断到随机地址的标志位valid=0),或随机地址有效且没被修改(即判断到随机的地址的标志位Valid=I且标志位dirty=0)时,跳转至步骤818。可选地,该步骤可由图3所示的控制器301执行。
[0132]步骤819:输出针对随机地址的替换测试不合格的结果。可选地,该步骤可由图3所示的控制器301执行。
[0133]步骤820:将替换出的数据与第二随机数据进行比较,在比较结果一致时,跳至步骤820,在比较结果不一致时,跳至步骤818。可选地,该步骤可由图3所示的比较器302执行。
[0134]步骤821:输出针对随机地址的替换测试合格的结果,并将第二随机数据写入至随机地址对应的主存储器的地址中。可选地,该步骤可由图3所示的控制器301执行。
[0135]上述方法可通过上述介绍的控制器、比较器、随机地址产生器以及随机数据产生器来实现,但,值得注意的是,在本发明的备选实施方式中,也可以利用FPGA (FieldProgrammable Gate Array,现场可编程门阵列)或专用集成电路(或芯片)来实现,本发明对此不作限定。
[0136]在本发明的备选实施方式中,也可将随机地址、随机数据(包括第一随机数据以及第二随机数据)存储于缓存内划分的非测试区域,其中限定随机地址为缓存内划分的测试区域的地址。
[0137]在本发明的备选实施方式中,可通过在非测试区域读取随机地址、随机数据(包括第一随机数据以及第二随机数据),并根据随机地址、随机数据(包括第一随机数据以及第二随机数据)对测试区域进行上述的读、写或替换等逻辑功能测试,从而完成对缓存的测试区域的逻辑功能测试。由于通过将随机地址、第一随机数据以及第二随机数据等测试图样存储在非测试区,根据测试图样对测试区进行测试,由于无需进行测试图样的生成,因此可节约处理时间,提高测试速度,减少测试错误的发生。
[0138]通过上述公开内容,本发明实施例提供的测试装置、CPU芯片及缓存的测试方法,利用随机地址产生器产生随机地址,利用随机数据产生器产生与随机地址对应的随机数据,利用控制器根据随机数据对随机地址进行逻辑功能测试,进一步地,在对主存储器的地址进行的写或替换测试合格时,同步更新对应的主存储器的地址中的数据,因此本发明可对缓存提供包括读、写以及替换的全方位测试,并在对缓存的地址进行的写或替换测试合格之后,令主存储器对应地址的数据同步变化,以保证缓存上的数据与主存储器对应地址中的数据保持一致,从而不会影响经测试后的缓存的后续应用。
[0139]因此,在本发明实施例提供的测试装置、CPU芯片及缓存的测试方法,无需占用缓存的I/o端口,可在降低成本的前提下对缓存进行逻辑功能测试。
[0140]以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的【技术领域】,均同理包括在本发明的专利保护范围内。
【权利要求】
1.一种测试装置,其特征在于,所述测试装置用于测试缓存,包括: 随机地址产生器,用于将伪随机序列产生的随机数作为随机地址,所述随机地址为所述缓存的地址,其中所述缓存的地址与主存储器的地址具有映射关系; 第一随机数据产生器,用于产生与所述随机地址一一对应的第一随机数据; 测试单元,用于根据所述第一随机数据对所述随机地址进行逻辑功能测试,所述逻辑功能测试包括读测试,所述测试单元包括控制器和比较器,其中: 所述控制器,用于将所述第一随机数据写入到所述随机地址中,读取所述随机地址中的数据,并判断所述随机地址是否有效,及是否被修改; 所述比较器,用于在所述控制器判断到所述随机地址有效且没有被修改时,将所述随机地址中的数据与所述第一随机数据进行比较,在比较结果一致时,所述控制器输出针对所述随机地址的读测试合格的结果,在所述比较结果不一致时,所述控制器输出针对所述随机地址的读测试不合格的结果。
2.根据权利要求1所述的测试装置,其特征在于,所述逻辑功能测试还包括写测试,所述随机数据还包括第二随机数据,所述测试装置还包括第二随机数据产生器,其中: 所述第二随机数据产生器,还用于产生与所述随机地址一一对应的所述第二随机数据,其中所述第二随机数据与所述第一随机数据不同; 所述控制器,还用于将所述第二随机数据写入到所述随机地址中,读取所述随机地址中的数据,并判断所述随机地址是否有效,及是否被修改; 所述比较器,还用于在所述控制器判断到所述随机地址有效且被修改时,将所述随机地址中的数据与所述第二随机数据进行比较,在比较结果一致时,所述控制器输出针对所述随机地址的写测试合格的结果,或在所述比较结果不一致时,所述控制器输出针对所述随机地址的写测试不合格的结果。
3.根据权利要求1所述的测试装置,其特征在于,所述逻辑功能测试还包括替换测试,所述随机数据还包括第二随机数据,所述测试装置还包括第二随机数据产生器,其中: 所述第二随机数据产生器,还用于产生与所述随机地址一一对应的所述第二随机数据,其中所述第二随机数据与所述第一随机数据不同; 所述控制器,还用于对所述随机地址中的数据进行替换,获取替换出的数据,并判断所述随机地址是否有效,及是否被修改; 所述比较器,还用于在所述控制器判断到所述随机地址有效且被修改时,将所述替换出的数据与所述第二随机数据进行比较,在比较结果一致时,所述控制器输出针对所述随机地址的替换测试合格的结果,或在所述比较结果不一致时,所述控制器输出针对所述随机地址的替换测试不合格的结果。
4.根据权利要求2或3所述的测试装置,其特征在于,在所述比较结果一致时,所述控制器还用于将所述第二随机数据写入至所述随机地址对应的主存储器的地址中。
5.根据权利要求1至3任一项所述的测试装置,其特征在于,所述随机地址以及所述随机数据存储于所述缓存内划分的非测试区域,所述随机地址为所述缓存内划分的测试区域的地址,所述控制器从所述非测试区域读取随机地址以及所述随机数据,所述控制器及比较器根据所述随机地址以及所述随机数据对测试区域进行所述逻辑功能测试。
6. 一种CPU芯片,其特征在于,包括权利要求1至5中任一项所述的测试装置以及缓存。
7.一种缓存的测试方法,其特征在于,包括: 将伪随机序列产生的随机数作为随机地址,所述随机地址为所述缓存的地址,其中所述缓存的地址与主存储器的地址具有映射关系; 产生与所述随机地址一一对应的第一随机数据; 根据所述第一随机数据对所述随机地址进行逻辑功能测试,其中,所述逻辑功能测试包括读测试,所述根据所述第一随机数据对所述随机地址进行逻辑功能测试包括: 将所述第一随机数据写入到所述随机地址中,读取所述随机地址中的数据,并判断所述随机地址是否有效,及是否被修改; 在判断到所述随机地址有效且没有被修改时,将所述随机地址中的数据与所述第一随机数据进行比较,在比较结果一致时,输出针对所述随机地址的读测试合格的结果,在所述比较结果不一致时,输出针对所述随机地址的读测试不合格的结果。
8.根据权利要求7所述的方法,其特征在于,所述逻辑功能测试还包括写测试,所述随机数据还包括第二随机数据,所述根据所述第一随机数据对所述随机地址进行逻辑功能测试还包括: 产生与所述随机地,址一一对应的所述第二随机数据,其中所述第二随机数据与所述第一随机数据不同; 将所述第二随机数据写入到所述随机地址中,读取所述随机地址中的数据,并判断所述随机地址是否有效,及是否被修改; 在判断到所述随机地址有效且被修改时,将所述随机地址中的数据与所述第二随机数据进行比较,在比较结果一致时,输出针对所述随机地址的写测试合格的结果,或在所述比较结果不一致时,输出针对所述随机地址的写测试不合格的结果。
9.根据权利要求7所述的方法,其特征在于,所述逻辑功能测试还包括替换测试,所述随机数据还包括第二随机数据,所述根据所述第一随机数据对所述随机地址进行逻辑功能测试还包括: 产生与所述随机地址一一对应的所述第二随机数据,其中所述第二随机数据与所述第一随机数据不同; 对所述随机地址中的数据进行替换,获取替换出的数据,并判断所述随机地址是否有效,及是否被修改; 在判断到所述随机地址有效且被修改时,将所述替换出的数据与所述第二随机数据进行比较,在比较结果一致时,输出针对所述随机地址的替换测试合格的结果,或在所述比较结果不一致时,输出针对所述随机地址的替换测试不合格的结果。
10.根据权利要求8或9所述的测试装置,其特征在于,在所述比较结果一致时,所述方法还包括: 将所述第二随机数据写入至所述随机地址对应的主存储器的地址中。
11.根据权利要求7至8任一项所述的测试装置,其特征在于,所述根据所述随机数据对所述随机地址进行逻辑功能测试包括: 将所述随机地址以及所述随机数据存储于所述缓存内划分的非测试区域,所述随机地址为所述缓存内划分的测试区域的地址;在所述非测试区域读取所述随机地址以及所述随机数据;根据所述随机地址以及所述随机数据对所述测试区域进行所述逻辑功能测试。
【文档编号】G06F11/26GK103473160SQ201310447156
【公开日】2013年12月25日 申请日期:2013年9月26日 优先权日:2013年9月26日
【发明者】李生, 李涛, 常胜 申请人:杭州华为数字技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1