KR20160140446A - 반도체 장치 및 진단 테스트 방법 - Google Patents

반도체 장치 및 진단 테스트 방법 Download PDF

Info

Publication number
KR20160140446A
KR20160140446A KR1020160064093A KR20160064093A KR20160140446A KR 20160140446 A KR20160140446 A KR 20160140446A KR 1020160064093 A KR1020160064093 A KR 1020160064093A KR 20160064093 A KR20160064093 A KR 20160064093A KR 20160140446 A KR20160140446 A KR 20160140446A
Authority
KR
South Korea
Prior art keywords
circuit
cpu
processing
scan test
test
Prior art date
Application number
KR1020160064093A
Other languages
English (en)
Inventor
신이찌 시바하라
다이스께 가와까미
유따까 이가꾸
Original Assignee
르네사스 일렉트로닉스 가부시키가이샤
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 르네사스 일렉트로닉스 가부시키가이샤 filed Critical 르네사스 일렉트로닉스 가부시키가이샤
Publication of KR20160140446A publication Critical patent/KR20160140446A/ko

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
    • 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/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/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)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

본 발명은, 스캔 테스트를 실행했다고 해도, 테스트 대상의 처리 회로가 액세스하는 기억 회로에 저장되는 데이터의 재기입을 억제하는 것을 과제로 한다. 본 발명에 따른 반도체 장치는, 기억 회로와, 기억 회로에 저장된 데이터를 이용하여 처리를 실행함과 함께, 처리의 실행에 따라 기억 회로에 데이터를 기입하는 처리 회로와, 처리 회로가 처리를 실행하지 않을 때, 처리 회로에 대한 스캔 테스트를 실행하는 스캔 테스트 회로와, 처리 회로에 대한 스캔 테스트를 실행하고 있을 때, 처리 회로부터 기억 회로에 대한 데이터의 기입을 억제하는 억제 회로를 구비한다.

Description

