Mehrkernprozessor - Multi-core processor

Diagramm eines generischen Dual-Core-Prozessors mit CPU-lokalen Level-1-Caches und einem gemeinsam genutzten Level-2-Cache auf dem Chip
Ein Intel Core 2 Duo E6750 Dual-Core-Prozessor
Ein AMD Athlon X2 6400+ Dual-Core-Prozessor

Ein Mehrkernprozessor ist ein Computerprozessor auf einem einzelnen integrierten Schaltkreis mit zwei oder mehr separaten Verarbeitungseinheiten , sogenannten Kernen, von denen jeder Programmanweisungen liest und ausführt . Die Befehle sind normale CPU-Befehle (wie Hinzufügen, Verschieben von Daten und Verzweigen), aber der einzelne Prozessor kann Befehle gleichzeitig auf separaten Kernen ausführen, wodurch die Gesamtgeschwindigkeit für Programme erhöht wird, die Multithreading oder andere parallele Rechentechniken unterstützen . Hersteller integrieren typischerweise die Kerne auf einem einzigen integrierten Schaltungschip (bekannt als ein Chip - Multiprozessor oder CMP) oder auf mehrere Chips in einem einzigen Chip - Package . Die derzeit in fast allen Personalcomputern verwendeten Mikroprozessoren sind mehrkernig.

Ein Multi-Core-Prozessor implementiert Multiprocessing in einem einzigen physischen Paket. Designer können Kerne in einem Multi-Core-Gerät fest oder lose koppeln. Zum Beispiel können Kerne Caches 10 gemeinsam nutzen oder nicht , und sie können Nachrichtenweiterleitungs- oder gemeinsam genutzte Speicher- Inter-Kern-Kommunikationsverfahren implementieren . Übliche Netzwerktopologien, die zum Verbinden von Kernen verwendet werden, umfassen Bus , Ring , zweidimensionale Maschen und Kreuzschienen . Homogene Mehrkernsysteme enthalten nur identische Kerne; heterogene Mehrkernsysteme haben Kerne, die nicht identisch sind (zB big.LITTLE hat heterogene Kerne, die denselben Befehlssatz teilen , während AMD Accelerated Processing Units Kerne haben, die nicht denselben Befehlssatz verwenden). Genau wie bei Einprozessorsystemen können Kerne in Mehrkernsystemen Architekturen wie VLIW , Superscalar , Vector oder Multithreading implementieren .

Multi-Core-Prozessoren werden in vielen Anwendungsdomänen verwendet, einschließlich Allzweck- , Embedded- , Netzwerk- , Digitalsignalverarbeitung (DSP) und Grafik (GPU). Die Anzahl der Kerne kann sogar Dutzende betragen, und bei spezialisierten Chips über 10.000, und bei Supercomputern (dh Clustern von Chips) kann die Zahl über 10 Millionen liegen.

Die durch den Einsatz eines Mehrkernprozessors erzielte Leistungssteigerung hängt stark von den verwendeten Softwarealgorithmen und deren Implementierung ab. Insbesondere werden mögliche Gewinne durch den Anteil der Software begrenzt, der gleichzeitig auf mehreren Kernen parallel laufen kann ; dieser Effekt wird durch das Gesetz von Amdahl beschrieben . Im besten Fall können bei sogenannten peinlich parallelen Problemen Beschleunigungsfaktoren in der Nähe der Anzahl der Kerne oder sogar noch mehr auftreten, wenn das Problem so aufgeteilt wird, dass es in die Cache(s) jedes Kerns passt, wodurch die Verwendung von viel langsamerem Hauptsystemspeicher vermieden wird . Die meisten Anwendungen werden jedoch nicht so stark beschleunigt, es sei denn, Programmierer investieren einen unerschwinglichen Aufwand in die Umgestaltung des gesamten Problems.

Die Parallelisierung von Software ist ein bedeutendes Dauerthema der Forschung. Die Kointegration von Multiprozessoranwendungen bietet Flexibilität beim Design der Netzwerkarchitektur. Die Anpassungsfähigkeit innerhalb paralleler Modelle ist ein zusätzliches Merkmal von Systemen, die diese Protokolle verwenden.

Terminologie

Die Begriffe Multi-Core und Dual-Core beziehen sich am häufigsten auf eine Art Zentralprozessor (CPU), werden aber manchmal auch auf digitale Signalprozessoren (DSP) und System-on-a-Chip (SoC) angewendet . Die Begriffe werden im allgemeinen nur verwendet , um Multi-Core - Mikroprozessoren zu beziehen , die auf der hergestellten gleiche integrierte Schaltung Matrize ; separate Mikroprozessor -Chips im selben Gehäuse werden im Allgemeinen mit einem anderen Namen bezeichnet, wie beispielsweise Multi-Chip-Modul . In diesem Artikel werden die Begriffe "Multi-Core" und "Dual-Core" für CPUs verwendet, die auf derselben integrierten Schaltung hergestellt werden, sofern nicht anders angegeben.

Im Gegensatz zu Multi-Core-Systemen bezieht sich der Begriff Multi-CPU auf mehrere physisch getrennte Verarbeitungseinheiten (die oft spezielle Schaltungen enthalten, um die Kommunikation untereinander zu erleichtern).

Die Begriffe Many-Core und Massively Multi-Core werden manchmal verwendet, um Multi-Core-Architekturen mit einer besonders hohen Anzahl von Kernen (Zehner bis Tausender) zu beschreiben.

Einige Systeme verwenden viele Soft-Mikroprozessor- Kerne, die auf einem einzigen FPGA platziert sind . Jeder "Kern" kann als " Halbleiter-Intellektuelles Eigentums-Kern " sowie als CPU-Kern betrachtet werden.

Entwicklung

Während sich die Herstellungstechnologie verbessert und die Größe einzelner Gates verringert wird, sind physikalische Grenzen der auf Halbleitern basierenden Mikroelektronik zu einem wichtigen Designproblem geworden. Diese physikalischen Einschränkungen können zu erheblichen Wärmeableitungs- und Datensynchronisierungsproblemen führen. Verschiedene andere Methoden werden verwendet, um die CPU-Leistung zu verbessern. Einige Parallelismus- (ILP-)Verfahren auf Befehlsebene, wie beispielsweise superskalares Pipelining, sind für viele Anwendungen geeignet, sind jedoch für andere, die schwer vorhersagbaren Code enthalten, ineffizient. Viele Anwendungen eignen sich besser für Verfahren der Parallelität auf Thread-Ebene (TLP), und häufig werden mehrere unabhängige CPUs verwendet, um die Gesamt-TLP eines Systems zu erhöhen. Eine Kombination aus erhöhtem verfügbaren Platz (aufgrund verfeinerter Herstellungsverfahren) und der Nachfrage nach erhöhten TLPs führte zur Entwicklung von Multi-Core-CPUs.

Kommerzielle Anreize

Mehrere Geschäftsmotive treiben die Entwicklung von Multi-Core-Architekturen an. Jahrzehntelang war es möglich, die Leistung einer CPU durch Verkleinerung der Fläche des integrierten Schaltkreises (IC) zu verbessern, was die Kosten pro Gerät auf dem IC reduzierte. Alternativ könnten für die gleiche Schaltungsfläche mehr Transistoren im Design verwendet werden, was die Funktionalität insbesondere für Architekturen mit komplexen Befehlssätzen (CISC) erhöht . Auch die Taktraten stiegen in den Jahrzehnten des späten 20. Jahrhunderts um Größenordnungen, von mehreren Megahertz in den 1980er Jahren auf mehrere Gigahertz in den frühen 2000er Jahren.

Da sich die Geschwindigkeit der Taktgeschwindigkeitsverbesserungen verlangsamte, wurde eine verstärkte Verwendung von parallelem Rechnen in Form von Mehrkernprozessoren verfolgt, um die Gesamtverarbeitungsleistung zu verbessern. Auf demselben CPU-Chip wurden mehrere Kerne verwendet, was dann zu besseren Verkäufen von CPU-Chips mit zwei oder mehr Kernen führen könnte. Intel hat beispielsweise einen 48-Kern-Prozessor für die Forschung im Cloud-Computing entwickelt; jeder Kern hat eine x86- Architektur.

Technische Faktoren

Da Computerhersteller seit langem symmetrische Multiprozessor- (SMP)-Designs unter Verwendung diskreter CPUs implementiert haben, sind die Probleme bezüglich der Implementierung einer Mehrkernprozessorarchitektur und deren Unterstützung durch Software wohlbekannt.

Zusätzlich:

  • Die Verwendung eines bewährten Processing-Core-Designs ohne Architekturänderungen reduziert das Designrisiko erheblich.
  • Bei Allzweckprozessoren kommt ein Großteil der Motivation für Mehrkernprozessoren aus stark verringerten Zuwächsen der Prozessorleistung durch die Erhöhung der Betriebsfrequenz . Dies ist auf drei Hauptfaktoren zurückzuführen:
    1. Die Erinnerungswand ; die zunehmende Kluft zwischen Prozessor- und Speichergeschwindigkeit. Dies drängt in der Tat auf größere Cache-Größen, um die Latenz des Speichers zu maskieren. Dies hilft nur insoweit, als die Speicherbandbreite nicht der Engpass bei der Leistung ist.
    2. Die ILP-Wand ; die zunehmende Schwierigkeit, in einem einzelnen Befehlsstrom genügend Parallelität zu finden, um einen leistungsstarken Einkernprozessor zu beschäftigen.
    3. Die Machtwand ; der Trend, mit jeder faktoriellen Erhöhung der Betriebsfrequenz exponentiell zunehmend Energie zu verbrauchen (und damit auch exponentiell zunehmend Wärme zu erzeugen). Dieser Anstieg kann abgeschwächt werden, indem der Prozessor " verkleinert " wird, indem kleinere Spuren für die gleiche Logik verwendet werden. Die Stromwand wirft Herstellungs-, Systemdesign- und Bereitstellungsprobleme auf, die angesichts der verringerten Leistungssteigerungen aufgrund der Speicherwand und der ILP-Wand nicht gerechtfertigt sind .

