KR102651864B1 - 하드웨어 액세스 카운터 및 다중 스레드 처리를 조정하기 위한 이벤트 생성 - Google Patents

하드웨어 액세스 카운터 및 다중 스레드 처리를 조정하기 위한 이벤트 생성 Download PDF

Info

Publication number
KR102651864B1
KR102651864B1 KR1020187018994A KR20187018994A KR102651864B1 KR 102651864 B1 KR102651864 B1 KR 102651864B1 KR 1020187018994 A KR1020187018994 A KR 1020187018994A KR 20187018994 A KR20187018994 A KR 20187018994A KR 102651864 B1 KR102651864 B1 KR 102651864B1
Authority
KR
South Korea
Prior art keywords
state
synchronization component
hardware synchronization
states
thread
Prior art date
Application number
KR1020187018994A
Other languages
English (en)
Other versions
KR20180105130A (ko
Inventor
맨킷 로
Original Assignee
비반테 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 비반테 코포레이션 filed Critical 비반테 코포레이션
Publication of KR20180105130A publication Critical patent/KR20180105130A/ko
Application granted granted Critical
Publication of KR102651864B1 publication Critical patent/KR102651864B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/521Atomic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Advance Control (AREA)

Abstract

컴퓨터 시스템은 하드웨어 동기화 구성 요소(HSC)를 포함한다. 다수의 동시 실행 스레드는 HSC의 상태를 업데이트하는 명령을 발행한다. 다수의 스레드는 동일한 클록 사이클에서 상태를 업데이트할 수 있으며, 스레드는 그 상태를 업데이트하기 전에 HSC의 제어를 받을 필요가 없다. 동일한 클록 사이클 동안 수신된 상태를 참조하는 명령이 집계되고, 명령의 수에 따라 상태가 업데이트된다. 이 상태는 임계값 조건에 대해 평가된다. 만약 임계값 조건이 만족되면 HSC는 이벤트를 프로세서에 출력한다. 이후 상기 프로세서는 이벤트에 의해 영향을 받은 스레드를 식별하고 이 이벤트에 기초하여 미리 결정된 동작(예를 들어, 스레드의 차단, 분기, 차단 해제)을 취한다.

Description

하드웨어 액세스 카운터 및 다중 스레드 처리를 조정하기 위한 이벤트 생성
본 발명은 다수의 동시적으로 실행되는 스레드 간의 동작들을 조정하기 위한 시스템 및 방법에 관한 것이다.
종래의 컴퓨터 시스템에서, 처리 자원들을 최상으로 이용하기 위해 다수의 실행 스레드가 실행될 수 있다. 그러나 많은 애플리케이션에서 별도의 실행 스레드 간에 조정이 필요하다. 이것은 다른 스레드와 공유되는 이벤트를 스레드에 생성함으로써 적은 수의 스레드에 대해 용이하게 수행되고 나서 다른 스레드들은 이 이벤트에 기초하여 적절한 조치를 취하게 한다. 그러나 이 접근법은 지연과 높은 처리 오버헤드를 초래한다.
본 명세서에 기술된 시스템 및 방법은 스레드들 간을 조정하기 위한 개선된 접근법을 제공한다.
본 발명의 장점들을 보다 용이하게 이해할 수 있기 위해, 앞서 간단히 설명된 본 발명의 보다 구체적인 설명이 첨부된 도면들에 도시된 특정 실시예들을 참조하여 제공될 것이다. 이들 도면은 단지 본 발명의 예시적인 실시예만을 도시하는 것일 뿐, 본 발명의 범위를 제한하는 것으로 고려되어서는 안 되는 것으로 이해하면서, 본 발명은 첨부된 도면의 사용을 통해 보다 구체적이고 상세히 설명되고 기술될 것이다.
도 1은 본 발명의 실시예에 따른 방법을 구현하기에 적합한 컴퓨터 시스템의 개략 블록도이다;
도 2는 본 발명의 일 실시예에 따른 하드웨어 이벤트 생성을 구현하는 구성 요소의 개략 블록도이다;
도 3은 본 발명의 일 실시예에 따라 이벤트를 생성하기 위한 하드웨어 카운터를 업데이트하는 방법의 프로세스 흐름도이다;
도 4는 본 발명의 일 실시예에 따른 하드웨어 카운터들에 기초하여 이벤트들을 생성하는 방법의 프로세스 흐름도이다; 및
도 5는 본 발명의 일 실시예에 따라 하드웨어로 생성된 이벤트를 처리하기 위한 방법의 프로세스 흐름도이다.
본 명세서에서 일반적으로 기술되고 도면에 도시된 바와 같은 본 발명의 구성 요소들은 다양한 상이한 구성으로 배열되고 설계될 수 있다는 것이 쉽게 이해될 수 있을 것이다. 따라서, 도면들에 나타난 바와 같이, 본 발명의 실시예들에 관한 이하의 보다 상세한 설명은 청구된 바와 같은 본 발명의 범위를 제한하려고 의도된 것이 아니라, 단지 본 발명에 따라 현재 고려되는 실시예의 특정 예들을 나타내는 것일 뿐이다. 현재 설명된 실시예는 도면을 참조하여 가장 잘 이해될 것이며, 도면에서 동일한 부분은 도면 전체에 걸쳐 동일한 부호로 표시된다.
본 발명에 따른 실시예는 장치, 방법 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 발명은 완전히 하드웨어적인 실시예, 완전히 소프트웨어적인 실시예(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함), 또는 모두 일반적으로 본 명세서에서 "모듈" 또는 "시스템"으로 지칭될 수 있는 소프트웨어 및 하드웨어 양태들을 결합한 실시예의 형태를 취할 수 있다. 나아가, 본 발명은 컴퓨터 사용 가능한 프로그램 코드를 갖는 임의의 유형적인 표현 매체에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
비-일시적인 매체를 포함하여, 하나 이상의 컴퓨터 사용 가능한 또는 컴퓨터 판독 가능한 매체의 임의의 조합이 사용될 수 있다. 예를 들어, 컴퓨터 판독 가능한 매체는 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM) 디바이스, 판독 전용 메모리(ROM) 디바이스, 소거 가능한 프로그래밍 가능한 판독 전용 메모리(EPROM 또는 플래시 메모리) 디바이스, 휴대용 콤팩트 디스크 판독 전용 메모리(CDROM), 광학 저장 디바이스, 및 자기 저장 디바이스 중 하나 이상을 포함할 수 있다. 선택된 실시예에서, 컴퓨터 판독 가능한 매체는 명령 실행 시스템, 장치 또는 디바이스에 의해 사용하기 위해 또는 이와 관련하여 사용하기 위해 프로그램을 포함하거나, 저장하거나, 통신하거나, 전파하거나 또는 전송할 수 있는 임의의 비-일시적인 매체를 포함할 수 있다.
본 발명의 동작을 수행하기 위한 컴퓨터 프로그램 코드는 자바(Java), 스몰토크(Smalltalk), C++ 등과 같은 객체-지향 프로그래밍 언어, 및 "C" 프로그래밍 언어 또는 이와 유사한 프로그래밍 언어와 같은 종래의 절차형 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 완전히 컴퓨터 시스템 상에서 독립형 소프트웨어 패키지로서 실행되거나, 독립형 하드웨어 유닛 상에서 실행되거나, 부분적으로 컴퓨터로부터 어느 정도 떨어져 있는 원격 컴퓨터 상에서 실행되거나, 또는 완전히 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 완전히 원격 컴퓨터 또는 서버 상세서 실행되는 시나리오에서, 원격 컴퓨터는 근거리 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하는 임의의 유형의 네트워크를 통해 컴퓨터에 연결될 수 있거나, 또는 (예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 연결될 수 있다.
본 발명은 본 발명의 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 아래에서 설명된다. 흐름도 및/또는 블록도의 각 블록, 및 흐름도 및/또는 블록도의 블록들의 조합은 컴퓨터 프로그램 명령 또는 코드에 의해 구현될 수 있는 것으로 이해된다. 이들 컴퓨터 프로그램 명령은 일반 목적 컴퓨터, 특수 목적 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 장치의 프로세서에 제공되어, 이 명령이 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 장치의 프로세서를 통해 실행될 때 흐름도 및/또는 블록도의 블록 또는 블록들에 지정된 기능들/행위들을 구현하는 수단을 생성하는 기계를 형성하게 할 수 있다.
이들 컴퓨터 프로그램 명령은 또한 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 장치가 특정 방식으로 기능하도록 명령할 수 있는 것으로 비-일시적인 컴퓨터 판독 가능한 매체에 저장되어, 컴퓨터 판독 가능한 매체에 저장된 명령이 흐름도 및/또는 블록도의 블록 또는 블록들에 지정된 기능들/행위들을 구현하는 명령 수단을 포함하는 제조 물품을 형성하게 할 수 있다.
이들 컴퓨터 프로그램 명령은 또한 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 장치 상에 로딩되어, 일련의 동작 단계들을 컴퓨터 또는 다른 프로그램 가능한 장치 상에서 수행하여 컴퓨터로 구현되는 프로세스를 생성함으로써, 컴퓨터 또는 다른 프로그램 가능한 장치 상에서 실행되는 명령이 흐름도 및/또는 블록도의 블록 또는 블록들에서 지정된 기능들/행위들을 구현하는 프로세스들을 제공하게 할 수 있다.
도 1은 예시적인 컴퓨팅 디바이스(100)를 나타내는 블록도이다. 컴퓨팅 디바이스(100)는 본 명세서에서 논의된 것과 같은 다양한 절차를 수행하는 데 사용될 수 있다. 컴퓨팅 디바이스(100)는 서버, 클라이언트, 또는 임의의 다른 컴퓨팅 엔티티로서 기능할 수 있다. 컴퓨팅 디바이스는 본 명세서에서 논의된 바와 같이 다양한 모니터링 기능을 수행할 수 있으며, 본 명세서에 설명된 애플리케이션 프로그램과 같은 하나 이상의 애플리케이션 프로그램을 실행할 수 있다. 컴퓨팅 디바이스(100)는 데스크탑 컴퓨터, 노트북 컴퓨터, 서버 컴퓨터, 핸드헬드 컴퓨터, 태블릿 컴퓨터 등과 같은 다양한 컴퓨팅 디바이스 중 임의의 것일 수 있다.
컴퓨팅 디바이스(100)는 하나 이상의 프로세서(들)(102), 하나 이상의 메모리 디바이스(들)(104), 하나 이상의 인터페이스(들)(106), 하나 이상의 대용량 저장 디바이스(들)(108), 하나 이상의 입력/출력(I/O) 디바이스(들)(110) 및 디스플레이 디바이스(130)를 포함하고, 이들은 모두 버스(112)에 연결된다. 프로세서(들)(102)는 메모리 디바이스(들)(104) 및/또는 대용량 저장 디바이스(들)(108)에 저장된 명령을 실행하는 하나 이상의 프로세서 또는 제어기를 포함한다. 프로세서(들)(102)는 또한 캐시 메모리와 같은 다양한 유형의 컴퓨터 판독 가능한 매체를 포함할 수 있다.
메모리 디바이스(들)(104)는 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM)(114)) 및/또는 비-휘발성 메모리(예를 들어, 판독 전용 메모리(ROM)(116))와 같은 다양한 컴퓨터 판독 가능한 매체를 포함한다. 메모리 디바이스(들)(104)는 또한 플래시 메모리와 같은 재기록 가능한 ROM을 더 포함할 수 있다.
대용량 저장 디바이스(들)(108)는 자기 테이프, 자기 디스크, 광학 디스크, 솔리드-스테이트 메모리(예를 들어, 플래시 메모리) 등과 같은 다양한 컴퓨터 판독 가능한 매체를 포함한다. 도 1에 도시된 바와 같이, 특정 대용량 저장 디바이스는 하드 디스크 드라이브(124)이다. 다양한 드라이브가 다양한 컴퓨터 판독 가능한 매체로부터 판독하거나 및/또는 이 매체에 기록할 수 있기 위해 대용량 저장 디바이스(들)(108)에 더 포함될 수 있다. 대용량 저장 디바이스(들)(108)는 이동식 매체(126) 및/또는 고정식 매체를 포함한다.
I/O 디바이스(들)(110)는 데이터 및/또는 다른 정보를 컴퓨팅 디바이스(100)에 입력하거나 이 컴퓨팅 디바이스로부터 검색할 수 있는 다양한 디바이스를 포함한다. 예시적인 I/O 디바이스(들)(110)는 커서 제어 디바이스, 키보드, 키패드, 마이크로폰, 모니터, 또는 다른 디스플레이 디바이스, 스피커, 프린터, 네트워크 인터페이스 카드, 모뎀, 렌즈, CCD 또는 다른 이미지 캡처 디바이스 등을 포함한다.
디스플레이 디바이스(130)는 컴퓨팅 디바이스(100)의 하나 이상의 사용자에게 정보를 디스플레이할 수 있는 임의의 유형의 디바이스를 포함한다. 디스플레이 디바이스(130)의 예로는 모니터, 디스플레이 단말, 비디오 프로젝션 디바이스 등을 포함한다.
그래픽 처리 유닛(GPU)(132)은 프로세서(들)(102) 및/또는 디스플레이 디바이스(130)에 연결될 수 있다. GPU는 컴퓨터로 생성된 이미지를 렌더링하고 다른 그래픽 처리를 수행하도록 동작 가능할 수 있다. GPU는 프로세서(들)(102)와 같은 일반 목적 프로세서의 기능의 일부 또는 전부를 포함할 수 있다. GPU는 또한 그래픽 처리에 특정된 추가적인 기능을 포함할 수 있다. GPU는 좌표 변환, 음영 처리, 텍스처 처리, 래스터 처리, 및 컴퓨터로 생성된 이미지를 렌더링하는데 유용한 다른 기능과 관련된 하드-코딩식 및/또는 하드-와이어식 그래픽 기능을 포함할 수 있다.
인터페이스(들)(106)는 컴퓨팅 디바이스(100)가 다른 시스템, 디바이스 또는 컴퓨팅 환경과 상호 작용할 수 있게 하는 다양한 인터페이스를 포함한다. 예시적인 인터페이스(들)(106)는 근거리 네트워크(LAN), 광역 네트워크(WAN), 무선 네트워크 및 인터넷에 대한 인터페이스와 같은 임의의 수의 상이한 네트워크 인터페이스(120)를 포함한다. 다른 인터페이스(들)는 사용자 인터페이스(118) 및 주변 디바이스 인터페이스(122)를 포함한다. 인터페이스(들)(106)는 또한 하나 이상의 사용자 인터페이스 요소(118)를 더 포함할 수 있다. 인터페이스(들)(106)는 또한 프린터, 포인팅 디바이스(마우스, 트랙 패드 등), 키보드 등을 위한 인터페이스와 같은 하나 이상의 주변 인터페이스를 더 포함할 수 있다.
버스(112)는 프로세서(들)(102), 메모리 디바이스(들)(104), 인터페이스(들)(106), 대용량 저장 디바이스(들)(108) 및 I/O 디바이스(들)(110)가 서로 통신하게 할 수 있을 뿐만 아니라 버스(112)에 연결된 다른 디바이스들 또는 구성 요소들과 통신하게 할 수 있다. 버스(112)는 시스템 버스, PCI 버스, IEEE 1394 버스, USB 버스 등과 같은 여러 유형의 버스 구조 중 하나 이상을 나타낸다.
예시를 위해, 프로그램들 및 다른 실행 가능한 프로그램 구성 요소들은 본 명세서에서 이산 블록들로서 도시되어 있으나, 이러한 프로그램 및 구성 요소는 컴퓨팅 디바이스(100)의 상이한 저장 구성 요소들에 다양한 시간에 상주할 수 있고 프로세서(들)(102)에 의해 실행되는 것으로 이해된다. 대안적으로, 본 명세서에 설명된 시스템 및 절차는 하드웨어로 구현되거나, 또는 하드웨어, 소프트웨어 및/또는 펌웨어의 조합으로 구현될 수 있다. 예를 들어, 하나 이상의 주문형 집적 회로(ASIC)가 본 명세서에 설명된 시스템들 및 절차들 중 하나 이상을 수행하도록 프로그래밍될 수 있다.
도 2를 참조하면, 처리 디바이스(102)는 하나 이상의 스레드(200)를 실행할 수 있다. 전술된 바와 같이, 컴퓨터 시스템(100)은 복수의 처리 디바이스(102)를 포함할 수 있다. 처리 디바이스(102)들 중 임의의 하나의 처리 디바이스 또는 처리 디바이스(102)의 조합은 이하에서 "처리 디바이스"(102)에 속하는 기능을 수행할 수 있다. 스레드들은 처리 디바이스(102)에 의해 실행되는 애플리케이션에 의해 인스턴스화될 수 있다. 프로세서는 처리 자원을 분배하고 하나의 스레드(200)로부터 다른 스레드로 종래의 방식으로 실행을 스위칭할 수 있다. 스레드(200)들은 하드웨어 동기화 구성 요소(hardware synchronization component: HSC)(202)에 명령을 발행할 수 있다. HSC(202)는 명령을 수신하고 그 상태를 업데이트한다. HSC(202)의 상태에 기초하여, HSC(202)는 이벤트(204)를 스레드 스케줄러(thread scheduler)(206)에 출력할 수 있다. 이후 스레드 스케줄러(206)는 하나 이상의 프로세서 스레드(200)의 실행을 변경할 수 있다. 예를 들어, 스레드 스케줄러(206)는 이벤트(204)에 응답하여 스레드(200)들 중 하나의 스레드가 차단, 차단 해제 또는 분기하게 할 수 있다.
HSC(202)는 집계기(aggregator)(208)를 포함할 수 있다. HSC(202)는 각각이 개별적으로 어드레싱될 수 있는 복수의 상태를 포함할 수 있다. 각각의 상태는 상태를 한정하는 하나 이상의 값을 포함할 수 있다. 따라서, 집계기(208)는, 기간(period) 동안, 예를 들어, 프로세서(102), HSC(202), 버스(112) 또는 다른 구성 요소의 클록 사이클 동안, 수신된 각각의 상태의 각각의 값을 참조하는 명령을 집계할 수 있다.
각각의 상태의 각각의 값에 대해, 카운터(210a-210b)가 업데이트될 수 있다. 특히, 각각의 카운터(210a-210b)는 클록 사이클 동안 개별 상태 및 상태 값을 참조하는 다수의 명령을 카운트할 수 있다.
주기적으로, 예를 들어, 클록 사이클당 한번씩, 관계 함수(relation function)(212)가 각각의 상태에 대해 실행될 수 있다. 관계 함수(212)는 각각의 상태에 대한 출력 값을 생성할 수 있다. 이후, 출력 값은 임계값 비교기(214)에 입력된다. 임계값 비교기는 다른 입력으로서 임계값(216)을 취한다. 임계값(216)은 각각의 상태에 대해 동일한 것이거나 또는 하나 이상의 상태가 상이한 임계값(216)을 가질 수 있다.
임계값 비교기(214)가 출력 값이 상태에 대한 임계값(216)에 의해 지정된 임계값 조건을 만족한다고 결정하면, 이벤트(204)가 생성된다. 일부 실시예에서, 임계값 조건이 만족되지 않을 때, 임계값 비교기(214)는 생성된 이벤트(204)의 레코드를 유지하고, 이벤트를 클리어(clear)할 수 있다. 예를 들어, 관계 함수(212) 및 비교기(214)의 실행을 반복할 때, 임계값 조건(216)을 만족하는 것으로 인해 상태에 대해 이벤트(204)가 생성될 수 있다. 후속 반복에서, 관계 함수(212)의 출력 값은 더 이상 임계값 조건(216)을 만족하지 않을 수 있다. 따라서, 임계값 조건(216)이 더 이상 만족되지 않는다는 것을 검출한 것에 응답하여, 이 사실을 나타내는 이벤트(204)가 생성될 수 있다.
전술된 바와 같이, HSC는 다수의 상태를 구현할 수 있다. 따라서, 하나 이상의 MUX(218a-218b)은 각각의 상태의 카운터(210a-210b) 값들을 관계 함수(212) 및 비교기(214)에 선택적으로 연결하여, 동일한 회로들이 다수의 상태를 평가하는데 사용되게 할 수 있다.
도 2에 도시된 구성 요소들은 동시에 실행되는 스레드들 간에 임의의 유형의 동기화를 수행하는데 사용될 수 있다. 전술된 설명으로부터 명백한 바와 같이, 다수의 스레드는 각각 다른 스레드가 HSC(202)의 상태를 업데이트하는 것이 완료되기를 기다리지 않고 HSC(202)의 상태들 중 하나의 상태를 업데이트할 수 있다.
일 예에서, 상태는 선입선출 버퍼를 구현할 수 있다. 이 예에서, 카운터(210a)는 FIFO 버퍼에 대한 기록 명령들을 카운트하고, 카운터(210b)는 FIFO 버퍼에 대한 판독 명령들을 카운트할 수 있다. 관계 함수(212)는 카운터(210a)로부터 카운터(210b)의 값을 감산할 수 있다. 비교기(214)는 하나 이상의 임계값에 대해 이 차이를 평가할 수 있다. 이 차이가 0이면 FIFO 버퍼가 비어 있다(empty). 이 차이가 제1 임계값 미만이면, FIFO 버퍼는 거의 비어 있다. 이 차이가 FIFO 버퍼의 크기와 같으면 FIFO 버퍼는 가득 차 있다(full). 이 차이가 제1 임계값보다 더 큰 제2 임계 값(예를 들어, 버퍼 크기의 90%)을 초과하면, FIFO 버퍼는 거의 가득 차 있다. 따라서, 임계값(216)은 거의 비어 있는 상태를 나타내는 낮은 값, 및 거의 가득 차 있는 상태를 나타내는 높은 값을 지정할 수 있다. 이후 임계값 비교기(214)는 이 차이가 전술한 조건들 중 임의의 조건을 만족하는 것에 기초하여 일부 또는 전부의 비어 있음, 거의 비어 있음, 가득 차 있음, 및 거의 가득 차 있음 이벤트를 생성할 수 있다.
다른 예에서, 상태는 단일 값을 포함할 수 있고, 이 값이 임계값 조건을 만족하는 (예를 들어, 임계값을 초과하거나 또는 임계값 미만인) 것에 응답하여 이벤트가 생성된다.
도 3을 참조하면, 예시된 방법(300)은 HSC(202)에 의해 실행될 수 있다. 방법(300)은 전술된 바와 같이 클록 사이클마다 한번 실행될 수 있다. 방법(300)은 HSC(202)의 각각의 상태의 각각의 값에 대해 실행될 수 있다. 방법(300)은 클록 사이클 동안 0개 이상의 명령을 수신하는 단계(302), 이 사이클 동안 수신된 명령의 수를 집계(예를 들어, 카운트)하는 단계(304), 및 예를 들어 단계(304)에서의 명령의 수만큼 카운터를 증분시킴으로써 각각의 상태의 각각의 값에 대해 카운터를 업데이트하는 단계(306)를 포함한다.
도 4를 참조하면, 예시된 방법(400)은 HSC(202)에 의해 실행될 수 있다. 방법(400)은 클록 사이클마다 또는 N개의 클록 사이클마다 한번 실행될 수 있으며, 여기서 N은 1보다 더 크다. 방법(400)은 HSC(202)의 각각의 상태에 대해 실행될 수 있다. 일부 실시예에서, 방법(400)은 상태가 클록 사이클 또는 바로 이전의 클록 사이클 동안 변경된 경우에만 상태에 대해 실행된다.
방법(400)은 상태 값에 관한 관계 함수를 실행하는 단계(402)를 포함한다. 이 관계 함수는 다른 카운터의 값으로부터 하나의 카운터의 값을 감산하거나, 카운터 값들을 합산하거나, 카운터 값들을 곱셈하거나, 또는 임의의 임의 함수에 카운터 값들을 입력하는 것을 포함할 수 있다. 이후 관계 함수의 출력은 임계값 조건과 비교된다(404). 이 조건이 만족된 것으로 발견되면(406), 임계값 조건이 만족된다는 것을 나타내는 이벤트가 출력된다. 만약 만족되지 않는다면, 방법(400)은 종료한다. 일부 실시예에서, 다수의 임계값 조건이 상태에 대해 한정될 수 있다. 따라서, 생성된 이벤트(408)는 만족되는 임계값 조건을 참조할 수 있다. 임계값 조건은 함수 값의 출력이 임계값을 초과하거나 임계값 미만이라거나 또는 임계값 범위 내에 위치된 것을 포함할 수 있다.
도 5를 참조하면, 예시된 방법(500)은 처리 디바이스(102)에 의해 실행되거나, 또는 처리 디바이스(102)에 연결되고 스레드 스케줄링 기능을 수행하도록 프로그래밍된 구성 요소에 의해 실행될 수 있다. 방법(500)은 이벤트가 HSC(202)에 의해 생성되었는지 여부를 평가하는 단계(502)를 포함할 수 있다. 만약 그렇다면, 하나 이상의 영향을 받은 스레드가 식별될 수 있다(504). 예를 들어, 애플리케이션은 HSC 상태를 인스턴스화하고, HSC 상태로부터 이벤트를 수신하기 위해 스레드 스케줄러(206)에 하나 이상의 애플리케이션 스레드를 추가로 등록할 수 있다. 애플리케이션은 이벤트에 응답하여 스레드 스케줄러(206)에 의해 수행될 동작을 추가로 지정할 수 있다. 예를 들어, 애플리케이션은 HSC 상태에 대해 생성된 특정 이벤트에 응답하여 스레드를 차단하거나 다른 스레드로 분기할 것을 지정할 수 있다.
따라서, 이벤트에 의해 영향을 받는 스레드를 식별하는 단계(504)는, 애플리케이션에 의해 등록된 스레드를, 이벤트가 생성되었거나 및/또는 단계(502)에서 수신된 이벤트의 이벤트 유형을 수신하도록 등록된 HSC 상태에 대응하는 것으로 식별하는 단계를 포함할 수 있다. 방법(500)은 이벤트에 응답하여 수행될 동작(예를 들어, 차단, 차단 해제, 분기, 종료 등)을 식별하는 단계(506)를 포함할 수 있다. 수행될 동작은 특정 상태의 특정 이벤트에 대해 스레드를 등록할 때 애플리케이션에 의해 스레드 스케줄러에 지정될 수 있다. 따라서, 지정된 동작은 단계(506)에서 스레드 스케줄러에 의해 검색될 수 있다. 이후, 지정된 동작이 실행될 수 있다(508). 따라서, 각각의 영향을 받은 스레드에 대해, 영향을 받은 스레드는 지정된 동작에 따라 차단되거나, 차단 해제되거나, 분기되거나, 종료되거나 등이 수행될 수 있다.
본 발명은 본 발명의 사상 또는 본질적인 특성을 벗어나지 않고 다른 특정 형태로 구현될 수 있다. 설명된 실시예들은 모든 면에서 단지 예시적인 것으로 고려되어야 하며, 본 발명을 제한하려는 것이 아니다. 그리하여, 본 발명의 범위는 전술된 설명에 의해서가 아니라 첨부된 청구범위에 의해서 한정된다. 청구범위 및 그 균등범위 내에 있는 모든 변형은 본 발명의 범위 내에 포함되어야 한다.

