Arbeitsspeicher

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Der Arbeitsspeicher oder Hauptspeicher (engl.: core, main memory, main store, primary memory) [... ist die] Bezeichnung für den Speicher, der die gerade auszuführenden Programme oder Programmteile und die [dabei] benötigten Daten enthält. Der Hauptspeicher ist eine Komponente der Zentraleinheit. Da der Prozessor unmittelbar auf den Hauptspeicher zugreift, beeinflussen dessen Leistungsfähigkeit und Größe in wesentlichem Maße die Leistungsfähigkeit der gesamten Rechenanlage“ (Duden Informatik).[1]

Arbeitsspeicher wird charakterisiert durch die Zugriffsgeschwindigkeit und (damit verbunden) die Datenübertragungsrate sowie die Größe. Die Zugriffsgeschwindigkeit beschreibt die Dauer, bis ein angefragtes Datum gelesen werden kann. Die Datenübertragungsrate gibt an, wie schnell Daten gelesen werden können. Es können getrennte Angaben für Schreib- und Lesevorgang existieren. Zur Benennung der Arbeitsspeichergröße existieren zwei unterschiedliche Notationsformen, die sich aus der verwendeten Zahlenbasis ergeben. Entweder wird die Größe zur Basis 10 angegeben (als Dezimalpräfix; 1 kByte oder kB = 103 = 1000 Bytes, SI-Notation) oder zur Basis 2 (als Binärpräfix; 1 KiB = 210 = 1024 Bytes, IEC-Notation). Aufgrund der binärbasierten Struktur und Adressierung von Arbeitsspeichern (Byte-adressiert bei 8-Bit-Aufteilung, wortadressiert bei 16-Bit-Aufteilung, doppelwortadressiert bei 32-Bit-Aufteilung usw.) ist letztere Variante in der Regel die präzisere Form.

Der Terminus „Arbeitsspeicher“ wird im allgemeinen Sprachgebrauch – abweichend von der o. g. Definition – gelegentlich auch für temporär benötigten Speicherplatz (z. B. auf Plattenspeichern oder in Datenbanktabellen) benutzt (siehe auch Auslagerungsdatei).

Die Informationspsychologie verwendet den Ausdruck „Arbeitsspeicher“ als ein Synonym für den menschlichen „Kurzspeicher“ oder „Kurzzeitspeicher“.

Grundlagen

1 MiB Arbeitsspeicher in einem 286er in Form von ZIP-Modulen
Verschiedene Arten von Arbeitsspeicher (v.l.n.r.) SIMM 1992, SDRAM 1997, DDR-SDRAM 2001, DDR2-SDRAM 2008

Der Arbeitsspeicher des Computers ist ein durch Adressen (in Tabellenform) strukturierter Bereich, der Binärwörter fester Größe aufnehmen kann. Durch die binäre Adressierung bedingt hat Arbeitsspeicher praktisch immer eine 'binäre' (auf Potenzen von 2 basierende) Größe, da andernfalls Bereiche ungenutzt blieben.

Der Arbeitsspeicher moderner Computer ist flüchtig, d.h. dass alle Daten nach dem Abschalten der Energieversorgung verloren gehen – der Hauptgrund dafür liegt in der Technologie der DRAMs. Verfügbare Alternativen wie etwa MRAM sind allerdings für die Verwendung als Arbeitsspeicher noch zu langsam.

Die häufigste Bauform für den Einsatz in Computern ist das Speichermodul. Es ist zwischen verschiedenen RAM-Typen zu unterscheiden. Waren in den 1980ern noch übliche Bauweisen Speicher in Form von ZIP-, SIPP- oder DIP-Modulen, so wurden in den 1990ern vorwiegend SIMMs mit FPM- oder EDO-RAM genutzt. Heute kommen in Computern in erster Linie DIMMs mit z. B. SD-, DDR-SD-, DDR2-SD- oder DDR3-SDRAMs zum Einsatz.

Geschichte

Magnetkernspeicherelement, um 1971, Kapazität 16 Kibibyte

Die ersten Computer hatten keinen Arbeitsspeicher, nur einige Register, die mit derselben Technik wie das Rechenwerk aufgebaut waren, also Röhren oder Relais. Programme wurden auf gänzlich anderen Medien, wie zum Beispiel Lochkarten, gespeichert oder als feste Verdrahtung.

