KR102400556B1 - Apparatus, system and method for performance and debug monitoring - Google Patents

Apparatus, system and method for performance and debug monitoring Download PDF

Info

Publication number
KR102400556B1
KR102400556B1 KR1020170168476A KR20170168476A KR102400556B1 KR 102400556 B1 KR102400556 B1 KR 102400556B1 KR 1020170168476 A KR1020170168476 A KR 1020170168476A KR 20170168476 A KR20170168476 A KR 20170168476A KR 102400556 B1 KR102400556 B1 KR 102400556B1
Authority
KR
South Korea
Prior art keywords
stage
input signals
pdmc
signals
counter
Prior art date
Application number
KR1020170168476A
Other languages
Korean (ko)
Other versions
KR20180067432A (en
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
Priority claimed from US15/464,334 external-priority patent/US10386410B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180067432A publication Critical patent/KR20180067432A/en
Application granted granted Critical
Publication of KR102400556B1 publication Critical patent/KR102400556B1/en

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31705Debugging aspects, e.g. using test circuits for debugging, using dedicated debugging test circuits
    • 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/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3041Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3031Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a motherboard or an expansion card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/27Built-in tests
    • 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/3452Performance evaluation by statistical analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • 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)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Debugging And Monitoring (AREA)

Abstract

일측면에 따른 장치는, 복수의 성능 및 디버그 모니터링 회로(performance and debug monitoring circuit: PDMC)들을 포함할 수 있다. 또한, 각각의 각각의 PDMC는 다른 PDMC들로부터의 신호들, 조합 로직 회로(combinatorial logic circuit)들로부터의 신호들 및 구성 값(configuration value)들을 포함하는 복수의 입력 신호들을 수신하는 입력 스테이지(input stage), 입력 신호들의 선택된 서브 세트에 대하여 하나 이상의 로직 연산을 수행하는 조합 스테이지(combinatorial stage), 및 조합 스테이지의 결과에 적어도 부분적으로 기초하여 증가하는 카운터(counter)를 포함할 수 있다.An apparatus according to an aspect may include a plurality of performance and debug monitoring circuits (PDMC). Further, each respective PDMC has an input stage that receives a plurality of input signals including signals from other PDMCs, signals from combinatorial logic circuits and configuration values. stage), a combinatorial stage that performs one or more logical operations on the selected subset of input signals, and a counter that increments based at least in part on the result of the combination stage.

Description

성능 및 디버그 모니터링을 위한 장치, 시스템 및 방법{Apparatus, system and method for performance and debug monitoring}Apparatus, system and method for performance and debug monitoring

본 개시의 기술적 사상은 성능 모니터링 및 디버그 디자인에 관련된다. 구체적으로, 본원 개시는 유연한 성능 카운터 및 시스템 디버그 모듈에 관한 것이다.The technical spirit of the present disclosure relates to performance monitoring and debug design. Specifically, this disclosure relates to a flexible performance counter and system debug module.

시각 처리 장치(Visual Processing Unit: VPU)라고도 불리는 그래픽 처리 장치(Graphics Processing Unit: GPU)는 디스플레이 디바이스에게 출력되도록 의도된 프레임 버퍼(frame buffer) 내의 이미지 생성을 가속화하도록 메모리를 신속하게 조작 및 변경 하도록 특별히 고안된 전자 회로이다. GPU는 임베디드 시스템, 모바일 폰, PC, 워크스테이션, 및 게임 콘솔 내에서 사용될 수 있다. 또한, GPU는 SoC(System-on-a-chip)과 같은 보다 큰 디바이스 내에 통합될 수 있다. 현대 GPU들은 컴퓨터 그래픽을 조작하고 이미 프로세싱에 효율적이며, 병렬적 구조를 가지기 때문에, 큰 데이터 블록의 처리가 병렬적으로 이루어지는 프로그램에 있어서, 범용 CPU들보다 효율적이다.The Graphics Processing Unit (GPU), also called the Visual Processing Unit (VPU), is designed to rapidly manipulate and alter memory to accelerate the creation of images within the frame buffer intended for output to a display device. It is a specially designed electronic circuit. GPUs can be used in embedded systems, mobile phones, PCs, workstations, and game consoles. Additionally, GPUs can be integrated into larger devices such as system-on-a-chip (SoC). Modern GPUs manipulate computer graphics and are already efficient in processing, and since they have a parallel structure, they are more efficient than general-purpose CPUs in programs in which large data blocks are processed in parallel.

컴퓨터 내에서 하드웨어 성능 카운터들, 또는 성능 모니터링 유닛(Performance Monitoring Unit: PMU)는 일련의 컴퓨터 시스템 내에 하드웨어 관련 동작(activity)의 카운트를 저장하기 위하여 현대 마이크로프로세서 내에 장착되는 특수 용도의 레지스터이다. 소프트웨어 프로파일러와 비교하면, 하드웨어 카운터는 CUP의 기능적 유닛, 캐시(cach) 및 메인 메모리와 관련된 자세한 성능 정보에 낮은 오버헤드(low-overhead)로 접근이 가능하도록 한다.In computers, hardware performance counters, or Performance Monitoring Units (PMUs), are special-purpose registers incorporated into modern microprocessors to store counts of hardware-related activities within a set of computer systems. Compared to the software profiler, the hardware counter enables low-overhead access to detailed performance information related to the CUP's functional unit, cache, and main memory.

테스트 용이 설계 또는 테스트 가능 설계(Design for Testability: DFT)는 테스트 가능 특징을 하드웨어 제품 설계에 부가하는 직접회로 설계 기술을 포함한다. 부가된 테스트 가능 특징은 설계된 하드웨어의 제품 검사의 실시 및 개발을 용이하게 한다. 제품 검사의 목적은 하드웨어 제품이 제품의 정상 동작에 부정적인 영향을 미치는 제조상의 결함을 갖지 않는다는 것을 검증하기 위한 것이다.Design for Test or Design for Testability (DFT) involves integrated circuit design techniques that add testable features to the design of hardware products. The added testable feature facilitates the implementation and development of product testing of the designed hardware. The purpose of product inspection is to verify that the hardware product does not have manufacturing defects that adversely affect the normal operation of the product.

해당 특징은, "go/no go" 방식의 제품 테스트에 유용할 뿐 아니라, 칩 설계를 디버깅할 수 있도록 한다. 이러한 점에서, 칩은 기준 모드(normal mode) 또는 기능 모드(functional mode)로 동작할 수 있다. 예를 들어, 컴퓨터 또는 모바일 폰 칩은 어셈블리 언어 명령어를 실행할 수 있다. 언제든, 칩은 테스트 모드로 재구성될 수 있다. 이 때, DFT 특징으로 인하여, 내부 상태의 전부 또는 일부가 버려지거나 소정의 바람직한 값으로 설정될 수 있다. DFT 특징의 또 다른 이점은 모든 메모리 소자의 초기 상태를 스캐닝하고, 시스템 디버?m을 수행하기 위해 기능 모드로 되돌아갈 수 있다는 점이다. 이는, 상대적으로 짧은 클락 사이클 내에 시스템의 상태를 알려진 상태로 만들 수 있다는 장점이 있다.This feature is useful for "go/no go" product testing, as well as debugging chip designs. In this regard, the chip may operate in a normal mode or a functional mode. For example, a computer or mobile phone chip may execute assembly language instructions. At any time, the chip can be reconfigured into test mode. At this time, due to the DFT characteristics, all or part of the internal state may be discarded or set to a predetermined desired value. Another benefit of the DFT feature is that it scans the initial state of all memory elements and can return to a functional mode to perform a system debug. This has the advantage that the state of the system can be brought to a known state within a relatively short clock cycle.

DFT 특징은 클락 제어 회로와 함께 디버깅 용이 설계 또는 디버깅 가능 설계(Design for Debuggability: DFD)라 불리는 로직 설계의 하부 원칙을 위해 이용될 수 있다.The DFT feature can be used with clock control circuitry for a logic design sub-principle called Design for Debuggability (DFD).

본 개시의 기술적 사상은 크기 및 전력 측면에서 효율적인 성능 카운터 및 시스템 디버그 모듈을 제공한다.The technical idea of the present disclosure provides a performance counter and system debug module that is efficient in terms of size and power.

상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일측면에 따른 장치는, 복수의 성능 및 디버그 모니터링 회로(performance and debug monitoring circuit: PDMC)들을 포함할 수 있다. 또한, 각각의 각각의 PDMC는 다른 PDMC들로부터의 신호들, 조합 로직 회로(combinatorial logic circuit)들로부터의 신호들 및 구성 값(configuration value)들을 포함하는 복수의 입력 신호들을 수신하는 입력 스테이지(input stage), 입력 신호들의 선택된 서브 세트에 대하여 하나 이상의 로직 연산을 수행하는 조합 스테이지(combinatorial stage), 및 조합 스테이지의 결과에 적어도 부분적으로 기초하여 증가하는 카운터(counter)를 포함할 수 있다.In order to achieve the above object, an apparatus according to an aspect of the inventive concept may include a plurality of performance and debug monitoring circuits (PDMC). Further, each respective PDMC has an input stage that receives a plurality of input signals including signals from other PDMCs, signals from combinatorial logic circuits and configuration values. stage), a combinatorial stage that performs one or more logical operations on the selected subset of input signals, and a counter that increments based at least in part on the result of the combination stage.

본 개시의 기술적 사상의 다른 일측면에 따른 시스템은, 복수의 조합 로직 회로들을 포함하고 디스플레이 장치로 출력하기 위한 이미지를 생성하기 위해 메모리 내의 데이터를 조작 및 변경하는 그래픽 처리 회로, 및 복수의 성능 및 디버그 모니터링 회로(performance and debug monitoring circuit: PCMD)들을 포함할 수 있다. 또한, 각각의 PDMC는 다른 PDMC들로부터의 신호들, 조합 로직 회로들로부터의 신호들 및 구성 값들을 포함하는 복수의 입력 신호들을 수신하는 입력 스테이지, 상기 입력 신호들의 선택된 서브 세트에 대하여 하나 이상의 로직 연산을 수행하는 조합 스테이지, 및 상기 조합 스테이지의 결과에 적어도 부분적으로 기초하여 증가하는 카운터를 포함할 수 있다.A system according to another aspect of the present disclosure includes a graphics processing circuit including a plurality of combinational logic circuits and for manipulating and changing data in a memory to generate an image for output to a display device, and a plurality of capabilities and may include performance and debug monitoring circuits (PCMDs). Each PDMC also includes an input stage that receives a plurality of input signals including signals from other PDMCs, signals from combinatorial logic circuits and configuration values, one or more logic for a selected subset of the input signals. a combination stage to perform an operation, and a counter that increments based at least in part on a result of the combining stage.

본 개시의 기술적 사상의 또 다른 일측면에 따른 방법은, 복수의 성능 및 디버그 모니터링 회로(performance and debug monitoring circuit: PDMC)에 의해, 다른 PDMC들로부터의 신호들, 조합 로직 회로들로부터의 신호들 및 구성 값들을 포함하는 복수의 입력 신호들을 수신하는 단계, 상기 입력 신호들의 선택된 서브 세트에 대하여 하나 이상의 로직 연산을 수행하는 단계, 및 상기 하나 이상의 로직 연산에 적어도 부분적으로 기초하여 카운터 값을 증가시키는 단계를 포함할 수 있다.A method according to another aspect of the present disclosure includes signals from other PDMCs, signals from combinatorial logic circuits, by a plurality of performance and debug monitoring circuits (PDMC). and receiving a plurality of input signals comprising configuration values, performing one or more logical operations on the selected subset of input signals, and incrementing a counter value based at least in part on the one or more logical operations. may include steps.

본 개시의 기술적 사상에 따른 성능 카운터 및 시스템 디버그 모듈 크기 및 전력 측면에서 효율성을 증대한다. 이에 따라, 한정된 용량에서 동일한 로직을 이용하여, 이벤트를 캡쳐하고, 프로세서 또는 시스템 내의 복잡한 문제의 디버깅을 지원하기 위한 다수의 프로그램 가능한 메커니즘이 제공될 수 있다.The efficiency in terms of size and power of a performance counter and system debug module according to the spirit of the present disclosure is increased. Accordingly, multiple programmable mechanisms can be provided for capturing events and supporting debugging of complex problems within a processor or system using the same logic in a limited capacity.

