[go: up one dir, main page]

KR20250133974A - Hardware mechanism for universal synchronization of communications in SOCs - Google Patents

Hardware mechanism for universal synchronization of communications in SOCs

Info

Publication number
KR20250133974A
KR20250133974A KR1020257027947A KR20257027947A KR20250133974A KR 20250133974 A KR20250133974 A KR 20250133974A KR 1020257027947 A KR1020257027947 A KR 1020257027947A KR 20257027947 A KR20257027947 A KR 20257027947A KR 20250133974 A KR20250133974 A KR 20250133974A
Authority
KR
South Korea
Prior art keywords
synchronization
hardware
global
soc
devices
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020257027947A
Other languages
Korean (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 KR20250133974A publication Critical patent/KR20250133974A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7803System on board, i.e. computer system on one or more PCB, e.g. motherboards, daughterboards or blades
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Multi Processors (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

모바일 디바이스의 시스템 온 칩(system-on-chip, 'SoC')과 같은 집적 회로에서 하드웨어 동기화 유닛을 구현하기 위한, 컴퓨터 판독가능 매체를 포함하는 방법 및 시스템을 설명한다. 동기화 유닛은 SoC에서 하나 이상의 동기화 이벤트를 제어 및 관리하는 데 사용되는 전역 동기화 객체를 생성하도록 구성된다. 동기화 유닛은 전역 동기화 객체를 참조하여 컨텍스트 상태들을 결정한다. 컨텍스트 상태들은 각각 SoC상의 다수의 IP 디바이스 중 개별 IP 디바이스에 대응한다. 동기화 유닛은 컨텍스트 상태들을 각각 표현하는 레지스터 값들을 생성하고 전역 동기화 객체와 레지스터 값들을 기반으로 동기화 이벤트들의 실행을 관리한다. 동기화 이벤트는 각각의 IP 디바이스를 수반하고, SoC에서 IP 디바이스를 사용하여 수행되는 이기종 연산과 동시에 실행된다.A method and system, including a computer-readable medium, for implementing a hardware synchronization unit in an integrated circuit, such as a system-on-chip ('SoC') of a mobile device, are described. The synchronization unit is configured to create a global synchronization object used to control and manage one or more synchronization events in the SoC. The synchronization unit determines context states by referencing the global synchronization object. Each context state corresponds to an individual IP device among a plurality of IP devices on the SoC. The synchronization unit creates register values representing each context state and manages the execution of synchronization events based on the global synchronization object and the register values. The synchronization events involve each IP device and are executed concurrently with heterogeneous operations performed using the IP devices in the SoC.

Description

SOC에서 통신의 범용 동기화를 위한 하드웨어 메커니즘Hardware mechanism for universal synchronization of communications in SOCs

본 명세서는 일반적으로 시스템 온 칩(system-on-chip, 'SoC')의 IP 블록들 사이의 통신을 범용 동기화하기 위한 메커니즘에 관한 것이다.This specification generally relates to a mechanism for general synchronization of communication between IP blocks of a system-on-chip ('SoC').

현대의 컴퓨팅 시스템은 일반적으로 상이한 컴퓨팅 능력 및 트레이드-오프(trade-off)를 각각 제공하는 매우 다양한 연산 프로세싱 유닛들을 포함한다. 주어진 연산 작업의 효율적인 실행은 종종 컴퓨팅 시스템의 이용 가능한 프로세서 코어에 매핑되는 의미 있는 서브-태스크(sub-task) 또는 워크로드(workload)로 연산[computation]을 파싱하는 것을 수반한다. 연산은 프로세서 능력, 성능, 및 전력과 같은 적합성 기준을 기반으로 파싱 및 맵핑될 수 있다. 일반적으로, 연산의 일부를 적절한 프로세서 리소스에 할당하는 이러한 전체 프로세스는 이기종 연산[heterogeneous compute]이라 지칭된다.Modern computing systems typically include a wide variety of computational processing units, each offering different computational capabilities and tradeoffs. Efficient execution of a given computational task often involves parsing the computation into meaningful subtasks, or workloads, that are mapped to the computing system's available processor cores. Computations can be parsed and mapped based on suitability criteria such as processor capability, performance, and power. This overall process of assigning portions of a computation to appropriate processor resources is commonly referred to as heterogeneous computing.

컴퓨팅 시스템의 적어도 하나의 프로세서 코어는 서로 다른 멀티미디어 사용 사례에 대한 연산 동작의 각각의 일부를 실행하는 지적 재산 블록(Intellectual Property block, 'IP 블록')일 수 있다. 예시적인 사용 사례는 모바일 디바이스의 카메라에 의해 캡처된 이미지 데이터를 프로세싱하는 것을 수반할 수 있다. 이미지 데이터를 프로세싱하기 위해 이기종 연산을 사용하는 것은 서브-태스크의 할당을 각각 수신하는 프로세서 코어들 사이의 동기화를 요구한다. 이러한 동기화를 구현하는 데 요구되는 리소스 오버헤드는 일반적으로 연산 작업에 비해 상당하다. 이러한 리소스 요구사항은 데이터 프로세싱 파이프라인에서 동작을 지연시키거나 저하시키는 버블을 발생시킨다.At least one processor core of a computing system may be an intellectual property block (IP block), each of which executes a portion of the computational operations for different multimedia use cases. An example use case may involve processing image data captured by a mobile device's camera. Using heterogeneous computation to process image data requires synchronization between the processor cores that each receive assignments of subtasks. The resource overhead required to implement this synchronization is typically significant relative to the computational work itself. These resource requirements create bubbles in the data processing pipeline, which delay or degrade operations.

본 명세서는 시스템-온-칩(system-on-chip, 'SoC')의 IP 블록들(또는 디바이스들) 사이의 통신을 범용 동기화하는 데 사용되는 하드웨어 메커니즘을 설명한다. 하드웨어 메커니즘은, 개별 프로세서로서, 부동 역할 이동 연산 요소[floating role migrating compute element]로서, 또는 둘 모두로서 구현되는 예시적인 동기화 모듈일 수 있다. 예를 들어, 하드웨어 메커니즘은 IP 디바이스들 사이에서 전달되는 동기화 객체들 및 IP 디바이스들의 컨텍스트 상태들을 표현하는 레지스터 값들을 기반으로 SoC에서 통신의 서브세트를 동기화시키는 데 사용될 수 있다.This specification describes a hardware mechanism used to universally synchronize communication between IP blocks (or devices) in a system-on-chip ('SoC'). The hardware mechanism may be an exemplary synchronization module implemented as a separate processor, a floating role migrating compute element, or both. For example, the hardware mechanism may be used to synchronize a subset of communications in the SoC based on synchronization objects passed between IP devices and register values representing the context states of the IP devices.

동기화 모듈은 SoC의 IP 디바이스들 사이의 일대다[one-to-many] 및 다대다 동기화[many-to-many synchronization]를 포함하는, 범용 IP 동기화를 구현하기 위한 다양한 프로세서 리소스를 갖는 하드웨어 동기화 유닛을 포함하거나 또는 심지어 표현할 수 있다. 하드웨어 동기화 유닛의 리소스들은 SoC에서 실행되는 동기화 이벤트들에 대응하는 객체들 또는 데이터 값들을 생성, 추적, 및 관리하기 위한 제어 로직 및 메모리를 포함한다. 보다 구체적으로, 메모리는 정적 랜덤 액세스 메모리[static random-access memory, 'SRAM'] 회로뿐만 아니라 제어 및 상태 레지스터[control and status register,'CSR']를 포함할 수 있다.The synchronization module may include or even represent a hardware synchronization unit having various processor resources for implementing general-purpose IP synchronization, including one-to-many and many-to-many synchronization between IP devices of the SoC. The resources of the hardware synchronization unit include control logic and memory for creating, tracking, and managing objects or data values corresponding to synchronization events executed in the SoC. More specifically, the memory may include static random-access memory ('SRAM') circuitry as well as control and status registers ('CSR').

하드웨어 동기화 유닛은 SoC에서 실행되는 이기종 연산[heterogeneous compute]의 하나 이상의 동기화 이벤트를 제어 및 관리하는 데 사용되는 전역 동기화 객체를 생성하도록 구성된다. 하드웨어 동기화 유닛은 SoC의 IP 디바이스로부터 요청을 수신하는 것에 응답하여 전역 동기화 객체를 생성할 수 있다. 예를 들어, 전역 동기화 객체는 SoC의 다수의 IP 디바이스에 의한 프로세싱을 위한 데이터를 생성하는 애플리케이션(예를 들어, 카메라)으로부터의 요청을 기반으로 생성될 수 있다. 각각의 IP 디바이스는 SoC상의 IP 블록의 프로세서(또는 프로세서 코어)일 수 있다.The hardware synchronization unit is configured to create a global synchronization object used to control and manage one or more synchronization events of heterogeneous computations running on the SoC. The hardware synchronization unit can create a global synchronization object in response to receiving a request from an IP device of the SoC. For example, the global synchronization object can be created based on a request from an application (e.g., a camera) that generates data for processing by multiple IP devices of the SoC. Each IP device can be a processor (or processor core) of an IP block on the SoC.

데이터를 프로세싱하기 위해, SoC는 다수의 IP 디바이스 각각이 이종 동작의 특정 연산을 담당하는 이기종 연산 동작을 개시한다. 예를 들어, 데이터는 이미지 데이터일 수 있고, 이기종 연산은, i) 이미지 데이터에 대한 얼굴 인식을 수행하기 위한 추론 동작 및 ii) 이미지 데이터에 대한 포스트-프로세싱을 수행하기 위한 스케일링 동작을 포함할 수 있다. 이기종 연산은 SoC상의 다수의 IP 디바이스의 일부(또는 전부)를 수반하고, IP 디바이스들 사이의 특정 연산 단계들의 동기화를 요구한다.To process data, the SoC initiates heterogeneous computational operations, where each of multiple IP devices is responsible for a specific operation of the heterogeneous operation. For example, the data may be image data, and the heterogeneous computation may include: i) an inference operation for performing face recognition on the image data, and ii) a scaling operation for performing post-processing on the image data. The heterogeneous computation involves some (or all) of the multiple IP devices on the SoC and requires synchronization of specific computational steps between the IP devices.

동기화 모듈은 하드웨어 동기화 유닛이 SoC의 각각의 IP 디바이스에 대해 범용 방식으로 요구되는 동기화를 구현할 수 있도록 전역 동기화 객체를 제1 클래스 객체로서 구성한다. 하드웨어 동기화 유닛은 전역 동기화 객체를 사용하여 SoC에서 이기종 연산의 실행을 용이하게 하는 동기화 이벤트들을 제어 및 관리한다. 하드웨어 동기화 유닛은 전역 동기화 객체를 참조하여 컨텍스트 상태들을 결정한다. 적어도 하나의 컨텍스트 상태는 SoC상의 개별 IP 디바이스에 대응하고, 하드웨어 동기화 유닛은 IP 디바이스들 각각에 대한 컨텍스트 상태들을 표현하는 값들을 저장하기 위해 자신의 CSR들을 사용한다.The synchronization module configures a global synchronization object as a first-class object so that the hardware synchronization unit can implement the synchronization required for each IP device of the SoC in a general manner. The hardware synchronization unit uses the global synchronization object to control and manage synchronization events that facilitate the execution of heterogeneous operations in the SoC. The hardware synchronization unit determines context states by referencing the global synchronization object. At least one context state corresponds to an individual IP device on the SoC, and the hardware synchronization unit uses its CSRs to store values representing the context states for each of the IP devices.

이기종 연산이 실행됨에 따라, 하드웨어 동기화 유닛은 컨텍스트 상태들 각각에 대한 레지스터 값들을 생성 및 반복적으로 업데이트하고, 전역 동기화 객체 및 이러한 레지스터 값들을 기반으로 동기화 이벤트들의 실행을 관리한다.As heterogeneous operations are executed, the hardware synchronization unit generates and iteratively updates register values for each context state, and manages the execution of synchronization events based on the global synchronization object and these register values.

본 명세서에 설명된 주제의 일 양태는 SoC의 하드웨어 동기화 유닛을 사용하여 사용자 디바이스의 시스템-온-칩('SoC')에서 수행되는 컴퓨터 구현 방법으로 구현될 수 있다. 방법은, 하드웨어 동기화 유닛에 의해, SoC에서 하나 이상의 동기화 이벤트를 제어 및 관리하는 데 사용되는 전역 동기화 객체를 생성하는 단계를 포함한다. 하드웨어 동기화 유닛은 전역 동기화 객체를 참조하여 컨텍스트 상태들을 결정한다. 컨텍스트 상태들은 각각 SoC상의 다수의 IP 디바이스 중 개별 IP 디바이스에 대응한다. 방법은, 하드웨어 동기화 유닛에서, 각각의 개별 IP 디바이스에 대응하는 컨텍스트 상태들 각각을 표현하는 다수의 레지스터 값들을 생성하는 단계; 및 하드웨어 동기화 유닛에 의해, 전역 동기화 객체 및 레지스터 값들을 기반으로 IP 디바이스들 각각을 수반하는 동기화 이벤트들의 실행을 관리하는 단계를 포함한다.One aspect of the subject matter described herein can be implemented as a computer-implemented method performed in a system-on-chip ('SoC') of a user device using a hardware synchronization unit of the SoC. The method includes creating, by the hardware synchronization unit, a global synchronization object used to control and manage one or more synchronization events in the SoC. The hardware synchronization unit determines context states by reference to the global synchronization object. Each context state corresponds to an individual IP device among a plurality of IP devices on the SoC. The method includes creating, by the hardware synchronization unit, a plurality of register values representing each of the context states corresponding to each individual IP device; and managing, by the hardware synchronization unit, execution of synchronization events involving each of the IP devices based on the global synchronization object and the register values.

이들 및 다른 구현예에는 다음 특징 중 하나 이상이 각각 임의로 포함될 수 있다. 예를 들어, 일부 구현예에서, 전역 동기화 객체를 생성하는 단계는, 하드웨어 동기화 유닛에 의해, 제1 IP 디바이스로부터 전역 동기화 요청을 수신하는 단계; 및 하드웨어 동기화 유닛에 의해, 제1 IP 디바이스로부터의 전역 동기화 요청을 기반으로 전역 동기화 객체를 생성하는 단계를 포함한다. 전역 동기화 객체를 생성하는 단계는, 하드웨어 동기화 유닛에 의해, SoC에서 동기화 이벤트들의 실행을 개시하는 제어 시그널링(control signaling)을 생성하는 단계를 포함한다. 제어 시그널링은 전역 동기화 객체를 제1 IP 디바이스로 전달하는 제1 동기화 제어 신호를 포함할 수 있다. These and other implementations may each optionally include one or more of the following features. For example, in some implementations, the step of creating a global synchronization object includes: receiving, by a hardware synchronization unit, a global synchronization request from a first IP device; and creating, by the hardware synchronization unit, a global synchronization object based on the global synchronization request from the first IP device. The step of creating the global synchronization object includes generating, by the hardware synchronization unit, a control signaling that initiates execution of synchronization events in the SoC. The control signaling may include a first synchronization control signal that conveys the global synchronization object to the first IP device.

일부 구현예에서, 방법은, 하드웨어 동기화 유닛에 의해, SoC에서 동기화 이벤트들의 실행을 개시하는 제어 시그널링을 기반으로 생성된 2차 전역 동기화 객체들을 검출하는 단계를 더 포함한다. 2차 전역 동기화 객체들은 각각 다수의 IP 디바이스 중 개별 IP 디바이스에 전파되는 범용/전역 동기화 ID에 대응한다. 2차 전역 동기화 객체들 중 하나 이상은, 동기화 이벤트들 중 하나 이상을 실행하기 위해 다수의 IP 디바이스 중 적어도 2개 사이에 전달될 수 있고, 사용자 디바이스에서 실행되는 애플리케이션과 연관된 이벤트 데이터를 프로세싱하기 위해 동시에 수행되는 구별되는 데이터 프로세싱 동작들에 대한 개별 동기화 이벤트들을 실행하는 데 사용될 수 있다.In some implementations, the method further comprises detecting secondary global synchronization objects generated by a hardware synchronization unit based on control signaling that initiates execution of synchronization events in the SoC. Each of the secondary global synchronization objects corresponds to a universal/global synchronization ID that is propagated to an individual IP device among the plurality of IP devices. One or more of the secondary global synchronization objects can be communicated between at least two of the plurality of IP devices to execute one or more of the synchronization events, and can be used to execute individual synchronization events for distinct data processing operations that are performed concurrently to process event data associated with an application executing on the user device.

일부 구현예에서, 방법은, 하드웨어 동기화 유닛을 사용하여, 하드웨어 동기화 유닛에서 컨텍스트 상태들을 각각 표현하는 레지스터 값들 각각 및 전역 동기화 객체를 기반으로 SoC에서 통신들의 서브세트를 동기화하는 단계를 더 포함한다. 방법은, 전역 동기화 객체를 사용하여, 컨텍스트 상태들 각각을 다수의 IP 디바이스 중 개별 IP 디바이스 및 해당 IP 디바이스에 대응하는 동기화 활동과 연관시키는 단계를 더 포함할 수 있다. In some implementations, the method further comprises synchronizing a subset of communications in the SoC based on register values each representing a context state in the hardware synchronization unit and a global synchronization object, using a hardware synchronization unit. The method may further comprise associating each of the context states with an individual IP device among the plurality of IP devices and a synchronization activity corresponding to the IP device, using the global synchronization object.

다수의 IP 디바이스들 각각에 대해, 동기화 활동은, i) 신호 이벤트를 표현하는 제1 동기화 이벤트; 및 ii) 대기 이벤트를 표현하는 상이한 제2 동기화 이벤트를 포함할 수 있다. 방법은, SoC에서, 사용자 디바이스에서 실행되는 애플리케이션과 연관된 이벤트 데이터를 프로세싱하기 위한 요청을 검출하는 단계를 더 포함할 수 있다. 일부 구현예에서, 동기화 이벤트들은 이벤트 데이터를 프로세싱하는 데 사용되는 각각의 IP 디바이스의 데이터 프로세싱 동작들과 동시에 SoC에서 실행된다. For each of the plurality of IP devices, the synchronization activity may include: i) a first synchronization event representing a signal event; and ii) a different second synchronization event representing a wait event. The method may further include detecting, in the SoC, a request to process event data associated with an application running on the user device. In some implementations, the synchronization events are executed in the SoC concurrently with data processing operations of each IP device used to process the event data.