„In Rechenanlagen der 2. Generation dienten Trommelspeicher als Hauptspeicher“ (Dworatschek).[2] Zusätzlich wurde in der Anfangszeit auch mit eher exotischen Ansätzen experimentiert, so mit Laufzeitspeichern in Quecksilberbädern oder in Glasstabspiralen (mit Ultraschallwellen beschickt). Später wurden Magnetkernspeicher eingeführt, die die Information in Form kleiner Ferritkerne speicherten. Diese waren in einer kreuzförmigen Matrix aufgefädelt, wobei sich je eine Adressleitung und eine Wortleitung in der Mitte eines Ferritkerns kreuzten. Der Speicher war nicht flüchtig, die Information ging jedoch beim Lesen verloren und wurde anschließend von der Ansteuerungslogik sofort wieder zurückgeschrieben. Daneben wurde kein Strom verbraucht, solange der Speicher nicht beschrieben oder gelesen wurde. Für heutige Verhältnisse ist er sehr voluminös und in der Herstellung auch sehr teuer.

Typische Großrechner waren Mitte der 1960er Jahre mit 32 bis 64 Kibibyte (damals als kB bezeichnet) relativ großen Hauptspeichern ausgestattet (z. B. IBM 360-20 oder 360-30), Ende der 1970er Jahre (z. B. die Telefunken TR 440) mit 192.000 Worten à 52 Bit (netto 48 Bit), also mit über 1 Mebibyte.

Der Kernspeicher als Ganzes bot ausreichend Platz, neben dem Betriebssystem, das aktuell auszuführende Programm zunächst von einem externen Medium in den Arbeitsspeicher zu laden und alle Daten zu halten. Programme und Daten liegen in diesem Modell aus Sicht des Prozessors im selben Speicher, die heute am weitesten verbreitete Von-Neumann-Architektur wurde eingeführt.

Arbeitsspeicher in Form eines ICs auf einem SDRAM-Modul

Mit Einführung der Mikroelektronik wurde der Arbeitsspeicher zunehmend durch integrierte Schaltungen (Chips) ersetzt. Jedes Bit wurde in einem bistabilen Schalter (Flipflop) gespeichert, das mindestens zwei, mit Ansteuerlogik aber bis zu sechs Transistoren benötigt und relativ viel Chipfläche verbraucht. Solche Speicher verbrauchen immer Strom. Typische Größen waren integrierte Schaltungen (ICs) mit 1 KiBit, wobei jeweils acht ICs gemeinsam adressiert wurden. Die Zugriffszeiten lagen bei einigen 100 Nanosekunden und waren schneller als die Prozessoren, die um ein Megahertz getaktet waren. Das ermöglichte zum einen die Einführung von Prozessoren mit sehr wenigen Registern wie dem MOS Technology 6502 oder dem Texas Instruments TMS 9000, die ihre Berechnungen größtenteils im Arbeitsspeicher durchführten. Zum anderen ermöglichte es den Bau von Heimcomputern, deren Videologik einen Teil des Arbeitsspeichers als Bildschirmspeicher verwendete und parallel zum Prozessor darauf zugreifen konnte.

Ende der 1970er wurden dynamische Arbeitsspeicher entwickelt, die die Information in einem Kondensator speichern und nur noch einen zusätzlichen Feldeffekttransistor pro Speicherbit benötigen. Sie können sehr klein aufgebaut werden und benötigen sehr wenig Leistung. Der Kondensator verliert die Information allerdings langsam, die Information muss daher in Abständen von einigen Millisekunden immer wieder neu geschrieben werden. Das geschieht durch eine externe Logik, die den Speicher periodisch ausliest und neu zurückschreibt (Refresh). Durch die höhere Integration in den 1980er Jahren konnte diese Refreshlogik preiswert aufgebaut bzw. in den Prozessor integriert werden. Typische Größen in den 1980ern waren 64 KiBit pro IC, wobei jeweils acht Chips gemeinsam adressiert wurden.

