| Home | Computer | Schmunzelecke | Site Map |
Im allgemeinen kann man Speicher in zwei Typen unterscheiden: Speicher
dessen Inhalt nach Abschalten der Spannungsversorgung verloren geht (RAM oder Random Access
Memory) und ROM (Read only Memory). Beide Begriffe stammen aus der Frühzeit des Computers und
sind heute eher verwirrend, denn viele ROM Bausteine kann man auch beschreiben, und nicht nur auf
RAM kann man wahlfrei zugreifen.
Bei ROM unterscheidet man mehrere Technologien. Bei der einen wird bei der Herstellung schon das Bitmuster festgelegt oder man kann es nur einmal einbrennen. Solche Roms finden sie in Computern kaum noch, weil die Innovationszyklen der Industrie es heute nötig machen das man sogar das ROM im BIOS ändern kann. Dagegen findet man so etwas häufig in Mikrocontrollern, wo man höhere Stückzahlen hat ohne je das Programm zu ändern. Bei der zweiten Art von Roms handelt es sich um Bausteine, die man neu beschreiben kann. Heute am verbreitetsten sind Flash -EEPROMS. Sie finden diese Roms sowohl in ihrem Computer wie auch als mobiler Datenspeicher in Memorysticks für Digitalkameras oder MP3 Playern.
RAMs gibt es auch in verschiedenen Technologien. Ihr Hauptspeicher besteht im wesentlichen aus DRAMs. D steht für Dynamisch und charakterisiert das diese wie ein Kondensator Ladung speichern, dafür diese Ladung aber innerhalb eines Sekundenbruchteils auch wieder verlieren so das sie immer wieder aufgefrischt werden muss. Als Caches kommen dagegen SRAM oder statische RAMs zum Einsatz. Hier wird zum Speichern eines Bits eine Schaltung benutzt. Im Vergleich zum DRAM kann man die Daten schneller abrufen, dafür benötigt man die 4 fache Chipfläche und SRAM ist dadurch erheblich teurer als DRAM.
Etwas weiter ist das SOC. Ein System on a Chip. Man versteht dabei ein ganzes Computersystem auf einem Chip. So gibt es z.B. eine Version des 486 Prozessors der zugleich ROM als Festplattenersatz, RAM, Schnittstellen und VGA Grafik integriert hat. Die derzeitige Technik (2002) erlaubt es somit ein System mit Windows 3.1 auf einem Chip unterzubringen. Das reicht z.B. für einen Westentaschenrechner für mobile Datenerfassung und Übertragung (mit Videokamera und Mikrofon) aus. Reporter mit solchen Systemen gibt es bereits, und eine etwas größere Version will die US Army einsetzen um Soldaten damit auszurüsten.
Später hat man ein Byte aus 8 Bits gebildet, das reicht für den gesamten Zeichensatz englischsprachiger Länder, der in den ersten 7 Bit untergebracht ist und als ASCII Code genormt ist. Leider gibt es noch Länder mit Umlauten wie Frankreich, Deutschland und Skandinavische Länder. Diese sind in den oberen Bit kodiert und nicht standardisierst. So war lange Zeit der 7 Bit Zeichensatz der gemeinsame Nenner und man musste zwischen den Zeichensätzen konvertieren. Erst in den 90 er Jahren hat man den 16 Bit Unicode Zeichensatz eingeführt. Dieser erlaubt mit 65536 Zeichen nun auch die Kodierung der zahlreichen arabischen und chinesischen Zeichen.
In der Netzwerktechnik, wo es schon frühzeitig um das Setzen von Standards für den Datenaustausch geht, hat man daher in den entsprechenden "Normen" den Begriff Byte nicht verwendet, sondern redet von Oktetts, also Gruppen von 8 Bit. Auch in Frankreich wurde dieser Begriff übernommen, als man in den 80 er Jahren begann englische Computerbegriffe durch "französische" zu ersetzen.
Auch bei CCD Chips wie man sie in Digitalkameras findet, gibt es diesen Trick. In der "3 Megapixel Klasse" ist z.B. die übliche Auflösung 2048 x 1536 Pixel also 3 Megapixel. Verkauft wird diese Auflösung aber als 3.2 Megapixel. Genau sind es 3145728 Pixel also nicht einmal 3.2 Millionen geschweige 3.2 Megapixel (dies wären 3355443 Pixel). Vielleicht sollte man diesen Trick mal dem Finanzminister mitteilen, dann wären die Schulden gleich um 7.3 % kleiner....
Früher, in der Computersteinzeit (d.h. bis Anfang der 80 er Jahre) waren an einen leistungsfähigen Großrechner viele Terminals angeschlossen. ein Terminal ist ein sehr einfacher Computer. Es kann nicht rechnen sondern nur Daten von einer Tastatur entgegennehmen und besitzt einen kleinen Speicher um den Bildschirminhalt eines Textmonitors wiederzugeben. Es hat keinen Massenspeicher und keine Anschlüsse bis auf eine Leitung zum Großrechner. Dieser führte alle Befehle auf und schickte nur die Ergebnisse zum Terminal.
Das war eine Client-Server Architektur. Der Client ist in diesem Fall das Terminal. Es fordert vom Server (dem Großrechner) einen Dienst an. In diesem Fall Abarbeitung des Programms. Als die PCs aufkamen machte man mehr auf ihnen und der Großrechner wurde unwichtiger. Als dann allerdings Netzwerke einzogen und man zusammen an einem Projekt arbeiten wollte stellte man fest, dass PCs dazu nicht gut geeignet sind. Heute gibt es wieder Großrechner als Server, aber auch etwas bessere PCs als Server. Der Übergang ist fließend und hängt primär von den Anforderungen ab: ein Server kann nur die Aufgabe haben Druckjobs mehrerer Rechner auf einen Drucker zu bündeln (Druckserver) oder aber die gesamte Bestellung von amazon abwickeln und gleichzeitig mehrere Tausend User betreuen.
Dienste, also die Leistung die ein Server erbringt sind ebenso vielfältig. Ein Webserver bietet statische oder dynamische Webseiten an. Ein Fileserver gestattet den Zugriff auf verschiedene Dateien von verschiedenen Usern. Ein Application Server verteilt eine Anwendung an einen Client, so dass man bei einem Update nicht mit der CD von Rechner zu Rechner laufen muss. Datenbankserver erlauben den Zugriff auf eine Datenbank.
Die Architektur von Client und Server findet man auch im kleinen. So kann z.B. der Internet Explorer als Client ein ActiveX als Server nutzen. Das ActixeX stellt eine Dienstleistung zur Verfügung wie z.B. ein dynamisches Börsenchart.
Der Datenbus gibt dagegen an wie viele Bits auf einmal der Prozessor verarbeitet. Danach wird der Prozessor in Klassen eingeordnet. Heute gibt es auf dem Markt 8, 16, 32 und 64 Bit Prozessoren. Im Prinzip gilt: Je mehr desto besser, allerdings nützen mehr Bits nur wenn auch die Daten Stimmen. Ein 32 Bit Prozessor der Zeichenketten bearbeitet - ein Zeichen nimmt je 8 Bits ein, kann die 32 Bit seiner Register nicht voll nutzen.
Das ganze hat nun aber nichts mit der Verarbeitung von 32 Bit Länge zu tun. Entsprechende Befehle konnte man schon unter DOS nutzen. Das ganze hat vielmehr mit zwei Betriebsmodi der x86 Prozessoren zu tun die im Laufe der Geschichte entstanden. Der 8086 beherrsche nur das Adressieren von 64 Kilobyte in 3 Bereichen die man im gesamten Adressbereich von 1 MB verschieben konnte. Da 64 K 16 Bit entsprechend ist dies der 16 Bit oder Real Modus. Er limitierte auch für einzelne Datenobjekte die Größe auf 64 Kilobyte. (Derartige Einschränkungen finden sich auch heute noch in Windows, so kann der Editor Notepad max. 64 K Bearbeiten.). Der 80286 Prozessor führte dann einen neuen Modus ein, den Protected Modus, bei dem man 16 Megabyte adressieren konnte. Leider konnte man von diesem Modus nicht mehr in den Real Modus zurückwechseln. So benutzt DOS bis heute einen Trick um den Speicher mehr als 1 MB anzusprechen, es verschiebt eines der Fenster an die oberste Grenze des Speichers und kann dort schon über 1 MB einen Treiber (Himem.sys) ablegen, der dann zum Ansprechen des Speichers über 1 MB dient. Der DOS Speicher bleibt durch feste Adressen für BIOS und VGA Karte immer auf 640 K beschränkt. Beim 386 wurde der Protected Mode erweitert. Er bietet nun für einzelne Programme Schutz vor anderen und den virtuellen Real Modus, bei dem mehrere Programme jeweils maximal 1 MB Speicher haben können. In diesem Modus läuft z.B. die DOS Box. Leider aber auch viele alte Treiber, die eben nicht von den Schutzmechanismen in Protected Mode profitieren. Dadurch ist Windows fehleranfällig gegen schlecht programmierte Software. Der Schutz einzelner Anwendungen voneinander geht nur wenn diese den erweiterten 32 Bit Modus nutzen.
Seit Ende 2003 gibt es von AMD auch einen 64 Bit Prozessor der kompatibel zum 32 Bit Athlon ist. Für ihn wird es bis Mitte 2005 nur Linux als Betriebssystem geben, das seine 64 Bit Fähigkeiten unterstützt. Dann soll es eine 64 Bit Windows Version und auch entsprechende Chips von Intel geben, die ebenfalls 64 Bittig sind. Der Vorteil der 64 Bitter ist nicht dass man nun mehr Daten verarbeiten kann, denn für bestimmte Operationen können schon Pentium 4 Prozessoren mit 128 Bit Daten durchführen, sondern, dass er mehr als 4 Gigabyte Hauptspeicher unterstützt. Das ist die Grenze der 32 Bit Adressierung. In Zeiten wo ein PC auch Video in Echtzeit bearbeiten soll kann es da schon klemmen.
0-4-6,8-9,13-15. Frei sind nur noch 7 (zweiter Druckeranschluss), 10-12. Die VGA Karte, PS/2 und USB Schnittstellen belegen in der Regel ebenfalls einen Interrupt. So das im Normalfall sich in einem PC mehrere Geräte einen Interrupt teilen müssen - die Probleme sind so vorprogrammiert.
Deswegen propagiert man seit einigen Jahren die Abkehr von so genannten "Legalicies Geräten" - PC Altlasten. USB z.B. erlaubt den Anschluss von mehreren Druckern, Modems und Mäusen und belegt dabei nur einen Interrupt. Damit sollen die Probleme die z.B. auftreten wenn man einen Flachbettscanner und einen Drucker an einem Interrupt betreibt beseitigt werden. Eine bessere Lösung wäre es sicher gewesen mehr Interrupts zur Verfügung zu stellen. So verfügte der IBM PC ursprünglich nur über einen Interruptcontroller (der Chip an dem man die Hardware anschließt). Beim IBM AT erweiterte man dies auf zwei und damit von 8 auf 15 Interrupts. Jeder Interruptcontroller belegt einen Interrupt des ersten Controllers und bringt 8 neue hinzu, so das man mit diesem System max. 9 Controller anschließen kann die dann 64 Interrupts zur Verfügung stellen. Doch diese Erweiterung unterblieb.
Man schob zwischen den eigentlichen Speicher und dem Prozessor daher einen Zwischenspeicher den Cache. Er hat folgende Aufgabe: Wenn der Prozessor Daten benötigt holt er diese - und gleich die nachfolgenden - in den Cache und übergibt sie dem Prozessor. Wenn der Prozessor nun die nächsten Bytes benötigt oder innerhalb einer Schleife dasselbe Codestück immer wieder durchläuft kommen die Daten aus dem Cache und nicht aus dem langsamen Hauptspeicher. Im Laufe der Zeit wurden Caches immer wichtiger, denn die Zugriffszeit von RAMs stieg weiterhin gegenüber den Taktfrequenzen langsam an. Bei PC 100 Speichern liegt sie bei 7 ns, allerdings nur für aufeinander folgende Daten, das erste benötigt 3-4 mal so lange also 20-28 ns. Ein 2000 MHz Prozessor benötigt die Daten aber im 0.5 ns Abstand!
Heute haben daher Prozessor einen Cache schon im Prozessor integriert, und einen zweiten nahe des Prozessors auf der Platine der mit einer Drittel oder der Hälfte der Taktfrequenz des Prozessors betrieben wird. Manchmal gibt es noch einen dritten auf dem Motherboard. Diese werden sukzessive größer. Der Sinn: findet der Prozessor im kleinen (32 Kilobyte) L1 Cache die Daten nicht, so sucht er im 3 mal langsameren L2 Cache mit 256 Kilobyte danach, erst danach wird der 10-20 mal langsamere Hauptspeicher bemüht. Was solche Caches für die Geschwindigkeit bedeuten können Sie selbst ausprobieren. In jedem BIOS gibt es eine Möglichkeit die Caches abzuschalten - der Rechner wird dadurch rapide langsamer.
Bei Pipelines gilt nun aber nun nicht wie sonst bei den Computern "Mehr ist besser", jede Pipelinestufe erhöht den Verwaltungsaufwand, der auch Zeit kostet. Weiterhin gibt es Sprünge im Programm. Dabei ist der ganze bisherige Inhalt der Pipeline nutzlos. Sie muss praktisch neu angeworfen werden und das dauert um so länger je größer sie ist. Meist wird der Wert 6 als Optimum für die Anzahl der Pipelinestufen genannt. Prozessoren wie der Pentium 4 mit 20 Pipelinestufen haben daher viel Logik auf dem Chip, um Sprünge spekulativ vorherzusagen.
a:=b+c;
d:=e+f;
hier werden zwei Rechenoperationen hintereinander gemacht die eigentlich nichts miteinander zu tun haben, also auch parallel abgearbeitet werden können. Dann steigt die Rechengeschwindigkeit auf das doppelte. Bei dem folgenden Beispiel geht das nicht :
a:=b+c;
e:=a+d;
Hier benötigt man für die zweite Rechnung das Ergebnis von a, welches aber in der ersten Rechnung erst ermittelt wird. Die beiden Rechnungen können nur nacheinander ausgeführt werden. Man hat es hier also mehr mit einem Softwareproblem zu tun. Trotzdem versuchen die Prozessorhersteller mit trickreichen Mechanismen den Code vor der Ausführung um zu sortieren und zu ermitteln, was wovon abhängt.
Gordon Moore, einer der Mitbegründer von Intel stellte 1969 folgende
Regel auf "Die Transistormenge auf einem Chip verdoppelt sich alle 18 Monate". Im, gleichen Maße
sollte auch die Leistung steigen. Diese Regel nennt man seit damals "Moorsches Gesetz".
Allerdings ist er etwas optimistisch gewesen. Vergleicht man die Entwicklung der Intel
Prozessoren über die letzten 28 Jahre so verdoppelte sich die Transistormenge bis zum Pentium Pro
alle 26-27 Monate. Seitdem ist es etwas schwierig geworden, weil der Cache nun extern ist und man
ihn nun dazurechnen kann oder nicht. Der Geschwindigkeitsgewinn geht übrigens vor allem auf immer
höhere Taktfrequenzen zurück. Diese liegen heute 4000 mal höher als beim ersten Chip von Intel
dem 4004, der mit 0.74 MHz getaktet war.
Nein natürlich nicht. Wenn man die interne Speicherung von Zahlen betrachtet, so gibt es heute folgende Möglichkeiten:
BCD steht für Binary Coded Decimals. Was man machte ist folgendes. Anstatt den Wert eines Bytes als Zahl zu nehmen speicherte man in ihm eine Ziffer also 0 bis 9. Das heißt von den 256 Werten möglichen, nutzt man nur 10. Später gab es noch gepackte Bads, die in jeweils 4 Bit eine Ziffer speicherten und damit in einem Byte zwei Ziffern also Zahlen von 0 bis 99 speichern konnten.
Der Vorteil dieses Verfahrens ist, das es absolut unabhängig vom Computer ist. Für die kaufmännischen Anwendungen war auch wichtig, das es so keine Rundungsfehler gab. Das Verfahren eine 20 Stellen lange BCD Ziffer zu addieren ist genau das gleiche wie einer 2 Stellen lange. Dagegen ist man bei dem nativen Format eines Computers ohne Spezialroutinen auf seine Wortbreite festgelegt. Bei 32 Bit und Pfennigen als Einheit z.B. kann man max. 42 Millionen als Betrag nehmen, bei Fliesskommazahlen ist man freier, da Fliesskommazahlen jedoch nur eine endliche Ungenauigkeit haben, addieren sich Fehler die dadurch entstehen, dass man eine Zahl als Fliesskommazahl nicht genau abbilden kann.
Der Nachteil von Bads ist das die Rechnerei mit ihnen langsam ist und sie wesentlich mehr Speicherplatz als die binäre Darstellung brauchen. Gerade letzteres war natürlich früher knapp, auch auf dem Massenspeicher. Die Programmierer "tricksten" daher nicht, sondern machten notwendige Optimierungen. Schließlich entwickelte sich schon damals die Computer rasant weiter. Sie ließen das Jahrhundert unter den Tisch fallen und ergänzten es mit "19". Dadurch sparten sie 2 Bytes pro Datum das gespeichert werden musste.
Es ist heute leicht dies als leichtsinnig zu bezeichnen. Doch wer selbst programmiert sollte sich mal selbst an die Nase greifen. Wir reden hier von Programmen die in den 60 er und 70 er Jahren entstanden. Also 20-30 Jahre vor dem Beginn des Jahrtausends. In 20 Jahren hat sich der IBM PC von einer 4.77 MHz Maschine mit 64 Kilobyte Speicher und zwei Diskettenlaufwerken à 180 KByte zu einem 2400 MHz Rechner mit 512 MByte RAM und 60 GByte Festplatte entwickelt, denn es für ein Fünftel des Preises zu kaufen gibt. In dieser Zeit entwickelt sich Hardware so rapide weiter, das sicher niemand daran gedacht hat das man ein Programm über 20 Jahre lang nutzen und erweitern würde. Das wäre so, als würde jemand heute erwarten, das er eine Apple II AppleDOS Disk in seinen Mac stecken könnte und dann VisiCalc starten könnte oder jemand einen Pentium 4 PC mit einer MS DOS 1.0 Disk starten könnte.
Im Normalfall sind auf dem PC Anwendungsprogramme kaum betroffen, eine Ausnahme macht das BIOS, das auch die Jahreszahlen als BCDs speicherte. Hier liegt es vor allem an der schnellen Fluktuation von Hard und Software, aber auch daran das man hier schon immer von den MS-DOS Funktionen Datum als Bytes und Words bekam.
Übrigens ist man auch bei binären Darstellungen vor Fehlern gehütet. So ist das UNIX Systemdatum eine 32 Bit Zahl mit Vorzeichen. Das heißt ihr Wert geht von -2.1 Mrd. bis +2.1 Mrd. Das reicht doch dicke oder? Nicht unbedingt. Die Zahl repräsentiert nämlich die Anzahl an Sekunden die seit dem 1.1.1970 vergangen sind. Jeden Tag wird die Zahl also um 86400 größer, jedes Jahr um 31536000. Es ist leicht zu errechnen, das nach 68 Jahren es hier ein Problem geben wird. Das heißt, wenn man bis zum Jahr 2038 nicht überall den Systemcode auf 64 oder mehr Bits umgestellt hat, wird es dann den Y38 Bug geben...
Dieser Ausdruck kommt von der Softwareentwicklung. Wird eine neue Software programmiert oder entwickelt, so kommt irgendwann der Zeitpunkt an dem alle benötigten oder erforderlichen Funktionen implementiert sind. Nun macht man ein "Feature Freeze". Das heißt nun wird nichts neues mehr dazu programmiert sondern die Fehler gesucht und die Software auf umständliche Bedienung etc. abgeklopft. Da Menschen Fehler machen, enthält auch Software Fehler. Diese müssen nun gefunden und beseitigt werden. Die erste Version nach dem Feature Freeze ist eine "Alpha" Version. Die Software ist in diesem Stadium noch voller Fehler, auch sehr kritische können darunter sein, wie Totalabstürze. Eine solche Software bleibt üblicherweise innerhalb des Softwarehauses. Man kann nicht mit ihr arbeiten, dazu ist sie zu instabil und fehlerhaft.
Sind die schlimmsten Fehler behoben, so geht es an das nächste Stadium. Die Beta Version. Nun hakt es zwar an der Software. Doch gravierende Fehler sollten behoben sein. Es ist üblich in der Open Source Gemeinde eine Beta Version zu veröffentlichen und so die Allgemeinheit zu Beta Testern zu machen. Viele potentielle Anwender können die Software begutachten und Fehler finden. Inzwischen macht dies auch Microsoft bei großen Softwarepaketen, so war das Service Pack 2 von Windows XP ein halbes Jahr vor der Veröffentlichung schon in verschiedenen Beta Versionen zu bekommen, die dann immer fehlerfreier und runder wurden.
Beta Versionen kann man eingeschränkt schon zur Arbeit nutzen. Geht es um wirklich wichtige Dinge oder hängt Geld daran, so sollte man sich dies aber zweimal überlegen (z.B. bei dem Betriebssystem oder Datenbankservern). Ziel von Beta Versionen ist es nicht nur die letzten Fehler zu finden, sondern auch eine Rückmeldung über die Software zu bekommen, z.B. ob sie einfach zu bedienen ist oder der Anwender Funktionen vermisst. Wie lange eine Software "Beta" ist, hängt von den Vorlieben der Programmierer ab. Insbesondere Linux Programmierer lassen Software Monate oder jahrelang im Beta Stadium. Das hat nichts mit der Qualität zu tun sondern eher mit dem Wissen der Programmierer, dass es eine fehlerfreie Software nicht geben kann, weil Menschen nun mal Fehler machen und man nicht alle Fälle testen kann.
Der Begriff Beta Tester für Anwender die eine Software testen hat einen schlechten Ruf bekommen, weil viele Firmen überhastet Software auf den Markt geworfen haben um der Konkurrenz zuvor zu kommen. Dann wurden die Fehler nach und nach mit Updates behoben. Normalerweise sind Beta Tester Personen die wissen dass sie eine Beta Version haben und oftmals diese sogar aktiv herunter geladen haben. Endanwender sollten keine Beta Tester sein, erst recht nicht, wenn sie Geld für eine fehlerbehaftete Beta Version bezahlt haben.
Ist eine Software dem Beta Stadium entwachsen, so trennen sich die Wege. Manche Firmen schieben nun eine Gamma Phase nach in der man nochmals alles prüft. Insbesondere die Veränderungen in der Beta Phase ob man dadurch nicht neue Fehler eingearbeitet hat. Andere präsentieren nun die Software als "Release Candidat (RC)". An einem RC wird nun noch etwas poliert. Es können sich Details in der Oberfläche ändern, oder die Dokumentation ist noch nicht ganz aktuell, ansonsten ist es aber die endgültige Version. Andere Firmen schließen nach der Beta Phase die Entwicklung ab. Nun wird die Software zur endgültigen Version die man kaufen kann.
Üblich ist es auch diese Phasen feiner zu unterteilen wie "Alpha 3" oder "Beta
Build 1023" bzw. "RC4". Darüber hinaus sollte die Versionsnummer einer Software auch
Informationen über die Entwicklung geben. Die Versionsnummer ist eine Nummer in der Form "X.XX".
Das erste X vor dem Dezimalpunkt steht für ein "Major Release". Ändert sich diese um 1, so ist
dies eine bedeutende Verbesserung der Software. Das "X" hinter dem Dezimalpunkt steht für ein
"Minor Release": Das ist eine funktionelle Verbesserung, aber keine grundlegende Änderung. Das
letzte X steht für kleinere Verbesserungen oder Anpassungen. Leider ist dieses System durch
willkürliche Bezeichnungen "Windows ME, XP" oder Jahreszahlen "Windows 98,2000" abgelöst
worden.
Man kann zumindest bei Windows die Versionsnummern aber noch abfragen. Hier ein Überblick über die letzten Versionen:
Die Versionsnummer ihres Windows erfahren Sie wenn sie im Menü "Ausführen" den Befehl "cmd" (Windows NT,2000,XP) oder "command.com" (Windows 1.0-3.11,Windows 95,98,ME) eintippen. In der obersten Zeile finden Sie neben der offiziellen Bezeichnung auch die Versionsnummer. Im Beispiel ist dies z.B. "5.1 Build 2600".
| Kontakt | Neues | Bücher vom Autor | Buchempfehlungen | Gästebuch |
|
|