Prozessoren von innen. Prozessoren von innen Design des Computer-Motherboards

Derzeit wird der Hauptanteil des Allzweck-Mikroprozessormarktes von 32-Bit- und 64-Bit-Mikroprozessoren eingenommen. In diesem Kapitel werden Intel-Mikroprozessoren mit 32-Bit-Architektur beschrieben, aus denen die IA-32-Familie (Intel Architecture-32) besteht. Diese Architektur bildet die Grundlage der 64-Bit-x86-64-Architektur von Intel und der AMD-64-Architektur von AMD.

2.1 Aufbau und Funktionen von Registern

Registriert bezieht sich auf einen Hochgeschwindigkeitsspeicher, der sich innerhalb der CPU befindet und für die schnelle Speicherung von Daten und den schnellen Zugriff darauf von den internen Komponenten des Prozessors ausgelegt ist. Wenn beispielsweise Programmschleifen hinsichtlich der Geschwindigkeit optimiert werden, befinden sich die Variablen, auf die innerhalb der Schleife zugegriffen wird, in Prozessorregistern und nicht im Speicher. Die Sammlung aller dieser Register wird manchmal als Super-Random Access Memory (SRAM) bezeichnet.

2.1.1 Hauptregister

Abbildung 2.1 zeigt den Aufbau der Hauptregister und ihre Namen. Es gibt 8 Register allgemeiner Zweck(RON), 6 Segmentregister, Flag-Register, Befehlszeigerregister sowie Systemregister, Debug- und Testregister.

Allzweckregister (RON). Diese Register werden hauptsächlich zur Durchführung arithmetischer Operationen und zur Datenübertragung verwendet. Auf jedes RON kann als 32-Bit-Register oder als 16-Bit-Register zugegriffen werden. Auf einige Register kann als 8-Bit-Register zugegriffen werden. Beispielsweise ist das EAX-Register 32-Bit, aber seine unteren 16 Bit werden als AX-Register bezeichnet. Die höheren 8 Bits des AX-Registers werden AN und die niedrigeren 8 Bits AL genannt. Die 16-Bit-Teile der Index- und Zeigerregister werden normalerweise nur beim Schreiben von Programmen für den echten Adressierungsmodus verwendet, d. h. für MS-DOS oder dessen Emulation in Windows.

Bedeutung der Registerabkürzungen:

Das E-Präfix am Anfang von Registernamen wird erweitert.

Das Postfix X am Ende von Registernamen bedeutet tatsächlich das Register.

AX – Akkumulator (Antrieb).

BX – Basisregister.

CX – Zähler.

DX – Daten.

AL – Akku niedrig (untere Hälfte des AX-Registers).

AH – Akkumulator hoch (obere Hälfte des Registers AX).

BL – Base Low (untere Hälfte des BX-Registers).

BH – Basis hoch (hohe Hälfte des BX-Registers).

CL – Zähler niedrig (untere Hälfte des CX-Registers).

CH – Zähler hoch (hohe Hälfte des CX-Registers).

DL – Daten niedrig (untere Hälfte des DX-Registers).

DH – Daten hoch (hohe Hälfte des DX-Registers).

SI – Quellenindex. Enthält die aktuelle Quelladresse.

DI – Zielindex. Enthält die aktuelle Empfängeradresse.

BP – Basiszeiger. Für den wahlfreien Zugriff auf Daten im Stapel

SP – Stapelzeiger. Enthält einen Zeiger auf die Oberseite des Stapels.

CS – Codesegment.

DS – Datensegment.

ES – Extra Data Segment (zusätzliches Datensegment).

FS – Extended Data Segment (zusätzliches Datensegment).

GS – Extended Data Segment (zusätzliches Datensegment).

SS – Stapelsegment.

IP – Befehlszeiger (Befehlszeiger oder Befehlszähler).

F – Flags (Flag-Register).

GDTR – Globales Deskriptortabellenregister.

IDTR – Unterbrechungsdeskriptortabellenregister.

TR – Aufgabenregister.

LDTR – Lokales Deskriptortabellenregister.

DR – Debug-Register.

TR – Testregister.

CR – Kontrollregister.

Merkmale der Verwendung von Registern. Wenn der Prozessor Befehle ausführt, haben einige Allzweckregister einen besonderen Zweck.

    Der Inhalt des EAX-Registers wird bei der Ausführung von Multiplikations- und Divisionsanweisungen automatisch verwendet. Da dieses Register normalerweise mit der Ausführung arithmetischer Anweisungen verbunden ist, wird es häufig aufgerufen erweitertes Akkumulatorregister (erweitert Akkumulator).

    Das ESX-Register wird vom Prozessor automatisch als Schleifenzähler verwendet.

    Das ESP-Register greift auf die auf dem Stapel gespeicherten Daten zu. Stapel– Hierbei handelt es sich um einen Systemspeicherbereich, auf den nach dem FILO-Prinzip (First Input – Last Output) „zuerst geschrieben, zuletzt gelesen“ zugegriffen wird. Dieses Register wird normalerweise nie zur Ausführung normaler Rechenoperationen und Datenübertragungsanweisungen verwendet. Das kommt oft vor wird als erweitertes Stapelzeigerregister bezeichnet (erweitert Stapel Zeiger). Das ESP-Register zeigt auf die Adresse oben im Stapel (die Adresse, an die die nächste Variable durch den PUSH-Befehl geschrieben wird).

    Die ESI- und EDI-Register werden normalerweise für Hochgeschwindigkeitsbefehle zur Datenübertragung von einem Speicherort zum anderen verwendet. Deshalb werden sie manchmal genannt erweiterte Quellindexregister Und Empfänger Daten (erweitert Quelle Index Und erweitert Ziel Index). Das ESI-Register ist die Quelladresse und enthält die Adresse des Anfangs des Informationsblocks für die Operation „Block verschieben“ (vollständige Adresse DS:ESI), und das EDI-Register ist die Zieladresse (vollständige Adresse ES:EDI).

    Das EBP-Register wird üblicherweise von Compilern höherer Programmiersprachen verwendet, um auf Funktionsparameter zuzugreifen und auf lokale Variablen zu verweisen, die auf dem Stapel zugewiesen sind. Es sollte nicht zur Durchführung gewöhnlicher arithmetischer Operationen oder zum Verschieben von Daten verwendet werden, außer im Fall spezieller Programmiertechniken durch erfahrene Programmierer. Es wird oft als erweitertes Register bezeichnet Stapelrahmenzeiger (erweitert rahmen Zeiger). Das EBP-Register enthält die Adresse, von der aus Informationen (oder die „Tiefe“ des Stapels) zum Stapel hinzugefügt oder daraus entnommen werden. Funktionsparameter haben eine positive Verschiebung relativ zu EBP, lokale Variablen haben eine negative Verschiebung und die vollständige Adresse dieses Speicherbereichs wird im SS:EBP-Registerpaar gespeichert.

    Das EIP-Register speichert den Offset der Befehlsadresse. Die vollständige Adresse des nächsten ausführbaren Befehls wird im CS:EIP-Registerpaar gespeichert.

    Die ESP-, EBP-, ESI- und EDI-Register speichern den Datenadressen-Offset.

Segmentregister. Diese Register werden als Basisregister beim Zugriff auf vorab zugewiesene RAM-Bereiche verwendet, die aufgerufen werden Segmente. Es gibt drei Arten von Segmenten und dementsprechend Segmentregister:

    Code (CS), sie speichern nur Prozessoranweisungen, d. h. Maschinencode des Programms;

    Daten (DS, ES, FS und GS), sie speichern Speicherbereiche, die Programmvariablen und Daten zugewiesen sind;

    Stapel (SS), sie speichern einen Systemspeicherbereich namens Stapel, bei dem lokale (temporäre) Programmvariablen und Parameter verteilt werden, die beim Aufruf an Funktionen übergeben werden.

Segmentregister werden mit Segmentselektoren geladen, die Offsets entweder von der Global Descriptor Table (GDT) oder der Local Descriptor Table (LDT) sind.

Die Segmentregisterbits enthalten folgende Informationen:

0 – 1. RPL – Angeforderte Berechtigungsstufe. Angeforderte Berechtigungsebene.

2. TI – Tabellenindikator. Anzeigetabellenbit. Teilt dem Prozessor mit, wo er nach dem angegebenen Selektor suchen soll. Wenn das Bit gesetzt ist, liest der Prozessor den Selektor aus der lokalen Deskriptortabelle. Wenn das Bit gelöscht ist, liest der Prozessor den Selektor aus der globalen Deskriptortabelle.

3 – 15. Diese Bits speichern den Index der globalen oder lokalen Deskriptortabelle.