이러한 및 기타 양태의 다른 구현예에는 컴퓨터 저장 디바이스에 인코딩된, 방법의 액션을 수행하도록 구성된 대응하는 시스템, 장치 및 컴퓨터 프로그램이 포함된다. 하나 이상의 컴퓨터의 시스템은 동작 시 시스템으로 하여금 액션을 수행하게 하는 시스템에 설치된 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합에 의해 구성될 수 있다. 하나 이상의 컴퓨터 프로그램은 데이터 프로세싱 장치에 의해 실행될 때 장치로 하여금 액션을 수행하게 하는 명령어를 갖도록 구성될 수 있다.Other embodiments of these and other aspects include corresponding systems, devices, and computer programs encoded on a computer storage device, configured to perform the actions of the method. The system of one or more computers may be configured by software, firmware, hardware, or a combination thereof installed on the system that, when in operation, causes the system to perform the actions. The one or more computer programs may be configured to have instructions that, when executed by a data processing device, cause the device to perform the actions.

본 명세서에 설명된 주제는 다음 장점 중 하나 이상을 실현하기 위해 특정 실시형태로 구현될 수 있다.The subject matter described herein can be implemented in specific embodiments to achieve one or more of the following advantages:

개시된 기술은 예시적인 컴퓨팅 시스템에서 다수의 (또는 모든) IP 디바이스에 걸쳐 범용 하드웨어 동기화 메커니즘을 제공한다. 메커니즘의 범용적 양태는 하나의 IP 디바이스가 이벤트 또는 연산 태스크를 다수의 IP 디바이스에 동일한 시간에(예를 들어, 동시에) 시그널링할 수 있게 한다. 예를 들어, 이미지 데이터를 생성하는 제1 프로세서는 하드웨어 동기화 유닛을 사용하여, i) 기계 학습[machine-learning, ML] 알고리즘을 이미지 데이터에 적용하는 제2 프로세서, 및 ii) 이미지 데이터에 대해 디지털 신호 프로세싱을 수행하는 제3 프로세서를 동시에 시그널링할 수 있다.The disclosed technology provides a general-purpose hardware synchronization mechanism across multiple (or all) IP devices in an exemplary computing system. The general-purpose aspect of the mechanism allows a single IP device to simultaneously (e.g., simultaneously) signal an event or computational task to multiple IP devices. For example, a first processor generating image data may use a hardware synchronization unit to simultaneously signal i) a second processor applying a machine-learning (ML) algorithm to the image data, and ii) a third processor performing digital signal processing on the image data.

하드웨어 동기화 메커니즘은 전역 동기화 객체를 생성하고 해당 전역 동기화를 제 1 클래스 객체로서 구현할 수 있는 동기화 모듈과 연관된다. 예를 들어, 전역 동기화 객체는 동기화 명령어/커맨드를 해독 또는 프로세싱하기 위해 애플리케이션 프로세서(application processor, AP)가 IP 디바이스에 통합될 것을 요구하지 않고, 특정 동기화 동작들을 기본적으로 지원하는 네이티브 아이덴티티(native identity)로 구성된다. 따라서, 전역 동기화 객체는 특정 프로그래밍 언어로 코딩되거나 정의될 필요가 없으며, 이는 설계 노력을 단순화하고 집적 회로에서 하드웨어 동기화 유닛을 구현하는 데 필요한 리소스 오버헤드를 최소화한다.The hardware synchronization mechanism involves a synchronization module that can create global synchronization objects and implement them as first-class objects. For example, a global synchronization object consists of a native identity that natively supports specific synchronization operations without requiring an application processor (AP) to be integrated into the IP device to decode or process synchronization instructions/commands. Therefore, the global synchronization object does not need to be coded or defined in a specific programming language, which simplifies design efforts and minimizes the resource overhead required to implement a hardware synchronization unit in an integrated circuit.

이와 관련하여, 하드웨어 동기화 메커니즘은 SoC상의 다양한 IP 디바이스에 의해 사용 및 활용될 수 있는 범용/공유 동기화 시맨틱스(universal/shared synchronization semantics)를 제공한다. 하드웨어 동기화 메커니즘은 특정 동기화 객체에 의미를 전달하기 위해 소스 IP 디바이스와 상호작용할 수 있다. 하드웨어 동기화 메커니즘은 동기화 객체가 다수의 다른 IP 디바이스에 이벤트들을 시그널링하기 위해 소스 IP 디바이스에 의해 사용될 수 있도록 각각이 전역 아이덴티티를 갖는 다수의 동기화 객체를 생성할 수 있다. 동기화 객체의 전역 아이덴티티는 제안된 하드웨어 메커니즘에 의해 유지되는 전역 표현을 기반으로 달성된다.In this regard, the hardware synchronization mechanism provides universal/shared synchronization semantics that can be used and utilized by various IP devices on the SoC. The hardware synchronization mechanism can interact with a source IP device to impart meaning to a specific synchronization object. The hardware synchronization mechanism can create multiple synchronization objects, each with a global identity, so that the synchronization objects can be used by the source IP device to signal events to multiple other IP devices. The global identity of the synchronization objects is achieved based on a global representation maintained by the proposed hardware mechanism.

예를 들어, 하드웨어 동기화 메커니즘은 파라미터/데이터 값, 예를 들어, 정수 '10'을 sync_ID로서 확립하는 데 사용되는 제어 로직을 포함할 수 있다. 이러한 sync_ID는 '10'의 파라미터 값이 상이한 IP 디바이스들 또는 SoC의 실행 프로세서들상의 동일한 동기화 객체를 나타내도록 동기화 객체(또는 전역 동기화 객체)에 대한 전역 식별자일 수 있다. 하드웨어 동기화 메커니즘은 시스템 내의 모든 프로세서가 '10'을 해당 데이터 값에 의해 식별되는 주어진 동기화 객체에 대한 동일한/전역 아이덴티티로서 인식하는 것을 보장할 수 있다.For example, a hardware synchronization mechanism may include control logic used to establish a parameter/data value, e.g., an integer '10', as a sync_ID. This sync_ID may be a global identifier for a synchronization object (or a global synchronization object) such that the parameter value of '10' represents the same synchronization object on different IP devices or executing processors of a SoC. The hardware synchronization mechanism may ensure that all processors within the system recognize '10' as the same/global identity for a given synchronization object identified by its data value.

본 명세서에 설명된 주제의 하나 이상의 구현예에 대한 세부사항은 첨부 도면 및 하기 설명에 제시되어 있다. 본 발명의 다른 잠재적 특징, 양태 및 이점은 본 설명, 도면 및 청구항으로부터 명확해질 것이다.Details of one or more embodiments of the subject matter described herein are set forth in the accompanying drawings and the description below. Other potential features, aspects, and advantages of the present invention will become apparent from the description, drawings, and claims.

도 1은 적어도 하나의 SoC를 갖는 예시적인 컴퓨팅 시스템의 블록도이다.
도 2a는 예시적인 하드웨어 동기화 유닛을 도시한다.
도 2b는 전역 동기화 객체를 생성하기 위한 예시적인 코드를 도시한다.
도 3은 도 2의 하드웨어 중앙 동기화 유닛을 사용하는 IP 블록들 사이의 동기화 시그널링의 예시적인 라우팅을 도시하는 블록도이다.
도 4는 도 1의 시스템에서 IP 블록들 사이의 통신을 동기화하기 위한 예시적인 프로세스이다.
도 5는 도 1의 SoC에서 구현되는 예시적인 동기화 절차를 표현하는 흐름도이다.
여러 도면에서 유사 참조 번호와 명칭은 유사한 구성요소를 나타낸다.
FIG. 1 is a block diagram of an exemplary computing system having at least one SoC.
Figure 2a illustrates an exemplary hardware synchronization unit.
Figure 2b illustrates exemplary code for creating a global synchronization object.
FIG. 3 is a block diagram illustrating exemplary routing of synchronization signaling between IP blocks using the hardware central synchronization unit of FIG. 2.
Figure 4 is an exemplary process for synchronizing communication between IP blocks in the system of Figure 1.
FIG. 5 is a flowchart representing an exemplary synchronization procedure implemented in the SoC of FIG. 1.
Similar reference numbers and designations in various drawings indicate similar components.

도 1은 시스템-온-칩(102)[system-on-chip, 'SoC(102)']을 포함하는 예시적인 컴퓨팅 시스템(100)의 블록도이다. 일부 구현예에서, 시스템(100)은 다수의 SoC를 포함한다. SoC(102)는 중앙 프로세싱 유닛(104)['CPU(104)'], 공유 메모리(106)['메모리(106)'], 동기화 모듈(108)['sync module (108)'], 및 IP/회로 블록(110)을 포함한다.FIG. 1 is a block diagram of an exemplary computing system (100) including a system-on-chip (102) ['SoC (102)']. In some implementations, the system (100) includes multiple SoCs. The SoC (102) includes a central processing unit (104) ['CPU (104)'], a shared memory (106) ['memory (106)'], a synchronization module (108) ['sync module (108)'], and IP/circuit blocks (110).

CPU(104)는 범용 CPU(예를 들어, 단일 또는 멀티-코어 CPU)일 수 있다. CPU(104)는 사용자 디바이스에서 애플리케이션을 실행하거나 런칭하는 것에 응답하여 트리거되는 앱-런치 인디케이터(app-launch indicator) 또는 함수 호출[function call]과 같은 하나 이상의 인디케이터를 생성한다. 예를 들어, 애플리케이션은 이미징 센서를 사용하여 이미지 데이터를 생성하는 카메라 애플리케이션 또는 게임의 그래픽 콘텐츠를 렌더링하기 위해 상당한 메모리 및 그래픽 프로세싱 리소스를 필요로 하는 게임 애플리케이션일 수 있다. CPU(104)는 또한 픽셀 값들 또는 프레임 레이트와 같은 하나 이상의 애플리케이션 값을 생성한다. 애플리케이션 값들은 함수 호출과 연관될 수 있거나, 애플리케이션의 실행 동안 발생하는 이벤트를 기술할 수 있거나, 또는 둘 모두일 수 있다.The CPU (104) may be a general-purpose CPU (e.g., a single or multi-core CPU). The CPU (104) generates one or more indicators, such as an app-launch indicator or a function call, that are triggered in response to executing or launching an application on the user device. For example, the application may be a camera application that generates image data using an imaging sensor, or a game application that requires significant memory and graphics processing resources to render the game's graphic content. The CPU (104) also generates one or more application values, such as pixel values or frame rates. The application values may be associated with a function call, may describe an event that occurs during the execution of the application, or both.

메모리(106)는 시스템 메모리, 공유 메모리, 또는 둘 모두이다. 도 1의 예에서, 메모리(106)는 회로 블록(110)의 외부에 도시된다. 그러나, 메모리(106)는, i) 회로 블록(110)에 특정적이거나, ii) 회로 블록(110) 외부에 있거나, 또는 iii) 둘 모두인 메모리의 부분들을 포함할 수 있다. 메모리(106)는 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM), 동기식 DRAM(synchronous DRAM, SDRAM), 또는 이중 데이터 레이트(double data rate, DDR) SDRAM과 같은 SoC(102)의 랜덤 액세스 메모리일 수 있다.Memory (106) is system memory, shared memory, or both. In the example of FIG. 1, memory (106) is depicted external to circuit block (110). However, memory (106) may include portions of memory that are i) specific to circuit block (110), ii) external to circuit block (110), or iii) both. Memory (106) may be random access memory of SoC (102), such as dynamic random access memory (DRAM), synchronous DRAM (SDRAM), or double data rate (DDR) SDRAM.

일부 구현예에서, 메모리(106)의 양태는 회로(110)의 2개 이상의 프로세서에 의한 그 메모리 리소스의 병렬 액세스를 지원하는 공유 스크래치패드 메모리(shared scratchpad memory)로서 구성된다. 메모리(106)는 또한 고대역폭 메모리(high bandwidth memory, HBM), (예를 들어, 8-비트 값들을 저장하기 위한) 협대역 메모리, (예를 들어, 16-비트 또는 32-비트 값들을 저장하기 위한) 광대역 메모리 등과 같은 다양한 다른 유형의 메모리를 포함할 수 있다.In some implementations, the memory (106) is configured as a shared scratchpad memory that supports parallel access of its memory resources by two or more processors of the circuit (110). The memory (106) may also include various other types of memory, such as high bandwidth memory (HBM), narrow bandwidth memory (e.g., for storing 8-bit values), wide bandwidth memory (e.g., for storing 16-bit or 32-bit values), etc.

동기화 모듈(108)은 하드웨어 및 소프트웨어로 구현된다. 동기화 모듈(108)의 양태는 또한 SoC(102)의 펌웨어 또는 CPU(104)와 같은 SoC(102)의 디바이스의 펌웨어로서 구현될 수 있다. 동기화 모듈(108)은 하드웨어 및 소프트웨어로 구현된 하드웨어 동기화 유닛(120)을 포함한다. 예를 들어, 하드웨어 동기화 유닛(120)은 하드웨어로 구현되는 메모리 리소스(예를 들어, 플립-플롭, 레지스터, 버퍼 등) 및 소프트웨어로 구현되는 제어 로직(예를 들어, 프로그래밍된 코드)을 포함한다. 하드웨어 동기화 유닛(120)은 도 2의 예를 참조하여 아래에 보다 상세히 설명된다.The synchronization module (108) is implemented in hardware and software. Aspects of the synchronization module (108) may also be implemented as firmware of the SoC (102) or firmware of a device of the SoC (102), such as the CPU (104). The synchronization module (108) includes a hardware synchronization unit (120) implemented in hardware and software. For example, the hardware synchronization unit (120) includes memory resources implemented in hardware (e.g., flip-flops, registers, buffers, etc.) and control logic implemented in software (e.g., programmed code). The hardware synchronization unit (120) is described in more detail below with reference to the example of FIG. 2.

동기화 모듈(108)의 하나 이상의 양태는 레지스터, 버퍼 등과 같은 CPU(104)의 하나 이상의 하드웨어 리소스를 사용하는 CPU(104)의 소프트웨어 루틴(또는 모듈)으로서 구현될 수 있다. 일부 구현예에서, CPU(104)는 메모리(106)와 같은 SoC(102)의 시스템 메모리로부터 획득된 데이터를 프로세싱하는 명령어 및 벡터 데이터 프로세싱 엔진으로서 구성된다.One or more aspects of the synchronization module (108) may be implemented as software routines (or modules) of the CPU (104) that utilize one or more hardware resources of the CPU (104), such as registers, buffers, etc. In some implementations, the CPU (104) is configured as an instruction and vector data processing engine that processes data obtained from a system memory of the SoC (102), such as the memory (106).

아래에 상세히 설명되는 바와 같이, 동기화 모듈(108)은 시스템(100)의 디바이스들 사이의 이벤트 및 통신을 동기화하기 위해 사용되는 제어 시그널링 및 연관된 데이터 값뿐만 아니라 전역 동기화 객체들(122)을 생성하도록 구성된다. 디바이스들은 프로세서들, 프로세서 코어들, 또는 회로 블록(110)의 개별 IP 디바이스들과 같은 특수 목적 프로세싱 디바이스들을 포함한다.As described in detail below, the synchronization module (108) is configured to generate global synchronization objects (122) as well as control signaling and associated data values used to synchronize events and communications between devices of the system (100). The devices include special purpose processing devices such as processors, processor cores, or individual IP devices of a circuit block (110).

회로 블록(110)은 이미지 신호 프로세서(image signal processor, ISP)(112), 텐서 프로세싱 유닛(tensor processing unit, TPU)(114), 디지털 신호 프로세서(digital signal processor, DSP)(116), 및 그래픽 프로세싱 유닛(graphics processing unit, GPU)(118)을 포함할 수 있다. 회로 블록(110)은 대안적으로 IP 블록(110)으로 지칭되며, 여기서, IP 블록은 하나 이상의 독점 하드웨어 요소를 포함할 수 있다. 예를 들어, ISP(112), TPU(114), DSP(116), 및 GPU(118) 각각은 특정 엔티티 또는 디바이스 제조자의 개별 독점 IP 블록(또는 IP 디바이스)일 수 있다.The circuit block (110) may include an image signal processor (ISP) (112), a tensor processing unit (TPU) (114), a digital signal processor (DSP) (116), and a graphics processing unit (GPU) (118). The circuit block (110) is alternatively referred to as an IP block (110), where an IP block may include one or more proprietary hardware elements. For example, each of the ISP (112), the TPU (114), the DSP (116), and the GPU (118) may be a separate proprietary IP block (or IP device) of a particular entity or device manufacturer.

동기화 모듈(108)은 하드웨어 동기화 유닛(120)에 의해 수행되는 동작들을 이용하여, 이기종 연산 동작을 지원하기 위해 SoC(102)에서 실행되는 하나 이상의 동기화 이벤트를 동적으로 제어 및 관리한다. 보다 구체적으로, 동기화 모듈(108)은 제어 시그널링(124)을 생성하고, 제어 시그널링(124)의 하나 이상의 개별 신호 값을 사용하여, IP 블록(110), CPU(104), 또는 둘 모두에 포함된 2개 이상의 프로세싱 유닛 사이에 동작들을 배열 및 동기화하도록 구성된다. 일부 구현예에서, SoC(102)의 각각의 프로세서(예를 들어, ISP, DSP, TPU, GPU, 또는 CPU)는 다수의 코어를 포함하고, 동기화 모듈(108)은 프로세서들의 각각의 코어에서 이벤트들을 동기화하거나 또는 그 외의 방식으로 관리하기 위해 제어 시그널링(124)을 생성할 수 있다.The synchronization module (108) dynamically controls and manages one or more synchronization events executed in the SoC (102) to support heterogeneous computational operations, utilizing operations performed by the hardware synchronization unit (120). More specifically, the synchronization module (108) is configured to generate control signaling (124) and, using one or more individual signal values of the control signaling (124), to arrange and synchronize operations between two or more processing units included in the IP block (110), the CPU (104), or both. In some implementations, each processor (e.g., an ISP, a DSP, a TPU, a GPU, or a CPU) of the SoC (102) includes multiple cores, and the synchronization module (108) may generate control signaling (124) to synchronize or otherwise manage events in each core of the processors.

도 1의 예에서, 시스템(100) 및 SoC(102)는 예시적인 사용자/클라이언트 디바이스, 소비자 전자 디바이스, 또는 모바일 디바이스의 집적 회로이고, 여기서, 이들 디바이스는 각각 스마트폰(130a), 태블릿(130b), 랩톱(130c), 스마트워치 또는 웨어러블 디바이스(130d)와 같은 아이템을 포함할 수 있다. 디바이스들은 또한 e노트북, 넷북, 스마트 스피커, 또는 모바일 컴퓨터와 같은 다른 아이템들을 포함할 수 있다. 일부 구현예에서, 시스템(100) 및 SoC(102)는 데스크톱 컴퓨터, 네트워크 서버, 또는 관련 클라우드 기반 자산의 집적 회로이다. In the example of FIG. 1, the system (100) and the SoC (102) are integrated circuits of exemplary user/client devices, consumer electronic devices, or mobile devices, which may each include items such as a smartphone (130a), a tablet (130b), a laptop (130c), a smartwatch, or a wearable device (130d). The devices may also include other items such as an e-notebook, a netbook, a smart speaker, or a mobile computer. In some implementations, the system (100) and the SoC (102) are integrated circuits of a desktop computer, a network server, or a related cloud-based asset.

