KR101019278B1 - 프로세서 명령어 세트 동작 모드를 비교하는 디버그 회로 - Google Patents

프로세서 명령어 세트 동작 모드를 비교하는 디버그 회로 Download PDF

Info

Publication number
KR101019278B1
KR101019278B1 KR1020097004853A KR20097004853A KR101019278B1 KR 101019278 B1 KR101019278 B1 KR 101019278B1 KR 1020097004853 A KR1020097004853 A KR 1020097004853A KR 20097004853 A KR20097004853 A KR 20097004853A KR 101019278 B1 KR101019278 B1 KR 101019278B1
Authority
KR
South Korea
Prior art keywords
instruction set
processor
operating mode
mode
instruction
Prior art date
Application number
KR1020097004853A
Other languages
English (en)
Other versions
KR20090051205A (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 KR20090051205A publication Critical patent/KR20090051205A/ko
Application granted granted Critical
Publication of KR101019278B1 publication Critical patent/KR101019278B1/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
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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/3628Software debugging of optimised code
    • 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/366Software debugging using diagnostics

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

프로세서는 2개 이상의 명령어 세트들을 실행하도록 동작하며, 각각의 명령어 세트는 다른 명령어 세트 동작 모드에서 실행된다. 각각의 명령어가 실행될때, 디버그 회로는 프로그래머에 의하여 전송된 목표 명령어 세트 동작 모드와 현재의 명령어 세트 동작 모드를 비교하며, 이들이 매치될때 경보 또는 지시자를 출력한다. 경보 또는 지시자는 부가적으로 명령어 어드레스가 미리 결정된 목표 어드레스 범위내에 있을때 트리거링될 수 있다. 경보 또는 지시자는 실행을 중지시키며 및/또는 프로세서의 외부 신호로서 출력되는 브레이크포인트 신호를 포함할 수 있다. 프로세서가 명령어 세트 동작 모드들의 매치를 검출하는 명령어 어드레스가 부가적으로 출력될 수 있다. 부가적으로 또는 대안적으로, 경보 또는 지시자는 추적 동작을 시작하거나 또는 중지시키는 것, 예외를 유발하는 것 또는 임의의 다른 공지된 디버거 기능을 포함할 수 있다.

Description

프로세서 명령어 세트 동작 모드를 비교하는 디버그 회로{DEBUG CIRCUIT COMPARING PROCESSOR INSTRUCTION SET OPERATING MODE}
본 발명은 일반적으로 프로세서 분야, 특히 프로세서 명령어 세트 동작 모드를 고려한 디버깅 회로를 통해 프로세서상의 코드를 디버깅하는 시스템 및 방법에 관한 것이다.
현대의 프로세서들은 매우 복잡한 시스템들이다. 대부분의 현대의 프로세서들은 다수의 실행 단계들을 각각 가진 순차 명령어들의 실행시 중복되는 파이프라인형 구조를 사용한다. "수퍼스칼라(superscalar)" 프로세서들로서 공지된 많은 프로세서들은 명령어를 병렬로 실행하기 위한 2개 이상의 개별 파이프라인들을 포함한다. 분기 명령어들로 인한 파이프라인의 스톨(stall)을 방지하기 위하여, 대부분의 프로세서들은 다양한 형태의 분기 예측을 사용하며, 이들 분기 예측은 분기들이 테이큰(taken)인 것으로 예측될때 명령어들을 추론적으로 페치하여 실행한다. 성능을 개선하기 위하여 많은 현대의 프로세서들은 논리적 레지스터 어드레스들을 대응하는 물리적 메모리 저장 레지스터들로부터 분리하는데, 이는 레지스터 리네이밍(Register Renaming)으로 공지되어 있다. 프로그램들, 예컨대 고속 메모리를 제공하기 위하여, 많은 프로세서들은 가상 어드레스 공간에서 코드를 실행하여, 데이 터가 메모리 계층(예컨대, 레지스터, 캐시, 주 메모리)사이를 이동할때 어드레스들을 하나 이상의 물리적 어드레스 공간들로 변환한다. 이러한 복잡성으로 인하여, 현대의 프로세서내에서 코드의 실행은 정확하게 추적하여 유효화(validate)하는 것을 매우 어렵게 한다. 특히, 변형(anomaly)은 디버그를 매우 어렵게 할 수 있다.
더욱이, 현대의 프로세서들상에서 실행되는 소프트웨어는 그 자체적으로 매우 복잡하다. RISC(Reduced Instruction Set Computing) 프로세서 아키텍처들의 출현으로 인하여, 많은 계산적 및 논리적 복잡성이 프로세서 명령어들로부터 최적화 컴파일러들로 확산되었다. 즉, 컴파일러들은 프로세서 명령어들의 비교적 작은 세트로부터 복잡한 연산들을 수립하였으며, 각각의 프로세서 명령어는 특별한 특정 기능을 위하여 최적화된다. 이는 예컨대 주어진 계산 작업(task)에 대하여 논리적, 산술적, 로드/저장 및 분기 동작들을 포함하는, 명령어들의 더 장황하고 복잡한 시퀀스를 유발한다. 이러한 복잡한 코드는 에러들이 비정상적 프로그램 동작을 유발할때 디버그하는 것을 곤란하게 할 수 있다.
복잡한 프로세서상에서 실행되는 복잡한 코드를 디버깅하기 위한 어려운 작업을 지원하기 위하여, 디버깅 도구들이 많은 프로세서들내에 구축된다. 이들은 특정 명령어들 및/또는 데이터 패턴들을 식별하는 어드레스 및 데이터 비교기들을 포함할 수 있다. 디버그 도구들은 디버깅 또는 추적(tracing)이 미리 결정된 코드 세그먼트들에 제한될 수 있도록 어드레스 범위 비교기들을 부가적으로 포함할 수 있다. 다른 디버그 도구들은 브레이크포인트들(breakpoint) 및/또는 추적 트리거들을 특정한 조건들을 특정할때 융통성을 제공하기 위하여 카운터들, 시퀀서들 등 을 포함할 수 있다. 추적 정보는 전용 버스와 같은 오프-칩(off-chip)을 통해 제공될 수 있거나 또는 전용 온-칩(on-chip) 버퍼에 저장될 수 있다. 브레이크포인트들은 논리 분석기를 활성화하고 및/또는 트리거링하거나 또는 LED를 조명하기 위하여 하나 이상의 외부 신호들을 트리거링할 수 있거나; 또는 예외(exception)를 유발하여 디버깅 루틴으로 코드 실행을 분기할 수 있거나; 또는 단순히 실행을 중지시켜서 다양한 레지스터들 및 캐시들의 콘텐츠들이 검사되도록 할 수 있다. 정상 프로세서 실행동안 이용되지 않는 이들 디버깅 도구들은 프로세서 성능 및 전력 소비에 대한 영향을 최소화하는 방식으로 프로세서 회로들내에 설계된다.
프로그래머들은 관련 명령어 세트 인코딩에 따라 명령어들을 실행하기전에 소프트웨어에 적절한 명령어 세트 동작 모드를 명시적으로 세팅한다. 그러나, 잘못된 소프트웨어(errant software)는 한 명령어 세트 동작 모드에 있으나 프로세서가 실제로 임의의 다른 명령어 세트 동작 모드에 있는 동안 실행되도록 의도된 특정 명령어 어드레스로 때때로 분기될 수 있다. 이러한 경우에, 프로세서는 부적절한 명령어 세트 디코딩을 사용하여 상기 어드레스에서 명령어를 실행하기 시작하여 부정확한 결과들을 유발할 수 있다.
예컨대, ARM 프로세서 아키텍처의 일부 버전들은 적어도 2개의 명령어 세트 동작 모드들, 즉 32-비트 ARM 모드 및 16-비트 Thumb 모드를 포함한다. 테이블 1은 ARM 명령어들의 코드 조각(Code Snippet)을 리스트한다.
Figure 112009014078429-pct00001
테이블 1: ARM 모드 명령어 인코딩
테이블 2는 Thumb 모드에서 해석된 동일한 코드를 리스트한다.
Figure 112009014078429-pct00002
테이블 2: Thumb 모드 명령어 인코딩
특히 96F2, 96FA, 및 96FE의 분기 명령어들에 유의하라. 잘못된 분기(erratic branching)로 인하여, 에러가 테이블 2에서처럼 Thumb 모드에서 해석될 테이블 1의 ARM 코드를 유발한 지점을 확인하여 에러를 디버그하는 것은 곤란할 수 있다. 이러한 곤란성은 종래의 디버그 회로들이 브레이크포인트들을 트리거링하고 추적들을 초기화하는 등등을 수행하는 로직에 대한 입력으로서 프로세서 명령어 세트 동작 모드를 포함하지 않기 때문에 발생한다.
수퍼바이저(supervisor) 및 사용자 모드들, 또는 실제 모드 및 보호 모드와 같은 2개 이상의 동작 "모드들"을 지원하는 대부분의 프로세서들은 예외를 유발하고 모드 스위칭 루틴으로 분기함으로서 모드들사이에서 스위칭한다. 이러한 동작은, 브레이크포인트를 세팅하거나 또는 모드 스위칭 루틴의 명령어 어드레스에서 추적을 시작함으로서, 종래의 디버깅 도구들 및 소프트웨어를 사용하여 용이하게 검출된다. 예외를 유발하지 않는 프로세서 스위칭 명령어 세트 동작 모드들은 종래의 디버깅 도구들을 사용하여 진단하는 것이 곤란한 코드 동작방식(code behavior)의 일례이며, 종래의 디버깅 도구들은 브레이크포인트들을 트리거링하고 추적들을 초기화하는 등등을 수행할때 고려대상으로서 프로세서 명령어 세트 동작 모드를 포함하지 않는다.
하나 이상의 실시예들에 따르면, 2개 이상의 명령어 세트들을 실행하도록 동작하는 프로세서의 디버그 회로는 프로세서가 하나의 명령어 세트 동작 모드로부터 다른 명령어 세트 동작 모드로 스위칭하는 어드레스를 식별하고, 모드 스위칭에 대한 경보 또는 지시를 출력한다. 경보 또는 지시는 실행을 중지시키고 및/또는 프로세서의 외부 신호로서 출력되는 브레이크포인트 신호를 포함할 수 있다. 프로세서가 명령어 세트 동작 모드들을 스위칭하는 명령어 어드레스는 부가적으로 출력될 수 있다. 대안적으로, 경보 또는 지시는 추적 동작을 시작하거나 또는 중지시키는 기능, 예외를 유발하는 기능 또는 임의의 다른 공지된 디버거 기능을 포함할 수 있다.
일 실시예는 적어도 2개의 다른 명령어 세트 동작 모드들을 가진 프로세서상에서 다수의 명령어들을 포함하는 소프트웨어 코드를 디버깅하는 방법에 관한 것이다. 목표 명령어 세트 동작 모드는 임의의 코드 명령어들을 실행하기전에 수신된다. 코드 명령어들은 실행되고, 실행되는 각각의 명령어에 대하여 현재의 프로세서 명령어 세트 동작 모드는 목표 명령어 세트 동작 모드와 비교된다. 경보는 현재의 프로세서 명령어 세트 동작 모드가 목표 명령어 세트 동작 모드와 매치되는 경우에 트리거링된다.
다른 실시예는 적어도 제 1 및 제 2 명령어 세트 동작 모드들을 가진 프로세서상에서 소프트웨어를 실행하는 방법에 관한 것이다. 프로세서가 제 1 명령어 세트 동작 모드로부터 제 2 명령어 세트 동작 모드로 스위칭하는 어드레스는 식별되고, 경보는 이러한 식별에 응답하여 트리거링된다.
또 다른 실시예는 2개 이상의 명령어 세트 인코딩들에 따라 명령어들을 실행하도록 동작하는 프로세서에 관한 것이며, 각각의 명령어 세트 인코딩은 다른 명령어 세트 동작 모드에서 실행된다. 프로세서는 목표 명령어 세트 동작 모드 지시자를 저장하도록 동작하는 데이터 저장 위치부와 현재의 명령어 세트 동작 모드 지시자를 포함한다. 프로세서는 또한 현재의 명령어 세트 동작 모드에 따라 명령어들을 실행하도록 동작하는 실행 유닛, 및 각각의 명령어의 실행시에 목표 명령어 세트 동작 모드와 현재의 명령어 세트 동작 모드를 비교하고 현재의 명령어 세트 동작 모드가 목표 명령어 세트 동작 모드와 매치되는 경우에 지시를 출력하도록 동작하는 비교 유닛을 포함한다.
또 다른 실시예는 2개 이상의 명령어 세트 인코딩들을 실행하도록 동작하는 프로세서에 관한 것이며, 각각의 명령어 세트 인코딩은 다른 명령어 세트 동작 모드에서 실행된다. 프로세서는 명령어 세트 동작 모드의 변경을 검출하고, 이 검출에 응답하여 명령어 세트 동작 모드 변경의 지시와 변경이 발생한 명령어 어드레스를 출력하도록 동작하는 비교 회로를 포함한다.
도 1은 프로세서의 기능 블록도이다.
도 2는 디버그 회로를 포함하는 프로세서 파이프라인의 기능 블록도이다.
도 3은 진단/디버그 프로세스의 흐름도이다.
도 1은 프로세서(10)의 기능 블록도를 도시한다. 프로세서(10)는 제어 로직(14)에 따라 명령어 실행 파이프라인(12)의 명령어들을 실행한다. 제어 로직(14)은 프로그램 카운터(PC)(15)를 유지하고, 예컨대 현재의 명령어 세트 동작 모드, 산술연산들의 결과들에 관한 정보, 및 논리 비교들(0(zero), 자리올림(carry), 동일(equal), 비동일(not equal)) 등을 지시하기 위하여 하나 이상의 상태 레지스터들(16)에 비트들을 세팅하고 클리어(clear)한다. 일부 실시예들에서, 파이프라인(12)은 다수의 병렬 파이프라인들을 가진 수퍼스칼라 설계를 가질 수 있다. 파이프라인(12)은 또한 실행 유닛으로서 지칭될 수 있다. 범용 레지스터(GPR: General Purpose Register) 파일(20)은 파이프라인(12)에 의하여 액세스 가능하고 메모리 계층의 상층을 포함하는 레지스터들을 제공한다.
다른 명령어 세트 동작 모드들에 적어도 2개의 명령어 세트들의 명령어들을 실행하는 프로세서(10)는 부가적으로 각각의 명령어의 실행시에 현재의 명령어 세트 동작 모드와 적어도 미리 결정된 목표 명령어 세트 동작 모드를 비교하고 이 두개의 모드간의 매치 지시를 제공하도록 동작하는 디버그 회로(18)를 포함한다. 디 버그 회로(18)는 이하에서 더 상세히 기술된다.
파이프라인(12)은 명령어 캐시(I-캐시)(26)로부터 명령어들을 페치하며, 여기서 명령어 어드레스 변환 및 허가들은 ITLB(Instruction-side Translation Lookaside Buffer)(28)에 의하여 관리된다. 데이터는 데이터 캐시(D-캐시)(30)로부터 액세스되며, 여기서 메모리 어드레스 변환 및 허가들은 주 TLB(Translation Lookaside Buffer)(32)에 의하여 관리된다. 다양한 실시예들에 있어서, ITLB(28)는 TLB(32)의 부분의 복사본(copy)을 포함할 수 있다. 대안적으로, ITLB(28) 및 TLB(32)는 집적될 수 있다. 유사하게, 프로세서(10)의 다양한 실시예들에서, I-캐시(26) 및 D-캐시(30)는 집적되거나 또는 통합될 수 있다. I-캐시(26) 및/또는 D-캐시(30)의 미스들(miss)은 메모리 인터페이스(34)에 의한, 주(오프-칩) 메모리(38, 40)의 액세스를 유발한다. 메모리 인터페이스(34)는 하나 이상의 메모리 장치들(38, 40)에 대한 공유 버스를 구현하는 버스 상호접속부(42)에 대한 마스터 입력일 수 있다. 부가적 마스터 장치들(도시안됨)은 부가적으로 버스 상호접속부(42)에 접속될 수 있다.
프로세서(10)는 주변 버스상의 마스터 장치일 수 있는 입력/출력(I/O) 인터페이스(44)를 포함할 수 있으며, 상기 주변 버스를 통해 I/O 인터페이스(44)는 다양한 주변 장치들(48, 50)을 액세스할 수 있다. 프로세서(10)의 다수의 변형들이 가능하다는 것을 인식할 것이다. 예컨대, 프로세서(10)는 I 및 D 캐시들(26, 30)중 하나 또는 모두에 대한 제 2 레벨(L2) 캐시를 포함할 수 있다. 더욱이, 프로세서(10)내에 도시된 기능 블록들 중 하나 이상은 특정 실시예에서 생략될 수 있다. JTAG 제어기, 명령어 프리디코더, 분기 목표 어드레스 캐시 등과 같이 프로세서(10)내에 있을 수 있는 다른 기능 블록들은 본 발명과 밀접한 관계가 없기 때문에 명확화를 위하여 생략된다.
도 2는 디버그 회로(18)의 일 실시예에 대한 기능 블록도를 도시한다. 디버그 회로(18)는 목표 명령어 세트 동작 모드 레지스터(52), 어드레스 범위 시작 어드레스 레지스터(54) 및 어드레스 범위 끝 어드레스 레지스터(56)를 포함한다. 레지스터들(52, 54, 56)은 진단/디버그 동작전에 진단 소프트웨어를 통해 프로그래머들에 의하여 로드된다. 목표 명령어 세트 동작 모드 레지스터(52)에 기록된 값은 브레이크포인트(breakpoint), 추적 기능(trace function) 또는 다른 경보(alert)를 트리거링하기 위하여 각각의 명령어의 실행동안 현재의 프로세서 명령어 세트 동작 모드와 비교된다. 시작 및 끝 어드레스 레지스터들(54, 56)의 값들은 각각 디버그 회로(18)가 현재 및 목표 명령어 세트 동작 모드들간의 매치 여부를 모니터링하는 목표 어드레스 범위의 시작과 끝이다.
당업자가 용이하게 인식하는 바와 같이, 디버그 회로(18)는 부가적 커스터마이징가능 파라미터들, 및 다양한 상태들을 트리거링하기 위하여 브레이크포인트들, 추적 등을 인에이블하는 부가적 기능 블록들을 포함할 수 있다. 이들은 명확화를 위하여 도 2에서 생략되었으나 일반적으로 공지된 모든 디버그 회로 파라미터들 및 기능들을 포함할 수 있다.
진단/디버그 실행전에, 프로그래머는 단일 어드레스로부터 테스트된 코드의 전체 어드레스 범위까지의 범위를 한정할 수 있는 목표 어드레스 영역을 한정하기 위하여 시작 및 끝 어드레스 레지스터들(54, 56)을 로드한다. 다른 실시예들에서, 다수의 시작 및 끝 어드레스 레지스터들은 다수의 목표 어드레스 범위들을 한정하기 위하여 제공될 수 있다. 프로그래머는 부가적으로 목표 명령어 세트 동작 모드 레지스터(52)를 로드한다. 예컨대, ARM 모드에서 완전히 코드를 실행하는 ARM 프로세서의 경우에, 프로그래머는 예컨대 만일 프로세서(10)가 Thumb 모드에서 레지스터들(54, 56)에 의하여 한정된 어드레스 범위내에서 명령어들을 실행하면 디버그 회로(18)가 실행을 중지하도록 하는 브레이크포인트를 세팅하기 위하여 Thumb 모드를 지시하는 값을 레지스터(52)에 로드할 수 있다.
진단/디버그 동작동안, 목표 명령어 세트 동작 모드 레지스터(52)에 저장된 값은 AND 게이트(58)와 같은 비교 로직(logic)에서 프로세서(10)의 현재 명령어 세트 동작 모드를 지시하는 상태 레지스터 비트와 비교된다. 예컨대, ARM 프로세서(10)에서, 현재 프로그램 상태 레지스터(CPSR)(16)의 비트 5는 모니터링될 수 있다. 비교 로직(58)의 출력(60)은 프로세서(10)의 현재 명령어 세트 동작 모드가 목표 명령어 세트 동작 모드 레지스터(52)에 의하여 지시된 명령어 세트 동작 모드와 매치될때만 어서트(assert)될 것이다.
프로세서(10)가 다른 명령어 세트 동작 모드들에서 2개 이상의 명령어 세트들의 명령어들을 실행하는 실시예들에서, 목표 명령어 세트 동작 모드 레지스터(52) 및 CPSR(또는 다른 상태 레지스터)(16)의 모드 지시자 비트들은 멀티-비트 값들을 포함할 것이며, 비교 로직(58)은 디코더들과 같은 부가 회로들을 포함할 수 있다. 다양한 실시예들에서, 현재의 명령어 세트 동작 모드의 다른 지시들은 명령어 디코딩 로직의 출력과 같은 CPSR(16) 대신에 이용될 수 있다.
동시에, PC(15)의 현재 값은 어드레스 비교 로직(68)의 어드레스 범위 레지스터들(54, 56)과 비교된다. 어드레스 비교 로직(68)의 출력(70)은 PC(15)의 현재 값이 목표 어드레스 범위내에 있을때마다 어서트된다. 다양한 실시예들에서, "현재의" 명령어 어드레스의 지시들은 필요에 따라 PC(15)로부터 변화할 수 있다. 예컨대, 어드레스 비교 회로(68)는 파이프라인(12)의 디코드 스테이지, 실행 스테이지 또는 임의의 다른 파이프라인 스테이지에서 명령어들의 어드레스를 비교할 수 있다. 부가적으로, 실행하기 위하여 파이프라인(12)의 마지막 명령어의 어드레스와 같은 더 많은 동적 어드레스가 사용될 수 있다.
어드레스 비교 로직(68)의 출력(70)은 목표 어드레스 범위내에서 발생하는 현재 및 목표 명령어 세트 동작 모드들간의 데이 매치(day match)를 지시하는 출력(20)을 생성하기 위하여 AND 게이트(72)에서 명령어 세트 동작 모드 지시자 비교 로직(58)의 출력(60)과 AND 연산된다. 일 실시예에서, 출력(20)은 프로세서에 대한 출력으로서 제공된다(도 1 참조). 이러한 출력(20)은 논리 분석기를 활성화 및/또는 트리거링하거나, 또는 LED를 조명하거나, 또는 임의의 다른 액션(action) 또는 알람(alarm)을 트리거링할 수 있다. 일 실시예에서, 도 1에 도시된 바와 같이, 명령어 세트 동작 모드 매치 지시자 출력(20)은 프로세서(10)의 실행을 중지시키기 위하여 제어기(14)에 대한 입력을 포함할 수 있다.
일 실시예에서, 명령어 세트 동작 모드 매치 지시자 출력(20)은 명령어 추적 동작을 초기화하거나 또는 종료할 수 있으며, 여기서 추적 정보는 프로세서(10)의 출력 핀들에 전송되거나 또는 온-칩 추적 버퍼(도시안됨)에 저장된다. 일 실시예에서, 도 2에 도시된 바와같이, 명령어 세트 동작 모드 매치 지시자 출력(20)은 명령어 세트 동작 모드 매치 어드레스 레지스터(74)를 트리거링하여 PC(15)의 값을 포착할 수 있으며, 따라서 매치될 수 있는 명령어의 어드레스는 현재 및 목표 명령어 세트 동작 모드들사이에서 검출된다. 이는 하나의 명령어 세트 동작 모드로부터 다른 명령어 세트 동작 모드로의 변경을 검출할때의 특정 값일 수 있다. 이러한 레지스터(74)의 출력(76)은 외부 검사를 위하여 프로세서(10)의 핀들로 라우팅될 수 있다.
일 실시예에서, 명령어 세트 동작 모드 매치 지시자 출력(20)은 예외를 유발하여 미리 결정된 루틴으로 코드 실행을 분기할 수 있다. 이러한 명령어 세트 모드 매치 루틴은 예컨대 명령어 세트 동작 모드 매치 어드레스 레지스터(74)를 판독할 수 있다. 일반적으로, 명령어 세트 동작 모드 매치 지시자 출력(20)은 필요에 따라 임의의 공지된 디버그 동작을 트리거링할 수 있다.
도 3은 본 발명의 하나 이상의 실시예들에 따라 코드를 디버그하는 방법을 도시한다. 블록(78)에서 시작하여, 프로그래머는 디버그 회로 레지스터들을 초기화한다(블록(80)). 이는 예컨대 목표 명령어 세트 동작 모드 레지스터(52)를 로드하는 단계, 및 시작 어드레스 레지스터(54) 및 끝 어드레스 레지스터(56)를 로드함으로서 목표 어드레스 범위를 세팅하는 단계를 포함할 수 있다. 부가 디버그 회로 레지스터들(도시안됨)은 필요에 따라 초기화될 수 있다.
그 다음에, 프로그래머는 디버그될 코드의 실행을 시작하여(82) 코드 시퀀스 에서 다음 명령어를 성공적으로 페치하여 실행할 수 있다. 어드레스와 관계없이, 만일 프로세서(10)의 현재의 명령어 세트 동작 모드가 프로그래머에 의하여 목표 명령어 세트 동작 모드 레지스터(52)에 세팅된 것과 매치되지 않으면, 다음 명령어는 디버그될 코드의 끝이 디버그될때까지(블록(88)) 페치되어 실행되며(블록(84)), 코드의 끝이 디버그된 경우에 방법은 블록(90)에서 중지한다.
만일 명령어를 실행할때 명령어 어드레스가 미리 결정된 어드레스 범위내에 있고 현재의 명령어 세트 동작 모드가 프로그래머에 의하여 목표 명령어 세트 동작 모드 레지스터(52)에 세팅된 것과 매치되면(블록(86)), 디버그 회로는 출력(20)을 어서트하며, 프로그래머에 의하여 지정된 바와같이 임의의 수의 액션(action)을 취할 수 있다.
예컨대, 디버그 회로 출력(20)은 프로세서(10)로 하여금 예외를 취하도록 하여 명령어 세트 동작 모드 매치 루틴으로 코드 예외를 분기할 수 있다(블록(92)). 디버그 회로 출력(20)은 파이프라인 제어기(14)가 실행을 중지하도록 하여(블록(94)) 프로그래머로 하여금 다양한 레지스터들, 캐시 라인들 등의 콘텐츠들을 검사할 수 있도록 한다. 디버그 회로(18)는 논리 분석기를 활성화 또는 트리거링하거나, 또는 LED를 조명하는 등을 수행하기 위하여 사용될 수 있는 출력(20)을 외부적으로 어서트할 수 있다(블록(96)). 디버그 회로(18)는 부가적으로 외부 검사를 위하여 명령어 세트 동작 모드 매치 어드레스를 출력할 수 있다(블록(98)). 디버그 회로(18)는 추적 동작을 시작하거나 또는 중지할 수 있다(블록(100)). 비록 대안으로서 도시될지라도, 디버그 회로(18)는 주어진 실시예에서 블록들(92-96)중 2 개 이상을 실행할 수 있다. 일반적으로, 디버그 회로(18)는 현재의 명령어 세트 동작 모드 및 목표 명령어 세트 동작 모드간의 매치를 검출한 경우에 프로세서(10)상에서 코드를 디버깅하는데 있어서 유리한 공지된 임의의 액션을 수행할 수 있다.
여기에서 사용된 바와같이, 용어 "명령어 세트"는 명령어 데이터(예컨대, I-캐시 라인의 콘텐츠들)가 실행가능 명령어들로서 프로세서(10)에 의하여 해석되는 인코딩들의 세트를 지칭한다. 용어 "명령어 세트 동작 모드"는 명령어 데이터가 특정 명령어 세트 인코딩에 따라 해석되는 프로세서(10)의 식별가능 동작 모드를 지칭한다. 특히, "명령어 세트 동작 모드"는 허가들(permission)(예컨대, 수퍼바이저 대 사용자 모드), 메모리 어드레싱(예컨대, 실제 모드 대 보호 모드) 등에 관한 공지된 프로세서 동작 "모드들"과 구별된다.
비록 본 발명이 특정 특징들, 양상들 및 이의 실시예들과 관련하여 여기에서 기술되었을지라도, 다수의 변형들, 수정들 및 다른 실시예들이 본 발명의 넓은 범위내에서 가능하며 따라서 모든 변형들, 수정들 및 실시예들이 본 발명의 범위내에 있는 것으로 간주 된다는 것이 명백할 것이다. 본 실시예들은 예시적인 것으로 모든 양상들에서 해석되고 첨부된 청구항들의 균등 범위는 여기에 포함된다.

Claims (28)

  1. 적어도 2개의 상이한 명령어 세트 동작 모드들을 가진 프로세서상에서 다수의 명령어들을 포함하는 소프트웨어 코드를 디버깅하는 방법으로서,
    임의의 코드 명령어들을 실행하기전에 목표 명령어 세트 동작 모드를 수신하는 단계;
    코드 명령어들을 실행하며, 실행되는 각각의 명령어에 대하여 상기 목표 명령어 세트 동작 모드와 현재의 프로세서 명령어 세트 동작 모드를 비교하는 단계; 및
    상기 현재의 프로세서 명령어 세트 동작 모드가 상기 목표 명령어 세트 동작 모드와 매치되는 경우에 경보(alert)를 트리거링하는 단계를 포함하는,
    소프트웨어 코드를 디버깅하는 방법.
  2. 제 1항에 있어서, 상기 경보는 명령어 실행을 중지시키는 것을 포함하는, 소프트웨어 코드를 디버깅하는 방법.
  3. 제 1항에 있어서, 상기 경보는 추적 동작(trace operation)을 제어하는 것을 포함하는, 소프트웨어 코드를 디버깅하는 방법.
  4. 제 1항에 있어서, 상기 경보는 예외를 유발하는 것을 포함하는, 소프트웨어 코드를 디버깅하는 방법.
  5. 제 1항에 있어서, 상기 경보는 상기 현재의 프로세서 명령어 세트 동작 모드와 상기 목표 명령어 세트 동작 모드간의 매치를 나타내는 신호를 출력하는 것을 포함하는, 소프트웨어 코드를 디버깅하는 방법.
  6. 제 1항에 있어서, 상기 경보는 상기 현재의 프로세서 명령어 세트 동작 모드가 상기 목표 명령어 세트 동작 모드와 매치되는 명령어의 어드레스를 출력하는 것을 포함하는, 소프트웨어 코드를 디버깅하는 방법.
  7. 제 1항에 있어서, 임의의 코드 명령어들을 실행하기전에 목표 어드레스 범위를 수신하는 단계;
    실행되는 각각의 명령어에 대하여, 상기 목표 어드레스 범위와 상기 현재의 명령어 어드레스를 비교하는 단계; 및
    단지 상기 현재의 프로세서 명령어 세트 동작 모드가 상기 목표 명령어 세트 동작 모드와 매치되고 상기 현재의 명령어 어드레스가 상기 목표 어드레스 범위내에 있는 경우에만 상기 경보를 트리거링하는 단계를 더 포함하는, 방법.
  8. 적어도 제 1 및 제 2 명령어 세트 동작 모드들을 가진 프로세서상에서 소프트웨어를 실행하는 방법으로서,
    상기 프로세서가 상기 제 1 명령어 세트 동작 모드로부터 상기 제 2 명령어 세트 동작 모드로 스위칭하는 어드레스를 식별하는 단계; 및
    상기 식별에 응답하여 경보를 트리거링하는 단계를 포함하는,
    소프트웨어 실행 방법.
  9. 제 8항에 있어서, 상기 경보는 명령어 실행을 중지시키는 것을 포함하는, 소프트웨어 실행 방법.
  10. 제 8항에 있어서, 상기 경보는 추적 동작(trace operation)을 제어하는 것을 포함하는, 소프트웨어 실행 방법.
  11. 제 8항에 있어서, 상기 경보는 예외를 유발하는 것을 포함하는, 소프트웨어 실행 방법.
  12. 제 8항에 있어서, 상기 경보는 명령어 세트 동작 모드의 변경을 나타내는 신호를 출력하는 것을 포함하는, 소프트웨어 실행 방법.
  13. 제 8항에 있어서, 상기 경보는 상기 식별된 명령어의 어드레스를 출력하는 것을 포함하는, 소프트웨어 실행 방법.
  14. 제 8항에 있어서, 상기 프로세서가 상기 제 1 명령어 세트 동작 모드로부터 상기 제 2 명령어 세트 동작 모드로 스위칭하는 어드레스를 식별하는 상기 단계는 단지 상기 어드레스가 미리 결정된 어드레스 범위내에 있는 경우에만 상기 어드레스를 식별하는 단계를 포함하는, 소프트웨어 실행 방법.
  15. 2개 이상의 명령어 세트 인코딩들― 각각의 명령어 세트 인코딩은 상이한 명령어 세트 동작 모드에서 실행됨―에 따라 명령어들을 실행하도록 동작하는 프로세서로서,
    현재의 명령어 세트 동작 모드 지시자(indicator);
    목표 명령어 세트 동작 모드 지시자를 저장하도록 동작하는 데이터 저장 위치부;
    현재의 명령어 세트 동작 모드에 따라 명령어들을 실행하도록 동작하는 실행 유닛; 및
    각각의 명령어의 실행시에 상기 목표 명령어 세트 동작 모드와 상기 현재의 명령어 세트 동작 모드를 비교하고 상기 현재의 명령어 세트 동작 모드가 상기 목표 명령어 세트 동작 모드와 매치되는 경우에 지시(indication)를 출력하도록 동작하는 비교 회로를 포함하는,
    프로세서.
  16. 제 15항에 있어서, 상기 지시는 명령어 실행을 중지하도록 동작하는 신호를 포함하는, 프로세서.
  17. 제 15항에 있어서, 상기 지시는 추적 동작을 제어하도록 동작하는 신호를 포함하는, 프로세서.
  18. 제 15항에 있어서, 상기 지시는 예외를 유발하도록 동작하는 신호를 포함하는, 프로세서.
  19. 제 15항에 있어서, 상기 지시는 상기 현재의 명령어 세트 동작 모드가 상기 목표 명령어 세트 동작 모드와 매치된다는 것을 지시하는 신호를 포함하는, 프로세서.
  20. 제 15항에 있어서, 상기 지시는 상기 현재의 명령어 세트 동작 모드 및 상기 목표 명령어 세트 동작 모드간의 매치가 검출될때 실행되는 명령어의 어드레스를 포함하는, 프로세서.
  21. 제 15항에 있어서, 목표 어드레스 범위를 저장하도록 동작하는 데이터 저장 위치부를 더 포함하며, 상기 비교 회로는 단지 상기 현재의 명령어 세트 동작 모드가 상기 목표 명령어 세트 동작 모드와 매치되고 현재 실행되고 있는 명령어의 어드레스가 상기 목표 어드레스 범위내에 있는 경우에만 지시를 출력하도록 동작하는, 프로세서.
  22. 2개 이상의 명령어 세트 인코딩들 ― 상기 각각의 명령어 세트 인코딩은 상이한 명령어 세트 동작 모드에서 실행됨 ―을 실행하도록 동작하는 프로세서로서,
    상기 명령어 세트 동작 모드의 변경을 검출하고, 상기 검출에 응답하여 상기 명령어 세트 동작 모드 변경의 지시와 상기 변경이 발생한 명령어 어드레스를 출력하도록 동작하는 비교 회로를 포함하는,
    프로세서.
  23. 제 22항에 있어서, 상기 지시는 명령어 실행을 중지하도록 동작하는 신호를 포함하는, 프로세서.
  24. 제 22항에 있어서, 상기 지시는 추적 동작을 제어하도록 동작하는 신호를 포함하는, 프로세서.
  25. 제 22항에 있어서, 상기 지시는 예외를 유발하도록 동작하는 신호를 포함하는, 프로세서.
  26. 제 22항에 있어서, 상기 지시는 명령어 세트 동작 모드의 변경을 지시하는 신호를 포함하는, 프로세서.
  27. 제 22항에 있어서, 상기 지시는 상기 명령어 세트 동작 모드 변경 어드레스를 포함하는, 프로세서.
  28. 제 22항에 있어서, 상기 비교 회로는 변경이 미리 결정된 어드레스 범위내에 있을때만 상기 명령어 세트 동작 모드의 변경을 검출하는, 프로세서.
KR1020097004853A 2006-08-09 2007-08-03 프로세서 명령어 세트 동작 모드를 비교하는 디버그 회로 KR101019278B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/463,379 2006-08-09
US11/463,379 US8352713B2 (en) 2006-08-09 2006-08-09 Debug circuit comparing processor instruction set operating mode

Publications (2)

Publication Number Publication Date
KR20090051205A KR20090051205A (ko) 2009-05-21
KR101019278B1 true KR101019278B1 (ko) 2011-03-07

Family

ID=38891045

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097004853A KR101019278B1 (ko) 2006-08-09 2007-08-03 프로세서 명령어 세트 동작 모드를 비교하는 디버그 회로

Country Status (13)

Country Link
US (1) US8352713B2 (ko)
EP (2) EP2054808B1 (ko)
JP (2) JP5546859B2 (ko)
KR (1) KR101019278B1 (ko)
CN (2) CN106909501B (ko)
BR (1) BRPI0715163B1 (ko)
CA (1) CA2658829C (ko)
ES (1) ES2588185T3 (ko)
HU (1) HUE029441T2 (ko)
IN (1) IN2014MN01895A (ko)
MX (1) MX2009001458A (ko)
RU (1) RU2429525C2 (ko)
WO (1) WO2008021763A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170919B2 (en) 2012-09-07 2015-10-27 Samsung Electronics Co., Ltd. Apparatus and method for detecting location of source code error in mixed-mode program

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2864655B1 (fr) * 2003-12-31 2006-03-24 Trusted Logic Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution
US7555605B2 (en) * 2006-09-28 2009-06-30 Freescale Semiconductor, Inc. Data processing system having cache memory debugging support and method therefor
US20080162900A1 (en) * 2006-12-29 2008-07-03 Andre Rolfsmeier System, Method and Apparatus for Observing a Control Device
CN101777021B (zh) * 2010-01-21 2012-07-04 龙芯中科技术有限公司 微处理器中精确数据断点的实现装置及其方法
WO2011089478A1 (en) * 2010-01-25 2011-07-28 Freescale Semiconductor, Inc. Debugger system, method and computer program product for debugging instructions
GB2482701C (en) 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
GB2483906C (en) * 2010-09-24 2019-10-09 Advanced Risc Mach Ltd Selection of debug instruction set for debugging of a data processing apparatus
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
CN104335220B (zh) * 2012-03-30 2018-04-20 爱迪德技术有限公司 用于防止和检测安全威胁的方法和系统
JP2014085859A (ja) * 2012-10-24 2014-05-12 Renesas Electronics Corp 半導体集積回路装置
US9268563B2 (en) * 2012-11-12 2016-02-23 International Business Machines Corporation Verification of a vector execution unit design
EP3014452B1 (en) 2013-06-27 2019-06-05 Intel Corporation Tracking mode of a processing device in instruction tracing systems
GB2527088B (en) * 2014-06-11 2021-07-14 Advanced Risc Mach Ltd Executing debug program instructions on a target apparatus processing pipeline
US9626267B2 (en) * 2015-01-30 2017-04-18 International Business Machines Corporation Test generation using expected mode of the target hardware device
US11269640B2 (en) * 2017-02-13 2022-03-08 Qualcomm Incorporated Speculative transitions among modes with different privilege levels in a block-based microarchitecture
US10169196B2 (en) * 2017-03-20 2019-01-01 Microsoft Technology Licensing, Llc Enabling breakpoints on entire data structures
US10534881B2 (en) * 2018-04-10 2020-01-14 Advanced Micro Devices, Inc. Method of debugging a processor
US10740220B2 (en) * 2018-06-27 2020-08-11 Microsoft Technology Licensing, Llc Cache-based trace replay breakpoints using reserved tag field bits
US11468199B2 (en) 2020-07-22 2022-10-11 Apple Inc. Authenticated debug for computing systems
US11436187B2 (en) * 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
CN113127285B (zh) * 2021-06-17 2021-10-08 北京燧原智能科技有限公司 一种错误数据调试方法、装置、芯片及计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5680620A (en) * 1995-06-30 1997-10-21 Dell Usa, L.P. System and method for detecting access to a peripheral device using a debug register
US7137110B1 (en) * 1999-01-28 2006-11-14 Ati International Srl Profiling ranges of execution of a computer program

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06202907A (ja) 1993-01-06 1994-07-22 Hitachi Ltd デバッグ支援装置
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US6408386B1 (en) * 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
JP3623840B2 (ja) * 1996-01-31 2005-02-23 株式会社ルネサステクノロジ データ処理装置及びマイクロプロセッサ
US5963737A (en) * 1996-04-18 1999-10-05 International Business Machines Corporation Interupt vectoring for trace exception facility in computer systems
DE19701166A1 (de) * 1997-01-15 1998-07-23 Siemens Ag Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
JPH11338710A (ja) * 1998-05-28 1999-12-10 Toshiba Corp 複数種の命令セットを持つプロセッサのためのコンパイル方法ならびに装置および同方法がプログラムされ記録される記録媒体
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6430674B1 (en) * 1998-12-30 2002-08-06 Intel Corporation Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time
US7013456B1 (en) * 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6826748B1 (en) * 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7065633B1 (en) * 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6449712B1 (en) * 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US7793261B1 (en) * 1999-10-01 2010-09-07 Stmicroelectronics Limited Interface for transferring debug information
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6609247B1 (en) * 2000-02-18 2003-08-19 Hewlett-Packard Development Company Method and apparatus for re-creating the trace of an emulated instruction set when executed on hardware native to a different instruction set field
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US7093108B2 (en) 2001-02-01 2006-08-15 Arm Limited Apparatus and method for efficiently incorporating instruction set information with instruction addresses
US6760864B2 (en) * 2001-02-21 2004-07-06 Freescale Semiconductor, Inc. Data processing system with on-chip FIFO for storing debug information and method therefor
US6901583B1 (en) * 2001-07-19 2005-05-31 Hewlett-Packard Development Company, L.P. Method for testing of a software emulator while executing the software emulator on a target machine architecture
US7865948B1 (en) * 2001-12-03 2011-01-04 Advanced Micro Devices, Inc. Method and apparatus for restricted execution of security sensitive instructions
US7017030B2 (en) * 2002-02-20 2006-03-21 Arm Limited Prediction of instructions in a data processing apparatus
JP2003256237A (ja) 2002-02-27 2003-09-10 Toshiba Corp 割り込み発生装置、割り込み発生方法および割り込み発生プログラム
GB0225649D0 (en) * 2002-11-04 2002-12-11 Transitive Technologies Ltd Incremental validation
WO2004049152A1 (en) * 2002-11-26 2004-06-10 Mplicity Ltd. A processor capable of multi-threaded execution of a plurality of instruction-sets
CN1216327C (zh) * 2003-05-15 2005-08-24 复旦大学 采用双指令集的32位嵌入式微处理器
EP1628235A1 (en) * 2004-07-01 2006-02-22 Texas Instruments Incorporated Method and system of ensuring integrity of a secure mode entry sequence
US7958335B2 (en) * 2005-08-05 2011-06-07 Arm Limited Multiple instruction set decoding
US7757221B2 (en) * 2005-09-30 2010-07-13 Intel Corporation Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5680620A (en) * 1995-06-30 1997-10-21 Dell Usa, L.P. System and method for detecting access to a peripheral device using a debug register
US7137110B1 (en) * 1999-01-28 2006-11-14 Ati International Srl Profiling ranges of execution of a computer program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170919B2 (en) 2012-09-07 2015-10-27 Samsung Electronics Co., Ltd. Apparatus and method for detecting location of source code error in mixed-mode program

Also Published As

Publication number Publication date
RU2009108321A (ru) 2010-09-20
US8352713B2 (en) 2013-01-08
WO2008021763A1 (en) 2008-02-21
US20080040587A1 (en) 2008-02-14
CN106909501B (zh) 2021-02-05
RU2429525C2 (ru) 2011-09-20
CA2658829A1 (en) 2008-02-21
IN2014MN01895A (ko) 2015-07-10
EP3009936A1 (en) 2016-04-20
CN101501650A (zh) 2009-08-05
CN101501650B (zh) 2016-12-07
EP2054808A1 (en) 2009-05-06
JP2013058217A (ja) 2013-03-28
JP5546859B2 (ja) 2014-07-09
JP2010500661A (ja) 2010-01-07
ES2588185T3 (es) 2016-10-31
JP5788370B2 (ja) 2015-09-30
MX2009001458A (es) 2009-02-19
BRPI0715163B1 (pt) 2023-05-09
KR20090051205A (ko) 2009-05-21
EP2054808B1 (en) 2016-05-25
BRPI0715163A2 (pt) 2013-06-11
HUE029441T2 (en) 2017-02-28
CA2658829C (en) 2016-01-05
CN106909501A (zh) 2017-06-30

Similar Documents

Publication Publication Date Title
KR101019278B1 (ko) 프로세서 명령어 세트 동작 모드를 비교하는 디버그 회로
US6205560B1 (en) Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
US6754856B2 (en) Memory access debug facility
US8261047B2 (en) Qualification of conditional debug instructions based on address
US5838897A (en) Debugging a processor using data output during idle bus cycles
JP5905911B2 (ja) シングルステップ実行を用いる診断コード
US20070079177A1 (en) Process monitoring and diagnosis apparatus, systems, and methods
US11625316B2 (en) Checksum generation
JP2646957B2 (ja) キャッシュ内蔵マイクロプロセッサ及びそのトレースシステム
Vranken Debug facilities in the TriMedia CPU64 architecture
GB2393272A (en) Controlling performance counters within a data processing system
JPH0528002A (ja) マイクロプロセツサ
Zhou et al. A. Summary of the Work
JPH04319741A (ja) デバッグサポート機能を有するマイクロプロセッサ

Legal Events

Date Code Title Description
A201 Request for 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: 20140129

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 9