Das CS-Register ist zu klein, um ein Codesegment aufzunehmen, daher muss es auf das ausführbare Segment eingestellt werden. Das SS-Register ist zu klein, um ein Stapelsegment aufzunehmen, daher muss es auf ein beschreibbares Datensegment eingestellt werden.

Die im CS-Segmentregister festgelegte Berechtigungsstufe ist die Berechtigungsstufe des laufenden Programms und wird als aktuelle Berechtigungsstufe (CPL – Aktuelle Berechtigungsstufe) bezeichnet. Die Segmentregister DS, ES, FS, GS sind für Daten und müssen auf ein Datensegment mit Schreibberechtigung eingestellt werden. Die für jeden dieser Selektoren erforderlichen Berechtigungsstufen müssen größer sein als die aktuelle CPL-Berechtigungsstufe.

Jedem der sechs Segmentregister sind Schattendeskriptorregister zugeordnet. Im geschützten Modus werden die 32-Bit-Basisadresse des Segments, die 20-Bit-Grenze und Attribute (Zugriffsrechte) aus den Deskriptortabellen in die Schattenregister überschrieben.

Befehlszeigerregister. Das EIP-Register speichert den Offset vom Programmanfang (Offset) des nächsten auszuführenden Befehls. Der Prozessor verfügt über mehrere Anweisungen, die den Inhalt dieses Registers beeinflussen. Eine Änderung der im EIP-Register gespeicherten Adresse führt dazu, dass die Steuerung an einen neuen Abschnitt des Programms übertragen wird.

Flaggenregister E.F. (EFLAGZ) . Die Bits dieses Registers werden Flags genannt und sind entweder für die spezifische Ausführung bestimmter CPU-Befehle verantwortlich oder spiegeln das Ergebnis der Befehlsausführung durch die ALU-Einheit wider. Die Registerflags sind in Tabelle 2.1 aufgeführt. Die Bits 22 bis einschließlich 31 sind reserviert.

Tabelle 2.1 Flag-Register

Um die Bits dieses Registers zu analysieren, werden spezielle Prozessoranweisungen bereitgestellt. Sie sagen die Flagge Eingerichtet, wenn das Flag-Bit 1 ist, und dieses Flag zurücksetzen, wenn sein Bitwert 0 ist. Darüber hinaus enthält das erweiterte EF-Register im Vergleich zum F-Register fünf neue Flags.

Kontrollflaggen. Der Zustand der EFLAGS-Registerbits, die den Steuerflags entsprechen, kann vom Programmierer mithilfe spezieller Prozessorbefehle geändert werden. Diese Flags (DF, IF, TF) steuern die Ausführung bestimmter CPU-Befehle:

8. TF – Trap-Flag. Trace-Flag (Schrittmodus). Wenn es gesetzt ist (TF=1), wird nach jeder Befehlsausführung der interne Interrupt INT 1 aufgerufen, der den Rechenvorgang stoppt und eine Überprüfung der Registerinhalte ermöglicht.

9. IF – Interrupt-Enable-Flag. Interrupt-Aktivierungsflag. Bei IF=1 sind maskierte Hardware-Interrupts aktiviert. Wenn IF=0 – verboten.

10. DF – Richtungsflagge. Flag zum Steuern der Richtung der Array-Verarbeitung in String-Befehlen. Bei DF=1 werden die Indexregister SI, DI, die an String-Befehlen beteiligt sind, automatisch um die Anzahl der Operandenbytes dekrementiert, wodurch Strings vom Ende bis zum Anfang verarbeitet werden. Wenn DF=0 – werden sie inkrementiert, wobei die Verarbeitung vom Anfang bis zum Ende der Zeile erfolgt.

Statusflags. Diese Flags spiegeln verschiedene Merkmale des Ergebnisses der Ausführung arithmetischer und logischer CPU-Anweisungen wider:

0. CF – Carry-Flagge. Das Übertragsflag wird gesetzt, wenn bei der Durchführung einer vorzeichenlosen Rechenoperation eine Zahl erhalten wird, deren Bittiefe die Bitbreite des ihr zugeordneten Ergebnisfeldes überschreitet. Bei Schiebeanweisungen legt das CF-Flag den Wert des höchstwertigen Bits fest.

2. PF – Paritätsflag. Das Flag „Gerade/Parität“ wird gesetzt, wenn das Ergebnis eine gerade Anzahl von Einsen aufweist.

4. AF – Auxiliary Carry. Flag für zusätzliche Übertragung/Ausleihe von der niedrigsten Tetrade zur höchsten (von der dritten zur vierten Ziffer). Wird in Befehlen zur Verarbeitung von 8-Bit-Daten verwendet, meist BCD-Zahlen.

6. ZF – Nullflagge. Das Null-Flag wird gesetzt, wenn eine arithmetische oder logische Operation eine Zahl erzeugt, die Null ist (d. h. alle Bits des Ergebnisses sind 0).

7. SF – Flagge signieren. Das Vorzeichenflag dupliziert den Wert des höchstwertigen Bits des Ergebnisses. SF=0 für ein positives Ergebnis, SF=1 für ein negatives Ergebnis.

11. OF – Überlaufflag. Überlaufflag , oder ) wird gesetzt, wenn bei der Durchführung einer vorzeichenbehafteten Rechenoperation eine Zahl erhalten wird, deren Ziffernkapazität die Ziffernkapazität des ihr zugeordneten Ergebnisfeldes übersteigt.

Flaggen zum EF-Register hinzugefügt:

12-13. IOPL – E/A-Berechtigungsstufe. Flag für E/A-Berechtigungsstufe. Wird im geschützten Modus des Mikroprozessorbetriebs verwendet, um den Zugriff auf E/A-Befehle abhängig von den Berechtigungen der Aufgabe zu steuern.

14. NT – Flag für verschachtelte Aufgaben. Flag für die Verschachtelung von Aufgaben. Wird im geschützten Modus des Mikroprozessorbetriebs verwendet, um die Tatsache aufzuzeichnen, dass eine Aufgabe in einer anderen verschachtelt ist.

16. RF – Resume-Flagge. Resume-Flag. Im Debug-Modus ermöglicht ein einzelner RF-Wert den Neustart des Befehls nach Unterbrechungen. Wird in Verbindung mit Debug-Breakpoint-Registern verwendet.

17. VM – Flag für den virtuellen Modus. Flag für den virtuellen Modus. Ein Zeichen dafür, dass der Mikroprozessor im virtuellen 8086-Modus arbeitet. 1 – Der Prozessor arbeitet im virtuellen 8086-Modus. 0 – der Prozessor arbeitet im Real- oder Protected-Modus.

18. AC – Ausrichtungsprüfung. Flag des Prozessorbetriebsmodus, in dem die Ausrichtungssteuerung erfolgt. Wird nur auf Berechtigungsstufe 3 verwendet. Wenn AC=1 und AM=1 (AM ist ein Bit im Steuerregister CR0), dann wird auf einen Operanden zugegriffen, der nicht auf die entsprechende Grenze (2 oder 4 oder 8) Bytes ausgerichtet ist. Ausnahme 17 wird ausgelöst. Das Ausrichten des Operanden an den Grenzwerten 2,4,8 bedeutet, dass die Adresse des Operanden jeweils ein Vielfaches von 2,4,8 ist.

19. VIF – Virtuelles Interrupt-Flag. Interrupt-Aktivierungsflag im virtuellen Modus des Prozessorbetriebs.

20. VIP – Virtueller Interrupt ausstehend. Interrupt-Verzögerungsflag im virtuellen Modus des Prozessorbetriebs.

21. ID – CPU-Identifikation. Flag zur Prozessoridentifikation. Das Flag kann geändert werden, wenn der Prozessor die CPUID-Anweisung unterstützt.

In Kontrollregistern CR0-CR3 speichert Indikatoren des Prozessorstatus, die allen Aufgaben gemeinsam sind. Das CR0-Register hat die folgenden Bits:

0. PE – Schutz aktiviert. Flag für den geschützten Modus. Wenn PE=1, dann ist der Prozessorbetriebsmodus geschützt.

1. MP – Mathematische Gegenwart. Flag für das Vorhandensein eines mathematischen Coprozessors. Wenn MP=1, dann ist der mathematische Coprozessor vorhanden.

2. EM – Numerische Erweiterung emulieren. Flag zum Emulieren von Befehlen über Gleitkommazahlen. Wenn das Flag gesetzt ist, können Befehle zum Arbeiten mit reellen Zahlen in der Software emuliert werden.

3. TS – Aufgabe gewechselt. Taskwechsel-Flag. Das Flag wird nach dem Taskwechsel gesetzt.

4. ET – Erweiterungstyp. Flag für den Erweiterungstyp. Wird festgelegt, wenn ein arithmetischer Coprozessor 387 oder höher vorhanden ist.