도 2a는 회로 블록(110)의 IP 디바이스들과 같은 SoC(102)의 디바이스들 사이의 통신을 범용적으로 동기화하기 위해 사용되는 예시적인 하드웨어 중앙 동기화 유닛(central synchronization unit, 'CSU')(120)을 도시한다. 하드웨어 동기화 유닛(120)은 SoC(102)의 IP 디바이스들 사이의 일대다 및 다대다 동기화를 포함하는 범용 IP 동기화를 구현하기 위한 다양한 리소스를 포함한다.FIG. 2A illustrates an exemplary hardware central synchronization unit ('CSU') (120) used to universally synchronize communication between devices of the SoC (102), such as IP devices of the circuit block (110). The hardware synchronization unit (120) includes various resources for implementing universal IP synchronization, including one-to-many and many-to-many synchronization, between IP devices of the SoC (102).

하드웨어 동기화 유닛의 리소스들은 SoC에서 실행되는 동기화 이벤트에 대응하는 동기화 객체들 또는 데이터 값들을 생성, 추적, 및 관리하기 위한 제어 로직(202) 및 메모리를 포함한다. 보다 구체적으로, 하드웨어 동기화 유닛(120)은 제1 메모리(204) 및 제2 메모리(206)를 포함한다. 일부 구현예에서, 제1 메모리(204)와 제2 메모리(206)는 동일한 메모리이다. 일부 다른 구현예에서, 제1 메모리(204)와 제2 메모리(206)는 서로 다른 메모리 회로/유닛이다.The resources of the hardware synchronization unit include control logic (202) and memory for generating, tracking, and managing synchronization objects or data values corresponding to synchronization events executed in the SoC. More specifically, the hardware synchronization unit (120) includes a first memory (204) and a second memory (206). In some implementations, the first memory (204) and the second memory (206) are the same memory. In some other implementations, the first memory (204) and the second memory (206) are different memory circuits/units.

제1 메모리(204)는 SRAM 회로들과 CSR 회로들의 조합을 포함할 수 있는 반면, 제2 메모리(206)는 하나 이상의 SRAM 회로를 포함할 수 있다. 제1 메모리(204)는 하나 이상의 CSR 그룹(205)['레지스터 그룹(205)']을 포함할 수 있으며, 여기서, 각각의 레지스터 그룹(205)은 2개 이상의 8-비트 레지스터, 12-비트 레지스터, 16-비트 레지스터, 32-비트 레지스터 등과 같은 CSR(또는 다른 레지스터)의 그룹을 포함한다. 도 2의 예에서, 제1 메모리(204)는 3개의 레지스터 그룹(205)을 포함하지만, 제1 메모리(204)는 더 많거나 더 적은 레지스터 그룹(205)을 포함할 수 있다. 일부 구현예에서, 제1 메모리(204)는 SoC(102)의 각각의 IP 디바이스에 대한 레지스터 그룹(205)을 포함한다.The first memory (204) may include a combination of SRAM circuits and CSR circuits, while the second memory (206) may include one or more SRAM circuits. The first memory (204) may include one or more CSR groups (205) ('register groups (205)'), wherein each register group (205) includes a group of CSRs (or other registers), such as two or more 8-bit registers, 12-bit registers, 16-bit registers, 32-bit registers, etc. In the example of FIG. 2, the first memory (204) includes three register groups (205), but the first memory (204) may include more or fewer register groups (205). In some implementations, the first memory (204) includes a register group (205) for each IP device of the SoC (102).

일반적으로, 주어진 이기종 연산에 대해, 하나 이상의 동기화 객체 (또는 syncs)의 전역 상태는 SRAM의 구조화된 메모리와 하드웨어 동기화 유닛(120)의 레지스터 리소스에 잘 정의되어 있다. 하드웨어 동기화 유닛(120)은 SoC(102)의 다수의 디바이스/IP 디바이스의 전역 동기화 상태들을 유지하기 위해 제어 로직(202) 및 메모리 리소스들(204, 206)을 사용한다. 일부 구현예에서, 하드웨어 동기화 유닛(120)은 SoC(102), 동기화 모듈(108), 또는 둘 모두의 개별 프로세서이다.Typically, for a given heterogeneous operation, the global state of one or more synchronization objects (or syncs) is well defined in the structured memory of SRAM and the register resources of a hardware synchronization unit (120). The hardware synchronization unit (120) uses the control logic (202) and memory resources (204, 206) to maintain the global synchronization states of multiple devices/IP devices of the SoC (102). In some implementations, the hardware synchronization unit (120) is a separate processor of the SoC (102), the synchronization module (108), or both.

예를 들어, 제어 로직(202)은 하드웨어 동기화 유닛(120)으로 하여금 다수의 전역 동기화 객체의 상태(예를 들어, 컨텍스트 상태)를 유지하게 하는 프로세서 또는 로직 유닛일 수 있다. 도 2b의 예에서, 제어 로직(202)은 예시적인 코드(255)를 사용하여 동기화 객체 또는 전역 동기화 객체를 생성 및/또는 정의할 수 있다. 제어 로직(202)은 또한 생성자 IP 디바이스(producer IP device)가 동기화를 충족할 때 소비자 IP 디바이스(consumer IP device)들에 동기화 정보를 브로드캐스트하기 위한 제어 시그널링을 생성할 수 있다.For example, the control logic (202) may be a processor or logic unit that causes the hardware synchronization unit (120) to maintain the state (e.g., context state) of a plurality of global synchronization objects. In the example of FIG. 2B, the control logic (202) may create and/or define a synchronization object or a global synchronization object using the exemplary code (255). The control logic (202) may also generate control signaling to broadcast synchronization information to consumer IP devices when a producer IP device satisfies synchronization.

일부 예에서, IP 디바이스가 동기화 객체를 특정 조건과 연관시킬 때 동기화가 '충족'될 수 있다. IP 디바이스는 IP 디바이스의 드라이버 소프트웨어에 의해 행해진 분석 또는 결정을 기반으로 특정 조건과의 연관을 행할 수 있다. 특정 조건은 IP 디바이스 A(생성자)가 시스템의 버퍼에 데이터를 기록하는 것을 완료한 것일 수 있다. 해당 조건이 발생할 때, 또는 그 직후에, 동기화는 대응하는 IP 디바이스 A에 의해 시그널링될 것이고, 이로써 동기화를 만족시킨다(예를 들어, 동기화를 시그널링한다).In some instances, a synchronization may be "satisfied" when an IP device associates a synchronization object with a specific condition. The IP device may associate the specific condition based on analysis or determination made by the IP device's driver software. The specific condition may be that IP device A (the producer) has completed writing data to a buffer in the system. When, or immediately after, the condition occurs, the synchronization will be signaled by the corresponding IP device A, thereby satisfying the synchronization (e.g., signaling the synchronization).

동기화 유닛(120)은 프로세서, 프로세서 코어, 프로세싱 유닛, IP 디바이스, 또는 회로 블록(110)과 같은 SoC(102)의 2개 이상의 디바이스에 걸쳐 있는 동기화 활동에 대한 전역 상태를 유지하도록 구성된다. 하드웨어 동기화 유닛(120)은 디바이스들 사이에서 생성되고 전달되는 동기화 신호들에 대한 소프트웨어 계층 변환들을 요구하거나 구현하지 않고 이러한 전역 동기화 상태들을 유지하도록 구성된다.A synchronization unit (120) is configured to maintain a global state for synchronization activities spanning two or more devices of a SoC (102), such as a processor, processor core, processing unit, IP device, or circuit block (110). The hardware synchronization unit (120) is configured to maintain these global synchronization states without requiring or implementing software layer conversions for synchronization signals generated and transmitted between the devices.

하드웨어 동기화 유닛(120)은 SoC(102)에서 동기화 이벤트를 제어 및 관리하기 위해 사용하는 전역 동기화 객체를 참조하여 컨텍스트 상태들을 결정한다. 예를 들어, 제어 로직(202)은 인출 및 인입 동기화 신호(또는 값)를 검출 및/또는 분석하고, 그러한 동기화 신호들을 기반으로 컨텍스트 상태들을 결정할 수 있다. 적어도 하나의 컨텍스트 상태는 SoC(102)상의 개별 디바이스에 대응한다. 일부 구현예에서, 컨텍스트 상태들은 각각 SoC(102)상의 다수의 IP 디바이스 중 개별 IP 디바이스에 대응한다.The hardware synchronization unit (120) determines context states by referencing a global synchronization object used to control and manage synchronization events in the SoC (102). For example, the control logic (202) may detect and/or analyze incoming and outgoing synchronization signals (or values) and determine context states based on such synchronization signals. At least one context state corresponds to an individual device on the SoC (102). In some implementations, each context state corresponds to an individual IP device among a plurality of IP devices on the SoC (102).

예를 들어, 하드웨어 동기화 유닛(120)은 ISP(112)에 대한 개별 컨텍스트 상태, TPU(114)에 대한 개별 컨텍스트 상태, DSP(116)에 대한 개별 컨텍스트 상태, 및 GPU(118)에 대한 개별 컨텍스트 상태를 결정할 수 있다. 일부 구현예에서, 하드웨어 동기화 유닛(120)은 다수의 IP 디바이스 사이의 액세스의 동시성을 허용하고 이들 동시 액세스에 대해 동기화 무결성을 유지하기 위해 컨텍스트들 및 컨텍스트 상태들을 사용한다. 각각의 클라이언트 또는 IP 디바이스에 대해, 컨텍스트는 각각의 IP 디바이스가 자신의 동기화 컨텍스트 내에서 작업하는 추상화[abstraction]를 제공한다. 일반적으로, 각각의 컨텍스트는 특정 동기화 객체 또는 동기화 객체들의 세트에 대한 동작들을 수행하는 데 필요한 레지스터들의 세트에 연결될 수 있다.For example, the hardware synchronization unit (120) may determine a separate context state for the ISP (112), a separate context state for the TPU (114), a separate context state for the DSP (116), and a separate context state for the GPU (118). In some implementations, the hardware synchronization unit (120) uses the contexts and context states to allow concurrent access between multiple IP devices and to maintain synchronization integrity for these concurrent accesses. For each client or IP device, a context provides an abstraction that each IP device operates within its own synchronization context. Generally, each context may be associated with a set of registers necessary to perform operations on a particular synchronization object or set of synchronization objects.

일부 구현예에서, 각각의 컨텍스트 상태는 제1 메모리(204) 및 제2 메모리(206)에 걸쳐 저장된 값들의 조합에 의해 표현된다. 주어진 동기화 이벤트에 대해, IP 디바이스는 먼저 하드웨어 동기화 유닛(120)으로부터 컨텍스트 할당을 획득하여 하나 이상의 동기화 객체를 생성한 다음, 해당 동기화 객체상에서 대기하거나 해당 동기화 객체를 다른 IP 디바이스로 시그널링할 수 있다. 일부 구현예에서, IP 디바이스의 클라이언트 IP 드라이버는 컨텍스트 할당을 획득하기 위해 사용된다.In some implementations, each context state is represented by a combination of values stored across the first memory (204) and the second memory (206). For a given synchronization event, the IP device may first obtain a context assignment from the hardware synchronization unit (120), create one or more synchronization objects, and then wait on the synchronization objects or signal the synchronization objects to other IP devices. In some implementations, the client IP driver of the IP device is used to obtain the context assignment.

각각의 컨텍스트는 하드웨어 동기화 유닛(120)의 애플리케이션 프로그래밍 인터페이스(application-programming interface, API)를 구현하기 위한 CSR들의 세트를 가질 수 있다. 예를 들어, 새로운 동기를 획득하기 위해 판독 전용 CSR이 사용되는 반면, 동기를 해제하기 위해 기록 전용 CSR이 사용된다. 일부 구현예에서, 제어 로직(202)은 IP 디바이스에 대한 동기화 이벤트들을 표현하는 컨텍스트가 이러한 동기화 이벤트들과 연관된 동작들을 수행하기 위한 CSR들의 대응하는 세트를 갖도록 레지스터들의 배분 및/또는 할당을 결정한다. 명확성을 위해, 컨텍스트는 하나 이상의 컨텍스트 상태를 포함할 수 있으며, 여기서, 각각의 컨텍스트 상태는 동기화 신호 이벤트 또는 대기 이벤트와 같은 동기화 이벤트의 속성 또는 세부 사항을 나타낼 수 있다.Each context may have a set of CSRs for implementing the application programming interface (API) of the hardware synchronization unit (120). For example, a read-only CSR is used to acquire a new synchronization, while a write-only CSR is used to release synchronization. In some implementations, the control logic (202) determines the allocation and/or assignment of registers such that a context representing synchronization events for an IP device has a corresponding set of CSRs for performing operations associated with such synchronization events. For clarity, a context may include one or more context states, where each context state may represent an attribute or detail of a synchronization event, such as a synchronization signal event or a wait event.

동기화 유닛(120)은 컨텍스트 상태들 각각에 대응하는(또는 표현하는) 레지스터 값들을 생성한다. 예를 들어, IP 디바이스에 대한 각각의 컨텍스트 상태는 제1 메모리(204)에 저장되는 레지스터 값들의 세트와 제2 메모리(206)의 하나 이상의 북키핑 데이터 값(bookkeeping data value)을 사용하여 캡처될 수 있다. 하드웨어 동기화 유닛(120)은 하드웨어 동기화 유닛(120)의 인터페이스 제어를 표현하는 인터페이스 연결들(220-1, 220-2)을 포함한다. 하드웨어 동기화 유닛(120)은 인입 동기화 신호들을 검출, 획득, 또는 그 외의 방식으로 수신하기 위해 인터페이스 연결(220-1)을 사용한다. 이와 관련하여, 하드웨어 동기화 유닛(120)은 인터페이스 연결(220-2)을 사용하여 인출 동기화 신호를 송신, 제공 또는 그 외의 방식으로 전달한다.The synchronization unit (120) generates register values corresponding to (or representing) each of the context states. For example, each context state for the IP device may be captured using a set of register values stored in the first memory (204) and one or more bookkeeping data values of the second memory (206). The hardware synchronization unit (120) includes interface connections (220-1, 220-2) representing interface controls of the hardware synchronization unit (120). The hardware synchronization unit (120) uses the interface connection (220-1) to detect, acquire, or otherwise receive incoming synchronization signals. In this regard, the hardware synchronization unit (120) uses the interface connection (220-2) to transmit, provide, or otherwise convey outgoing synchronization signals.

제어 로직(202)은 인출 및 인입 동기화 신호를 검출 및 분석하고, 해당 분석을 기반으로 대응하는 레지스터 값들을 생성할 수 있다. 하드웨어 동기화 유닛(120)은 제1 메모리(204)의 CSR들 중 하나 이상을 사용하여 디바이스들 각각에 대한 컨텍스트 상태들을 나타내는 (또는 표현하는) 레지스터 데이터 값들을 저장한다.The control logic (202) can detect and analyze the incoming and outgoing synchronization signals and generate corresponding register values based on the analysis. The hardware synchronization unit (120) uses one or more of the CSRs of the first memory (204) to store register data values representing (or expressing) context states for each of the devices.

도 2의 예에서, 하드웨어 동기화 유닛(120)은 획득 'acquire' 파라미터에 대한 데이터를 저장하는 레지스터(240), 해제 'release' 파라미터에 대한 데이터를 저장하는 레지스터(241), 시그널 'signal' 파라미터에 대한 데이터를 저장하는 레지스터(242), 대기 'wait' 파라미터에 대한 데이터를 저장하는 레지스터(243), 알림 큐 'NotificationQ' 파라미터에 대한 데이터를 저장하는 레지스터(244), 및 'IRQ'에 대한 데이터를 저장하는 레지스터(250)를 포함한다.In the example of FIG. 2, the hardware synchronization unit (120) includes a register (240) for storing data for an acquisition 'acquire' parameter, a register (241) for storing data for a release 'release' parameter, a register (242) for storing data for a signal 'signal' parameter, a register (243) for storing data for a wait 'wait' parameter, a register (244) for storing data for a notification queue 'NotificationQ' parameter, and a register (250) for storing data for an 'IRQ'.

적어도 레지스터들(240, 241, 242, 및 243)을 사용하는 예시적인 동기화 동작이 이제 설명될 것이다.An exemplary synchronization operation using at least registers (240, 241, 242, and 243) will now be described.

IP 디바이스 A('IP_A')는 주어진 동작에 대한 동기화 객체를 요구할 수 있다. 예를 들어, IP_A는, IP_A가 데이터의 일부에 대해 주어진 태스크를 완료하자마자, IP 디바이스 B('IP_B')가 데이터의 해당 부분에 대해 추가 작업을 수행하도록 통지될 수 있도록 동기화 객체를 구성할 필요가 있을 수 있다. 요구되는 동기화 객체는 IP 디바이스 A의 소프트웨어 드라이버 또는 기타 연산 로직에 의해 트리거될 수 있다. IP_A는 새롭게 생성된 동기화 객체의 식별자/ID(즉, sync_ID)를 산출, 생성 또는 그 외의 방식으로 획득하기 위해 레지스터(240)의 판독을 개시한다. 일부 구현예에서, IP_A는 커맨드 'sync my_new_sync = csu_contex0->acquire'를 기반으로 ID를 획득한다.An IP device A ('IP_A') may request a synchronization object for a given operation. For example, IP_A may need to configure a synchronization object so that as soon as IP_A completes a given task on a portion of data, IP device B ('IP_B') can be notified to perform additional work on that portion of data. The requested synchronization object may be triggered by a software driver or other operational logic of IP device A. IP_A initiates a read of register (240) to compute, generate, or otherwise obtain an identifier/ID (i.e., sync_ID) of a newly created synchronization object. In some implementations, IP_A obtains the ID based on the command 'sync my_new_sync = csu_contex0->acquire'.

시스템(100)은 IP_B에 대한 호출을 개시하고, IP_A가 데이터에 대해 주어진 태스크를 수행하는 동안 IP_B가 종속성으로서 동기화 상태를 대기하도록 하는 방식으로 새로운 동기화(sync)를 전달한다. 예를 들어, 시스템(100)은 하드웨어 동기화 유닛(120)을 사용하여 IP_B의 드라이버 또는 다른 연산 로직에 대한 호출을 개시할 수 있다. 하드웨어 동기화 유닛(120)은 레지스터(241)를 사용하여 이러한 부분 데이터를 프로세싱하는 것을 커버하는 동기화 컨텍스트 동안 IP_A 및 IP_B에 의해 사용되는 레지스터 ID들을 지정할 수 있다. 일부 구현예에서, 시스템(100)은 IP_B에 대한 호출을 개시하고, 커멘드 'process_IP_B(work, my_new_sync)'를 기반으로 새로운 동기화를 전달한다.The system (100) initiates a call to IP_B and passes a new sync in such a way that IP_B waits for a sync state as a dependency while IP_A performs a given task on the data. For example, the system (100) may initiate a call to the driver or other computational logic of IP_B using the hardware synchronization unit (120). The hardware synchronization unit (120) may use the register (241) to specify the register IDs used by IP_A and IP_B during the synchronization context covering processing such partial data. In some implementations, the system (100) initiates a call to IP_B and passes a new sync based on the command 'process_IP_B(work, my_new_sync)'.

