CN106201793B - 半导体装置和诊断测试方法 - Google Patents

半导体装置和诊断测试方法 Download PDF

Info

Publication number
CN106201793B
CN106201793B CN201610365803.6A CN201610365803A CN106201793B CN 106201793 B CN106201793 B CN 106201793B CN 201610365803 A CN201610365803 A CN 201610365803A CN 106201793 B CN106201793 B CN 106201793B
Authority
CN
China
Prior art keywords
circuit
cpu
test
scan test
interrupt
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
Application number
CN201610365803.6A
Other languages
English (en)
Other versions
CN106201793A (zh
Inventor
芝原信一
川上大辅
井学丰
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of CN106201793A publication Critical patent/CN106201793A/zh
Application granted granted Critical
Publication of CN106201793B publication Critical patent/CN106201793B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • 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/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • 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
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31724Test controller, e.g. BIST state machine
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明涉及半导体装置和诊断测试方法。半导体装置包括存储电路、使用存储电路中存储的数据执行处理并且在执行处理时将数据写入存储电路中的处理电路、在处理电路不执行处理时对处理电路执行扫描测试的扫描测试电路以及在对处理电路执行扫描测试时禁止从处理电路到存储电路的数据写入的禁止电路。

Description

半导体装置和诊断测试方法
相关申请的交叉引用
本申请基于并且要求2015年5月27日提交的日本专利申请No.2015-107472的优先权的权益,该日本专利申请的公开通过引用完全并入本文。
技术领域本发明涉及半导体装置和诊断测试方法,例如涉及用于执行访问存储电路的处理电路的诊断测试。
背景技术
在支持功能安全的半导体装置中,需要用于按定期的间隔做出电路是否正确工作的诊断的机制。在要诊断的电路是小规模逻辑中的CPU(中央处理单元)的情况下,可以通过实现锁步诊断CPU是否正确地工作。锁步是将多个相同CPU安装在半导体装置上并且确定CPU中的全部是否以相同方式工作从而诊断电路是否正确工作的机制。因此,在要诊断的电路是大规模逻辑中的CPU的情况下,所安装的CPU的数量增大,这由于对电路区域的约束而引起不能实现锁步的问题。
除锁步以外,用于做出电路是否正确工作的诊断的另一个机制是通过软件的自测试。然而,通过软件的自测试的问题在于软件开发成本通常很高。因此,如在日本未经审查的专利公开No.2010-140219中公开的,采用BIST(内建自测试)作为用于做出电路是否正确工作的诊断的机制。
然而,在执行如BIST的扫描测试的情况下,存在测试目标处理电路访问的存储电路中存储的数据被覆写的问题。例如,在执行扫描测试之后,必须重置测试目标处理电路以再开始电路的操作,而在一些情况下处理电路由于该重置而初始化存储电路中存储的数据。此外,在一些情况下,当执行扫描测试时,完成例如从测试目标处理电路到存储电路的非预期数据写入。特别地,在存储电路是高速缓存(cache)存储器的情况下,如果数据被初始化,则当处理电路在执行扫描测试之后再开始处理时高速缓存错误频繁地发生,这可以引起性能退化。
发明内容
如上所述,存在当执行扫描测试时测试目标处理电路访问的存储电路中存储的数据被覆写的问题。
本发明的其它问题和新颖特性将通过说明书描述和附图而变得清晰。
根据一个实施例,半导体装置使用存储电路中存储的数据执行处理,而当对在执行处理时将数据写入存储电路中的处理电路执行扫描测试时,禁止从处理电路到存储电路的数据写入。
根据上面描述的实施例,即使在执行扫描测试时,也可以防止测试目标处理电路访问的存储电路中存储的数据的覆写。
附图说明
通过结合附图对一些实施例进行的下列描述,上述方面以及其它方面、优点和特征将更加清晰,在附图中:
图1是示出根据第一实施例的半导体装置的结构的框图;
图2是解释FTTI和DTI的视图;
图3是示出根据第一实施例的CPU集群的结构的框图;
图4是示出根据第一实施例的CPU集群的结构的框图;
图5是示出根据第一实施例的CPU上的运行时测试的执行序列的时序图;
图6是示出根据第一实施例的共用电路上的运行时测试的执行序列的时序图;
图7是示出在执行运行时测试期间根据第一实施例的CPU集群的操作的时序图;
图8是示出在执行运行时测试期间根据第一实施例的CPU的操作的时序图;
图9是示出在执行运行时测试期间根据第一实施例的CPU的操作的时序图;
图10是示出在执行运行时测试期间根据第一实施例的CPU的操作的时序图;
图11是示出在执行运行时测试期间根据第一实施例的共用电路的操作的时序图;
图12是示出根据第二实施例的半导体装置的结构的框图;
图13是示出根据第三实施例的半导体装置的结构的框图;
图14是示出根据第四实施例的半导体装置的结构的框图;
图15是示出根据第四实施例的运行时测试的分离的示例的视图;
图16是示出在执行运行时测试期间根据第四实施例的CPU集群的操作的时序图;
图17是示出在执行第一分离测试期间根据第四实施例的CPU的操作的时序图;
图18是示出在执行第二分离测试期间根据第四实施例的CPU的操作的时序图;
图19是示出在执行第一分离测试期间根据第四实施例的共用电路的操作的时序图;
图20是示出在执行第二分离测试期间根据第四实施例的共用电路的操作的时序图;
图21是示出根据第五实施例的半导体装置的结构的框图;
图22是示出根据第六实施例的半导体装置的结构的框图;
图23是示出根据第七实施例的半导体装置的结构的框图;
图24是示出根据第八实施例的半导体装置的结构的框图;
图25是示出在执行运行时测试期间根据第八实施例的GPU的操作的时序图;
图26是示出根据第九实施例的半导体装置的结构的框图;
图27是示出根据另一个实施例的半导体装置的结构的框图;
图28是示出根据实施例的半导体装置的示意性结构的框图;
具体实施方式
在下文中将参照附图对本发明的一个优选实施例进行描述。在下文中将参照附图对本发明的优选实施例进行描述。应当注意,仅仅为了例示性目的给出下列实施例中的特定数字值等等,并且除非特别指出,值并不限于此。此外,在下列描述和附图中,适当地省略、缩减和简化对本领域技术人员清晰的事物等等以阐明解释。
<第一实施例>
在下文中参照图1对根据第一实施例的半导体装置1的结构进行描述。如图1所示,半导体装置1包括CPU集群10、BIST控制器11、时钟控制器12、复位控制器13、中断控制器14、计时器15、DDR(双倍数据速率)控制器16、外部总线控制器17、复位屏蔽电路18、中断屏蔽电路19和内部存储器50。
CPU集群10、中断控制器14、DDR控制器16、外部总线控制器17和内部存储器50通过系统总线彼此连接。BIST控制器11、时钟控制器12、复位控制器13和计时器15通过局部总线彼此连接。此外,系统总线与局部总线连接。
CPU集群10是与其它电路11至17合作地执行如半导体装置1的处理的电路。CPU集群10包括多个CPU 100至103、多个BIST控制器110至113和共用电路120。
CPU 100至103中的每一个是分享由CPU集群10执行的处理的电路。CPU 100至103中的每一个通过使用DDR存储器20、存储器21和内部存储器50中存储的数据执行处理。所述数据包括程序,该程序包括使得CPU 100至103中的每一个执行处理的多个指令。此外,当执行处理时,CPU 100至103中的每一个更新DDR存储器20、存储器21和内部存储器50中存储的数据。
BIST控制器110至113中的每一个是根据来自BIST控制器11的控制执行CPU 100至103中的每一个的运行时测试的电路。BIST控制器110执行CPU 100的运行时测试,BIST控制器111执行CPU 101的运行时测试,BIST控制器112执行CPU 102的运行时测试以及BIST控制器113执行CPU 103的运行时测试。
共用电路120是当CPU集群10执行处理时CPU 100至103共同使用的电路。CPU 100至103中的每一个通过共用电路120接入通过系统总线与CPU集群10连接的中断控制器14、DDR控制器16、外部总线控制器17和内部存储器50。此外,CPU 100至103中的每一个通过共用电路120接入通过系统总线和局部总线与CPU集群10连接的BIST控制器11、时钟控制器12、复位控制器13和计时器15。
BIST控制器11是控制CPU集群10的运行时测试的执行的电路。更具体地,BIST控制器11通过BIST控制器110至113中的每一个控制CPU 100至103中的每一个的运行时测试的执行。因此,BIST控制器11充当主设备,以及BIST控制器110至113中的每一个充当从设备。
时钟控制器12是生成时钟信号并且将该信号供应至半导体装置1中包括的电路10、11、13至19和50的电路。
复位控制器13是使CPU集群10复位的电路。更具体地,复位控制器13使CPU 100至103和共用电路120中的每一个复位。当复位控制器13使CPU 100至103和共用电路120中的任何一个复位时,其向该电路输出复位信号。当从复位控制器13输入复位信号时,CPU 100至103和共用电路120中的每一个被复位。
中断控制器14是向CPU 100至103中的每一个通知从半导体装置1中的电路到CPU100至103的中断的发生以及来自外部设备的中断的发生的电路。更具体地,当从半导体装置1中的电路或者外部设备输入中断信号时,中断控制器14将中断信号输出至设置为中断信号目的地的CPU。
计时器15是测量所经过的时间并且通过中断通知CPU集群10执行运行时测试的定时的电路。更具体地,每当到达执行运行时测试的定时时,计时器15向中断控制器14输出中断信号。响应于中断信号,中断控制器14将中断信号输出至预先设置为要被通知中断的电路的CPU。
DDR控制器16与半导体装置1外部的DDR存储器20连接。DDR控制器16控制从半导体装置1中的电路到DDR存储器20的接入。例如,DDR控制器16响应于来自CPU集群10的数据读取请求从DDR存储器20读取数据,并将数据输出至CPU集群10。此外,例如,DDR控制器16响应于来自CPU集群10的数据写入请求将从CPU集群10输出的数据写入至DDR存储器20。
外部总线控制器17与半导体装置1外部的存储器21连接。外部总线控制器17控制从半导体装置1中的电路到存储器21的接入。例如,外部总线控制器17响应于来自CPU集群10的数据读取请求从存储器21读取数据,并且将数据输出至CPU集群10。此外,例如,DDR控制器16响应于来自CPU集群10的数据写入请求将从CPU集群10输出的数据写入至存储器21。
复位屏蔽电路18是禁止由复位控制器13对CPU 100至103和共用电路120中的每一个进行复位的电路。可以对复位屏蔽电路18任意地设置是否要对CPU 100至103和共用电路120中的每一个禁止复位。可以通过对复位控制器13中包括的控制寄存器(未示出)设置指示是否禁止复位的值来进行该设置。此外,可以通过CPU 100至103中的每一个在任意定时改变该设置。复位屏蔽电路18屏蔽(阻挡)从复位控制器13到作为CPU 100至103和共用电路120中的已经设置复位禁止的电路的复位信号,并且从而禁止该电路复位。
中断屏蔽电路19是禁止从中断控制器14对CPU 100至103中的每一个的中断的电路。可以对中断屏蔽电路19任意地设置是否要对CPU 100至103中的每一个禁止中断。可以通过对时钟控制器12中包括的控制寄存器(未示出)设置指示是否禁止中断的值以进行该设置。此外,可以通过CPU 100至103中的每一个在任意定时改变该设置。中断屏蔽电路19屏蔽(阻挡)从中断控制器14到CPU 100至103中的已经设置中断禁止的CPU的中断信号,并且从而禁止该CPU的中断。
DDR存储器20、存储器21和内部存储器50存储各种数据。DDR存储器20、存储器21和内部存储器50存储要被例如如上所述各CPU 100至103使用和更新的数据。
在下文中参照图2对根据第一实施例执行运行时测试的定时进行描述。在ISO26262标准中,定义:为了确保称为容错时间间隔(FTTI)的时间间隔(从故障发生恢复所需要的时间),须在称为诊断测试间隔(DTI)的时间间隔处实施诊断。
因此,CPU集群10设置计时器15以便在启动半导体装置1之后在每个DTI处通知运行时测试的执行定时。具体地,CPU集群10设置计时器15以便在每个DTI处输出中断信号。更具体地,通过CPU 100至103中的任何一个进行该设置。例如,可以预先确定设置计时器15的CPU。注意,可以由系统开发人员将FTTI和DTI设置为任意值。
在下文中参照图3和图4对根据第一实施例的CPU集群10的详细结构进行描述。如图3所示,CPU 100包括L1高速缓存控制器114、高速缓存存储器115和分支历史存储器(分支历史表)116。注意,在图3中,仅示出了CPU 100至103当中的CPU 100的结构。由于CPU 101至103的结构与CPU 100的结构相同,因此省略了它们的图示和解释。
L1高速缓存控制器114是控制用于CPU 100的存储器21中的数据读取和写入并且管理L1高速缓存存储器115的电路。当CPU 100要从存储器21读取以便在处理中使用的数据存储在L1高速缓存存储器115中时,L1高速缓存控制器114从L1高速缓存存储器115获取该数据。
另一方面,当CPU 100要从存储器21读取的数据没有存储在L1高速缓存存储器115中时,L1高速缓存控制器114请求共用电路120读取数据,并且从而从共用电路120的L2高速缓存存储器124、其它CPU 101至103的L1高速缓存存储器115或者存储器21获取数据。更具体地,L1高速缓存控制器114向共用电路120输出请求从存储器21读取数据的读取请求信号。响应于读取请求信号,共用电路120获取被请求从L2高速缓存存储器124、其它CPU 101至103的L1高速缓存存储器115或者存储器21读取的数据,并且向CPU 100输出包括该数据的读取响应信号。L1高速缓存控制器114将来自共用电路120的读取响应信号中包括的数据存储到L1高速缓存存储器115中。此外,CPU 100使用该数据执行处理。
在CPU 100将数据写入存储器21中的情况下,L1高速缓存控制器114将数据存储到L1高速缓存存储器115中。在任意定时将数据从L1高速缓存存储器115冲刷到存储器21。更具体地,L1高速缓存控制器114向共用电路120输出请求将数据写入存储器21中的写入请求信号。写入请求信号包括被请求写入存储器21中的数据。响应于写入请求信号,共用电路120执行用于存储被请求写入L2高速缓存存储器124和存储器21中的数据的控制。
L1高速缓存存储器115是对要存储在存储器21中的数据进行临时高速缓存的存储电路。
分支历史存储器116存储这样的信息,该信息指示关于是否已经根据过去在由CPU100执行的程序中执行的分支指令执行了分支的历史。具体地,当执行分支指令时,CPU 100将分支指令的历史存储到分支历史存储器116中。例如,该历史指示分支指令的地址以及是否根据分支指令完成分支。在预测一个分支指令的分支目标的情况下,CPU 100基于指示与分支历史存储器116中存储的历史当中的一个分支指令相同的地址的分支指令的历史预测分支目标。
此外,如图3所示,共用电路120包括BIST控制器121、初始化屏蔽电路122、L2高速缓存控制器123、L2高速缓存存储器124、监听(snoop)控制单元(SCU)125、SCU标签RAM(随机存取存储器)126和访问历史存储器127。
BIST控制器121是根据来自BIST控制器11的控制执行共用电路120的运行时测试的电路。BIST控制器121正如BIST控制器110至113一样充当从设备。
初始化屏蔽电路122是在执行共用电路120的运行时测试时禁止对L2高速缓存存储器124和SCU标签RAM 126写入数据的电路。
L2高速缓存控制器123是控制CPU 100对存储器21的数据读取和写入并且管理L2高速缓存存储器124的电路。如之后描述的,当从CPU 100请求对存储器21读取数据时,L2高速缓存控制器123试图通过监听控制单元125从其它CPU 101至103的L1高速缓存存储器115获取数据。当不能通过监听控制单元125获取数据时,L2高速缓存控制器123从L2高速缓存存储器124获取数据。
另一方面,当不能从L2高速缓存存储器124和监听控制单元125中的任何一个获取从CPU 100请求读取的数据时,高速缓存控制器123请求外部总线控制器17读取该数据并从而从存储器21获取该数据。具体地说,L2高速缓存控制器123通过系统总线向外部总线控制器17输出请求从存储器21读取数据的读取请求信号。响应于读取请求信号,外部总线控制器17通过系统总线向共用电路120输出包括从存储器21获取的该数据的读取响应信号。L2高速缓存控制器123获取读取响应信号中所包括的该数据。
L2高速缓存控制器123向已经提出请求的CPU 100输出从L2高速缓存存储器124、存储器21或者监听控制单元125获取的数据。更具体地,L2高速缓存控制器123向已经提出请求的CPU 100输出包括所获取的数据的读取响应信号。
当从CPU 100请求向存储器21写入数据时,L2高速缓存控制器123将数据存储到L2高速缓存存储器124中。在任意定时将数据从L2高速缓存存储器124冲刷到存储器21。更具体地,L2高速缓存控制器123通过系统总线向外部总线控制器17输出请求将数据写入存储器21中的写入请求信号。响应于写入请求信号,外部总线控制器17将写入请求信号中包括的数据存储到存储器21中。
如上所述,L2高速缓存存储器124是把要存储在存储器21中的数据临时高速缓存在其中的存储电路。L2高速缓存存储器124是比L1高速缓存存储器115层级低的存储器。
监听控制单元125通过监听控制所述多个CPU 100至103之间L1高速缓存存储器115的高速缓存一致性(cache consistency)。
监听控制单元125确定从CPU 100请求读取的数据是否存储在除了已经请求该读取的CPU 100以外的CPU 101至103中的任何一个的L1高速缓存存储器115中。当监听控制单元125确定该数据存储在除了已经请求该读取的CPU 100以外的CPU 101至103中的任何一个的L1高速缓存存储器115中时,该监听控制单元125向该CPU请求该数据。更具体地,监听控制单元125向包括该L1高速缓存存储器115的CPU输出请求该数据的监听请求信号。响应于监听请求信号,该CPU的L1高速缓存控制器114从L1高速缓存存储器115获取由监听请求信号请求的数据,并向共用电路120输出包括该数据的监听响应信号。监听控制单元125获取监听响应信号中包括的该数据。
此外,监听控制单元125确定从CPU 100请求写入的数据是否存储在除了已经请求该写入的CPU 100以外的CPU 101至103中的任何一个的L1高速缓存存储器115中。当监听控制单元125确定数据存储在除了已经请求写入的CPU 100以外的CPU 101至103中的任何一个的L1高速缓存存储器115中时,该监听控制单元125向该CPU请求使该数据无效(invalidation)。更具体地,监听控制单元125向包括该L1高速缓存存储器115的CPU输出请求使数据无效的监听请求信号。响应于监听请求信号,该CPU的L1高速缓存控制器114使L1高速缓存存储器115中的被监听控制信号请求无效的数据无效。该数据由此被从L1高速缓存存储器115删除并且被看作在L1高速缓存存储器115中不存在。
SCU标签RAM 126是存储这样的信息的存储电路,该信息指示存储器21中的哪个地址与CPU 100至103的L1高速缓存存储器115中存储的各数据相对应。
基于SCU标签RAM 126中存储的信息,监听控制单元125确定除了已经请求读取或者写入的CPU 100以外的CPU 101至103中的哪个CPU具有存储上述的被请求读取或者写入的数据的L1高速缓存存储器115。具体地,读取请求信号包括要在存储器21中读取的数据的地址,以及写入请求信号包括要在存储器21中写入数据的地址。监听控制单元125确定存储在除了已经请求读取或者写入的CPU 100以外的CPU 101至103中的任何一个的L1高速缓存存储器115中的数据的地址中的任何一个是否与读取请求信号或者写入请求信号中包括的地址匹配。当地址匹配时,对存储在除了已经请求读取或者写入的CPU 100以外的CPU 101至103中的任何一个中的L1高速缓存存储器115中的数据提出上面描述的数据请求或者无效请求。
因此,当数据存储到L1高速缓存存储器115中时,CPU 100至103中的每一个的L1高速缓存控制器114向共用电路120通知存储器21中该数据的地址。响应于来自CPU 100至103中的每一个的L1高速缓存控制器114的地址通知,共用电路120的监听控制单元125更新SCU标签RAM 126以便指示所通知的地址的数据存储在发送通知的CPU的L1高速缓存存储器115中。此外,当所通知的地址的数据存储在L2高速缓存存储器124中时,由于该数据不再是最新数据,因此共用电路120的L2高速缓存控制器123使该数据无效。
访问历史存储器127存储指示对L2高速缓存存储器124中的高速缓存行的访问历史的信息。注意,访问历史指示在将数据写入L2高速缓存存储器124中时用于确定要再填充(覆写)的高速缓存行的内容。例如,在采用LRU(最不近使用(least recently used))作为高速缓存算法的情况下,访问历史指示与由相同索引地址指定的多路分别相对应的多个高速缓存行当中最早访问的高速缓存行。此外,例如,在采用LFU(最不频繁使用)作为高速缓存算法的情况下,访问历史指示对与由相同索引地址指定的多路分别相对应的多个高速缓存行中的每一个中的数据的访问频率。响应于对L2高速缓存存储器124的访问,L2高速缓存控制器123更新访问历史存储器127中存储的信息。此外,在将数据写入L2高速缓存存储器124中时,L2高速缓存控制器123基于访问历史存储器127中存储的信息确定要再填充(覆写)的高速缓存行。
此外,如图3所示,CPU集群10包括封装器电路130。封装器电路130包括多个屏蔽电路131至134。注意,在图3中,仅示出了CPU 100至103当中的CPU 100的封装器电路130。由于还以与CPU 100中相同的方式为CPU 101至103放置了封装器电路130,因此省略了它们的图示和解释。
屏蔽电路131是屏蔽(阻挡)从中断控制器14输入到CPU 100的中断信号的电路。
屏蔽电路132是屏蔽(阻挡)从CPU 100输出到时钟控制器12和复位控制器13的信号的电路。该信号的示例是请求时钟控制器12通过转变至低功率模式停止时钟信号供应的信号。
屏蔽电路133是屏蔽(阻挡)从CPU 100输入到共用电路120的信号的电路。该信号的示例是读取请求信号、写入请求信号和监听响应信号。
屏蔽电路134是屏蔽(阻挡)从共用电路120输出到CPU 100的信号的电路。该信号的示例是读取响应信号、写入响应信号和监听请求信号。
屏蔽电路131和134旨在通过固定输入到CPU 100的值和限定CPU 100的扫描测试中的期望的值以便于创建测试图案。屏蔽电路132和133旨在通过禁止从CPU 100向另一个电路输出不期望的信号来防止系统的正常操作受到阻碍。
可以对屏蔽电路131至134任意设置屏蔽电路131至134是否屏蔽(阻挡)信号。可以通过对屏蔽电路131至134中的每一个或者时钟控制器12中包括的控制寄存器(未示出)设置指示是否屏蔽信号的值以进行该设置。此外,可以通过BIST控制器110在任意定时改变该设置。因此,通过BIST控制器111改变CPU 101中的屏蔽电路131至134的设置,通过BIST控制器112改变CPU 102中的屏蔽电路131至134的设置,以及通过BIST控制器113改变CPU 103中的屏蔽电路131至134的设置。激活CPU 100至103中的每一个的屏蔽电路131至134的操作,以在执行CPU 100至103中的运行时测试时屏蔽信号。
此外,如图4所示,初始化屏蔽电路122包括初始化屏蔽电路122a至122c。
初始化屏蔽电路122a是这样的电路,其禁止L2高速缓存控制器123将初始值写入L2高速缓存存储器124中并从而使L2高速缓存存储器124初始化的处理,以及禁止监听控制单元125将初始值写入SCU标签RAM 126中并从而使SCU标签RAM 126初始化的处理。更具体地,初始化屏蔽电路122a向L2高速缓存控制器123和监听控制单元125中的每一个输出指示禁止初始化的指令信号。当在共用电路120复位时输入该指令信号时,L2高速缓存控制器123和监听控制单元125中的每一个制止对L2高速缓存存储器124和SCU标签RAM 126中的每一个写入用于初始化的数据,在取消共用电路120的复位时执行对L2高速缓存存储器124和SCU标签RAM 126中的每一个写入用于初始化的数据。初始化屏蔽电路122a激活其操作以便在执行共用电路120的运行时测试之后的复位时禁止L2高速缓存存储器124和SCU标签RAM126的初始化。
注意,当CPU集群10从省电模式(部分断电模式)返回时,为了(1)调试或者(2)数据存储的目的,通常由L2高速缓存控制器123和监听控制单元125使用改变关于是否根据指令执行用于初始化的写入的操作的功能。更具体地,在(1)中,该功能用于在CPU集群10异常停止之后使CPU集群10复位并且重新启动时留下用于调试的数据的目的。此外,在(2)中,该功能用于在复位和从节能模式返回时接管数据以继续处理的目的,在节能模式中,CPU集群10中的CPU 100至103中的全部已经进入睡眠模式并且CPU 100至103、监听控制单元125和L2高速缓存控制器123掉电(power down)。在第一实施例中,还在执行运行时测试中使用该功能,从而在执行运行时测试时实现与接管L2高速缓存存储器124和SCU标签RAM 126的数据相关的逻辑设计成本的降低。
初始化屏蔽电路122b是禁止从L2高速缓存控制器123写入L2高速缓存存储器124的电路。更具体地,初始化屏蔽电路122b屏蔽(阻挡)从L2高速缓存控制器123输出到L2高速缓存存储器124以用于数据写入的信号。初始化屏蔽电路122b激活其操作以便在执行共用电路120的运行时测试时禁止对L2高速缓存存储器124的数据写入。
初始化屏蔽电路122c是禁止从监听控制单元125写入SCU标签RAM 126的电路。更具体地,初始化屏蔽电路122c屏蔽(阻挡)从监听控制单元125输出到SCU标签RAM 126以用于数据写入的信号。初始化屏蔽电路122c激活其操作以便在执行共用电路120的运行时测试时禁止对SCU标签RAM 126的数据写入。
可以对初始化屏蔽电路122a至122c任意地设置初始化屏蔽电路122a至122c是否禁止初始化或者写入。通过对初始化屏蔽电路122a至122c中的每一个或者时钟控制器12中包括的控制寄存器(未示出)设置指示是否禁止初始化或者写入的值以进行该设置。此外,可以在任意定时由控制共用电路120的运行时测试的执行的CPU 100至103中的一个改变该设置。
此外,如图4所示,共用电路120包括封装器电路140。封装器电路140包括多个屏蔽电路141至150。
屏蔽电路141、143、145和147中的每一个是屏蔽(阻挡)从CPU 100至103中的每一个输入到共用电路120的信号。该信号的示例是读取请求信号、写入请求信号和监听响应信号。
屏蔽电路142、144、146和148中的每一个是屏蔽(阻挡)从共用电路120输出到CPU100至103中的每一个的信号。该信号的示例是读取响应信号、写入响应信号和监听请求信号。
屏蔽电路149是屏蔽(阻挡)从共用电路120输出到系统总线的信号的电路。该信号的示例是读取请求信号和写入请求信号。
屏蔽电路150是屏蔽(阻挡)从系统总线输入到共用电路120的信号的电路。该信号的示例是读取响应信号和写入响应信号。
屏蔽电路141、143、145、147和150旨在通过固定输入到共用电路120的值和限定共用电路120的扫描测试中的预期值来便于创建测试图案。屏蔽电路142、144、146、148和149旨在通过禁止从共用电路120向另一个电路输出非期望信号来防止系统的正常操作受到阻碍。
可以对屏蔽电路141至150任意设置屏蔽电路141至150是否屏蔽(阻挡)信号。可以通过对屏蔽电路141至150中的每一个或者时钟控制器12中包括的控制寄存器(未示出)设置指示是否屏蔽信号的值以进行该设置。此外,可以通过BIST控制器121在任意定时改变该设置。屏蔽电路141至150激活它们的操作以便在执行共用电路120的运行时测试时屏蔽信号。
注意,尽管上面作为示例描述了将存储器21的数据高速缓存在L1高速缓存存储器115和L2高速缓存存储器124中的情况,但是DDR存储器20的数据也可以由相同控制进行高速缓存。这同样适用于下列描述。
在下文中参照图5对根据第一实施例的CPU 100至103上的运行时测试的执行程序进行描述。尽管下面对CPU 100中的过程进行描述,但是CPU 101至103中的过程以相同方式执行。
CPU 100响应于充当用于启动运行时测试的触发的中断的通知,启动用于执行其本身的运行时测试的控制。首先,CPU 100通过系统总线对BIST控制器11的控制寄存器(未示出)设置测试条件(S1)。该测试条件的设置包括测试目标设置。更具体地,CPU 100将其本身设置为BIST控制器11的测试目标。
CPU 100通过系统总线对BIST控制器11指示运行时测试的激活(S2)。响应于该指令,BIST控制器11等待设置为测试目标的CPU 100转变至睡眠模式。
CPU 100将其本身寄存器中存储的数据保存(写入)到DDR存储器20、存储器21和内部存储器50中(S3)。此外,CPU 100将L1高速缓存存储器115中的数据冲刷(フラッシュ)至存储器21。具体地,CPU 100的L1高速缓存存储器115中存储的最新数据被反映在较低层级中的L2高速缓存存储器124和存储器21上。因此,即使CPU 100的L1高速缓存存储器115中的数据由于执行CPU 100的运行时测试而被删除,也可以防止在运行时测试之后在要在CPU 100至103中执行的处理中出现不一致。CPU 100设置中断屏蔽电路19以便屏蔽从中断控制器14到其本身的中断信号(S4)。随后,CPU 100通过WFI(Wait For Interrupt,等待中断)指令(睡眠指令)转变至睡眠模式(S5)。由WFI指令引起的睡眠模式是响应于中断通知醒来的睡眠模式。注意,存在当在通过WFI转变至睡眠模式期间接收到中断时CPU 100停止转变至睡眠模式的问题。为了防止该问题,屏蔽到CPU 100的中断信号。在转变至睡眠模式之后,CPU100向BIST控制器11输出通知CPU 100处于睡眠模式中的状态信号。
当从设置为测试目标的CPU 100输出通知CPU 100处在睡眠模式中的状态信号时,BIST控制器11指示BIST控制器110启动CPU 100的运行时测试。响应于来自BIST控制器11的指令,BIST控制器110启动CPU 100的运行时测试。首先,BIST控制器110进行设置以使得CPU100中的封装器电路130的屏蔽电路131至134屏蔽信号(S6)。这防止非期望信号传输至与作为测试目标的CPU 100连接的另一个电路,以及防止非期望信号从另一个电路传输到作为测试目标的CPU 100。
BIST控制器110执行CPU 100的运行时测试(S7)。更具体地,BIST控制器110对CPU100的逻辑电路执行扫描测试(LBIST,逻辑BIST)并对CPU 100的存储电路(例如,分支历史存储器116)执行MBIST(存储器BIST)。
具体地,BIST控制器110顺序地创建测试图案,并且将它们扫描到CPU 100的逻辑电路的扫描链中。此外,BIST控制器110从CPU 100的逻辑电路的扫描链顺序地扫描出并获取执行结果数据。BIST控制器110压缩所获取的执行结果数据并且生成BIST执行结果。BIST控制器110将所生成的BIST执行结果与根据测试图案生成的期望值进行比较。当所比较的值匹配时,BIST控制器110确定CPU 100的逻辑电路正常,以及当所比较的值不匹配时,BIST控制器110确定CPU 100的逻辑电路故障。
此外,BIST控制器110顺序地创建测试图案,并且将它们写入到CPU 100的存储电路中。BIST控制器110从CPU 100的存储电路读取所写入的测试图案。BIST控制器110将写入之前的测试图案(用于写入)与所读取的测试图案进行比较。当所比较的值匹配时,BIST控制器110确定CPU 100的存储电路正常,以及当所比较的值不匹配时,BIST控制器110确定CPU 100的存储电路故障。注意,没有对具有自身检测错误的机制(例如,EEC(错误检查和校正))的存储电路(例如,L1高速缓存存储器115)进行MBIST。
当BIST控制器110确定CPU 100的所有逻辑电路和存储电路都正常时,它将指示CPU 100正常的运行时测试结果值存储至BIST控制器11的结果寄存器。另一方面,当BIST控制器110确定CPU 100的逻辑电路和存储电路中的任何一个故障时,它将指示CPU 100故障的运行时测试结果值存储至BIST控制器11的结果寄存器。
在执行CPU 100的运行时测试之后,BIST控制器110进行设置以使得CPU 100中的封装器电路130的屏蔽电路131至134取消信号屏蔽(S8)。BIST控制器110向BIST控制器11通知CPU 100的运行时测试的执行结束。响应于来自BIST控制器110的通知,BIST控制器11将请求复位作为测试目标的CPU 100的请求信号输出至复位控制器13(S9)。响应于来自BIST控制器11的请求信号,复位控制器13将复位信号输出至针对其请求信号请求复位的CPU100。从而使CPU 100复位。
在通过复位进行引导时,CPU 100检查其本身复位的原因(S10)。更具体地,CPU100通过系统总线通过参照BIST控制器11中包括的控制寄存器来检查在执行运行时测试之后是否通过复位对其进行引导。具体地,当执行CPU 100的运行时测试时,BIST控制器11将指示CPU 100的运行时测试的执行的数据存储在控制寄存器中。在由CPU 100检查指示CPU100的运行时测试的执行的数据之后,由CPU 100从控制寄存器删除该数据。
当CPU 100识别在执行运行时测试之后通过复位引导CPU 100时,CPU 100在引导时在处理中通过系统总线获取已经存储到BIST控制器11中的结果寄存器中的运行时测试结果值(S11),并从而结束运行时测试(S12)。
当运行时测试结果值指示CPU 100正常时,CPU 100将上面步骤S3中保存的数据恢复到CPU 100的寄存器(S13)。CPU 100设置中断屏蔽电路19以便取消对从中断控制器14对其本身的中断信号的屏蔽(S14)。随后,CPU 100再开始执行在执行运行时测试前已经执行的程序。
另一方面,当运行时测试结果值指示CPU 100故障时,CPU 100执行与该故障相对应的防故障例程。作为防故障例程,可以执行关闭半导体装置1中的整个系统的处理,或者可以在不使用CPU 100的情况下使用其它CPU 101至103继续半导体装置1中的系统操作。
注意,当在执行运行时测试之后没有通过复位引导CPU 100时(在正常复位之后对其进行引导),CPU 100执行在正常复位之后的引导时的处理,并且不执行获取运行时测试结果值的处理和根据该值的处理。
在下文中参照图6对根据第一实施例的对共用电路120的运行时测试的执行过程进行描述。尽管下面描述了CPU 100控制共用电路120上的运行时测试的执行的过程,但是除了CPU 100以外,CPU 101至103中的任何一个也可以控制共用电路120上的运行时测试的执行。
CPU 100在执行其本身的运行时测试之后启动执行对共用电路120的运行时测试的控制。首先,CPU 100向与其本身共享共用电路120的其它CPU 101至103中的每一个通知CPU中断(S21)。响应于CPU中断的通知,其它CPU 101至103中的每一个通过WFI指令转变至睡眠模式。
CPU 100通过系统总线对BIST控制器11的控制寄存器设置测试条件(S22)。该测试条件的设置包括如上所述的测试目标的设置。更具体地,CPU 100将共用电路120设置为BIST控制器11的测试目标。
CPU 100通过系统总线对BIST控制器11指示运行时测试的激活(S23)。响应于指令,BIST控制器11等待所有CPU 100至CPU 103转变至睡眠模式。
CPU 100将共用电路120中包括的寄存器中存储的数据保存(写入)到DDR存储器20、存储器21和内部存储器50中(S24)。CPU 100设置中断屏蔽电路19以便屏蔽从中断控制器14到其它CPU 101至103的中断信号。CPU 100通过系统总线设置中断控制器14以便仅对于来自BIST控制器11的中断向CPU 100输出中断信号。具体地,CPU 100设置中断控制器14以免对于来自除了BIST控制器11以外的电路的中断输出中断信号。此外,CPU 100设置复位屏蔽电路18以便屏蔽从复位控制器13到使用共用电路120的所有CPU 100至103的复位信号(S25)。随后,CPU 100通过WFI指令转变至睡眠模式(S26)。在转变至睡眠模式之后,CPU 100至103中的每一个向BIST控制器11输出通知CPU 100处在睡眠模式的状态信号。
当从使用共用电路120的所有CPU 100至103输出通知其处在睡眠模式的状态信号时,BIST控制器11指示BIST控制器121启动共用电路120的运行时测试。响应于来自BIST控制器11的该指令,BIST控制器121启动共用电路120的运行时测试。首先,BIST控制器121进行设置使得共用电路120中的封装器电路140的屏蔽电路141至150屏蔽信号(S27)。这防止非期望信号传输至与作为测试目标的共用电路120连接的另一个电路,以及防止非期望信号从另一个电路传输到作为测试目标的共用电路120。
BIST控制器121执行共用电路120的运行时测试(S28)。更具体地,BIST控制器121对共用电路120的逻辑电路执行扫描测试(LBIST,逻辑BIST),并对共用电路120的存储电路(例如,访问历史存储器127)执行MBIST(存储器BIST)。
具体地,BIST控制器121顺序地创建测试图案,并且将它们扫描到共用电路120的逻辑电路的扫描链中。此外,BIST控制器121从共用电路120的逻辑电路的扫描链顺序地扫描出并获取执行结果数据。BIST控制器121压缩所获取的执行结果数据并生成BIST执行结果。BIST控制器121将所生成的BIST执行结果与根据测试图案生成的期望值进行比较。当所比较的值匹配时,BIST控制器121确定共用电路120的逻辑电路正常,以及当所比较的值不匹配时,BIST控制器121确定共用电路120的逻辑电路故障。
此外,BIST控制器121顺序地创建测试图案并将它们写入到共用电路120的存储电路中。BIST控制器121从共用电路120的存储电路读取所写入的测试图案。BIST控制器121将写入之前的测试图案(用于写入)与所读取的测试图案进行比较。当所比较的值匹配时,BIST控制器121确定共用电路120的存储电路正常,以及当所比较的值不匹配时,BIST控制器121确定共用电路120的存储电路故障。注意,没有对具有自身检测错误的机制(例如,EEC)的存储电路(例如,L2高速缓存存储器124和SCU标签RAM 126)进行MBIST。
当BIST控制器121确定共用电路120的所有逻辑电路和存储电路都正常时,它将指示共用电路120正常的运行时测试结果值存储至BIST控制器11的结果寄存器。另一方面,当BIST控制器121确定共用电路120的逻辑电路和存储电路中的任何一个故障时,它将指示共用电路120故障的运行时测试结果值存储至BIST控制器11的结果寄存器。
在执行共用电路120的运行时测试之后,BIST控制器121进行设置使得共用电路120中的封装器电路140的屏蔽电路141至150取消信号屏蔽(S29)。BIST控制器121向BIST控制器11通知共用电路120的运行时测试的执行结束。响应于来自BIST控制器121的通知,BIST控制器11将请求复位作为测试目标的共用电路120的请求信号输出至复位控制器13(S30)。响应于来自BIST控制器11的请求信号,复位控制器13将复位信号输出至请求信号请求对其复位的共用电路120。从而使共用电路120复位。
复位控制器13通常设计为:当使共用电路120复位时,使共享共用电路120的CPU100至103复位。另一方面,如上所述,在步骤S25中将复位屏蔽电路18设定为对CPU 100至103屏蔽复位信号。从而禁止CPU 100至103的复位,以及CPU 100至103可以在共用电路120的运行时测试结束之后继续它们的操作。
此外,响应于来自BIST控制器121的通知,BIST控制器11向中断控制器14输出中断信号。响应于来自BIST控制器11的中断信号,中断控制器14向CPU 100输出中断信号。响应于来自中断控制器14的中断信号,CPU 100从睡眠模式醒来(S31),获取BIST控制器11中包括的结果寄存器中存储的运行时测试结果值(S32),以及然后结束运行时测试(S33)。
当运行时测试结果值指示共用电路120正常时,共用电路120将上面步骤S24中保存的数据恢复到共用电路120的寄存器(S34)。CPU 100设置中断屏蔽电路19以便取消对从中断控制器14到其它CPU 101至103的中断信号的屏蔽。此外,CPU 100通过系统总线设置中断控制器14以便对于来自除了BIST控制器11以外的电路的中断也再开始向CPU 100输出中断信号。此外,CPU 100设置复位屏蔽电路18以便取消对从复位控制器13到使用共用电路120的所有CPU 100至103的复位信号的屏蔽(S35)。
CPU 100向与其本身共享共用电路120的其它CPU 101至103中的每一个通知CPU中断(S36)。随后,CPU 100再开始执行在执行运行时测试前已经执行的过程。此外,CPU 101至103中的每一个响应于来自CPU 100的CPU中断从睡眠模式醒来,并再开始在执行运行时测试之前已经执行的过程的执行。
另一方面,当运行时测试结果值指示共用电路120故障时,CPU 100执行与该故障相对应的防故障例程。作为防故障例程,可以执行关闭半导体装置1中的整个系统的处理。
CPU 100至103通过WFI指令到睡眠模式的转变用于将仿真器连接至半导体装置1以用于调试。在第一实施例中,如之前描述的,还在执行运行时测试中使用通过WFI指令到睡眠模式的转变,从而降低设计成本,并实现在执行运行时测试期间防止CPU 100至103的操作以及操作的再开始。
在下文中参照图7对在执行运行时测试期间根据第一实施例的CPU集群10的操作进行描述。
如图7所示,通过DTI中的时间分享执行CPU集群10中的所有电路(CPU 100至103和共用电路120)上的运行时测试以使整个系统性能的退化最小化。如之前描述的,由来自计时器15的中断进行DTI的通知。
响应于来自计时器15的中断,CPU 103悬置其处理,并根据图5所示过程执行其本身的运行时测试。在此时,其它CPU 100至102中的每一个继续执行它们的处理。在运行时测试的执行结束之后,CPU 103再开始其处理并向CPU 102通知CPU中断。
响应于来自CPU 103的CPU中断,CPU 102悬置其处理,并根据图5所示过程执行其本身的运行时测试。在此时,其它CPU 100至101和103中的每一个继续执行它们的处理。在运行时测试的执行结束之后,CPU 102再开始其处理并向CPU 101通知CPU中断。
响应于来自CPU 102的CPU中断,CPU 101悬置其处理,并根据图5所示过程执行其本身的运行时测试。在此时,其它CPU 100和102至103中的每一个继续执行它们的处理。在运行时测试的执行结束之后,CPU 101再开始其处理并向CPU 100通知CPU中断。
响应于来自CPU 101的CPU中断,CPU 100悬置其处理,并根据图5所示过程执行其本身的运行时测试。在此时,其它101至103中的每一个继续执行它们的处理。
在运行时测试的执行结束之后,CPU 100根据图6所示过程执行共用电路120的运行时测试。在此时,共享共用电路120的所有CPU 100至103中的每一个进入睡眠模式,并如上所述悬置它们的处理。在共用电路120的运行时测试的执行结束之后,所有CPU 100至103中的每一个再开始它们的处理。
在此之后,每当从对CPU 103进行中断之时起经过DTI时,计时器15再次对CPU 103引起中断,并从而执行CPU 100至103和共用电路120的运行时测试。因此,每当经过DTI时,执行CPU 100至103和共用电路120的运行时测试。
在下文中参照图8对在执行运行时测试期间根据第一实施例的CPU 103的操作进行描述。
计时器15在从上次输出中断信号起经过DTI时通过中断控制器14向CPU 103通知中断。具体地,在该示例中,将CPU 103被预先设置为要被通知来自计时器15的中断的电路。
当在执行其处理期间通知由计时器15引起的中断时(S100),CPU 103根据计时器15的中断执行中断处理程序。在中断处理程序中,CPU 103执行用于执行运行时测试(S101)和保存CPU 103中的信息(S102)的设置,并进入睡眠模式(S103)。步骤S101与图5中的步骤S1和S2相对应,步骤S102与图5中的步骤S3和S4相对应,以及步骤S103与图5中的步骤S5相对应。
在CPU 103进入睡眠模式之后,BIST控制器11执行CPU 103的运行时测试(S104)。在CPU 103的运行时测试的执行结束之后,BIST控制器11通过复位控制器13使CPU 103复位(S105)。步骤S104与图5中的步骤S6至S8相对应,以及步骤S105与图5中的步骤S9相对应。
在复位之后进行引导时(S106),CPU 103执行复位处理程序。在复位处理程序中,CPU 103执行运行时测试结果检查(S107)和CPU 103的信息恢复(S108)。步骤S106与图5中的步骤S10相对应,步骤S107与图5中的步骤S11和S12相对应,以及步骤S108与图5中的步骤S13和S14相对应。此外,在复位处理程序中,CPU 103向作为下一个测试目标的CPU 102通知CPU中断(S109)。随后,CPU 103结束复位处理程序(S110),并再开始在执行运行时测试之前已经执行的处理(S111)。
在下文中参照图9对在执行运行时测试期间根据第一实施例的CPU 102和101的操作进行描述。在图9中,由相同附图标记指示与图8的处理相同的处理,并在适当时省略其描述。
当在其处理期间被通知来自上次已经执行运行时测试的CPU的CPU中断时(S100),CPU 102和101中的每一个根据该CPU中断执行中断处理程序。从CPU 103向CPU 102通知CPU中断,以及从CPU 102向CPU 101通知CPU中断。因此,CPU 102和101中的每一个与CPU 103的不同在于:它们分别根据来自CPU 103和102的CPU中断执行中断处理程序中的步骤S101至S103的处理。
此外,在复位处理程序中的步骤S109中,CPU 102向CPU 101通知CPU中断,以及CPU101向CPU 100通知CPU中断。
在下文中参照图10对在执行运行时测试期间根据第一实施例的CPU 100的操作进行描述。在图10中,由相同附图标记指示与图8和图9的处理相同的处理,并在适当时省略其描述。
当在其处理期间通知从上次已经执行运行时测试的CPU 101到CPU 100的CPU中断时(S100),CPU 100根据CPU中断执行中断处理程序。正如CPU 102和101那样,CPU 100根据来自CPU 101的CPU中断执行中断处理程序中的步骤S101至S103的处理。
另一方面,CPU 100与CPU 101至103的不同在于它在执行复位处理程序中的步骤S106至S108之后向其它CPU 101至103中的每一个通知CPU中断(S112),并如下面参照图11所述执行共用电路120的运行时测试。
在下文中参照图11对在执行运行时测试期间根据第一实施例的共用电路120的操作进行描述。
如图10所示,CPU 100在执行其运行时测试之后在复位处理程序中向其它CPU 101至103中的每一个通知CPU中断。步骤S112与图6中的步骤S21相对应。当在其处理期间从CPU100向CPU 101至103通知CPU中断时(S130),CPU 101至103中的每一个根据来自CPU 100的CPU中断执行中断处理程序。CPU 101至103中的每一个根据来自CPU 100的CPU中断在中断处理程序中通过WFI指令转变至睡眠模式(S131)。
此外,在复位处理程序中,CPU 100执行用于执行运行时测试(S113)和共用电路120中的信息的保存(S114)的设置,以及然后进入睡眠模式(S115)。步骤S113与图6中的步骤S22和S23相对应,步骤S114与图6中的步骤S24和S25相对应,以及步骤S115与图6中的步骤S26相对应。
在所有CPU 100至103进入睡眠模式之后,BIST控制器11执行共用电路120的运行时测试(S116)。在该步骤中,如之前描述的,初始化屏蔽电路122b禁止通过L2高速缓存控制器123更新L2高速缓存存储器124,以及初始化屏蔽电路122c禁止通过监听控制单元125更新SCU标签RAM 126。
在共用电路120的运行时测试的执行结束之后,BIST控制器11通过复位控制器13使共用电路120复位(S117)。步骤S116与图6中的S27至S29相对应,以及步骤S117与图6中的步骤S30相对应。在此时,初始化屏蔽电路122a禁止通过L2高速缓存控制器123和监听控制单元125初始化L2高速缓存存储器124和SCU标签RAM 126。
根据由初始化屏蔽电路122a至122c进行的操作,SCU标签RAM 126的内容被维持,并从而可以在CPU 100至103和共用电路120再开始处理时确保L1高速缓存存储器115的高速缓存一致性。此外,由于L2高速缓存存储器124的内容被维持,因此可以在CPU 100至103和共用电路120再开始处理时,防止L2高速缓存存储器124的高速缓存未命中并从而防止性能退化。换句话说,即使在执行共用电路120的扫描测试时,CPU 100至103和共用电路120可以通过使用L2高速缓存存储器124和SCU标签RAM 126中存储的数据继续处理。
在执行共用电路120的运行时测试之后,BIST控制器11通过中断控制器14向CPU100通知中断。当通知由BIST控制器11引起的中断时,CPU 100从睡眠模式醒来并根据来自BIST控制器11的中断执行中断处理程序。在中断处理程序中,CPU 100执行运行时测试结果检查(S118)和共用电路120的信息的恢复(S119)。步骤S118与图6中的步骤S31至S33相对应,以及步骤S119与图6中的步骤S34和S35相对应。此外,在中断处理程序中,CPU 100向其它CPU 101至103中的每一个通知CPU中断(S120)。步骤S120与图6中的步骤S36相对应。随后,CPU 100结束中断处理程序(S121),并再开始在执行运行时测试之前已经执行的处理(S122)。当从CPU 100通知CPU中断时,其它CPU 101至103中的每一个从睡眠模式醒来(S132)并再开始处理(S133)。
如上所述,在第一实施例中,如图28所示,半导体装置90通过使用存储电路91中存储的数据执行处理,并且当扫描测试电路94对根据处理的执行将数据写入存储电路中的处理电路92执行扫描测试时,禁止电路93禁止从处理电路92将数据写入到存储电路91中。因此,即使当执行扫描测试时,也可以禁止作为测试目标的处理电路92访问的存储电路91中存储的数据的改变。注意,半导体装置90与半导体装置1相对应。存储电路91与L2高速缓存存储器124和SCU标签RAM 126相对应。处理电路92与CPU 100至103、L2高速缓存控制器123和监听控制单元125相对应。扫描测试电路94与BIST控制器11、110至113和121相对应。禁止电路93与初始化屏蔽电路122相对应。
更具体地,在第一实施例中,当对具有L2高速缓存控制器123的共用电路120执行扫描测试时,禁止电路93(与初始化屏蔽电路122b相对应)禁止从L2高速缓存控制器123到L2高速缓存存储器124的数据写入。从而可以维持L2高速缓存存储器124的内容,以及在扫描测试结束之后,对于L2高速缓存存储器124中存储的数据,不需要从存储器21获取数据,从而降低性能的退化。
此外,在第一实施例中,当对具有确保高速缓存一致性的一致性控制电路(与监听控制单元125相对应)的共用电路120执行扫描测试时,禁止从一致性控制电路到存储要用于确保高速缓存一致性的管理信息的管理信息存储电路(与SCU标签RAM 126相对应)的数据写入。由于由此维持了管理信息存储电路的内容,因此可以在扫描测试结束之后确保高速缓存一致性。
此外,在第一实施例中,多个运算电路(与CPU 100至103相对应)中的每一个将其中所包括的L1高速缓存存储器115的数据冲刷至较低层级中的存储器(与L2高速缓存存储器124、DDR存储器20、存储器21和内部存储器50相对应)。从而可以确保多个运算电路之间的高速缓存一致性。
此外,在第一实施例中,多个运算电路中的一个响应于来自另一个运算电路的中断而指示扫描测试电路执行扫描测试,并在根据指令执行扫描测试之后向另一个运算电路通知中断。从而可以在没有时间重叠的情况下执行多个运算电路的扫描测试。换句话说,不执行扫描测试的运算电路可以继续系统处理。从而可以抑制整个系统中性能的退化。
<第二实施例>
在下文中对第二实施例进行描述。在下面第二实施例的描述中,由相同附图标记等等指示与上面描述的第一实施例中相同的事项,并在适当时省略其描述。如图12所示,根据第二实施例的半导体装置2与根据第一实施例的半导体装置1相比还具有计时器22。
计时器22是这样的电路,其测量从启动运行时测试所经过的时间,并通过中断向CPU集群10通知所经过的时间超过预设为结束运行时测试的时间的时间的定时作为超时。
具体地,运行时测试不总是正常地结束。存在运行时测试由于BIST控制器11、110至113和121的故障而不正常结束的可能性。因此,当运行时测试即使在经过了结束运行时测试的时间之后还没有结束时,可以使用计时器22来进行通知。
可以将由计时器22测量超时的周期预先设定为任意周期。例如,参照图7,该周期可以是:(1)从CPU 100至103和共用电路120中的每一个的运行时测试的启动到结束的周期,或者,(2)从CPU 103的运行时测试的启动到共用电路120的运行时测试的结束的周期。
周期(1)
在执行CPU的运行时测试的情况下,CPU 100至103中的每一个在例如图8至10中的步骤S101或者S102的定时处,通过系统总线设置计时器22的控制寄存器(未示出)以启动时间测量(设置计时器)。计时器22基于该设置启动时间测量。此外,CPU 100至103中的每一个在例如图8至10中的步骤S107至S109中的任何一个的定时处,通过系统总线设置计时器22的控制寄存器以停止时间测量(取消计时器)。计时器22基于该设置停止时间测量。
此外,CPU 100至103中的每一个通过系统总线设置中断控制器14,以使得要被通知与来自计时器22的中断相对应的中断信号的电路是例如除了其本身以外的任意CPU或者所有CPU 100至103。因此,即使当CPU 100至103中的每一个正在执行运行时测试时,也可以由另一个CPU立即执行根据超时的处理。
在执行共用电路120的运行时测试的情况下,CPU 100在图11中的步骤S112至S114中的任何一个的定时处,通过系统总线设置计时器22的控制寄存器以启动时间测量(设置计时器)。计时器22基于该设置启动时间测量。此外,CPU 100在例如图11中的步骤S118至S120中的任何一个的定时处,通过系统总线设置计时器22的控制寄存器以停止时间测量(取消计时器)。计时器22基于该设置停止时间测量。
此外,CPU 100通过系统总线设置中断控制器14,以使得要被通知与来自计时器22的中断相对应的中断信号的电路是例如CPU 100至103中的任何一个或者所有CPU 100至103。注意,然而,在图6的步骤S25中,CPU 100设置中断控制器14以便对于要被通知中断信号的CPU输出与来自计时器22的中断相对应的中断信号。此外,在图6的步骤S25中,CPU 100设置中断屏蔽电路19以不对要被通知中断信号的CPU屏蔽中断信号。
周期(2)
CPU 103在例如图8中的步骤S101或者S102的定时处,通过系统总线设置计时器22的控制寄存器以启动时间测量(设置计时器)。计时器22基于该设置启动时间测量。此外,CPU 100在例如图11中的步骤S118至S120中的任何一个的定时处,通过系统总线设置计时器22的控制寄存器以停止时间测量(取消计时器)。计时器22基于该设置停止时间测量。
此外,CPU 103通过系统总线设置中断控制器14,以使得要被通知与来自计时器22的中断相对应的中断信号的电路是例如CPU 100至103中的任何一个或者所有CPU 100至103。注意,然而,在图6的步骤S25中,CPU 100设置中断控制器14以便对于要被通知中断信号的CPU输出与来自计时器22的中断相对应的中断信号。此外,在图6的步骤S25中,CPU 100设置中断屏蔽电路19以不对要被通知中断信号的CPU屏蔽中断信号。如果要被通知中断信号的CPU是CPU 100至103中的任何一个,则要被通知中断信号的CPU在该CPU正在执行运行时测试时不可以获取中断信号。因此,在周期(2)的情况下,优选地,将至少两个CPU设置为要被通知中断信号的CPU。
当输入与计时器22的超时相对应的中断信号时,CPU 100至103中的每一个执行防故障例程。作为防故障例程,可以执行关闭半导体装置2中的整个系统的处理。
如上所述,在第二实施例中,半导体装置2包括在运行时测试的执行时间超过指定时间时通知超时的计时器22。于是,处理电路92(与CPU 100至103、L2高速缓存控制器123和监听控制单元125相对应)在对处理电路92的扫描测试启动时设置计时器22,以及在对处理电路92的扫描测试结束时取消计时器。因此,当扫描测试由于执行扫描测试的扫描测试电路(与BIST控制器11、110至113和121相对应)中的故障而停止时,可以检测故障。
<第三实施例>
在下文中对第三实施例进行描述。在下面第三实施例的描述中,由相同附图标记等等指示与上面描述的第一和第二实施例中相同的事项,并在适当时省略其描述。如图13所示,根据第三实施例的半导体装置3与根据第二实施例的半导体装置2相比还具有监听控制系统单元23。此外,根据第三实施例的半导体装置3包括多个CPU集群10和70。此外,根据第三实施例的CPU集群10与根据第二实施例的CPU集群10相比还具有监听屏蔽电路151。注意,由于CPU集群70的结构与CPU集群10的结构相同,因此省略其描述。此外,尽管半导体装置3包括两个CPU集群10和70的情况被描述为图13中的示例,但是CPU集群的数量并不限于此。
监听控制系统单元23连接至系统总线。监听控制系统单元23通过监听执行确保多个CPU集群10和70之间的L1高速缓存存储器115和L2高速缓存存储器124的高速缓存一致性的控制。
第三实施例与第一和第二实施例的不同在于:当不能从L2高速缓存存储器124和监听控制单元125中的任何一个获取从CPU 100至103请求读取的数据时,共用电路120的L2高速缓存控制器123向监听控制系统单元23输出请求数据读取的读取请求信号。
在从多个CPU集群10和70中的任何一个(在该示例中是CPU集群10)输入读取请求信号的情况下,监听控制系统单元23确定由读取请求信号请求的数据是否存储在与已经提出请求的CPU集群10不同的CPU集群70中。当监听控制系统单元23确定数据存储在与已经提出请求的CPU集群10不同的CPU集群70中时,它向具有该数据的CPU集群70请求数据。更具体地,监听控制系统单元23向CPU集群70输出请求数据的监听请求信号。响应于监听请求信号,CPU集群70中的共用电路120的L2高速缓存控制器123从L2高速缓存存储器124获取由监听请求信号请求的数据。
另一方面,当数据没有存储在L2高速缓存存储器124中时,CPU集群70中的共用电路120的监听控制单元125向具有CPU集群70中的数据的CPU输出请求数据的监听请求信号。响应于监听请求信号,该CPU的L1高速缓存控制器114从L1高速缓存存储器115获取由监听请求信号请求的数据,并向共用电路120输出包括该数据的监听响应信号。监听控制单元125获取监听响应信号中包括的数据。随后,L2高速缓存控制器123向监听控制系统单元23输出监听响应信号,该监听响应信号包括从L2高速缓存存储器124或者通过监听控制单元125的控制获取的数据。
监听控制系统单元23获取从CPU集群70输出的监听响应信号中包括的数据。监听控制系统单元23向已经输出读取请求信号的CPU集群10输出包括所获取的数据的读取响应信号。从而,已经输出读取请求信号的CPU集群10可以获取由读取请求信号请求的数据。
另一方面,当监听控制系统单元23不能从CPU集群70获取数据时,它通过系统总线向外部总线控制器17输出读取请求信号。响应于读取请求信号,外部总线控制器17通过系统总线向监听控制系统单元23输出包括从存储器21获取的数据的读取响应信号。监听控制系统单元23获取读取响应信号中包括的数据。
监听控制系统单元23向已经提出请求的共用电路120输出从其它CPU集群70或者存储器21获取的数据。具体地,监听控制系统单元23向已经提出请求的CPU 100输出包括所获取数据的读取响应信号。
此外,在从多个CPU集群10和70中的任何一个(在该示例中是CPU集群10)输入写入请求信号的情况下,监听控制系统单元23确定由写入请求信号请求的数据是否存储在与已经提出请求的CPU集群10不同的CPU集群70中。当监听控制系统单元23确定数据存储在与已经提出请求的CPU集群10不同的CPU集群70中时,监听控制系统单元23请求具有该数据的CPU集群70使该数据无效。更具体地,监听控制系统单元23向CPU集群70输出请求数据无效的监听请求信号。响应于监听请求信号,CPU集群70中的共用电路120的L2高速缓存控制器123使L2高速缓存存储器124中由监听请求信号请求的数据无效。该数据由此从L2高速缓存存储器124删除,并被看作在L2高速缓存存储器124中不存在。
此外,CPU集群70中的共用电路120的监听控制单元125向具有CPU集群70中的数据的CPU输出请求该数据无效的监听请求信号。响应于监听请求信号,该CPU的L1高速缓存控制器114使L1高速缓存存储器115中由监听请求信号无效的数据无效。
此外,监听控制系统单元23向外部总线控制器17输出写入请求信号,并将数据存储到存储器21中。
为了确定数据是否存储在与已经提出请求的CPU集群10不同的CPU集群70中,监听控制系统单元23可以包括SCU标签RAM(未示出),该SCU标签RAM存储指示存储器21中的哪个地址与多个CPU集群10和70中存储的各数据分别对应的信息,并以与监听控制单元125和SCU标签RAM 126相同的方式执行控制。此外,在监听控制系统单元23不包括SCU标签RAM的情况下,监听请求信号可以输出到除已经提出请求的CPU集群10以外的所有CPU集群70。
注意,尽管作为示例描述了对来自CPU集群10的读取请求和写入请求执行控制的情况,但是也可以以相同方式控制来自CPU集群70的读取请求和写入请求。此外,尽管作为示例描述了监听控制系统单元23控制存储器21中的数据的情况,但是也可以以相同方式控制DDR存储器20和内部存储器50中的数据。这同样适用于下列描述。
监听屏蔽电路151是屏蔽(阻挡)从监听控制系统单元23输入到共用电路120的监听请求信号的电路。可以对监听屏蔽电路151任意设置监听屏蔽电路151是否屏蔽(阻挡)监听请求信号。通过对监听屏蔽电路151或者时钟控制器12中包括的控制寄存器(未示出)设置指示是否屏蔽监听请求信号的值以进行该设置。此外,可以通过BIST控制器121的控制在任意定时改变该设置。
回头参照图6,在步骤S27的定时处,BIST控制器121设置监听屏蔽电路151以便屏蔽监听请求信号。此外,在步骤S29的定时处,BIST控制器121设置监听屏蔽电路151以便取消监听请求信号的屏蔽。注意,由于屏蔽取消,由共用电路120启动已经屏蔽的监听请求信号的处理。
从而,可以在执行CPU集群10中的共用电路120的运行时测试期间,防止执行运行时测试的共用电路120因来自其它CPU集群70的监听请求信号执行非期望操作。注意,在等到通过监听屏蔽电路151的屏蔽被取消之后,正常地处理监听请求信号。
注意,尽管在第二实施例的结构中添加了监听控制系统单元23和监听屏蔽电路151并包括了多个CPU集群10和70的实施例被描述为第三实施例,但是本发明并不限于此。例如,该结构可以适用于第一实施例。
如上所述,在第三实施例中,半导体装置3包括多个处理电路92(与CPU 100至103、L2高速缓存控制器123和监听控制单元125相对应)。多个处理电路92中的每一个包括屏蔽电路(与监听屏蔽电路151相对应),当对具有第一一致性控制电路的共用电路120(与监听控制单元125相对应)执行扫描测试时所述屏蔽电路阻挡从第二一致性电路(与监听控制系统单元23相对应)输出到具有第一一致性控制电路的共用电路120的信号。从而,可以在执行运行时测试期间悬置与处理电路92(CPU集群10和70)相关的事务,以及随后在运行时测试结束之后再开始事务,从而防止系统中的缺点。
<第四实施例>
在下文中对第四实施例进行描述。在下面第四实施例的描述中,由相同附图标记等等指示与上面描述的第一和第三实施例中相同的事项,并在适当时省略其描述。
第四实施例与第一至第三实施例的不同在于:通过分裂的方式而不是以总体的方式(一括で),来执行CPU 100至103和共用电路120的运行时测试。根据第四实施例的半导体装置4与根据第三实施例的半导体装置3相比还包括计时器25。在下文中,通过分裂DTI中的运行时测试而获得的单元中的每一个被称为“分裂测试”。
计时器25是这样的电路,其测量从分裂测试结束所经过的时间,以及当所经过的时间超过预设为启动下一个分裂测试的时间的时间时,通过中断向正在通过使测试分裂来执行其本身或者共用电路120的运行时测试的CPU通知其到达启动分裂测试的定时。
参照图15对根据第四实施例使运行时测试分裂的示例进行描述。可以通过分成预定数量的部分执行运行时测试。图15的示例示出了运行时测试被分成三个分裂测试的情况。
在第四实施例中,将用于通过使用于DTI中的运行时测试的多个测试图案分裂而获得的多个单元中的每一个的运行时测试作为分裂测试执行。例如,如图15所示在运行时测试目标电路包括两个逻辑电路和三个存储电路的情况下,用于运行时测试的多个测试图案(pattern)可以分成要用于一个逻辑电路的扫描测试的单元(图15中的“SCAN-1”)、要用于另一个逻辑电路的扫描测试的单元(图15中的“SCAN-2”、和要用于三个存储电路的MBIST的单元(图15中的“MBIST”)。随后,对如图15所示的每个单元执行分裂测试。
注意,在一个分裂测试中对其执行扫描测试的逻辑电路的数量和在一个分裂测试中对其执行MBIST的存储电路的数量不限于图15所示的示例。此外,在某个分裂测试中对其执行扫描测试的逻辑电路的数量和在另一个分裂测试中对其执行扫描测试的存储电路的数量可以不同。同样地,在某个分裂测试中对其执行MBIST的存储电路的数量和在另一个分裂测试中对其执行MBIST的存储电路的数量可以不同。
替换地,可以将用于执行作为运行时测试目标的电路中包括的所有逻辑电路的扫描测试的一组测试图案分成多个单元,并且分裂单元中的每一个可以用于一个分裂测试中的扫描测试。此外,可以将用于执行作为运行时测试目标的电路中包括的存储电路的MBIST的一组测试图案分成多个单元,并且分裂单元中的每一个可以用于一个分裂测试中的MBIST。
可以由CPU 100至103中的每一个将要用于每个分裂测试中的测试图案的数量通过系统总线设置到BIST控制器11中包括的控制寄存器,以使得BIST控制器11可以识别该数量。
例如,假定,对于CPU 100,对如图15所示的两个逻辑电路和一个存储电路中的每一个执行三个分裂测试。在该情况下,在启动第一分裂测试之前,CPU 100将要用于图5中步骤S1中的第一逻辑电路的运行时测试的测试图案的数量通过系统总线设置到BIST控制器11的控制寄存器。此外,在启动第二分裂测试之前,CPU 100将要用于图5中步骤S1中的第二逻辑电路的运行时测试的测试图案的数量通过系统总线设置到BIST控制器11的控制寄存器。在启动第三分裂测试之前,CPU 100将要用于图5中步骤S1中的存储电路的运行时测试的测试图案的数量通过系统总线设置到BIST控制器11的控制寄存器。随后,BIST控制器110创建与设置到BIST控制器11的控制寄存器的测试图案数量相对应的测试图案并执行运行时测试。
在下文中参照图16对在执行运行时测试期间根据第四实施例的CPU集群10的操作进行描述。图16的示例示出了将运行时测试分成两个分裂测试并执行运行时测试的情况。
在需要实时响应的系统中,测试时间不应该超过中断响应时间限。中断响应时间限指示在发生中断之后CPU 100至103应当检测中断的时间,并且CPU 100至103应当至少在超过该时间之前根据中断启动处理。因此,在第四实施例中,将CPU 100至103和共用电路120的运行时测试中的每一个分成可以在中断响应时间限内实施并如图16所示执行的分裂测试。
响应于来自计时器15的中断,CPU 103悬置其处理并根据图5所示过程执行其本身的第一分裂测试。在此时,其它CPU 100至102中的每一个继续执行它们的处理。在第一分裂测试的执行结束之后,CPU 103再开始其处理并通过系统总线设置计时器25以启动时间测量(设置计时器)。计时器25基于该设置启动时间测量。
响应于来自计时器25的中断,CPU 103悬置其处理并根据图5所示过程执行其本身的第二分裂测试。在此时,其它CPU 100至102中的每一个继续执行它们的处理。在第二分裂测试的执行结束之后,CPU 103再开始其处理并向CPU 102通知CPU中断。
响应于来自CPU 103的CPU中断,CPU 102悬置其处理并根据图5所示过程执行其本身的第一分裂测试。在此时,其它CPU 100至101和103中的每一个继续执行它们的处理。在第一分裂测试的执行结束之后,CPU 102再开始其处理并通过系统总线设置计时器25以启动时间测量(设置计时器)。计时器25基于该设置启动时间测量。
响应于来自计时器25的中断,CPU 102悬置其处理并根据图5所示过程执行其本身的第二分裂测试。在此时,其它CPU 100至101和103中的每一个继续执行它们的处理。在第二分裂测试的执行结束之后,CPU 102再开始其处理并向CPU 101通知CPU中断。
响应于来自CPU 102的CPU中断,CPU 101悬置其处理并根据图5所示过程执行其本身的第一分裂测试。在此时,其它CPU 100和102至103中的每一个继续执行它们的处理。在第一分裂测试的执行结束之后,CPU 101再开始其处理并通过系统总线设置计时器25以启动时间测量(设置计时器)。计时器25基于该设置启动时间测量。
响应于来自计时器25的中断,CPU 101悬置其处理并根据图5所示过程执行其本身的第二分裂测试。在此时,其它CPU 100和102至103中的每一个继续执行它们的处理。在第二分裂测试的执行结束之后,CPU 101再开始其处理并向CPU 100通知CPU中断。
响应于来自CPU 101的CPU中断,CPU 100悬置其处理并根据图5所示过程执行其本身的第一分裂测试。在此时,其它101至103中的每一个继续执行它们的处理。在第一分裂测试的执行结束之后,CPU 100再开始其处理并通过系统总线设置计时器25以启动时间测量(设置计时器)。计时器25基于该设置启动时间测量。
响应于来自计时器25的中断,CPU 100悬置其处理并根据图5所示过程执行其本身的第二分裂测试。在此时,其它101至103中的每一个继续执行它们的处理。
在第二分裂测试的执行结束之后,CPU 100根据图6所示过程执行共用电路120的第一分裂测试。在此时,共享共用电路120的所有CPU 100至103中的每一个进入睡眠模式并如上所述悬置它们的处理。在第一分裂测试的执行结束之后,CPU 100再开始其处理,并通过系统总线设置计时器25以启动时间测量(设置计时器)。计时器25基于该设置启动时间测量。
响应于来自计时器25的中断,CPU 100根据图6所示过程执行共用电路120的第二分裂测试。在此时,共享共用电路120的所有CPU 100至103中的每一个进入睡眠模式并如上所述悬置它们的处理。在第二分裂测试的执行结束之后,CPU 100再开始其处理。
如上所述,在运行时测试被分成N个分裂测试(N是大于或等于2的正整数)的情况下,CPU 103响应于来自计时器15的中断执行第一分裂测试,以及响应于来自计时器25的中断执行第二分裂测试到第N分裂测试。此外,CPU 103在执行第一分裂测试至第(N-1)分裂测试之后设置计时器25,并在执行第N分裂测试之后向作为下一个测试目标的CPU 102通知CPU中断。
CPU 102和101中的每一个响应于来自上次已经执行运行时测试的CPU的CPU中断执行第一分裂测试,并响应于来自计时器25的中断执行第二分裂测试至第N分裂测试。此外,CPU 102和101中的每一个在执行第一分裂测试至第(N-1)分裂测试之后设置计时器25,并在执行第N分裂测试之后向作为下一个运行时测试目标的CPU 101或者100通知CPU中断。
CPU 100响应于来自上次已经执行运行时测试的CPU 101的CPU中断执行第一分裂测试,并响应于来自计时器25的中断执行第二分裂测试至第N分裂测试。此外,CPU 100在执行第一分裂测试至第(N-1)分裂测试之后设置计时器25,并在执行第N分裂测试之后进行对执行作为下一个运行时测试目标的共用电路120的运行时测试的控制。
CPU 100在其本身的运行时测试之后执行共用电路120的第一分裂测试,并响应于来自计时器25的中断执行共用电路120的第二分裂测试至第N分裂测试。此外,CPU 100在执行该第一分裂测试至第(N-1)分裂测试之后设置计时器25。
注意,CPU 100至103中的每一个可以通过对执行分裂测试的次数进行计数,以确定是在执行第一分裂测试至第(N-1)分裂测试之后还是在执行第N分裂测试之后。执行分裂测试的次数可以存储在例如DDR存储器20、存储器21或者内部存储器50中。
在下文中参照图17对在执行第一分裂测试期间根据第四实施例的CPU 100至103的操作进行描述。在图17中,由相同附图标记指示与图8至图10的处理中相同的处理,并在适当时省略其描述。
当在其处理(S100)期间通知中断时,CPU 100至103中的每一个根据中断执行中断处理程序。在根据中断的中断处理程序中,CPU 100至103中的每一个执行步骤S101至S103的处理,这与图8至图10中的相同。对于CPU 103,中断是来自计时器15的中断,以及对于CPU102至100,中断是来自上次已经执行运行时测试的CPU 103至101的CPU中断。
另一方面,CPU 100至103中的每一个在执行复位处理程序中的步骤S106至S108之后在设置计时器25(S140)之后执行步骤S110和S111,这与图8至10不同。
在下文中参照图18对在执行第二分裂测试至第N分裂测试期间根据第四实施例的CPU 100至103的操作进行描述。在图18中,由相同附图标记指示与图8至图10和图17的处理中相同的处理,并在适当时省略其描述。
当在其处理(S100)期间从计时器25通知中断时,CPU 100至103中的每一个根据中断执行中断处理程序。在根据中断的中断处理程序中,CPU 100至103中的每一个执行步骤S101至S103的处理,这与图8至图10和图17中的相同。
CPU 100至103中的每一个在执行复位处理程序中的步骤S106至S108之后向另一个CPU通知中断(S112)。对于CPU 101至103,该中断是以与图8和图9中相同的方式对作为下一个运行时测试目标的CPU的CPU中断(S109),以及对于CPU 100,该中断是以与图10中相同的方式对其它CPU 101至103的CPU中断(S112)。此外,对于CPU 101至103,以与图8和9中相同的方式在步骤S112之后执行步骤S110和S111,而,对于CPU 100,以与图10中相同的方式在步骤S112之后不执行步骤S110和S111,并进行执行共用电路120的运行时测试的控制。
注意,在将运行时测试分成三个或者更多个分裂测试的情况下,可以明了,执行第二分裂测试至第(N-1)分裂测试期间的操作是执行步骤S140代替图18中的步骤S112的操作,并省略其详细描述。
在下文中参照图19对在执行第一分裂测试期间根据第四实施例的共用电路120的操作进行描述。在图19中,由相同附图标记指示与图11的处理中相同的处理,并在适当时省略其描述。
CPU 100执行如图11中的复位处理程序中的步骤S112至S115。另一方面,CPU 100在执行中断处理程序中的步骤S118至S120之后在设置计时器25(S142)之后执行步骤S121和S122,这与图11不同。
在下文中参照图20对在执行第二分裂测试期间根据第四实施例的共用电路120的操作进行描述。在图20中,由相同附图标记指示与图11和图19的处理中相同的处理,并在适当时省略其描述。
当在其处理(S143)期间通知来自计时器25的中断时,CPU 100根据中断执行中断处理程序。CPU 100以与图11和图19中相同的方式执行复位处理程序中的步骤S112至S115的处理。注意,不在复位处理程序中,而是在中断处理程序中执行该处理,这与图11和图19不同。在此之后,以与图11中相同的方式执行步骤S116至S122。
注意,在将运行时测试分成三个或者更多个分裂测试的情况下,可以明了的是,执行第二分裂测试至第(N-1)分裂测试期间的操作是在图20中的步骤S120之后执行步骤S142的操作,并省略其详细描述。
注意,尽管在第三实施例的结构中添加计时器25并执行分裂测试的实施例被描述为第四实施例,但是本发明并不限于此。例如,该结构可以适用于第一实施例或者第二实施例。
如上所述,在第四实施例中,每次作为分裂测试执行了通过使用于整个运算电路(与CPU 100至103中的每一个相对应)的扫描测试的多个测试图案分裂而获得的多个单元中的每一个的扫描测试时,对运算电路的扫描测试的执行结束。此外,在第四实施例中,每次作为分裂测试执行了通过使用于整个共用电路120的扫描测试的多个测试图案分裂而获得的多个单元中的每一个的扫描测试时,对共用电路120的扫描测试的执行结束。半导体装置4包括计时器25,该计时器25测量从运算电路和共用电路120中的每一个的分裂测试的结束起的时间,并向运算电路通知启动运算电路和共用电路120中的每一个的下一个分裂测试的定时。响应于来自计时器25的通知,运算电路指示扫描测试电路(与BIST控制器11、110至113和121相对应)启动分裂测试。
根据上述,运算电路可以在结束执行将扫描测试分成多个单元的分裂测试的定时处根据中断执行处理,并从而可以提高运算电路对中断作出响应的能力。因此,可以例如通过满足需要具有中断响应能力的要求,而在CPU 100至103中执行需要具有中断响应能力的应用程序(例如,语音识别处理程序等等)。具体地,可以在需要实时能力的系统中执行运行时测试。
<第五实施例>
在下文中对第五实施例进行描述。在下面第五实施例的描述中,由相同附图标记等等指示与上面描述的第一至第四实施例中相同的事项,并在适当时省略其描述。如图21所示,根据第五实施例的半导体装置5与根据第三实施例的半导体装置3相比还包括功率控制电路26和功率开关170至173和180。
功率控制电路26是控制CPU 100至103和共用电路120中的每一个的电力的电路。功率控制电路26监控从CPU 100至103输出的状态信号,以及当CPU 100至103中的每一个转变至睡眠模式时,断开CPU 100至103中的每一个的电力。此外,当所有CPU 100至103转变至睡眠模式时,功率控制电路26断开CPU 100至103和共用电路120的电力。这实现节能。注意,当断开共用电路120的电力时,功率控制电路26使共用电路120中的L2高速缓存存储器124和SCU标签RAM 126的电力接通,从而维持数据。
功率开关170与CPU 100连接,功率开关171与CPU 101连接,功率开关172与CPU102连接,功率开关173与CPU 103连接,而功率开关180与共用电路120连接。功率控制电路26通过操作功率开关170至173和180中的每一个接通和断开CPU 100至103和共用电路120中的每一个的电力。
此外,响应于来自中断控制器14的中断信号的输入,功率控制电路26接通CPU 100至103和共用电路120当中已经断电的电路的电力,并请求复位控制器13使被加电的电路复位。
使CPU 100至103和共用电路120转变至节能模式并从节能模式返回的功率控制电路26的操作,类似于CPU 100至103和共用电路120转变至执行运行时测试的模式并在执行运行时测试之后从模式返回的操作。因此,在第五实施例中,通过使用功率控制电路26的功能,实现CPU 100至103和共用电路120转变至执行运行时测试的模式并在执行运行时测试之后从该模式返回的操作。
为了实现该操作,根据第五实施例的功率控制电路26被配置为使得:当可以从CPU100至103中的每一个实现在检测CPU 100至103的睡眠模式时禁止断开CPU 100至103和共用电路的电力的操作的设置。
当执行CPU 100至103中的每一个的运行时测试时,CPU 100至103中的每一个在图8至10中的步骤S101或者S102的定时处设置功率控制电路26以禁止断开电力的操作,以及在图8至10中的步骤S106至S108中的任何一个的定时处设置功率控制电路26以取消禁止断开电力的操作。
此外,当执行共用电路120的运行时测试时,CPU 100在图11中的步骤S112至S114中的任何一个的定时处设置功率控制电路26以禁止断开电力的处理,以及在图11中的步骤S118至S120中的任何一个的定时处设置功率控制电路26以取消禁止断开电力的处理。
因此,由于即使在CPU 100至103转变至睡眠模式之后也没有断开CPU 100至103和共用电路120的电力,因此可以执行运行时测试。
在执行CPU 100至103和共用电路120的运行时测试之后,BIST控制器11向中断控制器14输出中断信号,而不是向复位控制器13请求复位。响应于中断信号,中断控制器14向功率控制电路26输出中断信号。
由于仅对功率控制电路26禁止断开电力的操作,因此当在使CPU 100至103中的任何一个转变至睡眠模式而实际电力状态为接通之后执行扫描测试时,功率控制电路26识别CPU的电力状态为断开。因此,在该情况下,功率控制电路26响应于中断信号,请求复位控制器13使执行扫描测试的CPU复位。
由于仅对功率控制电路26禁止断开电力的操作,因此当所有CPU 100至103转变至睡眠模式而实际电力状态为接通时,功率控制电路26识别所有CPU 100至103和共用电路120的电力状态为断开。因此,在该情况下,功率控制电路26响应于中断信号,请求复位控制器13使所有CPU 100至103和共用电路120复位。注意,如之前描述的通过复位屏蔽电路18禁止CPU 100至103的复位。
因此,根据第五实施例,可以通过使用功率控制电路26的功能容易地实现测试目标电路的复位,而在第一至第四实施例中该测试目标电路的复位由BIST控制器11处理。
注意,尽管在第三实施例的结构中添加功率控制电路26的实施例被描述为第五实施例,但是本发明并不限于此。例如,该结构可以适用于第一实施例、第二实施例和第四实施例中的任何一个。
如上所述,在第五实施例中,半导体装置5包括功率控制电路26,其在运算电路转变至睡眠模式时断开运算电路(CPU 100至103)的电力,以及当通知中断时接通运算电路的电力并通过复位控制器13使运算电路复位。当对运算电路执行扫描测试时,运算电路设置功率控制电路26以禁止运算电路断电并随后转变至睡眠模式。运算电路随后在对运算电路执行扫描测试之后向功率控制电路26通知中断。从而,可以通过使用功率控制电路的功能在运算电路中实现向执行扫描测试的模式的转变以及从该模式的返回。从而,可以降低用于实现运行时测试的逻辑设计成本。
<第六实施例>
在下文中对第六实施例进行描述。在下面第六实施例的描述中,由相同附图标记等等指示与上面描述的第一至第五实施例中相同的事项,并在适当时省略其描述。如图22所示,根据第六实施例的半导体装置6与根据第三实施例的半导体装置3的不同在于:半导体装置6包括测试控制器60和160至163,代替BIST控制器11和110至113。
测试控制器60与BIST控制器11的不同在于:测试控制器60从DDR存储器20获取测试图案和期望值,并将它们供应至测试控制器160至163中的每一个。此外,测试控制器160至163中的每一个与BIST控制器110至113中的每一个的不同在于:测试控制器160至163中的每一个不生成测试图案和期望值,并使用由测试控制器60供应的测试图案和期望值。
具体地,在第六实施例中,测试图案和期望值预先存储在DDR存储器20中。测试控制器60通过局部总线和系统总线从DDR存储器20读取测试图案和期望值。测试控制器160至163中的每一个通过使用由测试控制器60读取的测试图案和期望值执行扫描测试。注意,在启动半导体装置6时,测试控制器60和CPU 100至103中的任何一个可以将测试图案和期望值从连接至外部总线控制器17的存储器21预先传送至DDR存储器20或者内部存储器50,以及测试控制器60可以在执行运行时测试时从DDR存储器20或者内部存储器50获取测试图案和期望值。可以使用非易失性存储器(诸如闪速存储器)代替存储器21。
在执行CPU 100至103中的每一个的运行时测试的情况下,CPU 100至103中的每一个将用于CPU 100至103的测试图案存储在DDR存储器20中的地址设置到测试控制器60中的控制寄存器。测试控制器60通过控制寄存器中设置的地址在DDR存储器20中获取用于CPU100至103的测试图案。
此外,在执行共用电路120的运行时测试的情况下,CPU 100将用于共用电路120的测试图案存储在DDR存储器20中的地址设置到测试控制器60中的控制寄存器。测试控制器60通过控制寄存器中设置的地址在DDR存储器20中获取用于共用电路120的测试图案。
注意,尽管在第三实施例的结构中包括测试控制器60和160至163而不是BIST控制器11和110至113以及测试图案和期望值存储在DDR存储器20中的实施例被描述为第六实施例,但是本发明并不限于此。例如,该结构可以适用于第一实施例、第二实施例、第四实施例和第五实施例。
在上述结构适用于第四实施例的情况下,CPU 100至103中的每一个可以将通过分裂测试(例如,DDR存储器20中的起始地址和结束地址)扫描输入的测试图案量代替测试图案数量设置到测试控制器60中的控制寄存器。具体地,将通过使DDR存储器20中存储的用于CPU 100至103中的每一个的一组测试图案分裂而获得的多个单元中的每一个的运行时测试作为对CPU 100至103中的每一个的分裂测试执行。此外,将通过使DDR存储器20中存储的用于共用电路120中的每一个的一组测试图案分裂而获得的多个单元中的每一个的运行时测试作为对共用电路120的分裂测试执行。
如上所述,在第六实施例中,扫描测试电路(与测试控制器60和160至163相对应)获取置于半导体装置6外部的外部存储电路(与DDR存储器20相对应)中存储的测试图案并将所获取的测试图案扫描到处理电路中以由此执行扫描测试。
由于BIST使用随机创建的测试图案,因此存在难以提高故障检测率的问题。另一方面,在第六实施例中,可以预先创建具有高故障检测率的测试图案并将它们扫描到测试目标处理电路中,从而可以减少测试时间。
<第七实施例>
在下文中对第七实施例进行描述。在下面第七实施例的描述中,由相同附图标记等等指示与上面描述的第一至第六实施例中相同的事项,并在适当时省略其描述。
如图23所示,根据第七实施例的半导体装置7与根据第三实施例的半导体装置3的不同在于CPU集群10仅包括一个CPU 100。此外,根据第七实施例的CPU 100与根据第三实施例的CPU 100的不同在于其包括初始化屏蔽电路117a和117b。此外,根据第七实施例的共用电路120与根据第三实施例的共用电路120的不同在于其不包括监听控制单元125和SCU标签RAM 126。这是由于CPU集群10不包括多个CPU,并因此不需要用于确保CPU之间的L1高速缓存存储器115的高速缓存一致性的控制。
初始化屏蔽电路117a是禁止L1高速缓存控制器114将初始值写入到L1高速缓存存储器115以初始化L1高速缓存存储器115的电路。更具体地,初始化屏蔽电路117a向L1高速缓存控制器114输出指示禁止初始化的指令信号。当在CPU 100复位时输入指令信号时,L1高速缓存控制器114改变其操作以免对L1高速缓存存储器115执行用于初始化的数据写入,该数据写入在取消CPU 100复位时执行。初始化屏蔽电路117a启用其操作以便在执行CPU100的运行时测试之后在复位时禁止L1高速缓存存储器115的初始化。
初始化屏蔽电路117b是禁止L1高速缓存控制器114将数据写入L1高速缓存存储器115的电路。更具体地,初始化屏蔽电路117b屏蔽(阻挡)从L1高速缓存控制器114输出到L1高速缓存存储器115以用于数据写入的信号。初始化屏蔽电路117b启用其操作以便在执行CPU 100的运行时测试时禁止对L1高速缓存存储器115的数据写入。
回头参照图5,在步骤S4的定时处,CPU 100设置初始化屏蔽电路117a和117b中的每一个以便分别地禁止对L1高速缓存存储器115的初始化和写入。此外,在步骤S14的定时处,CPU 100设置初始化屏蔽电路117a和117b中的每一个或者时钟控制器12以便分别地取消对L1高速缓存存储器115的初始化和写入的禁止。通过将指示是否禁止初始化或者写入的值设置到初始化屏蔽电路117a和117b中的每一个中包括的控制寄存器(未示出)以进行该设置。
由于L1高速缓存存储器115的内容由此被维持,因此可以在CPU 100再开始处理时防止L1高速缓存存储器115的高速缓存未命中并从而防止性能退化。以这种方式,在不同于多核的单个核心的情况下,即使当L1高速缓存存储器115的内容被维持而没有进行冲刷时,也不存在另一个CPU不能通过监听控制单元125的控制访问数据的问题。
注意,尽管在第三实施例的结构中仅包括一个CPU 100以及CPU 100还包括初始化屏蔽电路117a和117b以及共用电路120不包括监听控制单元125和SCU标签RAM 126的实施例被描述为第七实施例,但是本发明并不限于此。例如,该结构可以适用于第一实施例、第二实施例、第四实施例至第六实施例中的任何一个。
如上所述,在第七实施例中,CPU 100包括L1高速缓存存储器115和L1高速缓存控制器114。随后,在对CPU 100执行扫描测试期间,禁止从L1高速缓存控制器114到L1高速缓存存储器115的数据写入。从而可以在CPU 100再开始处理时防止L1高速缓存存储器115的高速缓存未命中并从而防止性能退化。
<第八实施例>
在下文中对第八实施例进行描述。在下面第八实施例的描述中,由相同附图标记等等指示与上面描述的第一至第七实施例中相同的事项,并在适当时省略其描述。如图24所示,根据第八实施例的半导体装置8与根据第二实施例的半导体装置2相比还具有计时器27和GPU(图形处理单元)集群40。GPU集群40包括GPU 400和BIST控制器410。
计时器27是测量所经过的时间并通过中断通知CPU集群10执行GPU集群40的运行时测试的定时的电路。更具体地,每当到达执行运行时测试的定时时,计时器27向中断控制器14输出中断信号。响应于中断信号,中断控制器14将中断信号输出至预先设置为要向其通知来自计时器27的中断的电路的CPU。
注意,CPU集群10设置计时器27以便在启动半导体装置8之后在每个DTI处通知运行时测试的执行定时。例如,可以预先任意地确定设置计时器27的CPU。
GPU 400是以辅助方式执行由CPU集群10的CPU 100至103执行的处理的一部分的电路。具体地,GPU 400是由CPU 100至103中的任何一个管理并除非由CPU 100至103中的任何一个控制否则不工作的电路。
BIST控制器410是根据通过BIST控制器11的控制执行GPU 400的运行时测试的电路。BIST控制器410正如BIST控制器110至113一样充当从设备。
在下文中参照图25对在执行运行时测试期间根据第八实施例的GPU 400的操作进行描述。尽管在第八实施例中描述了CPU 100控制GPU 400的运行时测试的执行的过程,但是代替CPU 100,CPU 100至103中的任何一个可以控制GPU 400的运行时测试的执行。
计时器27在从上次输出中断信号起经过DTI时通过中断控制器14向CPU 100通知中断。具体地,在该示例中,将CPU 100预先设置为要被通知来自计时器27的中断的电路。
当在执行其处理(S150)期间通知由计时器27引起的中断时,CPU 100根据计时器27的中断执行中断处理程序。在中断处理程序中,CPU 100执行用于执行运行时测试的设置(S151)。更具体地,CPU 100将GPU 400作为测试目标设置到BIST控制器11中的控制寄存器。此外,CPU 100将GPU 400的信息保存在中断处理程序中(S152)。更具体地,CPU 100停止CPU400的操作并将GPU 400的寄存器中存储的数据保存到DDR存储器20、存储器21和内部存储器50中。随后,CPU 100向BIST控制器11指示运行时测试的启动(S153)并结束中断处理程序(S154)。由于GPU 400不能转变至睡眠模式,因此由CPU 100以这种方式明确地指示运行时测试的启动。
响应于来自CPU 100的指令,BIST控制器11指示BIST控制器410启动CPU 400的运行时测试。响应于来自BIST控制器11的指令,BIST控制器410执行CPU 400的运行时测试(S155)。
BIST控制器410向BIST控制器11通知GPU 400的运行时测试的执行结束。响应于来自BIST控制器410的通知,BIST控制器11通过复位控制器13使GPU 400复位(S156)。此外,BIST控制器11通过中断控制器14向CPU 100通知中断。当在执行其处理(S157)期间通知由BIST控制器11引起的中断时,CPU 100根据来自BIST控制器11的中断执行中断处理程序。在中断处理程序中,CPU 100执行运行时测试结果检查(S158)和GPU 400的信息恢复(S159)。更具体地,CPU 100将已经保存到DDR存储器20、存储器21和内部存储器50中的数据恢复到GPU 400的寄存器。注意,运行时结果的检查与对CPU 100至103和共用电路120的运行时测试的执行相同并因此不多余地描述。CPU 100随后结束中断处理程序(S160)并再开始执行过程(S161)。
注意,尽管将计时器27和GPU集群40(GPU 400和BIST控制器410)添加至第二实施例的结构的实施例被描述为第八实施例,但是本发明并不限于此。例如,该结构可以适用于第一实施例和第三至第七实施例中的任何一个。GPU集群40可以是诸如密码电路或者图像识别电路的硬件加速器。
如上所述,在第八实施例中,半导体装置8包括通知CPU 100对GPU 400执行扫描测试的定时的计时器27。响应于来自计时器27的通知,CPU 100指示对GPU 400执行扫描测试。响应于来自CPU 100的指令,扫描测试电路(与BIST控制器11和410相对应)对GPU 400执行扫描测试。由于面积上的限制,如GPU 400的大规模模块很难通过双锁步检查操作。另一方面,根据第八实施例,可以在CPU 100的控制下按定期的时间间隔通过运行时测试检查大规模GPU 400的正常操作。
<第九实施例>
在下文中对第九实施例进行描述。在下面第九实施例的描述中,由相同附图标记等等指示与上面描述的第一至第七实施例中相同的事项,并在适当时省略其描述。如图26所示,根据第九实施例的半导体装置9与根据第三实施例的半导体装置3相比还具有计时器28至31。
上面描述的计时器15是测量所经过的时间并通过中断向CPU 103通知执行运行时测试的定时的电路。另一方面,计时器28至31中的每一个是以与计时器15相同的方式测量所经过的时间并通过中断向CPU 102至100和共用电路120中的每一个通知执行运行时测试的定时的电路。注意,CPU集群10设置计时器28至31以便在启动半导体装置9之后在每个DTI处通知运行时测试的执行定时,正如计时器15一样。例如,可以预先任意地确定设置计时器15和28至21的CPU。
具体地,在中断控制器14处,CPU 102被预设为要被通知与来自计时器28的中断相对应的中断信号的电路,CPU 101被预设为要被通知与来自计时器29的中断相对应的中断信号的电路,CPU 100被预设为要被通知与来自计时器30的中断相对应的中断信号的电路,以及CPU 100被预设为要被通知与来自计时器31的中断相对应的中断信号的电路。
CPU 103响应于来自计时器15的中断执行控制以执行CPU 103的运行时测试,这与上面描述的第一至第八实施例相同。CPU 102不响应于来自CPU 103的CPU中断而响应于来自计时器28的中断执行控制以执行CPU 102的运行时测试,这与第一至第八实施例不同。CPU 101不响应于来自CPU 102的CPU中断而响应于来自计时器29的中断执行控制以执行CPU 101的运行时测试,这与第一至第八实施例不同。CPU 100不响应于来自CPU 101的CPU中断而响应于来自计时器30的中断执行控制以执行CPU 100的运行时测试,这与第一至第八实施例不同。此外,CPU 100不在执行CPU 100的运行时测试之后而是响应于来自计时器31的中断执行控制以执行共用电路120的运行时测试,这与第一至第八实施例不同。因此,在第九实施例中,CPU 103至101中的每一个不向CPU 102至100中的每一个通知CPU中断。
如上所述,可以通过为CPU 100至103和共用电路120中的每一个准备专用计时器15和28至31以执行运行时测试。
<其它实施例>
(用运行时测试替代加电自测试)
在CPU 100至103中,通常执行加电自测试(POST)以在加电之后不久检测潜在故障(latent fault);然而,可以执行上面描述的运行时测试而不是POST。
由于启动时间的约束,通常还在加电之后不久对自测试时间施加时间限制。因此,当用BIST对大规模电路进行诊断时,存在BIST未在时间限制内结束的可能性。然而,在不需要在加电之后不久就使用的电路中,可以由上面描述的运行时测试代替就在加电之后的POST。
因此,对于预先确定为不需要对启动时间进行限制的电路的CPU 100至103当中的至少一个CPU,可以执行上面描述的运行时测试而不是POST。
例如,对于CPU 100至103中的每一个,可以将指示其是否要执行POST的CPU的设定值预先存储在BIST控制器11中的控制寄存器中。随后,基于控制寄存器的设定值,对于不执行POST的CPU,BIST控制器11可以在引导该CPU之后执行运行时测试。
例如,BIST控制器11可以通过中断控制器14向BIST控制器11不执行POST的CPU通知中断,以及CPU可以响应于中断启动控制以执行其本身的运行时测试。注意,例如,BIST控制器11可以识别是否已经引导CPU,因此CPU向BIST控制器11传输指示引导的状态信号。尽管在上面的描述中采用CPU 100至103作为示例,但是相同想法理所当然适用于GPU 400。
(在没有计时器的情况下通知启动/再开始运行时测试的定时)
此外,尽管在上面描述的实施例中计时器15和27至31通知启动运行时测试的定时,以及计时器25通知再开始运行时测试的定时,但是本发明并不限于此。例如,BIST控制器11可以通知启动或者再开始运行时测试的定时。例如,设置启动或者再开始运行时测试的定时的寄存器置于BIST控制器11中。BIST控制器11在设置到寄存器的启动或者再开始定时处向CPU 100至103、共用电路120和GPU 400中的每一个通知启动或者再开始运行时测试的定时。
注意,BIST控制器11识别启动或者再开始定时的技术可以使用通过基于时钟信号的递减计数识别定时的技术(如计时器)或者使用通过参照置于半导体装置外部的计时器(挂钟)的输出值(指示时间的值)识别定时的技术。
(使系统总线和总线控制器二重化(dualization))
运行时测试的测试目标不限于上面的示例,并且目标可以是包括L3高速缓存存储器和其高速缓存控制器的电路,或者系统总线、监听控制系统单元23和总线控制器(DDR控制器16和外部总线控制器17)。注意,然而,当系统总线、监听控制系统单元23和总线控制器充当测试目标时,它们可以阻碍系统中的事务,导致系统性能退化。因此,在该情况下,如图27所示可以使系统总线、监听控制系统单元23和总线控制器二重化,并且可以使用没在执行运行时测试的系统总线、监听控制系统单元23和总线控制器,从而减小系统性能的退化。
尽管将使系统总线、监听控制系统单元23和总线控制器中的全部二重化的情况被描述为示例,但是本发明并不限于此。可以使系统总线、监听控制系统单元23和总线控制器中的任何一个或者两个二重化。此外,同样对于总线控制器,可以使DDR控制器16和外部总线控制器17中的任何一个二重化。此外,在使任何电路二重化的情况下,如果使二重电路一直工作,并且将不断检查对应输出信号的匹配的比较电路分开地放置,则不需要将电路设置为运行时测试的测试目标。
尽管在上述中具体地描述本发明的实施例,但是本发明不限于上面描述的实施例,并在不背离本发明范围的情况下可以作出各种改变和修改。
尽管在上面的实施例中描述了执行运行时测试的运算元件单元(运算电路)是CPU的情况,但是本发明并不限于此。例如,多线程处理器或者众核处理器中的核心可以用作执行运行时测试的运算元件单元(运算电路)。
安装复位屏蔽电路18和中断屏蔽电路19的位置不限于上面实施例中描述的示例。例如,复位屏蔽电路18可以包括在复位控制器13或者CPU集群10中。此外,例如,中断屏蔽电路19可以置于时钟控制器12、中断控制器14或者CPU集群10中。
尽管在上面描述的实施例中在运行时测试之前保存测试目标电路的寄存器中的数据以及在运行时测试之后恢复测试目标电路的寄存器中的数据,但是本发明并不限于此。例如,可以使寄存器二重化并可以比较对偶寄存器的值以检测寄存器的故障,以及寄存器不用作扫描测试目标使得可以在运行时测试之前和之后维持寄存器的数据。此外,可以使寄存器二重化,并且对偶寄存器中的一个可以用作用于保存的寄存器而不用作扫描测试目标。这在将寄存器的数据保存到存储器21中花费很长时间时是有效的。
在上面描述的实施例中,CPU 100至103中的每一个在执行运行时测试之后通过参照BIST控制器11中的控制寄存器检查是否通过复位对其进行引导并改变复位处理程序中的操作;然而,本发明并不限于此。例如,CPU 100至103中的每一个可以在执行运行时测试之前用用于运行时测试的专用复位向量对复位向量进行重写并从而执行用于运行时测试的复位处理程序,该复位处理程序执行诸如在上面描述的运行时测试执行结果与期望值之间的比较的处理。随后,最终在用于运行时测试的复位处理程序中执行处理以将复位向量设置回其原始状态,使得在正常复位之后执行正常复位处理程序。
尽管在上面描述的实施例中在复位共用电路120时通过初始化屏蔽电路122a执行L2高速缓存存储器124和SCU标签RAM 126的初始化,但是本发明并不限于此。例如,也可以在共用电路120复位时通过从共用电路120消除初始化屏蔽电路122a以及通过初始化屏蔽电路122b和122c启用屏蔽禁止L2高速缓存存储器124和SCU标签RAM 126的初始化。
在上面描述的实施例中,在执行CPU 100至103中的每一个的运行时测试之前,CPU100至103中的每一个转变至睡眠模式。然而,只要CPU 100至103中的每一个转变至停止正常操作的模式,本发明就不限于此。例如,CPU 100至103中的每一个可以转变至执行无限循环的模式。
根据正常处理在CPU 100至103中的任何一个不在如上所述用于执行运行时测试的循环模式中而在睡眠模式中的情况下,可以跳过对该CPU的运行时测试。例如,当作为下一个运行时测试目标的CPU在睡眠模式中时,CPU 100至103中的每一个可以跳过该CPU并向作为第二个下一个运行时测试目标的CPU通知CPU中断。此外,当CPU 103转变至睡眠模式时,中断控制器14可以被设定为将要被通知来自计时器15的中断的电路改变为作为第二个下一个运行时测试目标的CPU 102。
此外,尽管在上面描述的实施例中运行时测试目标电路中寄存器的数据保存在DDR存储器20、存储器21和内部存储器50中,也没有必要使用它们中的全部。例如,寄存器的数据可以保存到DDR存储器20、存储器21和内部存储器50中的任何一个或者两个中。
可以如本领域普通技术人员期望组合第一至第九实施例。
尽管已经关于若干实施例描述了本发明,但是本领域技术人员将认识到可以用在所附权利要求精神和范围内的各种修改实施本发明,并且本发明不限于上面描述的示例。
此外,权利要求的范围不受上面描述的实施例限制。
此外,注意,申请人旨在包括所有权利要求要素的等同物,即使权利要求要素之后在审查期间被修改。

Claims (8)

1.一种半导体装置,包括:
存储电路;
处理电路,使用所述存储电路中存储的数据执行处理并且在执行所述处理时将数据写入到所述存储电路中;
扫描测试电路,当所述处理电路不执行处理时对所述处理电路执行扫描测试;以及
禁止电路,当对所述处理电路执行所述扫描测试时禁止从所述处理电路到所述存储电路的数据写入;
其中
所述处理电路包括:
多个运算电路,执行所述处理,以及
共用电路,由所述多个运算电路共享,
所述多个运算电路中的每一个通过转变至睡眠模式悬置所述处理,以及
所述半导体装置还包括:
复位控制器,在对所述共用电路执行所述扫描测试之后向所述多个运算电路和所述共用电路中的每一个输出用于使电路复位的复位信号,以及
复位屏蔽电路,在对所述共用电路执行所述扫描测试之后阻挡分别地输出到所述多个运算电路和所述共用电路的复位信号当中输出到所述多个运算电路的复位信号。
2.根据权利要求1所述的半导体装置,
其中
所述扫描测试电路响应于来自所述多个运算电路中的一个运算电路的指令,对该运算电路执行扫描测试,以及
所述多个运算电路中的一个响应于来自另一个运算电路的中断,指示所述扫描测试电路执行扫描测试,以及在响应于所述指令执行所述扫描测试之后向另一个运算电路通知中断。
3.根据权利要求2所述的半导体装置,其中
每当将通过使用于整个运算电路的扫描测试的多个测试图案分裂而获得的多个单元中的每一个的扫描测试作为分裂扫描测试执行时,所述扫描测试电路结束对所述运算电路的扫描测试的执行,
所述半导体装置还包括计时器,所述计时器测量从所述运算电路的所述分裂扫描测试的结束起的时间以及向所述运算电路通知启动所述运算电路的下一个分裂扫描测试的定时,以及
所述运算电路响应于来自所述计时器的所述通知,指示所述扫描测试电路启动所述分裂扫描测试。
4.根据权利要求1所述的半导体装置,
其中
所述扫描测试电路响应于来自所述运算电路的用于扫描测试的指令,执行所述共用电路的扫描测试,
所述多个运算电路中的一个向所有其它运算电路中的每一个通知中断,指示所述扫描测试电路执行扫描测试,然后通过转变至睡眠模式悬置所述处理,并且
所有其它运算电路中的每一个响应于来自所述多个运算电路的一个的中断,通过转变至所述睡眠模式悬置所述处理。
5.根据权利要求4所述的半导体装置,其中
每当对通过使所述共用电路分裂而获得的多个区域中的每一个执行所述扫描测试时,所述扫描测试电路悬置对所述共用电路的所述扫描测试的执行,
所述半导体装置还包括计时器,所述计时器测量从悬置所述扫描测试到再开始所述扫描测试的时间以及向所述运算电路通知再开始所述扫描测试的定时,以及
所述运算电路响应于来自所述计时器的所述通知,指示所述扫描测试电路再开始所述扫描测试。
6.根据权利要求1所述的半导体装置,
其中
所述半导体装置还包括:
功率控制电路,在所述运算电路转变至所述睡眠模式时断开所述运算电路的电力,以及在通知中断时接通所述运算电路的电力并且通过所述复位控制器使所述运算电路复位,
当对所述运算电路执行扫描测试时,所述运算电路设置所述功率控制电路以禁止所述运算电路断电并且随后通过转变至所述睡眠模式悬置所述处理,并且
所述扫描测试电路在对所述运算电路执行所述扫描测试之后向所述功率控制电路通知中断。
7.根据权利要求1所述的半导体装置,
其中
所述处理电路包括执行所述处理的CPU,
所述半导体装置包括:
硬件加速器,以辅助方式执行所述CPU的处理,以及
计时器,测量经过的时间以及向所述CPU通知对所述硬件加速器执行扫描测试的定时,
所述CPU响应于来自所述计时器的所述通知,指示执行对所述硬件加速器的扫描测试,并且
所述扫描测试电路响应于来自所述CPU的指令,对所述硬件加速器执行所述扫描测试。
8.根据权利要求1所述的半导体装置,
其中
所述多个运算电路当中的至少一个预定运算电路在加电期间不执行POST,以及其它运算电路在加电期间执行POST,以及
当引导不执行POST的所述运算电路时,所述扫描测试电路对所述运算电路执行扫描测试。
CN201610365803.6A 2015-05-27 2016-05-27 半导体装置和诊断测试方法 Active CN106201793B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015107472A JP6438353B2 (ja) 2015-05-27 2015-05-27 半導体装置及び診断テスト方法
JP2015-107472 2015-05-27

Publications (2)

Publication Number Publication Date
CN106201793A CN106201793A (zh) 2016-12-07
CN106201793B true CN106201793B (zh) 2021-07-30

Family

ID=56087122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610365803.6A Active CN106201793B (zh) 2015-05-27 2016-05-27 半导体装置和诊断测试方法

Country Status (6)

Country Link
US (2) US10151796B2 (zh)
EP (1) EP3113023A1 (zh)
JP (1) JP6438353B2 (zh)
KR (1) KR20160140446A (zh)
CN (1) CN106201793B (zh)
TW (1) TW201710700A (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6462870B2 (ja) * 2015-06-18 2019-01-30 ルネサスエレクトロニクス株式会社 半導体装置及び診断テスト方法
US9542290B1 (en) 2016-01-29 2017-01-10 International Business Machines Corporation Replicating test case data into a cache with non-naturally aligned data boundaries
JP6542148B2 (ja) * 2016-03-18 2019-07-10 株式会社東芝 情報処理装置、情報処理方法およびプログラム
US10169180B2 (en) 2016-05-11 2019-01-01 International Business Machines Corporation Replicating test code and test data into a cache with non-naturally aligned data boundaries
US10055320B2 (en) * 2016-07-12 2018-08-21 International Business Machines Corporation Replicating test case data into a cache and cache inhibited memory
JP2018045503A (ja) * 2016-09-15 2018-03-22 ルネサスエレクトロニクス株式会社 描画処理装置、診断テスト方法、及びプログラム
US10223225B2 (en) 2016-11-07 2019-03-05 International Business Machines Corporation Testing speculative instruction execution with test cases placed in memory segments with non-naturally aligned data boundaries
JP6609237B2 (ja) 2016-11-17 2019-11-20 株式会社デンソー 衝突判定装置、及び衝突判定方法
US10261878B2 (en) 2017-03-14 2019-04-16 International Business Machines Corporation Stress testing a processor memory with a link stack
KR102039112B1 (ko) * 2017-06-20 2019-10-31 포스필 주식회사 피시험 디바이스를 테스트하기 위한 프로세서 기반의 계측 방법 및 이를 이용한 계측 장치
JP6771443B2 (ja) * 2017-09-21 2020-10-21 株式会社東芝 演算処理装置およびその方法
EP3462312B1 (en) 2017-09-29 2022-08-17 ARM Limited Permitting unaborted processing of transaction after exception mask update instruction
US10748641B2 (en) * 2017-10-13 2020-08-18 Qualcomm Incorporated Byte enable memory built-in self-test (MBIST) algorithm
US10838835B2 (en) * 2017-12-29 2020-11-17 Intel Corporation Scheduling periodic CPU core diagnostics within an operating system during run-time
US10628277B2 (en) * 2018-03-29 2020-04-21 Arm Ltd. Device, system and process for redundant processor error detection
JP7042709B2 (ja) * 2018-06-28 2022-03-28 ルネサスエレクトロニクス株式会社 半導体装置、制御システムおよび半導体装置の制御方法
US10769071B2 (en) * 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
JP6746659B2 (ja) * 2018-11-09 2020-08-26 華邦電子股▲ふん▼有限公司Winbond Electronics Corp. メモリデバイス及びその内蔵セルフテスト方法
US11281530B2 (en) * 2020-08-10 2022-03-22 Samsung Electronics Co., Ltd. Method and system for validating a memory device
CN112100954B (zh) * 2020-08-31 2024-07-09 北京百度网讯科技有限公司 验证芯片的方法、装置和计算机存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3576457B2 (ja) * 1999-05-11 2004-10-13 シャープ株式会社 1チップマイクロコンピュータおよびその制御方法、ならびにそれを用いたicカード
US7200761B1 (en) * 2000-11-09 2007-04-03 International Business Machines Corporation Method to use secure passwords in an unsecure program environment
US6762614B2 (en) * 2002-04-18 2004-07-13 Agilent Technologies, Inc. Systems and methods for facilitating driver strength testing of integrated circuits
US6983398B2 (en) * 2002-04-24 2006-01-03 Hewlett-Packard Development Company, L.P. Testing processors
JP4526111B2 (ja) * 2003-12-19 2010-08-18 インターナショナル・ビジネス・マシーンズ・コーポレーション マイクロコンピュータおよびデバッグ方法
JP2005235368A (ja) * 2004-01-21 2005-09-02 Matsushita Electric Ind Co Ltd 半導体集積回路の検査方法
US7118285B2 (en) * 2004-11-03 2006-10-10 Hewlett-Packard Development Company, L.P. Optical connections and methods of forming optical connections
US7661048B2 (en) * 2007-06-29 2010-02-09 Alcatel-Lucent Usa Inc. Apparatus and method for embedded boundary scan testing
US20100088446A1 (en) * 2008-10-06 2010-04-08 Texas Instruments Incorporated Prioritizing interrupt controller
JP2010128627A (ja) * 2008-11-26 2010-06-10 Hitachi Automotive Systems Ltd 車載用電子制御装置
JP2010140219A (ja) 2008-12-11 2010-06-24 Renesas Technology Corp 半導体データ処理デバイス
US8122312B2 (en) * 2009-04-14 2012-02-21 International Business Machines Corporation Internally controlling and enhancing logic built-in self test in a multiple core microprocessor
WO2010151197A1 (en) * 2009-06-25 2010-12-29 Telefonaktiebolaget L M Ericsson (Publ) Core network node selection in radiocommunication systems having home gateways
US8527825B2 (en) * 2010-09-21 2013-09-03 Qualcomm Incorporated Debugger based memory dump using built in self test
US8458532B2 (en) * 2010-10-27 2013-06-04 Arm Limited Error handling mechanism for a tag memory within coherency control circuitry
CN102467284B (zh) * 2010-11-13 2016-05-25 宸鸿科技(厦门)有限公司 一种多触摸点的真坐标侦测装置及其侦测方法
US8799713B2 (en) * 2011-03-01 2014-08-05 Texas Instruments Incorporated Interruptible non-destructive run-time built-in self-test for field testing
US20130311843A1 (en) * 2012-05-16 2013-11-21 Lsi Corporation Scan controller configured to control signal values applied to signal lines of circuit core input interface
CN103927241B (zh) * 2014-04-18 2017-02-15 卡斯柯信号有限公司 一种软硬件结合的内存避错方法及其装置

Also Published As

Publication number Publication date
US20160349322A1 (en) 2016-12-01
KR20160140446A (ko) 2016-12-07
TW201710700A (zh) 2017-03-16
EP3113023A1 (en) 2017-01-04
US20190072611A1 (en) 2019-03-07
JP2016224531A (ja) 2016-12-28
JP6438353B2 (ja) 2018-12-12
US10151796B2 (en) 2018-12-11
US10761139B2 (en) 2020-09-01
CN106201793A (zh) 2016-12-07

Similar Documents

Publication Publication Date Title
CN106201793B (zh) 半导体装置和诊断测试方法
US10628275B2 (en) Runtime software-based self-test with mutual inter-core checking
KR102288558B1 (ko) 데이터 처리장치의 메모리 내장 자체 테스트
CN108776619B (zh) 微处理器、管理微处理器的电力消耗的方法及存储介质
US9513687B2 (en) Core synchronization mechanism in a multi-die multi-core microprocessor
TWI613593B (zh) 在微處理器中至多核心的微碼傳播
JP6462870B2 (ja) 半導体装置及び診断テスト方法
CN108984464B (zh) 微处理器及在微处理器的处理核间同步的方法
JP2000112584A (ja) 電源故障対策を備えたコンピュ―タシステム及びその動作方法
CN107729055B (zh) 微处理器及其执行方法
JP7155902B2 (ja) 電子制御装置
JP2011002993A (ja) ウォッチドックタイマ監視装置、ウォッチドックタイマ監視方法
CN109240481B (zh) 多核微处理器及使用其省电的方法
CN110046126B (zh) 多核微处理器及其重新配置方法、计算机可读存储介质
US10008285B2 (en) Semiconductor device
KR102376396B1 (ko) 멀티 코어 프로세서 및 그것의 캐시 관리 방법
JP6637450B2 (ja) トランザクションにおけるレジスタの動的なセーブ
Christoforakis et al. Runtime Adaptation of Embedded Tasks with A-Priori Known Timing Behavior Utilizing On-Line Partner-Core Monitoring and Recovery
JP2000293398A (ja) 内蔵周辺機能モジュールのクロック制御回路を持つプロセッサ

Legal Events

Date Code Title Description
C06 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