Zum Inhalt springen

Arbeitsspeicher

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. Mai 2004 um 16:24 Uhr durch Dr. Volkmar Weiss (Diskussion | Beiträge) (=Geschichte=). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Der Arbeitsspeicher (auch Hauptspeicher) eines Computers ist der Speicher, in dem Datenobjekte, also Programme und die von diesen im Mikroprozessor verarbeiteten Nutzdaten, abgelegt und zu einem späteren Zeitpunkt (unverändert) abgerufen werden können.

Der Arbeitsspeicher ist ein durch Adressen strukturierter Bereich, der Binärwörter fester Größe aufnehmen kann. Arbeitsspeicher besteht heute meist aus dem Speichermedium RAM, das zwar schnell arbeitet, aber vergleichsweise teuer ist.

Siehe auch: Speicherschutz, Massenspeicher

Arbeitsspeicher eines Computers aus Sicht des Anwenders

Wird oft verwechselt mit Massenspeicher, insbesondere dem Speicher der Festplatte. Die drei wichtigsten Unterschiede:

  1. Arbeitsspeicher ist (meist) flüchtig. Wenn der Computer ausgeschaltet wird oder bei Stromverlust ist sein Inhalt gelöscht.
  2. Arbeitsspeicher wird überwiegend elektronisch, durch RAM realisiert. Massenspeicher wird meist durch magnetische (Festplatten, Disketten, Bandspeicher) oder optische (CD-ROM, DVD) Medien realisiert. Das Prinzip wird allerdings neuerdings durch die Speicherkarte aufgeweicht: Sie ist ein nicht-flüchtiger RAM-Baustein.
  3. Auf Arbeitsspeicher wird in kleinen Einheiten, meistens in Byte zugegriffen. Auf Massenspeicher werden die Daten als Dateien, engl. Files gehalten.

Die Grösse des Arbeitsspeichers wird (wie Massenspeicher auch) in Byte gemessen. Dabei unterscheidet man:

  1. RAM: Elektronischer (schneller) Teil des Arbeitsspeichers
  2. Swapspace: Ein moderner Computer lagert die Teile des Arbeitsspeichers, die zur Zeit nicht gebraucht werden, in die Auslagerungsdatei. Der Zugriff auf Swapspace ist langsam.
  3. Adressraum: Maximale Grösse an Arbeitsspeicher, die ein Prozessor ansprechen kann.

Das RAM ist nocheinmal unterteilt in Hauptspeicher-RAM und Cache-RAM. Cache-RAM (oder kurz "Cache") ist besonders schnelles RAM, das Zugriffsengpässe auf den Arbeitsspeicher abmildert.

Die Arbeitsgeschwindigkeit eines Programms variiert also erheblich mit seinem Speicherbedarf, oft viel mehr, als mit dem eingebauten Prozessor. Bei kleinem Speicherbedarf wird nur Cache gebraucht, bei grösserem Bedarf auch das "normale" RAM und bei sehr großem Bedarf muss der Prozessor Teile des RAMs auf die Festplatte auslagern, der PC beginnt zu "swappen".

Zum Adressraum: Man unterscheidet seine Grösse in Bits, die eigentlich die Breite des Adressbus angeben:

  1. 16 Bit: Maximal 64K. Generation der s.g. 8-Bit-Computern
  2. 20 Bit: Maximal 1 MB. Generation des PC/XT-Standards und der DOS-Ära.
  3. 24 Bit: Maximal 16 MB. Bei PCs der Adressraum des 80286, bei Apple der Adressraum der ersten Macintosh-Computer (Motorola 68000)
  4. 32 Bit: Maximal 4 GB. Bei PCs der Adressraum von 80386 bis Pentium4/Athlon. Bei Apple Adressraum bis Macintosh G4.
  5. 64 Bit: Maximal 16 ExaByte (EB). Bei PCs der Adressraum von AMD64 und Intel Itanium, bei Apple der Adressraum des Macintosh G5.

Der wesentlichste Unterschied der beiden Prozessorgenerationen "32-Bit" und "64-Bit" ist also der maximal ansteuerbare Arbeitsspeicher.

Arbeitsspeicher in der Speicherhierarchie

Moderne Computer verarbeiten Daten im Bereich von Nanosekunden. Das Hauptproblem ist dabei, eine ausreichende Menge an Daten zur Verfügung zu stellen, um die Recheneinheiten des Prozessors zu versorgen. ´

Der ideale Speicher ist

  • sehr groß
  • sehr schnell
  • nichtflüchtig

und

  • preiswert.

Da dies unerreichbar ist, verwendet man eine Speicherhierarchie, die große, nichtflüchtige, billige aber langsame Speicher mit schnellen, dafür jedoch kleinen aber schnellen verbindet.