IP_A는 하드웨어 동기화 유닛(120)을 사용하여 레지스터(242)에 그의 대응하는 동기화 ID를 기록함으로써 동기화를 시그널링한다. IP_A와 하드웨어 동기화 유닛(120) 사이의 상호 작용은 IP_A에 의해 지원되는 펌웨어 및/또는 하드웨어 로직에 의해 개시 또는 관리될 수 있다. 일부 구현예에서, 시스템(100)은 커멘드 'IP_A_Buffer_done_IRQ_event: csu_contex0->signal = my_new_sync'를 기반으로 동기화를 시그널링하고 대응하는 동기화 ID를 기록한다. 시스템(100)은 커멘드 'process_IP_B(work, sync)'를 기반으로 IP_B를 수반하는 프로세스들을 개시할 수 있다. 일반적으로, IP_A 및 IP_B는 회로 블록(110)의 디바이스들 중 임의의 것이든 될 수 있다. 또한, 'csu_context'는 하드웨어 동기화 유닛(120)에서의 클라이언트 컨텍스트를 표현하는 레지스터 세트들을 나타낸다.IP_A signals synchronization by writing its corresponding synchronization ID to register (242) using hardware synchronization unit (120). Interaction between IP_A and hardware synchronization unit (120) may be initiated or managed by firmware and/or hardware logic supported by IP_A. In some implementations, system (100) signals synchronization based on command 'IP_A_Buffer_done_IRQ_event: csu_contex0->signal = my_new_sync' and writes the corresponding synchronization ID. System (100) may initiate processes involving IP_B based on command 'process_IP_B(work, sync)'. In general, IP_A and IP_B may be any of the devices of circuit block (110). Additionally, 'csu_context' represents a set of registers representing the client context in hardware synchronization unit (120).

하드웨어 동기화 유닛(120)은 sync_ID를 레지스터(243)에 기록함으로써 IP_B가 IP_A에 관한 종속성을 대기하도록 한다. 일부 구현예에서, 시스템(100)은 IP_B로 하여금 커맨드 'csu_context1->wait = sync'를 기반으로 종속성을 대기하도록 한다. IP_B는 동기화(sync)가 시그널링되었을 때 또는 동기화가 완료되었음을 나타내는 통지를 수신한 후에 응답하여 데이터의 일부에 대해 추가적인 '작업'을 수행한다. 예를 들어, IP_B는 커맨드 'while ((notified_sync = csu_context1->notificationQ) != 0)'를 기반으로 이러한 동기화에 종속된 추가 '작업'을 수행하거나 실행할 수 있다. 커맨드는 하드웨어 동기화 유닛(120)의 IRQ_Handler를 이용하여 실행될 수 있다.The hardware synchronization unit (120) causes IP_B to wait for a dependency on IP_A by writing a sync_ID to the register (243). In some implementations, the system (100) causes IP_B to wait for a dependency based on the command 'csu_context1->wait = sync'. IP_B responds by performing additional 'work' on a portion of the data when the synchronization (sync) is signaled or after receiving a notification indicating that the synchronization is complete. For example, IP_B may perform or execute this additional 'work' dependent on the synchronization based on the command 'while ((notified_sync = csu_context1->notificationQ) != 0)'. The command may be executed using the IRQ_Handler of the hardware synchronization unit (120).

일부 구현예에서, 동일한 컨텍스트에 대해 진행 중[in flight]인 다수의 동기화가 있을 수 있다. 이는, CSU IRQ 발생 시, 알림 큐에 통지되는 하나 이상의 동기화가 존재할 수 있음을 의미한다. 다시 말해, while 루프 'while ((notified_sync = csu_context1->notificationQ)!= 0)'의 경우, csu_context1의 소유자는 보류 중인 작업 항목들 중 어느 것이 통지된 동기화에 종속되는지를 확인하게 된다. 이 예에서, 소유자는 IP_B이다. IP_B가 하나의 동기화만 기다리고 있는 경우, while 루프는 0이 아닌 값[non-0]을 한 번만 반환하게 된다.In some implementations, there may be multiple synchronizations in flight for the same context. This means that when a CSU IRQ occurs, there may be more than one synchronization notified in the notification queue. In other words, for the while loop 'while ((notified_sync = csu_context1->notificationQ) != 0)', the owner of csu_context1 checks which of its pending work items depends on the notified synchronization. In this example, the owner is IP_B. If IP_B is waiting for only one synchronization, the while loop will return non-zero only once.

상술 및 다른 예에서, 레지스터(240)는 판독 전용[read-only, RO] 레지스터인 반면, 레지스터들(241, 242, 및 243)은 기록 전용 레지스터들이다. 일부 구현예에서, 레지스터(240)에 저장된 데이터 값들은 동기화 객체, 대응하는 sync_ID, 또는 둘 모두를 '획득(acquire)'하거나 생성하는 데 사용된다. 레지스터(244)에 저장된 데이터 값들은 특정 동기화 객체와 연관된 활동을 IP 디바이스에 통지하는 데 사용된다. 예를 들어, TPU(114)는 10개의 상이한 동기화 객체를 대기하고 있을 수 있고, 알림 레지스터 큐는 동기화 객체 1, 3, 5가 시그널링되었음을 TPU(114)에 통지하는 데 사용된다.In the above and other examples, register (240) is a read-only (RO) register, while registers (241, 242, and 243) are write-only registers. In some implementations, data values stored in register (240) are used to 'acquire' or create a synchronization object, a corresponding sync_ID, or both. Data values stored in register (244) are used to notify the IP device of activity associated with a particular synchronization object. For example, TPU (114) may be waiting on ten different synchronization objects, and a notification register queue is used to notify TPU (114) that synchronization objects 1, 3, and 5 have been signaled.

IP 디바이스들은 특정 동기화 객체 또는 동기화 이벤트에 대한 통지를 하드웨어 동기화 유닛(120)으로부터 획득하기 위해 레지스터(250)에 저장된 IRQ들에 대한 데이터 값들을 사용하거나 판독할 수 있다. 예를 들어, 하드웨어 동기화 유닛(120)은 레지스터(250)에서 IRQ를 사용하여 TPU(114)가 대기하고 있었을 수 있는 동기화 또는 동기화 객체에 관하여 이벤트 또는 액션이 발생했음을 TPU(114)에 통지할 수 있다.IP devices may use or read data values for IRQs stored in registers (250) to obtain notification from the hardware synchronization unit (120) regarding a particular synchronization object or synchronization event. For example, the hardware synchronization unit (120) may use an IRQ in registers (250) to notify the TPU (114) that an event or action has occurred regarding a synchronization or synchronization object for which the TPU (114) may have been waiting.

보다 구체적으로, 하드웨어 동기화 유닛(120)은 각각의 컨텍스트에 대한 시그널링된 동기화들을 추적하도록 구성되고, 이러한 추적을 용이하게 하기 위해 레지스터(250)에서 IRQ들을 사용할 수 있다. IP 디바이스 또는 해당 컨텍스트의 클라이언트가 레지스터(244)를 판독할 때, 해당 레지스터(244)의 각각의 판독은 시그널링되었던 대응하는 동기화의 sync_ID를 반환한다. 일부 구현예에서, IP 디바이스에 의한 해당 레지스터의 각각의 판독은 또한 반환된 sync_ID를 알림 큐로부터 클리어할 것이다. 알림 큐에 더 이상 시그널링된 동기화들이 없을 때, 레지스터(244)의 임의의 판독은 '0'을 반환할 것이다.More specifically, the hardware synchronization unit (120) is configured to track signaled synchronizations for each context and may use IRQs in the register (250) to facilitate such tracking. When the IP device or a client of the context reads the register (244), each read of the register (244) returns the sync_ID of the corresponding synchronization that was signaled. In some implementations, each read of the register by the IP device will also clear the returned sync_ID from the notification queue. When there are no more signaled synchronizations in the notification queue, any read of the register (244) will return '0'.

하드웨어 동기화 유닛(120)은 특정 IP 디바이스를 참조하여 주어진 컨텍스트에 대해 할당 또는 배정되거나 (또는 할당 또는 배정되었거나) 제1 메모리(204)의 하나 이상의 레지스터를 식별할 수 있다. 하드웨어 동기화 유닛(120)은 IP 디바이스가 주어진 컨텍스트에 대한 레지스터 ID들을 획득하고 해당 컨텍스트에 대한 레지스터 ID들을 해제하도록 허용하기 위해 해당 IP 디바이스와 상호 작용한다. 각각의 IP 디바이스는 주어진 동기화 컨텍스트에 대해 IP 디바이스에 배정된 제1 메모리(204)의 CSR들에 값들을 기록하거나 업데이트함으로써 동기화 이벤트에 관한 정보를 하드웨어 동기화 유닛(120)에 통신한다.The hardware synchronization unit (120) can identify one or more registers of the first memory (204) that are allocated or assigned (or have been allocated or assigned) for a given context by referencing a particular IP device. The hardware synchronization unit (120) interacts with the IP device to allow the IP device to obtain register IDs for the given context and to release register IDs for the context. Each IP device communicates information about a synchronization event to the hardware synchronization unit (120) by writing or updating values to the CSRs of the first memory (204) assigned to the IP device for the given synchronization context.

제2 메모리(206)는 하나 이상의 컨텍스트, 컨텍스트 상태 또는 둘 모두에 대한 다양한 '북키핑(Bookkeeping)' 값들을 포함하는 북키핑 테이블을 저장하는 데 사용된다. 제2 메모리(206)는 행 구성[row configuration]을 사용하여 북키핑 값들을 저장할 수 있으며, 여기서, 주어진 행은 컨텍스트 또는 컨텍스트 상태에 대한 하나 이상의 값을 저장하는 데 사용되거나 배정된다. 예를 들어, 값들은 하나 이상의 엔트리(206-0, 206-1, 206-n)를 포함하는 '북키핑' 테이블에 저장된다. 일부 구현예에서, 북키핑 테이블은 n 개의 엔트리(예를 들어, 행)(206-n)를 포함하며, 여기서, n 은 1보다 큰 정수이다.The second memory (206) is used to store a bookkeeping table containing various 'bookkeeping' values for one or more contexts, context states, or both. The second memory (206) can store the bookkeeping values using a row configuration, where a given row is used or assigned to store one or more values for a context or context state. For example, the values are stored in a 'bookkeeping' table containing one or more entries (206-0, 206-1, 206-n). In some implementations, the bookkeeping table contains n entries (e.g., rows) (206-n), where n is an integer greater than 1.

북키핑 테이블은 하나 이상의 동기화 이벤트와 연관된 전역 동기화 객체들을 포함하는 각각의 동기화 객체에 대한 상태 정보를 유지하는 전역 상태 테이블이다. 북키핑 테이블은 하드웨어 동기화 유닛(120)으로부터 획득되거나 이에 의해 생성되는 각각의 동기화 객체에 대한 엔트리(예를 들어, 행 엔트리)를 포함할 수 있다. 북키핑 테이블의 각각의 엔트리 또는 행은 각각의 동기화 객체에 대한 상태 정보를 반영하고, 얼마나 많은 동기화 객체가 활성 또는 사용 가능한지, 북키핑 테이블에서 얼마나 많은 동기화 객체 엔트리가 사용 가능한지, 그리고 얼마나 많은 동기화 객체 엔트리가 이미 획득되었는지를 나타낸다.A bookkeeping table is a global state table that maintains status information for each synchronization object, including global synchronization objects associated with one or more synchronization events. The bookkeeping table may include an entry (e.g., a row entry) for each synchronization object obtained from or generated by the hardware synchronization unit (120). Each entry or row in the bookkeeping table reflects status information for each synchronization object, indicating how many synchronization objects are active or available, how many synchronization object entries are available in the bookkeeping table, and how many synchronization object entries have already been obtained.

동기화 객체 엔트리에 대한 데이터 값들 각각은 동기화 이벤트, IP 디바이스, 또는 둘 모두에 대응할 수 있다. 제어 로직(202)은 제1 메모리(204)로부터 획득되거나 판독된 데이터 값들을 기반으로 북키핑 테이블을 생성한다. 예를 들어, 제어 로직(202)은 레지스터 그룹(205)에 대한 데이터 값을 추출, 판독 또는 획득할 수 있고, 이러한 데이터 값의 일부(또는 전부)를 사용하여 제2 메모리(206)에 저장된 북키핑 테이블의 엔트리를 생성하거나 채울 수 있다.Each data value for a synchronization object entry may correspond to a synchronization event, an IP device, or both. The control logic (202) generates a bookkeeping table based on data values acquired or read from the first memory (204). For example, the control logic (202) may extract, read, or obtain data values for a register group (205) and use some (or all) of these data values to generate or populate entries in a bookkeeping table stored in the second memory (206).

도 2의 예에서, 주어진 동기화 객체에 대한 상태 정보를 유지하기 위해, 북키핑 테이블은 'sync_ID', 'state', 및 'waiter queue'에 대한 데이터 값들을 저장한다. 다른 예에서, 북키핑 테이블은 주어진 동기화 객체에 대한 상태 정보를 유지하기 위해 더 많거나 더 적은 데이터 값을 저장할 수 있다. 'sync_ID'는 동기화 객체를 식별하고, '상태[state]'는 동기화 객체의 예시적인 상태를 나타내고, '웨이터 큐(waiter queue)'는 해당 동기화 객체상에서 대기하고 있을 수 있는 클라이언트들 또는 디바이스들의 큐를 나타낸다. 동기화 객체의 예시적인 '상태'는, i) 동기화 객체가 자유롭게 시그널링될 수 있음을 나타내는 프리(free); ii) 동기화 객체가 시그널링되고 있지 않음(또는 시그널링되지 않음)을 나타내는 언시그널링(unsignalled); iii) 동기화 객체가 시그널링되고 있음(또는 시그널링되었음)을 나타내는 시그널링(signalled); 및 iv) 동기화 객체와 연관된 에러 상태를 나타내는 에러(error)를 포함할 수 있다.In the example of FIG. 2, to maintain state information for a given synchronization object, the bookkeeping table stores data values for 'sync_ID', 'state', and 'waiter queue'. In other examples, the bookkeeping table may store more or fewer data values to maintain state information for a given synchronization object. 'sync_ID' identifies the synchronization object, 'state' represents an exemplary state of the synchronization object, and 'waiter queue' represents a queue of clients or devices that may be waiting on the synchronization object. Exemplary 'states' of the synchronization object may include: i) free, indicating that the synchronization object is freely signalable; ii) unsignalled, indicating that the synchronization object is not signaled (or has not been signaled); iii) signaled, indicating that the synchronization object is signaled (or has been signaled); and iv) error, indicating an error condition associated with the synchronization object.

동기화 모듈(108)은 각각의 동기화 객체에 대한 다양한 파라미터를 추적 및 유지할 수 있다. 예를 들어, 하드웨어 동기화 유닛(120)은 제어 로직(202)을 사용하여 동기화 객체의 마지막 상태 변경을 나타내는 타임스탬프(예를 들어, 전역 타임스탬프)를 결정할 수 있다. 제어 로직(202)은 동기화 객체(또는 동기화 이벤트)가 시그널링된 횟수를 카운트하거나 추적하는 카운터를 구현할 수 있다. 일부 구현예에서, 카운터 파라미터는 반복 동기화 이벤트들에 특히 관련된다.The synchronization module (108) may track and maintain various parameters for each synchronization object. For example, the hardware synchronization unit (120) may use the control logic (202) to determine a timestamp (e.g., a global timestamp) indicating the last state change of the synchronization object. The control logic (202) may implement a counter that counts or tracks the number of times the synchronization object (or synchronization event) has been signaled. In some implementations, the counter parameter is particularly relevant to recurring synchronization events.

후술하는 바와 같이, 제어 로직(202)은 AND, OR, XOR, 또는 기타 관련된 논리 연산자들을 포함하는 조합 로직을 사용하여 반복 동기화를 구성할 수 있다. 제어 로직(202)은 또한 동기화에 대한 기존의 참조를 추적하는 참조 카운트를 구현할 수 있다. 제어 로직(202)은 참조 카운트 값이 '0'으로 다시 설정될 때 상태를 '프리(free)'로 변경하는 것을 트리거하기 위해 참조 카운트를 사용할 수 있다.As described below, the control logic (202) may configure the repeating synchronization using combinational logic including AND, OR, XOR, or other related logical operators. The control logic (202) may also implement a reference count to track existing references to the synchronization. The control logic (202) may use the reference count to trigger a change in the state to 'free' when the reference count value is reset to '0'.

하드웨어 동기화 유닛(120)은 2개 이상의 동기화 객체의 합성 또는 조합을 기반으로 합성 동기화 객체들을 생성하도록 구성된다. 보다 구체적으로, 제어 로직(202)은 2개의 구별되는 동기화 객체로부터 새로운(또는 합성) 동기화 객체를 생성하기 위해 논리 연산자들을 사용할 수 있다. 예를 들어, 설계자가 동기화 객체 A 및 B 둘 모두의 시그널링을 수반하는 이벤트에 관심이 있는 경우, 제어 로직(202)은 ADD 연산자를 사용하여 동기화 객체 A 및 동기화 객체 B를 AND 연산함으로써 새로운 동기화 객체를 생성할 수 있다. 다른 예에서, 설계자가 동기화 객체 A, 동기화 객체 B, 동기화 객체 C 중 임의의 것의 시그널링이 수반되는 이벤트에 관심이 있는 경우, 제어 로직(202)은 그 다음 OR 연산자를 사용하여 동기화 객체 A, 동기화 객체 B 및 동기화 객체 C를 OR 연산함으로써 새로운 동기화 객체를 생성할 수 있다.The hardware synchronization unit (120) is configured to generate composite synchronization objects based on the composition or combination of two or more synchronization objects. More specifically, the control logic (202) can use logical operators to generate a new (or composite) synchronization object from two distinct synchronization objects. For example, if the designer is interested in an event that involves signaling of both synchronization objects A and B, the control logic (202) can generate a new synchronization object by ANDing synchronization objects A and B using the ADD operator. In another example, if the designer is interested in an event that involves signaling of any of synchronization objects A, B, and C, the control logic (202) can then generate a new synchronization object by ORing synchronization objects A, B, and C using the OR operator.

