In Armv8.1-M werden die Profilzähler in Data Watchpoint and Trace (DWT) erweitert, um die Funktionen der Performance-Monitoring-Unit (PMU) zu unterstützen, wie sie in Cortex-A-Prozessoren zu finden sind. Dies ermöglicht erweiterte Profilfunktionen, einschließlich der Möglichkeit, Cache-Hits/Misses zu analysieren. Die bisherigen Profilierungsfunktionen sind weiterhin verfügbar, aber damit Softwareentwickler das Beste aus der Architektur herausholen können, müssen Debugger aktualisiert werden.
Die PMU verwendet einen von der DWT getrennten Adressraum, obwohl die Zähler physikalisch gleich sind (Address Aliasing) und Debug-Tools daher nicht gleichzeitig PMU und Legacy-DWT-Profiling verwenden können.
Funktionen für Signalverarbeitungsanwendungen:
Die RAS-Erweiterung wurde in Cortex-A-Prozessoren in der Armv8-A-Architektur eingeführt. RAS sind drei Aspekte der Zuverlässigkeit eines Systems: Zuverlässigkeit (Kontinuität des korrekten Service), Verfügbarkeit (Einsatzbereitschaft für den korrekten Service) und Servicefreundlichkeit (Änderungs- und Reparaturfähigkeit). Der Bedarf für die RAS-Erweiterung stammt von Server- und Unternehmensanwendungen. RAS-Techniken reduzieren ungeplante Ausfälle. So können transiente Fehler erkannt und korrigiert werden, bevor sie zu Anwendungs- oder Systemausfällen führen. Ausfallkomponenten können identifiziert und ausgetauscht werden und der Ausfall kann vorzeitig vorhergesagt werden, um einen Austausch während der geplanten Wartung zu ermöglichen.
Während Cortex-M-Prozessoren hauptsächlich in Embedded- und Automotive-Anwendungen eingesetzt werden, machen die Anforderungen an die funktionale Sicherheit für Automobil- und Industrieanwendungen RAS zur ersten Wahl für die nächste Generation von Cortex-M-Prozessoren, da viele Techniken für RAS auch Aspekte der funktionalen Sicherheit unterstützen.
Bei Prozessoren, die mit Armv8.1-M entwickelt wurden, deckt die RAS-Erweiterung die Hinzufügung der Anweisung Error Synchronization Barrier (ESB), Fehlermelderegister (für Fehler bei fehlerkorrigierenden Codes im Cache) und Verbesserungen der Busschnittstellen-ebene, wie Paritäts- oder Fehlerkorrekturcode (ECC)-Signale für Integritätsprüfungen der Bustransfers.
Die Funktion zur Signalisierung von fehlerhaften Daten ist neu in integrierten Prozessoren. Ein häufiges Anwendungsbeispiel ist die Behandlung von beschädigten Daten im Data-Cache (Bild 4). Eine Cache-Linie ist zum Beispiel durch eine Spannungsinstabilität beschädigt. Wenn der Fehler mehr als ein Bit beträgt, können die fehlerkorrigierenden Codes (ECC) den Fehler nicht beheben, wenn die Daten in der beschädigten Cache-Zeile verwendet werden.
Später kam es zu einer Cache-Zeilenverdrängung, welche die beschädigten Daten löschte. Der ECC-Fehler wird zu diesem Zeitpunkt erkannt und löst das Seitenbandsignal auf dem zu bestätigenden Bus aus. Der Zustand wird im Speichersystem gespeichert. Zu diesem Zeitpunkt ist keine Fehlerausnahme aufgetreten (Bild 5).
Wenn die beschädigten Daten von einem Prozessor gelesen werden (dies kann ein anderer Prozessor oder ein anderer Busmaster im System sein), werden die Informationen hinsichtlich der Korrumpierung weitergeleitet und lösen eine Fehlerausnahme beim Prozessor aus (Bild 6).
Dieser Ansatz hat mehrere Vorteile: Wenn die beschädigten Daten von keinem Busmaster verwendet werden (zum Beispiel später durch andere Daten überschrieben werden), ist es nicht notwendig, eine Fehlerausnahme auszulösen. Die Fehler-Exzeption wird bei der Verwendung der Daten ausgelöst und ist synchron zu den betroffenen Anwendungen. Wenn keine Signalisierung hinsichtlich der beschädigten Daten verfügbar ist, muss die Ausnahme bei der Verdrängung von Cache-Zeilen ausgelöst werden und der Prozessor kann eine völlig unabhängige Anwendung ausführen, was es schwierig macht zu entscheiden, welche Anwendungen betroffen sind.
Die Verwendung der RAS-Erweiterung ermöglicht auch eine bessere Konsistenz zwischen Cortex-M- und Cortex-A-Prozessoren, was ein Vorteil für Software ist, die Fehlerbedingungen in heterogenen Multiprozessorsystemen mit Cortex-A- und Cortex-M-Prozessoren handhabt.
Instruktion | Funktion |
---|---|
CINC | bedingtes Inkrement |
CNEG | bedingtes Negieren |
CSEL | bedingte Auswahl |
CSET | bedingtes Setzen des Registers auf 1 |
CSETM | setzt bedingt alle Bits im Register auf 1 |
CSINC | bedingte Auswahl / Inkrement |
CSINV | bedingte Auswahl / Bitweise invertieren |
CSNEG | bedingtes Auswählen / Negieren |
CINV | bedingte Invertierung |
Tabelle 1: Neue Instruktionen in der Armv8.1-M-Architektur für bedingte Ausführungen.