5. NE – Numerische Fehlerfreigabe. Aktivierungsflag für Coprozessorfehler. Ist das Flag gesetzt, wird bei einem Fehler im Coprozessor die Ausnahmesituation 16 generiert.

16. WP – Schreibschutz. Schreibschutzflag. Wenn das Flag gesetzt ist, werden Speicherseiten dem Betriebssystemkernel im schreibgeschützten Modus zugewiesen.

18. Uhr – Ausrichtungsmaske. Ausrichtungsmaskierungsflag. Wenn das Flag gesetzt ist, wird Ausnahme 17 generiert, wenn auf nicht ausgerichtete Operanden zugegriffen wird. Wenn das Flag gelöscht ist, wird die Ausnahme maskiert.

29. NW – Nicht durchschreibbar. Flag zum Verhindern des Durchschreibens.

30. CD – Cache deaktivieren. Caching-Flag deaktivieren.

31. PG – Paging aktivieren. Flag für den Speicher-Paging-Modus. Wenn das Flag gesetzt ist, arbeitet das Betriebssystem im Speicher-Paging-Modus.

Die restlichen Bits des CR0-Registers sind reserviert.

Register CR1 ist reserviert. Das CR2-Register speichert die lineare 32-Bit-Adresse, an der der Speicherseitenfehler aufgetreten ist. Die 20 höchstwertigen Bits des CR3-Registers speichern die physische Basisadresse der Seitenverzeichnistabelle und die Cache-Steuerbits. Das CR4-Register enthält die Aktivierungsbits für die Erweiterung der MP-Architektur. Im Allgemeinen werden diese Register bei der Systemprogrammierung verwendet und legen den Betriebsmodus des Prozessors (normal, geschützt usw.), die Speicherauslagerung usw. fest.

Systemadressregister. Die Systemzeigerregister der globalen Deskriptortabelle GDTR und der Interrupt-Tabelle IDTR speichern jeweils 32-Bit-Basisadressen und 16-Bit-Tabellengrenzen. Die TR- und lokalen Deskriptortabellen-LDTR-Systemsegmentregister sind 16-Bit-Selektoren. Diese entsprechen Schattendeskriptorregistern, die eine 32-Bit-Segmentbasisadresse, eine 20-Bit-Grenze und ein Zugriffsberechtigungsbyte enthalten.

In Debug-Registern DR0-DR3 enthält 32-Bit-Haltepunktadressen im Debug-Modus; DR4–DR5 sind reserviert und werden nicht verwendet; DR6 zeigt den Status des Referenzpunkts an; DR7 – verwaltet die Platzierung von Kontrollpunkten im Programm.

Testregister TR gehören zur Gruppe der modellspezifischen Register, deren Zusammensetzung und Anzahl vom Prozessortyp abhängt: Der MP 386 verwendet zwei Register TR6 und TR7, um das Paging-System der Speicherzuweisung durch das Betriebssystem zu steuern. Pentium II und höher verwenden zwölf Register TR1–TR12. Diese Registergruppe enthält auch die Ergebnisse von MP- und Cache-Speichertests.

Der Artikel enthüllt die Bedeutung des Begriffs „64 Bit“. Der Artikel beleuchtet kurz die Entwicklungsgeschichte von 64-Bit-Systemen, beschreibt die derzeit gängigsten 64-Bit-Prozessoren der Intel 64-Architektur und das 64-Bit-Windows-Betriebssystem.

Einführung

Im Rahmen der Computerarchitektur bezieht sich der Begriff „64-Bit“ auf 64-Bit-Ganzzahlen und andere Datentypen mit einer Größe von 64 Bit. „64-Bit“-Systeme können sich auf 64-Bit-Mikroprozessorarchitekturen (z. B. EM64T, IA-64) oder 64-Bit-Betriebssysteme (z. B. Windows XP Professional x64 Edition) beziehen. Wir können über Compiler sprechen, die 64-Bit-Programmcode generieren.

In diesem Artikel werden verschiedene Probleme im Zusammenhang mit 64-Bit-Technologien erörtert. Der Artikel richtet sich an Programmierer, die mit der Entwicklung von 64-Bit-Programmen beginnen möchten, und richtet sich an Windows-Entwickler, da für sie das Thema Kennenlernen von 64-Bit-Systemen am relevantesten ist.

Geschichte der 64-Bit-Systeme

64-Bit ist erst seit Kurzem im Leben der meisten Benutzer und Anwendungsprogrammierer angekommen. Allerdings hat die Arbeit mit 64-Bit-Daten eine lange Geschichte.

1961: IBM veröffentlicht den Supercomputer IBM 7030 Stretch, der 64-Bit-Datenwörter, 32-Bit- oder 64-Bit-Maschinenanweisungen verwendet.

1974: Control Data Corporation bringt den Vektor-Supercomputer CDC Star-100 auf den Markt, der eine 64-Bit-Wortarchitektur verwendet (frühere CDC-Systeme hatten eine 60-Bit-Architektur).

1976: Cray Research veröffentlicht den ersten Supercomputer, den Cray-1, der eine 64-Bit-Wortarchitektur implementiert und als Basis für alle nachfolgenden Cray-Vektor-Supercomputer dienen wird.

1985: Cray veröffentlicht UNICOS, die erste 64-Bit-Implementierung des Unix-Betriebssystems.

1991: MIPS Technologies produziert den ersten 64-Bit-Prozessor, den R4000, der die dritte Modifikation der MIPS-Architektur des Unternehmens implementiert. Dieser Prozessor wird in SGI-Grafik-Workstations ab dem IRIS Crimson-Modell verwendet. Kendall Square Research veröffentlicht seinen ersten Supercomputer, den KSR1, der auf seiner proprietären 64-Bit-RISC-Architektur basiert und auf dem das Betriebssystem OSF/1 läuft.

1992: Digital Equipment Corporation (DEC) führt die vollständig 64-Bit-Alpha-Architektur ein, die Idee des PRISM-Projekts.

1993: DEC veröffentlicht das 64-Bit-Unix-ähnliche Betriebssystem DEC OSF/1 AXP (später umbenannt in Tru64 UNIX) für seine Alpha-Architektursysteme.

1994: Intel kündigt Pläne zur Entwicklung einer 64-Bit-IA-64-Architektur (mit Hewlett-Packard) als Nachfolger ihrer 32-Bit-IA-32-Prozessoren an. Das Erscheinungsdatum ist auf 1998-1999 festgelegt. SGI veröffentlicht IRIX 6.0 mit 64-Bit-Unterstützung für den R8000-Chipsatz.

1995: Sun bringt den 64-Bit-Prozessor der SPARC UltraSPARC-Familie auf den Markt. HAL Computer Systems, eine Tochtergesellschaft von Fujitsu, bringt Workstations auf den Markt, die auf dem von HAL unabhängig entwickelten 64-Bit-SPARC64-Prozessor der ersten Generation basieren. IBM produziert die Mikroprozessoren A10 und A30 sowie 64-Bit-PowerPC-AS-Prozessoren. IBM veröffentlicht außerdem ein 64-Bit-Update für das AS/400-System, das das Betriebssystem, Datenbanken und Anwendungen transformieren kann.

1996: Nintendo stellt die Videospielkonsole Nintendo 64 vor, die auf dem günstigeren MIPS R4000 basiert. HP veröffentlicht eine 64-Bit-2.0-Implementierung seiner eigenen PA-RISC PA-8000-Architektur.

1997: IBM bringt die RS64-Reihe von 64-Bit-PowerPC/PowerPC AS-Prozessoren auf den Markt.

1998: Sun veröffentlicht Solaris 7 mit vollständiger 64-Bit-UltraSPARC-Unterstützung.

1999: Intel veröffentlicht den Befehlssatz für die IA-64-Architektur. AMD kündigt öffentlich seine 64-Bit-Erweiterungen für IA-32 an, die es x86-64 nennt (später in AMD64 umbenannt).

2000: IBM veröffentlicht seinen ersten 64-Bit-ESA/390-kompatiblen Mainframe, die zSeries z900, sowie das neue z/OS-Betriebssystem.

2001: Intel bringt endlich eine Reihe von 64-Bit-Prozessoren auf den Markt, die jetzt Itanium heißen und für High-End-Server gedacht sind. Das Projekt blieb aufgrund zahlreicher Verzögerungen bei der Markteinführung des IA-64 hinter den Erwartungen zurück. NetBSD ist bei seiner Veröffentlichung das erste Betriebssystem, das auf dem Intel Itanium-Prozessor läuft. Darüber hinaus veröffentlicht Microsoft auch Windows XP 64-Bit Edition für die IA-64-Architektur der Itanium-Familie, behält jedoch die Möglichkeit, 32-Bit-Anwendungen mithilfe der WoW64-Schicht auszuführen.

2003: AMD stellt die Prozessorlinien Opteron und Athlon 64 vor, die auf der AMD64-Architektur basieren, der ersten 64-Bit-Prozessorarchitektur, die auf der x86-Architektur basiert. Apple beginnt mit der Verwendung des 64-Bit-Prozessors „G5“ PowerPC 970 von IBM. Laut Intel bleiben die Prozessorchips der Itanium-Familie die einzigen selbst entwickelten 64-Bit-Prozessoren.

2004: Als Reaktion auf den kommerziellen Erfolg von AMD gibt Intel zu, dass sie einen Klon von AMD64-Erweiterungen entwickelt haben, den sie IA-32e nannten (später umbenannt in EM64T und dann wieder Intel 64). Intel produziert auch aktualisierte Versionen Familien von Xeon- und Pentium 4-Prozessoren mit Unterstützung für neue Befehle.

2004: VIA Technologies stellt seinen 64-Bit-Isaiah-Prozessor vor.

2005: 31. Januar: Sun veröffentlicht Solaris 10 mit Unterstützung für AMD64/Intel 64-Prozessoren. 30. April: Microsoft veröffentlicht Windows XP Professional x64 Edition für AMD64/Intel 64-Prozessoren.

2006: Sony, IBM und Toshiba beginnen mit der Veröffentlichung des 64-Bit-Cell-Prozessors für PlayStation 3, Server, Workstations und andere Geräte. Microsoft veröffentlicht Windows Vista mit einer 64-Bit-Version für AMD64/Intel 64-Prozessoren, die 32-Bit-Kompatibilität unterstützt. Alle Windows-Anwendungen und -Komponenten sind 64-Bit-Versionen, viele enthalten jedoch aus Kompatibilitätsgründen 32-Bit-Versionen als Plugins.

2009: Wie Windows Vista enthält auch Windows 7 von Microsoft eine vollständige 64-Bit-Version für AMD64/Intel 64-Prozessoren, und auf den meisten neuen Computern ist die 64-Bit-Version standardmäßig installiert. Das Betriebssystem des Unternehmens wird freigegeben Apple Mac OS Die meisten mit Mac OS X 10.6 ausgelieferten Anwendungen sind jetzt auch 64-Bit.

Mehr über die Entwicklungsgeschichte von 64-Bit-Systemen erfahren Sie im Artikel von John Masha „The Long Road to 64 Bits“ und im Enzyklopädie-Artikel auf Wikipedia „64-Bit“.

Anwendungsprogrammierung und 64-Bit-Systeme

Zum Zeitpunkt des Verfassens dieses Artikels im Jahr 2010 sind zwei 64-Bit-Mikroprozessorarchitekturen die bekanntesten und am weitesten verbreiteten: IA64 und Intel 64.
  1. IA-64 64-Bit-Mikroprozessorarchitektur, gemeinsam entwickelt von Intel und Hewlett Packard. In Itanium- und Itanium-2-Mikroprozessoren implementiert. Eine detailliertere Einführung in die IA-64-Architektur finden Sie in den folgenden Wikipedia-Artikeln: „IA-64“, „Itanium“, „Itanium 2“. Unterstützte Itanium-Architektur große Menge Serverhersteller: Bull, Fujitsu, Fujitsu Siemens Computers, Hitachi, HP, NEC, SGI und Unisys. Diese Hersteller gründeten zusammen mit Intel und vielen Softwareentwicklern die Itanium Solutions Alliance mit dem Ziel, die Architektur zu fördern und das Tempo der Softwareportierung zu beschleunigen.
  2. Intel 64(AMD64 / x86-64 / x64 / EM64T) – diese Architektur ist eine Erweiterung der x86-Architektur mit vollständiger Abwärtskompatibilität. Es gibt viele Optionen für den Namen dieser Architektur, was zu Verwirrung führt, obwohl alle diese Namen tatsächlich dasselbe bedeuten: x86-64, AA-64, Hammer Architecture, AMD64, Yamhill Technology, EM64T, IA-32e , Intel 64, x64. Mehr darüber, wie so viele Namen entstanden sind, erfahren Sie im Wikipedia-Artikel: „X86-64“. Prozessoren mit Intel 64-Architektur werden häufig in Personalcomputern verwendet. Und höchstwahrscheinlich ist Ihr Computer mit einem Prozessor dieser Architektur ausgestattet.
Es ist wichtig zu verstehen, dass IA-64 und Intel 64 (AMD64) völlig unterschiedliche Mikroprozessorarchitekturen sind, die miteinander nicht kompatibel sind. Im weiteren Verlauf des Artikels betrachten wir nur die Intel 64 (x64 / AMD64)-Architektur, da diese bei Anwendungsentwicklern beliebter ist Software für das Windows-Betriebssystem. Der Kürze halber das Intel 64-Softwaremodell, das dem Programmierer in 64-Bit verfügbar ist Windows-System, genannt Win64.

Intel 64 (AMD64) Architektur

Bei der betreffenden Intel 64-Architektur handelt es sich um eine einfache, aber leistungsstarke, abwärtskompatible Erweiterung der alten x86-Industriearchitektur. Es fügt 64-Bit-Adressraum hinzu und erweitert die Registerressourcen, um eine höhere Leistung für neu kompilierte 64-Bit-Programme zu unterstützen. Die Architektur bietet Unterstützung für ältere 16-Bit- und 32-Bit-Anwendungscodes und Betriebssysteme ohne Änderung oder Neukompilierung.

Eine Besonderheit von Intel 64 ist die Unterstützung von sechzehn 64-Bit-Allzweckregistern (x86-32 hatte acht 32-Bit-Register). 64-Bit-Arithmetik und logische Operationenüber ganze Zahlen. Virtuelle 64-Bit-Adressen werden unterstützt. Um neue Register für Befehle anzusprechen, wurden „Registererweiterungspräfixe“ eingeführt, für die der Codebereich 40h-4Fh ausgewählt wurde, der für INC-Befehle verwendet wird<регистр>und DEZ<регистр>im 32- und 16-Bit-Modus. INC- und DEC-Anweisungen im 64-Bit-Modus müssen in einer allgemeineren Zwei-Byte-Form codiert werden.

Register:

16 64-Bit-Allzweck-Ganzzahlregister (RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 – R15),
8 80-Bit-Gleitkommaregister (ST0 - ST7),
8 64-Bit-Multimedia-Erweiterungsregister (MM0–MM7, gemeinsamer Speicherplatz mit den Registern ST0–ST7),
16 128-Bit-SSE-Register (XMM0 - XMM15),
64-Bit-RIP-Zeiger und 64-Bit-RFLAGS-Flag-Register.

Der Bedarf an einer 64-Bit-Architektur wird durch Anwendungen bestimmt, die einen großen Adressraum benötigen. Das sind in erster Linie Hochleistungsserver, Datenbankmanagementsysteme, CAD und natürlich Spiele. Solche Anwendungen werden erheblich vom 64-Bit-Adressraum und der erhöhten Anzahl an Registern profitieren. Die geringe Anzahl der in der alten x86-Architektur verfügbaren Register schränkt die Leistung bei Rechenaufgaben ein. Die erhöhte Anzahl an Registern bietet für viele Anwendungen ausreichend Leistung.

Lassen Sie uns die Hauptvorteile der x86-64-Architektur hervorheben:

  • 64-Bit-Adressraum;
  • erweiterter Registersatz;
  • eine Reihe von Befehlen, die Entwicklern bekannt sind;
  • die Möglichkeit, alte 32-Bit-Anwendungen auf einem 64-Bit-Betriebssystem auszuführen;
  • Fähigkeit, 32-Bit-Betriebssysteme zu verwenden.

64-Bit-Betriebssysteme

Fast alle modernen Betriebssysteme verfügen mittlerweile über Versionen für die Intel 64-Architektur. Beispielsweise bietet Microsoft Windows XP x64 an. Große Entwickler UNIX-Systeme Sie bieten auch 64-Bit-Versionen an, beispielsweise Linux Debian 3.5 x86-64. Dies bedeutet jedoch nicht, dass der gesamte Code eines solchen Systems vollständig 64-Bit ist. Einige Betriebssystemcodes und viele Anwendungen bleiben möglicherweise durchaus 32-Bit, da Intel 64 Abwärtskompatibilität mit 32-Bit-Anwendungen bietet. Zum Beispiel 64-Bit Windows-Version verwendet einen speziellen WoW64-Modus (Windows-on-Windows 64), der Aufrufe von 32-Bit-Anwendungen in Ressourcen eines 64-Bit-Betriebssystems übersetzt.

WoW64

Windows-on-Windows 64-Bit (WoW64) ist ein Subsystem des Windows-Betriebssystems, mit dem Sie 32-Bit-Anwendungen auf allen 64-Bit-Versionen von Windows ausführen können.