또 다른 예에서, 하드웨어 동기화 유닛(120)은 10개의 상이한 이미지 또는 오디오 샘플을 표현하는 10개의 상이한 동기화 객체를 생성할 수 있다. 10개의 이미지는 상이한 이미지 크기를 갖는 단일 스트림을 표현할 수 있다. SoC(102)는 10개의 모든 이미지에 대해 동시 동작을 수행하기를 원할 수 있다. 따라서, 각각의 이미지에 대해 일대일로 대기 동작을 수행하는 대신, 하드웨어 동기화 유닛(120)은 AND 연산자를 사용하여 10개의 모든 동기화 객체를 조합하여 10개의 모든 이미지를 표현하는 새로운 동기화 객체를 생성할 수 있다. 그 후, 하드웨어 동기화 유닛(120)은 단일 합성 동기화 객체를 사용하여 더 간소화된 대기 이벤트 단일[single]을 구현할 수 있다.In another example, the hardware synchronization unit (120) may create ten different synchronization objects representing ten different images or audio samples. The ten images may represent a single stream with different image sizes. The SoC (102) may want to perform simultaneous operations on all ten images. Therefore, instead of performing a one-to-one wait operation on each image, the hardware synchronization unit (120) may use an AND operator to combine all ten synchronization objects to create a new synchronization object representing all ten images. The hardware synchronization unit (120) may then implement a more streamlined single wait event using the single composite synchronization object.

합성 동기화 객체 이외에도, 하드웨어 동기화 유닛(120)은 특정 맞춤형 또는 특수한 동기화 객체들을 구현할 수 있다. 일부 구현예에서, 하드웨어 동기화 유닛(120)은 조건부 동기화 객체들, 카운터 기반 동기화 객체들, QoS 카운터 기반 동기화 객체들, 및 타이머 기반 동기화 객체들을 구현할 수 있다. 예를 들어, 제어 로직(202)은 특정 조건이 충족되는 경우에만/충족될 때 트리거되는 조건부 동기화 객체를 생성할 수 있으며, 여기서, 조건은 미리 정의되거나 진행 중[on the fly]에 결정될 수 있다.In addition to synthetic synchronization objects, the hardware synchronization unit (120) may implement certain custom or specialized synchronization objects. In some implementations, the hardware synchronization unit (120) may implement conditional synchronization objects, counter-based synchronization objects, QoS counter-based synchronization objects, and timer-based synchronization objects. For example, the control logic (202) may create a conditional synchronization object that is triggered only if/when a certain condition is met, where the condition may be predefined or determined on the fly.

예를 들어, 조건은 SoC(102) 또는 동기화 모듈(108)의 CSR의 레지스터 값이나 특정 프로세싱 이벤트를 기반으로 할 수 있다. 제어 로직(202)은 또한 AND, OR, XOR 연산자를 사용하여 조건부 동기화 객체를 생성할 수 있다. 일부 예에서, 제어 로직(202)은 특정 시간 값이 경과한 후 또는 특정 시간 지속 기간이 만료된 후에 트리거되는 타이머 기반 동기화 객체들을 생성할 수 있다. 일부 예에서, 제어 로직(202)은 프로그램 카운터에서 특정 값을 검출한 후에 또는 카운터 레지스터에서 특정 서비스 품질(quality of service, QoS) 카운트 값을 판독시 트리거되는 QoS 카운터 기반 동기화 객체들을 생성할 수 있다. 예를 들어, QoS 값은 그래픽 프로세싱 동작을 위한 초당 프레임의 수와 같은 주어진 서비스 파라미터에 대한 바이트 또는 데이터 값의 수를 기반으로 할 수 있다.For example, the condition can be based on a register value of a CSR of the SoC (102) or the synchronization module (108) or a specific processing event. The control logic (202) can also create conditional synchronization objects using AND, OR, and XOR operators. In some examples, the control logic (202) can create timer-based synchronization objects that are triggered after a specific time value has elapsed or after a specific time duration has expired. In some examples, the control logic (202) can create QoS counter-based synchronization objects that are triggered after detecting a specific value in a program counter or upon reading a specific quality of service (QoS) count value in a counter register. For example, the QoS value can be based on the number of bytes or data values for a given service parameter, such as the number of frames per second for a graphics processing operation.

일부 구현예에서, 하드웨어 동기화 유닛(120)은 데이터 블록(210)에 나타낸 정보를 사용하여 북키핑 테이블을 업데이트 및 유지하기 위한 데이터 값들을 제공한다. 데이터 블록(210)에서의 정보는 제1 메모리(204)로부터 제2 메모리(206)로 전달되는 데이터 값들을 표현할 수 있다. 데이터 블록(210)에서의 값들은 하드웨어 동기화 유닛(120)에 저장 또는 유지될 수 있다. 예를 들어, 데이터 블록(210)은 IP 디바이스의 컨텍스트에 대한 레지스터 값들의 서브세트를 포함하는 버퍼일 수 있다. 제어 로직(202)은 데이터 블록(210)으로부터 값들을 판독 또는 추출하고, 그러한 값을 사용하여, 북키핑 테이블의 대응하는 행에서, 해당 IP 디바이스(또는 컨텍스트)에 배정된 동기화 객체에 대한 상태 정보를 업데이트할 수 있다.In some implementations, the hardware synchronization unit (120) provides data values for updating and maintaining a bookkeeping table using information represented in a data block (210). The information in the data block (210) may represent data values transferred from the first memory (204) to the second memory (206). The values in the data block (210) may be stored or maintained in the hardware synchronization unit (120). For example, the data block (210) may be a buffer containing a subset of register values for a context of an IP device. The control logic (202) may read or extract values from the data block (210) and use those values to update status information for a synchronization object assigned to the IP device (or context) in a corresponding row of the bookkeeping table.

일부 구현예에서, 동기화 모듈(108) 및/또는 하드웨어 동기화 유닛(120)은 SoC(102)의 부동 역할 이동 연산 요소[floating role migrating compute element]이다. 부동 역할 요소들을 통합하는 하드웨어 메커니즘의 양태는 SoC(102)상의 IP 디바이스들의 활성 세트에 포함될 수 있는 서로 다른 프로세싱 디바이스들 사이에서 이동할 것이다. 하드웨어 동기화 유닛(120)은 동기화 역할이 회로 블록(110)의 IP 디바이스들 사이에서 이동 또는 부동할 수 있게 하는 로직(예를 들어, 소프트웨어/펌웨어) 및 제어 요소들을 포함할 수 있다. 예를 들어, 주어진 IP 디바이스에서 부동 역할 동기화 기능을 가능하게 하기 위해, 하드웨어 동기화 유닛(120)은 해당 IP 디바이스에서 제어 로직의 개별 부분 및 하나 이상의 인터페이스 연결을 구현할 수 있다.In some implementations, the synchronization module (108) and/or the hardware synchronization unit (120) are floating role migrating compute elements of the SoC (102). An aspect of the hardware mechanism that integrates the floating role elements will be to migrate between different processing devices that may be included in the active set of IP devices on the SoC (102). The hardware synchronization unit (120) may include logic (e.g., software/firmware) and control elements that enable the synchronization role to migrate or float between the IP devices of the circuit block (110). For example, to enable floating role synchronization functionality in a given IP device, the hardware synchronization unit (120) may implement a separate portion of the control logic and one or more interface connections in that IP device.

도 3은 하드웨어 동기화 유닛(120)과 SoC(102)의 IP 블록들을 수반하는 예시적인 통신의 블록도(300)이다. 일반적으로, 도 3의 예는 하드웨어 동기화 유닛(120)에 의해 표현되는 중앙 동기화 유닛(central sync unit, 'CSU')의 하이-레벨 컨텍스트를 도시한다. 본 예에서, CSU는 연산 IP들 간의 동기화 라우터로 볼 수 있으며, 가장 효율적이고 균일한 방식으로 다대다 동기화를 가능하게 한다.FIG. 3 is a block diagram (300) of an exemplary communication involving a hardware synchronization unit (120) and IP blocks of an SoC (102). In general, the example of FIG. 3 illustrates a high-level context of a central synchronization unit ('CSU') represented by the hardware synchronization unit (120). In this example, the CSU can be viewed as a synchronization router between computational IPs, enabling many-to-many synchronization in the most efficient and uniform manner.

상술한 바와 같이, 동기화 모듈(108)은 중앙 하드웨어 동기화 유닛(120)에 의해 수행되는 동작들을 사용하여 SoC(102)에서 동기화 이벤트들을 동적으로 제어 및 관리한다. 동기화 이벤트들은 이기종 연산을 지원하기 위해 제어 및 실행된다. 보다 구체적으로, 하드웨어 동기화 유닛(120)은, 예를 들어, i) IP 블록(110)의 IP 디바이스들 사이 및/또는 ii) CPU(104)와 회로 블록(110) 사이의 동작들을 배열 및 동기화하기 위해, 제어 시그널링(124)의 개별 신호 값들을 생성할 수 있다.As described above, the synchronization module (108) dynamically controls and manages synchronization events in the SoC (102) using operations performed by the central hardware synchronization unit (120). The synchronization events are controlled and executed to support heterogeneous operations. More specifically, the hardware synchronization unit (120) may generate individual signal values of the control signaling (124) to, for example, arrange and synchronize operations between i) IP devices of the IP block (110) and/or ii) between the CPU (104) and the circuit block (110).

일부 구현예에서, 동기화 유닛(120)은 각각의 IP 디바이스에서 이벤트들을 동기화하거나 또는 그 외의 방식으로 관리하기 위해 제어 시그널링(124)을 생성한다. 예를 들어, 제어 시그널링(124)은 ISP(112)에서 이벤트들을 동기화하기 위한 적어도 하나의 제어 값, TPU(114)에서 이벤트들을 동기화하기 위한 적어도 하나의 제어 값, DSP(116)에서 이벤트들을 동기화하기 위한 적어도 하나의 제어 값, 및 GPU(118)에서 이벤트들을 동기화하기 위한 적어도 하나의 제어 값을 포함할 수 있다. 이러한 제어 값들은 각각 전역 동기화 객체를 표현할 수 있거나, 전역 동기화 객체를 IP 디바이스에 전달하는데 사용될 수 있거나, 또는 두 경우 모두에 해당할 수 있다.In some implementations, the synchronization unit (120) generates control signaling (124) to synchronize or otherwise manage events in each IP device. For example, the control signaling (124) may include at least one control value for synchronizing events in the ISP (112), at least one control value for synchronizing events in the TPU (114), at least one control value for synchronizing events in the DSP (116), and at least one control value for synchronizing events in the GPU (118). Each of these control values may represent a global synchronization object, may be used to convey a global synchronization object to the IP device, or may be both.

하드웨어 동기화 유닛(120)[또는 동기화 모듈(108)]은 SoC(102)의 각각의 IP 디바이스에 대해 범용 방식으로 다수의 IP 디바이스 사이에서 이벤트들을 동기화하기 위해 제어 시그널링(124)을 사용한다. 예를 들어, 하드웨어 동기화 유닛(120)은 SoC(102)에서 실행되는 이기종 연산의 동기화 이벤트를 제어 및 관리하는 데 사용되는 제어 시그널링(124)에 포함되는 전역 동기화 객체를 생성할 수 있다.The hardware synchronization unit (120) (or synchronization module (108)) uses control signaling (124) to synchronize events among multiple IP devices in a general manner for each IP device of the SoC (102). For example, the hardware synchronization unit (120) may create a global synchronization object included in the control signaling (124) used to control and manage synchronization events of heterogeneous operations running on the SoC (102).

하드웨어 동기화 유닛(120)은 SoC(102)의 IP 디바이스로부터 요청을 수신하는 것에 응답하여 전역 동기화 객체를 생성할 수 있다. 예를 들어, 전역 동기화 객체는 SoC의 다수의 IP 디바이스에 의한 프로세싱을 위한 데이터를 생성하는 IP 디바이스 또는 애플리케이션(예를 들어, 카메라)으로부터의 요청(302)을 기반으로 생성될 수 있다. 각각의 IP 디바이스는 SoC(102)상의 IP 블록(110)의 프로세서(또는 프로세서 코어)일 수 있다. 도 3의 예에서, 하드웨어 동기화 유닛(120)은 ISP(112)로부터의 'GetSync' 요청(302)을 기반으로 전역 동기화 객체를 생성할 수 있다.The hardware synchronization unit (120) can create a global synchronization object in response to receiving a request from an IP device of the SoC (102). For example, the global synchronization object can be created based on a request (302) from an IP device or application (e.g., a camera) that generates data for processing by multiple IP devices of the SoC. Each IP device can be a processor (or processor core) of an IP block (110) on the SoC (102). In the example of FIG. 3, the hardware synchronization unit (120) can create a global synchronization object based on a 'GetSync' request (302) from an ISP (112).

전역 동기화 객체는 제어 시그널링(124)의 하나 이상의 신호 값을 사용하여 반환될 수 있다. 도 3의 예시적인 구현에서, 전역 동기화 객체는 'sync_ID' 신호(304)로서 예시적인 IP 디바이스(예를 들어, ISP(112))에 반환[Return] 또는 전달된다. 이 sync_ID 신호(304)는 SoC(102)에서 동기화 이벤트들의 서브세트를 추적하기 위한 전역 sync ID를 표현한다. 예를 들어, sync_ID 신호(304)는 특정 이기종 연산과 연관된 동기화 이벤트들을 추적하기 위한 기초로서 하드웨어 동기화 유닛(120)에 의해 사용될 수 있다.A global synchronization object may be returned using one or more signal values of control signaling (124). In the exemplary implementation of FIG. 3, the global synchronization object is returned or communicated to an exemplary IP device (e.g., an ISP (112)) as a 'sync_ID' signal (304). This sync_ID signal (304) represents a global sync ID for tracking a subset of synchronization events in the SoC (102). For example, the sync_ID signal (304) may be used by the hardware synchronization unit (120) as a basis for tracking synchronization events associated with a particular heterogeneous operation.

일부 구현예에서, 제어 시그널링(124)은 제1 IP 디바이스가 전역 동기화 객체를 생성하도록 트리거하는 데 사용되고, 제1 IP 디바이스는 그 후 상이한 제2 IP 디바이스에 전달하여 제1 IP 디바이스와 제2 IP 디바이스 사이의 이벤트들을 동기화한다. 제1 IP 디바이스는 연산 동작 또는 이벤트(예를 들어, '대기[wait]' 이벤트)를 하나 초과의 IP 디바이스에 시그널링하기 위해 제어 시그널링(124)을 사용할 수 있다. 도 3의 예에서, ISP(112)는 제어 시그널링(124)을 기반으로 하나 이상의 2차 전역 동기화 객체들을 생성할 수 있다.In some implementations, control signaling (124) is used to trigger a first IP device to create a global synchronization object, which the first IP device then passes to a different second IP device to synchronize events between the first IP device and the second IP device. The first IP device may use control signaling (124) to signal a computational action or event (e.g., a 'wait' event) to more than one IP device. In the example of FIG. 3, the ISP (112) may create one or more secondary global synchronization objects based on the control signaling (124).

2차 전역 동기화 객체들은 'sync_ID' 신호(306)에 의해 표현될 수 있다. 이 'sync_ID' 신호(306)는 이기종 연산의 하나 이상의 동기화 이벤트들(또는 활동)을 나타낼 수 있다. 동기화 이벤트들은 '신호 이벤트(signal event)' 및 '대기 이벤트(wait event)'를 포함할 수 있다. 하드웨어 동기화 유닛(120)은 제어 인터페이스(220-1, 220-2)를 통해 이러한 'sync_ID' 신호들을 검출 및 모니터링할 수 있다. 하드웨어 동기화 유닛(120)은 TPU(114) 및 DSP(116)와 같은 예시적인 IP 디바이스들에 통지하기 위해 제어 인터페이스(220-2)를 통해 제어 신호들을 생성 및 송신할 수 있다. 제어 시그널링은 '대기 이벤트(wait event)'와 연관될 수 있다.Secondary global synchronization objects may be represented by a 'sync_ID' signal (306). This 'sync_ID' signal (306) may indicate one or more synchronization events (or activities) of a heterogeneous operation. The synchronization events may include a 'signal event' and a 'wait event'. The hardware synchronization unit (120) may detect and monitor these 'sync_ID' signals via the control interfaces (220-1, 220-2). The hardware synchronization unit (120) may generate and transmit control signals via the control interface (220-2) to notify exemplary IP devices such as the TPU (114) and the DSP (116). The control signaling may be associated with a 'wait event'.

하드웨어 동기화 유닛(120)은, SoC(102)에서 동기화 이벤트들의 실행을 개시하는 제어 시그널링(124)을 기반으로 생성된 하나 이상의 2차 전역 동기화 객체들을 검출할 수 있다. 2차 전역 동기화 객체들은 SoC(102)의 개별 IP 디바이스에 전파되는 범용 동기화 ID에 대응하는 대기 이벤트 신호 또는 알림 신호일 수 있다. 예를 들어, 하드웨어 동기화 유닛(120)은 전역 동기화 객체에 대한 sync_ID를 나타내는 알림 신호(310)를 전달할 수 있다. IP 디바이스(114, 116)는 각각 하드웨어 동기화 유닛(120)으로 전달되는 개별 대기 신호들(312)을 생성할 수 있다.The hardware synchronization unit (120) can detect one or more secondary global synchronization objects generated based on control signaling (124) that initiates execution of synchronization events in the SoC (102). The secondary global synchronization objects can be waiting event signals or notification signals corresponding to a universal synchronization ID that is propagated to individual IP devices of the SoC (102). For example, the hardware synchronization unit (120) can transmit a notification signal (310) indicating a sync_ID for a global synchronization object. The IP devices (114, 116) can each generate individual waiting signals (312) that are propagated to the hardware synchronization unit (120).

일부 구현예에서, 대기 신호들(312)은 TPU(114) 및 DSP(116)가 sync_ID와 연관된 동기화 핸들/객체에 액세스함을 하드웨어 동기화 유닛(120)에 나타내는 2차 전역 동기화 객체들이다. 2차 동기화 객체들은 IP 디바이스들이 1차 동기화 객체 또는 sync_ID에 접속된 동기화 이벤트상에서 대기하고 있음을 하드웨어 동기화 유닛(120)에 나타낼 수 있다. 일부 예에서, GPU(118)는 ISP(112)에 의해 생성된 이미지를 소비할 수 있으며, 알림 신호(310)는 TPU(114) 및 DSP(116)로 하여금 이미지를 저장하는 버퍼에 액세스하기 전에 ISP(112)로부터의 이벤트를 대기하도록 한다. In some implementations, the wait signals (312) are secondary global synchronization objects that indicate to the hardware synchronization unit (120) that the TPU (114) and DSP (116) have access to a synchronization handle/object associated with a sync_ID. The secondary synchronization objects may indicate to the hardware synchronization unit (120) that the IP devices are waiting on a synchronization event connected to the primary synchronization object or sync_ID. In some examples, the GPU (118) may consume an image generated by the ISP (112), and the notification signal (310) causes the TPU (114) and DSP (116) to wait for an event from the ISP (112) before accessing a buffer storing the image.

