Zentrale Verarbeitungseinheit
A Zentrale Verarbeitungseinheit (Zentralprozessor), auch a genannt zentraler Prozessor, Hauptprozessor oder nur Prozessor, ist der elektronische Schaltung das wird ausgeführt Anweisungen bestehend a Computer Programm. Die CPU führt Basic durch Arithmetik, Logik, Kontrolle und Input-Output (I/O) Operationen, die durch die Anweisungen im Programm angegeben sind. Dies steht im Gegensatz zu externen Komponenten wie z. Haupterinnerung und I/O -Schaltung,[1] und spezialisierte Prozessoren wie z. Grafikverarbeitungseinheiten (GPUs).
Die Form, Entwurfund die Umsetzung von CPUs haben sich im Laufe der Zeit verändert, aber ihr grundlegender Betrieb bleibt fast unverändert. Hauptkomponenten einer CPU umfassen die Arithmetik-Logikeinheit (Alu), das Arithmetik ausführt und logische Operationen, Prozessorregister diese Versorgung Operanden an die Alu und speichern die Ergebnisse von ALU -Operationen und a Steuergerät Das orchestriert das Abrufen (aus dem Speicher), Dekodierung und Ausführung (von Anweisungen) durch Regie der koordinierten Operationen der ALU, Register und anderer Komponenten.
Die meisten modernen CPUs werden implementiert Integrierter Schaltkreis (IC) Mikroprozessorenmit einem oder mehreren CPUs auf einem einzigen IC -Chip. Mikroprozessorchips mit mehreren CPUs sind Multi-Core-Prozessoren. Der individuelle physische CPUs, Prozessorkerne, kann auch sein Multithread Erstellen Sie zusätzliche virtuelle oder logische CPUs.[2]
Ein IC, das eine CPU enthält Erinnerung, peripher Schnittstellen und andere Komponenten eines Computers; Solche integrierten Geräte werden unterschiedlich genannt Mikrocontroller oder Systeme auf einem Chip (SOC).
Array -Prozessoren oder Vektorprozessoren haben mehrere Prozessoren, die parallel operieren und keine Einheit als zentral angesehen werden. Virtuelle CPUs sind eine Abstraktion dynamischer aggregierter Rechenressourcen.[3]
Geschichte
Frühe Computer wie die Eniac mussten physikalisch neu verdrahtet werden, um unterschiedliche Aufgaben auszuführen, was dazu führte, dass diese Maschinen als "Festprogramm-Computer" bezeichnet wurden.[4] Die Begriff "Central Processing Unit" wird seit 1955 bereits verwendet.[5][6] Da der Begriff "CPU" im Allgemeinen als Gerät für definiert ist Software (Computerprogramm) Ausführung, die frühesten Geräte, die zu Recht CPUs genannt werden konnten, kamen mit dem Aufkommen der Computerprotokollcomputer.
Die Idee eines Speicherprogramms für gespeicherte Programme war bereits im Design von vorhanden gewesen J. Presper Eckert und John William Mauchly's Eniac, wurde aber zunächst weggelassen, damit es früher beendet werden konnte.[7] Am 30. Juni 1945, bevor Eniac gemacht wurde, Mathematiker John von Neumann verteilt das Papier mit dem Titel " Erster Entwurf eines Berichts über den EDVAC. Es war der Umriss eines Speicherprogramms, der schließlich im August 1949 fertiggestellt werden sollte.[8] Edvac wurde entwickelt, um eine bestimmte Anzahl von Anweisungen (oder Operationen) verschiedener Typen auszuführen. Bezeichnenderweise sollten die für EDVAC geschriebenen Programme in Hochgeschwindigkeiten gespeichert werden Computerspeicher anstatt durch die physische Verkabelung des Computers angegeben.[9] Dies überwältigte eine schwere Einschränkung von ENIAC, was die beträchtliche Zeit und Aufwand war, die erforderlich war, um den Computer neu zu konfigurieren, um eine neue Aufgabe auszuführen.[10] Mit dem Design von von Neumann konnte das Programm, das EDVAC leitete, durch Ändern des Speicherinhalts einfach geändert werden. EDVAC war nicht der erste Speicherprogramm-Computer, der Manchester Baby Das war ein kleiner experimenteller Computer-Programm-Computer, das am 21. Juni 1948 sein erstes Programm durchführte[11] und die Manchester Mark 1 leitete sein erstes Programm in der Nacht vom 16. bis 17. Juni 1949.[12]
Frühe CPUs waren benutzerdefinierte Designs, die als Teil eines größeren und manchmal markanten Computers verwendet wurden.[13] Diese Methode zum Entwerfen kundenspezifischer CPUs für eine bestimmte Anwendung hat jedoch weitgehend der Entwicklung von Mehrzweckprozessoren, die in großen Mengen hergestellt werden, Platz gemacht. Diese Standardisierung begann in der Ära von diskretem Transistor Mainframes und Minicomputer und hat sich schnell mit der Popularisierung der beschleunigt Integrierter Schaltkreis(IC). Das IC hat es CPUs immer komplexer ermöglicht, in der Reihenfolge von Toleranzen zu entworfen und hergestellt zu werden Nanometer.[14] Sowohl die Miniaturisierung als auch die Standardisierung von CPUs haben das Vorhandensein digitaler Geräte im modernen Leben weit über die begrenzte Anwendung dedizierter Computergeräte hinaus erhöht. Moderne Mikroprozessoren erscheinen in elektronischen Geräten, die von Automobilen reichen[15] zu Mobiltelefonen,[16] Und manchmal sogar in Spielzeug.[17][18]
Während von Neumann aufgrund seines Designs von EDVAC am häufigsten das Design des Computer-Programms zugeschrieben wird, und das Design wurde als das bekannt Von Neumann Architektur, andere vor ihm, wie z. Konrad Zuse, hatte ähnliche Ideen vorgeschlagen und implementiert.[19] Die sogenannte Harvard Architektur des Harvard Mark i, was vor Edvac fertiggestellt wurde,[20][21] verwendete auch ein gespeichertes Produktdesign mit Verwendung geschlagenes Papierband eher als elektronischer Speicher.[22] Der Hauptunterschied zwischen den Architekturen von Neumann und Harvard besteht darin, dass letztere die Speicherung und Behandlung von CPU -Anweisungen und -Daten trennt, während der erstere den gleichen Speicherplatz für beide verwendet.[23] Die meisten modernen CPUs sind in erster Linie von Neumann im Design, aber auch in eingebetteten Anwendungen werden CPUs mit der Harvard -Architektur gesehen. Zum Beispiel die Atmel Avr Mikrocontroller sind Harvard -Architekturprozessoren.[24]
Relais und Vakuumröhren (Thermionröhrchen) wurden üblicherweise als Schaltelemente verwendet;[25][26] Ein nützlicher Computer benötigt Tausende oder Zehntausende von Schaltgeräten. Die Gesamtgeschwindigkeit eines Systems hängt von der Geschwindigkeit der Schalter ab. Vakuumrohrcomputer Wie EDVAC tendierte auf durchschnittliche acht Stunden zwischen den Fehlern, während Computer wie die (langsamer, aber früher) Relais Relais Harvard Mark i sehr selten gescheitert.[6] Am Ende wurde CPUs auf Rohrbasis dominant, da die erheblichen Geschwindigkeitsvorteile die Zuverlässigkeitsprobleme im Allgemeinen überwogen. Die meisten dieser frühen synchronen CPUs lief mit niedrig Taktraten im Vergleich zu modernen mikroelektronischen Designs. Taktsignalfrequenzen von 100 KHz bis 4 MHz waren zu diesem Zeitpunkt sehr häufig, weitgehend begrenzt durch die Geschwindigkeit der Schaltvorrichtungen, mit denen sie gebaut wurden.[27]
Transistor CPUs
Die Designkomplexität von CPUs nahm zu, da verschiedene Technologien kleinere und zuverlässigere elektronische Geräte ermöglichten. Die erste derartige Verbesserung kam mit dem Aufkommen der Transistor. Transistorisierte CPUs in den 1950er und 1960er Jahren mussten nicht mehr aus sperrigen, unzuverlässigen und fragilen Schaltelementen wie Vakuumröhren und Relais.[28] Mit dieser Verbesserung wurden komplexere und zuverlässigere CPUs auf einem oder mehreren aufgebaut Leiterplatten enthält diskrete (individuelle) Komponenten.
Im Jahr 1964, IBM stellte seine vor IBM System/360 Computerarchitektur, die in einer Reihe von Computern verwendet wurde, die dieselben Programme mit unterschiedlicher Geschwindigkeit und Leistung ausführen können.[29] Dies war in einer Zeit von Bedeutung, als die meisten elektronischen Computer miteinander unvereinbar waren, selbst die von demselben Hersteller hergestellten. Um diese Verbesserung zu erleichtern, verwendete IBM das Konzept von a Mikroprogramm (oft als "Mikrocode" bezeichnet), das in modernen CPUs immer noch weit verbreitete Verwendung sieht.[30] Das System/360 Architektur war so beliebt, dass es die dominierte Hauptrechner Markt für Jahrzehnte und hinterließ ein Erbe, das von ähnlichen modernen Computern wie dem IBM fortgesetzt wird ZSeries.[31][32] 1965,, Digital Equipment Corporation (Dez.) Ein weiterer einflussreicher Computer für die wissenschaftlichen und Forschungsmärkte, die PDP-8.[33]
Transistorbasierte Computer hatten gegenüber ihren Vorgängern mehrere unterschiedliche Vorteile. Abgesehen von der Erleichterung einer erhöhten Zuverlässigkeit und des geringeren Stromverbrauchs ermöglichten die Transistoren CPUs aufgrund der kurzen Schaltzeit eines Transistors im Vergleich zu einem Röhrchen oder Relais mit viel höheren Geschwindigkeit.[34] Die erhöhte Zuverlässigkeit und die dramatisch erhöhte Geschwindigkeit der Schaltelemente (die zu diesem Zeitpunkt fast ausschließlich Transistoren waren); Die CPU -Taktraten in den zehn Megahertz wurden in diesem Zeitraum leicht erhalten.[35] Während diskreter Transistor und IC-CPUs stark verwendet wurden, wie bei neuen Hochleistungsdesigns wie Einzelanweisung, mehrere Daten (SIMD) Vektorprozessoren Angefangen zu Erscheinen.[36] Diese frühen experimentellen Entwürfe führten später zur Ära der Spezialisation Supercomputer wie die von gemachten von Cray Inc. und Fujitsu Ltd.[36]
Kleingrad Integration CPUs
In dieser Zeit wurde eine Methode zur Herstellung vieler miteinander verbundener Transistoren in einem kompakten Raum entwickelt. Das Integrierter Schaltkreis (IC) erlaubte eine große Anzahl von Transistoren auf einer einzigen Herstellung Halbleiter-basierend sterben, oder "Chip". Zunächst nur sehr grundlegende nicht spezialisierte digitale Schaltkreise wie z. Noch Tore wurden in ICs miniaturisiert.[37] CPUs basierend auf diesen "Bausteinen" -ICs werden im Allgemeinen als "kleine Integration" (SSI) -Geräte bezeichnet. SSIICs, wie die in der verwendeten Apollo Guidance Computer, normalerweise bis zu ein paar Dutzend Transistoren. Um eine ganze CPU aus SSIICs herauszubauen, erforderten Tausende einzelner Chips, aber dennoch viel weniger Platz und Strom verbraucht als frühere diskrete Transistor -Designs.[38]
IBM System/370, folgt zum System/360, verwendete SSI-ICs und nicht an die SSI-ICs und nicht an die SSI-ICS und nicht an die Verwendung Solide Logik -Technologie Diskrete Transistormodule.[39][40] Dez PDP-8/I und ki10 PDP-10 Auch von den einzelnen Transistoren umgestellt, die von PDP-8 und PDP-10 auf SSI-ICs verwendet werden,[41] und ihre äußerst beliebten PDP-11 Line wurde ursprünglich mit SSI -ICs gebaut, aber schließlich mit LSI -Komponenten implementiert, sobald diese praktisch wurden.
Große Integrations-CPUs
Lee Boyssel veröffentlichte einflussreiche Artikel, darunter ein "Manifesto" von 1967, in dem beschrieb, wie man das Äquivalent eines 32-Bit-Mainframe-Computers aus einer relativ kleinen Anzahl von Große Integration Schaltungen (LSI).[42][43] Die einzige Möglichkeit, LSI -Chips zu bauen, die Chips mit hundert oder mehr Toren sind, bestand darin, sie mit a zu bauen Metal -Oxid -Jemonductor (Mos) Semiconductor -Herstellungsprozess (entweder PMOS -Logik, NMOS -Logik, oder CMOs Logik). Einige Unternehmen bauten jedoch weiterhin die Prozessoren aus bipolarer Transistor -Transistor -Logik (TTL) Chips, weil Bipolare Junction -Transistoren bis in die 1970er Jahre schneller waren als MOS -Chips (einige Unternehmen wie Datenpunkt Ich baute bis in die frühen 1980er Jahre weiter aus TTL -Chips aus TTL -Chips.[43] In den 1960er Jahren waren MOS -ICS langsamer und als nun nur in Anwendungen als nützlich angesehen, die eine geringe Leistung erforderten.[44][45] Nach der Entwicklung von Silizium-Gate MOS -Technologie von Federico Faggin Bei Fairchild Semiconductor im Jahr 1968 ersetzten MOSICs in den frühen 1970er Jahren die bipolare TTL -TTL weitgehend als Standard -Chip -Technologie.[46]
Als die mikroelektronisch Technologie Fortgeschrittene, immer mehr Transistoren wurden auf ICs gestellt, wodurch die Anzahl der für eine vollständigen CPU benötigten ICS erforderlich war. MSI und LSIICs erhöhten den Transistor auf Hunderte und dann auf Tausende. Bis 1968 wurde die Anzahl der zum Bau einer vollständigen CPU erforderlichen ICs auf 24 ICs von acht verschiedenen Typen reduziert, wobei jedes IC ungefähr 1000 MOSFETs enthielt.[47] Im Gegensatz zu seinen SSI- und MSI-Vorgängern enthielt die erste LSI-Implementierung des PDP-11 eine CPU, die nur vier integrierte LSI-Schaltungen bestand.[48]
Mikroprozessoren
Da Mikroprozessoren zum ersten Mal eingeführt wurden, haben sie fast alle anderen Methoden zur Implementierung zentraler Verarbeitungseinheiten vollständig überholt. Der erste im Handel erhältliche Mikroprozessor, der 1971 hergestellt wurde, war die Intel 4004und der erste weit verbreitete Mikroprozessor, der 1974 hergestellt wurde, war die Intel 8080. Mainframe- und Minicomputer -Hersteller der von der Zeit eingeführten proprietären IC -Entwicklungsprogramme, um ihre älteren zu verbessern Computerarchitekturenund schließlich produziert Befehlssatz Kompatible Mikroprozessoren, die mit ihrer älteren Hardware und Software rückwärtskompatibel waren. Kombiniert mit dem Advent und dem späteren Erfolg der allgegenwärtigen persönlicher Computer, der Begriff Zentralprozessor wird jetzt fast ausschließlich angewendet[a] zu Mikroprozessoren. Mehrere CPUs (bezeichnet Kerne) kann in einem einzigen Verarbeitungschip kombiniert werden.[49]
Frühere Generationen von CPUs wurden als implementiert als Diskrete Komponenten und zahlreiche kleine integrierte Schaltkreise (ICS) auf einem oder mehreren Leiterplatten.[50] Mikroprozessoren hingegen werden CPUs auf einer sehr geringen Anzahl von ICs hergestellt. Normalerweise nur eins.[51] Die insgesamt kleinere CPU -Größe bedeutet aufgrund der Implementierung eines einzelnen Würfels eine schnellere Schaltzeit aufgrund physikalischer Faktoren wie vermindertes Tor Parasitäre Kapazität.[52][53] Dies hat es synchronen Mikroprozessoren ermöglicht, Taktraten von Megahertz bis zu mehreren Gigahertz zu haben. Darüber hinaus hat die Fähigkeit, überaus kleine Transistoren auf einem IC zu konstruieren, die Komplexität und Anzahl der Transistoren in einer einzelnen CPU viele Falten erhöht. Dieser weithin beobachtete Trend wird von beschrieben Moores Gesetz, der sich als ziemlich genauer Prädiktor für das Wachstum der CPU- (und anderen IC) -Komplexität bis 2016 erwiesen hatte.[54][55]
Während sich die Komplexität, Größe, Konstruktion und allgemeine Form von CPUs seit 1950 enorm verändert haben,[56] Das grundlegende Design und die grundlegende Funktion haben sich überhaupt nicht sehr verändert. Fast alle gemeinsamen CPUs können heute sehr genau als von Neumann gespeicherte Produktmaschinen beschrieben werden.[57][b] Da das Gesetz von Moore nicht mehr gilt, sind Bedenken hinsichtlich der Grenzen der Integrated Circuit Transistor -Technologie entstanden. Extreme Miniaturisierung von elektronische Tore verursacht die Auswirkungen von Phänomenen wie Elektromigration und Unterschwelle Leckage viel bedeutender werden.[59][60] Diese neueren Bedenken gehören zu den vielen Faktoren, die Forscher dazu veranlassen, neue Computermethoden wie die zu untersuchen Quantencomputersowie um die Verwendung von zu erweitern Parallelität und andere Methoden, die die Nützlichkeit des klassischen von Neumann -Modells erweitern.
Betrieb
Der grundlegende Betrieb der meisten CPUs, unabhängig von der physikalischen Form, die sie annehmen, besteht darin, eine Abfolge von gespeicherten Ausführungen auszuführen Anweisungen Das nennt man ein Programm. Die Anweisungen, die ausgeführt werden sollen Computerspeicher. Fast alle CPUs folgen den Abfindungen, dekodieren und führen Schritte in ihrem Betrieb aus, die gemeinsam als die bezeichnet werden Anweisungszyklus.
Nach der Ausführung eines Befehls wiederholt sich der gesamte Vorgang, wobei der nächste Befehlszyklus normalerweise den nächsten In-Sequenz-Befehl aufgrund des inkrementierten Werts in der abreißt Programm zähler. Wenn eine Sprunganweisung ausgeführt wurde, wird der Programmzähler geändert, um die Adresse der Anweisung zu enthalten, die zu übersprungen wurde, und die Programmausführung wird normal fortgesetzt. In komplexeren CPUs können mehrere Anweisungen gleichzeitig abgerufen, dekodiert und ausgeführt werden. In diesem Abschnitt wird beschrieben, was allgemein als das bezeichnet wird "Klassische RISC -Pipeline", was unter den einfachen CPUs, die in vielen elektronischen Geräten (oft als Mikrocontroller bezeichnet) verwendet werden, häufig vorkommt. Es ignoriert die wichtige Rolle des CPU -Cache weitgehend und damit die Zugangsstufe der Pipeline.
Einige Anweisungen manipulieren den Programmzähler, anstatt Ergebnisdaten direkt zu erstellen. Solche Anweisungen werden allgemein als "Sprünge" bezeichnet und erleichtern das Programmverhalten wie Schleifen, bedingte Programmausführung (durch die Verwendung eines bedingten Sprung) und der Existenz von Funktionen.[c] In einigen Prozessoren ändern einige andere Anweisungen den Stand der Bits in a "Flags" Register. Diese Flaggen können verwendet werden, um die Verhalten eines Programms zu beeinflussen, da sie häufig das Ergebnis verschiedener Operationen anzeigen. In solchen Prozessoren bewertet bei einem "Vergleichen" -Bericht beispielsweise zwei Werte und legt oder löscht Bits im Flagsregister, um anzuzeigen, welches größer ist oder ob sie gleich sind. Eine dieser Flaggen konnte dann durch einen späteren Sprunganweisungen verwendet werden, um den Programmfluss zu bestimmen.
Bringen
Fetch beinhaltet das Abrufen eines AN Anweisung (die durch eine Zahl oder Folge von Zahlen dargestellt wird) aus dem Programmspeicher. Der Standort (Adresse) der Anweisung im Programmspeicher wird durch die bestimmt Programm zähler (PC; als "Befehlszeiger" bezeichnet in Intel x86 Mikroprozessoren), die eine Zahl speichert, die die Adresse der nächsten Anweisung identifiziert, die abgerufen werden soll. Nachdem eine Anweisung abgerufen wurde, wird der PC durch die Länge der Anweisung erhöht, sodass er die Adresse der nächsten Anweisung in der Sequenz enthält.[d] Oft muss die zu abgerufene Anweisung aus relativ langsamem Speicher abgerufen werden, wodurch die CPU zum Stillstand steht, während die Anweisung zurückgegeben wird. Dieses Problem wird größtenteils in modernen Prozessoren durch Caches und Pipeline -Architekturen behandelt (siehe unten).
Dekodieren
Die Anweisung, die die CPU aus dem Speicher abreißt, bestimmt, was die CPU tun wird. Im Dekodierungsschritt, durchgeführt von von Binärdecoder Schaltkreise bekannt als die AnweisungsdecoderDie Anweisung wird in Signale umgewandelt, die andere Teile der CPU steuern.
Die Art und Weise, wie die Anweisung interpretiert wird, wird durch die Anweisungsset -Architektur der CPU (ISA) definiert.[e] Oft gibt eine Gruppe von Bits (dh ein "Feld") innerhalb der Anweisung, die als Opcode bezeichnet wird, an, welcher Vorgang ausgeführt werden soll, während die verbleibenden Felder normalerweise zusätzliche Informationen enthalten, die für den Vorgang wie die Operanden erforderlich sind. Diese Operanden können als konstanter Wert (als unmittelbarer Wert bezeichnet) oder als Standort eines Werts angegeben werden, der a sein kann Prozessorregister oder eine Speicheradresse, wie von einigen bestimmt Adressierungsmodus.
In einigen CPU -Designs wird der Befehlskodierer als fest verdrahtete, unveränderliche Binärdecoder -Schaltung implementiert. In anderen Mikroprogramm wird verwendet, um Anweisungen in Sätze von CPU -Konfigurationssignalen zu übersetzen, die nacheinander über mehrere Taktimpulse angewendet werden. In einigen Fällen ist das Speicher, das das Mikroprogramm speichert, umschreiben, was es ermöglicht, die Art und Weise zu ändern, in der die CPU -Anweisungen dekodiert.
Ausführen
Nach den Schritten des Fetch- und Dekodierens wird der Ausführungsschritt durchgeführt. Abhängig von der CPU -Architektur kann dies aus einer einzigen Aktion oder einer Folge von Aktionen bestehen. Während jeder Aktion können Sie verschiedene Teile der CPU elektrisch aktivieren oder deaktivieren, damit sie den gesamten oder einen Teil des gewünschten Betriebs ausführen können. Die Aktion wird dann abgeschlossen, typischerweise als Reaktion auf einen Taktpuls. Sehr oft werden die Ergebnisse in ein internes CPU -Register geschrieben, um durch nachfolgende Anweisungen einen schnellen Zugriff zu erhalten. In anderen Fällen können Ergebnisse in langsamer, aber günstiger und höherer Kapazität geschrieben werden Haupterinnerung.
Wenn beispielsweise eine Additionsanweisung ausgeführt werden soll, werden Register mit Operanden (zu summieren) aktiviert, ebenso wie die Teile der Teile der Arithmetik-Logikeinheit (Alu) die zusätzliche Leistung durchführen. Wenn der Taktimpuls auftritt, fließen die Operanden aus den Quellregistern in die ALU, und die Summe erscheint bei ihrer Ausgabe. Bei nachfolgenden Taktimpulsen werden andere Komponenten aktiviert (und deaktiviert), um die Ausgabe (die Summe des Vorgangs) in Speicher (z. B. ein Register oder Speicher) zu verschieben. Wenn die resultierende Summe zu groß ist (d. H. Sie ist größer als die Ausgangswortgröße des ALU), wird ein arithmetisches Überlaufflag eingestellt, was den nächsten Vorgang beeinflusst.
Struktur und Implementierung
Fest verdrahtet in die Schaltung einer CPU ist eine Reihe von grundlegenden Vorgängen, die sie ausführen kann, genannt Befehlssatz. Solche Operationen können beispielsweise zwei Zahlen hinzufügen oder subtrahieren, zwei Zahlen vergleichen oder zu einem anderen Teil eines Programms springen. Jede Anweisung wird durch eine einzigartige Kombination von dargestellt Bits, bekannt als die Maschinensprache Opcode. Während der Verarbeitung einer Anweisung decodiert die CPU den Opcode (über a Binärdecoder) in Kontrollsignale, die das Verhalten der CPU orchestrieren. Eine vollständige Anweisung für Maschinensprachen besteht aus einem Opcode und in vielen Fällen zusätzliche Bits, die Argumente für die Operation angeben (z. B. die Zahlen, die im Fall eines Additionoperos summiert werden). Wenn Sie die Komplexitätsskala erhöhen, ist ein Maschinensprachenprogramm eine Sammlung von Anweisungen für Maschinensprachen, die die CPU ausführt.
Die tatsächliche mathematische Operation für jede Anweisung wird von a durchgeführt Kombinationslogik Schaltung innerhalb des Prozessors der CPU, der als die bekannt ist Arithmetik-Logikeinheit oder alu. Im Allgemeinen führt eine CPU einen Befehl aus, indem er sie aus dem Speicher abholt, ihre ALU verwendet, um eine Operation durchzuführen und dann das Ergebnis auf Speicher zu speichern. Neben den Anweisungen für Mathematik- und Logikoperationen integrierte Anweisungen bestehen verschiedene andere Maschinenanweisungen, z. schwimmende Punkteinheit (FPU).[61]
Steuergerät
Das Steuergerät (Cu) ist eine Komponente der CPU, die den Betrieb des Prozessors leitet. Es gibt den Speicher, die arithmetische und logische Einheit des Computers sowie die Eingabe- und Ausgabegeräte mit, wie sie auf die Anweisungen reagieren, die an den Prozessor gesendet wurden.
Es lenkt den Betrieb der anderen Einheiten durch Bereitstellung von Zeit- und Kontrollsignalen. Die meisten Computerressourcen werden von der Cu verwaltet. Es lenkt den Datenfluss zwischen der CPU und den anderen Geräten. John von Neumann beinhaltete die Steuereinheit als Teil der Von Neumann Architektur. In modernen Computerkonstruktionen ist die Steuereinheit in der Regel ein interner Teil der CPU mit ihrer Gesamtrolle und dem Betrieb, der seit ihrer Einführung unverändert ist.[62]
Arithmetik-Logikeinheit
Die arithmetische Logikeinheit (ALU) ist eine digitale Schaltung innerhalb des Prozessors, der ganzzahlige Arithmetik ausführt und Bitweise Logik Operationen. Die Eingaben für die ALU sind die Datenwörter, auf denen man betrieben werden soll (genannt Operanden), Statusinformationen aus früheren Vorgängen und ein Code aus der Steuereinheit, die angibt, welche Operation durchgeführt werden soll. Abhängig von der Ausführung der Anweisung können die Operanden aus stammen Interne CPU -Register, externes Gedächtnis oder von der Alu selbst erzeugte Konstanten.
Wenn sich alle Eingangssignale durch die Alu -Schaltkreise besiedelt und vermehrt haben, erscheint das Ergebnis der durchgeführten Operation an den Ausgängen des ALU. Das Ergebnis besteht sowohl aus einem Datenwort, das in einem Register oder Speicher gespeichert werden kann, als auch aus Statusinformationen, die normalerweise in einem speziellen internen CPU -Register gespeichert werden, das zu diesem Zweck reserviert ist.
Adressgenerierungseinheit
Adressgenerierungseinheit (Agu), manchmal auch genannt Adressberechnungseinheit (ACU),[63] ist ein Ausführungseinheit In der CPU, die berechnet wird Adressen Wird von der CPU zum Zugriff verwendet Haupterinnerung. Durch Adressberechnungen von separaten Schaltkreisen, die parallel zum Rest der CPU arbeiten, ist die Anzahl der Anzahl CPU -Zyklen erforderlich für die Ausführung verschiedener Maschinenanweisungen kann reduziert werden, was Leistungsverbesserungen mit sich bringen.
Während der Ausführung verschiedener Operationen muss CPUs Speicheradressen berechnen, die zum Abholen von Daten aus dem Speicher erforderlich sind. Zum Beispiel In-Memory-Positionen von Array -Elemente muss berechnet werden, bevor die CPU die Daten von den tatsächlichen Speicherorten abrufen kann. Diese Berechnungen der Adresse der Generation umfassen unterschiedlich Ganzzahl arithmetische Operationen, wie Addition, Subtraktion, Modulo -Operationen, oder Bit verschiebt sich. Die Berechnung einer Speicheradresse umfasst häufig mehr als einen allgemeinen Maschinenanweis, der nicht unbedingt der Fall ist dekodieren und ausführen schnell. Durch die Einbeziehung einer AGU in ein CPU-Design, zusammen mit der Einführung von speziellen Anweisungen, die die AGU verwenden, können verschiedene Berechnungen der Adress-Generation aus dem Rest der CPU abgeladen werden und können häufig in einem einzigen CPU-Zyklus schnell ausgeführt werden.
Fähigkeiten einer Agu hängen von einer bestimmten CPU und ihrer abhängig die Architektur. Somit implementieren und enthüllen einige AGUs mehr Adresskalkulationsvorgänge, während einige auch fortschrittlichere spezielle Anweisungen enthalten Operanden zu einer Zeit. Einige CPU-Architekturen umfassen mehrere Agus, sodass mehr als ein Adresskalkulationsbetrieb gleichzeitig ausgeführt werden kann, was aufgrund der weiteren Leistungsverbesserungen mit weiteren Leistungsverbesserungen verleiht Superscalar Art der fortschrittlichen CPU -Designs. Zum Beispiel, Intel integriert mehrere Agus in seine Sandy Bridge und Haswell Mikroarchitekturen, die die Bandbreite des CPU-Speicher-Subsystems erhöhen, indem mehrere Anweisungen für Speicherzugriff parallel ausgeführt werden können.
Speicherverwaltungseinheit (MMU)
Viele Mikroprozessoren (in Smartphones und Desktop, Laptop, Servercomputern) verfügen über eine Speicherverwaltungseinheit, die logische Adressen in physische RAM -Adressen übersetzen und bereitstellen Gedächtnisschutz und Paging Fähigkeiten, nützlich für virtueller Speicher. Einfachere Prozessoren, besonders MikrocontrollerFügen Sie normalerweise keine MMU ein.
Zwischenspeicher
A CPU -Cache[64] ist ein Hardware -Cache verwendet von der zentralen Verarbeitungseinheit (CPU) von a Computer Um die durchschnittlichen Kosten (Zeit oder Energie) zum Zugang zu senken Daten von dem Haupterinnerung. Ein Cache ist ein kleinerer, schnellerer Speicher, näher an a Prozessorkern, in dem Kopien der Daten von häufig verwendeten Hauptdaten gespeichert sind Speicherorte. Die meisten CPUs haben unterschiedliche unabhängige Caches, einschließlich Anweisung und Daten -Caches, wobei der Datencache normalerweise als Hierarchie mehr Cache -Ebenen organisiert ist (L1, L2, L3, L4 usw.).
Alle modernen (schnellen) CPUs (mit wenigen speziellen Ausnahmen[65]) haben mehrere Ebenen von CPU -Caches. Der erste CPUs, der einen Cache verwendete, hatte nur eine Cache -Ebene; Im Gegensatz zu späteren Caches Level 1 wurde es nicht in L1D (für Daten) und L1I (für Anweisungen) aufgeteilt. Fast alle aktuellen CPUs mit Caches haben einen geteilten L1 -Cache. Sie haben auch L2 -Caches und für größere Prozessoren auch L3 -Caches. Der L2 -Cache wird normalerweise nicht aufgeteilt und wirkt als gemeinsames Repository für den bereits geteilten L1 -Cache. Jeder Kern von a Multi-Core-Prozessor hat einen dedizierten L2 -Cache und wird normalerweise nicht zwischen den Kernen geteilt. Der L3-Cache und höhere Rande werden zwischen den Kernen geteilt und nicht gespalten. Ein L4 -Cache ist derzeit ungewöhnlich und ist im Allgemeinen eingeschaltet Dynamischer Direktzugriffsspeicher (Dram) und nicht auf Statische Zufallszugriffsgedächtnis (SRAM), auf einem separaten Würfel oder Chip. Dies war auch historisch mit L1 der Fall, während größere Chips die Integration und im Allgemeinen alle Cache -Ebenen mit der möglichen Ausnahme des letzten Levels ermöglicht haben. Jeder zusätzliche Cache -Niveau ist tendenziell größer und unterschiedlich optimiert.
Es gibt andere Arten von Caches (die nicht auf die "Cache -Größe" der wichtigsten Caches gezählt werden) wie die Übersetzungs -Lookaside -Puffer (TLB) das ist Teil der Speicherverwaltungseinheit (MMU) Das haben die meisten CPUs.
Caches sind im Allgemeinen in Kräften von zwei: 2, 8, 16 usw. in Kräften dimensioniert. Kib oder MiB (für größere Nicht-L1) Größen, obwohl die IBM Z13 Hat einen 96 Kib L1 -Befehlscache.[66]
Taktfrequenz
Die meisten CPUs sind Synchronschaltungen, was bedeutet, dass sie a beschäftigen Taktsignal um ihre sequentiellen Operationen zu überschreiten. Das Taktsignal wird von einem externen erzeugt Oszillatorschaltung Das erzeugt eine konsistente Anzahl von Impulsen, die jeweils in Form einer periodischen Rechteckschwingung. Die Häufigkeit der Taktimpulse bestimmt die Rate, mit der eine CPU Anweisungen ausführt, und je schneller die Uhr schneller ist, desto mehr Anweisungen wird die CPU jede Sekunde ausgeführt.
Um den ordnungsgemäßen Betrieb der CPU zu gewährleisten, ist die Taktperiode länger als die maximale Zeit, die für alle Signale erforderlich ist, um sich durch die CPU zu verbreiten (sich zu bewegen). Beim Einstellen der Taktzeit auf einen Wert, der weit über dem schlimmsten Fall liegt AusbreitungsverzögerungEs ist möglich, die gesamte CPU und die Art und Weise zu entwerfen, wie sie Daten um die "Kanten" des steigenden und fallenden Taktsignals bewegt. Dies hat den Vorteil, die CPU erheblich zu vereinfachen, sowohl aus Designperspektive als auch aus Perspektive der Komponentenzählung. Es hat jedoch auch den Nachteil, dass die gesamte CPU auf ihre langsamsten Elemente warten muss, obwohl einige Teile davon viel schneller sind. Diese Einschränkung wurde weitgehend mit verschiedenen Methoden zur Erhöhung der CPU -Parallelität (siehe unten) kompensiert.
Architektonische Verbesserungen allein lösen jedoch nicht alle Nachteile von global synchronen CPUs. Beispielsweise unterliegt ein Taktsignal den Verzögerungen eines anderen elektrischen Signals. Höhere Taktraten in zunehmend komplexerem CPUs erschweren es, das Taktsignal in der Phase (synchronisiert) im gesamten Gerät zu halten. Dies hat viele moderne CPUs dazu veranlasst, mehrere identische Taktsignale zu erfordern, um zu vermeiden, dass ein einzelnes Signal erheblich genug ist, um die CPU zu veranlassen, zu Fehlfunktionen zu führen. Ein weiteres wichtiges Problem, wenn die Taktraten dramatisch zunehmen, ist die Wärmemenge, die ist durch die CPU aufgelöst. Die sich ständig ändernde Uhr veranlasst viele Komponenten, unabhängig davon, ob sie zu diesem Zeitpunkt verwendet werden. Im Allgemeinen verbraucht eine Komponente, die wechselt, mehr Energie als ein Element in einem statischen Zustand. Mit zunehmender Taktrate erhöht sich auch der Energieverbrauch, was dazu führt, dass die CPU mehr benötigt Wärmeableitung in Form von CPU -Kühlung Lösungen.
Eine Methode zum Umgang mit dem Umschalten unnötiger Komponenten wird genannt Uhr Gating, bei der das Taktsignal auf nicht benötigte Komponenten ausgeschaltet wird (sie effektiv deaktivieren). Dies wird jedoch häufig als schwer zu implementiert und sieht daher nicht die gemeinsame Verwendung außerhalb von Sehr mit geringer Leistung fest. Ein bemerkenswertes CPU -Design, das umfangreiches Gating -Gating verwendet, ist das IBM Powerpc-basierend Xenon verwendet in der Xbox 360; Auf diese Weise werden die Stromanforderungen der Xbox 360 stark reduziert.[67]
COCKLOS CPUS
Eine andere Methode, um einige der Probleme mit einem globalen Taktsignal anzugehen, ist die Entfernung des Taktsignals insgesamt. Während das Entfernen des globalen Taktsignals den Entwurfsprozess in vielerlei Hinsicht erheblich komplexer macht, haben asynchrone (oder clocklose) Entwürfe deutliche Vorteile des Stromverbrauchs und mit markanten Vorteilen. Wärmeableitung im Vergleich zu ähnlichen synchronen Designs. Während etwas ungewöhnlich, ganz Asynchroner CPUs wurden ohne Verwendung eines globalen Taktsignals gebaut. Zwei bemerkenswerte Beispiele hierfür sind die ARM konform AMULETT und die MIPS R3000 kompatible Minimipen.[68]
Anstatt das Taktsignal vollständig zu entfernen, lassen einige CPU -Konstruktionen bestimmte Teile des Geräts asynchron, z. B. die Verwendung von Asynchronen Alus in Verbindung mit superzalarem Pipelining, um einige arithmetische Leistungsgewinne zu erzielen. Es ist zwar nicht ganz klar, ob völlig asynchrone Designs auf einem vergleichbaren oder besseren Niveau als ihre synchronen Gegenstücke abschneiden können, aber es ist offensichtlich, dass sie in einfacheren Mathematikoperationen zumindest hervorragende Leistungen erbringen. Dies, kombiniert mit ihren hervorragenden Eigenschaften des Stromverbrauchs und ihrer Wärmeableitungen, ist sie sehr geeignet für Embedded Computer.[69]
Spannungsreglermodul
Viele moderne CPUs verfügen über ein Stempel integriertes Leistungsmanagementmodul, das die Spannungsversorgung der CPU-Schaltkreise auf Nachfrage reguliert, sodass es das Gleichgewicht zwischen Leistung und Stromverbrauch behalten kann.
Ganzzahl Range
Jede CPU repräsentiert numerische Werte auf eine bestimmte Weise. Zum Beispiel stellten einige frühe digitale Computer Zahlen als vertraut dar Dezimal (Basis 10) Ziffernungssystem Werte und andere haben ungewöhnlichere Darstellungen wie z. ternär (Basis drei). Fast alle modernen CPUs repräsentieren Zahlen in binär Form, wobei jede Ziffer durch eine zweiwertige physikalische Menge wie eine "hohe" oder "niedrige" dargestellt wird Stromspannung.[f]
Bezogen auf die numerische Darstellung ist die Größe und Präzision von Ganzzahlzahlen, die eine CPU darstellen kann. Im Falle einer binären CPU wird diese an der Anzahl der Bits (signifikante Ziffern einer binären codierten Ganzzahl) gemessen, die die CPU in einer Operation verarbeiten kann, was üblicherweise genannt wird Wortgröße, Bit Breite, Datenpfadbreite, Ganzzahl Präzision, oder Ganzzahlgröße. Die Ganzzahlgröße einer CPU bestimmt den Bereich der Ganzzahlwerte, an denen sie direkt arbeiten kann.[g] Zum Beispiel eine 8 Bit CPU kann direkt von acht Bits mit einer Reichweite von 256 (2) beauftragt werden (28) diskrete Ganzzahlwerte.
Der Ganzzahlbereich kann auch die Anzahl der Speicherorte beeinflussen, die die CPU direkt angehen kann (eine Adresse ist ein Ganzzahlwert, der einen bestimmten Speicherort darstellt). Wenn beispielsweise eine binäre CPU 32 Bit verwendet, um eine Speicheradresse darzustellen, kann sie 2 direkt adressieren32 Speicherorte. Um diese Einschränkung zu umgehen und aus verschiedenen anderen Gründen einige CPUs -Verwendungsmechanismen (wie z. Bankwechsel), die es ermöglichen, zusätzlicher Speicher zu beheben.
CPUs mit größeren Wortgrößen erfordern mehr Schaltkreise und sind folglich physisch größer, kosten mehr und verbrauchen mehr Strom (und erzeugen daher mehr Wärme). Infolgedessen kleinerer 4- oder 8-Bit Mikrocontroller werden üblicherweise in modernen Anwendungen verwendet, obwohl CPUs mit viel größeren Wortgrößen (wie 16, 32, 64, sogar 128-Bit) verfügbar sind. Wenn jedoch eine höhere Leistung erforderlich ist, können die Vorteile einer größeren Wortgröße (größere Datenbereiche und Adressräume) die Nachteile überwiegen. Eine CPU kann interne Datenpfade haben, die kürzer als die Wortgröße sind, um Größe und Kosten zu senken. Zum Beispiel obwohl die IBM System/360 Befehlssatz war ein 32-Bit-Befehlssatz, das System/360 Modell 30 und Modell 40 hatte 8-Bit-Datenpfade in der arithmetischen logischen Einheit, so dass ein 32-Bit Motorola 68000 Serie Der Befehlssatz war ein 32-Bit-Befehlssatz, der Motorola 68000 und Motorola 68010 hatte 16-Bit-Datenpfade in der arithmetischen logischen Einheit, so dass ein 32-Bit-Hinzufügen von zwei Zyklen erforderlich war.
Um einige der Vorteile zu erzielen, die sowohl von niedrigeren als auch von höheren Bitlängen erzielt werden, viele, viele Anweisungssätze Haben Sie unterschiedliche Bitbreiten für Ganzzahl- und Floating-Punkt-Daten, sodass die CPUs für verschiedene Teile des Geräts unterschiedliche Bitbreiten implementieren können. Zum Beispiel das IBM System/360 Der Befehlssatz war in erster Linie 32 Bit, unterstützte aber 64-Bit Schwimmpunkt Werte, um eine größere Genauigkeit und den Bereich in Gleitkommazahlen zu erleichtern.[30] Das System/360-Modell 65 hatte einen 8-Bit-Addierer für Dezimal- und Festpunkt-binäre Arithmetik und einen 60-Bit-Addierer für die Gleitkomma-Arithmetik.[70] Viele spätere CPU-Konstruktionen verwenden eine ähnliche gemischte Bitbreite, insbesondere wenn der Prozessor für die allgemeine Nutzung gedacht ist, bei der ein angemessenes Gleichgewicht der Ganzzahl- und Gleitkomma-Fähigkeiten erforderlich ist.
Parallelität
Die Beschreibung des Grundbetriebs einer im vorherigen Abschnitt angebotenen CPU beschreibt die einfachste Form, die eine CPU annehmen kann. Diese Art von CPU, die normalerweise als als bezeichnet wird Subskalar, arbeitet auf und führt eine Anweisung auf jeweils um jeweils um eine oder zwei Daten aus, dh weniger als eine Anweisung pro Taktzyklus (IPC <1).
Dieser Prozess führt zu einer inhärenten Ineffizienz des Subskalar -CPUs. Da gleich eine Anweisung gleichzeitig ausgeführt wird, muss die gesamte CPU warten, bis diese Anweisung abgeschlossen ist, bevor er mit der nächsten Anweisung fortfahren kann. Infolgedessen wird die Subscalar -CPU an Anweisungen "aufgehängt", die mehr als einen Taktzyklus benötigen, um die Ausführung abzuschließen. Auch eine Sekunde hinzufügen Ausführungseinheit (Siehe unten) verbessert die Leistung nicht viel; Anstatt dass ein Weg aufgehängt wird, werden jetzt zwei Wege aufgehängt und die Anzahl der nicht verwendeten Transistoren erhöht. Dieses Design, in dem die Ausführungsressourcen der CPU jeweils nur auf einer Anweisung arbeiten können Skalar Leistung (eine Anweisung pro Taktzyklus, IPC = 1). Die Leistung ist jedoch fast immer subskalar (weniger als eine Anweisung pro Taktzyklus, IPC <1).
Versuche, Skalare und bessere Leistung zu erreichen, haben zu einer Vielzahl von Entwurfsmethoden geführt, die dazu führen, dass sich die CPU weniger linear und parallel verhalten. Bei Bezug auf die Parallelität in CPUs werden zwei Begriffe im Allgemeinen verwendet, um diese Entwurfstechniken zu klassifizieren:
- Parallelität auf Befehlsebene (ILP), das versucht, die Rate zu erhöhen, mit der Anweisungen innerhalb einer CPU ausgeführt werden (dh die Verwendung von On-Die-Ausführungsressourcen);
- Parallelität auf Aufgabenebene (TLP), was die Anzahl der Anzahl von Zehnten zielt Themen oder Prozesse dass eine CPU gleichzeitig ausführen kann.
Jede Methodik unterscheidet sich sowohl in der Art und Weise, wie sie implementiert werden, als auch in der relativen Wirksamkeit, die sie bei der Erhöhung der Leistung der CPU für eine Anwendung leisten.[h]
Parallelität auf Befehlsebene
Eine der einfachsten Methoden für eine erhöhte Parallelität besteht darin, die ersten Schritte des Anweisungsabrufens und Dekodierens zu beginnen, bevor die Vorbearbeitung ausgeführt wurde. Dies ist eine Technik als bekannt als als Unterrichtspipeliningund wird in fast allen modernen allgemeinen CPUs verwendet. Durch Pipelining kann mehrere Anweisungen gleichzeitig ausgeführt werden, indem der Ausführungsweg in diskrete Stufen unterteilt wird. Diese Trennung kann mit einer Montagelinie verglichen werden, bei der eine Anweisung in jeder Phase vollständiger gemacht wird, bis sie die Ausführungspipeline verlässt und im Ruhestand ist.
Pipelining führt jedoch die Möglichkeit für eine Situation ein, in der das Ergebnis des vorherigen Vorgangs erforderlich ist, um die nächste Operation abzuschließen. Eine Bedingung, die häufig als Datenabhängigkeitskonflikte bezeichnet wird. Daher müssen Pipeline -Prozessoren diese Art von Bedingungen überprüfen und bei Bedarf einen Teil der Pipeline verzögern. Ein Pipelined -Prozessor kann nahezu skalar werden und nur durch Pipeline -Stände gehemmt (ein Befehl, der mehr als einen Taktzyklus in einer Stufe ausgibt).
Verbesserungen der Unterrichtspipelinierung führten zu weiteren Abnahmen in der Leerlaufzeit von CPU -Komponenten. Entwürfe, die als Supercalar bezeichnet werden Ausführungseinheiten, wie zum Beispiel Last -Store -Einheiten, Arithmetik -logische Einheiten, schwimmende Punkteinheiten und Adressgenerierungseinheiten.[71] In einer superzalaren Pipeline werden Anweisungen gelesen und an einen Dispatcher übergeben, der entscheidet, ob die Anweisungen (gleichzeitig) parallel ausgeführt werden können oder nicht). In diesem Fall werden sie in Ausführungseinheiten versandt, was zu ihrer gleichzeitigen Ausführung führt. Im Allgemeinen hängt die Anzahl der Anweisungen, die eine Supercalar -CPU in einem Zyklus abschließen wird, von der Anzahl der Anweisungen ab, die gleichzeitig auf Ausführungseinheiten versandt werden kann.
Der größte Teil der Schwierigkeit bei der Gestaltung einer Superscalar -CPU -Architektur liegt in der Schaffung eines wirksamen Dispatcher. Der Dispatcher muss in der Lage sein, schnell festzustellen, ob Anweisungen parallel ausgeführt werden können, und sie so entsenden, dass so viele Ausführungseinheiten wie möglich beschäftigt sind. Dies erfordert, dass die Unterrichtspipeline so oft wie möglich gefüllt wird und erhebliche Mengen von erforderlich ist CPU -Cache. Es macht auch Gefahr-Verblendentechniken wie Zweigvorhersage, Spekulative Ausführung, Umbenennen registrieren, Ausführende Ausführung und Transaktionsspeicher entscheidend für die Aufrechterhaltung eines hohen Leistungsniveaus. Durch Versuch, vorherzusagen, welcher Zweig (oder Pfad) eine bedingte Anweisung erfolgt, kann die CPU die Anzahl der Male minimieren, in der die gesamte Pipeline warten muss, bis eine bedingte Anweisung abgeschlossen ist. Die spekulative Ausführung liefert häufig eine geringfügige Leistungserhöhung, indem Teile des Code ausgeführt werden, die möglicherweise nach Abschluss eines bedingten Betriebs möglicherweise nicht benötigt werden. Die Ausführung außerhalb der Reihenfolge ordnet die Reihenfolge, in der Anweisungen ausgeführt werden, um Verzögerungen aufgrund von Datenabhängigkeiten zu reduzieren. Auch im Falle von einzelner Befehlsstrom, mehrere Datenströme- Ein Fall, in dem viele Daten aus demselben Typ verarbeitet werden müssen. Moderne Prozessoren können Teile der Pipeline deaktivieren, sodass die CPU die Leistung überspringt, wenn eine einzelne Anweisung mehrfach ausgeführt wird Bei bestimmten Gelegenheiten, insbesondere in hochmonotonen Programmmotoren wie der Videoerstellungssoftware und der Fotoverarbeitung.
Wenn nur ein Bruchteil der CPU superkalar ist, erleidet der Teil, der keine Leistungsstrafe aufgrund von Planungsständen erleidet. Der Intel P5 Pentium Hatte zwei Superscalar -Alus, die jeweils einen Anweisungen pro Taktzyklus akzeptieren konnten, aber seine FPU konnte es nicht. Somit war der p5 ganzzahlige superzalar, aber nicht schwimmend Point supercalar. Intels Nachfolger der P5 -Architektur, P6, superscalar-Fähigkeiten zu seinen schwebenden Punktfunktionen.
Einfaches Pipelining und Superscalar -Design erhöhen die ILP einer CPU, indem sie Anweisungen mit Raten, die einen Anweisungen pro Taktzyklus überschreiten, ausführen können. Die meisten modernen CPU -Designs sind zumindest etwas superzalar, und fast alle allgemeinen CPUs, die im letzten Jahrzehnt entwickelt wurden, sind superzalar. In späteren Jahren wurde ein Teil des Schwerpunkts auf der Gestaltung von High-ILP-Computern aus der Hardware der CPU in die Software-Schnittstelle oder in die Software-Schnittstelle verlegt, oder Anweisungsset Architektur (IST EIN). Die Strategie der Sehr langes Unterrichtswort (VLIW) dazu führt zu, dass einige ILP direkt von der Software impliziert werden, wodurch die Arbeit der CPU zur Steigerung der ILP und damit die Verringerung der Entwurfskomplexität verringert wird.
Parallelität auf Aufgabenebene
Eine weitere Strategie, Leistung zu erzielen, besteht darin, mehrere auszuführen Themen oder Prozesse parallel zu. Dieser Forschungsgebiet ist bekannt als Parallele Computing.[72] Im Flynns TaxonomieDiese Strategie ist als bekannt als als Mehrfacher Anweisungsstrom, mehrere Datenströme (MIMD).[73]
Eine für diesen Zweck verwendete Technologie war Multiprozessierung (MP).[74] Der anfängliche Geschmack dieser Technologie ist als bekannt als Symmetrische Multiprozessierung (SMP), wobei eine kleine Anzahl von CPUs eine kohärente Sicht auf ihr Speichersystem teilen. In diesem Schema verfügt jede CPU über zusätzliche Hardware, um eine ständig aktuelle Ansicht des Speichers zu erhalten. Durch das Vermeiden von veralteten Ansichten des Speichers kann der CPUs im selben Programm zusammenarbeiten, und Programme können von einer CPU zur anderen migrieren. Erhöhen Sie die Anzahl der kooperierenden CPUs über eine Handvoll hinaus, Schemata wie ungleichmäßiger Speicherzugriff (Numa) und Verzeichnisbasierte Kohärenzprotokolle wurden in den 1990er Jahren eingeführt. SMP -Systeme sind auf eine kleine Anzahl von CPUs beschränkt, während NUMA -Systeme mit Tausenden von Prozessoren gebaut wurden. Zunächst wurde eine Multiprozessierung unter Verwendung mehrerer diskreter CPUs und Boards erstellt, um die Zusammenhänge zwischen den Prozessoren zu implementieren. Wenn die Prozessoren und deren Zusammenschluss auf einem einzigen Chip implementiert sind, wird die Technologie als Multiprozessing (CMP) auf Chip-Ebene und als Einzelchip als A bezeichnet Multi-Core-Prozessor.
Es wurde später erkannt, dass eine feinere Kornparallelität mit einem einzigen Programm existierte. Ein einzelnes Programm kann mehrere Threads (oder Funktionen) haben, die separat oder parallel ausgeführt werden können. Einige der frühesten Beispiele dieser Technologie implementierten Input-Output Verarbeitung wie direkter Speicherzugriff Als separater Thread vom Berechnungs -Thread. Ein allgemeinerer Ansatz für diese Technologie wurde in den 1970er Jahren eingeführt, als Systeme so konzipiert wurden, dass sie mehrere Berechnungs -Threads parallel ausführen. Diese Technologie ist bekannt als als Multi-Threading (MT). Dieser Ansatz gilt als kostengünstiger als die Multiprozessierung, da nur eine kleine Anzahl von Komponenten innerhalb einer CPU repliziert wird, um MT im Gegensatz zur gesamten CPU im Fall von MP zu unterstützen. In MT werden die Ausführungseinheiten und das Speichersystem einschließlich der Caches unter mehreren Threads geteilt. Der Nachteil von MT ist, dass die Hardware -Unterstützung für Multithreading für die Software sichtbarer ist als die von MP, und daher müssen die Supervisor -Software wie Betriebssysteme größere Änderungen unterziehen, um MT zu unterstützen. Eine Art von MT, die implementiert wurde Temporales Multithreading, wobei ein Thread ausgeführt wird, bis er ins Stocken gerät, ob die Daten aus dem externen Speicher zurückkehren. In diesem Schema würde die CPU dann schnell zu einem anderen Thread umstellen, der bereit ist, der Schalter häufig in einem CPU -Taktzyklus wie der zu verzeichnen ist, wie der Ultrassparc T1. Eine andere Art von MT ist Simultanes Multithreading, wobei Anweisungen aus mehreren Threads parallel innerhalb eines CPU -Taktzyklus ausgeführt werden.
Seit mehreren Jahrzehnten von den 1970er bis Anfang der 2000er Jahre lag der Schwerpunkt auf der Gestaltung von CPUs mit hohem Leistungsgebiet weitgehend auf der Erreichung eines hohen ILP durch Technologien wie Pipelining, Caches, Supercalar-Ausführung, Ausführung außerhalb der Ordnung usw. , krafthungrige CPUs wie der Intel Pentium 4. In den frühen 2000er Jahren wurden die CPU -Designer aufgrund der wachsenden Unterschiede zwischen den Betriebsfrequenzen der CPU und der Betriebsfrequenzen des Hauptgedächtnisses sowie der eskalierenden CPU -Leistungsabteilung aufgrund der wachsenden Unterschiede zwischen CPU -Betriebsfrequenzen und der Abteilung der CPU -Stromversorgung aufgrund der wachsenden CPU -Leistungsabteilung durch mehr esoterischere ILP -Techniken vereitelt.
CPU -Designer liehen sich dann Ideen von kommerziellen Computing -Märkten aus, wie z. Transaktionsverarbeitung, wo die aggregierte Leistung mehrerer Programme, auch bekannt als bekannt als Durchsatz Das Computing war wichtiger als die Leistung eines einzelnen Threads oder eines einzelnen Prozesses.
Diese Umkehrung des Schwerpunkts zeigt P6 die Architektur. Späte Designs in mehreren Prozessorfamilien zeigen CMP, einschließlich der x86-64 Opteron und Athlon 64 x2, das Sparc Ultrassparc T1, IBM Power4 und Power5sowie mehrere Videospielkonsole CPUs wie das Xbox 360's Triple-Core Powerpc-Design und die Playstation 37 Kern Zellmikroprozessor.
Datenparallelität
Ein weniger häufiges, aber immer wichtigeres Paradigma von Prozessoren (und in der Tat, in der Tat, im Allgemeinen) befasst sich mit Datenparallelität. Die zuvor diskutierten Prozessoren werden alle als eine Art Skalargerät bezeichnet.[ich] Wie der Name schon sagt, befassen sich Vektorprozessoren im Zusammenhang mit einer Anweisung mit mehreren Daten. Dies steht im Gegensatz zu Skalarprozessoren, die sich für jede Anweisung mit einem Datenanteil befassen. Verwendung Flynns TaxonomieDiese beiden Programme des Umgangs mit Daten werden im Allgemeinen als als bezeichnet als Einzelanweisung Strom, Mehrere Daten Stream (Simd) und Einzelanweisung Strom, Einzeldaten Stream (Sisd), beziehungsweise. Der große Nutzen bei der Erstellung von Prozessoren, die mit Datenvektoren zu tun haben Skalarprodukt) an einem großen Datensatz ausgeführt werden. Einige klassische Beispiele für diese Arten von Aufgaben umfassen Multimedia Anwendungen (Bilder, Video und Ton) sowie viele Arten von wissenschaftlich und technische Aufgaben. Während ein Skalarprozessor den gesamten Prozess des Abrufens, Dekodierens und Ausführens jeder Anweisung und des Wertes in einer Datenmenge abschließen muss, kann ein Vektorprozessor einen einzelnen Betrieb mit einem vergleichsweise großen Datensatz mit einer Anweisung ausführen. Dies ist nur möglich, wenn die Anwendung dazu neigt, viele Schritte zu verlangen, die einen Vorgang auf einen großen Datensatz anwenden.
Die meisten frühen Vektorprozessoren wie die Cray-1wurden fast ausschließlich mit wissenschaftlicher Forschung assoziiert und Kryptographie Anwendungen. Da sich Multimedia jedoch weitgehend in digitale Medien verlagert hat, ist die Notwendigkeit einer Art SIMD in allgemeinen Verfahren erheblich geworden. Kurz nach der Aufnahme von schwimmende Punkteinheiten In allgemeinen Verarbeitern wurde allgemein angesehen, Spezifikationen für und Implementierungen von SIMD-Ausführungseinheiten erschienen auch für allgemeine Prozessoren.[wenn?] Einige dieser frühen SIMD -Spezifikationen - wie HPs Multimedia -Beschleunigungserweiterungen (Max) und Intel MMX -waren nur ganzzahlig. Dies erwies sich für einige Softwareentwickler als erhebliches Hindernis, da viele Anwendungen, die von SIMD profitieren Schwimmpunkt Zahlen. Fortschritte haben diese frühen Entwürfe zunehmend in einigen der gemeinsamen modernen SIMD -Spezifikationen verfeinert und neu gestaltet Anweisungsset Architektur (IST EIN). Einige bemerkenswerte moderne Beispiele sind Intel's Streaming -SIMD -Erweiterungen (SSE) und das PowerPC-bezogen Altivec (auch als VMX bekannt).[j]
Hardware -Performance -Zähler
Viele moderne Architekturen (einschließlich eingebetteter) umfassen häufig Hardware -Performance -Zähler (HPC), die eine Sammlung von niedrigem Level (Anleitungsebene) ermöglicht, Benchmarking, Debugging oder Analyse von Software -Metriken.[75][76] HPC kann auch verwendet werden, um ungewöhnliche oder verdächtige Aktivitäten der Software zu entdecken und zu analysieren, wie z. Return-orientierte Programmierung (ROP) oder Sigreturn-orientiertes Programmieren (SROP) Exploits etc.[77] Dies geschieht normalerweise von Software-Security-Teams, um böswillige Binärprogramme zu bewerten und zu finden.
Viele wichtige Anbieter (wie IBM, Intel, AMD, ARM usw.) bieten Software -Schnittstellen (normalerweise in C/C ++ geschrieben), mit denen Daten von CPUs gesammelt werden können Register Um Metriken zu erhalten.[78] Betriebssystemanbieter bieten auch Software wie Perf
(Linux) aufzeichnen, Benchmark, oder verfolgen CPU -Ereignisse, die Kernel und Anwendungen ausführen.
Virtuelle CPUs
Cloud Computing kann das Unterteil der CPU -Operation in den Unterteil der Unterteilung Virtuelle zentrale Verarbeitungseinheiten[79] (VCPUs[80]).
Ein Host ist das virtuelle Äquivalent einer physischen Maschine, auf der ein virtuelles System arbeitet.[81] Wenn mehrere physische Maschinen im Tandem arbeiten und insgesamt verwaltet werden, bilden die gruppierten Computer- und Speicherressourcen a Cluster. In einigen Systemen ist es möglich, einen Cluster dynamisch hinzuzufügen und zu entfernen. Ressourcen, die auf Host- und Clusterebene verfügbar sind Ressourcenpools mit fein Die Granularität.
Leistung
Das Leistung oder Geschwindigkeit eines Prozessor Hertz) und die Anweisungen pro Uhr (IPC), die zusammen die Faktoren für die sind Anweisungen pro Sekunde (IPS) Das kann die CPU ausführen.[82] Viele gemeldete IPS -Werte haben "Peak" -Ausführungsraten für künstliche Anweisungssequenzen mit wenigen Zweigen dargestellt, während realistische Workloads aus einer Mischung aus Anweisungen und Anwendungen bestehen, von denen einige länger dauern als andere. Die Leistung der Speicherhierarchie Auch beeinflusst die Prozessorleistung erheblich, ein Problem, das kaum in MIPS -Berechnungen berücksichtigt wird. Aufgrund dieser Probleme, verschiedene standardisierte Tests, oft genannt "Benchmarks" zu diesem Zweck - Such als Specint - Have wurde entwickelt, um zu versuchen, die wirkliche effektive Leistung in häufig verwendeten Anwendungen zu messen.
Die Verarbeitungsleistung von Computern wird durch Verwendung erhöht Multi-Core-Prozessoren, was im Wesentlichen zwei oder mehr einzelne Prozessoren anschließt (genannt Kerne in diesem Sinne) in einen integrierten Schaltkreis.[83] Im Idealfall wäre ein Dual -Core -Prozessor fast doppelt so stark wie ein einzelner Kernprozessor. In der Praxis ist der Leistungsgewinn aufgrund unvollständiger Softwarealgorithmen und der Implementierung weit kleiner, nur etwa 50%.[84] Erhöhung der Anzahl der Kerne in einem Prozessor (d. H. Dual-Core, Quad-Core usw.) erhöht die Arbeitsbelastung, die behandelt werden kann. Dies bedeutet, dass der Prozessor nun zahlreiche asynchrone Ereignisse, Interrupts usw. bewältigen kann, die bei überwältigter CPU einen Tribut an der CPU fordern können. Diese Kerne können in einer Verarbeitungsanlage als unterschiedliche Böden betrachtet werden, wobei jeder Boden eine andere Aufgabe behandelt. Manchmal erledigen diese Kerne die gleichen Aufgaben wie Kerne neben ihnen, wenn ein einzelner Kern nicht ausreicht, um die Informationen zu verarbeiten.
Aufgrund spezifischer Fähigkeiten moderner CPUs wie z. Simultanes Multithreading und ungeschickt, bei dem die tatsächlichen CPU -Ressourcen die Nutzung, die Überwachung der Leistungsstufen und die Hardwareverwendung nach und nach zu einer komplexeren Aufgabe wurden.[85] Als Antwort implementieren einige CPUs eine zusätzliche Hardwarelogik, die die tatsächliche Verwendung verschiedener Teile einer CPU überwacht und verschiedene Zähler zur Verfügung stellt, die für Software zugänglich sind. Ein Beispiel ist Intel's Leistungszählermonitor Technologie.[2]
Siehe auch
Anmerkungen
- ^ Integrierte Schaltungen werden jetzt verwendet, um alle CPUs zu implementieren, mit Ausnahme einiger Maschinen, die großen elektromagnetischen Impulsen standhalten sollen, beispielsweise aus einer Atomwaffe.
- ^ Das sogenannte "von Neumann" -Memo erklärte die Idee von gespeicherten Programmen,[58] was zum Beispiel aufbewahrt werden kann geschlagene Karten, Papierband oder Magnetband.
- ^ Einige frühe Computer, wie die Harvard Mark I I, unterstützten keine "Sprunganweisung", was die Komplexität der Programme, die sie ausführen konnten, effektiv einschränkte. Aus diesem Grund wird diese Computer trotz ihrer engen Ähnlichkeit mit gespeicherten Programmen häufig nicht als ordnungsgemäße CPU angesehen.
- ^ Da zählt der Programmzähler Speicheradressen und nicht AnweisungenEs wird durch die Anzahl der Speichereinheiten, die das Anweisungswort enthält, erhöht. Bei einfachem Befehlswort mit fester Länge ist dies immer dieselbe Zahl. Beispielsweise würde ein 32-Bit-Befehlswort mit fester Länge ISA, das 8-Bit-Speicherwörter verwendet, den PC immer um vier erhöht (außer im Fall von Sprüngen). ISAs, die Anweisungen mit variabler Länge verwenden, erhöhen den PC um die Anzahl der Speicherwörter, die der Länge des letzten Befehls entsprechen.
- ^ Da die Anweisungsarchitektur einer CPU für ihre Schnittstelle und Verwendung von grundlegender Bedeutung ist, wird sie häufig als Klassifizierung des "Typs" der CPU verwendet. Beispielsweise verwendet eine "PowerPC -CPU" eine Variante des PowerPC ISA. Ein System kann einen anderen ISA durch Ausführen eines Emulators ausführen.
- ^ Das physikalische Konzept von Stromspannung ist von Natur aus ein Analog, der praktisch einen unendlichen Bereich möglicher Werte hat. Zum Zweck der physikalischen Darstellung von Binärzahlen werden zwei spezifische Spannungsbereiche definiert, eine für Logik '0' und eine für Logik '1'. Diese Bereiche werden durch Konstruktionsüberlegungen wie Rauschmargen und Eigenschaften der Geräte zur Erstellung der CPU diktiert.
- ^ Während die Ganzzahlgröße einer CPU eine Grenze für Ganzzahlbereiche festlegt, kann dies (und wird häufig) mit einer Kombination aus Software- und Hardware -Techniken überwunden. Durch die Verwendung zusätzlicher Speicher kann Software viele Größen repräsentieren, die größer als die CPU können. Manchmal der CPUs Befehlssatz Erleichtert sogar Operationen von Ganzzahlen, die größer sind, als sie nativ darstellen können, indem sie Anweisungen zur relativ schnellen Arithmetik der großen ganzzahligen Arithmetik bereitstellen. Diese Methode des Umgangs mit großen Ganzzahlen ist langsamer als die Verwendung einer CPU mit höherer Ganzzahlgröße, aber ein angemessener Kompromiss in Fällen, in denen nativ die benötigte vollständige Ganzzahl-Reichweite kostspielig ist, wäre kostenintensiv. Sehen Willkürliche Präzisionsarithmetik Weitere Informationen zu rein software unterstützten zahlreichen Ganzzahlen.
- ^ Weder ILP Noch Tlp ist von Natur aus überlegen gegenüber dem anderen; Sie sind einfach unterschiedliche Mittel, um die CPU -Parallelität zu erhöhen. Als solche haben beide Vor- und Nachteile, die häufig durch die Art der Software bestimmt werden, die der Prozessor ausführen soll. High-TLP-CPUs werden häufig in Anwendungen verwendet, die sich gut in zahlreiche kleinere Anwendungen aufgeteilt haben, sogenannte. "peinlich parallel Probleme ". Häufig ein Computerproblem, das mit hohen TLP -Designstrategien wie schnell gelöst werden kann Symmetrische Multiprozessierung Nötigt bei hohen ILP -Geräten wie Supercalar -CPUs deutlich mehr Zeit und umgekehrt.
- ^ Früher der Begriff Skalar wurde verwendet, um die IPC -Anzahl von verschiedenen ILP -Methoden zu vergleichen. Hier wird der Begriff im streng mathematischen Sinne verwendet, um sich mit Vektoren zu vergleichen. Sehen Skalar (Mathematik) und Vektor (geometrisch).
- ^ Obwohl SSE/SSE2/SSE3 MMX später in Intels allgemeinen Prozessoren ersetzt hat IA-32 Entwürfe unterstützen immer noch MMX. Dies geschieht normalerweise, indem der größte Teil der MMX -Funktionalität dieselbe Hardware bereitstellt, die die viel expansiveren SSE -Anweisungssätze unterstützt.
Verweise
- ^ Kuck, David (1978). Computer und Berechnungen, Vol 1. John Wiley & Sons, Inc. p. 12. ISBN 978-0471027164.
- ^ a b Thomas Willhalm; Roman Demenz; Patrick Fay (18. Dezember 2014). "Intel Performance Counter Monitor - Eine bessere Möglichkeit, die CPU -Nutzung zu messen". Software.intel.com. Abgerufen 17. Februar, 2015.
- ^ Liebowitz, Kusek, Spion, Matt, Christopher, Rynardt (2014). VMware vSphere Performance: Entwerfen von CPU, Speicher, Speicher und Netzwerk für leistungsintensive Workloads. Wiley. p. 68. ISBN 978-1-118-00819-5.
{{}}
: Cs1 montiert: Mehrfachnamen: Autorenliste (Link) - ^ Regan, Gerard (2008). Eine kurze Geschichte des Computers. p. 66. ISBN 978-1848000834. Abgerufen 26. November 2014.
- ^ Weik, Martin H. (1955). "Eine Übersicht über inländische elektronische digitale Computersysteme". Ballistisches Forschungslabor.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ a b Weik, Martin H. (1961). "Eine dritte Übersicht über inländische elektronische digitale Computersysteme". Ballistisches Forschungslabor.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ "Stück für Stück". Haverford College. Archiviert von das Original am 13. Oktober 2012. Abgerufen Der 1. August, 2015.
- ^ "Erster Entwurf eines Berichts über den EDVAC" (PDF). Moore School of Electrical Engineering, Universität von Pennsylvania. 1945.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ Universität in Stanford. "Die moderne Geschichte des Computers". Die Stanford -Enzyklopädie der Philosophie. Abgerufen 25. September, 2015.
- ^ "Eniac's Geburtstag". Die MIT -Presse. 9. Februar 2016. archiviert von das Original am 17. Oktober 2018. Abgerufen 17. Oktober, 2018.
- ^ Enticknap, Nicholas (Sommer 1998), "Das goldene Jubiläum des Computers", Auferstehung, Die Computer Conservation Society (20), ISSN 0958-7403, abgerufen 26. Juni 2019
- ^ "The Manchester Mark 1". Die Universität von Manchester. Abgerufen 25. September, 2015.
- ^ "Die erste Generation". Computergeschichte Museum. Abgerufen 29. September, 2015.
- ^ "Die Geschichte der integrierten Schaltung". Nobelprize.org. Abgerufen 17. Juli, 2022.
- ^ Turley, Jim (11. August 2003). "Motoring mit Mikroprozessoren". Eingebettet. Abgerufen 15. November, 2015.
- ^ "Mobile Prozessorhandbuch - Sommer 2013". Android Autorität. 2013-06-25. Abgerufen 15. November, 2015.
- ^ "Abschnitt 250: Mikroprozessoren und Spielzeug: Eine Einführung in Computersysteme". Die Universität von Michigan. Archiviert von das Original am 13. April 2021. Abgerufen 9. Oktober, 2018.
- ^ "ARM946 -Prozessor". ARM. Archiviert von das Original am 17. November 2015.
- ^ "Konrad Zuse". Computergeschichte Museum. Abgerufen 29. September, 2015.
- ^ "Zeitleiste des Computerverlaufs: Computer". Computergeschichte Museum. Abgerufen 21. November, 2015.
- ^ Weiß, Stephen. "Eine kurze Geschichte des Computers - Computer der ersten Generation". Abgerufen 21. November, 2015.
- ^ "Harvard University Mark - Papierbandstempeleinheit". Computergeschichte Museum. Abgerufen 21. November, 2015.
- ^ "Was ist der Unterschied zwischen einer von Neumann -Architektur und einer Harvard -Architektur?". ARM. Abgerufen November 22, 2015.
- ^ "Advanced Architecture optimiert die Atmel AVR CPU". Atmel. Archiviert von das Original am 14. November 2015. Abgerufen November 22, 2015.
- ^ "Schalter, Transistoren und Relais". BBC. Archiviert von das Original am 5. Dezember 2016.
- ^ "Einführung des Vakuumtransistors: Ein Gerät aus nichts". IEEE -Spektrum. 2014-06-23. Abgerufen 27. Januar 2019.
- ^ Was ist Computerleistung?. Die National Academies Press. 2011. doi:10.17226/12980. ISBN 978-0-309-15951-7. Abgerufen 16. Mai, 2016.
- ^ "1953: Transistorisierte Computer tauchen auftauchen“. Computergeschichte Museum. Abgerufen 3. Juni, 2016.
- ^ "IBM System/360 Daten und Eigenschaften". IBM. 2003-01-23.
- ^ a b Amdahl, G. M.; Blaauw, G. A.; Brooks, F. P. Jr. (April 1964). "Architektur des IBM -Systems/360". IBM Journal of Research and Development. IBM. 8 (2): 87–101. doi:10.1147/rd.82.0087. ISSN 0018-8646.
- ^ Brodkin, John (7. April 2014). "Vor 50 Jahren hat IBM Mainframe geschaffen, das den Männern zum Mond schickte.". ARS Technica. Abgerufen 9. April 2016.
- ^ Clarke, Gavin. "Warum stirbst du nicht? IBMs S/360 und sein Erbe bei 50". Das Register. Abgerufen 9. April 2016.
- ^ "Online-PDP-8-Startseite, leiten Sie einen PDP-8". PDP8. Abgerufen 25. September, 2015.
- ^ "Transistoren, Relais und Steuerung von Hochstromlasten". New Yorker Universität. ITP Physical Computing. Abgerufen 9. April 2016.
- ^ Lilly, Paul (2009-04-14). "Eine kurze Geschichte von CPUs: 31 großartige Jahre von x86". PC Gamer. Abgerufen 15. Juni, 2016.
- ^ a b Patterson, David A.; Hennessy, John L.; Larus, James R. (1999). Computerorganisation und Design: Die Hardware-/Software -Oberfläche (2. ed., 3. print. Ed.). San Francisco: Kaufmann. p.751. ISBN 978-1558604285.
- ^ "1962: Luft- und Raumfahrtsysteme sind zunächst die Anwendungen für ICs in Computern". Computergeschichte Museum. Abgerufen 9. Oktober, 2018.
- ^ "Die integrierten Schaltungen im Apollo -bemannten Mondlandungsprogramm". Nationale Luftfahrt- und Weltraumverwaltung. Abgerufen 9. Oktober, 2018.
- ^ "System/370 Ankündigung". IBM Archive. 2003-01-23. Abgerufen 25. Oktober, 2017.
- ^ "System/370 Modell 155 (Fortsetzung)". IBM Archive. 2003-01-23. Abgerufen 25. Oktober, 2017.
- ^ "Modelle und Optionen". Die Digital Equipment Corporation PDP-8. Abgerufen 15. Juni, 2018.
- ^ Ross Knox Bassett (2007). Zum digitalen Zeitalter: Forschungslabors, Start-up-Unternehmen und der Aufstieg der MOS-Technologie. Die Johns Hopkins University Press. S. 127–128, 256 und 314. ISBN 978-0-8018-6809-2.
- ^ a b Ken Shirriff."Die Texas Instruments TMX 1795: Der erste, vergessene Mikroprozessor".
- ^ "Geschwindigkeit & Kraft in Logikfamilien"..
- ^ T. J. Stonham."Digitale Logiktechniken: Prinzipien und Praxis". 1996. p. 174.
- ^ "1968: Silicon Gate -Technologie für ICs entwickelt". Computergeschichte Museum.
- ^ R. K. Booher."Mos GP Computer". AFIPS, S. 877, 1968 Verfahren der Herbst -Joint Computer Conference, 1968doi:10.1109/afips.1968.126
- ^ "LSI-11-Modulbeschreibungen" (PDF). LSI-11, PDP-11/03 Benutzerhandbuch (2. Aufl.). Maynard, Massachusetts: Digital Equipment Corporation. November 1975. S. 4–3.
- ^ Bigelow, Stephen J. (März 2022). "Was ist ein Multicore -Prozessor und wie funktioniert es?". TechTarget. Abgerufen 17. Juli, 2022.
- ^ Richard Birkby. "Eine kurze Geschichte des Mikroprozessors". computerermuseum.li. Archiviert von das Original am 23. September 2015. Abgerufen 13. Oktober, 2015.
- ^ Osborne, Adam (1980). Eine Einführung in Mikrocomputer. Vol. 1: Grundlegende Konzepte (2. Aufl.). Berkeley, Kalifornien: Osborne-McGraw Hill. ISBN 978-0-931988-34-9.
- ^ Zhislina, Victoria (2014-02-19). "Warum hat die CPU -Frequenz nicht mehr gewachsen?". Intel. Abgerufen 14. Oktober, 2015.
- ^ "MOS -Transistor - Elektrotechnik & Informatik" (PDF). Universität von Kalifornien. Abgerufen 14. Oktober, 2015.
- ^ Simonite, Tom. "Das Gesetz von Moore ist tot. Was nun?". MIT Technology Review. Abgerufen 2018-08-24.
- ^ "Auszüge aus einem Gespräch mit Gordon Moore: Moore's Law" (PDF). Intel. 2005. archiviert von das Original (PDF) Am 2012-10-29. Abgerufen 2012-07-25.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ "Eine detaillierte Geschichte des Prozessors". Tech Junkie. 15. Dezember 2016.
- ^ Eigenmann, Rudolf; Lilja, David (1998). "Von Neumann Computern". Wiley Encyclopedia of Electrical and Electronics Engineering. doi:10.1002/047134608X.W1704. ISBN 047134608X. S2CID 8197337.
- ^ Aspray, William (September 1990). "Das gespeicherte Programmkonzept". IEEE -Spektrum. Vol. 27, nein. 9. p. 51. doi:10.1109/6.58457.
- ^ Saraswat, Krishna. "Trends in der Technologie der integrierten Schaltkreise" (PDF). Abgerufen 15. Juni, 2018.
- ^ "Elektromigration". Middle East Technical University. Abgerufen 15. Juni, 2018.
- ^ Ian Wienand (3. September 2013). "Informatik von unten nach oben, Kapitel 3. Computerarchitektur" (PDF). BottomUpcs.com. Abgerufen 7. Januar, 2015.
- ^ "Einführung der Kontrolleinheit und dessen Design". Geeksforgeeks. 2018-09-24. Abgerufen 2021-01-12.
- ^ Cornelis van Berkel; Patrick Meuwissen (12. Januar 2006). "Adressgenerierungseinheit für einen Prozessor (US 2006010255 A1 Patentanwendung)". Google.com. Abgerufen 8. Dezember, 2014.[Überprüfung erforderlich]
- ^ Gabriel Torres (12. September 2007). "Wie der Cache -Speicher funktioniert".[Überprüfung erforderlich]
- ^ Einige spezialisierte CPUs, Beschleuniger oder Mikrocontroller haben keinen Cache. Um schnell zu sein, falls erforderlich/gewünscht, haben sie immer noch einen On-Chip-Scratchpad-Speicher, der eine ähnliche Funktion hat, während die Software verwaltet wird. In z.B. Mikrocontroller Es kann besser für den harten Gebrauch in Echtzeit sein, diesen oder zumindest keinen Cache zu haben, wie bei einer Latenzen von Speicherlasten vorhersehbar.[Überprüfung erforderlich]
- ^ "IBM Z13 und IBM Z13S Technische Einführung" (PDF). IBM. März 2016. p. 20.[Überprüfung erforderlich]
- ^ Brown, Jeffery (2005). "Anwendungsgeschäfte CPU-Design". IBM Developerworks. Archiviert von das Original am 2006-02-12. Abgerufen 2005-12-17.
- ^ Martin, A.J.; Nystrom, M.; Wong, C.G. (November 2003). "Drei Generationen asynchroner Mikroprozessoren". IEEE -Design & Test von Computern. 20 (6): 9–17. doi:10.1109/mdt.2003.1246159. ISSN 0740-7475. S2CID 15164301.
- ^ Garside, J. D.; Furber, S. B.; Chung, S-H (1999). "Amulet3 enthüllt". Universität von Manchester Informatikabteilung. Archiviert von das Original Am 10. Dezember 2005.
{{}}
: Journal zitieren erfordert|journal=
(Hilfe) - ^ IBM System/360 Modell 65 Funktionseigenschaften (PDF). IBM. September 1968. S. 8–9. A22-6884-3.
- ^ Huynh, Jack (2003). "Der AMD Athlon XP -Prozessor mit 512KB L2 -Cache" (PDF). Universität von Illinois, Urbana-Champaign. S. 6–11. Archiviert von das Original (PDF) Am 2007-11-28. Abgerufen 2007-10-06.
- ^ Gottlieb, Allan; Almasi, George S. (1989). Hoch parallele Computer. Redwood City, Kalifornien: Benjamin/Cummings. ISBN 978-0-8053-0177-9.
- ^ Flynn, M. J. (September 1972). "Einige Computerorganisationen und ihre Effektivität". IEEE trans. Computer. C-21 (9): 948–960. doi:10.1109/tc.1972.5009071. S2CID 18573685.
- ^ Lu, N.-P.; Chung, C.-P. (1998). "Parallelität Ausbeutung in der superskalarischen Multiprozessing". IEE -Verfahren - Computer und digitale Techniken. Einrichtung der Elektroingenieure. 145 (4): 255. doi:10.1049/IP-CDT: 19981955.
- ^ Uhsadel, Leif; Georges, Andy; Verbauwhede, Ingrid (August 2008). Hardware -Performance -Zähler ausnutzen. 2008 5. Workshop zur Fehlerdiagnose und Toleranz in der Kryptographie. S. 59–67. doi:10.1109/fdtc.2008.19. ISBN 978-0-7695-3314-8. S2CID 1897883.
- ^ Rohou, Erven (September 2012). Zehenspitzen: Hardware -Performance -Zähler für die Massen. 2012 41. Internationale Konferenz über Parallelverarbeitungsworkshops. S. 404–413. doi:10.1109/ICPPW.2012.58. ISBN 978-1-4673-2509-7. S2CID 16160098.
- ^ Herath, Nishad; Fogh, Anders (2015). "CPU -Hardware -Performance -Zähler für Sicherheit" (PDF). USA: Schwarzer Hut. Archiviert (PDF) vom Original am 2015-09-05.
- ^ Derose, Luiz A. (2001), Sakellariou, Rizos; Gurd, John; Freeman, Len; Keane, John (Hrsg.), "Das Hardware -Leistungsmonitor -Toolkit", Parallelverarbeitung Euro-Par 2001, Vorlesungen in Informatik, Berlin, Heidelberg: Springer Berlin Heidelberg, Vol. 2150, S. 122–132, doi:10.1007/3-540-44681-8_19, ISBN 978-3-540-42495-6, abgerufen 2021-12-30
- ^ Anjum, Bushra; Perros, Harry G. (2015). "1: Partitionierung des End-to-End-QoS-Budgets zu Domains". Bandbreitenzuweisung für Videos unter Qualität der Servicebeschränkungen. Fokusserie. John Wiley & Sons. p. 3. ISBN 9781848217461. Abgerufen 2016-09-21.
[...] In Cloud Computing, bei dem mehrere Softwarekomponenten in einer virtuellen Umgebung auf derselben Klinge ausgeführt werden, einer Komponente pro virtueller Maschine (VM). Jedem VM wird eine virtuelle zentrale Verarbeitungseinheit [...] zugewiesen, die ein Bruchteil der CPU der Klinge ist.
- ^ Fifield, Tom; Fleming, Diane; Sanft, Anne; Hochstein, Lorin; Proulx, Jonathan; Toews, Everett; Topjian, Joe (2014). "Glossar". OpenStack Operations Guide. Peking: O'Reilly Media, Inc. p. 286. ISBN 9781491906309. Abgerufen 2016-09-20.
Virtuelle zentrale Verarbeitungseinheit (VCPU) [:] Unterteilt die physische CPUs. Instanzen können dann diese Abteilungen verwenden.
- ^ "VMware-Infrastrukturarchitekturübersicht- White Paper" (PDF). VMware. VMware. 2006.
- ^ "CPU -Frequenz". CPU World Glossar. CPU -Welt. 25. März 2008. Abgerufen 1. Januar 2010.
- ^ "Was ist (a) Multi-Core-Prozessor?". Rechenzentrumsdefinitionen. SearchDatacenter.com. Abgerufen 8. August 2016.
- ^ "Quad Core vs. Dual Core". 8. April 2010.
- ^ TEGTMeier, Martin. "CPU-Nutzung von Architekturen mit Multi-Thread-Architekturen". Orakel. Abgerufen 17. Juli, 2022.