SMP

Symmetric Multiprocessing - Symmetrisches Multiprozessorsystem (SMP). Bei paralleler Verarbeitung von Rechenanforderungen durch einen Multiprozessorrechner kommt SMP zum Einsatz. SMP regelt die Prozessverteilung, wobei die Prozessoren sich das  Betriebssystem, den Hauptspeicher und die Busse teilen. SMP ist im Speziellen bei Multi-User Anwendungen von Vorteil, beispielsweise um die Transaktionslastenverteilung bei einer Datenbank zu regeln.  Beim Asymmetrischen Multiprocessing erhält jeder Prozessor eine bestimmte Aufgabe. Das SMP ist seit den 80ern die Standardarchitektur bei Maschinen bis zu 16 Prozesoren.  Jeder Prozessor muss theoretisch jeden Prozess ausführen können. Dadurch wird bei grösseren Systemen der Speicherbus zum Flaschenhals. SMP ist auch nützlich besonders bei Anwendungen, bei denen mehrere Anwender auf eine  einzige Datenbank zugreifen. Denn in diesem Fall ist die Lastverteilung ausschlaggebend.  Beispiele für Prozssoren mit SMP sind der UltraSPARC T1 (Niagara), UltraSPARC T2 (Niagara II) oder der Rock Prozessor von Sun Microsystems.                                               
Siehe auch:    Multithreading   Paralleler-Server   Sun-Microsystems   SPARC   Simultaneous-Multithreading   Hyper-Threading   Thread   Task   

  Sun-Microsystems

Gründungsphase von SUN
Stanford University Network. Sun Microsystems ist ein US-Amerikanischer Software- und Hardware-Hersteller. Seit der Gründung 1982 durch den Deutschen Andreas von Bechtolsheim und den US-Amerikanern Scott McNealy,  Bill Joy und Vinod Khosla entwickelte sich Sun zu einem der erfolgreichsten Unternehmen der Computerindustrie. 1984 kam der Durchbruch mit dem Netzwerkfilesystem NFS (Network File System). 

SPARC-Architektur, SPARCstation und Solaris
Weitere grosse Erfolge sind die SPARC Workstations mit den RISC-Prozessoren von Sun: SPARC (Scalable Processor ARChitecture)  und dem Betriebssystem Solaris (SunOS). SPARC International ist eine Non-Profit Organisation mit dem Unternehmensziel, die offene SPARC-Architektur weiter zu entwickeln. SPARC International wurde 1989 gegründet. Sun Microsystems wurde damit zu  einem der grössten Hersteller von Workstations mit dem UNIX-Betriebssystem. Die SPARC-Prozessoren wurden von Texas Instruments und Fujitsu gefertigt.  Erfolge erzielte Sun Microsystems mit den Workstations SPARCstation: diese mit der SPARC-Architektur ausgerüstete Workstations gab es in unterschiedlichen Ausführungen: die SPARCserver (als Desktop, Rackmount Server oder Deskside)  waren identisch zu den SPARCstations, jedoch ohne Video Interface usw. Die SPARCstation wurde 1989 eingeführt: mit der SPRACstation 1 kam die Sun-4c Architektur, eine Variante der Sun-4 Architektur. Die SPARCstation war bis zur SPARCstation 20 und  der Ablösung durch die UltraSPARC-Architektur (1995) sehr erfolgreich, da Motorola es versäumte, modernere Prozessoren herzustellen. Aufgrund des kompakten Aufbaus wurden die SPARCstations "Pizzabox-Systeme" oder "Launchbox-Systeme" genannt.  Pizzabox-Systeme waren: SPARCstation 1 (Codename: Campus, Plattform: Sun 4c, CPU: Fujitsu MB86901A oder LSI L64801, 20 MHz, 64 MB RAM) SPARCstation 1+, SPARCstation 2 (Codename: Calvin, Plattform: Sun 4c, CPU Cypress CY7C601, 40 MHz, 128 MB RAM),  SPARCstation 4 (Perigee, Sun 4m, microSPARC II, 70 - 110 MHz, 160 MB RAM), SPARCstation 5 (Codename: Aurora, Plattform: Sun 4m, CPU: microSPARC II oder TurboSPARC, 70 - 170 MHz, 256 MB RAM),  SPARCstation 10 (Campus-2, Sun 4m, SuperSPARC I/II oder HyperSPARC, 33 bis 200 MHz, 512 MB RAM) und SPARCstation 20 (Kodiak, Sun 4m, SuperSPARC I/II oder HyperSPARC, 50 bis 200 MHz, 512 MB RAM). Lunchbox-Systeme sind:  SPARCstation IPC, SPARCstation IPX, SPARCclassic, SPARCstation LX, SPARCstation ZX und SPARCclassic X.  1995 wurde die objektorientierte und plattformunabhängige Programmiersprache JAVA veröffentlicht und die 32-Bit SPARC Architektur auf 64-Bit erweitert und unter der Bezeichnung UltraSPARC vertrieben. 

UltraSPARC
Die UltraSPARC-Architektur verfügt über einige Erweiterungen wie eine tiefere Pipeline und SIMD-Befehle (Single Instruction Multiple Data): Visual Instruction Set (VIS).  VIS wurde auch in den SPARC64-Prozessoren implementiert. VIS 1.0 und  VIS 2.0 sowie VIS 3.0 für die sich in der Entwicklung befindlichen Rock Prozessoren. Die Sun Ultra Serie wurde sowohl mit SBus (Sun Ultra 1 und Ultra 2) sowie mit PCI- und ATA-Bus ausgerüstet. Die Ultra Workstations und Ultra Enterprise Workstations  ersetzten die SPARCstation sowie die SPARCcenter und SPARCserver Workstations und Server. Die Ultra und Enterprise Serie wurde abgelöst von Sun Blade (Workstations) und Sun Fire (Servers). 

Rock-Prozessor
Der Rock Prozessor ist eine Weiterentwicklung des UltraSPARC T1 (Codename: Niagara) und UltraSPARC T2 (Niagara II) Prozessors. Er ist auch Multithreading-fähig und  verfügt über mehrere Kerne (Multi-Core), jedoch ist er leistungsfähiger als die Nigara-Prozessoren durch schnellere Gleitkommaberechnungen, erweiterte SMP-fähigkeiten (Symmetrisches Multiprozessorsystem, Symmetric Multiprocessing)  und einer gesteigerten Leistung pro Thread. Im Rock Prozessor wird neben VIS 3.0 der SPARC V9 64-Bit Befehlssatz implementiert.

OpenOffice und Führungswechsel 
1999 wurde von der Firma Star Division StarOffice (ein Office Paket) erworben. StarOffice wurde im Jahr 2000 unter der LGPL lizenziert und firmiert heute als OpenOffice.org. Scott McNealy gab im April 2006 sein Amt des geschäftsführenden  Vorstandes, das er seit 1984 inne hatte, an Jonathan Schwartz ab. McNealy bleibt aber weiterhin Verwaltungsratschef.  Das NFS heisst heute auch Network File Service

Übernahme durch ORACLE
2010 wurde Sun Microsystems endgültig von ORACLE übernommen. Offen bleibt, ob ORACLE die MySQL-Datenbank weiter pflegen wird und der Open Source Status von MySQL erhalten bleibt.  Der derzeitige CEO von Sun (01/2010), Jonathan Schwartz, wird zurücktreten und ist wohl das erste 'Opfer' der Übernahme durch ORACLE. Angeblich soll es für Schwartz kein Auskommen neben dem dominanten Larry Ellison (CEO und Gründer von ORACLE) geben.         
Siehe auch:    SPARC   Solaris   Java   OpenOffice-Org   NFS   RISC   SBus   Workstation   Andreas-von-Bechtolsheim   ORACLE
Link: http://de.sun.com


  Hyper-Threading

Hyper-Threading wurde von Intel entwickelt. Die Abarbeitung von Multithreaded Anwendungen werden optimiert indem die Ressourcen der CPU besser ausgenutzt werden.  Die Threads werden auf 2 logische Prozessoren aufgeteilt und vom Betriebssystem mit Hilfe von (S)MP-Verfahren (Symmetrisches Multiprozessorsystem) abgearbeitet. 

Hintergrund für die Einführung der Hyper-Threading-Technology
Verschiedene Möglichkeiten die Performance des Prozessors zu erhöhen wurden ausprobiert: Steigerung der Taktzyklen, Prefetching oder erweiterte  L1- bzw. L2- oder L3-Caches. Jedoch ergaben sich daraus einige Probleme: die mögliche Leistungssteigerung durch schnellere Taktzyklen erfolgt nicht linear zur Taktzahl sondern unterproportional und bedingt auch einen höheren Stromverbrauch und Abwärme.  Die Abwärmeproblematik bewog Intel dann auch zur Aufgabe der NetBurst-Architektur. Die 20 Pipeline-Stufen des Pentium 4 bewirken zudem eine wachsende Anzahl von Cache Misses (Cache Hit:  Daten sind bei der Anfrage im Cache vorhanden, Cache Miss: Daten sind bei der Anfrage nicht im Cache vorhanden) sowie Interrupts und fehlerhafte Sprung-Voraussagen. Eine Vergrösserung der Caches ist nicht wirklich effizient:  neben Kostensteigerungen in der Produktion wachsen mit grösseren L1- oder L2-Caches die Anforderungen zur Aufrechterhaltung höherer Taktzyklen oder geringerer Antwortzeiten.

Es wurde versucht, die Anzahl der Instruktionen pro Taktzyklus durch  Instruction-Level-Parallelism (ILP) zu erhöhen. Massnahmen dazu waren: Instruction Pipelining, Superskalarität, Out-of-Order-Execution, Registerumbenennung, Sprungvorhersagen und Speculative Execution.  Die parallele Ausführung mehrerer Threads wird durch replizierte Ressourcen bei modernen Prozessoren unterstützt, ist jedoch nicht immer sehr effektiv. Die Strategie der Out-of-Order Execution beispielsweise ermöglicht bei  superskalaren Prozessoren zwar Befehle ausserhalb der seriellen Reihenfolge auszuführen und damit die Pipelines besser auszulasten, bedingt jedoch, dass immer genügend Befehle zur Verfügung stehen, um die Prozessor-Ressourcen optimal auszulasten.  Die Tendenz, Errungenschaften aus dem Serverbereich auf den Desktopbereich zu übertragen trägt auch beim Hyper-Threading Rechnung: im Serverbereich wird schon länger mit zwei vollständigen Prozessoren (2-Prozessor-Systeme) gearbeitet, die in der Lage  sind, 2 Threads parallel abzuarbeiten.

Hyper-Threading-Technologie
Hyper-Threading wurde bei den Intel Prozessoren mit NetBurst Architektur eingeführt und ist eine Variante des hardwareseitigen Multithreading.  Die Hyper-Threading-Technology (HTT) funktioniert nur bei Multithreaded-Prozessoren (Mehrfädige Prozessoren). Dazu besitzt der Prozessorkern mehrere Registersätze und Programmzähler. Aus einem physischen Prozessor werden 2 logische Prozessoren, die  sich als solche auch beim Betriebssystem ausgeben. Beim Intel Pentium 4 Prozessor mit Northwood Kern wurden Hyper-Threading Ressourcen aktiviert (die auch schon beim Willamette-Kern vorhanden waren). Dabei handelt es sich um einen Trace Cache Next IP,  Instruction Streaming Buffers, ein Return Stack Predictor, Register Alias Tables, einen Next Instruction Pointer, ein Instruction TLB (Translation Lookaside Buffer) sowie Trace Cache Fill Buffers. Zudem verfügt jeder virtuelle Prozessorkern über  einen eigenen Interrupt Controller (Advanced Programmable Interrupt Controller). Der Trace Cache, die L1- und L2-Caches sowie die Instruction Queues, Memory Operation Queues und der Key Buffer werden aufgeteilt  (Ressourcen-Sharing). Ein Prozessorkern ist damit in der Lage, Threads simultan zu verarbeiten. Threads werden in mehrere Teilaufgaben zerlegt und durch parallel arbeitende Pipeline-Stufen abgearbeitet. Dazu  sind mehrere Registersätze und ein angepasstes Steuerwerk vorhanden. Ein Thread besitzt dazu einen eigenen Registersatz mit Stackpointer und Programcounter. Damit Hyper-Threading funktioniert, sollte das Betriebssystem SMP-Architekturen unterstützen.  Denn die CPU bzw. die Prozessorkerne sind beim Hyper-Threading softwaretechnisch ähnlich gesteuert wie ein SMP-System. Weiterhin sollte das Betriebssystem Multitasking-fähig sein und Kernel-Level-Threads unterstützen. 

Hyper-Threading Ressourcen werden unterteilt in:

1. Replicated Ressources: Replicated Ressources sind nachgebildete Ressourcen, bei denen die beiden virtuellen Prozessorkerne (Siblings - Geschwister) über einige der Ressourcen als eigene  Kopie verfügen. Dazu gehören ein vollständiger Registersatz mit Stackpointer und Programcounter (Befehlszählregister, Befehlszähler, Programmzähler, Instruction Pointer). 

2. Partitioned Ressources (unterteilte Ressourcen): die Ressourcen werden unter den Siblings aufgeteilt. Dazu gehören der Record Buffer, die Load/Store Buffer und die Instruction Queues. 

3. Shared Ressources (geteilte Ressourcen): die Siblings müssen sich Ressourcen mit anderen Siblings aufteilen. Oftmals können sie nur von einem Sibling gleichzeitig verwendet werden. Dazu zählen u.a. die ALU und die FPUs  (Floating Point Unit). Wenn das Betriebssystem die notwendigen Voraussetzungen erfüllt, können Standard-Anwendungen um bis zu 20% beschleunigt werden und entsprechend optimierte Anwendungen um bis zu 33%. 

Hyper-Threading Unterstützung durch Prozessoren und Betriebssysteme
Zu den Prozessoren, welche Hyper-Threading unterstützen gehören: Pentium 4 (ab Northwood mit 3066 MHz, Prescott, Prescott 2M und Cedar Mill),  Pentium Extreme Edition (Dual Core Prozessor Pentium D mit freigeschaltetem Hyper-Threading: Smithfield und Presler, Pentium EE) und die XEON 603/604.  Bei AMD: Athlon 64 X2, Opteron Dual Core Prozessoren und der Phenom. Betriebssysteme, welche Hyper-Threading unterstützen, sind: Windows XP, Windows Vista, Windows Server 2003, FreeBSD und Linux ab Kernel-Version 2.4.17.  Windows 2000 unterstützt zwar Hyper-Threading, kann es aber nicht effizient ausnutzen, da Windows 2000 nicht über eine Unterscheidung zwischen physikalischen und logischen Prozessoren verfügt.  Compiler, welche Hyper-Threading-fähigen Code erzeugen sind: die Intel-Compiler und die GNU Compiler Collection (GCC).  Voraussetzung ist jedoch, dass die Anwendungen parallelisierbar sind: die Abarbeitung eines Threads darf nicht abhängig sein vom Ergebnis eines anderen Threads.
Siehe auch:    Multithreading   Simultaneous-Multithreading   NetBurst   Mehrkernprozessor   Pipeline-Architektur   Superskalar   Thread   Register   ALU   SMP

  Paralleler-Server

Ein paralleler Server setzt SMP (Symmetric Multiprocessing - Symmetrisches Multiprozessorsystem) ein, um seine Leistungsfähigkeit zu verbessern.                                                         
Siehe auch:    SMP   Multithreading   Hyper-Threading   Simultaneous-Multithreading   Server   Client-Server   Managed-Server