2차 동기화 객체들은 이기종 연산을 위한 하나 이상의 동기화 이벤트를 실행하기 위해 적어도 2개의 IP 디바이스 사이에서 전달될 수 있다. 일부 구현예에서, 2차 전역 동기화 객체들은 사용자 디바이스(130)에서 실행되는 애플리케이션과 연관된 이벤트 데이터를 프로세싱하기 위해 동시에 수행되는, 추론 동작들 및 그래픽 동작들과 같은 구별되는 데이터 프로세싱 동작들에 대한 개별 동기화 이벤트들을 실행하는 데 사용된다.Secondary synchronization objects can be passed between at least two IP devices to execute one or more synchronization events for heterogeneous operations. In some implementations, secondary global synchronization objects are used to execute individual synchronization events for distinct data processing operations, such as inference operations and graphics operations, that are performed concurrently to process event data associated with an application running on the user device (130).

도 4는 도 1의 시스템에서 IP 블록들 사이의 통신을 동기화하기 위한 예시적인 프로세스(400)이다. 프로세스(400)는 전술한 시스템(100) 및 하드웨어 동기화 유닛(120)을 사용하여 구현되거나 실행될 수 있다. 따라서, 프로세스(400)에 대한 설명은 상술한 시스템(100)의 컴퓨팅 리소스들을 참조할 수 있다. 일부 예에서, 프로세스(400)의 단계 또는 액션은 프로그래밍된 소프트웨어 명령어, 펌웨어 명령어 또는 둘 모두에 의해 가능하게 된다. 각각의 유형의 명령어는 비일시적 기계 판독가능 저장 디바이스에 저장될 수 있으며, 본 문서에 설명된 프로세서 또는 기타 리소스 중 하나 이상에 의해 실행된다.FIG. 4 illustrates an exemplary process (400) for synchronizing communication between IP blocks in the system of FIG. 1. The process (400) may be implemented or executed using the aforementioned system (100) and hardware synchronization unit (120). Accordingly, the description of the process (400) may refer to the computing resources of the aforementioned system (100). In some examples, the steps or actions of the process (400) are enabled by programmed software instructions, firmware instructions, or both. Each type of instruction may be stored in a non-transitory machine-readable storage device and executed by one or more of the processors or other resources described herein.

일부 구현예에서, 프로세스(400)의 단계들은 하나 이상의 ML 모델을 구현하는 신경망의 신경망 계층에 대한 출력을 포함하는 기계 학습[machine-learning, ML] 출력을 생성하기 위해 하드웨어 집적 회로에서 수행된다. 예를 들어, 출력은 이미지 프로세싱, 음성 프로세싱, 또는 이미지 인식 출력을 생성하기 위한 ML 태스크 또는 추론 워크로드에 대한 연산의 일부일 수 있다. 상술한 바와 같이, 집적 회로의 일부는 다양한 유형의 데이터 프로세싱 출력을 생성하기 위한 연산을 가속화하도록 구성된 특수 목적의 신경망 프로세서 또는 하드웨어 ML 가속기를 포함할 수 있다. In some implementations, the steps of process (400) are performed on a hardware integrated circuit to generate machine learning (ML) output, which comprises output from a neural network layer of a neural network implementing one or more ML models. For example, the output may be part of a computation for an ML task or inference workload for generating image processing, speech processing, or image recognition output. As described above, part of the integrated circuit may include a special-purpose neural network processor or hardware ML accelerator configured to accelerate computation for generating various types of data processing output.

프로세스(400)를 다시 참조하면, 하드웨어 동기화 유닛(120)은 SoC에서 하나 이상의 동기화 이벤트들을 제어 및 관리하는 데 사용되는 전역 동기화 객체(122)를 생성한다(402). 예를 들어, 하드웨어 동기화 유닛(120)은 회로 블록(110)의 제1 IP 디바이스 또는 사용자 디바이스(130)에서 실행되는 애플리케이션으로부터 전역 동기화 요청을 수신할 수 있다. 그 다음, 하드웨어 동기화 유닛(120)은 제1 IP 디바이스로부터의 전역 동기화 요청을 기반으로 전역 동기화 객체를 생성할 수 있다. 전역 동기화 요청은 'GetSync' 요청(302)으로 표현될 수 있다.Referring back to process (400), the hardware synchronization unit (120) creates a global synchronization object (122) used to control and manage one or more synchronization events in the SoC (402). For example, the hardware synchronization unit (120) may receive a global synchronization request from an application running on a first IP device or a user device (130) of the circuit block (110). The hardware synchronization unit (120) may then create a global synchronization object based on the global synchronization request from the first IP device. The global synchronization request may be expressed as a 'GetSync' request (302).

일부 구현예에서, 동기화 또는 동기화 객체는 특정 효율성을 실현하기 위해 생성 시간에 인터럽트에 결합된다. 하드웨어 동기화 유닛(120)은 인터럽트를 사용하여 하나 이상의 반복 동기화를 구성할 수 있다. 보다 구체적으로, 제어 로직(202)은 AND, OR, XOR 또는 기타 관련된 논리 연산자를 포함하는 조합 논리를 사용하여 반복 동기화를 구성할 수 있다. 예를 들어, 동기화 객체가 생성되거나 획득될 때, 반복 동기화를 구성하기 위해, 제어 로직(202)은 해당 동기화 객체를 인터럽트들의 논리적 AND/OR 조합에 결합할 수 있다.In some implementations, a synchronization or synchronization object is coupled to an interrupt at creation time to achieve certain efficiencies. The hardware synchronization unit (120) can configure one or more repetitive synchronizations using interrupts. More specifically, the control logic (202) can configure the repetitive synchronizations using combinational logic including AND, OR, XOR, or other related logical operators. For example, when a synchronization object is created or acquired, the control logic (202) can couple the synchronization object to a logical AND/OR combination of interrupts to configure the repetitive synchronization.

하드웨어 동기화 유닛(120)은 인터럽트의 논리적 조합을 사용하여 동기화 동작들을 간소화할 수 있으며, 이는 효율성을 향상시키는 결과를 가져온다. 예를 들어, 인터럽트의 각각의 발생에 대해 다른 동기화 객체를 생성하는 대신, 제어 로직(202)은 타겟 인터럽트가 발생할 때마다 동기화가 자동으로 시그널링되도록 반복 동기화를 생성할 수 있다. 예를 들어, 동기화는 시스템(100)이 타겟 인터럽트의 발생을 검출하거나 결정할 때마다 자동으로 시그널링될 수 있다. 본 예 및 다른 예에서, '대기자 클라이언트(waiter client)'인 IP 디바이스는, 도 2를 참조하여 상술한 타임스탬프 및/또는 신호 카운터 파라미터를 통해 (예를 들어, 반복되는 동기화 신호로부터) 새로운 동기화 신호를 구별할 수 있다.The hardware synchronization unit (120) can streamline synchronization operations by using a logical combination of interrupts, resulting in improved efficiency. For example, instead of creating a different synchronization object for each occurrence of an interrupt, the control logic (202) can create a recurring synchronization so that the synchronization is automatically signaled whenever the target interrupt occurs. For example, the synchronization can be automatically signaled whenever the system (100) detects or determines the occurrence of the target interrupt. In this and other examples, an IP device that is a 'waiter client' can distinguish a new synchronization signal (e.g., from a recurring synchronization signal) via the timestamp and/or signal counter parameters described above with reference to FIG. 2 .

동기화 유닛(120)은 전역 동기화 객체를 참조하여 다수의 컨텍스트 상태를 결정한다(404). 예시적인 이기종 연산(예를 들어, 이미지 또는 오디오 프로세싱)의 경우, 하드웨어 동기화 유닛(120)은 다수의 동기화 이벤트를 제어 및/또는 관리할 것이다. 하드웨어 동기화 유닛(120)은 동기화 이벤트들의 적어도 일부에 대한 인출 및 인입 동기화 신호(또는 값)를 분석하도록 구성된다. 하드웨어 동기화 유닛(120)은 해당 신호 분석을 기반으로 하나 이상의 IP 디바이스에 대한 다수의 컨텍스트 상태를 결정할 수 있다.The synchronization unit (120) determines a plurality of context states by referencing a global synchronization object (404). For example, for heterogeneous operations (e.g., image or audio processing), the hardware synchronization unit (120) will control and/or manage a plurality of synchronization events. The hardware synchronization unit (120) is configured to analyze incoming and outgoing synchronization signals (or values) for at least some of the synchronization events. Based on the signal analysis, the hardware synchronization unit (120) can determine a plurality of context states for one or more IP devices.

하드웨어 동기화 유닛(120)은 다수의 컨텍스트 상태 각각을 i) 회로 블록(110)의 개별 IP 디바이스, 및 ii) 해당 개별 IP 디바이스에 대응하는 동기화 활동과 연관시킬 수 있다. 하드웨어 동기화 유닛(120)은 전역 동기화 객체, 하나 이상의 2차 전역 동기화 객체, 또는 둘 모두를 사용하여 이러한 연관을 결정한다. 보다 구체적으로, 하드웨어 동기화 유닛(120)은 전역 동기화 객체, 2차 전역 동기화 객체, IP 디바이스들 사이의 신호 통신, 또는 이들의 조합에 대한 분석을 기반으로 이러한 연관을 결정할 수 있다.The hardware synchronization unit (120) can associate each of a plurality of context states with i) an individual IP device of the circuit block (110), and ii) a synchronization activity corresponding to the individual IP device. The hardware synchronization unit (120) determines these associations using a global synchronization object, one or more secondary global synchronization objects, or both. More specifically, the hardware synchronization unit (120) can determine these associations based on an analysis of the global synchronization object, the secondary global synchronization objects, signaling communication between the IP devices, or a combination thereof.

동기화 유닛(120)은 컨텍스트 상태들 각각을 표현하는 레지스터 값들을 생성한다(406). 예시적인 이기종 연산에서, 다수의 컨텍스트 상태 각각에 대해, 하드웨어 동기화 유닛(120)은 또한 인출 및 인입 동기화 신호에 대한 분석을 기반으로 레지스터 값들의 대응하는 세트를 생성할 수 있다. 하드웨어 동기화 유닛(120)은 또한 컨텍스트 상태들과 IP 디바이스들 사이의 연관을 결정하기 위해 하나 이상의 레지스터 값을 사용할 수 있다. 일부 구현예에서, 하드웨어 동기화 유닛(120)은 컨텍스트 상태들을 결정하고, 컨텍스트 상태들과 IP 디바이스들 사이의 연관을 결정하고, 레지스터 값들을 생성하기 위해 2개 이상의 동작을 병렬로 수행한다.The synchronization unit (120) generates register values representing each of the context states (406). In an exemplary heterogeneous operation, for each of a plurality of context states, the hardware synchronization unit (120) may also generate a corresponding set of register values based on analysis of incoming and outgoing synchronization signals. The hardware synchronization unit (120) may also use one or more register values to determine associations between context states and IP devices. In some implementations, the hardware synchronization unit (120) performs two or more operations in parallel to determine context states, determine associations between context states and IP devices, and generate register values.

동기화 유닛(120)은 전역 동기화 객체 및 레지스터 값들을 기반으로 동기화 이벤트들의 실행을 관리한다(408). 동기화 이벤트들은 SoC(102)상의 IP 디바이스들 각각을 수반하고, 회로 블록(110)의 IP 디바이스들을 사용하여 SoC(102)에서 수행되는 이기종 연산 동작과 동시에 실행된다.The synchronization unit (120) manages the execution of synchronization events based on global synchronization objects and register values (408). The synchronization events involve each of the IP devices on the SoC (102) and are executed concurrently with heterogeneous computational operations performed on the SoC (102) using the IP devices of the circuit block (110).

도 5는 도 1의 SoC에서 구현된 예시적인 동기화 절차(500)를 표현하는 흐름도이다. 프로세스(400)와 매우 유사하게, 동기화 절차(500)는 상술한 시스템(100) 및 하드웨어 동기화 유닛(120)을 사용하여 구현되거나 실행될 수 있다. 절차(500)의 단계 또는 액션은 프로그래밍된 소프트웨어 명령어, 펌웨어 명령어, 또는 둘 모두를 사용하여 수행된다. 하나 이상의 명령어는 비일시적 기계 판독가능 저장 디바이스에 저장될 수 있으며 본 문서에 설명된 프로세서 또는 기타 리소스 중 하나 이상에 의해 실행 가능하다. FIG. 5 is a flowchart illustrating an exemplary synchronization procedure (500) implemented in the SoC of FIG. 1. Much like process (400), synchronization procedure (500) may be implemented or executed using the system (100) and hardware synchronization unit (120) described above. The steps or actions of procedure (500) are performed using programmed software instructions, firmware instructions, or both. One or more instructions may be stored in a non-transitory machine-readable storage device and be executable by one or more of the processors or other resources described herein.

상술한 것처럼, 데이터를 프로세싱하기 위해, SoC(102)는 다수의 IP 디바이스, 예를 들어, ISP(112), TPU(114), DSP(116), 및 GPU(118)의 일부(또는 전부)가 이기종 동작의 특정 연산을 담당하는 이기종 연산 동작을 개시할 수 있다. 예를 들어, 데이터는 이미지 데이터일 수 있고, 이기종 연산은, i) 이미지 데이터에 대한 얼굴 인식을 수행하기 위한 추론 동작 및 ii) 이미지 데이터에 대한 포스트-프로세싱을 수행하기 위한 스케일링 동작을 포함할 수 있다. 일반적으로, 이기종 연산은 SoC(102)상의 다수의 IP 디바이스를 수반할 수 있으므로, 시스템(100)은 IP 디바이스들 사이의 특정 연산 단계들의 동기화를 필요로 한다. 이러한 방식으로, 하드웨어 동기화 유닛(120)은 SoC(102)상의 다양한 IP 디바이스 사이의 동기화 동작들을 간소화하기 위해 사용되는 동기화 객체들에 의미를 부여하기 위한 범용/공유 동기화 시맨틱스를 제공하도록 구성된다.As described above, to process data, the SoC (102) may initiate a heterogeneous computation operation in which some (or all) of multiple IP devices, for example, the ISP (112), the TPU (114), the DSP (116), and the GPU (118), perform specific operations of the heterogeneous operation. For example, the data may be image data, and the heterogeneous operation may include i) an inference operation to perform face recognition on the image data, and ii) a scaling operation to perform post-processing on the image data. In general, since the heterogeneous operation may involve multiple IP devices on the SoC (102), the system (100) requires synchronization of specific computational steps between the IP devices. In this manner, the hardware synchronization unit (120) is configured to provide generic/shared synchronization semantics to impart meaning to the synchronization objects used to simplify synchronization operations between the various IP devices on the SoC (102).

동기화 절차(500)를 다시 참조하면, 절차(500)를 사용하는 예시적인 동작은 사용자 디바이스(130)의 이미지 센서에 의해 이미지가 생성되었음을 표현하거나 나타내기 위한 동기화 객체를 필요로 하는 카메라 IP 디바이스를 수반할 수 있거나, 디코더 IP 디바이스는 이미지와 연관된 데이터가 디코딩되었음을 표현하거나 나타내기 위한 동기화 객체를 필요로 할 수 있다. 하드웨어 동기화 유닛(120)은 이러한 IP 디바이스들 각각으로부터의 개별 요청을 프로세싱하고, 이들 디바이스가 동기화 객체를 획득하고 이러한 요청에 관련된 동기화 컨텍스트를 정의하는 리소스를 할당하도록 허용할 수 있다.Referring back to the synchronization procedure (500), an exemplary operation using the procedure (500) may involve a camera IP device requiring a synchronization object to represent or indicate that an image has been generated by an image sensor of the user device (130), or a decoder IP device requiring a synchronization object to represent or indicate that data associated with an image has been decoded. The hardware synchronization unit (120) may process individual requests from each of these IP devices and allow them to obtain a synchronization object and allocate resources defining a synchronization context associated with the request.

카메라 IP 디바이스를 수반하는 예를 사용하여, 이미지 센서는 사용자 디바이스(130)의 ISP(112)에 의해 제어될 수 있다. ISP(112)는 자신의 ISP 드라이버(IPS Driver)를 사용하여 'GetSync' 신호(502)를 동기화 모듈(108)의 드라이버(또는 드라이버 로직)에 전달한다. 동기화 모듈의 드라이버는 예시적인 애플리케이션 프로세서(application processor, AP)일 수 있다. 일부 구현예에서, 동기화 모듈(108)의 이러한 드라이버 로직은 하드웨어 동기화 유닛(120)의 제어 로직(202)에 대응하거나 이에 포함된다.Using an example involving a camera IP device, the image sensor may be controlled by an ISP (112) of a user device (130). The ISP (112) uses its own ISP driver (IPS Driver) to transmit a 'GetSync' signal (502) to a driver (or driver logic) of a synchronization module (108). The driver of the synchronization module may be an exemplary application processor (AP). In some implementations, this driver logic of the synchronization module (108) corresponds to or is included in the control logic (202) of the hardware synchronization unit (120).

하드웨어 동기화 유닛(120)은 드라이버 로직을 사용하여 'GetSync' 신호를 기반으로 제어 시그널링(124)을 생성하며, 여기서, 제어 시그널링은 제1 동기화 제어 신호('sync')를 포함할 수 있다(504). 제어 시그널링(124)의 'sync' 제어 신호는 SoC(102)에서 하나 이상의 동기화 이벤트의 실행을 개시할 수 있다. 하드웨어 동기화 유닛(120)의 드라이버는 'sync' 제어 신호를 기반으로 전역 동기화 객체를 ISP(112)로 전달한다(506). 일부 구현예에서, 이 전역 동기화 객체의 전달은 동기화 ID('sync ID')의 생성(또는 획득)을 표현한다.The hardware synchronization unit (120) uses driver logic to generate control signaling (124) based on a 'GetSync' signal, wherein the control signaling may include a first synchronization control signal ('sync') (504). The 'sync' control signal of the control signaling (124) may initiate execution of one or more synchronization events in the SoC (102). The driver of the hardware synchronization unit (120) passes a global synchronization object to the ISP (112) based on the 'sync' control signal (506). In some implementations, the passing of this global synchronization object represents the generation (or acquisition) of a synchronization ID ('sync ID').

