| 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 | |||||
| Siehe auch: SMP Multithreading Hyper-Threading Simultaneous-Multithreading Server Client-Server Managed-Server | |||||