KR102400556B1 - Apparatus, system and method for performance and debug monitoring - Google Patents
Apparatus, system and method for performance and debug monitoring Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/31705—Debugging aspects, e.g. using test circuits for debugging, using dedicated debugging test circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3041—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is an input/output interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3031—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/27—Built-in tests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring 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
본 개시의 기술적 사상은 성능 모니터링 및 디버그 디자인에 관련된다. 구체적으로, 본원 개시는 유연한 성능 카운터 및 시스템 디버그 모듈에 관한 것이다.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
다양한 실시 예에 따른, 시스템(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
도시 된 실시 예에서, 시스템(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
현대 GPU는 다수의 내부 서브-유닛, 예를 들어, 세이더 회로(105), 래스터라이저 회로(106)를 포함하는 고도의 병렬적 기계인 경향이 있다. 그래픽 프로세서는 일반적으로 응용 프로그램 작성자의 상상력만으로 관리되는 사용 패턴의 무한한 조합에 내에서 수 많은 병렬적 작업을 수행한다. 따라서, 설계자는 기계를 최적화 하기 위해 설계상의 절충점을 정확히 미리 아는 것은 매우 어렵다.Modern GPUs tend to be highly parallel machines comprising a number of internal sub-units, eg,
일 실시 예에 따른, 본원 개시는 성능 모니터 용량 내에서, 시스템 설계자가 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
일 실시 예에 따른, 시스템(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
도시 된 실시 예에서, 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
다양한 실시 예에 따른, 각각의 PDMC(126) 카운터는 많은 로직 분석기(logic analyzer)와 매우 유사한 방식으로 증가하도록 프로그래밍 될 수 있다. 각각의 PDMC(126)는 입력 신호의 조합, 입력 신호 값의 비교에 기초하여 증가할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to various embodiments, each
다양한 실시 예는, 다음과 같이 활용될 수 있다. 그러나 이에 제한되지 아니한다.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
ㄴ) 멀티-비트 입력 신호가 특정 값과 동일하고 싱글-비트 입력 신호가 인에이블(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
ㄷ) 멀티 비트의 입력 신호가 구성 값보다 크거나 같고 해당 멀티 비트의 입력 신호가 다른 구성 값보다 작거나 같으며, 싱글 비트 입력 신호가 하이 일 때 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
도 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)는 64 개의 싱글 비트 입력 신호들(202) 및 최대 8 개의 멀티 비트 입력 신호들(204), 멀티 비트 입력 신호들(204), 및 멀티 비트 입력 신호들(208)을 포함할 수 있다. 도시 된 실시 예에서, 멀티 비트 입력 신호들(204), 멀티 비트 입력 신호들(204), 및 멀티 비트 입력 신호들(208)은 최대 32 비트 폭을 가질 수 있다. 마찬가지로, 멀티 비트 출력 신호(256)는 32 비트의 신호를 포함 할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the
일 실시 예에 따른, PDMC(200)는 조합 로직 회로 또는 조합 로직 블록들로부터 복 수 개, 예를 들어, 64개의 싱글 비트의 입력 신호들(202)을 수신할 수 있다. 복 수 개의 싱글 비트의 입력 신호들은 부울 로직 회로로의 조합 로직 블록 내부 입력 값 또는 플래그(flag), 또는 부울 로직 회로로부터의 조합 로직 블록 내부 출력 값 또는 플래그를 포함할 수 있다.According to an embodiment, the
일 실시 예에 따른, PDMC(200)는 조합 로직 회로 또는 블록으로부터 복 수개의 멀티 비트 입력 신호(204), 예를 들어, 8 개의 32 비트 신호들을 수신할 수 있다. 이 때, 다중 멀티 비트의 입력 신호들(204)은 조합 로직 블록들에 의해 사용되는 레지스터들 또는 버스들을 포함 할 수 있다. 예를 들어, 하나의 멀티 비트 입력 신호(204)는 픽셀의 컬러에 대한 정보를 저장하는 레지스터의 값을 나타낼 수 있다. 다른 멀티 비트 입력 신호(204)는 특정 조합 로직 블록에 할당 된 명령어를 나타낼 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the
일 실시 예에 따른, 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)는 구성 레지스터로부터 복 수개의 멀티 비트 입력 신호(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)는 구성 또는 프로그래밍 설정을 저장하는 복수의 구성 설정 레지스터를 포함할 수 있다. 구성 설정 레지스터의 개수 또는 폭(width)d은 입력 신호들(202, 204, 206, 208)의 개수 또는 폭(width), 및 비교 회로(comparator)(222a) 및 부울 로직 회로(224)를 통해 PDMC(200)에 의해 지원되는 연산들, 예를 들어, AND 부울 연산 AND, 비교 연산 less than에 기초하여 변경될 수 있다. 다양한 실시 예에 따른 구성 설정 레지스터는, 도 1에 도시된 인터커넥트 버스, 스켄 체인(scan chain), 디버그 포트(debug port) 또는 다른 엑세스(access) 기술을 통하여 설정될 수 있다.Additionally, each
일 실시 예에 따른, 도시 된 실시 예에서, 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
일 실시 예에 따른, 멀티 비트 입력 신호들(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
일 실시 예에 따른, 각각의 멀티플렉서(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
각각의 입력 신호 그룹(204, 206, 및 208)은 멀티플렉서(214, 215, 216 및 217) 중 2 개의 멀티플렉서로 제공되도록 배열될 수 있다. 필요하다면, 동일한 입력 신호 그룹, 예를 들어, 조합 로직 블록 입력(204), PDMC 카운터 입력(206) 또는 구성 입력(208)으로부터 두 개의 서로 다른 신호들이 이용될 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.Each
멀티 비트 신호들(204, 206, 208)에 대한 선택 스테이지에서 프로세스가 완료되면, 트리거 입력들이 선택되고, 선택된 트리거 입력들(A0, B0, A1, B1)은 PDMC 프로세싱의 조합 스테이지로 보내진다. 싱글 비트 프로세싱은 후술하도록 한다.Upon completion of the process in the selection stage for the
도시 된 실시 예에서, 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
비교 연산은 비교 회로(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
일 실시 예에 따른, 단일 비트 신호들 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
일 실시 예에 따른, 부울 로직 회로(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
다중 비트 입력 신호들(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
일 실시 예에 따른, 부울 로직 회로(226)는 단일 비트 입력 신호, 중간 트리거 이벤트 신호 A'및 B'에 대해, 상술 한 바와 같은, 부울 로직 연산을 수행 할 수 있다. 필요한 부울 로직 연산은 구성 설정 신호 op_e에 의해 선택 될 수 있다. 부울 로직 회로(226)는 트리거 이벤트 신호 E를 출력 할 수 있다. 트리거 이벤트 신호 E는 싱글 비트 입력 신호들(212), 멀티 비트 입력 신호들(204), 멀티 비트 입력 신호들(206), 및/또는 멀티 비트 입력 신호들(208) 중 하나와 관련하여 어떤 트리거 이벤트가 발생했음을 나타낸다.According to an embodiment, the
일 실시 예에 따른, PDMC(200)는 카운터(232)를 포함 할 수 있다. 다양한 실시 예에서, 카운터(232)는 clr 신호에 의해 알려진 값, 예를 들어, 0으로 클리어 되거나 리셋 될 수 있다. 일 실시 예에 따른, clr 신호는, 사용되지 않을 때, 예를 들어, 디버그 모드로 동작하지 않을 때 또는 모니터링 기능이 더 이상 필요하지 않을 때, PDMC(200)를 턴 오프(turn off)하기 위해 사용 될 수 있다. 또 다른 실시 예에서, 일반적인 클럭 게이팅(clock gating)이 사용될 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the
일 실시 예에 따른, 카운터(232)는 트리거 이벤트가 발생할 때 증가 할 수 있다. 이것은 부울 로직 회로(226)로부터 출력되는 트리거 이벤트 신호 E를 통해 결정될 수 있다. 일 실시 예에 따른, 카운터(232) 값은 1만큼 증가 할 수 있다.According to an embodiment, the
또 다른 실시 예에서, 카운터(232)는 동적으로 선택된 값만큼 증가 할 수 있다. 이러한 실시 예에서, 증분 값(increment value)은 입력 신호들(202, 204, 206 또는 208) 중 하나로부터 선택 될 수 있다. 선택 회로 또는 멀티플렉서(234)는 구성 설정 신호 inc_sel에 기초하여 증분 값의 선택을 수행 할 수 있다. 멀테플렉서(234)는 카운터 증분 값(254)을 출력 할 수 있다.In another embodiment, the
도시 된 실시 예에서, 멀티 비트 입력 신호들(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
다양한 실시 예들에서, PDMC(200)이 채용 될 수 있는 예시적인 방법들은 다음을 포함하나 이에 한정되지 않는다In various embodiments, exemplary methods in which the
ㄱ) 출력 인터페이스가 얼마나 많은 사이클 동안 배압(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
ㄴ) 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
ㄷ) 기능적 유닛 블록(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
상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.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
도 2b는 본원 개시에 따른 PDMC(200)의 예시적인 실시 예의 블록도이다. 도 2b는 PDMC(200)의 설계에 있어서, 3 개의 스테이지 또는 부분을 강조하여 도시한다. 이에 따라, 도면은 어느 정도 단순화되었다. 하기 도 2b에 대한 설명에 있어서, 도 2b에 되지 않은 참조 번호는 도 2a를 참조하도록 한다.2B is a block diagram of an exemplary embodiment of a
일 실시 예 따른, PDMC(200)는 입력 또는 선택 스테이지(292)를 포함 할 수 있다. 입력 또는 선택 스테이지(292)는 복수의 입력 신호들(202,204,206,208)을 수신하도록 구성 될 수 있다. 또한, 입력 또는 선택 스테이지 스테이지(292)는 PDMC 프로세싱의 다음 스테이지로 전달되는 입력 신호(202,204,206 및 208)의 서브-세트를 선택하도록 구성 될 수 있다According to an embodiment, the
일 실시 예에 따른, PDMC(200)는 조합 스테이지(296)를 포함 할 수 있다. 조합 스테이지(294)는 입력 신호들의 선택된 서브 - 세트에 대해 하나 이상의 로직 연산을 수행하도록 구성 될 수 있다. 일 실시 예에서, 조합 스테이지(294)는 비교 회로(222a 및 222b)를 포함하는 비교 스테이지 및 부울 로직 회로(224 및 226)를 포함하는 부울 스테이지를 포함 할 수 있다. 다른 일 예로서, 조합 스테이지(294)는 비교 회로들(222a 및 222b) 및 부울 로직 회로(224)를 포함하는 멀티 비트 스테이지 및 부울 로직 회로(226)를 포함하는 단일 비트 스테이지 또는 최종 스테이지를 포함할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the
다양한 실시 예에서, PDMC(200)는 카운터(232) 또는 카운터 스테이지(296)를 포함 할 수 있다. 이 때, 카운터 스테이지(296)는 조합 스테이지의 결과에 적어도 부분적으로 기초하여 증가하도록 구성 될 수 있다. 이 때, 카운터 스테이지(296)는 또한 멀티플렉서(234)를 포함 할 수 있고, 카운터(232)는 또한 멀티플렉서(234)에 의해 출력 된 값에 부분적으로 기초하여 증가 할 수 있다.In various embodiments, the
일 실시 예에 따른, PDMC(200)는 복수의 카운터(232)를 포함 할 수 있다. 이 때, 각각의 카운터(23)는 각각의 멀티플렉서(234)와 관련 될 수 있다. 다른 일 예로서, 각각의 PDMC(200)는 각각 관련된 카운터(232)를 트리거하거나 인에이블 시키는 복수의 조합 스테이지(294)를 포함 할 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.According to an embodiment, the
도 3은 일 실시 예에 따른 반도체 장치를 포함 하는 정보 처리 시스템(300)의 개략적인 블록도이다.3 is a schematic block diagram of an
도 3을 참조하면, 정보 처리 시스템(300)은 본원 개시의 원리에 따라 구성된 하나 이상의 장치를 포함 할 수 있다. 다른 일 예로서, 정보 처리 시스템(300)은 개시된 주제의 원리에 따라 하나 이상의 기술을 채용하거나 실행할 수 있다.Referring to FIG. 3 ,
다양한 실시 예에서, 정보 처리 시스템(300)은, 예를 들어, 랩탑(laptop), 데스크탑(desktop), 워크 스테이션(workstation), 서버, 블레이드 서버(blade server), 개인 휴대 정보 단말(personal digital assistant: PDA), 스마트 폰(smartphone), 태블릿(tablet) 및 다른 적절한 컴퓨터와 같은 컴퓨팅 장치, 또는 가상 머신(virtual machine), 또는 가상 컴퓨팅 디바이스(virtual computing device)일 수 있다. 다양한 실시 예에서, 정보 처리 시스템(300)은 사용자(미도시)에 의해 사용될 수 있다.In various embodiments, the
본원 개시에 따른 정보 처리 시스템(300)은 중앙 처리 장치(CPU), 로직 또는 프로세서(310)를 더 포함 할 수 있다. 일부 실시 예에서, 프로세서(310)는 하나 이상의 기능적 유닛 블록(FUB) 또는 조합 로직 블록, 예를 들어, NAND, NOR, NOT, XOR 연산, 안정화 로직 장치, 예를 들어, 플립-플롭(flip-flop), 래치(latch), 다른 로직 디바이스 또는 이들의 조합을 포함 할 수 있다. 이러한 조합 로직 연산은 입력 신호를 처리하여 원하는 결과를 얻도록 간단하거나 복잡한 방식으로 구성 될 수 있다. 동기 조합 로직 연산의 몇 가지 실시 예가 설명 되었지만, 이에 제한되지 않으며, 비동기 연산 또는 이들의 혼합이 본원 개시의 권리범위에 포함될 수 있다. 일 실시 예에 따른, 조합 로직 연산은 복수의 상보형금속산화반도체(CMOS) 트랜지스터(transistor)를 포함 할 수 있다. 다양한 실시 예에서, 이들 CMOS 트랜지스터들은 로직 연산들을 수행하는 게이트로 배열 될 수 있다. 상술한 내용은 예시적인 것으로서 본원 개시의 권리범위가 이에 제한되지 않음을 통상의 기술자라면 이해할 수 있을 것이다.The
본원 개시에 따른, 정보 처리 시스템(300)은 휘발성 메모리(320), 예를 들어, 랜덤 액세스 메모리(RAM)를 더 포함 할 수 있다. 본원 개시에 따른, 정보 처리 시스템(300)은 비 휘발성 메모리(330), 예를 들어, 하드 드라이브(hard drive), 광 메모리(optical memory), NAND 또는 플래시 메모리(Flash memory)를 더 포함 할 수 있다. 일 실시 예에 따른, 휘발성 메모리(320), 비 휘발성 메모리(330) 또는 이들의 조합은 "저장 매체(storage medium)"로 지칭 될 수 있다. 다양한 실시 예에서, 휘발성 메모리(320) 및/또는 비 휘발성 메모리(330)는 반영구적 또는 실질적으로 영구적으로 데이터를 저장하도록 구성 될 수 있다.According to the present disclosure, the
다양한 실시 예에서, 정보 처리 시스템 (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
본원 개시에 따른 정보 처리 시스템(300)은 사용자 인터페이스 유닛(350), 예를 들어, 디스플레이 어댑터(display adapter), 햅틱 인터페이스(haptic interface), 휴먼 인터페이스 디바이스(human interface device)를 더 포함 할 수 있다. 다양한 실시 예에서, 사용자 인터페이스 유닛(350)은 사용자로부터 입력을 수신거나 사용자에게 출력을 제공하거나 이들 모두를 수행하도록 구성 될 수 있다. 다른 종류의 디바이스가 사용자와의 인터페이스를 제공하기 위해 이용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백(visual feedback), 청각 피드백(auditory feedback) 또는 촉각 피드백(tactile feedback)과 같은 임의의 형태의 감각 피드백(sensory feedback) 일 수 있다. 사용자로부터의 입력은 어쿠스틱(acoustic), 스피치(speech) 또는 촉각(tactile) 입력을 포함하는 임의의 형태로 수신 될 수 있다.The
다양한 실시 예에서, 정보 처리 시스템 (300)은 하나 이상의 다른 장치 또는 하드웨어 구성 요소, 즉, 다른 하드웨어 디바이스(360), 예를 들어, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 판독기(fingerprint reader), 비디오 프로세서를 포함 할 수 있으나 이에 제한되지 아니한다.In various embodiments,
본원 개시에 따른 정보 처리 시스템 (300)은 하나 이상의 시스템 버스(305)를 더 포함 할 수 있다. 이 때, 시스템 버스 (305)는 프로세서 (310), 휘발성 메모리 (320), 비 휘발성 메모리(330), 네트워크 인터페이스 (340), 사용자 인터페이스 유닛(350) 및 하나 이상의 다른 하드웨어 디바이스(360)를 포함 할 수 있다. 프로세서(310)에 의해 처리된 데이터 또는 비 휘발성 메모리(330) 외부로부터 입력된 데이터는 비 휘발성 메모리(330) 또는 휘발성 메모리 (320)에 저장 될 수 있다The
일 실시 예에 따른 정보 처리 시스템 (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
상술한 반도체 장치는 다양한 패키징 기술을 이용하여 캡슐화(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)
각각의 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.
상기 다른 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.
상기 조합 스테이지는 복수의 서로 다른 로직 연산을 수행할 수 있고,
상기 복수의 서로 다른 로직 연산들 중 하나 이상의 로직 연산이 구성 설정에 기초하여 동적으로 선택되어 수행되는, 장치. 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.
상기 카운터는 상기 입력 신호들 중 선택된 하나의 입력 신호와 관련된 증분 값만큼 증가하고,
상기 입력 신호들 중 상기 선택된 입력 신호는 구성 설정에 기초하여 동적으로 선택되는, 장치.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 부분과 싱글 비트 입력 신호들을 포함하는 제 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.
상기 조합 스테이지는 제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.
상기 조합 스테이지의 상기 제 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.
상기 조합 스테이지는,
각각 상기 입력 신호들의 적어도 일부 또는 상기 조합 스테이지의 다른 부분의 적어도 하나의 출력에 대한 비교 연산을 적어도 수행하는 복수의 비교 스테이지들;
각각 상기 입력 신호들의 적어도 일부 또는 상기 조합 스테이지의 다른 부분의 적어도 하나의 출력에 대한 부울 연산을 수행하는 복수의 부울 스테이지들; 및
상기 복수의 비교 스테이지들 및 상기 복수의 부울 스테이지들은 상기 입력 신호들의 상기 선택된 서브 세트에 대한 하나 이상의 로직 연산을 수행하도록 배치되는, 장치.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.
상기 입력 신호들의 선택된 서브 세트에 대하여 하나 이상의 로직 연산을 수행하는 단계; 및
상기 하나 이상의 로직 연산에 적어도 부분적으로 기초하여 카운터 값을 증가시키는 단계를 포함하는, 방법.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.
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 US10386410B2 (en) | 2016-12-12 | 2017-03-20 | Highly flexible performance counter and system debug module |
US15/464,334 | 2017-03-20 |
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12072378B2 (en) * | 2019-12-09 | 2024-08-27 | 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)
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)
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 |
-
2017
- 2017-12-08 KR KR1020170168476A patent/KR102400556B1/en active IP Right Grant
- 2017-12-11 DE DE102017129380.9A patent/DE102017129380A1/en active Pending
Patent Citations (3)
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 |
---|---|
DE102017129380A1 (en) | 2018-06-14 |
KR20180067432A (en) | 2018-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228419B (en) | Highly flexible performance counter and system debug module | |
US10545189B2 (en) | Granular dynamic test systems and methods | |
EP0897152B1 (en) | Performance counters controlled by programmable logic | |
JP5543675B2 (en) | Debug state machine and processor containing same | |
KR102374380B1 (en) | Method and apparatus for testing artificial intelligence chip, device and storage medium | |
CN108226763B (en) | Method, apparatus and computer program product for scan chain reordering | |
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 | |
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 | |
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 | |
US9134375B1 (en) | Hierarchal test block test pattern reduction in on-product test compression system | |
US20230052788A1 (en) | Software-Defined Synthesizable Testbench | |
Haetzer et al. | A comparison of parallel systemc simulation approaches at RTL | |
Magos et al. | An Accumulator—Based Test-Per-Clock Scheme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |