Home | Computer | Prozessor Basics | Site Map |
Schon immer war man bestrebt die Geschwindigkeit eines Rechners zu erhöhen, dazu gibt es viele Ansätze, wie RISC oder CISC, oder paralleles Rechnen. Dieser Artikel ist dem Bestreben gerichtet, durch schnelleren Zugriff auf den Speicher die Geschwindigkeit zu steigern. Es gibt eine vertiefende Version dieses Artikels auf dieser Website.
Jeder Prozessor verfügt über einen lokalen Speicher. Dieser ist fest an den Befehlssatz des Prozessors gekoppelt und wird Register genannt. Je nach Typ des Prozessors können dies sehr wenige oder sehr viele Register sein. Sie dienen vor allem dem Aufnehmen von Zwischenergebnissen und haben den Vorteil, dass man sie sehr schnell ansprechen kann, weil sie direkt an der Logik des Prozessors angebracht sind. Weiterhin braucht man nur wenige Bits um sie zu adressieren. Das hält den Code klein. Daher verfügen heute neue Prozessoren über mehr Register als früher. Während der 8086 Prozessor über 8 Register verfügte, so hat der Itanium Prozessor 128 Stück.
Die Breite der Register (in Bits) definiert auch als was man den Prozessor tituliert (8 Bit, 16 Bit oder 32 Bit Prozessor). Wie weiter unten erläutert ist die Breite des Datenbusses und des Adressbusses dafür nicht geeignet, da diese kleiner oder größer als die interne Registerbreite sein können.
Leider ist dieser Speicher nicht ausreichend für größere Daten. Programme kann man überhaupt nicht in Registern ablegen. Man muss ihn mit externem Speicher erweitern, und dieser kann langsamer als der Prozessor sein. Dieser Artikel beschäftigt sich mit den Möglichkeiten externen Speicher möglichst schnell an den Prozessor anzusprechen.
Jeder Prozessor hat die Fähigkeit externen Speicher anzusprechen. Er tut dies über drei Bussysteme:
Dies sind Leitungen vom Prozessor zum Speicher, über den Daten zum Prozessor transferiert werden. Idealerweise ist dieser genauso breit wie die Register im Prozessor. Doch davon kann es Abweichungen geben. So gab es früher Versionen des 16 Bit Prozessors 8086 und des 32 Bit Prozessors 80386, welche einen halbierten Datenbus hatten. Dieser war beim 8088 Prozessor (8086 mit 8 Bit Datenbus) und 386 SX (386 Prozessor mit 16 Bit Datenbus) kleiner als die internen Register, weshalb die Prozessoren zweimal auf den Speicher zugreifen mussten um einen Wert in ein Register zu laden. Diese Vorgehensweise kostete zwar Zeit, hatte aber den Vorteil, dass man preiswertere Bausteine benutzen konnte, denn alle Peripheriebausteine auf dem Motherboard mussten die Datenbusbreite unterstützen.
Zu dieser Zeit gab es noch keinen Chipsatz und ein Motherboard enthielt 30-60 einzelne Chips, teilweise Schnittstellenbausteine wie für serielle Schnittstelle, parallele Schnittstelle, teilweise Erweiterungen des Prozessors wie DMA Zugriff, Zeitgeber und Speicherverwaltungseinheit (MMU), größtenteils aber TTL Bausteine zum Selektieren von Adressen und Datenleitungen. War die Breite des Datenbusses einfacher so war auch das Design des Mainboards einfacher und man konnte schon eingeführte Bausteine für die letzte Prozessorgeneration benutzen. Beide Prozessoren waren die ersten ihrer Architektur Als diese eingeführt war, und auch die Preise für Peripheriebausteine mit der neuen Datenbusbreite sanken, verschwand dieses Konzept, denn es verlangsamte den Prozessor um 40-50 %. Historisch bedeutsam ist der 8088 Prozessor, der im ersten IBM PC steckte. Obgleich der weniger leistungsfähig als der 8086 Prozessor war, wählte ihn IBM um ihren größeren Rechnern keine interne Konkurrenz zu schaffen.
Umgekehrt transferiert der Pentium 32 Bit Prozessor 64 Bit auf einmal. Der Vorteil ist dabei, dass beim nächsten Zugriff schon die Daten vorliegen, man kann also einen Speicherzugriff einsparen und so die Geschwindigkeit steigern. Andere Architekturen haben noch breitere Busse und früher hatten Großrechner sogar 256 oder 512 Bit breite Datenbusse aus diesem Grund. Dies war bei CPUs die einen ganzen Schrank belegen auch kein Problem. Auf einem PC Mainboard ist nicht soviel Platz für die nötigen Leitungen vorhanden. Liegt der Speicher direkt an der CPU wie es bei Grafikkarten der Fall ist, so findet man auch beim PC 128 oder 256 Bit breite Datenbusse.
Dieser Bus dient dazu dem Speicher mitzuteilen, von welcher Speicherstelle der Daten haben möchte. Jeder Prozessor hat einen Adressbus fester Breite, der nicht vollständig belegt sein muss. Erst wenn eine Adresse über den Adressbus am Speicher anliegt kann dieser Daten transferieren. Bei 32 Bit Prozessoren ist der Adressbus üblicherweise auch 32 Bit breit. Bei 64 Bit Prozessoren dagegen kleiner (40-48 Bit), dies sind immer noch 256-65436 mal mehr Speicher als ein 32 Bit Prozessor adressieren kann. Bis zum Einführen von molekularen Speichern gäbe es nicht genügend Silizium für den vollen Adressraum eines 64 Bit Prozessors. Dagegen hatten Prozessoren mit kleiner Registerbreite oft einen breiteren Adressraum als die Registerbreite. So adressierten 8 Bit Prozessoren mit einem 16 Bit Adressbus und 16 Bit Prozessoren mit einem 20 oder 24 Bit Adressbus. Sonst wäre für beide Prozessoren der Adressbus zu klein für anspruchsvolle Programme, den ein 8 Bit Adressbus erlaubt nur 256 Bytes lange Programme und ein 16 Bit Adressbus 64 KByte große Programme.
Über diesen Bus tauschen Speicher und Prozessor ihre Bereitschaft für die Übernahme von Daten und das Vorhandensein von Adressen auf dem Bus aus. So signalisiert der Prozessor durch ein Signal auf dem Steuerbus, das eine gültige Adresse auf dem Adressbus anliegt und der Speicher signalisiert durch ein anderes Signal, das Daten auf dem Datenbus anliegen. (Schreiben) Dasselbe Signal kann vom Speicher benutzt werden um anzuzeigen, dass nun Daten auf dem Datenbus zum Abholen bereit sind. (Lesen) Für eine Kommunikation zwischen Prozessor und Speicher sind daher 4 Zyklen (Takte) notwendig in denen Daten und Adressen angelegt werden und Steuersignale gesetzt werden.
Im Laufe der Zeit gab es sehr verschiedenen Speicher. In den fünfziger bis Anfang der siebziger Jahre war Magnetkernspeicher der verbreitetste Speicher. Dies sind sehr kleine (1-3 mm) große Eisenkerne die auf einem Gitter aufgespannt wurden. Bei diesen wurde die Information magnetisch gespeichert. Dieser Speicher war langsam, aber er verlor die Information auch nach dem Ausschalten nicht.
Seit Beginn der siebziger Jahre hat sich Halbleiterspeicher durchgesetzt. Man unterscheidet zwei Technologien: Statischen (SRAM) und Dynamischen Speicher. (DRAM)
Statischer Speicher benutzt Transistoren um Daten zu Speichern. Für jeweils ein Bit braucht man 4 Transistoren, wozu dann noch 2 oder 4 Transistoren für Anbindung an die Adressleitungen und das Schreiben / Auslesen hinzukommen. Je nach Technologie braucht man für ein Bit also 6-8 Transistoren, wobei der Speicher mit 8 Transistoren schneller ist dafür um Drittel mehr Platz braucht.
Dynamischer Speicher ist einfacher aufgebaut. Es handelt sich um einen Kondensator und einen Transistor. Der Transistor lässt Ladung zum Kondensator passieren oder nicht. Dadurch kann man den Kondensator beschreiben oder auslesen. Der Kondensator ist technisch noch einfacher als ein Transistor zu realisieren, es ist einfach eine tief in das Silizium eingebrachte Dotierung. Er speichert die Ladung. Bei einem 64 MBit Speicher sind es etwa 500.000 Elektronen die ein Bit speichern.
Gegenüber dem statischen Speicher braucht man für ein Bit nur ein Viertel des Platzes und die Herstellung ist wesentlich einfacher. Die Bezeichnungen "statisch" und "dynamisch" kommen von einer Eigenschaft des dynamischen Speichers: Er verliert die Ladung langsam. Sie diffundiert in das Silizium und so muss ein dynamischer Speicher mehrere Tausend Mal pro Sekunde "aufgefrischt" werden. Während eines solches Refreshzyklus wird die Ladung einer Zelle ausgelesen und verstärkt zurück geschrieben. Bei Taktfrequenzen von mehreren Gigaherz spielt es allerdings keine Rolle, dass der Speicher mehrere Tausend mal pro Sekunde nicht ansprechbar sind, da zwischen einem Refreshzyklus einige 10.000-100.000 Speicherzugriffe erfolgen können.
Beide Speicher verlieren aber ihren Inhalt beim Ausschalten. Da der dynamische Speicher erheblich preiswerter als der statische war verdrängte er Ende der siebziger Jahre den statischen Speicher. Selbst Seymour Cray der vorher nur statische Speicher einsetzte, brachte eine Version der Cray 1 heraus, die auf normalem DRAM basierte, als Kunden immer mehr Speicher forderten.
Bei der Entwicklung der Prozessoren stieg der Takt immer weiter an. Hatte im Jahre 1978 der 8086 Prozessor (Vorfahr des Pentium 4) noch eine Taktrate von 5 MHz, so liegt die höchste Taktrate beim Pentium 4 im Juli 2004 bei 3400 MHz. In den letzten 26 Jahren ist die Taktrate also um den Faktor 680 angestiegen. Die Zugriffszeit auf den Speicher aber nur von 250 ns auf 40 ns gesunken, also den Faktor 6.
Das war problematisch, denn so musste der Prozessor auf den Speicher warten. Daher hat man sich einige Tricks einfallen lassen, die man sich von den Großrechnern abgeschaut hat, die dasselbe Problem schon 10-20 Jahre vorher hatten.
Das erste war beim 8086/88 Prozessor eine Entkopplung von Ausführungseinheit und Buseinheit, die Daten vom Speicher holte. Anders als etwa der Vorgänger 8080 konnte die Bus Interface Unit (BIU) parallel zur Ausführungseinheit (EU) arbeiten und bei längeren Rechenoperationen die nächsten Instruktions-Bytes vorausschauend in einen schnellen Zwischenspeicher (Prefetch Queue) laden. Bei Programmverzweigungen war diese Arbeit zwar umsonst und die BIU musste den laufenden Prefetch-Zugriff zunächst beenden, die spekulativ geladenen Bytes verwerfen und dann erst konnte sie von der neuen Adresse die Instruktionen nachladen. Das dauerte etwas länger als Prefetch-freie Techniken, aber im Mittel brachte diese Methode doch einen deutlichen Performancegewinn.
Auch fürs Schreiben von Daten hatte der 8088 bereits einen Schreibpuffer, der ein Byte oder Wort samt zugehöriger Adresse zwischenspeicherte. Die EU musste dann - so der Puffer frei war - nicht warten, bis das Datum in den langsamen Speicher geschrieben wurde, sondern konnte ohne Zeitverlust die nächsten Instruktionen aus der Prefetch Queue holen, während die BIU in aller Ruhe den Schreibauftrag ausführte.
Der Nachfolger 80286 verbesserte dieses Konzept und vergrößerte die Prefetch Queue und den Zwischenspeicher. Trotzdem gab es bald 80286 Systeme die schneller als der handelsübliche Speicher waren. Wer damals einen Computer kaufte konnte dann wählen zwischen einem IBM AT mit "0,1 oder 2 Wait States". Es gab zwar Speicher, der schnell genug für ein 80286 System war. Doch dieser war teuer. So verbaute man billigen Speicher mit langsamer Zugriffszeit, wodurch der Prozessor beim Schreiben in den Speicher einen Wartetakt (Wait State) einschieben musste. War der Prozessor besonders hoch getaktet und der Speicher langsam, konnten es auch 2 Wartetakte sein.
Beim nächsten Prozessor, dem 80386 erkannte man, dass dies kein Zustand war und integrierte einen Cache Controller in den Prozessor. Der Cache Controller verwaltet einen schnellen Zwischenspeicher, den Cache. (Aus dem französischen für "Keller"). Dieser ist zusätzlich zum normalen Speicher vorhanden und kann nicht direkt vom Prozessor adressiert werden. Er besteht aus schnellen statischen Speichern. Bei 80386 Systemen hatte das RAM typischerweise 80-100 ns Zugriffszeit, der Cache aber 20-25 ns. Er war also um den Faktor 4 schneller.
Der Cachecontroller lädt präventiv Daten, die der Prozessor anfordert, wobei die kleinste Einheit eine so genannte Cacheline ist. Dies sind 16 bis 32 Bytes die hintereinander im Speicher liegen. Für jede Cacheline wird die Adresse und einige Statusbits gespeichert. Der gesamte Cache ist in solche Cachelines unterteilt. Ist er voll, so verwirft der Cachecontroller die älteste Cacheline und ersetzt diese. Braucht der Prozessor also die Daten die an Speicheradresse 4711 liegen, so wird der Cachecontroller in eine freie Cacheline die Daten von Adresse 4711 bis 4726 lesen (bei einer Cacheline von 16 Byte). Da der Prozessor höchstwahrscheinlich die nächsten Daten auch von dieser Adresse braucht (bei linearem Programmablauf) stehen diese dann schon im Cache. Dasselbe gilt für Daten die verarbeitet werden, auch diese werden in der Regel an einem Stück in einem Datensegment untergebracht oder haben im Falle von Feldern (Arrays) schon eine lineare Struktur.
Zwar kann der Cache nicht die Langsamkeit des Speichers verhindern, aber da Programme zumeist linear ablaufen ist es sehr wahrscheinlich, dass die nächsten Bytes von den folgenden Adressen kommen und sich so schon im Cache befinden. Dazu kommt, dass der Prozessor über die Prefetch Queue schon die Daten liest, bevor er sie braucht, so dass man nur selten auf den langsamen Speicher warten muss.
Die höhere Geschwindigkeit des 80486 Prozessors führte zur Integration des Caches in den Prozessor, damit dieser nahe an der Ausführungseinheit ist. Gleichzeitig führte man ein mehrstufiges Konzept ein. Der Cache im Prozessor hieß nun L1 Cache und der auf dem Motherboard L2 Cache. L steht für Level. Damit verbunden ist ein abgestuftes System. Der Cache im Prozessor kostet viele Transistoren und ist sehr schnell, aber er macht auch den Prozessor teuer. Der 80486 hatte einen Cache von 8 KByte, während der externe Cache auf dem Motherboard bei 128-256 KByte lag. Er war aus schnellen statischen RAM Bausteinen aufbaut aber schon deutlich langsamer als der interne Cache. So schaut der Prozessor zuerst im internen L1 Cache nach ob dort Daten gefunden werden. Ist dies nicht der Fall, so wird im L2 Cache nachgeschaut und erst dann vom Speicher über den L2 Cache in den L1 Cache geladen.
Caches erkennt man auf Bildern der Prozessoren meistens an den homogenen Blöcken mit einer Farbe, wie hier beim 80486 die beiden grünen Felder links.
Im Laufe der Entwicklung rückte der Cache immer näher an den Prozessor. War bei dem 80386 der Cache völlig außerhalb des Prozessors auf dem Motherboard, so hatten 80486 und Pentium nur den L2 Cache auf dem Motherboard, den L1 Cache aber im Prozessor. Beim Pentium Pro gab es einen Prozessor mit Cache auf einem Die. (Bild rechts) Dieses Modell konnte sich vor allem wegen der niedrigen Ausbeute bei den Caches nicht durchsetzen. Beim Pentium II+III befindet sich der L2 Cache auf einem Prozessormodul nahe des Prozessors, wird aber separat gefertigt. Beim Pentium 4 und Athlon Prozessor befindet er sich dagegen auf dem Prozessor. Bei einigen anderen Prozessoren wie der Xeon Linie von Intel oder dem Itanium Prozessor befindet sich auch der L3 Cache auf dem Prozessor, bei anderen Architekturen auf dem Motherboard.
Die Größe der Caches ist dabei stetig angestiegen und 2-6 MByte L3 Cache sind heute keine Seltenheit mehr. Diese Caches können bei Serversystemen, die sehr viele Prozesse gleichzeitig bearbeiten durchaus einen Performance Vorteil bringen und machen die Xeon Linie der Pentium Prozessoren auch so teuer. Dies liegt daran, dass die meisten Transistoren die ein Prozessor hat heute im Cache verbaut werden. Beim Athlon waren es z.B. 30 Millionen der 37.5 Millionen Transistoren des Prozessors. Der Itanium 2 Prozessor verfügt sogar über 275 Millionen Transistoren, von denen die meisten nur zu den Caches gehören.
Caches bestehen aus statischen Speichern und so braucht man 8 Transistoren beim L1 Cache für ein Bit und beim langsameren L2 Cache immerhin noch 6 Transistoren für ein Bit. Heute wird auch zwischen Daten und Programmspeicher unterschieden und es gibt getrennte Caches für Daten und Code. Dies liegt auch daran, dass der Code vorher vom Prozessor verarbeitet wird und der Prozessor hier versucht bei Verzweigungen voraus schauend den Code in den Cache zu laden um bei Verzweigungen nicht ausgebremst zu werden. Es gibt auch eine Geschwindigkeitsabstufung. Sie ergebt sich außer durch die Technologie auch durch die Größe - zu jedem Cache gehört ein Cachecontroller, der eine Tabelle führt welche Adressen abgecacht werden. Es wird dann die Daten dieser Adressen sowie die folgenden Bytes (heute üblich 64 Bytes) in einer Cacheline, der kleinsten Einheit aufbewahrt. Trotz trickreicher Segmentierung braucht man aber trotzdem einige Takte diese Tabelle zu durchsuchen. So hatte der L1-Cache beim Pentium II eine Latenz von 3 Takten, der L2-Cache sogar eine von Zehn Takten. Mittlerweile haben Prozessoren auch einen Level 3 Cache. Er zog mit den Mehrkern-CPUs ein. Dann hat jeder CPU-Kern einen Level 1 und 2 Cache. Alle teilen sich einen Level 3 Cache der deutlich größer ist und den Speicher anbindet. Der Level 3 Cache hat hier eine neue Aufgabe: Da er gemeinsam genutzt wird gibt es einen Codeblock in ihm nur einmal. Er kann aber mehrmals in dem L1 oder L2 Cache vorkommen - diese nehmen nur den Code auf den der Kern bearbeitet und wenn ein Programm (bei modernen Betriebssystemen üblich) laufend neu an die Kerne verteilt wird, je nachdem ob sie gerade frei sind, dann spart der Level 3 Cache Speicherzugriffe ein, da man nicht erst den Codeblock nach Änderungen in den Speicher schreiben und dann erneut auslesen muss. Zudem ist der Zugriff so schneller.
Da Caches sehr viele Transistoren brauchen sind die bei Mikrocontrollern, die auch auf Preis und geringe Verlustleistung optimiert sind heute noch eher unüblich. Doch etablieren sich bei den Mikrocontrollern auch spezielle Linien von Prozessoren die auch in Unterhaltungsgeräten oder PCs eingesetzt werden wie die XScale Linie des ARM Prozessors oder die Embedded Variante des Power PC Prozessors, die über Caches verfügen.
Nicht immer ist Cache allerdings sinnvoll. Hat ein Prozessor als Aufgabe dauernd wechselnde Daten zu verarbeiten oder greift er dauernd auf andere Speicherbereiche zu, so ist ein Cache unnötig und verteuert nur die Herstellung des Prozessors. Der erste Fall ist gegeben bei Signalverarbeitungsprozessoren welche Datenströme verarbeiten, z.B. ein komprimiertes oder verschlüsseltes Fernsehsignal aufbereiten oder eine DVD in einer MPEG Komprimierung abspielen. Diese Prozessoren werden auch teilweise in Harvard Architektur hergestellt, d.h. es gibt einen getrennten Programm und Datenspeicher. Der Programmspeicher besteht dann aus teuren statischen RAM ist aber nicht sehr groß, der Datenspeicher dagegen aus normalen SD-RAM.
Der zweite Fall sind Grafikkartenprozessoren. Sie verarbeiten sehr große Datenmengen und dabei greifen Sie dauernd auf andere Speicherbereiche zurück um die Bildschirmdaten zu errechnen, Texturen einzublenden und Daten zu puffern. Im Prinzip braucht man bei Grafikkarten also einen Cache der in etwa so groß ist wie der Grafikspeicher. Das ist nicht bezahlbar. Grafikkarten setzen daher sehr schnelles normales DDR RAM ein (mehr Geschwindigkeit bedeutet hier oft einen Preisunterschied von 100 Euro oder mehr pro Karte) und verfügen daher über einen sehr breiten Datenbus von 256 Bit. Auch hier haben preiswertere Karten dann oft nur einen 64 oder 128 Bit Bus. Dies vereinfacht die Platinenfertigung und die Chipherstellung.
Auch wenn die Zugriffszeit bei den RAM Bausteinen nicht in dem Maße gesteigert werden konnte wie bei den Prozessoren der Takt so gab es doch Fortschritte. Als erstes begann man mehr Daten auf einmal zu transferieren. Anstatt 32 Bit nun 64 Bit. Grafikprozessoren haben heute sogar 128 und 256 Bit breite Datenbusse.
Schon früher benutzte man den Trick des Page Interleavings. Normalerweise deckt ein Speicherbaustein einen ganzen Speicherblock ab z.B. den von Adresse 0 bis 4000. Da der Prozessor meist linear die Daten braucht, spricht er dauernd diesen Baustein an und muss jedes Mal auf die Daten warten. Hat man zwei Speicherblöcke bei denen der eine alle ungeraden Adressen abdeckt (1,3,5,7...3999), der zweite aber alle geraden (0,2,4,... 4000) so spricht der Prozessor beide Bausteine abwechselnd an. Jeder Baustein hat also doppelt so viel Zeit die Daten auf den Bus zu legen. Bei heutigen Technologien gibt es oft einen 4-8 Page Interleave. Also jeder 4 te bis 8 te Zugriff erfolgt wieder auf denselben Baustein. Dagegen arbeitete die Cray 1M mit einem 64 Page Interleave. Nur jeder 64 Zugriff ging also auf denselben Speicher.
Der zweite Fortschritt war das synchrone DRAM (SDRAM). Bei Speicherbausteinen wurde die interne Organisation geändert. Sobald eine Adresse anlag wurde nicht nur das Byte an dieser Adresse ausgelesen, sondern auch die folgenden und intern in einem Zwischenspeicher abgelegt. Die nächsten Bytes können so viel schneller ausgelesen werden. Dazu gibt es dann verwirrende Zahlenfolgen wie "7-3-2-2", welche die Timing Parameter dieser Bausteine charakterisieren. Der erste Zugriff dauert erheblich länger als die folgenden.
Die neueren Techniken DDR und RAMBUS unterscheiden sich darin, wie sie die nachfolgenden Bytes schnell transferieren. Bei DDR (Double Data Rate) hat man die Busrate verdoppelt, so dass die folgenden Bytes bei jedem Flankenwechsel des Taktsignals übertragen werden, anstatt bei jeder ansteigenden Flanke. Die Wartezeit beim ersten Zugriff konnte man systembedingt nicht erhöhen.
Bei RAMBUS wird intern der Speicher in viel mehr kleine Bänke unterteilt und bei jedem Zugriff wird aus einer Bank die Daten gelesen. Während DDR und SDRAM so 4 Bytes zwischenspeichern können, sind es bei RAMBUS 32 die dann in schneller Folge übertragen werden können. Ein geringer Spannungshub von 1.4 V erlaubt auch höhere Taktfrequenzen des Speichers.
Alle Techniken zusammen haben die Geschwindigkeit des Speichers massiv erhöht. Ohne Cache würde z.B. der Prozessor auf den Takt des Speicherbusses (heute üblicherweise 166 MHz) ausgebremst werden. Ambitionierte PC Benutzer können dies testen, indem Sie einmal im BIOS nach den Einträgen "Enable Internal Cache" und "Enable L2 Cache" suchen und diese abschalten und dann die Geschwindigkeit ihres PC beobachten. Ich würde dazu aber eine DOS Bootdiskette mit einem Benchmark Programm empfehlen. Bei einem Test beim Autor vergingen nach Abschalten der Caches einige Sekunden bis ein Windows 98 System auf einem 1200 MHz Athlon auf Mausklicks reagierte. Im (veralteten) Norton Sysinfo Benchmark war der Computer anschließend 24.9 mal schneller als ein IBM PC - ein 33 MHz 80386 Rechner war dagegen 34.7 mal schneller und ohne abgeschaltete Caches erreichte der Rechner einen Wert von 1500!
Zum vertiefen:
Mehr über Caches, SRAM und DRAM in diesem Artikel von mir. Mit den allgemeinen Techniken den Speicherzugriff zu beschleunigen (über den PC-Rand hinaus) beschäftigt sich dieser Artikel.
Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt: einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensläufen von Ed Roberts, Bill Gates, Steve Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen.
Das Buch wird abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt, dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die Technik eingeht.
Die 2014 erschienene zweite Auflage wurde aktualisiert und leicht erweitert. Die umfangreichste Änderung ist ein 60 Seiten starkes Kapitel über Seymour Cray und die von ihm entworfenen Supercomputer. Bedingt durch Preissenkungen bei Neuauflagen ist es mit 19,90 Euro trotz gestiegenem Umfang um 5 Euro billiger als die erste Auflage. Es ist auch als e-Book für 10,99 Euro erschienen.
Mehr über das Buch auf dieser eigenen Seite.
Hier geht's zur Gesamtübersicht meiner Bücher mit direkten Links zum BOD-Buchshop. Die Bücher sind aber auch direkt im Buchhandel bestellbar (da ich über sehr spezielle Themen schreibe, wird man sie wohl kaum in der Auslage finden) und sie sind natürlich in den gängigen Online-Plattformen wie Amazon, Libri, Buecher.de erhältlich.
Sitemap | Kontakt | Impressum / Datenschutz | Neues | Hier werben / advertisment here | Buchshop | Bücher vom Autor |