Die Zugriffszeiten der dynamischen RAMs lagen bei preiswertem Aufbau ebenfalls bei einigen 100 Nanosekunden und haben sich seitdem nur wenig verändert, die Größen sind jedoch auf einige GiBit pro Chip gewachsen. Die Prozessoren werden heute nicht mehr im Megahertz-, sondern im Gigahertz-Bereich getaktet, weshalb Maßnahmen erforderlich sind, die durchschnittliche Zugriffszeit pro Bit zu verkürzen.

Aus diesem Grunde werden sowohl die Taktrate der Anbindung des Arbeitsspeichers an den Prozessor (siehe Front Side Bus) als auch die Größe des Caches erhöht.

Im Juni 2012 wurde bekannt gegeben, dass mit dem sogenannten Speicherwürfel (englisch Hybrid Memory Cube und kurz HMC genannt) eine neue kleinere und leistungsstärkere Bauform für Arbeitsspeicher entwickelt werden soll, bei der ein Stapel aus mehreren Dies genutzt werden soll. Eigens dafür wurde die Gesellschaft Hybrid Memory Cube Konsortium gegründet, in welche unter anderem die Entwickler und Hersteller ARM, HP und Hynix beigetreten sind.[3]

Physischer und virtueller Arbeitsspeicher

Um den physischen Arbeitsspeicher zu erweitern, können moderne Betriebssysteme zusätzlichen virtuellen Arbeitsspeicher auf Massenspeichern allozieren (platzieren, zuteilen). Diesen Speicher nennt man auch Swapspeicher.

Um diese Erweiterung transparent zu realisieren, bedient sich das Betriebssystem eines virtuellen Speicherraumes, in dem sowohl der physische als auch der virtuelle Speicher vorhanden sind. Teile dieses virtuellen Speicherraumes – eine oder mehrere Speicherseiten – werden dabei entweder in das physisch vorhandene RAM oder in den Auslagerungsspeicher (Swapspace) abgebildet. Die Nutzungsrate der einzelnen Seiten bestimmt, welche Speicherseiten ausgelagert und nur auf Massenspeichern und welche im schnellen RAM existieren. Diese Funktionen werden von heutigen CPUs unterstützt, wobei die Menge des unterstützten Gesamtspeichers im Laufe der Entwicklung deutlich gestiegen ist.

Arbeitsspeicher für Notebooks (SO-DIMM). Oben SD-RAM und unten DDR-RAM

Der Auslagerungsspeicher stellt eine sehr preiswerte, aber mit extrem schlechter Leistung verbundene Erweiterung zum physischen Arbeitsspeicher dar. Ein Missverhältnis zwischen beiden Speicherarten ist an häufigem „Swappen“, also dem Verschieben von Daten zwischen Massen- und physischem Arbeitsspeicher, zu erkennen. Verglichen mit dem Arbeitsspeicher benötigt die Festplatte mit etwa 20 Millisekunden sehr lange, um die Daten bereitzustellen. Die Zugriffszeit auf den Arbeitsspeicher beträgt dagegen nur etwa 25 Nanosekunden, was einem Achthunderttausendstel davon entspricht.

Cache

Hauptartikel: Cache

Zugriffe auf den Arbeitsspeicher durch den Hauptprozessor werden zumeist über ein oder mehrere Pufferspeicher oder Cache-RAMs (kurz „Cache“) optimiert. Im Cache hält und benutzt der Rechner die am häufigsten angesprochenen Speicherbereiche, stellvertretend für die originären Hauptspeicherbereiche. Der Cache ist im Verhältnis zu anderen Speichern sehr schnell, da er möglichst direkt am Prozessor angebunden ist (bzw. sich in modernen Prozessoren direkt auf dem Die befindet). Allerdings ist er in der Regel nur wenige Megabyte groß.

Bei geringem Speicherbedarf können Programme oder Teile davon fast ausschließlich im Cache laufen, ohne dass der Hauptspeicher angesprochen werden muss.

Der Cache ist als Assoziativspeicher ausgeführt, kann also entscheiden, ob die Daten einer Adresse schon im Cache gespeichert sind oder noch vom Arbeitsspeicher geholt werden müssen. Dann wird ein anderer Teil des Caches aufgegeben. Der Cache wird dabei stets mit mehreren aufeinander folgenden Worten gefüllt, beispielsweise stets mit mindestens 256 Bit (so genannter Burst-Modus), da es sehr wahrscheinlich ist, dass in Kürze auch Daten vor oder hinter den gerade benötigten gelesen werden sollen.