도 1은 일 실시 예에 따른 시스템의 블록도이다.
도 2a 및 도 2b는 일 실시 예에 따른 성능 및 디버그 모니터링 회로(PDMC: performance and debug monitoring circuit)의 블록도이다.
도 3은 일 실시 예에 따른 반도체 장치를 포함 하는 정보 처리 시스템의 개략적인 블록도이다.
1 is a block diagram of a system according to an embodiment.
2A and 2B are block diagrams of a performance and debug monitoring circuit (PDMC) according to an embodiment.
3 is a schematic block diagram of an information processing system including a semiconductor device according to an exemplary embodiment.

이하, 첨부된 도면을 참조하여 다양한 실시 예를 상세히 설명하도록 한다. 본원 개시는 다양한 다른 형태로 구현될 수 있으며, 본원에서 상술한 실시 예에 제한되지 않는다. 본원에 개시된 내용은 본원 개시를 엄격하고 완성되게 하며, 본원 개시의 권리 범위를 통상의 기술자에게 온전히 전달하기 위한 것이다. 도면에서, 계층 및 영역의 크기 및 상대적인 크기는 명확한 설명을 위해 과장될 수 있다.Hereinafter, various embodiments will be described in detail with reference to the accompanying drawings. The present disclosure may be embodied in various other forms, and is not limited to the embodiments described herein. The content disclosed herein is intended to be thorough and complete this disclosure, and to fully convey the scope of the present disclosure to those skilled in the art. In the drawings, sizes and relative sizes of layers and regions may be exaggerated for clarity.

본원에서, 제 1, 제 2, 제 3 등의 용어가 다양한 요소, 구성, 영역, 계층 및 / 또는 섹션을 설명하기 위해 사용될 수 있지만, 이들 요소, 구성, 영역, 계층 및 / 또는 섹션은 해당 용어의 제한을 받지 않는다. 이러한 용어는 하나의 요소, 구성, 영역, 계층 및/또는 섹션을 다른 요소, 구성, 영역, 계층 또는 섹션과 구별하는 데에만 사용된다. 따라서, 하기 상술되는 제 1 요소, 구성, 영역, 계층 또는 섹션은 본원 개시의 권리 범위에서 벗어나지 않고 제 2 요소, 구성 요소, 영역, 계층 또는 섹션으로 지칭 될 수 있다.Although the terms first, second, third, etc. may be used herein to describe various elements, components, regions, layers, and/or sections, these elements, components, regions, layers, and/or sections refer to those terms. are not limited by These terms are only used to distinguish one element, component, region, layer and/or section from another element, component, region, layer or section. Accordingly, a first element, component, region, layer or section detailed below may be referred to as a second element, component, region, layer or section without departing from the scope of the present disclosure.

다양한 실시 예들이 이상화된 예시적인 실시 예 및 중간 구조들의 개략도 인 단면도를 참조하여 설명된다. 예를 들어 제조 기술 및/또는 허용 오차 등으로 인하여, 도시된 형상으로부터의 변형이 있을 수 있다. 따라서, 예시적인 실시 예들은 본원에 도시 된 특정 형상의 영역들에 한정되어 해석되어서는 안되며, 예를 들어 제조 시 유발되는 형상의 변형을 포함한다. 예를 들어, 직사각형으로 도시 된 주입 된 영역은 전형적으로, 주입 된 영역에서부터 주입되지 않은 영역으로의 이진적 변화라기보다는, 둥근 형태 또는 곡선형 및 /또는 모서리에서의 주입 농도의 기울기(gradient)를 가질 것이다. 마찬가지로, 주입에 의해 형성된 매립 영역은 매립 영역과 주입이 일어나는 표면 사이의 영역에 약간의 주입을 초래할 수 있다. 따라서, 도면들에 도시 된 영역들은 본질적으로 개략적이며, 그 형상들은 디바이스의 영역의 실제 형상을 설명하기 위한 것이 아니며 본원 개시의 권리 범위를 제한하려는 것이 아니다.Various embodiments are described with reference to cross-sectional views that are schematic views of idealized exemplary embodiments and intermediate structures. Deviations from the shapes shown may occur due to, for example, manufacturing techniques and/or tolerances. Accordingly, the exemplary embodiments should not be construed as being limited to the regions of the specific shape shown herein, and include, for example, deformation of the shape induced during manufacturing. For example, an implanted region shown as a rectangle typically exhibits a gradient of implantation concentration at a rounded or curved and/or corner, rather than a binary change from an implanted region to a non-implanted region. will have Likewise, a buried region formed by implantation may result in some implantation in the region between the buried region and the surface where the implantation takes place. Accordingly, the regions shown in the drawings are schematic in nature, and the shapes are not intended to describe the actual shape of the region of the device and are not intended to limit the scope of the present disclosure.

달리 정의되지 않는 한, 기술 및 과학 용어를 포함하여 본원에서 사용 된 모든 용어 는 본원 개시가 속하는 분야의 통상의 기술자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전에서 정의 된 용어와 같은 용어는 관련 기술의 맥락에서 의미와 일치하는 의미를 갖는 것으로 해석 되어야 하며, 명시적으로 정의되지 않은 이상 이상적이거나 지나치게 형식적인 의미로 해석되어서는 안된다.Unless defined otherwise, all terms used herein, including technical and scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs. In addition, terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with their meaning in the context of the related art, and should not be construed in an ideal or overly formal meaning unless explicitly defined. .

이하, 첨부 된 도면을 참조하여 본원 개시의 실시 예를 상세히 설명한다.Hereinafter, embodiments of the present disclosure will be described in detail with reference to the accompanying drawings.

도 1은 일 실시 예에 따른 시스템의 블록도이다. 다양한 실시 예에 따른, 시스템(100)은 중앙 프로세서(Central Processor) 또는 그래픽 프로세서(Graphic Processor)와 같은 프로세서, 또는 보다 일반적으로는 시스템 온 칩(system-on-a-chip: SoC)을 포함 할 수 있다. 도시 된 실시 예에서, 시스템(100)은 그래픽 처리 장치(Graphic Processor Unit: GPU)로 도시된다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.1 is a block diagram of a system according to an embodiment. According to various embodiments, the system 100 may include a processor such as a central processor or a graphic processor, or more generally, a system-on-a-chip (SoC). can In the illustrated embodiment, system 100 is shown as a Graphics Processor Unit (GPU). It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

다양한 실시 예에 따른, 시스템(100)은 메모리(104), 비디오 디코더(102) 및 다수의 다른 기능적 유닛 블록(Functional Unit Bloc: FUB)들을 포함 할 수 있다. 도시된 실시 예에서, 기능적 유닛 블록(FUB)들은 비디오 디코더(102), 세이더 회로(shader circuit)(105), 래스터라이저 회로(rasterizer circuit)(106), 출력 혼합 회로(Output Blending Circuit)(107) 및 작업 분배기(Work Distributer)(108)를 포함 할 수 있다. 기능적 유닛 블록(FUB)들 각각은 다수의 조합 로직 블록(Combinatorial Logic Block: CLB)(120)들이거나 다수의 조합 로직 블록(120)들을 포함할 수 있다. 조합 로직 블록(120)은 특정 태스크(task) 또는 보다 큰 태스크의 일부를 수행하도록 구성된 부울 로직(Boolean Logic) 및 메모리 레지스터(Memory Register), 예를 들어, 래치(latch), 플립-플롭(flip-flops)의 다양한 조합을 포함 할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to various embodiments, the system 100 may include a memory 104 , a video decoder 102 , and a number of other functional unit blocks (FUBs). In the illustrated embodiment, functional unit blocks (FUBs) include a video decoder 102 , a shader circuit 105 , a rasterizer circuit 106 , and an Output Blending Circuit 107 . ) and may include a Work Distributor (108). Each of the functional unit blocks (FUB) may include a plurality of combinational logic blocks (CLBs) 120 or a plurality of combinational logic blocks 120 . Combination logic block 120 is configured to perform a specific task (task) or part of a larger task (Boolean Logic) and memory registers (Memory Register), for example, a latch (latch), flip-flop (flip) -flops) in various combinations. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

도시 된 실시 예에서, 시스템(100)은 시스템(100)의 정상 동작 중에 조합 로직 블록(120) 또는 기능적 유닛 블록(FUB)들과 접속하고 조합 로직 블록(120) 또는 기능적 유닛 블록(FUB)들을 관리하도록 구성된 인터커넥트 버스(interconnect bus)(184)를 포함 할 수 있다. 도시 된 실시 예에서, 인터커넥트 버스(184)는 클럭 신호에 의해 동기화되고 제어될 수 있다. 해당 클럭 신호는 일반적으로 시스템(100)의 코어 기능적 유닛 블록(FUB)들을 제어하기 때문에 코어 클럭이라고 할 수 있다. 일 실시 예에 따른, 인터커넥트 버스(184)는 ARM(Advance RISC Machine) 프로세서에서 사용될 수 있는 AHB(Advance High-Performance Bus)와 인터커넥트 버스 인터페이스(114)를 통해 통신 할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.In the illustrated embodiment, the system 100 is connected to the combination logic block 120 or functional unit blocks (FUB) during the normal operation of the system 100 and the combination logic block 120 or the functional unit blocks (FUB) and an interconnect bus 184 configured to manage. In the illustrated embodiment, interconnect bus 184 may be synchronized and controlled by a clock signal. The corresponding clock signal may be referred to as a core clock because it generally controls the core functional unit blocks (FUBs) of the system 100 . According to an embodiment, the interconnect bus 184 may communicate with an Advanced High-Performance Bus (AHB) that may be used in an ARM (Advance RISC Machine) processor through the interconnect bus interface 114 . It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

현대 GPU는 다수의 내부 서브-유닛, 예를 들어, 세이더 회로(105), 래스터라이저 회로(106)를 포함하는 고도의 병렬적 기계인 경향이 있다. 그래픽 프로세서는 일반적으로 응용 프로그램 작성자의 상상력만으로 관리되는 사용 패턴의 무한한 조합에 내에서 수 많은 병렬적 작업을 수행한다. 따라서, 설계자는 기계를 최적화 하기 위해 설계상의 절충점을 정확히 미리 아는 것은 매우 어렵다.Modern GPUs tend to be highly parallel machines comprising a number of internal sub-units, eg, shader circuitry 105 , rasterizer circuitry 106 . Graphics processors perform numerous parallel tasks within an infinite combination of usage patterns, typically governed only by the imagination of the application writer. Therefore, it is very difficult for the designer to know exactly in advance the trade-offs in the design to optimize the machine.

일 실시 예에 따른, 본원 개시는 성능 모니터 용량 내에서, 시스템 설계자가 GPU 또는 보다 일반적으로 프로세서의 시스템 성능을 향상시키기 위해 사용할 수 있는 다양한 이벤트 데이터를 캡쳐 함에 있어서, 공간(area) 및 전력(power) 측면에서 매우 효율적인 메커니즘을 제공 할 수 있다. 본원 개시에 따른 디버그 용량에서, 동일한 로직을 이용하여, 이벤트를 캡처하고 프로세서 또는 시스템(100) 내의 복잡한 문제의 디버깅을 지원하기 위한 다수의 프로그램 가능한 메커니즘이 제공될 수 있다.According to an embodiment, the present disclosure provides space and power in capturing various event data that a system designer can use to improve system performance of a GPU or more generally a processor, within the capacity of a performance monitor. ) can provide a very efficient mechanism in terms of In the debug capabilities according to the present disclosure, multiple programmable mechanisms may be provided for capturing events and supporting debugging of complex problems within the processor or system 100 using the same logic.

일 실시 예에 따른, 시스템(100)은 복수의 성능 및 디버그 모니터링 회로(Performance and Debug Monitoring Circuit: PDMC)(126)들을 포함 할 수 있다. PDMC(126)들 각각은 관련된 로컬 조합 로직 블록(120) 내에서 발생하는 이벤트를 카운팅 하거나 기록하거나, 이러한 이벤트를 이용하여 연쇄적으로 보다 복잡한 프로그램 가능 이벤트를 생성하도록 할 수 있다. 즉, PDMC(126)들 각각은 관련된 로컬 조합 로직 블록(120) 내에서 발생하는 이벤트를 캐스케이딩(cascading) 하여 보다 복잡한 프로그램 가능 이벤트를 생성하도록 트리거(trigger)할 수 있다. PDMC(126)들 각각은 전체 시스템(100) 내의 다양한 주요 유닛, 예를 들어, 래스터라이저 회로(106)에 적절하게 인스턴스화된 작은 하드웨어 서브-유닛을 포함 할 수 있고, 성능 카운터 및 디버그 정보와 관련된 복잡한 트리거를 제공 할 수 있다. 다양한 실시 예에 따른, 일부 회로, 기능적 유닛 블록(FUB)들 또는 조합 로직 블록(120)들은 하나 이상의 PDMC(126)를 포함 할 수 있다.According to one embodiment, the system 100 may include a plurality of Performance and Debug Monitoring Circuits (PDMC) 126 . Each of the PDMCs 126 may count or record an event occurring within the associated local combinational logic block 120, or use such an event to generate more complex programmable events in a chain. That is, each of the PDMCs 126 may trigger cascading events that occur within the associated local combinational logic block 120 to generate more complex programmable events. Each of the PDMCs 126 may include various major units within the overall system 100, eg, small hardware sub-units appropriately instantiated in the rasterizer circuitry 106, associated with performance counters and debug information. Complex triggers can be provided. According to various embodiments, some circuits, functional unit blocks (FUBs), or combination logic blocks 120 may include one or more PDMCs 126 .