반도체 장치 및 진단 테스트 방법{SEMICONDUCTOR APPARATUS AND DIAGNOSTIC TEST METHOD}
본 발명은 반도체 장치 및 진단 테스트 방법에 관한 것으로, 예를 들어 기억 회로에 액세스하는 처리 회로의 진단 테스트를 실행하는 기술에 관한 것이다.
기능 안전을 서포트하는 반도체 장치에서는, 회로가 정확하게 동작하고 있는지 여부를 정기적으로 진단하는 기구가 필요해지고 있다. 진단 대상의 회로가 논리 규모가 작은 CPU(Central Processing Unit)인 경우에는, 로크 스텝을 실장함으로써, CPU가 정확하게 동작하고 있는지 여부를 진단할 수 있다. 로크 스텝은, 복수의 동일한 CPU를 반도체 장치에 탑재하여, 모든 CPU가 동일한 동작을 하고 있는지 여부를 판정함으로써, 회로가 정확하게 동작하고 있는지 여부를 진단하는 기구이다. 따라서, 진단 대상의 회로가 논리 규모가 큰 CPU인 경우에, CPU의 실장 수가 증대해 버리기 때문에, 회로 면적의 제약상 로크 스텝을 실장할 수 없다는 문제가 있다.
로크 스텝 이외에 회로가 정확하게 동작하고 있는지 여부를 진단하는 기구로서, 소프트웨어에 의한 셀프 테스트도 고려된다. 그러나, 소프트웨어에 의한 셀프 테스트는, 일반적으로 소프트웨어의 개발 비용이 크다는 문제가 있다. 그로 인해, 특허문헌 1에 개시된 바와 같이, 회로가 정확하게 동작하고 있는지 여부를 진단하는 기구로서, BIST(Built In Self Test)가 채용되고 있다.
그러나, BIST로 대표되는 스캔 테스트를 실행한 경우에는, 테스트 대상의 처리 회로가 액세스하는 기억 회로에 저장되는 데이터가 재기입되어 버린다는 문제가 있다. 예를 들어, 스캔 테스트의 실행 후에는, 테스트 대상의 처리 회로를 다시 동작 가능하게 하기 위해서 처리 회로를 리셋할 필요가 있지만, 그 리셋에 수반되어 처리 회로가 기억 회로에 저장되는 데이터를 초기화해 버리는 경우가 있다. 또한, 예를 들어 스캔 테스트의 실행에 수반되어 테스트 대상의 처리 회로부터 기억 회로에 대하여 의도하지 않는 데이터의 기입이 행해져 버리는 경우가 있다. 특히, 기억 회로가 캐시 메모리인 경우에는, 그 데이터가 초기화되어 버리면, 스캔 테스트의 실행 후에 처리 회로가 처리를 재개했을 때 캐시 미스가 다발하여 성능 열화를 초래해 버린다는 문제도 발생한다.
일본 특허공개 제2010-140219호 공보
전술한 바와 같이, 스캔 테스트의 실행에 수반되어 테스트 대상의 처리 회로가 액세스하는 기억 회로에 저장되는 데이터가 재기입되어 버린다는 문제가 있다.
그 밖의 과제와 신규 특징은, 본 명세서의 기술 및 첨부 도면으로부터 명백해질 것이다.
일 실시 형태에 의하면, 반도체 장치는, 기억 회로에 저장된 데이터를 이용해서 처리를 실행함과 함께, 처리의 실행에 따라 기억 회로에 데이터를 기입하는 처리 회로에 대한 스캔 테스트를 실행하고 있을 때, 처리 회로부터 기억 회로에 대한 데이터의 기입을 억제하는 것이다.
상기 일 실시 형태에 의하면, 스캔 테스트를 실행했다고 해도, 테스트 대상의 처리 회로가 액세스하는 기억 회로에 저장되는 데이터의 재기입을 억제할 수 있다.
도 1은, 실시 형태 1에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 2는, FTTI 및 DTI에 대해 설명하기 위한 도면이다.
도 3은, 실시 형태 1에 따른 CPU 클러스터의 구성을 나타내는 블록도이다.
도 4는, 실시 형태 1에 따른 CPU 클러스터의 구성을 나타내는 블록도이다.
도 5는, 실시 형태 1에 따른 CPU에 대한 런타임 테스트의 실행 수순을 나타내는 타이밍 차트이다.
도 6은, 실시 형태 1에 따른 공통 회로에 대한 런타임 테스트의 실행 수순을 나타내는 타이밍 차트이다.
도 7은, 실시 형태 1에 따른 CPU 클러스터의 런타임 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 8은, 실시 형태 1에 따른 CPU의 런타임 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 9는, 실시 형태 1에 따른 CPU의 런타임 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 10은, 실시 형태 1에 따른 CPU의 런타임 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 11은, 실시 형태 1에 따른 공통 회로의 런타임 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 12는, 실시 형태 2에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 13은, 실시 형태 3에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 14는, 실시 형태 4에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 15는, 실시 형태 4에 따른 런타임 테스트의 분할예를 나타내는 도면이다.
도 16은, 실시 형태 4에 따른 CPU 클러스터의 런타임 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 17은, 실시 형태 4에 따른 CPU의 1회째의 분할 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 18은, 실시 형태 4에 따른 CPU의 2회째의 분할 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 19는, 실시 형태 4에 따른 공통 회로의 1회째의 분할 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 20은, 실시 형태 4에 따른 공통 회로의 2회째의 분할 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 21은, 실시 형태 5에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 22는, 실시 형태 6에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 23은, 실시 형태 7에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 24는, 실시 형태 8에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 25는, 실시 형태 8에 따른 GPU의 런타임 테스트 실행 시의 동작을 나타내는 타이밍 차트이다.
도 26은, 실시 형태 9에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 27은, 다른 실시 형태에 따른 반도체 장치의 구성을 나타내는 블록도이다.
도 28은, 실시 형태에 따른 반도체 장치의 개략 구성을 나타내는 블록도이다.
이하, 도면을 참조하면서, 바람직한 실시 형태에 대하여 설명한다. 이하의 실시 형태에 나타내는 구체적인 수치 등은, 실시 형태의 이해를 용이하게 하기 위한 예시에 지나지 않으며, 특별히 언급하는 경우를 제외하고, 그것으로 한정되는 것은 아니다. 또한, 이하의 기재 및 도면에서는, 설명의 명확화를 위해, 당업자에게 있어서 자명한 사항 등에 대해서서는, 적절히 생략 및 간략화가 이루어져 있다.
<실시 형태 1>
도 1을 참조하여, 실시 형태 1에 따른 반도체 장치(1)의 구성에 대하여 설명한다. 도 1에 도시한 바와 같이, 반도체 장치(1)는 CPU 클러스터(10)와, BIST 컨트롤러(11)와, 클럭 컨트롤러(12)와, 리셋 컨트롤러(13)와, 인터럽트 컨트롤러(14)와, 타이머(15)와, DDR(Double-Data-Rate) 컨트롤러(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)의 각각은, CPU 클러스터(10)와 시스템 버스를 통해 접속되는 인터럽트 컨트롤러(14), DDR 컨트롤러(16), 외부 버스 컨트롤러(17), 및 내장 메모리(50)에 대하여, 공통 회로(120)를 통해 액세스한다. 또한, CPU(100∼103)의 각각은, CPU 클러스터(10)와 시스템 버스 및 로컬 버스를 통해 접속되는 BIST 컨트롤러(11), 클럭 컨트롤러(12), 리셋 컨트롤러(13), 및 타이머(15)에 대하여, 공통 회로(120)를 통해 액세스한다.
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) 중, 어느 한쪽의 회로를 리셋하는 경우, 그 회로에 리셋 신호를 출력한다. CPU(100∼103) 및 공통 회로(120)의 각각은, 리셋 컨트롤러(13)로부터의 리셋 신호의 입력에 따라서 리셋된다.
인터럽트 컨트롤러(14)는, 반도체 장치(1) 내의 회로가 각 CPU(100∼103)에 대하여 발생시킨 인터럽트 및 외부로부터의 인터럽트를, 각 CPU(100∼103)에 통지하는 회로이다. 보다 구체적으로는, 인터럽트 컨트롤러(14)는 반도체 장치(1) 내의 회로 및 외부로부터의 인터럽트 신호의 입력에 따라서, 그 인터럽트 신호의 통지처로서 설정된 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)로 출력한다. 또한, 예를 들어, 외부 버스 컨트롤러(17)는, CPU 클러스터(10)로부터의 데이터의 라이트 요구에 응답하여, CPU 클러스터(10)로부터 출력된 데이터를 메모리(21)에 기입한다.
리셋 마스크 회로(18)는, 리셋 컨트롤러(13)로부터 CPU(100∼103) 및 공통 회로(120)의 각각에 대한 리셋을 억제하는 회로이다. CPU(100∼103) 및 공통 회로(120)의 각각에 대해 리셋을 억제할지 여부는, 리셋 마스크 회로(18)에 대하여 임의로 설정할 수 있다. 이 설정은, 리셋 컨트롤러(13)가 갖는 제어 레지스터(도시생략)에 대하여 리셋을 억제할지 여부를 나타내는 값을 설정함으로써 행해진다. 또한, 그 설정도, CPU(100∼103)의 각각으로부터, 임의의 타이밍에 변경하는 것이 가능하다. 리셋 마스크 회로(18)는, 제어 레지스터의 값에 기초하여, CPU(100∼103) 및 공통 회로(120) 중, 리셋을 억제한다고 설정되어 있는 회로에 대한 리셋 컨트롤러(13)로부터의 리셋 신호를 마스크(차단)함으로써, 그 회로의 리셋을 억제한다.
인터럽트 마스크 회로(19)는, 인터럽트 컨트롤러(14)로부터 CPU(100∼103)의 각각에 대한 인터럽트를 억제하는 회로이다. CPU(100∼103)의 각각에 대해 인터럽트를 억제할지 여부는, 인터럽트 마스크 회로(19)에 대하여 임의로 설정할 수 있다. 이 설정은, 클럭 컨트롤러(12)가 갖는 제어 레지스터(도시생략)에 대해 인터럽트를 억제할지 여부를 나타내는 값을 설정함으로써 행해진다. 또한, 그 설정도, CPU(100∼103)의 각각으로부터, 임의의 타이밍에 변경하는 것이 가능하다. 인터럽트 마스크 회로(19)는, 제어 레지스터의 값에 기초하여, CPU(100∼103) 중, 인터럽트를 억제한다고 설정되어 있는 CPU에 대한 인터럽트 컨트롤러(14)로부터의 인터럽트 신호를 마스크(차단)함으로써, 그 회로에 대한 인터럽트를 억제한다.
DDR 메모리(20)와, 메모리(21)와, 내장 메모리(50)는, 각종 데이터가 저장된다. DDR 메모리(20)와, 메모리(21)와, 내장 메모리(50)는, 예를 들어 전술한 바와 같이, CPU(100∼103)의 각각에 의해 사용 및 갱신되는 데이터가 저장된다.
계속해서, 도 2를 참조하여, 실시 형태 1에 따른 런타임 테스트의 실행 타이밍에 대하여 설명한다. ISO26262의 규정에서는, 이상 발생으로부터 그 리커버리에 필요한 시간인 폴트 톨러런트 시간 간격(Fault Tolerant Time Interval: FTTI)을 확보하기 위해서, 진단 테스트 간격(Diagnostic Test Interval: DTI)으로 진단을 행할 필요가 있다고 정해져 있다.
그로 인해, CPU 클러스터(10)는, 반도체 장치(1)의 기동 후에, 런타임 테스트의 실행 타이밍을 DTI마다 통지하도록 타이머(15)를 설정한다. 즉, CPU 클러스터(10)는, DTI마다 인터럽트 신호를 출력하도록 타이머(15)를 설정한다. 보다 구체적으로는, 이 설정은, CPU(100∼103) 중, 어느 한쪽의 CPU에 의해 행해진다. 타이머(15)를 설정하는 CPU는, 예를 들어 미리 정하도록 해도 된다. 또한, FTTI 및 DTI는, 시스템 개발자에 의해 미리 임의의 값을 정할 수 있다.
계속해서, 도 3 및 도 4를 참조하여, 실시 형태 1에 따른 CPU 클러스터(10)의 보다 상세한 구성에 대하여 설명한다. 도 3에 도시한 바와 같이, CPU(100)는, L1 캐시 컨트롤러(114)와, L1 캐시 메모리(115)와, 분기 이력 메모리(브랜치 히스토리 테이블)(116)를 갖는다. 또한, 도 3에서는, CPU(100∼103) 중, CPU(100)의 구성만을 대표적으로 도시하고 있다. 즉, CPU(101∼103)의 구성도, CPU(100)와 마찬가지이기 때문에, 도시 및 그 설명을 생략한다.
L1 캐시 컨트롤러(114)는, CPU(100)에 대하여 메모리(21)로의 데이터의 리드 처리 및 라이트 처리를 제어함과 함께, L1 캐시 메모리(115)를 관리하는 회로이다. L1 캐시 컨트롤러(114)는, CPU(100)가 그 처리에 이용하기 위해 메모리(21)로부터 리드하려고 한 데이터가 L1 캐시 메모리(115)에 저장되어 있는 경우, L1 캐시 메모리(115)로부터 그 데이터를 취득한다.
한편, L1 캐시 컨트롤러(114)는, CPU(100)가 메모리(21)로부터 리드하려고 한 데이터가 L1 캐시 메모리(115)에 저장되지 않는 경우, 그 데이터의 리드를 공통 회로(120)에 대하여 요구함으로써, 그 데이터를 공통 회로(120)의 L2 캐시 메모리(124), 다른 CPU(101∼103)의 L1 캐시 메모리(115), 또는 메모리(21)로부터 취득한다. 보다 구체적으로는, L1 캐시 컨트롤러(114)는, 메모리(21)로부터의 데이터의 리드를 요구하는 리드 요구 신호를 공통 회로(120)로 출력한다. 공통 회로(120)는, 이 리드 요구 신호에 따라서, 리드가 요구된 데이터를, L2 캐시 메모리(124), 다른 CPU(101∼103)의 L1 캐시 메모리(115), 또는 메모리(21)로부터 취득하고, 그 데이터를 포함하는 리드 응답 신호를 CPU(100)로 출력한다. L1 캐시 컨트롤러(114)는, 공통 회로(120)로부터의 리드 응답 신호에 포함되는 데이터를 L1 캐시 메모리(115)에 저장한다. 또한, CPU(100)는, 이 데이터를 이용해서 처리를 실행한다.
L1 캐시 컨트롤러(114)는, CPU(100)가 메모리(21)에 대하여 데이터를 라이트 하고자 한 경우, 그 데이터를 L1 캐시 메모리(115)에 저장한다. 이 데이터는, 임의의 타이밍에 L1 캐시 메모리(115)로부터 메모리(21)에 대하여 플래시된다. 보다 구체적으로는, L1 캐시 컨트롤러(114)는 메모리(21)에 대한 데이터의 라이트를 요구하는 라이트 요구 신호를 공통 회로(120)로 출력한다. 이 라이트 요구 신호에는, 메모리(21)에 대하여 라이트를 요구하는 데이터가 포함된다. 공통 회로(120)는, 이 라이트 요구 신호에 응답하여, 라이트가 요구된 데이터를 L2 캐시 메모리(124) 및 메모리(21)에 저장하기 위한 제어를 행한다.
L1 캐시 메모리(115)는, 전술한 바와 같이, 메모리(21)에 저장되는 데이터가 일시적으로 저장되는 기억 회로이다.
분기 이력 메모리(116)는, CPU(100)가 실행하는 프로그램에 있어서 과거에 실행한 분기 명령에 따라서 분기 처리가 행해졌는지 여부의 이력을 나타내는 정보가 저장된다. 즉, CPU(100)는, 분기 명령을 실행했을 때, 그 분기 명령의 이력을분기 이력 메모리(116)에 저장한다. 이 이력은, 예를 들어 분기 명령의 어드레스와, 그 분기 명령에 따라서 분기한 것인지 여부를 나타낸다. CPU(100)는, 어떤 분기 명령의 분기처를 예측하는 경우, 분기 이력 메모리(116)에 저장된 이력 중, 그 분기 명령과 동일한 어드레스를 나타내는 분기 명령의 이력에 기초하여 분기처를 예측한다.
또한, 도 3에 도시한 바와 같이, 공통 회로(120)는, BIST 컨트롤러(121)와, 초기화 마스크 회로(122)와, L2 캐시 컨트롤러(123)와, L2 캐시 메모리(124)와, 스누프 제어 유닛(SCU)(125)과, SCU 태그 RAM(Random Access Memory)(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)를 관리하는 회로이다. L2 캐시 컨트롤러(123)는, CPU(100)로부터 메모리(21)에 대하여 데이터의 리드가 요구된 경우, 후술하는 바와 같이 스누프 제어 유닛(125)에 의해, 다른 CPU(101∼103)의 L1 메모리(115)로부터, 그 데이터의 취득을 시도한다. L2 캐시 컨트롤러(123)는, 스누프 제어 유닛(125)에 의해 데이터를 취득할 수 없는 경우, L2 캐시 메모리(124)로부터 그 데이터를 취득한다.
한편, L2 캐시 컨트롤러(123)는, CPU(100)로부터 리드가 요구된 데이터가, L2 캐시 메모리(124), 스누프 제어 유닛(125) 중 어느 것으로부터도 취득할 수 없는 경우, 그 데이터의 리드를 외부 버스 컨트롤러(17)에 대하여 요구함으로써, 그 데이터를 메모리(21)로부터 취득한다. 보다 구체적으로는, L2 캐시 컨트롤러(123)는, 메모리(21)로부터의 데이터의 리드를 요구하는 리드 요구 신호를, 시스템 버스를 통해 외부 버스 컨트롤러(17)로 출력한다. 외부 버스 컨트롤러(17)는, 이 리드 요구 신호에 응답하여, 메모리(21)로부터 취득한 데이터를 포함하는 리드 응답 신호를, 시스템 버스를 통해 공통 회로(120)로 출력한다. L2 캐시 컨트롤러(123)는 이 리드 응답 신호에 포함되는 데이터를 취득한다.
L2 캐시 컨트롤러(123)는, L2 캐시 메모리(124), 메모리(21), 혹은 스누프 제어 유닛(125)으로부터 취득된 데이터를, 요구원의 CPU(100)로 출력한다. 보다 구체적으로는, L2 캐시 컨트롤러(123)는, 취득한 데이터를 포함하는 리드 응답 신호를, 요구원의 CPU(100)로 출력한다.
L2 캐시 컨트롤러(123)는, CPU(100)로부터 메모리(21)에 대하여 데이터의 라이트가 요구된 경우, 그 데이터를 L2 캐시 메모리(124)에 저장한다. 이 데이터는, 임의의 타이밍에 L2 캐시 메모리(124)로부터 메모리(21)에 대하여 플래시된다. 보다 구체적으로는, L2 캐시 컨트롤러(123)는 메모리(21)에 대한 그 데이터의 라이트를 요구하는 라이트 요구 신호를, 시스템 버스를 통해 외부 버스 컨트롤러(17)로 출력한다. 외부 버스 컨트롤러(17)는, 이 라이트 요구 신호에 응답하여, 그 라이트 요구 신호에 포함되는 데이터를 메모리(21)에 저장한다.
L2 캐시 메모리(124)는, 전술한 바와 같이, 메모리(21)에 저장되는 데이터가 일시적으로 저장되는 기억 회로이다. L2 캐시 메모리(124)는 L1 캐시 메모리(115)보다도 하위 레벨의 메모리로 된다.
스누프 제어 유닛(125)은, 복수의 CPU(100∼103) 사이에서의 L1 캐시 메모리(115)의 캐시 일관성을, 스누프 방식에 의해 보증하는 제어를 행한다.
스누프 제어 유닛(125)은, CPU(100)로부터 리드가 요구된 데이터가, 그 리드를 요구한 CPU(100) 이외의 CPU(101∼103) 중 어느 하나의 L1 캐시 메모리(115)에 저장되어 있는지 여부를 판정한다. 스누프 제어 유닛(125)은, 리드를 요구한 CPU(100) 이외의 CPU(101∼103)의 L1 캐시 메모리(115)에 데이터가 저장되었다고 판정된 경우, 해당 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)에 데이터가 저장되었다고 판정된 경우, 해당 CPU에 대하여 그 데이터의 무효화를 요구한다. 보다 구체적으로는, 스누프 제어 유닛(125)은, 그 L1 캐시 메모리(115)를 갖는 CPU에 대하여 그 데이터의 무효화를 요구하는 스누프 요구 신호를 출력한다. 해당 CPU의 L1 캐시 컨트롤러(114)는, 그 스누프 요구 신호에 응답하여, L1 캐시 메모리(115)에 있어서, 스누프 요구 신호에 의해 무효화가 요구된 데이터를 무효화한다. 즉, 이 데이터는, L1 캐시 메모리(115)로부터 삭제되어, L1 캐시 메모리(115)에는 저장되지 않은 것으로 취급된다.
SCU 태그 RAM(126)은, CPU(100∼103)의 L1 캐시 메모리(115)에 저장되어 있는 데이터의 각각이, 메모리(21)에 있어서의 어느 어드레스의 데이터인지를 나타내는 정보가 저장되는 기억 회로이다.
스누프 제어 유닛(125)은, SCU 태그 RAM(126)에 저장된 정보에 기초하여, 전술한 리드 또는 라이트가 요구된 데이터가, 그 리드 또는 라이트를 요구한 CPU(100) 이외의 CPU(101∼103) 중 어느 하나의 L1 캐시 메모리(115)에 저장되어 있는지를 판정한다. 보다 구체적으로는, 리드 요구 신호에는, 리드하는 데이터의 메모리(21)에 있어서의 어드레스가 포함되어 있으며, 라이트 요구 신호에는, 메모리(21)에 있어서 데이터를 라이트하는 어드레스가 포함된다. 스누프 제어 유닛(125)은, 리드 또는 라이트를 요구한 CPU(100) 이외의 CPU(101∼103) 중 어느 하나의 L1 캐시 메모리(115)에 저장되어 있는 데이터 중 어느 하나의 어드레스가, 리드 요구 신호 또는 라이트 요구 신호에 포함되는 어드레스와 일치하는지 여부를 판정한다. 어드레스가 일치하는 경우, 그 리드 또는 라이트를 요구한 CPU(100) 이외의 CPU(101∼103) 중 어느 하나의 L1 캐시 메모리(115)에 저장되어 있는 데이터에 대하여, 전술한 데이터의 요구 또는 무효화의 요구가 행해진다.
따라서, CPU(100∼103)의 각각의 L1 캐시 컨트롤러(114)는, L1 캐시 메모리(115)에 데이터를 저장한 경우, 그 데이터의 메모리(21)에 있어서의 어드레스를 공통 회로(120)에 통지한다. 공통 회로(120)의 스누프 제어 유닛(125)은, CPU(100∼103)의 각각의 L1 캐시 컨트롤러(114)로부터의 어드레스의 통지에 따라서, 통지원의 CPU의 L1 캐시 메모리(115)에 통지된 어드레스의 데이터가 저장되어 있는 것을 나타내도록 SCU 태그 RAM(126)을 갱신한다. 또한, 공통 회로(120)의 L2 캐시 컨트롤러(123)는 통지된 어드레스의 데이터가 L2 캐시 메모리(124)에 저장되어 있는 경우, 그 데이터는 최신 데이터가 아니게 되기 때문에, 그 데이터를 무효화한다.
액세스 이력 메모리(127)는, L2 캐시 메모리(124)에 있어서의 캐시 라인에 대한 액세스 이력을 나타내는 정보이다. 또한, 이 액세스 이력은, L2 캐시 메모리(124)에 데이터를 기입하는 경우에, 리필(겹쳐쓰기) 대상으로 되는 캐시 라인의 결정에 이용되는 내용을 나타낸다. 예를 들어, 캐시 알고리즘으로서 LRU(Least Recently Used)를 채용한 경우, 액세스 이력은, 동일한 인덱스 어드레스로 특정되는 복수의 way의 각각에 대응하는 복수의 캐시 라인 중, 가장 오래 액세스된 캐시 라인을 나타낸다. 또한, 예를 들어 캐시 알고리즘으로서 LFU(Least Frequently Used)를 채용한 경우, 액세스 이력은, 동일한 인덱스 어드레스로 특정되는 복수의 way의 각각에 대응하는 복수의 캐시 라인의 각각의 데이터의 액세스 빈도를 나타낸다. L2 캐시 컨트롤러(123)는, L2 캐시 메모리(124)로의 액세스에 따라서, 액세스 이력 메모리(127)에 저장되는 정보를 갱신한다. 또한, L2 캐시 컨트롤러(123)는, L2 캐시 메모리(124)에 데이터를 기입하는 경우, 액세스 이력 메모리(127)에 저장되는 정보에 기초하여, 리필(겹쳐쓰기) 대상으로 되는 캐시 라인을 결정한다.
또한, 도 3에 도시한 바와 같이, CPU 클러스터(10)는, 래퍼 회로(130)를 갖는다. 래퍼 회로(130)는 복수의 마스크 회로(131∼134)를 갖는다. 또한, 도 3에서는, CPU(100∼103) 중, CPU(100)에 대한 래퍼 회로(130)만을 대표적으로 도시하고 있다. 즉, CPU(101∼103)에 대해서도, CPU(100)와 마찬가지로 래퍼 회로(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)로부터, 임의의 타이밍에 변경하는 것이 가능하다. 따라서, CPU(101)의 마스크 회로(131∼134)의 설정은 BIST 컨트롤러(111)가 변경하고, CPU(102)의 마스크 회로(131∼134)의 설정은 BIST 컨트롤러(112)가 변경하고, CPU(103)의 마스크 회로(131∼134)의 설정은 BIST 컨트롤러(113)가 변경하게 된다. 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)의 각각으로 출력한다. L2 캐시 컨트롤러(123) 및 스누프 제어 유닛(125)의 각각은, 공통 회로(120)의 리셋 시에, 그 지시 신호가 입력되어 있는 경우, 공통 회로(120)의 리셋 해제에서 실행하는 L2 캐시 메모리(124) 및 SCU 태그 RAM(126)의 각각에 대한 데이터의 초기화 위한 기입을 행하지 않도록 한다. 초기화 마스크 회로(122a)는, 공통 회로(120)의 런타임 테스트 실행 후의 리셋 시에서의, L2 캐시 메모리(124) 및 SCU 태그 RAM(126)의 초기화를 억제하도록, 그 동작을 유효화한다.
또한, 이 지시 신호에 따라서 초기화를 위한 기입을 실행할지 여부의 동작을 변경하는 기능은, 일반적으로, L2 캐시 컨트롤러(123) 및 스누프 제어 유닛(125)에, (1) 디버그 목적, 혹은, (2) CPU 클러스터(10)가 전력 절약 상태(일부 전원 OFF 상태)로부터 복귀할 때의 데이터 보유 목적으로 이용된다. 보다 구체적으로는, (1)에서는, CPU 클러스터(10)가 이상 정지한 후에 CPU 클러스터(10)를 리셋하여 재기동할 때 디버그를 위해 데이터를 남길 목적으로 이용된다. 또한, (2)에서는, CPU 클러스터(10) 내의 모든 CPU(100∼103)가 슬립하여, CPU(100∼103), 스누프 제어 유닛(125) 및 L2 캐시 컨트롤러(123)를 전원 절단한 전력 절약 상태로부터, 그들을 리셋해서 복귀할 때 처리를 계속 가능하게 하기 위해 데이터를 이어받을 목적으로 이용된다. 본 실시 형태 1에서는, 이 기능을 런타임 테스트의 실행에 유용함으로써, 런타임 테스트 실행 시에서의 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)가 갖는 제어 레지스터(도시생략)에 대하여 초기화 또는 기입을 억제할지 여부를 나타내는 값을 설정함으로써 행해진다. 또한, 그 설정도, CPU(100∼103) 중, 공통 회로(120)의 런타임 테스트의 실행을 제어하는 CPU로부터, 임의의 타이밍에 변경하는 것이 가능하다.
또한, 도 4에 도시한 바와 같이, 공통 회로(120)는 래퍼 회로(140)를 갖는다. 래퍼 회로(140)는 복수의 마스크 회로(141∼150)를 갖는다.
마스크 회로(141, 143, 145, 147)의 각각은, CPU(100∼103)의 각각으로부터 공통 회로(120)에 입력되는 신호를 마스크(차단)하는 회로이다. 이 신호에는, 예를 들어 리드 요구 신호, 라이트 요구 신호, 및 스누프 응답 신호가 포함된다.
마스크 회로(142, 144, 146, 148)의 각각은, 공통 회로(120)로부터 CPU(100∼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) 및 내장 메모리(50)의 데이터도 마찬가지의 제어에 의해 저장되도록 해도 된다. 이후의 설명에 있어서도 마찬가지이다.
계속해서, 도 5를 참조하여, 실시 형태 1에 따른 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)의 런타임 테스트를 실행함으로써, CPU(100)의 L1 캐시 메모리(115)의 데이터가 삭제되어 버려도, 런타임 테스트 종료 후에 CPU(100∼103)에 의해 실행하는 처리에 부정합이 발생하지 않도록 할 수 있다. CPU(100)는, 인터럽트 컨트롤러(14)로부터 자신에 대한 인터럽트 신호를 마스크하도록, 인터럽트 마스크 회로(19)를 설정한다(S4). 그리고, CPU(100)는, 자신을 WFI(Wait For Interrupt) 명령(슬립 명령)에 의해 슬립 상태로 이행한다(S5). 이 WFI 명령에 의해 이행하는 슬립 상태는, 인터럽트의 통지에 따라서 기상하는 슬립 상태이다. 여기서, WFI에 의한 슬립 상태로의 이행 중에 인터럽트를 받아 버리면, CPU(100)는, 슬립 상태로의 이행을 중지해 버린다는 문제가 있다. 그로 인해, 이것을 방지하기 위해서, CPU(100)로의 인터럽트 신호를 마스크하도록 하고 있다. CPU(100)는, 슬립 상태로 이행하면, 자신이 슬립 상태인 것을 통지하는 스테이터스 신호를 BIST 컨트롤러(11)로 출력한다.
BIST 컨트롤러(11)는, 테스트 대상으로 해서 설정된 CPU(100)로부터, 슬립 상태인 것을 통지하는 스테이터스 신호가 출력됨에 따라서, CPU(100)의 런타임 테스트의 개시를 BIST 컨트롤러(110)에 지시한다. BIST 컨트롤러(110)는, BIST 컨트롤러(11)로부터의 지시에 응답하여, CPU(100)의 런타임 테스트를 개시한다. 우선, BIST 컨트롤러(110)는, CPU(100)의 래퍼 회로(130)의 마스크 회로(131∼134)가 신호를 마스크하도록 설정한다(S6). 이에 의해, 테스트 대상의 CPU(100)와 접속되는 다른 회로에 대하여 의도하지 않은 불필요한 신호가 전달되는 것과, 다른 회로로부터 테스트 대상의 CPU(100)에 대하여 의도하지 않는 불필요한 신호가 전달하는 것을 방지한다.
BIST 컨트롤러(110)는, CPU(100)의 런타임 테스트를 실행한다(S7). 보다 구체적으로는, BIST 컨트롤러(110)는 CPU(100)의 논리 회로에 대하여 스캔 테스트(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)의 논리 회로가 정상이라고 판정하고, 비교한 결과가 일치하지 않는 경우에는, CPU(100)의 논리 회로가 고장이라고 판정한다.
또한, BIST 컨트롤러(110)는 순차, 테스트 패턴을 생성하고, CPU(100)의 기억 회로에 기입한다. BIST 컨트롤러(110)는, CPU(100)의 기억 회로로부터 기입한 테스트 패턴을 판독한다. BIST 컨트롤러(110)는, 기입 전의 (기입에 사용한) 테스트 패턴과, 판독한 테스트 패턴을 비교한다. 그리고, BIST 컨트롤러(110)는, 비교한 값이 일치하는 경우에는, CPU(100)의 기억 회로가 정상이라고 판정하고, 비교한 결과가 일치하지 않는 경우에는, CPU(100)의 기억 회로가 고장이라고 판정한다. 여기서, 자신이 에러를 검출하는 기구[예를 들어 ECC(Error Checking and Correction)]를 갖고 있는 기억 회로[예를 들어 L1 캐시 메모리(115)]는, MBIST의 대상 외로 된다.
BIST 컨트롤러(110)는, CPU(100)의 논리 회로 및 기억 회로가 모두 정상이라고 판정된 경우, CPU(100)가 정상임을 나타내는 런타임 테스트 결과값을, BIST 컨트롤러(11)의 결과 레지스터에 저장한다. 한편, BIST 컨트롤러(110)는, CPU(100)의 논리 회로 및 기억 회로 중 어느 하나가 고장이라고 판정된 경우, CPU(100)가 고장임을 나타내는 런타임 테스트 결과값을, BIST 컨트롤러(11)의 결과 레지스터에 저장한다.
BIST 컨트롤러(110)는, CPU(100)의 런타임 테스트의 실행 후, CPU(100)의 래퍼 회로(130)의 마스크 회로(131∼134)가 신호의 마스크를 해제하도록 설정한다(S8). BIST 컨트롤러(110)는 CPU(100)의 런타임 테스트의 실행 종료를 BIST 컨트롤러(11)에 통지한다. BIST 컨트롤러(11)는, BIST 컨트롤러(110)로부터의 통지에 따라서, 리셋 컨트롤러(13)에 대하여 테스트 대상의 CPU(100)의 리셋을 요구하는 요구 신호를 출력한다(S9). 리셋 컨트롤러(13)는, BIST 컨트롤러(11)로부터의 요구 신호에 응답하여, 그 요구 신호에 의해 요구된 CPU(100)에 대하여 리셋 신호를 출력한다. 이에 의해, CPU(100)가 리셋된다.
CPU(100)는, 리셋에 의한 부팅 시에, 자신의 리셋 요인을 확인한다(S10). 보다 구체적으로는, CPU(100)는, 시스템 버스를 통해 BIST 컨트롤러(11)가 갖는 제어 레지스터를 참조함으로써, 자신이 런타임 테스트 실행 후의 리셋에 의해 부팅한 것인지 여부를 확인한다. 즉, BIST 컨트롤러(11)는 CPU(100)의 런타임 테스트를 실행한 경우에는, 제어 레지스터에 CPU(100)의 런타임 테스트를 실행한 것을 나타내는 데이터를 저장하고 있다. 이 CPU(100)의 런타임 테스트를 실행한 것을 나타내는 데이터는, CPU(100)에 의한 확인 후, CPU(100)에 의해 제어 레지스터로부터 삭제된다.
CPU(100)는, 자신이 런타임 테스트 실행 후의 리셋에 의해 부팅한 것을 확인한 경우, 그 부팅 시의 처리에 있어서, 시스템 버스를 통해 BIST 컨트롤러(11)가 갖는 결과 레지스터에 저장된 런타임 테스트 결과값을 취득하여(S11), 런타임 테스트를 종료한다(S12).
CPU(100)는, 런타임 테스트 결과값이, CPU(100)가 정상임을 나타내고 있는 경우, 상기 스텝 S3에서 저장한 데이터를 CPU(100)의 레지스터로 복귀시킨다(S13). CPU(100)는, 인터럽트 컨트롤러(14)로부터 자신에 대한 인터럽트 신호의 마스크를 해제하도록, 인터럽트 마스크 회로(19)를 설정한다(S14). 그리고, CPU(100)는, 런타임 테스트 실행 전에 실행하고 있던 프로그램의 실행을 재개한다.
한편, CPU(100)는, 런타임 테스트 결과값이, CPU(100)가 고장임을 나타내고 있는 경우, 그에 따른 고장 대책 루틴을 실행한다. 고장 대책 루틴으로서, 예를 들어 반도체 장치(1)에 있어서의 시스템 전체를 셧다운하는 처리를 실행해도 되며, 고장인 CPU(100)를 축퇴하고, 다른 CPU(101∼103)에 의해 반도체 장치(1)에서의 시스템의 동작을 계속하도록 해도 된다.
또한, CPU(100)는, 자신이 런타임 테스트 실행 후의 리셋에 의해 부팅하지 않은 경우(통상의 리셋 후의 부팅인 경우), 통상의 리셋 후의 부팅 시의 처리를 실행하고, 이 런타임 테스트 결과값을 취득하는 처리, 및 그 값에 따른 처리를 실행하지 않는다.
계속해서, 도 6을 참조하여, 실시 형태 1에 따른 공통 회로(120)에 대한 런타임 테스트의 실행 수순에 대하여 설명한다. 이하, 본 실시 형태 1에서는, CPU(100)가 공통 회로(120)의 런타임 테스트의 실행을 제어하는 수순에 대하여 설명하지만, CPU(100) 대신에 CPU(101∼103) 중 어느 하나가 공통 회로(120)의 런타임 테스트의 실행을 제어하는 형태로 하여도 된다.
CPU(100)는, 자신의 런타임 테스트의 실행 후에, 공통 회로(120)의 런타임 테스트를 실행하는 제어를 개시한다. 우선, CPU(100)는, 자신과 공통 회로(120)를 공유하는 다른 CPU(101∼103)의 각각에 대하여 CPU 간 인터럽트를 통지한다(S21). CPU(101∼103)의 각각은, 이 CPU 간 인터럽트에 응답하여, 자신을 WFI 명령에 의해 슬립 상태로 이행시킨다.
CPU(100)는, 시스템 버스를 통해 테스트 조건을 BIST 컨트롤러(11)의 제어 레지스터에 대하여 설정한다(S22). 이 테스트 조건의 설정에는, 전술한 바와 같이 테스트 대상의 설정이 포함된다. 보다 구체적으로는, CPU(100)는, BIST 컨트롤러(11)에 대하여 공통 회로(120)를 테스트 대상으로서 설정한다.
CPU(100)는, 시스템 버스를 통해, 런타임 테스트의 기동을 BIST 컨트롤러(11)에 지시한다(S23). BIST 컨트롤러(11)는, 이 지시에 응답하여, CPU(100∼103)의 모두가 슬립 상태로 이행하는 것을 대기한다.
CPU(100)는, 공통 회로(120)가 갖는 레지스터에 저장된 데이터를 DDR 메모리(20), 메모리(21), 및 내장 메모리(50)에 저장(라이트)한다(S24). CPU(100)는, 인터럽트 컨트롤러(14)로부터 다른 CPU(101∼103)에 대한 인터럽트 신호를 마스크하도록 인터럽트 마스크 회로(19)를 설정한다. CPU(100)는, BIST 컨트롤러(11)로부터의 인터럽트만에 대하여, CPU(100)에 대해 인터럽트 신호를 출력하도록, 시스템 버스를 통해 인터럽트 컨트롤러(14)를 설정한다. 즉, CPU(100)는, BIST 컨트롤러(11) 이외로부터 인터럽트에 대해 인터럽트 신호를 출력하지 않도록 인터럽트 컨트롤러(14)를 설정한다. 또한, CPU(100)는, 리셋 컨트롤러(13)로부터 공통 회로(120)를 이용하는 모든 CPU(100∼103)에 대한 리셋 신호를 마스크하도록 리셋 마스크 회로(18)를 설정한다(S25). 그리고, CPU(100)는, 자신을 WFI 명령에 의해 슬립 상태로 이행한다(S26). CPU(100∼103)의 각각은, 슬립 상태로 이행하면, 자신이 슬립 상태임을 통지하는 스테이터스 신호를 BIST 컨트롤러(11)로 출력한다.
BIST 컨트롤러(11)는 공통 회로(120)를 이용하는 CPU(100∼103)의 모두로부터, 슬립 상태임을 통지하는 스테이터스 신호가 출력됨에 따라서, 공통 회로(120)의 런타임 테스트의 개시를 BIST 컨트롤러(121)에 지시한다. BIST 컨트롤러(121)는 BIST 컨트롤러(11)로부터의 지시에 응답하여, 공통 회로(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)의 논리 회로가 정상적이라고 판정하고, 비교한 결과가 일치하지 않는 경우에는, 공통 회로(120)의 논리 회로가 고장이라고 판정한다.
또한, BIST 컨트롤러(121)는 순차, 테스트 패턴을 생성하고, 공통 회로(120)의 기억 회로에 기입한다. BIST 컨트롤러(121)는, 공통 회로(120)의 기억 회로로부터 기입한 테스트 패턴을 판독한다. BIST 컨트롤러(121)는, 기입 전의 (기입에 사용한) 테스트 패턴과, 판독한 테스트 패턴을 비교한다. 그리고, BIST 컨트롤러(121)는, 비교한 값이 일치하는 경우에는, 공통 회로(120)의 기억 회로가 정상적이라고 판정하고, 비교한 결과가 일치하지 않는 경우에는, 공통 회로(120)의 기억 회로가 고장이라고 판정한다. 여기서, 자신이 에러를 검출하는 기구(예를 들어 ECC)를 갖고 있는 기억 회로[예를 들어 L2 캐시 메모리(124) 및 SCU 태그 RAM(126)]는, MBIST의 대상 외로 된다.
BIST 컨트롤러(121)는, 공통 회로(120)의 논리 회로 및 기억 회로가 모두 정상적이라고 판정한 경우, 공통 회로(120)가 정상적임을 나타내는 런타임 테스트 결과값을, BIST 컨트롤러(11)의 결과 레지스터에 저장한다. 한편, BIST 컨트롤러(121)는, 공통 회로(120)의 논리 회로 및 기억 회로 중 어느 하나가 고장이라 판정한 경우, 공통 회로(120)가 고장임을 나타내는 런타임 테스트 결과값을, BIST 컨트롤러(11)의 결과 레지스터에 저장한다.
BIST 컨트롤러(121)는, 공통 회로(120)의 런타임 테스트의 실행 후, 공통 회로(120)의 래퍼 회로(140)의 마스크 회로(141∼150)가 신호의 마스크를 해제하도록 설정한다(S29). BIST 컨트롤러(121)는, 공통 회로(120)의 런타임 테스트의 실행 종료를 BIST 컨트롤러(11)에 통지한다. BIST 컨트롤러(11)는, BIST 컨트롤러(121)로부터의 통지에 따라서, 리셋 컨트롤러(13)에 대하여, 테스트 대상의 공통 회로(120)의 리셋을 요구하는 요구 신호를 출력한다(S30). 리셋 컨트롤러(13)는, BIST 컨트롤러(11)로부터의 요구 신호에 응답하여, 그 요구 신호에 의해 요구된 공통 회로(120)에 대해 리셋 신호를 출력한다. 이에 의해, 공통 회로(120)가 리셋된다.
여기서, 리셋 컨트롤러(13)는, 일반적으로, 공통 회로(120)를 리셋하는 경우에는, 그 공통 회로(120)를 공유하는 CPU(100∼103)도 리셋하도록 설계된다. 이에 반하여, 전술한 바와 같이, 스텝 S25에서는, CPU(100∼103)에 대한 리셋 신호를 마스크하도록 리셋 마스크 회로(18)를 설정하고 있다. 그로 인해, CPU(100∼103)의 리셋을 억제하고, 공통 회로(120)의 런타임 테스트의 종료 후에, CPU(100∼103)가 그 동작을 계속하는 것이 가능하다.
또한, BIST 컨트롤러(11)는, BIST 컨트롤러(121)로부터의 통지에 따라서, 인터럽트 컨트롤러(14)에 대해 인터럽트 신호를 출력한다. 인터럽트 컨트롤러(14)는, BIST 컨트롤러(11)로부터의 인터럽트 신호에 응답하여, CPU(100)에 대해 인터럽트 신호를 출력한다. CPU(100)는, 인터럽트 컨트롤러(14)로부터의 인터럽트 신호에 응답하여, 슬립 상태로부터 기상하고(S31), 시스템 버스를 통해 BIST 컨트롤러(11)가 갖는 결과 레지스터에 저장된 런타임 테스트 결과값을 취득하여(S32), 런타임 테스트를 종료한다(S33).
CPU(100)는, 런타임 테스트 결과값이, 공통 회로(120)가 정상적임을 나타내고 있는 경우, 상기 스텝 S24에서 저장한 데이터를 공통 회로(120)의 레지스터로 복귀한다(S34). CPU(100)는, 인터럽트 컨트롤러(14)로부터 다른 CPU(101∼103)에 대한 인터럽트 신호의 마스크를 해제하도록 인터럽트 마스크 회로(19)를 설정한다. 또한, CPU(100)는, BIST 컨트롤러(11) 이외로부터의 인터럽트에 대해서도, CPU(100)에 대한 인터럽트 신호의 출력을 재개하도록, 시스템 버스를 통해 인터럽트 컨트롤러(14)를 설정한다. 또한, CPU(100)는, 리셋 컨트롤러(13)로부터 공통 회로(120)를 이용하는 모든 CPU(100∼103)에 대한 리셋 신호의 마스크를 해제하도록 리셋 마스크 회로(18)를 설정한다(S35).
CPU(100)는, 자신과 공통 회로(120)를 공유하는 다른 CPU(101∼103)의 각각에 대해 CPU 간 인터럽트를 통지한다(S36). 그리고, CPU(100)는, 런타임 테스트 실행 전에 실행하고 있던 프로그램의 실행을 재개한다. 또한, CPU(101∼103)의 각각도, CPU(100)로부터의 CPU 간 인터럽트에 응답하여, 슬립 상태로부터 기상하고, 런타임 테스트 실행 전에 실행하고 있던 프로그램의 실행을 재개한다.
한편, CPU(100)는, 런타임 테스트 결과값이, CPU(100)가 고장임을 나타내고 있는 경우, 그에 따른 고장 대책 루틴을 실행한다. 고장 대책 루틴으로서, 예를 들어 반도체 장치(1)에서의 시스템 전체를 셧다운하는 처리를 실행해도 된다.
여기서, WFI 명령에 의한 CPU(100∼103)의 슬립 상태로의 이행은, 일반적으로, 반도체 장치(1)에 에뮬레이터를 접속해서 디버그를 행하기 위해 사용된다. 본 실시 형태 1에서는, 이상에서 설명한 바와 같이 이 WFI 명령에 의한 슬립 상태로의 이행을 런타임 테스트의 실행에 유용함으로써, 설계 비용을 저감하여, 런타임 테스트 실행 시에서의 CPU(100∼103)의 동작 방지와, 그 동작의 재개를 실현하고 있다.
계속해서, 도 7을 참조하여, 실시 형태 1에 따른 CPU 클러스터(10)의 런타임 테스트 실행 시의 동작에 대하여 설명한다.
도 7에 도시한 바와 같이, CPU 클러스터(10) 내의 모든 구성 요소[CPU(100∼103) 및 공통 회로(120)]에 대한 런타임 테스트는, 시스템 전체의 성능 열화를 최대한 저감하기 위해서, DTI 내에 시분할로 실시한다. DTI 간격의 통지는, 전술한 바와 같이 타이머(15)로부터의 인터럽트에 의해 실현한다.
CPU(103)는, 타이머(15)로부터의 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 런타임 테스트를 실행한다. 이때, 다른 CPU(100∼102)의 각각은, 그 처리의 실행을 계속한다. CPU(103)는, 런타임 테스트의 실행 종료 후, 자신의 처리를 재개하고, CPU(102)에 대해 CPU 간 인터럽트를 통지한다.
CPU(102)는, CPU(103)로부터의 CPU 간 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 런타임 테스트를 실행한다. 이때, 다른 CPU(100∼101, 103)의 각각은, 그 처리의 실행을 계속한다. CPU(102)는, 런타임 테스트의 실행 종료 후, 자신의 처리를 재개하고, CPU(101)에 대해 CPU 간 인터럽트를 통지한다.
CPU(101)는, CPU(102)로부터의 CPU 간 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 런타임 테스트를 실행한다. 이때, 다른 CPU(100, 102∼103)의 각각은, 그 처리의 실행을 계속한다. CPU(101)는, 런타임 테스트의 실행 종료 후, 자신의 처리를 재개하고, CPU(100)에 대하여 CPU 간 인터럽트를 통지한다.
CPU(100)는, CPU(101)로부터의 CPU 간 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 런타임 테스트를 실행한다. 이때, 다른 CPU(101∼103)의 각각은, 자신의 처리 실행을 계속한다.
CPU(100)는, 런타임 테스트의 실행 종료 후, 도 6에 도시한 수순에 따라 공통 회로(120)의 런타임 테스트를 실행한다. 이때, 공통 회로(120)를 공유하는 모든 CPU(100∼103)의 각각은, 전술한 바와 같이 슬립하여 자신의 처리를 중단한다. CPU(100∼103)의 각각은, 공통 회로(120)의 런타임 테스트의 실행 종료 후, 자신의 처리를 재개한다.
그리고, 타이머(15)는, CPU(103)에 대해 인터럽트를 발생시킨 시점부터, DTI가 경과할 때마다의 시점에서 다시 CPU(103)에 인터럽트를 발생시키고, CPU(100∼103) 및 공통 회로(120)의 런타임 테스트가 실행된다. 즉, DTI가 경과할 때마다, CPU(100∼103) 및 공통 회로(120)의 런타임 테스트가 실행된다.
계속해서, 도 8을 참조하여, 실시 형태 1에 따른 CPU(103)의 런타임 테스트 실행 시의 동작에 대하여 설명한다.
타이머(15)는, 전회에 인터럽트 신호를 출력한 시점부터, DTI가 경과한 시점에, 인터럽트 컨트롤러(14)를 통해 CPU(103)에 대해 인터럽트를 통지한다. 즉, 이 예에서는, 인터럽트 컨트롤러(14)에는, 타이머(15)로부터의 인터럽트의 통지처로서, CPU(103)가 미리 설정되어 있다.
CPU(103)는, 그 처리의 실행 중에(S100), 타이머(15)에 기인하는 인터럽트가 통지되면, 타이머(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). BIST 컨트롤러(11)는, CPU(103)의 런타임 테스트의 실행 종료 후, 리셋 컨트롤러(13)를 통해 CPU(103)를 리셋한다(S105). 즉, 스텝 S104는, 도 5의 스텝 S6 내지 S8에 대응하고, 스텝 S105는, 도 5의 스텝 S9에 대응한다.
CPU(103)는, 그 리셋 후의 부팅 시에(S106), 리셋 핸들러를 실행한다. 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를 참조하여, 실시 형태 1에 따른 CPU(102, 101)의 런타임 테스트 실행 시의 동작에 대하여 설명한다. 도 9에서는, 도 8에서의 처리와 마찬가지의 처리에 대해서는 동일한 부호를 부여하고, 적절히 그 설명을 생략한다.
CPU(102, 101)의 각각은, 그 처리의 실행 중에(S100), 직전에 런타임 테스트를 실행한 CPU로부터 CPU 간 인터럽트가 통지되면, 그 CPU 간 인터럽트에 대응한 인터럽트 핸들러를 실행한다. CPU(102)는, CPU(103)로부터 CPU 간 인터럽트가 통지되고, CPU(101)는, CPU(102)로부터 CPU 간 인터럽트가 통지된다. 즉, CPU(102, 101)의 각각은, CPU(103, 102)의 각각으로부터의 CPU 인터럽트에 대응한 인터럽트 핸들러에 있어서, 스텝 S101 내지 S103의 처리를 실행하는 점이, CPU(103)와는 상이하다.
또한, 리셋 핸들러에 있어서의 스텝 S109에서는, CPU(102)는, CPU 간 인터럽트를 CPU(101)에 통지하고, CPU(101)는, CPU 간 인터럽트를 CPU(100)에 통지한다.
계속해서, 도 10을 참조하여, 실시 형태 1에 따른 CPU(100)의 런타임 테스트 실행 시의 동작에 대하여 설명한다. 도 10에서는, 도 8 및 도 9에 있어서의 처리와 마찬가지의 처리에 대해서는 동일한 부호를 부여하고, 적절히 그 설명을 생략한다.
CPU(100)는, 그 처리의 실행 중에(S100), 직전에 런타임 테스트를 실행한 CPU(101)로부터 CPU 간 인터럽트가 통지되면, 그 CPU 간 인터럽트에 대응한 인터럽트 핸들러를 실행한다. CPU(100)는, CPU(102, 101)와 마찬가지로, CPU(101)로부터의 CPU 간 인터럽트에 대응한 인터럽트 핸들러에 있어서 스텝 S101 내지 S103의 처리를 실행한다.
한편, CPU(100)는, 리셋 핸들러에 있어서의 스텝 S106 내지 S108의 실행 후, 다른 모든 CPU(101∼103)의 각각에 대해 CPU 인터럽트를 통지하고(S112), 다음에 도 11을 참조하여 설명한 바와 같이 공통 회로(120)의 런타임 테스트를 실행하는 점이, CPU(101∼103)와는 상이하다.
계속해서, 도 11을 참조하여, 실시 형태 1에 따른 공통 회로(120)의 런타임 테스트 실행 시의 동작에 대하여 설명한다.
도 10에서도 설명한 바와 같이, CPU(100)는, 자신의 런타임 테스트의 실행 후, 리셋 핸들러에 있어서, 다른 모든 CPU(101∼103)의 각각에 대해 CPU 인터럽트를 통지한다(S112). 즉, 스텝 S112는, 도 6의 스텝 S21에 대응한다. CPU(101∼103)의 각각은, 그 처리의 실행 중에(S130), CPU(100)로부터 CPU 간 인터럽트가 통지되면, 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)의 갱신을 억제한다.
BIST 컨트롤러(11)는, 공통 회로(120)의 런타임 테스트의 실행 종료 후, 리셋 컨트롤러(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)에 저장된 데이터를 이용하여 처리를 계속할 수 있다.
BIST 컨트롤러(11)는, 공통 회로(120)의 런타임 테스트 실행 후에, 인터럽트 컨트롤러(14)를 통해 CPU(100)에 대해 인터럽트를 통지한다. CPU(100)는, BIST 컨트롤러(11)에 기인하는 인터럽트가 통지되면, 슬립 상태로부터 기상하고, 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(101∼103)의 각각은, CPU(100)로부터 CPU 간 인터럽트가 통지되면, 슬립 상태로부터 기상하여(S132), 그 처리를 재개한다(S133).
이상으로 설명한 바와 같이 본 실시 형태 1에서는, 도 28에 도시한 바와 같이, 반도체 장치(90)는, 기억 회로(91)에 저장된 데이터를 이용하여 처리를 실행함과 함께, 처리의 실행에 수반되어 기억 회로에 데이터를 기입하는 처리 회로(92)에 대한 스캔 테스트를 스캔 테스트 회로(94)가 실행하고 있을 때, 억제 회로(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)에 대응한다.
보다 구체적으로는, 본 실시 형태 1에서는, 억제 회로(93)[초기화 마스크 회로(122b)에 대응]는, L2 캐시 컨트롤러(123)를 갖는 공통 회로(120)에 대한 스캔 테스트를 실행하고 있을 때, L2 캐시 컨트롤러(123)에 대하여 L2 캐시 메모리(124)에 대한 데이터의 기입을 억제하도록 하고 있다. 이것에 의하면, L2 캐시 메모리(124)의 내용을 유지할 수 있기 때문에, 스캔 테스트의 종료 후에, L2 캐시 메모리(124)에 저장되어 있는 데이터에 대해서는 메모리(21)로부터 데이터를 재취득할 필요가 없어지게 되어, 성능 열화를 저감할 수 있다.
또한, 본 실시 형태 1에서는, 캐시 일관성을 보증하는 일관성 제어 회로[스누프 제어 회로(125)에 대응]를 갖는 공통 회로(120)에 대한 스캔 테스트를 실행하고 있을 때, 일관성 제어 회로에 대해 캐시 일관성의 보증에 이용하는 관리 정보가 저장된 관리 정보 기억 회로[SCU 태그 RAM(126)에 대응]에 대한 데이터의 기입을 억제하도록 하고 있다. 이것에 의하면, 관리 정보 기억 회로의 내용을 유지할 수 있기 때문에, 스캔 테스트의 종료 후에, 캐시 일관성을 보증할 수 있다.
또한, 본 실시 형태 1에서는, 복수의 연산 회로[CPU(100∼103)에 대응]의 각각은, 자신이 갖는 L1 캐시 메모리(115)의 데이터를 그 하위의 메모리[L2 캐시 메모리(124), DDR 메모리(20), 메모리(21), 내장 메모리(50)에 대응]에 플래시하도록 하고 있다. 그로 인해, 복수의 연산 회로 간에 있어서의 캐시 일관성을 보증할 수 있다.
또한, 본 실시 형태 1에서는, 복수의 연산 회로의 하나는, 다른 연산 회로로부터의 인터럽트에 응답하여 스캔 테스트 회로에 스캔 테스트의 실행을 지시하고, 당해 지시에 따른 스캔 테스트의 실행 후에 다른 연산 회로에 인터럽트를 통지하도록 하고 있다. 이것에 의하면, 복수의 연산 회로 간에서, 연산 회로의 스캔 테스트를 시간적으로 중복하지 않고 실행할 수 있다. 바꾸어 말하면, 스캔 테스트를 실시하지 않은 연산 회로에서, 시스템의 처리를 계속할 수 있다. 따라서, 시스템 전체의 성능 열화를 억제할 수 있다.
<실시 형태 2>
계속해서, 실시 형태 2에 대하여 설명한다. 이하의 실시 형태 2의 설명에서는, 전술한 실시 형태 1과 마찬가지의 내용에 대해서는, 동일한 부호를 부여하는 등으로 하여, 적절히 그 설명을 생략한다. 도 12에 도시한 바와 같이, 본 실시 형태 2에 따른 반도체 장치(2)는, 실시 형태 1에 따른 반도체 장치(1)와 비교하여, 타이머(22)를 더 갖는다.
타이머(22)는, 런타임 테스트 개시 시점부터의 시간 경과를 계측하고, 런타임 테스트가 종료해야 하는 것으로 하여 미리 정한 시간을 초과한 타이밍을, 타임 아웃으로서 인터럽트에 의해 CPU 클러스터(10)에 통지하는 회로이다.
즉, 런타임 테스트는, 매회 정상 종료한다고는 할 수 없다. BIST 컨트롤러(11, 110∼113, 121)의 고장에 의해 런타임 테스트가 정상 종료하지 않을 가능성도 생각된다. 따라서, 런타임 테스트가 종료해야 할 시간이 경과해도 런타임 테스트가 종료하지 않은 경우에, 그것을 타이머(22)에 의해 통지하는 것을 가능하게 한다.
여기서, 타이머(22)로 타임 아웃의 계측 대상으로 하는 기간은, 미리 임의의 기간을 정하도록 해도 된다. 예를 들어, 도 7을 참조하여 설명하면, (1) CPU(100∼103) 및 공통 회로(120)의 각각의 런타임 테스트 개시 시부터 런타임 테스트 종료 시까지의 기간으로 해도 되며, (2) CPU(103)의 런타임 테스트 개시 시부터 공통 회로(120)의 런타임 테스트 종료 시까지의 기간으로 해도 된다.
(1)의 기간의 경우
CPU(100∼103)의 각각은, 자신의 런타임 테스트를 실행하는 경우, 예를 들어 도 8 내지 10의 스텝 S101 또는 S102의 타이밍에, 시스템 버스를 통해 타이머(22)의 제어 레지스터(도시생략)에 대하여 시간의 계측을 개시(타이머를 세트)하도록 설정한다. 타이머(22)는, 이 설정에 따라서, 시간의 계측을 개시한다. 또한, CPU(100∼103)의 각각은, 예를 들어 도 8 내지 10의 스텝 S107 내지 S109 중 어느 하나의 타이밍에 시스템 버스를 통해 타이머(22)의 제어 레지스터에 대하여 시간의 계측을 정지(타이머를 해제)하도록 설정한다. 타이머(22)는 이 설정에 따라서, 시간의 계측을 정지한다.
또한, CPU(100∼103)의 각각은, 예를 들어 타이머(22)로부터의 인터럽트에 대응한 인터럽트 신호의 통지처를, 자신 이외의 CPU 중 어느 하나 또는 모든 CPU(100∼103)으로 하도록, 시스템 버스를 통해 인터럽트 컨트롤러(14)를 설정한다. 이에 의해, CPU(100∼103)의 각각이 런타임 테스트를 실행 중이더라도, 다른 CPU에 의해 타임 아웃에 따른 처리를 바로 실행 가능하게 한다.
CPU(100)는, 공통 회로(120)의 런타임 테스트를 실행하는 경우, 예를 들어 도 11의 스텝 S112 내지 S114 중 어느 하나의 타이밍에, 시스템 버스를 통해 타이머(22)의 제어 레지스터에 대해 시간의 계측을 개시(타이머를 세트)하도록 설정한다. 타이머(22)는, 이 설정에 따라서, 시간의 계측을 개시한다. 또한, CPU(100)는, 예를 들어 도 11의 스텝 S118 내지 S120 중 어느 하나의 타이밍에 시스템 버스를 통해 타이머(22)의 제어 레지스터에 대해 시간의 계측을 정지(타이머를 해제)하도록 설정한다. 타이머(22)는 이 설정에 따라서,시간의 계측을 정지한다.
또한, CPU(100)는, 예를 들어 타이머(22)로부터의 인터럽트에 대응한 인터럽트 신호의 통지처를, CPU(100∼103) 중 어느 하나 또는 CPU(100∼103)의 모두가 되도록, 시스템 버스를 통해 인터럽트 컨트롤러(14)를 설정한다. 단, CPU(100)는, 도 6의 스텝 S25에 있어서, 통지처의 CPU에 대해서는, 타이머(22)로부터의 인터럽트에 대해 인터럽트 신호를 출력하도록 인터럽트 컨트롤러(14)를 설정한다. 또한, CPU(100)는, 도 6의 스텝 S25에 있어서, 통지처의 CPU에 대해서는, 인터럽트 신호를 마스크하지 않도록 인터럽트 마스크 회로(19)를 설정한다.
(2)의 기간의 경우
CPU(103)는, 예를 들어 도 8의 스텝 S101 또는 S102의 타이밍에, 시스템 버스를 통해 타이머(22)의 제어 레지스터에 대해 시간의 계측을 개시(타이머를 세트)하도록 설정한다. 타이머(22)는, 이 설정에 따라서, 시간의 계측을 개시한다. 또한, CPU(100)는, 예를 들어 도 11의 스텝 S118 내지 S120 중 어느 하나의 타이밍에 시스템 버스를 통해 타이머(22)의 제어 레지스터에 대해 시간의 계측을 정지(타이머를 해제)하도록 설정한다. 타이머(22)는, 이 설정에 따라서, 시간의 계측을 정지한다.
또한, CPU(103)는, 예를 들어 타이머(22)로부터의 인터럽트에 대응한 인터럽트 신호의 통지처를, CPU(100∼103) 중 어느 하나 또는 CPU(100∼103)의 모두가 되도록, 시스템 버스를 통해 인터럽트 컨트롤러(14)를 설정한다. 단, CPU(100)는, 도 6의 스텝 S25에 있어서, 통지처의 CPU에 대해서는, 타이머(22)로부터의 인터럽트에 대해 인터럽트 신호를 출력하도록 인터럽트 컨트롤러(14)를 설정한다. 또한, CPU(100)는, 도 6의 스텝 S25에 있어서, 통지처의 CPU에 대해서는, 인터럽트 신호를 마스크하지 않도록 인터럽트 마스크 회로(19)를 설정한다. 또한, 통지처의 CPU를 CPU(100∼103) 중 어느 하나로 해 버리면, 그 통지처의 CPU가 런타임 테스트를 실행 중인 경우에는, 통지처의 CPU는 인터럽트 신호를 취득할 수 없다. 그로 인해, (2)의 기간으로 하는 경우에는, 바람직하게는 적어도 2개 이상의 CPU를 통지처로서 설정하면 된다.
CPU(100∼103)의 각각은, 타이머(22)의 타임 아웃에 따른 인터럽트 신호가 입력된 경우, 고장 대책 루틴을 실행한다. 고장 대책 루틴으로서, 예를 들어 반도체 장치(1)에 있어서의 시스템 전체를 셧다운하는 처리를 실행해도 된다.
이상으로 설명한 바와 같이 본 실시 형태 2에서는, 반도체 장치(2)는 런타임 테스트의 실행 시간이 소정 시간을 초과한 경우에 타임 아웃을 통지하는 타이머(22)를 구비하고 있다. 그리고, 처리 회로(92)[CPU(100∼103), L2 캐시 컨트롤러(123) 및 스누프 제어 유닛(125)에 대응]는, 처리 회로(92)에 대한 스캔 테스트를 개시할 때 타이머(22)를 설정하고, 처리 회로(92)에 대한 스캔 테스트가 종료했을 때 타이머(22)를 해제한다. 이것에 의하면, 스캔 테스트를 실행하는 스캔 테스트 회로[BIST 컨트롤러(11, 110∼113, 121)에 대응]가 고장임으로써, 스캔 테스트가 정지하고 있는 경우에, 그 고장을 검출할 수 있다.
<실시 형태 3>
계속해서, 실시 형태 3에 대하여 설명한다. 이하의 실시 형태 3의 설명에서는, 전술한 실시 형태 1, 2와 마찬가지의 내용에 대해서는, 동일한 부호를 부여하는 등으로 하여, 적절히 그 설명을 생략한다. 도 13에 도시한 바와 같이, 본 실시 형태 3에 따른 반도체 장치(3)는, 실시 형태 2에 따른 반도체 장치(2)와 비교하여, 스누프 제어 시스템 유닛(23)을 더 갖는다. 또한, 본 실시 형태 3에 따른 반도체 장치(3)는 복수의 CPU 클러스터(10, 70)를 갖는다. 또한, 본 실시 형태 3에 따른 CPU 클러스터(10)는 실시 형태 2에 따른 CPU 클러스터(10)와 비교하여, 스누프 마스크 회로(151)를 더 갖는다. 또한, CPU 클러스터(70)의 구성은, CPU 클러스터(10)와 마찬가지이기 때문에, 그 설명은 생략한다. 또한, 도 13에서는, 복수의 CPU 클러스터(10, 70)의 수가 2개인 예에 대하여 설명하고 있지만, CPU 클러스터의 수는, 이 예로 한정되지 않는다.
스누프 제어 시스템 유닛(23)은, 시스템 버스에 접속되어 있다. 스누프 제어 시스템 유닛(23)은, 복수의 CPU 클러스터(10, 70) 사이에 있어서의 L1 캐시 메모리(115) 및 L2 캐시 메모리(124)의 캐시 일관성을, 스누프 방식으로 보증하는 제어를 행한다.
본 실시 형태 3에서는, 실시 형태 1, 2와 비교하여, 공통 회로(120)의 L2 캐시 컨트롤러(123)는, CPU(100∼103)로부터 리드가 요구된 데이터가, L2 캐시 메모리(124), 스누프 제어 유닛(125) 중 어느 하나로부터 취득할 수 없던 경우, 그 데이터의 리드를 요구하는 리드 요구 신호를 스누프 제어 시스템 유닛(23)으로 출력하는 점이 상이하다.
스누프 제어 시스템 유닛(23)은, 복수의 CPU 클러스터(10, 70) 중 어느 하나로부터 리드 요구 신호가 입력된 경우[여기서는 CPU 클러스터(10)라 함], 그 리드 요구 신호로 요구된 데이터가, 요구원의 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)는, L2 캐시 메모리(124)로부터 또는 스누프 제어 유닛(125)의 제어에 의해 취득한 데이터를 포함하는 스누프 응답 신호를 스누프 제어 시스템 유닛(23)으로 출력한다.
스누프 제어 시스템 유닛(23)은, CPU 클러스터(70)로부터 출력된 스누프 응답 신호에 포함되는 데이터를 취득한다. 스누프 제어 시스템 유닛(23)은, 취득한 데이터를 포함하는 리드 응답 신호를, 리드 요구 신호를 출력한 CPU 클러스터(10)에 대하여 출력한다. 이에 의해, 리드 요구 신호를 출력한 CPU 클러스터(10)가 그 리드 요구 신호에 의해 리드를 요구한 데이터를 취득할 수 있다.
한편, 스누프 제어 시스템 유닛(23)은, CPU 클러스터(70)로부터 데이터를 취득할 수 없던 경우, 그 리드 요구 신호를, 시스템 버스를 통해 외부 버스 컨트롤러(17)로 출력한다. 외부 버스 컨트롤러(17)는, 이 리드 요구 신호에 응답하여, 메모리(21)로부터 취득한 데이터를 포함하는 리드 응답 신호를, 시스템 버스를 통해 스누프 제어 시스템 유닛(23)으로 출력한다. 스누프 제어 시스템 유닛(23)은, 이 리드 응답 신호에 포함되는 데이터를 취득한다.
스누프 제어 시스템 유닛(23)은, 다른 CPU 클러스터(70), 혹은, 메모리(21)로부터 취득한 데이터를, 요구원의 공통 회로(120)로 출력한다. 보다 구체적으로는, 스누프 제어 시스템 유닛(23)은, 취득한 데이터를 포함하는 리드 응답 신호를, 요구원의 CPU(100)로 출력한다.
또한, 스누프 제어 시스템 유닛(23)은, 복수의 CPU 클러스터(10, 70) 중 어느 하나로부터 라이트 요구 신호가 입력된 경우[여기서는 CPU 클러스터(10)라 함], 그 라이트 요구 신호로 요구된 데이터가, 요구원의 CPU 클러스터(10) 이외의 CPU 클러스터(70)에 저장되어 있는지 여부를 판정한다. 스누프 제어 시스템 유닛(23)은, 요구원의 CPU 클러스터(10) 이외의 CPU 클러스터(70)에 데이터가 저장되었다고 판정한 경우, 그 데이터를 갖는 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)에 저장되어 있는지 여부는, 복수의 CPU 클러스터(10, 70)에 저장되어 있는 데이터의 각각이, 메모리(21)에 있어서의 어느 어드레스의 데이터인지를 나타내는 정보가 저장되는 SCU 태그 RAM(도시생략)을 스누프 제어 시스템 유닛(23)이 갖도록 하고, 스누프 제어 유닛(125) 및 SCU 태그 RAM(126)과 마찬가지로 제어함으로써 판정하도록 해도 된다. 또한, 스누프 제어 시스템 유닛(23)이 SCU 태그 RAM을 갖지 않는 경우에는, 요구원의 CPU 클러스터(10) 이외의 다른 모든 CPU 클러스터(70)에 스누프 요구 신호를 출력하도록 하면 된다.
또한, 이상의 설명에서는, CPU 클러스터(10)로부터의 리드 요구 및 라이트 요구에 대해 제어를 행하는 예에 대하여 설명하였지만, 당연히 CPU 클러스터(70)로부터의 리드 요구 및 라이트 요구에 대해서도 마찬가지로 제어를 행할 수 있다. 또한, 이상의 설명에서는, 메모리(21)의 데이터에 대하여 스누프 제어 시스템 유닛(23)이 제어를 행하는 예에 대하여 설명하였지만, 당연히 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)의 런타임 테스트를 실행 중에, 다른 CPU 클러스터(70)로부터 스누프 요구 신호에 의해 런타임 테스트 실행 중인 공통 회로(120)가 의도하지 않은 동작을 행해 버리는 것을 방지할 수 있다. 또한, 스누프 요구 신호는, 스누프 마스크 회로(151)에 의한 마스크가 해제될 때까지 기다리게 된 후에 정상적으로 처리가 행해진다.
또한, 이상의 설명에서는, 실시 형태 3으로서, 실시 형태 2에 대해 스누프 제어 시스템 유닛(23) 및 스누프 마스크 회로(151)를 더 갖도록 하고, 복수의 CPU 클러스터(10, 70)를 갖도록 한 형태에 대하여 설명하였지만, 이것으로 한정되지 않는다. 실시 형태 1에 대해 이들 구성을 적용하도록 해도 된다.
이상으로 설명한 바와 같이 본 실시 형태 3에서는, 반도체 장치(3)는 복수의 처리 회로(92)[CPU(100∼103), L2 캐시 컨트롤러(123) 및 스누프 제어 유닛(125)에 대응]를 구비하도록 하고 있다. 그리고, 복수의 처리 회로(92)의 각각은, 제1 일관성 제어 회로[스누프 제어 유닛(125)에 대응]를 갖는 공통 회로(120)에 대한 스캔 테스트를 실행하고 있을 때, 캐시 일관성을 보증하기 위해서, 제2 일관성 제어 회로[스누프 제어 시스템 유닛(23)에 대응]로부터 제1 일관성 제어 회로를 갖는 공통 회로(120)로 출력되는 신호를 차단하는 마스크 회로[스누프 마스크 회로(151)에 대응]를 포함하고 있다. 이것에 의하면, 런타임 테스트 실행 중에는, 처리 회로(92)[CPU 클러스터(10, 70)]에 관련된 트랜잭션을 중단할 수 있어, 런타임 테스트의 종료 후, 트랜잭션을 재개함으로써, 시스템에 문제를 발생시키지 않도록 할 수 있다.
<실시 형태 4>
계속해서, 실시 형태 4에 대하여 설명한다. 이하의 실시 형태 4의 설명에서는, 전술한 실시 형태 1 내지 3과 마찬가지의 내용에 대해서는, 동일한 부호를 부여하는 등으로 하여, 적절히 그 설명을 생략한다.
본 실시 형태 4에서는, CPU(100∼103) 및 공통 회로(120)의 각각의 런타임 테스트를 일괄적으로 실시하지 않고, 분할해서 실시하는 점이, 실시 형태 1 내지 3과 상이하다. 실시 형태 4에 따른 반도체 장치(4)는, 실시 형태 3에 따른 반도체 장치(3)와 비교하여, 타이머(25)를 더 갖는다. 이하, DTI에 있어서의 런타임 테스트를 분할한 단위의 각각을 「분할 테스트」라 칭한다.
타이머(25)는, 분할 테스트의 종료 시점부터의 시간 경과를 계측하고, 다음 분할 테스트를 개시해야 하는 것으로 해서 미리 정한 시간을 경과한 시점에, 자신 또는 공통 회로(120)의 런타임 테스트를 분할해서 실행 중인 CPU에 대하여 분할 테스트의 개시 타이밍이 되었음을 인터럽트에 의해 통지하는 회로이다.
계속해서, 도 15를 참조하여, 본 실시 형태 4에 따른 런타임 테스트의 분할예에 대하여 설명한다. 런타임 테스트는, 미리 임의로 정한 수로 분할해 실시하여도 된다. 도 15의 예에서는, 런타임 테스트를 3개의 분할 테스트로 분할해 실시하는 예에 대하여 나타내고 있다.
본 실시 형태 4에서는, DTI 중의 런타임 테스트에 사용하는 복수의 테스트 패턴을 분할한 복수의 단위의 각각에 따른 런타임 테스트를, 분할 테스트로서 실시한다. 예를 들어, 도 15에 도시한 바와 같이, 런타임 테스트 대상의 회로의 2개의 논리 회로와 3개의 기억 회로가 회로에 포함되는 경우, 그 런타임 테스트에 사용되는 복수의 테스트 패턴을, 1개의 논리 회로의 스캔 테스트(도 15의 「SCAN-1」)에 사용되는 단위와, 또 하나의 논리 회로의 스캔 테스트(도 15의 「SCAN-2」)에 사용되는 단위와, 3개의 기억 회로의 MBIST(도 15의 「MBIST」)에 사용되는 단위로 분할하도록 해도 된다. 그리고, 도 15에 도시한 바와 같이, 각각의 단위에 대하여, 분할 테스트를 실행한다.
또한, 1회의 분할 테스트에서 스캔 테스트가 실행되는 논리 회로의 수와, 1회의 분할 테스트에서 MBIST가 실행되는 기억 회로의 수는, 도 15의 예로 한정되지 않는다. 또한, 어떤 분할 테스트에서 스캔 테스트가 실행되는 논리 회로의 수와, 다른 분할 테스트에서 스캔 테스트가 실행되는 논리 회로의 수는 상이해도 된다. 마찬가지로, 어떤 분할 테스트에서 MBIST가 실행되는 기억 회로의 수와, 다른 분할 테스트에서 MBIST가 실행되는 기억 회로의 수도 상이해도 된다.
또는, 런타임 테스트 대상의 회로에 포함되는 논리 회로 전체를 대충 스캔 테스트하기 위해 사용되는 테스트 패턴군을 복수의 단위로 분할하고, 분할된 단위의 각각을 1회의 분할 테스트에서의 스캔 테스트에 사용해도 된다. 또한, 런타임 테스트 대상의 회로에 포함되는 기억 회로에 대하여 대충 MBIST를 행하기 위해서 사용되는 테스트 패턴군을 복수의 단위로 분할하고, 분할된 단위의 각각을 1회의 분할 테스트에서의 MBIST에 사용해도 된다.
여기서, 분할 테스트 각각에 있어서, 얼마만큼의 수의 테스트 패턴을 사용할지는, CPU(100∼103)의 각각이, 시스템 버스를 통해 BIST 컨트롤러(11)가 갖는 제어 레지스터로 설정함으로써 BIST 컨트롤러(11)가 인식 가능하게 하면 된다.
예를 들어, 도 15에 도시한 바와 같이, CPU(100)에 대해서, 2개의 논리 회로와 1개의 기억 회로의 각각에 대해 3개의 분할 테스트가 실시되도록 한다. 이 경우, CPU(100)는, 1회째의 분할 테스트 개시 전에는, 도 5의 스텝 S1에 있어서 첫번째 논리 회로의 런타임 테스트에서 사용하는 테스트 패턴 수를, 시스템 버스를 통해 BIST 컨트롤러(11)의 제어 레지스터로 설정한다. 또한, CPU(100)는, 2회째의 분할 테스트 개시 전에는, 도 5의 스텝 S1에 있어서 두 번째 논리 회로의 런타임 테스트에서 사용하는 테스트 패턴 수를, 시스템 버스를 통해 BIST 컨트롤러(11)의 제어 레지스터로 설정한다. 그리고, 3회째의 분할 테스트 개시 전에는, 도 5의 스텝 S1에 있어서 기억 회로의 런타임 테스트에서 사용하는 테스트 패턴수를, 시스템 버스를 통해 BIST 컨트롤러(11)의 제어 레지스터로 설정한다. 그리고, BIST 컨트롤러(110)는, BIST 컨트롤러(11)의 제어 레지스터로 설정된 테스트 패턴 수만큼 테스트 패턴을 생성하고, 런타임 테스트를 실행한다.
계속해서, 도 16을 참조하여, 본 실시 형태 4에 따른 CPU 클러스터(10)의 런타임 테스트 실행 시의 동작에 대하여 설명한다. 도 16의 예에서는, 런타임 테스트를 2개의 분할 테스트로 분할해서 실시하는 예에 대하여 나타내고 있다.
리얼타임 응답성이 요구되는 시스템에서는, 테스트 시간이 인터럽트 응답 제약 시간을 상회하는 것이 있어서는 안 된다. 인터럽트 응답 제약 시간이란, 인터럽트가 발생하고 나서 적어도 그 시간을 초과하기 전에, CPU(100∼103)가 인터럽트를 검출하여, 인터럽트에 대응한 처리를 개시해야만 하는 시간이다. 따라서, 본 실시 형태 4에서는, 도 16에 도시한 바와 같이, CPU(100∼103) 및 공통 회로(120)의 각각의 런타임 테스트를, 인터럽트 응답 제약 시간 이하의 시간에 실시할 수 있는 분할 테스트로 분할해서 실행한다.
CPU(103)는, 타이머(15)로부터의 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 1회째의 분할 테스트를 실행한다. 이때, 다른 CPU(100∼102)의 각각은, 그 처리의 실행을 계속한다. CPU(103)는, 1회째의 분할 테스트의 실행 종료 후, 자신의 처리를 재개하고, 시스템 버스를 통해 타이머(25)에 대해 시간의 계측을 개시(타이머를 세트)하도록 설정한다. 타이머(25)는, 이 설정에 따라서, 시간의 계측을 개시한다.
CPU(103)는, 타이머(25)로부터의 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 2회째의 분할 테스트를 실행한다. 이때, 다른 CPU(100∼102)의 각각은, 그 처리의 실행을 계속한다. CPU(103)는, 2회째의 분할 테스트의 실행 종료 후, 자신의 처리를 재개하고, CPU(102)에 대해 CPU 간 인터럽트를 통지한다.
CPU(102)는, CPU(103)로부터의 CPU 간 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 1회째의 분할 테스트를 실행한다. 이때, 다른 CPU(100∼101, 103)의 각각은, 그 처리의 실행을 계속한다. CPU(102)는, 1회째의 분할 테스트의 실행 종료 후, 자신의 처리를 재개하고, 시스템 버스를 통해 타이머(25)에 대해 시간의 계측을 개시(타이머를 세트)하도록 설정한다. 타이머(25)는, 이 설정에 따라서, 시간의 계측을 개시한다.
CPU(102)는, 타이머(25)로부터의 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 2회째의 분할 테스트를 실행한다. 이때, 다른 CPU(100∼101, 103)의 각각은, 그 처리의 실행을 계속한다. CPU(102)는, 2회째의 분할 테스트의 실행 종료 후, 자신의 처리를 재개하고, CPU(101)에 대하여 CPU 간 인터럽트를 통지한다.
CPU(101)는, CPU(102)로부터의 CPU 간 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 1회째의 분할 테스트를 실행한다. 이때, 다른 CPU(100, 102∼103)의 각각은, 그 처리의 실행을 계속한다. CPU(101)는, 1회째의 분할 테스트의 실행 종료 후, 자신의 처리를 재개하고, 시스템 버스를 통해 타이머(25)에 대해 시간의 계측을 개시(타이머를 세트)하도록 설정한다. 타이머(25)는, 이 설정에 따라서, 시간의 계측을 개시한다.
CPU(101)는, 타이머(25)로부터의 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 2회째의 분할 테스트를 실행한다. 이때, 다른 CPU(100, 102∼103)의 각각은, 그 처리의 실행을 계속한다. CPU(101)는, 2회째의 분할 테스트의 실행 종료 후, 자신의 처리를 재개하고, CPU(100)에 대하여 CPU 간 인터럽트를 통지한다.
CPU(100)는, CPU(101)로부터의 CPU 간 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 1회째의 분할 테스트를 실행한다. 이때, 다른 CPU(101∼103)의 각각은, 그 처리의 실행을 계속한다. CPU(100)는, 1회째의 분할 테스트의 실행 종료 후, 자신의 처리를 재개하고, 시스템 버스를 통해 타이머(25)에 대해 시간의 계측을 개시(타이머를 세트)하도록 설정한다. 타이머(25)는, 이 설정에 따라서, 시간의 계측을 개시한다.
CPU(100)는, 타이머(25)로부터의 인터럽트에 응답하여, 도 5에 도시한 수순에 따라 자신의 처리를 중단하고, 자신의 2회째의 분할 테스트를 실행한다. 이때, 다른 CPU(101∼103)의 각각은, 그 처리의 실행을 계속한다.
CPU(100)는, 2회째의 분할 테스트의 실행 종료 후, 도 6에 도시한 수순에 따라서, 공통 회로(120)의 1회째의 분할 테스트를 실행한다. 이때, 공통 회로(120)를 공유하는 모든 CPU(100∼103)의 각각은, 전술한 바와 같이 슬립하여 그 처리를 중단한다. CPU(100)는, 1회째의 분할 테스트의 실행 종료 후, 자신의 처리를 재개하고, 시스템 버스를 통해 타이머(25)에 대해 시간의 계측을 개시(타이머를 세트)하도록 설정한다. 타이머(25)는, 이 설정에 따라서, 시간의 계측을 개시한다.
CPU(100)는, 타이머(25)로부터의 인터럽트에 응답하여, 도 6에 도시한 수순에 따라서, 공통 회로(120)의 2회째의 분할 테스트를 실행한다. 이때, 공통 회로(120)를 공유하는 모든 CPU(100∼103)의 각각은, 전술한 바와 같이 슬립하여 그 처리를 중단한다. CPU(100)는, 2회째의 분할 테스트의 실행 종료 후, 자신의 처리를 재개한다.
이상으로 설명한 바와 같이 런타임 테스트가 N개의 분할 테스트로 분할될 경우(N은 2 이상의 양의 정수), CPU(103)는, 타이머(15)로부터의 인터럽트에 응답하여 1회째의 분할 테스트를 실행하고, 타이머(25)로부터의 인터럽트에 응답하여 2 내지 N회째의 분할 테스트를 실행한다. 또한, CPU(103)는, 1 내지 (N-1)회째의 분할 테스트의 실행 후에는 타이머(25)를 설정하고, N회째의 분할 테스트의 실행 후에는 다음 테스트 대상의 CPU(102)에 대하여 CPU 간 인터럽트를 통지한다.
CPU(102, 101)의 각각은, 직전에 런타임 테스트가 실행된 CPU로부터의 CPU 간 인터럽트에 응답하여 1회째의 분할 테스트를 실행하고, 타이머(25)로부터의 인터럽트에 응답하여 2 내지 N회째의 분할 테스트를 실행한다. 또한, CPU(102, 101)의 각각은, 1 내지 (N-1)회째의 분할 테스트의 실행 후에는 타이머(25)를 설정하고, N회째의 분할 테스트의 실행 후에는 다음의 런타임 테스트 대상인 CPU(101 또는 100)에 대하여 CPU 간 인터럽트를 통지한다.
CPU(100)는, 직전에 런타임 테스트가 실행된 CPU(101)로부터의 CPU 간 인터럽트에 응답하여 1회째의 분할 테스트를 실행하고, 타이머(25)로부터의 인터럽트에 응답하여 2 내지 N회째의 분할 테스트를 실행한다. 또한, CPU(100)는, 1 내지 (N-1)회째의 분할 테스트의 실행 후에는 타이머(25)를 설정하고, N회째의 분할 테스트의 실행 후에는, 다음의 런타임 테스트 대상인 공통 회로(120)의 런타임 테스트를 실행하는 제어를 행한다.
CPU(100)는, 자신의 런타임 테스트 후에 공통 회로(120)의 1회째의 분할 테스트를 실행하고, 타이머(25)로부터의 인터럽트에 응답하여 공통 회로(120)의 2 내지 N회째의 분할 테스트를 실행한다. 또한, CPU(100)는, 1 내지 (N-1)회째의 분할 테스트의 실행 후에는 타이머(25)를 설정한다.
또한, CPU(100∼103)의 각각은, 분할 테스트의 실행 수를 카운트함으로써, 1 내지 (N-1)회째의 분할 테스트의 실행 후인지, N회째의 분할 테스트의 실행 후인지를 판정하도록 하면 된다. 분할 테스트의 실행 수는, 예를 들어 DDR 메모리(20), 메모리(21), 또는 내장 메모리(50)에 저장함으로써 유지하도록 하면 된다.
계속해서, 도 17을 참조하여, 실시 형태 4에 따른 CPU(100∼103)의 1회째의 분할 테스트 실행 시의 동작에 대하여 설명한다. 도 17에서는, 도 8 내지 도 10에 있어서의 처리와 마찬가지의 처리에 대해서는 동일한 부호를 부여하고, 적절히 그 설명을 생략한다.
CPU(100∼103)의 각각은, 그 처리의 실행 중에(S100), 인터럽트가 통지되면, 그 인터럽트에 대응한 인터럽트 핸들러를 실행한다. CPU(100∼103)의 각각은, 도 8 내지 도 10과 마찬가지로, 인터럽트에 대응한 인터럽트 핸들러에 있어서 스텝 S101 내지 S103의 처리를 실행한다. 이 인터럽트는, CPU(103)이면 타이머(15)로부터의 인터럽트로 되고, CPU(102∼100)이면 직전에 런타임 테스트를 실행한 CPU(103∼101)로부터의 CPU 간 인터럽트로 된다.
한편, CPU(100∼103)의 각각은, 리셋 핸들러에 있어서의 스텝 S106 내지 S108의 실행 후, 타이머(25)를 설정하고 나서(S140), 스텝 S110, S111을 실행하는 점이, 도 8 내지 도 10과는 상이하다.
계속해서, 도 18을 참조하여, 실시 형태 4에 따른 CPU(100∼103)의 2 내지 N회째의 분할 테스트 실행 시의 동작에 대하여 설명한다. 도 18에서는, 도 8 내지 도 10, 17에서의 처리와 마찬가지의 처리에 대해서는 동일한 부호를 부여하고, 적절히 그 설명을 생략한다.
CPU(100∼103)의 각각은, 그 처리의 실행 중에(S100), 타이머(25)로부터 인터럽트가 통지되면, 그 인터럽트에 대응한 인터럽트 핸들러를 실행한다. CPU(100∼103)의 각각은, 도 8 내지 도 10, 17과 마찬가지로, 인터럽트에 대응한 인터럽트 핸들러에 있어서 스텝 S101 내지 S103의 처리를 실행한다.
CPU(100∼103)의 각각은, 리셋 핸들러에 있어서의 스텝 S106 내지 S108의 실행 후, 다른 CPU에 대해 인터럽트를 통지한다(S141). 이 인터럽트는, CPU(101∼103)이면, 도 8, 9와 마찬가지로 다음의 런타임 테스트 실행 대상의 CPU에 대한 CPU 간 인터럽트(S109)로 되고, CPU(100)이면, 도 10과 마찬가지로 다른 모든 CPU(101∼103)에 대한 CPU 간 인터럽트(S112)로 된다. 또한, CPU(101∼103)이면, 스텝 S141의 후에, 도 8, 9와 마찬가지로 스텝 S110, S111을 실행하지만, CPU(100)이면, 스텝 S141의 후에, 도 10과 마찬가지로 스텝 S110, S111을 실행하지 않고, 공통 회로(120)의 런타임 테스트를 실행하는 제어를 행한다.
또한, 런타임 테스트를 3개 이상의 분할 테스트로 분할해서 실행하는 경우에는, 2 내지 (N-1)회째의 분할 테스트 실행 시의 동작은, 도 18에 있어서 스텝 S141대신에 스텝 S140을 실행하는 동작이 되는 것은 자명하기 때문에, 상세한 설명은 생략한다.
계속해서, 도 19를 참조하여, 실시 형태 4에 따른 공통 회로(120)의 1회째의 분할 테스트 실행 시의 동작에 대하여 설명한다. 도 19에서는, 도 11에 있어서의 처리와 마찬가지의 처리에 대해서는 동일한 부호를 부여하고, 적절히 그 설명을 생략한다.
CPU(100)는, 도 11과 마찬가지로, 리셋 핸들러에 있어서, 스텝 S112 내지 S115를 실행한다. 한편, CPU(100)는, 인터럽트 핸들러에 있어서의 스텝 S118 내지 S120의 실행 후, 타이머(25)를 설정하고 나서(S142), 스텝 S121, S122를 실행하는 점이, 도 11과 상이하다.
계속해서, 도 20을 참조하여, 실시 형태 4에 따른 공통 회로(120)의 2회째의 분할 테스트 실행 시의 동작에 대하여 설명한다. 도 20에서는, 도 11, 도 19에 있어서의 처리와 마찬가지의 처리에 대해서는 동일한 부호를 부여하고, 적절히 그 설명을 생략한다.
CPU(100)는, 그 처리의 실행 중에(S143), 타이머(25)로부터 인터럽트가 통지되면, 그 인터럽트에 대응한 인터럽트 핸들러를 실행한다. CPU(100)는, 도 11, 19와 마찬가지로, 인터럽트 핸들러에 있어서, 스텝 S112 내지 S115의 처리를 실행한다. 또한, 리셋 핸들러가 아니라, 인터럽트 핸들러에 있어서 이 처리를 실행하는 점은, 도 11, 19와는 상이하다. 이후, 도 11과 마찬가지로, 스텝 S116 내지 S122가 실행된다.
또한, 런타임 테스트를 3개 이상의 분할 테스트로 분할해서 실행하는 경우에는, 2 내지 (N-1)회째의 분할 테스트 실행 시의 동작은, 도 20에 있어서 스텝 S120의 후에 스텝 S142를 실행하는 동작이 되는 것은 자명하기 때문에, 상세한 설명은 생략한다.
또한, 이상의 설명에서는, 실시 형태 4로서, 실시 형태 3에 대해 타이머(25)를 더 갖도록 하고, 분할 테스트를 실시하는 형태에 대해 설명하였지만, 이것으로 한정되지 않는다. 실시 형태 1 또는 2에 대해 이들 구성을 적용하도록 해도 된다.
이상으로 설명한 바와 같이 본 실시 형태 4는 연산 회로[CPU(100∼103)의 각각에 대응] 전체의 스캔 테스트에 사용하는 복수의 테스트 패턴을 분할한 복수의 단위 각각에 따른 스캔 테스트를 분할 테스트로서 실행할 때마다, 연산 회로에 대한 스캔 테스트의 실행을 종료하는 것이다. 또한, 본 실시 형태 4는 공통 회로(120) 전체의 스캔 테스트에 사용하는 복수의 테스트 패턴을 분할한 복수의 단위의 각각에 따른 스캔 테스트를 분할 테스트로서 실행할 때마다, 공통 회로(120)에 대한 스캔 테스트의 실행을 종료하는 것이다. 반도체 장치(4)는, 연산 회로 및 공통 회로(120)의 각각의 분할 테스트를 종료하고 나서의 시간을 계측하고, 그 연산 회로 및 공통 회로(120)의 각각의 다음의 분할 테스트를 개시하는 타이밍을 연산 회로에 통지하는 타이머(25)를 구비하고 있다. 그리고, 연산 회로는, 타이머(25)로부터의 통지에 따라서, 스캔 테스트 회로[BIST 컨트롤러(11, 110∼113, 121)에 대응]에 분할 테스트의 개시를 지시하는 것이다.
이것에 의하면, 스캔 테스트를 복수의 단위로 분할한 분할 테스트의 실행을 종료한 타이밍에 연산 회로가 인터럽트에 대응한 처리를 실행할 수 있기 때문에, 연산 회로에 의한 인터럽트 응답 성능을 향상할 수 있다. 따라서, 예를 들어 CPU(100∼103)에 있어서 인터럽트 응답 성능이 요구되는 어플리케이션 프로그램(예를 들어, 음성 인식 처리 프로그램 등)을 그 요구를 충족시켜서 실행할 수 있다. 즉, 리얼타임성을 필요로 하는 시스템에 있어서도, 런타임 테스트를 실행하는 것이 가능해진다.
<실시 형태 5>
계속해서, 실시 형태 5에 대하여 설명한다. 이하의 실시 형태 5의 설명에서는, 전술한 실시 형태 1 내지 4와 마찬가지의 내용에 대해서는, 동일한 부호를 부여하는 등으로 하여, 적절히 그 설명을 생략한다. 도 21에 도시한 바와 같이, 본 실시 형태 5에 따른 반도체 장치(5)는, 실시 형태 3에 따른 반도체 장치(3)와 비교하여, 전원 제어 회로(26)와, 전원 스위치(170∼173, 180)를 더 갖는다.
전원 제어 회로(26)는, CPU(100∼103) 및 공통 회로(120)의 각각의 전원 상태를 제어하는 회로이다. 전원 제어 회로(26)는, CPU(100∼103)로부터 출력되는 스테이터스 신호를 감시하고, CPU(100∼103)의 각각이 슬립 상태로 이행한 경우에는, CPU(100∼103)의 각각의 전원을 OFF로 한다. 또한, 전원 제어 회로(26)는 CPU(100∼103)의 모두가 슬립 상태로 이행한 경우에는, CPU(100∼103) 및 공통 회로(120)의 전원을 OFF로 한다. 이에 의해, 전력 절약을 실현한다. 또한, 전원 제어 회로(26)는, 공통 회로(120)를 전원 OFF로 하는 경우에는, 공통 회로(120)의 L2 캐시 메모리(124) 및 SCU 태그 RAM(126)의 전원은 ON으로 한 그대로로 하여, 그 데이터의 보유를 유지한다.
전원 스위치(170)는 CPU(100)와 접속되고, 전원 스위치(171)는 CPU(101)와 접속되고, 전원 스위치(172)는 CPU(102)와 접속되고, 전원 스위치(173)는 CPU(103)과 접속되고, 전원 스위치(180)는 공통 회로(120)와 접속된다. 전원 제어 회로(26)는, 전원 스위치(170∼173, 180)의 각각을 조작함으로써, CPU(100∼103) 및 공통 회로(120)의 각각의 전원 ON·OFF를 행한다.
또한, 전원 제어 회로(26)는, 인터럽트 컨트롤러(14)로부터의 인터럽트 신호의 입력에 따라서, CPU(100∼103) 및 공통 회로(120) 중, 전원을 OFF로 한 회로의 전원을 ON으로 하고, 리셋 컨트롤러(13)에 대하여 전원을 ON으로 한 회로의 리셋을 요구한다.
이 전원 제어 회로(26)에 의한 CPU(100∼103) 및 공통 회로(120)에 대한, 전력 절약 상태로의 이행과, 전력 절약 상태로부터의 복귀 동작은, 전술한 CPU(100∼103) 및 공통 회로(120)의 런타임 테스트를 실행하는 상태로의 이행과, 런타임 테스트 실행 후의 상태로부터의 복귀 동작과 비슷하다. 따라서, 본 실시 형태 5에서는, 이 전원 제어 회로(26)에 의한 기능을 유용함으로써, CPU(100∼103) 및 공통 회로(120)의 런타임 테스트를 실행하는 상태로의 이행과 런타임 테스트 실행 후의 상태로부터의 복귀 동작을 실현한다.
이 동작을 실현하기 위해서, 본 실시 형태 5에 따른 전원 제어 회로(26)는, CPU(100∼103)의 슬립 상태를 검출했을 때, CPU(100∼103) 및 공통 회로(120)의 전원을 OFF로 하는 동작을 억제하는 설정을, CPU(100∼103)의 각각으로부터 실시 가능하게 개량된 것이다. CPU(100∼103)의 각각의 런타임 테스트를 실행하는 경우에는, CPU(100∼103)의 각각은, 도 8 내지 10의 스텝 S101 또는 S102의 타이밍에, 전원 제어 회로(26)에 대해 전원을 OFF로 하는 동작을 억제하는 설정을 행하고, 도 8 내지 10의 스텝 S106 내지 S108 중 어느 하나의 타이밍에 전원 제어 회로(26)에 대하여 전원을 OFF로 하는 동작의 억제를 해제하는 설정을 행한다.
또한, 공통 회로(120)의 런타임 테스트를 실행하는 경우에는, CPU(100)는, 도 11의 스텝 S112 내지 S114 중 어느 하나의 타이밍에, 전원 제어 회로(26)에 대해 전원을 OFF로 하는 처리를 억제하는 설정을 행하고, 도 11의 스텝 S118 내지 S120 중 어느 하나의 타이밍에 전원 제어 회로(26)에 대해 전원을 OFF로 하는 처리의 억제를 해제하는 설정을 행한다.
이것에 의하면, CPU(100∼103)가 슬립 상태로 이행하여도, CPU(100∼103) 및 공통 회로(120)의 전원이 OFF로 되는 일은 없기 때문에, 런타임 테스트를 실행하는 것이 가능해진다.
BIST 컨트롤러(11)는, CPU(100∼103) 및 공통 회로(120)의 각각의 런타임 테스트의 실행 후, 리셋 컨트롤러(13)에 리셋을 요구하는 것이 아니라, 인터럽트 컨트롤러(14)에 인터럽트 신호를 출력한다. 인터럽트 컨트롤러(14)는, 이 인터럽트 신호에 응답하여, 인터럽트 신호를 전원 제어 회로(26)로 출력한다.
전원 제어 회로(26)는, 전원을 OFF 하는 동작만이 억제되어 있기 때문에, 실제의 전원 상태는 ON이지만, CPU(100∼103) 중 어느 하나를 슬립 상태로 이행시켜서 스캔 테스트를 실행한 경우에는, 그 CPU의 전원 상태가 OFF인 것으로 인식하고 있다. 그로 인해, 이 경우에는, 전원 제어 회로(26)는 인터럽트 신호에 응답하여, 스캔 테스트를 실시한 CPU에 대한 리셋을 리셋 컨트롤러(13)에 요구한다.
또한, 전원 제어 회로(26)는, 전원을 OFF 하는 동작만이 억제되고 있기 때문에, 실제의 전원 상태는 ON이지만, CPU(100∼103)의 모두가 슬립 상태로 이행한 경우에는, CPU(100∼103) 및 공통 회로(120)의 모든 전원 상태가 OFF인 것으로 인식하고 있다. 그로 인해, 이 경우에는, 전원 제어 회로(26)는 인터럽트 신호에 응답하여, CPU(100∼103) 및 공통 회로(120)의 모두에 대한 리셋을 리셋 컨트롤러(13)에 요구한다. 또한, CPU(100∼103)에 대한 리셋은, 전술한 바와 같이 리셋 마스크 회로(18)에 의해 억제된다.
즉, 본 실시 형태 5에 의하면, 실시 형태 1 내지 4에서는, BIST 컨트롤러(11)가 핸들링하고 있던 테스트 대상의 회로 리셋을 전원 제어 회로(26)의 기능을 유용함으로써 용이하게 실현할 수 있다.
또한, 이상의 설명에서는, 실시 형태 5로서, 실시 형태 3에 대해 전원 제어 회로(26)를 더 갖도록 한 형태에 대하여 설명하였지만, 이것으로 한정되지 않는다. 실시 형태 1, 2, 4 중 어느 하나에 대해 이 구성을 적용하도록 해도 된다.
이상으로 설명한 바와 같이 본 실시 형태 5에서는, 반도체 장치(5)는 연산 회로[CPU(100∼103)]가 슬립 상태로 이행했을 때, 연산 회로의 전원을 OFF로 하고, 인터럽트가 통지되었을 때, 연산 회로의 전원을 ON으로 하여 리셋 컨트롤러(13)에 의해 연산 회로를 리셋하는 전원 제어 회로(26)를 구비하고 있다. 연산 회로는, 연산 회로에 대한 스캔 테스트를 실행하는 경우에는, 연산 회로의 전원 OFF를 억제하도록 전원 제어 회로(26)를 설정하고 나서, 슬립 상태로 이행한다. 그리고, 연산 회로에 대한 스캔 테스트의 실행 후에, 전원 제어 회로(26)에 인터럽트를 통지하도록 하고 있다. 이것에 의하면, 전원 제어 회로의 기능을 유용하여, 연산 회로의 스캔 테스트를 실행하는 상태로의 이행과, 그 상태로부터의 복귀를 실현할 수 있다. 즉, 런타임 테스트를 실현하기 위한 논리설계 비용을 저감할 수 있다.
<실시 형태 6>
계속해서, 실시 형태 6에 대하여 설명한다. 이하의 실시 형태 6의 설명에서는, 전술한 실시 형태 1 내지 5와 마찬가지의 내용에 대해서는, 동일한 부호를 부여하는 등으로 하여, 적절히 그 설명을 생략한다. 도 22에 도시한 바와 같이, 본 실시 형태 6에 따른 반도체 장치(6)는, 실시 형태 3에 따른 반도체 장치(3)와 비교하여, BIST 컨트롤러(11, 110∼113)의 각각에 대신하여, 테스트 컨트롤러(60, 160∼163)의 각각을 갖는 점이 상이하다.
테스트 컨트롤러(60)는, BIST 컨트롤러(11)와 비교하여, 테스트 패턴 및 기대값을 DDR 메모리(20)로부터 취득하여, 테스트 컨트롤러(160∼163)의 각각에 공급하는 점이 상이하다. 또한, 테스트 컨트롤러(160∼163)의 각각은, BIST 컨트롤러(110∼113)의 각각과 비교하여, 테스트 패턴 및 기대값을 생성하지 않고, 테스트 컨트롤러(60)로부터 공급된 테스트 패턴 및 기대값을 사용하는 점이 상이하다.
즉, 실시 형태 6에서는, DDR 메모리(20)는 테스트 패턴과, 기대값이 미리 저장되어 있다. 테스트 컨트롤러(60)는, 로컬 버스 및 시스템 버스를 통해 DDR 메모리(20)로부터 테스트 패턴 및 기대값을 판독한다. 테스트 컨트롤러(160∼163)의 각각은, 테스트 컨트롤러(60)이 판독한 테스트 패턴 및 기대값을 사용해서 스캔 테스트를 실시한다. 또한, 테스트 컨트롤러(60) 및 CPU(100∼103) 중 어느 하나가, 반도체 장치(6)의 기동 시에, 외부 버스 컨트롤러(17)에 접속되어 있는 메모리(21)로부터 DDR 메모리(20) 또는 내장 메모리(50)에 테스트 패턴 및 기대값을 사전에 전송해 두고, 테스트 컨트롤러(60)는 런타임 테스트의 실행 시에 DDR 메모리(20) 또는 내장 메모리(50)로부터 테스트 패턴 및 기대값을 취득하도록 해도 된다. 여기서, 메모리(21) 대신에 플래시 메모리 등의 불휘발성 메모리를 사용해도 된다.
여기서, CPU(100∼103)의 각각의 런타임 테스트를 실행하는 경우, CPU(100∼103)의 각각은, 테스트 컨트롤러(60)가 갖는 제어 레지스터에 대하여, DDR 메모리(20)에 있어서 CPU(100∼103)용 테스트 패턴이 저장되어 있는 어드레스를 설정한다. 테스트 컨트롤러(60)는 DDR 메모리(20)에 있어서, 제어 레지스터로 설정된 어드레스로부터, CPU(100∼103)용 테스트 패턴을 취득한다.
또한, 공통 회로(120)의 런타임 테스트를 실행하는 경우, CPU(100)는, 테스트 컨트롤러(60)가 갖는 제어 레지스터에 대하여 DDR 메모리(20)에 있어서 공통 회로(120)용 테스트 패턴이 저장되어 있는 어드레스를 설정한다. 테스트 컨트롤러(60)는, DDR 메모리(20)에 있어서, 제어 레지스터로 설정된 어드레스로부터, 공통 회로(120)용 테스트 패턴을 취득한다.
또한, 이상의 설명에서는, 실시 형태 6으로서, 실시 형태 3에 대하여 BIST 컨트롤러(11, 110∼113) 대신에, 테스트 컨트롤러(60, 160∼163)를 갖도록 하고, DDR 메모리(20)에 테스트 패턴 및 기대값을 저장한 형태에 대해 설명하였지만, 이것으로 한정되지 않는다. 실시 형태 1, 2, 4, 5 중 어느 하나에 대하여, 이들 구성을 적용하도록 해도 된다.
여기서, 실시 형태 4에 대하여, 이들 구성을 적용한 경우에는, CPU(100∼103)의 각각은, 테스트 컨트롤러(60)가 갖는 제어 레지스터에 대하여 테스트 패턴수 대신에, 그 분할 테스트에 의해 스캔 인하는 테스트 패턴량[예를 들어, DDR 메모리(20)에 있어서의 개시 어드레스와 종료 어드레스]을 설정하도록 해도 된다. 즉, DDR 메모리(20)에 저장된 CPU(100∼103)의 각각에 대한 테스트 패턴군을 분할한 복수의 단위의 각각에 따른 런타임 테스트를, CPU(100∼103)의 각각에 대한 분할 테스트로서 실시한다. 또한, DDR 메모리(20)에 저장된 공통 회로(120)에 대한 테스트 패턴군을 분할한 복수의 단위의 각각에 따른 런타임 테스트를, 공통 회로(120)에 대한 분할 테스트로서 실시한다.
이상으로 설명한 바와 같이 본 실시 형태 6에서는, 스캔 테스트 회로[테스트 컨트롤러(60, 160∼163에 대응]는, 반도체 장치(6)의 외부에 구비된 외부 기억 회로[DDR 메모리(20)에 대응]에 저장된 테스트 패턴을 취득하고, 취득된 테스트 패턴을 처리 회로에 스캔인함으로써 스캔 테스트를 실행하도록 하고 있다.
BIST는 랜덤하게 생성한 테스트 패턴을 이용하기 때문에, 고장 검출률이 상승하기 어렵다는 문제가 있다. 그에 반하여, 본 실시 형태 6에서는, 고장 검출률이 높은 테스트 패턴을 사전에 작성하고, 테스트 대상의 처리 회로에 유입할 수 있게 되어, 테스트 시간을 단축할 수 있다.
<실시 형태 7>
계속해서, 실시 형태 7에 대하여 설명한다. 이하의 실시 형태 7의 설명에서는, 전술한 실시 형태 1 내지 6과 마찬가지의 내용에 대해서는, 동일한 부호를 부여하는 등으로 하여, 적절히 그 설명을 생략한다.
도 23에 도시한 바와 같이, 본 실시 형태 7에 따른 반도체 장치(7)는, 실시 형태 3에 따른 반도체 장치(3)와 비교하여, CPU 클러스터(10)가 CPU(100)를 1개만 갖는 점이 상이하다. 또한, 본 실시 형태 7에 따른 CPU(100)는, 실시 형태 3에 따른 CPU(100)와 비교하여, 초기화 마스크 회로(117a, 117b)를 더 갖는 점이 상이하다. 또한, 본 실시 형태 7에 따른 공통 회로(120)는 실시 형태 3에 따른 공통 회로(120)와 비교하여, 스누프 제어 유닛(125) 및 SCU 태그 RAM(126)을 갖지 않은 점이 상이하다. 이것은, CPU 클러스터(10)는 복수의 CPU를 갖지 않기 때문에, CPU 간에서 L1 캐시 메모리(115)의 캐시 일관성을 보증하는 제어가 불필요하기 때문이다.
초기화 마스크 회로(117a)는, L1 캐시 컨트롤러(114)가 L1 캐시 메모리(115)에 대하여 초기값을 기입하여 L1 캐시 메모리(115)를 초기화하는 처리를 억제하는 회로이다. 보다 구체적으로는, 초기화 마스크 회로(117a)는 초기화 처리의 억제를 지시하는 지시 신호를 L1 캐시 컨트롤러(114)로 출력한다. L1 캐시 컨트롤러(114)는 CPU(100)의 리셋 시에, 그 지시 신호가 입력되어 있는 경우, CPU(100)의 리셋 해제에서 실행하는 L1 캐시 메모리(115)에 대한 데이터의 초기화 위한 기입을 행하지 않도록, 그 동작을 변경한다. 초기화 마스크 회로(117a)는 CPU(100)의 런타임 테스트 실행 후의 리셋 시에서의, L1 캐시 메모리(115)의 초기화를 억제하도록, 그 동작을 유효화한다.
초기화 마스크 회로(117b)는, L1 캐시 컨트롤러(114)에 의한 L1 캐시 메모리(115)에 대한 기입을 억제하는 회로이다. 보다 구체적으로는, 초기화 마스크 회로(117b)는 L1 캐시 컨트롤러(114)로부터 L1 캐시 메모리(115)에 대하여 데이터의 기입을 위해 출력되는 신호를 마스크(차단)한다. 초기화 마스크 회로(117b)는 CPU(100)의 런타임 테스트 실행 시에서의 L1 캐시 메모리(115)로의 데이터의 기입을 억제하도록, 그 동작을 유효화한다.
도 5를 참조하여 설명하면, 스텝 S4의 타이밍에, CPU(100)는, L1 캐시 메모리(115)에 대한 초기화 및 기입의 각각을 억제하도록, 초기화 마스크 회로(117a, 117b)의 각각을 설정한다. 또한, 스텝 S14의 타이밍에, CPU(100)는, L1 캐시 메모리(115)에 대한 초기화 및 기입의 각각의 억제를 해제하도록, 초기화 마스크 회로(117a, 117b)의 각각 또는 클럭 컨트롤러(12)를 설정한다. 이 설정은, 초기화 마스크 회로(117a, 117b)의 각각이 갖는 제어 레지스터(도시생략)에 대하여, 초기화 또는 기입을 억제할지 여부를 나타내는 값을 설정함으로써 행해진다.
이것에 의하면, L1 캐시 메모리(115)의 내용이 유지되기 때문에, CPU(100)가 처리를 재개했을 때에 있어서의 L1 캐시 메모리(115)의 미스 히트를 방지하여, 성능 열화를 억제할 수 있다. 이와 같이, 멀티 코어와는 달리, 싱글 코어의 경우에는, L1 캐시 메모리(115)의 내용을 플래시하지 않고 유지한 채이더라도, 다른 CPU가 스누프 제어 유닛(125)의 제어에 의해 그 데이터에 액세스할 수 없게 되어 버린다는 문제도 발생하는 일은 없다.
또한, 이상의 설명에서는, 실시 형태 7로서, 실시 형태 3에 대하여 CPU(100)를 1개만 갖도록 하고, CPU(100)가 초기화 마스크 회로(117a, 117b)를 더 갖도록 하고, 공통 회로(120)가 스누프 제어 유닛(125) 및 SCU 태그 RAM(126)을 갖지 않도록 한 형태에 대해 설명히였지만, 이것으로 한정되지 않는다. 실시 형태 1, 2, 4 내지 6 중 어느 하나에 대하여, 이들 구성을 적용하도록 해도 된다.
이상으로 설명한 바와 같이 본 실시 형태 7에서는, CPU(100)가 L1 캐시 메모리(115)와, L1 캐시 컨트롤러(114)를 갖는다. 그리고, CPU(100)에 대한 스캔 테스트를 실행하고 있을 때, L1 캐시 컨트롤러(114)로부터 L1 캐시 메모리(115)에 대한 데이터의 기입을 억제하도록 하고 있다. 이것에 의하면, CPU(100)가 처리를 재개했을 때에 있어서의 L1 캐시 메모리(115)의 미스 히트를 방지하여, 성능 열화를 억제할 수 있다.
<실시 형태 8>
계속해서, 실시 형태 8에 대하여 설명한다. 이하의 실시 형태 8의 설명에서는, 전술한 실시 형태 1 내지 7과 마찬가지의 내용에 대해서는, 동일한 부호를 부여하는 등으로 하여, 적절히 그 설명을 생략한다. 도 24에 도시한 바와 같이, 본 실시 형태 8에 따른 반도체 장치(8)는 실시 형태 2에 따른 반도체 장치(2)와 비교하여, 타이머(27)와, GPU(Graphics Processing Unit) 클러스터(40)를 더 갖는다. GPU 클러스터(40)는 GPU(400)와, BIST 컨트롤러(410)를 갖는다.
타이머(27)는, 시간의 경과를 계측하고, GPU 클러스터(40)의 런타임 테스트의 실행 타이밍을 인터럽트에 의해 CPU 클러스터(10)에 대하여 통지하는 회로이다. 보다 구체적으로는, 타이머(27)는 런타임 테스트의 실행 타이밍이 될 때마다, 인터럽트 신호를 인터럽트 컨트롤러(14)로 출력한다. 인터럽트 컨트롤러(14)는, 이 인터럽트 신호에 응답하여, 타이머(27)로부터의 인터럽트의 통지처로서 미리 설정된 CPU에 대해 인터럽트 신호를 출력한다.
또한, CPU 클러스터(10)는, 반도체 장치(8)의 기동 후에, 런타임 테스트의 실행 타이밍을 DTI마다 통지하도록 타이머(27)를 설정한다. 타이머(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를 참조하여, 실시 형태 8에 따른 GPU(400)의 런타임 테스트 실행 시의 동작에 대하여 설명한다. 이하, 본 실시 형태 8에서는, CPU(100)가 GPU(400)의 런타임 테스트의 실행을 제어하는 수순에 대하여 설명하지만, CPU(100)대신에 CPU(101∼103) 중 어느 하나가 GPU(400)의 런타임 테스트의 실행을 제어하는 형태로 하여도 된다.
타이머(27)는, 전회에 인터럽트 신호를 출력한 시점부터, DTI가 경과한 시점에서, 인터럽트 컨트롤러(14)를 통해 CPU(100)에 대해 인터럽트를 통지한다. 즉, 이 예에서는, 인터럽트 컨트롤러(14)에는, 타이머(27)로부터의 인터럽트의 통지처로서, CPU(100)가 미리 설정되어 있다.
CPU(100)는, 그 처리의 실행 중에(S150), 타이머(27)에 기인하는 인터럽트가 통지되면, 타이머(27)의 인터럽트에 대응한 인터럽트 핸들러를 실행한다. CPU(100)는, 인터럽트 핸들러에 있어서, 런타임 테스트를 실행하기 위한 설정을 행한다(S151). 보다 구체적으로는, CPU(100)는, BIST 컨트롤러(11)의 제어 레지스터에 대해 GPU(400)를 테스트 대상으로서 설정한다. 또한, CPU(100)는, 인터럽트 핸들러에 있어서, GPU(400)의 정보를 저장한다(S152). 보다 구체적으로는, CPU(100)는, GPU(400)의 동작을 정지시켜서, GPU(400)의 레지스터에 저장된 데이터를 DDR 메모리(20), 메모리(21) 및 내장 메모리(50)에 저장한다. 그리고, CPU(100)는, BIST 컨트롤러(11)에 대하여 런타임 테스트의 개시를 지시하고(S153), 인터럽트 핸들러를 종료한다(S154). GPU(400)는, 슬립 상태로 이행할 수 없기 때문에, 이와 같이 CPU(100)로부터 명시적으로 런타임 테스트의 개시를 지시한다.
BIST 컨트롤러(11)는 CPU(100)로부터의 지시에 응답하여, GPU(400)의 런타임 테스트의 개시를 BIST 컨트롤러(410)에 지시한다. BIST 컨트롤러(410)는 BIST 컨트롤러(11)로부터의 지시에 응답하여, GPU(400)의 런타임 테스트를 실행한다(S155).
BIST 컨트롤러(410)는, GPU(400)의 런타임 테스트의 실행 종료를 BIST 컨트롤러(11)에 통지한다. BIST 컨트롤러(11)는 BIST 컨트롤러(410)로부터의 통지에 따라서, 리셋 컨트롤러(13)를 통해 GPU(400)를 리셋한다(S156). 또한, BIST 컨트롤러(11)는 인터럽트 컨트롤러(14)를 통해 CPU(100)에 대해 인터럽트를 통지한다. CPU(100)는, 그 처리의 실행 중에(S157), BIST 컨트롤러(11)에 기인하는 인터럽트가 통지되면, BIST 컨트롤러(11)로부터의 인터럽트에 대응한 인터럽트 핸들러를 실행한다. CPU(100)는, 인터럽트 핸들러에 있어서, 런타임 테스트 결과의 확인(S158)과, GPU(400)의 정보 복귀(S159)를 행한다. 보다 구체적으로는, CPU(100)는, DDR 메모리(20), 메모리(21) 및 내장 메모리(50)에 저장한 데이터를 GPU(400)의 레지스터로 복귀한다. 또한, 런타임 테스트 결과의 확인은, CPU(100∼103) 및 공통 회로(120)의 런타임 테스트 실행 시와 마찬가지이기 때문에, 설명을 생략한다. 그리고, CPU(100)는, 인터럽트 핸들러를 종료하고(S160), 프로그램의 실행을 재개한다(S161).
또한, 이상의 설명에서는, 실시 형태 8로서, 실시 형태 2에 대해 타이머(27)와, GPU 클러스터(40)[GPU(400) 및 BIST 컨트롤러(410)]를 더 갖도록 한 형태에 대해 설명하였지만, 이것으로 한정되지 않는다. 실시 형태 1, 3 내지 7 중 어느 하나에 대하여 이 구성을 적용하도록 해도 된다. 여기서, GPU 클러스터(40)는 암호 처리 회로나 화상 인식 회로 등의 하드웨어 액셀러레이터이어도 된다.
이상으로 설명한 바와 같이 본 실시 형태 8에서는, 반도체 장치(8)은 GPU(400)에 대한 스캔 테스트를 실행하는 타이밍을 CPU(100)에 통지하는 타이머(27)를 구비하고 있다. CPU(100)는, 타이머(27)로부터의 통지에 따라서, GPU(400)에 대한 스캔 테스트의 실행을 지시한다. 그리고, 스캔 테스트 회로[BIST 컨트롤러(11, 410)에 대응]는, CPU(100)로부터의 지시에 응답하여, GPU(400)에 대한 스캔 테스트를 실행한다. GPU(400)와 같은 대규모의 모듈은, 면적 제한의 사정상, 이중화해서 로크 스텝에 의해 동작을 확인하는 것은 곤란하다. 그에 반하여, 본 실시 형태 8에 의하면, CPU(100)로부터의 제어에 의한 런타임 테스트에 의해, 대규모 GPU(400)이더라도 정기적인 정상 동작을 확인하는 것이 가능하다.
<실시 형태 9>
계속해서, 실시 형태 9에 대하여 설명한다. 이하의 실시 형태 9의 설명에서는, 전술한 실시 형태 1 내지 8과 마찬가지의 내용에 대해서는, 동일한 부호를 부여하는 등으로 하여, 적절히, 그 설명을 생략한다. 도 26에 도시한 바와 같이, 본 실시 형태 9에 따른 반도체 장치(9)는 실시 형태 3에 따른 반도체 장치(3)와 비교하여, 타이머(28 내지 31)를 더 갖는다.
전술한 타이머(15)는 시간의 경과를 계측하고, 런타임 테스트의 실행 타이밍을 인터럽트에 의해 CPU(103)에 대하여 통지하는 회로였다. 그에 반하여, 타이머(28∼31)의 각각은, 타이머(15)와 마찬가지로, 시간의 경과를 계측하고, 런타임 테스트의 실행 타이밍을 인터럽트에 의해 CPU(102∼100) 및 공통 회로(120)의 각각에 대해 통지하는 회로이다. 또한, CPU 클러스터(10)는 반도체 장치(9)의 기동 후에, 타이머(15)와 마찬가지로, 런타임 테스트의 실행 타이밍을 DTI마다 통지하도록 타이머(28∼31)를 설정한다. 타이머(15, 28∼31)를 설정하는 CPU는, 예를 들어 사전에 임의로 정하도록 해도 된다.
즉, 인터럽트 컨트롤러(14)는 타이머(28)로부터의 인터럽트에 대응한 인터럽트 신호의 통지처로서 CPU(102)가 미리 설정되어 있으며, 타이머(29)로부터의 인터럽트에 대응한 인터럽트 신호의 통지처로서 CPU(101)이 미리 설정되어 있으며, 타이머(30)로부터의 인터럽트에 대응한 인터럽트 신호의 통지처로서 CPU(100)가 미리 설정되어 있으며, 타이머(31)로부터의 인터럽트에 대응한 인터럽트 신호의 통지처로서 CPU(100)가 미리 설정되어 있다.
CPU(103)는, 지금까지의 실시 형태 1 내지 8과 마찬가지로, 타이머(15)로부터의 인터럽트에 응답하여, CPU(103)의 런타임 테스트를 실행하는 제어를 행한다. CPU(102)는, CPU(103)로부터의 CPU 간 인터럽트가 아니라, 타이머(28)로부터의 인터럽트에 응답하여, CPU(102)의 런타임 테스트를 실행하는 제어를 행하는 점이 실시 형태 1 내지 8과 상이하다. CPU(101)는, CPU(102)로부터의 CPU 간 인터럽트가 아니라, 타이머(29)로부터의 인터럽트에 응답하여, CPU(101)의 런타임 테스트를 실행하는 제어를 행하는 점이 실시 형태 1 내지 8과 상이하다. CPU(100)는, CPU(101)로부터의 CPU 간 인터럽트가 아니라, 타이머(30)로부터의 인터럽트에 응답하여, CPU(100)의 런타임 테스트를 실행하는 제어를 행하는 점이 실시 형태 1 내지 8과 상이하다. 또한, CPU(100)는, CPU(100)의 런타임 테스트의 실행 후가 아니라, 타이머(31)로부터의 인터럽트에 응답하여, 공통 회로(120)의 런타임 테스트를 실행하는 제어를 행하는 점이 실시 형태 1 내지 8과 상이하다. 즉, 본 실시 형태 9에서는, CPU(103∼101)의 각각은, CPU 간 인터럽트를 CPU(102∼100)의 각각에 통지하지 않는다.
이와 같이, CPU(100∼103) 및 공통 회로(120)마다, 전용의 타이머(15, 28∼31)를 준비해서 런타임 테스트를 실행하도록 해도 된다.
<다른 실시 형태>
(파워온 셀프 테스트를 런타임 테스트로 대용)
CPU(100∼103)에서는, 일반적으로, 전원 ON 직후에 Latent Fault를 검출하기 위해서 파워온 셀프 테스트(Power On Self Test: POST)가 실시되고 있지만, 이 POST 대신에, 전술한 런타임 테스트를 실시하도록 해도 된다.
여기서, 파워 온 직후의 셀프 테스트 시간도, 기동 시간의 제약에 의해, 제한 시간이 부과되는 것이 일반적이다. 따라서, 대규모 회로를 BIST로 진단하는 경우에는, 제한 시간 내에 끝나지 않을 가능성이 있다. 그러나, 파워 온 직후부터 사용할 필요가 없는 회로는, 파워 온 직후의 POST를 전술한 런타임 테스트에 의해 대용하는 것이 가능하다.
따라서, CPU(100∼103) 중, 기동 시간의 제약은 불필요한 것으로 해서 미리 정해진 적어도 1개의 CPU에 대해서는, POST를 실행하지 않고, 전술한 런타임 테스트를 실행하도록 해도 된다.
예를 들어, BIST 컨트롤러(11)의 제어 레지스터에, CPU(100∼103)의 각각에 대하여, POST를 실시하는 CPU 인지 여부를 나타내는 설정값을 미리 저장하도록 한다. 그리고, BIST 컨트롤러(11)는 제어 레지스터의 설정값에 기초하여, POST를 실시하지 않는 CPU에 대해서는, 그 CPU가 부팅한 후에 런타임 테스트를 실시하도록 해도 된다.
예를 들어, BIST 컨트롤러(11)가 POST를 실시하지 않는 CPU에 대해 인터럽트 컨트롤러(14)를 통해 인터럽트를 통지하고, CPU가 인터럽트에 응답하여, 자신의 런타임 테스트를 실행하는 제어를 개시하도록 해도 된다. 또한, CPU가 부팅되었는지 여부는, 예를 들어 CPU가 부팅되었을 때 부팅하였음을 나타내는 스테이터스 신호를 BIST 컨트롤러(11)에 송신함으로써, 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)가 개시 또는 재개 타이밍을 인식하는 방법은, 타이머와 같이 클럭 신호에 기초하여 카운트 다운을 행함으로써 인식하는 방식을 채용해도 되며, 반도체 장치의 외부에 설치된 타이머(Wall Clock)의 출력값(시각을 나타내는 값)을 참조함으로써 인식하는 방식을 채용해도 된다.
(시스템 버스 및 버스 컨트롤러의 이중화)
런타임 테스트의 테스트 대상은, 상기의 예만으로 한정되지 않고, 예를 들어 L3 캐시 메모리와 그 캐시 컨트롤러를 갖는 회로, 또는 시스템 버스, 스누프 제어 시스템 유닛(23), 및 버스 컨트롤러[DDR 컨트롤러(16) 및 외부 버스 컨트롤러(17)]를 대상으로 할 수도 있다. 단, 시스템 버스, 스누프 제어 시스템 유닛(23) 및 버스 컨트롤러를 테스트 대상으로 한 경우에는, 시스템 버스에 있어서의 트랜잭션을 저해하여, 시스템 성능의 열화가 발생해 버린다. 그로 인해, 이 경우에는, 도 27에 도시한 바와 같이, 시스템 버스, 스누프 제어 시스템 유닛(23), 및 버스 컨트롤러를 이중화하고, 런타임 테스트의 실행 중에는, 런타임 테스트를 실행하지 않는 시스템 버스, 스누프 제어 시스템 유닛(23), 및 버스 컨트롤러를 사용함으로써, 시스템 성능의 열화를 저감하도록 해도 된다.
또한, 이상의 설명에서는, 시스템 버스, 스누프 제어 시스템 유닛(23), 및 버스 컨트롤러의 모두를 이중화한 예에 대해 설명하였지만, 이것으로 한정되지 않는다. 시스템 버스, 스누프 제어 시스템 유닛(23), 및 버스 컨트롤러 중, 어느 하나 또는 2개를 이중화하도록 해도 된다. 또한, 버스 컨트롤러에 대해서도, 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)의 리셋 시에서의 L2 캐시 메모리(124) 및 SCU 태그 RAM(126)의 초기화를, 초기화 마스크 회로(122a)에 의해 실시하도록 하고 있지만, 이것으로 한정되지 않는다. 예를 들어, 공통 회로(120)에 초기화 마스크 회로(122a)를 갖지 않도록 하고, 공통 회로(120)의 리셋 시도 초기화 마스크 회로(122b, 122c)에 의한 마스크를 유효하게 함으로써, L2 캐시 메모리(124) 및 SCU 태그 RAM(126)의 초기화를 억제하도록 해도 된다.
전술한 실시 형태에서는, CPU(100∼103)의 각각의 런타임 테스트를 실행하기 전에, CPU(100∼103)의 각각이 슬립 상태로 이행하도록 하고 있지만, CPU(100∼103)의 각각이 통상 동작을 정지한 상태로 이행하는 것이면, 이것으로 한정되지 않는다. 예를 들어, CPU(100∼103)의 각각은, 무한 루프 처리를 실행한 상태로 이행하도록 해도 된다.
CPU(100∼103) 중 어느 하나가, 전술한 런타임 테스트를 실행하기 위한 슬립 상태가 아니라, 통상의 처리에 따라서 슬립 상태로 되어 있는 경우에는, 그 CPU에 대한 런타임 테스트를 스킵하도록 해도 된다. 예를 들어, CPU(103∼101)의 각각은, 다음의 런타임 테스트 대상의 CPU가 슬립 상태인 경우에는, 그 CPU를 스킵하고, 또한 그 다음의 런타임 테스트 대상인 CPU에 CPU 간 인터럽트를 통지하도록 해도 된다. 또한, CPU(103)가 슬립 상태로 이행하는 경우에는, 타이머(15)로부터의 인터럽트의 통지처를, 그 다음의 런타임 테스트 대상의 CPU(102)로 변경하도록 인터럽트 컨트롤러(14)를 설정하도록 해도 된다.
또한, 전술한 실시 형태에서는, 런타임 테스트 대상의 회로 레지스터 데이터를, DDR 메모리(20), 메모리(21) 및 내장 메모리(50)에 저장하는 것으로서 설명하였지만, 이들 모두를 사용하지 않아도 된다. 예를 들어, DDR 메모리(20), 메모리(21) 및 내장 메모리(50) 중, 어느 하나 또는 2개의 레지스터의 데이터를 저장하도록 해도 된다.
1, 2, 3, 4, 5, 6, 7, 8, 9, 90: 반도체 장치
10, 70: CPU 클러스터
11: BIST 컨트롤러(마스터)
12: 클럭 컨트롤러
13: 리셋 컨트롤러
14: 인터럽트 컨트롤러
15, 28, 29, 30: 타이머(CPU BIST용)
16: DDR 컨트롤러
17: 외부 버스 컨트롤러
18: 리셋 마스크 회로
19: 인터럽트 마스크 회로
20: DDR 메모리
21: 메모리
22: 타이머(타임 아웃용)
23: 스누프 제어 시스템 유닛
25: 타이머(인터벌용)
26: 전원 제어 회로
27: 타이머(GPU BIST용)
40: GPU 클러스터
50: 내장 메모리
60, 160, 161, 162, 163: 테스트 컨트롤러
91: 기억 회로
92: 처리 회로
93: 억제 회로
94: 스캔 테스트 회로
100, 101, 102, 103: CPU
110, 111, 112, 113, 121: BIST 컨트롤러(슬레이브)
114: L1 캐시 컨트롤러
115: L1 캐시 메모리
116: 분기 이력 메모리
120: 공통 회로
122: 초기화 마스크 회로
123: L2 캐시 컨트롤러
124: L2 캐시 메모리
125: 스누프 제어 유닛
126: SCU 태그 RAM
127: 액세스 이력 메모리
131, 132, 133, 134, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150: 마스크 회로
170, 171, 172, 173, 180: 전원 스위치
400: GPU
410: BIST 컨트롤러

