KR20220113423A - 디버그 상태 머신 트리거 확장 성능 모니터 카운터 - Google Patents

디버그 상태 머신 트리거 확장 성능 모니터 카운터 Download PDF

Info

Publication number
KR20220113423A
KR20220113423A KR1020227022121A KR20227022121A KR20220113423A KR 20220113423 A KR20220113423 A KR 20220113423A KR 1020227022121 A KR1020227022121 A KR 1020227022121A KR 20227022121 A KR20227022121 A KR 20227022121A KR 20220113423 A KR20220113423 A KR 20220113423A
Authority
KR
South Korea
Prior art keywords
event
dsm
debug
data
indication
Prior art date
Application number
KR1020227022121A
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 KR20220113423A publication Critical patent/KR20220113423A/ko

Links

Images

Classifications

    • 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/31705Debugging aspects, e.g. using test circuits for debugging, using dedicated debugging test circuits
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

집적회로(IC)[100]는 디버그 제어기[102], 디버그 상태 머신(DSM)[104], 및 확장 성능 모니터 카운터(EPMC)[106]를 포함한다. 디버그 제어기는 디버그 상호 접속부[110]에서 디버그 데이터를 선택적으로 출력한다. DSM은 디버그 데이터와 이벤트 목록[304]에 기초하여 이벤트를 식별하고, 이벤트를 식별하는 DSM 표시[124]를 출력한다. EPMC는 식별된 이벤트를 포함하는 복수의 검출된 이벤트를 표시한다. EPMC는 DSM 표시에 응답하여 식별된 이벤트를 표시한다.

Description