도시 된 실시 예에서, PDMC(126)들은 PDMC 버스 또는 PDMC 네트워크(186)를 통해 상호간 통신하도록 구성 될 수 있다. PDMC 네트워크(186)는 하나의 PDMC(126)에서 모니터링된 이벤트가 다른 PDMC(126)에서 트리거로서 작용하도록 할 수 있다. 특정 PDMC(126) 자체의 이벤트는 해당 PDMC(126)의 트리거로서 되먹임될 수 있다. 다양한 실시 예에 따른, PDMC 네트워크(186)는 크로스바 스위치(cross-bar switch) 또는 인터커넥트 매트릭스(interconnect matrix)를 포함 할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.In the illustrated embodiment, the PDMCs 126 may be configured to communicate with each other over a PDMC bus or PDMC network 186 . The PDMC network 186 may cause an event monitored in one PDMC 126 to act as a trigger in another PDMC 126 . An event of a specific PDMC 126 itself may be fed back as a trigger of the corresponding PDMC 126 . According to various embodiments, the PDMC network 186 may include a cross-bar switch or an interconnect matrix. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

다양한 실시 예에 따른, 각각의 PDMC(126) 카운터는 많은 로직 분석기(logic analyzer)와 매우 유사한 방식으로 증가하도록 프로그래밍 될 수 있다. 각각의 PDMC(126)는 입력 신호의 조합, 입력 신호 값의 비교에 기초하여 증가할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to various embodiments, each PDMC 126 counter can be programmed to increment in a manner very similar to many logic analyzers. Each PDMC 126 may increase based on a combination of input signals and a comparison of input signal values. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

다양한 실시 예는, 다음과 같이 활용될 수 있다. 그러나 이에 제한되지 아니한다.Various embodiments may be utilized as follows. However, it is not limited thereto.

ㄱ) 입력 신호가 하이(high) 일 때 PDMC 카운터 증가: 이 때, PDMC(126)는 특정한 기능적 유닛 블록(FUB)에 얼마나 많은 그래픽 프리미티브(graphical privitive)가 기록되는지를 카운팅하기 위해 이용될 수 있다.a) increase the PDMC counter when the input signal is high: At this time, the PDMC 126 can be used to count how many graphic primitives are written to a specific functional unit block (FUB). .

ㄴ) 멀티-비트 입력 신호가 특정 값과 동일하고 싱글-비트 입력 신호가 인에이블(enable)된 경우, 멀티-비트 입력 신호들 중 하나에 의해 지정된 값만큼 PDMC 카운터 증가: 이 때, PDMC(126)는, 예를 들어, 컬링(culling) 또는 클리핑(clipping)의 결과로서, 시스템(100)에 발생된 특정 커맨드로 인해 얼마나 많은 프리미티브가 드롭되었는지를 캡처하기 위해 이용될 수 있다.b) When the multi-bit input signal is equal to a certain value and the single-bit input signal is enabled, the PDMC counter is incremented by the value specified by one of the multi-bit input signals: At this time, the PDMC 126 ) may be used to capture how many primitives were dropped due to a particular command issued to the system 100 , for example, as a result of culling or clipping.

ㄷ) 멀티 비트의 입력 신호가 구성 값보다 크거나 같고 해당 멀티 비트의 입력 신호가 다른 구성 값보다 작거나 같으며, 싱글 비트 입력 신호가 하이 일 때 PDMC 카운터를 증가: 이 때, PDMC(126)는 제 1 명령어가 "완료"된 때부터 제 2 명령어가 "완료"될 때까지 얼마나 많은 사이클이 경과하였는지 카운트하기 위해 이용 될 수 있다.c) When the multi-bit input signal is greater than or equal to the configuration value and the corresponding multi-bit input signal is less than or equal to the other configuration values, the PDMC counter is incremented when the single-bit input signal is high: At this time, the PDMC (126) can be used to count how many cycles have elapsed from when the first instruction is "completed" until the second instruction is "completed".

상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

또한, 다양한 실시 예에 따른, 특정 조합 로직 블록(120)에서 PDMC(126)의 특정 인스턴스와 관련된 입력 신호의 선택은 어떤 이벤트가 필요하거나 또는 관련되었는지에 기초하여 시스템(100) 설계자, 디버그 엔지니어 또는 이들 모두에 의해 정의 될 수 있다. 전술 한 바와 같이, 각각의 PDMC(126)는 하나 이상의 조합 로직 블록과 관련 될 수 있고, 각각의 조합 로직 블록의 내부 동작을 카운팅하거나 모니터링하도록 프로그래밍 될 수 있다.Additionally, the selection of an input signal associated with a particular instance of the PDMC 126 in a particular combinatorial logic block 120, in accordance with various embodiments, is based on which event is required or relevant to the system 100 designer, debug engineer or They can all be defined by As noted above, each PDMC 126 may be associated with one or more combinatorial logic blocks and may be programmed to count or monitor the internal operation of each combinatorial logic block.

도 2a는 일 실시 예에 따른 성능 및 디버그 모니터링 회로(PDMC)(200)의 블록도이다. 다양한 실시 예에 따른, PDMC(200)는 상대적으로 적은 레지스터와 로직 회로를 이용하여, 데이터 수집(data capturing)의 측면에서, 고도의 유연성(flexibility) 및 구성 능력(configurability)을 제공 할 수 있다. 전술한 바와 같이, 이를 통해, 시스템 내의 PDMC(200)의 인스턴스가 대량으로 생성될 수 있다.2A is a block diagram of a performance and debug monitoring circuit (PDMC) 200 according to one embodiment. According to various embodiments, the PDMC 200 may provide a high degree of flexibility and configurability in terms of data capturing by using relatively few registers and logic circuits. As described above, through this, instances of the PDMC 200 in the system can be created in large quantities.

일 실시 예에 따른, PDMC(200)는 64 개의 싱글 비트 입력 신호들(202) 및 최대 8 개의 멀티 비트 입력 신호들(204), 멀티 비트 입력 신호들(204), 및 멀티 비트 입력 신호들(208)을 포함할 수 있다. 도시 된 실시 예에서, 멀티 비트 입력 신호들(204), 멀티 비트 입력 신호들(204), 및 멀티 비트 입력 신호들(208)은 최대 32 비트 폭을 가질 수 있다. 마찬가지로, 멀티 비트 출력 신호(256)는 32 비트의 신호를 포함 할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the PDMC 200 includes 64 single-bit input signals 202 and up to 8 multi-bit input signals 204, multi-bit input signals 204, and multi-bit input signals ( 208) may be included. In the illustrated embodiment, the multi-bit input signals 204 , the multi-bit input signals 204 , and the multi-bit input signals 208 may have a maximum width of 32 bits. Likewise, the multi-bit output signal 256 may include a 32-bit signal. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

일 실시 예에 따른, PDMC(200)는 조합 로직 회로 또는 조합 로직 블록들로부터 복 수 개, 예를 들어, 64개의 싱글 비트의 입력 신호들(202)을 수신할 수 있다. 복 수 개의 싱글 비트의 입력 신호들은 부울 로직 회로로의 조합 로직 블록 내부 입력 값 또는 플래그(flag), 또는 부울 로직 회로로부터의 조합 로직 블록 내부 출력 값 또는 플래그를 포함할 수 있다.According to an embodiment, the PDMC 200 may receive a plurality of, for example, 64 single-bit input signals 202 from a combinational logic circuit or combinational logic blocks. The plurality of single-bit input signals may include a combinational logic block internal input value or flag to the boolean logic circuit, or a combinational logic block internal output value or flag from the boolean logic circuit.

일 실시 예에 따른, PDMC(200)는 조합 로직 회로 또는 블록으로부터 복 수개의 멀티 비트 입력 신호(204), 예를 들어, 8 개의 32 비트 신호들을 수신할 수 있다. 이 때, 다중 멀티 비트의 입력 신호들(204)은 조합 로직 블록들에 의해 사용되는 레지스터들 또는 버스들을 포함 할 수 있다. 예를 들어, 하나의 멀티 비트 입력 신호(204)는 픽셀의 컬러에 대한 정보를 저장하는 레지스터의 값을 나타낼 수 있다. 다른 멀티 비트 입력 신호(204)는 특정 조합 로직 블록에 할당 된 명령어를 나타낼 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the PDMC 200 may receive a plurality of multi-bit input signals 204 from a combinational logic circuit or block, for example, 8 32-bit signals. In this case, the multi-bit input signals 204 may include registers or buses used by combinational logic blocks. For example, one multi-bit input signal 204 may represent a value of a register that stores information about the color of a pixel. Another multi-bit input signal 204 may represent an instruction assigned to a particular combinational logic block. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

일 실시 예에 따른, PDMC(200)는 다른 PDMC(200)들로부터 복 수개의 멀티 비트의 입력 신호들(206), 예를 들어, 8 개의 32 비트 신호들을 수신할 수 있다. 이 때, 멀티 비트 입력 신호들(206)은 해당 PDMC(200) 또는 다른 PDMC(200)들의 카운터의 출력 신호(256)를 포함할 수 있다. 일 실시 예에 따른, PDMC(200)들은 캐스케이드 되거나, 또는 일반적으로 상호간 영향을 미칠 수 있다. 예를 들어, 제 1 PDMC(200)의 카운터의 카운트는 제 2 PDMC(200)에 대한 트리거(trigger) 일 수 있다. 일 실시 예에 따른, PDMC(200)로부터의 카운터의 출력 신호(256)는 입력 신호들(206) 중 하나를 통해 해당 PDMC(200) 자체에게 되먹임 될 수 있다. 따라서, PDMC(200)의 출력 신호(256)는 장래의 이벤트들에 대한 가능한 복수의 입력들 중 하나로서, 해당 PDMC(200) 자체에 대한 트리거로서 사용될 수 있다.According to an embodiment, the PDMC 200 may receive a plurality of multi-bit input signals 206 from other PDMCs 200 , for example, 8 32-bit signals. In this case, the multi-bit input signals 206 may include an output signal 256 of a counter of the corresponding PDMC 200 or other PDMCs 200 . According to an embodiment, the PDMCs 200 may be cascaded or may generally influence each other. For example, the count of the counter of the first PDMC 200 may be a trigger for the second PDMC 200 . According to an embodiment, the output signal 256 of the counter from the PDMC 200 may be fed back to the corresponding PDMC 200 itself through one of the input signals 206 . Thus, the output signal 256 of the PDMC 200 can be used as one of a plurality of possible inputs for future events, as a trigger for that PDMC 200 itself.

일 실시 예에 따른, PDMC(200)는 구성 레지스터로부터 복 수개의 멀티 비트 입력 신호(208), 예를 들어, 8 개의 32 비트 신호들을 수신할 수 있다. 멀티 비트의 입력 신호(208)는 PDMC(200)에 대한 트리거에 따라 동적으로 설정된 값을 포함할 수 있다. 예를 들어, 디버그 엔지니어가 얼마나 자주 조합 로직 블록 레지스터가 문턱 값(threshold value)를 초과하는지 알고 싶은 경우, 디버그 엔지니어는 구성 레지스터 입력 신호들(208) 중 하나에 문턱 값을 저장하고, 구성 레지스터 입력 신호(208)의 값에 대하여 조합 로직 블록 레지스터, 즉, 도시된 입력 신호 (204)의 값을 비교하도록 PDMC(200)를 프로그래밍 할 수 있다. 두 값을 비교하여, 조합 로직 블록 레지스터가 문턱 값보다 높다는 비교 기준을 만족했을 때, PDMC 카운터(232)는 증가할 수 있다. 다양한 실시 예에 따른, 각각의 PDMC(200)는 입력 신호(208)의 값을 저장하는 8개의 구성 레지스터를 포함할 수 있다.According to an embodiment, the PDMC 200 may receive a plurality of multi-bit input signals 208 from a configuration register, for example, eight 32-bit signals. The multi-bit input signal 208 may include a value dynamically set according to a trigger for the PDMC 200 . For example, if the debug engineer wants to know how often a combinational logic block register exceeds a threshold value, the debug engineer stores the threshold value in one of the configuration register input signals 208, the configuration register input The PDMC 200 can be programmed to compare the value of the signal 208 to the value of the combinational logic block register, i.e., the input signal 204 shown. By comparing the two values, the PDMC counter 232 may be incremented when the combinational logic block register satisfies the comparison criterion that is higher than the threshold value. According to various embodiments, each PDMC 200 may include eight configuration registers that store the value of the input signal 208 .

