DEENESPTFRRUARHIKOZHNL
AUTOSAR_AP_EXP_SWArchitecture FIG-932a5f5887a47219 930 × 1182 px 1 Release(s)

Figure 9.86: Device and related interfaces of Safe Hardware Acceleration

SHA-256 Inhalts-Fingerabdruck: 932a5f5887a47219e4723ece7bb1101f4d26d56b5533aee9cf00c74eee1860a7
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07

1. Diagrammtyp & Architektur-Kontext

  • Klassifikation: Hybrides UML-Diagramm (Kombination aus Tabellen-Spezifikation für Native Interfaces und UML-Klassendiagramm/Komponentendiagramm) zur Schnittstellen- und Klassenhierarchie.
  • Funktionale Einordnung: AUTOSAR Adaptive Platform (AP), Functional Cluster Safe Hardware Acceleration (Release R25-11, AUTOSAR_AP_EXP_SWArchitecture).
  • Technischer Zweck: Bereitstellung einer sicheren, standardisierten Abstraktionsschicht (konzeptionell angelehnt an heterogene Programmiermodelle wie SYCL/OpenCL) für heterogene Recheneinheiten (CPUs, GPUs, dedizierte Hardware-Beschleuniger/NPUs/DSPs). Ermöglicht Adaptive Applications die geräteagnostische Entdeckung, Selektion, Aufgabenübermittlung (Queueing/Scheduling) und Synchronisation (Events).

2. Komponenten, Entitäten & Schnittstellen

Entitäten & funktionale Cluster
  • Adaptive Application: Konsument/Client der Schnittstellen («use»-Beziehung).
  • Safe Hardware Acceleration («aapFunctionalCluster»): Implementierender AUTOSAR-AP-Kernbaustein, der die nativen Schnittstellen über standardisierte Treiber/Laufzeitumgebungen realisiert (Realization-Pfeile).
Native Schnittstellen & Klassen («aapAPI, aapNativeInterface»)
  • Device:
    • Repräsentiert eine physische oder logische Recheneinheit.
    • Operationen: Create(), IsAccelerator(), IsCpu(), IsGpu().
  • DeviceMonitor:
    • Bietet Überwachungs- und Diagnosefähigkeiten für die Beschleunigerhardware zur Laufzeit.
    • Operationen: Create(), Status().
  • DeviceSelector:
    • Basis-Klassifikator/Funktor zur Filterung und Zuweisung geeigneter Ausführungsgeräte.
    • Operationen: operator()(): void, SelectDevice().
    • Spezialisierungen (Generalisierung/Vererbung):
      • CpuSelector: Selektion von Host-/Ziel-CPUs.
      • GpuSelector: Selektion von Grafikprozessoren (z. B. für parallele Shader/Compute-Pipelines).
      • AcceleratorSelector: Selektion generischer Beschleuniger (z. B. NPU, FPGA, DSP).
Tabellarisch spezifizierte Native Interfaces
  • Platform:
    • Root-Einstiegspunkt zur Systemtopologie-Abfrage.
    • Operationen: GetPlatforms(), GetDevices().
  • Queue:
    • Befehls- und Arbeitswarteschlange für die Offloading-Pipeline.
    • Operationen: Create(), GetDevice(), IsInOrder(), Submit(), Wait().
  • Event:
    • Synchronisations- und Abhängigkeitsknoten innerhalb des Ausführungsgraphen (Task DAG).
    • Operationen: Create(), GetWaitList(), Wait() (Überladung: synchrones Warten auf Einzel-Event oder Event-Listen).

