CCIX Software Developer’s Guide Now Publicly Available for Developing Software for CCIX-based Systems
I’m very pleased to share that the new CCIX® Software Developer’s Guide is now available for free download and use. The guide describes the CCIX software architecture and is intended to serve as comprehensive and informative reference material for software developers, software architects, system and device vendors, operating system vendors, and firmware developers and architects. By creating the guide, the CCIX Consortium aims to encourage development of a software ecosystem for CCIX-based hetero-computing systems. The guide covers the areas of CCIX that are software visible, and where appropriate, it proposes software architecture solutions.
The CCIX standard allows processors based on different instruction set architectures to extend the benefits of cache coherent peer processing to an array of acceleration devices including FPGAs, GPUs, network/storage adapters, intelligent networks, and custom ASICs.
To familiarize the reader with the hardware aspects of a CCIX system, the Software Developer’s Guide begins by introducing the CCIX standard, its basic nomenclature and principles, and associated system design and architectural considerations. With the stage thus set, it then provides an overview of the CCIX programming model and the CCIX software-hardware interfaces, and explains how these aid software to discover, configure, and manage a CCIX-based system.
The guide then delves into boot firmware concepts and describes how firmware standards such as Unified Extensible Firmware Interface (UEFI) and Advanced Configuration Protocol Interface (ACPI) must be used to boot a CCIX-based system and prepare it to run a general-purpose OS. It describes generic boot firmware requirements related to heterogeneous computing systems, and then explains how a general-purpose OS kernel or hypervisor can manage and use elements of a CCIX-based heterogeneous computing system.
Later in the guide, specifics of software frameworks for management of CCIX-based accelerators and CCIX-based expansion memory are explained and detailed, and advanced topics like error handling, remote access service (RAS), power management, virtualization, and security are discussed. Finally, the guide provides a high-level overview of how application software can interface with a CCIX-aware OS to deploy workloads in a CCIX based system. There is sufficient information in this guide to foster a software ecosystem for the CCIX standard and heterogeneous computing systems in general. We invite you to download the new guide and hope it helps you in your development efforts going forward. The CCIX Consortium welcomes all feedback on the guide.