또한, 각각의 PDMC(200)는 구성 또는 프로그래밍 설정을 저장하는 복수의 구성 설정 레지스터를 포함할 수 있다. 구성 설정 레지스터의 개수 또는 폭(width)d은 입력 신호들(202, 204, 206, 208)의 개수 또는 폭(width), 및 비교 회로(comparator)(222a) 및 부울 로직 회로(224)를 통해 PDMC(200)에 의해 지원되는 연산들, 예를 들어, AND 부울 연산 AND, 비교 연산 less than에 기초하여 변경될 수 있다. 다양한 실시 예에 따른 구성 설정 레지스터는, 도 1에 도시된 인터커넥트 버스, 스켄 체인(scan chain), 디버그 포트(debug port) 또는 다른 엑세스(access) 기술을 통하여 설정될 수 있다.Additionally, each PDMC 200 may include a plurality of configuration settings registers that store configuration or programming settings. The number or width d of the configuration registers is determined via the number or width of the input signals 202 , 204 , 206 , 208 , and a comparator 222a and a boolean logic circuit 224 . It may be changed based on operations supported by the PDMC 200, for example, AND Boolean operation AND, comparison operation less than. The configuration setting register according to various embodiments may be set through the interconnect bus, scan chain, debug port, or other access technology shown in FIG. 1 .

일 실시 예에 따른, 도시 된 실시 예에서, 38 개의 구성 비트 또는 구성 레지스터들이 PDMC(200)에 포함될 수 있다. 구성 비트 또는 구성 레지스터들은 6 비트 op_c [5:0]; 4 비트 op_a0 [3:0], op_a1 [3:0], op_b0 [3:0] 및 op_b1 [3:0]; 3 비트 op_a3 [2:0], op_b3 [2:0], op_d [2:0] 및 op_e [2:0]; 및 4 비트의 inc_sel [3:0] 값을 포함할 수 있다. 또한, 구현 방식에 따라 clr[0] 신호가 저장 될 수도 있고 저장되지 않을 수도 있습니다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.In the illustrated embodiment, according to one embodiment, 38 configuration bits or configuration registers may be included in the PDMC 200 . The configuration bits or configuration registers are: 6 bits op_c [5:0]; 4 bits op_a0[3:0], op_a1[3:0], op_b0[3:0] and op_b1[3:0]; 3 bits op_a3[2:0], op_b3[2:0], op_d[2:0] and op_e[2:0]; and a 4-bit inc_sel [3:0] value. Also, depending on the implementation, the clr[0] signal may or may not be stored. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

일 실시 예에 따른, 멀티 비트 입력 신호들(204, 206, 208)은 PDMC(200)에 입력될 수 있다. 복수의 멀티 비트 입력 신호들(204, 206, 208), 예를 들어, 24 개의 멀티 비트 입력 신호들은 4 개의 트리거 신호(A0, B0, A1, B1)로 변환될 수 있다. 4 개의 트리거 신호(A0, B0, A1, B1)로 변환은 선택 회로(selection circuit) 또는 멀티플렉서(MUX)(214, 215, 216, 217)에 의해 수행될 수 있다. 멀티플렉서 (214, 215, 216, 217)는 구성 신호(op_a0, op_b0, op_a1, op_b0)에 기초하여, 어느 입력 신호(204, 206, 208)를 트리거 신호로 통과시킬지 각각 선택할 수 있다.According to an embodiment, the multi-bit input signals 204 , 206 , and 208 may be input to the PDMC 200 . The plurality of multi-bit input signals 204 , 206 , and 208 , for example, 24 multi-bit input signals may be converted into four trigger signals A0 , B0 , A1 , and B1 . The conversion into the four trigger signals A0, B0, A1, and B1 may be performed by a selection circuit or a multiplexer (MUX) 214 , 215 , 216 , 217 . Multiplexers 214, 215, 216, 217 may select which input signals 204, 206, 208 to pass as trigger signals, respectively, based on configuration signals op_a0, op_b0, op_a1, op_b0.

일 실시 예에 따른, 각각의 멀티플렉서(214, 215, 216 및 217)는 모두 3 개의 멀티 비트 입력 신호 그룹, 예를 들어, 조합 로직 블록 입력(204), PDMC 카운트 입력(206) 또는 구성 입력(208)중 2 개 그룹 각각으로부터 8개의 멀티 비트 입력 신호를 수신할 수 있다. 따라서, 각각의 멀티플렉서(214, 215, 216, 217)는 16 개의 멀티 비트 입력 신호들을 수신하고 그 중 하나의 멀티 비트 입력 신호를 선택하여 PDMC 프로세싱의 다음 단계로 진행할 수 있다. 이와 같이, PDMC 프로세싱의 다음 단계는, 4 개의 멀티 비트 입력 신호, 예를 들어, 이 때 선택된 신호 A0, B0, A1, 및 B1에 대해 수행된다.According to one embodiment, each multiplexer 214 , 215 , 216 and 217 all have three multi-bit input signal groups, eg, a combinational logic block input 204 , a PDMC count input 206 or a configuration input ( 208), it is possible to receive 8 multi-bit input signals from each of the two groups. Accordingly, each multiplexer 214 , 215 , 216 , 217 may receive 16 multi-bit input signals and select one multi-bit input signal among them to proceed to the next stage of PDMC processing. As such, the next stage of PDMC processing is performed on four multi-bit input signals, eg, the signals A0, B0, A1, and B1 selected at this time.

각각의 입력 신호 그룹(204, 206, 및 208)은 멀티플렉서(214, 215, 216 및 217) 중 2 개의 멀티플렉서로 제공되도록 배열될 수 있다. 필요하다면, 동일한 입력 신호 그룹, 예를 들어, 조합 로직 블록 입력(204), PDMC 카운터 입력(206) 또는 구성 입력(208)으로부터 두 개의 서로 다른 신호들이 이용될 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.Each input signal group 204 , 206 , and 208 may be arranged to be provided to two of the multiplexers 214 , 215 , 216 and 217 . If desired, two different signals may be used from the same input signal group, eg, combinatorial logic block input 204 , PDMC counter input 206 or configuration input 208 . It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

멀티 비트 신호들(204, 206, 208)에 대한 선택 스테이지에서 프로세스가 완료되면, 트리거 입력들이 선택되고, 선택된 트리거 입력들(A0, B0, A1, B1)은 PDMC 프로세싱의 조합 스테이지로 보내진다. 싱글 비트 프로세싱은 후술하도록 한다.Upon completion of the process in the selection stage for the multi-bit signals 204, 206, 208, the trigger inputs are selected, and the selected trigger inputs A0, B0, A1, B1 are sent to the combination stage of PDMC processing. Single bit processing will be described later.

도시 된 실시 예에서, PDMC(200)는 복수의 가능한 비교 연산들, 예를 들어, 비교 연산: ~보다 큼(greater than), ~보다 크거나 같음(greater than or equal to), ~보다 작음(less than), ~보다 작거나 같음(less than or equal to), ~와 같음(equal to), 또는 ~와 같지 않음*(not equal to)을 수행 할 수 있다. 어떠한 비교 연산이 수행되는지는 구성 설정, 예를 들어, op_a3, op_b3 중 하나에 의해 동적으로 선택 될 수 있다.In the illustrated embodiment, the PDMC 200 performs a plurality of possible comparison operations, eg, comparison operations: greater than, greater than or equal to, less than less than), less than or equal to, equal to, or not equal to. Which comparison operation is performed can be dynamically selected by a configuration setting, for example, one of op_a3, op_b3.