3. Dynamisches Verhalten & Sequenzablauf

  1. Hardware-Discovery & Selektion:
    • Die Applikation fragt über Platform::GetPlatforms() / Platform::GetDevices() verfügbare Hardware ab oder instanziiert einen spezifischen Selektor (GpuSelector, CpuSelector, AcceleratorSelector).
    • Aufruf von DeviceSelector::SelectDevice() liefert eine kompatible Device-Instanz zurück.
  2. Instanziierung & Assoziation:
    • Erzeugung einer Ausführungswarteschlange via Queue::Create(), gebunden an das ausgewählte Device (Queue::GetDevice()).
    • Prüfung der Ausführungssemantik mittels Queue::IsInOrder() (In-Order vs. Out-of-Order Execution).
  3. Task-Dispatching (Asynchroner Pfad):
    • Kernel-/Compute-Payloads werden via Queue::Submit() zur asynchronen Ausführung auf dem Beschleuniger eingereiht.
    • Steuerung von Datenabhängigkeiten erfolgt über Event-Instanzen (Abhängigkeitsgraph via Event::GetWaitList()).
  4. Synchronisation & Monitoring (Synchroner Pfad):
    • Blockierendes Warten auf Arbeitsabschluss wahlweise über Warteschlangen-Ebene (Queue::Wait()) oder feingranular auf Task-/Event-Ebene (Event::Wait()).
    • Parallele Überwachung des Hardwarezustands und möglicher Hardware-Fehler über DeviceMonitor::Status().

4. Normative Relevanz & Entwickler-Hinweise

  • Entkopplung durch Selektoren: Applikationen dürfen Recheneinheiten nicht fest eincodieren. Über polymorphe Selektoren (DeviceSelector-Ableitungen) muss ein Fallback-Pfad (z. B. von GpuSelector auf CpuSelector) ermöglicht werden, falls Zielhardware nicht verfügbar ist oder Fehler meldet.
  • Safety & ASIL-Dekomposition: Das Interface DeviceMonitor ist sicherheitskritisch: Beschleuniger-Hardware (oft Non-AUTOSAR oder ASIL-B QM-Mischbetrieb) erfordert periodische Statusabfragen via Status(), um Hardware-Hangs, Speicherüberläufe oder ECC-Fehler im Safety-Kontext der Adaptive Platform abzufangen.
  • Synchronisationsaufwand: Queue::Wait() blockiert den aufrufenden Thread vollständig. In harten Echtzeitszenarien sind Event-basierte Abhängigkeiten (Event-Graph) dem blockierenden Polling vorzuziehen, um Scheduling-Jitter im Execution Management (EM) zu minimieren.
  • In-Order vs. Out-of-Order: Entwickler müssen vor Submit() verifizieren (IsInOrder()), ob die Ziel-Queue implizite sequentielle Ausführung garantiert oder explizite Event-Barrieren erfordert, um Race Conditions im Device-Memory zu verhindern.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

Create Creates a new Queue. | GetDevice Get the device bound to the Queue. | IsInOrder Get if the Queue tasks execution is ordered. | Submit Submits a task to the Device for execution. | Operations: | Wait Performs a blocking wait for the completion of all enqueued tasks in the Queue. | Name: Platform | Technology: Native interface | Usage: Public API | Description: Interface for querying the available Devices. | GetDevices Get the available Devices. Operations: | GetPlatforms Get the available Platforms. | Name: Event | Technology: Native interface | Usage: Public API | Description: Manages task execution. | Create Creates a new Event. | GetWaitList Get the events that the Event waits for in the dependence graph. | Wait Blocks until all commands associated with this Event and any dependent events have completed. | Operations: | Wait Behaves as if calling Wait method on each event in the event list. | «aapFunctionalCluster» Safe Hardware Acceleration | «aapAPI,aap... | DeviceMonitor | + Create() + Status() | «aapAPI,aapNativeInterface» | DeviceSelector | + operator()(): void + SelectDevice() | «aapAPI,aapNativeInterface» | GpuSelector | «aapAPI,aapNativeInterface» | CpuSelector | «aapAPI,aapNativeInterface» | AcceleratorSelector | «aapAPI,aapNat... | Device | + Create() + IsAccelerator() + IsCpu() + IsGpu() | Adaptive Application | «use» «use» «use»

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R25-11 AUTOSAR_AP_EXP_SWArchitecture S. 133 9.86 Figure 9.86: Device and related interfaces of Safe Hardware Acceleration