Leistung von Speichermodulen

Die Leistung von Speichermodulen (Takt und Schaltzeitverhalten, englisch Timing) misst sich vor allem in der absoluten Latenz. Die theoretische Bandbreite ist ausschließlich beim Burst-Transfer relevant.

Ein weit verbreiteter Irrtum ist, dass höhere numerische Timings eine schlechtere Leistung zur Folge hätten. Das gilt jedoch nur bei gleichem Takt, da sich die absolute Latenz aus den Faktoren (effektiver) Takt und Schaltzeitverhalten (Timing) ergibt.


Beispiele
Bezeichnung CAS tRCS tRP tRAS
DDR400 CL2-2-2-5 10 ns 10 ns 10 ns 25 ns
DDR500 CL3-3-2-8 12 ns 12 ns 8 ns 32 ns
DDR2-667 CL5-5-5-15 15 ns 15 ns 15 ns 45 ns
DDR2-800 CL4-4-4-12 10 ns 10 ns 10 ns 30 ns
DDR2-800 CL5-5-5-15 12,5 ns 12,5 ns 12,5 ns 37,5 ns
DDR2-1066 CL4-4-4-12 7,5 ns 7,5 ns 7,5 ns 22,5 ns
DDR2-1066 CL5-5-5-15 9,38 ns 9,38 ns 9,38 ns 28,13 ns
DDR3-1333 CL7-7-7-24 10,5 ns 10,5 ns 10,5 ns 36 ns
DDR3-1333 CL8-8-8 12 ns 12 ns 12 ns
DDR3-1600 CL7-7-7 8,75 ns 8,75 ns 8,75 ns
DDR3-1600 CL9-9-9 11,25 ns 11,25 ns 11,25 ns

Berechnung

Formel:

\frac{2 \cdot \mathrm{Timing}}{\text{Geschwindigkeit}}

Beispiel:

DDR3-1333 CL8-8-8
\frac{2 \cdot 8}{1333 \; \text{MHz}} = 1,20 \cdot 10^{-8}\,\mathrm{s} = 12,0 \, \mathrm{ns}

Daraus ergibt sich die Konsequenz, dass DDR2 und DDR3-SDRAM, obwohl sie höhere Schaltzeiten (Timings) als DDR-SDRAM aufweisen, teilweise erheblich schneller sein können und eine deutlich höhere Bandbreite zur Verfügung stellen.

Einige Speicherhersteller halten die offiziellen Spezifikationen der JEDEC nicht ein und bieten Module mit weitaus höheren Taktraten oder besserem Schaltzeitverhalten (Timings) an. Während DDR3-1600 CL9-9-9 einer offiziellen Spezifikation unterliegt, handelt es sich bei DDR2-1066 CL4-4-4-12 nicht um standardkonforme Speichermodule. Diese schnelleren Speicher werden oft als Speichermodule für Übertakter bezeichnet. Aufgrund der Neuheit von DDR3 ist zu erwarten, dass wegen der stetigen Verbesserung der Fertigungsverfahren in naher Zukunft deutlich schnellere Speichermodule angeboten werden. Diese werden anfangs jedoch außerhalb der offiziellen Spezifikation arbeiten. Die JEDEC könnte diese Speichermodule in die offizielle Spezifikation aufnehmen, allerdings geschieht das oft erst Jahre nach der ersten Verfügbarkeit.

CAS (column access strobe) - latency (CL)
Gibt an, wie viele Taktzyklen der Speicher benötigt, um Daten bereitzustellen. Niedrigere Werte bedeuten höhere Speicherleistung.
RAS to CAS Delay (tRCD)
Dabei wird über die Abtastsignale „Spalten“ und „Zeilen“ eine bestimmte Speicherzelle lokalisiert, ihr Inhalt kann dann bearbeitet werden (Auslesen/Beschreiben). Zwischen der Abfrage „Zeile“ und der Abfrage „Spalte“ befindet sich eine festgelegte Verzögerung ⇒ Delay. Niedrigere Werte bedeuten höhere Speicherleistung.
RAS (row access strobe) - precharge delay (tRP)
Bezeichnet die Zeit, die der Speicher benötigt, um den geforderten Spannungszustand zu liefern. Erst nach Erreichen des gewünschten Ladezustandes kann das RAS-Signal gesendet werden. Niedrigere Werte bedeuten höhere Speicherleistung.
Row-Active-Time (tRAS)
Erlaubte Neuzugriffe nach festgelegter Anzahl von Taktzyklen, setzt sich rein rechnerisch aus CAS + tRP + Sicherheit zusammen.

Praxis

In der Praxis können FSB1333-Prozessoren von Intel mit ihrem Front Side Bus maximal 10 GiB/s an Daten empfangen. Das wird im üblichen Dual-Channel-Betrieb mit zwei Speicher-Riegeln bereits von DDR2/667 (10,6 GiB/s) ausgereizt. Gängige Prozessoren von AMD und Nehalem ("i7")-Prozessoren von Intel unterliegen dieser Beschränkung nicht, da hier der Speichercontroller direkt in der CPU sitzt und nicht wie beim Sockel 775 in der Northbridge.

Anbindung des Arbeitsspeichers

Die Anbindung des physischen Speichers erfolgt durch Adress- und Datenbus. Der Datenbus übernimmt den eigentlichen Datentransfer. In allen aktuellen PC-Architekturen werden dabei 64 Bit auf einmal transferiert. Der Adressbus dient zur Auswahl der angeforderten Speicherzellen; von seiner Busbreite (in Bit) ist der maximal ansprechbare Speicher eines Prozessors abhängig. An jeder Adresse ist in heute üblichen Systemen stets ein Byte aus 8 Bit (nicht nur ein Bit) abgelegt, so dass sich dieser „Adressraum“ gemäß der folgenden Tabelle ergibt:

Adressbus Adressierbarer Speicher Beispiel
1 Bit 2 Byte Die Realisierung der kleinstmöglichen Einheit, dem 1-Bit-Speicherelement
4 Bit 16 Byte Die ersten Taschenrechner
16 Bit 64 KiB Generation der 8-Bit-Architekturen.
20 Bit 1 MiB Bei den ersten PCs der Adressraum des Intel 8086, damit auch maximal nutzbarer Speicher der frühen MS-DOS-Ära.
24 Bit 16 MiB Bei PCs der Adressraum des 80286, bei Apple der Adressraum der ersten Macintosh-Computer, bei Commodore dito der alten AMIGA-Computer (A500, A1200 (020EC)) und bei Atari dito der ST-Reihe (alle Motorola 68000).
32 Bit 4 GiB Bei PCs der Adressraum von 80386 bis Pentium. Bei Apple Adressraum bis Macintosh G4.
36 Bit 64 GiB Bei PCs der Adressraum von Pentium Pro bis Intel Pentium 4/AMD Athlon. Hierfür muss im Betriebssystem die Physical Address Extension (PAE) aktiviert sein.
48 Bit 256 TiB Bei PCs der Adressraum von AMD64 und Intel 64, bei Apple sind aktuelle Rechner technisch ebenfalls PCs mit Intel 64.
64 Bit 16 EiB Bei PCs der Adressraum von Intel Itanium, bei Apple der Adressraum des Macintosh G5.

Einer der wesentlichen Unterschiede der beiden bei PCs aktuellen Prozessorgenerationen „32-Bit“ und „64-Bit“ ist also der bereits angesprochene maximal ansteuerbare Arbeitsspeicher, der jedoch zum Teil mit Hilfe von Physical Address Extension noch etwas über das übliche Maß hinaus erweitert werden kann. Allerdings ist mit der Anzahl der Bits einer Prozessorgeneration im Allgemeinen die Breite des Datenbusses gemeint, die nicht notwendigerweise mit der Breite des Adressbusses übereinstimmt. Allein die Breite des Adressbusses bestimmt jedoch die Größe des Adressraums. Aus diesem Grund konnte beispielsweise der „16-Bit“-Prozessor 8086 nicht nur 64 KiB (theoretischer 16-Bit-Adressbus), sondern 1 MiB (tatsächlicher 20-Bit-Adressbus) adressieren.

Der Bus moderner Computer vom Cache zum Arbeitsspeicher wird schnell ausgeführt, also mit hoher Taktrate und Datenübertragung bei steigender und fallender Taktflanke (DDR: Double Data Rate). Er ist synchron und mit großer Wortbreite, zum Beispiel 64 Bit pro Adresse. Werden mehrere Speichersteckplätze auf der Hauptplatine eines PCs eingesetzt, so werden aufeinander folgende Adressen in verschiedenen Steckplätzen gespeichert. Das ermöglicht überlappenden Zugriff (Interleaved) bei Burst-Zugriffen.

Innerhalb der Speicherchips werden ganze Adresszeilen in Schieberegistern gespeichert. Ein 1-MiBit-Chip kann zum Beispiel 1024 Zeilen mit 1024 Bit haben. Beim ersten Zugriff wird ein schnelles, internes 1024-Bit-Register mit den Daten einer Zeile gefüllt. Bei Burst-Zugriffen sind die Daten der folgenden Adressen dann bereits im Schieberegister und können mit sehr geringer Zugriffszeit von diesem gelesen werden.

Durch diese Maßnahmen ist es möglich, die mittlere Zugriffszeit pro Bit drastisch auf unter eine Nanosekunde zu verringern, obwohl der Zugriff auf ein bestimmtes Bit im Speicher immer noch rund 25 Nanosekunden beträgt.

Sinnvollerweise überträgt man daher nicht nur das angeforderte Bit zum Prozessor, sondern gleich eine sogenannte „Cache-Line“, die heute 512 Bit beträgt (vgl. Prozessor-Cache).

Hersteller

Die größten Speicherchiphersteller sind:

Diese Hersteller teilen sich 97 Prozent Marktanteil. Anbieter von Speichermodulen, wie Corsair, Kingston Technology, MDT, OCZ, A-Data usw. (sogenannte Third-Party-Hersteller) kaufen Chips bei den genannten Herstellern und löten diese auf ihre Platinen, wofür sie ein eigenes Layout entwerfen. Außerdem programmieren sie die SPD-Timings gemäß ihren eigenen Spezifikationen, die durchaus spitzer eingestellt sein können als die der Originalhersteller.

Für Dual-Channel-Betrieb zweier Module ist bei diesen Third-Party-Herstellern darauf zu achten, dass Modul-Paare (sogenannte KITs) gekauft werden, damit nicht das BIOS den Betrieb verweigert, weil der Hersteller zwischenzeitlich andere Chips auf seine Module lötet. Bei Modulen der Originalhersteller ist das nicht nötig, da die Spezifikationen stets den aktuellen Datenblättern entsprechen, die u.a. auch die SPD-Timings festlegen und ausweisen. Diese Module funktionieren daher immer im Dual-Channel-Betrieb, auch wenn sie aus unterschiedlichen Quellen stammen.

Als Mittler zwischen den großen Speicherchip- und Modulherstellern einerseits und dem Handel und den Verbrauchern andererseits haben sich in Deutschland Anbieter wie z. B. CompuRAM und Kingston etabliert, die für die gängigsten Systeme spezifizierte Speichermodule anbieten. Das ist deshalb notwendig, weil einige Systeme durch künstliche Beschränkungen durch den Hersteller nur mit Speicher arbeiten, der proprietäre Spezifikationen erfüllt. Diese Spezifikationen dienen nicht der Leistungssteigerung, sondern nur der Inkompatibilität zu normalem Speicher, der nur die JEDEC-Spezifikationen erfüllt, um mit den Lizenzen Geld verdienen zu können.

Siehe auch

Weblinks

 Commons: Computerspeicher – allgemein zu Arbeitsspeichervarianten – Sammlung von Bildern, Videos und Audiodateien
 Commons: RAM-Module (spezieller) – Sammlung von Bildern, Videos und Audiodateien
 Wiktionary: Arbeitsspeicher – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen

Einzelnachweise

  1. Duden Informatik, ein Sachlexikon für Studium und Praxis, ISBN 3-411-05232-5, Seite 296
  2. Sebastian Dworatschek: Grundlagen der Datenverarbeitung, S. 263
  3. Hybrid Memory Cube ARM, HP und Hynix unterstützen den Speicherwürfel – Artikel bei Golem.de, vom 28. Juni 2012 (Abgerufen am: 29. Juni 2012)