KR100439781B1 - 데이터프로세서와그동작방법,그디버깅동작실행방법및그중단점값수정방법 - Google Patents

데이터프로세서와그동작방법,그디버깅동작실행방법및그중단점값수정방법 Download PDF

Info

Publication number
KR100439781B1
KR100439781B1 KR1019960036223A KR19960036223A KR100439781B1 KR 100439781 B1 KR100439781 B1 KR 100439781B1 KR 1019960036223 A KR1019960036223 A KR 1019960036223A KR 19960036223 A KR19960036223 A KR 19960036223A KR 100439781 B1 KR100439781 B1 KR 100439781B1
Authority
KR
South Korea
Prior art keywords
signal
breakpoint
data
value
address
Prior art date
Application number
KR1019960036223A
Other languages
English (en)
Other versions
KR970012145A (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 KR970012145A publication Critical patent/KR970012145A/ko
Application granted granted Critical
Publication of KR100439781B1 publication Critical patent/KR100439781B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

중앙 처리 장치(2)와 디버그 모듈(10)은 데이터 프로세서가 특수 디버그 모드에서 동작할 필요 없이 동시 동작들을 실행한다. 코어(9)와 디버그 모듈(10)간에 데이터, 어드레스, 및 제어 정보를 통신하기 위한 버스(25)의 사용은 디버그 모듈(10)로 하여금 중앙 처리 장치(2)와 동일한 내부 레지스터들과 메모리 위치들을 액세스할 수 있도록 한다. 디버그 모듈(10)과 중앙 처리 장치(2)는 모두 동일한 내부 레지스터들 및 메모리 위치들을 액세스하는 능력을 갖지만, 중앙 처리 장치(2)는 다수의 제어 레지스터들(40)의 CSR(도 8)에서 디버그 레지스터에 대한 프로세서 기록 금지(IPW) 비트가 설정될 때 다수의 중단점 레지스터들(50)에 저장된 값을 수정하지 않을 수도 있다. IPW 비트는 외부 개발 시스템(7)에 의해 제공된 명령에 의해서만 수정될 수 있다.

Description

데이터 프로세서와 그 동작 방법, 그 디버깅 동작 실행 방법 및 그 중단점 값 수정 방법
본 발명의 분야
본 발명은 일반적으로 데이터 처리 시스템에 관한 것으로, 특히, 데이터 처리 시스템에서 디버그 기능을 수행하기 위한 방법 및 장치에 관한 것이다.
본 발명의 배경
데이터 처리 시스템이 설계된 대로 동작하는데 실패하였을 때, 그 실패의 원인을 식별하기 위해 다양한 분석 기술들이 사용될 수 있다. 일반적으로, 실패한 회로의 분리와 실패한 소프트웨어 프로그램들의 정정을 돕기 위해 데이터 처리 시스템 내에는 트레이스 기능들과 중단점 기능들(trace functions and breakpoint functions)이 구현된다.
트레이스 기능들은 외부 사용자로 하여금 데이터 처리 동작 실행의 중간 결과들을 관측할 수 있도록 하기 위한 수단을 제공한다. 트레이스 기능들은 일반적으로 소프트웨어 프로그램의 각 명령 또는 소정 그룹의 명령들이 데이터 처리 시스템에 의해 실행된 후의 데이터 처리 시스템에 포함된 선택된 레지스터들 및 메모리의 상태를 제공한다. 선택된 레지스터들과 메모리의 상태를 반영함으로써, 트레이스 기능은 외부 사용자에게 데이터 프로세서 또는 데이터 처리 시스템의 내부 프로그래밍 모델에 대한 매우 상세한 정보를 제공한다. 이 정보에 의해, 많은 종류의 에러들은 데이터 처리 시스템에서 에러가 발생한 소프트웨어 코드나 잘못된 회로들을 식별하여 분리하기 위한 방법을 제공한다. 실제로 중단점 기능은 사전에 프로그램된 이벤트가 발생하는 곳에서 소프트웨어 프로그램의 중단을 야기한다. 그러면 소프트웨어 프로그램의 상태를 결정하기 위해 데이터가 검색된다. 트레이스 기능과 같이, 중단점 기능은 외부 사용자로 하여금 선택된 레지스터들 및 메모리 각각의 상태를 확인할 수 있도록 하여 데이터 처리 에러들이 식별될 수 있도록 한다.
트레이스 기능과 중단점 기능은 현재 이용 가능한 데이터 처리 시스템에 일체로 되어 상술된 분리 및 식별 능력들을 제공한다. 예를 들어, 캘리포니아 산타클라라 소재의 인텔사의 i960 Jx 마이크로프로세서는 트레이스 이벤트들과 트레이스 실패들을 발생하는 내부 중단점 레지스터들을 갖는 집적 회로의 마이크로프로세서이다. i960 Jx 마이크로프로세서에 있어서, 내부 중단점 레지스터들은 명령 실행 어드레스들 또는 다양한 형태의 데이터 액세스들의 어드레스들에서의 트래핑(trapping)에 전용된다. i960 Jx 마이크로프로세서의 트레이스 기능을 사용하기 위하여, 마이크로프로세서를 사용하는 소프트웨어는 실패 처리 절차들 또는 디버깅 모니터 프로그램과의 인터페이스를 제공해야 한다. 소프트웨어는 또한 다양한 트레이스 모드들을 가능하게 하고 트레이스 기능을 선택적으로 가능 또는 불가능하게 하기 위해 여러 개의 레지스터들 및 제어 비트들을 연산하도록 요구된다.
유사하게, 캘리포니아 산타클라라 소재의 인텔사의 80486 마이크로프로세서는 내부 중단점 레지스터들을 갖고 트레이스 기능을 수행할 수 있는 집적 회로의 마이크로프로세서이다. 80486 마이크로프로세서에 있어서 중단점 명령은 내부 소프트웨어 디버그 장치들에 의한 사용을 위해 실행되며, 내부 소프트웨어는 단순히 데이터 처리 시스템에서 실행 중인 소프트웨어를 칭한다. 일반적인 동작 중에 소프트웨어 디버그 프로그램은 실행되는 소프트웨어 코드의 형태에 따라 요구되는 모든중단점들에서 중단점 명령을 실행할 수도 있다. 80486 마이크로프로세서는 또한 트랩(trap) 루틴이 실행된 후 인터럽트를 실행하는 단일 단계의 트랩 기능을 실행하기 위한 메카니즘을 제공한다.
i960 Jx 마이크로프로세서와 80486 마이크로프로세서가 중단점 및 트레이스 기능들을 일체로 하면서, 마이크로프로세서들의 디버그 기능이 마이크로프로세서들이 정상 동작을 일시 중단하고 특수 디버그 예외 루틴으로 들어가는 것을 요구한다. 디버그 예외 루틴 중 마이크로프로세서들은 정상 동작 동안과 같이 기능하지 않으며, 따라서, 회로 또는 소프트웨어의 실패들은 유사한 방법으로 발생하지 않을 수도 있다. 결과적으로, 실시간의 실패 조건들이 실제로 발생하지 않을 때, 외부 사용자는 마이크로 프로세서 내에서 실패의 근본 원인을 구분하여 분리시킬 수 없을 수도 있다.
또한, i960 Jx 마이크로프로세서와 80486 마이크로프로세서 모두는 중단점 및 트레이스 기능들 중 프로그램의 제어를 제공하기 위해 마이크로프로세서에 의해 실행되는 외부 소프트웨어 디버그 프로그램을 필요로 한다. 이와 같은 디버그 제어의 사용은 오버헤드의 상당량을 요구하는 디버깅의 매우 강제적인 방법을 제공한다. 또한, 디버그 소프트웨어의 사용은 결함이 있는 회로 또는 실패한 마이크로프로세서 내 시퀀스의 정확한 반영(true reflection)을 제공하지 않을 수도 있다.
따라서, 데이터 프로세서에 대해 실시간 트레이스 및 실시간 디버그 기능들을 제공할 필요가 있다. 트레이스 및 디버그 기능들 모두는 특수 디버그 동작 모드가 아닌 정상 동작 중의 데이터 프로세서의 동작을 반영하는 방법으로 실행되며, 외부 사용자는 데이터 프로세서의 회로 및 소프트웨어에서의 실패들을 보다 정확하게 식별하고 정정할 것이다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템을 도시하는 블럭도.
도 2는 도 1의 데이터 처리 시스템의 디버그 모듈의 한 부분을 도시하는 블럭도.
도 3은 도 2의 디버그 모듈의 중단점(breakpoint) 회로를 도시하는 블럭도.
도 4는 도 2의 디버그 모듈의 다수의 제어 레지스터들을 도시하는 블럭도.
도 5는 도 2의 다수의 하드웨어 중단점 레지스터들을 도시하는 블럭도.
도 6은 도 5의 다수의 하드웨어 중단점 레지스터들의 어드레스 속성 중단점 레지스터를 도시하는 블럭도.
도 7은 도 4의 다수의 제어 레지스터들의 트리거(trigger) 정의 레지스터를 도시하는 블럭도.
도 8은 도 4의 다수의 제어 레지스터들의 구성 상태 레지스터를 도시하는 블럭도.
도 9는 도 2의 디버그 모듈의 다수의 중단점 신호들의 출력을 도시하는 도면.
도 10은 도 2의 디버그 모듈의 다수의 프로세서 상태 신호들의 출력을 도시하는 도면.
도 11은 본 발명의 일 실시예에 따른 파이프라인 타이밍(pipeline timing)예를 도시하는 도면.
도 12는 도 1의 데이터 처리 시스템의 중앙 처리 장치의 일부분을 도시하는 블럭도.
* 도면에 사용된 주요 부호의 설명 *
2 : 중앙 처리 장치(CPU) 3 : 데이터 프로세서
4 : 메모리 관리 유닛(MMU)/제어기
5 : 데이터 처리 시스템 6 : 메모리
7 : 외부 개발 시스템 8 : 시스템 버스 제어기
9 : 코어(Core) 10 : 디버그 모듈
12,13 : 슬레이브 모듈 14 : 마스터 모듈
15 : 제어 버스 20,60 : 제어 회로
25 : K-버스 30 : 직렬 인터페이스
32 : 레지스터 40 : 제어 레지스터
50 : 하드웨어 중단점 레지스터 80 : 멀티플렉서
100 : 중단점 회로 130, 135, 140, 180 : 비교기
125 : 임시 PC 레지스터 170 : 임시 데이터 레지스터
바람직한 실시예의 설명
본 발명은 특수 동작 모드의 필요 없이 실시간으로 중단점 기능 및 트레이스 기능 모두를 제공할 수 있는 데이터 처리 시스템을 제공한다. 부가적으로, 중단점 및 트레이스 기능은, 외부 어드레스 버스 또는 외부 데이터 버스를 통해 어드레스 및 데이터 정보를 제공하기 위해 데이터 프로세서가 시험될 필요 없이, 데이터 처리 시스템에 의해 실행될 수도 있다. 외부 버스들로부터의 이러한 독립은 본 발명이 크기, 형태, 프로토콜, 또는 심지어는 외부 버스의 존재와 무관하게 다양한 데이터 프로세서 시스템에 적용될 수 있는 효율적인 디버깅 메카니즘을 제공할 수 있도록 한다.
또한, 본 발명은 트레이스 및 중단점 기능들을 실시간으로 수행하기 위한 구조와 방법을 제공한다. 시험되는 데이터 프로세서는 전형적으로, 트레이스 및 중단점 기능들이 실행되기 전에, 동작을 중단 또는 수정 동작이 요구되지는 않는다. 따라서, 본 발명은 데이터 프로세서가 디버깅 동작들을 위한 특수 모드가 아닌 정상적으로 동작하는 동안, 외부 사용자가 실패를 분리할 수 있도록 한다. 또한, 본 발명은 실시간 트레이스 또는 실시간 디버그 동작 실행시 외부 사용자에게 데이터를 직접 제공한다. 트레이스 기능 또는 디버그 기능을 수행하기 위해 외부 소프트웨어모니터 프로그램 또는 외부 에뮬레이터를 필요로 하는 종래의 장치들과는 다르게, 본 발명은 데이터 프로세서의 현재 동작을 나타내는 데이터를 외부 사용자에게 제공한다. 따라서, 본 발명은 데이터 프로세서를 중대하게 간섭하거나 해로운 영향을 미치지 않고 트레이스 및 디버그 기능을 제공한다. 본 발명의 동작은 이하 보다 상세하게 설명된다.
다음의 설명에 있어서, 본 발명을 실현하는 데이터 처리 시스템의 일 실시예의 접속성(connectivity) 및 동작이 보다 상세하게 설명된다.
본 발명의 접속성
본 발명의 상호 통신성의 다음의 설명에 있어서, 데이터, 어드레스, 제어 또는 상태와 같은 하나 이상의 다양한 형태의 정보를 전송하기 위해 사용될 수 있는 다수의 신호들 또는 컨덕터들을 참조하여 용어 "버스(bus)"가 사용될 것이다. "표명(assert)" 및 "부정(negate)"은 신호, 상태 비트 또는 유사한 장치를 각각 논리적 참 상태 또는 논리적 거짓 상태로 표현할 때 참조하기 위해 사용된다. 논리적 참 상태가 논리 레벨 1이면, 논리적 거짓 상태는 논리 레벨 0이다. 또한, 논리적 참 상태가 논리 레벨 0이면, 논리적 거짓 상태는 논리 레벨 1이다.
또한, 숫자에 선행한 기호 "$"는 그 숫자가 16진수로 표현되었음을 나타낸다. 숫자에 선행한 기호 "%"는 그 숫자가 2진수로 표현되었음을 나타낸다.
이제 도 1을 참조하여, 본 발명의 일 실시예에 따른 데이터 처리 시스템(5)을 예시한다. 데이터 처리 시스템(5)은 데이터 프로세서(3)와 외부 개발 시스템(7)을 포함한다. 데이터 프로세서(3)는 시스템 버스 제어기(8), 코어(9), 슬레이브 모듈(12), 슬레이브 모듈(13), 마스터 모듈(14) 및 디버그 모듈(10)을 포함한다. 시스템 버스 제어기(8)는 E-버스를 통해 외부 장치(도시되지 않음)에 연결된다. 시스템 버스 제어기(8)는 S-버스를 통해 슬레이브 모듈(12)과 슬레이브 모듈(13)에 연결된다. S-버스는 슬레이브 모듈 버스이다. 시스템 버스 제어기(8)는 M-버스(23)를 통해 코어(9)와 마스터 모듈(14)에 연결된다. M-버스(23)는 마스터 모듈 버스이다.
코어(9)는 중앙 처리 장치(CPU)(2), 메모리 관리 유닛(MMU)/제어기(4), 및 메모리(6)를 포함한다. 중앙 처리 장치(2), MMU/제어기(4), 메모리(6) 및 디버그 모듈(10)은 각각 K-버스(25)를 통해 서로 연결된다. 중앙 처리 장치(2)와 메모리(6)는 모두 MMU/제어기(4)에 직접 접속된다. MMU/제어기(4)는 M-버스(23)를 통해 데이터 처리 시스템(5)의 나머지 부분에 정보를 제공한다. 중앙 처리 장치(2)는 CPST 신호를 제공하고 Stall 신호를 수신하기 위해 디버그 모듈(10)에 연결된다. CPU(2)는 또한 외부 장치로부터 리셋 신호를 수신한다. 디버그 모듈(10)은 프로세서 상태(PST) 신호, 디버그 데이터(DDATA) 신호, 및 개발-직렬-데이터-아웃(DSDO, development serial data out) 신호를 외부 사용자에게 제공한다. 디버그 모듈(10)은 개발-직렬-데이터-인(DSDI, development serial data in) 신호, 개발-직렬-클럭(DSCLK, development serial clock), 및 중단점() 신호를 데이터 처리 시스템(5)의 외부 장치(도시되지 않음)로부터 수신한다.
도 2는 디버그 모듈(10)을 더 상세하게 도시한다. 디버그 모듈(10)은 제어회로(20), 직렬 인터페이스(30), 레지스터(32), 다수의 제어 레지스터들(40), 다수의하드웨어 중단점 레지스터들(50), 제어 회로(60), FIFO(70), 다수의 멀티플렉서들(80), 및 중단점 회로(100)를 포함한다.
신호는 외부 집적 회로 핀(도 2에는 상세히 도시되지 않음)을 통해 제어 회로(20)에 제공된다. 제어 회로(20)는 다수의 비트들을 갖는 상태 신호를 수신하기 위해 다수의 제어 레지스터들(40)에 연결된다. 제어 회로(20)는 다수의 비트들을 갖는 중단점 신호를 수신하기 위해 중단점 회로(100)에 연결된다. 제어 회로(20)는 다수의 비트들을 갖는 트레이스 신호를 제공하기 위해 제어 회로(60)에 연결된다. 제어 회로(20)는 제어 버스(15)를 통해 다수의 제어 레지스터들(40), 다수의 하드웨어 중단점 레지스터들(50), 및 레지스터(32)에 연결된다. 제어 회로(20)는 다수의 중단점 제어 신호들과 버스 요청 신호를 CPU(2)에 제공한다. 제어 회로(20)는 또한 CPU(2)에 의해 제공된 버스 승인 신호를 수신한다.
다수의 제어 레지스터들(40)은 레지스터(32)로부터 멀티-비트 직렬 정보 신호를 수신한다. 다수의 제어 레지스터들(40)은 다수의 비트들을 갖는 구성 신호를 제어 회로(60)에 제공한다. 중단점 회로(100)는 K-버스로부터 KADDR(K 어드레스)신호와 KDATA 신호를 수신한다. 다수의 하드웨어 중단점 레지스터들(50)은 또한 다수의 비트들을 갖는 내부 데이터 신호를 레지스터(32)에 제공한다. K-버스(25)는 또한 다수의 하드웨어 중단점 레지스터들(50)에 제공된다. K-버스는 KADDR 신호, KDATA 신호, 및 KCONTROL 신호가 모아진 것(collection)이라는 것을 주목해야 한다. KADDR 신호, KDATA 신호, 및 KCONTROL 신호 각각은 중단점 회로(100)에 입력된다.
직렬 인터페이스(30)는 제 1 및 제 2 집적 회로 핀으로부터 DSDI 신호 및 DSCLK 신호를 각각 수신한다. 직렬 인터페이스(30)는 DSDO 신호를 제 3 집적 회로핀에 제공한다. 직렬 인터페이스(30)는 레지스터(32)에 연결된다. 레지스터(32)는 멀티-비트 직렬 정보 신호를 제공하기 위해 다수의 제어 레지스터들(40)과 다수의 하드웨어 중단점 레지스터들(50)에 연결된다.
제어 회로(60)는 스톨(Stall) 신호를 CPU(2)에 제공한다. 제어 회로(60)는 또한 FIFO 제어 신호를 FIFO(70)에 제공하고 Mux 제어 신호를 다수의 멀티플렉서들(80)에 제공한다. FIFO(70)는 KADDR 신호 및 KDATA 신호를 수신하기 위해 K-버스(25)에 연결된다. FIFO(70)는 또한 FIFO 신호를 제공하기 위해 다수의 멀티플렉서들(80)에 연결된다. FIFO(70)는 또한 풀(Full) 신호를 제어 회로(60)에 제공한다. 다수의 멀티플렉서들(80)은 CPU(2)로부터 CPST 신호를 수신한다. 다수의 멀티플렉서들(80)은 DDATA 신호 및 PST 신호를 제공한다.
제어 회로(20)는 직렬 인터페이스(30)를 동작시키고 레지스터(32) 내에서의 정보의 저장을 제어하기 위해 요구되는 신호들을 제공한다. 레지스터(32)에 데이터가 로드되면, 제어 회로(20)는 이 데이터의 전송을 제어 회로(40) 또는 다수의 하드웨어 중단점 레지스터들(50) 중 하나의 적절한 목적지로 향하게 한다. 제어 회로(20)에 의해 실행되는 제어 기능은 제어 버스(15)에 의해 통신된다. 로드 동작들의 실행의 제어에 부가하여, 제어 회로(20)는 제어 회로(40)로부터 상태 정보를 수신하고 중단점 회로(100)로부터 중단점 정보를 수신한다. 제어 회로(20)는 버스 요청 신호, 중단점 제어 신호들, 및 트레이스 신호를 발생하기 위해 상태 정보와중단점 정보를 집합적으로 사용한다.
도 3은 중단점 회로(100)를 더 상세하게 도시한다. 중단점 회로(100)는 어드레스 중단점 하이 레지스터(ABHR, Address Breakpoint High Register)(110), 어드레스 중단점 로우 레지스터(ABLR, Address Breakpoint Low Register)(120), 비교기(130), 비교기(140), 데이터 중단점 마스크 레지스터(DBMR, Data Breakpoint Mask Register)(150), 데이터 중단점 레지스터(DBR, Data Breakpoint Register)(160), 임시 데이터 레지스터(170), 비교기(180), 프로그램 카운터 중단점 마스크 레지스터(PBMR, Program Counter Breakpoint Mask Register)(190), 프로그램 카운터 중단점 레지스터(PBR, Program Counter Breakpoint Register)(115), 임시 프로그램 카운터(PC) 레지스터(125), 및 비교기(135)를 포함한다.
제어 버스(15)는 ABHR(110), ABLR(120), DBMR(150), DBR(160), PBMR(190), 및 PBR(115) 각각의 입력에 연결된다. 직렬 정보 신호는 ABHR(110), ABLR(120), DBMR(150), 및 DBR(160) 각각의 입력에 연결된다 KCONTROL 신호는 PBMR(190), PBR(115), 및 임시 PC 레지스터(125) 각각의 입력에 연결된다. ABHR(110)의 제 1 출력은 KADDR 신호에 접속된다. 제어 버스(15)는 또한 임시 레지스터들(170, 125)에 연결된다. 직렬 정보 신호는 비교기(130)의 제 1 입력에 연결된다. KADDR 신호는 비교기(130)에 제 2 입력을 제공한다. ABLR(120)은 비교기(140)에 제 1 입력을 제공하고 KADDR 신호는 비교기(140)에 제 2 입력을 제공한다. 비교기(130)의 출력과 비교기(140)의 출력은 모두 중단점 신호 컨덕터에 연결된다.
DBMR(150)의 출력은 비교기(180)의 인에이블 입력에 연결된다. DBR(160)의출력은 비교기(180)의 제 1 입력에 연결된다. KDATA 신호는 임시 데이터 레지스터(170)의 입력에 연결된다. 임시 데이터 레지스터(170)의 출력은 비교기(180)의 제 2 입력 및 내부 데이터 신호에 연결된다. 비교기(180)의 출력은 중단점 신호 컨덕터에 연결된다.
PBMR(190)의 출력은 비교기(135)의 인에이블 입력에 연결된다. PBR(115)의 출력은 비교기(135)의 제 1 입력에 연결된다. KCONTROL 신호는 임시 프로그램 카운터 레지스터(125)의 입력에 연결된다. 임시 PC 레지스터(135)의 출력은 비교기(135)의 제 2 입력에 연결된다. 비교기(135)의 출력은 중단점 신호 컨덕터에 연결된다.
도 12는 중앙 처리 장치(2)를 매우 자세하게 도시한다. 중앙 처리 장치(2)의 일부분은 명령 페치 파이프라인(IFP, instruction fetch pipeline)(210)과 피연산자 실행 파이프라인(OEP, operand execution pipeline)(220)을 포함한다. IFP(210)는 명령 어드레스 발생 회로(202), 명령 페치 회로(204), 및 FIFO 명령 버퍼(206)를 포함한다. OEP(220)는 피연산자 페치 회로(212)와 어드레스 발생 회로(214)를 포함한다.
명령 어드레스 생성 회로(202)의 출력은 버퍼(208)의 제 1 입력에 연결된다. 명령 페치 회로(204)의 출력은 FIFO 명령 버퍼(206) 및 피연산자 페치 회로(212)에 접속된다. FIFO 명령 버퍼(206)의 출력은 피연산자 페치 회로(212)에 연결된다. 어드레스 생성 회로(214)의 제 1 출력은 버퍼(208)의 제 2 입력에 연결된다. 어드레스 생성 회로(214)의 제 2 출력은 버퍼(216)에 연결된다.
버퍼(216)의 제 1 출력은 피연산자 페치 회로(212)와 명령 페치 회로(204)에 접속된다. 버퍼(216)의 제 2 출력은 KDATA 신호를 제공한다. KDATA 신호는 또한 버퍼(216)에 제공된다. 버퍼(208)의 출력은 KADDR 신호를 제공한다.
레지스터 설명
도 4는 다수의 제어 레지스터들(40)을 상세하게 도시한다. 본 발명의 일 실시예에 있어서, 다수의 제어 레지스터들(40)의 일부분은 트리거 한정 레지스터(TDR, Trigger Definition register) 및 구성/상태 레지스터(CSR, Configuration/Status)를 포함한다.
TDR은 디버그 모듈(10)의 구성을 저장하고 미리 규정된 조건들 하에서 실행되는 선택된 기능들에 대해 제어를 제공한다. 본 발명의 이 실시예에 있어서, 트리거는 31 내지 16 비트가 제 2 레벨 트리거를 한정하고 15 내지 0 비트가 제 1 레벨 트리거를 한정하는 1 레벨 또는 2 레벨 트리거로 구성될 수도 있다. 트리거가 2 레벨 트리거로 구성될 때, 트리거는 조건부 구성과 유사한 방법으로 기능한다. 예를 들어, 트리거의 제 1 조건 또는 레벨이 만족되면, 제 2 조건 또는 레벨은, 트리거가 데이터 처리 시스템(5)에 의해 실행될 중단점 기능을 인에이블하기 전에 만족되어야 한다. 다음과 같은 구문으로 작성될 수 있다.
첫 번째 조건이 만족되면,
두 번째 조건이 만족되면,
트리거.
TDR에 포함된 각 비트의 기능이 이하 보다 상세하게 설명된다.
TDR은 도 7에 보다 상세하게 도시되어 있다. TDR의 PCI 비트는 프로그램 카운터 중단점 반전 비트이다. PCI 비트가 표명되면, 프로그램 카운터 중단점은 프로그램 카운터 중단점 레지스터(PBR)와 프로그램 카운터 중단점 마스크 레지스터(PBMR)에 의해 규정된 범위 밖에서 개시된다. PCI 비트가 부정되면, 프로그램 카운터 중단점은 PBR과 PBMR에 의해 규정된 영역 내에서 규정된다.
인에이블 프로그램 카운터 중단점(EPC, Enable Program Counter Breakpoint)비트가 표명될 때, EPC는 프로그램 카운터 중단점들, PBR, 및 PBMR에 대한 트리거의 의존을 선택적으로 인에이블한다. EPC 비트가 부정이면, 프로그램 카운터 중단점은 디스에이블된다.
표명되면, 인에이블 어드레스 중단점 로우(EAL, Enable Address Breakpoint Low) 비트는, 중단점 트리거로서 기능하도록 다수의 하드웨어 중단점 레지스터들(50) 중 어드레스 중단점 레지스터들의 ABLR에 저장된 어드레스를 인에이블한다. 따라서, EAL 비트가 표명되면, KADDR 신호를 통해 전송된 어드레스 값이 어드레스 중단점 레지스터들의 ABLR에 저장된 어드레스 값과 동일할 때, 중단점은 트리거 한다.
인에이블 어드레스 중단점 범위(EAR, Enable Address Breakpoint Range) 비트는 이 비트가 표명될 때 다수의 하드웨어 중단점 레지스터들(50) 중 어드레스 중단점 레지스터들의 ABLR 및 ABHR에 의해 규정된 총괄적인 범위에서 중단점이 트리거하도록 한다. 따라서, EAR 비트가 표명되면, KADDR 신호를 통해 전송된 어드레스 값이 어드레스 중단점 레지스터들의 ABLR 및 ABHR에 저장된 어드레스 값들에 의해규정된 범위 내에 있을 때, 중단점은 트리거 한다.
표명되면, 인에이블 어드레스 중단점 반전(EAI, Enable Address Breakpoint Inverted) 비트는, 다수의 하드웨어 중단점 레지스터들(50) 중 어드레스 중단점 레지스터들의 ABLR 및 ABHR에 의해 규정된 범위의 배타적인 또는 외부 어드레스 범위에서 트리거하기 위해 중단점을 인에이블한다. 따라서, EAI 비트가 표명되면, KADDR 신호를 통해 전송된 어드레스 값이 어드레스 중단점 레지스터의 ABLR에 저장된 어드레스 값보다 적거나 또는 어드레스 중단점 레지스터들의 ABHR에 저장된 어드레스 값보다 클 때, 중단점은 트리거 한다.
데이터 중단점 반전(DI, Data Breakpoint Invert) 비트가 표명될 때, DI 비트는 다수의 데이터 중단점 비교기들의 논리적 센스를 반전시킨다. DI 비트는 프로그램된 데이터 값과는 동일하지 않은 데이터 값의 다수의 하드웨어 중단점 레지스터들(50)의 DBR에서의 발생에 기초하여 트리거를 전개하기 위해 사용될 수도 있다.
표명될 때, 상부의 상부 데이터 바이트에 대한 데이터 중단점 인에이블(EDUU, Enable Data Breakpoint for the Upper Upper Data Byte) 비트는 KDATA 신호 및 K-버스(25)를 통해 전송되는 데이터 값의 31 내지 24 비트에 기초하여 데이터 중단점 트리거를 인에이블한다. 유사하게, 표명될 때, 상부의 중간 데이터 바이트에 대한 데이터 중단점 인에이블(EDMU, Enable Data Breakpoint for the Upper Middle Data Byte) 비트는 KDATA 신호 및 K-버스(25)를 통해 전송되는 데이터 값의 23 내지 16 비트에 기초하여 데이터 중단점 트리거를 인에이블한다. 또한 표명될 때, 하부의 중간 데이터 바이트에 대한 데이터 중단점 인에이블(EDLM,Enable Data Breakpoint for the Lower Middle Data Byte) 비트는 KDATA 신호 및 K-버스(25)를 통해 전송되는 데이터 값의 15 내지 8 비트에 기초하여 데이터 중단점 트리거를 인에이블한다. 또한, 표명될 때, 하부의 하부 데이터 바이트에 대한 데이터 중단점 인에이블(EDLL, Enable Data Breakpoint for the Lower Lower Data Byte) 비트는 KDATA 신호 및 K-버스(25)를 통해 전송되는 데이터 값의 8 내지 0 비트에 기초한 데이터 중단점 트리거를 인이에블한다.
상부 데이터 워드에 대한 데이터 중단점 인에이블(EDWU, Enable Data Breakpoint for the Upper Data Word) 비트는, 표명될 때, KDATA 신호 및 K-버스(25)를 통해 전송되는 데이터 값의 31 내지 16 비트에 기초하여 데이터 중단점 트리거를 인에이블한다. 하부 데이터 워드에 대한 데이터 중단점 인에이블(EDWL, Enable Data Breakpoint for the Lower Data Word) 비트는, 표명될 때, KDATA 신호 및 K-버스(25)를 통해 전송되는 데이터 값의 15 내지 0 비트에 기초하여 데이터 중단점 트리거를 인에이블한다.
데이터 긴 워드에 대한 데이터 중단점 인에이블(EDLW, Enable Data Breakpoint for the Data Longword) 비트는, 표명될 때, KDATA 신호 및 K-버스(25)를 통해 전송되는 데이터 값의 31 내지 0 비트에 기초하여 데이터 중단점 트리거를 인에이블한다. EDUU, EDUM, EDLM, EDLL, EDWU, EDWL, 및 EDLW 비트들 중 어느 것의 표명도 데이터 중단점 트리거를 인에이블한다는 것을 주목해야 한다. 일반적으로 요구되는 바와 같이, 주어진 조건은 데이터 중단점이 실제로 트리거되기 전에 발생해야 한다. EDUU, EDUM, EDLM, EDLL, EDWU, EDWL, 및 EDLW 비트들 각각이 부정이면, 데이터 중단점 트리거는 본 발명의 일 실시예에서는 디스에이블된다.
또한, 본 발명의 이 실시예에 있어서, 데이터 중단점 트리거들은 잘못 정렬되거나 또는 비정렬된 피연산자 레퍼런스들에 대해 발생될 수도 있음을 주목해야 한다. 이러한 잘못 정렬되거나 또는 비정렬된 피연산자 레퍼런스들에 대한 중단점 트리거들의 발생은 다음의 방법을 사용한다. 바이트-크기 레퍼런스들에 대해, 데이터 비트들의 적절한 세트는 피연산자 어드레스의 2개의 낮은 순위의 비트들의 기능으로서 프로그램될 것이다. 다음의 예를 참조한다.
If KADDR[1:0]=00, then KDATA[31:24] is programmed;
If KADDR[1:0]=01, then KDATA[23:16] is programmed;
If KADDR[1:0]=10, then KDATA[15:8] is programmed; and
If KADDR[1:0]=11, then KDATA[7:0] is programmed.
워드-크기의 레퍼런스들에 대해, KDATA 신호를 통해 전송된 데이터 값의 31 내지 16 비트 또는 15 내지 0 비트 중 하나는 KADDR 신호의 비트 1의 기능으로서 프로그램될 것이다. KADDR 신호의 비트 1이 논리 '0'의 값이면, 비트 31 내지 16이 프로그램된다. KADDR 신호의 비트 1이 논리 '1'의 값이면, 비트 15 내지 0이 프로그램된다. 긴 워드 레퍼런스들에 대해, KADDR 신호의 비트 31 내지 0이 프로그램된다.
중단점 레벨 인에이블(EBL, Enable Breakpoint Level) 비트는, 표명될 때, 중단점 트리거에 대해 전체적인 인에이블로서 작용한다. EBL 비트가 표명이 아니면, 모든 중단점 트리거들은 디스에이블된다.
트리거 응답 제어(TRC, Trigger Response Control) 값은 데이터 처리 시스템(5)이 완료된 트리거 조건에 응답하는 방법을 결정한다. 트리거 응답은 다수의 집적 회로 핀들에 의해 제공되는 DDATA 신호를 통해 외부 사용자에게 디스플레이된다. TRC 값이 %01의 논리 값을 가질 때, 중단점 회로(100)에 의해 검출된 하드웨어 중단점 조건의 발생은 제어 회로(20)가 중단점 신호를 CPU(2)에 표명할 수 있도록 한다. 중단점 신호의 표명은 CPU(2)가 인터럽트 가능한 지점에서 데이터 처리 명령들의 정상 실행을 중단하도록 야기시킨다. TRC 값이 %10의 논리 값을 가질 때, 하드웨어 중단점 조건의 발생은 제어 회로(20)가 디버그 인터럽트 신호를 CPU(2)에 표명할 수 있도록 한다. 디버그 인터럽트 신호가 표명되면, CPU(2)는 인터럽트 가능한 지점에서 정상 실행을 중단하고 소정의 예외 처리 루틴을 실행한다.
구성 상태 레지스터(CSR, Configuration Status Register)가 도 8에 더 상세히 도시되어 있다. CSR은 데이터 처리 시스템(5)의 CPU(2), MMU/제어기(4), 메모리(6), 및 디버그 모듈(10)의 동작 구성을 규정한다. 데이터 처리 시스템(5)의 구성을 규정하는 것에 부가하여, CSR은 중단점 회로(100)의 상태를 나타내는 상태 정보를 포함한다.
데이터 처리 시스템이 리셋될 때, CSR은 클리어됨을 주목해야 한다. 또한, 데이터 처리 시스템이 백그라운드 디버그 동작 모드일 때, CSR은 외부 개발 시스템(여기서는 도시되지 않음)에 의해 판독 및 기록될 수도 있다. 백그라운드 디버그 동작 모드는 이하 보다 상세하게 설명된다. CSR에 포함된 비트들 각각의 기능이 이하 보다 상세하게 설명된다.
도 7에 도시된 바와 같이, CSR은 데이터 처리 시스템(5)에서 하드웨어 중단점 기능들에 대한 판독-전용(read-only) 상태 정보를 규정하고 제공하는 중단점 상태(상태) 필드를 포함한다. 중단점 상태 필드에 저장된 정보는 중단점 회로(100)에 의해 제공되는 중단점 트리거 정보에 응답하여 다수의 제어 레지스터들(40)에 의해 발생된다. 상태 필드에 저장된 정보는 다수의 제어 레지스터들(40)의 TDR의 기능이다. 상태 필드가 $0의 논리 값을 저장할 때, 어떠한 하드웨어 중단점들도 인에이블되지 않는다. 상태 필드가 $1의 논리 값을 저장할 때, 디버그 모들(10)은 트리거될 레벨 1의 중단점을 대기한다. 상기 설명된 바와 같이, 레벨 1 중단점의 속성들은 트리거 규정 레지스터(TDR, Trigger Definition Register)의 15 내지 0 비트에 의해 규정된다. $2의 논리 값이 CSR의 상태 필드에 저장되면, 레벨 1 중단점이 트리거된다. 상태 필드가 $5의 논리 값을 저장할 때, 디버그 모듈(10)은 트리거될 레벨 2 중단점을 대기한다. 상기 설명된 바와 같이, 레벨 2 중단점의 속성들이 트리거 규정 레지스터(TDR)의 31 내지 16 비트에 의해 규정된다. $6의 논리 값이 CSR의 상태 필드에 저장되면, 레벨 2 중단점이 트리거된다.
CSR의 상태 필드에 반영된 중단점 상태는 DDATA 신호를 제공하는 다수의 외부 집적 회로 핀을 통해 외부 사용자(도 2에서는 도시되지 않음)에게 제공된다. 도 9를 참조한다. DDATA 신호들이 K-버스(25) 상에서 포착된 디스플레이 데이터가 아닐 때, DDATA 신호는 중단점 상태를 반영한다. 또한, CSR의 내용은 어느 순간에도 직렬 인터페이스(30)를 사용하여 판독될 수도 있음을 주목해야 한다. 따라서, 중단점 상태는 두 수단, 즉, DDATA 신호가 디스플레이 포착 데이터가 아닐 때의 DDATA신호 또는 직렬 인터페이스(30)를 사용하는 READ CSR 명령을 통해 이용 가능하다.
CSR은 또한 백그라운드 디버그 모드로 입력 상태를 외부 개발 시스템(7)에 나타내는 4-비트 값을 제공한다. 4-비트 값 중 제 1 비트는 FOF 비트이다. 표명될 때, Fault-on-fault(FOF) 비트는 데이터 처리 시스템(5)의 CPU(2)의 돌발적인 정지가 발생되었고 데이터 처리 시스템(5)은 백그라운드 디버그 동작 모드로 진입하도록 강제되었다는 것을 나타낸다. 백그라운드 디버그 동작 모드는 이하 보다 상세하게 설명된다. FOF 비트는 CSR 내용의 판독에 따라 클리어된다.
표명될 때, 하드웨어 중단점 트리거(TRG, Hardware Breakpoint Trigger) 비트는 하드웨어 중단점이 데이터 처리 시스템(5)의 CPU(2) 동작을 정지시켰음을 나타낸다. 표명될 때, TRG 비트는 데이터 처리 시스템(5)이 백그라운드 디버그 동작 모드로 진입하도록 강제되었음을 나타낸다. TGR 비트는 CSR 내용의 판독 또는 직렬 인터페이스(30)를 통해 직렬로 제공되는 "Go" 명령의 수신시 클리어된다.
프로세서 정지(Halt) 비트는, 표명일 때, CPU(2)가 정지해야만 하는 것을 지정하는 명령을 CPU(2)가 실행했음을 나타낸다. 표명일 때 정지 비트는 데이터 처리 시스템(5)이 백그라운드 디버그 동작 모드로 진입하도록 강제되었음을 나타낸다. 정지 비트는 CSR 내용의 판독 또는 직렬 인터페이스(30)를 통해 직렬로 제공되는 "Go" 명령의 수신시 클리어된다.
BKPT 표명(BKPT) 비트는신호가 표명이었고 CPU(2)에 제공되었음을 나타낸다. 표명일 때, BKPT 비트는 데이터 처리 시스템(5)이 백그라운드 디버그 동작 모드로 진입하도록 강제된 것을 나타낸다. BKPT 비트는 CSR 내용의 판독 또는직렬 인터페이스(30)를 통해 직렬로 제공되는 "Go" 명령의 수신시 클리어된다.
표명일 때, 디버그 레지스터들에 대한 프로세서 기록 금지(IPW, Inhibit Processor Writes to Debug Registers) 비트는 다수의 하드웨어 중단점 레지스터들(50)과 다수의 제어 레지스터들(40)에의 기록 동작들을 금지시킨다. IPW 비트는 외부 개발 시스템(7)과 같은 외부 개발 시스템으로부터 제공되는 명령들에 의해서만 수정될 수 있다. IPW 비트는, 외부 개발 시스템(7)에 의해 다수의 제어 레지스터들(40)과 다수의 중단점 레지스터들(50)에 기록된 디버그 정보의 재기록으로부터 CPU(2)를 효과적으로 잠근다(lock out).
표명일 때, 에뮬레이터 모드에서의 프로세서 레퍼런스 강제(MAP, Force Processor References in Emulator Mode) 비트는 데이터 처리 시스템이 에뮬레이터 모드에서 동작할 때 CPU(2)가 모든 레퍼런스들을 특정 어드레스 공간으로 매핑하도록 강제한다. MAP 비트가 부정이면, 모든 에뮬레이터-모드 레퍼런스들은 메모리(6)내의 수퍼바이저 텍스트와 데이터 공간에 매핑된다.
본 발명은 수퍼바이저의 논리 확장 또는 특권 모드인 특수 동작 모드로서 에뮬레이터 모드를 포함한다. 이 특수 동작 모드는 본 발명의 본 실시예에서 3개의 가능한 지시자들 중 하나의 표명시 진입된다. 에뮬레이터 모드에 진입하면, 모든 정상 입력/출력 인터럽트들은 무시될 수도 있고, 데이터 프로세서(3)는 모든 메모리 레퍼런스들을 "대체 공간(alternate space)"으로 선택적으로 강제할 수도 있다. MAP 비트는 데이터 프로세서(3)의 이 동작을 제어한다. 에뮬레이터 동작 모드는 통상 외부 개발 시스템(7)으로 하여금 이 대체 공간에 대한 모든 메모리 레퍼런스들을 인터셉트(intercept)하고 일부 형태의 디버그 기능을 지원하는데 요구되는 명령과 데이터 값들을 제공할 수 있도록 하기 위하여 사용된다. 외부 개발 시스템(7)이 상태 또는 "정상" 시스템 메모리를 변경하지 않고 데이터 프로세서(3)의 동작을 제어하도록 허용하기 위해 대체 공간의 재맵핑이 제공된다. 본 발명의 이 실시예에 있어서, 데이터 프로세서(3)는 RTE(Return from Exception)와 같은 특수 명령이 실행될 때까지 에뮬레이터 모드를 유지한다. 이 때, 데이터 프로세서(3)는 에뮬레이터 모드를 빠져나가고 CPU(2)는 정상 동작 모드로 복귀한다.
본 발명의 이 실시예에 있어서, 에뮬레이터 모드로의 진입과 이로부터 빠져 나가는 것은 PST 신호를 통해 외부 사용자에게 시그널링된다는 것을 주목해야 한다. PST 신호에서 $D의 값은 에뮬레이터 모드로의 진입을 나타내고 PST 신호에서 $7의 값은 에뮬레이터 모드로부터 빠져나감을 나타낸다. PST 신호에 의해 제공된 에뮬레이터 동작 모드로의 진입과 이로부터 빠져나가는 것의 표시는, 이것이 하드웨어 중단점이 트리거되었다는 표시를 외부 개발 시스템(7)에 제공하므로 특별히 중요하다. 따라서, 직렬 인터페이스(30)를 통해 제공되는 직렬 포트는 외부 메모리 위치들로부터 디버그 정보를 검색하기 위해 사용될 수도 있다.
MAP 비트가 부정이면, 모든 에뮬레이터 모드 메모리 레퍼런스들은 정상적으로 수퍼바이저 액세스들에 맵핑되어, 온-칩(on-chip) 메모리, 외부 메모리, 및 입력/출력 장치들과 같은 시스템 자원들이 레퍼런스될 수도 있도록 한다.
또한, 본 발명의 이 실시예에 있어서, 에뮬레이터 동작 모드로 진입하기 위한 세 가지 방법들이 실현된다. 제 1 방법에 있어서, 트레이스 예외의 에뮬레이터모드 강제(TRC, Force Emulation Mode on Trace Exception) 비트가 표명이면, 데이터 프로세서(3)가 에뮬레이터 동작 모드로 진입하도록 소프트웨어 트레이스 예외의 발생이 강제된다. 이는 외부 개발 시스템(7)에 의해 제어되고 데이터 프로세서(3)상에서 실행 중인 소프트웨어 디버거에 의해서는 제어되지 않는 단일의 명령 디버거 루틴을 생성하기 위한 메카니즘이다.
제 2 방법에 있어서, 에뮬레이터 모드 강제(EMU, Force Emulation Mode) 비트가 표명이면, 데이터 프로세서(3)는 예외 프로세서의 리셋을 시작한다. 또다시, 이 방법은 외부 개발 시스템(7)으로 하여금 데이터 처리 시스템(10)이 명령 처리를 시작하기 전에 이를 제어할 수 있도록 한다.
제 3 방법은, 트리거된 하드웨어 중단점에 응답하여 디버그 인터럽트가 표명일 때, 데이터 프로세서(3)가 에뮬레이터 모드로 진입할 수 있도록 한다. TDR의 TRC 필드는 에뮬레이터 모드로의 진입과 함께 디버그 인터럽트를 발생하기 위한 하드웨어 중단점 트리거의 사용을 프로그램하기 위해 사용될 수도 있다.
디버그 데이터 제어(DDC, Debug Data Control) 값은 DDATA 신호를 통해 외부 개발 시스템에 제공될 피연산자 데이터를 포착하기 위한 구성 제어 정보를 제공한다. DDC 값이 %00일 때, DDATA 신호 상에는 피연산자 데이터가 디스플레이되지 않는다. DDC 값이 %01일 때, M-버스(23)를 통해 통신되는 모든 기록 데이터가 포착되고 DDATA 신호 상에 디스플레이된다. DDC 값이 %10일 때, M-버스(23)를 통해 통신되는 모든 판독 데이터가 포착되고 DDATA 신호 상에 디스플레이된다. DDC 값이 %11일 때, M-버스(23)를 통해 통신되는 모든 기록 및 판독 데이터가 포착되고 DDATA신호 상에 디스플레이된다. DDC 값에 의해 명시되는 정보의 형태에 관계없이, DDATA 신호는 피연산자 레퍼런스 크기에 의해 규정된 바이트 수를 디스플레이한다. 피연산자가 CSR의 DDC 필드의 제어 하에서 포착되었을 때, DDATA 신호 상에 디스플레이되는 바이트 수는 실행되고 있는 레퍼런스의 형태에 의해 결정된다. 피연산자가 바이트 단위로 레퍼런스되면, 8 비트의 데이터가 디스플레이된다. 피연산자가 워드 단위로 레퍼런스되면, 16 비트의 데이터가 디스플레이된다. 유사하게, 피연산자가 긴 워드 단위로 레퍼런스되면, 32 비트의 데이터가 디스플레이된다. DDC는 M-버스의 기록 및 판독 동작들을 포착하기 위한 능력을 제공한다. 그러나, 피연산자 레퍼런스 크기는 DDATA 신호 상에 실제로 디스플레이되는 바이트 수를 결정한다.
브렌치 타겟 바이트(BTB, Branch Target Bytes) 값은 DDATA 신호 상에 디스플레이될 브렌치 타겟 어드레스의 바이트 수를 정의한다. BTB 값이 %00일 때, 브렌치 타겟 어드레스의 바이트는 DDATA 신호 상에 디스플레이되지 않는다. BTB 값이 %01일 때, 브렌치 타겟 어드레스의 하위 두 바이트가 DDATA 신호 상에 디스플레이된다. BTB 값이 %10일 때, 브렌치 타겟 어드레스의 하위 세 바이트가 DDATA 신호상에 디스플레이된다. BTB 값이 %11일 때, 브렌치 타겟 어드레스의 전체 네 바이트가 DDATA 신호 상에 디스플레이된다. DDATA 신호는 일반적으로 최하위에서 최상위 순서로 데이터를 출력함을 주목해야 한다. 이것은 브렌치 타겟 어드레스들뿐만 아니라 포착된 피연산자에 대해서도 동일하다. 또한, 동작 중에 제어 회로(60)의 제어 하에서, FIFO 저장 버퍼(70)는 가변 어드레스 모드를 사용하는 선택된 브렌치 동작들과 관련된 타겟 어드레스들만을 포착한다. 가변 어드레스 모드는, 어드레스가 상대적인 프로그램 카운터 또는 절대 어드레스에 의해 제공되지 않고 다른 수단에 의해 계산되는 어드레스 모드이다. 이와 같은 타겟 어드레스들은 전형적으로, 예외로부터 복귀(TRE, return-from-exception) 명령, 서브루틴으로부터 복귀(RTS, return-from- subroutine) 명령, 및 점프(JMP, jump)와 서브루틴으로 점프(JSR, jump-to-subroutine)의 형태뿐만 아니라 예외 벡터들과 관련된다.
인에이블 디버그 모드(END, Enable Debug Mode) 비트는 PST 신호 및 DDATA 신호가 표명일 경우 이 신호들의 정상 동작을 디스에이블한다. 또한, 이 비트가 인에이블될 때, 데이터 프로세서(3)의 CPU(2)는 내부 상태 정보의 8 비트 벡터를 출력한다.
표명일 때, 비-파이프라인 모드(NPL, Non-Pipelined Mode) 비트는 CPU(2)를 비-파이프라인 동작 모드로 동작하도록 강제한다. 비-파이프라인 동작 모드에 있을 경우, 데이터 처리 시스템(3)은 둘 이상의 연속하는 명령들 사이에 겹치지 않는 시간에 하나의 명령을 효과적으로 실행한다.
표명일 때, 무시 펜딩 인터럽트(IPI, Ignore Pending Interrupts) 비트는 데이터 처리 시스템(5)이 단일-명령-단계 모드(single-instruction-step-mode)에서 동작 중일 때, CPU(2)가 어떠한 펜딩 인터럽트 요청들도 무시하도록 강제한다.
단일-단계 모드(SSM, Single-Step Mode) 비트는, 표명일 때, CPU(2)가 단일-명령-단계 모드에서 동작하도록 강제한다. 단일-명령-단계 모드에 있는 동안, CPU(2)는 하나의 명령을 실행한 후 정지한다. CPU(2)가 정지해 있는 동안, 백그라운드 디버그 모드와 관련된 임의의 명령이 실행될 수도 있다. GO 명령을 수신하면,CPU(2)는 다음의 명령을 실행한 후 다시 정지한다. 이 처리는 단일-명령-단계 모드가 디스에이블될 때까지 지속된다.
저장 버퍼 디스에이블(SBD, Store Buffer Disable) 비트, K-버스 RAM 디스에이블(KAD, K-Bus RAM Disable) 비트, K-버스 ROM 디스에이블(KOD, K-Bus ROM Disable) 비트, 및 K-버스 캐시 디스에이블(KCD, K-Bus Cache Disable) 비트는 외부 개발 시스템(7)으로 하여금 디버그 목적을 위한 데이터 프로세서(3)의 정상 구성을 무시할 수 있도록 하기 위해 집합적으로 사용된다. 구체적으로, SBD 비트는, MMU/제어기(4)에 위치하고 FIFO 저장 버퍼(70)와 혼동되지 않아야 하는 선택적인 FIFO 저장 버퍼의 사용을 불가능하게 한다. KAD 비트는 메모리 블럭(6)의 사용이 통과되고 M-버스(23) 액세스들을 강제할 수 있도록 한다. 메모리 블럭(6)은 RAM 모듈들, ROM 모듈들, 및/또는 캐시 모듈들을 포함할 수도 있다. KAD, KOD, 및 KCD 비트들은 이 모듈들 각각에 의해 제공되는 기능들을 디스에이블하기 위해 각각 사용된다.
다수의 하드웨어 중단점 레지스터들(50)들이 도 5에 상세히 도시되어 있다. 다수의 하드웨어 중단점 레지스터들(50) 각각의 기능이 이하 설명된다. 다수의 하드웨어 중단점 레지스터들(50) 각각의 기능의 상세한 설명이 이하 상세하게 설명된다.
도 5에 있어서, 어드레스 중단점 레지스터들(ABLR, ABHR)은 중단점 기능을 트리거하기 위해 사용될 수 있는 데이터 처리 시스템(5)의 피연산자 논리 어드레스 공간에 영역을 한정한다. ABLR 및 ABHR 각각에 저장된 어드레스 값들은 K-버스(25)를 통해 전송되는 어드레스 값들과 비교된다. 또한, 다음의 논의에서 중단점 기능을 실행하기 위해 충족되어야 하는 조건들의 집합은 트리거로서 참조됨을 주목해야 한다.
어드레스 속성 중단점 레지스터(AABR, Address Attribute Breakpoint Register)는 도 6에 보다 상세히 도시되어 있다. 어드레스 속성 중단점 레지스터는 중단점 기능을 위한 트리거에 있어서 부합될 다수의 어드레스 속성들과 마스크를 한정한다. ABLR 및 ABLR 어드레스 값들과 같이, AABR에 저장된 속성 값은 K-버스(25)를 통해 전송되는 어드레스 속성 신호와 비교된다.
AABR의 하위 5 비트, 전송 형태(TT, Transfer Type) 값과 전송 변경자 (TM, Transfer Modifier) 값은 데이터 처리 시스템(5)이 백그라운드 디버그 모드일 동안 메모리 레퍼런스를 실행할 때 사용되는 어드레스 공간을 집합적으로 한정한다. TT값은 전송이 수퍼바이저 피연산자인지, 수퍼바이저 명령인지, 사용자 피연산자인지 또는 사용자 명령인지를 나타낸다.
다수의 하드웨어 중단점 레지스터들(50) 각각은 두 가지 기능들을 행함에 주목해야 한다. 데이터 프로세서(3)가 백그라운드 디버그 동작 모드로 동작 중일 때, 다수의 하드웨어 중단점 레지스터들(50)은 메모리 및 프로세서 레퍼런싱 동작의 실행 동안 사용된다. 데이터 프로세서(3)가 백그라운드 디버그 동작 모드에서 동작중이 아닐 때, 다수의 하드웨어 중단점 레지스터들(50)은 하드웨어 중단점들을 검출하기 위해 사용된다.
다수의 하드웨어 중단점 레지스터들(50)이 하드웨어 중단점들을 검출하기 위해 사용될 때, AABR 레지스터들은 4개의 필드들 이외에 4개의 동등한 마스크 필드들을 포함한다. TT 필드 및 TM 필드는 액세스되는 어드레스 공간을 한정한다. 표 1은 각 필드에 대한 인코딩을 예시한다.
표 1
"어드레스 공간"은 종종 동작의 특권(사용자 모드 또는 수퍼바이저 모드) 레벨과 수행되고 있는 레퍼런스(피연산자, 명령 페치)의 형태에 의해 규정됨을 주목해야 한다. 동시에, TT 값과 TM 값은 중단점 위치를 보다 정확하게 규정하기 위해 사용될 수도 있다.
AABR에서 다음 값인 크기(SZ) 값은 어드레스 범위에 덧붙여 K-버스(25)를 통해 전송되는 크기 속성이 AABR의 SZ 비트에 저작된 값에 상응해야만 하는 것을 나타낸다. 유사하게, 판독/기록(R) 값이 AABR에 저장된다. R 값은 판독 또는 기록 동작에 기초한 트리거 조건이 어드레스에 기초한 비교로 인가되는 것을 나타낸다.
상기 언급한 비트들은 다수의 하드웨어 중단점 레지스터들(50)이 중단점 모니터로서 동작 중일 때 사용된다. 이 비트들은 K-버스(25) 속성 정보와 비교된다. 예를 들어, 사용자 모드, 워드-크기 피연산자 판독만 트리거되도록 하는 것과 같이 다수의 중단점 레지스터들(50)을 프로그램하는 것이 가능하다. 따라서, ABBR의 이들 비트들은 어드레스 중단점 규정을 위한 부가적인 자격을 제공하기 위해 사용될 수도 있다.
또한, AABR은 중단점 규정으로부터 각 개별 비트를 마스크-아웃(mask out)하는 능력을 제공하는 속성 마스크를 포함한다.
AABR의 최상위 비트인 판독/기록 마스크(RM) 비트는 판독 또는 기록 동작에 기초한 트리거 조건이 어드레스에 기초한 비교들에서 무시될 것이라는 것을 나타낸다. 따라서, RM 비트가 표명이면, 비교 동작 중 R 비트는 무시된다. 다음 집합의 비트들인 크기 마스크(SM) 값은 어드레스의 크기에 기초한 트리거 조건이 어드레스에 기초한 비교들에서 무시될 것이라는 것을 나타낸다. 예를 들어, SM 값의 한 비트가 표명이면, SZ 값의 상응하는 비트는 어드레스 비교 기능에서 무시된다.
전송 형태 마스크(TTM, Transfer Type Mask) 값은 TT 값에 상응한다. TTM 값에서 한 비트가 표명이면, TT 값의 상응하는 비트는 후속하는 어드레스 비교들에서 무시된다. 유사하게, 전송 변경자 마스크(TMM, Transfer Modifier Mask) 값은 TM값에 상응한다. TMM 값에서 한 비트가 표명이면, TM 값의 상응하는 비트는 후속하는 어드레스 비교들에서 무시된다.
다수의 하드웨어 중단점 레지스터들(50)은 또한 다수의 프로그램 카운터 중단점 레지스터들을 포함한다. 다수의 프로그램 카운터 중단점 레지스터들은 중단점 기능을 트리거하기 위해 사용될 수 있는 데이터 처리 시스템(5)의 명령 논리 어드레스 공간의 영역을 규정한다. 프로그램 카운터 중단점(PBR, Program Counter Breakpoint) 값은 프로그램 카운터 중단점 마스크 레지스터(PBMR)에 처장된 값에 의해 마스크될 수도 있다. 본 발명의 일 실시예에 있어서, PBMR에 저장된 상응하는 "0" 값을 갖는 PBR에서의 이 비트들만이 데이터 처리 시스템(5)의 프로그램 카운터 값과의 비교 동작에 사용된다. 프로그램 카운터 값은 데이터 처리 시스템(5)의 CPU(2)의 프로그램 카운터 레지스터(도시되지 않음)에 저장됨을 주목해야 한다.
프로그램 카운터 중단점 레지스터들에 부가하여, 다수의 하드웨어 중단점 레지스터들(50)은 다수의 데이터 중단점 레지스터들을 포함한다. 다수의 데이터 중단점 레지스터들은 데이터 중단점 레지스터(DBR)와 데이터 중단점 마스크 레지스터(DBMR)를 포함한다. DBR은 데이터 처리 시스템(5)이 디버그 동작을 수행할 때 트리거를 형성하기 위해 사용될 수 있는 특정 데이터 패턴을 규정하는 데이터 값을 저장한다. DBMR에 저장된 데이터 마스크 값은 DBR에 저장된 데이터 값을 마스크한다. 따라서, 본 발명의 일 실시예에 있어서, DBMR에 저장된 상응하는 "0" 값을 갖는 DBR에 저장된 이 비트들만이, 트리거 조건이 충족되는지를 결정하기 위해, K-버스(25)를 통해 전송되는 데이터 신호들과 비교될 수도 있다.
동작 설명
후속 논의의 목적을 위해, 디버그 지원의 일반 화제는 단일의 요구와 단일의기능을 갖는 세 개의 개별적인 영역들로 분할될 수도 있다. 본 발명은 실시간 트레이스 지원, 백그라운드 디버그 동작 모드, 및 실시간 디버그 지원을 제공한다. 도 1의 데이터 처리 시스템(5)은 본 발명의 일 실시예를 도시한다.
데이터 처리 시스템(5)에 있어서, 데이터 프로세서(3)는 정보를 통신하기 위하여 외부 개발 시스템(7)에 접속된다. 외부 개발 시스템(7)은 데이터 프로세서(3)에서 실패 회로와 에러 소프트웨어를 식별하고 분리시키도록 설계된 디버그 동작들을 수행하기 위해 통신된 정보를 사용한다. 외부 개발 시스템(7)은 DSDI, DSCLK, DSDO, DDATA, PST, 및 다른 입력/출력 신호들을 통해 데이터 프로세서(3)와 통신한다. DSDI, DSCLK, DSDO 신호는 외부 개발 시스템(7)과 데이터 프로세서(3) 사이에 직렬 통신 수단을 제공한다. DDATA 신호는 데이터 프로세서(3)로부터 디버그 정보를 외부 개발 시스템(7)에 제공한다. CSR의 구성에 따라서, 디버그 모듈(10)은 DDATA 신호 상에 디스플레이하기 위한 특정 피연산자와 브렌치 타겟 어드레스들을 포착할 수도 있다. 또한, CPU(2)는 CSR에 저장된 구성 값과 상관없이 DDATA 상에 포착되고 디스플레이되는 명령들을 실행할 수도 있다. PST 신호는 내부 프로세서 상태를 외부 개발 시스템(7)에 제공한다. 따라서, 프로그램 동작의 실행 동안, DDATA 신호 및 PST 신호는 데이터 프로세서(3)에 의해 실행되는 현재 동작을 반영하기 위해 집합적으로 액세스될 수도 있다.
동작 중, 코어(9)는 CPU(2), MMU/제어기(4), 및 메모리(6)를 접속하기 위해 K-버스(25)를 사용한다. 본 발명의 이 실시예에 있어서, K-버스(25)는 고속의 단일-사이클 액세스 버스(single-cycle access bus)이다. 메모리(6)는 RAM, ROM,캐쉬블럭들, 및 이들의 조합을 포함할 수도 있다. 모든 다른 시스템 모듈들과 주변기기들은 M-버스(23)를 통해 코어(9)에 연결된다. M-버스(23)는 다중 버스 마스터들 중 하나에 의해 개시된 데이터 전송을 수행하기 위해 사용되는 내부 멀티-마스터 버스이다. 시스템 버스 제어기(8)는 다수의 기능들을 제공한다. 시스템 버스 제어기(8)는, 외부 E-버스가 존재할 경우, 내부 M-버스(23)와 외부 E-버스 사이의 인터페이스를 제공한다. 또한, 시스템 버스 제어기(8)는 S-버스 상의 모든 데이터 전송들을 제어하기 위한 초점으로서 작용한다. S-버스는 타이머들 및 직렬 통신 채널들과 같은 단순한 슬레이브 주변 모듈들(12, 13)을 데이터 처리 시스템(5)에 접속하기 위해 사용된다.
본 발명에 있어서, 데이터 프로세서(3)는 데이터 전송을 위한 비용-효율적인 메카니즘을 제공하기 위해 버스 대역폭의 여러 개의 층을 갖는다. 코어(9)는 성능을 최대로 하기 위해 고속의 단일 사이클의 K-버스(25)와 상호 접속된다. 전송은 이 고속의 버스에 직접 연결되지 않기 때문에, M-버스(23)는 코어(9) 및 마스터 모듈(14)과 같은 내부 버스 마스터들 중 임의의 것으로부터 대역폭을 제공한다. 시스템 버스 제어기(8)는, 저 비용으로 모든 데이터 전송을 위한 제어 기능과, 슬레이브 모듈들(12, 13)과 같은 슬레이브 주변 모듈들을 위한 낮은 대역폭의 S-버스를 제공하면서, 내부 M-버스(23)와 외부 E-버스(존재하면) 사이의 접속을 제공한다. 디버그 모듈(10)은 프로세서에 의해 개시된 모든 메모리 액세스들의 비강제적인 관측을 허용하기 위해 K-버스(25)에 접속된다. 디버그 모듈(10)은 또한 외부 개발 시스템(7)에 대한 접속을 제공한다.
도 1의 디버그 모듈(10)은 이전에 설명한 3개의 디버그 동작들 각각을 지원하기 위한 논리 회로를 제공한다. 디버그 모듈(10)의 동작이 이하 보다 상세하게 설명된다.
실시간 트레이스 기능
본 발명은 지금까지는 존재하지 않는, 그리고 중요한 실시간 트레이스 기능을 제공한다. 실시간 트레이스 기능은 외부 개발 시스템(7)과 같은 외부 사용자로 하여금 동적으로 데이터 프로세서(3)의 내부 동작들을 관측할 수 있도록 한다. 또한, 실시간 트레이스 기능은 이러한 관측을 데이터 처리 시스템(5)의 효율과 속도에 있어서 중요한 영향없이 시스템의 내부 동작에 제공한다. 데이터 처리 시스템(5)의 디버그 모듈(10)은 DDATA 신호 및 PST 신호를 통해 내부 동작 정보를 외부 사용자에게 제공하기 위한 병렬 출력 포트를 제공한다. DDATA 신호는 피연산자 데이터를 반영하는 데이터를 제공하고 PST 신호들은 CPU(2)의 실행 상태를 반영하는 인코딩된 상태 정보를 제공한다. 또한, DDATA 신호는 외부 개발 시스템으로 하여금 외부의 가시적 어드레스 버스 또는 외부의 가시적 데이터 버스를 요구하지 않고 프로그램의 흐름을 정확하게 트레이스할 수 있도록 하기 위해, 포착된 명령 어드레스 프로그램 흐름 변화들을 제공한다. DDATA 신호 상에 디스플레이되는 정보는 PST 신호들 상의 상태 정보와 동기가 맞추어짐을 주목해야 한다. 따라서, 외부 사용자는 데이터 프로세서(3)의 동작 지연 없이, 또한 이 실행 경로를 가시화하기 위해 특수 디버그 동작 모드의 요구 없이, 프로그램의 동적인 실행 경로를 결정하기 위해 DDATA 신호 및 PST 신호를 디코딩할 수 있다.
실시간 트레이스의 실행 중 데이터 처리 시스템(5)의 동작을 이하 보다 상세히 설명한다. 그 논의에 앞서, PST 신호의 인코딩이 간략히 설명된다. 표는 도 10에 제공된 PST 신호의 인코딩을 도시한다.
도 10은 PST 신호의 비트들(3 내지 0)을 통해 제공되는 값과 CPU(2)의 상태사이의 관계를 도시한다. PST 신호가 %0000의 값을 제공할 때, 이전의 동작은 아직 종료되지 않았고, 실행은 단순히 지속된다. %0001의 값이 제공되면, PST 신호는 명령의 실행이 시작됨을 나타낸다. PST 신호가 %0011의 값을 가질 때, 데이터 처리 시스템은 사용자 동작 모드로 진입한다. %0100의 값이 PST 신호에 의해 제공되면, 데이터 처리 시스템(5)은 펄스 또는 WDDATA 명령의 실행을 시작한다. 펄스 오피코드(Pulse opcode)는 단순히 이 특수 PST 인코딩을 발생하고, WDDATA 오피코드는 피연산자가 포착되어 CSR에 의해 규정된 구성에 상관없이 DDATA 상에 표시되도록 강제한다. 이것은 메모리 피연산자들, 예외 스택 프레임들 또는 소프트웨어 마커들을 직접 DDATA 신호 상에 디스플레이하는 단순한 메카니즘을 제공한다.
%0101의 값이 PST 신호에 의해 제공되면, 데이터 처리 시스템(5)은 취해진 브렌치 동작의 실행을 시작한다. %0111의 값이 PST 신호에 의해 제공되면, 데이터 처리 시스템(5)은 RTE 명령의 실행을 시작한다. PST 신호가 %1000의 값을 제공할 때, 데이터 처리 시스템(5)은 DDATA 신호 상의 한 바이트 전송을 시작한다. PST 신호가 %1001의 값을 제공할 때, 데이터 처리 시스템(5)은 DDATA 신호 상의 두 바이트 전송을 시작한다. PST 신호가 %1010의 값을 제공할 때, 데이터 처리 시스템(5)은 DDATA 신호 상의 세 바이트 전송을 시작한다. PST 신호가 %1011의 값을 제공할때, 데이터 처리 시스템(5)은 DDATA 신호 상의 네 바이트 전송을 시작한다. PST 신호가 %1100의 논리 값을 가지면, 데이터 처리 시스템(5)의 CPU(2)는 예외 처리 루틴을 실행한다. 유사하게, PST 신호가 %1101의 논리 값을 가지면, 데이터 처리 시스템(5)의 CPU(2)는 예외를 처리한다. 이 값은 예외가 검출된 때로부터 예외 처리 루틴의 제 1 명령이 페치될 때까지 PST 신호 상에서 표명이다. 유사하게, PST 신호가 %1101의 논리 값을 가지면, 데이터 처리 시스템(5)의 CPU(2)는 에뮬레이터 동작 모드로의 진입을 야기하는 예외 루틴을 실행한다. PST 신호가 %1110이면, 데이터 처리 시스템(5)의 CPU(2)는 정지되고 인터럽트를 기다린다. PST 신호가 %1111일때, 데이터 처리 시스템(5)의 CPU(2)는 정지한다.
이전에 지적한 바와 같이, 인코딩된 PST 신호 및 DDATA 신호에 의해 집합적으로 제공되는 프로세서 상태 정보는 데이터 처리 시스템(5)의 동적 예외 경로를 완전히 추적하기 위하여 외부 프로그램 모델과 함께 사용될 수도 있다.
실시간 트레이스 기능을 가능하게 하기 위하여, DDATA 신호는 브렌치 타겟 명령 어드레스들을 표시하도록 구성되어야만 한다. 전형적으로, 데이터 처리 시스템(5)이 이의 정상 실행을 시작하기 전에, 이 구성이 수행된다. DDATA 신호를 구성하기 위하여, 외부 개발 시스템(7)은 다수의 제어 레지스터들(40) 중 CSR 레지스터에 값을 기록할 수도 있다. CSR 레지스터는 도 8에 도시되어 있다. 이 기록 기능을 수행하기 위해, 외부 개발 시스템(7)은 데이터를 CSR에 로드 하는 명령에서 DSDI 신호 및 DSCLK 신호를 사용하여 직렬 인터페이스(30)로 이동한다. 본 발명의 일 실시예에 있어서, 명령의 제 1 부분이 DSDI 신호에 의해 제공되고, DSCLK 신호에 의해 클럭킹된다. 명령들의 추가 부분들은 후속하여 제공된다. 명령의 모든 부분들은 16 비트의 정보 패킷이 완성될 때까지 레지스터(32)에 저장된다. 본 발명의 대안적인 실시예들은 본 발명의 현재의 실시예에서 요구되는 16 비트보다 더 많거나 또는 더 적은 비트들을 포함할 수도 있다.
여기에서 설명된 본 발명의 실시예에 있어서, CSR에 값을 기록하는 명령은 16 비트의 오피코드와 32 비트의 데이터를 갖는 48 비트 길이이다. 레지스터(32)는 16 비트 폭이다. 따라서, 제 1 16비트의 정보 패킷이 완료될 때, 디코딩 되고 후속 동작들이 구성되는 제어 회로(20)에 이 정보가 전송된다. 제 2 16비트의 정보 패킷이 레지스터(32)에 로드되었을 때, 이 정보는 직렬 정보 신호를 통해 다수의 제어 레지스터들에 전송된다. 제어 회로(20)로부터 제어 버스에 의해 제공된 제어 정보를 사용하여, 직렬 정보 신호의 내용이 목적지 레지스터인 CSR의 상부에 로드된다. 유사한 방법으로, 제 3 16비트의 정보 패킷이 레지스터(32)에 로드되고 이후 다수의 제어 레지스터들(40)에 전송된다. 또, 제어 회로(20)에 의한 신호들을 사용하여, 직렬 정보 신호의 내용이 CSR의 하위 부분에 로드된다. 이 방식으로, 전체 48비트 명령이 직렬로 디버그 모듈(10)로 이동되고, 여기서 이 명령이 디코딩되고 피연산자 값이 CSR에 로드된다.
후속하는 데이터는 DSDI 신호를 통해 외부 개발 시스템(7)에 의해 직렬로 제공된다. 상기 설명한 바와 같이, DSDI 신호에 의해 제공된 후속하는 데이터는 DSCLK 신호에 의해 클럭킹된다. 각 데이터 비트는 16비트의 정보 패킷이 완료될 때까지 레지스터(32)에 저장된다. 제 2 16비트의 정보 패킷이 완료될 때, 정보는 직렬 정보 신호를 통해 다수의 제어 레지스터들(40)에 전송된다. 제 2 16비트의 정보 패킷은 비트(31 내지 16)로서 CSR에 저장된다. 이어서, 부가적인 정보가 외부 개발 시스템(7)에 의해 DSDI 신호 및 DSCLK 신호를 통해 레지스터(32)에 직렬로 제공된다. 제 3 16비트의 정보 패킷이 완료될 때, 이 정보는 직렬 정보 신호를 통해 다수의 제어 레지스터들(40)에 전송된다. 제 3 16비트의 정보 패킷은 비트(15 내지 0)로서 CSR에 저장된다.
이전 문단에서, DDATA 신호의 구성은 외부 개발 시스템(7)에 의해 CSR에 기록된 값에 의해 결정되었다. 본 발명의 다른 실시예에 있어서, DDATA 신호들은, 데이터 프로세서(4)의 CPU(2)에 의해 CSR에 기록된 값에 의해 구성될 수도 있다. CPU(2)가 그 값을 CSR에 기록할 때, 그 값은 도 6에 도시된 중단점 회로(100)의 임시 레지스터(170)에 제공된다. 그 값은 K-버스(25)의 KDATA 신호를 통해 임시 레지스터(170)에 제공된다. 그 값은 임시 레지스터(170)로부터 레지스터(32)에 전송되고 16 비트 패킷으로 저장된다. CPU가 CSR에 기록하기 때문에, KDATA 신호를 통해 전송되는 피연산자 값은 CPU(2)로부터 K-버스(25)를 통해 제어 회로(20)에 제공되는 제어 신호들을 사용하여 임시 데이터 레지스터(170)에 포착된다. 따라서, 그 값은 다수의 제어 레지스터들(40)에 있어서, 외부 개발 시스템(7)으로부터 레지스터(32)에 제공되는 것과 동일하게 나타난다.
피연산자가 외부 개발 시스템(7) 또는 CPU(2)에 의해 제공된다 할지라도, 피연산자 및 관련된 피연산자들은 실시간 트레이스 기능을 수행하기 위한 DDATA 신호들을 구성하기 위하여 CSR에 저장되어야 한다. CSR에 있어서, 디버그 데이터제어(DDC) 값 및 브렌치 타겟 바이트(BTB) 값은, 트레이스 정보를 외부 개발 시스템(7)에 제공하기 위해 DDATA 신호들을 정확히 구성하도록 기록되어야 한다. 상기 언급된 바와 같이, 디버그 데이터 제어(DDC) 값은 DDATA 신호를 통해 외부 개발 시스템에 제공될 피연산자 데이터를 포착하기 위한 구성 제어 정보를 제공한다. DDC 값이 %00 일 때, 피연산자 데이터는 DDATA 신호 상에 디스플레이되지 않는다. DDC 값이 %01 일 때, M-버스(23)를 통해 통신되는 모든 기록 데이터가 포착되어 DDATA 신호상에 디스플레이된다. DDC 값이 %10일 때, M-버스(23)를 통해 통신되는 모든 판독 데이터가 포착되어 DDATA 신호 상에 디스플레이된다. DDC 값이 %11일 때, M-버스(23)를 통해 통신되는 모든 판독 및 기록 데이터가 포착되고 DDATA 신호 상에 디스플레이된다. DDC 값에 의해 명시되는 정보의 형태에 관계없이, DATA 신호는 피연산자 레퍼런스 크기에 의해 규정된 바이트의 수를 디스플레이한다. 예를 들어, 바이트 디스플레이는 8 비트 길이이고, 워드 디스플레이는 16 비트 길이이고, 긴(long)디스플레이는 32 비트 길이이다. 피연산자가 CSR의 DDC 필드의 제어 하에서 포착될 때, DDATA 신호 상에 디스플레이되는 바이트 수는 실행되고 있는 레퍼런스의 형태에 의해 결정된다. 피연산자가 바이트 단위로 레퍼런스되면, 8 비트의 데이터가 디스플레이된다. 피연산자가 워드 단위로 레퍼런스되면, 16 비트의 데이터가 디스플레이된다. 유사하게, 피연산자가 긴 워드 단위로 레퍼런스되면, 33 비트의 데이터가 디스플레이된다. DDC는 M-버스(23) 판독 및 기록 동작들을 포착하는 능력을 제공한다. 그러나, 피연산자 레퍼런스 크기는 DDATA 신호 상에 실제로 디스플레이된 바이트 수를 결정한다.
브렌치 타겟 바이트(BTB) 값은 DDATA 신호 상에 디스플레이될 브렌치 타겟 어드레스의 바이트 수를 규정한다. BTB 값이 %00일 때, 브렌치 타겟 어드레스의 바이트는 DDATA 신호 상에 디스플레이되지 않는다. BTB 값이 %01일 때, 브렌치 타겟 어드레스의 하위 두 바이트가 DDATA 신호 상에 디스플레이된다. BTB 값이 %10일때, 브렌치 타겟 어드레스의 하위 세 바이트가 DDATA 신호 상에 디스플레이된다. BTB 값이 %11일 때, 브렌치 타겟 어드레스의 전체 네 바이트가 DDATA 신호 상에 디스플레이된다. DDATA 신호는 일반적으로 최하위에서 최상위의 순서로 데이터를 출력함을 주목해야 한다. 이것은 브렌치 타겟 어드레스들뿐만 아니라 포착된 피연산자들에 대해서도 마찬가지이다. 또한, 동작 중에, 제어 회로(60)의 제어 하에서 FIFO 저장 버퍼(70)는 가변 어드레싱 모드를 사용하는 취해진 브렌치 동작들과 관련된 타겟 어드레스들만을 포착한다. 가변 어드레싱 모드는, 어드레스가 상대 프로그램 카운터 또는 절대 어드레스에 의해 제공되지 않고 다른 수단에 의해 계산되는 어드레싱 모드이다. 이와 같은 타겟 어드레스들은 전형적으로 예외 벡터, 예외로부터 복귀(TRE), 서브 루틴으로부터 복귀(RTS) 명령, 및 점프(JMP)와 서브루틴으로 점프(JSR)의 형태에 관련된다.
실시간 트레이스 기능을 수행하기 위해 요구되는 정보를 제공하기 위한 DDATA 신호의 구성을 위하여 CSR이 기록된 후, CPU(2)는 다수의 타겟 어드레스들을 K-버스(25)에 의해 통신되는 KADDR 신호를 통해 FIFO(First-In First-Out) 저장 버퍼(70)에 제공한다. 또한, CPU(2)는 다수의 피연산자 데이터 값들을 K-버스(25)에 의해 통신되는 KDATA 신호를 통해 FIFO 저장 버퍼(70)에 제공한다. 다수의 타겟 어드레스들과 다수의 피연산자 데이터 값들은 제어 회로(60)에 의해 제공되는 FIFO 제어 신호에 응답하여 FIFO 저장 버퍼(70)에 저장된다.
제어 회로(60)는 제어 회로(20)에 의해 제공되는 트레이스 신호와 다수의 제어 레지스터들(40)의 CSR에 의해 제공되는 구성 신호에 응답하여 FIFO 제어 신호를 출력한다. FIFO 저장 버퍼(70)는 거기에 저장된 KADDR 및 KDATA 정보를 먼저 입력된 것을 먼저 출력하는 순서로 출력한다. FIFO 저장 버퍼(70)는 어드레스와 피연산자 정보를 저장하기 위한 다수의 위치들을 갖기 때문에, FIFO 저장 버퍼(70)는 데이터 프로세서(3)의 정상 동작 동안 액세스되는 피연산자들 및 명령 어드레스들의 값들을 반영하는 각 통신 정보로서 KADDR 신호 및 KDATA 신호를 수신할 수 있다. 즉, FIFO 저장 버퍼(70)에 제공되고 이에 저장되는 KADDR 신호 및 KDATA 신호를 통해 전송되는 값들은 실시간으로 데이터 처리 시스템(5)의 현재 동작을 반영한다.
FIFO 저장 버퍼(70)의 모든 저장 위치들이 DDATA 신호 상에 출력되어야 하는 유효 정보를 포함할 때, FIFO 저장 버퍼(70)는 CPU(2)의 동작 속도에만 영향을 미친다. 모든 저장 위치들이 채워질 때, FIFO 저장 버퍼(70)는 풀(Full) 신호를 표명으로 한다. 풀 신호가 표명일 때, 제어 회로(60)는 스톨(Stall) 신호를 표명으로 한다. FIFO 저장 버퍼(70) 내의 적어도 한 저장 위치가 다음 값을 저장하기 위해 유용하게 될 때까지 코어(9)의 동작을 스톨시키기 위해 스톨 신호가 CPU(2)에 제공된다. 모든 다른 동작들에 있어서, DDATA 신호 상에의 어드레스와 피연산자 정보의 제공은 데이터 프로세서(3)의 실행 속도에 중요한 영향을 미치지는 않는다.
FIFO 저장 버퍼(70)는 FIFO 신호를 통해 어드레스 및 피연산자 정보를 다수의 멀티플렉서들(80)에 제공한다. CPU(2)는 또한 CPU 프로세서 상태(CPST, CPU Processor Status) 신호를 다수의 멀티플렉서들(80)에 제공한다. CPST 신호는 데이터 프로세서(3)에 의해 현재 실행되고 있는 동작의 형태를 나타내기 위한 프로세서 상태 정보를 제공한다. 예를 들어, CPST 신호는, 명령의 실행이 시작될 때, 명령의 실행이 지속되어야 할 때, 데이터 프로세서(3)가 선택된 동작 모드로 진입할 때, 사전에 선택된 브렌치 명령이 실행될 때, 및 데이터 프로세서(3)의 동작이 정지할 때를 나타낼 수도 있다. CPST 신호는 프로세서 동작의 어떠한 형태도 나타낼 수 있고, 본 명세서에 나열된 예들에 국한되지 않음을 주목해야 한다.
FIFO 신호 및 CPST 신호가 다수의 멀티플렉서들(80)에 제공될 때, 다수의 멀티플렉서들의 출력들은 Mux 제어 신호에 의해 제어된다. Mux 제어 신호는 다수의 멀티플렉서들(80)로 하여금 DDATA 신호 및 PST 신호들을 동기적으로 제공할 수 있도록 한다. DDATA 신호와 PST 신호는 데이터 프로세서(3)(여기에는 도시되지 않음)의 클럭의 상승 에지와 동기가 맞추어지고, 따라서, PST 신호들을 통해 제공되는 상태는 임의의 주어진 버스 사이클의 트랜잭션과 관련되지 않을 수도 있음을 주목해야 한다.
또한, Mux 제어 신호에 의해 인에이블되었을 때, PST 신호들은 CPU(2)의 상태를 나타내는 마커를 제공한다. 예를 들어, PST 신호에 의해 $C, $D, $E 또는 $F의 상태 값이 제공되었을 때, PST 신호는 멀티-사이클 모드 또는 특수 동작이 데이터 프로세서(3)에 의해 실행되고 있음을 나타낸다. 인코딩된 PST 신호에 대한 더 많은 정보에 대해서는 도 10을 참조한다. PST 신호가, 특수 멀티-사이클 동작 모드가 데이터 프로세서(3)에 의해 실행되고 있음을 반영할 때, PST 신호는 이 모드를 빠져나가거나 또는 동작이 완료될 때까지 이 상태 값들을 유지한다.
PST 신호가 $0 내지 $7의 상태 값을 출력할 때, PST 신호는 각 타이밍 사이클에서 갱신되는 정보를 명시한다.
PST 신호가 $8, $9, $A 또는 $B의 상태 값을 출력할 때, PST 신호는 DDATA 신호를 통해 외부로 제공된 값을 한정하기 위해 사용된다. 이 동작에 있어서, PST 신호는 DDATA 신호 상의 어느 값들이 요구되는 어드레스 및 데이터 정보를 제공하는지를 나타내는 "마커"로서 사용된다. PST 신호는 DDATA 신호 상에 실제 데이터가 디스플레이되기 한 타이밍 사이클 전에 이 상태 값들과 함께 인코딩된다. 따라서, 외부 개발 시스템은 데이터 프로세서(3)의 동작을 정확하게 관측한다.
다음의 예는 실시간 트레이스 동작에서 DDATA 신호와 PST 신호의 사용을 보다 상세하게 도시한다. 이 예는 도 11에 도시되어 있다. 도 11은 점프 명령 타겟 어드레스의 하위 16 비트가 DDATA 신호 상에 디스플레이되는 간접 점프(JMP) 명령의 실행을 도시한다. 점프 명령이 실행될 때, 명령의 피연산자에 의해 명시되는 유효 어드레스에서 프로그램 실행이 지속된다. 본 실시예에 있어서, 유효 어드레스 값은 레지스터(AO)에 의해 지정된 메모리 위치에 위치한다.
다음의 예에 있어서, 적절한 포맷으로 데이터를 제공하기 위해 DDATA 신호를 정확히 구성하도록 CSR이 기록되었다고 가정한다. 도 11에 도시된 예에 있어서, JMP(AO)명령은 도 11에서 "LAST"라고 하는 이전의 명령에 이어진다. JMP 명령은 타겟 명령 어드레스를 간접적으로 지정함을 주목해야 한다. 예를 들어, CPU(2)에 저장된 레지스터(AO)의 내용은 원하는 타겟 명령 어드레스를 규정한다. 또한, 본 발명의 명세서에서 상세하게 예시되지는 않았지만, AO 레지스터는 CPU(2)에 위치할 수도 있다. 타겟 명령 어드레스는 AO 레지스터의 내용에 의존하고, 상대 PC 또는 절대 어드레스 어느 것에도 의존하지 않기 때문에, 이와 같은 간접 어드레싱의 사용을 가변 어드레싱이라고 한다.
다음 예의 실행 중, DSOC 및 AGEX는 데이터 프로세서(3)의 내부 파이프라인에서의 위치를 나타낸다. 용어 DSOC, AGEX, IAG 및 IC를 설명하기 위해, CPU(2)의 내부 구조가 간단히 설명되어야 한다.
데이터 프로세서(3)의 CPU(2)에 있어서, 두개의 독립적이고 연결되지 않은 파이프라인들이 실현된다. 제 1 파이프라인은 명령을 프리 페치(prefatch)하기 위한 명령 페치 파이프라인(IFP)(도시되지 않음)이고, 제 2 파이프라인은 명령의 실제 실행을 디코딩하고 수행하기 위한 피연산자 실행 파이프라인(OEP)이다. FIFO 명령 버퍼(도시되지 않음)는 2개의 파이프라인들 사이에서의 분리(decoupling) 메카니즘으로서 작용한다.
명령 페치 파이프라인은 두 단계를 포함한다. 제 1 단계는 다음의 프리페치 어드레스가 계산되는 명령 어드레스 발생(IAG, Instruction Address Generation)단계이다. 제 2 단계는 원하는 명령들이 메모리로부터 페치되는 명령 페치(Instruction fetch) 사이클이다. 피연산자 실행 파이프라인 역시 두 단계를 포함하고, 여기서 각 단계는 단일 명령의 실행 중 두 기능들을 위해 사용될 수 있다. 제 1 단계는 피연산자 페치 사이클(OC, Operand fetch Cycle)을 갖는 디코딩및 선택(DS, Decode & Select) 단계이다. 제 2 단계는 실행(EX, EXecute) 단계를 갖는 어드레스 발생(AG, Address Generation) 단계이다.
두 레지스터들 사이에서 정보가 통신되는 명령에 대하여, 2개의 OEP 단계들은 각각 한번씩 액세스된다. 레지스터 피연산자들은 OC 단계 동안 액세스되고, 그후 명령 실행은 실제로 EX 단계에서 실행된다. 따라서, OEP 동작들은 OC로부터 EX로 진행한다.
메모리 위치와 레지스터 사이에서 정보가 통신되는 명령에 대해서, 각 파이프라인 단계는 두 번 액세스된다. 첫 번째로, 피연산자 어드레스에 대한 요소들이 DS 단계에서 선택된다. 두 번째로, 이들 요소들 각각이 AG 단계에서 피연산자 어드레스를 형성하기 위해 합산된다. 세 번째로, 메모리 피연산자가 OC 단계에서 다른 임의의 레지스터 피연산자들에 따라 액세스되고, 네 번째로, 실제 명령 실행이 EX 단계에서 수행된다. 명령의 이와 같은 형태에 대해, OEP 동작들은 DS에서 AG, OC, 및 EX의 순서로 이루어진다.
명령들의 다른 형태에 대해, 각 파이프라인 상태 내의 두 동작들은 동시에 수행된다. 명령들의 이러한 형태에 대해서, OEP 동작들은 DS 및 OC에서 AG 및 EX로 이루어진다.
이 예에 있어서, 레지스터(AO)의 내용은 "타겟"의 명령 어드레스를 규정한다고 가정한다. JMP 명령이 피연산자 실행 파이프라인의 AGEX 단계를 점유함으로써, 명령 타겟 어드레스가 "타겟"으로서 계산된다. 이 흐름-변경(change-of-flow) 동작은 명령 페치 파이프라인으로 하여금 프리페치 어드레스들의 현재의 스트림을 버리고 "타겟" 어드레스에서 시작하는 새로운 스트림을 규정하도록 한다. 본 발명의 이 실시예에 있어서, 이 흐름-변경 JMP 명령은 2개의 파이프라인들로 하여금 새로운 명령 스트림이 수립되도록 하기 위해, AGEX 및 IAG 단계에서 연결되도록 한다. 흐름-변경이 발생되면, 두 파이프라인들은, 새로운 어드레스 스트림에서 순차적으로 프리페치를 계속하면서, 명령 페치 파이프라인과의 정상의 분리된 동작 모드로 복귀한다. 따라서, 타겟, 타겟+4, 및 타겟+8의 어드레스들이 이어서 페치될 것이다.
JMP 명령이 그의 피연산자 실행 파이프라인 단계를 종료하면, CPU(2)는 내부 CPST 신호 상에 "취해진 브렌치" 값을 시그널링한다. 따라서, 내부 CPST 신호는 $5의 값을 갖는다. 본 발명의 이 실시예에 있어서, 실제 PST 신호 및 DDATA 신호는 내부의 상대(counterpart)로부터 한 타이밍 사이클만큼 지연된다. CPU(2)가 새로운 어드레스에서 명령들을 프리페치함으로써, FIFO 저장 버퍼(70)는 명령 페치 파이프 라인의 IC 사이클의 끝에서 명령 어드레스 타겟을 포착한다. 다음 타이밍 사이클에서, 다수의 멀티플렉서들(80)은 DDATA 신호 상에 디스플레이될 2바이트의 정보를 나타내는 PST 신호에 "마커"를 삽입한다. 따라서, PST 신호는 $9의 값을 갖는다. 다수의 멀티플렉서들(80)의 동작은 제어 회로(60)에 의해 제어된다. PST 신호 상의 마커의 출현에 이어, 다수의 멀티플렉서들(80)은 최하위 니블(3 내지 0 비트에서 15 내지 12 비트까지)로 시작하는 포착한 명령 어드레스 타겟의 하위 16비트를 디스플레이하도록 진행한다.
내부 PST 값(도 2의 CPST 신호)은 제 1 타이밍 사이클에서 $5 값을 전송한다. 도 10에 도시된 바와 같이, PST 값이 $5 값을 가질 때, 데이터 프로세서는 취해진 브렌치 명령의 실행을 시작한다. 이것은 레지스터(AO)에 의해 지정된 어드레스에 프로그램 흐름을 간접 전송하는 JMP 명령에 대응한다. 도 11에 도시된 제 1 타이밍 사이클 동안, 내부 DDATA 신호(도 2의 FIFO 신호)는 $0 값을 전송한다. 도 9에 도시된 바와 같이, DDATA 값이 $0 값을 저장할 때, 데이터 프로세서(3)에서 중단점들은 인에이블되지 않는다.
제 2 타이밍 사이클동안, JMP 명령에 대한 타겟 어드레스가 내부 DDATA 값을 통해 제공되는 정보의 다음 두 바이트에서 지정되는 것을 나타내기 위해 내부 PST 값은 $9 값을 전송한다. 이 시점에, 내부 DDATA 신호는 $0 값의 전송을 계속한다. 상기 언급한 바와 같이, 내부 PST 값이 $8, $9, $A, 또는 $B의 상태 값을 전송할 때, DDATA 신호를 통해 외부에서 제공되는 값들을 한정하기 위해 내부 PST 신호가 사용된다. 이 동작에 있어서, 내부 DDATA 신호 상의 어느 값들이 요구되는 타겟 어드레스 정보를 제공하는지를 나타내기 위해 내부 PST 신호가 "마커"로서 사용된다. 내부 PST 신호는 실제 데이터가 내부 DDATA 신호 상에 디스플레이되기 한 타이밍 사이클 전에 이들 상태 값과 함께 인코딩된다.
제 3 타이밍 사이클동안, 내부 PST 값은 명령 실행이 계속되는 것을 나타내기 위해 $0 값을 전송한다. 또한, 제 3 타이밍 사이클동안, 내부 DDATA 신호는 타겟 어드레스 값의 3 내지 0 비트를 제공한다.
제 4 타이밍 사이클동안, CPST 값은 타겟 어드레스에 위치한 제 1 명령에 의해 규정된 값을 나타낸다. 이 때에, 내부 DDATA 신호는 타겟 어드레스 값의 7 내지 4 비트를 전송한다. 이어서, 제 5 및 제 6 타이밍 사이클들에 있어서, 내부 DDATA신호는 각각 타겟 어드레스 값의 11 내지 8 비트와 15 내지 12 비트를 제공한다. 이 방법에 있어서, 외부 개발 시스템(7)은 가변 어드레싱으로 브렌치 동작의 현재의 기록과 실시간으로 간접적으로 결정된 어드레스 위치 모두를 관측할 수 있다.
다수의 멀티플렉서들(80)은 내부 PST 신호 및 내부 DDATA 신호를 각각 PST 신호 및 DDATA 신호로서 외부 개발 시스템(7)에 제공한다. PST 신호 및 DDATA 신호는 집적 회로 핀들(자세히 도시되지 않음)을 통해 제공된다. 또한, 집적된 회로 핀들을 통해 제공된 PST 신호 및 DDATA 신호는, 내부 PST 신호 및 내부 DDATA 신호를 통해 정보가 전송된 한 타이밍 사이클 후, 각각 정보를 통신함을 주목해야 한다.
이와 같은 실시간 관측을 허용함으로써, 외부 개발 시스템(7)은 실패를 보다 빠르고 보다 정확하게 식별하고 분리할 수 있다. 또한, 실시간 트레이스 관측이 2부 개발 시스템(7)에 제공되는 동안, 데이터 프로세서(3)의 CPU(2)는 명령들의 실행을 계속하고, 일반적으로 DDATA 신호 및 PST 신호의 제공에 의해 영향을 받지 않는다.
또한, 상기의 실시예가 JMP 명령을 실행하기 위한 트레이스 기능의 사용을 설명하였지만, 본 발명은 데이터 프로세서(3)의 동적 실행 경로를 완벽하게 트레이스하기 위해 사용될 수도 있다. JMP 명령으로 예시된 바와 같이, 동적 실행 경로의 트레이스는 어떠한 흐름 변경 동작에 의해 복잡해진다. 예를 들어, 일부 브렌치 명령들은, 타겟 명령 어드레스의 계산이 상대 PC(프로그램 카운터) 또는 절대 어드레스에 의한 것이 아니라 프로그램 가시화 레지스터의 사용을 수반하는, 가변 어드레싱을 사용하여 실현될 수도 있다.
가변 어드레싱을 사용하는 명령들에 있어서, 본 발명은 지정된 시퀀스에서 DDATA 신호 및 PST 신호를 제공하여 타겟 어드레스가 정확하게 결정되어 외부 개발 시스템(7)에 제공되도록 한다. 우선, 취해진 브렌치 명령의 실행이 다수의 집적 회로 핀들을 통해 전송되는 PST 신호에 의해 식별된다. 도 10의 인코딩에서 도시된 바와 같이, PST 신호는 취해진 브렌치 명령이 PST 신호가 $5의 값을 가질 때 실행됨을 나타낸다. 다음에, 타겟 어드레스가 DDATA 신호 상에 디스플레이될 것임을 나타내기 위해 PST 신호가 사용될 수도 있다. PST 신호의 인코딩은 DDATA 신호들을 통해 디스플레이될 바이트의 수를 식별한다. 그 후, 타겟 어드레스는 DDATA 신호를 사용하는 후속의 타이밍 사이클들 동안 선택적으로 이용 가능하다. DDATA 신호 상에 디스플레이되는 타겟 어드레스의 비트 수는 외부 사용자에 의해 제어되는 구성가능한 파라미터이다.
본 발명은 동적으로 실행되고 데이터 프로세서(3)의 CPU(2)의 수행에 중요한 영향을 미치지 않는 훌륭한 트레이스 기능을 제공한다.
본 발명에 의해 실현되는 실시간 트레이스 기능에 있어서, PST 신호에 의해 규정되는 실행된 명령 스트림과 DDATA 신호에 의해 제공되는 포착된 데이터의 유용성 사이에 엄격한 동기화가 존재함을 주목해야 한다. 본 명세서에서 설명된 본 발명의 실시예에 있어서, DDATA 신호는 적절한 명령과 쉽게 관련될 수 있는 것과 같이 엄격한 순서가 존재한다. 이 순서는 다음의 예에서 더 상세하게 설명된다. 다음의 코드는 다음의 예에서 실행된다고 가정한다.
상기 예에 있어서, CSR이 브렌치 타겟 어드레스 정보의 두 바이트를 디스플레이하도록 구성되면, 모든 피연산자들이 M-버스(23) 액세스를 발생하면, 또한 판독 및 기록 피연산자들이 포착되면, PST 신호와 DDATA 신호 상에 결과의 출력은 다음과 같이 나타난다.
PST DDATA 설명
$1 ---- 1316에서의 명령 시작
$1 ---- 1318에서의 명령 시작
$b ---- 1318에서의 명령에 대한 피연산자 기록
0 [3:0] 1318에서의 명령에 대한 기록 피연산자로부터의 비트
0 [7:4] 1318에서의 명령에 대한 기록 피연산자로부터의 비트
0 [11:8] 1318에서의 명령에 대한 기록 피연산자로부터의 비트
0 [15:12] 1318에서의 명령에 대한 기록 피연산자로부터의 비트
0 [19:16] 1318에서의 명령에 대한 기록 피연산자로부터의 비트
0 [23:20] 1318에서의 명령에 대한 기록 피연산자로부터의 비트
0 [27:24] 1318에서의 명령에 대한 기록 피연산자로부터의 비트
0 [31:28] 1318에서의 명령에 대한 기록 피연산자로부터의 비트
$1 ---- 131c에서의 명령 시작
$b ---- 131c에서의 명령에 대한 피연산자 기록
0 [3:0] 131c에서의 명령에 대한 기록 피연산자로부터의 비트
0 [7:4] 131c에서의 명령에 대한 기록 피연산자로부터의 비트
0 [11:8] 131c에서의 명령에 대한 기록 피연산자로부터의 비트
0 [15:12] 131c에서의 명령에 대한 기록 피연산자로부터의 비트
0 [19:16] 131c에서의 명령에 대한 기록 피연산자로부터의 비트
0 [23:20] 131c에서의 명령에 대한 기록 피연산자로부터의 비트
0 [27:24] 131c에서의 명령에 대한 기록 피연산자로부터의 비트
0 [31:28] 131c에서의 명령에 대한 기록 피연산자로부터의 비트
$1 ---- 1320에서의 명령 시작
$b ---- 1320에서의 명령에 대한 피연산자 기록
0 [3:0] 1320에서의 명령에 대한 기록 피연산자로부터의 비트
0 [7:4] 1320에서의 명령에 대한 기록 피연산자로부터의 비트
0 [11:8] 1320에서의 명령에 대한 기록 피연산자로부터의 비트
0 [15:12] 1320에서의 명령에 대한 기록 피연산자로부터의 비트
0 [19:16] 1320에서의 명령에 대한 기록 피연산자로부터의 비트
0 [23:20] 1320에서의 명령에 대한 기록 피연산자로부터의 비트
0 [27:24] 1320에서의 명령에 대한 기록 피연산자로부터의 비트
0 [31:28] 1320에서의 명령에 대한 기록 피연산자로부터의 비트
$5 ---- 1324에서 취해진 브렌치 명령의 시작
$9 ---- 1324에서의 명령에 대한 타겟 어드레스
0 $c 타겟 어드레스(115c)로부터의 비트
0 $5 타겟 어드레스(115c)로부터의 비트
0 $1 타겟 어드레스(115c)로부터의 비트
0 $1 타겟 어드레스로(115c)부터의 비트
$b ---- 1324에서의 명령에 대한 피연산자 기록
0 $8 1324에서의 명령에 대한 복귀 어드레스로부터의 비트
0 $2 1324에서의 명령에 대한 복귀 어드레스로부터의 비트
0 $3 1324에서의 명령에 대한 복귀 어드레스로부터의 비트
0 $1 1324에서의 명령에 대한 복귀 어드레스로부터의 비트
0 $0 1324에서의 명령에 대한 복귀 어드레스로부터의 비트
0 $0 1324에서의 명령에 대한 복귀 어드레스로부터의 비트
0 $0 1324에서의 명령에 대한 복귀 어드레스로부터의 비트
0 $0 1324에서의 명령에 대한 복귀 어드레스로부터의 비트
$1 ---- 115c에서의 명령 시작
상기 제공된 예에 있어서, PST 신호 및 DDATA 신호는 동기화된 상태로 유지되어, DDATA 신호 상에 디스플레이되고 있는 주어진 피연산자가 주어진 명령과 관련될 수 있도록 항상 보장될 수도 있음을 주목해야 한다. 설명을 명확하게 할 목적으로, 상기 예는 DDATA 신호와 0이 아닌 PST 값 사이의 중복을 예시하지 않았다. 그러나, 이것은 발생할 수도 있지만, PST 신호와 DDATA 신호 사이의 관계는 위반되지 않는다.
실시간 디버그 지원
실시간 트레이스 기능들 외에, 본 발명은 실시간 디버그 기능들을 실행하기 위한 회로 및 방법을 제공한다. 많은 데이터 프로세서들, 특히, 공지된 임베디드 시스템들(embedded systems)에 있어서, 데이터 프로세서는, 시스템 제약사항, 또는 실패 회로를 식별하는 능력, 또는 데이터 프로세서가 정상 모드에서 더 이상 동작할 수 없을 때의 프로그램으로 인해 디버그 동작 동안 정지되지 않을 수도 있다. 본 발명은 데이터 프로세서를 정시키지 않고 데이터 프로세서의 실시간 동작을 최소로 강제시킴으로써 디버그 동작을 실행한다.
중단점 동작들은 전형적으로 프로그래밍 이벤트를 식별하기 위해 디버깅 동작동안 사용된다. 프로그래밍 이벤트를 만날 때, 중단점 신호가 표명이 되고 소프트웨어 프로그램의 상태를 결정하기 위해 데이터가 검색된다. 트레이스 기능과 유사하게, 중단점 동작은 외부 사용자로 하여금 다수의 선택된 레지스터들 각각의 상태와 메모리 위치들을 알아낼 수 있도록 하여 데이터 처리 에러들이 식별될 수도 있도록 한다.
본 발명은 이와 같은 중단점 동작들을 수행하기 위해 다수의 하드웨어 중단점 레지스터들(50)과 중단점 회로(100)를 제공한다. 본 발명에 있어서, 프로그램 카운터의 값 또는 프로그램 카운터 마스크, 피연산자 어드레스 범위, 및 데이터 값 또는 데이터 마스크 값에 기초한 중단점 동작들이 모두 실현된다. 또한, 본 발명에서 실현되는 중단점 동작들은, 정확한 트리거 응답이 다수의 제어 레지스터들(40)의 트리거 규정 레지스터(TDR)를 통해 프로그램될 수 있는, 1-레벨 트리거 또는 2-레벨 트리거로 구성될 수도 있다. 본 발명을 사용하는 중단점 동작의 실행이 이하보다 상세하게 설명된다.
다수의 하드웨어 중단점 레지스터들(50) 각각은 외부 개발 시스템(7) 또는 데이터 프로세서(3)의 CPU(2)에 의해 기록될 수도 있다. 도 3에 도시된 바와 같이, 어드레스 중단점 레지스터들(ABLR, ABHR)은 중단점 기능을 트리거하기 위해 사용될 수도 있는 데이터 처리 시스템(5)의 피연산자 논리 어드레스 공간 내의 영역을 규정한다. 도 6에 도시된 어드레스 속성 중단점 레지스터(AABR)는 중단점 기능을 위한 트리거에서 부합될 다수의 어드레스 속성들 및 마스크를 규정한다. ABLR 및 ABLR 어드레스 값들과 같이, AABR에 저장된 속성 값은 K-버스(25)를 통해 전송되는 어드레스 속성 신호와 비교된다.
다수의 하드웨어 중단점 레지스터들(50) 또한 다수의 프로그램 카운터 중단점 레지스터들을 포함한다. 다수의 프로그램 카운터 중단점 레지스터들은 중단점 기능을 트리거하기 위해 사용될 수도 있는 데이터 처리 시스템(5)의 명령 논리 어드레스 공간 내의 영역을 규정한다. 프로그램 카운터 중단점(PBR) 값은 프로그램카운터 중단점 마스크(PBMR) 레지스터에 저장된 값에 의해 마스크될 수도 있다. 본 발명의 일 실시예에서, PBMR에 저장된 상응하는 "0" 값을 갖는 PBR의 이들 비트들만 데이터 처리 시스템(5)의 프로그램 카운터 값과의 비교 동작에 사용된다. 프로그램 카운터 값은 데이터 처리 시스템(5)의 CPU(2)의 프로그램 카운터 레지스터(도시되지 않음)에 저장됨을 주목해야 한다.
프로그램 카운터 중단점 레지스터들에 부가하여, 다수의 하드웨어 중단점 레지스터들(50)은 다수의 데이터 중단점 레지스터들을 포함한다. 다수의 데이터 중단점 레지스터들은 데이터 중단점 레지스터(DBR)와 데이터 중단점 마스크 레지스터(DBMR)를 포함한다. DBR은 데이터 처리 시스템(5)이 디버그 동작을 수행할 때 트리거를 형성하기 위해 사용될 수도 있는 특수 데이터 패턴을 규정하는 데이터 값을 저장한다. DBMR에 저장된 데이터 마스크 값은 DBR에 저장된 데이터 값을 마스크한다. 따라서, 본 발명의 일 실시예에 있어서, DBMR에 저장된 상응하는 "0" 값을 갖는 DBR에 저장된 이들 비트들만이, 트리거 조건이 충족되는지를 결정하기 위해, K-버스(25)를 통해 전송되는 데이터 신호들과의 비교 동작에 사용될 수도 있다.
다수의 하드웨어 중단점 레지스터들(50) 각각은 다수의 제어 레지스터들(40)의 TDR를 사용하는 트리거들에 따라 다르게 구성될 수도 있다. TDR에 의해 표시된 구성과 상관없이, 트리거된 중단점의 표시는, DDATA 신호가 포착한 피연산자들과 어드레스들을 디스플레이하지 않을 때는 언제나 DDATA 신호 상에 제공된다. DDATA 신호의 출력은 도 9에 도시되어 있다.
도 9는 DDATA 신호의 3 내지 0 비트를 통해 제공되는 값과 중단점 상태 사이의 관계를 도시한다. CSR의 31 내지 28 비트는 DDATA 신호의 3 내지 0 비트에 대응함을 주목해야 한다.
DDATA 신호가 $0의 값을 가질 때, 중단점들은 인에이블되지 않는다. DDATA 신호가 $1의 논리 값을 제공할 때, 디버그 모듈(10)은 트리거될 레벨 1의 중단점을 기다린다. 상기 설명한 바와 같이, 레벨 1의 중단점의 속성들은 트리거 규정 레지스터(TDR)의 15 내지 0 비트에 의해 규정된다. DDATA 신호에 의해 $2의 논리 값이 제공되면, 레벨 1의 중단점이 트리거된다. DDATA 신호가 $5의 논리 값을 제공할 때, 디버그 모들(10)은 트리거될 레벨 2의 중단점을 기다린다. 상기 설명한 바와 같이, 레벨 2의 중단점의 속성들은 트리거 규정 레지스터(TDR)의 31 내지 16 비트에 의해 규정된다. DDATA 신호에 의해 $6의 논리 값이 제공되면, 레벨 2의 중단점이 트리거된다.
중단점 동작의 상태는 또한 CSR의 31 내지 28 비트에 저장됨을 주목해야 한다.
디버그 동작 실행 이전에, 중단점 값은 다수의 하드웨어 중단점 레지스터들(50) 중 적절한 하나의 레지스터에 저장되어야 한다. 중단점 값은 직렬 인터페이스(30)를 통한 외부 개발 시스템(7)에 의해 또는 K-버스(25)를 통한 CPU(2)에 의해 제공될 수도 있다.
외부 장치로부터 이 기록 기능을 수행하기 위해, 외부 개발 시스템(7)은 다수의 하드웨어 중단점 레지스터들(50) 중 사전에 선택된 하나의 레지스터에 데이터를 로드하는 명령으로 DSDI 신호 및 DSCLK 신호를 사용하여 직렬 인터페이스(30)로이동한다. 본 발명의 일 실시예에 있어서, 명령의 제 1 부분은 DSDI 신호에 의해 제공되고 DSCLK 신호에 의해 클럭킹된다. 명령들의 부가적인 부분들이 이어서 제공된다. 명령의 모든 부분은 정보의 16 비트 패킷이 완료될 때까지 레지스터(32)에 저장된다. 본 발명의 대안적인 실시예들은 본 발명의 이 실시예에서 요구되는 16비트보다 많거나 적은 비트를 포함할 수도 있음을 주목해야 한다.
본 발명의 다른 실시예에 있어서, 중단점 값은 데이터 프로세서(3)의 CPU(2)에 의해 다수의 중단점 레지스터들(50)중 사전에 선택된 하나의 레지스터에 기록된 값에 의해 결정될 수도 있다. CPU(2)가 다수의 중단점 레지스터들(50) 중 사전에 선택된 하나의 레지스터에 값을 기록할 때, 그 값은 도 3에 도시된 중단점 회로(100)의 임시 레지스터(170)에 제공된다. 그 값은 K-버스(25)를 통해 임시 레지스터(170)에 제공된다. 그 값은 임시 레지스터(170)로부터 16 비트 패킷들로 레지스터(32)에 전송되어 저장된다. 상술된 바와 같이, CPU가 CSR에 기록하기 때문에, KDATA 신호를 통해 전송되는 피연산자 값은, CPU(2)에 의해 제어 버스(15)를 통해 제어 회로(20)에 제공되는 제어 신호들을 사용하여 임시 데이터 레지스터(170)에 포착된다. 따라서, 중단점 값들은 외부 개발 시스템(7)으로부터 레지스터(32)에 제공되는 것과 동일하게 다수의 레지스터들(40)에 나타난다.
중단점 값이 다수의 중단점 레지스터들(50) 중 사전에 선택된 하나의 레지스터에 기록되면, CPU(2)는 정상 동작 모드에서 프로그래밍 코드를 실행한다. 그 프로그래밍 코드의 실행동안, 어드레스 정보는 K-버스(25)의 KADDR 신호를 통해 통신되고, 데이터 정보는 K-버스(25)의 KDATA 신호를 통해 통신된다. 또한, CPU(2)의프로그램 카운터 정보는 프로그램 카운터 중단점 비교 동작을 위해 임시 PC 레지스터(125)에 저장된 값을 계속하여 갱신한다.
어드레스, 데이터 및 프로그램 카운터 정보가 하드웨어 회로(100)에 전송됨으로써, 비교기들(130, 140, 180, 135)은 정보를 수신하고 데이터 프로세서(3)의 수행에 악 영향을 미치지 않고 선택적으로 비교 동작들을 수행한다. 또한, 다수의 제어 값들이 다수의 제어 레지스터들(50) 중 TDR로부터 제어 버스(15)를 통해 하드웨어 회로(100)에 제공된다. 다수의 제어 값들은, 하드웨어 회로(100)를 사용하여 트리거 동작을 선택적으로 구성하는 TDR의 상술된 값들을 포함한다.
예를 들어, 외부 개발 시스템(7)이 어드레스가 어드레스들의 특정 범위 내에 있을 때 중단점이 표명이어야 함을 결정하면, 외부 개발 시스템(7)은 직렬 인터페이스(30)를 사용하여 상위 어드레스 값을 도 3의 ABHR(110)에, 하위 어드레스 값을 도 3의 ABLR(120)에 기록해야 한다. 그러나, 비교기(130)와 비교기(140)가, K-버스(25)의 KADDR 신호에 의해 제공된 어드레스가 ABLR(120) 및 ABHR(110)에 저장된 어드레스들에 의해 규정된 범위 내에 있는지의 여부를 결정하기 전에, 다수의 제어 레지스터들(40) 중 TDR은 제어 버스(15)를 통해 적절한 제어를 제공해야 한다.
이 예에 있어서, 적절한 제어는 표명된 인에이블 어드레스 범위(EAR) 비트 또는 표명된 인에이블 어드레스 중단점 반전(EAI) 비트 중 하나를 포함한다. 상기 설명한 바와 같이, EAR 비트는 중단점으로 하여금 그 비트가 표명일 때 ABLR(120) 및 ABHR(110)에 의해 규정된 총괄적인 범위에서 트리거할 수 있도록 한다. 또한,표명일 때, EAI 비트는 중단점으로 하여금 ABLR(120) 및 ABHR(110)에 의해 규정된 범위의 배타적인 어드레스 범위 또는 그 범위 밖에서 트리거할 수 있도록 한다.
EAR 및 EAI 비트의 논리 값들에 따라, 비교기들(130, 140)은 KADDR 신호를 통해 전송된 어드레스 값이 ABHR(110) 및 ABLR(120)의 관련된 값보다 큰 지 또는 적은 지를 판단할 것이다. EAR 비트가 표명이고 KADDR 신호를 통해 전송된 어드레스 값이 ABHR(110) 및 ABLR(120)의 어드레스 값들에 의해 규정된 범위 내에 있으면, 비교기들(130, 140)은 중단점 신호를 표명으로 하여 사전에 선택된 트리거 포인트가 액세스되는 것을 나타낸다. 중단점 신호가 표명일 때, 제어 회로(20)는 멀티-컨덕터 중단점 제어 신호를 통해 코어(9)의 CPU(2)에 전송되는 BKPT(중단점) 신호, 디버그 인터럽트 신호, 및 Go 신호 중 하나를 표명한다.
중단점 신호가 표명일 때, 중단점 트리거의 발생은 TDR에서 규정된 것과 같은 응답을 발생한다. 데이터 프로세서(3)가 정지하면, BKPT 신호의 표명은 CPU(2)가 백그라운드 디버그 모드에서 실행을 정지하도록 강제한다. 백그라운드 디버그 모드는 이하 보다 상세하게 논의된다. 백그라운드 디버그 모드로 진입하기 위하여, TDR의 TRC 비트는 %01과 같아야 한다. TRC 비트는 TDR의 30 및 31 비트에 상응함을 주목해야 한다. 백그라운드 디버그 모드로 진입하고 프로그램 카운트 값에 기초한 중단점이 표명일 때, CPU(2)는 타겟이 된 명령이 실행되기 전에 데이터 프로세서(3)의 실행을 정지한다. 어드레스 및 데이터 비교들에 기초한 중단점들에 있어서, CPU(2)는 정지 전에 여러 개의 부가적인 명령들을 실행한다. 이러한 형태의 중단점 동작은 데이터 프로세서(3)가 트리거에 응답하여 정지하기 때문에, 비실시간 디버그 동작들에 대해서만 사용되어야 한다.
그러나, 데이터 프로세서(3)가 정지하지 않으면, 제어 회로(20)는 디버그 인터럽트 신호를 표명으로 하여 특수 디버그 인터럽트가 CPU(2)에 제공되어야 함을 나타내도록 한다. 특수 디버그 인터럽트가 CPU(2)에 제공되어야 할 때, TDR의 TRC 비트는 %10의 논리 값으로 설정된다. TRC 비트가 %10으로 설정되었을 때, 중단점 트리거는 제어 회로(20)에 의해 CPU(2)에 대한 특수 디버그 인터럽트로 변환된다. 특정 디버그 인터럽트는 CPU(2)가 인터럽트들에 대해 샘플링할 때까지 지연된다. CPU(2)는 명령당 한번만 샘플링한다. 특수 디버그 인터럽트가 표명일 때, 프로그램 카운터 값에 기초한 중단점은 타겟이 된 명령이 실행되기 전에 발생한다. 이것은, 프로그램 카운터 비교 동작이, 인터럽트가 지연 중인지를 결정하기 위해 CPU(2)가 샘플링하는 것과 동시에 인에이블되기 때문에 가능하다. 어드레스 및 데이터 비교들에 기초한 중단점들에 있어서, CPU(2)는 인터럽트 동작을 실행하기 전에 여러 개의 부가적인 명령들을 실행할 수도 있다.
특수 디버그 인터럽트가 CPU(2)에 의해 인식될 때, CPU(2)는 소프트웨어 프로그램의 실행을 중지시키고 예외 처리 루틴을 개시시킨다. 예외 처리 루틴의 개시에 있어서, CPU(2)는 에뮬레이터 동작 모드로 진입한다. CPU(2)가 에뮬레이터 동작 모드에서 동작 중일 때, 모든 인터럽트들이 무시됨을 주목해야 한다. 다수의 제어 레지스터들(40)의 CSR의 MAP 비트의 상태에 따라서, 에뮬레이터 동작 모드는 모든 메모리 액세스들을 다수의 하드웨어 중단점 레지스터들(50) 중 AABR 레지스터의 TT 값 및 TM 값에 의해 지시되는 특별히 맵핑된 어드레스 공간으로 강제할 수 있다.이 예에 있어서, TT 값은 $2와 동일하고 TM 값은 $5(피연산자들) 또는 $6(명령들)중 하나와 동일하다.
표준 8 바이트의 예외 스택이 생성된 후, CPU(2)는 유일한 예외 벡터를 페치한다. CPU(2)는 유일한 예외 벡터에 포함된 명령 어드레스에서 실행을 계속한다. CPU(2) 내의 디버그 인터럽트 핸들러는 수퍼바이저 명령 집합을 사용하여 다수의 필요한 저장 동작들을 수행하도록 프로그램될 수도 있다. 예로서, 디버그 인터럽트 핸들러는 모든 프로그램 가시화 레지스터들 및 임의의 특수 메모리 위치의 상태를 예약된 메모리 공간에 저장할 수도 있다. 예약된 메모리 공간은 메모리(6)에 위치할 수도 있고, 또는 데이터 처리 시스템(5)의 임의의 다른 메모리에 위치할 수도 있다. 요구되는 동작들이 완료되면, 예외로부터 복귀(TRE) 명령이 실행되고 CPU(2)는 에뮬레이터 동작 모드로부터 빠져나간다. CPU(2)가 디버그 인터럽트 신호를 수신하고 에뮬레이터 동작 모드로 진입할 때, PST 신호는 이 조건을 시그널링하는 $D의 값을 갖는다. PST 신호는 디버그 인터럽트가 처리되는 시간으로부터 디버그 인터럽트 예외 처리 루틴의 제 1 명령이 페치될 때까지 이 값을 갖는다. 또한, PST 신호는 CPU(2)가 에뮬레이터 동작 모드로부터 빠져 나왔음을 나타내기 위해 $7의 값을 갖는다. 또한, 디버그 인터럽트 핸들러가 디버그 예외 처리 루틴의 실행을 완료하면, 외부 개발 시스템(7)은 메모리(6) 내의 예약된 메모리 위치들 또는 예약된 메모리 위치들을 포함하는 데이터 처리 시스템(5) 내의 다른 메모리를 액세스할 수도 있다.
디버그 인터럽트는 데이터 프로세서(3)의 정상 동작에서의 가벼운 강제가 허용될 수 있는 실시간 디버그 동작들을 위해 사용될 수 있지만, 데이터 프로세서(3)를 정지시키는 것은 선택 사항이 아니다. 데이터 프로세서의 에뮬레이터 모드로의 진입 또는 이로부터 빠져나가는 것은 PST 신호 상의 유일한 값들에 의해 시그널링된다는 것을 주목해야 한다.
또한, 범위가 아닌 단일의 어드레스, 데이터 값 또는 데이터 값의 마스크, 및 프로그램 카운터 값 또는 프로그램 카운터 값의 마스크에 기초한 다른 비교들도 본 발명에서 실현될 수 있음을 주목해야 한다. 상기 예에서 설명된 어드레스 범위 비교에 대해서, 데이터 값, 데이터 값의 마스크, 프로그램 카운터 값, 및 프로그램 카운터 값의 마스크에 기초한 비교들은 제어 버스(15)를 통해 적절한 제어 값들을 제공하기 위해 TDR을 필요로 한다.
멀티-레벨 트리거 구조
본 발명에 의해 수행되는 실시간 디버그 동작은 2 레벨의 트리거 값들을 제공하기 위해 확장될 수도 있다. 본 발명의 이 실시예에 있어서, 31 내지 16 비트는 제 2 레벨 트리거를 규정하고, 15 내지 0 비트는 제 1 레벨 트리거를 규정한다. 트리거가 2 레벨 트리거로서 구성될 때, 트리거는 "if-then-if"의 조건 구조와 유사한 방식으로 기능한다. 예를 들어, 트리거의 제 1 조건 또는 레벨이 충족되면, 제 2 조건 또는 레벨은, 트리거가 데이터 처리 시스템(5)에 의해 실행될 중단점 기능을 인에이블하기 전에 충족되어야 한다. 이와 같은 조건적인 트리거 구조는 외부 개발 시스템(7)으로 하여금 증가된 유연성 및 정확도를 갖고 기능하도록 한다. 본 발명의 이 실시예에 있어서, 트리거 구조들의 2 레벨들만이 실현된다. 그러나, 트리거 구조들의 부가적인 레벨들이 실현될 수도 있다.
2 레벨 트리거 동작의 예로서, 외부 개발 시스템(7)은, $DEADBEEF의 값과 같은 프로그램 카운터가 이어지는, 어드레스 $0000FACE에 대해 $FEED가 아닌 임의의 다른 값의 사용자 모드 피연산자 워드 기록으로서 트리거를 규정하기를 원한다고 가정한다. 제 1 레벨 트리거는 어드레스 $0000FACE에 대한 $FEED가 아닌 임의의 다른 값의 사용자 모드 피연산자 워드 기록일 것이다. 제 2 레벨 트리거는 프로그램 카운터가 $DEADBEEF의 값과 같을 때 발생할 것이다.
이 동작을 실행하기 위하여, 외부 개발 시스템(7)은 $DEADBEEF 값을 프로그램 카운터 중단점 레지스터(PBR)(115)에 기록할 수도 있고, 또한 $000000000의 값을 프로그램 카운터 중단점 마스크 레지스터(PBMR)(190)에 기록할 수도 있다. 모든 "0"이 PBMR(190)에 기록될 때, PBR(115)에 저장된 모든 비트들은 임시 PC 레지스터(125)에 의해 제공된 프로그램 카운터 값과 비교된다. 비교 동작은 다수의 제어 레지스터들(40)의 TDR에 저장된 값에 응답하여 실행됨을 주목해야 한다.
외부 개발 시스템(7)은 또한 $0000FACE 값을 어드레스 중단점 하위 레지스터(ABLR)에 기록해야 하고, 또한 $0041 값을 도 6의 어드레스 속성 중단점 레지스터(AABR)에 기록해야 한다. ABLR(120)의 $0000FACE 값은, TDR의 구성이 비교가 발생할 수 있도록 할 경우, 비교기(140)가 중단점 신호를 표명으로 하는 값을 나타낸다. AABR에서의 $0041 값은 TM 값을 %001로, TT 값을 %00으로, SZ 값을 %10으로, R(판독) 비트를 0으로 설정한다. TM 값과 TT 값은 트리거가 사용자 모드 피연산자 워드 기록 동작일 것을 보장하도록 동작한다.
외부 개발 시스템(7)은 $0000FEED의 값을 중단점 회로(100)의 데이터 중단점 레지스터(DBR)(160)에 기록해야 한다. 외부 개발 시스템(7)은 또한 $000000000의 값을 데이터 중단점 마스크 레지스터(DBMR)(150)에 기록해야 한다. 모든 "0"이 DBMR(150)에 기록될 때, DBR(160)에 저장된 모든 비트들은 비교기(180)를 사용하여 KDATA 신호에 의해 제공된 데이터 값과 비교된다. 비교 동작은 다수의 제어 레지스터들(40) 중 TDR에 저장된 값에 따라 실행됨을 주목해야 한다.
최종적으로, 외부 개발 시스템(7)은 $20022824의 값을 다수의 제어 레지스터(40)의 TDR에 기록해야만 한다. TDR이 이 값을 가질 때, 제 1 레벨 트리거는 다음의 특성들을 갖는다. 이 예에서, EBL 비트는 표명, EDLW 비트는 부정, EDWL 비트는 표명, 및 EDWU, EDLL, EDLM, EDUM, 및 EDUU 비트는 모두 부정이다. DI 비트는 표명, AI 및 EAR 비트는 부정, EAL 비트는 표명, 또한 EPC 및 PCI 비트는 부정이다. 이 구성에 있어서, TDR은 DBR(160)에 저장된 값과 동일하게 저장되지 않는 워드 길이 데이터 값에 대해 중단점 신호를 표명으로 하도록 인에이블될 제 1 레벨 트리거를 구성한다. 또한, 상기 조건들이 각각 충족되고 ABLR(120)에 저장된 어드레스 값이 KADDR 신호에 의해 제공된 값에 상응할 때, TDR은 제 1 레벨 트리거를 표명으로 하도록 구성된다. TDR에 의해 결정된 상기 조건들 각각이 만족될 때, 제 1 레벨 트리거는 표명이 되고, 제 2 레벨 트리거는 중단점 신호가 표명이 되기 전에 만족되어야 한다.
또한, TDR이 이 값을 가질 때, 제 2 레벨 트리거는 다음의 특성들을 갖는다. 이 예에서, TRC 값은 %00이고, EBL 비트는 표명, EDLW, EDWL, EDWU, EDLL, EDLM,EDUM, 및 EDUU 비트는 모두 부정이다. DI, AI, EAR, EAL 비트들은 부정이고, EPC 비트는 표명이고 PCI 비트는 부정이다. 이 구성에 있어서, TDR은 PBR(115)에 저장된 값과 동일한 프로그램 카운터 값에 대한 중단점 신호를 표명으로 하도록 제 2 레벨 트리거를 구성한다. TDR에 의해 결정된 상기 조건들 각각이 만족될 때, 제 2 레벨 트리거는 표명이 되고, 중단점 신호는 표명이 될 수도 있다.
상기 언급한 바와 같이, 중단점 신호의 표명은 프로그램 가능한 트리거 응답을 발생시킬 수도 있다. 트리거 응답은 다수의 제어 레지스터들(40)의 TDR의 30 및 31 비트에 프로그램된다. 정확히 프로그램되었을 때, 데이터 프로세서(3)의 CPU(2)의 트리거 응답은 DDATA 신호를 통해 외부 개발 시스템(7)에 가시적인 트리거가 될 수 있도록 하고 내부 응답을 야기하지 않을 수도 있다. 제 2 트리거 응답은 CPU(2)가 실행을 중지시키고 CPU(2)가 정지 상태임을 PST 신호를 통해 외부에 나타내도록 강제한다. 제 3 트리거 응답은 CPU(2)에 대한 디버그 인터럽트를 발생한다. 상술된 바와 같이, 디버그 인터럽트는 다른 모든 인터럽트들보다 우선권에서 높고, CPU(2)로 하여금 에뮬레이터 동작 모드로 진입하여 유일한 예외 처리 루틴을 액세스하도록 한다. 에뮬레이터 동작 모드로의 진입 또는 이로부터 빠져 나오는 것은 PST 출력들 상에서 외부적으로 가시화된다.
디버그 모듈과 코어의 동시 동작
상술된 실시간 디버그 기능들을 지원하기 위하여, 본 발명은 코어(9)와 디버그 모듈(10)의 동시 동작을 지원한다. 디버그 모듈(10)을 위한 K-버스(25) 상의 버스 사이클들을 효과적으로 스케쥴링하는 조정 방법(arbitration scheme)은 본 발명에 있어서, 실시간 디버그 동작들의 효율적 실행을 허용하도록 실현된다. 조정 방법은 CPU(2)의 내부 명령 페치 파이프라인을 스톨함으로써 디버그 모듈(10)을 위한 버스 사이클들을 효과적으로 스케쥴링한다. 조정 방법은 디버그 모듈(10)이 K-버스(25)로의 액세스를 승인하기 전에 모든 피연산자 요청들이 CPU(2)에 의해 서비스될 때까지 기다린다. 디버그 모듈(10)은 버스 승인 신호를 수신하고, ABHR(110)에 저장된 요구되는 어드레스와 도 6의 AABR 내에 저장된 속성들로 K-버스(25)를 구동시킨다. 판독 요청에 있어서, 응답은 KDATA 신호 상에서 유도되고 임시 데이터 레지스터(170)에서 디버그 모듈(10)에 의해 포착된다. 기록 레퍼런스에 있어서, 기록 피연산자는 DBR(160)로부터 KDATA 신호 상에 유도된다. 디버그 모듈(10)은 K-버스(25)를 CPU(2)에 되돌리는 것을 포기하기 전에 하나의 버스 트랜잭션으로 이 동작을 수행한다. 따라서, 디버그 모듈(10)은 CPU(2)의 실시간 동작 거동에의 강제성을 최소화한다. K-버스(25)에 대한 조정 방법은 CPU(2)에 저장된 논리에 의해 실행된다.
CPU(2)와 디버그 모듈(10)의 동시 동작을 예시하는 예에 있어서, 외부 개발 시스템(7)은 디버그 기능 동안 메모리 판독 동작을 실행하는 것으로 가정한다. 메모리 판독 명령을 실행하기 위해, 외부 개발 시스템(7)은 메모리 위치를 액세스 위한 명령 및 어드레스에서 DSDI 신호 및 DSCLK 신호를 사용하여 직렬 인터페이스(30)로 이동한다. 본 발명의 일 실시예에 있어서, 명령의 제 1 부분은 DSDI 신호에 의해 제공되고, DSCLK 신호에 의해 클럭킹된다. 명령들의 부가적인 부분들이 이어서 제공된다. 명령의 모든 부분들은 정보의 16비트 패킷이 완료될 때까지 레지스터(32)에 저장된다. 본 발명의 대안적인 실시예는 본 발명의 이 실시예에 있어서 요구되는 16비트보다 많거나 적은 비트를 포함할 수도 있다.
본 명세서에 기술된 본 발명의 실시예에 있어서, 사전에 선택된 메모리 위치에 값을 기록하는 명령은 16비트 오피코드와 32비트 어드레스를 갖는 48비트 길이이다. 레지스터(32)는 단지 16 비트 길이이다. 따라서, 정보의 제 1 16비트 패킷이 완료될 때, 그 정보는 제어 버스(15)를 통해 제어 회로(20)에 전송된다. 제어 회로(20)는 수행되어야 할 동작의 형태를 결정하기 위해 정보의 제 1 16비트 패킷을 디코딩한다. 제어 회로(20)가 데이터의 제 1 16비트 패킷을 디코딩하고 프로그램된 메모리 위치로부터 판독 어드레스가 수행될 것임을 결정하면, 다수의 하드웨어 중단점 레지스터들(50) 중 ABHR(110)에 로드될 어드레스 정보의 후속 32비트를 인에이블하기 위해, 제어 회로(20)는 제어 버스(15)를 통해 제어 신호를 제공한다.
후속 데이터는 DSDI 신호를 통해 외부 개발 시스템(7)에 의해 직렬로 제공된다. 상술된 바와 같이, DSDI 신호에 의해 제공된 후속 데이터는 DSCLK 신호를 통해 클럭킹된다. 각각의 데이터 비트는 정보의 16 비트 패킷이 완료될 때까지 레지스터(32)에 저장된다. 정보의 제 2 16 비트 패킷이 완료될 때, 정보는 직렬 정보 신호를 통해 다수의 하드웨어 중단점 레지스터들(50) 중 ABHR(110)에 전송된다. 이어서, 외부 개발 시스템(7)에 의해 DSDI 신호 및 DSCLK 신호를 통해 부가적인 정보가 레지스터(32)에 직렬로 제공된다. 정보의 제 3 16 비트 패킷이 완료될 때, 정보는 직렬 정보 신호를 통해 다수의 하드웨어 중단점 레지스터들(50) 중 ABHR(110)에 전송된다.
피연산자 및 어드레스 정보가 수신되었을 때, 제어 회로(20)는 버스 요청 신호를 표명으로 한다. 버스 요청 신호는 K-버스(25)를 통해 CPU(2)에 전송된다. 또, 버스 요청 신호 및 버스 승인 신호는 디버그 모듈(10)과 CPU(2) 사이의 직접 접속이다. 버스 조정의 상세한 사항은 상기에 설명되었다.
버스 승인 신호가 표명일 때, ABHR(110)은 저장된 어드레스 정보를 KADDR 신호를 통해 K-버스(25)에 제공하도록 인에이블된다. 어드레스 정보는 메모리 위치를 판독하기 위해 메모리(6)에 의해 디코딩된다. 판독 동작이 실행되기 때문에, 메모리(6)는 K-버스(25)의 KDATA 신호 상에 메모리 위치에 상응하는 피연산자를 출력한다. 액세스되는 메모리는 메모리(6)로 제한되지 않음을 주목해야 한다. 액세스되는 메모리는 메모리(6)일 수도 있거나, 또는 데이터 처리 시스템(5)의 임의의 다른 메모리 위치일 수도 있다. KDATA 신호를 통해 전송되는 피연산자가 후속하여 중단점 회로(100)의 임시 데이터 레지스터(170)에서 포착된다. 피연산자는 후속적으로 내부 데이터 신호를 통해 레지스터(32)에 전송된다. 그 후 피연산자는 직렬 인터페이스(30)에 의해 DSDO 신호를 통해 32 타이밍 사이클에서 직렬로 이동된다. DSDO 신호는 외부 개발 시스템(7)에 제공된다.
또한, 피연산자가 KDATA 신호를 통해 전송된 후, CPU(2)는 처리 속도에의 최소의 강제로 데이터 처리 명령들의 실행을 다시 시작한다. 따라서, CPU(2)는 직렬 인터페이스(30)가 정보를 출력하는 동안 데이터 처리 기능들을 수행할 수 있다.
본 발명은 데이터 프로세서(3)가 특수 디버그 모드에서 동작하는 것을 요구하지 않고 CPU(2)와 디버그 모듈(10)의 동시 동작을 제공한다. 코어(9)와 디버그모듈(10) 사이에서 데이터, 어드레스 및 제어 정보를 통신하기 위한 K-버스(25)의 사용은 디버그 모듈(10)이 CPU(2)와 같이 동일한 메모리 위치들과 내부 레지스터들을 액세스하는 것을 허용한다. 따라서, 디버그 모듈은 CPU(2)가 액세스 가능한 모든 메모리 위치들과 내부 레지스터들을 액세스할 수 있다. CPU(2)와 디버그 모듈(10)을 동시에 동작시키는 능력은 외부 개발 시스템(7)으로 하여금 프로세서의 동작에 중요한 영향을 미치지 않고 내부 레지스터들과 데이터 프로세서(3)의 메모리에서의 가시화를 증가시키도록 한다.
또한, 디버그 모듈(10)과 CPU(2)가 동일한 내부 레지스터들과 메모리 위치들을 액세스하는 능력을 갖지만, CPU(2) 및 코어(9)의 나머지 부분은, 다수의 제어레지스터들(40) 중 CSR의 디버그 레지스터에 대한 프로세서 기록 금지(IPW) 비트가 설정되었을 때, 다수의 중단점 레지스터들(50)에 저장된 값을 수정하지 않을 수도 있다. CSR의 IPW 비트가 설정되었을 때, CPU(2)에 의해 개시된 임의의 기록 동작들은 금지된다. 또한, IPW 비트는 외부 개발 시스템(7)에 의해 제공되는 명령에 의해서만 수정될 수도 있다.
IPW 비트를 설정하기 위해, 외부 개발 시스템(7)은 데이터를 CSR에 로드하는 명령에서 DSDI 신호 및 DSCLK 신호를 사용하여 직렬 인터페이스(30)로 이동한다. 상술된 바와 같이, 본 발명의 일 실시예에 있어서, 명령의 제 1 부분은 DSDI 신호에 의해 제공되고 DSCLK 신호에 의해 클럭킹된다. 명령들의 부가적인 부분들은 후속하여 제공된다. 명령의 모든 부분들은 정보의 16 비트 패킷이 완료될 때까지 레지스터(32)에 저장된다. 본 발명의 대안적인 실시예들은 본 발명의 이 실시예에서요구되는 16 비트 보다 많거나 또는 적은 비트를 포함할 수도 있다.
본 명세서에 설명된 본 발명의 실시예에 있어서, 값을 CSR에 기록하는 명령은 16비트의 오피코드와 32비트의 데이터를 갖는 48비트 길이이다. 레지스터(32)는 단지 16비트의 길이이다. 이 기록 명령을 수행하기 위해, 외부 개발 시스템(7)은 데이터를 CSR에 로드하는 명령으로 DSDI 및 DSCLK 신호를 사용하여 직렬 인터페이스(30)로 이동한다. 명령의 제 1 부분은 DSDI 신호에 의해 제공되고 DSCLK 신호에 의해 클럭킹된다. 명령들의 부가적인 부분들은 후속하여 제공된다. 명령의 모든 부분들은 정보의 16 비트 패킷이 완료될 때까지 레지스터(32)에 저장된다.
본 명세서에 설명된 본 발명의 실시예에 있어서, 값을 CSR에 기록하는 명령은 16비트의 오피코드와 32비트의 데이터를 갖는 48비트 길이이다. 레지스터(32)는 단지 16비트의 길이이다. 따라서, 정보의 제 1 16비트 패킷이 완료될 때, 그 정보가 디코딩되고 후속하는 동작들이 구성되는 제어 회로(20)에 정보가 전송된다. 정보의 제 2 16 비트 패킷이 레지스터(32)에 로드되었을 때, 정보는 직렬 정보 신호를 통해 다수의 제어 레지스터들(40)에 전송된다. 제어 회로(20)로부터 제어 버스(15)에 의해 제공된 제어 정보를 사용하여, 직렬 정보 신호의 내용이 목적지 레지스터인 CSR의 상부 부분에 로드된다. 유사한 방식으로, 정보의 제 3 16 비트 패것이 레지스터(32)에 로드되고, 이후 다수의 제어 레지스터들(40)로 전송된다. 또, 제어 회로(20)에 의한 신호들을 사용하여, 직렬 정보 신호의 내용이 CSR의 하위 부분에 로드된다. 이러한 방식으로, 전체 48 비트 명령이 직렬로 디버그 모들(10)로 이동되고, 여기서 이 정보가 디코딩되고 피연산자 값이 CSR에 로드된다.
후속하는 데이터는 DSDI 신호를 통해 외부 개발 시스템(7)에 의해 직렬로 제공된다. 상술된 바와 같이, DSDI 신호에 의해 제공되는 후속하는 데이터는 DSCLK 신호를 통해 클럭킹된다. 데이터 비트들 각각은 정보의 16비트 패킷이 완료될 때까지 레지스터(32)에 저장된다. 정보의 제 2 16비트 패킷이 종료될 때, 정보는 직렬정보 신호를 통해 다수의 제어 레지스터들(40)에 전송된다. 정보의 제 2 16비트 패킷은 31 내지 16 비트로서 CSR에 저장된다. 이어서, 부가적인 정보는 외부 개발 시스템(7)에 의해 DSDI 신호 및 DSCLK 신호를 통해 레지스터(32)에 직렬로 제공된다. 정보의 제 3 16비트 패킷이 완료될 때, 그 정보는 직렬 정보 신호를 통해 다수의 제어 레지스터들(40)에 전송된다. 정보의 제 3 16비트 패킷은 15 내지 0 비트로서 CSR에 저장된다.
본 발명의 다른 실시예에 있어서, IPW 비트 이외의 모든 값들은 데이터 프로세서(4)의 CPU(2)에 의해 CSR에 기록된 값으로 구성될 수도 있다. CPU(2)가 값을 CSR에 기록할 때, 값은 도 6에 도시된 중단점 회로(100)의 임시 레지스터(170)에 제공된다. 값은 K-버스(25)의 KDATA 신호를 통해 임시 레지스터(170)에 제공된다. 임시 레지스터(170)로부터, 값은 16 비트 패킷들로 레지스터(32)에 전송되어 저장된다. 따라서, 다수의 제어 레지스터들(40)에서, 값들은 외부 개발 시스템(7)으로부터 레지스터(32)에 제공된 것과 동일하게 나타난다.
IPW 비트 및 CSR에 저장된 다른 값들은 제어 버스(15)를 통해 하드웨어 회로(100)에 제공된다. IPW 비트가 표명이고 CPU(2)가 ABHR(110), ABLR(120),DBMR(150), DBR(160), PBMR(190), 및 PBR(125) 중 하나에 저장된 값을 수정하려 할때, 코어(9)에 의해 개시된 임의의 기록 동작을 디스에이블하기 위해 IPW 비트가 상기 언급한 각 레지스터에 제공된다.
다수의 하드웨어 중단점 레지스터들(50)에 대한 기록 동작들을 효과적으로 디스에이블하기 위한 IPW 비트의 사용은, 데이터 프로세서(3)에서 실패 회로 및 에러 프로그램들을 분리하고 식별하기 위해 외부 개발 시스템(7)에 의해 프로그램된 조건이 CPU(2)에 의해 덮어 쓰여지지 않도록 보장한다.
리셋 예외 처리 동안의 디버그 동작
본 발명은, 리셋 동작을 위한 예외 처리 루틴이 개시되기 전에 외부 개발 시스템(7)으로 하여금 데이터 프로세서(3)의 중단점 동작을 실행하도록 하는 메카니즘을 제공한다. 외부 리셋 신호가 표명일 때, 다수의 제어 레지스터들(40) 각각의 내용이 개시된다. 외부 리셋 신호가 이어서 부정될 때, 실제 예외 처리 루틴의 시작 전에 데이터 프로세서(3)가 활동하지 않는 시간의 윈도우가 존재한다. 활동하지 않는 시간 동안 외부 중단점 신호가 외부 개발 시스템(7)에 의해 표명될 때, 본 발명은 타겟 메모리 값을 데이터 처리 시스템(5)에 다운로드하고 요구되는 임의의 하드웨어 레지스터 구성을 수행하기 위한 메카니즘 및 방법을 제공한다. 타겟 메모리 값은 단일의 값 또는 다수의 값들일 수도 있다.
타겟 메모리 값이 외부 개발 시스템(7)에 의해 다운로드되면, 다수의 제어 레지스터들(40) 및 다수의 하드웨어 중단점 레지스터들(50) 모두 또는 그 중 하나가 구성될 수도 있다. 또한, CPU(2), MMU/제어기(4), 및 시스템 버스 제어기(8)에포함된 하드웨어 레지스터들 또한 프로그램될 수도 있다. 최종적으로, 데이터 프로세서(3)는 "Go" 명령을 사용하여 재시작되어야 한다. 그러나, 본 발명에 있어서, "Go" 명령 수신시 실행되는 일련의 하드웨어 동작들은 CPU(2)가 중단점 동작을 실행하는 동안 수정되는 하드웨어 레지스터들의 기능이다. 외부 개발 시스템(7)이 CPU(2)의 프로그램 카운터 레지스터를 수정하지 않았다면, "Go" 명령은 데이터 프로세서로 하여금 정상의 리셋 예외 처리 루틴을 실행할 수 있도록 한다. 그러나, 외부 개발 시스템(7)이 CPU(2)의 프로그램 카운터 레지스터를 수정하였다면, "Go"명령은 데이터 프로세서로 하여금 정상의 리셋 예외 처리 루틴을 통과하고 프로그램 카운터 레지스터에 로드된 어드레스에 의해 식별된 명령의 실행을 시작할 수 있도록 한다.
이와 같은 리셋 및 중단점 동작 동안의 데이터 프로세서(3)의 동작이 이하보다 상세하게 설명된다. 리셋 신호는 표명이고 데이터 프로세서(3)의 CPU(2)에 제공되는 것으로 가정한다. 리셋 신호가 부정일 때, 외부 개발 시스템(7)은신호를 표명으로 한다. 디버그 모듈(10)의 제어 회로(10)는 다수의 중단점 제어 신호들 중 BKPT 신호를 K-버스(25)를 통해 CPU(2)에 표명으로 한다. 또, 제어 인터페이스는 디버그 모듈(10)과 CPU(2) 사이의 직접 접속임을 주목해야 한다.
CPU(2)가 표명된 BKPT 신호를 수신할 때, CPU(2)는 활동하지 않는 시간 윈도우와 데이터 프로세서(3)가 정지했다는 신호들을 지연시킨다. 이 시간 동안, 데이터 프로세서(3)가 정지된 동작을 갖는 것을 외부 개발 시스템(7)에 나타내기 위해 PST 신호들이 $F의 논리 값을 갖는다. 따라서, CPU(2)와 데이터 프로세서(3)는 리셋 예외 처리 루틴을 시작하기 전에 정지된다.
데이터 프로세서(3)가 정지된 동작들을 갖는 것을 PST 신호들이 나타내면, 외부 개발 시스템(7)은 다수의 데이터, 어드레스 및 제어 값들을 DSDI 신호와 DSCLK 신호를 통해 데이터 프로세서(3)에 다운로드한다. 다수의 데이터, 어드레스, 및 제어 값들은 프로그램의 메모리 영상 또는 메모리(6)에 저장될 데이터 값들이 될 수도 있다. 또한, 다수의 데이터, 어드레스, 및 제어 값들은 다수의 제어 레지스터들(40) 및 다수의 하드웨어 중단점 레지스터들(50)과 같은 다수의 구성 레지스터들 각각에 대한 다수의 초기화 값들을 제공할 수도 있다. 다수의 데이터, 어드레스, 및 제어 값들이 DSDI 신호를 통해 데이터 프로세서(3)에 제공될 때, 그 값의 각 비트는 직렬 인터페이스(30)를 통해 레지스터(32)에 제공됨을 주목해야 한다. 레지스터(32)가 풀일 때, 정보의 한 패킷이 직렬 정보 신호를 통해 다수의 하드웨어 중단점 레지스터들(50)에 제공된다. 다수의 하드웨어 중단점 레지스터들(50)에 있어서, 정보의 패킷은 임시 데이터 레지스터(170)와 같은 레지스터들에 저장된다.임시 데이터 레지스터(170)는 저장된 정보를 KDATA 신호를 통해 K-버스(25)에 후속하여 제공한다. K-버스(25)는 상기 정보를 코어(9)의 나머지 부분에 전송한다. 이 동작은 상기에 상세하게 설명되었으므로, 내부 저장 절차의 부가적인 설명은 생략한다.
다수의 데이터, 어드레스, 및 제어 값들이 데이터 프로세서(3)의 적절한 메모리 또는 레지스터 위치에 저장된 후, 외부 개발 시스템(7)은 DSDI 신호 및 DSCLK 신호를 통해 "Go" 명령을 데이터 프로세서(3)에 제공한다. 다수의 데이터, 어드레스, 및 제어 값들과 같이, "Go" 명령은 DSDI 신호를 통해 데이터 프로세서(3)에 제공된다. "Go" 명령의 각 비트는 직렬 인터페이스(30)를 통해 레지스터(32)에 제공된다. 레지스터(32)가 풀일 때, 정보의 한 패킷이 제어 버스를 통해 제어 회로(20)에 제공된다. 제어 회로(20)는 "Go" 명령을 디코딩하고 K-버스(25)를 통해 CPU(2)에 Go 신호를 제공한다.
CPU(2)가 Go 신호에 응답할 때, 실행하는 명령들은 외부 개발 시스템(7)에 의해 제공된 다수의 어드레스, 데이터 및 제어 값들에 의해 수정된 레지스터들에 의해 결정된다. 예를 들어, CPU(2)의 프로그램 카운터(상세하게 도시되지 않음)가 수정되었다면, CPU(2)는 수정된 프로그램 카운터에 저장된 새로운 명령 어드레스로부터 프로세서 실행을 시작한다. 그러나, CPU(2)의 프로그램 카운터가 수정되지 않았다면, CPU(2)는 정상 리셋 예외 처리 루틴을 계속한다.
리셋 예외 처리 루틴의 실행 이전에 중단점 데이터 프로세서(3)에 대한 본 발명의 능력은, 외부 개발 시스템(7)으로 하여금 리셋 예외 처리 루틴의 실행 동안 그 값들이 재기록될 기회없이 요구되는 방식으로 데이터 프로세서(3)를 구성하도록 하기 위한 효율적이고 유용한 메카니즘을 증명한다.
리셋 예외 처리 루틴이 실행되기 전에 중단점 동작을 실행하는 이러한 능력은 또한, 외부 개발 시스템(7)으로 하여금 임의의 비휘발성 메모리 저장 장치의 프로그래밍을 바이패스하도록 한다. 새로운 소프트웨어 영상을 기록 가능 메모리 저장 장치에 로딩함으로써, 비휘발성 메모리 저장 장치에 프로그램된 코드가 쉽게 바이패스될 수 있다. 외부 개발 시스템(7)은 80비트 명령으로 이동함으로써 임의의하드웨어 레지스터를 액세스할 수도 있다. 80비트 명령은 16비트의 오피코드, CPU 공간에 맵핑된 32 비트의 어드레스, 및 32 비트의 피연산자 데이터를 포함한다. 완성된 명령이 수신되면, 디버그 모듈(10)은 메모리 레퍼런스 동작과 유사한 방식으로 동작한다. K-버스(25)가 요청되고, 이어서CPU(2)에 의해 승인된다. CPU 공간 K-버스 사이클은 디버그 모듈(10)에 의해 개시되고, 적절한 하드웨어 레지스터가 기록된다.
백그라운드 디버그 모드
데이터 프로세서(3)가 특수 백그라운드 디버그 모드에서 동작중일 때, CPU(2)는 디버그 모듈(10)로 하여금 모든 메모리 및 레지스터 값들을 완전히 액세스할 수 있도록 정지되어, 실패 회로들과 에러 프로그램들이 분리되어 식별될 수 있도록 한다. 레지스터들 및 메모리 위치들은 백그라운드 디버그 모드에 있을 때 보여질 수도 있고 선택적으로는 변경될 수도 있다. 또한, 시험 특성들이 인에이블될 수도 있다. 외부 개발 시스템(7)은 특수 백그라운드 디버그 모드에서 동작 중일 때, 디버그 모듈(10)을 통해 내부 정보를 쉽게 액세스할 수도 있고, CPU(2)가 이 동작 모드에서는 정지해야만 하므로, 정상 명령 실행은 지연된다. CPU(2)가 정지될 때, PST 신호는 $F 값을 갖는다는 것을 주목해야 한다.
특수 백그라운드 디버그 동작 모드는 다수의 소스들에 의해 발생될 수도 있다. 예를 들어, 데이터 프로세서(3)가 선택적으로 백그라운드 디버그 동작 모드로 진입할 수 있도록 하기 위해,신호가 외부 개발 시스템(7)에 의해 외부적으로 발생될 수도 있다. 또한, 내부적으로 발생된 중단점 동작들 및 돌발 예외 조건들은 데이터 프로세서(3)가 백그라운드 디버그 동작 모드로 진입할 수 있도록 한다.
데이터 프로세서(3)가 백그라운드 디버그 동작 모드로 진입하면, 데이터 프로세서(3)의 정상 동작은 정지되고, 외부 개발 시스템(7)의 제어하에서 특수 기능들이 디버그 모듈(10)에 의해 수행된다. 디버그 모들(10)과 외부 개발 시스템(7)사이의 모든 통신은 직렬 인터페이스(30)와 DSDI, DSDO, 및 DSCLk 신호들 각각을 통한다.
상술된 바와 같이, 본 발명의 이 실시예에 있어서, 백그라운드 디버그 모드는 PST 신호를 통해 외부 사용자에게 시그널링된다. PST 신호 상의 $F 값은 프로세서가 정지됐고 백그라운드 디버그 동작 모드에서 동작하고 있음을 나타낸다. 백그라운드 디버그 모드로의 진입의 표시는 외부 사용자로 하여금 직렬 통신 채널을 통해 지원되는 디버그 명령들을 개시하도록 할 수 있도록 하는 신호를 제공하기 때문에, 매우 중요하다. 따라서, 직렬 인터페이스(30)를 통해 제공되는 직렬 포트는 메모리 위치들과 내부 레지스터들로부터 디버그 정보를 검색하기 위해 사용될 수도 있다.
MAP 비트가 부정이면, 모든 에뮬레이터 모드 메모리 레퍼런스들은 정상으로서 수퍼바이저 액세스들로 맵핑되어, 온-칩 메모리, 외부 메모리, 및 입력/출력 장치들과 같은 시스템 자원들이 레퍼런스될 수 있도록 한다
마지막으로, 'Go' 명령이 외부 개발 시스템(7)으로부터 디버그 모듈(10)에 직렬로 이동된 후, Go 신호가 표명이 된다 일부 이벤트가 데이터 프로세서(3)를 정지시킨 후, Go 신호는 백그라운드 디버그 동작 모드로의 진입을 강제하면서 데이터 프로세서(3)의 실행을 재시작한다. TDR이 이러한 형태의 응답을 강제하도록 프로그램되었다면, 데이터 프로세서(3)는 제어 회로(20)에 의한 중단점 신호의 표명에 의해 정지될 수도 있다. 또한, 데이터 프로세서(3)는 데이터 프로세서(3)에 의한 정지 명령의 실행 또는 폴트-온-폴트(fault-on-fault) 조건의 발생에 의해 정지될 수도 있다.
요약
요약하면, 본 발명은 데이터 프로세서가 백그라운드 디버그 모드와 같은 특수 동작 모드로 진입할 필요가 없이 실시간 트레이스 및 디버그 기능들이 실행되도록 하는 데이터 프로세서 및 동작 방법을 제공한다. 또한, 본 발명은 실시간 디버그 기능들의 실행 동안 멀티-레벨 트리거들을 실행하기 위한 방법을 제공한다. 이들 특이한 특징들 각각은 데이터 처리 시스템(5)에서의 실패를 식별하고 분리시킴에 있어서 외부 사용자에게 큰 기능과 유연성을 제공한다.
상술된 바와 같이, 본 발명은 지금까지는 없었던 중요한 실시간 트레이스 기능을 제공한다. 실시간 트레이스 기능은 외부 개발 시스템(7)과 같은 외부 사용자로 하여금 외부 버스의 형태 또는 유용성을 가정하지 않고 데이터 프로세서(3)의 내부 동작들을 동적으로 관찰할 수 있도록 한다. 또한, 실시간 트레이스 기능은 데이터 처리 시스템(5)의 효율과 속도에 중대한 영향을 미치지 않고 시스템의 내부동작에 이와 같은 관찰 능력을 제공한다. 데이터 처리 시스템(5)의 디버그 모듈(10)은 내부 동작 정보를 제공하기 위한 병렬 출력 포트를 DDATA 신호 및 PST 신호를 통해 외부 사용자에게 제공한다. DDATA 신호는 피연산자 값들을 반영하는 데이터를 제공하고, PST 신호들은 CPU(2)의 실행 상태를 반영하는 인코딩된 상태 정보를 제공한다. 또한, 외부의 가시적인 어드레스 버스 또는 외부의 가시적인 데이터버스를 요구하지 않고 외부 개발 시스템이 정확한 프로그램 흐름을 트레이스할 수 있도록 하기 위해 DDATA 신호는 또한 포착된 명령 어드레스 프로그램 흐름 변경들을 제공한다. DDATA 신호 상에 디스플레이되는 정보는 PST 신호들 상의 상태 정보와 동기가 맞추어짐을 주목해야 한다. 따라서, 데이터 프로세서(3)의 정상 동작을 지연시키지 않고 데이터 프로세서(3)에서 키 변수들의 상태를 결정하기 위해, 외부 사용자는 DDATA 신호 및 PST 신호를 디코딩할 수 있다. 달리 설명하면, 데이터 프로세서(3)는 내부 정보를 외부 개발 시스템에 제공하기 위해 특수 디버그 또는 에뮬레이터 모드에서 동작할 필요가 없다.
또한, 본 발명은 실시간 디버그 기능들을 실행하기 위한 회로와 방법을 제공한다. 다수 데이터 프로세서들, 특히, 임베디드 시스템들에 있어서, 시스템 제약사항들, 또는 데이터 프로세서가 더 이상 정상 모드에서 동작하지 않을 때의 실패회로 또는 프로그램을 확인할 수 없는 능력으로 인해, 데이터 프로세서가 디버그 동작 동안 정지되지 않을 수도 있다. 본 발명은 데이터 프로세서를 정지시키지 않고 데이터 프로세서의 실시간 동작에 있어서의 방해를 최소화함으로써 디버그 동작을 실행한다.
통상 프로그래밍 이벤트를 식별하기 위해 중단점 동작들이 디버깅 동작 동안사용된다. 프로그래밍 이벤트를 만났을 때, 소프트웨어 프로그램의 상태를 결정하기 위해 중단점 신호가 표명이 되고 데이터가 검색된다 트레이스 기능과 같이, 중 단점 동작은 외부 사용자로 하여금 다수의 선택된 레지스터들 및 메모리 위치들 각각의 상태를 확인할 수 있도록 하여, 데이터 처리 에러들이 식별될 수 있도록 한다. 본 발명은 이러한 중단점 동작들을 수행하기 위해 다수의 하드웨어 중단점 레지스터들(50) 및 중단점 회로(100)를 제공한다. 본 발명에 있어서, 프로그램 카운터 또는 프로그램 카운터 마스크, 피연산자 어드레스 범위, 및 데이터 값 또는 데이터 마스크 값에 기초한 중단점 동작들이 모두 실현된다. 또한, 본 발명에서 실현되는 중단점 동작들은, 정확한 트리거 응답이 다수의 제어 레지스터들(40) 중 트리거 규정 레지스터(TDR)를 통해 프로그램될 수 있는, 1-레벨 또는 2-레벨 트리거로 구성될 수도 있다.
또한, 본 발명은 데이터 프로세서(3)가 특수 디버그 모드에서 동작하는 것을 요구하지 않고 CPU(2)와 디버그 모듈(10)의 동시 동작을 제공한다. 코어(9)와 디버그 모듈(10) 사이에서 데이터, 어드레스 및 제어 정보를 통신하기 위한 K-버스(25)의 사용은 디버그 모듈(10)로 하여금 CPU(2)와 동일한 내부 레지스터들 및 메모리 위치들을 액세스할 수 있도록 한다. 따라서, 디버그 모듈은 CPU(2)가 액세스할 수 있는 모든 메모리 위치들과 내부 레지스터들을 액세스할 수 있다. CPU(2)와 디버그모듈(10)을 동시에 동작시키는 능력은 외부 개발 시스템(7)으로 하여금 프로세서의 동작에 중대한 영향을 미치지 않고 데이터 프로세서(3)의 메모리 및 내부 레지스터들에서 증가된 가시성을 갖도록 한다.
또한, 디버그 모듈(10)과 CPU(2) 모두 동일한 내부 레지스터들 및 메모리 위치들을 액세스하는 능력을 갖지만, 다수의 제어 레지스터들(40) 중 CSR의 디버그레지스터에 대한 프로세서 기록 금지(IPW) 비트가 설정되었을 때, CPU(2) 및 코어(9)의 나머지 부분은 다수의 중단점 레지스터들(50)에 저장된 값을 수정하지 않을수도 있다. CSR의 IPW 비트가 설정되었을 때, CPU(2)에 의해 개시되는 임의의 기록동작들은 금지된다. 또한, IPW 비트는 외부 개발 시스템(7)에 의해 제공되는 명령에 의해서만 수정될 수도 있다. 다수의 하드웨어 중단점 레지스터들(50)에 대한 기록 동작들을 효과적으로 디스에이블하기 위한 IPW 비트의 사용은 외부 개발 시스템(7)에 의해 프로그램되고 데이터 프로세서(3)에서 실패 회로와 에러 프로그램들을 분리하고 식별하기 위해 요구되는 이벤트가 CPU(2)에 의해 덮어 쓰여지지 않는 것이 보장된다.
또한, 본 발명은 리셋 동작을 위한 예외 처리 루틴이 개시되기 전에 외부 개발 시스템(7)으로 하여금 데이터 프로세서(3)에서 중단점 동작을 실행할 수 있도록 하는 메카니즘을 제공한다 외부 리셋 신호가 표명일 때, 다수의 제어 레지스터들(40)의 각 내용이 개시된다. 이어서 외부 리셋 신호가 부정될 때, 실제 리셋 예외처리 루틴이 시작되기 전에 데이터 프로세서(3)가 활동하지 않는 시간의 윈도우가 존재한다. 외부 개발 시스템(7)에 의해 활동하지 않는 시간 동안 외부 중단점 신호가 표명일 때, 본 발명은 타겟 메모리 값을 데이터 처리 시스템(5)에 다운로드하기 위한 메카니즘 및 방법을 제공하여, 임의의 하드웨어 레지스터 구성이 수행될 수도 있다. 타겟 메모리 값은 단일의 값 또는 다수의 값일수도 있다.
리셋 예외 처리 루틴이 실행되기 전에 중단점 동작을 실행하는 이러한 능력은 또한 외부 개발 시스템(7)으로 하여금 임의의 비휘발성 메모리 저장 장치의 프로그래밍을 바이패스하도록 한다. 새로운 소프트웨어 영상을 기록 가능 메모리 저장 장치에 로딩함으로써, 비휘발성 메모리 저장 장치 내의 프로그램된 코드가 쉽게 바이패스될 수 있다. 외부 개발 시스템(7)은 80비트 명령으로 이동함으로써 임의의 하드웨어 레지스터를 액세스할 수 있다 80비트 명령은 16비트의 오피코드, CPU 공간에 맵핑된 32 비트의 어드레스, 및 32 비트의 피연산자 데이터를 포함한다. 완성된 명령이 수신되면, 디버그 모듈(10)은 메모리 레퍼런스 동작과 유사한 방식으로 동작한다. K-버스(25)가 요청되고, 이어서 CPU(2)에 의해 승인된다. CPU 공간 K-버스 사이클은 디버그 모듈(10)에 의해 개시되고, 적절한 하드웨어 레지스터가 기록된다.
리셋 예외 처리 루틴의 실행 이전에 중단점 데이터 프로세서(3)에 대한 본 발명의 능력은, 외부 개발 시스템(7)으로 하여금 리셋 예외 처리 루틴의 실행 동안 그 값들이 덮어 쓰여지는 기회없이, 요구된 방식으로 데이터 프로세서(3)를 구성할 수 있도록 하기 위한 효율적이고 유용한 메카니즘을 증명한다.
본 명세서에 설명된 본 발명의 실시예는 단지 예로서 제공되었다. 그러나, 다른 많은 실시예들이 본 명세서에 설명된 기능을 실행하기 위해 존재할 수도 있다. 본 발명이 특정 실시예들을 참조하여 예시되고 설명되었지만, 당업자에 있어서 추가의 수정예들과 개선예들이 발생될 수 있다. 따라서, 본 발명은 예시된 특정 형태에 제한되지 않고, 첨부된 청구 범위가 본 발명의 범주에서 벗어나지 않는 모든 수정예들을 보호하는 것을 이해해야 한다.

Claims (1)

  1. 데이터 프로세서 동작 방법에 있어서:
    외부 시스템으로부터 메모리 장치에 액세스하기 위해 명령을 수신하는 단계;
    상기 외부 시스템으로부터 상기 메모리 장치 내의 메모리 위치를 액세스하기 위해 어드레스를 수신하는 단계;
    상기 데이터 프로세서의 디버그 모듈의 제어 회로를 이용하여 상기 데이터 프로세서에 의해 실행될 기능을 결정하기 위해 상기 명령을 디코딩하는 단계;
    상기 디버그 모듈의 제 1 어드레스 레지스터에 상기 어드레스를 저장하는 단계;
    제 1 논리 상태에서 버스 요청 신호를 생성하기 위해 상기 디버그 모듈의 제어 회로를 인에이블하는 단계;
    현재 다수의 파이프라인 명령들(pipelined instructions)이 실행되고 상기 버스 요청 신호가 상기 제 1 논리 상태에 있을 때, 중앙 처리 장치의 내부 명령 파이프라인을 스톨링(stalling)하는 단계;
    상기 중앙 처리 장치의 내부 명령 파이프라인이 스톨링될 때, 제 2 논리 상태에서 버스 승인 신호를 생성하기 위해 상기 중앙 처리 장치를 인에이블하는 단계;
    상기 버스 승인 신호가 상기 제 2 신호 논리 상태일 때, 상기 디버그 모듈의 제 1 어드레스 레지스터 내의 어드레스를 상기 메모리 장치에 제공하는 단계; 및
    상기 외부 시스템에 의해 제공되는 명령에 의해 특정된 기능을 실행하기 위해 상기 메모리 장치 내의 상기 메모리 위치를 액세스하는 단계를 포함하는, 데이터 프로세서 동작 방법.
KR1019960036223A 1995-08-30 1996-08-29 데이터프로세서와그동작방법,그디버깅동작실행방법및그중단점값수정방법 KR100439781B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US52124995A 1995-08-30 1995-08-30
US521,249 1995-08-30

Publications (2)

Publication Number Publication Date
KR970012145A KR970012145A (ko) 1997-03-29
KR100439781B1 true KR100439781B1 (ko) 2004-10-06

Family

ID=24076003

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960036223A KR100439781B1 (ko) 1995-08-30 1996-08-29 데이터프로세서와그동작방법,그디버깅동작실행방법및그중단점값수정방법

Country Status (5)

Country Link
US (2) US6035422A (ko)
EP (1) EP0762280B1 (ko)
JP (1) JP3846939B2 (ko)
KR (1) KR100439781B1 (ko)
DE (1) DE69616917T2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100881843B1 (ko) * 2001-04-19 2009-02-03 베리지 (싱가포르) 피티이. 엘티디. 트리거 신호 생성 방법 및 전압 파형 표현 생성 방법
KR20190043929A (ko) * 2017-10-19 2019-04-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 동작 방법
US11256605B2 (en) 2017-10-19 2022-02-22 Samsung Electronics Co., Ltd. Nonvolatile memory device

Families Citing this family (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6205560B1 (en) * 1996-02-27 2001-03-20 Via-Cyrix, Inc. Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
US6192427B1 (en) * 1997-05-02 2001-02-20 Texas Instruments Incorporated Input/output buffer managed by sorted breakpoint hardware/software
KR100230454B1 (ko) * 1997-05-28 1999-11-15 윤종용 다중처리 시스템의 캐시메모리 검사방법
US6175913B1 (en) * 1997-09-12 2001-01-16 Siemens Ag Data processing unit with debug capabilities using a memory protection unit
US6247119B1 (en) * 1997-11-26 2001-06-12 Texas Instruments Incorporated Apparatus having a flattener for outputting aligned or unaligned information from an instruction execution pipeline
EP0924619A3 (de) * 1997-12-19 2004-01-07 Infineon Technologies AG Programmgesteuerte Einheit
US6385742B1 (en) * 1998-03-06 2002-05-07 Lsi Logic Corporation Microprocessor debugging mechanism employing scan interface
US6513108B1 (en) 1998-06-29 2003-01-28 Cisco Technology, Inc. Programmable processing engine for efficiently processing transient data
US6195739B1 (en) 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6836838B1 (en) 1998-06-29 2004-12-28 Cisco Technology, Inc. Architecture for a processor complex of an arrayed pipelined processing engine
US6145123A (en) * 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
JP2000099366A (ja) * 1998-09-21 2000-04-07 Fujitsu Ltd 演算処理装置および演算処理装置のデバッグ方法
US6173386B1 (en) * 1998-12-14 2001-01-09 Cisco Technology, Inc. Parallel processor with debug capability
US6920562B1 (en) 1998-12-18 2005-07-19 Cisco Technology, Inc. Tightly coupled software protocol decode with hardware data encryption
US6567933B1 (en) * 1999-02-19 2003-05-20 Texas Instruments Incorporated Emulation suspension mode with stop mode extension
US6336191B1 (en) * 1999-03-08 2002-01-01 International Business Machines Corporation Method and system for clock compensation in instruction level tracing in a symmetrical multi-processing system
US6370660B1 (en) * 1999-04-21 2002-04-09 Advanced Micro Devices, Inc. Apparatus and method for providing a wait for status change capability for a host computer system
US6343358B1 (en) * 1999-05-19 2002-01-29 Arm Limited Executing multiple debug instructions
US6446221B1 (en) * 1999-05-19 2002-09-03 Arm Limited Debug mechanism for data processing systems
US6321329B1 (en) 1999-05-19 2001-11-20 Arm Limited Executing debug instructions
JP2003500740A (ja) * 1999-05-19 2003-01-07 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ デバッグ回路を有するデータプロセッサ
JP4335999B2 (ja) * 1999-05-20 2009-09-30 株式会社ルネサステクノロジ プロセッサ内蔵半導体集積回路装置
JP2001034504A (ja) * 1999-07-19 2001-02-09 Mitsubishi Electric Corp ソースレベルデバッガ
US6584590B1 (en) * 1999-08-13 2003-06-24 Lucent Technologies Inc. JTAG port-sharing device
US6732307B1 (en) * 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US6684348B1 (en) 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6529983B1 (en) 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6615368B1 (en) * 2000-01-04 2003-09-02 National Semiconductor Corporation System and method for debugging highly integrated data processors
JP2001195281A (ja) * 2000-01-07 2001-07-19 Sony Corp システム監視装置
US6892237B1 (en) * 2000-03-28 2005-05-10 Cisco Technology, Inc. Method and apparatus for high-speed parsing of network messages
JP3629181B2 (ja) 2000-03-28 2005-03-16 Necマイクロシステム株式会社 プログラム開発支援装置
US6505269B1 (en) 2000-05-16 2003-01-07 Cisco Technology, Inc. Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system
US6857092B1 (en) 2000-08-17 2005-02-15 Xilinx, Inc. Method and apparatus to facilitate self-testing of a system on a chip
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US6823282B1 (en) * 2000-10-26 2004-11-23 Cypress Semiconductor Corporation Test architecture for microcontroller providing for a serial communication interface
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US6985980B1 (en) 2000-11-03 2006-01-10 Xilinx, Inc. Diagnostic scheme for programmable logic in a system on a chip
US6757846B1 (en) * 2000-11-06 2004-06-29 Xilinx, Inc. Method and apparatus for multi-bus breakpoint stepping
US6751751B1 (en) 2000-11-06 2004-06-15 Xilinx, Inc. Universal multi-bus breakpoint unit for a configurable system-on-chip
US6484273B1 (en) * 2000-11-29 2002-11-19 Lsi Logic Corporation Integrated EJTAG external bus interface
US6986026B2 (en) * 2000-12-15 2006-01-10 Intel Corporation Single-step processing and selecting debugging modes
US6718539B1 (en) * 2000-12-22 2004-04-06 Lsi Logic Corporation Interrupt handling mechanism in translator from one instruction set to another
US6915416B2 (en) * 2000-12-28 2005-07-05 Texas Instruments Incorporated Apparatus and method for microcontroller debugging
US7069545B2 (en) * 2000-12-29 2006-06-27 Intel Corporation Quantization and compression for computation reuse
US7093236B2 (en) * 2001-02-01 2006-08-15 Arm Limited Tracing out-of-order data
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
JP2003085001A (ja) * 2001-09-12 2003-03-20 Toshiba Corp ソース・コード・デバッガ、デバッグ方法及びデバッグプログラム
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US7382637B1 (en) * 2002-02-01 2008-06-03 Netlogic Microsystems, Inc. Block-writable content addressable memory device
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US20040078630A1 (en) * 2002-06-28 2004-04-22 Niles Ronald Steven System and method for protecting data
US20040019828A1 (en) * 2002-07-25 2004-01-29 Gergen Joseph P. 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
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
US6996735B2 (en) * 2002-11-22 2006-02-07 Texas Instruments Incorporated Apparatus for alignment of data collected from multiple pipe stages with heterogeneous retention policies in an unprotected pipeline
US20040103399A1 (en) * 2002-11-22 2004-05-27 Manisha Agarwala Data trace compression map
US6889311B2 (en) * 2002-11-22 2005-05-03 Texas Instruments Incorporated Pipeline stage single cycle sliding alignment correction of memory read data with integrated data reordering for load and store instructions
US7299386B2 (en) * 2002-12-17 2007-11-20 Texas Instruments Incorporated Apparatus and method for detecting address characteristics for use with a trigger generation unit in a target processor
US6798713B1 (en) * 2003-01-31 2004-09-28 Zilog, Inc. Implementing software breakpoints
US7574585B1 (en) 2003-01-31 2009-08-11 Zilog, Inc. Implementing software breakpoints and debugger therefor
US7243214B2 (en) * 2003-04-21 2007-07-10 Intel Corporation Stall optimization for an in-order, multi-stage processor pipeline which analyzes current and next instructions to determine if a stall is necessary
TW200511111A (en) * 2003-07-30 2005-03-16 Koninkl Philips Electronics Nv Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set
JP2007522554A (ja) * 2004-02-09 2007-08-09 コンティネンタル・テーベス・アクチエンゲゼルシヤフト・ウント・コンパニー・オッフェネ・ハンデルスゲゼルシヤフト 車両内のセキュリティ上問題のあるコンピュータシステムのための埋込式システムの分析装置及び方法
US7313729B2 (en) * 2004-02-20 2007-12-25 Winbond Electronics Corp. Low-cost debugging system with a ROM or RAM emulator
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US7734797B2 (en) 2004-03-29 2010-06-08 Marvell International Ltd. Inter-processor communication link with manageability port
JP4409349B2 (ja) * 2004-04-27 2010-02-03 Okiセミコンダクタ株式会社 デバッグ回路およびデバッグ制御方法
US20050268195A1 (en) * 2004-04-29 2005-12-01 Lund Morten W Apparatus and method for improving emulation speed of high-level languages in on-chip emulation systems
US7334161B2 (en) * 2004-04-30 2008-02-19 Arm Limited Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus
US8069436B2 (en) 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
US8286125B2 (en) 2004-08-13 2012-10-09 Cypress Semiconductor Corporation Model for a hardware device-independent method of defining embedded firmware for programmable systems
US7587635B2 (en) * 2004-10-04 2009-09-08 Cisco Technology, Inc. Method of debugging “active” unit using “non-intrusive source-level debugger” on “standby” unit of high availability system
EP1844397A2 (en) * 2005-01-28 2007-10-17 Nxp B.V. Means and method for debugging
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US7237149B2 (en) * 2005-02-25 2007-06-26 Freescale Semiconductor, Inc. Method and apparatus for qualifying debug operation using source information
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US20080137670A1 (en) * 2005-06-09 2008-06-12 Whirlpool Corporation Network System with Message Binding for Appliances
US7921429B2 (en) * 2005-06-09 2011-04-05 Whirlpool Corporation Data acquisition method with event notification for an appliance
US20070162158A1 (en) * 2005-06-09 2007-07-12 Whirlpool Corporation Software architecture system and method for operating an appliance utilizing configurable notification messages
WO2006135726A2 (en) * 2005-06-09 2006-12-21 Whirlpool Corporation Software architecture system and method for communication with, and management of, at least one component within a household appliance
US7917914B2 (en) * 2005-06-09 2011-03-29 Whirlpool Corporation Event notification system for an appliance
US7813831B2 (en) * 2005-06-09 2010-10-12 Whirlpool Corporation Software architecture system and method for operating an appliance in multiple operating modes
US8089461B2 (en) 2005-06-23 2012-01-03 Cypress Semiconductor Corporation Touch wake for electronic devices
US20070198816A1 (en) * 2005-11-10 2007-08-23 Chuan-Po Ling Emulation system for a single-chip multiple-microcontroller and emulation method thereof
FR2894694A1 (fr) * 2005-12-09 2007-06-15 St Microelectronics Sa Procede et dispositif de mise au point d'un programme execute par un processeur multitache
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
US8010774B2 (en) * 2006-03-13 2011-08-30 Arm Limited Breakpointing on register access events or I/O port access events
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US7979839B2 (en) * 2006-08-23 2011-07-12 Wolf William M Method for employing the computer in the creative act of programming
US7610517B2 (en) * 2006-09-14 2009-10-27 Innovasic, Inc. Microprocessor with trace functionality
US7707459B2 (en) 2007-03-08 2010-04-27 Whirlpool Corporation Embedded systems debugging
US7908516B2 (en) * 2007-03-27 2011-03-15 Microchip Technology Incorporated Low power mode fault recovery method, system and apparatus
US8130025B2 (en) * 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US7737724B2 (en) 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US7783865B2 (en) * 2007-08-01 2010-08-24 International Business Machines Corporation Conditional data watchpoint management
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8407457B2 (en) * 2007-09-28 2013-03-26 Freescale Semiconductor, Inc. System and method for monitoring debug events
US8042002B2 (en) * 2008-01-18 2011-10-18 Freescale Semiconductor, Inc. Method and apparatus for handling shared hardware and software debug resource events in a data processing system
US7870430B2 (en) * 2008-02-29 2011-01-11 Freescale Semiconductor, Inc. Method and apparatus for sharing debug resources
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8661302B2 (en) * 2010-11-17 2014-02-25 Advanced Micro Devices, Inc. Enhanced debug/test capability to a core reset process
US9053233B2 (en) * 2011-08-15 2015-06-09 Freescale Semiconductor, Inc. Method and device for controlling debug event resources
GB2504772A (en) 2012-08-10 2014-02-12 Ibm Coprocessor providing service address space for diagnostics collection
US9830245B2 (en) 2013-06-27 2017-11-28 Atmel Corporation Tracing events in an autonomous event system
US9645870B2 (en) 2013-06-27 2017-05-09 Atmel Corporation System for debugging DMA system data transfer
US9256399B2 (en) * 2013-06-27 2016-02-09 Atmel Corporation Breaking program execution on events
CN107346282B (zh) * 2016-05-04 2024-03-12 世意法(北京)半导体研发有限责任公司 用于微处理器的调试支持单元
KR20180073300A (ko) * 2016-12-22 2018-07-02 삼성전자주식회사 스캔 데이터 컨트롤 장치 및 이를 갖는 전자 시스템
US11055416B2 (en) * 2017-10-24 2021-07-06 Micro Focus Llc Detecting vulnerabilities in applications during execution
JP7378254B2 (ja) * 2019-09-19 2023-11-13 キヤノン株式会社 マルチプロセッサデバイス
CN112540888B (zh) * 2020-12-18 2022-08-12 清华大学 面向大规模可重构处理单元阵列的调试方法及装置
CN114510432B (zh) * 2022-04-20 2022-07-12 苏州浪潮智能科技有限公司 一种寄存器调试平台和调试方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6481046A (en) * 1987-09-22 1989-03-27 Nec Corp Microprocessor unit incorporating debugging device
JPH02287635A (ja) * 1989-04-03 1990-11-27 Motorola Inc マイクロコンピュータ,マイクロプロセッサおよびコア・プロセッサ集積回路用デバッグ周辺装置
US5132971A (en) * 1987-02-06 1992-07-21 Anritsu Corporation In-circuit emulator
EP0636976A1 (en) * 1993-07-28 1995-02-01 Koninklijke Philips Electronics N.V. Microcontroller provided with hardware for supporting debugging as based on boundary scan standard-type extensions

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3937938A (en) * 1974-06-19 1976-02-10 Action Communication Systems, Inc. Method and apparatus for assisting in debugging of a digital computer program
US4080650A (en) * 1976-07-28 1978-03-21 Bell Telephone Laboratories, Incorporated Facilitating return from an on-line debugging program to a target program breakpoint
US4338660A (en) * 1979-04-13 1982-07-06 Relational Memory Systems, Inc. Relational break signal generating device
US4675646A (en) * 1983-09-29 1987-06-23 Tandem Computers Incorporated RAM based multiple breakpoint logic
US4635193A (en) * 1984-06-27 1987-01-06 Motorola, Inc. Data processor having selective breakpoint capability with minimal overhead
US5165027A (en) * 1986-01-24 1992-11-17 Intel Corporation Microprocessor breakpoint apparatus
JPH06103472B2 (ja) * 1986-10-29 1994-12-14 日本電気株式会社 デバツグ用マイクロプロセツサ
US5179696A (en) * 1987-07-24 1993-01-12 Nec Corporation Generator detecting internal and external ready signals for generating a bus cycle end signal for microprocessor debugging operation
US5084814A (en) * 1987-10-30 1992-01-28 Motorola, Inc. Data processor with development support features
US5129078A (en) * 1988-08-19 1992-07-07 Groves Stanley E Dedicated service processor with inter-channel communication features
EP0368144B1 (en) * 1988-11-10 1996-02-07 Motorola, Inc. Digital computing system with low power mode
US5448744A (en) * 1989-11-06 1995-09-05 Motorola, Inc. Integrated circuit microprocessor with programmable chip select logic
JPH03248244A (ja) * 1990-02-27 1991-11-06 Toshiba Corp キャッシュメモリを備えたプロセッサ
JP2526690B2 (ja) * 1990-02-27 1996-08-21 三菱電機株式会社 プログラマブルコントロ―ラの制御方法
US5581695A (en) * 1990-05-09 1996-12-03 Applied Microsystems Corporation Source-level run-time software code debugging instrument
US5410685A (en) * 1990-06-12 1995-04-25 Regents Of The University Of Michigan Non-intrinsive method and system for recovering the state of a computer system and non-intrusive debugging method and system utilizing same
US5204864A (en) * 1990-08-16 1993-04-20 Westinghouse Electric Corp. Multiprocessor bus debugger
JP2672711B2 (ja) * 1991-02-01 1997-11-05 ディジタル イクイップメント コーポレイション コンピュータプログラムをテストし、デバッグする方法
US5321828A (en) * 1991-06-07 1994-06-14 Step Engineering High speed microcomputer in-circuit emulator
US5317711A (en) * 1991-06-14 1994-05-31 Integrated Device Technology, Inc. Structure and method for monitoring an internal cache
GB2266606B (en) * 1992-04-27 1996-02-14 Intel Corp A microprocessor with an external command mode
US5491793A (en) * 1992-07-31 1996-02-13 Fujitsu Limited Debug support in a processor chip
US5359608A (en) * 1992-11-24 1994-10-25 Amdahl Corporation Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions
DE4302902A1 (de) * 1993-02-02 1994-08-04 Frederic Dedek Mikroprozessor mit boolscher Verknüpfungslogik
US5640542A (en) * 1993-10-29 1997-06-17 Intel Corporation On-chip in-circuit-emulator memory mapping and breakpoint register modules
US5828825A (en) * 1993-12-22 1998-10-27 Intel Corporation Method and apparatus for pseudo-direct access to embedded memories of a micro-controller integrated circuit via the IEEE test access port
US5488688A (en) * 1994-03-30 1996-01-30 Motorola, Inc. Data processor with real-time diagnostic capability
US5530804A (en) * 1994-05-16 1996-06-25 Motorola, Inc. Superscalar processor with plural pipelined execution units each unit selectively having both normal and debug modes
US5537536A (en) * 1994-06-21 1996-07-16 Intel Corporation Apparatus and method for debugging electronic components through an in-circuit emulator
US5694589A (en) * 1995-06-13 1997-12-02 Intel Corporation Instruction breakpoint detection apparatus for use in an out-of-order microprocessor
US5621886A (en) * 1995-06-19 1997-04-15 Intel Corporation Method and apparatus for providing efficient software debugging
US5740413A (en) * 1995-06-19 1998-04-14 Intel Corporation Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5132971A (en) * 1987-02-06 1992-07-21 Anritsu Corporation In-circuit emulator
JPS6481046A (en) * 1987-09-22 1989-03-27 Nec Corp Microprocessor unit incorporating debugging device
JPH02287635A (ja) * 1989-04-03 1990-11-27 Motorola Inc マイクロコンピュータ,マイクロプロセッサおよびコア・プロセッサ集積回路用デバッグ周辺装置
EP0636976A1 (en) * 1993-07-28 1995-02-01 Koninklijke Philips Electronics N.V. Microcontroller provided with hardware for supporting debugging as based on boundary scan standard-type extensions

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100881843B1 (ko) * 2001-04-19 2009-02-03 베리지 (싱가포르) 피티이. 엘티디. 트리거 신호 생성 방법 및 전압 파형 표현 생성 방법
KR20190043929A (ko) * 2017-10-19 2019-04-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 동작 방법
US11256605B2 (en) 2017-10-19 2022-02-22 Samsung Electronics Co., Ltd. Nonvolatile memory device
KR102396448B1 (ko) * 2017-10-19 2022-05-11 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
US6035422A (en) 2000-03-07
US6026501A (en) 2000-02-15
EP0762280B1 (en) 2001-11-14
JPH09218802A (ja) 1997-08-19
JP3846939B2 (ja) 2006-11-15
DE69616917T2 (de) 2002-06-06
EP0762280A1 (en) 1997-03-12
KR970012145A (ko) 1997-03-29
DE69616917D1 (de) 2001-12-20

Similar Documents

Publication Publication Date Title
KR100439781B1 (ko) 데이터프로세서와그동작방법,그디버깅동작실행방법및그중단점값수정방법
EP0762277B1 (en) Data processor with built-in emulation circuit
EP0762276B1 (en) Data processor with built-in emulation circuit
KR100350568B1 (ko) 디버그기능을수행하기위한데이타처리시스템및방법
EP0942372B1 (en) Processor with breakpoint circuit
US5560036A (en) Data processing having incircuit emulation function
US6526501B2 (en) Adapter for a microprocessor
US6665737B2 (en) Microprocessor chip includes an addressable external communication port which connects to an external computer via an adapter
US6389498B1 (en) Microprocessor having addressable communication port
EP0762278A1 (en) Data processor with built-in emulation circuit
EP0869434A2 (en) Method for outputting trace information of a microprocessor
US6457124B1 (en) Microcomputer having address diversion means for remapping an on-chip device to an external port
Added 31.2 Signal Descriptions
Hohl et al. Debug Support on the ColdFire Architecture
JPH04284546A (ja) データ処理装置及びそれを用いたシステム開発装置
JPH043230A (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: 20130624

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20140624

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee