Systemdesign / Low-Power-Verifikation Optimierte Leistungs- und Temperaturkompromisse

Die Anforderungen an die Optimierung von Verlustleistungsaufnahme und thermischen Effekten führen zu tiefgreifenden Veränderungen im Designprozess elektronischer Komponenten. Der Artikel behandelt eine abstraktionsebenenübergreifende Methode zur dynamischen Leistungsanalyse.

Normalerweise lassen sich zentrale Probleme und Optimierungsziele in der Chip-Entwicklung unter dem Begriff »PPA« - Performance, Stromumsatz und Fläche (PPA - Performance, Power, Area) zusammenfassen. Abhängig vom jeweiligen Anwendungsbereich kann sich die Gewichtung der drei Entwicklungsziele verschieben. Bei mobilen Geräten ist der Stromumsatz immer noch bestimmend, bei IoT-Endgeräten, wie Fitness-Armbändern und medizinischen Geräten, ist die Energie so knapp und wichtig, dass ein Energy-Harvesting während des Betriebs notwendig ist. Im Gegensatz dazu ist bei Geräten, die an der Steckdose hängen, wie Server und der größte Teil der Unterhaltungselektronik, der Stromumsatz selbst weniger ein Problem. Hier können aber die dadurch verursachten thermischen Effekte kritisch werden. Die Frage ist, ob das jeweilige Gehäuse die erzeugte Wärme ausreichend abführen kann, oder ob Teile des Chips abgeschaltet werden müssen, um eine Überhitzung zu verhindern. Ähnliches gibt es auch bei mobilen Anwendungen, bei denen in manchen Fällen, wie zum Beispiel bei AnTuTu-Benchmarks, die bei einem Betrieb mit hoher Auslastung und dem Erreichen der thermischen Grenzwerte einfach auf eine Art Sparbetrieb umschalten und ein Teil der Verarbeitungsleistung abgeschaltet wird. Der Benchmark fällt dadurch nach einiger Zeit weniger gut für den Anbieter aus.

Wie Bild 1 zeigt, haben während der Entwicklung die verschiedenen Komponenten eines Chips, von den Analog- und Mixed-Signal-Steuerschaltungen, über Dataflow-Hardware, bis hin zu Speicher und Software einen Einfluss auf den Stromumsatz. Den größten Einfluss haben besonders die letzten drei und insbesondere bei höheren Abstraktionsgraden. Die Entwickler können durch verschiedene Maßnahmen den Stromumsatz des Designs entscheidend beeinflussen. Die Mikroarchitekten haben bei der Implementierung eines in C oder SystemC erstellten Algorithmus verschiedene Einflussmöglichkeiten zur Optimierung des Stromumsatzes. Zum Beispiel, die Auswahl der Bit-Breite, Kompromisse hinsichtlich Performance, Spannung und Energieumsatz, Optimierung der Design-Aktivität, Kompromisse hinsichtlich Chipfläche und Energieumsatz, Speicheroptimierung, Taktsteuerung, Spannungsskalierung oder Hardware-/Software-Kompromisse. So lassen sich beispielsweise auf Architekturebene einzelne Funktionen von der Software in die Hardware verlagern, wodurch eine deutliche Reduzierung des Stromumsatzes erreicht werden kann. Dazu sind Modelle auf Systemebene erforderlich, die relativ leicht zu erhalten sind, die Verarbeitung einer akzeptablen Datenmenge bei einer hohen Simulationsgeschwindigkeit erfordern, aber eine eingeschränkte Genauigkeit aufweisen.

Wenn das Design in die Implementierung geht, gibt es auf RTL-Ebene (Register Transfer Level) immer noch zahlreiche Möglichkeiten, um den Energieumsatz zu reduzieren, was nach wie vor einen angemessenen Einfluss erlaubt. So lassen sich bestimmte Bereiche des Designs dynamisch in einen Low-Power-Modus schalten, was Kompromisse hinsichtlich Performance und Energieumsatz im Betrieb ermöglicht. Zu den gängigen Methoden gehören die Reduzierung der Taktrate oder eine vollständige Taktsteuerung von ganzen Bereichen im Design. Ein optimiertes Ressourcen-Sharing, Isolierung von Operanden und eine optimierte Codierung von Controller und Bus-Zuständen können dazu beitragen, die zu schaltenden Kapazitäten zu reduzieren. Im Prinzip sind Architekturänderungen auf dieser Ebene immer noch möglich. Zum Beispiel kann ein Anwender die Anzahl der Multiplizierer ändern, um das Schalten durch die Nutzung der Korrelation zwischen nachfolgenden Daten in einem Datenstrom zu verringern. Allerdings konzentrieren sich Anwender in dieser Phase meist voll auf die funktionelle Verifikation. Außerdem nehmen die Simulationszeiten zu und der Aufwand der RTL-Entwicklung verbietet meist die Konzentration auf eine Energieoptimierung auf diesem Abstraktionsgrad.

Nach der Logiksynthese für die Netzliste auf Gatter-Ebene lässt sich der dynamische Energieumsatz relativ genau auf der Basis der Design-Aktivität bestimmen. Auf dieser Ebene können die Design-Teams Optimierungen nutzen, um die Kapazitäten zu minimieren, die von den aktivsten Knoten im Design gesteuert werden müssen. Außerdem kann der Energieumsatz durch das Ausgleichen von Pfadverzögerungen optimiert werden, um Störspitzen, Spurious-Transitions und Retiming zu vermeiden. Die Genauigkeit der Abschätzung der Stromaufnahme ist auf diesem Abstraktionsgrad bereits relativ hoch, allerdings nimmt die dafür benötigte Datenmenge stark zu. Selbst wenn die Simulation auf Gatter-Ebene ohne ein Back-annotated-Timing durchgeführt wird, muss mit langen Simulationszeiten gerechnet werden.

Sobald die Design-Teams die Layout-Phase erreicht haben, die eine Übergabe der GDSII-Daten für die wirkliche Implementierung erlaubt, sind genügend Daten verfügbar, um eine genaue Simulation und Abschätzung des Energieumsatzes zu ermöglichen. Abhängig von den Schätzungen auf diesem Abstraktionsgrad können die Design-Teams immer noch die Transistorgrößen anpassen und Layout-Änderungen durchführen, um Optimierungen bei der Platzierung und den Verbindungen zu erreichen. Die Genauigkeit ist bei diesem Abstraktionsgrad sehr hoch, aber die zu verarbeitende Datenmenge und die Simulationsgeschwindigkeit sind so beschränkt, dass normalerweise nur eine kleine Zahl von Testvektoren für die Analyse genutzt werden kann. Der Einfluss auf den Energieumsatz ist verhältnismäßig gering, da keine größeren Änderungen am Design, wie Anpassung der Anzahl der arithmetischen Ressourcen, mehr möglich sind.

Schlussendlich steht die Leistungsoptimierung einem Dilemma gegenüber: Entscheidungen auf höheren Abstraktionsebenen auf Systemebene haben den größten Einfluss, sie werden aber auf der Basis von Daten mit der geringsten Genauigkeit getroffen. Zu diesem Zeitpunkt sind für das Design nur ungenaue Daten verfügbar, aber es sind tiefe Simulationszyklen möglich, die zum Beispiel die Softwareausführung einschließen können. Im Gegensatz dazu wird die höchste Genauigkeit auf der Layout-Ebene erreicht, dann ist aber der Einfluss der auf den genauen Daten basierenden Änderungen relativ klein und die Simulationszeiten sind sehr lang.