CN100524242C - 集成电路及其测试和诊断方法和计算机系统用的测试方法 - Google Patents

集成电路及其测试和诊断方法和计算机系统用的测试方法 Download PDF

Info

Publication number
CN100524242C
CN100524242C CNB028075463A CN02807546A CN100524242C CN 100524242 C CN100524242 C CN 100524242C CN B028075463 A CNB028075463 A CN B028075463A CN 02807546 A CN02807546 A CN 02807546A CN 100524242 C CN100524242 C CN 100524242C
Authority
CN
China
Prior art keywords
request
affairs
data
external bus
bus
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.)
Expired - Fee Related
Application number
CNB028075463A
Other languages
English (en)
Other versions
CN1500247A (zh
Inventor
P·德塞
Q·梅雷尔
C·麦奈伊
A·阿多
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1500247A publication Critical patent/CN1500247A/zh
Application granted granted Critical
Publication of CN100524242C publication Critical patent/CN100524242C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/24Marginal checking or other specified testing methods not covered by G06F11/26, e.g. race tests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/27Built-in tests

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Microcomputers (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

验证FUB是在代理之中的、能够使计算机系统处于应力条件的一种硬件系统。验证FUB可以监视被发送到外部总线上的事务并且响应该被监视的事务而生成其他事务。该验证FUB可以是一个可编程元件,该元件的响应可以由外部输入加以规定。因此,该验证FUB可以测试种类广泛的系统事件。

Description

集成电路及其测试和诊断方法和计算机系统用的测试方法
技术领域
本发明涉及到对计算机系统中的微处理器和其他代理进行的应力测试。更具体而言,本发明涉及到在诸如微处理器这样的代理中所提供的芯片(die)上验证功能单元块("FUB")。
背景技术
在计算机系统中,"代理"可以包括使用公共总线接口协议通过公共通信总线与其他设备进行通信的任一设备。典型的代理包括微处理器、存储器控制器、桥接口电路、数字信号处理器以及专用集成电路。应该理解的是,现代代理可以包括被装配到单一集成电路中数百万个晶体管。尽管电路设计在被装配成可操作的集成电路之前进行了仿真,但是为了确保该集成电路在运行中的实际行为与设计意图一样,验证测试则是必须的。
验证测试包括应力测试。应力测试涉及到将代理的运行条件推向它的性能极限,以便确定代理的实际行为与所仿真的预测匹配。然而,应力测试是一个高代价而复杂的、并且其结果不确定的过程,因为常规地它是通过软件控制的算法加以执行的。当集成电路被制造时,常规的应力测试要求集成电路执行被设计的程序指令,以便使代理处于预定的应力条件。例如,软件可以被写成使两个不同的处理器连续地读取和修改相同存储单元的数据。通过建立这两个处理器之间的竞争,就为验证人员观察这些处理器竟争相同数据片时它们的行为提供了机会。当然,所希望的应力事件发生的精确时刻是无法预测的。因此,诊断人员必须观察数千次的总线事务来确定应力事件发生的时间(某些时候,则是确定应力事件是否发生)。不仅仅设计应力测试软件是高代价的,而且检查和解释应力测试结果也是高代价的。
软件控制算法根本不提供许多控制。为了测试外部总线逻辑,即在代理之中用于控制该代理至外部总线接口的电路的功能,理想情况是在该总线上维持一个可支撑级别的高通信量。软件控制算法能够通过操作系统和其他事件所进行的场景切换(context switches)而被中断。这样就会降低该总线上的通信量级别。此外,还没有任何方式能够使软件控制算法足够快地对外部总线上的事件作出响应,以保证定时关系能够被维持在总线上从而能测试某些总线事件。的确,存在许多验证工程师希望去测试的事件而软件根本无法检测它们。所有这些问题都降低了通过软件进行验证测试的效率。
因此,在本领域需要一种供在处理器或者其他代理中使用的改进的验证测试模式。
发明内容
本发明提供一种用于计算机或其他代理的改善的验证测试方案,在一个典型的实施例中,本发明可作为一种对集成电路进行应力测试的方法实施,该方法包括:在外部总线上捕获第一外部总线事务,如果在该外部总线上捕获的该第一外部总线事务的请求类型匹配于触发条件,则根据被包含在该第一外部总线事务中的地址生成一个寻址数据的数据请求,和根据该数据请求在该外总线上生成干扰性事务。
在另一个典型的实施例中,本发明可作为一种对计算机系统进行应力测试的方法来实施,该方法包括:在外部总线上的新事务没有开始的情况下,对所发生的外部总线周期的数目进行计数,确定该数目是否满足预定的阈值,如果是的话,在外部总线上生成一个干扰性事务。
在另一个典型的实施例中,本发明可作为一种集成电路来实施,该集成电路包括:一个耦合到数据请求管线的处理器核心,该处理器核心工作在第一时钟域,该数据请求管线具有一个耦合到外部总线的外部总线接口,该外部总线工作在第二时钟域,其中第二时钟是与第一时钟不同的,和一个具有耦合到该数据请求管线的外部总线接口的输入端的验证功能单元块,该验证功能单元块工作在第一时钟域,该验证功能单元块还包括:一个被耦合到该外部总线接口的事务锁存器,和一个被耦合到该事务锁存器并且具有被耦合到该数据请求管线的输出端的请求库,用于按照外部总线协议来存储事务请求类型。
在另一个典型的实施例中,本发明可作为一种集成电路来实施,该集成电路包括:处理器核心,被耦合到该处理器核心和外部总线的总线定序单元,该总线定序单元包括:用于接收来自该处理器核心的第一数据请求的仲裁器,用于存储数据的高速缓存,和一个事务队列,它被耦合到该仲裁器和该高速缓存以便处理该第一数据请求,和被耦合到该总线定序单元和该外部总线的验证功能单元块,该验证功能单元块接收来自该仲裁器的第一数据请求,以便如果该数据请求匹配触发条件,就生成第二数据请求,该验证功能单元块包括:事件锁存器,它被耦合到该仲裁器;和请求库,它被耦合到该事务锁存器并且具有被耦合到外部总线的输出端,该请求库用于按照外部总线协议来存储事务处理类型。
在另一个典型的实施例中,本发明可作为一种集成电路来实施,该集成电路包括:处理器核心,被耦合到该处理器核心和外部总线的总线定序单元,该总线定序单元还包括:接收第一数据请求的仲裁器,高速缓存,响应于该第一数据请求而输出命中/未命中信号,和一个事务队列,它被耦合到该仲裁器和该高速缓存以便处理该第一数据请求,和被耦合到该总线定序单元和该外部总线的验证功能单元块,该验证功能单元块接收来自高速缓存的命中/未命中信号,以便当该命中/未命中信号匹配触发条件时,生成第二数据请求,该验证功能单元块包括:事件锁存器,它被耦合到该仲裁器;和请求库,它被耦合到该事务锁存器并且具有被耦合到外部总线的输出端,该请求库用于按照外部总线协议来存储事务处理类型。
在另一个典型的实施例中,本发明可作为一种集成电路的诊断方法来实施,该诊断方法包括:检测在外部总线上第一外部总线事务的开始,从外部总线读出第一外部总线事务的地址,和响应于检测的第一外部总线事务,在外部总线上的第二外部总线事务中发出读请求,从外部总线上将读请求指向从第一外部总线事务中读出的地址。
在另一个典型的实施例中,本发明可作为一种测试集成电路的方法来实施,该方法包括:把请求类型存储在寄存器,观察在外部总线上的外部总线事务,和如果该观察的外部总线事务的各自的请求类型匹配于在寄存器中存储的请求类型,则在外部总线上生成数据请求。
附图说明
图1是在根据本发明的一个实施例的代理中的FUB的简化框图。
图2是说明根据本发明的一个实施例的操作方法的流程图。
图3说明根据本发明的另一个实施例的代理。
图4是根据本发明的一个实施例的验证FUB的框图。
图5说明根据本发明的一个实施例所构建的处理器的实施例。
图6说明根据本发明的一个实施例的示范性计算机系统。
图7说明根据本发明的另一个实施例的示范性计算机系统。
具体实施方式
本发明的实施例提供代理的验证FUB,即一种在该代理之中的用于使计算机系统处于应力条件的硬件系统。验证FUB可以监视被发送到外部总线上的事务并且响应该被监视的事务而生成其他事务。该验证FUB可以是一个可编程元件,该元件的响应可以由外部输入加以规定。因此,该验证FUB可以测试种类广泛的系统事件。
图1是在根据本发明的一个实施例的代理100中的FUB的简化框图。代理100可以包括核心110和被提供与外部总线130进行通信的数据请求处理器120。数据请求处理器120可以通过外部总线控制器("EBC")140与总线130接口。EBC 140管理外部总线130上的事务的进度。核心110可以边执行程序指令边读取和修改数据。它可以生成至数据请求处理器120的数据请求,以便从系统存储器(未示出)的预定存储单元读取数据或者将数据存储到其中。
数据请求处理器120可以接收来自代理100之中的核心110和可能的其他源的数据请求。它对这些数据请求进行解释,并且如果为了完成该请求,该代理必须与其他代理进行通信,则数据请求处理器120就对其做出响应而生成外部总线事务。数据请求处理器120可以包括用于管理这些数据请求的各种队列,并且可以与例如内部高速缓存(未示出)这样的其他FUB相接口,以便管理这些数据请求。在这方面,代理100的体系结构和操作是周知的。
本发明的实施例可以将验证FUB 150引入到代理100之中。验证FUB150可以耦合到EBC160以便观察被发送到外部总线130上的事务。响应预定的触发条件,验证FUB 150可以为要被发送到外部总线130上的称为"干扰性"总线事务的新事务生成数据。几种不同类型的触发条件是可能的。当观察到新的外部总线事务时,如果该新的事务的请求类型匹配预定类型,则可以生成干扰性事务。第一外部总线事务就是所说的"触发"事务。可选地,所有外部总线事务(除了来自验证FUB 150的干扰性事务以外)都可以是触发事务。在这种情形下,会为外部总线130上的每个事务而生成干扰性总线事务。
代理100可以包括选择复用器("MUX")160,以便从数据请求处理器120或者从MUX160中选择事务数据。在一个实施例中,MUX160可以仅仅受到验证FUB150的控制。在可选的实施例中,用虚线表示,MUX160可以受到验证FUB 150和核心110这二者的控制。在这种情形下,来自核心110的数据请求可以比来自验证FUB 150的数据请求具有更高的优先权。这种可选的实施例在此更加详细地加以论述。
验证FUB 150可以提供优于现有的、软件控制模式的用于应力测试的几个优点。验证FUB 150在它所位于的代理的时钟域之中操作,并且因此能够以比采用软件控制算法可以获得的可靠性更高的可靠性来建立应力测试事件。在某些应用中,验证FUB 150能够观察触发总线事务并生成新的"干扰性"总线事务作为下一个总线事务。因此,使用前面的两个代理竞争相同数据片的例子,本实施例的验证FUB 150能够以确保对请求该被竟争的数据的每个和各个总线事务作出响应而生成干扰性总线事务的方式而加以使用。每当观察到请求该数据的事务时,验证FUB可以生成寻址该相同数据的另一个总线事务。因此,就能够避免软件控制算法的这种偶然性。
因为验证FUB 150在该代理的时钟域之中操作,该时钟常常要比外部总线的时钟域快得多,所以它可以生成具有比以前可能的细得多的定时关系的应力条件。考虑一种外部总线是管线(pipelined)总线的例子。在诸如为Pentium 处理器规定的总线协议这样的管线总线协议中,数据是采用总线事务被请求的。总线事务可以被组织成各种阶段。对于Pentium 处理器而言,总线事务包括仲裁阶段、请求阶段、错误阶段、探听阶段、响应阶段以及最后的数据阶段。每种类型的数据请求的进行都不通过所有可能的阶段。管线总线可以允许几个总线事务同时在总线上前进,但是每个请求必须处于不同的阶段。因此,在第一事务结束该请求阶段并进入错误阶段之后,第二事务就可以进入请求阶段。在各种阶段之间的过渡在该外部总线的时钟域发生。对于更多的信息,可以参考Pentium 系列开发者手册,第一卷1:说明(http://developer.intel.com/design/pro/MANUALS/242690.HTM)。
因为验证FUB 150可以在代理的时钟域之中操作,所以它可以常常在触发总线事务在外部总线上保持挂起时检测和响应触发条件。因此,在一个实施例中,验证FUB 150可以在触发它的事务结束之前生成干扰性事务并将其发送到总线上。还没有任何已知的应力测试技术允许代理在触发事务在外部总线上保持挂起的同时捕获和响应该触发事务。
验证FUB 150提供另一个优点,即它能够对单处理器计算系统进行应力测试。软件控制的应力测试典型地要求至少两个处理器,每个处理器执行客户软件来生成希望的应力测试场景。验证FUB 150可以监听它所位于的代理所生成的事务,并且可以响应在该外部总线上所观察到的事务而生成干扰性事务。此外,不需要任何特殊的软件。因此,取代投入时间和金钱来开发用于多处理器的客户软件,验证FUB 150允许开发者对执行市售软件包的单代理系统中他们的代理进行应力测试。因此,验证FUB 150能够显著地降低集成电路开发者的开发成本。
图2是说明根据本发明的一个实施例的操作方法1000的流程图。操作可以在新事务被发送到外部总线上时开始。根据该实施例,事务数据可以被验证FUB捕获(框1010)。该验证FUB可以确定该事务的请求类型是否匹配预定的触发条件(框1020)。如果匹配,则该验证FUB可以使用从外部总线事务中所捕获的地址来生成干扰性事务数据(框1030)。该新的数据请求可以被输出到EBC(框1040)。如果该捕获的数据请求不匹配该预定的触发条件,则该方法可以结束。
可选地,当该捕获的请求类型数据匹配触发条件,该捕获的地址就可以被修改(框1050,用虚线表示)。例如,该捕获的地址可以按照高速缓存线增量而加以增量或者减量。如所周知,存储器系统典型地被组织成通常称为“高速缓存线”的预定单元。例如,在可从Intel公司买到的Pentium 处理器中,高速缓存线的长度是32字节。在其他处理器中,高速缓存线可以具有不同的长度。通过按照高速缓存线单位增量(或者减量)锁存的地址,验证FUB 150可以将事务指向系统存储器中相邻的存储单元。在这样的实施例中,取代将新的外部事务指向与在该外部总线所观察的地址相同的地址,验证FUB 150可以将该新的外部事务指向相邻的高速缓存线。
在另一个实施例中,所捕获的地址可以按照小于一个高速缓存线单位的量而加以增量或者减量。尽管代理可以按照高速缓存线大小的单位交换数据,但是总线事务典型地使用具有小于高速缓存线增量的粒度的地址来寻址系统存储器。这种技术允许计算机系统标识请求的代理所需要的数据"组块(chunk)",即小于高速缓存线大小的数据单元。通过寻址该代理所需要的具体组块,其他代理(诸如存储器控制器或者存储了该数据的另一代理)可以按照在提交高速缓存线的其他部分之前,首先提供被请求的组块的方式,排定提交被请求的高速缓存线的次序。例如,在
Figure C02807546D00111
系统中,外部总线事务的数据阶段可以在四个周期上发生,每个周期传送一个8字节的组块。在这样的系统中,被请求组块可以在第一周期加以传送,接着在以后的周期中传送来自该高速缓存线的其余组块。
在所捕获的地址可以按照小于高速缓存线单位的量来加以增量或者减量的这个实施例中,验证FUB 150可以使得新的外部总线事务被发送到该外部总线上。该新的总线事务会具有这样的一个地址,该地址指向系统存储器中的、被所捕获的总线事务引用过的、相同的高速缓存线,但是该地址却可以指向在该高速缓存线之中的、与该被捕获的总线事务所指向组块不相同的组块。
当所捕获的地址被修改并且被包括在干扰性事务之中时,可以对不同系统操作条件进行应力测试。如所周知,在操作期间,代理常常从系统存储器中的连续存储单元中检索数据。例如,可执行的程序指令常常被存储在系统存储器的顺序存储单元中。数据数组和其他结构也常常被存储在系统存储器的顺序存储单元中。通过按照高速缓存线增量对被捕获的地址进行增量或者减量,验证FUB 150就可以检索可能要被计算机系统中的另一个代理请求的数据。验证FUB 150基本上会以另一个代理在稍后将需要该数据的期望来检索该数据,并且能够允许对该计算机系统之中的数据竞争器件进行应力测试。
本发明的实施例在来自核心100和验证FUB 150的数据请求之间实行优先权模式。返回到图1,来自验证FUB 150的数据请求被显示为与来自数据请求处理器120的数据请求一起输入到MUX160。因此,来自验证FUB 150的数据请求可被视为与数据请求处理器120“竞争”外部总线130的资源。根据一个实施例,MUX160不仅可以受到验证FUB 150的控制,还可以受到数据请求处理器120的控制。在这样的实施例中,当核心100正在生成至数据请求处理器120的数据请求时,MUX160可以选择来自数据请求处理器120的一个数据请求。当不存在正由核心100生成的任何数据请求时,MUX160可以选择来自验证FUB 150的数据请求。因此,来自数据请求处理器120的数据请求可以在比来自验证FUB 150的请求具有更高优先权的情况下受到处理。这一特征允许计算机系统执行有用工作的同时发生应力测试。
图3说明根据本发明的另一个实施例的代理200。在这个实施例中,代理200可以包括与在前面的实施例中一样的核心210和数据请求处理器220。在这个实施例中,数据请求处理器220可以登记来自代理200之中的各种源的数据请求,并且可以生成外部总线事务以便完成该数据请求。它可以通过外部总线接口("EBI")240与总线230接口,外部总线接口("EBI")240可以包括电驱动器和接口电路,以便生成和捕获总线230上的电信号。在这一方面,代理200的操作是周知的。
在一个实施例中,代理200可以包括验证FUB 250。验证FUB 250可以与EBI240相接口以便观察外部总线230上的事务。验证FUB 250可以将干扰性数据请求输出到数据请求处理器220。在这个实施例中,数据请求处理器220可以包括仲裁器260,仲裁器260用于管理被从核心210和各种其他源输入到数据请求处理器220的数据请求。数据请求处理器220可包括用于管理和完成这些数据请求的其他处理元件270。在这个实施例中,验证FUB 250可以将数据请求输入到数据请求处理器220,该数据请求会被采用与对来自代理200之中的任何其他源的数据请求相同的方式加以处理。因此,来自验证FUB 250的数据请求可以由数据请求处理器220加以排队,并且有可能被在代理200自身之中完成,取决于操作条件。
图3的实施例可选地可以根据数据请求之间的优先权模式操作。用虚线所表示的是,仲裁器260不仅可以受到验证FUB 250的控制,而且还可以受到核心210的控制。在核心210正在生成数据请求的同时,仲裁器260可以允许该核心数据请求而拒绝来自验证FUB 250的数据请求。在其他时间,仲裁器260可以允许来自验证FUB 250的数据请求。
图4是根据本发明的一个实施例的验证FUB 300的框图。验证FUB 300可以包括事务锁存器310、请求库320以及控制器330。事务锁存器310可以接收来自外部总线130的事务数据,并且将它锁存起来以供在验证FUB 300之中的别处使用。请求库320可以是一个寄存器存储器或者存储数据请求的其他数据结构。控制器340可以管理验证FUB 300的操作。
根据一个实施例,请求库320可以存储那些能够被数据请求处理器120(图1)处理的数据请求中的每一个的数据模式。请求库320可以从事务锁存器310接收被锁存的地址数据。在控制器330的管理之下,请求库320可以将从事务锁存器310中所接收的地址数据追加到在其中所存储的请求模式,以便形成数据请求。请求库320可以将该数据请求输出到MUX360。因此,验证FUB 300可以响应在该外部总线上的事务而生成新的数据请求。
控制器330可以是一个可编程的状态机,在一个实施例中,该状态机具有存储用于标识验证FUB 300应该响应的数据事务的信息的寄存器(未示出)。如图4所示,控制器330可以包括用于存储事务类型数据的第一寄存器332和用于存储数据请求索引的第二寄存器334。该事务类型数据可以确定验证FUB 300应该响应的触发条件。第一寄存器332可以是CAM寄存器或者是具有匹配检测逻辑的某个其他寄存器。在初始化模式期间,事务类型数据可以被加载到第一寄存器332。然后,在应力测试期间,控制器330可以从被发送到外部总线130上的事务中接收事务类型数据。如果该新接收的事务类型数据匹配在初始化期间所存储的事务类型数据,则控制器330就可以确定输出来自验证FUB 300的新数据请求。
该数据请求索引可以确定验证FUB 300将如何响应触发条件。它可以被存储在第二寄存器334中,在初始化期间可以被加载到该寄存器中。该数据请求索引能够寻址在指令库320中所存储的数据请求模式。当控制器330确定相对于第一寄存器332事务类型匹配发生时,则它就可以将来自第二寄存器334中的索引值施加到指令库320,并且使干扰性事务的数据被读出。如所指示的,指令库320可以将从事务锁存器310中所接收的地址值与来自该库中的数据请求模式附加在一起,以便建立有效的数据请求。
如上所述,指令库320可以直接从事务锁存器310接收地址数据。这一实施例允许验证FUB 300生成外部总线事务(通过数据请求处理器120),该外部总线事务指向在触发总线事务中所引用的相同数据。在一个可选的实施例中,指令库320可以生成至所涉及的但是并不完全相同的地址的数据请求,以及生成至从事务锁存器310中所接收的地址的数据请求。
图4用虚线说明在控制器330的管理之下进行操作的任选的地址操作器340。地址操作器340可以对来自事务锁存器310的地址数据执行算术运算。它可以将修改后的地址数据输出到指令库320。例如,地址操作器340可以按照高速缓存线增量对地址进行增量或者减量。可选地,该地址操作器可以按照组块值增量或者减量地址。
为了将验证FUB 300集成到现有的设计中,采用不要求改变在现有设计中所提供的数据请求处理器的方式来进行集成可能是很有利的。在这种应用中,给该请求库提供为该代理所规定的每个数据请求也许并不可行。例如,在有些设计中,如果存储器写请求、IO写请求、中断请求、中断确认请求和清理请求是由代理之中的验证FUB 300而不是某个其他组件生成的,则它们就可以要求显著改变以便请求和响应逻辑来支持这种数据请求。在这种实施例中,为了简化在那些设计中使用验证FUB 300,这些请求可以被从该事务库中忽略。
在另一个实施例中,如果指令的使用可能会破坏高速缓存的一致性或者其他的系统完整性机制,则这些指令就可以被从事务库忽略。如所周知,许多多处理器计算机系统依据高速缓存一致性模式操作,在该高速缓存一致性模式下,在处理器中所存储的数据的每一项被赋予一个一致性状态。该数据的状态确定该处理器可以怎样使用该数据。例如,在已知的"MESI"协议中,数据可以被赋予如下的四种状态之一:
●无效的-尽管该代理可能已经缓存了数据的拷贝,但是该拷贝对于该代理确实不可用的。当该代理需要该数据时,该代理必须从外部存储器或者从另一个高速缓存中提取该数据。
●共享的-被缓存的拷贝是有效的,并且具有与外部存储器中所存储的值相同的值。该代理可以只读取该数据。该数据的拷贝可以被存储在其他代理的高速缓存之中。如果代理不首先执行一个外部总线事务,以便确保该代理独占地控制该数据的拷贝,则该代理就不可以修改处于共享状态的数据。
●独占的-被缓存的拷贝是有效的,并且可以具有与在外部存储器中所存储的值相同的值。当代理缓存处于独占状态的数据时,它就可以读取和写(修改)该数据而不用进行外部高速缓存一致性检查。
●修改的-被缓存的拷贝是有效的并且是“脏”的。它可以比在外部存储器中所存储的拷贝更加新近。该数据在所有其他代理中一定是无效的。
根据本发明的一个实施例,事务库可以忽略有可能使得系统破坏高速缓存一致性规则的某些事务。例如,诸如BRL0(具有零长度的总线读取线)的零数据长度事务、IO读取、和要求一致性支持的其他事务可以在实施例中被忽略。
图5说明根据本发明的一个实施例所构建的处理器400的实施例。处理器400可以包括总线定序单元410("BSU")和核心420。BSU410和核心420这二者都可以采用比与外部总线430相关联的速度高得多的速度来操作。外部总线430将处理器400与诸如其他处理器、存储器和其他器件(未示出)这样的其他部件互相连接起来。
BSU本身是已知的。它们可以包括仲裁器440、高速缓存器450、内部队列460和外部事务队列470。仲裁器440可以接收来自诸如核心420以及可能的其他源这样的各种输入的请求。请求可以包括表示正被生成的请求的类型的请求代码以及,只要合适的话,标识该请求所指向的存储单元的地址。
高速缓存450可以是内部存储器。如所周知,相对于核心高速缓存器(未示出),高速缓存450典型地具有大得多的容量。例如,典型高速缓存450可以是256的存储器。相对比而言,核心数据高速缓存可以是16K的存储器,并且核心指令高速缓存可以是16K的存储器。高速缓存450可以是统一的高速缓存,即一个用于存储指令数据和变量数据这二者(统称为"数据")的高速缓存。BSQ400也可以与较高级的高速缓存(未示出)相接口,该较高级的高速缓存的大小可以是3H或者更大。
来自仲裁器440的读取请求可以被输入到高速缓存450和内部队列460这二者。高速缓存450可以包括控制逻辑(未示出),该控制逻辑能够确定被请求的数据是否存储在高速缓存450之中。如果的确如此,则该请求就被认为"命中"高速缓存450。高速缓存450将通过通信路径(也未示出)将该被请求的数据提供到核心420。否则,该请求就被称为"未命中"该高速缓存。高速缓存450可通过线452将命中或者未命中传送到内部队列430。
内部队列460可以包括控制电路和缓冲存储器,以便处理来自仲裁器430的请求。内部队列460也接收来自高速缓存450的命中/未命中指示符。如果读取请求命中高速缓存450,则内部队列460可以允许该已排队的请求终止,因为它行进到队列460之外。但是如果读取请求未命中高速缓存450,则该请求就应该通过从外部存储器(未示出)检索该被请求的数据而完成。在这种情形下,当该读取请求行进到内部队列460之外时,内部队列460可以使该请求进入外部事务队列470中。
外部事务队列470也可以包括控制电路和缓冲存储器。它可以依据从该代理之中所发出的被排队的请求而使得外部总线事务被发送到外部总线430上。外部事务队列470可以通过外部总线控制器480控制总线430的操作。典型地,将为总线430规定总线协议,外部事务队列470和外部总线控制器480可以依照这种协议而生成和接收信号。
在一个可选的实施例中,内部队列460和外部事务队列470可以被单一的队列代替。因此,图5说明在单一的"事务队列"中所包括的内部队列460和外部事务队列470。本发明的原理在任一实施例中都可应用。在这一方面,BSQ 410的操作和结构是已知的。
根据一个实施例,验证FUB 490可以观察在BSQ 410之中所发送的数据请求,并且对其响应而生成干扰性事务。在一个实施例中,验证FUB490可以捕获由仲裁器440所输出的数据请求。验证FUB 490可以比较用于标识该请求类型和源的数据,以便确定是否要生成新的数据请求。如果要生成,则该新的数据请求就可以被输出到仲裁器440,以便进行独立的处理。
在这个实施例中,BSQ 410可以将该被捕获的数据请求和该新的数据请求这二者作为独立的事务而加以处理。指向相同地址的两个独立事务的处理可以在BSQ 410自身之中引起某些性能边界条件。当然,在边界条件下评估处理器的性能是应力测试的目标之一。
在另一个实施例中,用虚线表示,验证FUB 490还可以监视内部高速缓存450的命中/未命中输出。在这样的实施例中,不仅可以根据数据请求的请求类型而且还可以根据被请求的数据是否处于内部高速缓存450之中来为验证FUB 490规定触发条件。
如上所述,验证FUB 150(图1)可以响应在外部总线130(图1)上所观察到的触发总线事务来生成干扰性总线事务。在一个可选的实施例中,验证FUB 150可以在外部总线130上不存在新事务时生成干扰性总线事务。许多总线协议使用预定的信号来标识新事务的开始。在Pentium 处理器的总线协议中,ADS#信号的确立(assertion)指示新事务的开始。新事务可以在每个总线时钟周期期间被发送到总线上。在一个实施例中,验证FUB 150可以跟踪新事务没有被发送到该外部总线的情况下经过的连续周期的数目。如果该数目超过预定的阈值(例如2),则验证FUB 150可以自发地生成干扰性事务。该干扰性事务可以指向从外部总线事务所捕获的上个地址,它有可能已经被修改过(被增量或者被减量)。
如所指出的那样,验证FUB可以被提供在计算机系统的代理之中。验证FUB仅需要被提供在该系统的代理中那个能够对该系统进行应力测试的代理之中。图6说明根据本发明的一个实施例的示范性计算机系统500。计算机系统500可以包括多个代理510-560,每个代理被耦合到公共通信总线570。这些代理中的四个代理被展示为处理器510-540。其他代理包括系统存储器550和IO接口560。验证FUB 515被展示为是处理器之一510的构件,但是可选地,可以被提供在其他代理520-560中的一个或者多个之中。
图7说明根据本发明的一个实施例的另一个示范性计算机系统600。同样地,多个代理610-630被耦合到公共通信总线640。在这个例子中,只有一个代理610被展示为处理器。存储器控制器620和IO接口630也在图7中展示。在这个例子中,验证FUB 625被展示为存储器控制器的构件。可选地,该验证FUB可以是IO接口630的构件(未示出)。
在此具体地说明和描述了本发明的几个实施例。然而,应该理解的是,本发明的修改和变型是被上述的教导所涵盖的,并且处于所附权利要求的范围之内而不背离本发明的精神和预定的范围。

Claims (21)

1.一种对集成电路进行应力测试的方法,包括:
在外部总线上捕获第一外部总线事务,
如果在该外部总线上捕获的该第一外部总线事务的请求类型匹配于触发条件,则根据被包含在该第一外部总线事务中的地址生成一个寻址数据的数据请求,和
根据该数据请求在该外部总线上生成干扰性事务。
2.权利要求1的方法,其中第一外部总线事务和干扰性事务由相同的集成电路生成。
3.权利要求1的方法,其中该数据请求包括在第一外部总线事务中所包含的该地址。
4.权利要求1的方法,其中该第一外部总线事务中包含的该地址是在系统存储器中包含的第一高速缓存线地址,并且该数据请求包括与该系统存储器中的第一高速缓存线地址相邻的第二高速缓存线地址。
5.权利要求1的方法,其中该第一外部总线事务中包含的该地址是指向系统存储器中的高速缓存线的第一部分的地址,并且该数据请求包括指向该高速缓存线的第二部分的第二地址。
6.权利要求1的方法,其中该干扰性事务在第一外部总线事务在外部总线上结束之前开始。
7.一种对计算机系统进行应力测试的方法,包括:
在外部总线上的新事务没有开始的情况下,对所发生的外部总线周期的数目进行计数,
确定该数目是否满足预定的阈值,
如果是的话,在外部总线上生成一个干扰性事务。
8.权利要求7的方法,其中该干扰性事务包括来自前一个外部总线事务的、已经被修改为涉及相邻的高速缓存线的地址。
9.一种集成电路,包括:
一个耦合到数据请求管线的处理器核心,该处理器核心工作在第一时钟域,
该数据请求管线具有一个耦合到外部总线的外部总线接口,该外部总线工作在第二时钟域,其中第二时钟是与第一时钟不同的,和
一个具有耦合到该数据请求管线的外部总线接口的输入端的验证功能单元块,该验证功能单元块工作在第一时钟域,该验证功能单元块还包括:
一个被耦合到该外部总线接口的事务锁存器,和
一个被耦合到该事务锁存器并且具有被耦合到该数据请求管线的输出端的请求库,用于按照外部总线协议来存储事务请求类型。
10.权利要求9的集成电路,其中第一时钟比第二时钟快。
11.权利要求9的集成电路,还包括耦合到该事务锁存器和请求库的地址操作器。
12.一种集成电路,包括:
处理器核心,
被耦合到该处理器核心和外部总线的总线定序单元,该总线定序单元包括:
用于接收来自该处理器核心的第一数据请求的仲裁器,
用于存储数据的高速缓存,和
一个事务队列,它被耦合到该仲裁器和该高速缓存以便处理该第一数据请求,和
被耦合到该总线定序单元和该外部总线的验证功能单元块,该验证功能单元块接收来自该仲裁器的第一数据请求,以便如果该数据请求匹配触发条件,就生成第二数据请求,该验证功能单元块包括:
事务锁存器,它被耦合到该仲裁器;和
请求库,它被耦合到该事务锁存器并且具有被耦合到外部总线的输出端,该请求库用于按照外部总线协议来存储事务请求类型。
13.权利要求12的集成电路,其中该验证功能单元块的输出被耦合到该仲裁器。
14.权利要求13的集成电路,其中该仲裁器处理来自该处理器核心的第一数据请求和来自该验证功能单元块的输出的第二数据请求以作为独立的事务。
15.一种集成电路,包括:
处理器核心,
被耦合到该处理器核心和外部总线的总线定序单元,该总线定序单元还包括:
接收第一数据请求的仲裁器,
高速缓存,响应于该第一数据请求而输出命中/未命中信号,和
一个事务队列,它被耦合到该仲裁器和该高速缓存以便处理该第一数据请求,和
被耦合到该总线定序单元和该外部总线的验证功能单元块,该验证功能单元块接收来自高速缓存的命中/未命中信号,以便当该命中/未命中信号匹配触发条件时,生成第二数据请求,该验证功能单元块包括:
事务锁存器,它被耦合到该仲裁器;和
请求库,它被耦合到该事务锁存器并且具有被耦合到外部总线的输出端,该请求库用于按照外部总线协议来存储事务请求类型。
16.一种集成电路的诊断方法,包括:
检测在外部总线上第一外部总线事务的开始,
从外部总线读出第一外部总线事务的地址,和
响应于检测的第一外部总线事务,在外部总线上的第二外部总线事务中发出读请求,从外部总线上将读请求指向从第一外部总线事务中读出的地址。
17.权利要求16的方法,其中第二外部总线事务的开始在第一外部总线事务结束前发生。
18.权利要求16的方法,还包括发出多个被指向在外部总线上检测到的后继的外部总线事务的地址的读请求。
19.权利要求16的方法,其中第一和第二外部总线事务由同一个集成电路发出。
20.一种测试集成电路的方法,包括:
把请求类型存储在寄存器,
观察在外部总线上的外部总线事务,和
如果该观察的外部总线事务的各自的请求类型匹配于在寄存器中存储的请求类型,则在外部总线上生成数据请求。
21.权利要求20的方法,在外部总线上的该数据请求是一个干扰性总线事务。
CNB028075463A 2001-03-28 2002-01-25 集成电路及其测试和诊断方法和计算机系统用的测试方法 Expired - Fee Related CN100524242C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/818,788 US7032134B2 (en) 2001-03-28 2001-03-28 Microprocessor design support for computer system and platform validation
US09/818,788 2001-03-28

Publications (2)

Publication Number Publication Date
CN1500247A CN1500247A (zh) 2004-05-26
CN100524242C true CN100524242C (zh) 2009-08-05

Family

ID=25226412

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028075463A Expired - Fee Related CN100524242C (zh) 2001-03-28 2002-01-25 集成电路及其测试和诊断方法和计算机系统用的测试方法

Country Status (6)

Country Link
US (2) US7032134B2 (zh)
CN (1) CN100524242C (zh)
AU (1) AU2002240105A1 (zh)
GB (3) GB2409907B (zh)
TW (1) TW561337B (zh)
WO (1) WO2002079788A2 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078712A1 (en) * 2002-09-12 2004-04-22 Gurushankar Rajamani Method and apparatus for stressing data paths
FR2875026A1 (fr) * 2004-09-03 2006-03-10 St Microelectronics Sa Dispositif programmable d'interface de commande
GB2439968B (en) * 2006-07-07 2011-05-25 Advanced Risc Mach Ltd Memory testing
DE102006051444C5 (de) * 2006-10-31 2011-12-08 Softing Ag Diagnoseverfahren und -vorrichtung für ein Feldbussystem
US20090216493A1 (en) * 2008-02-27 2009-08-27 Underdal Olav M Hierarchy of diagnosis for advanced diagnostics equipment
US8478920B2 (en) * 2010-06-24 2013-07-02 International Business Machines Corporation Controlling data stream interruptions on a shared interface
CN103729259B (zh) * 2012-10-12 2017-02-01 安凯(广州)微电子技术有限公司 一种AHB总线读写burst相互打断的验证方法及装置
CN104317683A (zh) * 2014-09-26 2015-01-28 浪潮电子信息产业股份有限公司 一种测试内存功耗的方法
US10126362B2 (en) * 2014-12-15 2018-11-13 International Business Machines Corporation Controlling a test run on a device under test without controlling the test equipment testing the device under test
CN107341082A (zh) * 2017-07-21 2017-11-10 郑州云海信息技术有限公司 一种服务器系统下单体内存功耗测试设计方法
CN107992387A (zh) * 2017-11-30 2018-05-04 郑州云海信息技术有限公司 一种服务器系统下单体硬盘功耗测试方法
US11106788B2 (en) 2018-11-08 2021-08-31 Hewlett Packard Enterprise Development Lp Security for active data request streams

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5067071A (en) * 1985-02-27 1991-11-19 Encore Computer Corporation Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus
US4858234A (en) * 1987-09-04 1989-08-15 Digital Equipment Corporation Method and apparatus for error recovery in a multibus computer system
US5001712A (en) 1988-10-17 1991-03-19 Unisys Corporation Diagnostic error injection for a synchronous bus system
US5142673A (en) * 1989-12-22 1992-08-25 Bull Hn Information Systems Inc. Bus monitor with dual port memory for storing selectable trigger patterns
US5151981A (en) * 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
US5596715A (en) 1993-07-06 1997-01-21 Digital Equipment Corporation Method and apparatus for testing high speed busses using gray-code data
US5546546A (en) * 1994-05-20 1996-08-13 Intel Corporation Method and apparatus for maintaining transaction ordering and arbitrating in a bus bridge
US5594875A (en) * 1994-07-01 1997-01-14 Digital Equipment Corporation Method and apparatus to provide pended transaction on a non-pended system bus
US5701409A (en) 1995-02-22 1997-12-23 Adaptec, Inc. Error generation circuit for testing a digital bus
US6012118A (en) * 1996-12-30 2000-01-04 Intel Corporation Method and apparatus for performing bus operations in a computer system using deferred replies returned without using the address bus
US5966306A (en) * 1997-07-07 1999-10-12 Motorola Inc. Method for verifying protocol conformance of an electrical interface
US6618775B1 (en) * 1997-08-15 2003-09-09 Micron Technology, Inc. DSP bus monitoring apparatus and method
US6018807A (en) * 1997-09-25 2000-01-25 Micron Electronics, Inc. Simulation "bus contention" detection
US6134684A (en) 1998-02-25 2000-10-17 International Business Machines Corporation Method and system for error detection in test units utilizing pseudo-random data
US6269360B1 (en) * 1998-04-24 2001-07-31 International Business Machines Corporation Optimization of ordered stores on a pipelined bus via self-initiated retry
GB2338791B (en) 1998-06-22 2002-09-18 Advanced Risc Mach Ltd Apparatus and method for testing master logic units within a data processing apparatus
US6304984B1 (en) * 1998-09-29 2001-10-16 International Business Machines Corporation Method and system for injecting errors to a device within a computer system
US6516428B2 (en) * 1999-01-22 2003-02-04 Infineon Technologies Ag On-chip debug system
AUPQ005099A0 (en) * 1999-04-29 1999-05-20 Canon Kabushiki Kaisha Sequential bus architecture
US6480923B1 (en) * 1999-08-19 2002-11-12 International Business Machines Corporation Information routing for transfer buffers
US6609221B1 (en) * 1999-08-31 2003-08-19 Sun Microsystems, Inc. Method and apparatus for inducing bus saturation during operational testing of busses using a pattern generator
US6557069B1 (en) * 1999-11-12 2003-04-29 International Business Machines Corporation Processor-memory bus architecture for supporting multiple processors
US6748505B1 (en) * 2000-07-11 2004-06-08 Intel Corporation Efficient system bus architecture for memory and register transfers
US6760864B2 (en) * 2001-02-21 2004-07-06 Freescale Semiconductor, Inc. Data processing system with on-chip FIFO for storing debug information and method therefor

Also Published As

Publication number Publication date
US7032134B2 (en) 2006-04-18
AU2002240105A1 (en) 2002-10-15
GB2409907A (en) 2005-07-13
GB0506950D0 (en) 2005-05-11
US7487398B2 (en) 2009-02-03
WO2002079788A3 (en) 2004-02-12
CN1500247A (zh) 2004-05-26
GB0506951D0 (en) 2005-05-11
GB2409906B (en) 2005-09-21
GB2409907B (en) 2005-09-21
GB2409906A (en) 2005-07-13
GB2387917B (en) 2005-06-08
US20020144183A1 (en) 2002-10-03
TW561337B (en) 2003-11-11
GB0318622D0 (en) 2003-09-10
WO2002079788A2 (en) 2002-10-10
US20060107120A1 (en) 2006-05-18
GB2387917A (en) 2003-10-29

Similar Documents

Publication Publication Date Title
US7487398B2 (en) Microprocessor design support for computer system and platform validation
US6360337B1 (en) System and method to perform histogrammic counting for performance evaluation
US6542861B1 (en) Simulation environment cache model apparatus and method therefor
EP0582635B1 (en) Method for increasing the speed of data processing in a computer system
US6349394B1 (en) Performance monitoring in a NUMA computer
US8255591B2 (en) Method and system for managing cache injection in a multiprocessor system
JP2902976B2 (ja) キャッシュフラッシュ装置
EP0514024A2 (en) Method and apparatus for an improved memory architecture
US5671231A (en) Method and apparatus for performing cache snoop testing on a cache system
JPS58142458A (ja) 共通母線利用検出制御回路及び共通母線利用検出制御方法
US11445020B2 (en) Circuitry and method
US7076767B1 (en) Method for controlling and collecting information in a data processing system
US6499028B1 (en) Efficient identification of candidate pages and dynamic response in a NUMA computer
US10949292B1 (en) Memory interface having data signal path and tag signal path
US6950906B2 (en) System for and method of operating a cache
EP0380842A2 (en) Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
US7093052B2 (en) Bus sampling on one edge of a clock signal and driving on another edge
US5680577A (en) Method and system for processing multiple requests for data residing at the same memory address
CN100520737C (zh) 高速缓存系统、方法及计算机系统
US5793986A (en) Method and system for enhanced efficiency of data transfers from memory to multiple processors in a data processing system
US8108618B2 (en) Method and apparatus for maintaining memory data integrity in an information handling system using cache coherency protocols
WO2006090328A2 (en) Multiprocessor system, testing device and method for generating cache coherence testing traffic
US7421545B1 (en) Method and apparatus for multiple sequence access to single entry queue
US7085885B2 (en) Apparatus and method for early cache miss detection
JP3340047B2 (ja) マルチプロセッサシステムおよび複製タグの制御方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1066301

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1066301

Country of ref document: HK

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090805

Termination date: 20130125