|Home > Introduction > Components|
The GIC-600 comprises several significant blocks that work in combination to create a single architecturally compliant GICv3 implementation within the system. The GIC-600 top level can have one of several optional structures.
The GIC-600 consists of the following blocks:
The Distributor is the hub of all the GIC communications and contains the functionality for all Shared Peripheral Interrupts (SPIs) and Locality-specific Peripheral Interrupts (LPIs). It is responsible for the entire GIC programmers model, except for the GITS_TRANSLATER register, which is hosted in the Interrupt Translation Service (ITS) block.
The Distributor also maintains the coherency of the SPI register space in multichip configurations.
The Redistributor maintains the Private Peripheral Interrupts (PPIs) and Software Generated Interrupts (SGIs) for a particular set of cores. A Redistributor can scale from 1-64 cores and is best placed next to the processors that it is servicing to reduce wiring to the cores.
A Redistributor is also referred to as a PPI block.
The GICv3 architecture specifies a Redistributor address space containing two pages per core. The SGI page functionality is contained in the GIC-600 Redistributor. However, the command and control pages for all cores on a chip are contained in the Distributor.
The GIC-600 supports powering down the Redistributors and the associated cores.
The ITS translates message-based interrupts, Message-Signaled Interrupts (MSI/MSIx), from an external PCI Express (PCIe) Root Complex (RC), or other sources. The ITS also manages LPIs during core power management.
The GIC-600 supports up to 16 ITS blocks per chip.
For more information about the ITS, see the Arm® GICv3 and GICv4 Software Overview.
The MSI-64 Encapsulator is a small block that combines the DeviceID (DID), required by writes to the GITS_TRANSLATER register, into a single memory access.
The GIC-600 supports up to 960 SPIs that are spread across the system. The SPI Collator enables SPIs to be converted into messages remotely from the Distributor. This enables hierarchical clock gating of the Distributor and the use of other more aggressive low-power states.
The Wake Request contains all the architecturally defined wake_request signals for each core on the chip. It is a separate block that can be positioned remotely from the Distributor, such as next to a system control processor if necessary.
The GIC interconnect is a set of components that can be used for routing the AXI4-Stream interfaces between the different blocks.
The top level has no specific interfaces but combines the interfaces of other blocks within the clock or power domain to reduce the number of domain bridges. The GIC-600 build scripts enable you to build the GIC from a single combined block or a set of individual blocks that are interconnected using your own transport layer.
These blocks can be combined in different ways:
The following figure shows a GIC-600 with a free-flowing interconnect in an example system.
The following figure shows a GIC-600 with interconnect in an example system.
Cross-chip interfaces enable communication between cores in a multichip configuration. Cross-chip is supported in product version r1p2 onwards.
The following figure shows a monolithic GIC-600 with interconnect in an example system.
The GIC-600 supports cores that implement only the ARMv8.0-A architecture, and later versions such as v8.2-A. The cores must also support the GIC CPU interface with the standard GIC AXI4-Stream protocol interface. The GIC-600 implements version 3.0 of the Arm® Generic Interrupt Controller Architecture Specification, GIC architecture version 3.0 and version 4.0.