KR19980079448A - 데이터 처리 시스템의 성능 모니터링 방법 및 장치 - Google Patents

데이터 처리 시스템의 성능 모니터링 방법 및 장치 Download PDF

Info

Publication number
KR19980079448A
KR19980079448A KR1019970057474A KR19970057474A KR19980079448A KR 19980079448 A KR19980079448 A KR 19980079448A KR 1019970057474 A KR1019970057474 A KR 1019970057474A KR 19970057474 A KR19970057474 A KR 19970057474A KR 19980079448 A KR19980079448 A KR 19980079448A
Authority
KR
South Korea
Prior art keywords
performance
processor
processing system
data processing
performance monitor
Prior art date
Application number
KR1019970057474A
Other languages
English (en)
Other versions
KR100280732B1 (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 KR19980079448A publication Critical patent/KR19980079448A/ko
Application granted granted Critical
Publication of KR100280732B1 publication Critical patent/KR100280732B1/ko

Links

Classifications

    • 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
    • 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/81Threshold
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

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

Abstract

본 발명에서는 성능 모니터링 능력(performance monitoring capability)이 전체 데이터 처리 시스템에까지 확장되어 성능 모니터(performance monitor)를 포함하는 임의의 다른 장치 또는 프로세서 내에서뿐만 아니라, 전체 데이터 처리 시스템(entire data processing system) 내에서 일어나는 동작들에 대해서도 성능 분석(performance analysis)이 이루어진다. 따라서, 데이터 처리 시스템 내의 프로세서 및 여러 가지 장치들 내의 여러 가지의 성능 모니터들 간의 성능 모니터에 관련된 신호들을 상호 교환하기 위한 방법이 제공된다.

Description

데이터 처리 시스템의 성능 모니터링 방법 및 장치
본 발명은 데이터 처리 시스템에 관한 것이다. 좀 더 구체적으로, 본 발명은 데이터 처리 시스템의 성능 모니터링(performance monitoring)에 관한 것이다.
프로세서들을 사용하는 통상적인 컴퓨터 시스템에 있어서, 시스템 개발자는 더 효율적인 시스템 설계를 위하여 실행 소프트웨어(execution software)를 최적화 시키기를 원한다. 통상, 프로그램이 메모리에 액세스하는 패턴(access pattern)과 시스템의 메모리 계층 구조(hierarchy)와의 상호 작용(interaction)을 연구하여 시스템 효율성(system efficiency)을 결정한다. 메모리 계층 구조 거동(behavior)을 이해하는 것은 타스크(task)를 스케쥴링(schedule)하고 분배(partition)하는 알고리즘을 개발하는데 도움을 줄 뿐만 아니라, 시스템을 최적화(optimizing)하기 위해 데이터를 분산하고 구성하는데에도 도움을 준다.
성능 모니터링(performance monitoring)은 시스템에서 소프트웨어의 사용을 최적화하는데 자주 사용된다. 성능 모니터(performance monitor)는 특정 시점에서의 머신의 상태를 결정함으로써 시스템을 디버깅(debugging)하고 분석(analyzing)하는데 도움을 주는 선택된 특성들을 모니터하기 위하여 프로세서 내에 구현된 설비(facility)라고 일반적으로 정의되고 있다. 종종, 성능 모니터는 프로세서의 인스트럭션 실행 및 저장 장치 제어의 사용에 관련된 정보를 생성한다. 예를 들어, 성능 모니터는 처리 시스템에서 발생하는 이벤트(event)들 간에 경과된 시간의 양에 관한 정보를 제공하는데 사용될 수 있다. 통상적으로, 생성된 정보는 주어진 시스템의 성능을 향상시키거나 새로운 시스템의 설계시 향상된 기법을 개발하기 위한 방법에 있어서 시스템 설계자에게 도움을 준다.
성능 모니터링에 대한 종래의 접근 방법은 외부 측정 장비를 사용하는 것을 포함하는데, 이 접근 방법은 완전히 만족스럽지는 못하다. 측정 장비는 외부 프로세서 인터페이스에 접속될 수 있지만, 프로세서의 내부 동작의 성질(nature)을 결정할 수는 없다. 외부 프로세서 인터페이스에 접속된 측정 장비는 프로세서 내부에서 실행되는 인스트럭션들을 식별할 수 없다. 프로세서의 내부 요소들을 조사(probe)하기 위해 설계된 측정 장비는 프로세서 내에서 파이프라인(pipeline), 인스트럭션 프리펫칭(instruction prefetching), 데이터 버퍼링 및 한 단계 이상으로 구성된 메모리 계층들을 채용하고 있는 복잡한 프로세서 시스템의 다수의 버스들과 조사 지점(probe points)들을 모니터하는데 따르는 어려움으로 인해 매우 고가이어서 실용적이지 못하다. 성능 데이터를 제공하기 위한 일반적인 방법은 소프트웨어를 변경하거나 계측장비를 장착하여 계측하는 것이다. 그러나, 이러한 방법은 실행 경로에 중대한 영향을 끼치게 되어 결과 데이터가 수집되었다 하여도 쓸모 없을(invalidate) 수가 있다. 결과적으로, 소프트웨어가 액세스할 수 있는 카운터(counter)들이 프로세서들 내에 통합되어야 하지만, 이 경우 소프트웨어가 액세스할 수 있는 카운터(counter)들이 제공하는 정보는 대부분 세분성(granularity)의 크기가 한정되어 있다.
또한, 통상적인 성능 모니터는 대개 인터럽트(interrupt)가 발생할 때까지는 머신 상태 데이터를 포착할 수 없으므로, 프로세서가 인터럽트를 서비스 할 때의 머신의 특정 상태에 편중되어 결과가 나타날 수 있다. 또한, 특히 한번에 여러 개의 인스트럭션들이 진행되고 있을 경우 인터럽트 핸들러(interrupt handler)는 처리 시스템에서 실행되는 어떤 인스트럭션의 실행을 취소하기도 한다. 또한, 처리 시스템에 다수의 상호 의존 관계(interdependency)가 존재하기 때문에 어떤 의미있는 데이터 및 프로파일(profile)을 획득하기 위해서는 전 시스템 요소에 걸쳐서 처리 시스템의 상태가 동시에 획득되어야 한다. 따라서, 샘플링 속도(sample rate)를 제어하여야 처리 시스템이 적합한 상태를 포착할 수 있기 때문에 이러한 샘플링 속도의 제어가 중요하다. 또한, 성능 모니터가 프로세서의 성능에 영향을 끼치지 않도록 하기 위하여 선행하는 샘플이 모니터되는 샘플에 미치는 효과가 무시할 수 있을 정도로 작아야 한다는 점이 중요하다. 따라서, 내부를 직접 조사하지 않으면서도 개선이 가능한 영역(potential area for improvement)을 효율적으로 식별할 수 있는, 처리 시스템의 성능을 효과적으로 모니터링하기 위한 시스템 및 방법의 개발의 필요성이 있어왔다. 더 좋은 효과를 갖는 성능 모니터링 시스템들이 아래에 열거된 미국 특허 출원에 개시되어 있으며 아래의 특허 출원들은 본 출원인에게 양도되었고 본 발명의 개시의 일부를 이룬다.
아래
METHOD AND SYSTEM FOR HALTING PROCESSOR EXECUTION IN RESPONSE TO AN ENUMERATED OCCURRENCE OF A SELECTED COMBINATION OF INTERNAL STATES라는 명칭으로 1995년 6월 30일 출원된 미국 특허 출원 제 08/497,242호;
ON-CHIP PERFORMANCE MONITORING WITH A CHARACTERIZATION OF LOCKS/SEMAPHORE UTILIZATION이라는 명칭으로 1995년 6월 7일 출원된 미국 특허 출원 제 08/485,953호;
A METHOD AND SYSTEM FOR PERFORMANCE MONITORING THROUGH IDENTIFICATION OF FREQUENCY AND LENGTH OF TIME OF SERIALIZATION INSTRUCTIONS IN A PROCESSING SYSTEM이라는 명칭으로 1995년 10월 2일 출원된 미국 특허 출원 제 08/537,586호;
A METHOD AND SYSTEM FOR PERFORMANCE MONITORING THROUGH MONITORING AN ORDER OF PROCESSOR EVENTS DURING EXECUTION IN A PROCESSING SYSTEM이라는 명칭으로 1995년 10월 2일 출원된 미국 특허 출원 제 08/537,645호;
A METHOD AND SYSTEM FOR SELECTING AND DISTINGUISHING AN EVENT SEQUENCE USING AN EFFECTIVE ADDRESS IN A PROCESSING SYSTEM이라는 명칭으로 1995년 10월 2일 출원된 미국 특허 출원 제 08/538,071호;
A METHOD AND SYSTEM FOR PERFORMANCE MONITORING TIME LENGTHS OF DISABLED INTERRUPTS IN A PROCESSING SYSTEM이라는 명칭으로 1995년 10월 2일 출원된 미국 특허 출원 제 08/539,023호;
A METHOD AND SYSTEM FOR PERFORMANCE MONITORING STALLS TO IDENTIFY PIPELINE BOTTLENECKS AND STALLS IN A PROCESSING SYSTEM이라는 명칭으로 1995년 10월 2일 출원된 미국 특허 출원 제 08/538,102호;
A METHOD AND SYSTEM FOR PERFORMANCE MONITORING EFFICIENCY OF BRANCH UNIT OPERATION IN A PROCESSING SYSTEM이라는 명칭으로 1995년 10월 2일 출원된 미국 특허 출원 제 08/538,509호;
A METHOD AND SYSTEM FOR PERFORMANCE MONITORING OF MISALIGNED MEMORY ACCESS IN A PROCESSING SYSTEM이라는 명칭으로 1995년 10월 2일 출원된 미국 특허 출원 제 08/536,492호;
A METHOD AND SYSTEM FOR PERFORMANCE MONITORING OF DISPATCH STALLS IN A PROCESSING SYSTEM이라는 명칭으로 1995년 10월 2일 출원된 미국 특허 출원 제 08/538,774호;
A METHOD AND SYSTEM FOR PERFORMANCE MONITORING OF DISPATCH UNIT EFFICIENCY IN A PROCESSING SYSTEM이라는 명칭으로 1995년 10월 2일 출원된 미국 특허 출원 제 08/538,070호;
PERFORMANCE MONITOR라는 명칭으로 1996년 10월 21일 출원된 미국 특허 출원 제 08/734,335호;
INSTRUCTION FETCH BANDWIDTH ANALYSIS라는 명칭으로 1996년 12월 17일 출원된 미국 특허 출원 제 08/767,705호;
CPI INFINITE AND FINITE ANALYSIS라는 명칭으로 1996년 12월 17일 출원된 미국 특허 출원 제 08/766,143호;
OPERAND FETCH BANDWIDTH ANALYSIS라는 명칭으로 1996년 12월 17일 출원된 미국 특허 출원 제 08/767,706호;
INSTRUCTION PARALLELISM ANALYSIS라는 명칭으로 1996년 12월 17일 출원된 미국 특허 출원 제 08/767,656호;
LOAD STALL ANALYSIS라는 명칭으로 1996년 12월 17일 출원된 미국 특허 출원 제 08/767,655호; 및
TRAILING EDGE ANALYSIS라는 명칭으로 1996년 12월 17일 출원된 미국 특허 출원 제 08/767,662호.
근래에, 프로세서를 계측(instrumentation)하는 것이 일반적인 현상이 되고 있다. 그러나, 기지(known)의 정보를 프로세서에 제공하는 것으로는 완전한 시스템 분석을 제공하지 못한다. 프로세서만이 아니라 전체 시스템의 성능을 분석하기 위해서는 시스템 요소에 관련된 정보를 제공하는 것이 중요하다. 통상적으로 시스템 요소들과 프로세서 간에는 신호를 통하여 정보를 제공하는 방법을 사용하는데, 신호들은 핀(pin)을 통하여 전달(translate)된다. 그러나, 핀이 많을수록 프로세서의 비용도 따라서 높아진다. 이러한 이유로 인하여, 개별 요소들이 카운트 정보(count information)를 프로세서에 제공(그 후, 프로세서가 프로세서 내에서 수행되고 있는 애플리케이션에 상기 카운트 정보를 제공할 수 있음)하도록 설계하는 것은 통상적으로 실용적이 못하다.
시스템 요소에 관련된 정보를 제어하고 포착하기 위해 비용 측면에서 유리한 수단을 제공하면 저비용(lower cost)으로 구축된 시스템들을 포함하는 다양한 시스템들에 대한 시스템 성능을 더 양호하게 분석할 수 있을 것이다.
본 발명은 하나 이상의 장치들이 성능 모니터링 능력을 가진, 프로세서 및 프로세서에 접속된 주변 장치들(peripheral devices)을 포함하는 데이터 처리 시스템을 제공함으로써 상기 문제점들을 해결하고자 한다. 또한, 각각의 데이터 처리 시스템 장치들 상호 간에 통신하는 것은 물론, 특히 프로세서에 있는 성능 모니터와 통신하기 위하여 여러 가지의 데이터 처리 시스템 장치들 내(또는 프로그램 가능한 회로 내)에서 성능을 모니터 할 수 있는 능력이 제공된다. 결과적으로, 시스템 성능 분석은 프로세서라는 경계선을 넘어서 전체 데이터 처리 시스템에까지 확장될 수 있다. 결과적으로, 데이터 처리 시스템의 설계자는 데이터 처리 시스템의 다양한 동작 특징들을 분석하기 위하여 장치들 내의 다양한 성능 모니터 결과를 사용하는 다양한 분석들을 행할 수 있다.
도 1은 본 발명에 따른 정보를 처리하기 위한 프로세서의 블록도.
도 2는 도 1의 프로세서의 시퀀서 유닛(sequencer unit)의 블록도.
도 3은 도 2의 시퀀서 유닛의 리오더 버퍼(reorder buffer)를 개념적으로 도시한 도면.
도 4는 본 발명의 성능 모니터링의 블록도.
도 5는 성능 모니터링을 포함하는 본 발명의 처리 시스템 동작(processing system operation)에 따른 전체적인 처리 플로우의 블록도.
도 6a 및 6b는 복수개의 카운터(counter)들을 관리하는데 사용되는 모니터 제어 레지스터(monitor control register: MMCR)를 도시한 도면.
도 7은 본 발명에 따라 구성된 성능 모니터의 블록도.
도 8은 본 발명의 실시예를 도시한 도면.
도 9는 본 발명의 다른 실시예를 도시한 도면.
도 10, 도 11 및 도 12는 데이터 처리 시스템 내의 장치들의 성능 모니터들 간에 통신을 하기 위한 처리를 도시한 도면.
* 도면의 주요부분에 대한 부호의 설명
10 : 프로세서
11 : 시스템 버스
12 : 버스 인터페이스 유닛(bus interface unit: BIU)
14 : 인스트럭션 캐쉬
16 : 데이터 캐쉬
18 : 시퀀서 유닛(sequencer unit)
20 : 브랜치 유닛(branch unit)
22 : 고정 소수점 유닛 A(fixed point unit A)
24 : 고정 소수점 유닛 B(fixed point unit B)
26 : 콤플렉스 고정 소수점 유닛(complex fixed point unit)
28 : 로드/스토어 유닛(load/store unit)
30 : 부동 소수점 유닛(floating point unit)
32 : 일반 목적용 레지스터(general purpose register: GPR)
34, 38 : 리네임 버퍼(rename buffer)
36 : 부동 소수점 레지스터(floating point register: FPR)
본 발명의 실시예에서는, 프로세서와 다양한 주변 장치들 간에 전송되는 신호들이 마스크(mask)될 수 있다.
본 발명의 또 다른 실시예에서는, 시스템 내의 다양한 성능 모니터들을 프로그래밍하기 위하여 공통 구조(common architecture)가 사용된다.
상기에서는 이하의 본 발명의 상세한 설명을 더 잘 이해할 수 있도록 본 발명의 특징 및 기술적인 장점을 개략적으로 설명하였다. 본 발명의 추가적인 특징 및 장점은 이하에서 설명될 것이고 본 발명의 특허 청구 범위의 주제를 이룬다.
이하의 설명에서는, 본 발명의 이해를 돕고자 특정 워드 또는 바이트 길이 등과 같은 다수의 특정 세목(details)들이 설명된다. 그러나, 당업자에게는 본 발명이 그러한 특정 세목이 없이도 실시될 수 있다는 것은 자명하다. 다른 한편으로는, 불필요한 설명을 함으로써 본 발명을 불명료해지지 않도록 하기 위하여 공지(well-known)의 회로(circuits)들을 블록 다이어그램 형태로 도시한다. 대부분의 경우에 있어서, 타이밍 요소 및 이와 유사한 다른 것들에 관련된 상세한 설명은 본 발명을 이해하는데 반드시 필요한 것은 아니며 당업자가 이해할 수 있는 범위 내에 있기 때문에 생략하였다.
구성 요소들이 일정한 비율로 도시되지 않았으며, 여러 도면들을 통하여 동일 또는 유사한 요소들은 동일한 참조 번호로 표시된 도면들을 참조하여 이하에서는 본 발명을 상세히 설명한다.
도 1은 본 발명의 하나의 실시예에 따른 정보를 처리하기 위한 프로세서(10) 시스템의 블록도이다. 프로세서(10)은 IBM사에 의해 제조되는 PowerPCTM와 같은 단일 집적 회로 슈퍼스칼라 마이크로 프로세서(single integrated circuit superscalar microprocessor)이다. 따라서, 이하에서 상세히 기술하는 바와 같이, 프로세서(10)은 여러 가지의 유닛들, 레지스터들, 메모리들, 및 다른 섹션들을 포함하는데, 이들은 모두 집적회로에 의해 형성된다. 프로세서(10)은 축소 명령어 셋 컴퓨터(reduced instruction set computer: RISC) 기법에 따라 동작한다. 도 1에 도시된 바와 같이, 시스템 버스(11)은 프로세서(10)의 버스 인터페이스 유닛(bus interface unit: BIU) (12)에 연결되어 있다. BIU(12)는 프로세서(10)과 시스템 버스(11) 간의 정보 전송을 제어한다. BIU(12)는 프로세서(10)의 인스트럭션 캐쉬(14) 및 데이터 캐쉬(16)에 연결되어 있다. 인스트럭션 캐쉬(14)는 시퀀서 유닛(sequencer unit)(18)로 인스트럭션을 출력한다. 인스트럭션 캐쉬로부터 전송된 상기 인스트럭션에 응답하여, 시퀀서 유닛(18)은 프로세서(10)의 다른 실행 회로(execution circuitry)로 인스트럭션을 선택적으로 출력한다.
디스팻취 유닛(dispatch unit)(46), 펫취 유닛(fetch unit)(47) 및 완료 유닛(completion unit)(48)의 실행 유닛(execution unit)을 포함하는 시퀀서 유닛(18)뿐만 아니라, 프로세서(10)의 실행 회로는 다수의 실행 유닛을 포함하는데, 여기서 상기 다수의 실행 유닛들은 브랜치 유닛(branch unit)(20), 고정 소수점 유닛 A(fixed point unit A: FXUA)(22), 고정 소수점 유닛 B(fixed point unit B: FXUB)(24), 콤플렉스 고정 소수점 유닛 (complex fixed point unit: CFXU)(26), 로드/스토어 유닛(load/store unit: LSU)(28) 및 부동 소수점 유닛(floating point unit: FPU) (30)을 포함한다. FXUA (22), FXUB (24), CFXU (26) 및 LSU (28)은 일반 목적용 레지스터(general purpose architectural registers: GPRs) (32) 및 고정 소수점 리네임 버퍼(fixed point rename buffers)(34)로부터 자신들의 소스 오퍼랜드(source operand) 정보를 입력받는다. 또한, FXUA (22) 및 FXUB (24)는 캐리 비트(carry bit: CA) 레지스터 (42)로부터 캐리 비트를 입력받는다.
FXUA (22), FXUB (24), CFXU (26) 및 LSU (28)은 고정 소수점 리네임 버퍼(34)내의 선택된 엔트리(entry)에 저장하기 위해 자신들의 동작 결과(목적지 오퍼랜드(destination operand) 정보)를 출력한다. 또한, CFXU (26)은 특수 목적용 레지스터(special purpose register: SPRs)(40)과 서로 소스 오퍼랜드 정보 및 목적지 오퍼랜드 정보를 주고받는다.
FPU (30)은 부동 소수점 레지스터(floating point architectural registers: FPRs) (36) 및 부동 소수점 리네임 버퍼(38)로부터 자신의 소스 오퍼랜드 정보를 입력받는다. FPU(30)은 부동 소수점 리네임 버퍼(38) 내의 선택된 엔트리(entry)에 저장하기 위해 자신의 동작 결과(목적지 오퍼랜드(destination operand) 정보)를 출력한다.
로드 인스트럭션(Load instruction)에 응답하여, LSU(28)은 데이터 캐쉬(16)으로부터 정보를 입력받아 리네임 버퍼(34) 및 (38) 중에서 선택된 하나의 버퍼에 상기 정보를 카피(copy)한다.
상기 정보가 데이터 캐쉬 (16)에 저장되어 있지 않으면, 데이터 캐쉬 (16)은 시스템 버스 (11)에 연결되어 있는 시스템 메모리 (39)로부터 상기 정보를 입력받는다(BIU (12) 및 시스템 버스 (11)을 통하여 입력받음). 또한, 데이터 캐쉬 (16)은 데이터 캐쉬 (16)으로부터 시스템 버스 (11)에 연결되어 있는 시스템 메모리 (39)로 정보를 출력할 수 있다(BIU (12) 및 시스템 버스 (11)을 통하여 출력함). 스토어 인스트럭션(store instruction)에 응답하여, LSU (28)은 GPRs (32) 및 FPRs (36) 중에서 선택된 하나의 레지스터로부터 정보를 입력받아 데이터 캐쉬 (16)에 상기 정보를 카피(copy)한다.
시퀀서 유닛(18)은 GPRs (32) 및 FPRs (36)과 정보를 주고받는다. 브랜치 유닛(20)은 프로세서(10)의 현재 상태를 나타내는 신호 및 인스트럭션을 시퀀서 유닛(18)로부터 입력받는다. 상기 신호 및 인스트럭션에 응답하여, 브랜치 유닛 (20)은 프로세서(10)이 실행하는 인스트럭션들의 시퀀스를 저장하고 있는 해당 메모리 어드레스를 나타내는 신호를 출력한다(시퀀서 유닛(18)로 출력함). 브랜치 유닛(20)으로부터의 상기 신호에 응답하여, 시퀀서 유닛(18)은 인스트럭션 캐쉬(14)로부터 표시된 인스트럭션 시퀀스를 입력받는다. 인스트럭션 시퀀스 중 하나 이상이 인스트럭션 캐쉬(14) 내에 저장되어 있지 않으면, 인스트럭션 캐쉬(14)는 시스템 버스(11)에 연결된 시스템 메모리(39)로부터 상기 정보를 입력받는다(BIU (12) 및 시스템 버스(11)을 통하여 입력받음).
인스트럭션 캐쉬(14)로부터 입력되는 인스트럭션에 응답하여, 시퀀서 유닛(18)은 디스팻취 유닛(dispatch unit)(46)을 통하여 실행 유닛(execution unit) (20), (22), (24), (26), (28) 및 (30) 중에서 선택된 것으로 인스트럭션을 선택적으로 디스팻취한다. 각각의 실행 유닛은 특정 클래스(class)에 속하는 인스트럭션 중 하나 이상의 인스트럭션을 실행한다. 예를 들어, FXUA (22) 및 FXUB (24)는 제 1 클래스에 속하는 소스 오퍼랜드 상의 덧셈(addition), 뺄셈(subtraction), ANDing, ORing 및 XORing과 같은 고정 소수점 수학식 연산(mathematical operation)을 실행한다. CFXU(26)은 제 2 클래스에 속하는 소스 오퍼랜드 상의 고정 소수점 곱셈 및 나눗셈(multiplication and division)과 같은 고정 소수점 연산을 실행한다. FPU (30)은 소스 오퍼랜드 상의 부동 소수점 곱셈 및 나눗셈(multiplication and division)과 같은 부동 소수점 연산을 실행한다.
정보가 리네임 버퍼(34) 중에서 선택된 하나에 저장될 때, 상기 정보는 선택된 리네임 버퍼가 할당되는 인스트럭션에 의해 특정되는 저장 장치 주소(예를 들어, GPRs(32) 또는 CA 레지스터(42) 중 어느 하나)와 연관된다. 리네임 버퍼(34) 중에서 선택된 하나의 버퍼에 저장된 정보는 시퀀서 유닛(18)로부터 입력되는 신호에 응답하여 GPRs (32)(또는 CA 레지스터 (42)) 중 자신과 연관된 하나의 레지스터에 카피된다. 시퀀서 유닛(18)은 완료 유닛(complete unit) (48)을 통하여 정보를 발생시킨 인스트럭션의 완료(completing)에 응답하여 리네임 버퍼(34)들 중에서 선택된 하나의 버퍼에 저장된 정보를 카피하는 상기 카피 동작을 지시한다. 상기 카피하는 동작을 라이트백(writeback)이라고 한다.
정보가 리네임 버퍼(38) 중에서 선택된 하나에 저장되면, 상기 정보는 FPRs(36)들 중 하나와 연관된다. 리네임 버퍼(38) 중에서 선택된 하나의 버퍼에 저장된 정보는 시퀀서 유닛(18)로부터 입력되는 신호에 응답하여 FPRs (36) 중 자신과 연관된 하나의 레지스터에 카피된다. 시퀀서 유닛(18)은 정보를 발생시킨 인스트럭션의 완료(completing)에 응답하여 리네임 버퍼(38)들 중에서 선택된 하나의 버퍼에 저장된 정보를 카피하는 상기 카피 동작을 지시한다.
프로세서(10)은 실행 유닛 (20), (22), (24), (26), (28) 및 (30)들 중 여러개의 실행 유닛에서 복수개의 인스트럭션을 동시에 수행함으로써 고성능(high performance)을 달성한다. 따라서, 각각의 인스트럭션은 다른 인스트럭션들의 스테이지(stage)들과 병렬(parallel)로 실행할 수 있는 스테이지(stage)들의 시퀀스로서 처리된다. 그러한 기법을 슈퍼스칼라 파이프라이닝(superscalar pipelining)이라고 한다. 통상적으로 하나의 인스트럭션은 펫취(fetch), 디코드(decode), 디스팻취(dispatch), 실행(execute), 완료(completion) 및 라이트백(writeback)이라고 하는 6 개의 스테이지들로 처리된다.
펫취 스테이지에서, 시퀀서 유닛 (18)(펫취 유닛 (47))이 브랜치 유닛 (20) 및 시퀀서 유닛 (18)과 관련하여 상기에서 자세히 기술한 인스트럭션들의 시퀀스를 저장하고 있는 하나 이상의 메모리 어드레스로부터 하나 이상의 인스트럭션들을 선택적으로 입력(인스트럭션 캐쉬 (14)로부터)한다.
디코드 스테이지에서, 시퀀서 유닛(18)이 펫취된(fetched) 인스트럭션들을 4개까지 디코드(decode)한다.
디스팻취 스테이지 에서, 시퀀서 유닛(18)은 디스팻취 유닛(46)을 통하여 디스팻취된 각각의 인스트럭션 결과(목적지 오퍼랜드 정보)를 저장하기 위해 리네임 버퍼 엔트리(rename buffer entry)를 예약한 후에 (디코드 스테이지에서의 디코딩에 응답하여) 4개까지 디코드된 인스트럭션을 실행 유닛 (20), (22), (24), (26), (28) 및 (30)들 중 선택된 실행 유닛으로 선택적으로 디스팻취한다. 디스팻취 스테이지에서, 디스팻취된 인스트럭션을 위해 선택된 실행 유닛으로 오퍼랜드 정보가 제공된다. 프로세서(10)은 프로그램된 시퀀스 순서대로 인스트럭션을 디스팻취한다.
실행 스테이지에서, 실행 유닛은 디스팻취된 인스트럭션들을 실행하고 상기에서 자세히 기술한 바와 같이 리네임 버퍼(34) 및 리네임 버퍼(38) 내의 선택된 엔트리에 저장하기 위하여 연산(operation) 결과(목적지 오퍼랜드 정보)를 출력한다. 이러한 방식으로, 프로세서(10)은 프로그램된 시퀀스와 관련된 순서에 무관하게(out of order) 인스트럭션을 실행할 수 있다.
완료 스테이지에서, 시퀀서 유닛(18)은 인스트럭션의 실행이 완료(complete)되었음을 표시한다. 프로세서(10)은 프로그램된 시퀀스 순서대로 인스트럭션을 완료한다.
라이트백(writeback) 스테이지에서, 시퀀서(18)은 리네임 버퍼 (34) 및 (38)로부터 GPRs (32) 및 FPRs(36)으로 각각 정보의 카피를 지시한다. 시퀀서 유닛(18)은 상기 정보의 카피가 선택된 리네임 버퍼에 저장되도록 지시한다. 마찬 가지로, 특정 인스트럭션의 라이트백 스테이지에서, 프로세서(10)은 특정 인스트럭션에 응답하여 자신의 구조적인 상태(architectural states)를 갱신한다. 프로세서(10)은 프로그램된 시퀀스의 순서대로 인스트럭션의 각 라이트백 스테이지를 처리한다. 프로세서(10)은 인스트럭션의 완료 스테이지 및 라이트백 스테이지를 특정 상황에서는 효과적으로 결합한다.
각각의 인스트럭션이 인스트럭션 처리의 각 스테이지를 완료하는데 하나의 머신 사이클(machine cycle)을 가지는 것이 바람직하지만, 하나 이상의 머신 사이클을 필요로 하는 몇 몇 인스트럭션(예를 들어, CFXU (26)에 의한 콤플렉스 고정 소수점 인스트럭션)들도 있다. 따라서, 선행하는 인스트럭션들의 완료에 필요한 시간의 변동(variation)에 따라서 특정 인스트럭션의 실행 스테이지 및 완료 스테이지 간에 가변적인 지연(delay)이 발생될 수 있다.
도 2는 시퀀서 유닛(18)의 블록도이다. 상기에서 상세히 기술한 바와 같이, 펫취 스테이지에서는 시퀀서 유닛(18)이 인스트럭션 캐쉬(14)로부터 인스트럭션을 4개까지 선택적으로 입력받아 인스트럭션 버퍼(70)에 저장한다. 디코드 스테이지 에서, 디코드 로직(72)가 인스트럭션 버퍼(70)으로부터 4개까지 펫취된 인스트럭션들을 입력받아 디코드한다. 디스팻취 스테이지에서, 디스팻취 로직(74)가 디코드 스테이지에서의 디코딩에 응답하여 4개까지 디코드된 인스트럭션을 실행 유닛 (20), (22), (24), (26), (28) 및 (30)들 중 선택된 실행 유닛으로 선택적으로 디스팻취한다.
도 3은 시퀀서 유닛(18)의 리오더 버퍼(reorder buffer) (76)을 개념적으로 도시한 도면이다. 도 3에 도시한 바와 같이, 리오더 버퍼(76)은 버퍼 번호들이 0 내지 15로 각기 붙여진 16개의 엔트리를 가지고 있다. 각각의 엔트리는 인스트럭션 형태(instruction type) 필드, 목적지 GPR의 수(number-of-GPR destination) 필드, 목적지 FPR의 수(number-of-FPR destination) 필드, 종료(finished) 필드, 및 예외(exception) 필드로 된 5개의 주 필드(primary field)를 가지고 있다.
도 2를 다시 참조하면, 디스팻취 로직(74)가 인스트럭션을 실행 유닛으로 디스팻취하면 시퀀서 유닛(18)이 디스팻취된 인스트럭션을 리오더 버퍼(76)의 연관된 엔트리로 할당한다. 시퀀서 유닛(18)은 리오더 버퍼(76)의 엔트리를 선입-선출(first-in first-out: FIFO)을 기반으로 하고, 시퀀서 유닛(18)이 엔트리 0을 할당하고 그 다음으로 엔트리 1 내지 15를 차례대로 할당한 후 엔트리 0을 다시 할당하는 것과 같은 회전 방식(rotating manner)으로 디스팻취된 인스트럭션에 할당하거나 또는 연관시킨다. 디스팻취된 인스트럭션이 리오더 버퍼(76)의 연관된 엔트리에 할당되면, 디스패취 로직(74)는 리오더 버퍼(76)의 연관된 엔트리의 여러 필드 및 부필드(subfield)에 저장하기 위해 디스팻취된 인스트럭션에 관련된 정보를 출력한다.
예를 들어, 도 3의 엔트리 1의 리오더 버퍼(76)은 인스트럭션이 FXUA(22)로 디스팻취됨을 나타낸다. 또한, 엔트리 1은 디스팻취된 인스트럭션이 하나의 GPR 목적지 레지스터를 가지고 있으며(즉, 목적지 GPR의 수(number-of-GPR) =1), FPR 목적지 레지스터를 가지고 있지 않으며(즉, 목적지 FPR의 수(number-of-FPR) =0), 아직 종료되지 않았으며(즉, finished = 0), 예외가 아직 걸리지 않았다는 것을 나타낸다(즉, 예외(exception) =0).
실행 유닛이 디스팻취된 인스트럭션을 실행하면, 실행 유닛은 리오더 버퍼(76) 내의 상기 인스트럭션에 연관된 엔트리를 갱신한다. 좀 더 구체적으로, 디스팻취된 인스트럭션의 실행이 종료됨에 따라 상기 인스트럭션 유닛은 엔트리의 종료 필드를 갱신한다(즉, finished = 1). 디스팻취된 인스트럭션을 실행하는 중에 실행 유닛에 예외(exception)가 걸리면, 실행 유닛은 엔트리의 예외(exception) 필드를 갱신한다(즉, exception = 1).
도 3에는 할당 포인터(allocation pointer) (73) 및 완료 포인터(completion pointer)(75)가 도시되어 있다. 프로세서(10)은 상기 포인터들을 리오더 버퍼(76)의 판독/기록(read/write) 지점을 제어하는데 사용한다.
프로세서(10)은 리오더 버퍼 엔트리가 특정 인스트럭션에 할당(또는 연관)되는지의 여부를 나타내기 위하여 할당 포인터(73)을 사용한다. 도 3에서는 할당 포인터(73)이 리오더 버퍼 엔트리 3을 가리키고 있는데, 이는 리오더 버퍼 엔트리 3이 인스트럭션에 할당되도록 사용될 수 있는 다음의 리오더 버퍼임을 나타낸다.
또한, 프로세서(10)은 (이미 특정 인스트럭션에 할당된 리오더 버퍼 엔트리에 대하여) 특정 인스트럭션이 아래의 조건들을 만족시키는지의 여부를 표시하기 위하여 완료 포인터(75)를 가지고 있다.
조건 1 : (인스트럭션이 디스팻취되는) 실행 유닛이 인스트럭션의 실행을 종료함;
조건 2 : 인스트럭션 처리의 모든 스테이지들에 대해서 예외(exception)가 발생하지 않았음; 및
조건 3 : 이미 디스팻취된 모든 인스트럭션이 조건 1 및 조건 2를 만족함.
도 3에는 완료 포인터 (75)가 리오더 버퍼 엔트리 1을 가리키고 있는데, 이는 리오더 버퍼 엔트리 1이 조건 1, 2 및 3을 만족시킬 수 있는 다음번 리오더 버퍼 엔트리임을 나타낸다. 따라서, 유효(valid) 리오더 버퍼 엔트리들은 완료 버퍼 (75)가 가리키는 리오더 버퍼 엔트리 및 할당 포인터 (73)가 가리키는 리오더 버퍼 엔트리보다 선행하는 일련의 리오더 버퍼 엔트리로 정의할 수 있다.
도 2를 다시 참조하면, 리오더 버퍼(76)의 엔트리들은 시퀀서 유닛(18)의 완료 로직(80) 및 예외 로직(82)에 의해 판독된다. 리오더 버퍼(76)의 예외 필드에 응답하여, 예외 로직(82)는 디스팻취된 인스트럭션들의 실행중에 발생한 예외를 처리(handle)한다. 리오더 버퍼(76)의 종료 필드 및 예외 필드에 응답하여, 완료 로직(80)은 프로그램된 시퀀스의 순서대로 인스트럭션들이 완료(complete) 되었음을 나타낸다. 완료 로직(80)은 아래의 조건들이 만족되는 경우 인스트럭션이 완료됨을 나타낸다.
조건 1 : (인스트럭션이 디스팻취되는) 실행 유닛이 인스트럭션의 실행을 종료함(즉, 리오더 버퍼 (76) 내의 인스트럭션과 관련된 엔트리의 종료(finished) = 1);
조건 2 : 인스트럭션 처리의 모든 스테이지들에 대해 예외(exception)가 발생하지 않았음(즉, 리오더 버퍼(76) 내의 인스트럭션과 관련된 엔트리의 예외(exception) = 1); 및
조건 3 : 이미 디스팻취된 모든 인스트럭션이 조건 1 및 조건 2를 만족함.
리오더 버퍼(76) 내의 정보에 응답하여, 디스팻취 로직(74)는 디스팻취되어야 하는 추가적인 인스트럭션들의 적당한 수를 결정한다.
도 4 및 도 7을 참조하면, 프로세서(10)의 기능이 성능 모니터(performance monitor: PM) (50)을 가지고 있다. 성능 모니터(50)은 PowerPC 인스트럭션 실행 및 저장 장치 제어의 사용에 관련된 중요한 세분성(significant granularity)에 관한 상세 정보를 제공하도록 의도된 소프트웨어가 액세스할 수 있는 메카니즘이다. 일반적으로, 성능 모니터(50)은 프로세서/스테이지 관련 이벤트(event)들을 카운트하는데 사용되는 구현예에 좌우되는 수(예를 들어, 1 내지 8)의 카운터 (51)(예를 들어 PMC1 내지 PMC8)을 포함하고 있다. 또한, 성능 모니터(50)은 카운터 PMCn의 기능을 구현하는 모니터 모드 제어 레지스터(monitor mode control register: MMCRn)를 포함하고 있는데 여기서 각각의 MMCR은 통상적으로 여러개의 카운터들을 제어한다. 레지스터 MMCRn들은 프로세서 (10)(예를 들어, PowerPC) 상에 존재하는 통상의 특수 목적용 레지스터들이다. 이러한 특수 목적용 레지스터들은 mfspr(move from special purpose register) 인스트럭션 및 mtspr(move to special purpose register) 인스트럭션을 통한 판독 또는 기록을 위하여 액세스가 가능하다. 여기서 상기 기록 동작은 특권(privileged) 상태 또는 감독자(supervisor) 상태에서 허용되며, 특수 목적용 레지스터를 판독하는 것이 레지스터의 내용을 변경시키지 않기 때문에 판독 동작은 문제 상태에서도 허용된다. 다른 실시예에서는, 이러한 레지스터들은 I/O 공간에 있는 어드레스와 같은 다른 수단에 의한 액세스도 가능하다.
MMCRn 레지스터들은 이벤트(event)/신호(signal) 선택이 레코드(record)되거나/카운트(count)되는 것을 허용하는 비트 필드(bit field)로 분할된다. 이벤트들의 허용 가능한 조합을 선택하면 카운터가 동시적(concurrently)으로 동작하게 된다.
MMCRn 레지스터들은 카운팅을 위해 선택 가능한 구현예에 좌우되는 이벤트들의 수를 가진 카운터 인에이블 제어, 카운터 부 인터럽트 제어(counter negative interrupt controls) 및 카운터 동결 제어(counter freeze control)와 같은 제어들을 포함한다. 특정 프로세서 및 버스 구조(bus architecture) 또는 의도된 애플리케이션에 따라서 작거나 큰 카운터들 및 레지스터들이 사용될 수 있으므로, 본 발명의 정신 및 범위로부터 이탈함이 없이 MMCRn 및 PMCn을 위해서 상이한 갯수의 특수 목적용 레지스터들이 사용될 수 있을 것이다.
성능 모니터 (50)은 머신 상태를 저장하는 정확한 시점(precise point in time)을 표시하는 카운터를 포함하고 있는 타임 베이스 설비(time base facility) (52)와 연결되어 있다. 상기 타임 베이스 설비 (52)는 통상적으로 시스템 버스 클록에 기초하고 동기화된 타임 베이스(time base)를 제공하기 위해 다중 프로세서 (10)을 포함하고 있는 슈퍼스칼라 프로세서의 필요한 기능인 주파수(frequency)를 가진 클록을 포함하고 있다. 타임 베이스 클록 주파수는 시스템 버스 클록 주파수 또는 시스템 버스 클록을 분주한 클록(예를 들어, 시스템 버스 클록의 1/4) 주파수로 제공된다.
타임 베이스 설비 (52) 내에 포함된 64-비트 카운터 내의 미리 정해진 비트들은 모니터링하기 위해 선택되고, 그에 따라 모니터된 비트 플립(flips) 간의 시간 증가가 제어될 수 있다. 타임 베이스 설비 (52)의 동기화는 다중 프로세서 시스템 내의 모든 프로세서들이 동기에 맞추어 동작이 개시되도록 한다. 상기 동기화를 수행하기 위한 방법들의 예가 본 출원인에게 양도되었으며 본 발명 개시의 일부를 이루는Performance Monitoring in a Multiprocessor System With Interrupt Masking라는 명칭으로 출원된 심사 대기중인 미국 특허 출원 번호 08/675,427호에 기술되어 있다.
타임 베이스 설비 (52)는 다중 프로세서 시스템의 각각의 프로세서에서 동시에 발생하는 이벤트(events)들을 추적(track)하는 방법을 더 제공한다. 타임 베이스 설비 (52)가 프로세서들을 동기화하기 위한 간단한 방법을 제공하므로, 다중 프로세서 시스템의 모든 프로세서들이 동기 방식으로 선택된 단일 시스템 전반에 걸친 이벤트를 검출하여 그에 따른 동작(react)을 한다. 임의의 비트의 전이(transition) 또는 여러 비트들로 이루어진 하나의 그룹으로부터 선택된 하나의 비트의 전이는 다중 프로세서들의 상태를 동시에 카운팅(counting)하는데 사용되어 비트 플립(bit flips)이 발생하거나 카운트된 갯수의 이벤트가 발생할 때 인터럽트가 발생한다.
동작시에, 미리 정해진 비트가 플립되면 타임 베이스 설비 (52)로부터 PM (50)으로 통지 신호(notification signal)가 전송된다. 그러면, PM (50)은 특수 목적용 레지스터에 머신 상태 값을 보관한다. 다른 시나리오에서는, PM (50)은 부 카운터(negative counter)(0 비트가 온(on)임) 조건에 의해 발생되는 성능 모니터 인터럽트를 사용한다. 오퍼랜드 및 어드레스 데이터를 포함하는 상태 정보를 나타내는 동작은 프로세서들 중 하나라도 인터럽트 핸들링(interrupt handling)을 디스에이블(disable)시키는 경우 지연될 수 있다.
인터럽트 마스킹으로 인하여 데이터의 손실이 일어나지 않음을 보장하기 위하여, 인터럽트 조건이 발생할 때 프로세서는 실행 중인 하나의 인스트럭션의 유효 인스트럭션 어드레스 및 오퍼랜드가 있을 경우에는 그 오퍼랜드의 어드레스들을 획득하여 인터럽트를 여러 가지 인터럽트 핸들링 루틴 (71), (77), (79)를 채용하고 있는 인터럽트 해결 로직(interrupt resolution logic) (57)에 제공한다. 이러한 어드레스들은 시스템 전반에 걸친 신호의 발생(signalling)시에 상기 목적들을 위하여 설계된 데이터가 저장된 어드레스 레지스터(Saved Data Address Register: SDAR) 및 인스트럭션이 저장된 어드레스 레지스터(Saved Instruction Address Register: SIAR)에 저장된다. 여러 실행 유닛들의 상태도 또한 저장된다. 인터럽트가 발생할 때의 여러 실행 유닛들의 상태는 상태가 저장된 레지스터(saved state register: SSR)에 제공된다. 상기 SSR은 내부 레지스터 또는 소프트웨어가 액세스할 수 있는 SPR일 수 있다. 따라서, 인터럽트가 실제로 서비스될 때 상기 레지스터들의 내용은 인터럽트가 발생할 때에 프로세서에서 현재 실행 중인 현재 인스트럭션에 관련된 정보를 제공한다.
샘플 데이터(sample data)를 레코드(record)하여야 한다는 것을 표시하기 위하여 타임 베이스 (52)로부터의 통지(notification)를 PM(50)이 수신하면, 인터럽트 신호가 브랜치 처리 유닛(20)으로 출력된다. 동시에, 샘플 데이터(머신 상태 데이터)는 레지스터들 또는 어드레스 I/O 공간으로 적당히 제공되는 SIAR, SDAR 및 SSR을 포함하는 SPRs(40)에 저장된다. MMCRn 내에 정의된 바와 같이 선택된 비트 전이에 따라서 인터럽트 신호를 표시하기 위해 플래그(flag)가 사용될 수 있다. 물론, 타임 베이스 설비(52) 및 선택된 비트들의 실제 구현은 시스템 및 프로세서 구현의 하나의 기능에 해당한다.
도 5에 도시된 블록도는 성능 모니터를 포함하는 본 발명의 슈퍼스칼라 프로세서 시스템 동작에 따른 전체 프로세스 플로우를 도시하고 있다. 블록(61)에서는 슈퍼스칼라 프로세서 시스템 내에서 인스트럭션들을 처리하는 것을 도시하고 있다. 슈퍼스칼라 프로세서 시스템 동작 중에, 성능 모니터링은 모니터 모드 제어 레지스터에 의한 성능 모니터 카운터의 구성을 사용하여 블록(63)에서 선택된 방식으로 구현되며 성능 모니터링 데이터는 블록(65)에서 수집된다.
성능 모니터 카운트의 값들을 조정함으로써(즉, 이벤트의 발생이 소정의 미리 정해진 개수에 도달할 때 예외가 발생하도록 카운터의 값을 충분히 큰 값으로 정함), 시스템 성능의 프로파일(profile)이 획득될 수 있다. 또한, 본 발명의 개시 목적상, 성능 모니터링 인터럽트는 처리시의 선택된 시점에 발생하는 것이 바람직하다. 이하에서 상세히 기술하는 바와 같이, 이벤트들의 미리 정해진 개수는 정지 시점을 선택하는데 적합하게 사용된다. 예를 들어, 두 개의 인스트럭션들이 종료된 후에 카운터를 부(negative)로 함으로써 두 개의 인스트럭션들 이후에 종료하도록 카운팅이 프로그램될 수 있다. 또한, 본 발명의 개시 목적상, 모니터링이 발생하는 시간 간격은 기지(known)이다. 따라서, 수집된 데이터는 모니터링이 수행되는 동안의 분, 시간, 하루 등과 관련된 내용을 가진다.
이하에서 상세히 기술되는 바와 같이, 선택된 성능 모니터링은 이벤트, 잘못된 트리거링을 식별하는 것(identifying false triggering), 병목 현상을 식별하는 것, 스톨(stall)을 모니터링하는 것, 디스팻취 유닛의 동작 효율성을 결정하는 것, 브랜치 유닛 동작의 효율성을 결정하는 것, 잘못 할당된 데이터 액세스에 의한 성능 감소를 결정하는 것, 순서화된 인스트럭션 등의 실행 빈도를 식별하는 것, 금지된 인터럽트를 식별하는 것, 및 효율을 식별하기 위하여 리틀즈 로(Little's Law)를 적용하는 것들 사이의 상호 관계를 재구성하는 것을 포함한다.
시스템이 개선될 수 있는 잠재적인 영역을 식별하기 위하여 블록(67)에서 선택된 성능 모니터링 루틴은 완료되고 수집된 데이터가 분석된다. 성능이 개선될 수 있는 소프트웨어 또는 하드웨어의 특정 영역을 식별하기 위하여 수집된 데이터로 히스토그램과 같은 프로파일링 메카니즘(profiling mechanism)이 구축될 수 있다. 또한, 시간에 민감하게 모니터되는 이벤트들(예를 들어, 다수의 스톨, 아이들(idle) 등)에 대하여 기지의 개수만큼의 사이클이 경과할 때까지 카운트 개수 데이터가 수집되고 데이터는 샘플링 기간과 관련된 내용을 가지게 된다. 수집된 데이터를 분석하는 것은 IBM사의 aixtrace 툴 또는 그래픽 성능 가시화 툴인 pv와 같은 것을 사용하여 용이하게 이루어질 수 있다는 점을 이해하여야 한다.
도 6a에는, 두 개의 PMC 카운터(예를 들어, PMC1 및 PMC2)의 동작을 제어하는데 적합한 MMCR0의 하나의 구성도가 예시적으로 도시되어 있다. 예에서 도시된 바와 같이, MMCR0는 다수의 비트 필드들로 분할되는데, 이러한 필드 분할은 카운트되어야 하는 이벤트의 선택, 성능 모니터 인터럽트를 인에이블, 그 조건 하에서 카운팅이 인에이블될 수 있는 조건의 특정, 및 임계치(X)를 세트하는 것들을 포함한다.
상기 임계치(X)는 변수이며 소프트웨어로 선택 가능한 값으로 그 목적은 특정 데이터를 특성화하는 것을 허용하여 임계치의 감소를 초과하는 액세스의 카운트를 합산함으로써 설계자가 충돌(conflict)에 대한 좀 더 분명한 상태를 얻을 수 있도록 하는 것이다. 상기 임계치(X)는 데이터 인스트럭션이 종료되기 전에 감소 계수기(decrementer)가 0에 도달하게 되면 초과된 것으로 간주된다. 그와는 반대로, 감소 계수기(decrementer)가 0에 도달하기 전에 데이터 인스트럭션이 종료되면 상기 임계치(X)는 초과되지 않은 것으로 간주되지만, 물론 실행되는 데이터 인스트럭션에 따라 완료(completed)는 다른 의미를 가진다. 예를 들어, 로드(load) 인스트럭션에서의 완료(completed)는 인스트럭션과 관련된 데이터가 수신되었음을 나타내고, 스토어(store) 인스트럭션에서의 완료(completed)는 데이터가 성공적으로 기록되었음을 나타낸다. 사용자가 판독할 수 있는 카운터(예를 들어, PMC1)는 임계치가 초과될 때마다 적당히 증가된다.
사용자는 성능 모니터 인터럽트가 발생하기 전에 임계치가 초과되는 경우의 수를 결정할 수 있다. 예를 들어, 사용자는 특정 임계치를 초과하는 100번째 데이터가 발생할 때 카운터로 하여금 인터럽트를 걸도록 하기 위하여 초기 값을 정할 수 있다. 초기 값들이 적절히 정해지면 PM 설비는 시스템 성능 문제들을 식별하는데 사용하기에 충분히 적합하다.
도 6a를 참조하면, 예에서 도시된 바와 같이 MMCR0의 비트 0 내지 비트 4 및 비트 18는 그 환경 하에서 카운팅이 인에이블되는 시나리오를 결정한다. 예에 의하면, 비트 0은 동결 카운팅 비트(freeze counting bit: FC)이다. FC가 1이면, PMCn 카운터들 내의 값들은 하드웨어 이벤트들에 의해 변경되지 않으므로 카운팅은 변하지 않는다(frozen). FC가 0이면, PMCn의 값들은 선택된 하드웨어 이벤트들에 의하여 변경될 수 있다. 비트 1 내지 비트 4는 그 조건 하에서 카운팅이 동결되는 다른 특정 조건들 나타내고 있다.
예를 들어, 감독자 상태(supervisor state) 비트에 있으면 비트 1이 동결 카운팅(freeze counting)(FCS)이고, PM=1 비트이면 비트 3이 동결 카운팅(FCPM1)이며, 문제 상태(problem state) 비트에 있으면 비트 2가 동결 카운팅(FCP)이며, PM=0 비트이면 비트 4가 동결 카운팅(FCPM0)이다. PM은 머신 상태 레지스터(machine state register: MSR)(도 1의 SPR (40))의 성능 모니터 마크 비트(비트 29)를 나타낸다. 비트 1 및 비트 2에 대해서, 감독자 상태 또는 문제(problem) 상태는 MSR의 PR(privilege: 특권) 비트의 로직 레벨로 표시된다. 이러한 비트들에 대한 동결 카운팅의 상태들은 다음과 같다:
비트 1 : FCS=1이고 PR =0;
비트 2 : FCP=1이고 PR=1;
비트 3 : FCPM1=1이고 PM=0;
비트 4 : FCPM0=1이고 PM=1.
비트 5, 비트 16, 및 비트 17은 PMCn에 의해 트리거(trigger)되는 인터럽트 신호를 제어하는데 사용된다. 비트 6 내지 비트 9는 시간 또는 이벤트에 기초한 전이(transition)를 제어하는데 사용된다. 임계치(X)는 비트 10 내지 비트 15에 의해 다양하게 세트된다. 비트 18은 PMCn(n1)에 대한 카운팅 가능(counting enablement)을 제어하여, 0이면 카운팅이 인에이블되고, 1이면 PMC1의 비트 0이 1이 되거나 성능 모니터링 예외가 발생할 때까지 카운팅이 디스에이블된다. 비트 19 내지 비트 25는 카운트되어야 하는 신호들의 선택과 같은 PMC1에 대한 이벤트를 선택하는데 사용된다.
도 6b는 본 발명의 바람직한 실시예에 따른 MMCR1의 구성도를 도시하고 있다. 비트 0 내지 비트 4는 PMC3에 대한 이벤트 선택을 적절히 제어하며, 비트 5 내지 비트 9는 PMC4에 대한 이벤트 선택을 제어한다. 마찬가지로, 비트 10 내지 비트 14는 PMC5에 대한 이벤트 선택을 제어하며, 비트 15 내지 비트 19는 PMC6에 대한 이벤트 선택을 제어하고, 비트 20 내지 비트 24는 PMC7에 대한 이벤트 선택을 제어하며, 비트 25 내지 비트 28은 PMC8에 대한 이벤트 선택을 제어한다.
카운터 선택 필드(즉, MMCR0의 비트 19 내지 비트 15 및 비트 26 내지 비트 31, 및 MMCR1의 비트 0 내지 비트 28)는 특정 구현에 의해 제공되는 선택 가능한 이벤트들의 전체 영역(full domain)을 특정하는데 필요한 수 만큼의 비트를 가지는 것이 바람직하다.
성능 분석을 위한 데이터를 획득하는데는 적어도 하나의 카운터가 필요하다. 더 빠르고 더 정확한 분석을 위해서는 더 많은 카운터들이 제공되어야 한다. 상기 시나리오가 정밀하게 반복된다면, 선택되는 다른 목록(item)들에 대해서도 동일한 시나리오가 실행될 수 있다. 상기 시나리오가 정밀하게 반복되지 않는다면, 통계 데이터를 수집하기 위하여 여러번 선택된 동일한 목록(item)들에 대해서도 동일한 시나리오가 실행될 수 있다. 시나리오의 시작 시간은 시스템 시간 서비스(system time services)를 사용하여 이용 가능한 것으로 가정되어 시간 간격은 상이한 샘플들 및 상이한 이벤트들 간을 상호 관련시키는데 사용될 수 있다.
본 발명 개시의 일부를 이루며, A Method and System for Performance Monitoring Time Lengths of Instruction in a Processing System라는 명칭의 미국 특허 출원 번호 제 08/537,417호는 유효 어드레스(effective address)를 사용하여 이벤트 시퀀스를 선택 및 구별(selecting and distinguishing), 실행 중의 프로세서 이벤트들의 순서 모니터링에 의한 성능 모니터링, 병목 현상 및 스톨(bottlenecks and stalls)을 식별하기 위한 성능 모니터링, 프로세서 시스템 상의 메모리 액세스의 효과의 성능 모니터링, 디스팻취 유닛 결함의 성능 모니터링, 아이들(idle) 상태의 성능 모니터링, 잘못 할당된 메모리 액세스의 성능 모니터링, 순서화된 인스트럭션들의 성능 모니터링, 브랜치 유닛 동작 효율성의 성능 모니터링, 디스에이블된 인터럽트들의 시간 길이의 성능 모니터링에 대하여 더 기술하고 있다. 성능 모니터링의 더 자세한 개시는 IBM사에 의해 1994년에 출판된 Performance Monitor, PowerPC 604 RISC Microprocessor User's Manual 제 9장 9 페이지 1라인부터 11라인에 나타나 있으며 본 발명의 일부를 이룬다. 상기 문헌에는, 어떤 이벤트를 어떠한 방식으로 모니터할 것인지를 다양한 카운터들의 PMCn에 통지하는 도 6a 및 도 6b에 도시된 것과 같은 레지스터들인 MMCRn 레지스터들 내에 저장하기 위한 코드 지점(code point)을 나타내는 한 쌍의 테이블이 있다.
도 7을 참조하면, 본 발명을 구현하기 위한 실시예가 도시되어 있다. 도 7은 한 쌍의 MMCRn 레지스터(51), SIAR 및 SDAR 레지스터(40), MMCRn 레지스터들의 여러 비트들에 의해 제어되는 멀티플렉서(72 ... 73)에 의해 입력되는 카운터 제어 로직 및 관련된 덧셈기를 가진 PMC1 ... PMCn(카운터 1 ... N으로 표시됨)을 가지고 있다.
멀티플렉서(72) 내지 (73)은 임계기(thresholder) (71), 타임 베이스 회로(52)로부터 발생하는 이벤트들을 수신하며 다양한 실행 유닛들 및 마이크로프로세서 내의 다른 유닛들로부터 발생하는 신호들인 다른 이벤트들을 수신한다. 성능 모니터(50)의 이들 다양한 회로 요소들 모두는 본 명세서 및 상기에서 참조한 특허 출원들에서 개시하고 있으므로 이들 요소들의 동작에 관해서는 더 이상 상세히 설명하지 않겠다.
도 8에는 본 발명 실시예의 하나의 쌍이 도시되어 있다. 데이터 처리 시스템(800)이 도시되어 있는데, 이는 버스(801) 또는 다른 공지된 수단에 의해 연결될 수 있다. 시스템(800)은 당업자가 이해할 수 있는 바와 같이 동일하거나 또는 하나 또는 다른 방법(one way or another)으로 다양하게 변할 수 있다. 그러나, 본 발명은 단 하나의 시스템(800)만으로 구현될 수 있으며, 특별히 언급되지 않으면 이하의 설명은 하나의 시스템(800)만에 대해서 설명할 것이다.
CPU(10)은 그 내부에 구현된 성능 모니터(50)을 가진 도 1에 도시된 프로세서와 유사할 수 있다. CPU(10)은 부착된 하나 이상의 캐쉬(806)을 가질 수 있다. 또한, CPU(10)은 버스(810)을 통해 직접 메모리 액세스 제어기(direct memory access: DMA controller) (803)에 연결되어 있을 수 있고 버스(812)를 통해 메모리 제어기 (804)에 연결되어 있을 수 있으며, 버스(813)을 통해 브릿지 회로(bridge circuit) (805)에 연결되어 있을 수 있다. 버스(850)은 DMA 제어기(803)과 메모리 제어기(804)간의 신호들을 전송할 수 있다. 버스(851)은 DMA 제어기(803)과 브릿지 회로(805)간의 신호들을 전송할 수 있다. 또한 버스(852)는 메모리 제어기(804)와 브릿지 회로(805)간의 신호들을 전송할 수 있다.
DMA 제어기(803), 메모리 제어기(804) 및 브릿지 회로(805) 중 하나 이상이 성능 모니터(50)을 포함할 수 있다. 그러나, 이들 각각의 장치들 내의 성능 모니터(50)은 CPU(10) 내에 또는 다른 장치들 중의 어느 하나 내에 특별히 구현된 것과 다를 수 있다. 성능 모니터(50)은 도 7에 도시된 것과 유사한 방법으로 구현될 수 있다.
또한, 시스템(800)은 프로그램 가능한 회로(802)를 포함하고 있는데, 회로(802)는 또한 성능 모니터(50)을 포함하고 있다. 프로그램 가능한 회로(802)는 버스(807)에 의해 CPU(10)에 연결된다. 프로그램 가능한 회로(802)는 버스(809)를 통하여 DMA 제어기(803)에 연결되어 있으며, 버스(808)을 통하여 메모리 제어기(804)에 연결되어 있고, 버스(811)을 통하여 브릿지 회로(805)에 연결되어 있다. 프로그램 가능한 회로(802)는 그 프로그램 가능한 회로(802)내에 포함된 성능 모니터(50)을 사용하여 소정 형식의 성능 모니터링 분석을 수행하기 위하여 CPU(10)과 함께 사용되거나 또는 CPU(10) 대신에 사용될 수 있다. 예를 들어, 프로그램 가능한 회로(802)는 버스(805) 내지 (852)를 거쳐 전달되는 신호들을 모니터하는데 사용될 수 있다. 따라서, 아래에서 기술되는 것은 CPU(10) 내에서 또는 프로그램 가능한 회로(802) 내에서, 또는 소정의 형식으로 결합(combination)된 이들 양자 내에서 성능 모니터링 능력을 구현하기 위하여 적용될 것이다.
DMA 제어기 (803), 메모리 제어기(804) 및 브릿지 회로 (805)들은 성능 모니터(50)을 구현할 수 있는 데이터 처리 시스템 내의 다른 모듈들의 예(example)들로 도시되어 있어서, 성능 분석이 하나 이상의 이들 장치들의 개별적인 상호 작용, 이들 장치들 간의 상호 작용, 또는 이들 장치들과 CPU(10)과의 상호 작용으로 수행될 수 있다. 따라서, 당업자는 도면에 도시되지 않은 다른 모듈들을 사용하여 유사한 방법으로 성능 모니터를 구현할 수 있음을 알 수 있을 것이다.
본 발명의 하나의 장점은 심사 대기중인 특허 출원에서 함께 논의된 성능 모니터링 능력이 시스템 전반으로 확장될 수 있어서 성능 분석이 CPU(10)의 내부에서만 수행되지 않고, 전체 시스템에서(또는 버스(801)을 통한 성능 모니터링 신호들을 전송함으로써 시스템(800)에서) 수행될 수 있다. 이하의 설명들은 하나의 시스템(800) 내에서 또는 여러 시스템(800)들 내에서 상기 성능 모니터링 능력이 수행되는 방법에 관한 것이다. 본 발명을 사용하여 수행될 수 있는 다양한 분석들 모두에 관한 설명은 본 명세서에서 상세히 기술되지는 않을 것이다. 시스템(800) 내에 있는 복수개의 장치들 내의 성능 모니터가 본 발명을 사용하여 구현될 수 있다는 사실에 관한 장점을 갖게 되는 임의의 분석 형태에 관하여 유의하면 충분하다.
본 발명은 시스템(800) 내의 각각의 장치들 상의 하나 이상의 핀들에 연결된 버스(808) 내지(813)을 통해 신호들을 전송하도록 제공되는데, 여기서 신호들은 카운팅을 제어하고 CPU(10) 또는 프로그램 가능한 회로(802)에 장치가 가지고 있는 카운터 또는 오버플로우에 관한 정보를 알려주는데 사용될 수 있다.
제 1 신호는 CPU(10)으로부터 출력될 수 있다. 상기 신호는 성능 모니터(50)이 카운팅을 하고 있을 때 1을 출력하고, 성능 모니터(50)이 카운팅을 하고 있지 않을 때 0을 출력한다. 하나 이상의 프로세서(10)을 가지고 있는 시스템들에서는 이러한 신호들은 함께 논리합(ORing)되어 임의의 프로세서가 카운팅을 하고 있으면 신호가 1이 된다. 모든 프로세서들이 카운팅을 하고 있지 않을 때만, 상기 신호는 0으로 전송된다. 제 1 신호의 구현은 도 10의 다이어그램을 사용하여 구체적으로 도시되는데, 여기서 트리거 신호는 프로세서 성능 모니터(50)으로부터 주변 장치 성능 모니터로 전송된다. 상기 제 1 신호(Signal 1)는 이하에서 상세히 기술된다.
제 2 신호는 CPU (10)(또는 프로그램 가능한 회로 (802))에 입력될 수 있다. 상기 신호는 주변 장치 내에 있는 카운터가 카운팅을 하고 있다는 것을 프로세서(10)에 알려주기 위한 트리거의 역할을 또한 담당하고 있다. 상기 제 2 신호(Signal 2)는 이하에서 상세히 기술되고 도 12에 더 자세히 도시되어 있다.
제 3 신호는 CPU (10)(또는 프로그램 가능한 회로 (802))에 입력될 수 있다. 상기 신호는 외부 장치로부터 출력되고 카운터가 음의 수(negative)로 진입하거나 또는 순환(wrapping)하는 것과 같은 장치에 어떤 종류의 주의(attention)가 필요하다는 것을 나타내기 위하여 1로 세트된다. 상기 주의는 소프트웨어가 취할 적당한 동작을 결정하는 성능 모니터 인터럽트를 요구하도록 번역될 수 있다. 외부 장치들로부터 입력되는 신호는 함께 논리합(ORing)되어 어떤 장치가 주의를 필요로 하는 경우 1로 세트되며, 어떠한 장치도 주의를 필요로 하지 않을 경우 0으로 세트된다. 하나 이상의 프로세서를 가지고 있는 시스템들에서는, 적절한 구현은 주의를 필요로 하고 상기 인터럽트를 처리하는 장치를 결정하는 일을 맡고 있는 단일 프로세서로 입력을 라우트(route)하는 것이다. 상기 제 3 신호는 도 11의 플로우 다이어그램에 상세히 도시되어 있는데, 여기서 인터럽트 신호는 하나의 주변 성능 모니터 (50)으로부터 프로세서 성능 모니터로 전송될 수 있다. 상기 제 3 신호 (Signal 3)는 이하에서 상세히 기술된다.
프로세서(10) 또는 프로그램 가능한 회로(802)로의 입력 신호는 신호가 카운트할 수 있는 이벤트인 임의의 신호/핀을 통하여 구현될 수 있다. 성능 모니터(50)은 신호의 발생이 하나라도 검출되는 즉시 인터럽트를 걸 수 있도록 프로그램될 수 있다.
도 9를 참조하면, 본 발명의 또 다른 실시예는 프로세서(10)과 주고 받는 신호가 마스크될 수 있는데, 마스크에 의해서 마스크 비트가 설정(assert)되어 있는 경우에만 신호가 사용된다. 도 11에 도시된 구현에 따르면 예를 들어, 주변 장치로부터 프로세서(10)으로 수신되는 인터럽트 신호가 처리되는지의 여부는 상황에 따라 달라진다. 예를 들어, 수신 프로세서(10)이 자신의 현재 카운팅 또는 인스트럭션 플로우를 방해하지 않도록 인터럽트를 취하기를 원하지 않을 수도 있다. 결과적으로, 마스크 비트들은 특정 프로시져들을 조정하고 정의하는데 사용될 수 있으므로 마스크 비트들은 선택된 장치들 내에서 발생하는 선택된 상황에만 의존하게 된다.
각각의 오프-프로세서(off-processor)는 자신의 성능 모니터 내의 카운팅을 제어하는 자신의 방법을 가질 수 있다. 또한, 오프-프로세서는 카운트하기 위한 이벤트들을 선택하는(도 7 참조) 레지스터 MMCRn과 같은 자신의 제어 레지스터들을 가질 수 있다. 파워-온 리셋(power-on reset) 조건은 모든 외부 장치들이 디스에이블된 조건을 선택하도록 하는데 사용될 수 있으며 소프트웨어는 카운팅을 개시하는데 사용될 수 있다.
상기에서 설명한 바와 같이, PowerPC 성능 모니터 지원을 위한 기본적인 구조(도 7 참조)는 다양한 개수의 제어 레지스터들(MMCR0, MMCR1, ... MMCRj)을 가지고 있다. 또한, PowerPC 성능 모니터 지원을 위한 기본적인 구조는 다양한 개수의 카운터들(PMC1, PMC2, PMC3, ... PMCn)을 가지고 있다. 상기 MMCRj는 제어 플래그(control flags) 및 선택 필드(selection fields)를 가진다. MMCRj 및 PMCn의 프로세서 구현은 특수 목적용 레지스터들(SPRs)을 사용하여 이루어진다.
상기에서 설명한 바와 같이, 브릿지 칩(805), 메모리 제어기(804) 및 캐쉬 제어기와 같은 비-프로세서(non-processor) 시스템 요소들을 사용하여 상기 동일한 방법이 지원될 수 있다. 그러나, 동일한 지원을 제공하기 위하여 SPRs를 사용하는 대신에 특정 어드레스 위치가 사용될 수 있다.
시스템 요소 (802) 내지 (805)는 동일한 기본적인 제어를 지원할 수 있으며, 프로세서(10)의 제어 레지스터들(MMCRj) 및 카운터들 (PMCn)을 위한 액세스 비트들 및 32-비트 길이의 워드 정의를 지원할 수 있다. 상기의 시스템 요소들은 자신들의 특정 구현을 위해 적용 가능한 비트들을 사용한다. 하나의 시스템(800) 또는 여러 시스템(800)들 내의 모든 성능 모니터들에 대해 상기 유사한 구조를 사용하면 사용자가 성능 모니터들을 프로그래밍하기 위한 모든 다양한 레지스터들을 프로그래밍하는 시간 및 프로그래밍의 양을 감소시킨다. 이는 다수의 시스템(800), 또는 적어도 다수개의 프로세서(10)을 가지는 대용량 병렬 처리 머신(massive parallel machine)에서 특히 유용하다.
결과적으로, 모든 성능 모니터 (50)을 프로그램하는 일은 유사한 비트 필드들 또는 유사하게 순서화된 어드레스들을 프로그래밍함으로써 달성될 수 있다.
예를 들어, MMCR0 FC 비트는 성능 계측 장비에 의해 지원되는 모든 시스템 요소들(802) 내지 (805)에 대하여 구현될 수 있다.
오프-프로세서 시스템 요소(802) 내지 (805)는 MMCR0 비트 5 및 비트 6을 지원하는데 이들 비트의 내용은 다음과 같다.
비트 5 : 성능 모니터 예외 인에이블(Performance Monitor Exception Enable: PMXE)
비트값=0 : 성능 모니터 예외 디스에이블됨.
비트값=1 : 성능 모니터 예외가 발생할 때(이 시점에서 MMCR0[PMXE]가 0으로 세트됨)까지는 성능 모 니터 예외가 인에이블됨.
예외(exception)는 통상적으로 신호 또는 핀을 통하여 시스템 요소들 (802) 내지(805)로부터 프로세서(10)으로 전송(signalled)된다.
소프트웨어는 성능 모니터 인터럽트(Performance Monitor interrupts)를 금지하기 위하여 상기 비트를 0으로 세트할 수 있다.
소프트웨어는 상기 비트를 1로 세트한 후, 인에이블된 조건 또는 이벤트가 발생하였는지를 결정하기 위하여 상기 비트를 폴링(poll)할 수 있다. 이러한 방법은 성능 모니터 인터럽트(Performance Monitor interrupts)를 제공하지 않는 구현에 있어서 특히 유용하다.
비트 6 : 인에이블된 조건 또는 이벤트에 따라 카운터들을 동결시킨다( Freeze Counters on Enabled Condition or Event(FCECE).
비트값=0 : PMC들이 증가됨(다른 MMCR 비트들에 의해 허용되 는 경우).
비트값=1 : MMCR0[TRIGGER]=0일 때 인에이블된 조건 또는 이 벤트가 발생할 때(이 시점에서, MMCR0[FC]가 1로 세 트됨)까지는 PMC들이 증가됨(다른 MMCR 비트들에 의해 허용되는 경우).
MMCR0[TRIGGER]=1일 때, 인에이블된 조건 또는 이벤트가 발생하면 상기 FCECE 비트는 0인 것으로 취급된다.
달리 설명하면, 시스템 요소(즉, 오프-프로세서 장치들 (802) 내지 (805))는 제어 레지스터들 및 카운터들이 T=0인 I/O 공간(즉, 캐쉬 금지된 I/O 공간 내의 어드레스 가능한 메모리 위치들) 내의 시스템의 특정 어드레스 위치에 접근할 수 있도록 지원한다. 몇몇 특정 어드레스들은 시스템 요소들의 상이한 형식들 및 버전들에 대하여 선택되어지는 것이 좋다. 또한, 레지스터들의 변위(displacement)가 변경될 수 있도록 하는 구성(configuration) 메카니즘을 개발하는 것이 좋다. 성능 모니터링(Performance Monitoring: PM) 애플리케이션 프로그래밍 인터페이스(Application Programming Interface: API)는 일반적인 요구(generic requests)들을 제어 레지스터들 및 카운터들의 패킹된 어레이(packed array)로 변환시키는데, 제시된 방법은 MMCRn 및 PMCn들의 위치가 연속된 메모리 공간 내에 순서화되어 있다. MMCRn 및 카운터들은 32-비트 길이의 워드들로 정의되어 있으므로 이러한 워드들을 32-비트 길이의 워드들로 이루어진 어드레스 공간 내로 패킹시키는 것은 합리적일 수 있다. 또한, 64-비트 길이의 워드들을 반영하는 변위(displacement)들을 위한 지원을 가지는 것도 합리적이다. 이러한 형식의 지원은 PM API의 테이블 지원 정의의 일부가 될 수 있다. 이러한 구현에서, 제어 레지스터들 및 카운터들에 대한 판독 및 기록은 요소에 특정된 테이블(component specific table)의 일부분인 어떤 어드레스로부터의 변위에 있을 수 있다.
상기에서 기술한 바와 같이, 본 명세서는 신호 분석에 관련된 정보를 실시간으로 제어하고 획득하며 시스템 성능을 보다 잘 분석하도록 하는 애드-온(add-on) 기능을 용이하게 실시하는 방법을 정의하고 있다. 임의의 개별 시스템에 부가될 수 있는 애드-온 기능을 구비하면 비용이 판매되는 모든 시스템들에 적용되지 않는다는 주요한 장점을 갖는다. 특히, 임의의 요소들의 외부 또는 버스 상에서 이용 가능한 신호들은 애드-온 기능에 의해 획득될 수 있으며 요소 자체 내에 반드시 구현되는 것은 아니다.
애드-온 기능의 형식은 시스템의 필요에 따라서 재단(tailored)될 수 있다. 저가 시스템에서는, 프로그램 가능한 회로 (802)를 사용하는 것과 같은 매우 간단한 프로그램 가능한 로직 장치(Programmable Logic Device: PLD) 또는 주문형 집적회로(Application Specific Integrated Circuit: ASIC)가 적합할 수 있다. 고가 시스템에서는, 풀 커스텀 칩(full custom chip)이 적합할 수 있다. 본 명세서의 나머지 부분에서는, 시스템 (800) 상에 부가될 수 있는 프로그램 가능한 로직을 허용하는 장치 (802)를 나타내기 위하여 PLD가 사용될 수 있다. 상기 PLD는 신호 분석에 관련된 정보를 실시간으로 제어하고 획득하는 것을 제공하며 시스템 성능을 분석하는데 사용될 수 있다.
상기 방법은 모니터링을 위하여 시스템에 따른 특정 요건(requirements)들에 대해 재단될 수 있는 PLD (802)를 설계하는 것이다. 상기 PLD (802)는 선택된 버스 신호들을 인식하여 카운트하도록 설계될 수 있다. 간단한 설계는 프로세서 (10)의 설계시에 PM (50)을 반영할 수 있다. 카운트하기 위한 신호들을 선택하는 것은 그러한 선택이 마치 상기에서 설명한 바와 같이 T=0 I/O 공간 내의 특정 어드레스 위치로부터 판독하고 그 위치에 기록하는 상기 개시된 관련 방법을 사용하는 또 다른 시스템 요소에 해당되는 것처럼 지원될 수 있다.
PLD(802) 자체는 프로세서의 성능 모니터 설비(50)와 유사한 방식으로 동작하도록 설계될 수 있다.
하나의 실시예에서, 본 발명은 카운팅을 제어하고 장치가 예를 들어, 자신의 카운터가 음의 수(negative) 또는 순환(wrapped)되었다는 소정의 주의를 필요로 함을 프로세서(10)에 알려주는데 사용될 수 있는 신호들(핀(pins)들)을 제공할 수 있다.
본 발명에서는 프로세서 부분과 시스템 요소(system component) 부분을 가지도록 제안된다. 프로세서 부분에서는, 다른 제어 어드레스 공간 MMCR2 내에 정의되는 제어 비트들을 두 개 더 가지고 있다. (운영 체제 액세스 MMCR0 및 MMCR1으로부터의 별도의 SPR 숫자들을 통하여 일어날 수 있지만, 실제 구현에서는 존재하는 MMCRn 중 하나에 있는 사용되지 않은 두 개의 비트들과 같은 동일한 물리적인 레지스터 공간이 사용될 수 있다). 두 개의 비트들을 추가하는 것 외에 3 개의 새로운 신호들(핀들)이 있다.
신호 지원(SIGNAL SUPPORT):
- 신호 1 : 프로세서(10)으로부터의 출력(도 10 참조)
본 신호는 카운팅이 시작할 때 (극성에 무관하게)설정(asserted)됨.
TRIGGER 비트가 세트되면, 본 신호는 트리거 조건이 발생할 때까지(PMC1이 음의 수(negative)이거나 또는 인에이블된 예외가 발생함) 설정되지 않음.
- 신호 2 : 프로세서 (10)으로의 입력(비-프로세서(non-processor) 시스템 요 소들(예를 들어, (802), (803), (804), (805))이 본 신호를 제어함 (도 12 참조).
요소들 중 어느 것이라도 프로세서 (10)에 그들이 카운팅을 하고 있음을 알려주기 위하여 본 신호를 1로 세트한다. 새로운 MMCR2 비트 들 중 하나는 본 신호가 1로 되는 때 모니터링을 시작하도록 한다. MMCR2(a)에 대해서는 이하를 참조할 것.
- 신호 3 : 프로세서 (10)으로의 입력(비-프로세서(non-processor) 시스템 요 소들(예를 들어, (802), (803), (804), (805))이 본 신호를 제어함 (도 11 참조).
요소들 중 어느 것이라도 프로세서 (10)에 그들이 PM 인터럽트 를 취하는 프로세스를 원하고 있음을 알려주기 위하여 본 신호 를 1로 세트할 수 있다. 프로세서 (10)은 MMCR2(b)가 세트되어 있으면(아래 참조) 본 신호를 검사하기만 한다.
상기 신호는 하나의 펄스(일련의 펄스가 아님)임을 유의하여야 한다. 주변 장치 (802) 내지 (805)들은 프로세서(10)에 그들이 PM 인터럽트를 취할 것을 요구한다는 것을 알린다. 이는 통상적으로 음의 수(negative)가 되는 카운터를 가지게 될 때 발생한다. L2/L3 캐쉬 제어기와 같은 인-라인(in-line) 장치는 브릿지 칩 (805)와 프로세서 (10) 사이의 전송 신호들 사이에서 매개자 역할을 한다. 이는 버스 속도가 대개 다르기 때문에 필요하다.
새로운 MMCR2 비트들(New MMCR2 bits) :
- 비트 a : 입력 신호 2가 발생할 때까지의 동결 카운터(Freeze Counters Until Input Signal 2: FCISIG)
비트 a 값=0 : (다른 MMCR 비트들에 의해 허용되는 경우) PMC가 증가됨.
비트 a 값=1 : 입력 신호(프로세서들에 대한 신호 2)가 1이 될 때까 지 PMC가 증가되지 않음.
신호 2가 1이 되면 :
- PMC는 (다른 MMCR 비트들에 의해 허용되는 경 우) 증가 동작을 재개한다.
- MMCR1[FCISIG]이 1로 세트된다.
- 비트 b : PM 조건이 모니터링 신호 3(PMCSIG3)을 검사한다.
본 비트는 신호 3이 1로 인에이블됨으로 인하여 신호 3이 1 조 건 인지를 제어한다.
비트 b 값=0 : 신호 3의 1 조건이 디스에이블됨.
비트 b 값=1 : 신호 3의 1 조건이 인에이블됨.
신호 3의 1 조건은 PM 예외를 발생시키는 원인이 되는 조건들의 리스트(list)에 추가된다.
비-프로세서(non-processor) 시스템 요소에서, PMXE는 상기 요소가 신호 3을 1로 세트하는지의 여부를 번역하는 것을 지원한다. 새로 정의된 MMCR2 비트들에 대해, 비트 a는 프로세서 (10)으로부터 출력되는 자신의 입력 신호를 찾기 위하여 해석(interpreted)되고 이는 다음과 같이 정의된다:
- 비트 a : 입력 신호 1이 발생할 때까지의 동결 카운터(Freeze Counters Until Input Signal 1: FCISIG)
비트 a 값=0 : (다른 MMCR 비트들에 의해 허용되는 경우) PMC가 증가됨.
비트 a 값=1 : 시스템 요소들에 대한 신호 1인 입력 신호가 1이 될 때까지 PMC가 증가되지 않음.
신호 1이 1로 되면:
- PMC는 (다른 MMCR 비트들에 의해 허용되는 경 우) 증가 동작을 재개한다.
- 비트 b : PM 조건이 모니터링 신호 3(PMCSIG3)을 검사한다.
본 비트는 신호 3이 1로 인에이블됨으로 인하여 신호 3이 1 조 건 인지를 제어한다.
비트 b 값=0 : 신호 3의 1 조건이 디스에이블됨.
비트 b 값=1 : 신호 3의 1 조건이 인에이블됨.
신호 3이 시스템 (800)의 요소들 모두에 의해 모니터될 수 있으며, 예외 조건이 처리될 때까지 모든 카운터들은 동결된다.
이러한 구조는 임의의 장치로 하여금 임의의 다른 장치로부터의 시작 카운팅 조건 또는 정지 카운팅 조건을 신호하도록 한다. 예를 들어, 인-라인(in-line) L2 제어기가 자신의 입력을 모든 장치들로부터 취할 수 있다. 이는 기본적으로 구조(topology)에 무관한 구조이다.
신호 1은 게이트 카운팅(gate counting)에 사용될 수 있다. 프로세서 및 시스템 요소들을 적절히 프로그래밍함으로써, 카운팅에 대한 폭넓은 제어를 가질 수 있다. 예를 들어, 설계자는 주 프로세서(primary processor)가 대기 프로세서(wait process)(MSR(PMM) 비트를 사용하는 특정 애플리케이션)를 실행하고 있을 때 선택된 장치들 상에서 카운팅이 발생하는 것을 금지시킬 수 있다. 이러한 동일한 형식의 게이팅(gating)은 실행이 특정 인스트럭션 어드레스에서 발생할 때만 카운트를 시작하는 것과 같은 다른 능력(capabilities)들과 함께 발생할 수 있다.
신호 2는 인터럽트를 간섭할 필요가 없이 다른 요소 상에서 하나의 요소가 카운팅을 개시시키는 것으로부터 카운팅을 하는데 사용될 수 있다.
신호 3은 특정 시스템 요소 상에서 발생하는 주어진 이벤트에 대한 성능 모니터링을 분리시키는데 사용될 수 있다. 예를 들어, I/O Bridge Astat Retries, 스누프 요구(snoop request)를 수신한 L2 제어기, 또는 비지(busy) 조건으로 인한 재시도(retry)를 발행한 메모리 제어기와 같은 특정 성능 이벤트들을 인터럽트하여 분리시키는 것이 바람직하다. 그러면, 인터럽트 핸들러(interrupt handler)가 이벤트에 관련된 더 많은 정보를 제공하거나 또는 이벤트가 장래에 발생하는 것을 금지시키기 위한 목적으로 이벤트에 대한 더 많은 정보를 수집한다.
이러한 방법은 하나의 프로세서로 하여금 다른 프로세서가 세마포어(semaphore)에 대한 액세스와 같은 특정 상태에 도달한 후에 카운팅을 시작하도록 한다. 이러한 형식의 트리거링은 모든 프로세서들로 하여금 모니터된 조건이 검출된 후에 모니터링을 시작하도록 하는데 사용된다.
본 발명 및 본 발명의 장점들이 상세히 기술되었지만, 특허 청구 범위에서 정의된 바와 같은 본 발명의 정신 및 범위를 이탈함이 없이 다양한 변경, 치환 및 개량이 가능함을 알 수 있을 것이다.
본 발명에 따르면, 시스템 성능 분석이 프로세서라는 경계선을 넘어서 전체 데이터 처리 시스템에까지 확장될 수 있다. 따라서, 데이터 처리 시스템의 설계자는 데이터 처리 시스템의 다양한 동작 특징들을 분석하기 위하여 장치들 내의 다양한 성능 모니터에 구현되는 다양한 분석들을 행할 수 있다.

Claims (24)

  1. 데이터 처리 시스템(data processing system)에 있어서,
    a) 제 1 성능 모니터(performance monitor)를 포함하는 제 1 프로세서;
    b) 제 2 성능 모니터를 포함하고, 제 1 프로세서에 결합된 제 1 장치(device); 및
    c) 제 1 및 제 2 성능 모니터 사이에서 통신하기 위한 회로―여기서 제 1 및 제 2 성능 모니터들은 프로세서 및 장치 내에서 선택된 신호를 수신하여 카운트하기 위해 각각 프로그램 가능함―를 포함하는 데이터 처리 시스템.
  2. 제 1항에 있어서, 제 1 및 제 2 성능 모니터들 각각은 소프트웨어 액세스 가능한 레지스터(software-accessible register) 내의 비트 필드들(bit fields)을 사용하여 프로그램될 수 있는 데이터 처리 시스템.
  3. 제 2항에 있어서, 제 1 및 제 2 성능 모니터들이 대응하는 레지스터 내의 유사한 비트 필드를 프로그램함으로써 유사한 기능을 수행하도록 프로그램될 수 있는 데이터 처리 시스템.
  4. 제 1항에 있어서, 제 1 성능 모니터가 제 2 성능 모니터의 트리거링 동작(triggering operation)을 작동시킬 수 있는 데이터 처리 시스템.
  5. 제 4항에 있어서, 제 2 성능 모니터가 동작 결과를 제 1 성능 모니터에 송신할 수 있는 데이터 처리 시스템.
  6. 제 1항에 있어서,
    a) 제 3 성능 모니터를 포함하고, 제 1 프로세서에 결합된 제 2 프로세서
    b) 제 4 성능 모니터를 포함하고, 제 2 프로세서에 결합된 제 2 장치 및
    c) 제 3 및 제 4 성능 모니터들 사이에서 통신하기 위한 회로를 추가적으로 포함하는 데이터 처리 시스템.
  7. 제 1항에 있어서, 제 1 및 제 2 성능 모니터에 결합된 제 3 성능 모니터를 포함하는 프로그램 가능한 회로를 추가적으로 포함하는 데이터 처리 시스템.
  8. 제 4항에 있어서, 제 2 성능 모니터 동작의 트리거링을 마스킹(masking)시키기 위한 회로를 추가적으로 포함하는 데이터 처리 시스템.
  9. 제 1항에 있어서, 제 2 성능 모니터가 인터럽트(interrupt)를 프로세서로 송신할 수 있는 데이터 처리 시스템.
  10. 제 9항에 있어서, 제 2 성능 모니터로부터의 인터럽트 수신을 마스킹하기 위한 회로를 추가적으로 포함하는 데이터 처리 시스템.
  11. 제 1항에 있어서, 제 2 성능 모니터가 제 1 성능 모니터의 동작을 트리거링시킬 수 있는 데이터 처리 시스템.
  12. 제 2항에 있어서, 제 1 및 제 2 성능 모니터들이 유사한 순서의 어드레스 데이터를 프로그램함으로써 유사한 기능을 수행하도록 프로그램될 수 있는 데이터 처리 시스템.
  13. 선택된 동작에 대한 성능 모니터링(performance monitoring)을 수행하기 위한 방법에 있어서,
    a) 제 1 성능 모니터(performance monitor)를 포함하는 제 1 프로세서 및
    b) 제 2 성능 모니터를 포함하며, 제 1 프로세서에 결합된 제 1 장치(device) ―여기서 제 1 및 제 2 성능 모니터들은 프로세서 및 장치 내에서 선택 된 신호를 수신하여 카운트하기 위해 각각 프로그램 가능함―를 포함하는 데이터 처리 시스템 내에서,
    ⅰ) 소프트웨어 액세스 가능한 레지스터를 사용하여 제 1 및 제 2 성 능 모니터를 프로그램하는 단계
    ⅱ) 제 1 및 제 2 성능 모니터를 사용하여 하나 이상의 카운팅 기능 을 수행하는 단계 및
    ⅲ) 제 1 및 제 2 성능 모니터들 간에 하나 이상의 카운팅 기능의 결 과를 통신하는 단계를 포함하는 성능 모니터링 수행 방법.
  14. 제 13항에 있어서, 상기 프로그램하는 단계가 제 1 및 제 2 성능 모니터의 대응하는 레지스터 내의 유사한 비트 필드를 프로그램하는 단계를 추가적으로 포함하는 성능 모니터링 수행 방법.
  15. 제 13항에 있어서, 상기 통신하는 단계가 제 1 성능 모니터에 의해 제 2 성능 모니터의 동작이 트리거링 되는 단계를 추가적으로 포함하는 성능 모니터링 수행 방법.
  16. 제 15항에 있어서, 상기 통신하는 단계가 제 2 성능 모니터에 의해 동작의 결과를 제 1 성능 모니터에 송신하는 단계를 추가적으로 포함하는 성능 모니터링 수행 방법.
  17. 데이터 처리 시스템(data processing system)에 있어서,
    a) 제 1 성능 모니터(performance monitor)를 포함하는 제 1 프로세서;
    b) 제 2 성능 모니터를 포함하며, 제 1 프로세서에 결합된 제 2 프로세서; 및
    c) 제 1 및 제 2 성능 모니터 사이에서 통신하기 위한 회로―여기서 제 1 및 제 2 성능 모니터들은 제 1 및 제 2 프로세서 내에서 선택된 신호를 수 신하여 카운팅하기 위해 각각 프로그램 가능함―를 포함하는 데이터 처리 시스템.
  18. 제 17항에 있어서, 제 1 및 제 2 성능 모니터들 각각은 소프트웨어 액세스 가능한 레지스터(software-accessible register) 내의 비트 필드(bit field)를 사용하여 프로그램될 수 있는 데이터 처리 시스템.
  19. 제 18항에 있어서, 제 1 및 제 2 성능 모니터들이 대응하는 레지스터 내의 유사한 비트 필드를 프로그램함으로써 유사한 기능을 수행하도록 프로그램될 수 있는 데이터 처리 시스템.
  20. 제 17항에 있어서, 제 1 성능 모니터가 제 2 성능 모니터의 트리거링 동작(triggering operation)을 작동시킬 수 있는 데이터 처리 시스템.
  21. 제 20항에 있어서, 제 2 성능 모니터가 동작 결과를 제 1 성능 모니터에 송신할 수 있는 데이터 처리 시스템.
  22. 제 17항에 있어서, 제 2 성능 모니터가 인터럽트(interrupt)를 프로세서로 송신할 수 있는 데이터 처리 시스템.
  23. 데이터 처리 시스템에 있어서,
    a) 제 1 성능 모니터를 포함하는 제 1 프로그램 가능한 장치;
    b) 제 1 프로그램 가능한 장치에 결합된 제 2 장치
    c) 제 1 프로그램 가능한 장치에 결합된 제 3 장치 및
    d) 제 1 성능 모니터가 제 2 및 제 3 장치들 사이의 통신을 모니터하도록 허 용하는 회로를 포함하는 데이터 처리 시스템.
  24. 제 23항에 있어서, 제 1 프로그램 가능한 장치는 프로세서가 아닌 데이터 처리 시스템.