Claims (20)

  1. 방법으로서,
    실행 가능한 데이터를 저장하는 메모리 디바이스를 제공하는 단계;
    상기 메모리 디바이스에 연결되고 상기 실행 가능한 데이터를 검색하고 실행하도록 동작 가능한 처리 디바이스를 제공하는 단계;
    상기 처리 디바이스에 동작 가능하게 연결되고 하나 이상의 상태를 포함하는 하드웨어 동기화 구성 요소를 제공하는 단계;
    상기 처리 디바이스에 의해 복수의 실행 스레드를 동시에 실행하는 단계;
    상기 복수의 실행 스레드에 의해, 상기 하드웨어 동기화 구성 요소에 명령들을 발행하되, 상기 명령은 하나 이상의 상태들의 각각의 상태에 대하여 동일한 클록 사이클 내에 상기 각각 상태로 어드레싱되는 다중 명령을 포함하는 단계;
    하나 이상의 상태들의 각각의 상태에 대하여, 상기 각각의 상태에 대하여 집계 명령을 얻기 위해 상기 각각의 상태로 어드레싱되는 다중 명령을 집계하는 단계;
    상기 하드웨어 동기화 구성 요소에 의해, 상기 각각의 상태에 대한 상기 집계 명령에 따라 하나 이상의 상태들의 각각의 상태를 업데이트하는 단계;
    상기 하드웨어 동기화 구성 요소에 의해, 상기 하드웨어 동기화 구성 요소의 하나 이상의 상태가 임계값 조건을 만족하는지를 결정하는 단계;
    상기 하드웨어 동기화 구성 요소의 하나 이상의 상태가 상기 임계값 조건을 만족하는 것으로 결정한 것에 응답하여, 상기 하드웨어 동기화 구성 요소에 의해 이벤트를 상기 처리 디바이스에 출력하는 단계; 및
    상기 하드웨어 동기화 구성 요소로부터 상기 이벤트를 수신한 것에 응답하여, 상기 처리 디바이스에 의해, 상기 복수의 실행 스레드 중 적어도 하나의 스레드의 실행을 변경하는 단계;
    를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 처리 디바이스에 의해 스레드 스케줄러에 상기 이벤트를 입력하는 단계; 및
    상기 이벤트에 응답하여 상기 스레드 스케줄러에 의해 상기 적어도 하나의 스레드의 실행을 변경하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서, 상기 적어도 하나의 스레드의 실행을 변경하는 단계는 상기 적어도 하나의 스레드를 차단하는 단계와 상기 적어도 하나의 스레드가 분기하도록 명령하는 단계 중 적어도 하나를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서, 상기 각각의 상태에 대한 집계 명령에 따라 하나 이상의 상태들의 각각의 상태를 업데이트하는 단계는 상기 동일한 클록 사이클 내에 상기 각각의 상태로 어드레싱된 상기 다중 명령의 수만큼 카운터를 증분시키는 단계를 포함하고;
    상기 하드웨어 동기화 구성 요소의 하나 이상의 상태가 상기 임계값 조건을 만족하는지를 결정하는 단계는 상기 카운터가 상기 임계값 조건을 만족하는지를 결정하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서, 상기 명령은 제1 명령 및 제2 명령을 포함하며,
    상기 집계 명령에 따라 상기 하드웨어 동기화 구성 요소의 하나 이상의 상태의 각각의 상태를 업데이트하는 단계는,
    상기 제1 명령의 수만큼 제1 카운터를 증분하는 단계; 및
    상기 제2 명령의 수만큼 제2 카운터를 증분시키는 단계;
    를 포함하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서, 상기 하드웨어 동기화 구성 요소의 하나 이상의 상태가 상기 임계값 조건을 만족하는지를 결정하는 단계는,
    상기 제1 카운터의 제1 값 및 상기 제2 카운터의 제2 값을 함수에 입력하여 함수 출력을 얻는 단계; 및
    상기 함수 출력이 상기 임계값 조건을 만족하는지를 결정하는 단계;
    를 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서, 상기 함수는 상기 제1 값과 상기 제2 값 사이의 차이인 것을 특징으로 하는 방법.
  8. 제7항에 있어서, 상기 제1 명령은 기록 명령이고, 상기 제2 명령은 판독 명령이며, 상기 판독 명령과 기록 명령은 선입선출(first-in-first-out) 버퍼를 참조하는 것을 특징으로 하는 방법.
  9. 시스템으로서,
    실행 가능한 데이터를 저장하는 메모리 디바이스;
    상기 메모리 디바이스에 연결되고 상기 실행 가능한 데이터를 검색하고 실행하도록 동작 가능한 처리 디바이스; 및
    상기 처리 디바이스에 동작 가능하게 연결되고 하나 이상의 상태를 정의하는 하드웨어 동기화 구성 요소를 포함하고;
    상기 처리 디바이스는,
    상기 처리 디바이스에 의해 복수의 실행 스레드를 동시에 실행하고;
    하나 이상의 상태를 업데이트하기 위해 상기 복수의 스레드들로부터 상기 하드웨어 동기화 구성 요소로 명령을 발행하도록 프로그래밍되고;
    상기 하드웨어 동기화 구성 요소는, 하나 이상의 상태의 각각의 상태에 대하여,
    하나의 클록의 각각의 사이클에 대하여, 상기 각각의 상태에 대한 집계 명령을 얻기 위해 상기 각각의 사이클 동안 수신되는 각각의 상태를 업데이트하는 명령을 집계하고;
    상기 각각의 상태의 집계 명령에 따라 상기 하드웨어 동기화 구성 요소의 각각의 상태를 업데이트하고;
    상기 하나 이상의 상태가 임계값 조건을 만족할 때, 이벤트를 상기 처리 디바이스에 출력하도록 프로그래밍되고;
    상기 처리 디바이스는 상기 이벤트에 응답하여 상기 복수의 실행 스레드 중 적어도 하나의 스레드의 실행을 변경하도록 더 프로그래밍된 것을 특징으로 하는 시스템.
  10. 제9항에 있어서, 상기 처리 디바이스는,
    스레드 스케줄러에 상기 이벤트를 입력하고;
    상기 이벤트에 응답하여 상기 스레드 스케줄러에 의해 상기 적어도 하나의 스레드의 실행을 변경하도록 더 프로그래밍된 것을 특징으로 하는 시스템.
  11. 제9항에 있어서, 상기 처리 디바이스는 상기 적어도 하나의 스레드를 차단하는 것과 상기 적어도 하나의 스레드가 분기하도록 명령하는 것 중 적어도 하나에 의해 상기 적어도 하나의 스레드의 실행을 변경하도록 프로그래밍된 것을 특징으로 하는 시스템.
  12. 제9항에 있어서, 상기 하드웨어 동기화 구성 요소는, 상기 각각의 클록 사이클 내에 각각의 상태로 어드레싱되는 명령의 수만큼 각각의 상태에 대응하는 카운터를 증분시킴으로써 상기 각각의 상태에 대한 집계 명령에 따라 하나 이상의 상태의 각각의 상태를 업데이트하도록 프로그래밍되며,
    상기 하드웨어 동기화 구성 요소는 상기 카운터가 상기 임계값 조건을 만족하는지를 결정하는 것에 의해 상기 하드웨어 동기화 구성 요소의 하나 이상의 상태가 상기 임계값 조건을 만족하는지를 결정하도록 프로그래밍된 것을 특징으로 하는 시스템.
  13. 제9항에 있어서, 상기 하드웨어 동기화 구성 요소는,
    상기 클록의 각각의 사이클 동안 수신된 상기 명령 중 제1 명령의 수만큼 제1 카운터를 증분시키고;
    상기 클록의 각각의 사이클 동안 수신된 상기 명령 중 제2 명령의 수만큼 제2 카운터를 증분시키는 것에 의해,
    상기 하드웨어 동기화 구성 요소의 하나 이상의 상태를 업데이트하도록 프로그래밍된 것을 특징으로 하는 시스템.
  14. 제13항에 있어서, 상기 하드웨어 동기화 구성 요소는,
    상기 제1 카운터의 제1 값 및 상기 제2 카운터의 제2 값을 함수에 입력하여 함수 출력을 얻고;
    상기 함수 출력이 상기 임계값 조건을 만족하는지를 결정하는 것에 의해,
    상기 하드웨어 동기화 구성 요소의 하나 이상의 상태가 상기 임계값 조건을 만족하는지를 결정하도록 프로그래밍되며,
    상기 함수는 상기 제1 값과 상기 제2 값 사이의 차이인 것을 특징으로 하는 시스템.
  15. 제14항에 있어서, 상기 제1 명령은 기록 명령이고, 상기 제2 명령은 판독 명령이며, 상기 판독 명령과 기록 명령은 선입선출 버퍼를 참조하는 것을 특징으로 하는 시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020187018994A 2015-12-11 2016-12-12 하드웨어 액세스 카운터 및 다중 스레드 처리를 조정하기 위한 이벤트 생성 KR102651864B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/966,867 2015-12-11