Claims (20)

  1. 기억 회로와,
    상기 기억 회로에 저장된 데이터를 이용하여 처리를 실행함과 함께, 처리의 실행에 따라 상기 기억 회로에 데이터를 기입하는 처리 회로와,
    상기 처리 회로가 처리를 실행하지 않을 때, 상기 처리 회로에 대한 스캔 테스트를 실행하는 스캔 테스트 회로와,
    상기 처리 회로에 대한 스캔 테스트를 실행하고 있을 때, 상기 처리 회로로부터 상기 기억 회로에 대한 데이터의 기입을 억제하는 억제 회로
    를 구비한 반도체 장치.
  2. 제1항에 있어서,
    상기 반도체 장치는, 상기 처리 회로에 대한 스캔 테스트의 실행 후에, 상기 처리 회로를 리셋하는 리셋 컨트롤러를 더 구비하고,
    상기 처리 회로는, 당해 처리 회로를 리셋했을 때, 상기 기억 회로의 데이터를 초기화하는 처리를 실행하는 것이며,
    상기 억제 회로는, 상기 스캔 테스트의 실행 후에 상기 처리 회로를 리셋했을 때, 상기 처리 회로에 대하여 상기 기억 회로의 데이터 초기화 처리의 실행을 억제하는, 반도체 장치.
  3. 제1항에 있어서,
    상기 반도체 장치는, 상기 처리 회로에 대한 스캔 테스트의 실행 후에, 상기 처리 회로를 리셋하는 리셋 컨트롤러를 더 구비하고,
    상기 처리 회로는, 당해 처리 회로를 리셋했을 때, 상기 기억 회로의 데이터를 초기화하는 처리를 실행하는 것이며,
    상기 억제 회로는, 상기 처리 회로로부터 상기 기억 회로로 출력되는 데이터의 기입을 위한 신호를 차단함으로써, 상기 처리 회로로부터 상기 기억 회로에 대한 데이터의 기입을 억제하고, 또한 상기 스캔 테스트의 실행 후에 상기 처리 회로를 리셋했을 때, 상기 기억 회로의 데이터를 초기화하기 위해 상기 처리 회로로부터 상기 기억 회로에 대한 데이터의 기입을 억제하는, 반도체 장치.
  4. 제1항에 있어서,
    상기 기억 회로는, 캐시 메모리를 포함하고,
    상기 처리 회로는,
    상기 처리를 실행하는 연산 회로와,
    상기 연산 회로가 이용하는 데이터의 상기 캐시 메모리로부터의 판독과, 상기 처리 회로의 처리에 따라서 데이터의 상기 캐시 메모리에의 기입을 제어하는 캐시 컨트롤러를 갖는 공통 회로를 포함하고,
    상기 억제 회로는, 상기 공통 회로에 대한 스캔 테스트를 실행하고 있을 때, 상기 캐시 컨트롤러에 대하여, 상기 캐시 메모리에 대한 데이터의 기입을 억제하는, 반도체 장치.
  5. 제1항에 있어서,
    상기 처리 회로는,
    캐시 메모리를 갖고, 상기 처리를 실행하는 복수의 연산 회로와,
    상기 복수의 연산 회로 간에서 상기 캐시 메모리의 캐시 일관성을 보증하는 제어를 행하는 제1 일관성 제어 회로를 갖는 공통 회로를 포함하고,
    상기 기억 회로는, 상기 제1 일관성 제어 회로가 상기 캐시 일관성의 보증에 이용하는, 상기 복수의 연산 회로의 각각의 캐시 메모리에 관한 관리 정보가 저장되는 관리 정보 기억 회로를 포함하고,
    상기 억제 회로는, 상기 공통 회로에 대한 스캔 테스트를 실행하고 있을 때, 상기 제1 일관성 제어 회로에 대하여 상기 관리 정보 기억 회로에 대한 데이터의 기입을 억제하는, 반도체 장치.
  6. 제1항에 있어서,
    상기 처리 회로는, 상기 처리를 실행하는 연산 회로를 포함하고,
    상기 연산 회로는, 인터럽트에 따라 기상하는 슬립 상태로 이행함으로써, 상기 처리를 중단하고,
    상기 반도체 장치는,
    상기 연산 회로에 인터럽트를 통지하는 인터럽트 컨트롤러와,
    상기 인터럽트 컨트롤러로부터 상기 연산 회로에 대한 인터럽트를 차단하는 인터럽트 마스크 회로
    를 더 구비하고,
    상기 연산 회로는, 상기 슬립 상태로 이행하기 전에, 상기 인터럽트의 차단을 행하도록 상기 인터럽트 마스크 회로에 통지하는, 반도체 장치.
  7. 제1항에 있어서,
    상기 처리 회로는,
    상기 처리를 실행하는 복수의 연산 회로와,
    상기 복수의 연산 회로에 의해 공유되는 공통 회로를 포함하고,
    상기 복수의 연산 회로의 각각은, 슬립 상태로 이행함으로써, 상기 처리를 중단하고,
    상기 반도체 장치는, 상기 공통 회로에 대한 스캔 테스트의 실행 후에, 회로를 리셋하는 리셋 신호를, 상기 복수의 연산 회로 및 상기 공통 회로의 각각으로 출력하는 리셋 컨트롤러와,
    상기 공통 회로에 대한 스캔 테스트의 실행 후에 상기 복수의 연산 회로 및 상기 공통 회로의 각각으로 출력되는 리셋 신호 중, 상기 복수의 연산 회로로 출력되는 리셋 신호를 차단하는 리셋 마스크 회로를 더 구비한, 반도체 장치.
  8. 제1항에 있어서,
    상기 처리 회로는,
    상기 처리를 실행하는 복수의 연산 회로와,
    상기 복수의 연산 회로에 의해 공유되는 공통 회로와,
    상기 복수의 연산 회로의 각각에 대응하고, 상기 연산 회로에 대한 스캔 테스트를 실행하고 있을 때, 상기 연산 회로에 입력되는 신호 및 상기 연산 회로로부터 출력되는 신호를 차단하는 복수의 제1 래퍼 회로와,
    상기 공통 회로에 대한 스캔 테스트를 실행하고 있을 때, 상기 공통 회로에 입력되는 신호 및 상기 공통 회로로부터 출력되는 신호를 차단하는 제2 래퍼 회로를 포함하는, 반도체 장치.
  9. 제1항에 있어서,
    상기 처리 회로는, 상기 처리를 실행하는 복수의 연산 회로를 포함하고,
    상기 스캔 테스트 회로는, 상기 복수의 연산 회로의 하나로부터의 지시에 따라, 당해 연산 회로의 스캔 테스트를 실행하는 것이며,
    상기 복수의 연산 회로의 하나는, 다른 연산 회로로부터의 인터럽트에 따라 상기 스캔 테스트 회로에 스캔 테스트의 실행을 지시하고, 당해 지시에 따른 스캔 테스트의 실행 후에 다른 연산 회로에 인터럽트를 통지하는, 반도체 장치.
  10. 제1항에 있어서,
    상기 처리 회로는,
    상기 처리를 실행하는 복수의 연산 회로와,
    상기 복수의 연산 회로에 의해 공유되는 공통 회로를 포함하고,
    상기 스캔 테스트 회로는, 상기 연산 회로로부터의 스캔 테스트의 지시에 따라, 상기 공통 회로의 스캔 테스트를 실행하는 것이며,
    상기 복수의 연산 회로의 하나는, 다른 모든 연산 회로의 각각에 인터럽트를 통지함과 함께, 상기 스캔 테스트 회로에 스캔 테스트의 실행을 지시하고 나서, 슬립 상태로 이행함으로써, 상기 처리를 중단하고,
    상기 다른 모든 연산 회로의 각각은, 상기 복수의 연산 회로의 하나로부터의 인터럽트에 따라, 슬립 상태로 이행함으로써, 상기 처리를 중단하는, 반도체 장치.
  11. 제1항에 있어서,
    상기 반도체 장치는, 상기 스캔 테스트의 실행 시간이 소정 시간을 초과한 경우에 타임 아웃을 통지하는 타이머를 더 구비하고,
    상기 처리 회로는, 상기 처리 회로에 대한 스캔 테스트를 개시할 때 상기 타이머를 설정하고, 상기 처리 회로에 대한 스캔 테스트가 종료했을 때 상기 타이머를 해제하는, 반도체 장치.
  12. 제5항에 있어서,
    상기 반도체 장치는,
    복수의 상기 처리 회로와,
    상기 복수의 처리 회로 간에서 상기 캐시 메모리의 캐시 일관성을 보증하는 제어를 행하는 제2 일관성 제어 회로를 구비하고,
    상기 복수의 처리 회로의 각각은, 상기 공통 회로에 대한 스캔 테스트를 실행하고 있을 때, 상기 캐시 일관성을 보증하기 위해서, 상기 제2 일관성 제어 회로로부터 상기 제1 일관성 제어 회로로 출력되는 신호를 차단하는 마스크 회로를 포함하는, 반도체 장치.
  13. 제9항에 있어서,
    상기 스캔 테스트 회로는, 상기 연산 회로 전체의 스캔 테스트에 사용하는 복수의 테스트 패턴을 분할한 복수의 단위의 각각에 대한 스캔 테스트를 분할 스캔 테스트로서 실행할 때마다, 상기 연산 회로에 대한 스캔 테스트의 실행을 종료하는 것이며,
    상기 반도체 장치는, 상기 연산 회로의 분할 스캔 테스트를 종료하고 나서의시간을 계측하고, 당해 연산 회로의 다음 분할 스캔 테스트를 개시하는 타이밍을 상기 연산 회로에 통지하는 타이머를 더 구비하고,
    상기 연산 회로는, 상기 타이머로부터의 통지에 따라서, 상기 스캔 테스트 회로에 상기 분할 스캔 테스트의 개시를 지시하는, 반도체 장치.
  14. 제10항에 있어서,
    상기 스캔 테스트 회로는, 상기 공통 회로를 분할한 복수의 영역 각각에 대해 상기 스캔 테스트를 실행할 때마다, 상기 공통 회로에 대한 스캔 테스트의 실행을 중단하는 것이며,
    상기 반도체 장치는, 상기 스캔 테스트를 중단하고 나서 재개할 때까지의 시간을 계측하고, 상기 스캔 테스트를 재개하는 타이밍을 상기 연산 회로에 통지하는 타이머를 더 구비하고,
    상기 연산 회로는, 상기 타이머로부터의 통지에 따라서, 상기 스캔 테스트 회로에 상기 스캔 테스트의 재개를 지시하는, 반도체 장치.
  15. 제1항에 있어서,
    상기 처리 회로는, 상기 처리를 실행하는 연산 회로를 포함하고,
    상기 연산 회로는, 슬립 상태로 이행함으로써, 상기 처리를 중단하고,
    상기 반도체 장치는,
    상기 연산 회로를 리셋하는 리셋 컨트롤러와,
    상기 연산 회로가 슬립 상태로 이행했을 때, 상기 연산 회로의 전원을 OFF로 하고, 인터럽트가 통지되었을 때, 상기 연산 회로의 전원을 ON으로 하여 상기 리셋 컨트롤러에 의해 상기 연산 회로를 리셋하는 전원 제어 회로를 더 구비하고,
    상기 연산 회로는, 상기 연산 회로에 대한 스캔 테스트를 실행하는 경우에는, 상기 연산 회로의 전원 OFF를 억제하도록 상기 전원 제어 회로를 설정하고 나서, 슬립 상태로 이행함으로써, 상기 처리를 중단하고,
    상기 스캔 테스트 회로는, 상기 연산 회로에 대한 스캔 테스트의 실행 후에, 상기 전원 제어 회로에 인터럽트를 통지하는, 반도체 장치.
  16. 제1항에 있어서,
    상기 스캔 테스트 회로는, 상기 반도체 장치의 외부에 구비된 외부 기억 회로에 저장된 테스트 패턴을 취득하고, 취득한 테스트 패턴을 상기 처리 회로에 스캐닝함으로써 상기 스캔 테스트를 실행하는, 반도체 장치.
  17. 제1항에 있어서,
    상기 처리 회로는, 상기 처리를 실행하는 CPU를 포함하고,
    상기 CPU는,
    캐시 메모리와,
    상기 CPU가 이용하는 데이터의 상기 캐시 메모리로부터의 판독과, 상기 처리 회로의 처리에 따라서 데이터의 상기 캐시 메모리로의 기입을 제어하는 캐시 컨트롤러를 갖고,
    상기 억제 회로는, 상기 CPU에 대한 스캔 테스트를 실행하고 있을 때, 상기 캐시 컨트롤러로부터 상기 캐시 메모리에 대한 데이터의 기입을 억제하는, 반도체 장치.
  18. 제1항에 있어서,
    상기 처리 회로는, 상기 처리를 실행하는 CPU를 포함하고,
    상기 반도체 장치는,
    상기 CPU의 처리를 보조적으로 실행하는 하드웨어 액셀러레이터와,
    시간의 경과를 계측하고, 상기 하드웨어 액셀러레이터에 대한 스캔 테스트를 실행하는 타이밍을 상기 CPU에 통지하는 타이머를 더 구비하고,
    상기 CPU는, 상기 타이머로부터의 통지에 따라서, 상기 하드웨어 액셀러레이터에 대한 스캔 테스트의 실행을 지시하고,
    상기 스캔 테스트 회로는, 상기 CPU로부터의 지시에 따라, 상기 하드웨어 액셀러레이터에 대한 스캔 테스트를 더 실행하는, 반도체 장치.
  19. 제1항에 있어서,
    상기 처리 회로는, 상기 처리를 실행하는 복수의 연산 회로를 포함하고,
    상기 복수의 연산 회로 중, 미리 정해진 적어도 1개의 연산 회로는, 전원 ON 시에 POST를 실행하지 않고, 다른 연산 회로는, 전원 ON 시에 POST를 실행하고,
    상기 스캔 테스트 회로는, 상기 POST를 실행하지 않는 연산 회로가 부팅되었을 때,
    당해 연산 회로의 스캔 테스트를 실행하는, 반도체 장치.
  20. 기억 회로에 저장되는 데이터를 이용해서 처리를 실행함과 함께, 처리의 실행에 따라 상기 기억 회로에 데이터를 기입하는 처리 회로가 처리를 실행하지 않을 때, 상기 처리 회로에 대한 스캔 테스트를 실행하고,
    상기 처리 회로에 대한 스캔 테스트를 실행하고 있을 때, 상기 처리 회로로부터 상기 기억 회로에 대한 데이터의 기입을 억제하는, 진단 테스트 방법.