Das WoW64-Subsystem unterstützt die folgenden Programme nicht:

  • Für 16-Bit-Betriebssysteme kompilierte Programme;
  • Für 32-Bit-Betriebssysteme kompilierte Kernelmodusprogramme.
Je nach Prozessorarchitektur gibt es WoW64-Unterschiede. Beispielsweise verwendet die für den Intel Itanium 2-Prozessor entwickelte 64-Bit-Version von Windows WoW64, um x86-Anweisungen zu emulieren. Diese Emulation ist im Vergleich zu WoW64 für die Intel 64-Architektur sehr ressourcenintensiv, da bei der Ausführung von 32-Bit-Programmen vom 64-Bit-Modus in den Kompatibilitätsmodus gewechselt wird.

WoW64 auf der Intel 64-Architektur (AMD64/x64) erfordert keine Befehlsemulation. Hier emuliert das WoW64-Subsystem aufgrund einer zusätzlichen Schicht zwischen der 32-Bit-Anwendung und der 64-Bit-Windows-API nur eine 32-Bit-Umgebung. An manchen Stellen ist diese Schicht dünn, an anderen weniger. Für Sekundärprogramm Der Produktivitätsverlust aufgrund des Vorhandenseins einer solchen Schicht beträgt etwa 2 %. Bei einigen Programmen kann dieser Wert höher sein. Zwei Prozent sind nicht viel, aber bedenken Sie, dass 32-Bit-Anwendungen unter einem 64-Bit-Windows-Betriebssystem etwas langsamer laufen als in einer 32-Bit-Umgebung.

Das Kompilieren von 64-Bit-Code macht WoW64 nicht nur überflüssig, sondern sorgt auch für einen zusätzlichen Leistungsschub. Dies ist auf architektonische Änderungen im Mikroprozessor zurückzuführen, beispielsweise auf eine Erhöhung der Anzahl von Universalregistern. Bei einem durchschnittlichen Programm können Sie durch eine einfache Neukompilierung eine Leistungssteigerung von 5–15 % erwarten.

Aufgrund des Vorhandenseins der WoW64-Schicht laufen 32-Bit-Programme in einer 64-Bit-Umgebung weniger effizient als in einer 32-Bit-Umgebung. Dennoch können einfache 32-Bit-Anwendungen von der Ausführung in einer 64-Bit-Umgebung profitieren. Sie wissen wahrscheinlich, dass ein mit dem Schlüssel /LARGEADDRESSAWARE:YES kompiliertes Programm bis zu 3 Gigabyte Speicher zuweisen kann, wenn das 32-Bit-Windows-Betriebssystem mit dem Schlüssel /3gb gestartet wird. Dasselbe 32-Bit-Programm kann also, wenn es auf einem 64-Bit-System gestartet wird, fast 4 GB Speicher zuweisen (in der Praxis etwa 3,5 GB).

Das WoW64-Subsystem isoliert 32-Bit-Programme von 64-Bit-Programmen, indem es den Datei- und Registrierungszugriff umleitet. Dadurch wird verhindert, dass 32-Bit-Programme versehentlich auf Daten von 64-Bit-Anwendungen zugreifen. Beispielsweise kann eine 32-Bit-Anwendung, die eine DLL-Datei aus dem Verzeichnis %systemroot%\System32 ausführt, versehentlich auf eine 64-Bit-DLL-Datei zugreifen, die mit dem 32-Bit-Programm nicht kompatibel ist. Um dies zu vermeiden, leitet das WoW64-Subsystem den Zugriff vom Ordner %systemroot%\System32 auf den Ordner %systemroot%\SysWOW64 um. Diese Umleitung hilft, Kompatibilitätsfehler zu vermeiden, da sie eine DLL-Datei erfordert, die speziell für die Arbeit mit 32-Bit-Anwendungen erstellt wurde.

Weitere Details zu Umleitungsmechanismen Dateisystem und die Registrierung finden Sie im MSDN-Abschnitt „Ausführen von 32-Bit-Anwendungen“.

Win64-Softwaremodell

Genau wie in Win32 beträgt die Seitengröße in Win64 4 KB. Die ersten 64 KB des Adressraums werden nie zugeordnet, was bedeutet, dass die kleinste gültige Adresse 0x10000 ist. Im Gegensatz zu Win32 werden System-DLLs über 4 GB geladen.

Die Besonderheit von Compilern für Intel 64 besteht darin, dass sie Register am effizientesten verwenden können, um Parameter an Funktionen zu übergeben, anstatt den Stapel zu verwenden. Dies ermöglichte es den Entwicklern der Win64-Architektur, so etwas wie eine Aufrufkonvention loszuwerden. In Win32 können Sie verschiedene Konventionen verwenden: __stdcall, __cdecl, __fastcall und so weiter. Win64 hat nur eine Aufrufkonvention. Schauen wir uns ein Beispiel an, wie vier Argumente vom Typ Integer in Registern übergeben werden:

  • RCX: erstes Argument
  • RDX: zweites Argument
  • R8: drittes Argument
  • R9: viertes Argument
Argumente nach den ersten vier Ganzzahlen werden an den Stapel übergeben. Für Float-Argumente werden die XMM0-XMM3-Register sowie der Stack verwendet.

Der Unterschied in den Aufrufkonventionen bedeutet, dass Sie nicht sowohl 64-Bit- als auch 32-Bit-Code im selben Programm verwenden können. Mit anderen Worten: Wenn eine Anwendung für den 64-Bit-Modus kompiliert wird, müssen alle verwendeten DLLs ebenfalls 64-Bit sein.

Die Übergabe von Parametern über Register ist eine der Innovationen, die 64-Bit-Programme leistungsfähiger macht als 32-Bit-Programme. Durch die Verwendung von 64-Bit-Datentypen können zusätzliche Leistungsvorteile erzielt werden.

Adressraum

Obwohl ein 64-Bit-Prozessor theoretisch 16 Exabyte Speicher (2^64) adressieren kann, unterstützt Win64 derzeit 16 Terabyte (2^44). Dafür gibt es mehrere Gründe. Aktuelle Prozessoren können nur auf 1 Terabyte (2^40) physischen Speicher zugreifen. Die Architektur (aber nicht die Hardware) kann diesen Speicherplatz auf 4 Petabyte (2^52) erweitern. Allerdings wird in diesem Fall sehr viel Speicher für die Seitentabellen benötigt, die den Speicher abbilden.

Zusätzlich zu diesen Einschränkungen hängt die Menge an Speicher, die in einer bestimmten Version des 64-Bit-Windows-Betriebssystems verfügbar ist, auch von kommerziellen Überlegungen von Microsoft ab. Nachfolgend finden Sie Informationen zur Speichermenge, die von verschiedenen Versionen der 64-Bit-Versionen von Windows unterstützt wird:

Windows XP Professional – 128 GB;
Windows Server 2003, Standard – 32 GB;
Windows Server 2003, Enterprise – 1 TB;
Windows Server 2003, Rechenzentrum – 1 TB;
Windows Server 2008, Rechenzentrum – 2 TByte;
Windows Server 2008, Enterprise – 2 TByte;
Windows Server 2008, Standard – 32 GB;
Windows Server 2008, Webserver – 32 GB;
Vista Home Basic – 8 GB;
Vista Home Premium – 16 GB;
Vista Business – 128 GB;
Vista Enterprise – 128 GB;
Vista Ultimate – 128 GB;
Windows 7 Home Basic – 8 GB;
Windows 7 Home Premium – 16 GB;
Windows 7 Professional – 192 GB;
Windows 7 Enterprise – 192 GB;
Windows 7 Ultimate – 192 GB;

Entwicklung von 64-Bit-Anwendungen

Die Themen der Entwicklung von 64-Bit-Anwendungen werden im Kurs am umfassendsten behandelt.

Im Jahr 1985 wurde das Unternehmen Intel veröffentlichte einen 32-Bit-Mikroprozessor, der zum Begründer der Familie wurde IA-32. Die Entwicklung dieser Familie durchlief mehrere Phasen, von denen die folgenden unterschieden werden können: Implementierung einer Gleitkommazahlen-Verarbeitungseinheit direkt auf dem MP-Chip (Mikroprozessor). I486), Einführung MMX- Datenverarbeitungstechnologien mit Festkommaprinzip SIMD – Single Instruction Multi Data(ein Befehlsstrom – viele Datenströme) in einem Mikroprozessor Pentium MMX und die Entwicklung dieser Technologie auf Gleitkommazahlen ( SSE – Streaming-SIMD-Erweiterung), das zum ersten Mal in MP erschien Pentium III. Die Grundzüge dieser Architektur sind jedoch bis heute unverändert geblieben.