디버그 상태 머신 트리거 확장 성능 모니터 카운터
집적회로(IC)의 복잡성이 증가함에 따라서, 이러한 IC의 테스트, 모니터링 및 디버깅하는 것이 더욱 복잡하게 된다. 자동 테스트 장비(ATE) 및 로직 분석기는 제조된 칩에 주어진 입력 값을 제공하도록 사용된다. 오류가 검출될 때, 관심 신호는 원인을 파악하도록 탭핑된다(tapped). 많은 경우에, 이러한 프로세스는 시간과 노동 집약적이다. 온칩 로직 및 성능 모니터 카운터(performance monitor counter: PMC)는 IC 디버그, 검증 및 성능 프로파일링을 지원하도록 사용된다. PMC는 칩 검증 및 정상 동작 동안 특정 이벤트의 발생을 추적하고 표시하도록 사용된다. 그러나, IC를 물리적으로 재설계함이 없이, 종래의 PMC는 전형적으로 비교적 작은 선택 이벤트만 추적한다.
본 개시내용은 첨부된 도면을 참조하는 것에 의해 당업자에게 더 잘 이해되고, 그 수많은 특징 및 이점이 명백해진다. 다른 도면에서 동일한 도면 부호를 사용하는 것은 유사하거나 동일한 항목을 나타낸다.
도 1은 일부 실시형태에 따른 디버그 상태 머신 및 확장 성능 모니터 카운터를 포함하는 집적회로의 구현예의 블록도이다.
도 2는 일부 실시형태에 따른 디버그 상태 머신 및 확장 성능 모니터 카운터를 포함하는 집적회로의 다른 구현예의 블록도이다.
도 3은 일부 실시형태에 따른 예시적인 디버그 상태 머신을 도시하는 블록도이다.
도 4는 일부 실시형태에 따른 이벤트를 검출하고, 확장 성능 모니터 카운터에 디버그 상태 머신 표시를 제공하는 방법을 예시하는 흐름도이다.
도 5는 일부 실시형태에 따른 디버그 상태 머신 트리거 확장 성능 모니터 카운터를 포함하는 처리 시스템의 블록도이다.
본 명세서에서 설명된 바와 같이, 다양한 실시형태에서, 집적회로(IC)는 확장 성능 모니터 카운터(EPMC)에 표시를 전송하는 적어도 하나의 디버그 상태 머신(DSM)을 포함한다. 보다 구체적으로, DSM은 디버그 데이터(예를 들어, 디버그 상호 접속부를 통해), 파이프라인 트리거(예를 들어, 하나 이상의 지적 재산(IP) 디바이스로부터의 데이터) 또는 둘 모두를 수신한다. DSM은 수신된 데이터를 저장된 이벤트 목록과 비교한다. 이벤트 목록에 의해 지정된 이벤트가 발생하였다는 것을 표시하는 비교에 응답하여, DSM은 DSM 표시를 EPMC에 전송한다. EPMC는 IC 인터페이스를 통해, 지정된 이벤트가 검출되었다는 것을 표시한다. 따라서, 지정된 이벤트는 디버그 데이터, 파이프라인 트리거 또는 둘 모두에 기초하여 검출되고 표시된다. 일부 경우에, 디버그 데이터, 파이프라인 트리거 또는 둘 모두에 기초하여 생성된 정보를 검출하고 표시하는 것은 성능 프로파일링, 디바이스 디버깅, 유효성 검사 범위, 또는 프로덕션 해결 방법에 대한 추가 옵션을 제공한다.
일부 구현예에서, DSM의 이벤트 목록은 예를 들어 직접 사용자 입력을 통해, 기본 입력/출력 시스템(BIOS) 업데이트를 통해, 또는 보안 펌웨어 업데이트를 통해 조정 가능하다. 일부 실시형태에서, 이벤트 목록은 저장 디바이스에서 함께 저장된 조건의 공식 목록이 아니라, 다양한 특정 세트의 신호 또는 트리거가 수신될 때 대응하는(예를 들어, 다양한 특정 이벤트에 대응하는) 이벤트가 검출되었다는 표시를 생성하는 하드웨어의 구성이다. 그 결과, 일부 경우에, DSM은 DSM을 변경하기 전과 비교하여 상이한 이벤트들의 발생을 EPMC에 표시한다. 또한 EPMC는 상이한 이벤트의 발생의 표시를 출력한다. 그러므로, 일부 경우에, EPMC에 의해 보고된 이벤트의 목록은 EPMC 제작 후에 변경되어, 추가적인 칩 유연성을 제공한다.
일부 IC는 전형적으로 디버그 상호 접속부, 파이프라인 디바이스(예를 들어, IP 디바이스) 또는 둘 모두에 연결되지 않는 성능 모니터 카운터(PMC)를 포함한다. 이러한 시스템에서, PMC는 이벤트 기반 인터럽트와 같은 다른 소스로부터 수신된 데이터를 표시하는 것으로 제한된다. 예를 들어, 일부 경우에, PMC는 출입하는 특정 전력 상태를 카운트하지만, 이러한 정보가 일부 시스템에서 디버그 상호 접속부에 이용 가능할 수 있더라도, 각각의 전력 상태에서 소비된 클록 사이클의 수를 표시하지 않는다. 추가적으로, 일부 경우에, PMC는 PMC의 제작의 일부로서 고정된 아키텍처를 가진다. 그 결과, 이들 IC에서, PMC는 디버그 상호 접속부, 파이프라인 트리거 또는 둘 모두에 의해 표시되는 적어도 일부 이벤트를 포함하지 않는 이벤트의 고정 목록을 표시하도록 제한된다. 일부 경우에, 사용자나 프로그래머가 디버그 상호 접속부, 파이프라인 트리거 또는 둘 모두에 의해 시그널링된 이벤트의 표시를 수신하거나 또는 PMC의 제작 후에 PMC에 의해 표시된 이벤트를 변경하는 것이 바람직하다.
도 1은 일부 실시형태에 따른 IC(100)를 도시한다. 도시된 실시형태에서, IC(100)는 디버그 제어기(102), DSM(104), 및 EPMC(106)를 포함한다. 디버그 상호 접속부(110)는 디버그 제어기(102)를 DSM(104)에 연결한다. DSM-EPMC 상호 접속부(112)는 DSM(104)을 EPMC(106)에 연결한다. 예시된 실시형태는 명료성을 위해 3개의 컴포넌트만을 예시하고 있지만, 다양한 실시형태에서, 다른 컴포넌트가 고려된다.
일부 실시형태에서, 도 5를 참조하여 아래에서 추가로 논의되는 바와 같이, IC(100)는 데스크탑 또는 랩탑 컴퓨터, 서버, 스마트폰, 태블릿, 게임 콘솔, 또는 기타 전자 디바이스와 같은 디바이스의 일부이다. 디바이스는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 시스템 메모리 제어기, 시스템 입력/출력(IO) 디바이스 및 버스 제어기, 주변 보조 프로세서 소자를 포함한다. 다양한 실시형태에서, 이들 컴포넌트 중 일부 또는 전부는 DSM 및 성능 모니터 카운터를 통합한다. 다양한 실시형태에서, 이들 컴포넌트 중 임의의 것 또는 전부는 다양한 프로그램 또는 명령의 시퀀스를 실행하는 부분으로서, 명령 기반 샘플링 데이터(126)를 EPMC(106)로 전송하거나, 디버그 소스 정보(120)를 다양한 관찰 포인트에서 디버그 제어기(102)로 전송하거나, 또는 둘 모두이다.
예시된 실시형태에서, 다양한 디버그 소스 정보(120)(예를 들어, 통신 인터페이스 상의 교차 트리거 신호, 트랩 신호, 클록 정지 신호, 오류 신호, 성능 모니터("perfmon") 신호 또는 이벤트, 인터럽트, 중단점, 마이크로코드 기반 트리거(예를 들어, 중단점, 성능 모니터, 인터럽트 및 오류 이벤트), 타이머 오버플로, 결함 신호에 대한 재동기화, 전력 상태 변경 신호, 전력 소비 신호, 송신 논리 블록의 특정 내부 논리의 상태 신호, 또는 이들의 임의의 조합)이 디버그 제어기(102)에 제공된다. 디버그 소스 정보(120)를 수신한 것에 응답하여, 디버그 제어기(102)는 디버그 상호 접속부(110)(예를 들어, 디버그 버스) 상에서 디버그 데이터(122)로서 디버그 소스 정보(120)를 선택적으로 출력한다. 예를 들어, 일부 경우에, 디버그 제어기(102)는 하나 이상의 멀티플렉서를 포함하고, 디버그 소스 정보(120) 입력 사이에서 회전하여, 수신된 데이터를 디버그 데이터(122)로서 출력한다.
DSM(104)은 디버그 상호 접속부(110) 상에서 디버그 데이터(122)를 수신하고, 수신된 데이터를 DSM(104)에 저장된 이벤트 목록(예를 들어, 프로그래밍 가능한 이벤트 정보)와 비교한다. 디버그 데이터(122)가 완료된 이벤트를 표시한다는 결정에 응답하여, DSM(104)은 완료된 이벤트가 식별되었음을 표시하는 DSM 표시(124)를 생성한다. 일부 실시형태에서, 이벤트 목록은 다수의 이벤트를 포함한다. 다른 실시형태에서, 이벤트 목록은 단일 이벤트만을 포함한다. 일부 실시형태에서, 이벤트 목록은 메모리 디바이스에서 조건을 함께 저장함이 없이 다양한 이벤트를 검출하고 표시하는 DSM(104)에서의 하드웨어의 구성이다. 다양한 실시형태에서, 도 3을 참조하여 아래에서 더 논의되는 바와 같이, DSM(104)은 단일 조건 이벤트, 다수의 조건 이벤트, 또는 둘 모두를 식별한다. 예를 들어, 일부 경우에, DSM(104)은 결함 신호에 대한 재동기화를 검출한 것에 응답하여 DSM 표시(124)를 생성한다. 다른 예로서, 일부 경우에, 제1 전력 상태 전이(예를 들어, 특정 위상으로의 전이)를 표시하는 디버그 데이터(122)를 수신한 것에 응답하여, DSM(104)은 전력 상태 전이의 특정 위상에서 소비된 클록 사이클의 수를 추적한다. 제2 전력 상태 전이(예를 들어, 특정 위상으로부터의 전이)를 표시하는 디버그 데이터(122)를 수신한 것에 응답하여, DSM(104)은 DSM 표시(124)를 생성한다. 일부 경우에, DSM 표시(124)는 특정 위상에서 소비된 사이클의 수를 표시한다. 따라서, 다양한 실시형태에서, DSM(104)은 특정 상태를 표시하는 디버그 데이터(122)에 응답하여 DSM 표시(124)를 생성하거나, 신호의 시퀀스에 응답하여 DSM 표시(124)를 생성하거나, 또는 둘 모두이다. 또한, 도 2를 참조하여 아래에 설명되는 바와 같이, 다양한 실시형태에서, DSM(104)은 다양한 입력(예를 들어, 디버그 상호 접속부(110)를 통해 또는 다른 디바이스로부터 수신된 신호)에 응답하여 다양한 다른 제어 신호를 생성한다.
예시된 실시형태에서, DSM(104)의 이벤트 목록은 이벤트 목록 업데이트를 통해 변경 가능하다. 일부 경우에, 이벤트 목록 업데이트는 모니터링, 프로파일링, 및 디버깅에 필요할 때 사용되도록 사용자로부터 (예를 들어, 사용자 지정 이벤트 선택 입력으로서) 직접 수신된다. 다른 경우에, 이벤트 목록 업데이트는 기본 입력/출력 시스템(BIOS) 업데이트 또는 보안 펌웨어 업데이트(예를 들어, 고객으로부터의 이벤트를 모니터링하는 요청에 응답하여 IC(100)의 제조업체에 의해 수행된)를 통해 수행된다. 따라서, 일부 경우에, DSM 표시(124)를 통해 DSM(104)에 의해 식별된 이벤트는 IC(100)의 제조 이후에 변경된다.
EPMC(106)는 이벤트 데이터(128)로서 다양한 동작(예를 들어, 폐기 명령)과 관련된 다양한 이벤트(예를 들어, 사전 결정된 임계값에 도달할 때 샘플링 프로파일을 제공하거나 입력을 생성하는)의 표시를 카운트하고 출력한다. 예를 들어, 일부 경우에, EPMC(106)은 이벤트 기반 인터럽트 데이터(126)를 통해, IC(100)의 하나 이상의 디바이스(예를 들어, CPU)에 의해 입력 및 종료되는 전력 상태의 표시를 수신하고, 입력된 특정 전력 상태를 카운트하고, 이벤트 데이터(128)로서 결과를 출력한다. 또한, 예시된 실시형태에서, EPMC(106)는 표준 이벤트로서 DSM-EPMC 상호 접속부(112)를 통해 DSM 표시(124)를 수신하고, DSM 표시(124)에 응답하여 DSM 이벤트 데이터(130)를 출력한다. 그 결과, 일부 경우에, EPMC(106)는 입력된 특정 전력 상태의 카운트를 표시하는 이벤트 데이터(128)를 출력하고, 특정 전력 상태에서 소비된 사이클의 수를 표시하는 DSM 이벤트 데이터(130)를 추가로 출력한다. 다양한 실시형태에서, 이벤트 데이터(128), DSM 이벤트 데이터(130), 또는 둘 모두는 입력/출력(I/O) 인터페이스(예를 들어, 사용자 인터페이스)를 통해 출력되거나 또는 메모리 디바이스에서의 이벤트 로그에 저장된다. 따라서, EPMC(106)는 디버그 상호 접속부(110)를 통해 수신된 디버그 소스 정보(120)에 기초하여 이벤트 데이터를 출력하며, 이는 일부 경우에, 이벤트 기반 인터럽트 데이터(126)에만 기초하여 생성된 이벤트 데이터와 비교하여 추가 정보를 포함한다. 또한, 변경 가능한 DSM(104)의 이벤트 목록의 결과로서, 일부 경우에, EPMC(106)는 주문 제작 가능한 성능 모니터이다.
도 2는 일부 실시형태에 따른 IC(200)를 도시하는 블록도이다. 예시된 실시형태에서, IC(200)는 도 1의 디버그 제어기(102), DSM(104), EPMC(106), 디버그 상호 접속부(110), 및 DSM-EPMC 상호 접속부(112) 및 파이프라인 디바이스(202), 파이프라인 입력 상호 접속부(204), 및 파이프라인 출력 상호 접속부(206)를 포함한다. 예시된 실시형태가 명료성을 위해 3개의 컴포넌트만을 예시하고 있지만, 다양한 실시형태에서, 다른 컴포넌트가 고려된다.
도 1을 참조하여 위에서 설명된 바와 같이, 일부 실시형태에서, 디버그 제어기(102)는 디버그 소스 정보(120)에 기초하여 디버그 데이터(122)를 생성한다. DSM(104)은 디버그 데이터(122)에 기초하여 이벤트를 검출한 것에 응답하여 DSM 표시(124)를 생성한다. EPMC(106)는 이벤트 기반 인터럽트 데이터(126)에 기초하여 이벤트 데이터(128)를 생성하고, DSM 표시(124)에 기초하여 DSM 이벤트 데이터(130)를 생성한다.
추가적으로, 예시된 실시형태에서, DSM(104)은 파이프라인 디바이스(202)로부터 파이프라인 트리거(210)에 응답하여(예를 들어, 디버그 데이터(122)의 하나 이상의 인스턴스, 파이프라인 트리거(210)의 하나 이상의 인스턴스, 또는 이것들의 임의의 조합에 응답하여) DSM 표시(124)를 생성한다. 다양한 실시형태에서, 파이프라인 디바이스(202)는 파이프라인 입력 상호 접속부(204)를 통해 파이프라인 트리거(단순함을 위해 파이프라인 트리거(210)로서 예시됨)를 DSM(104)으로 전송한다. 예를 들어, 일부 경우에, 파이프라인 트리거(210)는 트랩 신호, 클록 정지 신호, 오류 신호, 성능 모니터("perfmon") 신호 또는 이벤트, 인터럽트 신호, 중단점 표시, 마이크로코드 기반 트리거(예를 들어, 중단점, 성능 모니터, 인터럽트 및 오류 이벤트) 및 타이머 오버플로 신호 중 하나 이상을 포함한다.
DSM 표시(124)를 생성하는 것 외에도, 일부 경우에, DSM(104)은 파이프라인 트리거(210), 디버그 데이터(122), 또는 둘 모두에 응답하여 파이프라인 액션(212)을 생성한다. DSM(104)은 파이프라인 출력 상호 접속부(206)를 통해 파이프라인 액션(단순화를 위해 파이프라인 액션(212)으로서 예시됨)을 전송한다. 파이프라인 액션(212)은 다양한 액션을 수행하도록 파이프라인 디바이스(202)에 지시한다. 예를 들어, 일부 경우에, 파이프라인 액션(212)은 로컬 정지 클록 신호, 다이 전체 정지 클록 신호(die-wide stop clock signal), 메모리 디바이스에 대한 셀프 리프레시 신호, 통신 인터페이스 수신 비활성화 신호, 트레이스 저장 신호, 기계 검사 예외(MCE) 신호, 디버그 이벤트 신호, 디버그 마이크로코드 인터럽트 트리거, DSM 마이크로코드 레지스터에서의 다양한 비트의 설정 및 소거 명령, 동작 스톨 신호(operation stall signal), 구조 플러시 신호, 상태 캡처 버퍼에 디버그 데이터 저장을 시작하라는(예를 들어, 디버그 레코드 버퍼(DRB)에 저장하고 예약된 캐시 방식 또는 시스템 메모리로 유출하라는) 명령, 상태 캡처 버퍼에 디버그 데이터 저장을 중지하라는 명령, 상태 캡처 버퍼에 클록 카운트를 저장하라는 명령, 및 대기열의 크기를 변경하라는 명령 중 하나 이상을 포함한다.
따라서, 일부 경우에, DSM(104)은 이벤트 기반 인터럽트 데이터(126)에 의해 표시되지 않은 데이터를 추적한다. 그러나, EPMC(106)가 DSM 이벤트 데이터(130)를 출력하기 때문에, 이러한 추적된 데이터는 일부 경우에 사용자에 대해 투과성이다. 또한, DSM(104)의 이벤트 목록이 변경 가능하기 때문에, EPMC(106)의 출력은 IC(200) 제작 후에 변경 가능하다.
도 3은 일부 실시형태에 따른 예시적인 DSM(104)을 도시하는 블록도이다. DSM(104)은 이벤트 검출 컴포넌트(302)를 포함한다. 이벤트 검출 컴포넌트(302)는 이벤트 목록(304)을 포함한다. 도시된 예에서, 이벤트 목록(304)이 다수의 이벤트를 포함할지라도, 다른 실시형태에서, 이벤트 목록(304)은 단일 이벤트만을 포함한다. 추가적으로, 도시된 예에서, 이벤트 목록(304)이 메모리 디바이스에서 함께 저장된 데이터(예를 들어, 이벤트 조건)에 대응할지라도, 다른 실시형태에서 이벤트 목록(304)은 메모리 디바이스에서 이벤트 조건을 함께 저장함이 없이 다양한 이벤트를 검출하고 표시하는 DSM(104)에서의 하드웨어의 구성이다.
예시된 예에서, DSM(104)은 디버그 데이터(122), 파이프라인 트리거(210), 또는 둘 모두를 수신한다. 이벤트 검출 컴포넌트(302)는 수신된 데이터를 이벤트 목록(304)과 비교하고, 비교에 기초하여 이벤트가 검출되었는지의 여부를 결정한다. 이벤트를 검출한 것에 응답하여, DSM(104)은 검출된 이벤트를 표시하는 DSM 표시(124)를 전송한다. 또한, 예시된 실시형태에서, 이벤트 검출 컴포넌트(302)는 파이프라인 액션(212)이 수신된 데이터에 기초하여 생성되는지의 여부를 결정한다. 그러나, 다른 실시형태에서, 파이프라인 액션(212)은 DSM(104)의 상이한 하드웨어를 사용하여 생성된다.
예시 목적을 위해, 도 3은 DSM 표시(124)를 생성하는 잠재적 이벤트의 4가지 예를 도시한다. 특히, 전력 상태 모니터가 제1 값 이상의 값을 표시하는 내부 전력 상태 모니터 카운트를 표시하는 디버그 데이터(122)에 응답하여, DSM(104)은 전력 상태 모니터 카운트를 표시하는 DSM 표시(124)를 전송한다. 다른 예로서, 전력 상태 모니터가 제2 값 미만의 값을 표시하는 내부 전력 상태 모니터 카운트를 표시하는 디버그 데이터(122)에 응답하여, DSM(104)은 전력 상태 모니터 카운트를 표시하는 DSM 표시(124)를 전송한다. 일부 실시형태에서, 제1 값, 제2 값, 또는 둘 모두는 집적회로의 다이 전압의 범위 내에서 관찰된 다이 전압을 표시하는 프록시 값이다. 다른 실시형태에서, 제1 값, 제2 값, 또는 둘 모두는 실제 전압이다. 또한, 결함 신호에 대한 재동기화가 높은 것을 표시하는 디버그 데이터(122)에 응답하여, 또는 활성인 파이프라인 트리거(210)에 응답하여. DSM(104)은 DSM 표시(124)를 전송한다. 추가적으로, 일부 경우에, 이벤트 목록(304)의 이벤트는 다수의 조건 이벤트이다. 예를 들어, 제1 전력 상태 변화가 발생했다는 것을 표시하는 디버그 데이터(122)에 응답하여, DSM(104)은 (예를 들어, 카운터를 증가시키거나 현재 카운터 값을 마킹하는 것에 의해) 클록 사이클을 카운팅하기 시작한다. 제2 전력 상태 변화가 발생했다는 것을 표시하는 디버그 데이터(122)에 응답하여, DSM(104)은 클록 사이클 카운팅을 중단하고, 카운팅된 클록 사이클의 수를 DSM 표시(124)로서 전송한다.
도 4는 일부 실시형태에 따른 이벤트를 검출하고 디버그 상태 머신 표시를 확장 성능 모니터 카운터에 제공하는 방법(400)을 예시하는 흐름도이다. 방법(400)은 일부 실시형태에서 도 1의 DSM(104)과 같은 DSM에 의해 구현된다. 일부 실시형태에서, 방법(400)은 컴퓨터 판독 가능 저장 매체에 의해 저장된 하나 이상의 명령에 응답하여 하나 이상의 프로세서에 의해 개시된다.
블록(402)에서, DSM은 이벤트 데이터를 수신한다. 예를 들어, 일부 경우에, DSM(104)은 디버그 데이터(122), 파이프라인 트리거(210), 또는 둘 모두를 수신한다. 블록(404)에서, DSM은 이벤트 데이터가 DSM의 이벤트 목록의 다수의 조건 이벤트의 다음 조건과 일치하는지의 여부를 결정한다. 예를 들어, 일부 경우에, 이벤트 데이터는 도 3을 참조하여 위에서 논의된 바와 같이 전력 상태 위상 변화가 발생했다는 것을 나타낸다. 다수의 조건 이벤트의 다음 조건과 일치하는 이벤트 데이터에 응답하여, 방법(400)은 블록(406)으로 진행한다. 다수의 조건 이벤트의 다음 조건과 일치하지 않는 이벤트 데이터에 응답하여, 방법(400)은 블록(402)으로 진행한다.
블록(406)에서, 다수의 조건 이벤트의 다음 조건과 일치하는 이벤트 데이터에 응답하여, DSM은 이벤트 데이터를 수신한 결과로서 이벤트가 완료되었는지의 여부를 결정한다. 예를 들어, 일부 경우에, 이벤트 데이터는 제2 전력 상태 위상 변화가 발생했다는 것을 표시한다. 이벤트가 완료되는 것에 응답하여, 방법(400)은 블록(410)으로 진행한다. 이벤트가 완료되지 않은 것에 응답하여, 방법(400)은 블록(402)으로 진행한다. 블록(408)에서, 다수의 조건 이벤트의 다음 조건에 일치하는데 실패한 이벤트 데이터에 응답하여, DSM은 이벤트 데이터가 이벤트 목록의 단일 조건 이벤트와 일치하는지의 여부를 결정한다. 예를 들어, 이벤트 데이터는 결함 신호에 대한 재동기화가 높거나 또는 파이프라인 트리거가 주장되었다는 것을 표시한다. 단일 조건 이벤트와 일치하는 이벤트 데이터에 응답하여, 방법(400)은 블록(410)으로 진행한다. 단일 조건 이벤트와 일치하는데 실패한 이벤트 데이터에 응답하여, 방법(400)은 블록(402)으로 진행한다.
블록(410)에서, 다수의 조건 이벤트가 완료되는 것에 응답하여 또는 단일 조건 이벤트와 일치하는 이벤트 데이터에 응답하여, DSM은 확장 성능 모니터 카운터에 DSM 표시를 전송한다. 예를 들어, 완료된 이벤트를 식별한 것에 응답하여, DSM(104)은 DSM 표시(124)를 EPMC(106)에 전송한다. 이어서, 방법(400)은 블록(402)으로 복귀한다. 따라서, 이벤트를 검출하고 디버그 상태 머신 표시를 확장 성능 모니터 카운터에 제공하는 방법이 도시되어 있다.
도 5는 일부 실시형태에 따른 디버그 상태 머신 트리거 확장 성능 모니터 카운터를 포함하는 처리 시스템(500)을 도시하는 블록도이다. 예시된 실시형태에서, 처리 시스템(500) 내의 다양한 컴포넌트는 온-다이 하드웨어(on-die hardware)의 기능을 조사하고 추적하기 위한 DSM 및 EPMC를 포함한다. 위에서 논의한 바와 같이, DSM은 하나 이상의 소스(예를 들어, 디버그 데이터 또는 파이프라인 트리거)로부터 트리거를 수신하고, 트리거에 기초하여 주어진 액션을 선택한다(예를 들어, DSM 표시 또는 파이프라인 액션을 전송한다). 소스는 동일한 코어 또는 제어기 내의 컴포넌트, 동일한 코어 또는 제어기 외부의 기타 온-다이 컴포넌트, 및 추가로 오프-다이 컴포넌트를 포함한다. 일부 실시형태에서, DSM은 네트워크(예를 들어, 오버레이 양방향 크로스 트리거 네트워크)를 통해 상호 접속된다. 예시된 실시형태가 다양한 컴포넌트에서 DSM 및 EPMC를 포함할지라도, 다른 실시형태에서, DSM 및 EPMC는 더 적은 수의, 추가의, 또는 상이한 컴포넌트를 포함한다. 추가적으로, DSM 및 EPMC가 예시된 실시형태에서 쌍을 이룰지라도, 다른 실시형태에서, DSM, EPMC, 또는 둘 모두가 개별적으로 나타난다.
일부 경우에, 다수의 시분할 시퀀스가 처리 시스템(500)에서 발생한다. 예를 들어, 일부 경우에, 시퀀스는 소프트웨어 프로세스, 소프트웨어 스레드, 시스템 레벨 트랜잭션 또는 전력 성능 상태(p-상태)를 포함한다. 시퀀스는 OS 또는 온-다이 하드웨어에 의해 예약된 테스트 중인 IC에서 실행될 하나 이상의 명령을 포함한다. 시퀀스 식별자(ID)는 시퀀스들 사이를 구별하도록 사용된다. 예를 들어, 프로세스 ID, 스레드 ID, 시스템 레벨 트랜잭션 ID, p-상태 ID 또는 이들의 조합이 사용된다. 일부 경우에, 시퀀스는 IC 내의 하드웨어 리소스(예를 들어, 실행 유닛, 대기열, 스케줄러, 프로세스 상태 또는 메모리 공간)를 다른 시퀀스와 공유한다.
일부 실시형태에서, 처리 시스템(500)에서의 하나 이상의 프로세서 코어(예를 들어, 다수의 스레드 프로세서 코어(532-1 내지 532-2) 또는 그래픽 프로세서 코어(542))는 다수의 스레드 애플리케이션을 실행한다. 추가적으로, 일부 경우에, 처리 시스템(500)은 다수의 전력 성능 상태 중 하나에 따라서 동작한다. 또한, 일부 경우에, 다수의 독립 시스템 레벨 트랜잭션 레벨이 처리 시스템(500)에서 동작한다. 프로세스, 스레드 및 p-상태의 각각은 시퀀스의 예이다.
일부 실시형태에서, 처리 시스템(500)의 DSM(520, 534(DSM(534-1 내지 534-2)) 또는 544) 중 하나 이상은 온-다이 상호 접속부 및 I/O 디바이스 상호 접속 상태를 포함하는 동작 거동 및 통계를 추적한다. DSM(520, 534, 544) 또는 이들의 임의의 조합은 독립 시퀀스의 처리 동안 온-다이 하드웨어를 테스트하기 위한 상태 정보, 저장된 파라미터 및 조합 제어 로직을 제공한다. 하드웨어에 의해 처리되는 각각의 시퀀스에 대한 DSM의 완전한 인스턴스화를 복제하는 대신, 상태 및 저장된 파라미터와 같은 일부 정적 리소스가 공유된다. 위에서 논의된 바와 같이, DSM(520, 534, 544) 중 하나 이상은 처리 시스템(500)의 제조 후에 변경 가능한 이벤트 목록을 포함한다. 그 결과, 일부 경우에, DSM(520, 534, 544)에 의해 추적된 다양한 테스트 및 파라미터는 처리 시스템(500)의 제조 후에 변경된다.
위에서 논의된 바와 같이, EPMC(522, 536(EPMC(536-1 내지 536-2)) 또는 546) 중 하나 이상은 디버깅, 코드 프로파일링 및 정제, 운영 체제 동작을 위한 상태 정보를 유사하게 추적하고 제공한다. 예시된 실시형태에서, EPMC(522, 536, 546)는 DSM(520, 534, 544) 중 하나 이상으로부터 DSM 표시를 수신한다. 일부 경우에, EPMC(522, 536, 546)는 수신된 DSM 표시를 DSM 이벤트 데이터로서 출력한다. 또한, 일부 경우에, EPMC(522, 536, 546)는 이벤트 데이터를 생성하도록 수신된 DSM 표시를 수신된 이벤트 기반 인터럽트 데이터와 조합한다.
도시된 바와 같이, 처리 시스템(500)은 다양한 유닛(508)(범용 처리 유닛(508-1 내지 508-2)) 및 유닛(510)(예를 들어, 그래픽 처리 유닛)을 포함한다. 유닛(508)은 각각의 범용, 다수의 스레드 프로세서 코어(532) 및 대응하는 캐시 메모리 서브시스템(530)(예를 들어, 캐시 메모리 서브시스템(530-1 내지 530-2))을 포함한다. 유사하게, 유닛(510)은 그래픽 프로세서 코어(542) 및 버퍼(540)를 포함한다.
일부 실시형태에서, 다수의 스레드 프로세서 코어(532)의 각각은 하나 이상의 멀티 스테이지 파이프라인을 가지는 슈퍼스칼라 마이크로아키텍처(superscalar microarchitecture)를 포함한다. 일부 경우에, 다수의 스레드 소프트웨어 애플리케이션은 다수의 스레드 프로세서 코어(532)의 각각의 코어 내에서 별도의 파이프라인에 의해 처리되는 소프트웨어 스레드의 각각을 가진다. 대안적으로, 특정 기능 유닛에서 제어를 통해 다수의 스레드를 처리할 수 있는 파이프라인은 각각의 스레드를 처리한다. 또 다른 예에서, 스레드의 각각은 다수의 스레드들 중 각각에 대한 전용 리소스와 다수의 스레드 모두에 의해 사용되는 공유 리소스의 조합을 가지는 파이프라인에 의해 처리된다. 다양한 실시형태에서, 다수의 스레드 프로세서 코어(532)의 각각은 주어진 범용 명령 세트에 따라서 명령을 처리하기 위한 회로를 포함한다.
일반적으로, 다수의 스레드 프로세서 코어(532)의 각각은 데이터 및 명령을 위한 레벨 1(L1) 캐시에 액세스한다. 일부 경우에, 캐시의 다수의 온-다이 레벨(L2, L3 등)이 있다. 일부 실시형태에서, 이러한 레벨의 캐시 중 하나 이상은 프로세서 코어 외부 및 캐시 메모리 서브시스템(530)의 각각의 서브시스템 내에 위치된다. 추가적으로, 일부 경우에, 처리 시스템(500)은 GPU와 같은 하나 이상의 애플리케이션 특정 코어, 다른 유형의 단일 명령 다중 데이터(SIMD) 코어, 또는 디지털 신호 프로세서(DSP)를 포함한다. 도시된 실시형태에서, 처리 시스템(500)은 유닛(510)을 포함한다. 예시된 실시형태에서, 유닛(510)은 다수의 파이프라인 스테이지를 포함하는 다수의 병렬 데이터 경로를 포함하며, 여기서 각각의 스테이지는 다수의 산술 논리 유닛(ALU) 컴포넌트를 가지며, 데이터 스트림에서의 다수의 데이터 값에 대한 단일 명령으로 동작한다.
예시된 실시형태에서, 처리 시스템(500)은 크로스바 스위치(506)를 통해 유닛(508, 510)에 연결된 공유 캐시 메모리 서브시스템(504)을 더 포함한다. 유닛(508, 510)은 크로스바 스위치(506)와 메모리 제어기(502)를 통해 로컬 메모리와 오프-칩 메모리 모두에 직접 액세스한다.
일부 경우에, 메모리 제어기(502)는 처리 시스템(500)을 동적 랜덤 액세스 메모리(DRAM), 디스크 메모리 및 오프라인 아카이브 메모리와 같은 오프-다이 메모리 디바이스에 연결한다. 따라서, 메모리 제어기(502)는 메모리 디바이스에 접속하기 위한 제어 회로를 포함한다. 추가적으로, 일부 실시형태에서, 메모리 제어기(502)는 메모리 요청을 큐잉하기 위한 요청 큐(request queue)를 포함한다. 유닛(508, 510)과 유사하게, 예시된 실시형태에서, 메모리 제어기(502)는 DSM(520) 및 EPMC(522)를 포함한다.
예시된 실시형태에서, 인터페이스(512)는 신호를 다른 프로세서와 같은 다른 처리 노드에 직접 링크하기 위한 집적 채널 회로를 포함한다. 따라서, 일부 경우에, 인터페이스(512)는 프로세서 온-다이 캐시 및 다른 처리 노드의 오프-다이 메모리의 노드간 액세스를 위해 하나 이상의 일관성 링크를 활용한다. 기술의 예는 HyperTransport 및 QuickPath를 포함한다. I/O 인터페이스(550)는 공유 캐시 메모리 서브시스템(504) 및 유닛(508, 510)에 대한 처리 시스템(500) 밖의 I/O 디바이스를 위한 인터페이스를 제공한다. 또한, 일부 경우에, I/O 인터페이스(550)는 EPMC(522, 536, 546) 중 하나 이상에 대한 인터페이스를 제공한다. 일부 경우에, I/O 인터페이스(550)는 데이터 제어 및 액세스를 위해 플랫폼 및 I/O 제어기 허브(도시되지 않음)와 추가로 통신한다. 일부 경우에, 허브는 각각의 링크에서 수신된 제어 패킷 및 메시지에 응답하고, 처리 시스템(500)으로부터 수신된 정보 및 명령에 응답하여 제어 패킷 및 응답 패킷을 생성한다. 일부 경우에, 허브는 전형적으로 종래의 사우스브리지 칩셋(southbridge chipset)이 오프 다이에서 수행하는 온 다이 동작을 수행한다. 일부 실시예에서, 허브는 또한 각각의 DSM, EPMC, 또는 둘 모두를 포함한다.
테스트 인터페이스(514)는 IEEE 1149.1 표준 테스트 액세스 포트 및 경계 스캔 아키텍처 또는 Joint Test Action Group(JTAG) 표준과 같은 주어진 프로토콜에 따라서 처리 시스템(500)을 테스트하기 위한 인터페이스를 포함한다. 일부 경우에, 테스트 인터페이스(514)는 DSM 인터페이스(560)를 통해 DSM(520, 534, 544) 중 하나 이상을 프로그래밍하도록 사용된다. 일부 실시형태에서, DSM을 프로그래밍하는 것은 이벤트 목록에 대응하는 레지스터와 같은 주어진 DSM에 대응하는 레지스터에 특정 값을 기록하는 것을 포함한다. 일부 경우에, DSM을 프로그래밍하는 것은 DSM이 응답하는 트리거 및 응답에서 취해진 액션의 유형을 결정된다.
일부 경우에, DSM(520, 534, 544)은 각각 상이하게 프로그래밍된다. 대안적으로, 일부 경우에, DSM(520, 534, 544) 중 둘 이상이 유사한 방식으로 프로그래밍된다. 또한, 일부 경우에, DSM(520, 534, 544) 중 임의의 주어진 하나가 수행된 프로그래밍에 관계없이 특정 트리거 이벤트에 응답하여 특정 액션을 취한다. 유사하게, 다양한 실시형태에서, EPMC(522, 536, 546)는 유사하게 또는 상이하게 설계되고, 유사한 데이터 또는 상이한 데이터를 보고한다.
본 명세서에 개시된 바와 같이, 일부 실시형태에서, 집적회로(IC)는, 디버그 상호 접속부에서 디버그 데이터를 선택적으로 출력하도록 구성된 디버그 제어기; 디버그 데이터에 기초하여 이벤트를 식별하고 이벤트를 식별한 것에 응답하여 DSM 표시를 출력하도록 구성된 디버그 상태 머신(DSM)으로서, DSM은 프로그래밍 가능한 이벤트 정보에 기초하여 상기 이벤트를 식별하도록 구성되는, 상기 디버그 상태 머신(DSM); 및 식별된 이벤트를 포함하는 복수의 검출된 이벤트를 표시하도록 구성된 확장 성능 모니터 카운터(EPMC)를 포함하고, 상기 EPMC는 상기 DSM 표시에 응답하여 식별된 이벤트를 표시하도록 구성된다. 일 양태에서, 상기 EPMC는 이벤트 기반 인터럽트 데이터를 수신한 것에 응답하여 이벤트 데이터를 출력하도록 추가로 구성되며, 상기 이벤트 기반 인터럽트 데이터는 디버그 데이터와는 상이하다. 다른 양태에서, 상기 DSM은 적어도 하나의 파이프라인 트리거에 기초하여 이벤트를 식별하도록 추가로 구성된다. 또 다른 양태에서, 상기 DSM은 기본 입력/출력 시스템(BIOS) 업데이트 또는 보안 펌웨어 업데이트를 통해 프로그래밍 가능한 이벤트 정보를 수신하도록 구성된다.
일 양태에서, 상기 DSM은 사용자로부터 프로그래밍 가능한 이벤트 정보를 수신하도록 구성된다. 다른 양태에서, 상기 식별된 이벤트는 다수의 조건 이벤트이고, 상기 DSM은 상기 디버그 데이터가 상기 식별된 이벤트의 마지막 조건을 표시한다는 결정에 응답하여 상기 DSM 표시를 출력하도록 추가로 구성된다. 또 다른 양태에서, 상기 DSM 표시는 상기 식별된 이벤트의 제1 조건과 상기 식별된 이벤트의 마지막 조건 사이에 통과된 사이클의 카운트를 포함한다. 또 다른 양태에서, 상기 식별된 이벤트를 표시하는 것은 메모리 디바이스의 이벤트 로그에 식별된 이벤트를 설명하는 데이터를 저장하는 것을 포함한다. 다른 양태에서, 상기 식별된 이벤트를 표시하는 것은 이벤트를 설명하는 데이터를 사용자 인터페이스에 전송하는 것을 포함한다.
일부 실시형태에서, 방법은 디버그 상태 머신(DSM)에 의해, 디버그 상호 접속부를 통해 제1 디버그 데이터를 수신하는 단계; 상기 DSM에 의해, 제1 디버그 데이터를 DSM에 저장된 이벤트 목록과 비교하는 단계; 및 상기 제1 디버그 데이터가 상기 이벤트 목록의 제1 엔트리의 제1 부분과 일치한다는 것에 응답하여, 제1 이벤트가 검출되었다는 것을 표시하는 DSM 표시를 확장 성능 모니터 카운터(EPMC)에 전송하는 단계를 포함한다. 일 양태에서, 방법은, 상기 제1 디버그 데이터를 수신하기 전에, 상기 DSM에 의해, 상기 제1 엔트리의 제2 부분과 일치하는 제2 디버그 데이터를 수신하는 단계를 더 포함하며, 상기 제1 엔트리는 다수의 조건 이벤트에 대응하고, 상기 제1 엔트리의 제1 부분은 다수의 조건 이벤트의 마지막 조건에 대응한다. 다른 양태에서, 방법은 DSM 표시를 전송하는 단계에 이어서, 상기 DSM에 의해, 이벤트 목록에 대한 업데이트를 수신하는 단계를 포함한다.
일 양태에서, 방법은 이벤트 목록에 대한 업데이트를 수신하는 단계에 이어서, 상기 DSM에 의해, 디버그 상호 접속부를 통해 제2 디버그 데이터를 수신하는 단계; 상기 DSM에 의해, 제2 디버그 데이터를 이벤트 목록과 비교하는 단계; 및 상기 제2 디버그 데이터가 이벤트 목록의 제1 엔트리의 업데이트된 제1 부분과 일치한다는 것에 응답하여, 제2 이벤트가 검출되었다는 것을 표시하는 제2 DSM 표시를 상기 EPMC에 전송하는 단계를 포함하며, 상기 제2 이벤트는 상기 제1 이벤트와 다르고, 상기 DSM 표시는 상기 제2 DSM 표시와 동일하다. 다른 양태에서, 상기 이벤트 목록에 대한 업데이트를 수신하는 단계는 기본 입력/출력 시스템(BIOS) 업데이트 또는 보안 펌웨어 업데이트를 통해 상기 업데이트를 수신하는 단계를 포함한다. 또 다른 양태에서, 상기 이벤트 목록에 대한 업데이트를 수신하는 단계는 사용자로부터 상기 업데이트를 수신하는 단계를 포함한다.
일부 실시형태에서, 방법은, 디버그 데이터 및 파이프라인 트리거 데이터를 수신한 것에 응답하여, DSM에 저장된 이벤트 목록에 기초하여 이벤트를 식별하고, 이벤트를 식별한 것에 응답하여 DSM 표시를 출력하도록 구성된 디버그 상태 머신(DSM); 및 이벤트 기반 인터럽트 데이터, 상기 DSM 표시 또는 둘 모두를 수신한 것에 응답하여, 식별된 이벤트를 포함하는 복수의 검출된 이벤트 중 하나 이상을 표시하도록 구성된 확장 성능 모니터 카운터(EPMC)를 포함한다. 일 양태에서, 상기 식별된 이벤트를 표시하는 것은 상기 식별된 이벤트가 발생한 클록 사이클의 카운트를 표시하는 것을 포함한다. 다른 양태에서, 식별된 이벤트는 전력 상태 위상 변화를 포함한다. 또 다른 양태에서, 상기 DSM 표시는 전력 상태 모니터 카운트를 포함한다. 또 다른 양태에서, 상기 식별된 이벤트는 결함 이벤트에 대한 재동기화를 포함한다.
일부 실시형태에서, 컴퓨터 판독 가능 저장 매체는 명령 및/또는 데이터를 컴퓨터 시스템에 제공하기 위해 사용 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비일시적 저장 매체, 또는 비일시적 저장 매체의 조합을 포함한다. 다양한 실시형태에서, 이러한 저장 매체는 광학 매체(예를 들어, 콤팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루레이 디스크), 자기 매체(예를 들어, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 읽기 전용 메모리(ROM) 또는 플래시 메모리), 또는 마이크로 전자 기계 시스템(MEMS) 기반 저장 매체를 포함하지만 이에 제한되지 않는다. 일부 실시형태에서, 컴퓨터 판독 가능 저장 매체는 컴퓨팅 시스템에 내장되거나(예를 들어, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착되거나(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 제거 가능하게 부착되거나(예를 들어, 광학 디스크 또는 범용 직렬 버스(USB) 기반 플래시 메모리), 또는 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 연결된다(예를 들어, 네트워크 액세스 가능 스토리지(NAS)).
일부 실시형태에서, 전술한 기술의 특정 양태는 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서에 의해 구현된다. 소프트웨어는 비일시적 컴퓨터 판독 가능 저장 매체에 저장되거나 유형적으로 구체화되는 실행 가능한 명령의 하나 이상의 세트를 포함한다. 일부 실시형태에서, 소프트웨어는 하나 이상의 프로세서에 의해 실행될 때, 위에서 설명된 기술의 하나 이상의 양태를 수행하도록 하나 이상의 프로세서를 조작하는 명령 및 특정 데이터를 포함한다. 예를 들어, 일부 경우에, 비일시적 컴퓨터 판독 가능 저장 매체는 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 또는 기타 비휘발성 메모리 디바이스 등과 같은 자기 또는 광 디스크 저장 디바이스, 고체 상태 저장 디바이스를 포함한다. 일부 실시형태에서, 비일시적 컴퓨터 판독 가능 저장 매체에 저장된 실행 가능한 명령은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서에 의해 해석되거나 실행 가능한 다른 명령 형식으로 되어 있다.
일반적인 설명에서 위에 설명된 모든 활동이나 요소가 필요한 것은 아니며, 특정 활동이나 디바이스의 일부가 필요하지 않으며, 설명된 것 외에 하나 이상의 추가 활동이 수행되거나 요소가 포함된다. 또한, 활동이 나열되는 순서가 반드시 수행되는 순서는 아니다. 또한, 개념은 구체적인 실시형태를 참조하여 설명되었다. 그러나, 당업자는 다음의 청구범위에 기재된 바와 같은 본 개시내용의 범위로부터 벗어남이 없이 다양한 변형 및 변경이 만들어질 수 있다는 것을 인식한다. 따라서, 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 하며, 이러한 모든 변형은 본 개시내용의 범위 내에 포함되는 것으로 의도된다.
이득, 다른 이점, 및 문제에 대한 해결책은 특정 실시형태와 관련하여 위에서 설명되었다. 그러나 이득, 이점, 문제에 대한 해결책, 및 이득, 이점 또는 해결책을 발생시키거나 더 두드러지게 하는 모든 특징은 일부 또는 모든 청구항의 중요한, 요구되는, 또는 필수 특징으로서 해석되어서는 안 된다. 더욱이, 위에 개시된 특정 실시형태는 개시된 요지가 본 명세서에서의 교시의 이점을 가지는, 상이하지만 당업자에게 명백한 동등한 방식으로 변경되고 실시될 수 있음에 따라서 단지 예시적이다. 아래의 청구범위에 기술된 것 외에는 본 명세서에서 도시된 구성 또는 디자인의 세부사항에 제한을 두지 않는다. 그러므로, 위에 개시된 특정 실시형태가 변경되거나 수정될 수 있고 이러한 모든 변경이 개시된 요지의 범위 내에서 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구하는 보호는 다음의 청구범위에 명시된 바와 같다.
본 개시내용 내에서, 일부 경우에, 상이한 엔티티("컴포넌트", "유닛", "디바이스" 등으로 다양하게 지칭됨)는 하나 이상의 작업 또는 동작을 수행하도록 "구성된" 것으로서 기술되거나 청구된다. [하나 이상의 작업을 수행]하도록 구성된 이러한 공식[엔티티]은 구조(즉, 전자 회로와 같은 물리적인 것)를 나타내도록 본 명세서에서 사용된다. 보다 구체적으로, 이러한 공식은 이러한 구조가 동작 동안 하나 이상의 작업을 수행하도록 배열되었음을 나타내도록 사용된다. 구조는 현재 동작되지 않는 경우에도 일부 작업을 수행하도록 "구성되었다고" 할 수 있다. "데이터를 저장하도록 구성된 메모리 디바이스"는 예를 들어 당해 집적회로가 현재 사용되고 있지 않는 경우에도(예를 들어, 전원 공급 장치가 디바이스에 연결되지 않은 경우에도) 동작 동안 데이터를 저장하는 회로를 가지는 집적회로를 커버하도록 의도된다. 따라서 일부 작업을 수행하도록 "구성된 것으로서" 설명되거나 인용된 엔티티는 디바이스, 회로, 작업을 구현하기 위해 실행 가능한 프로그램 명령을 저장하는 메모리와 같은 물리적인 것을 지칭한다. 이러한 구문은 무형의 것을 나타내기 위해 본 명세서에서 사용되지 않는다. 또한, "~로 구성됨"이라는 용어는 "~로 구성 가능함"을 의미하도록 의도되지 않는다. 예를 들어, 프로그래밍되지 않은 필드 프로그래밍 가능 게이트 어레이는 프로그래밍 후에 해당 기능을 수행하도록 "구성 가능할 수" 있을지라도 일부 특정 기능을 수행하도록 "구성된" 것으로 간주되지 않을 것이다. 추가적으로, 첨부된 청구범위에서, 하나 이상의 작업을 수행하도록 "구성된" 구조를 언급하는 것은 수단 플러스 기능 요소를 가지는 것으로서 해석되지 않도록 명시적으로 의도된다.

Claims (20)

  1. 집적회로(IC)[100]로서,
    디버그 상호 접속부[110]에서 디버그 데이터[122]를 선택적으로 출력하도록 구성된 디버그 제어기[102];
    상기 디버그 데이터에 기초하여 이벤트를 식별하고 상기 이벤트를 식별한 것에 응답하여 DSM 표시[124]를 출력하도록 구성된 디버그 상태 머신(DSM)[104]으로서, 상기 DSM은 프로그래밍 가능한 이벤트 정보에 기초하여 상기 이벤트를 식별하도록 구성되는, 상기 DSM; 및
    식별된 이벤트를 포함하는 복수의 검출된 이벤트를 표시하도록 구성된 확장 성능 모니터 카운터(EPMC)[106]로서, 상기 DSM 표시에 응답하여 상기 식별된 이벤트를 표시하도록 구성되는, 상기 EPMC
    를 포함하는, 집적회로(IC).
  2. 제1항에 있어서,
    상기 EPMC는 이벤트 기반 인터럽트 데이터[126]를 수신한 것에 응답하여 이벤트 데이터[128]를 출력하도록 추가로 구성되며, 상기 이벤트 기반 인터럽트 데이터는 디버그 데이터와는 상이한, IC.
  3. 제1항 또는 제2항에 있어서,
    상기 DSM은 적어도 하나의 파이프라인 트리거[210]에 기초하여 상기 이벤트를 식별하도록 추가로 구성되는, IC.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 DSM은 기본 입력/출력 시스템(BIOS) 업데이트 또는 보안 펌웨어 업데이트를 통해 상기 프로그래밍 가능한 이벤트 정보를 수신하도록 구성되는, IC.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 DSM은 사용자로부터 상기 프로그래밍 가능한 이벤트 정보를 수신하도록 구성되는, IC.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 식별된 이벤트는 다수의 조건 이벤트이고, 상기 DSM은 상기 디버그 데이터가 상기 식별된 이벤트의 마지막 조건을 표시한다는 결정에 응답하여 상기 DSM 표시를 출력하도록 추가로 구성되는, IC.
  7. 제6항에 있어서,
    상기 DSM 표시는 상기 식별된 이벤트의 제1 조건과 상기 식별된 이벤트의 마지막 조건 사이에 통과된 사이클의 카운트를 포함하는, IC.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 식별된 이벤트를 표시하는 것은 메모리 디바이스의 이벤트 로그에 상기 식별된 이벤트를 설명하는 데이터를 저장하는 것을 포함하는, IC.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 식별된 이벤트를 표시하는 것은 상기 이벤트를 설명하는 데이터를 사용자 인터페이스에 전송하는 것을 포함하는, IC.
  10. 방법으로서,
    디버그 상태 머신(DSM)[104]에 의해, 디버그 상호 접속부[110]를 통해 제1 디버그 데이터[122]를 수신하는 단계;
    상기 DSM에 의해, 상기 제1 디버그 데이터를 상기 DSM에 저장된 이벤트 목록[304]과 비교하는 단계; 및
    상기 제1 디버그 데이터가 상기 이벤트 목록의 제1 엔트리의 제1 부분과 일치한다는 것에 응답하여, 제1 이벤트가 검출되었다는 것을 표시하는 DSM 표시[124]를 확장 성능 모니터 카운터(EPMC)[126]에 전송하는 단계
    를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 제1 디버그 데이터를 수신하기 전에, 상기 DSM에 의해, 상기 제1 엔트리의 제2 부분과 일치하는 제2 디버그 데이터를 수신하는 단계를 더 포함하며, 상기 제1 엔트리는 다수의 조건 이벤트에 대응하고, 상기 제1 엔트리의 제1 부분은 상기 다수의 조건 이벤트의 마지막 조건에 대응하는, 방법.
  12. 제10항 또는 제11항에 있어서,
    상기 DSM 표시를 전송하는 단계에 이어서, 상기 DSM에 의해, 상기 이벤트 목록에 대한 업데이트를 수신하는 단계를 더 포함하는, 방법.
  13. 제12항에 있어서,
    상기 이벤트 목록에 대한 업데이트를 수신하는 단계에 이어서, 상기 DSM에 의해, 상기 디버그 상호 접속부를 통해 제2 디버그 데이터를 수신하는 단계;
    상기 DSM에 의해, 상기 제2 디버그 데이터를 상기 이벤트 목록과 비교하는 단계; 및
    상기 제2 디버그 데이터가 상기 이벤트 목록의 제1 엔트리의 업데이트된 제1 부분과 일치한다는 것에 응답하여, 상기 제2 이벤트가 검출되었다는 것을 표시하는 제2 DSM 표시를 상기 EPMC에 전송하는 단계로서, 상기 제2 이벤트는 상기 제1 이벤트와는 상이하고, 상기 DSM 표시는 상기 제2 DSM 표시와 동일한, 상기 제2 DSM 표시를 상기 EPMC에 전송하는 단계
    를 더 포함하는, 방법.
  14. 제12항 또는 제13항에 있어서,
    상기 이벤트 목록에 대한 업데이트를 수신하는 단계는 기본 입력/출력 시스템(BIOS) 업데이트 또는 보안 펌웨어 업데이트를 통해 상기 업데이트를 수신하는 단계를 포함하는, 방법.
  15. 제12항, 제13항 및 제14항 중 어느 한 항에 있어서,
    상기 이벤트 목록에 대한 업데이트를 수신하는 단계는 사용자로부터 상기 업데이트를 수신하는 단계를 포함하는, 방법.
  16. 집적회로(IC)[100]로서,
    디버그 상태 머신(DSM)[104]으로서, 디버그 데이터[122] 및 파이프라인 트리거 데이터[210]를 수신한 것에 응답하여, 상기 DSM에 저장된 이벤트 목록[304]에 기초하여 이벤트를 식별하고, 상기 이벤트를 식별한 것에 응답하여 DSM 표시[124]를 출력하도록 구성된, 상기 DSM; 및
    이벤트 기반 인터럽트 데이터[126], DSM 표시 또는 둘 모두를 수신한 것에 응답하여, 상기 식별된 이벤트를 포함하는 복수의 검출된 이벤트 중 하나 이상을 표시하도록 구성된 확장 성능 모니터 카운터(EPMC)[106]를 포함하는, 집적회로(IC).
  17. 제16항에 있어서,
    상기 식별된 이벤트를 표시하는 것은 상기 식별된 이벤트가 발생한 클록 사이클의 카운트를 표시하는 것을 포함하는, IC.
  18. 제17항에 있어서,
    상기 식별된 이벤트는 전력 상태 위상 변화를 포함하는, IC.
  19. 제17항 또는 제18항에 있어서,
    상기 DSM 표시는 전력 상태 모니터 카운트를 포함하는, IC.
  20. 제16항에 있어서,
    상기 식별된 이벤트는 결함 이벤트에 대한 재동기화를 포함하는, IC.
KR1020227022121A 2019-12-09 2020-12-04 디버그 상태 머신 트리거 확장 성능 모니터 카운터 KR20220113423A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/707,336 2019-12-09
US16/707,336 US12072378B2 (en) 2019-12-09 2019-12-09 Debug state machine triggered extended performance monitor counter
PCT/US2020/063269 WO2021118876A1 (en) 2019-12-09 2020-12-04 Debug state machine triggered extended performance monitor counter

Publications (1)

Publication Number Publication Date
KR20220113423A true KR20220113423A (ko) 2022-08-12

Family

ID=76209649

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227022121A KR20220113423A (ko) 2019-12-09 2020-12-04 디버그 상태 머신 트리거 확장 성능 모니터 카운터

Country Status (6)

Country Link
US (1) US12072378B2 (ko)
EP (1) EP4073526A4 (ko)
JP (1) JP2023504188A (ko)
KR (1) KR20220113423A (ko)
CN (1) CN114902059A (ko)
WO (1) WO2021118876A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11853251B2 (en) * 2022-05-04 2023-12-26 Qualcomm Incorporated On-die chip-to-chip (C2C) link state monitor

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5812830A (en) 1996-11-14 1998-09-22 Hewlett-Packard Company Debug system with raw mode trigger capability
US7519510B2 (en) * 2004-11-18 2009-04-14 International Business Machines Corporation Derivative performance counter mechanism
US7200522B2 (en) 2005-01-27 2007-04-03 International Business Machines Corporation Method, apparatus, and computer program product in a performance monitor for sampling all performance events generated by a processor
US7770142B1 (en) * 2006-10-30 2010-08-03 Cadence Design Systems, Inc. Modeling power management for an integrated circuit
JP5151996B2 (ja) 2007-02-14 2013-02-27 日本電気株式会社 半導体集積回路及びデバッグ・トレース回路
US8566645B2 (en) 2010-12-02 2013-10-22 Advanced Micro Devices, Inc. Debug state machine and processor including the same
US9037911B2 (en) 2010-12-09 2015-05-19 Advanced Micro Devices, Inc. Debug state machines and methods of their operation
US8887168B2 (en) 2011-07-14 2014-11-11 Advanced Micro Devices, Inc. Method and apparatus for monitoring and sharing performance resources of a processor
US20140053036A1 (en) 2012-08-15 2014-02-20 Scott P. Nixon Debugging multiple exclusive sequences using dsm context switches
TWI472912B (zh) * 2012-09-11 2015-02-11 Univ Nat Cheng Kung 以電路內部事件作為觸發條件之除錯控制系統及其方法
US9442815B2 (en) * 2012-10-31 2016-09-13 Advanced Micro Devices, Inc. Distributed on-chip debug triggering with allocated bus lines
US9304844B2 (en) * 2013-02-27 2016-04-05 Qualcomm Incorporated System and method for preserving critical debug data in a portable computing device
GB2508126B (en) 2014-03-20 2014-11-12 Ultrasoc Technologies Ltd Routing debug messages
US9514842B2 (en) 2014-09-24 2016-12-06 Apple Inc. Memory testing system
US9568547B2 (en) 2015-03-17 2017-02-14 Intel Corporation Method, apparatus and system for dynamic bandwidth management in systems
KR102400556B1 (ko) * 2016-12-12 2022-05-20 삼성전자주식회사 성능 및 디버그 모니터링을 위한 장치, 시스템 및 방법
US10386410B2 (en) 2016-12-12 2019-08-20 Samsung Electronics Co., Ltd. Highly flexible performance counter and system debug module

Also Published As

Publication number Publication date
EP4073526A1 (en) 2022-10-19
CN114902059A (zh) 2022-08-12
WO2021118876A1 (en) 2021-06-17
US20210173004A1 (en) 2021-06-10
EP4073526A4 (en) 2024-01-03
JP2023504188A (ja) 2023-02-01
US12072378B2 (en) 2024-08-27

Similar Documents

Publication Publication Date Title
US7392431B2 (en) Emulation system with peripherals recording emulation frame when stop generated
US20140053036A1 (en) Debugging multiple exclusive sequences using dsm context switches
US10331531B2 (en) Self-testing in a processor core
TWI632462B (zh) 開關裝置及偵測積體電路匯流排之方法
US7853834B2 (en) Instruction-based timer control during debug
US9454424B2 (en) Methods and apparatus for detecting software inteference
US7519510B2 (en) Derivative performance counter mechanism
US20080301700A1 (en) Filtering of performance monitoring information
US10810094B2 (en) Methods and apparatus for anomaly response
US7831862B2 (en) Selective timer control during single-step instruction execution
US9952954B2 (en) Multicore processor system having an error analysis function
JP2018107679A (ja) 半導体装置
US11625316B2 (en) Checksum generation
US9015374B2 (en) Virtual interrupt filter
US7831818B2 (en) Exception-based timer control
KR20220113423A (ko) 디버그 상태 머신 트리거 확장 성능 모니터 카운터
KR101196494B1 (ko) 다수의 클록 도메인 사이의 결정을 촉진하는 장치, 시스템,방법 및 머신 판독 가능한 매체
US8127181B1 (en) Hardware warning protocol for processing units
US9092333B2 (en) Fault isolation with abstracted objects
US20150339178A1 (en) Processing system and method of operating a processing system
US7617428B2 (en) Circuits and associated methods for improved debug and test of an application integrated circuit
Mazouz et al. Statistical validation methodology of CPU power probes
US9189302B2 (en) Technique for monitoring activity within an integrated circuit
Salfner et al. Cross-core event monitoring for processor failure prediction
US8458539B2 (en) G-ODLAT on-die logic analyzer trigger with parallel vector finite state machine