US14/966,867 US9928117B2 (en) 2015-12-11 2015-12-11 Hardware access counters and event generation for coordinating multithreaded processing
PCT/US2016/066110 WO2017100749A1 (en) 2015-12-11 2016-12-12 Hardware access counters and event generation for coordinating multithreaded processing

Publications (2)

Publication Number Publication Date
KR20180105130A KR20180105130A (ko) 2018-09-27
KR102651864B1 true KR102651864B1 (ko) 2024-03-26

Family

ID=59013415

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187018994A KR102651864B1 (ko) 2015-12-11 2016-12-12 하드웨어 액세스 카운터 및 다중 스레드 처리를 조정하기 위한 이벤트 생성

Country Status (6)

Country Link
US (1) US9928117B2 (ko)
EP (1) EP3387524B1 (ko)
JP (1) JP6966999B2 (ko)
KR (1) KR102651864B1 (ko)
CN (1) CN108292230B (ko)
WO (1) WO2017100749A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114490001A (zh) * 2022-02-17 2022-05-13 支付宝(杭州)信息技术有限公司 一种聚合事件流的执行方法、装置以及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138639A1 (en) * 2003-12-18 2005-06-23 Hagan Stephen C. Method and system for maintaining a running count of events updated by two asynchronous processes
US20050149697A1 (en) * 2003-02-19 2005-07-07 Enright Natalie D. Mechanism to exploit synchronization overhead to improve multithreaded performance
US20140380020A1 (en) * 2013-06-24 2014-12-25 Honeywell International Inc. System and methods for synchronization of redundant processing elements

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4531826A (en) 1982-04-30 1985-07-30 Danyl Corporation Event counter and access controller
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5901302A (en) * 1995-01-25 1999-05-04 Advanced Micro Devices, Inc. Superscalar microprocessor having symmetrical, fixed issue positions each configured to execute a particular subset of instructions
US5889947A (en) * 1996-12-16 1999-03-30 International Business Machines Corporation Apparatus and method for executing instructions that select a storage location for output values in response to an operation count
US6263410B1 (en) 1998-09-15 2001-07-17 Industrial Technology Research Institute Apparatus and method for asynchronous dual port FIFO
WO2003003232A2 (en) * 2001-06-29 2003-01-09 Koninklijke Philips Electronics N.V. Data processing apparatus and a method of synchronizing a first and a second processing means in a data processing apparatus
EP1459181A2 (en) * 2001-12-14 2004-09-22 Koninklijke Philips Electronics N.V. Method for data processing in a multi-processor data processing system and a corresponding data processing system
JP2005284749A (ja) * 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ
CN1828544B (zh) * 2005-03-02 2013-01-02 英特尔公司 利用同步开销以改善多线程性能的机制
US7543136B1 (en) 2005-07-13 2009-06-02 Nvidia Corporation System and method for managing divergent threads using synchronization tokens and program instructions that include set-synchronization bits
GB0524720D0 (en) 2005-12-05 2006-01-11 Imec Inter Uni Micro Electr Ultra low power ASIP architecture II
US7788468B1 (en) 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US7426253B2 (en) 2006-08-21 2008-09-16 International Business Machines Corporation Low latency counter event indication
US8381203B1 (en) 2006-11-03 2013-02-19 Nvidia Corporation Insertion of multithreaded execution synchronization points in a software program
US8108659B1 (en) 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
US7958333B2 (en) 2007-05-30 2011-06-07 XMOS Ltd. Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
US9043553B2 (en) * 2007-06-27 2015-05-26 Microsoft Technology Licensing, Llc Leveraging transactional memory hardware to accelerate virtualization and emulation
US8161250B2 (en) 2009-05-20 2012-04-17 Sharp Laboratories Of America, Inc. Methods and systems for partially-transacted data concurrency
US8499305B2 (en) 2010-10-15 2013-07-30 Via Technologies, Inc. Systems and methods for performing multi-program general purpose shader kickoff
US9146746B2 (en) 2011-03-01 2015-09-29 University Of Washington Through Its Center Of Commercialization Systems and methods for providing deterministic execution
US8689237B2 (en) * 2011-09-22 2014-04-01 Oracle International Corporation Multi-lane concurrent bag for facilitating inter-thread communication
US8345816B1 (en) 2011-12-06 2013-01-01 International Business Machines Corporation RAM-based event counters using transposition
US20130198419A1 (en) 2012-01-30 2013-08-01 Stephen Jones Lock-free fifo
US8904067B2 (en) * 2012-03-13 2014-12-02 Microsoft Corporation Adaptive multi-threaded buffer
US9424099B2 (en) 2012-06-01 2016-08-23 Advanced Micro Devices, Inc. Method and system for synchronization of workitems with divergent control flow
US9229721B2 (en) 2012-09-10 2016-01-05 Qualcomm Incorporated Executing subroutines in a multi-threaded processing system
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149697A1 (en) * 2003-02-19 2005-07-07 Enright Natalie D. Mechanism to exploit synchronization overhead to improve multithreaded performance
US20050138639A1 (en) * 2003-12-18 2005-06-23 Hagan Stephen C. Method and system for maintaining a running count of events updated by two asynchronous processes
US20140380020A1 (en) * 2013-06-24 2014-12-25 Honeywell International Inc. System and methods for synchronization of redundant processing elements