Die Architektur eines 32-Bit-Mikroprozessors unterscheidet sich erheblich von der Architektur eines 16-Bit-Mikroprozessors. Einige dieser Unterschiede sind rein quantitativer Natur, andere sind grundsätzlicher Natur.

Der wesentliche äußere Unterschied besteht in der Vergrößerung der Datenbus- und Adressbusbreite auf 32 Bit. Dies wiederum ist mit Änderungen in der Bittiefe der internen Elemente des Mikroprozessors und im Mechanismus zur Durchführung bestimmter Prozesse, beispielsweise der Bildung einer physikalischen Adresse, verbunden.

Die Register der Festkommazahlen-Verarbeitungseinheit wurden 32-Bit. Auf jedes davon kann als ein Doppelwort (32 Bit) zugegriffen werden. Auf die unteren 16 Bits dieser Register kann auf die gleiche Weise zugegriffen werden wie bei einem 16-Bit-Mikroprozessor.

Im Block der Segmentregister traten sowohl quantitative als auch qualitative Veränderungen auf. Zu den vier im Real-Modus verwendeten Registern CS, DS, SS und ES wurden zwei weitere hinzugefügt: FS und GS. Obwohl die Breite der Register dieses Blocks gleich bleibt (jeweils 16 Bit), werden sie bei der Bildung der physikalischen Adresse des RAM unterschiedlich verwendet. Wenn der Mikroprozessor im sogenannten geschützten Modus arbeitet, soll er in den entsprechenden Systemtabellen nach einem Segmentdeskriptor (Deskriptor) suchen und die Basisadresse und Attribute des Segments im Deskriptor speichern. In diesem Fall wird die Adressgenerierung durch die Segmentierungseinheit des Speichermanagers durchgeführt.

Wenn der Speicher zusätzlich zu Segmenten auch in Seiten unterteilt ist, erfolgt die endgültige Berechnung der physikalischen Adressen durch die Seitensteuereinheit.

Beginnend mit dem I486-Mikroprozessor umfasst der Mikroprozessorchip eine Gleitkommaeinheit, die acht 80-Bit-Register zur Darstellung der Vorzeichen, Mantissen und Exponenten dieser Zahlen enthält.

Der Mikroprozessorchip beherbergt außerdem einen internen Cache-Speicher, einen speziell organisierten Hochgeschwindigkeits-Pufferspeicher zum Speichern der am häufigsten verwendeten Informationen (Befehle und Daten). Bei verschiedenen Mikroprozessormodellen reicht der Cache-Speicher von 8 KB bis 512 KB.

Der Mikroprozessor auf Hardwareebene unterstützt den Multiprogramm-Betriebsmodus des Computers, also die Möglichkeit, gleichzeitig mehrere ausführungsbereite Programme im Speicher zu haben, die vom Betriebssystem entsprechend den Algorithmen seiner Funktionsweise gestartet werden oder abhängig von besonderen Situationen, die beim Betrieb externer Geräte auftreten.

Untrennbar mit dieser Fähigkeit verbunden sind Speicherschutzkontrollen, die die Kontrolle über unbefugte Interaktionen zwischen einzelnen Programmen ermöglichen. Dazu gehören Speicherverwaltungsschutz und Privilegienschutz.

Die Hauptmerkmale des erweiterten Befehlsformats sind die Möglichkeit, jedes der Universalregister in jedem der Adressierungsmodi zu verwenden, sowie die Hinzufügung eines weiteren Adressierungsmodus – relativer Basisindex mit Skalierung. In diesem Fall wird die effektive Adresse wie folgt gebildet:

EA = (Basis) + (Index) Skala + Anzeige,

wobei (Basis) der Wert des Basisregisters ist; (Index) – Indexregisterwert; Skala – Skalierungsfaktorwert (Skala = 1,2,3,4); disp ist der im Befehl selbst kodierte Offsetwert.

Beachten Sie, dass in einer 32-Bit-Architektur die effektive Adresse normalerweise als Offset bezeichnet wird, wobei sie von dem im Befehl selbst codierten Offset (Verschiebung) unterschieden wird.

PC-Bit-Architektur.

Win64-Code vereint die Hauptfunktionen von 32-Bit-Code und enthält außerdem Änderungen im Zusammenhang mit der Erhöhung der Bittiefe. Dem Programmierer stehen zur Verfügung:

· 64-Bit-Zeiger;

· 64-Bit-Datentypen;

· 32-Bit-Datentypen;

· Win64-API-Schnittstelle.

Beachten Sie, dass 32-Bit-Datentypen mit zunehmender Bittiefe der Plattform nicht verschwanden (wie es bei 16-Bit-Datentypen beim Wechsel zu Win32 der Fall war). Dies liegt daran, dass Variablen selbst in 64-Bit-Anwendungen in den meisten Fällen keine 8 Byte Speicher benötigen, sodass die Verwendung von 64-Bit-Typen in solchen Fällen äußerst ineffizient wäre. Betriebssystem Um die Datengröße auf 8 Bytes zu erhöhen, müssten den höchstwertigen Bits Nullen hinzugefügt werden (diese Daten sind außerdem sehr unpraktisch zu lesen). Dies würde zu einer schlechten Leistung führen.

32-Bit-Zeiger erlitten ein anderes Schicksal: Sie verschwanden vollständig. Tatsache ist, dass die Verwendung von 32-Bit-Zeigern eine Begrenzung der Menge des adressierbaren Speichers mit sich bringt. Einer der Hauptvorteile des Flat-Memory-Modells (das Hauptmodell für die Programmierung von 32-Bit-Anwendungen auf der NT-Plattform), das 32-Bit-Zeiger verwendet, ist beispielsweise die Möglichkeit, Segmente von bis zu 4 GB zu erstellen. Neue 64-Bit-Zeiger ermöglichen die Adressierung von bis zu 16 TB Speicher (1 TB = 1012 MB). Dieses Volumen ist für moderne Geschäftsanwendungen durchaus gefragt.

Die Funktionen in der Win64-API wurden geringfügig geändert. Nur die Namen einiger von ihnen wurden geändert, um die 64-Bit-Plattform widerzuspiegeln. In den meisten Fällen wurden nur die Parametertypen geändert, die Argumente für Funktionsaufrufe waren. Alle anderen Vorteile (die Möglichkeit, die Verwendung von Auslagerungsdateien zu eliminieren usw.) sind entweder mit einem erhöhten Adressierungsvolumen oder mit neuen Datentypen verbunden.

Design von Systemplatinen. Formfaktor

Design des Computer-Motherboards

Hauptplatine(Englisches Motherboard, MB, es wird auch der Name des englischen Mainboards verwendet - Hauptplatine; Slang. Mutter, Mutter, Motherboard) ist eine komplexe Mehrschicht Leiterplatte, auf dem die Hauptkomponenten installiert sind persönlicher Computer(Zentralprozessor, RAM-Controller und RAM selbst, Boot-ROM, Controller der grundlegenden Eingabe-Ausgabe-Schnittstellen). In der Regel verfügt das Motherboard über Anschlüsse (Slots) zum Anschluss zusätzlicher Controller, für den Anschluss werden üblicherweise USB-, PCI- und PCI-Express-Busse verwendet.

CPU

Der Systemlogiksatz (engl. Chipsatz) ist ein Satz von Chips, der die Verbindung der CPU mit dem RAM und den Controllern von Peripheriegeräten ermöglicht. Moderne Systemlogiksätze basieren in der Regel auf zwei VLSI-Chips: „North Bridge“ und „South Bridge“.

Nord brücke(englisch Northbridge), MCH (Memory Controller Hub), Systemcontroller – ermöglicht die Verbindung der CPU mit Knoten über Hochleistungsbusse: RAM, Grafikcontroller.

FSB-Busse wie Hyper-Transport und SCI können verwendet werden, um die CPU mit dem Systemcontroller zu verbinden.

Normalerweise ist RAM mit dem Systemcontroller verbunden. In diesem Fall enthält es einen Speichercontroller. Daher hängt in der Regel die Art des verwendeten Systemcontrollers ab maximale Lautstärke RAM sowie die Bandbreite des Speicherbusses eines Personalcomputers. Der aktuelle Trend geht jedoch dahin, den RAM-Controller direkt in die CPU einzubetten (bei AMD K8 und Intel Core i7 ist der Speichercontroller beispielsweise im Prozessor integriert), was die Funktionen des Systemcontrollers vereinfacht und die Wärmeableitung reduziert.

PCI Express wird als Bus zum Anschluss eines Grafikcontrollers auf modernen Motherboards verwendet. Bisher wurden gängige Busse (ISA, VLB, PCI) und der AGP-Bus verwendet.