Um weiterhin regelmäßige Leistungsverbesserungen für Allzweckprozessoren zu erzielen, haben sich Hersteller wie Intel und AMD Multi-Core-Designs zugewandt und bei einigen Anwendungen und Systemen niedrigere Herstellungskosten für eine höhere Leistung geopfert. Mehrkernarchitekturen werden entwickelt, aber auch die Alternativen. Ein besonders starker Anwärter für etablierte Märkte ist die weitere Integration von Peripheriefunktionen in den Chip.

Vorteile

Die Nähe mehrerer CPU-Kerne auf demselben Die ermöglicht es der Cache-Kohärenzschaltung , mit einer viel höheren Taktrate zu arbeiten, als dies möglich wäre, wenn die Signale außerhalb des Chips übertragen werden müssen. Die Kombination äquivalenter CPUs auf einem einzelnen Die verbessert die Leistung von Cache-Snoop- Operationen (alternativ: Bus-Snooping ) erheblich . Einfach ausgedrückt bedeutet dies, dass Signale zwischen verschiedenen CPUs kürzere Distanzen zurücklegen und sich diese Signale daher weniger verschlechtern . Durch diese höherwertigen Signale können mehr Daten in einem bestimmten Zeitraum gesendet werden, da einzelne Signale kürzer sein können und nicht so oft wiederholt werden müssen.

Unter der Annahme, dass der Chip physisch in das Gehäuse passen kann, benötigen Multi-Core-CPU-Designs viel weniger Platz auf der Leiterplatte (PCB) als Multi-Chip-SMP-Designs. Außerdem verbraucht ein Dual-Core-Prozessor etwas weniger Strom als zwei gekoppelte Single-Core-Prozessoren, hauptsächlich wegen der geringeren Leistung, die erforderlich ist, um Signale außerhalb des Chips anzusteuern. Darüber hinaus teilen sich die Kerne einige Schaltungen, wie den L2-Cache und die Schnittstelle zum Front-Side-Bus (FSB). In Bezug auf konkurrierende Technologien für den verfügbaren Silizium-Die-Bereich kann das Multi-Core-Design bewährte CPU-Kernbibliotheksdesigns nutzen und ein Produkt mit einem geringeren Risiko von Designfehlern produzieren als die Entwicklung eines neuen Wide-Core-Designs. Außerdem leidet das Hinzufügen von mehr Cache unter abnehmenden Renditen.

Multi-Core-Chips ermöglichen auch eine höhere Leistung bei geringerer Energie. Dies kann bei mobilen Geräten, die mit Batterien betrieben werden, ein großer Faktor sein. Da jeder Kern in einer Mehrkern-CPU im Allgemeinen energieeffizienter ist, wird der Chip effizienter als ein einzelner großer monolithischer Kern. Dies ermöglicht eine höhere Leistung mit weniger Energie. Eine Herausforderung dabei ist jedoch der zusätzliche Overhead beim Schreiben von parallelem Code.

Nachteile

Die Maximierung der Nutzung der von Mehrkernprozessoren bereitgestellten Rechenressourcen erfordert Anpassungen sowohl an die Unterstützung des Betriebssystems (OS) als auch an die vorhandene Anwendungssoftware. Außerdem hängt die Fähigkeit von Mehrkernprozessoren, die Anwendungsleistung zu steigern, von der Verwendung mehrerer Threads innerhalb von Anwendungen ab.

