KR100571732B1 - 파이프라인식 프로세서의 감시점 엔진 - Google Patents

파이프라인식 프로세서의 감시점 엔진 Download PDF

Info

Publication number
KR100571732B1
KR100571732B1 KR1020037007896A KR20037007896A KR100571732B1 KR 100571732 B1 KR100571732 B1 KR 100571732B1 KR 1020037007896 A KR1020037007896 A KR 1020037007896A KR 20037007896 A KR20037007896 A KR 20037007896A KR 100571732 B1 KR100571732 B1 KR 100571732B1
Authority
KR
South Korea
Prior art keywords
watchpoint
address
match
count value
stage
Prior art date
Application number
KR1020037007896A
Other languages
English (en)
Other versions
KR20030090613A (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 KR20030090613A publication Critical patent/KR20030090613A/ko
Application granted granted Critical
Publication of KR100571732B1 publication Critical patent/KR100571732B1/ko

Links

Images

Classifications

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

Landscapes

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

Abstract

본 발명의 일실시예에서, 감시점 엔진은 파이프라인식 프로세서와 같은 복잡한 집적 회로 디바이스용으로 개발된 코드의 감시점을 생성한다.

Description

파이프라인식 프로세서의 감시점 엔진{WATCHPOINT ENGINE FOR A PIPELINED PROCESSOR}
본 발명은 파이프라인식 프로세서의 감시점 생성에 관한 것이다.
파이프라인식 프로세서와 같이 복잡한 집적 회로 디바이스용으로 개발된 코드는 통상적으로 과도한 디버깅을 필요로 한다. 그에 따라, 프로세서 파이프라인을 통한 명령어의 전달을 모니터링하는 감시점(watchpoint)을 생성하는 것이 유리하다. 이러한 이유로, 감시점 엔진을 설치하여 프로세서 파이프라인으로부터 상태 정보를 추출하고 그 상태 정보를 제어 장치에 제공함으로써 이벤트가 처리될 수 있다. 이 방식으로, 애플리케이션 개발자는 적합한 코드 연산을 검증할 수 있으며, 그에 따라 프로세서용으로 개발된 코드를 디버깅할 수 있다.
도 1은 파이프라인식 프로세서와 감시점 엔진을 구비한 집적 회로를 도시하는 회로도이다.
도 2는 감시점 엔진을 구현하기에 적당한 회로를 도시하는 회로도이다.
도 3은 감시점 엔진을 구현하기에 적당한 추가 회로를 도시하는 회로도이다.
도 4는 감시점 엔진을 구현하기에 적당한 추가 회로를 도시하는 다른 회로도 이다.
도 5는 감시점 엔진을 구현하기에 적당한 추가 회로를 도시하는 다른 회로도이다.
도 6은 감시점 매치의 생성을 도시하는 흐름도이다.
도 1은 집적 회로 디바이스(10)를 도시하는 블록도이다. 도 1에 도시하는 바와 같이, 집적 회로 디바이스(10)는 프로그램 가능한 프로세서(12), 프로세서 제어 장치(14) 및 감시점 엔진(16)을 포함할 수 있다. 프로세서(12)는 플래시 메모리 디바이스와 같은 랜덤 액세스 메모리(RAM) 디바이스에 있는 명령어를 실행할 수 있다. 프로세서(12)는 다수개의 실행 스테이지를 구비한 파이프라인식 프로세서일 수 있다. 감시점 엔진(16)은 프로세서(12)로부터 상태 정보를 실시간으로 추출하고 그 정보를 처리하여 제어 장치(14)에게 예외(exception) 및 인터럽트와 같은 이벤트를 통보한다.
감시점 엔진(16)은 어드레스의 포함(inclusive) 범위 또는 배제(exclusive) 범위뿐만 아니라 데이터나 명령어의 어드레스에 대해 매칭하도록, 즉 조합 매치(combinatorial match)가 가능하도록 구성될 수 있다. 또한, 감시점 엔진(16)은 파이프라인식 프로세서(12)의 후속 실행 스테이지를 통해 감시점 어드레스 매치의 전달을 추적하도록 구성될 수 있다. 그 목적상, 감시점 엔진(16)은 적절한 레지스터와 그 레지스터의 기능을 지원하도록 구성된 로직을 포함할 수 있다. 레지스터는 플립플롭이나 래치로서 구현될 수 있다. 또한, 감시점 엔진(16)은 프로세서(12)의 높은 빈도수의 동작을 위한 감시점을 실시간으로 생성하도록 구성될 수 있다.
감시점 엔진(16)의 모듈 부분은 상이한 기능에 대해 독립적으로 인에이블 및디스에이블되어 전력 절감을 도모할 수 있다. 감시점 엔진(16)은 전력 절감이 중요한 핸드헬드용 또는 기타 휴대용 배터리 구동식 디바이스에 내장된 집적 회로에 특히 유용할 수 있다. 따라서, 일부 실시예에서는, 감시점 엔진(16)은 실시간 응답, 높은 빈도수의 동작 및 소비 전력 절감의 장점들을 조합할 수 있다.
명령어 및 데이터에 대한 정확한 감시점 매치의 생성은 디버깅을 용이하게 하며 코드 패칭(code patching)을 가능하게 한다. 프로세서 파이프라인을 통한 명령어의 전달은 모방(emulation) 이벤트와 예외 이벤트를 식별하여 모방 모드 연산 또는 예외 처리를 적절하게 제공하도록 실시간으로 모니터링될 수 있다. 감시점 매치는 관련된 명령어가 개입되기 전에 여러개의 사이클로 식별될 수 있다. 중요한 것은, 예외 처리가 신속하고 정확하게 발생하여, 명령어가 재기록 스테이지에 도달할 때 그 명령어를 킬(kill)할 수 있다는 점, 즉 그 명령어를 종료시킬 수 있다는 점이다. 이 특징은 코드 패칭을 가능하게 한다. 그에 따라, 높은 빈도수의 실시간 감시점 매칭을 제공할 수 있는 능력은 코드 개발자에게 상당한 장점을 제공할 수 있다.
도 2는 감시점 엔진(16)을 구현하기에 적당한 회로를 도시하는 블록도이다. 도 2에 도시하는 바와 같이, 감시점 엔진(16)은 하나 이상의 감시점 레지스터(18, 20)를 포함할 수 있다. 감시점 레지스터(18)는 "WP0"으로 표시되고, 감시점 레지스터(20)는 "WP1"로 표시된다. 감시점 레지스터(18, 20)는 코드 개발자에 의해 디버 깅 용도의 원하는 감시점 어드레스로 프로그래밍될 수 있다. 도 2에서, 감시점 레지스터(18, 20)는 플립플롭으로 표시된다. 일실시예에서, 감시점 엔진(16)은 다수개의 명령어와 데이터 어드레스 및 다수개의 어드레스 범위에 대한 매칭을 가능하게 하는 6개의 감시점 레지스터를 포함할 수 있다.
감시점 상태 레지스터(미도시)에는 감시점 매치가 기록된다. 감시점 명령어 어드레스 제어 레지스터와 감시점 데이터 어드레스 제어 레지스터(미도시)는 특정한 감시점 매치가 모방 이벤트나 예외 이벤트를 발생해야 하는지의 여부를 규정한다. 코드 패칭 또는 구(舊)코드 교체는 구코드의 시작 어드레스를 감시점 레지스터 중 하나에 기록하고, 대응 비트를 제어 레지스터 중 하나에 설정함으로써 행해져서 예외를 개시할 수 있다. 예외 제공 루틴에서, 상태 레지스터가 판독된다. 일반적으로, 명령어가 재기록을 요구할 때, 그 명령어는 킬된다. 그 시점에서, 예외 루틴은 다른 위치의 명령어로의 점프를 일으킨다. 그 위치에서 명령어가 실행된다. 그리고 나서, 프로그램은 재기록시 킬되었던 명령어 직후의 명령어로 리턴된다. 그에 따라, 킬되었던 명령어 대신에 신코드가 실행되고, 코드 패치가 이루어진다.
감시점 레지스터(18, 20)에는 직접 매치 감시점 또는 범위 경계 감시점이 로드될 수 있다. 직접 매치 감시점은 감시점 엔진(16)이 감시점 매치를 생성하는 명령어 또는 데이터에 대한 메모리 어드레스이다. 범위 경계 감시점은 감시점 엔진(16)이 감시점 매치를 제공하는 어드레스의 범위에 대한 경계 중 하나를 한정하는 명령어나 데이터의 메모리 어드레스이다.
직접 매치의 경우, 감시점 어드레스는 독립적인 방식으로 감시점 레지스터(18, 20)에 로드된다. 범위 매치의 경우, 매칭을 위한 어드레스의 범위를 함께 정하는, 감시점 래지스터(18)와 감시점 레지스터(20)에 로드된 양쪽의 감시점 어드레스가 이용된다. 직접 감시점 어드레스와 범위 경계 감시점 어드레스는 원하는 대로 감시점 레지스터(18, 20)에 프로그램될 수 있다.
감시점 엔진(16)은 또한 멀티플렉서(22, 24, 26, 28)와 비교기(30, 32, 34, 36)를 포함할 수 있다. 멀티플렉서(22, 26)는 제공된 현재 명령어나 데이터 어드레스, 또는 일반적으로 멀티비트 값이 될 "0"을 선택한다. 그 어드레스는 예시적으로 프로그램 카운터에 의해 제공된 명령어 어드레스(IA)로서 도 2에 도시된다. 도 1의 어드레스는 실행 스테이지, 예컨대 EX1에서 한정된다. 멀티플렉서(24, 28)는 각 감시점 레지스터(18, 20)에 로드된 감시점 어드레스 또는 일반적으로 멀티비트 값이 될 "1"이나 다른 비제로 값을 선택한다. 멀티플렉서(22, 24)의 출력이 비교기(30, 32)에 인가된다. 유사하게, 멀티플렉서(26, 28)의 출력이 비교기(34, 36)에 인가된다. 각 경우에서, 각 비교기(30, 32, 34, 36)는 한쪽 멀티플렉서(22, 26)의 출력과 다른쪽 멀티플렉서(24, 28)의 출력을 비교한다.
멀티플렉서(22, 24, 26, 28)는 감시점 레지스터(18, 20)의 한쪽이나 양쪽이 전력 절감을 위해 디스에이블될 경우에 비교기 회로를 안정시키기 위해 설치된다. 단일 직접 매치 감시점만 모니터링되는 경우, 예를 들어, 감시점 레지스터(18, 20) 중 하나가 디스에이블될 수 있다. 이것은 전력 절감의 면에서는, 특히 배터리 구동식 디바이스에서는 매우 유리하다. 특히, 감시점 엔진(16)의 일부 또는 전부는 그 감시점 엔진이 필요없을 때 선택적으로 디스에이블되어 과도한 소비 전력을 막을 수 있다. 감시점 모니터링이 필요없다면, 전체 인에이블 비트가 리셋되어 감시점 회로에 연관된 모든 플립플롭 및 래치를 디스에이블할 수 있다.
WP0 인에이블/디스에이블 제어 라인은 2개의 멀티플렉서(22, 24)에 연결될 수 있다. WP1 인에이블/디스에이블 제어 라인은 2개의 멀티플렉서(26, 28)에 연결될 수 있다. 감시점 레지스터(18)가 인에이블되지 않는다면, 멀티플렉서(22, 24)는 WP0 디스에이블 신호를 수신하고, 멀티비트 "0"과 "1"을 비교기(30, 32)에 각각 전달한다. 감시점 레지스터(18)가 인에이블된다면, 비교기(30, 32)는 명령어 어드레스(IA)와 각 감시점 어드레스를 수신하여 비교한다. 이 경우에도, 명령어 어드레스는 예시적으로 설명되는 것이다. 다른 예에서, 어드레스는 데이터 어드레스일 수 있다. 멀티플렉서(26, 28)는 감시점 레지스터(20)가 디스에이블되는 경우에 WP1 디스에이블 신호에 응답해서 유사한 방식으로 작동한다. 비교기(30, 32, 34, 36)가 토글하지 않으면, 그 비교기에 연결된 다운스트림 로직의 나머지 대부분도 동작하지 않게 되어, 소비 전력을 상당히 절감할 수 있다.
정상 동작시에, 비교기(30, 34)는 감시점 레지스터(18, 20) 각각의 감시점 어드레스와 멀티플렉서(22, 26)를 통해 제공된 현재 어드레스간의 직접 매치를 모니터링한다. 다시 말해서, 비교기(30, 34)는 감시점 어드레스와 명령어 어드레스가 서로 같은지의 여부를 판정한다. 레지스터(18)로부터의 감시점 어드레스와 명령어 어드레스가 동일하면, 비교기(30)는 멀티비트 "1"을 감시점 매치 발생기의 부분을 형성하는 추가의 감시점 로직 회로에 전달한다. 비교기(34)도 유사한 방식으로 동작한다.
비교기(32)는 레지스터(18)의 감시점 어드레스가 명령어 어드레스보다 작은지의 여부를 판정한다. 이 경우에, 레지스터(18)의 감시점 어드레스는 범위 매치에 대한 보다 낮은 경계 어드레스로서 이용될 수 있다. 비교기(36)는 레지스터(20)의 감시점 어드레스가 명령어 어드레스보다 크거나 같은지의 여부를 판정한다. 이 경우에, 레지스터(20)의 감시점 어드레스는 범위 매치에 대한 보다 높은 경계 어드레스로서 이용될 수 있다. 각각의 비교기(32, 36)에서 감시점 매치가 존재한다면, 명령어 어드레스는 레지스터(18, 20)에 의해 규정되는 범위 안에 있게 된다. 이 경우에 있어서, 비교기(32, 26)는 추가의 로직 회로에 "1"을 전달한다.
도시되는 실시예에서, 비교기(30)의 출력은 AND 게이트(38)에 연결되고, 비교기(32)의 출력은 AND 게이트(40)와 OR 게이트(42)의 반전 입력에 연결된다. 비교기(34)의 출력은 AND 게이트(44)에 연결되고, 비교기(36)의 출력은 AND 게이트(40)와, OR 게이트(42)의 반전 입력에 연결된다. AND 게이트(38, 44)는 범위 인에이블 신호를 수신하는 반전 입력을 갖는다. 사실상, AND 게이트(38, 44)는 비교기(30, 34)가 직접 감시점 어드레스 매치를 나타내었고 감시점 엔진(16)이 범위 모드에서 동작하지 않는다면, 즉 AND 게이트(38, 44)가 "반전된 범위 신호"를 수신하면, "1"을 전달한다.
AND 게이트(40)의 출력은 명령어 어드레스가 감시점 레지스터(18, 20)에 로드된 범위 경계 감시점에 의해 정해진 포함 범위 안에 있는지의 여부를 판정하는 또다른 AND 게이트(46)에 공급된다. AND 게이트(46)는 입력으로서, AND 게이트(40)의 출력, 감시점 엔진(16)이 범위 모드에 있는지를 규정하는 범위 인에이블 신호, 범위 모드가 포함인지를 나타내는, 즉 감시점 엔진이 감시점 레지스터(18, 20)에 로드된 2개의 범위 경계 감시점 사이에 있는 어드레스에 대해 매치되는지를 나타내는 포함 신호를 수신한다.
OR 게이트(42)는 배제 범위를 한정하도록 동작하며, 비교기(32, 36)의 출력을 반전 입력에서 수신한다. OR 게이트(42)에서의 출력 "1"은 감시점 레지스터(18)의 감시점 어드레스가 명령어 어드레스보다 작지 않거나, 감시점 레지스터(20)의 감시점 어드레스가 명령어 어드레스보다 크지 않거나 같다는 것을 나타낸다. OR 게이트(42)의 출력은 AND 게이트(48)에 공급되고, 이 AND 게이트는 또한 디스에이블 신호를 반전 입력에서 수신한다. 디스에이블 신호는 배제 범위 모드가 인에이블되는지 또는 디스에이블되는지의 여부를 표시한다. 그에 따라, 디스에이블 신호가 로우이고 비교기(32, 36)의 출력 중 하나가 로우일 때, OR 게이트(42)와 AND 게이트(48)는 "1"을 전달한다.
AND 게이트(48)의 출력은 또다른 AND 게이트(50)에 공급된다. AND 게이트(50)는 추가 입력으로서 범위 인에이블 신호와 배제 범위 인에이블 신호를 수신한다. 범위 인에이블 신호는 감시점 엔진(16)이 범위 모드에 있음을 표시하고, 배제 신호는 그 범위 모드가 배제라고 표시한다. 다시 말해서, 감시점 엔진(16)은 이 엔진이 감시점 레지스터(18, 20)에 로드된 범위 경계 감시점에 의해 정해진 범위의 외부에 있는 어드레스에 대해 매치하는 모드에 있다. 배제 신호가 하이이고, 범위 신호도 하이이며, AND 게이트(48)의 출력도 하이이면, AND 게이트(50)은 "1"을 OR 게이트(50)에 전달한다.
OR 게이트(52)는 입력으로서, 포함 범위 AND 게이트(46)의 출력, 배제 범위 AND 게이트(50)의 출력, 및 직접 매치 AND 게이트(38)의 출력을 수신한다. OR 게이트(52)에 입력되는 입력 중 어느 하나라도 하이이면, OR 게이트는 AND 게이트(54)에 "1"을 출력한다. 도 2에 도시하는 로직 회로는 프로세서 파이프라인의 첫번째 실행 스테이지 내에서 주로 동작한다. 도시된 바와 같이, 그 스테이지는 "EX1" 스테이지로서 표시된다. 그 파이프라인 앞에서 명령어가 킬되었거나 스톨되었다면, 그 이벤트는 도 2의 로직 회로에 의해 결정된 감시점 매치를 전달하기 전에 처리된다.
이러한 이유로, AND 게이트(54)는 입력으로서, 반전된 킬(Kill) 신호, 반전된 스톨(Stall) 신호 및 유효(Valid) 신호를 포함한다. 킬 신호는 그 특정 파이프라인 단의 명령어가 킬되었다고 표시한다. 스톨 신호는 그 특정 파이프라인 스테이지의 명령어가 스톨되었다고 표시한다. 유효 신호는 현재 명령어가 유효하다고 표시한다. AND 게이트(54)가 OR 게이트(52)로부터의 매치 신호를 반전된 킬, 반전된 스톨 및 유효로 이루어진 표시의 조합으로 수신한다면, AND 게이트(54)는 감시점 엔진(16)의 다음 스테이지에 "1"을 전달한다. 그렇지 않다면, AND 게이트(54)는 "0"을 생성한다.
AND 게이트(54)에 의해 출력된 "1"은 어떤 감시점 모드를 그 시각에 감시점 엔진(16)에 적용할 수 있는가에 따라서, 포함 범위 매치, 배제 범위 매치 또는 직접 매치 중 하나가 존재하였다고 표시한다. AND 게이트(54)에 의해 검출되는 포함 범위 매치와 배제 범위 매치는 감시점 레지스터(18, 20)에 로드된 감시점 어드레스에 대해서 상대적으로 행해진다. AND 게이트(54)에 의해 검출되는 직접 매치는 감시점 레지스터(18)에 로드된 감시점 어드레스에 대해서 상대적으로 행해진다.
AND 게이트(54)와 유사한 AND 게이트(56)는 감시점 레지스터(20)에 로드된 감시점 어드레스에 대한 직접 매치를 검출하여 표시하도록 제공된다. AND 게이트(56)는 입력으로서, AND 게이트(44)의 출력, 반전된 킬 신호, 반전된 스톨 신호 및 유효 신호를 수신한다. AND 게이트(44)의 출력이 하이이고 AND 게이트(54)가 킬 및 스톨되지 않으며 유효한 신호를 수신하면, AND 게이트(54)는 감시점 엔진(16)의 다음 스테이지에 "1"을 전달한다. 이와 같이 하여, AND 게이트(54)는 감시점 레지스터(20)에 로드된 감시점 어드레스에 대한 직접 어드레스 매치를 표시한다.
도 3은 감시점을 생성하는 추가 회로를 도시하는 개략도이다. 도 3의 회로는 도 2에 도시된 스테이지에 후속하는 감시점 엔진(16)의 다음 스테이지를 나타내고, 도 3에서 점선의 경계선으로 표시되는 것처럼, 프로세서 파이프라인의 제2(EX2) 스테이지, 제3(EX3) 스테이지 및 재기록(WB) 스테이지까지 미친다. 도 3의 예에서, 예컨대 플립플롭으로 구성된 레지스터(58)는 도 2의 AND 게이트(54)의 출력을 유지 기억한다. 도 3에 도시된 것과 거의 유사한 회로를 제공하여 도 2의 AND 게이트(56)의 출력을 처리할 수 있다.
도 3의 회로에서 한가지 중요한 형태는 프로세서 파이프라인의 실행 스테이지 내에서 예외의 정확한 처리가 가능한 다이내믹 카운터 로직이다. 감시점 매치가 EX2에 전달되지만, 예를 들어 EX3의 파이프라인 이전에 명령어가 킬된다면, 감시점 엔진(16)은 그 감시점 어드레스에 대해 매칭된 킬된 명령어를 보정하도록 카운터를 재조정한다. 이러한 이유에서, 레지스터(58)의 출력은 카운터 회로와 감시점 로직 양쪽에 공급된다. 특히, 레지스터(58)의 출력은 카운터 로직 회로(60)에 공급되고, 카운터 로직 회로(60)는 카운터 컨트롤러로서 역할하고, 도면 부호 62에 의해 표시되는 것처럼, 추가 입력으로서 카운트 조정 신호를 수신한다.
카운터 로직 회로(60)는 멀티플렉서(64)를 제어하여, 가산기(66)에 공급되는 -1 또는 카운터 조정값 중 하나를 선택한다. 가산기(66)는 일련의 멀티플렉서(68, 70)와 카운트 레지스터(72)에 의해 생성된 카운터값을 증분하거나 감분하도록 지원한다. 1씩 감분하는 것, 즉 -1을 가산하는 것은 카운트되고 있는 특정 이벤트가 검출될 때의 보통 동작이다. 카운터는 모방 또는 예외 이벤트 핸들러를 트리거링하기 전에 특정 감시점의 연속 발생의 카운트를 가능하게 하도록 제공된다. 특히, EX1 스테이지에서 검출된 감시점 매치 발생은 이후 스테이지, 즉 EX2 스테이지에서 카운트된다.
카운트 레지스터(72)의 출력은 도면 부호 74로 표시되는 바와 같이, 가산기(66)에 다시 공급되고, 멀티플렉서(68)의 입력 중 하나로 공급된다. 멀티플렉서(68)는 그것의 다른 입력으로서 가산기(66)의 출력을 수신한다. 멀티플렉서(70)는 원하는 카운트값을 로드하기 위해 제공된다. 멀티플렉서(70)는 카운터 인에이블 신호에 응답하여, 멀티플렉서(68)에 의해 생성된 카운트값 또는 애플리케이션 개발자에 의해 메모리에 로드된 초기 카운트값을 선택한다. 다시 말해서, 멀티플렉서(70)는 이벤트 트리거를 발생시키기 전에 이벤트가 검출되어야 하는 횟수를 나타내는 초기 카운트값의 입력을 허용한다. 동작시에, 그 초기 카운트값은 가산기(66)에 의해 감분된다.
카운트 갱신 신호는 멀티플렉서(68)가 가산기(66)의 출력을 선택하여야 하는지 레지스터(72)의 출력을 선택하여야 하는지를 나타낸다. 그에 따라, 카운트 갱신 신호는 카운트값이 갱신되어야 하는지 유지되어야 하는지의 여부를 나타낸다. 가산기(66)의 출력이 멀티플렉서(68)에 의해 선택되면, 기존의 카운터값은 멀티플렉서(64)의 출력에 따라 감분 또는 증분되어 가산기에 입력된다. 레지스터(72)의 출력이 멀티플렉서(68)에 의해 선택되면, 기존의 카운터값은 증분 또는 감분되지 않고 유지된다.
카운터 회로는, 예컨대 직접 매치 또는 범위 매치와 같은 특정 이벤트의 원하는 발생수를 추적한다. 명령어가 감시점 어드레스 매치를 생성했고 그 결과 카운터에서 감분이 이루어졌지만 그 명령어가 EX3 스테이지에서 킬된다면, 카운터값은 매칭된 명령어가 카운트되었지만 실질적으로 킬되었다는 사실을 보정하기 위해, 감분되기 보다는 1만큼 증분된다. 명령어가 감시점 어드레스 매치를 생성했고 그 결과 카운터에서 감분이 일어났지만, 그 명령어가 재기록 스테이지에서 킬된다면, 카운터값은 감분되기 보다는 1만큼 증분된다. 감시점 어드레스 매치를 생성한 명령어가 EX3 스테이지와 재기록 스테이지에서 킬된다면, 카운터값은 감분되기 보다는 2만큼 증분된다. 카운터값이 조정되어야 하는 값을 결정하는 로직은 레지스터(76), AND 게이트(78), 레지스터(80), 로직 회로(82) 및 레지스터(84)에 의해 제공된다.
레지스터(76)는 AND 게이트(75)로부터, 유효 매치가 EX2 스테이지에서 검출되었는지의 여부를 나타내는 입력을 수신한다. 유효 매치는 감시점 어드레스 매치를 생성한 관련 명령어가 현재 파이프라인 스테이지에서 유효하고 킬 및 스톨되지 않았다는 것을 의미한다. 레지스터(76)의 출력은 AND 게이트(78)와 로직 회로(82)에 공급된다. AND 게이트(78)는 또한 입력으로서, 매칭된 명령어가 EX3 스테이지에서 킬 및 스톨되지 않고, 유효한지의 표시를 수신한다. 킬 및 스톨되지 않고 유효한 신호들은 각 파이프라인 스테이지마다 논리적으로 상이한 신호들이다. 매치가 존재하고 그 매칭된 명령어가 EX3 스테이지에서 킬 및 스톨되지 않고 유효하다면, AND 게이트(78)의 출력은 레지스터(80)에 공급되어, 재기록(WB) 스테이지에 값을 출력한다.
레지스터(80)의 출력은 레지스터(76)의 출력과 함께 로직 회로(82)에 공급된다. 로직 회로(82)는 이어서 카운터 조정값을 생성하고 레지스터(84)의 입력을 구동한다. 레지스터(76)의 출력은 명령어가 EX3 스테이지에서 킬되었는지, 스톨되었는지 또는 무효한지의 여부를 나타낸다. 레지스터(80)의 출력은 명령어가 재기록 스테이지에서 킬되었는지, 스톨되었는지 또는 무효한지의 여부를 나타낸다. 이들 입력에 기초해서, 로직 회로(82)는 전술한 카운터 조정값, 즉 1 또는 2를 생성하고, 감분 연산을 보정한다. 레지스터(84)는 카운터 조정값을 멀티플렉서(64)에 제공한다. 카운터 조정이 필요할 때, 로직 회로(82)는 멀티플렉서(64)로의 -1 또는 0 입력보다는 레지스터(84)에 의해 생성된 카운터 조정값이 선택되도록 제어 신호로서 멀티플렉서(64)에 입력되는 카운트 조정 신호를 또한 생성한다. 카운트 조정 신호는 명령어가 EX3 스테이지나 재기록 스테이지에서 킬되었는지의 여부를 간단히 표시할 수 있다.
로직 회로(82)는 파이프라인의 이후 실행 스테이지에서 매칭된 명령어의 킬되는 것에 응답하여 카운터 조정값을 생성한다. 이와 같이 하여, 특정한 매치의 생성수를 추적하는 카운터값은 카운트되지만 나중에 킬되는 매치에 대해 보정될 수 있다. 로직 회로(82)의 출력은 기본적으로 2가지 상태와 이 상태들의 조합을 추적한다.
제1 상태는 감시점 어드레스 매치를 생성한 명령어가 EX3 스테이지에서 킬되었을 때 존재한다. 제2 상태는 감시점 어드레스 매치를 생성한 명령어가 재기록 스테이지에서 킬되었을 때 존재한다. 일부 경우에서는 2가지 상태가 모두 존재할 수 있다. 로직 회로(82)는 레지스터(76)와 레지스터(78)의 출력에 기초해서 그들 상태를 식별한다. 레지스터(76)의 출력은 EX3 스테이지에서 유효 매치를 나타내고, 레지스터(80)의 출력은 명령어가 재기록 스테이지에서 킬되었는지 또는 스톨되었는지의 여부를 나타낸다.
제1 상태가 존재하고 제2 상태는 없을 경우, 로직 회로(82)는 카운터 조정값으로서 "1" 값을 생성한다. 이런 식으로, 가산기(66)는 기존의 카운터값에 "1"을 더하여 킬된 명령어를 파이프라인에서 한 스테이지 앞서서 보정한다. 양 스테이지(EX3과 WB)에서 킬된 명령어가 있지만, 그 스테이지들에 감시점 어드레스 매치가 없으면, 카운터에 제로가 가산된다.
제2 상태가 존재하고 제1 상태는 없을 경우, 로직 회로(82)는 카운터 조정값으로서 "1"값을 생성한다. 이런 식으로, 가산기(66)는 기존의 카운터값에 "1"을 더하고, 카운터값을 감분하는 대신에 그 값을 증분시켜서, WB 스테이지의 킬된 명령어를 보정한다.
제1 상태와 제2 상태가 모두 존재하는 경우, 로직 회로(82)는 카운터 조정값으로서 "2" 값을 생성한다. 이런 식으로, 가산기(66)는 기존의 카운터값에 "2"를 더하고, 카운터값을 감분하는 대신에 그 값을 "2"만큼 증분시켜, EX3 스테이지와 후속하는 재기록(WB) 스테이지에서, 감시점 어드레스 매치를 생성했던 명령어를 보정한다.
AND 게이트(86)는 레지스터(58)의 출력과, 가산기(66)의 최상위 비트와, 반전 입력에서 레지스터(72)의 최상위 비트 출력을 수신한다. AND 게이트(86)는 EMU 이벤트 또는 EXC 이벤트의 발생에 대한 상태와 같이, 롤오버(roll over)했는지의 여부를 추적하고, 그에 따라 레지스터(72)와 가산기(66)의 최상위 비트의 검사만 필요로 한다. 레지스터(58)의 출력과 AND 게이트(86)의 출력이 멀티플렉서(88)에 의해 수신된다. 레지스터(58)의 출력이 감시점 매치를 표시할 때, 레지스터(72)의 현재 카운터값은 "1"로 감분되었으며, 가산기(66)의 출력은 (현재 사이클상에서 카운터 조정이 없음을 나타내는) "1"이며, AND 게이트(86)는 멀티플렉서(88)에 "1"을 출력한다.
카운트 인에이블 신호는 개발자가 감시점의 생성수를 규정했는지의 여부 또는 단일 발생이 이벤트 트리거링에 충분한지의 여부를 나타낸다. 이와 같이 하여, 카운트 인에이블 신호는 멀티플렉서(88)가 레지스터(58)의 출력 또는 AND 게이트(86)의 출력을 선택해야 하는지의 여부와, 그에 따라, 첫번째 발생 또는 n번째 발생에 대해 각각 트리거링해야 하는지에 여부를 결정할 수 있다. 멀티플렉서(88)는 따라서 감시점의 생성수를 규정하는 트리거 회로의 부분을 형성할 수 있다.
멀티플렉서(88)의 출력은 모방(EMU) 이벤트 발생 회로(90)와 예외(EXC) 이벤트 발생 회로(92)를 구동시킬 수 있다. EMU 발생 회로(90)는 파이프라인의 EX3 스테이지에서 모방 요청(EMU REQ)을 생성하는 레지스터(94)를 구동시킨다. EXC 발생 회로(92)는 파이프라인의 EX3 스테이지에서 예외 요청(EXC REQ)을 생성하는 레지스터(96)를 구동시킨다. EMU 및 EXC 생성 회로(90, 92)는 도 4를 참조하여 이하에서 더욱 상세히 설명한다.
모방 이벤트에 의해서 프로세서(12)는 모방 모드에 진입한다. 모방 모드에서, 명령어는 집적 회로 디바이스(10)에 제공된 JTAG 인터페이스로부터 판독될 수 있다. JTAG 인터페이스는 IEEE 표준 1149.1("Test Access Port and Boundary-Scan Architecture"라는 제목으로 1990년에 발표된 IEEE Std. 1149.1-1990)에 의해 정의된다. 모방 이벤트가 발생할 때, 모방 이벤트의 타입, 예컨대 감시점 매치가 상태 레지스터에 기록된다. 선택적으로, 감시점 매치는 프로세서(12)로 하여금 모방 이벤트보다는 예외를 발생하게 할 수 있다. 예외 이벤트의 경우, 프로세서(12)는 예외 핸들러로 트랩한다. 구성 비트(configuration bit)는 특정 이벤트가 모방 이벤트 또는 예외 이벤트를 발생시켜야 하는지의 여부를 규정하도록 감시점 명령어 어드레스 제어 레지스터와 감시점 데이터 어드레스 제어 레지스터에 설정될 수 있다.
도 4는 감시점 엔진의 구현에 적합한 추가 회로를 도시하는 다른 회로도이다. 특히, 도 4는 EMU 이벤트 발생 회로(90)와 EXC 이벤트 발생 회로(92)를 보다 상세하게 도시하고 있다. 도 3의 AND 게이트(86)와 멀티플렉서(88)는 도 4에도 도시되어 있다. 도 4에 도시하는 바와 같이, EMU 이벤트 발생 회로(90)는 입력으로서 EMU 인에이블 신호와, 감시점 이벤트의 식별을 나타내는 멀티플렉서(88)의 출력을 수신하는 AND 게이트(91)를 포함할 수 있다. EMU 인에이블 신호는 원하는 이벤트의 타입이 모방이라고 표시한다. AND 게이트(91)의 출력은 OR 게이트(93, 95)를 구동한다.
집적 회로 디바이스(10)는 도 2에 도시된 것과 같은, 다수쌍의 감시점 비교기를 포함할 수 있다. AND 게이트(91)의 출력 외에도, OR 게이트(93)는 감시점 엔진 전체의 출력을 수신한다. OR 게이트(95)는 AND 게이트(91)의 출력 외에도, 다양한 감시점 엔진 비교기쌍에 의해 생성되는, 명령어에 대한 전체 감시점 어드레스 매치의 표시를 수신한다. 추가의 OR 게이트(97)는 다양한 감시점 엔진 비교기쌍에 의해 생성되는 데이터에 대한 전체 감시점 어드레스 매치의 표시를 수신한다. 그에 따라, OR 게이트(93, 95, 97)는 감시점 어드레스 매치의 표시에 대해 집적 회로 디바이스(10)의 전체 감시점 엔진의 출력을 모니터링한다. 일반적으로, 데이터 매치는 EMU 이벤트의 생성만 유도한다.
AND 게이트(98)는 하나의 입력에서 게이트(93)의 출력과, 도면 부호 102로 표시되는 명령어 및 데이터 매치 인에이블 신호를 반전 입력에서 수신한다. 명령어 및 데이터 매치 인에이블 신호가 하이이면, AND 게이트(98)는 사실상 디스에이블되어 로우 출력을 생성한다. 그러나, AND 게이트(100)는 OR 게이트(95)와 OR 게이트(97)가 모두 하이이고 그에 따라 동일한 사이클 상에서 명령어 매치와 데이터 매치 모두를 표시한다면, 하이 출력을 생성한다. 그러므로, 명령어 및 데이터 매치 인에이블 신호는 디바이스(10)를 명령어 매치와 데이터 매치가 모두 존재할 때에만 EMU 이벤트가 생성되는 모드에 있게 한다. 명령어 및 데이터 인에이블 신호가 로우라면, OR 게이트(93)의 출력에 의해 표시된 모든 감시점 어드레스 매치가 EMU 이벤트의 발생에 충분하다. 실제로, EMU 발생 회로(90)는 (a) 집적 회로 디바이스가 모방 모드에 있는지의 여부와 (b) 임의의 데이터 또는 명령어 매치가 존재하는지의 여부를 판정한다.
또한, 명령어 및 데이터 매치 인에이블 신호가 하이이면, OR 게이트(93)의 출력은 무시되고, OR 게이트(95, 97)의 출력은 이 출력이 모두 하이가 되는 이벤트에서 AND 게이트(100)를 하이로 구동한다. 명령어 및 데이터 매치 인에이블 신호가 로우라면, OR 게이트(93)의 출력만이 고려된다. 어느 경우이든, 관련 출력, 즉 AND 게이트(98 또는 100)의 출력이 하이이면, 게이트(104)는 하이가 되어 모방 요청을 생성한다.
예외 발생 회로(92)의 경우, EMU 인에이블 신호와 멀티플렉서(88)의 출력은 AND 게이트(106)에 입력을 제공한다. EMU 인에이블 신호는 AND 게이트(106)의 반전 입력에서 수신된다. 멀티플렉서(88)의 출력은 감시점 비교기 쌍들 중 하나에 대한 감시점 매치 상태를 나타내고, 따라서 EXC 이벤트 발생 회로(92)의 다수의 입력 중 하나가 된다. AND 게이트(106)는 OR 게이트(108)의 입력 중 하나를 구동한다. OR 게이트(108)의 다른 입력들은 집적 회로 디바이스(10)에 설치될 수 있는 다른 감시점 비교기쌍에 의해 생성된 다양한 명령어 및 데이터 감시점 매치 상태이다. OR 게이트(108)의 출력은 레지스터(96)에 공급된다. 게이트(108)의 출력이 예외 매치를 표시한다면, 레지스터(96)는 예외 요청을 발생시키는 "1"을 출력할 수 있다.
도 5는 감시점 엔진의 구현에 적당한 추가 회로를 도시하는 다른 회로도이다. 특히, 도 5는 감시점 상태 레지스터("WP Stat")의 유지(maintenance)를 도시하고 있다. 감시점 상태 레지스터(WP Stat)는 감시점의 상태를 모니터링한다. 이 레지스터는 매 클록 사이클마다 갱신될 수 있다. 감시점 또는 감시점 범위가 매치될 때, WP Stat 레지스터는 감시점의 소스를 래치한다. 이것은 어떤 감시점과 어떤 소스가 매칭되었는지의 식별을 가능하게 한다.
도 5에 도시하는 바와 같이, AND 게이트(114)는 예외 이벤트와 모방 이벤트 중 어느 하나의 표시와 그 이벤트가 관련 스테이지에서 유효하고 킬 및 스톨되지 않는다는 표시를 수신한다. AND 게이트(114)의 출력은 2개의 플립플롭(116, 118)을 구동한다. 그 사이에 있는 AND 게이트(117)는 EX3에서의 매칭된 명령어가 킬 및 스톨되지 않으며 유효한지의 여부를 판정한다. 플립플롭(118)의 출력은 OR 게이트(120)의 하나의 출력을 구동한다. 플립플롭(118)의 출력 또는 WP Stat의 내용이 하이인 경우에, OR 게이트(120)의 출력은 하이이다.
멀티플렉서(122)는 입력으로서 OR 게이트(120)의 출력과 AND 게이트(124)의 출력을 수신한다. AND 게이트(124)는 입력으로서 WP Stat의 내용과, 반전 입력에서 WP Stat 클리어 신호를 수신한다. WP Stat 클리어 신호는 WP Stat 값이 제로로 설정되어야 하는지의 여부를 나타낸다. 제로로 설정되어야 한다면, AND 게이트(124) 의 출력은 로우이다. 멀티플렉서(122)는 EXC 설정/EMU 설정 제어 라인에 의해 제어된다. EXC 이벤트 또는 EMU 이벤트가 설정된다면, 멀티플렉서(122)는 OR 게이트(120)의 출력을 선택한다. EXC 이벤트 또는 EMU 이벤트가 설정되지 않는다면, 멀티플렉서(122)는 AND 게이트(124)의 출력을 선택한다. 멀티플렉서(122)는 WP Stat 레지스터의 내용을 나타내는 레지스터(126)를 구동한다.
도 6은 감시점 매치의 생성을 도시하는 흐름도이다. 현재 명령어 또는 데이터 어드레스와 제1 및 제2 감시점 어드레스(WP0, WP1)를 비교할 때(단계 128), 프로세스서는 포함 범위가 인에이블되는지의 여부를 판정한다(단계 130). 그렇다면, 프로세스는 그 어드레스가 제1 감시점 어드레스(WP0)보다 크고 제2 감시점 어드레스(WP1)보다 작은지(작거나 같은지)의 여부를 판정한다(단계 132). 단계 132에서 "아니오"라면, 감시점 매치가 없다고 판정된다(단계 134). 단계 132에서 "예"라면, 프로세스는 관련 명령어가 현재 파이프라인단에서 유효하고 킬 및 스톨되지 않는지의 여부를 판정한다(단계 136). 단계 136에서 "예"라면, 감시점 매치가 생성된다(단계 138).
포함 범위가 인에이블되지 않으면, 프로세스는 배제 범위가 인에이블되는지의 여부를 판정한다(단계 140). 그렇다면, 프로세스는 제1 감시점(WP0)이 그 어드레스보다 큰지의 여부 또는 그 어드레스가 제2 감시점(WP1)보다 큰지(크거나 같은지)의 여부를 판정한다(단계 142). 두가지 경우 중 하나가 참이면, 프로세스는 관련 명령어가 유효하고, 킬 및 스톨되지 않는지의 여부를 판정한다(단계 136). 그렇다면, 감시점 매치가 표시된다(단계 138). 두가지 경우 중 하나도 참이 아니면(단계 142), 감시점 매치는 없다(단계 144).
포함 범위(단계 130)도 배제 범위(단계 140)도 인에이블되지 않으면, 감시점(WP0, WP1)과의 직접 매치가 고려된다(단계 146, 단계 148). 두가지 중 어느 것도 직접 감시점 매치를 생성하지 않으면, 감시점 매치가 없다는 표시가 결정된다(단계 150). 감시점(WP0, WP1) 중 하나가 직접 매치를 생성하면, 관련 명령어는 유효하고, 킬 및 스톨되지 않는지의 여부가 판정된다(단계 136). 그 단계에서 참이면, 프로세스는 감시점 매치를 식별한다(단계 138).
본 발명의 여러 실시예들을 설명하였다. 이 실시예 및 다른 실시예들은 다음의 청구범위의 범위에 포함된다.

Claims (28)

  1. 감시점 어드레스를 기억하기 위한 감시점 레지스터와,
    상기 감시점 어드레스와 프로세서 파이프라인의 제1 스테이지에 제시된 명령어에 관련된 프로그램 어드레스를 비교하기 위한 비교기와,
    상기 프로그램 어드레스와 상기 감시점 어드레스가 동일할 때 감시점 매치를 생성하기 위한 감시점 발생기와,
    감시점 매치수를 나타내는 카운트값을 상기 프로세서 파이프라인의 제2 스테이지에서 생성하기 위한 카운터와,
    상기 카운트값이 트리거 임계값을 초과할 때 요청을 트리거링하기 위한 트리거 회로를 포함하는 것을 특징으로 하는 장치.
  2. 제1항에 있어서,
    상기 감시점 매치 중 하나에 관련된 명령어 가운데 하나가 파이프라인의 이후 스테이지에서 킬되거나 스톨될 때 상기 카운트값을 조정하기 위한 컨트롤러를 더 포함하는 것을 특징으로 하는 장치.
  3. 제 2 항에 있어서,
    상기 파이프라인의 제2 스테이지는 상기 파이프라인의 제1 스테이지보다 뒤에 있는 것을 특징으로 하는 장치.
  4. 제 2 항에 있어서,
    상기 프로그램 어드레스는 명령어 어드레스 또는 데이터 어드레스인 것을 특징으로 하는 장치.
  5. 제 2 항에 있어서,
    상기 감시점 매치에 관련된 미리 정해진 이벤트 타입에 기초해서 모방 이벤트 처리 요청 또는 예외 처리 요청 중 하나를 선택적으로 생성하도록 구성된 이벤트 발생 회로를 더 포함하는 것을 특징으로 하는 장치.
  6. 제 2 항에 있어서,
    상기 카운터는 각 감시점 매치마다 초기 카운트값을 감분함으로써 상기 카운트값을 생성하도록 동작하고, 상기 컨트롤러는 상기 감시점 매치 중 하나에 관련된 명령어 중 하나가 상기 파이프라인의 이후 스테이지에서 킬되거나 스톨될 때 감분 기능을 보정함으로써 상기 카운트값을 조정하도록 동작하는 것을 특징으로 하는 장치.
  7. 제 2 항에 있어서,
    상기 감시점 레지스터는 제1 감시점 어드레스가 로드된 제1 감시점 레지스터와 제2 감시점 어드레스가 로드된 제2 감시점 레지스터를 포함하고, 상기 비교기는 상기 제1 및 제2 감시점 어드레스와 상기 프로세서 파이프라인에 제시된 명령어에 관련된 프로그램 어드레스를 비교하도록 동작하고, 상기 감시점 발생기는 상기 프로그램 어드레스가 상기 제1 및 제2 감시점 어드레스에 의해 정해진 범위내에 있을 때 감시점 매치를 생성하도록 동작하는 것을 특징으로 하는 장치.
  8. 제 7 항에 있어서,
    상기 범위는 상기 제1 및 제2 감시점 어드레스 사이에 있는 포함 범위이거나, 상기 제1 및 제2 감시점 어드레스 사이의 범위 밖에 있는 배제 범위인 것을 특징으로 하는 장치.
  9. 제 7 항에 있어서,
    전력을 절감하기 위하여 상기 감시점 레지스터 중 하나를 선택적으로 디스에이블하도록 동작하는 회로를 더 포함하는 것을 특징으로 하는 장치.
  10. 제 7 항에 있어서,
    상기 비교기는 상기 제1 감시점 어드레스와 상기 프로그램 어드레스를 비교하도록 동작하는 제1 비교기와, 상기 제2 감시점 어드레스와 상기 프로그램 어드레스를 비교하도록 동작하는 제2 비교기를 포함하고, 상기 감시점 엔진은 상기 제1 및 제2 비교기 중 적어도 하나를 선택적으로 디스에이블하고 그 디스에이블된 비교기의 출력을 안정시키도록 동작하는 회로를 더 포함하는 것을 특징으로 하는 장치.
  11. 감시점 어드레스와 프로세서 파이프라인의 제1 스테이지에 제시된 명령어에 관련된 프로그램 어드레스를 비교하는 단계와,
    상기 프로그램 어드레스와 상기 감시점 어드레스가 동일할 때 감시점 매치를 생성하는 단계와,
    상기 감시점 매치수를 나타내는 카운트값을 상기 프로세서 파이프라인의 제2 스테이지에서 생성하는 단계와,
    상기 카운트값이 트리거 임계값을 초과할 때 요청을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    상기 감시점 매치 중 하나에 관련된 명령어 가운데 하나가 상기 파이프라인의 이후 스테이지에서 킬되거나 스톨될 때 상기 카운트값을 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서,
    상기 카운트값을 생성하는 단계는 상기 파이프라인의 제1 스테이지보다 뒤에 있는 파이프라인의 제2 스테이지에서 상기 카운트값을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  14. 제 12 항에 있어서,
    상기 요청을 생성하는 단계는 모방 이벤트 처리 요청 또는 예외 처리 요청을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  15. 제 12 항에 있어서,
    상기 감시점 어드레스와 상기 프로그램 어드레스를 비교하는 단계는 상기 감시점 어드레스와 명령어 어드레스 또는 데이터 어드레스를 비교하는 단계를 포함하는 것을 특징으로 하는 방법.
  16. 제 12 항에 있어서,
    상기 감시점 매치에 관련된 미리 정해진 이벤트 타입에 기초해서 모방 이벤트 처리 요청 또는 예외 처리 요청 중 하나를 선택적으로 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 제 12 항에 있어서,
    제1 및 제2 감시점 어드레스를 제1 및 제2 감시점 레지스터에 규정하는 단계와,
    상기 제1 및 제2 감시점 어드레스와 프로세서 파이프라인에 제시된 명령어에 관련된 프로그램 어드레스를 비교하는 단계와,
    상기 프로그램 어드레스가 상기 제1 및 제2 감시점 어드레스에 의해 정해진 범위 내에 있을 때 감시점 매치를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  18. 제 17 항에 있어서,
    상기 프로그램 어드레스가 상기 제1 및 제2 감시점 어드레스 사이에 있는 포함 범위 또는 상기 제1 및 제2 감시점 어드레스 사이의 범위 밖에 있는 배제 범위에 있을 때 상기 감시점 매치를 생성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  19. 제 17 항에 있어서,
    전력을 절감하기 위하여 상기 제1 및 제2 감시점 레지스터 중 하나를 선택적으로 디스에이블하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  20. 플래시 메모리 디바이스와,
    상기 플래시 메모리 디바이스에 연결된 파이프라인식 프로세서와,
    제1 감시점 어드레스를 기억하기 위한 제1 감시점 레지스터와,
    제2 감시점 어드레스를 기억하기 위한 제2 감시점 레지스터와,
    상기 제1 및 제2 감시점 어드레스와 프로세서 파이프라인에 제시된 명령어에 관련된 프로그램 어드레스를 비교하기 위한 비교기와,
    상기 프로그램 어드레스들이 상기 제1 및 제2 감시점 어드레스에 의해 정해진 범위 내에 있을 때 감시점 매치를 생성하기 위한 감시점 발생기와,
    상기 감시점 발생기에 의해 생성된 감시점 매치수를 나타내는 카운트값을 생성하기 위한 카운터와,
    상기 카운트값이 트리거 임계값을 초과할 때 요청을 트리거링하기 위한 트리거 회로와,
    상기 감시점 매치 중 하나에 관련된 명령어 가운데 하나가 상기 파이프라인의 이후 실행 스테이지에서 킬되거나 스톨될 때 상기 카운트값을 조정하기 위한 컨트롤러를 포함하는 시스템.
  21. 제 20 항에 있어서,
    상기 요청은 모방 이벤트 처리 요청 또는 예외 처리 요청인 것을 특징으로 하는 시스템.
  22. 감시점 어드레스가 로드된 감시점 레지스터와,
    상기 감시점 어드레스와 프로세서 파이프라인의 제1 스테이지의 명령어에 관련된 프로그램 어드레스를 비교하기 위한 비교기와,
    상기 프로그램 어드레스와 상기 감시점 어드레스가 동일할 때 감시점 매치를 생성하기 위한 감시점 발생기와,
    상기 감시점 발생기에 의해 생성된 감시점 매치수를 나타내는 카운트값을 상기 프로세서 파이프라인의 제2 스테이지에서 생성하기 위한 카운터와,
    상기 카운트값이 트리거 임계값을 초과할 때 요청을 트리거링하는 트리거 회로를 포함하는 것을 특징으로 하는 장치 엔진.
  23. 제 22 항에 있어서,
    상기 감시점 매치 중 하나에 관련된 명령어 가운데 하나가 상기 파이트라인의 이후 스테이지에서 킬되거나 스톨될 때 상기 카운트값을 조정하기 위한 컨트롤러를 더 포함하는 것을 특징으로 하는 장치 엔진.
  24. 제 22 항에 있어서,
    상기 요청은 모방 이벤트 처리 요청 또는 예외 처리 요청인 것을 특징으로 하는 장치 엔진.
  25. 감시점 어드레스를 규정하는 단계와,
    상기 감시점 어드레스와 프로세서 파이프라인의 제1 스테이지의 명령어에 관련된 프로그램 어드레스를 비교하는 단계와,
    상기 프로그램 어드레스와 상기 감시점 어드레스가 일치할 때 감시점 매치를 생성하는 단계와,
    상기 감시점 매치수를 나타내는 카운트값을 상기 프로세서 파이프라인의 제2 스테이지에서 생성하는 단계와,
    상기 카운트값이 트리거 임계값을 초과할 때 요청을 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  26. 제 25 항에 있어서,
    상기 감시점 매치 중 하나에 관련된 명령어 가운데 하나가 상기 파이프라인의 이후 스테이지에서 킬되거나 스톨될 때 상기 카운트값을 조정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  27. 제1 감시점 어드레스를 갖는 제1 감시점 레지스터와,
    제2 감시점 어드레스를 갖는 제2 감시점 레지스터와,
    상기 제1 및 제2 감시점 어드레스와 프로세서 파이프라인에 제시된 명령어에 관련된 프로그램 어드레스를 비교하기 위한 비교기와,
    상기 비교에 기초해서 감시점 매치를 생성하기 위한 감시점 발생기와,
    장치에서의 전력을 보존하기 위하여 상기 제1 및 제2 비교기 중 적어도 하나를 선택적으로 디스에이블하고 그 디스에이블된 비교기의 출력을 안정시키기 위한 회로를 포함하는 것을 특징으로 하는 장치.
  28. 제 27 항에 있어서,
    상기 프로그램 어드레스가 감시점 일치를 위한 범위 내에 있을 때, 상기 제1 및 제2 감시점 어드레스는 상기 감시점 일치를 위한 범위를 한정하는 것을 특징으로 하는 장치.
KR1020037007896A 2000-12-15 2001-12-10 파이프라인식 프로세서의 감시점 엔진 KR100571732B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/739,092 US6829701B2 (en) 2000-12-15 2000-12-15 Watchpoint engine for a pipelined processor
US09/739,092 2000-12-15
PCT/US2001/047621 WO2002048888A2 (en) 2000-12-15 2001-12-10 Watchpoint engine for a pipelined processor

Publications (2)

Publication Number Publication Date
KR20030090613A KR20030090613A (ko) 2003-11-28
KR100571732B1 true KR100571732B1 (ko) 2006-04-18

Family

ID=24970785

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037007896A KR100571732B1 (ko) 2000-12-15 2001-12-10 파이프라인식 프로세서의 감시점 엔진

Country Status (6)

Country Link
US (1) US6829701B2 (ko)
JP (1) JP3708521B2 (ko)
KR (1) KR100571732B1 (ko)
CN (1) CN1306411C (ko)
TW (1) TWI235949B (ko)
WO (1) WO2002048888A2 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2362968B (en) * 1999-12-23 2003-12-10 St Microelectronics Sa Computer system with debug facility
TWI223138B (en) * 2001-07-11 2004-11-01 Faraday Tech Corp Device and method for detecting micro-processor execution performance
US7065691B2 (en) * 2003-05-19 2006-06-20 Hewlett-Packard Development Company, L.P. Apparatus and method for saving precise system state following exceptions
US7711914B2 (en) 2005-06-28 2010-05-04 Hewlett-Packard Development Company, L.P. Debugging using virtual watchpoints
CN101192193A (zh) * 2006-11-27 2008-06-04 国际商业机器公司 用于实现观察点的方法和系统
US7783867B2 (en) * 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment
US7783865B2 (en) * 2007-08-01 2010-08-24 International Business Machines Corporation Conditional data watchpoint management
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
CN116775417B (zh) * 2023-08-16 2023-11-07 无锡国芯微高新技术有限公司 Risc-v处理器运行监测和行为追踪系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US531894A (en) * 1895-01-01 Alfred ashby
JP2505950B2 (ja) 1991-05-13 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション ハ―ドウェア支援ブレ―クポイント・システム
US5659721A (en) * 1995-02-14 1997-08-19 Hal Computer Systems, Inc. Processor structure and method for checkpointing instructions to maintain precise state
EP0992905A3 (en) 1998-10-06 2002-11-27 Texas Instruments Inc. Cache miss benchmarking
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6349371B1 (en) * 1999-10-01 2002-02-19 Stmicroelectronics Ltd. Circuit for storing information
US6557119B1 (en) * 1999-10-01 2003-04-29 Stmicroelectronics Limited Microcomputer debug architecture and method

Also Published As

Publication number Publication date
CN1555526A (zh) 2004-12-15
US6829701B2 (en) 2004-12-07
JP2004516550A (ja) 2004-06-03
JP3708521B2 (ja) 2005-10-19
US20020078329A1 (en) 2002-06-20
TWI235949B (en) 2005-07-11
KR20030090613A (ko) 2003-11-28
WO2002048888A9 (en) 2003-04-17
WO2002048888A2 (en) 2002-06-20
CN1306411C (zh) 2007-03-21
WO2002048888A3 (en) 2003-09-18

Similar Documents

Publication Publication Date Title
US8060730B2 (en) Selective MISR data accumulation during exception processing
US6708326B1 (en) Method, system and program product comprising breakpoint handling mechanism for debugging and/or monitoring a computer instruction sequence
US7043416B1 (en) System and method for state restoration in a diagnostic module for a high-speed microprocessor
KR100571732B1 (ko) 파이프라인식 프로세서의 감시점 엔진
US7865704B2 (en) Selective instruction breakpoint generation based on a count of instruction source events
US11803455B2 (en) Processor with debug pipeline
US5790843A (en) System for modifying microprocessor operations independently of the execution unit upon detection of preselected opcodes
US20080263379A1 (en) Watchdog timer device and methods thereof
US8108840B2 (en) Method for enhancing debugger performance of hardware assisted breakpoints
JPH10333939A (ja) マイクロプロセッサ
US20040260913A1 (en) Firmware code profiling
US6990569B2 (en) Handling problematic events in a data processing apparatus
US20190163601A1 (en) Apparatus and method for controlling assertion of a trigger signal to processing circuitry
JPH0756774A (ja) ウォッチドッグタイマ
JPS60124746A (ja) デ−タ処理装置
EP1221096A1 (en) Method and apparatus for modifying microinstructions in a static memory device
Stodden et al. Hardware instruction counting for log-based rollback recovery on x86-family processors
JPS6118045A (ja) プログラムの暴走検出方式
JPS60124734A (ja) Cpuに対する割込み処理装置
JP2006099654A (ja) 半導体回路装置
JP2007213415A (ja) メモリ装置
JPS6295644A (ja) マイクロプロセッサ用プログラムデバッグ装置
JPH08161195A (ja) アドレストレース格納装置及びアドレストレース生成方法
JPH03266136A (ja) エバリュエーションチップ
JP2004171040A (ja) タイマ回路

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130320

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140320

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160318

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 14