Südbrücke(dt. Southbridge), ICH (I/O-Controller-Hub), Peripherie-Controller – enthält Peripheriegeräte-Controller ( Festplatte, Ethernet, Audio), Buscontroller zum Anschluss von Peripheriegeräten (PCI-, PCI-Express- und USB-Busse) sowie Buscontroller, an die Geräte angeschlossen werden, die keine hohe Bandbreite benötigen (LPC – dient zum Anschluss von Boot-ROM; auch LPC). Bus zum Anschluss eines Multicontrollers (engl. Super I/O) – ein Chip, der „veraltete“ Datenübertragungsschnittstellen mit geringer Leistung unterstützt: serielle und parallele Schnittstellen, Tastatur- und Mauscontroller).

In der Regel werden North- und Southbridge als separate VLSI-Chips realisiert, es gibt aber auch Single-Chip-Lösungen. Es ist die Systemlogik, die alles bestimmt Hauptmerkmale Motherboard und welche Geräte daran angeschlossen werden können.

Direktzugriffsspeicher (auch Direktzugriffsspeicher, RAM) – in der Informatik – Speicher, Teil des Computerspeichersystems, auf den der Prozessor für eine Operation (Springen, Verschieben usw.) zugreifen kann. Entwickelt, um Daten und Befehle vorübergehend zu speichern, die der Prozessor zur Ausführung von Vorgängen benötigt. RAM überträgt Daten direkt oder über den Cache-Speicher an den Prozessor. Jede RAM-Zelle hat ihre eigene individuelle Adresse.

RAM kann als separate Einheit hergestellt oder in das Design eines Ein-Chip-Computers oder Mikrocontrollers integriert werden.

Boot-ROM – speichert Software, die sofort nach dem Einschalten ausgeführt wird. Typischerweise enthält das Boot-ROM das BIOS, kann aber auch Software enthalten, die innerhalb des EFI-Frameworks ausgeführt wird.

Merkmale der 64-Bit-MP-Architektur


5.1. Itanium 2 Intel

Der Prozessor wurde von Grund auf neu entwickelt und gleichzeitig in zwei Versionen: von Intel- und Hewlett-Packard-Ingenieuren. Allerdings basierten beiden Chips natürlich die gleichen Ideen, da sie gemeinsam geschaffen wurden und beide die Gründer derselben Familie werden sollten. Die festigende Zusammensetzung war natürlich eine einzige Ideologie, die CISC ersetzte – EPIC (Explicitly Parallel Instruction Computing), und eine neue Architektur – IA-64, die eine Reihe von Anweisungen, eine Beschreibung von Registern und andere ähnliche Dinge umfasste. Allerdings ist die Architektur eine veränderliche Sache; denken Sie nur daran, wie sich CISC-Prozessoren wie 8086 und i80486, die beide auf 80x86 basieren, voneinander unterscheiden.
Das Gleiche gilt für Merced und McKinley, Itanium und Itanium 2 – beide basieren auf der gleichen Ideologie, aber in unterschiedlichen Architekturvarianten. Einst ereignete sich im Allgemeinen die gleiche Geschichte mit dem Pentium und dem Pentium Pro. Jedoch, Gemeinsamkeiten die hatten sie, und die hatten sie auch, EPIC ist dafür „verantwortlich“. Zunächst geht es um die vollwertige Superskalarität, also die Fähigkeit, mehrere Anweisungen gleichzeitig auszuführen. Warum der Prozessor natürlich ausführende Module enthält – für Operationen mit Ganzzahlen, Gleitkommazahlen usw.
Im Gegensatz zum Pentium und seinen Nachfolgern, die den Code selbst verstehen, verlassen sich EPIC-Prozessoren stark auf den Compiler, der den Code selbst analysieren muss, um die optimalen Stellen für die Parallelisierung seiner Ausführung zu finden und dem Prozessor diese Informationen bereitzustellen. Aus diesem Grund wird es „explizit“ verwendet – der Prozessor selbst sollte nicht versuchen zu verstehen, was parallel ausgeführt werden kann und was nicht usw. - Der Compiler wird ihm das alles im Voraus erklären. Dazu kommen leistungsstarke Mechanismen zur Vorhersage von Übergängen, zur Vorausführung von Codeteilen, zum Vorladen von Daten und Ähnlichem – die Belastung der Ausführungseinheiten sollte so gleichmäßig wie möglich verteilt werden.
Das Problem mit Registern wurde radikal gelöst, deren Anzahl um ein Vielfaches erhöht wurde: In Itanium beträgt ihre Anzahl 128 für allgemeine Zwecke (Abb. 1), 128 für die Speicherung von Gleitkommazahlen, 8 Übergangsregister und 64 für verantwortliche Register ra - Bot von Vorhersagemechanismen. Hier ist alles klar: Diese Anzahl an Registern, und sogar wirklich 64-Bit-Register, reicht aus, um alle erforderlichen Nummern für eine angemessene Anzahl von Ausführungsmodulen zu speichern. Itanium, das erste Mitglied der Familie, verfügt nur über fünf solcher Register – zwei Ganzzahlregister, zwei für Speicheroperationen und vier für Gleitkommaoperationen. Der physische Speicher wird durch 44-Bit-Zahlen angesprochen, was sein Volumen eigentlich auf „nur“ 17,6 Terabyte begrenzt; Gleitkommaeinheiten arbeiten mit Zahlen in 82-Bit-Darstellung.

Intel hat die Idee, einen 32-Bit-80x86-Kern in Hardware zu implementieren, aufgegeben, da dies eine zu ineffiziente Nutzung der Chipfläche darstellt. Um Itanium 80x86-Code ausführen zu können, wurde ein Übersetzungssystem entwickelt, das 80x86-Code im Handumdrehen in IA-64 konvertiert.
Offensichtlich ist die Leistung einer solchen Lösung unter sonst gleichen Bedingungen geringer als die eines reinen x86-Prozessors, der mit derselben Frequenz arbeitet. Eine schnelle Ausführung von x86-Programmen erwartete jedoch niemand von Itanium – die Unterstützung dieser Architektur dürfte eher ein Kostenfaktor der Übergangszeit sein. Fakt ist jedoch: Für die Lösung von 32-Bit-Problemen ist diese Familie nicht geeignet. Es ist jedoch unwahrscheinlich, dass jemand Itanium für solche Zwecke verwenden wird, wenn er über eine vollwertige 64-Bit-Software verfügt.
Darüber hinaus war der Itanium selbst wie der Pentium Pro größtenteils ein Pilotprojekt, sodass der Prozessor insgesamt eher als Demonstration der Leistungsfähigkeit der Architektur angesehen werden sollte. Charakteristisch ist, dass der Chipsatz für Itanium, 460GX, nur PC100 SDRAM als Speicher unterstützt, was etwas über die Geschwindigkeit aussagt, mit der der Prozessor Daten verarbeiten kann. Andererseits ist jedoch die Schnittstelle mit RAM wird durch einen sehr großen L3-Cache kompensiert – 2 oder 4 MB, der bei voller Prozessorfrequenz (733 oder 800 MHz) mit einer Bandbreite von bis zu 12,8 GB/s arbeitet.
Eine weitere Aufgabe für Itanium bestand darin, das Problem mit den Compilern zu lösen – schließlich sind EPIC-Prozessoren, wie bereits erwähnt, stark von ihnen abhängig. Im Gegensatz zu Compilern für 80x86-Prozessoren, die nahezu keinen Einfluss auf deren Leistung hatten, sind Compiler hier vollwertige Partner des Prozessors – schließlich versorgen sie ihn mit Informationen, die für die Arbeit äußerst notwendig sind und deren Qualität davon abhängt – bestimmen die Geschwindigkeit der Ausführung dieses Programms durch den Prozessor.
Itanium 2 ist bereits ein kommerziell viel interessanteres Produkt. Der von Hewlett-Packard entwickelte Chip, der sich mit der Entwicklung von 64-Bit-Prozessoren der PA-RISC-Serie beschäftigte, erwies sich als viel fortschrittlicher. Mit einer etwas geringeren Menge an L3 (1,5 oder 3 MB) und einer etwas höheren Frequenz, 900 MHz oder 1 GHz, bietet es bei denselben Aufgaben eineinhalb bis zwei Mal mehr Leistung als Itanium. Er ist tatsächlich der erste Vertreter der IA-64-Architektur.
Eine weitere Parallelisierung ist heute auf die modischste Art und Weise geplant: Der Prozessor muss auf zwei physische Kerne umsteigen, was die Leistung zu einem einigermaßen vernünftigen Preis fast verdoppelt – zumindest wird das Ergebnis deutlich günstiger sein, als wenn die gleiche Anzahl von Führungskräftemodulen vorhanden wäre , Register usw. wurden versucht, auf einem einzigen Chip zu erreichen.

5.2. Athlon 64 AMD