KR1020160064093A 2015-05-27 2016-05-25 반도체 장치 및 진단 테스트 방법 KR20160140446A (ko)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
KR20160140446A true KR20160140446A (ko) 2016-12-07

Family

ID=56087122

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160064093A KR20160140446A (ko) 2015-05-27 2016-05-25 반도체 장치 및 진단 테스트 방법

Country Status (6)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11460502B2 (en) * 2017-06-20 2022-10-04 Phosphil Inc. Processor-based measuring method for testing device under test, and measuring device using same

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10281525B2 (en) * 2015-06-18 2019-05-07 Renesas Electronics Corporation Semiconductor device and diagnostic test method for both single-point and latent faults using first and second scan tests
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
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
US11354474B2 (en) * 2020-08-31 2022-06-07 Beijing Baidu Netcom Science And Technology Co., Ltd. Method, apparatus and computer storage medium for authenticating chip

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140219A (ja) 2008-12-11 2010-06-24 Renesas Technology Corp 半導体データ処理デバイス

Family Cites Families (18)

* 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 車載用電子制御装置
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 卡斯柯信号有限公司 一种软硬件结合的内存避错方法及其装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140219A (ja) 2008-12-11 2010-06-24 Renesas Technology Corp 半導体データ処理デバイス

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11460502B2 (en) * 2017-06-20 2022-10-04 Phosphil Inc. Processor-based measuring method for testing device under test, and measuring device using same

Also Published As

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

Similar Documents

Publication Publication Date Title
US10761139B2 (en) Semiconductor apparatus and diagnostic test method
US10628275B2 (en) Runtime software-based self-test with mutual inter-core checking
JP6496562B2 (ja) 半導体装置、診断テスト方法及び診断テスト回路
EP2966650B1 (en) Memory built-in self test for a data processing apparatus
US9952654B2 (en) Centralized synchronization mechanism for a multi-core processor
KR101283809B1 (ko) 리셋 방법 및 감시 장치
US8826097B2 (en) Memory scrubbing
JP6462870B2 (ja) 半導体装置及び診断テスト方法
US10691565B2 (en) Storage control device and storage control method
JP3301992B2 (ja) 電源故障対策を備えたコンピュータシステム及びその動作方法
US8069309B1 (en) Servicing memory in response to system failure
CN108984464B (zh) 微处理器及在微处理器的处理核间同步的方法
CN107729055B (zh) 微处理器及其执行方法
US20100131718A1 (en) Multiprocessor system
US10008285B2 (en) Semiconductor device
CN109240481B (zh) 多核微处理器及使用其省电的方法
CN110046126B (zh) 多核微处理器及其重新配置方法、计算机可读存储介质
CN109165189B (zh) 微处理器及其配置方法、以及计算机可读存储介质
KR102376396B1 (ko) 멀티 코어 프로세서 및 그것의 캐시 관리 방법
CN115904850B (zh) 多核处理器的上电检测方法、可读存储介质及gpu
JP7026870B2 (ja) タスク異常監視装置、方法及びプログラム
JP2000347758A (ja) 情報処理装置
Christoforakis et al. Runtime Adaptation of Embedded Tasks with A-Priori Known Timing Behavior Utilizing On-Line Partner-Core Monitoring and Recovery
JP4853620B2 (ja) マルチプロセッサシステムと初期立ち上げ方法およびプログラム
WO2024073193A1 (en) Selecting between basic and global persistent flush modes