Die Integration eines Multi-Core-Chips kann die Chip-Produktionsausbeuten verringern. Sie sind auch thermisch schwieriger zu handhaben als Single-Core-Designs mit geringerer Dichte. Intel hat diesem ersten Problem teilweise begegnet, indem es seine Quad-Core-Designs entwickelt hat, indem zwei Dual-Core-Chips auf einem einzigen Die mit einem einheitlichen Cache kombiniert wurden. Daher können zwei beliebige funktionierende Dual-Core-Dies verwendet werden, anstatt vier Kerne auf einem Single-Die und erfordert, dass alle vier arbeiten, um eine Quad-Core-CPU zu produzieren. Aus architektonischer Sicht können Single-CPU-Designs die Siliziumoberfläche letztendlich besser nutzen als Multiprozessor-Kerne, so dass ein Entwicklungsengagement für diese Architektur das Risiko der Veralterung birgt. Schließlich ist die reine Rechenleistung nicht die einzige Einschränkung der Systemleistung. Zwei Prozessorkerne, die sich denselben Systembus und dieselbe Speicherbandbreite teilen, schränken den Leistungsvorteil in der Praxis ein. In einem Bericht aus dem Jahr 2009 zeigte Dr. Jun Ni, dass, wenn die Speicherbandbreite eines einzelnen Kerns fast begrenzt ist, die Umstellung auf Dual-Core eine Verbesserung von 30 bis 70 % bewirken könnte; wenn die Speicherbandbreite kein Problem darstellt, kann eine Verbesserung von 90 % erwartet werden; jedoch macht Amdahls Gesetz diese Behauptung zweifelhaft. Es wäre möglich, dass eine Anwendung, die zwei CPUs verwendet, auf einer Single-Core-CPU schneller läuft, wenn die Kommunikation zwischen den CPUs der limitierende Faktor wäre, was als eine Verbesserung von mehr als 100 % gelten würde.

Hardware

Trends

Der Trend in der Prozessorentwicklung geht zu einer immer höheren Anzahl von Kernen, da Prozessoren mit Hunderten oder sogar Tausenden von Kernen theoretisch möglich werden. Darüber hinaus versprechen Multi-Core-Chips gemischt mit simultanem Multithreading , Memory-on-Chip und speziellen "heterogenen" (oder asymmetrischen) Kernen weitere Leistungs- und Effizienzsteigerungen, insbesondere bei der Verarbeitung von Multimedia-, Erkennungs- und Netzwerkanwendungen. Ein big.LITTLE- Kern umfasst beispielsweise einen Hochleistungskern (genannt 'big') und einen Low-Power-Kern (genannt 'LITTLE'). Es gibt auch einen Trend zur Verbesserung der Energieeffizienz durch Konzentration auf Leistung pro Watt mit fortschrittlicher feinkörniger oder ultrafeinkörniger Energieverwaltung und dynamischer Spannungs- und Frequenzskalierung (zB Laptop- Computer und tragbare Mediaplayer ).

Chips, die von Anfang an für eine große Anzahl von Kernen entwickelt wurden (und nicht aus Einzelkern-Designs entwickelt wurden), werden manchmal als Manycore- Designs bezeichnet, was qualitative Unterschiede hervorhebt.

Die Architektur

Die Zusammensetzung und Ausgewogenheit der Kerne in der Multi-Core-Architektur zeigen eine große Vielfalt. Einige Architekturen verwenden ein Kerndesign, das sich konsistent wiederholt ("homogen"), während andere eine Mischung verschiedener Kerne verwenden, von denen jeder für eine andere, " heterogene " Rolle optimiert ist .

Wie mehrere Kerne implementiert und integriert werden, beeinflusst sowohl die Programmierkenntnisse des Entwicklers als auch die Erwartungen des Verbrauchers an Apps und Interaktivität gegenüber dem Gerät erheblich. Ein Gerät, das als Octa-Core beworben wird, hat nur unabhängige Kerne, wenn es als True Octa-Core oder ähnlichem Design beworben wird , im Gegensatz zu nur zwei Sätzen von Quad-Cores mit jeweils festen Taktraten.

Der Artikel "CPU-Designer debattieren über die Multi-Core-Zukunft" von Rick Merritt, EE Times 2008, enthält diese Kommentare:

Chuck Moore [...] schlug vor, dass Computer wie Mobiltelefone sein sollten, die eine Vielzahl von Spezialkernen verwenden, um modulare Software auszuführen, die von einer High-Level-Anwendungsprogrammierschnittstelle geplant wird.

[...] Atsushi Hasegawa, ein leitender Chefingenieur bei Renesas , stimmte allgemein zu. Er schlug vor, dass die Verwendung vieler gemeinsam arbeitender Spezialkerne beim Mobiltelefon ein gutes Modell für zukünftige Multi-Core-Designs ist.

[...] Anant Agarwal , Gründer und Geschäftsführer des Startups Tilera , vertrat die gegenteilige Meinung. Er sagte, dass Multi-Core-Chips homogene Sammlungen von Allzweck-Kernen sein müssen, um das Softwaremodell einfach zu halten.

Softwareeffekte

Eine veraltete Version einer Antiviren-Anwendung kann einen neuen Thread für einen Scanprozess erstellen, während ihr GUI- Thread auf Befehle des Benutzers wartet (zB Scan abbrechen). In solchen Fällen ist eine Multi-Core-Architektur für die Anwendung selbst von geringem Nutzen, da der einzelne Thread die ganze Schwerarbeit übernimmt und die Arbeit nicht gleichmäßig auf mehrere Kerne verteilt werden kann. Das Programmieren von echtem Multithread-Code erfordert oft eine komplexe Koordination von Threads und kann aufgrund der Verflechtung der Verarbeitung von Daten, die zwischen Threads geteilt werden, leicht subtile und schwer zu findende Fehler einführen (siehe Thread-Sicherheit ). Folglich ist es viel schwieriger, solchen Code zu debuggen als Singlethread-Code, wenn er kaputt geht. Es wurde ein Mangel an Motivation zum Schreiben von Threaded-Anwendungen auf Verbraucherebene wahrgenommen, da die Nachfrage auf Verbraucherebene nach maximaler Nutzung von Computerhardware relativ selten ist. Außerdem können serielle Aufgaben wie das Decodieren der Entropiecodierungsalgorithmen, die in Videocodecs verwendet werden, nicht parallelisiert werden, da jedes generierte Ergebnis verwendet wird, um das nächste Ergebnis des Entropiedecodierungsalgorithmus zu erzeugen.

Angesichts der zunehmenden Betonung des Multi-Core-Chip-Designs, die sich aus den schwerwiegenden thermischen und Energieverbrauchsproblemen ergibt, die durch jede weitere signifikante Erhöhung der Prozessortaktgeschwindigkeiten entstehen, wird das Ausmaß, in dem Software multithreaded werden kann, um die Vorteile dieser neuen Chips zu nutzen, wahrscheinlich sein die größte Einschränkung der Computerleistung in der Zukunft. Wenn Entwickler nicht in der Lage sind, Software zu entwickeln, um die von mehreren Kernen bereitgestellten Ressourcen vollständig auszuschöpfen, werden sie letztendlich eine unüberwindbare Leistungsgrenze erreichen.

Der Telekommunikationsmarkt war einer der ersten, der ein neues Design der parallelen Datenpfad-Paketverarbeitung benötigte, da diese Mehrkernprozessoren für den Datenpfad und die Steuerungsebene sehr schnell angenommen wurden. Diese MPUs werden die traditionellen Netzwerkprozessoren ersetzen, die auf proprietärem Mikrocode oder Picocode basieren .

Parallele Programmiertechniken können direkt von mehreren Kernen profitieren. Einige bestehende parallele Programmiermodelle wie Cilk Plus , OpenMP , OpenHMPP , FastFlow , Skandium, MPI und Erlang können auf Multi-Core-Plattformen verwendet werden. Intel hat eine neue Abstraktion für die C++-Parallelität namens TBB eingeführt . Andere Forschungsanstrengungen umfassen das Codeplay Sieve System , Cray's Chapel , Sun's Fortress und IBMs X10 .

Die Mehrkernverarbeitung hat auch die Fähigkeit der modernen Computersoftwareentwicklung beeinflusst. Entwickler, die in neueren Sprachen programmieren, stellen möglicherweise fest, dass ihre modernen Sprachen keine Multi-Core-Funktionalität unterstützen. Dies erfordert dann die Verwendung numerischer Bibliotheken, um auf Code zuzugreifen, der in Sprachen wie C und Fortran geschrieben wurde , die mathematische Berechnungen schneller ausführen als neuere Sprachen wie C# . Intels MKL und AMDs ACML sind in diesen nativen Sprachen geschrieben und nutzen die Vorteile der Multi-Core-Verarbeitung. Die Verteilung der Anwendungsworkload auf die Prozessoren kann problematisch sein, insbesondere wenn sie unterschiedliche Leistungsmerkmale aufweisen. Zur Lösung des Problems gibt es verschiedene konzeptionelle Modelle, zum Beispiel mit Hilfe einer Koordinationssprache und Programmbausteinen (Programmierbibliotheken oder übergeordnete Funktionen). Jeder Block kann für jeden Prozessortyp eine andere native Implementierung aufweisen. Benutzer programmieren einfach mit diesen Abstraktionen und ein intelligenter Compiler wählt basierend auf dem Kontext die beste Implementierung aus.

Die Verwaltung von Nebenläufigkeit nimmt eine zentrale Rolle bei der Entwicklung paralleler Anwendungen ein. Die grundlegenden Schritte beim Entwerfen paralleler Anwendungen sind:

Partitionierung
Die Partitionierungsphase eines Entwurfs soll Möglichkeiten für eine parallele Ausführung aufzeigen. Daher liegt der Fokus darauf, eine Vielzahl kleiner Aufgaben zu definieren, um eine so genannte feinkörnige Zerlegung eines Problems zu erhalten.
Kommunikation
Die von einer Partition generierten Aufgaben sollen gleichzeitig ausgeführt werden, können jedoch im Allgemeinen nicht unabhängig ausgeführt werden. Die in einer Aufgabe durchzuführende Berechnung erfordert typischerweise Daten, die einer anderen Aufgabe zugeordnet sind. Daten müssen dann zwischen Tasks übertragen werden, damit die Berechnung fortschreiten kann. Dieser Informationsfluss wird in der Kommunikationsphase eines Designs spezifiziert.
Ballungsraum
In der dritten Stufe bewegt sich die Entwicklung vom Abstrakten zum Konkreten. Entwickler überprüfen Entscheidungen, die in den Partitionierungs- und Kommunikationsphasen getroffen wurden, um einen Algorithmus zu erhalten, der auf einer Klasse von Parallelcomputern effizient ausgeführt wird. Insbesondere überlegen Entwickler, ob es sinnvoll ist, durch die Partitionierungsphase identifizierte Aufgaben zu kombinieren oder zu agglomerieren, um eine kleinere Anzahl von Aufgaben mit jeweils größerer Größe bereitzustellen. Sie bestimmen auch, ob es sich lohnt, Daten und Berechnungen zu replizieren.
Kartierung
In der vierten und letzten Phase des Entwurfs paralleler Algorithmen legen die Entwickler fest, wo jede Aufgabe ausgeführt werden soll. Dieses Zuordnungsproblem tritt nicht auf Uniprozessoren oder auf Computern mit gemeinsam genutztem Speicher auf, die eine automatische Aufgabenplanung bereitstellen.

Auf der Serverseite hingegen sind Multi-Core-Prozessoren ideal, da sie es vielen Benutzern ermöglichen, sich gleichzeitig mit einer Site zu verbinden und über unabhängige Ausführungs- Threads verfügen . Dies ermöglicht Webserver und Anwendungsserver mit einem viel besseren Durchsatz .

Lizenzierung

Anbieter können einige Software „pro Prozessor“ lizenzieren. Dies kann zu Mehrdeutigkeiten führen, da ein "Prozessor" entweder aus einem einzelnen Kern oder aus einer Kombination von Kernen bestehen kann.

  • Anfangs verwendete Microsoft für einen Teil seiner Unternehmenssoftware weiterhin ein Lizenzierungssystem pro Socket . Für einige Software wie BizTalk Server 2013 , SQL Server 2014 und Windows Server 2016 hat Microsoft jedoch auf die Pro-Core-Lizenzierung umgestellt.
  • Die Oracle Corporation zählt eine AMD X2- oder eine Intel-Dual-Core-CPU als Einzelprozessor, verwendet jedoch andere Metriken für andere Typen, insbesondere für Prozessoren mit mehr als zwei Kernen.

Eingebettete Anwendungen

Ein eingebettetes System auf Steckkarte mit Prozessor, Speicher, Netzteil und externen Schnittstellen

Embedded Computing arbeitet in einem Bereich der Prozessortechnologie, der sich von dem der "Mainstream"-PCs unterscheidet. Auch hier gelten die gleichen technologischen Triebe in Richtung Multi-Core. Tatsächlich passt die Anwendung in vielen Fällen "natürlich" zu Multi-Core-Technologien, wenn die Aufgabe problemlos auf die verschiedenen Prozessoren aufgeteilt werden kann.

Darüber hinaus wird eingebettete Software in der Regel für ein bestimmtes Hardware-Release entwickelt, wodurch Probleme der Software-Portabilität , des Legacy-Codes oder der Unterstützung unabhängiger Entwickler weniger kritisch werden als dies bei PCs oder Unternehmens-Computing der Fall ist. Dadurch ist es für Entwickler einfacher, neue Technologien zu übernehmen und es gibt eine größere Vielfalt an Multi-Core-Prozessorarchitekturen und -anbietern.

Netzwerkprozessoren

Ab 2010 sind Multi-Core- Netzwerkprozessoren zum Mainstream geworden, wobei Unternehmen wie Freescale Semiconductor , Cavium Networks , Wintegra und Broadcom alle Produkte mit acht Prozessoren herstellen. Für den Systementwickler besteht eine zentrale Herausforderung darin, alle Kerne dieser Geräte auszunutzen, um trotz der Leistungsbeschränkungen, die einem symmetrischen Multiprozessor- (SMP)-Betriebssystem innewohnen, eine maximale Netzwerkleistung auf Systemebene zu erreichen . Unternehmen wie 6WIND stellen tragbare Paketverarbeitungssoftware bereit , die so ausgelegt ist, dass die Netzwerkdatenebene in einer Fast-Path-Umgebung außerhalb des Betriebssystems des Netzwerkgeräts ausgeführt wird.

Digitale Signalverarbeitung

Bei der digitalen Signalverarbeitung gilt der gleiche Trend: Texas Instruments hat den Dreikerner TMS320C6488 und den Vierkerner TMS320C5441, Freescale den Vierkerner MSC8144 und den Sechskerner MSC8156 (und beide haben angegeben, an Achtkerner-Nachfolgern zu arbeiten). Zu den neueren Einträgen gehören die Storm-1-Familie von Stream Processors, Inc mit 40 und 80 Allzweck-ALUs pro Chip, die alle in C als SIMD-Engine programmierbar sind, und Picochip mit 300 Prozessoren auf einem einzigen Chip, die sich auf Kommunikationsanwendungen konzentrieren.

Heterogene Systeme

Im heterogenen Computing , bei dem ein System mehr als eine Art von Prozessor oder Kernen verwendet, werden Multi-Core-Lösungen immer häufiger: Xilinx Zynq UltraScale+ MPSoC verfügt über einen Quad-Core ARM Cortex-A53 und einen Dual-Core ARM Cortex-R5. Softwarelösungen wie OpenAMP werden verwendet, um bei der Kommunikation zwischen den Prozessoren zu helfen.

Mobile Geräte können die ARM big.LITTLE Architektur verwenden.

Hardware-Beispiele

Werbung

  • Adapteva Epiphany, eine Vielkern-Prozessorarchitektur, die bis zu 4096 Prozessoren auf dem Chip ermöglicht, obwohl nur eine 16-Kern-Version kommerziell hergestellt wurde.
  • Aeroflex Gaisler LEON3 , ein Multicore - SPARC , der auch in einer fehlertoleranten Version existiert .
  • Ageia PhysX , eine Mehrkern- Physikverarbeitungseinheit .
  • Ambric Am2045, ein Massively Parallel Processor Array (MPPA) mit 336 Kernen
  • AMD
    • A-Serie , Dual-, Triple- und Quad-Core von Accelerated Processor Units (APU).
    • Athlon 64 FX und Athlon 64 X2 Single- und Dual-Core-Desktop-Prozessoren.
    • Athlon II , Dual-, Triple- und Quad-Core-Desktop-Prozessoren.
    • FX-Serie , Quad-, 6- und 8-Core-Desktop-Prozessoren.
    • Opteron , Single-, Dual-, Quad-, 6-, 8-, 12- und 16-Core-Server-/Workstation-Prozessoren.
    • Phenom , Dual-, Triple- und Quad-Core-Prozessoren.
    • Phenom II , Dual-, Triple-, Quad- und 6-Core-Desktop-Prozessoren.
    • Sempron , Single-, Dual- und Quad-Core-Einstiegsprozessoren.
    • Turion , Single- und Dual-Core-Laptop-Prozessoren.
    • Ryzen , Dual-, Quad-, 6-, 8-, 12-, 16-, 24-, 32-, und 64-Core - Desktop, mobile und eingebettete Prozessor Plattform.
    • Epyc- , Quad-, 8-, 12-, 16-, 24-, 32- und 64-Core-Server und eingebettete Prozessoren.
    • Radeon und FireStream Multi-Core- GPU / GPGPU (10 Kerne, 16 5- fach breite Superskalar- Stream-Prozessoren pro Kern).
  • Analog Devices Blackfin BF561, ein symmetrischer Dual-Core-Prozessor
  • ARM MPCore ist ein vollständig synthetisierbarer Multi-Core-Container für ARM11 MPCore- und ARM Cortex-A9 MPCore- Prozessorkerne, der für leistungsstarke Embedded- und Unterhaltungsanwendungen gedacht ist.
  • ASOCS ModemX, bis zu 128 Kerne, drahtlose Anwendungen.
  • Azul-Systeme
    • Vega 1, ein 24-Kern-Prozessor, der 2005 veröffentlicht wurde.
    • Vega 2, ein 48-Kern-Prozessor, der 2006 veröffentlicht wurde.
    • Vega 3, ein 54-Kern-Prozessor, der 2008 veröffentlicht wurde.
  • Broadcom-SiByte SB1250, SB1255, SB1455; BCM 2836 Quad-Core-ARM-SoC (entwickelt für den Raspberry Pi 2)
  • Cadence Design Systems Tensilica Xtensa LX6, erhältlich in einer Dual-Core - Konfiguration in Espressif Systeme ‚s ESP32
  • ClearSpeed
    • CSX700, 192-Core-Prozessor, veröffentlicht im Jahr 2008 (32/64-Bit-Gleitkomma; Integer ALU).
  • Cradle Technologies CT3400 und CT3600, beides Multicore-DSPs.
  • Cavium Networks Octeon, eine 32-Kern- MIPS- MPU .
  • Coherent Logix hx3100-Prozessor , ein 100-Kern-DSP/GPP-Prozessor.
  • Freescale Semiconductor QorIQ-Prozessoren, bis zu 8 Kerne, Power ISA MPU .
  • Hewlett-Packard PA-8800 und PA-8900 , Dual-Core- PA-RISC- Prozessoren.
  • IBM
    • POWER4 , ein Dual-Core- PowerPC- Prozessor, der 2001 veröffentlicht wurde.
    • POWER5 , ein Dual-Core-PowerPC-Prozessor, der 2004 veröffentlicht wurde.
    • POWER6 , ein Dual-Core-PowerPC-Prozessor, der 2007 veröffentlicht wurde.
    • POWER7 , ein 4,6,8-Core-PowerPC-Prozessor, der 2010 veröffentlicht wurde.
    • POWER8 , ein 12-Kern-PowerPC-Prozessor, der 2013 veröffentlicht wurde.
    • POWER9 , ein PowerPC-Prozessor mit 12 oder 24 Kernen, der 2017 auf den Markt kam.
    • Power10 , ein 15- oder 30-Core-PowerPC-Prozessor, der 2021 veröffentlicht wurde.
    • PowerPC 970 MP, ein Dual-Core-PowerPC-Prozessor, der im Apple Power Mac G5 verwendet wird .
    • Xenon , ein SMT- fähiger Triple-Core- PowerPC-Mikroprozessor, der in der Microsoft Xbox 360 -Spielekonsole verwendet wird.
    • z10 , ein Quad-Core- z/Architecture- Prozessor, der 2008 veröffentlicht wurde.
    • z196 , ein Quad-Core-z/Architecture-Prozessor, der 2010 veröffentlicht wurde.
    • zEC12 , ein z/Architecture-Prozessor mit sechs Kernen, der 2012 veröffentlicht wurde.
    • z13 , ein Acht-Kern-z/Architecture-Prozessor, der 2015 veröffentlicht wurde.
    • z14 , ein z/Architecture-Prozessor mit zehn Kernen, der 2017 veröffentlicht wurde.
    • z15 , ein Z/Architecture-Prozessor mit zwölf Kernen, der 2019 veröffentlicht wurde.
    • Telum , ein Z/Architecture-Prozessor mit acht Kernen, der 2021 veröffentlicht wurde.

Kostenlos

Akademiker

Benchmarks

Die Forschung und Entwicklung von Multicore-Prozessoren vergleicht oft viele Optionen, und Benchmarks werden entwickelt, um solche Bewertungen zu unterstützen. Bestehende Benchmarks umfassen SPLASH-2, PARSEC und COSMIC für heterogene Systeme.

Siehe auch

Anmerkungen

  1. ^ Digitale Signalprozessoren(DSPs) verwenden Multi-Core-Architekturen schon viel länger als High-End-Allzweckprozessoren. Ein typisches Beispiel für eine DSP-spezifische Implementierung wäre eine Kombination aus einerRISC-CPU und einer DSP-MPU. Dies ermöglicht das Design von Produkten, die einen Allzweckprozessor für Benutzerschnittstellen und einen DSP für die Echtzeitdatenverarbeitung erfordern; diese Art von Design ist beiMobiltelefonen üblich. In anderen Anwendungen haben immer mehr Unternehmen Multi-Core-DSPs mit sehr vielen Prozessoren entwickelt.
  2. ^ Zwei Arten vonBetriebssystemenkönnen einen Dual-CPU-Multiprozessor verwenden: Partitioned Multiprocessing undSymmetric Multiprocessing(SMP). In einer partitionierten Architektur bootet jede CPU in separate Segmente des physischen Speichers und arbeitet unabhängig; in einem SMP-Betriebssystem arbeiten Prozessoren in einem gemeinsam genutzten Raum und führen Threads innerhalb des Betriebssystems unabhängig aus.

Verweise

Weiterlesen

  • Khondker S. Hasan, Nicolas G. Grounds, John K. Antonio (Juli 2011). Vorhersage der CPU-Verfügbarkeit eines Multi-Core-Prozessors, der gleichzeitige Java-Threads ausführt . 17. Internationale Konferenz über parallele und verteilte Verarbeitungstechniken und Anwendungen (PDPTA-11). Las Vegas, Nevada, USA. S. 551–557.CS1-Wartung: verwendet Autorenparameter ( Link )
  • Khondker S. Hasan, John Antonio, Sridhar Radhakrishnan (Februar 2014). Ein neues zusammengesetztes CPU/Speicher-Modell zur Vorhersage der Effizienz von Multi-Core-Verarbeitung . Der 20. IEEE International Conference on High Performance Computer Architecture (HPCA-14) Workshop. Orlando, Florida, USA. doi : 10.13140/RG.2.1.3051.9207 .CS1-Wartung: verwendet Autorenparameter ( Link )

Externe Links