Es ist kein Geheimnis, dass fortgeschrittene Prozessknoten nicht mehr die höheren Taktraten und den geringeren Stromverbrauch bieten, die sie einst hatten. Seit vielen Prozessgenerationen sind die Logikgeschwindigkeiten weiter gestiegen, die Speicherzugriffszeiten jedoch nicht (Abbildung 1). Die geschwindigkeitslimitierenden Pfade in Prozessoren führen fast immer durch den Speicher. Dies ist eine Situation, die sich aufgrund der sehr realen Grenzen der Halbleiterphysik bei zukünftigen Prozessknoten wahrscheinlich nicht ändern wird.
Gleichzeitig haben die maximalen Taktraten bei eingebetteten Anwendungen ihren Höhepunkt im Bereich von 1 GHz bis 2 GHz erreicht (Abbildung 2). Natürlich gibt es einige wenige Ausnahmen, die mit mehr als 2 GHz getaktet sind, aber für die meisten Anwendungen ist dies nicht möglich. Es gibt Grenzen für den Stromverbrauch und die Fläche, die beide schnell mit der Taktrate ansteigen. Die meisten Embedded Designs werden mit weniger als 1 GHz getaktet und das wird sich auch in Zukunft nicht ändern. Die Steigerung der Leistung durch Erhöhung der Taktfrequenz ist für die meisten Embedded Designs kein realistischer Ansatz.
Die Herausforderung dabei ist, dass die Leistungsanforderungen für eingebettete Anwendungen immer weiter steigen. Dies wird durch den Wettbewerb, das Hinzufügen neuer Funktionen und veränderte Anforderungen in den Anwendungsbereichen angetrieben. So nimmt beispielsweise die Größe von SSD-Laufwerken mit der Nachfrage nach größeren Kapazitäten und höheren Zugriffsgeschwindigkeiten rapide zu. Außerdem werden rechnergestützte Speicher und künstliche Intelligenz hinzugefügt, um die Lebensdauer der Laufwerke zu verlängern und den Datenzugriff und die Leistung zu verbessern. All dies erhöht die Leistungsanforderungen an SSD-Controller und die Prozessoren, mit denen sie implementiert werden.
Steigerung der Prozessorleistung
Um die Leistung von Prozessoren zu steigern, wurden schon viele Methoden angewandt. Die Erhöhung der Anzahl der Pipeline-Stufen wird seit Jahren eingesetzt, um die Grenzen der Speichergeschwindigkeit zu überwinden. So kann beispielsweise die 10-stufige Pipeline des DesignWare® ARC® HS Prozessors mit zwei Zyklen Speicherzugriff in 16 FFC-Prozessen mit 1,8 GHz (worst case) getaktet werden. Es gibt Grenzen dafür, wie schnell Embedded Designs getaktet werden, so dass das Hinzufügen weiterer Stufen zur Pipeline eines Prozessors nur von begrenztem Nutzen sein wird. In Zukunft könnte sich dies ändern, aber derzeit ist eine 10-stufige Pipeline für Embedded Designs optimal.
Superskalare Implementierungen sind ein guter Kompromiss in Bezug auf den Leistungszuwachs gegenüber dem erhöhten Platz- und Energieverbrauch. Der Wechsel von einer Single-Issue-Architektur zu einer Dual-Issue-Architektur kann die RISC-Leistung um bis zu 40 % steigern, wobei sich der Anstieg von Fläche und Stromverbrauch in Grenzen hält. Dies ist ein guter Kompromiss für einen eingebetteten Prozessor. Der Wechsel zu Tri-Issue- oder Quad-Issue-Architekturen führt zu einem weiteren Anstieg von Fläche und Stromverbrauch, bietet aber eine geringere Leistungssteigerung. Leistung um jeden Preis ist niemals das Ziel eines eingebetteten Prozessors.
Die Hinzufügung von Out-of-Order-Ausführung (OoO) kann die Leistung von eingebetteten Anwendungen steigern, ohne die Taktfrequenz zu erhöhen. Normalerweise ist eine CPU, die vollständiges OoO unterstützt, für eingebettete Anwendungen ein Overkill. Ein begrenzter Ansatz bietet eine optimale Leistungssteigerung, ohne die Größe des Prozessors zu sprengen. Eingeschränktes OoO wird üblicherweise auf High-End-Embedded-Prozessoren verwendet.
Caching wird verwendet, um den Speicher näher an den Prozessor zu bringen und so die Leistung zu steigern. Der Prozessor kann in einem einzigen Zyklus auf den Cache zugreifen, und die Leistungsverbesserung ist das Ergebnis der Tatsache, dass die Informationen im Cache vorhanden sind, wenn sie benötigt werden. Häufig genutzter Code und Daten werden im Level 1-Cache gespeichert. Weniger häufig genutzter Code und Daten werden im Level 2 Cache oder im externen Speicher aufbewahrt und bei Bedarf abgerufen. Bei Multicore-Prozessoren verbessert die Wahrung der Kohärenz zwischen den L1-Daten-Caches ebenfalls die Leistung. L1-Caching und Kohärenz sind in eingebetteten Prozessoren üblich, während L2-Cache (und Level 3) nur für anspruchsvollere Anwendungen verwendet werden.
Bei eingebetteten Designs werden zunehmend mehrere Prozessoren eingesetzt. Vor ein paar Jahren hatte ein typisches System-on-Chip (SoC) ein bis zwei Prozessoren. Heute sind mehr als fünf Prozessoren üblich, selbst bei Low-End-Designs, und die Zahl steigt weiter an. Um dies zu unterstützen, bieten Prozessoren für Midrange- und Highend-Embedded-Anwendungen Multicore-Implementierungen. Es gibt Prozessoren, die zwei, vier und acht CPU-Kerne unterstützen. Die Verwendung von Linux oder einem anderen Betriebssystem ermöglicht es Programmierern, einen reibungslosen Betrieb über die CPU-Kerne hinweg zu erreichen und gleichzeitig die Ausführung auszugleichen, um die Leistung zu steigern.
Die Verwendung von Hardware-Beschleunigern nimmt in eingebetteten Designs immer mehr zu. Sie bieten hohe Leistung bei minimalem Stromverbrauch und Platzbedarf und entlasten den Prozessor. Der größte Nachteil von Hardware-Beschleunigern ist, dass sie nicht programmierbar sind. Das Hinzufügen von Beschleunigern, die zusammen mit einem Prozessor arbeiten, kann dies abmildern. Leider verfügen die vorhandenen Prozessoren nur über begrenzte oder gar keine Fähigkeiten zur Unterstützung von Hardwarebeschleunigern. Einige Prozessoren wie die ARC-Prozessoren unterstützen benutzerdefinierte Befehle, mit denen der Benutzer Hardware in die Prozessor-Pipeline einfügen kann. Während benutzerdefinierte Befehle attraktiv sind, bieten Hardware-Beschleuniger zusätzliche Vorteile und können in Verbindung mit einem Prozessor eine erhebliche Leistungssteigerung bieten.
Die Steigerung der Prozessorleistung für eingebettete Anwendungen ist eine Herausforderung. Prozessoren unterstützen bereits tiefere Pipelines, superskalare Implementierungen und OoO-Hilfe, können aber nur bis zu einem bestimmten Punkt gehen. Das Caching ist bereits weit verbreitet, ebenso wie die Kohärenz, so dass weitere Steigerungen unwahrscheinlich sind. Ein Weg zu höherer Leistung, der von Embedded Designern bereits verfolgt wird, ist die Implementierung von mehr CPU-Kernen und Hardware-Beschleunigern in Designs.
Eingebettete Prozessorarchitektur der nächsten Generation
Prozessoren der nächsten Generation werden Unterstützung für große Multicore-Implementierungen und Hardwarebeschleunigung bieten (Abbildung 3). Die Hersteller von Prozessoren müssen mehr tun, als nur Schnittstellen zu ihren bestehenden Prozessoren hinzuzufügen. Prozessoren, die vier oder acht CPU-Kerne unterstützen, stoßen bereits an die Grenzen der maximalen Frequenz und können erhebliche Probleme mit dem Timing-Closure haben. Wenn Sie weitere Kerne hinzufügen, wird dies nur noch schlimmer. Die nächste Generation von Prozessoren muss mit einer vollständigen Neuarchitektur der internen Prozessorverbindungen beginnen, um das Timing-Closure zu erleichtern, Geschwindigkeitsbegrenzungen zu beseitigen und die interne Bandbreite zu erhöhen. Auch die Bandbreite der externen Schnittstellen muss erhöht werden, um den Datentransfer in und aus dem Prozessor zu unterstützen.
Quality of Service (QoS) wurde umfassend in Network-On-Chip (NOC) implementiert, aber nur in begrenztem Umfang in Multicore-Prozessoren. Dies wird sich bei den Prozessoren der nächsten Generation ändern, die den Programmierern die Möglichkeit geben, die interne Bandbreite für jeden CPU-Kern und Beschleuniger zu verwalten, um die Leistung zu maximieren. Dies ist anwendungsabhängig und obwohl QoS nicht für jedes Design benötigt wird, wird es in vielen anderen Fällen unerlässlich sein, um eine vorhersehbare Leistung zu gewährleisten.
Vorteile von großen Prozessor-Clustern
Große Multicore-Prozessoren haben Vorteile gegenüber kleineren Multicore-Prozessoren. Die Implementierung eines Prozessors mit 12 CPU-Kernen im Gegensatz zu drei Prozessor-Clustern mit vier CPU-Kernen verringert die Latenz zwischen den CPU-Kernen und ermöglicht die direkte Unterstützung von Snooping über die Kerne hinweg. Ein weiterer Vorteil ist die bessere Skalierung der Software. Ein Prozessor mit 12 CPU-Kernen bietet Programmierern mehr Flexibilität bei der Partitionierung von Software, und die Anzahl der Kerne, die für eine Aufgabe verwendet werden, kann je nach der benötigten Leistung dynamisch zugewiesen werden. Bei Clustern mit mehreren Prozessoren ist es schwieriger, dieses Maß an Leistungskontrolle für die Software zu erreichen, da der Zugriff zwischen den CPU-Kernen nicht einheitlich ist.
Große Multicore-Prozessoren werden auch von einer engen Kopplung mit Hardware-Beschleunigern profitieren. Wenn Sie die Schnittstellen der Hardware-Beschleuniger in die Prozessoren verlagern, anstatt sie über einen SoC-Bus anzuschließen, reduzieren Sie die Latenzzeiten und den Datenverkehr auf den SoC-Bussen und erhöhen gleichzeitig die gemeinsame Datennutzung und die Systemleistung. Dies kann auch die Effizienz der programmierbaren Kontrolle über die Beschleuniger erhöhen, wenn gemeinsam genutzte Benutzerregister implementiert werden.
ARC HS5x/HS6x
Die nächste Generation der DesignWare ARC HS5x und ARC HS6x Prozessor-IP von Synopsys nutzt viele der zuvor beschriebenen Methoden zur Steigerung der Prozessorleistung. Sie sind mit einer schnellen 10-stufigen Dual-Issue-Pipeline ausgestattet, die eine höhere Auslastung der Funktionseinheiten bei einem begrenzten Anstieg von Leistung und Fläche bietet. Die 64-Bit-HS6x-Prozessoren von ARC verfügen über eine vollständige 64-Bit-Pipeline und Registerdatei und unterstützen virtuelle 64-Bit- und physische 52-Bit-Adressräume, um die direkte Adressierung aktueller und zukünftiger großer Speicher zu ermöglichen, sowie 128-Bit-Loads und -Speicher für eine effiziente Datenbewegung (Abbildung 4).
Die Multicore-Versionen der 32-Bit-ARC HS5x- und 64-Bit-HS6x-Prozessoren verfügen über eine fortschrittliche interne Prozessorverbindung mit hoher Bandbreite, die mit asynchroner Taktung und einer internen Gesamtbandbreite von bis zu 800 GB/s das Timing erleichtern soll. Die Multicore-Versionen der neuen ARC HS Prozessoren verfügen über eine fortschrittliche Verbindungsstruktur, die bis zu 12 CPU-Kerne miteinander verbindet und Schnittstellen für bis zu 16 Benutzer-Hardwarebeschleuniger unterstützt. Um das Timing zu verbessern, kann sich jeder Kern in seiner eigenen Power Domain befinden und eine asynchrone Taktbeziehung zu den anderen Kernen haben. Wie alle DesignWare ARC Prozessoren sind auch die HS5x und HS6x Prozessoren hochgradig konAbbildungierbar und implementieren die ARC Processor EXtension (APEX) Technologie, die die Unterstützung kundenspezifischer Befehle ermöglicht, um die einzigartigen Leistungs-, Energie- und Flächenanforderungen von Embedded-Anwendungen zu erfüllen.
Um die Softwareentwicklung zu beschleunigen, werden die ARC HS5x und HS6x Prozessoren vom ARC MetaWare Development Toolkit unterstützt, das hocheffizienten Code erzeugt. Die Open-Source-Toolunterstützung für die Prozessoren umfasst das Zephyr-Echtzeitbetriebssystem, einen optimierten Linux-Kernel, die GNU Compiler Collection (GCC), den GNU Debugger (GDB) und die zugehörigen GNU-Programmierdienstprogramme (binutils).
Zusammenfassung
Die Leistungsanforderungen für eingebettete Anwendungen werden weiter steigen. Die in diesen Anwendungen verwendeten Prozessoren müssen ebenfalls an Leistung gewinnen. Das ist eine Herausforderung, denn die Fläche und der Stromverbrauch sind begrenzt, und die einfachen Leistungssteigerungen der Prozessoren wurden bereits erzielt. Die fortschrittlichen Prozessknoten liefern nicht mehr die Gewinne, die sie einst erzielten, und die Geschwindigkeiten der eingebetteten Prozessoren werden begrenzt. Superskalare und OoO-Fähigkeiten sind in High-End-Prozessoren üblich, und 64-Bit ist zwar notwendig, bietet aber nur begrenzte Leistungssteigerungen. Eine neue Generation von Multicore-Prozessoren mit Unterstützung für mehr als acht CPU-Kerne und die interne Anbindung von Hardware-Beschleunigern wird benötigt. Neue Prozessoren wie DesignWare ARC HS5x und HS6x Processor IP bieten skalierbare Leistung und Fähigkeiten und ermöglichen es den Entwicklern, die Leistungs- und Flächenanforderungen ihrer Embedded-Anwendungen zu verwalten. Diese Prozessoren basieren auf einer fortschrittlichen Architektur und sind mit internen Hochgeschwindigkeitsverbindungen ausgestattet. Sie erfüllen die Leistungsanforderungen heutiger High-End-Embedded-Anwendungen und bieten gleichzeitig genügend Spielraum für zukünftige Designs.