Zunächst stellen wir fest, dass es sich beim Athlon 64-Prozessor genau um den 64-Bit-Desktop-Prozessor handelt, dessen Veröffentlichung AMD ursprünglich geplant hatte. Angesichts der Veröffentlichung von Hochgeschwindigkeits-Pentium-4-Prozessoren, der Einführung eines 800-MHz-Busses und der darin enthaltenen Hyper-Threading-Technologie beschloss AMD dringend, den Desktop-Markt mit einem Einzelprozessor-Opteron anzusprechen, und gab ihm den Namen Athlon 64 FX. Allerdings erwies sich der Athlon 64 FX aufgrund seiner Serverherkunft als teuer und nicht weit verbreitet. Es ist der Athlon 64, der die AMD64-Architektur für den Masseneinsatz wirklich voranbringen sollte.
Nachfolgend finden Sie Tabelle 1 mit den Spezifikationen des 64-Bit-MP Athlon 64 3200+, Athlon 65 FX-51 und Athlon XP 3200+:

Tabelle 1

* Beachten Sie, dass der Speicher im Athlon 64 und Athlon 64 FX relativ zur Kernfrequenz getaktet ist, sodass die tatsächlichen Speicherfrequenzen in diesem Fall 129,4, 157,1 und 200 MHz betragen.
Tatsächlich unterscheidet sich der Athlon 64 von seinem älteren Bruder Athlon 64 FX neben Form und Größe des Gehäuses nur im Speichercontroller. Allerdings bestehen beide Prozessoren gleichzeitig aus den gleichen Kristallen. Der Speichercontroller im Athlon 64 ist einkanalig, was sowohl seine Schwäche als auch seinen Vorteil gegenüber dem Athlon 64 FX darstellt. Der Nachteil des Single-Channel-Speichercontrollers im Athlon 64 liegt auf der Hand: Er ist eine geringere theoretische Bandbreite.
Bedenkt man, dass der Athlon 64 mit DDR400-Speicher arbeiten kann, liegt der maximale Durchsatz des in der CPU verbauten Speichercontrollers bei 3,2 GB pro Sekunde. Das ist doppelt so viel wie die gleiche Leistung des Athlon 64 FX. Der Vorteil des Athlon 64-Speichercontrollers besteht darin, dass er im Gegensatz zum Athlon 64 FX-Controller herkömmliche nicht registrierte Speichermodule unterstützt. Solche Module sind günstiger als Registermodule, haben aggressivere Timings und arbeiten schneller, selbst bei den gleichen Einstellungen wie Registermodule. Das heißt, mit der geringeren Bandbreite, die der Athlon 64-Speichercontroller bietet, weist das Speichersubsystem, das ihn verwendet, eine geringere Latenz auf, was wir weiter unten zeigen werden.
AMD Athlon 64 Aussehenähnlich wie Opteron und Athlon 64 FX.
Die Unterschiede liegen lediglich in der Markierung und in der geringeren Anzahl an Beinen auf der Rückseite, da dort Athlon 64-Prozessoren verbaut sind Motherboards mit Sockel 754 und sind nicht kompatibel mit Sockel 940-Karten, die für die CPU-Familien Athlon 64 FX und Opteron entwickelt wurden.
Zusätzlich zu den oben aufgeführten Features verfügen die neuen Athlon 64-Prozessoren über ein weiteres Feature. Diese Prozessoren unterstützen die Cool’n’Quiet-Technologie, die eigentlich von stammt mobile Optionen Abgeordneter. Im Wesentlichen handelt es sich bei Cool’n’Quiet um eine Art stromsparende Technologie PowerNow!, die schon lange im mobilen MP von AMD zum Einsatz kommt. Doch nun ist diese Technologie endlich auch bei den Desktop-Prozessoren des Unternehmens angekommen. Die Cool’n’Quiet-Unterstützung ist ein weiterer Vorteil des Athlon 64 gegenüber dem Athlon 64 FX/Opteron, der noch über keine vergleichbaren Technologien verfügt. AMD legt seit langem großen Wert auf die Reduzierung der Wärmeableitung seiner Desktop-Prozessoren.
Man muss sagen, dass das Unternehmen Intel in dieser Hinsicht längst überlegen ist: Ältere Modelle von AMD-Prozessoren geben bei maximaler Last deutlich weniger Wärme ab als ältere Pentium-4-Modelle. Außerdem nutzen die Prozessoren Technologien, die die Wärmeentwicklung bereits bei geringer Last reduzieren. Weitere MP-Familien
Athlon XP-Systeme hatten die Möglichkeit, bei der Ausführung des HALT-Befehls in den „Standby-Modus“ (Halt/Stop Grant) zu wechseln, was zu einem Rückgang der Prozessortemperatur führte, wenn die Auslastung unter 100 % lag. Nun ist AMD jedoch noch weiter gegangen. Die neuen Athlon 64-Prozessoren verfügen über ein noch intelligenteres Wärmereduzierungsschema.
Zusätzlich zu den Halt/Stop Grant-Zuständen kann der Athlon 64 seine Taktrate und Versorgungsspannung zurücksetzen, um die Wärmeableitung weiter zu reduzieren. Bei Verwendung dieser Technologie wird die MP-Taktfrequenz vom Prozessortreiber gesteuert, der sie basierend auf Daten über seine Auslastung zurücksetzt oder erhöht. Wenn der Prozessor die ihm übertragene Arbeit vollständig bewältigt und seine Auslastung weit unter 100 % liegt, ist es tatsächlich möglich, seine Taktfrequenz zu reduzieren, ohne die Funktion des Systems als Ganzes zu beeinträchtigen: Dies hat keine Auswirkungen auf den Betrieb von das System in irgendeiner Weise. Beispielsweise wird die Leistung des Prozessors im Leerlauf, beim Arbeiten in Büroanwendungen, beim Ansehen von Videos, beim Defragmentieren von Festplatten und bei ähnlichen Aufgaben nicht vollständig genutzt. In solchen Fällen schaltet der Prozessortreiber den Athlon 64 auf eine niedrigere Taktrate um. Wenn die volle Leistung des Prozessors benötigt wird, beispielsweise in Spielen, beim Lösen von Rechenproblemen, bei Datenkodierungsaufgaben usw., steigt die Prozessorfrequenz auf ihren Nennwert. Genau so funktioniert die Cool’n’Quiet-Technologie.
In der Praxis sieht es so aus. Unter normalen Bedingungen und minimaler MP-Last setzt der Prozessortreiber die Frequenz des Athlon 64 3200+ von standardmäßig 2 GHz auf 800 MHz zurück. Die Prozessorversorgungsspannung wird dann auf 1,3 V reduziert. Wie Sie sehen, wird die Taktfrequenz durch die Reduzierung des Prozessormultiplikators auf das Vierfache reduziert. Das liegt übrigens auch daran, dass Athlon 64 3200+ Prozessoren mit einem unfixierten Multiplikator ausgeliefert werden. In diesem Modus arbeitet der Prozessor weiter, bis seine Auslastung 70–80 % überschreitet. Insbesondere konnten wir die Defragmentierung der Festplatte, die Wiedergabe von MP3-Dateien (Audiodateien) und die Anzeige von MPEG-4 (Videodateien) gleichzeitig ausführen, während der Prozessor weiterhin mit 800 MHz arbeitete.
Wenn die Belastung des Athlon 64-Prozessors bei einer Frequenz von 800 MHz den zulässigen Grenzwert überschreitet, schaltet der Treiber den MP in den nächsten Zustand, in dem die Frequenz des Athlon 64 3200+ 1,8 GHz beträgt und die Versorgungsspannung 1,4 V beträgt. Dies wird erneut durch die Reduzierung des Multiplikators erreicht, diesmal auf das 9-fache. Und nur wenn sich in diesem Fall herausstellt, dass die Prozessorlast erneut zu hoch ist, schaltet der Treiber den MP in den Normalmodus: Frequenz 2 GHz, Versorgungsspannung – 1,5 V.
Beachten Sie, dass in Modi mit reduzierter Leistung und Frequenz die Wärmeableitung des Athlon 64 3200+ Prozessors stark abnimmt. Zum Vergleich präsentieren wir Tabelle 4 mit der Wärmeableitung dieses Prozessors in den Hauptmodi.

Somit können Sie durch den Einsatz der Cool’n’Quiet-Technologie die Prozessortemperatur nicht nur in Leerlaufmomenten, sondern auch bei einer Reihe von Aufgaben, die keine maximale Leistung des MP erfordern, deutlich senken. Wichtig ist, dass die Leistung des MP bei Aufgaben, die Prozessorressourcen erfordern, überhaupt nicht abnimmt. Dadurch kann beim Einsatz von Kühlsystemen mit drehzahlgeregelten Lüftern durch den Einsatz der Cool’n’Quiet-Technologie der Geräuschpegel deutlich gesenkt werden.