비교 연산은 비교 회로(222a) 및 비교 회로(222b)에 의해 수행 될 수 있다. 비교 회로(222a) 및 비교 회로(222b)는 각각의 입력에 대해 상이한 비교 연산을 수행 할 수 있다. 일 실시 예 따른, 비교 회로(222a)는 선택된 트리거 입력 신호 A0 및 B0 및 구성 설정 op_a3을 입력으로 수신 할 수 있다. 비교회로(222a)는, 전술 한 바와 같이, op_a3에 의해 선택된 비교 연산을 수행하여 단일 비트 출력 신호 A를 생성 할 수 있다. 유사하게, 비교 회로(222b)는 선택된 트리거 입력 신호 A1 및 B1, 및 구성 설정 op_b3을 입력 신호로 수신할 수 있다. 비교 회로(222b)는, 전술 한 바와 같이, op_b3 에 의해 선택된 비교 연산을 수행하여 단일 비트 출력 신호 B를 생성 할 수 있다. 따라서 입력 신호, 예를 들어, 조합 로직 블록 레지스터와 구성 레지트서와 같은 문턱 값에 대한 비교 연산이 수행될 수 있다. 또는, 제 1 PDMC 의 결과인 8 개의 입력 신호(206) 중 하나와, 다른 PDMC의 결과, 예를 들어, 8 개의 입력 신호들(206) 중 두 번째 입력 신호와 비교되거나, 또는 입력 신호들(204, 206 및 208) 중 하나와 입력 신호들(204, 206 및 208) 중 다른 하나에 대한 비교 연산이 수행될 수 있다The comparison operation may be performed by the comparison circuit 222a and the comparison circuit 222b. The comparison circuit 222a and the comparison circuit 222b may perform different comparison operations on their respective inputs. According to an embodiment, the comparison circuit 222a may receive the selected trigger input signals A0 and B0 and the configuration setting op_a3 as inputs. The comparison circuit 222a may generate a single bit output signal A by performing the comparison operation selected by op_a3, as described above. Similarly, the comparison circuit 222b may receive the selected trigger input signals A1 and B1, and the configuration setting op_b3 as input signals. The comparison circuit 222b may generate a single-bit output signal B by performing the comparison operation selected by op_b3, as described above. Thus, a comparison operation can be performed on an input signal, for example, a threshold value such as a combinational logic block register and a configuration register. Or, one of the eight input signals 206 that is the result of the first PDMC is compared with the result of another PDMC, for example, the second input signal of the eight input signals 206 , or the input signals ( A comparison operation may be performed on one of 204 , 206 and 208 and the other of input signals 204 , 206 and 208 .

일 실시 예에 따른, 단일 비트 신호들 A 및 B는 발생한 가능한 트리거 이벤트들을 나타낼 수 있다. 이러한 가능한 트리거 이벤트들은 구성 설정에 의해 결정되듯이, 필요하다면, 트리거 이벤트가 실제로 발생했는지를 결정하기 위해 추가로 처리 될 수 있다. 이는 프로세싱에 있어서, PDMC(200)의 조합 스테이지의 추가 프로세싱 부분에 의해 수행될 수 있다.According to an embodiment, single bit signals A and B may indicate possible trigger events that have occurred. These possible trigger events can be further processed, if necessary, to determine if a trigger event actually occurred, as determined by the configuration settings. This may be performed by an additional processing portion of the combining stage of the PDMC 200 in processing.

일 실시 예에 따른, 부울 로직 회로(224)는 싱글 비트의 가능한 트리거 이벤트 신호 A 및 B에 기초하여 부울 로직 연산, 예를 들어, A, B, A OR B, A AND B, A XOR B, NOT A, 및 NOT B를 수행할 수 있다. 필요한 부울 로직 연산은 구성 설정 신호 op_d에 의해 선택될 수 있다. 부울 로직 회로(224)는 중간 트리거 이벤트 신호 B'를 출력 할 수 있다. 중간 트리거 이벤트 신호 B'는 가능한 트리거 이벤트가 멀티 비트 입력 신호들(204), 멀티 비트 입력 신호들(206), 및/또는 멀티 비트 입력 신호들(208) 중 하나에 관하여 발생했음을 나타낼 수 있다.According to one embodiment, the boolean logic circuit 224 may perform boolean logic operations based on single bit possible trigger event signals A and B, eg, A, B, A OR B, A AND B, A XOR B, NOT A, and NOT B can be performed. The necessary boolean logic operation may be selected by the configuration setting signal op_d. The boolean logic circuit 224 may output an intermediate trigger event signal B'. The intermediate trigger event signal B′ may indicate that a possible trigger event has occurred with respect to one of the multi-bit input signals 204 , the multi-bit input signals 206 , and/or the multi-bit input signals 208 .

다중 비트 입력 신호들(204, 206, 및 208)과 유사하게, 싱글 비트 입력 신호들(202)에 대해 살펴보면, 싱글 비트 입력 신호들(202)은 그들 자신의 선택 스테이지에 의해 처리될 수 있다. 일 실시 예에 따른, 선택 회로 또는 멀티플렉서(212)는 64 개의 싱글 비트 입력 신호들(202) 중 어느 것을 출력해 내보낼지 선택할 수 있다. 입력 신호들(202)의 선택은 구성 설정 신호 op_c에 의해 제어 될 수 있다. 이후, 멀티플렉서(212)는 하나의 싱글 비트 신호 A'를 출력 할 수 있다. 신호 A '는 싱글 비트 입력 신호들(202) 중 하나와 관련된 발생 가능한 소정의 트리거 이벤트를 나타내는 중간 트리거 이벤트 신호를 나타낼 수 있다. 전술 한 것과 유사하게, 신호 A'은 PDMC(200)의 추가 프로세싱의 조합 스테이지로 전달될 수 있다.Similar to multi-bit input signals 204, 206, and 208, referring to single-bit input signals 202, single-bit input signals 202 may be processed by their own selection stage. According to an embodiment, the selection circuit or multiplexer 212 may select which one of the 64 single-bit input signals 202 is to be outputted. The selection of the input signals 202 may be controlled by the configuration setting signal op_c. Thereafter, the multiplexer 212 may output one single bit signal A'. Signal A ′ may represent an intermediate trigger event signal indicative of any possible trigger event associated with one of the single bit input signals 202 . Similar to that described above, signal A' may be passed to a combination stage of further processing of the PDMC 200 .

일 실시 예에 따른, 부울 로직 회로(226)는 단일 비트 입력 신호, 중간 트리거 이벤트 신호 A'및 B'에 대해, 상술 한 바와 같은, 부울 로직 연산을 수행 할 수 있다. 필요한 부울 로직 연산은 구성 설정 신호 op_e에 의해 선택 될 수 있다. 부울 로직 회로(226)는 트리거 이벤트 신호 E를 출력 할 수 있다. 트리거 이벤트 신호 E는 싱글 비트 입력 신호들(212), 멀티 비트 입력 신호들(204), 멀티 비트 입력 신호들(206), 및/또는 멀티 비트 입력 신호들(208) 중 하나와 관련하여 어떤 트리거 이벤트가 발생했음을 나타낸다.According to an embodiment, the boolean logic circuit 226 may perform a boolean logic operation, as described above, on the single-bit input signal and the intermediate trigger event signals A' and B'. The necessary boolean logic operation can be selected by the configuration setting signal op_e. The boolean logic circuit 226 may output a trigger event signal E. The trigger event signal E may trigger any trigger in connection with one of the single bit input signals 212 , the multi-bit input signals 204 , the multi-bit input signals 206 , and/or the multi-bit input signals 208 . Indicates that an event has occurred.

일 실시 예에 따른, PDMC(200)는 카운터(232)를 포함 할 수 있다. 다양한 실시 예에서, 카운터(232)는 clr 신호에 의해 알려진 값, 예를 들어, 0으로 클리어 되거나 리셋 될 수 있다. 일 실시 예에 따른, clr 신호는, 사용되지 않을 때, 예를 들어, 디버그 모드로 동작하지 않을 때 또는 모니터링 기능이 더 이상 필요하지 않을 때, PDMC(200)를 턴 오프(turn off)하기 위해 사용 될 수 있다. 또 다른 실시 예에서, 일반적인 클럭 게이팅(clock gating)이 사용될 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the PDMC 200 may include a counter 232 . In various embodiments, the counter 232 may be cleared or reset to a known value, for example, 0 by the clr signal. According to an embodiment, the clr signal is used to turn off the PDMC 200 when not in use, for example, when not operating in a debug mode or when a monitoring function is no longer needed. can be used In another embodiment, conventional clock gating may be used. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

일 실시 예에 따른, 카운터(232)는 트리거 이벤트가 발생할 때 증가 할 수 있다. 이것은 부울 로직 회로(226)로부터 출력되는 트리거 이벤트 신호 E를 통해 결정될 수 있다. 일 실시 예에 따른, 카운터(232) 값은 1만큼 증가 할 수 있다.According to an embodiment, the counter 232 may increase when a trigger event occurs. This may be determined through a trigger event signal E output from the boolean logic circuit 226 . According to an embodiment, the value of the counter 232 may increase by 1.

또 다른 실시 예에서, 카운터(232)는 동적으로 선택된 값만큼 증가 할 수 있다. 이러한 실시 예에서, 증분 값(increment value)은 입력 신호들(202, 204, 206 또는 208) 중 하나로부터 선택 될 수 있다. 선택 회로 또는 멀티플렉서(234)는 구성 설정 신호 inc_sel에 기초하여 증분 값의 선택을 수행 할 수 있다. 멀테플렉서(234)는 카운터 증분 값(254)을 출력 할 수 있다.In another embodiment, the counter 232 may be incremented by a dynamically selected value. In this embodiment, the increment value may be selected from one of the input signals 202 , 204 , 206 or 208 . The selection circuit or multiplexer 234 may perform the selection of the incremental value based on the configuration setting signal inc_sel. The multiplexer 234 may output a counter increment value 254 .

도시 된 실시 예에서, 멀티 비트 입력 신호들(204 및 208), 즉, 조합 로직 블록 멀티 비트 입력 신호들 및 구성 멀티 비트 입력 신호들 각각이 사용될 수 있다. 도시 된 실시 예에서, 조합 로직 블록 입력 신호들(204)의 서브 세트, 예를 들어, 8 개의 그룹들 중 7 개만이 사용될 수 있다. 이로써, 상수 1의 증분 옵션이 제공될 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.In the illustrated embodiment, multi-bit input signals 204 and 208, ie, combinatorial logic block multi-bit input signals and constituent multi-bit input signals, respectively, may be used. In the illustrated embodiment, only a subset of the combinatorial logic block input signals 204 may be used, eg, 7 out of 8 groups. Thereby, the option of incrementing the constant 1 can be provided. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

카운터(232)는, 트리거 이벤트 신호 E에 의한 명령에 따라, 카운터 증분 값(254)만큼 증가 할 수 있다. 카운터(232)는 카운터 값(256)을 생성하거나 출력 할 수 있다. 전술 한 바와 같이, 카운터 값(256)은 다른 PDMC들에 전송되거나 동일한 PDMC(200)에 되먹임 될 수 있다. 어느 경우든 카운터 값(256)은 PDMC 입력 신호(206)의 일부로서 포함될 수 있다. 다양한 실시 예에서, 카운터 값(256)은 또한 사람, 예를 들어, 디버그 엔지니어, 성능 엔지니어, 또는 추가적인 로직 분석 툴에 의한 검사를 위해 레지스터 또는 다른 메모리로 출력 될 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.The counter 232 may be incremented by a counter increment value 254 according to a command by the trigger event signal E. The counter 232 may generate or output a counter value 256 . As described above, the counter value 256 may be transmitted to other PDMCs or fed back to the same PDMC 200 . In either case, the counter value 256 may be included as part of the PDMC input signal 206 . In various embodiments, the counter value 256 may also be output to a register or other memory for examination by a human, eg, a debug engineer, a performance engineer, or additional logic analysis tool. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

다양한 실시 예들에서, PDMC(200)이 채용 될 수 있는 예시적인 방법들은 다음을 포함하나 이에 한정되지 않는다In various embodiments, exemplary methods in which the PDMC 200 may be employed include, but are not limited to:

ㄱ) 출력 인터페이스가 얼마나 많은 사이클 동안 배압(back-pressure)하는지를 카운팅: 이 때, 단일 비트 입력 신호(202)는 요청되었지만 즉시 이용될 수 없는 조합 로직 블록 조건(req & rdy)과 관련된다. 멀티플렉서(212) 및 부울 로직 회로(226)는 해당 단일 비트 입력 신호(202)를 트리거 이벤트 신호 E로 선택한다. 이 때, 다중 비트 입력 신호들(204, 206 및 208)은 무시 될 것이다. 카운터(232)는 해당 트리거 이벤트가 발생할 때마다 1만큼 증가할 수 있다.a) Counting how many cycles the output interface back-pressures: In this case, the single bit input signal 202 is associated with a requested but not immediately available combinatorial logic block condition (req & rdy). The multiplexer 212 and the boolean logic circuit 226 select the corresponding single bit input signal 202 as the trigger event signal E. At this time, the multi-bit input signals 204, 206 and 208 will be ignored. The counter 232 may be incremented by 1 whenever a corresponding trigger event occurs.

ㄴ) 3000 및 4000 사이클 사이에, 얼마나 많은 캐시(cache) 손실이 특정 캐시 제어부에서 발생했는지를 카운팅: 이 때, 단일 비트 입력 신호(202)는 캐시 손실의 발생과 관련되거나 캐시 손실을 나타낼 수 있다. 제 1 구성 레지스터(및 이에 따른, 입력 신호들(208)의 제 1 그룹)는 3000의 값으로 프로그래밍 될 수 있다. 제 2 구성 레지스터(및 이에 따른, 입력 신호들(208)의 제 2 그룹)는 4000의 값으로 프로그램 될 수 있다. 비교 회로(222a)는 사이클 카운트, 예를 들어, 입력 신호(204)가 입력 신호(208)의 제 1 그룹, 즉, 3000보다 클 때 TRUE로 프로그래밍되고, 비교 회로(222b)는 사이클 카운트, 예를 들어, 입력 신호(204)가 입력 신호(208)의 제 2 그룹, 즉, 4000보다 작을 때, TRUE로 프로그래밍 될 수 있다. 부울 로직 회로(224)는 이들 단일 비트 신호들 A 및 B에 대해 AND 연산을 하도록 프로그램 될 것이다. 부울 로직 회로(226)는 중간 신호 B'을 전달(pass)하도록 프로그래밍 될 것이다. 카운터(232)는 트리거 이벤트 E가 발생할 때마다 1 씩 증가할 수 있다.b) between 3000 and 4000 cycles, counting how many cache losses have occurred in a particular cache control: at this time, a single bit input signal 202 may be associated with or indicative of the occurrence of a cache loss . The first configuration register (and thus the first group of input signals 208) may be programmed to a value of 3000. The second configuration register (and thus the second group of input signals 208) may be programmed to a value of 4000. Comparator circuit 222a is programmed to TRUE when input signal 204 is greater than the first group of input signals 208, ie 3000, for a cycle count, eg, compare circuit 222b for cycle count, eg For example, it can be programmed to TRUE when the input signal 204 is less than the second group of input signals 208 , ie 4000 . The boolean logic circuit 224 will be programmed to do an AND operation on these single bit signals A and B. The boolean logic circuit 226 will be programmed to pass the intermediate signal B'. The counter 232 may increase by 1 whenever a trigger event E occurs.

ㄷ) 기능적 유닛 블록(FUB), 예를 들어, 컬링 유닛(culling unit)에서 얼마나 많은 그래픽 프리미티브가 특정 드로우 콜(draw)로부터 드롭 또는 컬링(culling)되는 지를 확인: 이 때, 단일 비트 입력 신호(202)는 조합 로직 블록 드롭(또는 컬링) 신호와 관련될 수 있다. 다양한 실시 예에서, 단일 사이클 펄스는 프리미티브가 드롭 될 때 해당 신호 상에서 발생할 수 있다. 조합 로직 블록 멀티 비트 입력 신호들(204)의 제 1 그룹은 조합 로직 블록의 DrawID 레지스터에서 획득된 식별자로 설정 될 수 있다. 제 1 구성 레지스터(및 이에 따른 구성 입력 신호들(208)의 제 1 그룹)는 적정한 DrawID 번호, 예를 들어, 345의 값으로 설정 될 수 있다. 멀티플렉서(212)는 해당 드롭 입력 신호(202)를 중간 트리거 이벤트 신호 A'로 선택할 수 있다. 비교 회로(222a)는 DrawID 레지스터, 예를 들어, 입력 신호(204)가 구성 입력 신호(208)의 제 1 그룹, 즉, 345와 동일 할 때 TRUE가 되도록 프로그래밍 될 것이다. 부울 로직 회로(224)는 신호 A를 중간 신호 B '로서 전달하도록 프로그래밍 될 수 있다. 부울 로직 회로(226)는 중간 신호 A' 및 B'에 대하여 AND 연산을 하도록 프로그램 될 수 있다. 조합 로직 블록 멀티-비트 입력 신호들(204)의 제 2 그룹은 드롭된 그래픽 프리미티브들의 수로 설정 될 수 있다. 카운터(232)는, 신호 E가 TRUE 일 때, 입력 신호들(204)의 제 2 그룹의 값, 드롭 된 프리미티브들의 수만큼 증가되도록 프로그램 될 수 있다c) check how many graphic primitives are dropped or culled from a specific draw call in a functional unit block (FUB), e.g. a culling unit: at this time a single bit input signal ( 202 may be associated with a combinatorial logic block drop (or culling) signal. In various embodiments, a single cycle pulse may occur on a corresponding signal when a primitive is dropped. The first group of combinational logic block multi-bit input signals 204 may be set with an identifier obtained from the DrawID register of the combinational logic block. The first configuration register (and hence the first group of configuration input signals 208) may be set to an appropriate DrawID number, for example a value of 345. The multiplexer 212 may select the corresponding drop input signal 202 as the intermediate trigger event signal A'. Comparison circuit 222a will be programmed to be TRUE when the DrawID register, e.g., input signal 204, is equal to the first group of constituent input signals 208, namely 345. The boolean logic circuit 224 may be programmed to pass signal A as intermediate signal B'. The boolean logic circuit 226 may be programmed to perform an AND operation on the intermediate signals A' and B'. The second group of combinatorial logic block multi-bit input signals 204 may be set to the number of graphic primitives dropped. The counter 232 may be programmed to increment by the value of the second group of input signals 204, the number of dropped primitives, when the signal E is TRUE.

상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

PCDM(200)이 특정 개수의 입력, 다양한 신호에 대한 특정 폭, 다양한 스테이지에서의 로직 레벨, 조합 로직의 유형 및 입력 유형을 갖는 것으로 설명되었지만, 이에 제한되지 아니한다. PDMC(200)이 연결되거나 이와 연관된 조합 로직 블록의 특정 상황에 따라, PDMC(200)의 실시 예는 확대되거나 축소 될 수 있다. 일 실시 예에 따른, 실시 예의 확대 축소는 합성(synthesis) 시간 파라미터를 변경함으로써 행해질 수 있다. 이러한 실시 예에서, 주어진 인스턴스에 대한 PDMC(200)의 불필요한 임의의 측면들은 합성(synthesis) 프로세스 동안 제거 될 수 있다. 다양한 실시 예들에서, 자동 설계 툴이 PDMC(200)의 상이한 실시 예들을 쉽게 구현할 수 있도록 특성들, 예를 들어, 멀티 비트 입력 신호들의 폭, 카운터의 비트 수, 비교 회로의 수는 파라미터화 될 수 있다.Although the PCDM 200 has been described as having a specific number of inputs, a specific width for various signals, logic levels at various stages, types of combinatorial logic, and types of inputs, it is not limited thereto. The embodiment of the PDMC 200 may be enlarged or reduced according to a specific situation of the combination logic block to which the PDMC 200 is connected or related thereto. According to an embodiment, zoom in and out of an embodiment may be performed by changing a synthesis time parameter. In such an embodiment, any unnecessary aspects of the PDMC 200 for a given instance may be eliminated during the synthesis process. In various embodiments, characteristics such as width of multi-bit input signals, number of bits of counter, number of comparison circuits may be parameterized so that an automated design tool can easily implement different embodiments of PDMC 200 . there is.

도 2b는 본원 개시에 따른 PDMC(200)의 예시적인 실시 예의 블록도이다. 도 2b는 PDMC(200)의 설계에 있어서, 3 개의 스테이지 또는 부분을 강조하여 도시한다. 이에 따라, 도면은 어느 정도 단순화되었다. 하기 도 2b에 대한 설명에 있어서, 도 2b에 되지 않은 참조 번호는 도 2a를 참조하도록 한다.2B is a block diagram of an exemplary embodiment of a PDMC 200 in accordance with the present disclosure. 2B shows the design of the PDMC 200 with emphasis on three stages or parts. Accordingly, the drawings have been simplified to some extent. In the following description of FIG. 2B, reference numerals not shown in FIG. 2B refer to FIG. 2A.

일 실시 예 따른, PDMC(200)는 입력 또는 선택 스테이지(292)를 포함 할 수 있다. 입력 또는 선택 스테이지(292)는 복수의 입력 신호들(202,204,206,208)을 수신하도록 구성 될 수 있다. 또한, 입력 또는 선택 스테이지 스테이지(292)는 PDMC 프로세싱의 다음 스테이지로 전달되는 입력 신호(202,204,206 및 208)의 서브-세트를 선택하도록 구성 될 수 있다According to an embodiment, the PDMC 200 may include an input or selection stage 292 . The input or select stage 292 may be configured to receive a plurality of input signals 202 , 204 , 206 , 208 . In addition, the input or select stage stage 292 may be configured to select a sub-set of input signals 202 , 204 , 206 and 208 to be passed to the next stage of PDMC processing.

일 실시 예에 따른, PDMC(200)는 조합 스테이지(296)를 포함 할 수 있다. 조합 스테이지(294)는 입력 신호들의 선택된 서브 - 세트에 대해 하나 이상의 로직 연산을 수행하도록 구성 될 수 있다. 일 실시 예에서, 조합 스테이지(294)는 비교 회로(222a 및 222b)를 포함하는 비교 스테이지 및 부울 로직 회로(224 및 226)를 포함하는 부울 스테이지를 포함 할 수 있다. 다른 일 예로서, 조합 스테이지(294)는 비교 회로들(222a 및 222b) 및 부울 로직 회로(224)를 포함하는 멀티 비트 스테이지 및 부울 로직 회로(226)를 포함하는 단일 비트 스테이지 또는 최종 스테이지를 포함할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the PDMC 200 may include a combination stage 296 . Combination stage 294 may be configured to perform one or more logical operations on a selected sub-set of input signals. In one embodiment, the combination stage 294 may include a comparison stage including comparison circuits 222a and 222b and a Boolean stage including Boolean logic circuits 224 and 226 . As another example, combination stage 294 includes a multi-bit stage including comparison circuits 222a and 222b and Boolean logic circuitry 224 and a single-bit stage or final stage including Boolean logic circuitry 226 . can do. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

다양한 실시 예에서, PDMC(200)는 카운터(232) 또는 카운터 스테이지(296)를 포함 할 수 있다. 이 때, 카운터 스테이지(296)는 조합 스테이지의 결과에 적어도 부분적으로 기초하여 증가하도록 구성 될 수 있다. 이 때, 카운터 스테이지(296)는 또한 멀티플렉서(234)를 포함 할 수 있고, 카운터(232)는 또한 멀티플렉서(234)에 의해 출력 된 값에 부분적으로 기초하여 증가 할 수 있다.In various embodiments, the PDMC 200 may include a counter 232 or a counter stage 296 . At this point, the counter stage 296 may be configured to increment based at least in part on the result of the combining stage. At this time, the counter stage 296 may also include a multiplexer 234 , and the counter 232 may also increment based in part on the value output by the multiplexer 234 .

일 실시 예에 따른, PDMC(200)는 복수의 카운터(232)를 포함 할 수 있다. 이 때, 각각의 카운터(23)는 각각의 멀티플렉서(234)와 관련 될 수 있다. 다른 일 예로서, 각각의 PDMC(200)는 각각 관련된 카운터(232)를 트리거하거나 인에이블 시키는 복수의 조합 스테이지(294)를 포함 할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the PDMC 200 may include a plurality of counters 232 . At this time, each counter 23 may be associated with each multiplexer 234 . As another example, each PDMC 200 may include a plurality of combination stages 294 each triggering or enabling an associated counter 232 . It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

도 3은 일 실시 예에 따른 반도체 장치를 포함 하는 정보 처리 시스템(300)의 개략적인 블록도이다.3 is a schematic block diagram of an information processing system 300 including a semiconductor device according to an exemplary embodiment.

도 3을 참조하면, 정보 처리 시스템(300)은 본원 개시의 원리에 따라 구성된 하나 이상의 장치를 포함 할 수 있다. 다른 일 예로서, 정보 처리 시스템(300)은 개시된 주제의 원리에 따라 하나 이상의 기술을 채용하거나 실행할 수 있다.Referring to FIG. 3 , information processing system 300 may include one or more devices configured in accordance with the principles of the present disclosure. As another example, information processing system 300 may employ or implement one or more techniques in accordance with the principles of the disclosed subject matter.

다양한 실시 예에서, 정보 처리 시스템(300)은, 예를 들어, 랩탑(laptop), 데스크탑(desktop), 워크 스테이션(workstation), 서버, 블레이드 서버(blade server), 개인 휴대 정보 단말(personal digital assistant: PDA), 스마트 폰(smartphone), 태블릿(tablet) 및 다른 적절한 컴퓨터와 같은 컴퓨팅 장치, 또는 가상 머신(virtual machine), 또는 가상 컴퓨팅 디바이스(virtual computing device)일 수 있다. 다양한 실시 예에서, 정보 처리 시스템(300)은 사용자(미도시)에 의해 사용될 수 있다.In various embodiments, the information processing system 300 is, for example, a laptop, a desktop, a workstation, a server, a blade server, a personal digital assistant. : a computing device such as a personal digital assistant (PDA), a smartphone, a tablet and other suitable computers, or a virtual machine, or a virtual computing device. In various embodiments, the information processing system 300 may be used by a user (not shown).

본원 개시에 따른 정보 처리 시스템(300)은 중앙 처리 장치(CPU), 로직 또는 프로세서(310)를 더 포함 할 수 있다. 일부 실시 예에서, 프로세서(310)는 하나 이상의 기능적 유닛 블록(FUB) 또는 조합 로직 블록, 예를 들어, NAND, NOR, NOT, XOR 연산, 안정화 로직 장치, 예를 들어, 플립-플롭(flip-flop), 래치(latch), 다른 로직 디바이스 또는 이들의 조합을 포함 할 수 있다. 이러한 조합 로직 연산은 입력 신호를 처리하여 원하는 결과를 얻도록 간단하거나 복잡한 방식으로 구성 될 수 있다. 동기 조합 로직 연산의 몇 가지 실시 예가 설명 되었지만, 이에 제한되지 않으며, 비동기 연산 또는 이들의 혼합이 본원 개시의 권리범위에 포함될 수 있다. 일 실시 예에 따른, 조합 로직 연산은 복수의 상보형금속산화반도체(CMOS) 트랜지스터(transistor)를 포함 할 수 있다. 다양한 실시 예에서, 이들 CMOS 트랜지스터들은 로직 연산들을 수행하는 게이트로 배열 될 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.The information processing system 300 according to the present disclosure may further include a central processing unit (CPU), logic, or a processor 310 . In some embodiments, the processor 310 may include one or more functional unit blocks (FUB) or combinational logic blocks, such as NAND, NOR, NOT, XOR operations, stabilization logic devices, such as flip-flops. flop), latches, other logic devices, or combinations thereof. These combinatorial logic operations can be constructed in simple or complex ways to process the input signal to achieve the desired result. Although several embodiments of a synchronous combinational logic operation have been described, the present disclosure is not limited thereto, and an asynchronous operation or a mixture thereof may be included in the scope of the present disclosure. According to an embodiment, the combinatorial logic operation may include a plurality of complementary metal oxide semiconductor (CMOS) transistors. In various embodiments, these CMOS transistors may be arranged as gates to perform logic operations. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

본원 개시에 따른, 정보 처리 시스템(300)은 휘발성 메모리(320), 예를 들어, 랜덤 액세스 메모리(RAM)를 더 포함 할 수 있다. 본원 개시에 따른, 정보 처리 시스템(300)은 비 휘발성 메모리(330), 예를 들어, 하드 드라이브(hard drive), 광 메모리(optical memory), NAND 또는 플래시 메모리(Flash memory)를 더 포함 할 수 있다. 일 실시 예에 따른, 휘발성 메모리(320), 비 휘발성 메모리(330) 또는 이들의 조합은 "저장 매체(storage medium)"로 지칭 될 수 있다. 다양한 실시 예에서, 휘발성 메모리(320) 및/또는 비 휘발성 메모리(330)는 반영구적 또는 실질적으로 영구적으로 데이터를 저장하도록 구성 될 수 있다.According to the present disclosure, the information processing system 300 may further include a volatile memory 320 , for example, a random access memory (RAM). According to the present disclosure, the information processing system 300 may further include a non-volatile memory 330 , for example, a hard drive, an optical memory, a NAND or a flash memory. there is. According to an embodiment, the volatile memory 320 , the non-volatile memory 330 , or a combination thereof may be referred to as a “storage medium”. In various embodiments, the volatile memory 320 and/or the non-volatile memory 330 may be configured to store data semi-permanently or substantially permanently.

다양한 실시 예에서, 정보 처리 시스템 (300)은 정보 처리 시스템 (300)이, 통신 네트워크의 일부로서, 통시 네트워크를 통해 통신 할 수 있도록 구성된 하나 이상의 네트워크 인터페이스(340)를 포함 할 수 있다. Wi-Fi 프로토콜(protocol)의 일 예로서, IEEE(Institute of Electrical and Electronics Engineers) 802.11g, IEEE 802.11n이 포함 될 수 있지만 이에 제한되지 않는다. 셀룰러 프로토콜(cellular protocol)는, 예를 들어, IEEE 802.16m(소위 무선 MAN (Metropolitan Area Network)) 어드벤스드(advance), LTE (Long Term Evolution) 어드벤스드(advance), EDGA(Enhanced Data rate for Global system for mobile communications(GSM) Evolution), 및 HSPA+(Evolved High-Speed Packet Access)를 포함할 수 있으나 이에 제한되지 아니한다. 유선 프로토콜은 예를 들어 IEEE 802.3(이더넷라고도 지칭됨), 파이버 채널(Fibre Channel), 전력선 통신, 예를 들어, HomePlug, IEEE 1901을 포함할 수 있으나 이에 제한되지 아니한다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.In various embodiments, the information processing system 300 may include one or more network interfaces 340 configured to enable the information processing system 300 to communicate over a communication network as part of a communication network. An example of the Wi-Fi protocol may include, but is not limited to, Institute of Electrical and Electronics Engineers (IEEE) 802.11g and IEEE 802.11n. A cellular protocol is, for example, IEEE 802.16m (so-called wireless Metropolitan Area Network (MAN)) advanced (advance), LTE (Long Term Evolution) advanced (advance), EDGA (Enhanced Data rate for Global) system for mobile communications (GSM) Evolution), and Evolved High-Speed Packet Access (HSPA+). Wired protocols may include, for example, but not limited to, IEEE 802.3 (also referred to as Ethernet), Fiber Channel, power line communication, such as HomePlug, IEEE 1901. It will be understood by those of ordinary skill in the art that the above description is exemplary and the scope of the present disclosure is not limited thereto.

본원 개시에 따른 정보 처리 시스템(300)은 사용자 인터페이스 유닛(350), 예를 들어, 디스플레이 어댑터(display adapter), 햅틱 인터페이스(haptic interface), 휴먼 인터페이스 디바이스(human interface device)를 더 포함 할 수 있다. 다양한 실시 예에서, 사용자 인터페이스 유닛(350)은 사용자로부터 입력을 수신거나 사용자에게 출력을 제공하거나 이들 모두를 수행하도록 구성 될 수 있다. 다른 종류의 디바이스가 사용자와의 인터페이스를 제공하기 위해 이용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백(visual feedback), 청각 피드백(auditory feedback) 또는 촉각 피드백(tactile feedback)과 같은 임의의 형태의 감각 피드백(sensory feedback) 일 수 있다. 사용자로부터의 입력은 어쿠스틱(acoustic), 스피치(speech) 또는 촉각(tactile) 입력을 포함하는 임의의 형태로 수신 될 수 있다.The information processing system 300 according to the present disclosure may further include a user interface unit 350, for example, a display adapter, a haptic interface, and a human interface device. . In various embodiments, user interface unit 350 may be configured to receive input from a user, provide output to a user, or both. Other types of devices may be used to provide an interface with a user. For example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback. The input from the user may be received in any form including acoustic, speech, or tactile input.

다양한 실시 예에서, 정보 처리 시스템 (300)은 하나 이상의 다른 장치 또는 하드웨어 구성 요소, 즉, 다른 하드웨어 디바이스(360), 예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 판독기(fingerprint reader), 비디오 프로세서를 포함 할 수 있으나 이에 제한되지 아니한다.In various embodiments, information processing system 300 may include one or more other devices or hardware components, ie, other hardware devices 360 , such as a display or monitor, keyboard, mouse, camera, fingerprint reader. , may include, but is not limited to, a video processor.

본원 개시에 따른 정보 처리 시스템 (300)은 하나 이상의 시스템 버스(305)를 더 포함 할 수 있다. 이 때, 시스템 버스 (305)는 프로세서 (310), 휘발성 메모리 (320), 비 휘발성 메모리(330), 네트워크 인터페이스 (340), 사용자 인터페이스 유닛(350) 및 하나 이상의 다른 하드웨어 디바이스(360)를 포함 할 수 있다. 프로세서(310)에 의해 처리된 데이터 또는 비 휘발성 메모리(330) 외부로부터 입력된 데이터는 비 휘발성 메모리(330) 또는 휘발성 메모리 (320)에 저장 될 수 있다The information processing system 300 according to the present disclosure may further include one or more system buses 305 . In this case, the system bus 305 includes a processor 310 , a volatile memory 320 , a non-volatile memory 330 , a network interface 340 , a user interface unit 350 , and one or more other hardware devices 360 . can do. Data processed by the processor 310 or data input from outside the non-volatile memory 330 may be stored in the non-volatile memory 330 or the volatile memory 320 .

일 실시 예에 따른 정보 처리 시스템 (300)은 하나 이상의 소프트웨어 컴포넌트 (370)를 포함하거나 실행할 수 있다. 예를 들어, 소프트웨어 컴포넌트 (370)는 운영 체제(OS) 및/또는 애플리케이션을 포함 할 수 있다. 일 실시 예에 따른 운영 체제(OS)는 하나 이상의 서비스를 애플리케이션에 제공하고, 애플리케이션 및 다양한 하드웨어 구성 용소, 예를 들어, 프로세서 (310), 정보 처리 시스템 (300)의 네트워크 인터페이스(340) 사이의 중재자로서의 역할을 수행하도록 구성 될 수 있다. 이 때, 정보 처리 시스템 (300)은 예를 들어 비 휘발성 메모리 (330) 내에 국부적으로 설치 될 수 있고, 프로세서(310)에 의해 직접 실행되고 운영 체제(OS)와 직접 상호 작용할 수 있는 하나 이상의 네이티브 애플리케이션(native application)을 포함할 수 있다. 네이티브 애플리케이션은 미리 컴파일 된 머신 실행 가능 코드(pre-compiled machine executable code)를 포함 할 수 있다. 일부 실시 예에서, 네이티브 애플리케이션은 소스 또는 오브젝트 코드를 프로세서 (310)에 의해 실행되는 실행 가능한 코드로 변환하도록 구성된 자바 가상 머신(JAVA virtual machine), Microsoft Common Language Runtime과 같은 가상 실행 머신(virtual execution machines: VM) 또는 C 쉘(csh), AppleScript, AutoHotkey와 같은 스크립트 인터프리터(script interpreter)를 포함할 수 있다.The information processing system 300 according to an embodiment may include or execute one or more software components 370 . For example, software component 370 may include an operating system (OS) and/or applications. An operating system (OS) according to an embodiment provides one or more services to an application, and between the application and various hardware components, for example, the processor 310 and the network interface 340 of the information processing system 300 . It may be configured to serve as a mediator. At this time, the information processing system 300 may be installed locally in the non-volatile memory 330 , for example, and may be directly executed by the processor 310 and may directly interact with one or more native operating systems (OS). It may include a native application. Native applications may include pre-compiled machine executable code. In some embodiments, the native application is a virtual execution machine, such as a JAVA virtual machine, Microsoft Common Language Runtime configured to convert source or object code into executable code executed by the processor 310 . : VM) or a script interpreter such as C shell (csh), AppleScript, or AutoHotkey.

상술한 반도체 장치는 다양한 패키징 기술을 이용하여 캡슐화(encapsulate) 될 수 있다. 예를 들어, 본원 개시의 원리에 따라 구성된 반도체 디바이스는 POP(package on package) 기술, BGA(ball grid arrays) 기술, CSPs(chip scale packages) 기술, PLCC(plastic leaded chip carrier) 기술, PDIP(plastic dual in-line package) 기술, 와플 팩 다이(die in waffle pack) 기술, 웨이퍼 폼 다이(die in wafer form), COB(Chip On Board) 기술, CERDIP(ceramic dual in-line package) 기술, PMQFP(Plastic Metric Quad Flat Package) 기술, PQFP(Plastic Quad Flat Package) 기술, SOIC(Small Outline Package) 기술, SSOP(shrink small outline package) 기술, TSOP(thin small outline package) 기술, TQFP(thin quad flat package) 기술, SIP(system in package) 기술, MCP(multi-chip package) 기술, WFP(wafer-level fabricated package) 기술, WSP(wafer-level processed stack package) 기술, 또는 당업자에게 알려진 다른 기술에 의해 캡슐화 될 수 있다.The above-described semiconductor device may be encapsulated using various packaging technologies. For example, a semiconductor device configured according to the principles of the present disclosure may include a package on package (POP) technology, a ball grid arrays (BGA) technology, a chip scale packages (CSPs) technology, a plastic leaded chip carrier (PLCC) technology, and a plastic leaded chip carrier (PDIP) technology. Dual in-line package technology, die in waffle pack technology, die in wafer form, COB (Chip On Board) technology, CERDIP (ceramic dual in-line package) technology, PMQFP ( Plastic Metric Quad Flat Package) technology, PQFP (Plastic Quad Flat Package) technology, SOIC (Small Outline Package) technology, SSOP (shrink small outline package) technology, TSOP (thin small outline package) technology, TQFP (thin quad flat package) technology technology, system in package (SIP) technology, multi-chip package (MCP) technology, wafer-level fabricated package (WFP) technology, wafer-level processed stack package (WSP) technology, or other technology known to those skilled in the art. can

본원 개시의 방법에 각 단계는 입력 데이터에 대해 연산하고 출력을 생성함으로써 기능들을 수행하기 위해 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 프로세서에 의해 수행 될 수 있다. 또한, 각 단계는, 전용 로직 회로(special purpose logic circuitry) 의해 수행 될 수 있고, 장치는 전용 로직 회로로서 구현될 수 있다. 전용 로직 회로는, 예를 들어, FPGA (field programmable gate array) 또는 ASIC(application-specific integrated circuit)을 포함할 수 있다.Each step in the method of the present disclosure may be performed by one or more programmable processors executing a computer program to perform functions by operating on input data and generating output. Further, each step may be performed by a special purpose logic circuitry, and the device may be implemented as a dedicated logic circuit. The dedicated logic circuit may include, for example, a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC).

다양한 실시 예에서, 컴퓨터로 판독 가능한 매체(computer readable medium)는 실행될 때 디바이스가 방법의 단계들의 적어도 일부를 수행 하게하는 명령어들을 포함 할 수 있다. 일 실시 예에 따른, 컴퓨터로 판독 가능한 매체는 자기 매체, 광학 매체, 다른 매체, 또는 이들의 조합, 예를 들어, CD-ROM, 하드 드라이브(hard drive), ROM(read-only memory), 플래시 드라이브(flash drive)에 포함될 수 있다. 이 때, 컴퓨터로 판독 가능한 매체는 유형적(tangibly)이며 비-일시적으로(non-transitorily) 구현 된 제품 일 수 있다. In various embodiments, a computer readable medium may contain instructions that, when executed, cause a device to perform at least some of the steps of a method. According to an embodiment, the computer-readable medium is a magnetic medium, an optical medium, another medium, or a combination thereof, for example, a CD-ROM, a hard drive, a read-only memory (ROM), a flash It may be included in a flash drive. In this case, the computer-readable medium may be a tangibly and non-transitorily implemented product.