ISP(112)는 전역 동기화 객체를 사용하여 프로세스 동작(508)을 TPU(114)에 시그널링한다. 예를 들어, ISP(112)는, TPU(114)에 시그널링하여, TPU(114)가 얼굴 인식 출력을 생성하기 위한 추론 동작과 같은, 이미지에 대해 이미지 프로세싱 동작을 수행하도록 요청할 수 있다. 도 5의 예에서, 프로세스 동작을 위한 시그널링은 ISP(112) 및 TPU(114)의 개별 드라이버들 사이에서 수행된다. 일부 구현예에서, 도 5의 예에서 참조되는 드라이버들은 대응하는 IP 디바이스의 예시적인 AP상에서 실행된다. TPU(114)는, 예를 들어 자체의 스택을 호출하기 위해, 내부 호출 동작(510)을 생성할 수 있으며, 이는 결국 TPU 하드웨어상의 TPU 펌웨어로 진행한다.The ISP (112) uses a global synchronization object to signal a process operation (508) to the TPU (114). For example, the ISP (112) may signal the TPU (114) to request that the TPU (114) perform an image processing operation on an image, such as an inference operation to generate a facial recognition output. In the example of FIG. 5, the signaling for the process operation is performed between individual drivers of the ISP (112) and the TPU (114). In some implementations, the drivers referenced in the example of FIG. 5 run on an exemplary AP of a corresponding IP device. The TPU (114) may generate an internal call operation (510), for example, to call its own stack, which ultimately proceeds to the TPU firmware on the TPU hardware.

마찬가지로, ISP(112)는 전역 동기화 객체를 사용하여 DSP(116)에 프로세스 동작(512)을 시그널링한다. 예를 들어, ISP(112)는 DSP(116)에 시그널링하여, DSP (116)가 이미지 데이터 대해 포스트-프로세싱을 수행하기 위한 스케일링 동작과 같은, 이미지에 대해 이미지 프로세싱 동작을 수행하도록 요청할 수 있다. 도 5의 예에서, 이 특정 프로세스 동작에 대한 시그널링은 ISP(112)와 DSP(116)의 개별 드라이버(Driver)들 사이에서 수행된다. DSP(116)는, 예를 들어 자체의 스택을 호출하기 위해, 내부 호출 동작(514)을 생성할 수 있으며, 이는 결국 DSP 하드웨어상의 DSP 펌웨어로 진행한다.Similarly, the ISP (112) signals a process operation (512) to the DSP (116) using a global synchronization object. For example, the ISP (112) may signal the DSP (116) to request that the DSP (116) perform an image processing operation on the image, such as a scaling operation to perform post-processing on the image data. In the example of FIG. 5, the signaling for this particular process operation is performed between individual drivers of the ISP (112) and the DSP (116). The DSP (116) may generate an internal call operation (514), for example, to call its own stack, which ultimately proceeds to DSP firmware on the DSP hardware.

이미지에 대한 그들 개별 동작들을 개시하기 전에, TPU(114) 및 DSP(116)는 각각 전역 동기화 객체를 참조하여 'wait(sync)'를 시그널링하기 위해 하드웨어 동기화 유닛(120)에 신호 알림을 전달할 수 있다(516). 예를 들어, TPU(114) 및 DSP(116)는, 각각 하드웨어 동기화 유닛(120)이 TPU(114) 또는 DSP(116)에 이미지에 대한 개별 동작들을 시작할 수 있음을 알리기 전에 이미지에 대한 동작을 진행하지 않도록 보장하기 위해, 개별 '대기 이벤트(wait event)'를 수행할 수 있다. 일부 구현예에서, TPU(114) 및 DSP(116)는 각각 대기 이벤트를 서로 병렬로 그리고 ISP(112)에 의해 수행되는 다른 동기화 시그널링 동작들과 병렬로 실행한다.Before initiating their individual operations on an image, the TPU (114) and the DSP (116) may each signal the hardware synchronization unit (120) to signal 'wait(sync)' with a reference to a global synchronization object (516). For example, the TPU (114) and the DSP (116) may each perform individual 'wait events' to ensure that they do not proceed with operations on the image before the hardware synchronization unit (120) notifies the TPU (114) or the DSP (116) that they can begin their individual operations on the image. In some implementations, the TPU (114) and the DSP (116) each execute the wait events in parallel with each other and with other synchronization signaling operations performed by the ISP (112).

예를 들어, ISP(112)는, ISP(112)가 여전히 이미지에 대한 동작들을 수행하고 있는 동안에도, TPU(114) 및 DSP(116)를 선제적으로 시그널링할 수 있다. ISP(112)가 이미지에 대한 작업을 완료하면, ISP(112)는 'signal(sync)' 동작(518)을 통해 동기화를 시그널링하고, 동기화 객체를 하드웨어 동기화 유닛(120)에 전달할 수 있다. 하드웨어 동기화 유닛(120)은 이미지에 대한 개별 프로세싱 동작들을 시작하도록 TPU(114) 및 DSP(116)에 통지[notify]하기 위한 제어 신호들을 생성 및 송신할 수 있다(520).For example, the ISP (112) can proactively signal the TPU (114) and the DSP (116) even while the ISP (112) is still performing operations on the image. Once the ISP (112) has completed its work on the image, the ISP (112) can signal synchronization via a 'signal(sync)' operation (518) and pass a synchronization object to the hardware synchronization unit (120). The hardware synchronization unit (120) can generate and transmit control signals to notify the TPU (114) and the DSP (116) to begin individual processing operations on the image (520).

본 명세서에 설명된 주제 및 기능적 동작들의 실시형태는 디지털 전자 회로부, 유형화된 컴퓨터 소프트웨어 또는 펌웨어, 본 명세서에 개시된 구조 및 그 구조적 등가물을 포함하는 컴퓨터 하드웨어, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 설명된 주제의 실시형태는 하나 이상의 컴퓨터 프로그램, 즉 데이터 프로세싱 장치에 의해 실행되거나 그 동작을 제어하기 위해 유형화된 비일시적 프로그램 캐리어에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로 구현될 수 있다.Embodiments of the subject matter and functional operations described herein may be implemented as digital electronic circuitry, tangible computer software or firmware, computer hardware including the structures disclosed herein and their structural equivalents, or a combination of one or more of these. Embodiments of the subject matter described herein may be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded in a tangible, non-transitory program carrier for execution by or controlling the operation of a data processing device.

대안적으로 또는 추가적으로, 프로그램 명령어들은 인위적으로 생성된 전파 신호, 예를 들어, 데이터 프로세싱 장치에 의한 실행을 위해 적합한 수신기 장치로의 송신을 위한 정보를 인코딩하기 위해 생성되는 기계 생성 전기, 광학, 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 기계 판독가능 저장 디바이스, 기계 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있다 Alternatively or additionally, the program instructions may be encoded in an artificially generated radio signal, e.g., a machine-generated electrical, optical, or electromagnetic signal that is generated to encode information for transmission to a suitable receiver device for execution by a data processing device. The computer storage medium may be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of these.

용어 '컴퓨팅 시스템'은, 예를 들어, 프로그래밍가능 프로세서, 컴퓨터, 또는 다수의 프로세서 또는 컴퓨터를 포함하는, 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스, 및 기계를 포괄한다. 장치는 특수 목적 로직 회로, 예를 들어, 필드 프로그래머블 게이트 어레이(field programmable gate array, FPGA) 또는 특정 용도용 집적 회로[application specific integrated circuit, ASIC]를 포함할 수 있다. 장치는 또한, 하드웨어에 부가하여, 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. The term 'computing system' encompasses all kinds of apparatus, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. The apparatus may include special-purpose logic circuits, for example, a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). The apparatus may also include, in addition to the hardware, code that creates an execution environment for the corresponding computer program, for example, code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these.

(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 모듈, 소프트웨어 모듈, 스크립트, 또는 코드로도 지칭되거나 설명될 수 있는) 컴퓨터 프로그램은 컴파일된 또는 해석된 언어들, 또는 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램 또는 모듈, 컴포넌트, 서브루틴, 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 유닛으로서 포함하는 임의의 형태로 배포될 수 있다. A computer program (which may also be referred to or described as a program, software, software application, module, software module, script, or code) may be written in any programming language, including compiled or interpreted languages, declarative or procedural languages, and may be distributed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment.

컴퓨터 프로그램은 파일 시스템 내의 파일에 대응할 수 있지만, 반드시 그럴 필요는 없다. 프로그램은 다른 프로그램 또는 데이터, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트를 보유하는 파일의 일부에, 해당 프로그램에 전용되는 단일 파일에, 또는 다수의 조정된 파일, 예를 들어, 하나 이상의 모듈, 서브 프로그램, 또는 코드의 부분을 저장하는 파일에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치되거나 다수의 사이트에 걸쳐 분산되어 통신 네트워크에 의해 상호 연결되는 다수의 컴퓨터상에서 실행되도록 배포될 수 있다.A computer program may correspond to a file within a file system, but need not. A program may be stored within a single file dedicated to the program, within a file containing one or more scripts stored within another program or data (e.g., a markup language document), within a single file, or within multiple coordinated files, such as files containing one or more modules, subprograms, or portions of code. A computer program may be distributed to be executed on a single computer, located at a single site, or across multiple sites interconnected by a communications network.

본 명세서에서 설명된 프로세스 및 로직 흐름은 입력 데이터를 동작시켜 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래머블 컴퓨터에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한 특수 목적 로직 회로, 예를 들어, 필드 프로그래머블 게이트 어레이(FPGA), 특정 용도용 집적 회로[ASIC], 또는 범용 그래픽 프로세싱 유닛(General purpose graphics processing unit, GPGPU)에 의해 수행될 수 있고, 장치는 또한 이러한 특수 목적 로직 회로로서 구현될 수 있다.The processes and logic flows described herein can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data to produce output. The processes and logic flows can also be performed by special purpose logic circuitry, such as a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or a general purpose graphics processing unit (GPGPU), and a device can also be implemented as such special purpose logic circuitry.

