Generic Interrupt Controllers

About Generic Interrupt Controllers

A Generic Interrupt Controller (GIC) is an exclusive block of IP that performs critical tasks of interrupt management, prioritization and routing. GICs are primarily used for boosting processor efficiency and supporting interrupt virtualization. GICs are implemented based on ARM® GIC architecture which has evolved from GICv1 to latest version GICv3/v4. ARM has several generic interrupt controllers that provide a range of interrupt management solutions for all types of ARM Cortex® multiprocessor systems. These controllers span from the simplest GIC-400 for systems with small CPU cores counts to GIC-600 for high-performant and multi-chip systems.

The Generic Interrupt Controller family

CoreLink GIC-600 Generic Interrupt Controller

Detects, manages, virtualizes and distributes interrupts for ARMv8.0-A processors. Configurable up to 512 processor threads per chip, up to 16 chips and 960 shared interrupts.

CoreLink GIC-600 Generic Interrupt Controller is designed to support DynamIQ cores such as Cortex-A75 and Cortex-A55 while also fully backwards compatible with v8.0 cores. CoreLink GIC-600 supports upto 56K Locality-specific Peripheral Interrupts (LPI) generated from message-based interrupts such as PCIe MSI/MSI-X. CoreLink GIC-600 uses affinity level routing for addressing cores, providing scalability and ease of interrupt migration. GIC-600 is configured as a distributed network of interrupt processing and distribution blocks routed over an AXI stream interconnect delivering maximum flexibility to suit core count and SoC layout. CoreLink GIC-600 is an ARM implementation of the latest GICv3 architecture, for more information see ARM IHI 0049B.

CoreLink GIC-500 Generic Interrupt Controller

CoreLink GIC-500 Generic Interrupt Controller

Detects, manages, virtualizes and distributes interrupts for ARMv8.0-A processors. Configurable up to 128 single-threaded cores and 960 shared interrupts.

CoreLink GIC-500 Generic Interrupt Controller is designed to support v8.0 cores Cortex-A73Cortex-A72Cortex-A57 and Cortex-A53 . CoreLink GIC-500 supports upto 56K Locality-specific Peripheral Interrupts (LPI) generated from message-based interrupts such as PCIe MSI/MSI-X. CoreLink GIC-500 uses affinity level routing for addressing cores, providing scalability and ease of interrupt migration. GIC-500 is configured as a single monolithic block with a network of discrete redistribution blocks for each core to suit size and SoC layout. CoreLink GIC-500 is an ARM implementation of the latest GICv3 architecture, for more information see ARM IHI 0049B.

CoreLink GIC-400 Generic Interrupt Controller

CoreLink GIC-400 Generic Interrupt Controller

Detects, manages and virtualizes interrupts for ARMv7 processors. Configurable up to 8 cores and 480 shared interrupts.

CoreLink GIC-400 Generic Interrupt Controller detects, manages, virtualizes and distributes up to 480 shared interrupts between up to 8 cores in Cortex-A15 and Cortex-A7 multiprocessors. GIC-400 can be configured to support only the required number of cores and interrupts to reduce gate count. GIC-400 implements GICv2 architecture, Security and Virtualization Extensions, for more information see ARM IHI 0048B.

Highlights

CoreLink GIC-600 Features

  • Builds on top of GIC-500 features by implementing GICv3 for ARMv8.0-A DynamIQ processors.
  • Supports up to 512 processor cores/threads per chip and up to 16 chips in a multi-chip configuration.
  • Delivers enhanced power management features such as P-/Q-channel low power modes and clock gating.
  • Supports up to 16 Interrupt Translation Services (ITS) modules across a single or multi-chip system.
  • Enhanced features for ECC protection, error logging and reporting, performance monitoring and software debug/recovery.

CoreLink GIC-500 Features

  • Builds on top of GIC-400 features by implementing GICv3 architecture, for ARMv8.0-A processors.
  • Supports up to 128 cores within a maximum of 32 clusters using affinity-level routing.
  • Supports Interrupt Translation Services (ITS) module for ID translation and core migration for incoming message-based interrupt.
  • ITS commands and translation tables are stored in DRAM.

CoreLink GIC-400 Features

  • Implements GICv2 architecture for ARMv7 processors.
  • Types of interrupts supported are: Software-Generated Interrupt (SGI), Shared Peripheral Interrupt (SPI), Private Peripheral Interrupt (PPI).
  • Interrupt management supports interrupt enable/disable, setting of security and priority levels, and migration of interrupts across CPU clusters.
  • Supports virtualization of interrupts by sending physical interrupts to hypervisor for creating virtual interrupts.

GIC-500 characteristics

The CoreLink GIC-500 is a build-time configurable interrupt controller that supports up to 128 cores. The GIC-500 only supports ARM v8.0-A cores that implement the GIC CPU interface with the Standard GIC Stream Protocol interface, such as Cortex-A72, Cortex-A57 and Cortex-A53.  The GIC-500 receives message-based interrupts as writes to the AXI4 slave interface or other interrupts from physical inputs. It also supports an AXI4 slave interface for configuration. The GIC-500 supports an Interrupt Translation Service (ITS) module that enables ID translation for peripherals to be programmed directly by a virtual machine. It is fully programmable via registers for managing interrupt sources, interrupt behavior and routing of interrupts to one or more cores.
 

Scalability and multi-chip interrupt management with GIC-600

In addition to supporting all features of CoreLink GIC-500, CoreLink GIC-600 also enables scalability of interrupt management with a distributed design within a single chip and support for multi-chip interrupt management for up to 16 chips. Private peripheral interrupt (PPI) and Software Generated Interrupt (SGI) modules can be co-located with processor clusters in the same clock and power domains. Similarly Interrupt Translation Service (ITS) modules can be located in close proximity to peripherals driving message-based interrupts such as PCIe. Incoming interrupts from these modules are routed to a centralized distributor over a flexible bi-directional flexible AXI4-Stream interconnect that enables scaling to a very large number of processor cores with minimized latency and layout/wiring congestion.

Interrupt management between multiple chips is enabled by a direct link between distributors of each chip over a free flowing cross-chip virtual channel that could utilize PCIe or similar chip-to-chip protocol for the physical transport. 

Important documentation

  • CoreLink GIC-600 Technical Reference Manual

    For system designers, system integrators and programmers who are designing a SoC, the Technical Reference Manual is the go-to resource.

    GIC TRM
  • CoreLink GIC-500 Technical Reference Manual

    For system designers, system integrators and programmers who are designing a SoC, the Technical Reference Manual is the go-to resource.

    GIC-500 TRM
  • CoreLink GIC-400 Technical Reference Manual

    You can find the GIC-400 TRM here.

    GIC-400 TRM
  • GICv3 architecture

    GICv3 builds on top of GICv2, adding support for a larger number of ARM cores and also message-based interrupts. 

    GICv3 architecture
  • GICv2 architecture

    GICv2 is the second generation GIC architecture for ARMv7 cores.

    GICv2 architecture

Resources