KR20020039684A - 프로그램가능한 이벤트 카운터 시스템 - Google Patents

프로그램가능한 이벤트 카운터 시스템 Download PDF

Info

Publication number
KR20020039684A
KR20020039684A KR1020027004729A KR20027004729A KR20020039684A KR 20020039684 A KR20020039684 A KR 20020039684A KR 1020027004729 A KR1020027004729 A KR 1020027004729A KR 20027004729 A KR20027004729 A KR 20027004729A KR 20020039684 A KR20020039684 A KR 20020039684A
Authority
KR
South Korea
Prior art keywords
output
input
counter
event
programmable
Prior art date
Application number
KR1020027004729A
Other languages
English (en)
Other versions
KR100596761B1 (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 KR20020039684A publication Critical patent/KR20020039684A/ko
Application granted granted Critical
Publication of KR100596761B1 publication Critical patent/KR100596761B1/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/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Logic Circuits (AREA)
  • Debugging And Monitoring (AREA)
  • Bus Control (AREA)
  • Microcomputers (AREA)

Abstract

마이크로프로세서 칩을 통하여 발생되는 특정한 이벤트들은 프로세서 칩 상의 단일 위치에 통합된 다수의 디지털 전자 카운터들(3, 5, 7 및 9)을 포함하는 카운터 시스템(1)에 의해 모니터된다. 이러한 이벤트들은 이벤트 발생을 신호하는 책임이 있는 프로세서 내의 기능 유닛들까지 연장된 전기적인 리드들을 통하여 카운터 시스템과 통신한다. 프로그램의 제어하에서, 각 카운터는 다양한 기능 이벤트 발생 유닛들중 선택된 것에 선택적으로 연결될 수 있다. 선택 논리들(19, 21, 23 및 25)에 의해, 다수의 기능 유닛들로부터 비롯되는 개별적인 이벤트들이 논리적으로 결합됨으로써, 카운트된 이벤트는 다수의 하위 이벤트들의 불 논리 결합이 된다.

Description

프로그램가능한 이벤트 카운터 시스템{PROGRAMMABLE EVENT COUNTER SYSTEM}
전자 카운터들은 공지된 장치들이며 많은 형태를 갖는다. 그 중 하나로는 마이크로프로세서에 의해 실행되도록 프로그램된 소프트웨어 카운터가 있다. 다른 것으로는 디지털 전자 카운터가 있다. 공지된 바와 같이, 이러한 카운터들은 규정된 수를 증가시키도록, 즉 카운트 업하거나, 또는 감소시키도록, 즉 카운트 다운시키도록 구성된다. 또한, 이들은 각각의 소프트웨어 프로그램 또는 배선 연결(hard wiring)에 의해 그 내에 설정된 특정 수로부터 개별적으로 증가 또는 감소시키도록 프로그램되거나, 또는 배선 연결된다.
카운터들은 본 발명에 관련된 디지털 처리 시스템들을 포함하는 디지털 시스템들의 구성 요소로서 이용되어 왔다. 디지털 처리 시스템들에서 이용될 때, 대부분의 카운터들은 종종 반도체 칩에 "빌트인" 된다. 즉, 카운터들은, 디지털 처리 시스템의 다른 반도체 소자들, 기능 유닛들이 제조되는 동일한 반도체 다이 상에형성되며, 이 카운터들은 작동하는 동안, 가령 프로세서로서 이용된다. 예로서, 출원인은 PENTIUM PRO 프로세서가 카운터들로서 작동하도록 프로그램된 두 개의 레지스터들을 포함한다고 알려주었다. 이들은 프로세서 내에서 제어 목적으로 이용되어, 언더플로 또는 오버플로에 대한 제어 신호, 인터럽트를 발생시키는 역할을 하며, 상기 인터럽트는 마이크로프로세서의 작동에 이용된다.
일부 디지털 시스템들에서, 전자 카운터들은 타이머들로 이용되었다. 고주파의 클럭 펄스들을 직접 또는 간접적으로 카운트함으로써, 감소 카운터는 펄스 반복 비율을 더 낮은 비율로 단계적으로 감소시킬 수 있게 되어, 출력 펄스들 간에 더 큰 시간 간격을 발생시킨다. 펄스간 시간은 정확한 시간 간격을 규정한다. 이 카운터는 플립-플롭에 결합되어, 규정된 시간 존속 기간의 펄스가 발생될 수 있게 된다.
디지털 전자 카운터들은 또한 이벤트들을 카운트하는 기능을 한다. 본 발명은 또한 디지털 전자 카운터들과, 좀 더 난해한 응용에서는 이벤트 카운팅과, 마이크로프로세서가 작동하는 동안 일어나는 이벤트 및 이벤트들의 결합의 카운트에 관련된다.
이에 따라, 본 발명의 주 목적은 프로세서 시스템이 작동하는 동안 일어나는 이벤트들을 알려주는 디지털 처리 시스템 내의 기능 유닛들로부터 정보를 수집하는 좀 더 효율적인 시스템을 제공하는 것이다.
본 발명의 다른 목적은 마이크로프세서 칩 상의 단일 위치에 다수의 이벤트 카운터들을 통합하고, 모니터하기 위한 이벤트 발생 기능유닛들의 수 (및 종류)의선택을 허용함으로서, 마이크로프로세서의 기능 유닛들로부터 이벤트 정보를 수집하는 좀 더 조정가능한 시스템을 제공하는 것이다.
본 발명의 또 다른 목적은 마이크로프로세서의 작동 주기 동안 일어나는 이벤트들의 결합을 카운트할 수 있는 프로그램가능한 이벤트 카운팅 시스템을 제공하는 것이며, 여기서 상기 이벤트들은 불 논리의 규정에 따라 결합된다.
본 발명의 또 다른 목적은, 가령 인터럽트를 발생시켜, 이벤트 결정 및 스위칭 기능을 처리하는 소프트웨어에 대한 필요성을 없앰으로써, 이벤트 또는 이벤트들의 결합의 카운트가 소정의 수에 이를 때 대안적인 프로세서 기능들 간을 자동으로 스위치하기 위하여 하드웨어 이벤트 카운터를 통합하는 프로세서 시스템을 제공하는 것이다.
본 발명은 디지털 컴퓨터 시스템에 관한 것으로서, 특히 시스템의 디버그시 디지털 컴퓨터 시스템의 작동 성능을 분석하는 데에, 그리고 이벤트 기반 인터럽트로서 유용한 빌트인 온칩 프로그램가능한 전자 이벤트 카운터 시스템에 관한 것이다.
도 1은 본 발명의 바람직한 실시예의 블록도이다.
도 2는 도 1의 실시예의 구성 요소 내에서 이용되는 논리 선택 회로의 개략도이다.
도 3은 도 1의 실시예에서 이용되는 스위치가능한 에지 및 레벨 검출 회로들을 개략적으로 도시한다.
도 4는 인터럽트 신호를 발생시키기 위하여 도 1의 실시예에서 이용되는 카운터들의 출력과 함께 이용되는 게이팅 회로를 개략적으로 도시한다.
상기 목적들은 프로세서 칩 상의 한 위치에 다수의 프로그램가능한 디지털 전자 카운터들과 멀티플렉서들을 함께 통합함으로써 형성되는 이벤트 카운터 시스템에 의해 달성된다. 각 멀티플렉서는 카운터들중 적어도 하나와 결합된다. 멀티플렉서들은 프로세서의 기능 유닛들에서 발생된 이벤트 정보에 대한 카운터의 게이트웨이의 기능을 한다.
각 멀티플렉서 내의 다수의 각 입력 채널들은, 작동들이 직접 또는 간접적으로 카운터되는 프로세서의 많은 기능 유닛들 내의 다수의 위치들에 결합되며, 그리고 각 기능 유닛은 상기 멀티플렉서들의 입력들에 결합된 다수의 다른 출력들을 포함한다. 이는 기능 유닛들의 작동을 유발시키는 다수의 모든 이벤트의 카운트를 가능하게 한다. 본 발명의 장점은 개별적인 기능 유닛들의 작동을 유발시키는 다수의 각 이벤트들에 대한 개별적인 카운터들을 통합해야 하는 필요성을 없앤다는 것이다.
카운터 시스템은 프로세서 시스템 내에서 일어나는 이벤트들에 대한 정보의 소스의 기능을 한다. 이는 프로세서 칩의 필수 구성부이다. 그리고, 카운터 시스템은 프로세서 작동을 용이하게 하는 인터럽트들을 발생시키는 역할을 한다.
카운터 시스템은 소프트웨어의 제어하에서 프로그램가능하게 된다. 이용되는 카운트, 이벤트에 대하여 모니터되는 기능 유닛 (또는 유닛들), 그리고 모니터되거나, 또는 결합 신호로서 결합되고 모니터되는 각 기능 유닛 (또는 유닛들) 내의 소스는 적절한 버스들을 통하여 공급되는 소프트웨어에 의해 선택된다. 카운터 시스템은 프로그램 작동과 함께 카운터 하드웨어를 이용하기 위하여 실행 프로그램에 의해 "진행 중에(on the fly)" 균일하게 프로그램 또는 재프로그램된다.
본 발명의 다른 양상으로서, 상기 시스템은 소프트웨어의 제어하에서 선택된 불 논리 기준에 따라 적어도 두 개의 다른 이벤트들을 결합하여 카운터에 "결합된" 이벤트를 제공할 수 있는 결합 논리 유닛("신호 결합기")을 포함한다. 멀티플렉서의 출력들은 다수의 신호 결합기들중 관련된 결합기를 통하여 카운터들에 제공된다. 다른 이벤트들이 논리적으로 결합되어 카운트에 대한 결합 이벤트들을 생성한다. 이러한 이벤트들은, 예를 들어, 클록 주기 동안 두 개의 선택된 이벤트들의 동시 발생(X AND Y)과, 한 이벤트의 발생 뿐 아니라, 단일 기능 유닛에 의해 발생된 개별적인 이벤트들(X ONLY 또는 Y ONLY)에 부가하여, 나머지 것들(X NOT T 또는 YNOT X) 및 유사한 비트와이즈 불 함수들은 포함한다. 장점으로서, 다수의 이벤트 입력들의 상당히 유용한 상관관계들이 컴퓨터 시스템 내에서 일어나는 복잡한 작동들에 관련된 카운트에 대하여 공식화된다.
상기에서 간단히 설명된 본 발명의 구조적인 특징과 함께 본 발명의 상기 및 부가적인 목적들, 그리고 장점들은, 첨부 도면을 참조하여 하기 설명되는 본 발명의 바람직한 실시예에 대한 상세한 설명을 통하여 좀 더 명확해질 것이다.
도 1은 카운터 시스템(1)의 바람직한 실시예를 블록 형태로 도시한다. 카운터는 네 개의 프로그램가능한 카운터들(3, 5,7 및 9)과, 네 개의 카운터 제어 레지스터들(11, 13, 15 및 17)과, 네 개의 신호 결합기들(19, 21, 23 및 25)과, 그리고 네 개의 멀티플렉서들("MUXs")(27, 29, 31 및 33)을 포함한다. 상기 구성 요소들은 마이크로프로세서 및 단지 일부 만이 상징적으로 도시된 그의 관련된 기능 유닛들이 제조되는 동일한 반도체 다이 상의 선택된 위치에 내재된, 카운터 시스템을 둘러싸는 점선에 의해 나타낸 바와 같이, 물리적으로 함께 그룹 배열된다.
한 쌍의 버스들(35 및 37)은 각각 제어 레지스터들 및 프로그램가능한 카운터들에 연결된다. 이들 각 버스는 각 레지스터들 및 카운터들의 어드레스 및 데이터 입력들까지 연장된 데이터 및 제어 라인들을 포함한다. 이들 라인들은, 블록(38)으로 도시되며, 디지털 데이터 및 어드레스 정보가 각 카운터 및 제어 레지스터를 프로그램하기 시작하는 카운터 시스템과 기능 요소들을 포함하는 반도체 칩을 통합하는 컴퓨터의 다른 부분들까지 연장된다.
많은 카운터들의 인터럽트 출력들은 게이팅 회로(40)에 결합된다. 각 제어 레지스터는 이 게이팅 회로에 인터럽트 인에이블 출력을 제공한다. 이 게이팅 회로(40)로부터 인터럽트 버스(36)가 뻗어나와, 모든 카운터들에 의해 발생된 인터럽트가 게이팅 회로에 의해 컴퓨터(38) 내의 다른 유닛들로 출력될 수 있게 한다.
각 카운터 및 각 레지스터는 소프트웨어의 제어하에서 개별적으로 액세스가능하다. 이에 대해서는 하기에서 좀 더 상세히 설명한다. 카운터들은 프로그램가능하다. 카운터들은 소프트웨어에 의해 기록 또는 판독된다. 이들은 모든 크기를 갖는다. 본 발명의 바람직한 실시예에서, 카운터들은 32-비트 카운터들이다.
각 레지스터들(19, 21, 23 및 25)은 네 개의 카운터들중 하나 및 신호 결합기 회로들중 하나에 결합된다. 제어 레지스터는 소프트웨어의 제어하에서 어드레스가능하며 기록된다. 일단 정보가 제어 레지스터 내에 기록(등록)되면, 이후 좀 더 상세히 설명되는 바와 같이 제어 레지스터는 선택 정보를 관련된 신호 결합기에 공급하고, 관련된 MUX가 어떤 입력을 통과시킬 것인 지와, 검출할 신호의 타입과, 인터럽트 우선권을 선택하며, 그리고 이벤트 킬 (스탑) 신호 내에서 수행될 작동이 프로세서에 의해 발생된다.
각 MUXs27, 29, 31 및 33)는 이용되고 있는 프로세서 내의 각 기능 유닛들로부터의 다수의 입력들을 포함한다. 이러한 입력들은 신호 결합기로 선택적으로 멀티플렉스된 다음, 이후 좀 더 상세히 설명되는 바와 같이 프로그램의 제어 하에서 관련된 카운터(또는 카운터들의 쌍)로 공급되며, 이에 따라 블록들로 상징적으로 나타낸 바와 같이 다수의 기능 유닛들(12, 14, 16 및 18)중 단지 하나를 나타내는, MUX의 다수의 입력들중 선택된 것 만이 액티브하게 되며, 이벤트 신호를 카운팅 과정을 위하여 MUX의 출력으로 전달할 수 있게 된다.
본원에서 이용되는 기능 유닛이란 용어는, 가령 마이크로프로세서를 함께 형성 또는 규정하는 기능 소자들과 같이, 디지털 컴퓨터 시스템 내에서 가동되는 소프트웨어 애플리케이션을 처리하는 동안 기능을 수행하는 반도체 칩 상의 모든 개별적인 디지털 전자 구성 요소들을 말하며, 명령들을 실행하는 특정한 유닛들에 한정되지 않는 다는 것을 유념하자. 배경 기술에서 일부 설명된 바 있는 기능 유닛들의 세부적인 사항들은 본 발명을 이해하는 데에 반드시 필요한 것이 아니므로, 이에 대해서는 설명하지 않는다. 이러한 기능 유닛들은 프로그램 카운터, 데이터 캐시, 버스 인터페이스, 명령 실행부, 저장 버퍼, 정수 유닛, 플로팅 포인트 유닛들 등을 포함한다.
도시된 바람직한 실시예 및 응용에서, 각 MUX는 각 기능 유닛으로부터 네 개의 개별적인 입력들을 수신하며, 각 MUX에 인가되는 입력들의 총 수는 16개가 된다. 프로세서 기능 유닛들중 일부는 네 개 이상의 이벤트 신호들을 제공할 수(또는 수도) 있으며, 이에 따라 다른 바람직한 실시예들에서는 더 많은 수의 입력들(및 더 큰 MUXs)이 대체되거나, MUXs가 캐스케이드된다는 것을 유념하자.
각 MUX로의 입력들은 버스들(4, 6, 8 및 10)을 통하여 공급되며, 이들 각 버스는 각 기능 유닛으로부터 비롯되는 개별적인 이벤트들을 처리하기 위한 충분한 수의 리드들(leads)을 포함한다. 이러한 각 버스의 리드들은 반도체 칩 상의 다른 어떤 곳에 위치되는 프로세서의 각 개별적인 기능 유닛 내의 다른 출력 위치들까지 연장되며, 그리고 소프트웨어 연구자가 모니터를 위하여 선택하기를 원하는 이벤트들의 개별적인 소스들의 기능을 한다. 예를 들어, 이러한 유닛들은 프로그램 카운터, 데이터 캐시, 버스 인터페이스, 명령 실행부, 저장 버퍼, 정수 유닛들, 플로팅 포인트 유닛들이 될 수 있다.
설계에 의해, 각 마이크로프로세서 기능 유닛은 적어도 네 개의 다른 이벤트 출력 신호들을 포함하며, 이들 신호들은 이와 관련된 이벤트에 대하여 선택되고 모니터된다. 이에 따라, 바람직한 실시예에서, 각각 네 개의 개별적인 리드들을 포함하는 버스들(4, 6, 8 및 10)은 카운터 시스템(1)으로부터 각각의 프로세서 기능 유닛들(12, 14, 16 및 18)까지 연장된다. 그러나, 기능 유닛이 더 적은 수, 이를 테면 세 개의 이벤트 신호들의 소스를 포함하도록 설계된다면, 버스 내의 여분의 리드가 생략되거나 사용되지 않은 채로 남는다는 것을 알 수 있을 것이다.
본 실시예에서 각 기능 유닛에 대하여 선택된 위치들의 수는 네 개가 적절한것으로 여겨진다. 시스템은 단지 네 개의 기능 유닛들의 모니터링에 한정되지 않으며, 각 기능 유닛 내의 단지 네 개의 이벤트 발생 위치들의 모니터링에 한정되지 않는 다는 것을 알 수 있을 것이다. 일부 기능 유닛들은 유용한 이벤트 정보의 잠재적인 소스들로서 우수한 네 개 이상의 위치들을 포함한다는 것이 종종 발견된다. 주어진 기능 유닛 내에 더 많은 수의 위치들을 수용하기 위하여, 기능 유닛은, 가령 확인된 버스들을 통하여 이벤트 카운팅 시스템으로 전송하기 위한 네 개의 이벤트들의 특정 세트를 선택하는 로컬 MUX와 같은 관련된 로컬 이벤트 선택 논리를 포함한다(또는 포함해야만 한다). 이 로컬 선택 논리 또한, 상기 설명된 이벤트 카운터들과 마찬가지로 소프트웨어로 제어되어야 한다.
또한, 프로세서 칩 상에서 모니터될 가능한 개별적인 기능 유닛들의 수가 네 개를 초과하면, 기능 유닛이, 본질적으로 두 개의 MUXs을 함께 "트리시키는(treeing)" 카운터 제어 유닛으로부터 먼 반도체 칩 상에 위치된 다른 MUX 유닛을 대신 포함할 필요가 있다. 후자의 배열은 도면에서 기능 유닛(18) 내에 도시된다.
도시된 바와 같이, 기능 유닛(18)은 네 개의 MUXs의 그룹(20)을 포함하고, 실제적으로 "가상" 기능 유닛을 구성한다. 각 그룹 내의 개별적인 각 MUXs는 네 개의 리드 버스들에 의해 실제 가상 유닛들에 연결된다. 이에 따라, 기능 유닛(20)의 출력은, 선택되어 인에이블된 네 개의 MUXs의 그룹중 하나에 대한 네 개의 입력들중 하나에 연결된 많은 실제 기능 유닛들중 선택된 것의 출력이다. 이러한 선택을 수행하는 수단은 또한, 바람직하게는 프로그램 제어된다. 모니터링을 요구하는 다른 수의 기능 유닛들에 대한 준비가 같은 방법으로 부가될 수 있다. 상기 MUXs는 상기 설명된 카운터 시스템을 포함하는 칩 영역 내에 포함될 수 있다.
각 MUX는 또한, 제어 레지스터들(11, 13, 15 및 17)에 결합된 선택 입력 버스들(28, 30, 32 및 34)을 포함한다. MUX에 의해 출력될 특정한 MUX 입력은 그의 개별적인 선택 입력에 적용되는 선택 코드, 적절하게는 이진 코드에 의해 선택된다. 이 선택 코드는 제어 레지스터들(11, 13, 15 및 19)중 각각의 관련된 것들을 통하여 적용되며, 이에 대해서는 이후 카운터 유닛에 대한 설명에서 상세히 설명된다.
제어 레지스터들을 통하여, 신호 결합기들(19, 21, 23 및 25)은 프로그램가능하게 되어 개별적인 이벤트들의 결합의 기준을 규정한다. 이러한 신호 결합기들에 대한 논리 선택은 관련된 제어 레지스터 내에 있는 정보를 통하여 이루어진다. 도시된 바와 같이, 제어 레지스터(11)는 신호 결합기 유닛(19) 내에서의 논리 선택을 제어하고, 제어 레지스터(13)는 신호 결합기 유닛(21) 내에서의 논리 선택을 제어하며, 제어 레지스터(15)는 신호 결합기 유닛(23) 내에서의 논리 선택을 제어하고, 그리고 제어 레지스터(17)는 신호 결합기 유닛(25) 내에서의 논리 선택을 제어한다.
신호 결합기 유닛들(19, 21, 23 및 25)은 각각 두 개의 데이터 입력들을 포함하며, 각 데이터는 두 개의 MUXs의 각 출력에 연결되어 개별적인 기능 유닛들로부터의 이벤트들의 신호 결합 기능을 인에이블시킨다. 명확성을 위하여, 신호 결합기들의 입력들은 네 개의 MUXs(27, 29, 31 및 33)중 특정한 두 개의 원으로 표시되는데, 여기서 상기 네 개의 MUXs(27, 29, 31 및 33)의 출력들은 각각의 신호 결합기 유닛의 두 입력들에 각각 연결되고, 이들의 이벤트들은 바람직한 경우 결합되며, 이에 대해서는 하기에서 좀 더 상세히 설명된다.
본 실시예에서, 카운터들(3, 5, 7 및 9)은 설정된 수로부터 감소되도록 구성된다. 바람직한 수 또는 카운트가, 적절하게는 버스(35)를 통하여 컴퓨터(38)에 의해 카운터에 기록된다. 입력이 수신될 때 마다, 카운트는 감소된다. 일단 카운터가 제로 이하로 감소되면, 출력을 발생시킨다. 이 출력은 양수를 나타내는 디지털 "0"으로부터 음수를 나타내는 디지털 "1"까지, 그의 MSB 또는 극성 "부호" 출력에 있어서의 부호의 변경이다.
이러한 설계의 카운터들은 제로를 지나 계속해서 감소되며, 최대값이 얻어질 때 까지 각각의 부가적인 입력을 갖는 음수를 감소시키는 음수들을 카운트한다. 최대값이 얻어지면, 카운트는 리셋되어 그의 MSB 또는 부호 출력을 변경시키며, 그리고 부가적인 입력 펄스들에 의해 최대값 양수로부터 감소시킨다. 이러한 카운터 구성은 널리 공지되어 있으며, 그의 설계는 기술 보고서에서 입수가능하다.
도 1을 계속해서 참조하면, 각 신호 결합기들(19, 21, 23 및 25)은 두 개의 입력들을 기초로 모두 16개의 가능한 기능들을 제공하는 "비트 와이즈(bit wise)" 불 논리 회로를 포함한다. 이러한 논리 선택 회로는 당업자들에게 널리 공지되어 있으며, "C" 프로그래밍에 대한 기술 보고서에 개시되어 있다. 이러한 선택 회로는, 가령 도 2에 개략적으로 도시된 것과 같은 세 개의 MUXs로 형성된다. 이 하드웨어는 세 개의 이중 채널 MUXs(47, 48 및 49)과, 기능 선택 데이터의 네 개의 비트들을 나타내는 블록 A 내지 D를 포함하는 선택 레지스터(50)를 포함한다. MUX(49)의 출력은 선택 레지스터 내에 블록 A 내지 D의 하이 또는 로우 상태에 의해 지정되는 채널들(X 및 Y)의 결합이다.
표 1 - 파트 1
이러한 신호 결합기를 이용하여, 단일 출력 값, 선택이 MUXs를 통과하는 이벤트 입력 신호들의 네 개의 가능한 각 결합들에 대하여 규정된다. 하기의 표 1-파트 1 및 파트 2는, 한 쌍의 MUXs에 의해 공급되며 표 내에서 X 및 Y로 표시되는 두 개의 입력 신호들에 대한 논리 기능들을 규정하는 데에 이용되는 값들을 도시한다. 카운터들(3, 5, 7 및 9)에 대한 X-Y 신호 쌍들은 각각 MUX 쌍들(27 & 33, 31 & 33, 29 & 31 및 27 & 29)이다. 이 표들은 C-불 표기를 이용한다. 표 내의 기호 "&"는 "비트와이즈" AND 연산을 나타내고; 기호 "|"는 인크루시브 OR 연산을 나타내며; 기호 "^"는 익스크루시브 OR 연산을 나타내고; 그리고 기호 "!"는 NOT 연산을 나타낸다.
표 1 - 파트 2
신호 결합기 유닛들의 다기능은 결합 논리로 일컬어지는 결합된 이벤트들의 카운트 및 개별적인 이벤트들의 카운트를 가능하게 한다. 예를 들어, 먼저 카운트를 위하여 이벤트를 어떠한 다른 것과 결합시키지 않으면서 기능 유닛들중 하나에서 발생하는 이벤트들 만을 카운트하는 것이 바람직하며, 즉 한 MUX로부터의 출력에 해당하는 표 내의 입력 X에 의해 표시되는 것 만을 카운트하며, 입력 Y, 두 번째 MUX는 무시한다. 표 2의 파트 2내의 칼럼 Oxc를 위치시키게 되면, X ONLY 표현을 찾는다. 이는 출력이 단지 신호 입력 X의 것임을 의미한다. 이 칼럼 내의 네 개의 비트들과 가장 왼쪽 칼럼 내의 X에 대한 입력 값들 내이 네 개의 비트들은 이러한 경우를 확인해준다. 이 선택에 대하여 신호 결합기의 신호 선택 입력에 인가하기 위한 비트 코드는 1들 및 0들의 동일한 스트링이다. 단지 신호 결합기 유닛(19) 내에 입력되는 코드를 이용하게 되면, MUX(33)로부터의 출력이 이벤트에서 카운트된다.
마찬가지로, Y에서의 입력 만이 제공될 것이라면, 이 연산에 대한 비트 코드는 이 연산에 대한 진리표 값들인 표 1의 파트 2의 칼럼 Oxa(11 16진수) 내에서 발견된다. 또한, 예를 들어 논리 유닛(19)을 고려하면, MUX(27)로부터의 출력 만이 이벤트로서 카운트된다.
그러나, 이벤트가 X 및 Y, 즉 불 X AND Y 논리 값으로 표시된 위치들에서 발생할 때 카운트하기를 원하는 경우, X 및 Y 입력들은 카운트가 이루어지기 전에 "참(true)"이 되어야 한다. 이러한 결합 논리값의 선택은 칼럼 Ox8에서 발견된다. 이 칼럼 내에 도시된 바와 같이, 불 관계에 대한 진리표의 값들 및 AND 연산을 확인하기 위한 비트값들이 주어진다. X 및 Y는 네 번째 줄에서 모두 참이다.
이러한 선택 비트값들이 신호 결합기 유닛(19)에 대한 선택 입력으로 프로그램된다고 가정하면, 이벤트는 이벤트 신호들이 수신되고 MUXs(27 및 33)의 선택된 입력들에서 동시에 존재하는 경우에만 카운트된다. 따라서, 다른 많은 불 논리 연산들이 선택을 위하여 이용될 수 있다. 이용가능함에도 불구하고, 모든 결합들이 모든 타입의 프로세서 시스템 내의 이러한 카운터 시스템에서 이용되는 것은 아니라는 것을 알 수 있을 것이다.
신호 결합기들(19, 21, 23 및 25)은 또한, 가령 신호 결합기 유닛(19) 내이 블록들(19a 및 19b), 신호 결합기 유닛(21) 내의 블록들(21a 및 21b) 및 신호 결합기 유닛들(23 및 25)에 대한 블록들과 같이, 블록의 형태로 도시된 종래 설계의 에지 검출 모드 및 레벨 검출 모드 회로를 포함한다. 신호 결합기들은 디폴트에 의해 레벨 검출 모드에 있게 된다. 바람직할 때, 이들은 에지 검출 모드로 설정되며, 이 또한 소프트웨어 제어에 의해 이루어진다.
펄스 리딩 에지 및 그의 지속 기간이 관찰 특성인 펄스 전압 측정 기술로부터 속기 표현으로서 채택된 "에지" 및 "레벨" 용어는 측정 기술에 좀 더 정통한 일부 독자들이 초기에 이러한 회로들의 작동을 오해하게 한다. 혼란을 막기 위하여, 본원에서 "에지" 검출로서 언급되는 것은 의도된 바와 같이 이벤트의 발생, 즉 비록 단지 간단하게 일지라도, 이벤트가 시작 또는 발생되었음을 나타내기 위해 좀 더 정확히 설명된다. 그리고, "레벨" 검출로서 언급되는 것은, 의도된 바와 같이 이벤트의 존속 기간, 즉 이벤트 신호(또는 조건)이 존속되는 시간의 길이를 나타내는 것으로서 좀 더 정확히 설명된다.
따라서, "레벨" 감지 모드, 디폴트 모드에서, 카운터는 이벤트가 TRUE(논리 "1")인 것으로 결정되는 클록 주기들의 수를 카운트하고 이벤트의 존속 기간을 나타낸다. "에지" 검출 논리 이벤트들은 이들이 TRUE일 때에는 클록 주기들을 카운트하지만, FALSE(논리 "0")일 때에는 이전 주기 내에 그대로 있게 된다. 따라서, "에지" 검출 모드에서는, 이벤트가 FALSE에서 TRUE로 변환되는 횟수에 대한 카운트가 수행된다.
예를 들어, 일반적인 캐시 미스 이벤트를 고려해보자. 레벨 모드에서는, 프로세서가 캐시 미스 상태에서 발견되는 클럭 주기들의 총 수가 카운트된다. 에지 모드에서는, 캐시 미스들의 수가 카운트된다. 이러한 카운트들을 함께 이용하게 되면, 캐시미스 당 평균 클럭 주기들의 수를 결정할 수 있게 된다. 이 평균 수는 유용한 성능 통계치이다.
도 3은 에지 및 레벨 검출을 위한 회로를 개략적으로 도시한다. 신호결합기(19)에는 X 및 Y 입력들(이벤트 신호들)이 인가되며, 신호 결합기(19)의 출력은 MUX(51)의 한 채널에 결합된다. D-플립-플롭(52)의 입력은 신호 결합기(19)의 출력에 연결된다. D-플립-플롭(52)의 제어 입력은 논리 "0"으로 유지된다. D-플립-플롭(52)의 출력은 NOT 게이트(53)의 입력에 차례로 인가되며, NOT 게이트의 출력은 AND 게이트(54)의 한 입력에 입력된다. AND 게이트(54)의 두 번째 입력 또한 결합기의 출력에 연결된다.
디폴트 상태에서 MUX(51)로의 선택 입력(55)은 논리 "0"으로 유지되며,이에 따라 결합기의 출력을 MUX의 출력으로 통과시킨다. 그러나, MUX의 선택 입력이 논리 "1"로 설정될 때, 그의 출력은 AND 게이트(54)의 출력에 연결된 그의 제 2 채널 입력을 통하여 공급된다. D-플립-플롭(52)이 "1" 신호를 수신하면, 이는 변경되고 리셋되어, 그의 출력을 "1"에서 "0"으로, 그리고 다시 "1"로 순간적으로 변경시킨다. 음으로 가는 펄스는 반전되어 AND 게이트(54)의 입력에 인가되며, AND 게이트(54)는 그의 다른 입력에 존재하는 디지털 "1"에 의해, 플립-플롭들의 "0" 출력 펄스의 순간적인 존속 기간 동안 MUX(51)의 출력을 제공한다.
플립-플롭들의 입력에서 "1"이 유지되는 한, 플립-플롭은 음으로 가는 펄스를 다시 발생시킬 수 없다. 이는 신호 결합기(19)로부터의 이벤트 출력이 종료될 때에만 이루어질 수 있다. 따라서, MUX(51)로부터의 출력은 결합된 이벤트가 시작 또는 발생하는 때와, 에지 검출을 나타내지만, 이벤트의 존속 기간은 나타내지 않는다. 이러한 검출 유닛들은 바람직하게는, 이들이 바람직한 경우 입력 단부에 위치될 수 있음에도 불구하고, 신호 결합기 유닛들의 출력 단부에 포함된다.
관련된 제어 레지스터 내에 저장된 코드들을 통하여 이루어진 논리 선택 뿐 아니라, 레지스터는 또한 에지 검출 또는 레벨 검출 모드들을 선택하기 위한 코드들을 공급한다.
필요한 경우, 정확한 작동을 위하여, 모든 이벤트들은 이벤트 결합 논리(신호 결합기)로 전송되기 전에 동일한 파이프라인단에 동기화되어야 한다. 이러한 동기화는, 동상이 아니고 오버랩되지 않아 신호가 다른 횟수로 결합 논리에 도달되게 함으로써, 결합되지 못하게 되는 이벤트 신호들이 동시에 결합 논리에 제시될 수 있게 함을 보장한다. 다른 신호들을 포착할 때 까지, 한 이벤트 신호를 홀드백하고, 그의 전송을 지연시키며, 및/또는 그의 존속 기간을 연장시킴으로써, 두 개의 신호들이 동시에 존재할 수 있게 되며, 이에 따라 효과적인 결합을 가능하게 한다. 이러한 지연 또는 홀딩 회로들은 이러한 지연 또는 홀드백을 요구하는 것으로 발견되는 각각의 기능 유닛들로부터 비롯되는 이벤트 신호들을 처리하기 위하여 기능 유닛들 내에 통합된다(또는 통합되어야 한다). 이에 따라, 동기화는 다수의 이벤트들이 의미있는 방법으로 결합될 수 있게 하고, 글로벌 킬(Grobal Kill) 신호를 의미있게 하는 데에 중요하다. 이후 좀 더 상세히 설명되는 '205 켈리 특허 시스템에서, 글로벌 킬 신호는 단지 실행 단계에서 명령들에 의해서만 발생된다. 가령 인터럽트들과 같은 일부 이벤트들은 고유하게 비동기적이며, 이들을 EM 단에 동기화시키기 위한 어떠한 유용한 방법도 없다.
도 4는, 시스템이 각각의 특정한 프로그램 수를 달성하는 어떠한 카운터들(3,5, 7 또는 9)이어야 하는 인터럽트를 제공하는 도 1의 게이트(40)를 개략적으로 도시한다. 이 게이트는 OR 게이트(41) 및 네 개의 AND 게이트들(42-45)을 포함한다. 이들 AND 게이트들의 출력은 OR 게이트에 입력된다. 각 AND 게이트의 한 입력은 카운터들중 하나의 MSB 또는 부호 출력에 결합된다. 도시된 바와 같이, 카운터(3)의 부호 출력은 게이트(42)의 입력에 결합된다. 이 AND 게이트의 다른 입력은 각 카운터에 결합된 제어 레지스터의 인터럽트 인에이블 단자에 결합된다. 주어진 예에서, AND 게이트(42)의 제 2 입력은 제어 레지스터(11)의 출력에 결합된다. 다른 카운터들 및 그들의 관련 제어 레지스터들로부터의 유사한 연결들이, 도면에서 리드 번호들로 나타낸 바와 같이 다른 AND 게이트들의 입력들에 연결된다.
특정 카운터가 규정된 카운트의 도달에 대하여 인터럽트를 발생시키면, "인터럽트 인에이블" 정보가 그 내에 기록된 다른 디지털 정보와 동시에 관련된 제어 레지스터 내로 로드된다. 이 인터럽트 인에이블은 제어 레지스터 내에 기록된 워드 포맷 내의 특정 위치에서 "1"이며, 이는 하기에서 좀 더 상세히 설명된다. 만일 그렇지 않다면, 그 특정 비트는 "0"으로 유지된다. 제어 레지스터 내의 인터럽트 인에이블 정보는 레지스터의 출력에 제공되며, 그리고 관련된 AND 게이트의 한 입력에 제공된다. 예를 들어, 카운터(3)가 인터럽트 인에이블이라고 가정하면, AND 게이트(42)로의 리드(11)는 디지털 "1"이다. AND 게이트는 그의 입력들이 디지털 "1"일 때에만 그의 출력을 디지털 "1"로 변경한다. 어떠한 게이트 입력이 "0"이라면, AND 게이트는 그의 출력을 변경하지 않는다. 이는 "0"을 유지한다.
상기 설명한 바와 같이, 카운터(3)가 그의 카운트를 달성하게 되면, 즉 제로를 지나 감소하게 되면, 그의 MSB 또는 부호 출력이 디지털 "0"에서 디지털 "1"로변경된다. 따라서, AND 게이트(42)의 입력들이 "1"이 되면, AND 게이트는 그의 출력을 디지털 "1"로 변경한다. 어떠한 AND 게이트들이 디지털 "1"을 출력하는 경우 디지털 "1"을 출력하는 OR 게이트(41)가 응답하여 디지털 "1" 출력을 제공하며, 이는 인터럽트 신호의 역할을 한다. 이러한 방법으로, 카운터의 각 제어 레지스터들이 인에이블된 인터럽트로서 프로그램될 때, 인터럽트들이 카운트의 도달에 입각하여 다른 모든 카운터들에 의해 제공된다.
작동에 있어서, 프로그래밍 연구자는 어떤 이벤트들이 카운트될 것인 지를 결정한다. 사람들은 이벤트들을 네 개까지 선택하며, 이벤트들이 카운트를 위하여 결합될 것이지, 아니면 개별적으로 카운트될 것인 지를 결정한다. 만일 이벤트들을 결합시키는 것으로 결정되면, 사람들은 네 개의 카운터 신호들을 발생시키기 위하여 이들을 어떻게 결합시킬 것인 지를 결정한다. 사람들은 정보를 테스트 데이터 세트로 프로그램시킨 다음, 이 정보를 카운터 제어에 적절하게 전송한다.
제어 레지스터를 위한 32-비트 워드에 대한 가능한 포맷의 예가, 워드의 각 부분에 대한 이진 비트 위치들 및 콘텐츠를 도시한 하기의 챠트로 표현된다.
도시된 바와 같이, 본 예에서 비트 위치들(14 내지 31)은 이용되지 않는다.
개별적인 32 비트 워드들이 각 카운터들에 대한 카운트를 제공하는 데에 이용된다. 카운트 워드 내의 32개의 이진 비트 위치들은 때때로 바람직한 카운터 내의 매우 큰 수의 삽입을 허용하며, 그리고 카운터가 인터럽트를 발생시키기 위하여 이용되지는지, 아니면 단순히 미리결정된 시간이 경과한 후 카운트를 셀 수 있게 하기 위하여 이용되는 지에 의존한다.
이벤트 선택으로 표시된 워드의 6-비트 부분은 기능 유닛들에 의해 상기 설명된 카운터 유닛으로 전송되는 모든 이벤트 신호들 중에서 이벤트 신호를 선택한다. 이러한 선택은 신호를 발생시키는 기능 유닛의 세부 사항, 및 신호가 카운터 유닛으로 전송되는 전기적인 리드 또는 와이어를 통하여 이루어진다.
UNIT표시는 유닛 인덱스 셀렉트를 말한다. 프로세서 내의 각 기능 유닛에는 확인 비트가 할당된다. 이러한 데이터의 4-비트는 모니터되는 이벤트를 발생시키는 컴퓨터 내의 기능 유닛을 확인한다. 이벤트가 비롯되는 유닛은 이벤트의 설명 내에 기억적으로 표시된다.
WIRE표시는 와이어 선택기이다. 이 블럭 내의 2-비트는 선택된 기능 유닛들로부터의 네 개의 와이어들중 어떤 것이 이러한 이벤트 카운터에 대하여 선택되어야 하는 지를 확인한다. 이벤트가 전송되는 와이어는 카운터 유닛 내의 이벤트 선택 레지스터에 의해 결정된다.
IE표시는 인터넷 인에이블을 말한다. 상기 설명한 바와 같이, 카운터는 인터럽트를 발생시키는 데에 이용된다. 이 위치에서의 디지털 비트는 카운터가 그 인터럽트를 발생시킬 것인 지를 나타낸다. 이 위치에서의 "0"은 어떠한 인터럽트도 발생되지 않을 것임을 나타낸다. 이 위치에서의 "1"은 카운터가 인터럽트를 발생시킬 것을 지시한다. 인터럽트는 카운터의 최상위 비트 MSB, 비트 31이 1인 경우, 이후 설명되는 인터럽트 우선권 필드 IP 내에 지정된 우선권이 되어야 한다. 제어 유닛의 바람직한 실시예가 감소 카운터들을 이용하기 때문에, 하기 설명되는 상기 워드의 CNT 블럭 내에 지정된 카운트가 음의 값으로 감소되면 인터럽트가 발생된다.
IP표시는 인터럽트 우선권을 말한다. 카운터 시스템에 다기능을 부가하기 위하여, 우선권 레벨 확인자들이 포함된다. 이 데이터 비트는 카운터의 비트 31이 디지털 1일 때에 요구되는 카운터 인터럽트이 우선권을 지정한다. 높은 우선권의 카운터 인터럽트는 프로세서에 의해 이용되는 통상적인 높은 우선권 보다 더 높다. 이러한 카운터 시스템이 통합되는 프로세서는 이러한 우선권 정보를 검출하고, 잉요하며 작동시킬 수 있는 필요한 성능을 가져야 한다는 것을 유념하자. 코드 프로파일링 (성능 분석) 응용에 있어서는, 일반적으로 높은 우선권이 이용된다. 워치독 타이머 애플리케이션 또한 이러한 높은 우선권을 이용한다. 인터럽트 우선권이 특정한 프로세서 시스템 내의 관심사가 아니라면, 그 비트 위치는 이용되지 않는 채로 남는다.
GK표시는, 프로세서 파이프라인 내의 현재의 모든 작동들, 및 많은 프로세스들 내의 공통 기능을 취소시키는 기능을 나타내기 위하여 본원에서 이용되는 용어인 글로벌 킬 처리를 말하지만, 다른 이름들로는 언급되지 않는다. 본 발명이 포함되는 프로세서가 작동하는 동안, 프로세서 또는 그의 기능 유닛들중 하나, 가령 모니터되는 것들은 글로벌 킬 신호를 발생시킨다. 예를 들어, 이러한 글로벌 킬 신호는 본원에서 설명된 바 있는 '205 켈리 등의 특허에 개시된 시스템 내의 기능 유닛으로부터 비롯된다. 따라서, 프로그래밍 다기능을 부가하기 위하여, 본 발명은 바람직하게는 테스트 오퍼레이터에 의해 요구되는 대로 적절하게 응답하도록, 또는 응답하지 않도록 구성된다. 따라서, 디지털 워드의 블럭 내의 "0"은, 본 발명이 포함되는 프로세서에 의해 발생된 글로벌 킬 커맨드의 존재에도 불구하고, 글로벌 킬 신호가 무시될 것임을, 즉 신호되는 경우 이벤트가 카운트됨을 나타낸다. 그러나, "1"은 킬 신호가 이벤트 내에 인가되며, 기능 유닛으로부터 카운터로 신호되는 이벤트가 킬 신호가 인가되는 프로세서의 작동 주기 동안 카운트되지 않을 것임을 나타낸다.
M표시는 카운트 모드를 나타낸다. 이 데이터 블록은 카운터가 신호 결합 기능의 출력인 신호를 언제 카운트해야 하는 지를 지정한다. 이 위치에서의 "0"은 카운터로 하여금 입력된 신호의 존속 기간을 기초로 카운트를 트리거하여, 신호가 참이 되는 프로세서 클럭의 각 주기를 카운트하게 한다. 반면에, "1"은 카운터로 하여금 에지 검출(발생)의 발생을 기초로 그의 카운트를 트리거하는데, 이는 수신된 신호가 거짓에서 참으로 변경되는 때를 카운트하기 위한 것이다
SCF표시는 신호 결합 기능을 말한다. 이들 비트 위치들에서의 데이터는 두 개의 이벤트 입력 신호들의 네 개의 가능한 각 결합들에 대한 단일 출력값을 규정한다. 본 발명에서 상세히 설명되는 각 카운터에 결합되는 디지털 논리 회로들은 두 개의 개별적인 이벤트들이, 예를 들어 결합될 수 있게 한다. 이 카운터 유닛은 상기 정보를 제공할 수 있다. 선택은 상기 제시된 "진리표"를 이용하여 "비트와이즈" 불 논리에서 설명된다. 이 논리 소자가 카운터 입력들에 직렬로 연결되기 때문에, 커맨드들줄 하나는 MUX 입력들중 단지 하나로부터의 입력 만을 허용하며, 이로써 그에 관련된 개별적인 이벤트 만을 카운트한다.
각 카운터는 32-비트 (이진) 카운트 레지스터를 포함한다. 이 카운트 레지스터는 버스(35)를 통하여 소프트웨어에 의해 판독 및 기록될 수 있다. 컴퓨터(38)로부터 시작되는 소프트웨어 판독 연산을 통하여, 성능 분석(또는 컴퓨터 프로그램 그 자체)을 가동하는 소프트웨어 연구자들은 언제든지 카운터 내의 카운트를 검사한다. 레지스터는 상기 설명된 이벤트 선택 및 처리 논리에 따라 레지스터 내에 포함된 수를 감소시킨다. 카운트가 제로 이하로 감소되면, 즉 음수가 되면, 이 카운트는 완수된 것이다.
만일 프로세서 시스템이 테스트시 작동한다면, 카운터들은 아마도 이미 카운트되고 있을 것이며, 먼저 중지되어야 한다. 이를 수행하기 위하여, "0"이 카운터에 대한 카운터 제어 레지스터에 기록된다. 이러한 작동은 인터럽트 발생을 디스에이블시키며, 일정한 "거짓" 신호를 출력에 신호 결합 기능 필드를 설정함으로써 카운팅을 디스에이블시킨다.
작동은 비교적 간단하다. 카운터들(3, 5, 7 및 9) 내에 프로그램되는 지정된 카운트들 및 각각의 제어 레지스터들(11, 13, 15 및 17) 내에 설치되는 바람직한 선택들을 이용하여, MUX의 선택기는 카운트를 위하여 선택된 특정한 기능 유닛들 내이 소스들에 결합되는 리드들을 설정하며, 그리고 개별적인 신호 결합기들은 관련 카운터에 의해 카운트될 지정된 이벤트 또는 이벤트들의 결합을 설정한다. 카운터가 기능 유닛(12) 내의 한 소스에 있는 이벤트를 모니터한다고 가정하면,MUX(27)는 단지 입력(27) 만일 카운터로 통과할 수 있도록 설정된 신호 결합기(19)로의 경로를 설정한다. 이로써, 이벤트들이 카운트된다. 카운터(3) 내에 지정된 카운트가 달성되면, 인터럽트 신호가 카운터에 의해 게이트(40)로 공급되며, 그 게이트는 버스(36)를 통하여 인터럽트 신호를 컴퓨터로 차례로 전송한다. 인터럽트들은 제어 레지스터들이 그들을 인에이블시키도록 설정된 경우에만 발생된다.
마찬가지로, 요구되는 카운트가 이벤트들, 예를 들어 기능 유닛(12)으로부터의 한 소스 및 기능 유닛(16)으로부터의 다른 소스의 결합을 카운트하고자 한다면, MUXs(27 및 33)이 선택되어 이러한 소스들을 모니터하고 이들의 각 출력들을 신호 결합기(19)에 제공한다. 이 신호 결합기는, 소스들에서 발생하는 이벤트들의 입력 신호들이 신호 결합기의 각각의 두 입력들에 인가될 때에만 카운터로의 출력을 허용한다. 이전과 마찬가지로, 카운트가 달성되면, 카운터(3)는 인터럽트를 출력하며, 이 인터럽트는 게이트(40)에 인가된 다음, 게이트(40)로부터 버스(36)를 통하여 컴퓨터(38)로 전송된다.
다른 모든 카운터들이 동시에 카운트를 작동시킬 수 있다는 것을 유념하자. 본질적으로 이전의 것과 동일한 이들의 작동은 개별적으로 설명될 필요가 없으므로 설명하지 않는다.
바람직한 실시예에서 이용되는 신호 결합기가 광범위한 가능한 선택들을 제공함에도 불구하고, 본 발명의 범위를 벗어나지 않으면서 더 적은 수의 또는 더 많은 선택 옵션들을 허용하는 다른 신호 결합기들이 대체될 수 있다는 것을 당업자라면 알 수 있을 것이다.
또한, 상기 실시예는 두 개의 결합기 유닛들에 두 개의 MUXs를 배선 연결 또는 결합시켰으며, 이들 MUXs는 프로세서 내의 지정된 기능 유닛들에 차례로 배선 연결된다. 두 개의 이벤트들 모두가 개별적인 카운터에 결합될 수 있다. 그러나, 도시된 실시예에서 각 이벤트 선택 MUX 트리는 두 개의 카운터들 간에 공유되기 때문에, 주어진 카운터에 대하여 선택된 각 이벤트 또한 인접하는 카운터에 대한 신호 결합 기능에 입력되어, 적용에 있어서의 작은 제한을 부과한다. 더 큰 기능성을 위하여, 상기 실시예는 특정한 신호 결합기 유닛들에 연결된 MUX 출력들을 변경시킬 수 있게 하는 다른 선택 회로에 의해 변형될 수 있다는 것을 알 수 있을 것이다.
또한, 도 1의 실시예는 좀 더 복잡한 작동들을 모니터할 수 있는 다른 실시예들을 구성하기 위하여, 선택 논리의 부가적인 레벨들에 의해 더 개선된다. 각 선택 논리 유닛(19, 21,23 및 25)은 기능 유닛들중 단지 두 개 내에서의 작동 간에서 세트 결합 논리에 의해 규정된 관계를 기초로 카운트를 제공한다. 도 1의 실시예에 도시된 선택 논리 유닛들중 두 개, 예를 들어 선택 논리 유닛들(19 및 21)로부터의 출력들을 수신하고 모니터하기 위하여 선택 논리의 부가적인 단을 부가하고, 그리고 부가적인 선택 논리의 출력을 카운터들중 하나에 제공함으로써, 선택 논리 유닛들(19 및 21) 간에 (지정된 결합 논리에 의해 규정된) 관계를 기초로 하는 카운트를 얻을 수 있게 된다. 따라서, 이러한 카운트는 프로세서들의 기능 유닛들 중 네 개에 있어서 모니터된 작동의 발생을 기초로 한다. 이러한 개선된 실시예를 달성하기 위해서는, 부가적인 선택 논리 유닛에 적절한 선택 입력들을 제공할 수 있도록이전에 설명된 것과 같은 부가적인 제어 레지스터를 부가할 필요가 있다. 당업자들에게 있어서 명백한 바와 같이, 의도적인 이유 또는 필요성이 명백히 제시되지는 않았지만, 상기 설명된 이벤트들의 피라미딩(pyramiding)은 훨씬 더 복잡한 관계들의 모니터링을 수행할 수 있다.
또한, 바람직한 경우 세 개 또는 네 개의 입력 신호 결합 기능들을 이용할 수 있다. 일반적으로, 상기의 카운터 시스템의 구조는 N 개의 카운터들을 허용하며, 각 카운터는 X 개의 독립적인 입력 이벤트들의 기능을 기초로 카운트한다. 이러한 배열은 N-X 이벤트 선택 MUX 트리들을 필요로 한다. N 및 X에 대하여 선택된 수들이 크다면, 상기 구조는 매우 많은 양의 논리 소자들을 요구할 것이며, 이 논리 소자들은 반도체 칩 상에 형성되어 많은 양의 칩 영역을 필요로 한다. 상기 설명된 바람직한 실시예는 감소된 기능성을 희생하여 칩 영역을 절약하는 한 방법을 제공한다.
새로운 카운터 시스템은 다양하게 응용된다. 이는 켈리 등에 의해 출원되어 1998년 11월 3일 특허가 허여되었고, 그 명칭이 "어드레스되고 있는 소자의 물리적인 특성에 대한 추론의 실패를 검출하기 위한 마이크로프로세서용 메모리 제어기"이며, 본 발명의 양수인인 트랜스메타 코포레이션에게 양도된 US 5,832,205호('205 켈리 특허)에 개시된 시스템에 대한 특정한 응용을 갖는다.
'205 켈리 특허는, 특히 타겟 시스템에 유일한 명령 세트를 포함하지만 호스트 시스템으로는 적합하지 않은 다른 설계의 컴퓨터 시스템인 타겟 시스템 상에서 작동되도록 지정된 명령 세트로 설계된 소프트웨어 프로그램들을 실행시킬 수 있는호스트 시스템의 기능을 하는 새로운 컴퓨터 시스템을 개시한다. 이는 코드 몰핑 소프트웨어로 일컬어지는 소프트웨어와, 그리고 특히 호스트 명령 세트의 명령들로 "진행중인(on the fly)" 소프트웨어 프로그램을 포함하는 명령들을 변환한 다음 이 명령들을 실행시키는 하드웨어를 포함한다.
켈리 등의 컴퓨터 시스템은 명령들의 시퀀스가 좀 더 효율적인 순서로 실행되도록 하기 위하여, 불필요한 것으로 여겨지는 변환된 명령들을 다시 스케쥴링하고, 재배열하며 그리고 제거함으로써 최적화하고자 하였다. 이를 위하여, 켈리 등의 컴퓨터 시스템은 명령들을 연속적으로 변환시켜 단순하게 변환된 호스트 명령들의 제 1 시퀀스를 발생시킨 다음, 변환 버퍼 내에 저장한다. 이후, 코드 몰핑 소프트웨어는 시퀀스를 최적화함으로써 변환을 단순화하고자 시도한다.
그러나, 이러한 최적화된 시퀀스가 어떠한 이유로 실행에 실패하면, 프로세서는 예외를 발생시키고, "롤백"으로 일컬어지는 프로세스를 실행시켜 타겟 프로세서의 정확한 상태가 알려져 있는 이전의 실행 장소로 명령 실행을 되돌린다. 이후, 프로세서는 좀 더 기본적인 명령들로 구성된 "네이브(naive)" 변환을 이용하여 변환을 재개하며, 명령들의 시퀀스 내에서의 각 단계에서의 타겟 프로세서의 상태를 저장한다. 이는 궁극적으로 예외가 다시 발생할 때 프로세서가 정확한 상태가 될 수 있게 하며, 결과적으로 예외가 적절히 처리될 수 있게 된다.
더 짧고 좀 더 용이하게 처리되며 실행 시간이 덜 걸리는 명령 변환들을 생성함으로써, '205 켈리 시스템 내의 프로세서는 종종 소프트웨어가 초기에 설계되었던 컴퓨터 보다 더 빠른 작동 속도로 소프트웨어 프로그램을 작동시킬 수 있게된다.
상기의 최적화 과정 동안에는, 다수의 예외들 또는 롤백 커맨드들이 초기에 빈번하게 발생되며, 인위적인 조작이 계속됨에 따라 점점 작아지게 된다. 이벤트들에 대한 모니터링은 소프트웨어가 최적화를 더 수행해야하는 지의 여부를 결정할 수 있게 한다. 새로운 카운터들이 '205 켈리 특허의 컴퓨터 내에 통합되어, 최적화된 소프트웨어가 이러한 이벤트들을 모니터할 수 있게 한다.
컴퓨터 프로세서의 기능 내에 필수 장치로서 포함될 때, 상기 카운터 시스템은, 이벤트가 너무 빈번하게 발생하는 증거 또는 시스템 설계자에게 있어서의 다른 관심의 이유로서, 소정의 카운트가 이루어질 때 프로세서 인터럽트를 발생시킬 수 있도록 특정한 이벤트에 적용될 수 있다. 좀 더 특정하게 설명하면, 카운터들은, 가령 롤백들과 같은 특정한 이벤트의 과도한 작동을 검출하고 실시간 성능 정보를 제공하기 위하여 클록 주기들, 즉 시간 간격들을 주기적으로 카운트함으로써 인터럽트들을 발생시키도록 적용될 수 있다. 상기 실시간 성능 정보는 이후 코드 발생의 작동을 동적으로 변경하기 위해 코드 몰핑 소프트웨어에 의해 이용된다.
또한, 카운터 시스템은 전형적인 성능 모니터들을 이용하여, 프로세서가 정상적으로 작동하는 동안 키 프로세서 이벤트들의 발생을 모니터하는 데에 적용될 수 있다. 얻어진 정보는 프로세서의 작동을 이해하고 성능 시뮬레이터들을 교정하기 위해 분석된다. 카운터들은 또한 내부 논리 이벤트들이 논리의 연산에 영향을 미치지 않으면서 소프트웨어에 의해 모니터될 수 있게 한다. 이는 디버깅 기능을 제공한다.
일반적으로, 이러한 종류의 모니터링은 엔지니어 또는 소프트웨어 연구자들로 하여금 프로그램의 작동시 당면할 수 있는 잠재적인 문제점들 및 소프트웨어를 통하여 가시적이지 않은 작동의 다른 양상들을 알 수 있게 한다. 이는, 설계자가 새로운 프로세싱 시스템의 성능을 개선하기 위하여 하드웨어 또는 소프트웨어 개선책을 개발하는 것을 돕는 데에 있어서 특히 유용한 타이밍 기능 및 성능 측정이다.
따라서, 예를 들어 새로운 카운터들은 또한, 상기의 예외 및 롤백 이벤트들, 프로세서의 정지가 발생하는 수, 유용한 작업을 완료하기 위해 수행되는 프로세서의 주기들의 수, 인터럽트가 전체적으로 디스에이블 또는 차단되는 수, 예외들이 디스에이블되는 수, 및 본 발명을 이해하는 데에 꼭 필요한 것은 아니지만 컴퓨터 및 소프트웨어 설계자들의 관심이 되는 잘못 예측된 분기들, 이용되는 분기들 및 다른 이벤트들의 호스트의 수를 카운트 하기 위하여 '205 켈리 특허에 따라 구성된 컴퓨터들 내에 적용될 수 있다.
상기의 설명은 프로그램의 제어하에서 두 개의 입력들의 모든 기능을 계산하기 위하여 이벤트들의 쌍이 두-입력의 임의 논리 블럭에 공급되는 유일하고 새로운 카운터 시스템을 규정한다. 단순한 이벤트들 만이 직접적으로 발생될 필요가 있다. 복잡한 이벤트들은 본질적으로 결합 기능에 의해 종합된다.
본 발명의 카운터 시스템의 장점은, 당업자들에게 널리 공지된 표준 설계로서 인정되는 소자들로 구성된다는 것이다.
이는 성능 프로파일링, 및 특정한 바람직한 또는 바람직하지 않은 이벤트들을 트리거하는 명령들을 확인하기 위해 디버그하는 데에 이용된다. 예를 들어, 애플리케이션을 너무 느리게 작동시키는 것 처럼 보이는 프로세서 칩이 분석될 수 있으며, 이렇게 애플리케이션을 느리게 작동시키는 책임이 있는 잘못 또는 문제가 결정된다.
본 발명의 바람직한 실시예들의 설명은 당업자들로 하여금 본 발명을 이해하고 이용할 수 있도록 충분히 상세히 설명된 것으로 믿는다. 그러나, 이러한 목적을 위하여 제시된 소자들의 세부적인 사항들은 본 발명의 범위를 한정하지 않는 다는 것을 명백히 이해할 수 있을 것이다. 또한, 상기 소자들은 본 발명의 범위 내에서 등가물들 및 변형들을 갖는 다는 것을 당업자라면 본 명세서를 읽음으로써 알 수 있을 것이다. 따라서, 본 발명은 첨부된 청구항들의 전체 범위 내에서 대체적으로 구성된다.

Claims (18)

  1. 다수의 기능 실행 유닛들을 포함하는 마이크로프로세서 및 이벤트 카운터 시스템을 포함하는 반도체 칩에 있어서, 여기서 상기 마이크로프로세서가 작동하는 동안, 상기 다수의 기능 유닛들 각각은 이벤트 신호들의 소스의 기능을 하며, 상기 이벤트 카운터 시스템은:
    다수의 프로그램가능한 카운터들과, 여기서 상기 프로그램가능한 이벤트 카운터들은 소프트웨어 애플리케이션이 작동하는 동안 적어도 하나의 상기 기능 유닛에 의해 발생된 이벤트들을 카운트하고, 상기 반도체 칩의 한 영역 내에 통합되며; 그리고
    전기적인 연결을 위한 상기 위치 내에서부터 상기 다수의 각 기능 유닛들까지 연장되어, 상기 각 기능 유닛에서 발생하는 이벤트 신호들을 상기 위치에 결합시키는 다수의 전기 버스들을 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  2. 제 1 항에 있어서,
    각각 다수의 입력 채널들, 단일 출력 채널, 및 선택기 제어 정보의 인가에 응답하여, 상기 출력 채널로의 전송을 위하여 상기 입력 채널들중 하나의 선택을 인에이블시키는 선택기를 포함하는 다수의 MUXs와;
    다수의 신호 결합 논리 장치들을 더 포함하며, 여기서 상기 각 신호 결합 논리 장치는 다수의 이용가능한 불 논리 관계들중 어느 하나를 규정할 수 있고, 상기입력들에서의 신호들이 상기 하나의 불 논리 관계를 만족시킬 때에만 출력을 발생시키도록, 상기 불 논리 관계들중 하나에 따라 한 쌍의 입력들에 인가된 신호들을 논리적으로 결합시키며;
    상기 각 신호 결합 논리 장치는 상기 선택 입력에 인가된 제어 정보에 응답하여, 상기 다수의 불 논리 관계들중 하나를 선택하는 선택 입력을 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  3. 제 2 항에 있어서, 상기 다수의 MUXs 각각의 출력 채널은 상기 다수의 결합 논리 장치들중 단지 두 개의 장치들 각각의 한 입력에 연결되고; 그리고 상기 모든결합 논리 장치들의 상기 입력들의 쌍의 한 입력은 상기 다수의 MUX 출력들중 하나에 연결되며, 이로써 상기 결합 논리 장치는 상기 다수의 기능 유닛들중 두 개의 유닛들이 이벤트 신호들을 발생시킬 때 출력을 발생시킬 수 있고, 상기 이벤트 신호들은 상기 제어 정보에 의해 선택된 불 논리 관계를 유지하며; 그리고
    상기 다수의 결합 논리 장치들의 각 출력은 상기 다수의 각 카운터들의 입력에 연결됨으로써, 상기 각 카운터는 상기 결합 논리 장치들중 관련된 장치의 출력에 응답하여 상기 이벤트를 카운트하는 것을 특징으로 하는 이벤트 카운터 시스템.
  4. 제 3 항에 있어서, 상기 각 MUX의 선택기는 디지털 선택 코드의 인가에 응답하여 입력 채널을 선택하며; 그리고
    상기 제어 정보는 디지털 논리 코드를 포함하는 것을 특징으로 하는 이벤트카운터 시스템.
  5. 제 4 항에 있어서,
    각각 적어도 하나의 상기 디지털 선택 코드 및 디지털 논리 코드를 저장하는 다수의 제어 레지스터들을 더 포함하며;
    상기 각 제어 레지스터는 상기 다수의 각 결합 논리 장치들 및 상기 다수의 각 MUXs에 연결되고, 저장된 디지털 선택 코드를 전송하기 위한 제 1 출력과, 저장된 디지털 논리 코드를 전송하기 위한 제 2 출력, 및 상기 디지털 선택 코드 및 상기 디지털 논리 코드를 수신하기 위한 한 입력을 포함하며;
    상기 제어 레지스터의 상기 제 1 입력은 상기 각 MUX의 상기 선택 입력에 연결되고, 상기 제어 레지스터의 상기 제 2 입력은 상기 각 결합 논리 유닛의 상기 선택 입력에 연결되는 것을 특징으로 하는 이벤트 카운터 시스템.
  6. 제 5 항에 있어서,
    상기 디지털 선택 코드 및 상기 디지털 논리 코드를 상기 다수의 각 제어 레지스터들 내에 입력하는 수단을 더 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  7. 제 1 항에 있어서,
    상기 프로그램가능한 카운터중 적어도 일부를, 카운트하기 위한 개별적인 수로 프로그램하는 수단과, 여기서 상기 각 프로그램가능한 카운터는 그 내에 프로그램된 수를 달성할 때 출력 신호를 제공하는 출력을 포함하며; 그리고
    상기 모든 프로그램가능한 카운터들로부터의 출력 신호에 응답하여 인터럽트 출력을 제공하는 게이팅 수단을 더 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  8. 제 7 항에 있어서,
    상기 각 프로그램가능한 카운터는 감소 카운터를 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  9. 제 8 항에 있어서,
    신호의 존속 기간을 검출하는 레벨 검출 회로와;
    신호의 발생을 검출하는 에지 검출 회로와; 그리고
    상기 레벨 검출 회로와 상기 에지 검출 회로중 선택된 것을 상기 결합 논리 장치의 출력과 상기 관련된 프로그램가능한 카운터 사이에 직렬로 배열시킴으로써, 어떠한 신호 타입이 카운트를 위해 상기 프로그램가능한 카운터에 제공되도록 하는 신호 타입 선택 수단을 더 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  10. 제 8 항에 있어서,
    상기 각 결합 논리 장치는 카운트되고 있는 이벤트들의 결합의 주기 동안 존속하는 출력 신호를 제공하며;
    다수의 에지 검출 회로들과, 여기서 상기 다수의 에지 검출 회로들중 하나는 상기 다수의 각 결합 논리 장치들에 결합되고, 상기 각 에지 검출 회로는 상기 관련된 결합 논리 장치로부터의 출력 신호의 시작을 검출하며, 상기 관련된 결합 논리 장치로부터의 상기 출력 신호를 수신하는 입력과, 상기 수신된 출력 신호의 시작을 나타내는 출력을 제공하는 출력을 갖고;
    상기 결합 논리 장치에 결합된 상기 프로그램가능한 카운터의 상기 입력을 상기 각 결합 논리 장치의 상기 출력으로부터 상기 에지 검출 회로로부터의 출력으로 선택적으로 스위칭함으로써, 상기 프로그램가능한 카운터가 이벤트의 시작을 카운트하게 하는 수단을 더 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  11. 제 5 항에 있어서,
    상기 프로그램가능한 카운터들중 적어도 일부를, 카운트하기 위한 개별적인 수로 프로그램하는 수단과, 여기서 상기 각 프로그램가능한 카운터는 그 내에 프로그램된 수를 달성하게 되면 출력 신호를 제공하는 출력을 포함하며; 그리고
    상기 모든 프로그램가능한 카운터들로부터의 출력 신호에 응답하여 인터럽트 신호를 제공하는 게이팅 수단을 더 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  12. 제 11 항에 있어서,
    상기 각 결합 논리 장치는 카운트되고 있는 이벤트들의 결합의 주기 동안 존속하는 출력 신호를 제공하며;
    다수의 에지 검출 회로들과, 여기서 상기 다수의 에지 검출 회로들중 하나는 상기 다수의 각 결합 논리 장치들에 결합되고, 상기 각 에지 검출 회로는 상기 관련된 결합 논리 장치로부터의 출력 신호의 시작을 검출하며, 그리고 상기 관련된 결합 논리 장치로부터의 상기 출력 신호를 수신하는 입력과, 상기 수신된 출력 신호의 시작을 나타내는 출력을 제공하는 출력을 갖고;
    상기 결합 논리 장치에 결합된 상기 프로그램가능한 카운터의 상기 입력을 상기 각 결합 논리 장치의 상기 출력으로부터 상기 에지 검출 회로로부터의 출력으로 선택적으로 스위칭함으로써, 상기 프로그램가능한 카우터가 이벤트의 시작을 카운트하게 하는 수단을 더 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  13. 제 11 항에 있어서, 상기 각 제어 레지스터는 인터럽트 ENABLE 비트를 수신하고 저장하며 ENABLE 비트 출력을 제공하는 수단을 더 포함하며, 여기서 상기 ENABLE 비트 출력은, 상기 제어 레지스터에 결합된 프로그램가능한 카운터에 의한 카운트가 달성될 때 인터럽트가 발생되면 TRUE이고, 그렇지 않으면 FALSE이며; 그리고
    상기 게이팅 수단은:
    각각 제 1, 2 입력들, 및 상기 제 1, 2 입력들이 TRUE일 때에만 TRUE 출력을 제공하는 출력을 포함하는 다수의 AND 게이트들과; 그리고
    상기 각 AND 게이트의 출력에 결합된 입력들을 가지며, 상기 모든 입력들이 TRUE일 때에만 출력을 제공하는 OR 게이트를 더 포함하며;
    상기 각 AND 게이트의 상기 제 1 입력은 상기 다수의 각 프로그램가능한 카운터들의 출력에 연결되고;
    상기 각 AND 게이트의 상기 제 2 입력은 상기 다수의 각 프로그램가능한 카운터들에 결합된 상기 각 제어 레지스터들의 상기 ENABLE 비트 출력에 연결되는 것을 특징으로 하는 이벤트 카운터 시스템.
  14. 다수의 기능 유닛들을 포함하는 마이크로프로세서와 이벤트 카운터 시스템을 포함하는 반도체 칩에 있어서, 상기 이벤트 카운터 시스템은:
    상기 다수의 기능 유닛들중 적어도 일부에 의해 소프트웨어 애플리케이션이 작동하는 동안 발생된 이벤트들을 카운트하고, 상기 반도체 칩 상의 위치에 통합되며, 그리고 카운트를 위하여 그 내에 프로그램된 개별적인 수들을 달성할 때 신호를 출력하는 출력을 포함하는 다수의 프로그램가능한 이벤트 카운터들과;
    상기 다수의 각 프로그램가능한 이벤트 카운터들의 출력에 연결된 다수의 출력 버스들과;
    상기 각 기능 유닛을 상기 위치에 결합시키기 위하여, 전기적인 연결을 위한 상기 위치내에서부터 상기 다수의 각 기능 유닛들까지 연장된 다수의 전기적인 버스들과;
    카운트를 위하여 상기 각 프로그램가능한 카운터들에 수를 입력하기 위하여상기 프로그램가능한 카운터들에 결합된 프로그래밍 버스와;
    각각 다수의 입력 채널들, 단일 출력 채널, 및 선택기 제어 정보의 인가에 응답하여, 상기 출력 채널로의 전송을 위하여 상기 입력 채널들중 하나의 선택을 인에이블시키는 선택기를 포함하는 다수의 MUXs와;
    다수의 신호 결합 논리 장치들을 더 포함하며, 여기서 상기 각 신호 결합 논리 장치는 상기 입력에서의 신호들이 미리 규정된 논리 관계를 만족시킬 때에만 출력을 발생시키기 위하여 입력들의 쌍에 인가된 신호들을 논리적으로 결합시키며;
    상기 각 신호 결합 논리 장치는 제어 정보의 인가에 응답하여, 다수의 다른 논리 관계들 중에서 한 논리 관계의 선택을 인에이블시키는 선택 입력을 포함하고;
    상기 다수의 다른 논리 관계들은 적어도 입력 1 ONLY TRUE, 입력 2 ONLY TRUE, 입력 1 및 입력 2 TRUE, 입력 1 NOT 입력 2 TRUE, 입력 2 NOT 입력 1 TRUE, 및 입력 1 OR 입력 2 TRUE를 포함하며;
    상기 다수의 각 MUXs는 상기 다수의 결합 논리 장치들중 단지 두 개의 한 입력에 연결되고;
    상기 모든 결합 논리 장치들의 각 입력은 상기 다수의 MUX 출력들중 하나에 연결됨으로써, 상기 결합 논리 장치는 상기 적어도 두 개의 각 기능 유닛들의 출력이, 상기 제어 정보에 의해 선택된 논리 관계를 만족시키는 이벤트를 발생시킬 때에만 출력을 발생시킬 수 있게 되며;
    상기 다수의 각 결합 논리 장치들은 상기 다수의 이벤트 카운터들중 관련된 카운터의 입력에 연결된 출력을 가짐으로써, 상기 각 이벤트 카운터가 상기 결합논리 장치들중 관련된 결합 논리 장치의 출력에 응답하여 이벤트를 카운트하고;
    상기 각 결합 논리 장치들은 인가된 신호의 존속 기간을 검출하는 레벨 검출 회로와, 인가된 신호의 발생을 검출하는 에지 검출 회로와, 그리고 상기 제어 정보에 의한 선택에 응답하여, 관련된 결합 논리 장치의 출력과 상기 관련된 카운터의 입력 간에 상기 레벨 검출 회로 및 상기 에지 검출 회로중 하나 또는 다른 것을 직렬로 배열하기 위하여, 상기 레벨 검출 및 상기 에지 검출 간을 선택하는 선택 수단을 포함하며,
    각각 상기 각 카운터들에 결합된 다수의 제어 레지스터들과, 여기서 상기 각 제어 레지스터는 상기 각 카운터들에 결합되고, 외부 소스로부터의 제어 정보를 수신 및 등록하는 통신 버스에 결합되며, 상기 제어 정보는 상기 결합 논리 장치에 의한 선택한 대한 논리 결합, 관련된 MUX에 대한 출력으로의 입력 채널, 상기 레벨 검출 및 에지 검출 회로들 중 하나, 및 인터럽트 ENABLE 비트를 포함하고, 상기 ENABLE 비트 출력은, 상기 제어 레지스터에 결합된 프로그램가능한 카운터에 의한 카운트가 달성될 때 인터럽트가 발생되면 TRUE이고, 그렇지 않으면 FALSE이며; 그리고
    상기 모든 프로그램가능한 카운터들로부터의 출력에 응답하여 인터럽트를 제공하는 게이팅 수단을 포함하며;
    상기 게이팅 수단은:
    각각 제 1, 2 입력들, 및 상기 제 1, 2 입력들이 TRUE일 때에만 TRUE 출력을 제공하는 출력을 포함하는 다수의 AND 게이트들과; 그리고
    상기 각 AND 게이트의 출력에 결합된 입력들을 가지며, 상기 모든 입력들이 TRUE일 때에만 출력을 제공하는 OR 게이트를 더 포함하며;
    상기 각 AND 게이트의 상기 제 1 입력은 상기 다수의 각 프로그램가능한 카운터들의 출력에 연결되고;
    상기 각 AND 게이트의 상기 제 2 입력은 상기 다수의 각 프로그램가능한 카운터들에 결합된 상기 각 제어 레지스터들의 상기 ENABLE 비트 출력에 연결되는 것을 특징으로 하는 이벤트 카운터 시스템.
  15. 제 14 항에 있어서,
    상기 다수의 기능 유닛들은 적어도 메모리 유닛과, 제 1, 2 산술 및 논리 유닛들과, 그리고 플로팅 포인트 유닛을 포함하는 것을 특징으로 하는 이벤트 카운터 시스템.
  16. 디지털 처리 시스템 내의 기능 유닛들에서 발생하는 이벤트들을 모니터하는 이벤트 카운팅 시스템으로서,
    다수의 프로그램가능한 카운터들 및 관련 제어 레지스터들과;
    다수의 신호 결합기 장치들과, 여기서 상기 각 신호 결합기 장치는 상기 프로그램가능한 카운터들중 하나 및 관련 제어 레지스터에 결합되며, 미리 선택된 논리 기준을 만족시키는 적어도 하나의 상기 기능 유닛들에 의한 이벤트의 발생에 응답하여 출력을 발생시키고, 이 출력을 상기 프로그램가능한 카운터들중 관련된 카운터에 제공하며, 상기 각 제어 레지스터는 상기 카운터에 결합된 신호 결합기에 논리 기준 선택 정보를 공급하며;
    상기 제어 레지스터들 및 상기 프로그램가능한 카운터들을 프로그램시키는 수단을 포함하며,
    상기 선택 정보가 상기 제어 레지스터들로 로드되고, 카운트가 각 카운터에 로드되며;
    상기 각 제어 레지스터는 카운트 정보를 관련 레지스터로 로드시키고, 상기 선택 정보를 관련 신호 결합기에 로드시키는 수단을 포함하는 것을 특징으로 하는 이벤트 카운팅 시스템.
  17. 다수의 기능 유닛들을 포함하는 마이크로프로세서와; 그리고
    작동하는 동안 상기 기능 유닛들중 적어도 하나에서 발생하는 이벤트들을 카운트하며, 적어도 네 개의 개별적인 프로그램가능한 디지털 전자 카운터들을 포함하는 프로그램가능한 디지털 전자 카운터 시스템을 포함하는 것을 특징으로 하는 칩 상의 중앙 처리 유닛.
  18. 다수의 기능 유닛들을 포함하는 마이크로프로세서와, 여기서 상기 기능 유닛들은 X개의 독립 입력 이벤트들의 소스를 규정하고, 상기 X는 전체 갯수이며; 그리고
    작동하는 동안 상기 기능 유닛들중 적어도 하나에서 발생하는 이벤트들을 카운트하며, 4의 수를 포함하는 적어도 N개의 개별적인 프로그램가능한 디지털 전자 카운터들을 포함하는 프로그램가능한 디지털 전자 카운터 시스템과, 여기서 상기 디지털 전자 카운터 시스템은 다수의 X개의 이벤트들이 상기 카운터 시스템에서 선택적으로 모니터될 수 있도록 하기 위하여 다수의 N-X개의 이벤트 선택 MUX 트리들을 더 포함하며; 그리고
    각각 상기 N개의 디지털 전자 카운터들중 해당하는 카운터에 결합되는 다수의 N개의 신호 결합 논리 장치들을 포함하며;
    상기 각 신호 결합 논리 장치는 다수의 이용가능한 불 논리 관계들중 어떠한 것을 규정할 수 있고, 상기 결합 논리 장치는 상기 입력들에서의 신호들이 상기 하나의 불 논리 관계를 만족시킬 때에만 출력을 발생시키도록, 상기 불 논리 관계들중 하나에 따라 Y 입력들에 인가되는 신호들을 논리적으로 결합시키며, 상기 Y는 1보다 크고, N 보다 작거나 같은 것을 특징으로 하는 칩 상의 중앙 처리 유닛.
KR1020027004729A 1999-10-13 2000-09-06 프로그램가능한 이벤트 카운터 시스템 KR100596761B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/417,930 1999-10-13
US09/417,930 US6356615B1 (en) 1999-10-13 1999-10-13 Programmable event counter system

Publications (2)

Publication Number Publication Date
KR20020039684A true KR20020039684A (ko) 2002-05-27
KR100596761B1 KR100596761B1 (ko) 2006-07-07

Family

ID=23655938

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020027004729A KR100596761B1 (ko) 1999-10-13 2000-09-06 프로그램가능한 이벤트 카운터 시스템

Country Status (9)

Country Link
US (1) US6356615B1 (ko)
EP (1) EP1234277B1 (ko)
JP (1) JP2003511800A (ko)
KR (1) KR100596761B1 (ko)
CN (1) CN1258741C (ko)
AT (1) ATE398815T1 (ko)
CA (1) CA2380077C (ko)
DE (1) DE60039251D1 (ko)
WO (1) WO2001027873A1 (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US6714904B1 (en) * 1999-10-13 2004-03-30 Transmeta Corporation System for using rate of exception event generation during execution of translated instructions to control optimization of the translated instructions
US7761857B1 (en) * 1999-10-13 2010-07-20 Robert Bedichek Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts
AUPQ542900A0 (en) * 2000-02-04 2000-02-24 Bisinella, Richard Microprocessor
US6594821B1 (en) * 2000-03-30 2003-07-15 Transmeta Corporation Translation consistency checking for modified target instructions by comparing to original copy
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US7448025B2 (en) * 2000-12-29 2008-11-04 Intel Corporation Qualification of event detection by thread ID and thread privilege level
US7111179B1 (en) 2001-10-11 2006-09-19 In-Hand Electronics, Inc. Method and apparatus for optimizing performance and battery life of electronic devices based on system and application parameters
GB2380827A (en) * 2001-10-12 2003-04-16 Siroyan Ltd Debugging of processors using two separate event detectors
US7024579B2 (en) * 2002-08-27 2006-04-04 Stmicroelectronics S.R.L. Configurable timing system having a plurality of timing units interconnected via software programmable registers
US7260200B1 (en) 2002-08-30 2007-08-21 Aol Llc, A Delaware Limited Liability Company Enabling interruption of communications and detection of potential responses to an interruption of communications
US20090052608A1 (en) * 2007-08-21 2009-02-26 International Business Machines Corporation Method for dynamically adjusting hardware event counting time-slice windows
US7310723B1 (en) 2003-04-02 2007-12-18 Transmeta Corporation Methods and systems employing a flag for deferring exception handling to a commit or rollback point
US7590695B2 (en) 2003-05-09 2009-09-15 Aol Llc Managing electronic messages
US7739602B2 (en) 2003-06-24 2010-06-15 Aol Inc. System and method for community centric resource sharing based on a publishing subscription model
US7895382B2 (en) * 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US20050183065A1 (en) * 2004-02-13 2005-08-18 Wolczko Mario I. Performance counters in a multi-threaded processor
US8826241B2 (en) * 2004-02-16 2014-09-02 Oracle America, Inc. Instruction sampling in a multi-threaded processor
US7624319B2 (en) * 2004-06-03 2009-11-24 Hewlett-Packard Development Company, L.P. Performance monitoring system
US7676530B2 (en) * 2004-06-03 2010-03-09 Hewlett-Packard Development Company, L.P. Duration minimum and maximum circuit for performance counter
US20050283669A1 (en) * 2004-06-03 2005-12-22 Adkisson Richard W Edge detect circuit for performance counter
JP2006107041A (ja) * 2004-10-04 2006-04-20 Hitachi Ltd ハードウェアイベントハンドルモジュール
US20060129999A1 (en) * 2004-11-16 2006-06-15 Sony Computer Entertainment Inc. Methods and apparatus for using bookmarks in a trace buffer
WO2006109728A1 (ja) * 2005-04-11 2006-10-19 Matsushita Electric Industrial Co., Ltd. システム性能プロファイリング装置
US7788508B1 (en) 2005-05-26 2010-08-31 National Semiconductor Corporation System and method for rapidly increasing a rising slew rate of an adjustable supply voltage in adaptive voltage scaling
US7363471B2 (en) * 2005-06-27 2008-04-22 Intel Corporation Apparatus, system, and method of dynamic binary translation supporting a denormal input handling mechanism
US8413162B1 (en) 2005-06-28 2013-04-02 Guillermo J. Rozas Multi-threading based on rollback
US7809928B1 (en) * 2005-11-29 2010-10-05 Nvidia Corporation Generating event signals for performance register control using non-operative instructions
US8253748B1 (en) 2005-11-29 2012-08-28 Nvidia Corporation Shader performance registers
US7921312B1 (en) 2007-09-14 2011-04-05 National Semiconductor Corporation System and method for providing adaptive voltage scaling with multiple clock domains inside a single voltage domain
US8327179B2 (en) * 2008-06-05 2012-12-04 Realtek Semiconductor Corp. Asynchronous counter based timing error detection
US20100008464A1 (en) * 2008-07-11 2010-01-14 Infineon Technologies Ag System profiling
US8346509B2 (en) * 2009-04-08 2013-01-01 Intel Corporation Context switch sampling
RU2448363C1 (ru) * 2010-08-05 2012-04-20 Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" Комплекс отладки
DE102010054446A1 (de) * 2010-12-14 2012-06-14 Giesecke & Devrient Gmbh Portabler Datenträger mit Fehlbedienungszähler
FR2982684B1 (fr) 2011-11-10 2014-01-10 Commissariat Energie Atomique Systeme et procede de conception de circuit numerique a capteur d'activite
WO2013101100A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Causing an interrupt based on event count
US9971603B2 (en) * 2011-12-29 2018-05-15 Intel Corporation Causing an interrupt based on event count
US9069629B2 (en) * 2013-03-15 2015-06-30 International Business Machines Corporation Bidirectional counting of dual outcome events
DE102014210980A1 (de) * 2014-06-10 2015-12-17 Robert Bosch Gmbh Verfahren zum Betreiben eines Ereigniszählers
US9742278B2 (en) 2015-10-13 2017-08-22 Solantro Semiconductor Corp. Event-based switching for power conversion
CN107451038B (zh) * 2016-05-30 2020-05-19 龙芯中科技术有限公司 硬件事件采集方法、处理器和计算系统
KR20180124568A (ko) * 2017-05-12 2018-11-21 에스케이하이닉스 주식회사 리페어 회로 및 이를 포함하는 메모리 장치
CN110244590B (zh) * 2018-03-09 2021-09-03 华大半导体有限公司 多功能定时器
CN115391132B (zh) * 2022-06-14 2024-03-29 北京中科昊芯科技有限公司 一种监控诊断的装置以及芯片

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817118A (en) * 1987-06-29 1989-03-28 Step Engineering Mobile incident logger
US5657253A (en) * 1992-05-15 1997-08-12 Intel Corporation Apparatus for monitoring the performance of a microprocessor
US5450349A (en) * 1992-10-27 1995-09-12 Digital Equipment Corporation Computer system performance evaluation system and method
JP3617686B2 (ja) * 1994-09-26 2005-02-09 株式会社リコー 画像形成装置及び画像形成装置管理システム
US5790625A (en) * 1997-04-14 1998-08-04 International Business Machines Corporation Mechanism for enabling an array of numerous large high speed counters

Also Published As

Publication number Publication date
CN1258741C (zh) 2006-06-07
CN1378679A (zh) 2002-11-06
DE60039251D1 (de) 2008-07-31
WO2001027873A1 (en) 2001-04-19
JP2003511800A (ja) 2003-03-25
ATE398815T1 (de) 2008-07-15
US6356615B1 (en) 2002-03-12
EP1234277A1 (en) 2002-08-28
CA2380077C (en) 2007-03-06
CA2380077A1 (en) 2001-04-19
EP1234277A4 (en) 2004-07-07
EP1234277B1 (en) 2008-06-18
KR100596761B1 (ko) 2006-07-07

Similar Documents

Publication Publication Date Title
KR100596761B1 (ko) 프로그램가능한 이벤트 카운터 시스템
US6185522B1 (en) Method and system for emulating microcontrollers
US6834360B2 (en) On-chip logic analyzer
US5557548A (en) Method and system for performance monitoring within a data processing system
JP4225851B2 (ja) データ処理装置用トレース要素生成システム
US6088795A (en) Process for automatic dynamic reloading of data flow processors (DFPs) and units with two or three-dimensional programmable cell architectures (FPGAs, DPGAs and the like)
US5754839A (en) Apparatus and method for implementing watchpoints and breakpoints in a data processing system
EP0897152A2 (en) Performance counters controlled by programmable logic
US7853834B2 (en) Instruction-based timer control during debug
US6502209B1 (en) Chip with debug capability
US5862148A (en) Microcontroller with improved debug capability for internal memory
JPH04304531A (ja) エミュレーション装置とそれに使用するマイクロコントローラ
EP2434404B1 (en) Method and arrangement for streaming data profiling
US7831862B2 (en) Selective timer control during single-step instruction execution
US20020188822A1 (en) Adapter for a microprocessor
JP2004164367A (ja) マルチプロセッサシステム
EP0942374A1 (en) Method and device to simulate interruptions for the emulation of a processor
US7647485B2 (en) Data processing system for debugging utilizing halts in a parallel device
US8171259B2 (en) Multi-cluster dynamic reconfigurable circuit for context valid processing of data by clearing received data with added context change indicative signal
EP0942371A1 (en) Debugging method for a microcomputer
KR100206680B1 (ko) 내부 및 외부 메모리 상황을 모니터하기 위한 겸용 터미널을 갖춘 데이타 프로세서
JP2007141200A (ja) データ処理装置
KR20010096571A (ko) 분할 동기 인터페이스를 위한 조정가능 클럭을 갖는데이터 처리 시스템
US7788564B2 (en) Adjustable test pattern results latency
US5826058A (en) Method and apparatus for providing an external indication of internal cycles in a data processing system

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130531

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140529

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150702

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee