Leistungsoptimierung ist der Versuch, den Stromverbrauch von digitalen Geräten wie integrierten Schaltkreisen zu reduzieren, indem Parameter wie Größe, Leistung und Wärmeableitung ausgeglichen werden. Dies ist ein sehr kritischer Bereich beim Design elektronischer Komponenten, da viele tragbare elektronische Geräte eine hohe Verarbeitungskapazität bei geringem Stromverbrauch erfordern. Die Komponenten müssen komplexe Funktionen erfüllen und dabei möglichst wenig Wärme und Lärm erzeugen – und das alles auf kleinster Fläche. Als intensiv erforschtes Gebiet des digitalen Designs ist die Leistungsoptimierung für den kommerziellen Erfolg vieler Geräte von entscheidender Bedeutung.
Die Idee der Leistungsoptimierung im elektronischen Design begann Ende der 1980er Jahre mit der weit verbreiteten Verwendung tragbarer Geräte Aufmerksamkeit zu erregen. Batterielebensdauer, Heizeffekte und Kühlanforderungen wurden sowohl aus ökologischen als auch aus wirtschaftlichen Gründen sehr wichtig. Die Anpassung von immer komplexer werdenden Komponenten auf kleinere Chipgrößen wurde entscheidend, um die Produktion kleinerer Geräte mit mehr Funktionalität zu gewährleisten. Die Hitze, die durch die vielen Komponenten entsteht, wurde jedoch zu einem großen Problem. Auch Faktoren wie Geräteleistung und Zuverlässigkeit werden durch Hitze beeinflusst.
Um Chips zu skalieren, die Chipgröße zu reduzieren und trotzdem eine Spitzenleistung bei akzeptablen Temperaturniveaus zu erzielen, muss Zeit in Methoden zur Leistungsoptimierung investiert werden. Eine manuelle Leistungsoptimierung wird bei bestehenden Chips wie integrierten Schaltkreisen unmöglich, da sie Millionen von Komponenten enthalten. Typischerweise erreichen Designer die Leistungsoptimierung, indem sie die verschwendete Energie begrenzen, bei der es sich hauptsächlich um Spekulation, Architektur- und Programmverschwendung handelt. Alle diese Verfahren versuchen, die Energieverschwendung von der Ebene des Schaltungsentwurfs bis zur Ausführung und Anwendung zu reduzieren.
Programmverschwendung tritt auf, wenn ein High-End-Mikroprozessor Befehle ausführt, die nicht erforderlich sind. Die Ausführung dieser Befehle ändert den Inhalt des Speichers und der Register nicht. Programmverschwendung zu eliminieren bedeutet, die Ausführung toter Anweisungen zu reduzieren und Silent Stores loszuwerden. Spekulationsverschwendung tritt auf, wenn der Prozessor Befehle über unaufgelöste Verzweigungen hinaus abruft und ausführt. Architekturverschwendung tritt auf, wenn Strukturen wie Caches, Verzweigungsprädiktoren und Anweisungswarteschlangen zu groß oder zu klein sind.
Meistens für große Mengen konzipiert, werden architektonische Strukturen in der Regel nicht voll ausgelastet. Umgekehrt erhöht eine Verkleinerung auch den Stromverbrauch aufgrund von mehr Fehlspekulationen. Eine erfolgreiche Energieoptimierung erfordert die Verwendung eines Ansatzes auf Systemebene, indem Komponenten ausgewählt werden, die sehr wenig Energie verbrauchen. Alle möglichen Kombinationen dieser Art von Komponenten können in der Designphase untersucht werden. Die Reduzierung der erforderlichen Schaltaktivität in der Schaltung sorgt auch für einen geringeren Stromverbrauch.
Einige der anderen Ansätze, die für die Leistungsoptimierung verwendet werden, umfassen Clock-Gating, Schlafmodi und ein besseres Logikdesign. Retiming, Pfadausgleich und Zustandscodierung sind weitere logische Methoden, die den Stromverbrauch begrenzen können. Einige Mikroprozessor-Designer verwenden auch spezielle Formate, um Designdateien zu codieren, die stromsparende Steuerfunktionen einfügen.