Also Published As

Publication number Publication date
EP3387524A4 (en) 2019-07-17
EP3387524A1 (en) 2018-10-17
WO2017100749A1 (en) 2017-06-15
CN108292230A (zh) 2018-07-17
JP2019505039A (ja) 2019-02-21
US9928117B2 (en) 2018-03-27
US20170168875A1 (en) 2017-06-15
CN108292230B (zh) 2022-06-10
EP3387524B1 (en) 2021-09-08
JP6966999B2 (ja) 2021-11-17
KR20180105130A (ko) 2018-09-27

Similar Documents

Publication Publication Date Title
KR102632382B1 (ko) 메모리 액세스 커맨드를 위한 전송 디스크립터
US9703670B2 (en) Performance state machine control with aggregation insertion
US10585623B2 (en) Software defined FIFO buffer for multithreaded access
KR101862180B1 (ko) 스푸프 클록의 사용 및 미세 수준 주파수 제어를 통한 역 호환성
US10902548B2 (en) Frame invalidation control with causality attribution
KR102651864B1 (ko) 하드웨어 액세스 카운터 및 다중 스레드 처리를 조정하기 위한 이벤트 생성
CN107250979B (zh) 应用事件跟踪
US20180033115A1 (en) Capturing Commands in a Multi-Engine Graphics Processing Unit
WO2018042935A1 (ja) 電子制御装置、解析システム
US20170192878A1 (en) Separating Test Coverage In Software Processes Using Shared Memory
US11294788B2 (en) Predicting performance of a computer system
JP2022549147A (ja) 描画ディスパッチ識別子をサンプリングするための例外ハンドラ

Legal Events

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