컴퓨터 프로그램의 실행에 적합한 컴퓨터는, 예를 들어 일반 또는 특수 목적 마이크로프로세서 또는 둘 모두, 또는 그 외의 다른 종류의 중앙 프로세싱 유닛을 기반으로 하는 컴퓨터를 포함할 수 있다. 일반적으로, 중앙 프로세싱 유닛은 판독 전용 메모리 또는 랜덤 액세스 메모리, 또는 둘 모두로부터 명령어와 데이터를 수신할 것이다. 컴퓨터의 일부 요소는, 명령어를 수행 또는 실행하기 위한 중앙 프로세싱 유닛과 명령어 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스, 예를 들어, 자기 디스크, 광자기 디스크, 또는 광학 디스크를 포함하거나, 이들로부터 데이터를 수신하거나 이들로 데이터를 전송하거나, 또는 둘 모두를 수행하도록 동작 가능하게 결합될 것이다. 그러나, 컴퓨터는 반드시 이러한 디바이스를 가질 필요는 없다. 또한, 컴퓨터는 다른 디바이스, 예를 들어, 모바일 전화, 개인 디지털 어시스턴트(personal digital assistant, PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, 전역 포지셔닝 시스템(Global Positioning System, GPS) 수신기, 또는 예를 들어, 범용 직렬 버스(universal serial bus, USB) 플래시 드라이브와 같은 휴대용 저장 디바이스 등에 내장될 수 있다.A computer suitable for executing a computer program may include, for example, a computer based on a general-purpose or special-purpose microprocessor, or both, or another type of central processing unit. Typically, the central processing unit will receive instructions and data from read-only memory or random-access memory, or both. Some elements of the computer include the central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data. Typically, the computer will also include, or be operatively coupled to receive data from, transfer data to, or both of, one or more mass storage devices, such as magnetic disks, magneto-optical disks, or optical disks, for storing data. However, a computer need not necessarily include such devices. Additionally, the computer may be embedded in another device, such as a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, such as a universal serial bus (USB) flash drive.

컴퓨터 프로그램 명령어 및 데이터를 저장하기에 적합한 컴퓨터 판독가능 매체는, 예를 들어, 반도체 메모리 디바이스, 예를 들어, EPROM, EEPROM, 및 플래시 메모리 디바이스; 자기 디스크, 예를 들어, 내부 하드 디스크 또는 이동식 디스크; 광자기 디스크; 및 CD ROM 및 DVD-ROM 디스크를 포함하여, 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서 및 메모리는 특수 목적의 로직 회로에 의해 보완되거나 그 안에 통합될 수 있다.Computer-readable media suitable for storing computer program instructions and data include, for example, all forms of non-volatile memory, media and memory devices, including semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and memory may be supplemented by or incorporated into special purpose logic circuitry.

사용자와의 상호작용을 제공하기 위해, 본 명세서에 설명된 주제의 실시형태는 사용자에게 정보를 표시하기 위한 디스플레이 디바이스, 예를 들어 액정 디스플레이(liquid crystal display, LCD) 모니터와, 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스, 예를 들어 마우스 또는 트랙볼을 갖는 컴퓨터에서 구현될 수 있다. 사용자와의 상호작용을 제공하기 위해 다른 종류의 디바이스가 사용될 수도 있으며, 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 임의의 형태의 감각적 피드백일 수 있으며, 사용자로부터의 입력은 음향 입력, 음성 입력 또는 촉각적 입력을 포함한 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는, 사용자에 의해 사용되는 디바이스로 문서를 전송하고 그 디바이스로부터 문서를 수신함으로써, 예를 들어, 웹 브라우저로부터 수신된 요청에 응답하여 사용자의 클라이언트 디바이스상의 웹 브라우저로 웹 페이지를 전송함으로써, 사용자와 상호 작용할 수 있다. To provide interaction with a user, embodiments of the subject matter described herein can be implemented on a computer having a display device, such as a liquid crystal display (LCD) monitor, for displaying information to the user, and a keyboard and a pointing device, such as a mouse or trackball, through which the user can provide input to the computer. Other types of devices may also be used to provide interaction with the user; for example, feedback provided to the user may be any form of sensory feedback, such as visual, auditory, or tactile feedback, and input from the user may be received in any form, including acoustic, speech, or tactile input. Furthermore, the computer may interact with the user by transmitting documents to and receiving documents from a device used by the user, for example, by transmitting web pages to a web browser on the user's client device in response to a request received from the web browser.

본 명세서에 설명되는 주제의 실시형태는, 백엔드 구성요소, 예를 들어 데이터 서버를 포함하거나, 미들웨어 구성요소, 예를 들어 애플리케이션 서버를 포함하거나, 프런트 엔드 구성요소, 예를 들어 사용자가 본 명세서에 설명되는 주제의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터를 포함하는 컴퓨팅 시스템에서, 또는 이러한 백엔드, 미들웨어, 또는 프런트 엔드 구성요소 중 하나 이상의 임의의 조합에서 구현될 수 있다. 시스템의 컴포넌트는 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어, 통신 네트워크를 통해 상호 연결될 수 있다. 통신 네트워크의 예는 근거리 네트워크(local area network, 'LAN') 및 광역 네트워크(wide area network, 'WAN'), 예를 들어, 인터넷을 포함한다.Embodiments of the subject matter described herein may be implemented in a computing system that includes a back-end component, e.g., a data server, a middleware component, e.g., an application server, or a front-end component, e.g., a client computer having a graphical user interface or web browser through which a user can interact with an implementation of the subject matter described herein, or in any combination of one or more of such back-end, middleware, or front-end components. The components of the system may be interconnected via any form or medium of digital data communication, e.g., a communications network. Examples of communications networks include a local area network ('LAN') and a wide area network ('WAN'), e.g., the Internet.

컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호작용한다. 클라이언트와 서버의 관계는 개별 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다.A computing system may include clients and servers. Clients and servers are typically remote and interact through a communications network. The relationship between client and server is established by computer programs running on separate computers, each of which has a client-server relationship with the other.

본 명세서에는 많은 구체적인 구현 세부 사항이 포함되어 있지만, 이는 임의의 발명의 범위나 청구할 수 있는 사항에 대한 제한으로 해석되어서는 안 되며, 오히려 특정 발명의 특정 실시형태에 특정할 수 있는 특징에 대한 설명으로 해석되어야 한다. 별도의 실시형태의 맥락에서 본 명세서에 설명된 소정의 특징은 또한 단일 실시형태에서 조합하여 구현될 수 있다. 반대로, 단일 실시형태의 맥락에서 설명되는 다양한 특징은 또한 다수의 실시형태에서 개별적으로 또는 임의의 적합한 하위 조합으로 구현될 수 있다. 또한, 특징이 특정 조합에서 작용하는 것으로 설명될 수 있고, 심지어 처음에는 그렇게 청구되었더라도 청구된 조합에서 하나 이상의 특징이 일부 경우 조합에서 제거될 수 있으며, 청구된 조합은 하위 조합의 하위 조합 또는 변형으로 향할 수 있다.Although this specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or what may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features described herein in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments, either individually or in any suitable subcombination. Furthermore, features may be described as operating in a particular combination, and even if initially claimed as such, one or more features of a claimed combination may in some cases be removed from the combination, and the claimed combination may be directed toward subcombinations or variations of subcombinations.

마찬가지로, 도면에는 특정 순서로 동작들이 도시되어 있지만, 이는 바람직한 결과를 달성하기 위해 이러한 동작들이 나타낸 특정 순서대로 또는 순차적으로 수행되거나 모든 예시된 동작들이 수행되어야 한다고 이해되어서는 안 된다. 특정 상황에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 전술한 실시형태들에서의 다양한 시스템 모듈들 및 컴포넌트들의 분리는 모든 실시형태들에서 그러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들로 패키징될 수 있다는 것이 이해되어야 한다.Likewise, while the drawings depict operations in a particular order, this should not be construed as requiring that these operations be performed in the specific order shown or sequentially, or that all illustrated operations be performed, to achieve desired results. In certain situations, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system modules and components in the embodiments described above should not be construed as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.

발명 대상의 특정 실시형태들이 설명되었다. 다른 실시형태들은 다음의 청구항들의 범위 내에 있다. 예를 들어, 청구항들에 기재된 액션들은 상이한 순서로 수행될 수 있고 여전히 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부된 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 나타낸 특정 순서 또는 순차적 순서를 반드시 필요로 하는 것은 아니다. 특정 구현예에서는 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. Specific embodiments of the invention have been described. Other embodiments are within the scope of the following claims. For example, the actions described in the claims may be performed in a different order and still achieve desirable results. As an example, the processes depicted in the accompanying drawings do not necessarily require the specific order or sequential order shown to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.

Claims (20)

사용자 디바이스의 시스템 온 칩(system-on-chip, 'SoC')에서 상기 SoC의 하드웨어 동기화 유닛을 사용하여 수행되는 방법으로서,
상기 하드웨어 동기화 유닛에 의해, 상기 SoC에서 하나 이상의 동기화 이벤트를 제어 및 관리하는 데 사용되는 전역 동기화 객체를 생성하는 단계;
상기 하드웨어 동기화 유닛에 의해, 상기 전역 동기화 객체를 참조하여 복수의 컨텍스트 상태를 결정하는 단계―상기 복수의 컨텍스트 상태는 각각 상기 SoC상의 복수의 IP 디바이스 중 개별 IP 디바이스에 대응함―;
상기 하드웨어 동기화 유닛에서, 각각의 개별 IP 디바이스에 대응하는 상기 복수의 컨텍스트 상태 각각을 표현하는 복수의 레지스터 값을 생성하는 단계; 및
상기 하드웨어 동기화 유닛에 의해, 상기 전역 동기화 객체와 상기 복수의 레지스터 값을 기반으로 상기 복수의 IP 디바이스 각각을 수반하는 동기화 이벤트들의 실행을 관리하는 단계를 포함하는 방법.
A method performed using a hardware synchronization unit of a system-on-chip ('SoC') of a user device,
A step of creating a global synchronization object used to control and manage one or more synchronization events in the SoC by the hardware synchronization unit;
A step of determining a plurality of context states by referring to the global synchronization object by the hardware synchronization unit, wherein the plurality of context states each correspond to an individual IP device among the plurality of IP devices on the SoC;
In the hardware synchronization unit, generating a plurality of register values each representing a plurality of context states corresponding to each individual IP device; and
A method comprising, by the hardware synchronization unit, managing the execution of synchronization events involving each of the plurality of IP devices based on the global synchronization object and the plurality of register values.
제1항에 있어서, 상기 전역 동기화 객체를 생성하는 단계는,
상기 하드웨어 동기화 유닛에 의해, 제1 IP 디바이스로부터 전역 동기화 요청을 수신하는 단계; 및
상기 하드웨어 동기화 유닛에 의해, 제1 IP 디바이스로부터의 상기 전역 동기화 요청을 기반으로 상기 전역 동기화 객체를 생성하는 단계를 포함하는, 방법.
In the first paragraph, the step of creating the global synchronization object comprises:
A step of receiving a global synchronization request from a first IP device by the hardware synchronization unit; and
A method comprising the step of creating the global synchronization object based on the global synchronization request from the first IP device by the hardware synchronization unit.
제2항에 있어서, 상기 전역 동기화 객체를 생성하는 단계는,
상기 하드웨어 동기화 유닛에 의해, 상기 SoC에서 상기 동기화 이벤트들의 실행을 개시하는 제어 시그널링(control signaling)을 생성하는 단계를 포함하되,
상기 제어 시그널링은 상기 전역 동기화 객체를 상기 제1 IP 디바이스로 전달하는 제1 동기화 제어 신호를 포함하는, 방법.
In the second paragraph, the step of creating the global synchronization object comprises:
A step of generating a control signaling for initiating execution of the synchronization events in the SoC by the hardware synchronization unit,
A method wherein the control signaling comprises a first synchronization control signal that transmits the global synchronization object to the first IP device.
제1항에 있어서, 상기 하드웨어 동기화 유닛에 의해, 상기 SoC에서 상기 동기화 이벤트들의 실행을 개시하는 상기 제어 시그널링을 기반으로 생성된 복수의 2차 전역 동기화 객체를 검출하는 단계를 더 포함하되,
상기 복수의 2차 전역 동기화 객체는 각각 상기 복수의 IP 디바이스 중 개별 IP 디바이스에 전파되는 범용 동기화 ID에 대응하는, 방법.
In the first paragraph, the method further comprises a step of detecting a plurality of secondary global synchronization objects generated based on the control signaling that initiates execution of the synchronization events in the SoC by the hardware synchronization unit,
A method wherein each of the plurality of secondary global synchronization objects corresponds to a universal synchronization ID propagated to an individual IP device among the plurality of IP devices.
제4항에 있어서, 상기 복수의 2차 전역 동기화 객체 중 하나 이상은,
상기 동기화 이벤트들 중 하나 이상을 실행하기 위해 상기 복수의 IP 디바이스 중 적어도 2개 사이에서 전달되고,
상기 사용자 디바이스에서 실행되는 애플리케이션과 연관된 이벤트 데이터를 프로세싱하기 위해 동시에 수행되는 구별되는 데이터 프로세싱 동작들에 대한 개별 동기화 이벤트들을 실행하는 데 사용되는, 방법.
In the fourth paragraph, at least one of the plurality of secondary global synchronization objects,
is communicated between at least two of the plurality of IP devices to execute one or more of the above synchronization events,
A method for executing individual synchronization events for distinct data processing operations that are performed concurrently to process event data associated with an application running on the user device.
제1항에 있어서, 상기 하드웨어 동기화 유닛을 사용하여, 상기 하드웨어 동기화 유닛에서 상기 복수의 컨텍스트 상태 각각을 표현하는 상기 복수의 레지스터 값 각각 및 상기 전역 동기화 객체를 기반으로 상기 SoC에서 통신의 서브세트를 동기화하는 단계를 더 포함하는 방법.A method according to claim 1, further comprising the step of synchronizing a subset of communications in the SoC based on each of the plurality of register values representing each of the plurality of context states and the global synchronization object, using the hardware synchronization unit. 제1항에 있어서, 상기 글로벌 동기화 객체를 사용하여, 상기 복수의 컨텍스트 상태 각각을 상기 복수의 IP 디바이스 중 개별 IP 디바이스 및 해당 IP 디바이스에 대응하는 동기화 활동과 연관시키는 단계를 더 포함하는 방법.A method according to claim 1, further comprising the step of associating each of the plurality of context states with an individual IP device among the plurality of IP devices and a synchronization activity corresponding to the IP device, using the global synchronization object. 제7항에 있어서, 상기 복수의 IP 디바이스 각각에 대해, 상기 동기화 활동은,
신호 이벤트를 표현하는 제1 동기화 이벤트; 및
대기 이벤트를 표현하는 상이한 제2 동기화 이벤트를 포함하는, 방법.
In the seventh paragraph, for each of the plurality of IP devices, the synchronization activity is:
A first synchronization event representing a signal event; and
A method comprising a second synchronization event representing a waiting event.
제1항에 있어서, 상기 SoC에서, 상기 사용자 디바이스에서 실행되는 애플리케이션과 연관된 이벤트 데이터를 프로세싱하기 위한 요청을 검출하는 단계를 더 포함하고,
상기 동기화 이벤트들은 상기 이벤트 데이터를 프로세싱하는 데 사용되는 각각의 IP 디바이스의 데이터 프로세싱 동작들과 동시에 상기 SoC에서 실행되는, 방법.
In the first paragraph, the SoC further comprises a step of detecting a request for processing event data associated with an application running on the user device,
A method wherein the above synchronization events are executed in the SoC simultaneously with the data processing operations of each IP device used to process the event data.
시스템으로서,
하드웨어 동기화 유닛, 프로세싱 디바이스, 및 동작들을 수행하도록 상기 프로세싱 디바이스에 의해 실행 가능한 명령어를 저장하는 비일시적 기계 판독가능 저장 디바이스를 포함하고, 상기 동작들은,
상기 하드웨어 동기화 유닛에 의해, 상기 SoC에서 하나 이상의 동기화 이벤트를 제어 및 관리하는 데 사용되는 전역 동기화 객체를 생성하는 것;
상기 하드웨어 동기화 유닛에 의해, 상기 전역 동기화 객체를 참조하여 복수의 컨텍스트 상태를 결정하는 것―상기 복수의 컨텍스트 상태는 각각 상기 SoC상의 복수의 IP 디자이스 중 개별 IP 디바이스에 대응함―;
상기 하드웨어 동기화 유닛에서, 각각의 개별 IP 디바이스에 대응하는 상기 복수의 컨텍스트 상태 각각을 표현하는 복수의 레지스터 값을 생성하는 것; 및
상기 하드웨어 동기화 유닛에 의해, 상기 전역 동기화 객체와 상기 복수의 레지스터 값을 기반으로 상기 복수의 IP 디바이스 각각을 수반하는 동기화 이벤트들의 실행을 관리하는 것을 포함하는, 시스템.
As a system,
A hardware synchronization unit, a processing device, and a non-transitory machine-readable storage device storing instructions executable by the processing device to perform operations, the operations comprising:
Creating a global synchronization object used to control and manage one or more synchronization events in the SoC by the hardware synchronization unit;
By the hardware synchronization unit, determining a plurality of context states by referring to the global synchronization object, wherein the plurality of context states each correspond to an individual IP device among the plurality of IP devices on the SoC;
In the hardware synchronization unit, generating a plurality of register values each representing a plurality of context states corresponding to each individual IP device; and
A system comprising: managing the execution of synchronization events involving each of the plurality of IP devices based on the global synchronization object and the plurality of register values by the hardware synchronization unit.
제10항에 있어서, 상기 전역 동기화 객체를 생성하는 것은,
상기 하드웨어 동기화 유닛에 의해, 제1 IP 디바이스로부터 전역 동기화 요청을 수신하는 것; 및
상기 하드웨어 동기화 유닛에 의해, 제1 IP 디바이스로부터의 상기 전역 동기화 요청을 기반으로 상기 전역 동기화 객체를 생성하는 것을 포함하는, 시스템.
In the 10th paragraph, creating the global synchronization object comprises:
Receiving a global synchronization request from a first IP device by the hardware synchronization unit; and
A system comprising: generating the global synchronization object based on the global synchronization request from the first IP device by the hardware synchronization unit.
제11항에 있어서, 상기 전역 동기화 객체를 생성하는 것은,
상기 하드웨어 동기화 유닛에 의해, 상기 SoC에서 상기 동기화 이벤트들의 실행을 개시하는 제어 시그널링을 생성하는 것을 포함하되,
상기 제어 시그널링은 상기 전역 동기화 객체를 상기 제1 IP 디바이스로 전달하는 제1 동기화 제어 신호를 포함하는, 시스템.
In the 11th paragraph, creating the global synchronization object comprises:
Including generating a control signaling to initiate execution of the synchronization events in the SoC by the hardware synchronization unit,
A system wherein the control signaling comprises a first synchronization control signal that transmits the global synchronization object to the first IP device.
제10항에 있어서, 상기 동작들은,
상기 하드웨어 동기화 유닛에 의해, 상기 SoC에서 상기 동기화 이벤트들의 실행을 개시하는 상기 제어 시그널링을 기반으로 생성된 복수의 2차 전역 동기화 객체를 검출하는 것을 더 포함하되,
상기 복수의 2차 전역 동기화 객체는 각각 상기 복수의 IP 디바이스 중 개별 IP 디바이스에 전파되는 범용 동기화 ID에 대응하는, 시스템.
In the 10th paragraph, the above actions are:
Further comprising detecting a plurality of secondary global synchronization objects generated based on the control signaling that initiates execution of the synchronization events in the SoC by the hardware synchronization unit,
A system wherein each of the plurality of secondary global synchronization objects corresponds to a universal synchronization ID propagated to an individual IP device among the plurality of IP devices.
제13항에 있어서, 상기 복수의 2차 전역 동기화 객체 중 하나 이상은,
상기 동기화 이벤트들 중 하나 이상을 실행하기 위해 상기 복수의 IP 디바이스 중 적어도 2개 사이에서 전달되고,
상기 사용자 디바이스에서 실행되는 애플리케이션과 연관된 이벤트 데이터를 프로세싱하기 위해 동시에 수행되는 구별되는 데이터 프로세싱 동작들에 대한 개별 동기화 이벤트들을 실행하는 데 사용되는, 시스템.
In the 13th paragraph, at least one of the plurality of secondary global synchronization objects,
is communicated between at least two of the plurality of IP devices to execute one or more of the above synchronization events,
A system used to execute individual synchronization events for distinct data processing operations that are performed concurrently to process event data associated with an application running on the user device.
제10항에 있어서, 상기 동작들은,
상기 하드웨어 동기화 유닛을 사용하여, 상기 하드웨어 동기화 유닛에서 상기 복수의 컨텍스트 상태 각각을 표현하는 상기 복수의 레지스터 값 각각 및 상기 전역 동기화 객체를 기반으로 상기 SoC에서 통신의 서브세트를 동기화하는 것을 더 포함하는, 시스템.
In the 10th paragraph, the above actions are:
A system further comprising synchronizing a subset of communications in the SoC based on each of the plurality of register values representing each of the plurality of context states and the global synchronization object, using the hardware synchronization unit.
제10항에 있어서, 상기 동작들은,
상기 전역 동기화 객체를 사용하여, 상기 복수의 컨텍스트 상태 각각을 상기 복수의 IP 디바이스 중 개별 IP 디바이스 및 해당 IP 디바이스에 대응하는 동기화 활동과 연관시키는 것을 더 포함하는, 시스템.
In the 10th paragraph, the above actions are:
A system further comprising associating each of the plurality of context states with an individual IP device among the plurality of IP devices and a synchronization activity corresponding to the IP device, using the global synchronization object.
제16항에 있어서, 상기 복수의 IP 디바이스 각각에 대해, 상기 동기화 활동은,
신호 이벤트를 표현하는 제1 동기화 이벤트; 및
대기 이벤트를 표현하는 상이한 제2 동기화 이벤트를 포함하는, 시스템.
In paragraph 16, for each of the plurality of IP devices, the synchronization activity is:
A first synchronization event representing a signal event; and
A system comprising a second synchronization event representing a waiting event.
제10항에 있어서, 상기 동작들은,
상기 SoC에서, 상기 사용자 디바이스에서 실행되는 애플리케이션과 연관된 이벤트 데이터를 프로세싱하기 위한 요청을 검출하는 것을 더 포함하고,
상기 동기화 이벤트들은 상기 이벤트 데이터를 프로세싱하는 데 사용되는 각각의 IP 디바이스의 데이터 프로세싱 동작들과 동시에 상기 SoC에서 실행되는, 시스템.
In the 10th paragraph, the above actions are:
In the above SoC, further comprising detecting a request for processing event data associated with an application running on the user device,
The above synchronization events are executed in the SoC simultaneously with the data processing operations of each IP device used to process the event data.
하드웨어 동기화 유닛을 수반하는 동작들을 수행하도록 프로세싱 디바이스에 의해 실행 가능한 명령어를 저장하는 비일시적 기계 판독가능 저장 디바이스로서, 상기 동작들은,
상기 하드웨어 동기화 유닛에 의해, 상기 SoC에서 하나 이상의 동기화 이벤트를 제어 및 관리하는 데 사용되는 전역 동기화 객체를 생성하는 것;
상기 하드웨어 동기화 유닛에 의해, 상기 전역 동기화 객체를 참조하여 복수의 컨텍스트 상태를 결정하는 것―상기 복수의 컨텍스트 상태는 각각 상기 SoC상의 복수의 IP 디바이스 중 개별 IP 디바이스에 대응함―;
상기 하드웨어 동기화 유닛에서, 각각의 개별 IP 디바이스에 대응하는 상기 복수의 컨텍스트 상태 각각을 표현하는 복수의 레지스터 값을 생성하는 것; 및
상기 하드웨어 동기화 유닛에 의해, 상기 전역 동기화 객체와 상기 복수의 레지스터 값을 기반으로 상기 복수의 IP 디바이스 각각을 수반하는 동기화 이벤트들의 실행을 관리하는 것을 포함하는, 비일시적 기계 판독가능 저장 디바이스.
A non-transitory machine-readable storage device storing instructions executable by a processing device to perform operations involving a hardware synchronization unit, said operations comprising:
Creating a global synchronization object used to control and manage one or more synchronization events in the SoC by the hardware synchronization unit;
By the hardware synchronization unit, determining a plurality of context states by referring to the global synchronization object, wherein the plurality of context states each correspond to an individual IP device among the plurality of IP devices on the SoC;
In the hardware synchronization unit, generating a plurality of register values each representing a plurality of context states corresponding to each individual IP device; and
A non-transitory machine-readable storage device comprising, by the hardware synchronization unit, managing the execution of synchronization events involving each of the plurality of IP devices based on the global synchronization object and the plurality of register values.
제19항에 있어서, 상기 전역 동기화 객체를 생성하는 것은,
상기 하드웨어 동기화 유닛에 의해, 제1 IP 디바이스로부터 전역 동기화 요청을 수신하는 것; 및
상기 하드웨어 동기화 유닛에 의해, 제1 IP 디바이스로부터의 상기 전역 동기화 요청을 기반으로 상기 전역 동기화 객체를 생성하는 것을 포함하는, 비일시적 기계 판독가능 저장 디바이스.
In paragraph 19, creating the global synchronization object comprises:
Receiving a global synchronization request from a first IP device by the hardware synchronization unit; and
A non-transitory machine-readable storage device comprising: generating the global synchronization object based on the global synchronization request from the first IP device by the hardware synchronization unit.
KR1020257027947A 2023-05-24 2023-05-24 Hardware mechanism for universal synchronization of communications in SOCs Pending KR20250133974A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2023/023392 WO2024242676A1 (en) 2023-05-24 2023-05-24 Hardware mechanism for universal synchronization of communications in an soc

Publications (1)

Publication Number Publication Date
KR20250133974A true KR20250133974A (en) 2025-09-09

Family

ID=87001754

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020257027947A Pending KR20250133974A (en) 2023-05-24 2023-05-24 Hardware mechanism for universal synchronization of communications in SOCs

Country Status (2)

Country Link
KR (1) KR20250133974A (en)
WO (1) WO2024242676A1 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2590710B (en) * 2019-12-30 2021-12-29 Graphcore Ltd Sync groupings
CN113076208B (en) * 2021-06-04 2021-08-31 上海燧原科技有限公司 Multi-event synchronization circuit, method and computing chip

Also Published As

Publication number Publication date
WO2024242676A1 (en) 2024-11-28

Similar Documents

Publication Publication Date Title
US11734016B2 (en) Method and apparatus for stateless parallel processing of tasks and workflows
CN111258744A (en) Task processing method based on heterogeneous computation and software and hardware framework system
US9996394B2 (en) Scheduling accelerator tasks on accelerators using graphs
CN104794194B (en) A kind of distributed heterogeneous concurrent computational system towards large scale multimedia retrieval
US20170206113A1 (en) Scalable compute fabric
US8751565B1 (en) Components for web-based configurable pipeline media processing
US20190213776A1 (en) Low Latency Firmware Command Selection Using A Directed Acyclic Graph
CN110245024B (en) Dynamic allocation system and method for static storage blocks
WO2016008317A1 (en) Data processing method and central node
CN112817739A (en) Techniques for modifying executable graphs to implement different workloads
US11954534B2 (en) Scheduling in a container orchestration system utilizing hardware topology hints
CN116257354A (en) Application programming interface for interoperability
CN117136354A (en) Multi-architecture execution diagram
KR20250133974A (en) Hardware mechanism for universal synchronization of communications in SOCs
CN117630473A (en) Predicting signal conductor inactivity patterns
CN116257353A (en) API for interoperability
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
US20240095083A1 (en) Parallel workload scheduling based on workload data coherence
US11368521B1 (en) Utilizing reinforcement learning for serverless function tuning
US20240385881A1 (en) Distributed comminication
Abdelzaher et al. The bottlenecks of AI: challenges for embedded and real-time research in a data-centric age
CN120371497A (en) Application programming interface for waiting for context
CN120371505A (en) Application programming interface for distributing data structures
CN120371504A (en) Application programming interface for deallocating data structures
CN120371499A (en) Application programming interface for storing identifiers of multiprocessor groups

Legal Events

Date Code Title Description
PA0105 International application

St.27 status event code: A-0-1-A10-A15-nap-PA0105

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501