Ein typisches Computersystem hat heute (2004)

  • Recheneinheit (1-2 Prozessoren, flüchtig, Nanosekunden)
  • Register (ca. 4 bis 128, 32-64 Bits, flüchtig, Nanosekunden)
  • Cache (32 KBytes bis wenige Megabytes, flüchtig, ca. 10 Nanosekunden)
  • Arbeitsspeicher (512 MBytes bis 4 GByte, flüchtig, ca. 100 Nanosekunden)
  • Festplattenspeicher (80 GBytes bis 1 Terabyte, nichtflüchtig, wenige Millisekunden)
  • Bandlaufwerke (Bänder mit bis zu mehreren Terabyte, nichtflüchtig, Minuten)

Bei PCs wird häufig auf Bandlaufwerke verzichtet.

Geschichte

Die ersten Computer hatten keinen Arbeitsspeicher, nur einige Register, die mit derselben Technik wie das Rechenwerk aufgebaut wurden, also Röhren oder Relais. Programme wurden auf gänzlichen anderen Medien gespciehert.

Später wurden Magnetkernspeicher eingeführt, die die Information in Form von kleinen Ferritkernen speicherten. Diese waren in einer kreuzförmigen Matrix aufgefädelt, wobei je eine Adressleitung und eine Wortleitung sich in der Mitte eines Ferritkerns kreuzten. Der Speicher war nichtflüchtig, die Information ging jedoch beim Lesen verloren, wurde jedoch von der Ansteuerungslogik sofort wieder zurückgeschrieben. Daneben wird kein Strom verbraucht, solange der Speicher nicht beschrieben oder gelesen wird. Für heutige Verhältnisse ist er sehr groß und in der Herstellung auch sehr teuer. Ein typischer Großcomputer wie die Telefunken TR440 konnte Ende der 1970er Jahre Kernspeicher mit 192.000 Worten à 48 Bit, also über 1 MByte haben.

Kernspeicher war groß genug, das aktuell auszuführende Der 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.

Mit Einführung der Mikroelektronik wurde der Arbeitsspeicher zunehmend durch in integrierte Schaltungen (Chips) ersetzt. Zunächst als Flipflop, das mindestens zwei, mit Ansteuerlogik aber bis zu sechs Transistoren benötigt und relativ viel Chipfläche verbraucht. Solche Speicher ziehen immer Strom. Typische Größen waren integrierte Schaltungen (IC) mit 1 KBit, 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. Dies ermöglichte zum einen die Einführung von Prozessoren mit sehr wenigen Registern wie dem MOS Technologies 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 alle paar Millisekunden neu geschrieben werden. Dies geschieht durch eine externe Logik, die den Speicher periodisch ausliest und neu zurückschreibt (Refresh). Durch die höhere Integration in den 1980er Jahren kann diese Refreshlogik preiswert aufgebaut werden. Typische Größen in den 1980ern waren 64 KBit pro IC, wobei jeweils acht Chips gemeinsam adressiert wurden.

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

Zunächst wird ein Cache, also ein kleiner, sehr schneller, aber relativ teurer Zwischenspeicher zwischen Prozessor und Arbeitsspeicher geschaltet, der einen kleinen Teil des Arbeitspeichers enthält und auf den innerhalb weniger Nanosekunden zugegriffen werden kann. Manchmal werden sogar mehrere, verschieden schnelle und große Cachespeicher hierarchisch verwendet.

Dieser Cache ist als Assoziativspeicher ausgeführt, kann also entscheiden, ob die Daten einer Adresse schon im Cache gespeichert ist oder noch vom Arbeitsspeicher geholt werden muss. Dann wird ein andere Teil des Caches aufgegeben. Der Cache wird dabei stehts mit mehreren aufeinanderfolgenden Worten gefüllt, beispielsweise stets mit mindestens 256 Bits (sogenannte Burst-Zugriffe)

Der Bus vom Cache zum Arbeitsspeicher wird schnell ausgeführt, also mit hoher Taktrate und Datenübertragung beim steigender und fallender Taktflanke (Double Data Rate). Er ist jetzt synchron und mit großer Wortbreite, z. B. 64 Bit/Adresse. Werden mehrere Speichersteckplätze auf der Hauptplatine eines PCs eingesetzt, so werden aufeinanderfolgende Adressen in verschiedene Steckplätzen gespeichert. Dies ermöglicht überlappenden Zugriff (Interleaved) bei Burst-Zugriffen.

Innerhalb der Speicherchips werden ganze Adresszeilen in Schieberegistern gespeichert. Ein 1 MBit-Chip kann zum Beispiel 1024 Zeilen mit 1024 Bits 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 (EDO: Electronic Data Out). Die mittlere Zugriffszeit.

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 mehrere 100 Nanosekunden beträgt.

Siehe auch Kurzspeicherkapazität des menschlichen Gedächtnisses