이제까지 본 개시에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.With respect to the present disclosure so far, the preferred embodiments have been looked at. Those of ordinary skill in the art to which the present invention pertains will understand that the present invention can be implemented in a modified form without departing from the essential characteristics of the present invention. Therefore, the disclosed embodiments are to be considered in an illustrative rather than a restrictive sense. The scope of the present invention is indicated in the claims rather than the foregoing description, and all differences within the scope equivalent thereto should be construed as being included in the present invention.

Claims (10)

복수의 성능 및 디버그 모니터링 회로(performance and debug monitoring circuit: PDMC)들을 포함하고,
각각의 PDMC는:
다른 PDMC들로부터의 신호들, 조합 로직 회로(combinatorial logic circuit)들로부터의 신호들 및 구성 값(configuration value)들을 포함하는 복수의 입력 신호들을 수신하는 입력 스테이지(input stage);
상기 입력 신호들의 선택된 서브 세트에 대하여 하나 이상의 로직 연산을 수행하는 조합 스테이지(combinatorial stage); 및
상기 조합 스테이지의 결과에 적어도 부분적으로 기초하여 증가하는 카운터(counter)를 포함하는, 장치.
a plurality of performance and debug monitoring circuits (PDMC);
Each PDMC is:
an input stage for receiving a plurality of input signals including signals from other PDMCs, signals from combinatorial logic circuits and configuration values;
a combinatorial stage for performing one or more logic operations on the selected subset of input signals; and
and a counter that increments based at least in part on a result of the combining stage.
제 1 항에 있어서,
상기 다른 PDMC들로부터의 신호들 각각은 상기 다른 PDMC들 각각과 관련된 카운터 값을 포함하고,
현재PDMC에 대한 입력 신호는 상기 현재 PDMC의 카운터로부터 상기 현재 PDMC의 입력 스테이지로 되먹임 되는 카운터 값을 포함하는, 장치.
The method of claim 1,
each of the signals from the other PDMCs includes a counter value associated with each of the other PDMCs;
wherein the input signal to the current PDMC comprises a counter value fed back from a counter of the current PDMC to an input stage of the current PDMC.
제 1 항에 있어서,
상기 조합 스테이지는 복수의 서로 다른 로직 연산을 수행할 수 있고,
상기 복수의 서로 다른 로직 연산들 중 하나 이상의 로직 연산이 구성 설정에 기초하여 동적으로 선택되어 수행되는, 장치.
The method of claim 1,
The combination stage can perform a plurality of different logic operations,
wherein one or more of the plurality of different logical operations is dynamically selected and performed based on a configuration setting.
제 1 항에 있어서,
상기 카운터는 상기 입력 신호들 중 선택된 하나의 입력 신호와 관련된 증분 값만큼 증가하고,
상기 입력 신호들 중 상기 선택된 입력 신호는 구성 설정에 기초하여 동적으로 선택되는, 장치.
The method of claim 1,
the counter is incremented by an increment associated with a selected one of the input signals;
wherein the selected one of the input signals is dynamically selected based on a configuration setting.
제 1 항에 있어서,
상기 입력 신호들은 멀티 비트 입력 신호들을 포함하는 제 1 부분과 싱글 비트 입력 신호들을 포함하는 제 2 부분을 포함하고,
상기 입력 스테이지는 상기 조합 스테이지에 전달되는 입력 신호들의 서브 세트를 선택하는 복수의 선택 회로들을 포함하는, 장치.
The method of claim 1,
said input signals comprising a first part comprising multi-bit input signals and a second part comprising single-bit input signals;
wherein the input stage comprises a plurality of selection circuits for selecting a subset of input signals passed to the combining stage.
제 5 항에 있어서,
상기 조합 스테이지는 제1 부분과 제 2 부분을 포함하고,
상기 조합 스테이지의 상기 제 1 부분은,
입력 신호들의 상기 서브 세트에 대한 비교 연산을 수행하는 상기 조합 스테이지의 제 1 단, 및
상기 제 1 단의 출력에 대한 부울 연산(Boolean operation)을 수행하는 상기 조합 스테이지의 제 2 단을 포함하고,
상기 조합 스테이지의 상기 제2 부분은, 상기 조합 스테이지의 상기 제 1 부분의 출력 및 상기 입력 신호들의 상기 제 2 부분의 서브 세트에 대한 부울 연산을 수행하는, 장치.
6. The method of claim 5,
the combining stage comprises a first part and a second part;
The first part of the combining stage comprises:
a first stage of the combining stage for performing a comparison operation on the subset of input signals; and
a second stage of the combining stage for performing a Boolean operation on the output of the first stage;
and the second portion of the combining stage performs a Boolean operation on a subset of the output of the first portion of the combining stage and the second portion of the input signals.
제 6 항에 있어서,
상기 조합 스테이지의 상기 제 1 부분의 상기 비교 연산 및 상기 부울 연산, 및 상기 조합 스테이지의 상기 제 2 부분의 상기 부울 연산들은 구성 설정들 각각에 기초하여 미리 결정된 연산들의 집합들 중 동적으로 선택될 수 있는, 장치.
7. The method of claim 6,
The comparison operation and the Boolean operation of the first portion of the combining stage, and the Boolean operations of the second portion of the combining stage may be dynamically selected from a set of predetermined operations based on each of configuration settings. there, the device.
제 1 항에 있어서,
상기 조합 스테이지는,
각각 상기 입력 신호들의 적어도 일부 또는 상기 조합 스테이지의 다른 부분의 적어도 하나의 출력에 대한 비교 연산을 적어도 수행하는 복수의 비교 스테이지들;
각각 상기 입력 신호들의 적어도 일부 또는 상기 조합 스테이지의 다른 부분의 적어도 하나의 출력에 대한 부울 연산을 수행하는 복수의 부울 스테이지들; 및
상기 복수의 비교 스테이지들 및 상기 복수의 부울 스테이지들은 상기 입력 신호들의 상기 선택된 서브 세트에 대한 하나 이상의 로직 연산을 수행하도록 배치되는, 장치.
The method of claim 1,
The combination stage is
a plurality of comparison stages each performing at least a comparison operation on at least one output of at least a portion of the input signals or another portion of the combining stage;
a plurality of Boolean stages each performing a Boolean operation on at least a portion of the input signals or on at least one output of another portion of the combination stage; and
wherein the plurality of comparison stages and the plurality of boolean stages are arranged to perform one or more logical operations on the selected subset of the input signals.
복수의 조합 로직 회로들을 포함하고, 디스플레이 장치로 출력하기 위한 이미지를 생성하기 위해 메모리 내의 데이터를 조작 및 변경하는 그래픽 처리 회로; 및
복수의 성능 및 디버그 모니터링 회로(performance and debug monitoring circuit: PCMD)들을 포함하고,
각각의 PDMC는:
다른 PDMC들로부터의 신호들, 조합 로직 회로들로부터의 신호들 및 구성 값들을 포함하는 복수의 입력 신호들을 수신하는 입력 스테이지;
상기 입력 신호들의 선택된 서브 세트에 대하여 하나 이상의 로직 연산을 수행하는 조합 스테이지; 및
상기 조합 스테이지의 결과에 적어도 부분적으로 기초하여 증가하는 카운터를 포함하는, 시스템.
a graphics processing circuit comprising a plurality of combinational logic circuits for manipulating and altering data in the memory to generate an image for output to a display device; and
a plurality of performance and debug monitoring circuits (PCMD);
Each PDMC is:
an input stage for receiving a plurality of input signals including signals from other PDMCs, signals from combinatorial logic circuits, and configuration values;
a combining stage for performing one or more logic operations on the selected subset of the input signals; and
and a counter that increments based at least in part on a result of the combining stage.
복수의 성능 및 디버그 모니터링 회로(performance and debug monitoring circuit: PDMC)에 의해, 다른 PDMC들로부터의 신호들, 조합 로직 회로들로부터의 신호들 및 구성 값들을 포함하는 복수의 입력 신호들을 수신하는 단계;
상기 입력 신호들의 선택된 서브 세트에 대하여 하나 이상의 로직 연산을 수행하는 단계; 및
상기 하나 이상의 로직 연산에 적어도 부분적으로 기초하여 카운터 값을 증가시키는 단계를 포함하는, 방법.
receiving, by a plurality of performance and debug monitoring circuits (PDMC), a plurality of input signals comprising signals from other PDMCs, signals from combinatorial logic circuits, and configuration values;
performing one or more logic operations on the selected subset of the input signals; and
incrementing a counter value based at least in part on the one or more logical operations.
KR1020170168476A 2016-12-12 2017-12-08 Apparatus, system and method for performance and debug monitoring KR102400556B1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662433027P 2016-12-12 2016-12-12
US62/433,027 2016-12-12
US15/464,334 2017-03-20
US15/464,334 US10386410B2 (en) 2016-12-12 2017-03-20 Highly flexible performance counter and system debug module

Publications (2)

Publication Number Publication Date
KR20180067432A KR20180067432A (en) 2018-06-20
KR102400556B1 true KR102400556B1 (en) 2022-05-20

Family

ID=62201969

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170168476A KR102400556B1 (en) 2016-12-12 2017-12-08 Apparatus, system and method for performance and debug monitoring

Country Status (2)

Country Link
KR (1) KR102400556B1 (en)
DE (1) DE102017129380A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210173004A1 (en) * 2019-12-09 2021-06-10 Advanced Micro Devices, Inc. Debug state machine triggered extended performance monitor counter
CN111856258B (en) * 2020-07-24 2023-05-09 北京百度网讯科技有限公司 Method, device, storage medium and corresponding chip for testing chip

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060167658A1 (en) 2005-01-27 2006-07-27 International Business Machines Corporation Method, apparatus, and computer program product in a performance monitor for sampling all performance events generated by a processor
US20070139421A1 (en) 2005-12-21 2007-06-21 Wen Chen Methods and systems for performance monitoring in a graphics processing unit
US20120304020A1 (en) 2007-06-26 2012-11-29 International Business Machines Corporation Shared performance monitor in a multiprocessor system

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566645B2 (en) * 2010-12-02 2013-10-22 Advanced Micro Devices, Inc. Debug state machine and processor including the same

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060167658A1 (en) 2005-01-27 2006-07-27 International Business Machines Corporation Method, apparatus, and computer program product in a performance monitor for sampling all performance events generated by a processor
US20070139421A1 (en) 2005-12-21 2007-06-21 Wen Chen Methods and systems for performance monitoring in a graphics processing unit
US20120304020A1 (en) 2007-06-26 2012-11-29 International Business Machines Corporation Shared performance monitor in a multiprocessor system

Also Published As

Publication number Publication date
KR20180067432A (en) 2018-06-20
DE102017129380A1 (en) 2018-06-14

Similar Documents

Publication Publication Date Title
CN108228419B (en) Highly flexible performance counter and system debug module
EP0897152B1 (en) Performance counters controlled by programmable logic
US20170115353A1 (en) Granular dynamic test systems and methods
JP5543675B2 (en) Debug state machine and processor containing same
KR102374380B1 (en) Method and apparatus for testing artificial intelligence chip, device and storage medium
KR102400556B1 (en) Apparatus, system and method for performance and debug monitoring
US10338139B1 (en) Method and apparatus for scan chain reordering and optimization in physical implementation of digital integrated circuits with on-chip test compression
US9378318B2 (en) Shared channel masks in on-product test compression system
CN108226763B (en) Method, apparatus and computer program product for scan chain reordering
KR20050080686A (en) Semiconductor ic being capable of co-debugging and semiconductor ic test system
US8347159B2 (en) Compression based on deterministic vector clustering of incompatible test cubes
CN111693858B (en) Method for reducing power consumption in scannable flip-flop without additional circuit
US10459031B2 (en) Electronic circuit having serial latch scan chains
US6973405B1 (en) Programmable interactive verification agent
US20150082107A1 (en) State machine based functional stress tests
US10310012B2 (en) Lightweight, low overhead debug bus
US9317385B2 (en) Hardware profiling
Apostolakis et al. Functional processor-based testing of communication peripherals in systems-on-chip
JP2006292401A (en) Semiconductor integrated circuit having test constitution and its test method
US10430197B2 (en) Banking register renaming to reduce power
Choi et al. Test resource reused debug scheme to reduce the post-silicon debug cost
Sadredini et al. An improved scheme for pre-computed patterns in core-based SoC architecture
US20230052788A1 (en) Software-Defined Synthesizable Testbench
Haetzer et al. A comparison of parallel systemc simulation approaches at RTL
US20150253382A1 (en) Hierarchal test block test pattern reduction in on-product test compression system

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant