KR101430218B1 - 디버그 상태 기계 및 이를 포함하는 프로세서 - Google Patents

디버그 상태 기계 및 이를 포함하는 프로세서 Download PDF

Info

Publication number
KR101430218B1
KR101430218B1 KR1020137017093A KR20137017093A KR101430218B1 KR 101430218 B1 KR101430218 B1 KR 101430218B1 KR 1020137017093 A KR1020137017093 A KR 1020137017093A KR 20137017093 A KR20137017093 A KR 20137017093A KR 101430218 B1 KR101430218 B1 KR 101430218B1
Authority
KR
South Korea
Prior art keywords
debug
trigger
module
dsm
data
Prior art date
Application number
KR1020137017093A
Other languages
English (en)
Other versions
KR20130127477A (ko
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 KR20130127477A publication Critical patent/KR20130127477A/ko
Application granted granted Critical
Publication of KR101430218B1 publication Critical patent/KR101430218B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

융통성 있고 효과적인 디버그 가시화를 위해 복잡한 트리거링 시퀀스를 프로그래밍할 수 있는 디버그 상태 기계(DSM)를 포함하는 프로세서 또는 집적 회로 칩이 개시된다. DSM은 트레이스 시작 및 정지, 트레이스 필터링, DSM 간 교차 트리거링, 클록 정지, 시스템 디버그 모드 인터럽트 트리거링, 융통성있는 마이크로코드 인터페이스 등과 같은 국부 디버그 함수의 제어를 중앙집권화한다. DSM은 프로세서 코어, 다른 DSM, 노쓰 브리지, 다른 소켓 등으로부터 트리거를 수신하고 대응하는 트리거 또는 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하도록 구성된다.

Description

디버그 상태 기계 및 이를 포함하는 프로세서{DEBUG STATE MACHINE AND PROCESSOR INCLUDING THE SAME}
관련 출원에 대한 상호 참조
본 출원은 전체 내용이 본 명세서에 참조 문헌으로 병합된 2010년 12월 2일에 출원된 미국 특허 출원 제12/958,585호의 이익을 청구한다.
발명의 기술 분야
본 출원은, 마이크로프로세서, 중앙 처리 유닛(CPU: central processing unit), 그래픽 처리 유닛(GPU: graphical processing unit) 등을 포함하나 이로 제한되지 않는 프로세서 또는 집적 회로 칩에 관한 것이다.
집적 회로(IC: integrated circuit) 또는 다수의 IC를 포함하는 시스템을 설계한 후에, 이 설계는 올바른 동작을 위해 검증되는 것이 필요하다. 처리 기술이 진화하여 디바이스의 사이즈가 감소하고 복잡성이 증가하는 것으로 인해, 복잡한 회로 설계의 디버깅(debugging)을 전통적인 시뮬레이션 도구와 기술을 사용하여 수행하는 것이 점점 더 곤란해지고 있다.
디버깅 동안 에러가 검출될 때, 설계자는 회로로부터 관련 신호를 탭핑(tap)하고 로직 분석기를 사용하여 에러의 원인을 결정하는 시도를 할 수 있다. 그러나, 이것은 어려운 공정이며 종종 효과적이지 않다. 이미 발생한 에러는 종종 반복하기 곤란하고 재구성하기에 곤란하다. 그리하여, 보다 효과적인 디버깅 능력을 제공하는 것이 요구된다.
융통성 있고 효과적인 디버그 가시화(visibility)를 위하여 복잡한 트리거링 시퀀스(triggering sequence)를 프로그래밍할 수 있는 디버그 상태 기계(DSM: debug state machine)를 포함하는 프로세서 또는 집적 회로 칩이 개시된다. DSM은 트레이스(trace) 시작 및 정지, 트레이스 필터링, DSM 간의 교차 트리거링, 클록 정지, 시스템 디버그 모드 인터럽트 트리거링, 융통성 있는 마이크로코드 인터페이스 등과 같은 국부 디버그 기능의 제어를 중앙집권화한다. DSM은 프로세서 코어, 다른 DSM, 노쓰 브리지(northbridge), 다른 소켓(socket) 등으로부터의 트리거를 수신하고 대응하는 트리거 또는 트리거의 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하도록 구성된다.
첨부 도면과 관련하여 예로서 제공되는 이하 상세한 설명으로부터 보다 상세한 이해를 할 수 있을 것이다.
도 1은 일 실시예에 따라 디버그 상태 기계(DSM)를 포함하는 예시적인 프로세서를 도시한 도면;
도 2는 예시적인 DSM 인터페이스를 도시한 도면;
도 3은 DSM의 예시적인 프로그래밍 모델을 도시한 도면;
도 4는 예시적인 DSM 상태도를 도시한 도면;
도 5a는 DSM 벡터 레지스터에 의해 유지되는 메타 벡터(meta-vector)를 도시한 도면;
도 5b는 메타 벡터를 통해 DSM 프로그래밍을 도시한 도면;
도 6은 예시적인 랜덤 이벤트 생성기(random event generator)의 논리 구조를 도시한 도면;
도 7은 DSM을 통해 디버그 버스 및 버퍼 저장 흐름의 논리 구조를 도시한 도면.
일 실시예에 따라, 프로세서 또는 집적 회로 칩은 융통성 있고 효과적인 디버그 가시화를 위하여 복잡한 트리거링 시퀀스를 프로그래밍할 수 있는 디버그 상태 기계(DSM)를 포함한다. DSM은 트레이스 시작 및 정지, 트레이스 필터링, DSM 간 교차 트리거링, 클록 정지, 하드웨어 디버그 도구(HDT: hardware debug tool) 인터럽트 트리거링, 융통성있는 마이크로코드 인터페이스 등과 같은 국부 디버그 기능의 제어를 중앙집권화한다.
도 1은 일 실시예에 따라 DSM을 포함하는 예시적인 프로세서(100)를 도시한다. 도 1에서 프로세서(100)는 2개의 코어(110)와 노쓰 브리지(120)를 포함한다. 각 코어(110)는 코어 유닛(112), DSM(114), 마이크로코드(116) 및 캐시(118)를 포함할 수 있다. 노쓰 브리지(120)는 DSM(122)과 트레이스 캐시 버퍼(TCB: trace cache buffer)(124)를 포함할 수 있다. TCB(124)는 트레이스 데이터를 저장하는 전용 어레이이다. 각 코어에서 DSM(114)은 코어, 다른 DSM, 노쓰 브리지 및/또는 다른 소켓 등으로부터 트리거를 수신하고 특정 동작(action)을 수행한다. 이 동작은 클록 정지, 디버그 모드 진입, 디버그 교차 트리거 발행, 정보를 저장 유닛{예를 들어, 캐시(118) 또는 TCB(124)}에 저장하는 것의 시작이나 정지, 특정 디버그 상태의 전이, 카운터 증분(incrementing) 또는 클리어링(clearing), 레지스터에 플래그(flag)의 설정 또는 클리어링 등을 포함하나 이로 제한되지 않으며 이에 대해서는 이하에 상세히 설명된다.
도 1에 도시된 프로세서 구조는 일례이며 임의의 변형이 가능하다는 것이 주목되어야 한다. 예를 들어, 프로세서(100)는 하나의 코어 또는 2개를 초과하는 코어를 포함할 수 있고, 노쓰 브리지(120)를 포함하거나 포함하지 않을 수 있고, 노쓰 브리지(120)는 DSM(114)을 포함하거나 포함하지 않을 수 있다. DSM(114)은 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 사우쓰 브리지(southbridge), 노쓰 브리지 등과 같은 임의의 유형의 프로세서 또는 칩셋에서 사용될 수 있다.
도 2는 예시적인 DSM 인터페이스를 도시한다. DSM(114)은 클록 신호, 트리거, 동작, 특수 레지스터 버스(SRB: special register bus) 액세스, 외부 시간 스탬프 카운터, 제어 및 상태 레지스터, 디버그 인터럽트, 디버그 버스 인터페이스, 일반 카운터, 제어 신호 등에 대한 인터페이스를 구비할 수 있다. 표 1은 DSM(114)에 대해 제공될 수 있는 예시적인 DSM 인터페이스를 도시한다. DSM(114)은 응용에 따라 표 1에 나열된 인터페이스의 전부 또는 서브세트를 구비할 수 있다.
Figure 112013058543115-pct00001
Figure 112013058543115-pct00002
프로세서(100)는 프로세서 어레이의 상태가 클록을 정지시키는 것과 스캔 포트(scan port)를 통해 스캔하는 것에 의해 액세스될 수 있도록 스캔 능력을 지원할 수 있다. 스캔 클록은 별개의 핀 세트(SC1 및 SC2)를 구비한다.
트리거 인터페이스(TriggersExt)는 디버그 버스와 브로드사이드(broadside) 트리거로부터 DSM(114)으로 인바운드 트리거(inbound trigger)를 위한 것이다. 브로드사이드 트리거는 클록 신호 정지 신호(OKToStopClocks), 성능 모니터, 에러, 중지점(breakpoints), 다른 DSM(들)으로부터 교차 트리거 등을 포함한다.
동작 인터페이스(Actions)는 트리거 또는 트리거 시퀀스에 기초하여 특정 동작에 대해 DSM으로부터의 아웃바운드 신호(outbound signal)를 위한 것이다.
SRB 액세스 인터페이스(RegDat, RegWrEn, RegAccessGater, RegDecode, RegRdData)는 DSM 레지스터로부터 데이터를 판독하고 이 DSM 레지스터로 데이터를 기록하기 위해 제공된다.
DSM은 자기 자신의 내부 시간 스탬프 카운터를 사용할 수 있다. 대안적으로, DSM은 글로벌 시간 스탬프(global timestamp)가 모든 DSM에 걸쳐 사용될 수 있도록 외부 시간 스탬프 카운터 입력(ExtTscCnt)에 대해 인터페이스를 구비할 수 있다.
제어 및 상태 레지스터(CntlStatus, CntlStatus2, DsmTrigPreSel*)는 DSM을 제어하기 위한 것이다.
디버그 인터럽트 인터페이스(Dbglnt)는 마이크로코드 등을 인터럽트하기 위한 것이고, 종래의 디버그 요청 신호를 가지는 ORed이거나 전용 디버그 인터럽트 신호를 형성할 수 있다.
디버그 버스 인터페이스(DebugBusIn, DebugTraceWrEn, DebugTraceWrData)는 저장 유닛{예를 들어, 캐시(118) 또는 TCB(124)}에 디버그 정보를 제어하여 송신하기 위한 것이다.
DSM(114)의 예시적인 프로그래밍이 이후 설명된다. 도 3은 DSM(114)의 예시적인 프로그래밍 모델을 도시한다. DSM(114)은 코어, 노쓰 브리지, 다른 DSM, 또는 다른 소켓 등으로부터 트리거를 수신하고 특정 동작을 수행한다. DSM(114)은 제어 및 상태 레지스터, 카운터, 선형 피드백 시프트 레지스터(LSFR: linear feedback shift register), 디버그 버스 트리거 레지스터, 트리거 미리 선택 및 동작 미리 선택 레지스터, DSM 코어 레지스터, 디버그 버스 마스크 레지스터 등을 포함할 수 있으며, 이는 이하에서 상세히 설명된다. DSM 동작은 특정 트리거(들)에 응답하여 특정 동작(들)을 수행하도록 임의의 방식으로 프로그래밍될 수 있다.
도 4는 예시적인 DSM 상태도를 도시한다. 일례로서, 4개의 상태가 DSM(114)에 대해 한정될 수 있다. 4개의 상태는 일례로서 제공되고 임의의 개수의 상태가 한정될 수 있다는 것이 주목된다. DSM 상태는 특정 트리거에 의해 트리거링된 동작으로서 하나의 상태로부터 다른 상태로 전이할 수 있다.
DSM(114)은 특수 레지스터 버스(SRB)를 통해 프로그래밍될 수 있다. DSM(114)을 프로그래밍하기 위해 복수의 메타 벡터는 복수의 DSM 상태 각각에 대해 한정될 수 있다. 예를 들어, 3개의 42 비트 메타 벡터가 4개의 DSM 상태 각각에 대해 한정될 수 있다. 도 5a는 DSM 벡터 레지스터(dsm_sm_vec)에 의해 유지되는 메타-벡터(500)를 도시한다. 메타-벡터(500)는 하나 이상의 트리거 필드(502a, 502b, 502c)(이 예에서 3개의 트리거 필드 A, B, C), 치환 필드(permutation field)(504) 및 동작 필드(506)를 포함할 수 있다. 각 메타 벡터는 최대 미리 결정된 개수의 트리거(예를 들어, 이 예에서 3개)에 감응(sensitive)할 수 있다. 메타 벡터(500)는 임의의 개수의 트리거에 감응하도록 프로그래밍될 수 있다는 것이 주목된다. 트리거 필드(502a 내지 502c)는 트리거를 선택한다. 치환 필드(504)는 이 메타 벡터에 대해 3개의 트리거의 임의의 부울리안 조합(Boolean combination)을 조합한다. 치환 필드(504)는 이 메타 벡터에 대해 상태가 충족되었는지의 여부를 한정한다. 만약 그렇다면, 동작 필드(506)에 의해 특정된 동작이 호출된다.
도 5b는 이 메타 벡터(500)를 통한 DSM 프로그래밍을 도시한다. 각 트리거 필드(A, B, C)(502a 내지 502c)는 3개의 비트 동작 신호(512)를 각각 생성하는 모든 가능한 트리거 소스로부터 트리거를 선택한다. 치환 비트 중 하나는 3개의 비트 동작 신호(512)에 기초하여 메타 트리거(meta_trig)(514)로서 선택된다. 메타 트리거(514)가 참이라면, 동작 필드(506)에 의해 한정된 동작이 수행된다.
표 2는 트리거의 함수로서 예시적인 치환 필드 프로그래밍을 도시한다. 예를 들어, 트리거(B, C)에 상관없이 트리거(A)가 발생할 때 동작이 트리거되도록 프로그래밍되면, 치환 필드는 0xAA로 설정될 수 있다. 트리거(A XOR B)이 참인 경우 동작이 트리거되도록 프로그래밍되면, 치환 필드는 0x66으로 설정될 수 있다.
Figure 112013058543115-pct00003
트리거가 이후 설명된다. DSM는 코어, 노쓰 브리지, 마이크로코드, 다른 DSM, 다른 소켓 또는 등으로부터 트리거를 수신하고 특정 동작(들)을 수행한다. 이 트리거는 일반 카운트 매치 트리거, 클록 카운트 매치 트리거, 플래그, 디버그 버스 기반 트리거, 랜덤 이벤트, 성능 모니터, 인터럽트, 에러, OKToStopClock 신호, 교차 크리거, 중지점, 및/또는 일반 비교 기반 트리거 등을 포함하나 이로 제한되지 않는다. 표 3은 코어와 노쓰 브리지로부터 예시적인 트리거를 나열한다.
Figure 112013058543115-pct00004
Figure 112013058543115-pct00005
Figure 112013058543115-pct00006
카운트 매치 트리거는 카운터(일반 카운터, 클록 카운터 등)가 매치 값과 매칭할 때 생성된다. 디버그 데이터 기반 트리거는 디버그 버스를 통해 여러 코어 유닛으로부터 오는 여러 트레이스 데이터로부터 유도된다. 디버그 데이터 기반 트리거는 이 값{이 값의 전부 또는 서브세트(예를 들어, 상위 또는 하위 32비트)}이 (또는 임의의 다른 논리 또는 산술 연산에 기초하여) 비교 값과 같거나 및/또는 이를 초과하거나 이 미만인 경우 생성될 수 있다. 디버그 데이터 기반 트리거는 디버그 버스로부터 선택된 비트일 수 있다. 디버그 데이터 기반 트리거 신호는 디버그 버스에 있는 적어도 하나의 비트가 이전의 클록 사이클에서의 이 값에 대해 변화된 것을 나타낼 수 있다.
이하 설명되는 랜덤 이벤트 트리거는 시드(seed), 다항식(polynomial), 마스크(mask) 및/또는 매치 레지스터(match register)의 함수로서 발사(fire)된다. 마이크로코드는 특정 DSM 동작을 트리거링할 수 있다. 마이크로코드 트리거는 별개의 레지스터에 정적으로 한정될 수 있고, 전체 디버그 실행에 대해 고정될 수 있고, 모든 DSM 상태에 적용될 수 있다. 추가적인 카운트 매치 트리거는 카운터가 다른 카운터와 같은 것을 나타낸다. 이것은 할당/할당 해제 유형 함수(allocate/de-allocate type function)를 추적(track)하는데 유리할 수 있다. 예를 들어, trig_gen_cnt1은 임계값으로 설정될 수 있고, trig_gen_cnt0은 할당 시 증분될 수 있고, trig_gen_cnt1은 할당 해제 시 증분될 수 있고, 이 트리거는 임계값이 충족되는 경우 발사된다.
미리 선택된 트리거(표 3에서 마이크로코드 트리거)는 이하 그룹, 즉 중지점, 인터럽트, 성능 모니터, 및 에러 이벤트 등에서의 트리거이다.
DSM은 트리거로서 종래의 중지점 상태를 사용할 수 있다. DSM은 종래의 중지점이 마이크로코드를 통해 디스에이블될 때 중지점을 무시한다(override). 중지점 처리 마이크로코드가 실행을 시작할 때 이것은 dsm2mcode 레지스터(DSM으로부터 마이크로코드로 통신하는 레지스터)에 있는 비트의 값을 판독한다. 이 비트가 참이라면, 마이크로코드는 레지스터에 대응하는 비트를 설정하는 것에 의해 히트(hit)치는 중지점의 유형을 송신하며 중지점을 취함이 없이 리턴(return)한다.
DSM은 시스템 관리 모드(SMM: system management mode) I/O 트랩 오프셋 레지스터(trap offset register)에 특정된 I/O 명령(instruction)으로 트리거될 수 있다. 중지점 트리거와 유사하게 SMM IO 트랩은 통상적으로 일어나지 않을 수 있다.
DSM은 트리거될 이벤트로서 성능 모니터 신호를 사용할 수 있다. 기존의 성능 모니터 이벤트 선택 능력으로부터 선택된 이벤트는 트리거로서 DSM으로 라우팅된다. DSM은 트리거로서 성능 모니터 이벤트를 처리할 수 있고 이들의 조합이나 시퀀스에 반응하도록 프로그래밍될 수 있다.
각각의 미리 선택된 트리거는 2개의 필드로 이루어질 수 있다. 제1 필드는 클러스터 진단 선택 인코딩(cluster-agnostic selection encoding)이고 제 2 필드는 표 6에 도시된 바와 같이 두 클러스터 중 어느 하나의 클러스터 또는 OR를 결정한다. 제 2 필드는 DSM이 실제로 보는 것을 형성하는데 트리거의 각 클러스터의 버전(version)을 사용하는 방식을 프로그래밍한다. 이들 필드 모두를 사용하여 각 트리거에 대해 DSM은 하나의 코어 또는 다른 클러스터의 버전을 볼 수 있으며 또는 어느 클러스터의 버전의 OR를 볼 수 있다. 표 4 및 표 5는 예시적인 dsm_trig_pre_sel1 및 dsm_trig_pre_sel2 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00007
Figure 112013058543115-pct00008
Figure 112013058543115-pct00009
표 7은 인터럽트 트리거 중 어느 것을 선택하기 위하여 표 4 및 표 5의 UcodePreSel*[4:0] 필드 각각에 대해 예시적인 마이크로코드 트리거를 한정한다.
Figure 112013058543115-pct00010
DSM 동작이 이후 설명된다. DSM은 트리거 또는 트리거 시퀀스에 기초하여 특정 동작을 수행한다. 동작은 2개의 분류(category), 즉 메인 동작 및 미리 선택된 동작으로 분류될 수 있다. 일례로서, 16개의 메인 동작 및 46개의 미리 선택된 동작이 아래에 정의된다. 메인 동작은 DSM으로 피드백되는 트리거를 유발할 수 있는 동작이다. 16개의 메인 동작 중에서 12개의 실제 메인 동작과 4개의 일반 동작이 본 명세서에 일례로서 정의된다. 4개의 일반 동작(Gen_act0-3)은 이들이 12개의 실제 메인 동작이 피드백하는 타이트한 루프의 외부에서 미리 선택된 우회 레벨(level of indirection)이다. 이것은 일반 동작의 파이프라이닝(pipelining)을 가능하게 한다. 도 5a에서 메타 벡터에 있는 동작 필드는 16 비트로 완전히 디코딩된 필드이다. 이것은 16개의 일반 동작의 치환을 발사하는 것을 가능하게 한다. 표 8은 예시적인 16개의 메인 동작을 도시한다.
Figure 112013058543115-pct00011
Gen_act0-3 동작은 4개의 DSM 상태 각각에 대해 개별적으로 정의된다. 이것은 적절한 프로그래밍 융통성을 가능하게 한다. 4개의 DSM 상태에 대해 6비트 일반 동작에 대해 프로그래밍 지원을 하는 것은 표 9 및 표 10에 한정된 바와 같이 2개의 레지스터를 요구한다. 표 9는 예시적인 dsm_act_pre_sel01 레지스터 비트 필드 정의를 도시하며, 표 10은 예시적인 dsm_act_pre_sel23 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00012
Figure 112013058543115-pct00013
미리 선택된 동작에 대해, 6비트 인코딩이 열거를 위해 제공된다. 표 11은 미리 선택된 동작에 대한 샘플 리스트를 도시한다. 이들 동작은 내부 DSM 타이밍 루프의 외부에 있고 따라서 파이프라이닝될 수 있다.
Figure 112013058543115-pct00014
Figure 112013058543115-pct00015
Figure 112013058543115-pct00016
DSM은 제어 및 그 동작을 위한 복수의 레지스터를 포함한다. 제어 및 상태 레지스터는 여러 DSM 제어를 제공한다. 예를 들어, 제어 레지스터는 DSM 트리거가 동작으로 맵핑하는 방식을 제어한다(예를 들어, "PerfMon0이 발생할 때 chip_stopclk 동작을 생성한다"). 표 12는 예시적인 dsm_control_status 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00017
Figure 112013058543115-pct00018
dsm_enbl 비트는 1로 설정될 때 DSM의 동작을 인에이블하고, 0으로 설정될 때 DSM 동작을 디스에이블한다. dsm_enbl 비트가 (DSM이 턴오프될 때에도 카운트하는 절대 시간 카운터를 제외하고) 0일 때에는 어느 DSM 상태도 수정(modified)되지 않을 수 있다. dsm_enbl 비트는 0x0으로 리셋될 수 있다. 보안 상의 이유로, 마이크로코드는 기록 기계 상태 레지스터(WRMSR: write machine status register) 명령에 의하여 이 비트가 설정되는 것을 방지하고, HDT(또는 마이크로코드 패치)는 이 비트를 설정할 수 있다.
Dsm_hdt_status 비트는 HDT 또는 개선된 플랫폼 관리 링크(APML: Advanced Platform Management Link)에 진입하는 이유를 결정하는 방식을 제공한다. SW는 이 비트를 폴링(poll)하고 DSM이 HDT 또는 APML를 호출하는 시도를 하였는지를 결정할 수 있다. 이 비트는 Mcode2Dsm 레지스터의 ClrHdtStatus 비트에 1을 기록하는 것에 의해 수동으로 클리어링될 수 있다. 이 비트는 dsm_control_status 레지스터에 판독/기록가능하지만, 이를 거기에 기록하는 것은 이 레지스터에 더 기록가능한 dsm_state 비트를 잠재적으로 손상시킬 위험을 가지고 있다. mcode2dsm 레지스터의 ClrHdtStatus 비트를 가지는 것은 dsm_control_status에 있는 DsmState 비트를 손상시킬 수 있는 dsm_control_status에 기록-수정-기록(R-M-W: read-modify-write)을 수행할 필요성을 회피한다.
cmp_modebus_sel 비트는 주문형 트리거링 기능(custom triggering functionality)과 연관된다.
trig_obs[5:0] 필드는 트리거 중에서 아웃바운드 디버그 버스(out-bound debug bus)에서 볼 수 있는 트리거를 제어한다. trig_obs 필드는 임의의 특정 트리거를 처리하기 위하여 각각 6비트 폭일 수 있다. 아웃바운드 디버그 버스 트레이스 데이터 필드는 표 13에서와 같이 정의된다.
Figure 112013058543115-pct00019
store_on_change 비트는 데이터가 매 클록마다 저장되는지의 여부를 제어하거나 임의의 데이터가 변할 때를 제어한다. store_on_change 특징에 대해 본 데이터는 상태 캡처 버퍼(state capture buffer)(L2 또는 TCB)로 송신되는 트레이스 데이터의 모든 72비트를 포함한다.
dsm_state 비트는 디버그 상태 기계 상태 비트이다. DsmState 비트는 DSM 그 자체의 상태를 나타낸다. DSM은 이를 그 로직에 입력으로서 사용하고 또한 동작을 통해 이 비트를 변경시킬 수 있다.
DbgTimeCntDis 비트는 절대 시간 카운터를 위한 것이다. 이 비트는 디폴트로 절대 시간 카운터가 인에이블된 것을 의미하는 0으로 리셋된다.
GenCntlncrement 비트는 4개의 일반 목적 카운터에 대응한다. 이들 비트는 통상적으로 Gen_cnt_tgl_inc_[3, 2, 1, 0] 동작에 의해 제어된다. 이들 비트는 여기서 이 상태에 대한 판독 액세스를 제공하기 위한 것이다.
StoreToL2 비트는 디버그 정보가 상태 캡처 버퍼(L2 또는 TCB)에 저장되었는지의 여부를 제어한다. 이 비트는 SRB 위에 r/w 액세스가능하다. 이 비트는 또한 Trace_store_start 및 Trace_store_stop DSM 동작을 통해 설정되고 클리어링될 수 있다. Trace_store_current 및 Time_store 동작은 StoreToL2 비트가 설정되지 않았더라도 저장을 수행할 수 있다.
LowPwr 비트를 설정하는 것은 DSM에 있는 모든 플롭(flop) 상태를 정적으로 게이트오프(gate-off)한다. 그러나, 모든 레지스터는 여전히 판독/기록가능하다. 게이팅 제어는 DSM에 기록이 있지 않는 한, 이들 레지스터 플롭이 클록킹되지 않는 것을 보장한다.
DbgExtTsc 비트는 외부 시간 스탬프 소스의 사용을 가능하게 한다. 이것은 노쓰 브리지 p-상태 변화로 인해 노쓰 브리지에 사용되는 클록이 시간에 따라 주파수가 변화될 수 있는 노쓰 브리지 구현을 위해 지원된다. 이 비트가 일(one)로 설정되면, 외부 소스가 사용된다. 추가적으로, 외부 소스가 사용되면, 내부 클록 카운터(dsm_clk_cnt)가 디스에이블되고 매치 트리거에 적용하는 마스크 값으로 사용된다. 마스크 값을 요구하는 이유는 외부 시간 스탬프 카운터 값이 일(one)을 초과하는 것만큼 증분될 수 있다는 것이다. 낮은 차수의 비트를 마스크오프(masking-off)하는 것은 그렇지 않은 경우 손실될 수 있는 특정 매치 값을 손실하지 않는 것을 가능하게 한다. 이것은 클록 사이클에서 매칭 시의 해상도가 일(one)만큼 항상 증분하는 시간 스탬프 값의 간단한 경우에 있을 수 있는 것으로부터 감소되는 한정을 부과한다.
절대 시간 카운터는 상태 캡처 버퍼(L2 또는 TCB)에 기록될 때 여러 디버그 데이터의 시간 스탬핑에 사용된다. 이 카운터는 DSM에 대해 매치 트리거를 형성하는데 사용될 수 있다. 표 14는 예시적인 dsm_clk_cnt 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00020
dsm_clk_cnt 레지스터는 동작 신호 clk_cnt_rst가 발사될 때 DSM에 의해 리셋될 수 있다. 이 리셋을 수행하는 신호는 다른 가능한 DSM 동작이다. 이것은 DSM에 대해 지연 기능을 설정하는 것을 가능하게 한다. 대부분 경우에 이 카운터는 DSM에 의해 리셋되지 않고 지연을 생성하는 것이 4개의 일반 목적 카운터를 사용하여 수행될 수 있는 것으로 예상된다.
노쓰 브리지 P-상태로 인해, 노쓰 브리지 DSM 애플리케이션은 이 내부 카운터 대신에 DSM에 의해 사용될 수 있는 "NB P-상태 조절된" 클록 카운터를 제공할 수 있다. 표 15는 예시적인 dsm_clk_match 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00021
dsm_clk_match 레지스터는 이 레지스터에 있는 값이 dsm_count 레지스터에 있는 값보다 일(one) 미만일 때 발생하는 이벤트를 특정하는데 사용될 수 있다. 매칭 시, 신호 trig_clk_cnt 펄스. DbgExtTsc가 일(one)로 설정되면, 매치 상태는 dsm_clk_match 레지스터에 있는 대응하는 비트가 0으로 설정된 비트를 보게 된다.
일반 목적 카운터는 DSM에 의해 제어될 수 있다. 이들 카운터는 DSM에 의해 리셋되거나 증분될 수 있다. 이들 카운터는 DSM이 대응하는 증분 신호를 발사할 때 증분된다. 이들 카운터는 대응하는 증분 상태가 참인 경우에 각 클록에서 증분된다(예를 들어, GenCntIncrement[3:0]는 Gen_cnt_tgl_inc_[3:0]에 의해 제어된다). 이들 카운터는 DSM에 대해 매치 트리거를 생성할 수 있다. 연관된 매치 레지스터와 연관하여, 이들 카운터는 트리거 소스로서 DSM에 의해 사용될 수 있다.
룩백 모드(loop-back mode)에 있을 때, 일반 목적 카운터 0 및 1은 디버그 버스에 대해 데이터 소스가 된다. 룩백 모드에서, 일반 목적 카운터 0은 디버그 버스의 하위 32비트를 공급할 수 있고, 일반 목적 카운터 1은 디버그 버스의 상위 32 비트를 공급할 수 있다.
타이밍을 충족하고 추가적인 회로 영역을 소비하지 않는 방식으로 카운터를 구현하기 위하여, 이들 카운터는 이하 한정사항을 구비할 수 있다. 카운터는 0x0으로부터 카운트를 시작할 수 있고 임의의 가능한 매치 한계(limit)를 지원할 수 있다. 3 미만의 매치 한계를 가지는 롤오버(rollover)는 지원되지 않을 수 있다. 비제로(non-zero) 값으로부터 카운트를 시작하는 것은 매치가 시작 값 + 3 이상인 경우 작동할 수 있다. 0x0의 매치 한계는 지원되지 않을 수 있다. 증분 동작은 증분이 gen_cnt_toggle_inc_*에 의해 야기되었더라도 클리어 동작(clear action)에 비해 우선권을 취할 수 있다. 클리어 동작은 (토클이 증분으로부터 비증분으로 가는) 토클 동작과 동일한 사이클이 수행되는 경우 효과적이지 않을 수 있다. 이것이 토클 동작이 상태에 의해 지연되는 이유이다. 그러나, 전체 효과를 동일하게 하기 위해 유저는 증분으로 역으로 토글하는 (비증분으로부터 증분으로 토글할 때) 메타 벡터의 동일한 동작 필드에 클리어 동작을 둘 수 있다. 여기서, 토글의 지연된 효과로 인해, 클리어는 실제로 토글 전에 일어날 수 있다.
표 16은 예시적인 dsm_gen_cnt_* 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00022
dsm_gen_cnt_* 레지스터는 대응하는 트리거 신호 gen_clk_inc_*가 참인 클록 사이클이나 또는 대응하는 Gen_cnt_tgl_inc_* 동작이 카운터를 증분하게 하는 클록 사이클에서 증분된다. 이 레지스터는 대응하는 동작 신호 gen_clk_rst_*가 참일 때 DSM의 동작으로 리셋될 수 있다. 리셋 함수는 충돌하는 경우에 증분 함수에 비해 우선권을 가질 수 있다. 이것은 DSM에 대해 지연 함수를 설정하는 것을 가능하게 한다.
디버그 블록은 의사 랜덤 이벤트 생성기(pseudo-random event generator)를 구비할 수 있고, 그 출력은 트리거로서 사용될 수 있다. 일 실시예에 따라 의사 랜덤 이벤트 생성기는 2개의 가상 선형 피드백 시프트 레지스터(LFSR)를 포함할 수 있다. 예를 들어, LFSR은 흐름 속성, 즉 48 비트 폭, 완전히 프로그래밍가능한 피드백 다항식(47 비트 값), 갈로이스 스타일 매치(Galois style math)(폭에 상관없이 타이밍을 충족시킬 수 있는), 2개의 가상 LFSR(실제 공유 LFSR), 48 비트 마스크 레지스터 및 48 비트 매치 레지스터를 구비할 수 있다.
도 6은 예시적인 랜덤 이벤트 생성기(600)의 논리 구조를 도시한다. 랜덤 이벤트 생성기(600)의 출력은 DSM에 대해 트리거 소스로서 사용될 수 있다. 2개의 출력 비트(rand_event0 및 rand_event1)가 이 예에서 생성된다. 이것은 또한 에러 처리 메커니즘을 테스트하기 위하여 에러를 주입하도록 코어 내에 다른 유닛에 의해 사용될 수도 있다. 이 메커니즘은 하드웨어로 형성되므로, 이것은 프리 실리콘(pre-silicon)과 포스트 실리콘(post- silicon)으로 사용될 수 있다.
랜덤 이벤트 생성기(600)는 랜덤 이벤트 생성기 레지스터(602) (dsm_rnd_lfsr), 랜덤 이벤트 생성기 피드백 레지스터(608)(dsm_rnd_poly), 매치 레지스터(604)(dsm_rnd_match), 마스크 레지스터(606)(dsm_rnd_mask), XOR 게이트(610), NOT 게이트(612), AND 게이트(614), 및 OR 게이트(616)를 포함한다.
DSM(114)은 랜덤 이벤트 생성기 피드백 레지스터(608)에 Dsm_rnd_enbl 비트를 설정하는 것에 의해 랜덤 이벤트 생성기(600)를 인에이블하거나 디스에이블하는 rand_en_toggle 동작을 발행할 수 있다. 시드 값은 랜덤 이벤트 생성기 레지스터(602)에 이를 기록하는 것에 의해 적용될 수 있다. 랜덤 이벤트 피드백 레지스터(608)는 랜덤 이벤트 생성기 피드백 다항식을 저장한다. 랜덤 이벤트 생성기 피드백 다항식은 랜덤 이벤트 생성기(600) 내에 임의의 가능한 다항식을 사용하는 것을 가능하게 한다. M-시리즈 또는 최대 길이 다항식이 최대 랜덤한 거동을 하도록 사용될 수 있다. 랜덤 이벤트 생성기 피드백 레지스터(608)는 갈로이스 스타일 LFSR일 수 있다. 사용하기 위한 하나의 예시적인 다항식은 [48, 28, 27, 1]g이다. 이것은 0x0000_0C00_0001으로 변환된다. 피드백 항의 비트 위치는 일(one)만큼 우측으로 시프트된다. 0차 항이 거기에 있고 포함된다. 최고차 항(48)은 순서를 보이기 위하여 나열된다.
dsm_rnd_match 레지스터(604)는 랜덤 이벤트 생성기 매치 값을 보유하고 dsm_rnd_mask 레지스터(606)는 랜덤 이벤트 생성기 마스크 값을 보유한다. 랜덤 이벤트 생성기(600)의 최종 출력은 결과 랜덤 이벤트를 나타내는 단일 비트(rand_event0 또는 rand_event1)이다. 출력 비트를 생성하기 위하여 XOR 게이트(610)는 랜덤 이벤트 생성기 매치 값(reg_match[47:0])과 LFSR 값(reg_lfsr[47:0])의 비트 방식 비교를 수행한다. XOR 게이트 출력은 NOT 게이트(612)에 의해 인버팅(inverted)되고, AND 게이트(614)에 의해 랜덤 이벤트 생성기 마스크 값으로 마스킹된다. 랜덤 이벤트 생성기 마스크 레지스터(606)(reg_mask[47:0])에서 '0'인 비트에 대응하는 비트는 마스크오프된다. 출력 비트는 OR 게이트(616)에 의해 마스크된 값에 OR 동작을 수행하는 것에 의해 생성된다.
표 17은 예시적인 dsm_rnd_lfsr 레지스터 비트 필드 정의를 도시한다. 이것은 실제 LFSR 레지스터이다. 시드 값은 이 레지스터를 기록하여 적용될 수 있다.
Figure 112013058543115-pct00023
표 18은 예시적인 dsm_rnd_poly 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00024
여러 디버그 데이터는 디버그를 볼 수 있도록 하기 위하여 온칩 또는 오프칩 저장 구조{예를 들어 캐시(108) 또는 TCB(124)}에 저장될 수 있다. 디버그 데이터는 여러 위치로부터 디버그 데이터를 풀링할 수 있는 디버그 버스 네트워크를 통해 DSM으로 퍼널링(funneled)될 수 있다.
도 7은 DSM(114)을 통해 디버그 버스 및 버퍼 저장 흐름의 논리 구조를 도시한다. 디버그 데이터는 여러 유닛으로부터 수집되고 DSM(114)으로 공급된다. DSM(114)은 디버그 데이터(상태 캡처 데이터)를 저장 구조(130){예를 들어, 코어, 노쓰 브리지, 사우쓰 브리지, 그래픽 처리 유닛(GPU), 중앙 처리 유닛(CPU), 또는 오프칩 등에서 L2 캐시, TCB, 또는 데이터 저장소}로 전달한다. DSM(114)은 필터링 함수를 제공하기 위하여 디버그 데이터를 조건적으로 저장할 수 있다. 트레이싱은 DSM(114)의 제어 하에 시작되고 정지될 수 있다. 디버그 데이터가 저장 구조(130)에 캡처된 후에, 이것은 SRB를 통해 HDT로부터 액세스될 수 있다.
이 목적에 사용되는 저장 구조(130)는 L2 캐시 및 TCB의 특징 없는 방식(de-featured way)을 사용하는 것을 포함할 수 있다. 표 19는 예시적인 상태 캡처 데이터 비트 필드 정의를 도시한다. DebugTraceWrEn 비트는 이 엔트리가 유효 정보를 포함하는지 아닌지의 여부를 나타낸다. 카운트/데이터 비트는 비트 71:0이 시간 스탬프 값 또는 실제 디버그 데이터를 나타내는지의 여부를 나타낸다.
Figure 112013058543115-pct00025
트레이스 데이터(상태 캡처 데이터)는 dsm_control_status 레지스터에 있는 StoreToL2 비트가 설정되는 동안 매 클록 사이클마다 저장될 수 있다. StoreToL2 비트가 dsm_control_status 레지스터에 판독/기록가능하지만, 이것은 DSM으로부터 트레이스 시작 및 정지 동작을 통해 수행될 수 있다.
필터링을 제공하기 위하여, store-on-change 모드가 제공될 수 있다. store-on-change 모드가 dsm_control_status 레지스터에 있는 store_on_change 비트 및 StoreToL2 비트(예를 들어, Trace_store_start 및 Trace_store_stop 동작을 통해)를 설정하는 것에 의해 진입된다. store-on-change 모드에서, 하나의 사이클로부터 전체 저장 스트림에 대한 저장 값은 그 다음 값과 비교된다. 이 비교는 저장 경로(store-to path)에 있는 디버그 데이터의 전체 비트에 적용된다. 변화가 없다면, 새로운 값이 저장되지 않는다. 변화가 있다면, 저장된다.
필터 함수는 트리거 생성 로직에 의해 한정될 수 있다. 이 모드는 트리거 상태와 데이터 스트림의 선택사항에 따라 필터 비(ratio)를 제공할 수 있다. 여러 상이한 모드가 제공될 수 있다. 예를 들어, 하나의 모드에서, 동작(Trace_store_current)은 현재 사이클에서 선택된 디버그 데이터를 상태 캡처 버퍼(L2 또는 TCB)에 저장하도록 한정될 수 있다. 다른 모드에서, 동작(Trace_store_start 및 Trace_store_stop)이 저장을 시작하고 정지하도록 한정될 수 있다. 동행 동작(companion action)이 저장을 정지시키도록 한정될 수 있다. "트리거에 저장(Store on trigger)"은 실제로 명시적인 모드가 아니라 선택적으로 저장할 DSM의 프로그래밍과 함께 Trace_store_current 또는 Trace_store_start 및 Trace_store_stop 동작을 사용하는 것을 수반한다.
Trace_store_current 동작이 특정 시간에 발사될 수 있는 상태가 설정될 수 있다. 동작이 덜 빈번히 발사되면 될수록 압축비(compression ration)는 더 높아진다. Trace_store_start 및 Trace_store_stop 동작을 사용하는 경우에, DSM은 Trace_store_start을 발사한 것에 후속하여 Trace_store_stop 동작을 발사하도록 설정될 수 있다. 전체 압축비는 Trace_store_start 및 Trace_store_stop 동작 사이의 시간 대(versus) 총 시간의 함수일 수 있다. store-on-change 모드는 압축비를 더 최적화시키기 위하여 Trace_store_start 및 Trace_store_stop 동작의 사용과 결합될 수 있다.
저장으로부터 비저장으로 전이 시, 시간 스탬프 값이 기록될 수 있다. 이것은 필터링된 데이터의 상관을 가능하게 한다.
디버그 버스에 융통성을 제공하기 위하여 비트 방식 프로그래밍 가능한 지연 함수는 dsm_dbg_delay 레지스터(MSR)를 통해 제공될 수 있다. 디버그 버스의 64 비트 각각은 대응하는 데이터에서 1사이클 후에 유효 비트가 도달하는 경우를 처리하도록 하나의 클록 사이클만큼 지연될 수 있다. 대응하는 데이터와 파이프 정렬된 임의의 유효 비트를 가지는 것이 바람직하지만, 소스에서 데이터를 지연시키는 것은 비효과적일 수 있다. 그러므로, DSM에서 중심에 이 능력을 제공하는 것은 보다 효과적일 수 있다. 1인 dsm_dbg_delay 레지스터에 있는 각 비트에 대해 디버그 버스에서 대응하는 비트는 일(one)클록만큼 지연된다.
dsm_dbg_mask 레지스터는 비트 방식 디버그 버스 마스크이다. dsm_dbg_mask 레지스터에 있는 각 비트에 대해, 이것이 0이라면, 대응하는 디버그 버스 비트는 마스킹되지 않는다. 이것이 1이라면, 대응하는 디버그 버스 비트가 마스킹된다. 이 함수는 DSM의 이부에 이 마스킹을 수행하는 방식이 없고 store-on-change 함수 또는 DbgBusChng 트리거를 사용하는 것이 요구되는 애플리케이션에 사용될 수 있다.
DSM은 여러 디버그 버스 데이터에 기초하여 트리거될 수 있다. 디버그 버스 데이터는 트리거를 생성하는 임의의 논리 동작에서 처리될 수 있다. 예를 들어, 이 논리 동작은 비교와 "동일"하거나 및/또는 비교를 "초과"할 수 있다. 디버그 버스 데이터의 64비트 중에서, 32비트는 제어 및 상태 레지스터에서 bus_sel 신호에 의해 선택될 수 있다. 특정 디버그 데이터 비트 또는 비트들은 마스크(scb_trig_mask bit)에 의해 비교를 위해 선택될 수 있다. 2개의 모드("마지막 값과 비교" 모드와 "고정된 값과 비교" 모드)가 cmp_mode 비트에 의해 한정될 수 있다. "마지막 값과 비교" 모드에서, 디버그 데이터는 마지막 디버그 데이터와 비교된다. "고정된 값과 비교" 모드에서, 디버그 데이터는 주어진 비교 값(cmp_val bit)과 비교된다. 표 20은 예시적인 dsm_trig_data_* 레지스터 비트 필드 정의를 도시한다. dsm_trig_data_* 레지스터는 트리거(trig_misc_eq[*] trig_misc_gt[*])와 연관된다.
Figure 112013058543115-pct00026
이 기능을 제어하는 비트는 dsm_control_status 레지스터에 상주한다. Bus_sel_0 비트가 0으로 설정되면, 하위 32비트는 여러 디버그 버스 데이터로부터 선택되고, 이것이 1로 설정되면, 상위 32비트는 여러 디버그 버스 데이터로부터 선택된다. Cmp_mode_0 비트가 0이라면, 이것은 cmp_val[31:0]과 비교되고, Cmp_mode_0 비트가 1이라면, 이것은 마지막 상태와 비교된다. 디버그 버스에 기초하여 여러 트리거가 제공될 수 있다. 이들 트리거 각각은 디버그 버스에 있는 64비트 중 어느 것으로부터 오도록 프로그래밍될 수 있다. 표 21은 예시적인 dsm_trig_sel 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00027
각 TriggerSelect* 필드에서 6비트 값은 디버그 버스에서 64비트 중 어느 것을 지시한다. 2비트 TriggerMode* 값은 각 TriggerSelect* 필드에 대응한다. TriggerMode* 값은 양의 에지(positive-edge) 또는 음의 에지(negative-edge) 에지 검출로서 연관된 트리거가 거동하게 한다. 이 특징은 보다 효과적인 검증을 지원하도록 의도된다.
표 22는 예시적인 dsm_sm_vec 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00028
DSM에 대해 DSM 대 마이크로코드 인터페이스가 이후 설명된다. 인터페이스는 DSM이 마이크로코드와 통신하고 그 역으로 통신하기 위해 제공될 수 있다. 이 인터페이스는 DSM 및 마이크로코드 사이에 양방향 통신을 가능하게 할 수 있다. dsm2mcode 레지스터는 DSM이 명령을 마이크로코드에 송신하는 수단을 제공하며, mcode2dsm 레지스터는 마이크로코드가 DSM에 송신하는 수단을 제공한다. DSM 동작은 마이크로코드에 의해 판독가능한 dsm2mcode 레지스터에 비트를 설정할 수 있다. 마이크로코드는 DSM에 의한 트리거로서 사용가능한 mcode2dsm 레지스터에 비트를 설정할 수 있다.
전용 디버그 마이크로 인터럽트는 DSM이 마이크로코드의 관심을 가지게 한다. 이들 특징은 DSM이 중지점이 실제 취해지는 때를 제어하는 능력, DSM이 마이크로코드 패치를 발사하는 능력, DSM이 마이크로코드로 하여금 일반 목적 비교(조건적 HDT와 같이)를 수행하도록 하고 참 또는 거짓 결과를 리턴하게 하는 능력, DSM이 마이크로코드로 하여금 HDT에 진입하게 하는 능력, 마이크로코드가 DSM에 중지점을 송신하는 능력 및 마이크로코드가 일반 목적 플래그 비트를 DSM에 설정하는 능력 등을 제공한다.
dsm2mcode 및 mcode2dsm 레지스터가 주어진 스레드(thread)에서 실행하는 마이크로코드가 다른 스레드의 것으로부터 별개의 상태와 상호작용하도록 하는 스레드된 방식으로 처리될 수 있다. 디버그 마이크로 인터럽트는 (긴급 HDT 인터럽트와는 다른) 임의의 다른 인터럽트와 같이 처리될 수 있고, 명령 경계에서 취해질 수 있다. 이것이 명령 또는 루틴의 중간에서 취해질 수 있는 몇몇 경우가 있다. 대부분의 이들 경우는 스핀 루프(spin-loop), 예를 들어, HALT, STPCLK, FPU FREEZE 루프 등이다.
표 23은 예시적인 dsm2mcode 레지스터 비트 필드 정의를 도시한다.
Figure 112013058543115-pct00029
Figure 112013058543115-pct00030
DSM를 트리거하도록 중지점 상태를 사용하기 위하여, 이것은 중지점 상태가 이를 실제로 취함이 없이 관찰되었을 때 관찰될 수 있다. EnableBp 비트는 레지스터에 값을 업데이트하기 위해 마이크로코드에 나타내는 것이다. 이것은 디스에이블된 중지점으로 디버그 시퀀스를 시작하고 이를 이 방식을 따라 (또는 그 역으로) 인에이블할 수 있는 것을 가능하게 한다. 이 구조는 기존의 중지점 인에이블/디스에이블 메커니즘을 레버리지(leverage)한다.
플래그1 및 플래그0 비트는 DSM 동작 또는 SRB 액세스에 의해 설정되고 클리어링될 수 있다. 이들 비트는 DSM에 대해 트리거 옵션이다. 이들 비트는 여러 방식으로 사용될 수 있다. 이들 비트는 DSM이 복잡한 상태를 추적하기 위한 여분의 상태 비트일 수 있다. 이들 비트는 DSM 관찰로부터 정보를 이 비트를 판독하는 마이크로코드 경로로 송신하는데 사용될 수 있다. 이들 비트는 일부 HDT 레벨 관찰을 DSM에 알리기 위해 HDT에 의해 설정될 수 있다.
DSM은 전용 디버그 마이크로 인터럽트를 풀링하는 것에 의해 마이크로코드를 트리거하는 능력을 구비할 수 있다. 마이크로코드는 종래의 디버그 요청(DBREQ) 인터럽트로부터 그 다음 더 높은 우선권으로 DSM 마이크로 인터럽트를 우선시킨다. 그리하여, DBREQ 및 DSM 인터럽트가 계류 중인 경우, 마이크로코드는 DSM 인터럽트를 제일 먼저 처리할 수 있다. 패치, 비교, EnableBp, EnterApml 및 EnterHdt 비트는 모두 DSM으로부터 연관된 세트 및 클리어 동작을 구비한다. 이것은 이들 비트가 DSM에 의해 동적으로 변화될 수 있게 한다. McodeCtl 및 DbgCntrl 비트는 임의의 세트 또는 클리어 동작을 구비하지 않고, SRB 위에 이를 기록하는 것에 의해서만 제어될 수 있다. McodeCtl 및 DbgCntrl 비트는 디버그 실행을 설정하는 동안 정적으로 기록될 수 있다. 패치, 비교, EnableBp, EnterApml 및 EnterHdt 비트는 마이크로 인터럽트 동작(CU_DbgMicroIntC[1|0])을 발사할 때까지 DSM 선두에 의해 동적으로 설정되거나 클리어링될 수 있다. 이것은 DSM이 마이크로코드에 하나의 디버그 인터럽트로부터 다른 디버그 인터럽트로 상이하게 수행하는 것을 "알리는(tell)" 것을 변화시킬 수 있게 한다. 디버그 마이크로 인터럽트가 발사될 때, 마이크로코드는 이것이 수행할 필요가 있는 것을 결정하기 위하여 dsm2mcode 레지스터를 판독한다.
dsm2mcode에서 DbgMicroInt 및 Patch, EnableBp, EnterApml 및 EnterHdt 비트의 비트 클리어링은 mcode2dsm 레지스터에서 클리어 비트로 처리된다. 이 구조는 DSM(판독 이후)에 의해 수정된 dsm2mcode 레지스터에 있는 다른 비트가 덮어쓰기(overwritten)될 가능성을 방지하기 위하여 R-M-W 대신에 직접 dsm2mcode 레지스터에 구현된다.
DSM이 노쓰 브리지(NB)에 사용되면, NB 내 DSM이 완전한 마이크로코드 인터페이스를 구비하지 않으므로, 디버그 인터럽트를 발사하는 것이 아니라, NB DSM이 모든 코어로 팬아웃(fan-out)하기 전에 DBReq 신호로 Dbglnt 출력에 OR 동작을 수행할 수 있다. 이것은 CCI에 어떤 변화도 야기함이 없이 NB DSM이 HDT에 진입하는 것을 지원하는 것을 가능하게 한다.
Dsm2mcode 레지스터에 있는 비트 중에서, DbgMicroInt 및 FlagOut 비트가 지원될 수 있다. DbgMicroInt는 Dbglnt 출력을 구동한다. FlagOut 비트는 코어 DSM에서와 같이 스크래치패드(scratchpad)로서 사용될 수 있다. EnableBp, 비교, 패치, EnterApml 및 EnterHdt 비트는 사용되지 않을 수 있다.
DSM이 매우 복잡한 트리거링 시퀀스를 처리하는데 자원이 부족하면, 능력을 확장하기 위해 마이크로코드를 사용하는 것이 가능하다. 트리거링 시퀀스 내 임의의 지점에서, DSM은 완전히 새로운 트리거 시퀀스에 대해 DSM를 완전히 재구성하는 마이크로코드 패치를 호출할 수 있다. 이것은 높은 복잡성의 경우를 처리하는데 사용될 수 있다. DSM_PATCH는 인터럽트로부터 리턴으로서 판독 전용 메모리(ROM)에 있을 수 있다. 이것은 마이크로코드 패치 메커니즘을 통해 패치될 수 있다. 이 특수 위치는 다른 명령 흐름과 공유되어서는 안 된다.
모든 인터럽트(int 0, int 1, int 3 등)는 일부 예외를 가지고 mcode2dsm에 비트 0을 설정할 수 있다. 제일 먼저, 단 일(one) 바이트 int3 연산 코드는 mcode2dsm에 INT3 비트를 설정하고, 일(one) 바이트 int3은 INT 비트를 설정하지 않는다. 소프트웨어 디버거(debugger)는 일(one) 바이트 int3 연산코드를 사용하여 소프트웨어 중지점을 설정할 수 있으며, 이것이 int3이 DSM에 특수 인터페이스를 구비하는 이유이고 일 바이트 연산 코드가 플래그에 중요한 이유이다. 둘째, 'int4'(오버플로우)는 이 인터럽트는 거의 사용되지 않고 마이크로코드에 변화가 용이하지 않는 것으로 인해 mcode2dsm에 비트 0을 설정하지 않는다. 중지점이 'int4'에 대해 설정될 필요성이 있는 드문 경우에는, 유저가 인터럽트 처리기의 시작 시 명령 중지점을 설정할 수 있다. 다른 적절한 인터럽트 처리기는 dsm_enbl 비트가 DSM ControlStatus 레지스터(비트 0)에 설정되는 경우 mcode2dsm에 비트 8:3을 설정할 수 있다.
mcode2dsm MSR은 마이크로코드가 DSM에 송신하는 수단을 제공한다. 각 클러스터에 별개의 비트들이 있다. 표 24는 예시적인 mcode2dsm 레지스터 비트 필드 정의를 도시한다. 모든 비트는 기록 전용이다.
Figure 112013058543115-pct00031
Figure 112013058543115-pct00032
Figure 112013058543115-pct00033
mcode2dsm MSR에 있는 비트는 마이크로코드가 DSM에 송신하는데 사용된다. 이들 비트는 DSM이 임의의 다른 트리거와 같이 사용할 수 있는 트리거로서 DSM으로 라우팅된다. 각 스레드에 대해 하나씩 이들 비트의 세트가 2개 있을 수 있다. 이들 비트는 SVM 인터셉트 체크를 포함하여 임의의 예외 전에 마이크로코드에 의해 기록될 수 있다. 소프트웨어 기반 인터럽트(int, int3)가 DSM에 송신되는 방식은 mcode2dsm 레지스터에 이들 대응하는 비트를 기록하는 마이크로코드에 의한다.
특징과 요소가 특정 조합으로 전술되었으나, 각 특징이나 요소는 다른 특징과 요소 없이 단독으로 또는 다른 특징과 요소와 여러 조합으로 또는 다른 특징과 요소 없이 여러 조합으로 사용될 수 있다. 본 명세서에 설명된 장치는 일반 목적 컴퓨터 또는 프로세서에 의해 실행하기 위해 컴퓨터 판독가능한 저장 매체에 포함된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어를 사용하는 것에 의해 제조될 수 있다. 컴퓨터 판독가능한 저장 매체의 예는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 자기 매체, 예를 들어, 내부 하드 디스크와 이동식 디스크, 광자기 매체, 및 광 매체, 예를 들어, CD-ROM 디스크 및 DVD(digital versatile disk)를 포함한다.
본 발명의 실시예는 컴퓨터 판독가능한 저장 매체에 저장된 명령과 데이터로 표현될 수 있다. 예를 들어, 본 발명의 측면은 하드웨어 설명 언어(HDL: hardware description language)인 베릴로그(Verilog)를 사용하여 구현될 수 있다. 처리될 때, 베릴로그 데이터 명령은 반도체 제조 시설에서 구현되는 제조 공정을 수행하는데 사용될 수 있는 다른 중간 데이터{예를 들어, 네트리스트(netlist), GDS 데이터 등}를 생성할 수 있다. 제조 공정은 본 발명의 여러 측면을 구현하는 반도체 디바이스(예를 들어, 프로세서)를 제조하도록 적응될 수 있다.
적절한 프로세서는 일례로서 일반 목적 프로세서, 특수 목적 프로세서, 종래의 프로세서, DSP(digital signal processor), 복수의 마이크로프로세서, 그래픽 처리 유닛(GPU: graphics processing unit), DSP 코어, 제어기, 마이크로제어기, ASIC(application specific integrated circuit), FPGA(field programmable gate array), 임의의 다른 유형의 집적 회로(IC: integrated circuit) 및/또는 상태 기계, 또는 이들의 조합을 포함한다.

Claims (20)

  1. 집적 회로(IC: integrated circuit)로서,
    디버그 트리거(debug trigger)를 수신하고, 대응하는 디버그 트리거 또는 디버그 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하도록 구성된 모듈을 포함하며,
    상기 프로그래밍된 동작은 상기 모듈로 피드백하는 메인 동작 및 파이프라인화되는 미리-선택된 동작 중 하나이며, 그리고
    상기 모듈은 클록의 정지, 디버그 모드의 진입, 디버그 교차 트리거의 발행, 디버그 트레이스 데이터를 저장 구조에 저장하는 것의 시작 또는 정지, 디버그 상태의 전이, 카운터의 증분, 감분, 또는 클리어링(clearing), 또는 레지스터에 플래그의 설정 또는 클리어링 중 적어도 하나를 트리거하도록 구성된 것을 특징으로 하는 집적 회로.
  2. 제1항에 있어서, 상기 모듈은 프로세서 코어, 다른 디버깅 모듈, 노쓰 브리지(northbridge), 또는 다른 소켓(socket) 중 적어도 하나로부터 디버그 트리거를 수신하도록 구성된 것인 집적 회로.
  3. 삭제
  4. 집적 회로(IC: integrated circuit)로서,
    디버그 트리거(debug trigger)를 수신하고, 대응하는 디버그 트리거 또는 디버그 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하도록 구성된 모듈을 포함하며,
    상기 프로그래밍된 동작은 상기 모듈로 피드백하는 메인 동작 및 파이프라인화되는 미리-선택된 동작 중 하나이며, 그리고
    상기 모듈은 메타 벡터(meta-vector)를 보유하는 레지스터를 포함하고, 상기 메타 벡터는 디버그 트리거를 선택하는 트리거 필드, 상기 선택된 디버그 트리거의 부울리안 조합을 조합하는 치환 필드 및 동작 필드를 포함하며, 상기 동작 필드에 의해 한정된 동작은 상기 치환 필드에 의해 한정된 상태가 충족된 상태에서 트리거되는 것을 특징으로 하는 집적 회로.
  5. 집적 회로(IC: integrated circuit)로서,
    디버그 트리거(debug trigger)를 수신하고, 대응하는 디버그 트리거 또는 디버그 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하도록 구성된 모듈을 포함하며,
    상기 프로그래밍된 동작은 상기 모듈로 피드백하는 메인 동작 및 파이프라인화되는 미리-선택된 동작 중 하나이며, 그리고
    상기 디버그 트리거는 카운터가 매치 값(match value)과 매칭할 때 생성되는 카운트 매치 트리거, 클록 카운트가 매치 값과 매칭할 때 생성되는 클록 카운트 매치 트리거, 상기 모듈과 마이크로코드 사이에 통신하는 레지스터 내의 플래그 비트(flag bit), 랜덤 이벤트 생성기(random event generator)에 의해 생성된 랜덤 이벤트 신호, 성능 모니터 신호, 인터럽트, 에러, 중지점(breakpoint), 디버그 버스(debug bus) 상의 데이터의 논리 또는 산술 비교에 기초하여 생성된 디버그 데이터 기반 트리거, 및 디버그 버스로부터 선택된 비트인 디버그 데이터 기반 트리거 중 적어도 하나를 포함하는 것을 특징으로 하는 집적 회로.
  6. 제1항에 있어서, 상기 디버그 트리거는 마이크로코드에 의해 생성된 것인 집적 회로.
  7. 집적 회로(IC: integrated circuit)로서,
    디버그 트리거(debug trigger)를 수신하고, 대응하는 디버그 트리거 또는 디버그 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하도록 구성된 모듈을 포함하며,
    상기 프로그래밍된 동작은 상기 모듈로 피드백하는 메인 동작 및 파이프라인화되는 미리-선택된 동작 중 하나이며,
    상기 모듈은 디버그 데이터를 수신하고 상기 디버그 데이터를 저장 구조에 공급하도록 구성되며, 그리고
    상기 저장 구조는 코어, 노쓰 브리지, 사우쓰 브리지(southbridge), GPU(graphics processing unit), CPU(central processing unit) 또는 오프칩(off-chip) 내 데이터 저장소 또는 상기 집적 회로 상의 캐시인 것을 특징으로 하는 집적 회로.
  8. 삭제
  9. 집적 회로(IC: integrated circuit)로서,
    디버그 트리거(debug trigger)를 수신하고, 대응하는 디버그 트리거 또는 디버그 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하도록 구성된 모듈을 포함하며,
    상기 프로그래밍된 동작은 상기 모듈로 피드백하는 메인 동작 및 파이프라인화되는 미리-선택된 동작 중 하나이며,
    상기 모듈은 디버그 데이터를 수신하고 상기 디버그 데이터를 저장 구조에 공급하도록 구성되며, 그리고
    상기 모듈은 상기 디버그 데이터에 필터 함수를 수행하도록 구성된 것을 특징으로 하는 집적 회로.
  10. 삭제
  11. 집적 회로(IC: integrated circuit)로서,
    디버그 트리거(debug trigger)를 수신하고, 대응하는 디버그 트리거 또는 디버그 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하도록 구성된 모듈을 포함하며,
    상기 프로그래밍된 동작은 상기 모듈로 피드백하는 메인 동작 및 파이프라인화되는 미리-선택된 동작 중 하나이며,
    상기 모듈은 상기 모듈의 동작을 제어하기 위해 제어 및 상태 레지스터를 포함하며, 그리고
    상기 제어 및 상태 레지스터는 전력 소비를 절감하기 위해 상기 모듈의 전력 상태를 제어하기 위한 하위 전력 비트를 포함하는 것을 특징으로 하는 집적 회로.
  12. 집적 회로(IC)를 디버깅하는 방법으로서,
    상기 집적회로의 모듈에서, 디버그 트리거를 수신하는 단계; 및
    상기 모듈에서, 대응하는 디버그 트리거 또는 디버그 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하는 단계를 포함하고, 상기 프로그래밍된 동작은 상기 모듈로 피드백하는 메인 동작 및 파이프라인화되는 미리-선택된 동작 중 하나이며,
    상기 프로그래밍된 동작은 클록의 정지, 디버그 모드의 진입, 디버그 교차 트리거의 발행, 디버그 트레이스 데이터를 저장 구조에 저장하는 것의 시작 또는 정지, 디버그 상태의 전이, 카운터의 증분, 감분, 또는 클리어링, 또는 레지스터 내 플래그의 설정 또는 클리어링 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  13. 제12항에 있어서, 상기 디버그 트리거는 프로세서 코어, 다른 디버깅 모듈, 노쓰 브리지 또는 다른 소켓 중 적어도 하나로부터 수신된 것인 방법.
  14. 삭제
  15. 집적 회로(IC)를 디버깅하는 방법으로서,
    상기 집적회로의 모듈에서, 디버그 트리거를 수신하는 단계; 및
    상기 모듈에서, 대응하는 디버그 트리거 또는 디버그 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하는 단계를 포함하고, 상기 프로그래밍된 동작은 상기 모듈로 피드백하는 메인 동작 및 파이프라인화되는 미리-선택된 동작 중 하나이며,
    상기 디버그 트리거는 카운터가 매치 값에 매칭할 때 생성되는 카운트 매치 트리거, 클록 카운트가 매치 값과 매칭할 때 생성되는 클록 카운트 매치 트리거, 상기 모듈과 마이크로코드 사이에 통신하는 레지스터 내 플래그 비트, 랜덤 이벤트 생성기에 의해 생성되는 랜덤 이벤트 신호, 성능 모니터 신호, 인터럽트, 에러, 중지점, 디버그 버스 상의 데이터의 논리 또는 산술 비교에 기초하여 생성되는 디버그 데이터 기반 트리거 및 디버그 버스로부터 선택된 비트인 디버그 데이터 기반 트리거 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  16. 제12항에 있어서, 상기 디버그 트리거는 마이크로코드에 의해 생성되는 것인 방법.
  17. 제12항에 있어서, 저장 구조에 디버그 데이터를 저장하는 단계를 더 포함하는 방법.
  18. 제17항에 있어서, 상기 디버그 데이터를 저장하기 전에 상기 디버그 데이터에 필터 함수를 수행하는 단계를 더 포함하는 방법.
  19. 모듈의 거동 또는 구조를 기술하는 코드를 저장하는 비일시적인(non-transitory) 컴퓨터 판독가능한 저장 매체로서, 상기 모듈은,
    디버그 트리거를 수신하고 대응하는 디버그 트리거 또는 디버그 트리거 시퀀스가 발생하는 상태에서 프로그래밍된 동작을 개시하도록 구성되며,
    상기 프로그래밍된 동작은 상기 모듈로 피드백하는 메인 동작 및 파이프라인화되는 미리-선택된 동작 중 하나이며, 그리고
    상기 디버그 트리거는 카운터가 매치 값(match value)과 매칭할 때 생성되는 카운트 매치 트리거, 클록 카운트가 매치 값과 매칭할 때 생성되는 클록 카운트 매치 트리거, 상기 모듈과 마이크로코드 사이에 통신하는 레지스터 내의 플래그 비트(flag bit), 랜덤 이벤트 생성기(random event generator)에 의해 생성된 랜덤 이벤트 신호, 성능 모니터 신호, 인터럽트, 에러, 중지점(breakpoint), 디버그 버스(debug bus) 상의 데이터의 논리 또는 산술 비교에 기초하여 생성된 디버그 데이터 기반 트리거, 및 디버그 버스로부터 선택된 비트인 디버그 데이터 기반 트리거 중 적어도 하나를 포함하는 것을 특징으로 하는 비일시적인 컴퓨터 판독가능한 저장 매체.
  20. 제19항에 있어서,
    상기 코드는 하드웨어 설명 언어(HDL: hardware description language)로 기록되는 것을 특징으로 하는 비일시적인 컴퓨터 판독가능한 저장 매체.
KR1020137017093A 2010-12-02 2011-12-01 디버그 상태 기계 및 이를 포함하는 프로세서 KR101430218B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/958,585 US8566645B2 (en) 2010-12-02 2010-12-02 Debug state machine and processor including the same
US12/958,585 2010-12-02
PCT/US2011/062848 WO2012075260A1 (en) 2010-12-02 2011-12-01 Debug state machine and processor including the same

Publications (2)

Publication Number Publication Date
KR20130127477A KR20130127477A (ko) 2013-11-22
KR101430218B1 true KR101430218B1 (ko) 2014-08-18

Family

ID=45418783

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137017093A KR101430218B1 (ko) 2010-12-02 2011-12-01 디버그 상태 기계 및 이를 포함하는 프로세서

Country Status (6)

Country Link
US (1) US8566645B2 (ko)
EP (1) EP2646918B1 (ko)
JP (1) JP5543675B2 (ko)
KR (1) KR101430218B1 (ko)
CN (1) CN103299282B (ko)
WO (1) WO2012075260A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020041777A1 (en) * 2018-08-24 2020-02-27 Oracle International Corporation Scalable pre-analysis of dynamic applications

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007533A1 (en) * 2011-06-28 2013-01-03 Miller Gary L Data processing system having a sequence processing unit and method of operation
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US9377507B2 (en) * 2012-05-07 2016-06-28 Microchip Technology Incorporated Processor device with instruction trace capabilities
US9129061B2 (en) * 2012-07-25 2015-09-08 Advanced Micro Devices, Inc. Method and apparatus for on-chip debugging
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US8984347B2 (en) 2012-10-17 2015-03-17 Scaleo Chip Real-time trigger sequence checker
US9442815B2 (en) 2012-10-31 2016-09-13 Advanced Micro Devices, Inc. Distributed on-chip debug triggering with allocated bus lines
CN103885845A (zh) * 2012-12-21 2014-06-25 祥硕科技股份有限公司 集成电路的除错系统及其除错方法
KR20140083530A (ko) * 2012-12-26 2014-07-04 삼성전자주식회사 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법
US9208008B2 (en) * 2013-07-24 2015-12-08 Qualcomm Incorporated Method and apparatus for multi-chip reduced pin cross triggering to enhance debug experience
US20150073965A1 (en) * 2013-09-12 2015-03-12 Trillium Labs, LLC Compliance data management systems and methods
US9619214B2 (en) 2014-08-13 2017-04-11 International Business Machines Corporation Compiler optimizations for vector instructions
US9979774B2 (en) * 2014-09-23 2018-05-22 Flipboard, Inc. Debugging and formatting feeds for presentation based on elements and content items
US9588746B2 (en) 2014-12-19 2017-03-07 International Business Machines Corporation Compiler method for generating instructions for vector operations on a multi-endian processor
US10169014B2 (en) 2014-12-19 2019-01-01 International Business Machines Corporation Compiler method for generating instructions for vector operations in a multi-endian instruction set
TWI560552B (en) 2015-01-30 2016-12-01 Via Tech Inc Interface chip and control method therefor
US10127137B2 (en) * 2015-06-03 2018-11-13 Fengwei Zhang Methods and systems for increased debugging transparency
US9880821B2 (en) 2015-08-17 2018-01-30 International Business Machines Corporation Compiler optimizations for vector operations that are reformatting-resistant
US9594668B1 (en) 2015-09-04 2017-03-14 International Business Machines Corporation Debugger display of vector register contents after compiler optimizations for vector instructions
CN105740119A (zh) * 2016-01-29 2016-07-06 华为技术有限公司 一种芯片及芯片内多核的调试方法
CN106021041B (zh) * 2016-04-29 2020-01-03 中国科学技术大学 基于有限状态机的多周期非流水线cpu调试方法
CN106095631B (zh) * 2016-06-03 2020-01-03 中国科学技术大学 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
KR102400556B1 (ko) * 2016-12-12 2022-05-20 삼성전자주식회사 성능 및 디버그 모니터링을 위한 장치, 시스템 및 방법
US10691576B1 (en) * 2017-09-26 2020-06-23 Amazon Technologies, Inc. Multiple reset types in a system
US10642673B2 (en) 2018-01-02 2020-05-05 International Business Machines Corporation Hardware error detection on a high-speed serial connection
US10754759B1 (en) * 2018-02-05 2020-08-25 Xilinx, Inc. Breakpointing circuitry that evaluates breakpoint conditions while running clock to target circuit
US11335428B2 (en) 2018-10-09 2022-05-17 Intel Corporation Methods, systems and apparatus for in-field testing for generic diagnostic components
GB2580428B (en) * 2019-01-11 2021-08-25 Graphcore Ltd Handling exceptions in a machine learning processor
WO2020186518A1 (en) * 2019-03-21 2020-09-24 Hangzhou Fabu Technology Co. Ltd Method and apparatus for debugging, and system on chip
US11080400B2 (en) 2019-08-28 2021-08-03 Palo Alto Networks, Inc. Analyzing multiple CPU architecture malware samples
US11403110B2 (en) * 2019-10-23 2022-08-02 Texas Instruments Incorporated Storing a result of a first instruction of an execute packet in a holding register prior to completion of a second instruction of the execute packet
CN110929381B (zh) * 2019-10-25 2023-06-23 舞阳钢铁有限责任公司 直流调速装置参数优化方法
US20210173004A1 (en) * 2019-12-09 2021-06-10 Advanced Micro Devices, Inc. Debug state machine triggered extended performance monitor counter
CN112540288B (zh) * 2020-11-30 2023-02-21 海光信息技术股份有限公司 用于硅后芯片验证的方法、系统、设备以及存储介质
US11748221B2 (en) 2021-08-31 2023-09-05 International Business Machines Corporation Test error scenario generation for computer processing system components
CN116909794A (zh) * 2023-07-24 2023-10-20 中科驭数(北京)科技有限公司 异常状态信息的输出装置、方法、设备及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040250164A1 (en) 2003-05-22 2004-12-09 Infineon Technologies North America Corp. Configurable real-time trace port for embedded processors
US20050034017A1 (en) 2003-08-04 2005-02-10 Cedric Airaud Cross-triggering of processing devices
JP2008269390A (ja) 2007-04-23 2008-11-06 Texas Instr Japan Ltd プロセッサ

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5771240A (en) * 1996-11-14 1998-06-23 Hewlett-Packard Company Test systems for obtaining a sample-on-the-fly event trace for an integrated circuit with an integrated debug trigger apparatus and an external pulse pin
JP2000330852A (ja) * 1999-05-20 2000-11-30 Toshiba Corp 検索システムおよび記録媒体
US6502210B1 (en) * 1999-10-01 2002-12-31 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
JP2001109643A (ja) * 1999-10-06 2001-04-20 Matsushita Electric Ind Co Ltd デバッグ機能を内蔵したマイクロプロセッサ
US7013409B2 (en) * 2002-07-25 2006-03-14 Freescale Semiconductor, Inc. Method and apparatus for debugging a data processing system
US7107489B2 (en) * 2002-07-25 2006-09-12 Freescale Semiconductor, Inc. Method and apparatus for debugging a data processing system
JP2006164185A (ja) * 2004-12-10 2006-06-22 Matsushita Electric Ind Co Ltd デバッグ装置
US20070079288A1 (en) 2005-09-30 2007-04-05 Chad Willwerth System and method for capturing filtered execution history of executable program code
US7613955B2 (en) * 2006-01-06 2009-11-03 Microsoft Corporation Collecting debug data from a wireless device
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
JP2008250442A (ja) * 2007-03-29 2008-10-16 Fujitsu Microelectronics Ltd トリガ発生回路
US7770073B2 (en) * 2007-07-27 2010-08-03 International Business Machines Corporation Apparatus, system, and method for responsive acquisition of remote debug data
WO2011039570A1 (en) * 2009-09-30 2011-04-07 Freescale Semiconductor, Inc. Distributed debug system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040250164A1 (en) 2003-05-22 2004-12-09 Infineon Technologies North America Corp. Configurable real-time trace port for embedded processors
US20050034017A1 (en) 2003-08-04 2005-02-10 Cedric Airaud Cross-triggering of processing devices
JP2008269390A (ja) 2007-04-23 2008-11-06 Texas Instr Japan Ltd プロセッサ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020041777A1 (en) * 2018-08-24 2020-02-27 Oracle International Corporation Scalable pre-analysis of dynamic applications

Also Published As

Publication number Publication date
US8566645B2 (en) 2013-10-22
WO2012075260A1 (en) 2012-06-07
US20120144240A1 (en) 2012-06-07
KR20130127477A (ko) 2013-11-22
JP5543675B2 (ja) 2014-07-09
CN103299282B (zh) 2016-01-20
EP2646918B1 (en) 2017-03-08
JP2013545203A (ja) 2013-12-19
EP2646918A1 (en) 2013-10-09
CN103299282A (zh) 2013-09-11

Similar Documents

Publication Publication Date Title
KR101430218B1 (ko) 디버그 상태 기계 및 이를 포함하는 프로세서
US9830241B2 (en) Debug in a multicore architecture
US9336122B2 (en) Device having configurable breakpoint based on interrupt status
EP1805621B1 (en) Method and system for debugging a multi-threaded program executing in a multicore architecture
KR101078934B1 (ko) 개선된 디지털 신호 프로세서 디버깅 동작들을 위한 임베디드 트레이스 매크로셀
US6094729A (en) Debug interface including a compact trace record storage
JP6220863B2 (ja) リセット条件トレース能力を伴うプロセッサデバイス
US20060259823A1 (en) Determining operating context of an executed instruction
TWI416316B (zh) 用於產生資料處理設備之追蹤串流的技術
US20070011492A1 (en) Generation of trace data
JP6397815B2 (ja) 命令トレース能力を有するプロセッサデバイス
US20090058701A9 (en) Using A Chip as a Simulation Engine
JP2011100388A (ja) トレース情報収集装置,トレース情報処理装置,およびトレース情報収集方法
JP2007148754A (ja) 半導体集積回路装置
US20030233601A1 (en) Non-intrusive signal observation techniques usable for real-time internal signal capture for an electronic module or integrated circuit
US20060279443A1 (en) Trading Off Visibility for Volume of Data When Profiling Memory Events
Melear Emulation techniques for microcontrollers with internal caches and multiple execution units

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190718

Year of fee payment: 6