KR1019970057474A 1997-03-13 1997-10-31 데이터처리시스템의성능모니터링방법및장치 KR100280732B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/816,626 1997-03-13
US08/816,626 US5970439A (en) 1997-03-13 1997-03-13 Performance monitoring in a data processing system

Publications (2)

Publication Number Publication Date
KR19980079448A true KR19980079448A (ko) 1998-11-25
KR100280732B1 KR100280732B1 (ko) 2001-02-01

Family

ID=25221177

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970057474A KR100280732B1 (ko) 1997-03-13 1997-10-31 데이터처리시스템의성능모니터링방법및장치

Country Status (4)

Country Link
US (1) US5970439A (ko)
JP (1) JP3113855B2 (ko)
KR (1) KR100280732B1 (ko)
TW (1) TW342480B (ko)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6338159B1 (en) * 1997-12-12 2002-01-08 International Business Machines Corporation System and method for providing trace information
US6233531B1 (en) 1997-12-19 2001-05-15 Advanced Micro Devices, Inc. Apparatus and method for monitoring the performance of a microprocessor
US6526370B1 (en) * 1999-02-04 2003-02-25 Advanced Micro Devices, Inc. Mechanism for accumulating data to determine average values of performance parameters
US6499116B1 (en) * 1999-03-31 2002-12-24 International Business Machines Corp. Performance of data stream touch events
US6629170B1 (en) * 1999-11-08 2003-09-30 International Business Machines Corporation Method and apparatus for a byte lane selectable performance monitor bus
US6438737B1 (en) 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US6715011B1 (en) 2000-05-31 2004-03-30 International Business Machines Corporation PCI/PCI-X bus bridge with performance monitor
US6842857B2 (en) * 2001-04-12 2005-01-11 International Business Machines Corporation Method and apparatus to concurrently boot multiple processors in a non-uniform-memory-access machine
US6970809B2 (en) * 2001-08-29 2005-11-29 International Business Machines Corporation Automated configuration of on-circuit facilities
US20030117971A1 (en) * 2001-12-21 2003-06-26 Celoxica Ltd. System, method, and article of manufacture for profiling an executable hardware model using calls to profiling functions
US7043718B1 (en) * 2002-02-15 2006-05-09 Lsi Logic Corporation System real-time analysis tool
US6804631B2 (en) * 2002-05-15 2004-10-12 Microsoft Corporation Event data acquisition
US7457864B2 (en) * 2002-11-27 2008-11-25 International Business Machines Corporation System and method for managing the performance of a computer system based on operational characteristics of the system components
AU2003283550A1 (en) 2003-01-13 2004-08-10 Arm Limited Data processing performance control
US20040168005A1 (en) * 2003-02-21 2004-08-26 Sun Microsystems, Inc. Methods for interrupting a program and for obtaining program execution acquisition
US7373557B1 (en) * 2003-04-04 2008-05-13 Unisys Corporation Performance monitor for data processing systems
US8365193B2 (en) 2003-08-14 2013-01-29 Oracle International Corporation Recoverable asynchronous message driven processing in a multi-node system
US7269830B2 (en) * 2003-09-16 2007-09-11 Sun Microsystems, Inc. Methods and hardware for safe memory allocation in arbitrary program environments
US7095416B1 (en) 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US7533371B1 (en) 2003-09-22 2009-05-12 Microsoft Corporation User interface for facilitating performance analysis for processing
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US7937691B2 (en) * 2003-09-30 2011-05-03 International Business Machines Corporation Method and apparatus for counting execution of specific instructions and accesses to specific data locations
US20050071516A1 (en) * 2003-09-30 2005-03-31 International Business Machines Corporation Method and apparatus to autonomically profile applications
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7415705B2 (en) * 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
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
US7392370B2 (en) * 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US7290255B2 (en) * 2004-01-14 2007-10-30 International Business Machines Corporation Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
US7299319B2 (en) * 2004-03-22 2007-11-20 International Business Machines Corporation Method and apparatus for providing hardware assistance for code coverage
US7421684B2 (en) * 2004-03-22 2008-09-02 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for data coverage
US8135915B2 (en) * 2004-03-22 2012-03-13 International Business Machines Corporation Method and apparatus for hardware assistance for prefetching a pointer to a data structure identified by a prefetch indicator
US7526616B2 (en) * 2004-03-22 2009-04-28 International Business Machines Corporation Method and apparatus for prefetching data from a data structure
US7480899B2 (en) * 2004-03-22 2009-01-20 International Business Machines Corporation Method and apparatus for autonomic test case feedback using hardware assistance for code coverage
JP4599902B2 (ja) * 2004-06-18 2010-12-15 株式会社日立製作所 ハードウェアモニタを用いた性能解析方法
US7552212B2 (en) * 2004-10-22 2009-06-23 International Business Machines Corporation Intelligent performance monitoring based on user transactions
ATE409909T1 (de) * 2005-01-28 2008-10-15 Ibm Zählverfahren für anweisungen zur protokollierung und wiedergabe einer deterministischen ereignisabfolge
US20080007563A1 (en) * 2006-07-10 2008-01-10 Microsoft Corporation Pixel history for a graphics application
JP4839164B2 (ja) * 2006-09-15 2011-12-21 株式会社日立製作所 ハードウェアモニタを用いた性能評価システム及び再構築可能な計算機システム
US8117478B2 (en) * 2006-12-29 2012-02-14 Intel Corporation Optimizing power usage by processor cores based on architectural events
WO2008111276A1 (ja) 2007-03-15 2008-09-18 Shiseido Company, Ltd. 繰り出し容器
US9027025B2 (en) * 2007-04-17 2015-05-05 Oracle International Corporation Real-time database exception monitoring tool using instance eviction data
US9128895B2 (en) 2009-02-19 2015-09-08 Oracle International Corporation Intelligent flood control management
US20100218171A1 (en) * 2009-02-26 2010-08-26 Computer Measurement Laboratory, Inc. Computer bus monitoring for the adaptive control of executing software processes
US9165086B2 (en) 2010-01-20 2015-10-20 Oracle International Corporation Hybrid binary XML storage model for efficient XML processing
US8458530B2 (en) 2010-09-21 2013-06-04 Oracle International Corporation Continuous system health indicator for managing computer system alerts
US9342432B2 (en) 2011-04-04 2016-05-17 International Business Machines Corporation Hardware performance-monitoring facility usage after context swaps
US8868886B2 (en) * 2011-04-04 2014-10-21 International Business Machines Corporation Task switch immunized performance monitoring
US20130055033A1 (en) 2011-08-22 2013-02-28 International Business Machines Corporation Hardware-assisted program trace collection with selectable call-signature capture
JP5962359B2 (ja) * 2012-09-10 2016-08-03 富士通株式会社 プロセッサおよびプロセッサの評価方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1491707A (en) * 1974-06-21 1977-11-16 Marconi Co Ltd Processor equipments
FR2345016A1 (fr) * 1976-03-17 1977-10-14 Lainey Gilbert Dispositifs de mesure du taux d'erreur sur les elements binaires d'une liaison numerique
US4905171A (en) * 1987-11-09 1990-02-27 International Business Machines Corporation Workstation controller performance monitor
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
US5485574A (en) * 1993-11-04 1996-01-16 Microsoft Corporation Operating system based performance monitoring of programs
US5845310A (en) * 1993-12-15 1998-12-01 Hewlett-Packard Co. System and methods for performing cache latency diagnostics in scalable parallel processing architectures including calculating CPU idle time and counting number of cache misses
US5796939A (en) * 1997-03-10 1998-08-18 Digital Equipment Corporation High frequency sampling of processor performance counters

Also Published As

Publication number Publication date
KR100280732B1 (ko) 2001-02-01
JPH10275099A (ja) 1998-10-13
TW342480B (en) 1998-10-11
JP3113855B2 (ja) 2000-12-04
US5970439A (en) 1999-10-19

Similar Documents

Publication Publication Date Title
KR100280732B1 (ko) 데이터처리시스템의성능모니터링방법및장치
US5835702A (en) Performance monitor
US5938760A (en) System and method for performance monitoring of instructions in a re-order buffer
US6189072B1 (en) Performance monitoring of cache misses and instructions completed for instruction parallelism analysis
US5691920A (en) Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5752062A (en) Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5797019A (en) Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US5751945A (en) Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5987598A (en) Method and system for tracking instruction progress within a data processing system
US6708296B1 (en) Method and system for selecting and distinguishing an event sequence using an effective address in a processing system
US8055473B2 (en) Performance monitor unit for sampling all performance events generated by a processor
US6067644A (en) System and method monitoring instruction progress within a processor
US5937437A (en) Method and apparatus for monitoring address translation performance
US8615619B2 (en) Qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US6446029B1 (en) Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
US5675729A (en) Method and apparatus for performing on-chip measurement on a component
US6574727B1 (en) Method and apparatus for instruction sampling for performance monitoring and debug
US7086035B1 (en) Method and system for counting non-speculative events in a speculative processor
US5949971A (en) Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US5881306A (en) Instruction fetch bandwidth analysis
US6539502B1 (en) Method and apparatus for identifying instructions for performance monitoring in a microprocessor
US6499116B1 (en) Performance of data stream touch events
US7617385B2 (en) Method and apparatus for measuring pipeline stalls in a microprocessor
US5748855A (en) Method and system for performance monitoring of misaligned memory accesses in a processing system
US5729726A (en) Method and system for performance monitoring efficiency of branch unit operation in a processing system

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: 20101102

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee