Carsten Kelling 1997 (); letzte Änderung: 17. September 1997 |
Erläuterte Begriffe
Eine Meßgröße ist analog, wenn sie ihren Wertebereich kontinuierlich abdeckt, also unendlich fein abgestufte Werte annehmen kann. Alle meßbaren Dinge in der Natur, abgesehen von der Anzahl der Dinge, sind analog, z.B. der Farbton des Morgenrots, die Temperatur oder die Luftfeuchtigkeit. Die unendlich feine Abstufung analoger Signale ist in der Technik gleichzeitig Vor- und Nachteil. Sie ermöglicht relativ einfache Konstruktionen (z.B. Übertragung eines Telefongesprächs als analoge elektrische Spannung in einem Kupferdraht), aber genauso, wie ein Signal sehr feine Wertunterschiede annehmen kann, wird es auch unmerklich und ständig verfälscht werden. Niemand würde auf die Idee kommen, die Anzahl der Pfennige auf seinem Konto als eine elektrische Spannung zu codieren; in einem solchen Fall wird analoge Technik sehr teuer, weswegen man ihr Gegenteil, die Digital-Technik wählt.
Der American Standard Code for Information Interchange ist wohl die verbreitetste Möglichkeit, Buchstaben, Ziffern, Satz- und Sonderzeichen als Zahlen zu codieren - intern gehen Computer ja nur mit Zahlen um. Das genormte Standard-ASCII ist ein 7-Bit-Code, enthält also 128 Zeichen; es existieren zahlreiche Erweiterungen auf 8 Bit (was sich anbietet), wie z.B. PC-8 (ASCII plus Sonderzeichen der "wichtigsten" europäischen Länder, u.a. Deutschland).
Ein Cache, der n Speicherzellen in seinem Datenspeicher zur Verfügung hat und vor der Frage "Wo speichere ich den Wert zur Adresse x?" steht, zieht nur dann wirklich alle n Speicherzellen dazu in Betracht, wenn er voll-assoziativ ist, ein vierfach-assoziativer untersucht nur vier, ein direct mapped ausgelegter nur eine Zelle. Je geringer die Assoziativität, desto größer die Wahrscheinlichkeit, daß der Cache Werte überschreiben muß, obwohl an anderer Stelle noch Platz oder weniger wichtige Daten gewesen wären, aber desto kleiner der Tag-Speicher und desto schneller der Cache, der bei der Frage "Habe ich den Wert zur Adresse x schon gespeichert? Wo?" auch in weniger Zellen "nachsehen" muß.
Das abstract windowing toolkit ist Teil von Java (ein Teil der mit dem JDK gelieferten Klassenbibliothek [JDK 1.0.2]) und kennt alle Grundelemente graphischer Benutzeroberflächen wie Fenster, Knöpfe, Schalter, Menüs, Rollbalken usw.
Im Alltag benutzen wir üblicherweise das Dezimalsystem (Zehnersystem) für die Zahlendarstellung; dieses besitzt zehn Ziffern. Mit einer einstelligen Zahl lassen sich also zehn unterschiedliche Werte darstellen, mit einer achtstelligen z.B. 108 = 10 000 000.
Wie Konrad Zuse, John von Neumann und andere richtig erkannten, bereitet es technische Probleme, die zehn Ziffern des Dezimalsystems in Rechenanlagen zu speichern. Wenn man die Ziffern, wie heute üblich, z.B. als elektrische Spannungen codiert, also jeder Ziffer eine andere Spannung zuweist, kann es leicht vorkommen, daß durch äußere Einflüsse aus einer 7 eine 8 wird etc.; integrierte Schaltungen für so viele unterschiedliche Spannungen wären auch recht aufwendig.
Deswegen wird in Rechenanlagen das Dualsystem benutzt, das nur die Ziffern 0 und 1 kennt. Mit einer achtstelligen Zahl lassen sich zwar nur noch 28 = 256 unterschiedliche Werte codieren, aber die Rechner sind sehr viel robuster und Speicher können sehr effizient und platzsparend aufgebaut werden.
Wenn nun ein Rechner Zahlen und alle anderen Daten (Befehle, Adressen, Zeichen usw.) intern im Dualsystem ablegt und verarbeitet, spricht man von binärer Codierung.
"Boole, George (1815-1864), britischer Mathematiker und Logiker, der die Boolesche Algebra entwickelte. Boole erwarb seine Kenntnisse zum großen Teil im Selbststudium und wurde 1849 Professor für Mathematik am Queen's College (heute University College) in Cork, Irland. 1954 beschrieb Boole in seinem Werk An Investigation of the Laws of Thought ein algebraisches System, das die Bezeichnung Boolesche Algebra erhielt. In der Booleschen Algebra werden logische Lehrsätze als Symbole angegeben. Mit diesen lassen sich dann mathematische Berechnungen ausführen, die den Gesetzen der Logik entsprechen. Die Boolesche Algebra ist vor allem für das Studium der reinen Mathematik und für die Entwicklung moderner Computer von großer Bedeutung." (Stichwort "Boole, George" in [Encarta97])
Eine Logik, die nur auf den Werten "1" und "0", entsprechend "wahr" und "falsch", beruht.
Eine für einen Simulator oder Debugger (ein Werkzeug zur Fehlersuche in Programmen) besonders gekennzeichnete Stelle im Hauptspeicher, an der die Ausführung eines Programms stoppen soll. Einige der Demonstrations-Applets lassen das Setzen (durch Drücken von "p" in einer Speicherzelle) von unbedingten breakpoints zu, bei deren Erreichen die Simulation also auf jeden Fall anhält. Professionelle Debugger erlauben auch bedingte breakpoints, die erst bei Eintreten einer logischen Bedingung aktiv werden.
Eigentlich ist ein Browser ein allgemeines Anzeigeprogramm für bestimmte Typen von Dokumenten, ein "Blätterer" eben. Im täglichen Wortgebrauch meint man mit Browser aber höchstwahrscheinlich einen Vertreter der artenreichen und weitverbreiteten Gattung der "Internet"- oder "Web"-Browser, die eben auf HTML-Dokumente festgelegt sind.
Ein Cache (sprich: wie cash) ist ein Speicher inklusive Steuerlogik, der einen größeren und langsameren Speicher (den Hauptspeicher eines Computers, eine Festplatte etc.) dadurch beschleunigt, daß er sich bei einem Zugriff auf den "langsamen" Speicher die Werte "merkt", die dieser enthält und diese bei dem nächsten Zugriff statt des "langsamen" Speichers liefert. Das funktioniert, obwohl der Cache kleiner als der "langsame" Speicher ist, weil Programme innerhalb eines kurzen Zeitraumes Werte oft mehrfach benötigen.
siehe dirty.
Gegenteil von analog
Eine Meßgröße ist digital, wenn sie in ihrem Wertebereich nur eine endliche Anzahl von Werten annehmen kann, also "abgestuft" ist.
"Digital, bezieht sich auf Ziffern (Digits) oder die Art, wie sie dargestellt werden. Im Zusammenhang mit Computern wird der Begriff digital oft mit dem Begriff binär gleichgesetzt, weil die meisten bekannten Computer Informationen als codierte Kombinationen von binären Ziffern (Bits: binary digits) verarbeiten. Ein Bit kann höchstens zwei Werte darstellen, zwei Bits können vier Werte repräsentieren, acht Bits 256 Werte usw. Werte zwischen zwei Zahlen werden entweder durch die höhere oder die niedrigere Zahl ausgedrückt. Da in der Digitaldarstellung ein Wert durch eine codierte Zahl repräsentiert wird, kann der darstellbare Zahlenbereich sehr umfangreich sein, wenngleich die Anzahl der möglichen Werte durch die Anzahl der verwendeten Bits begrenzt wird. Siehe auch Digital/Analog-Wandler." (Stichwort "digital" in [Encarta97])
Die digitale (und binäre) Speicherung in Computern hat auch den Vorteil der Robustheit: Wenn eine 0 als 0 Volt und eine 1 als 5 Volt codiert wird, erlauben begrenzte Verfälschungen (z.B. um 0,9 Volt) immer noch die richtige Interpretation des Wertes; wenn solchermaßen codierte Werte übertragen werden, kann man sie regelmäßig "auffrischen", ohne daß die Information verfälscht wird. Bei einem analogen Signal, das durch eine Übertragung schwächer wurde, wird bei einer Verstärkung auch jede eingeflossene Störung mitverstärkt.
Die fehlende "Feinheit" digitaler Signale verliert dann ihre Bedeutung, wenn man die Werte mit ausreichend vielen Bits codiert; die Codierung von Farbtönen mit 24 Bits reicht beispielsweise für mehr Farben aus, als das menschliche Auge unterscheiden kann.
Ein Wert in einem write back-Cache ist dirty, sofern der gecachete Wert von dem korrespondierenden Wert im "langsamen" Speicher abweicht (weil bei einem Schreibvorgang nur in den Cache, aber nicht in den "langsamen" Speicher geschrieben wurde, weil der Cache eben write back funktioniert). Wenn der Cache geleert werden soll oder eine Zelle für einen neuen Wert benötigt wird, müssen/brauchen nur die Inhalte der Zellen in den "langsamen" Speicher geschrieben zu werden, die dirty sind. Bei Caches ohne dirty-Bit gelten immer alle Zellen als dirty. Gegenteil: clean.
Bei diesem Verfahren existiert neben dem sichtbaren Bildschirmbereich noch ein unsichtbarer zweiter, genau so großer, in den die Komponenten hineinzeichnen. Erst wenn das neue Bild im Hintergrund fertiggestellt ist, wird es auf einmal in den sichtbaren Bereich kopiert, was Flackern vermeidet. Viele Grafikkarten unterstützen double buffering in Hardware, solange ihr Bildschirmspeicher doppelt so groß wie das darzustellende Bild ist. Das Hintergrundbild muß dann nicht mehr in den Vordergrund kopiert werden, sondern es wird lediglich die Adresse des sichtbaren Speicheranteils geändert (Vorder- und Hintergrundbild tauschen virtuell die Plätze).
Für jede Aktion, die der Benutzer vornimmt (Bewegen der Maus, Mausklick, Tastendruck) erzeugt Java einen event (Ereignis). Diese Instanz von java.awt.Event oder einer abgeleiteten Klasse enthält Informationen über Art, Ort und Zeitpunkt des Vorkommnisses und wird automatisch der "richtigen" (weil der Mauszeiger über ihr stand etc.) AWT-Komponente zugestellt.
Ein flag ist grundsätzlich ein boolescher Wert, also eine Variable, die genau zwei unterschiedliche Werte einnehmen kann, die man im Falle eines flags als "gesetzt" und "nicht gesetzt" bezeichnet. Viele Komponenten eines Rechners können über flags aufgetretene Ausnahmezustände protokollieren; zu den typischen flags einer ALU gehören u.a. ein Zero- und ein Overflow-flag (Ergebnis der letzten Berechnung, bei der die flags gesetzt wurden, war 0 bzw. größer als der größte zulässige Wert).
Einige Komponenten des Rechner-Baukastens kennen flags für ihr Verhalten oder Aussehen, z.B. für die Entscheidung, ob eine Abzweigung eines Busses dort, wo sie am Bus beginnt, einen "Lötpunkt" zeichnen soll.
Unser übliches dezimales Zahlensystem umfaßt zehn Ziffern (0 bis 9), das hexadezimale hingegen 16
(0 bis 9, A bis F). Es entsprechen sich also folgende Zahlen:
dezimal |
hexadezimal |
0 | 0 |
1 | 1 |
9 | 9 |
10 | A |
15 | F |
16 | 10 |
17 | 11 |
255 | FF |
4096 | 1000 |
232 - 1 | FFFF FFFF |
Das Hexadezimalsystem ist nützlich, um Zahlen des Binärsystems kürzer darzustellen, denn vier Bit einer Binärzahl fallen in einer Stelle der Hexadezimalzahl zusammen, für ein Byte benötigt man also genau zwei Hexadezimalstellen, für ein 32-Bit-Wort acht, etc.
siehe valid
Das java developers kit ist die von Sun Microsystems, erstellte und freie, für viele Plattformen verfügbare Sammlung von Programmen und Java-Klassen, um Java-Code zu programmieren, zu übersetzen und auszuführen. Es bildet die Referenz zur Sprache Java und ist die Grundlage aller kommerziellen Java-Entwicklungswerkzeuge.
Zum Zeitpunkt des Abschlusses dieser Arbeit konnten die verbreiteten Internet-Browser noch keine Applets ausführen, die features der aktuellen Java Version 1.1 benutzen, sondern beschränken sich auf den Stand der ersten offiziellen, fehlerbereinigten Version 1.0.2. Siehe [JDK 1.0.2] und [JDK 1.1]
Angenommen, der "langsame" Speicher, den ein Cache beschleunigen soll, speichere in jeder Zelle 32 Bits. Dann ist es meistens sinnvoll, daß der Cache Einheiten von, sagen wir, 4·32Bits abspeichert, d.h. eine linesize von 4 hat. Wenn ein 32-Bit-Wort aus dem "langsamen" Speicher gelesen werden soll und sich nicht im Cache befindet, muß der Cache zwar immer die gesamte line von 128 Bits aus dem "langsamen" Speicher lesen und in sich speichern. Dennoch ergeben sich Vorteile: Der Tag-Speicher wird kleiner, viele "langsame" Speicher übertragen Daten bei größeren Datenblöcken schneller als bei kleinen ("Burst" bei RAM, weniger Kopfbewegungen bei Festplatte) und die restlichen Worte der line werden mit hoher Wahrscheinlichkeit sowieso bald benötigt.
Weil der Cache viel kleiner als der gecachete "langsame" Speicher ist, muß er ständig bereits gepufferte Werte durch neue ersetzen. Ist seine Assoziativität größer als eins, kommen mehrere Werte für das Überschreiben in Frage. Üblicherweise wird entweder zufällig (randomly) eine Zelle im Datenspeicher ausgewählt (schneller, weniger Verwaltungskosten) oder es wurde eine Liste geführt, auf welche Werte wann zugegriffen wurde. Dann wird der am längsten nicht genutzte (LRU, least recently used) Wert verworfen (möglicherweise effektivere Cachenutzung, aber langsamer bei höheren Kosten). In der Praxis werden häufig Mischformen wie Pseudo-LRU benutzt.
"Methode" ist in einer objektorientierten Sprache wie Java oder C++ die Bezeichnung für eine Funktion in einer Klasse; in Pascal hieße sie also "Prozedur" bzw. "Funktion".
Ein kurzer Bezeichner für Maschinenbefehle, z.B. LDA #30 oder ADD $4, $3, $7.
Ein Konzept, um Prozessoren zu beschleunigen: Ein Befehl durchläuft den Prozessor wie auf einem Fließband von Station zu Station, die Stationen arbeiten parallel. Eine n-stufige Pipeline kann einen Prozessor theoretisch n-fach beschleunigen, aber das Laufen von Station zu Station bremst ebenso wie Abhängigkeiten (wenn alle auf einen warten).
Alle Computer, die (von Computern abstammen, die) nach den Grundsätzen des Von-Neumann-Rechners (siehe 3.3) entworfen wurden, haben auch dieses gemeinsam: Programme und Daten liegen in ein- und demselben Speicher. Weil also Befehlswörter sich in der Hardware nicht von Datenwörtern unterscheiden und für den Computer nur Zahlen sind, kann der Computer sich eigene Befehle selbst "berechnen". Auf diese Art und Weise lassen sich Befehle nachbilden, die die Hardware des Zentralprozessors des jeweiligen Computers nicht kennt; deutlicher wird dieses an dem Beispiel in 3.3.2.2 Laden und Speichern.
Begriff aus der theoretischen Informatik: Ein Ort, zu dem sich Daten hinbewegen. Gegenteil: Quelle. Die Daten kann man sich als Wasser vorstellen, das von einer (hochgelegenen) Datenquelle stets bergab in eine Senke fließt und dort verschwindet (verarbeitet wird).
Ein kombinatorisches Schaltwerk
"(engl. sequential circuit, sequential network): Die Verarbeitung binärer Informationen erfolgt in digitalen Rechenanlagen mit Hilfe logischer Schaltungen, den Schaltwerken, welche binäre Worte in andere binäre Worte umwandeln. Ein Schaltwerk habe n Eingangsleitungen und m Ausgangsleitungen.
Auf den Eingangsleitungen können binäre Worte
x1x2…xn mit xi {0; 1}
eingegeben werden und auf den Ausgangsleitungen erscheinen in Abhängigkeit von der Eingabe binäre Worte
y1y2…ym mit yi {0; 1}.
Hängt bei einem logischen Schaltwerk die Ausgabe nur von der momentan anliegenden Eingabe ab, so spricht man von einem kombinatorischen Schaltwerk. Hängt die Ausgabe außerdem noch von früheren Eingaben ab, so handelt es sich um eine Schaltung 'mit Gedächtnis', d.h. um ein sequentielles Schaltwerk (logisches Schaltwerk mit Speichergliedern). …" (Stichwort "Schaltwerk" in [Duden88])
Kombinatorische Schaltwerke werden auch Schaltnetze genannt, Schaltwerk im allgemeinen meint ein sequentielles Schaltwerk. Ein Schaltnetz besteht nur aus Logikgattern (UND, ODER, NICHT); ein Schaltwerk besteht aus einem Schaltnetz und Speichergliedern (Flipflops).
SISD: Abkürzung für single instruction stream, single data stream. Ein Rechner mit solcher Architektur besitzt nur einen Prozessor und bearbeitet damit jeweils nur einen Befehl zur Zeit, erzeugt also auch nur einen Strom von Daten. Von praktischer Bedeutung sind noch folgende Architekturen:
Jeder Cache besteht aus einem Datenspeicher, der die gecacheten Werte aufnimmt, und einem Tag-Speicher für die Verwaltungsinformationen; diese sogenannten Tag-Einträge besagen u.a. ob der Wert zu einer bestimmten Adresse sich bereits im Cache befindet und wenn ja, wo.
Das Zeitintervall zwischen einer Aktivierung (siehe zu diesem Begriff die Ausführungen in 3.2.1.1 Register) des Taktsignals und der nächsten.
Treiben (einer Leitung, eines Einganges, eines Ausganges)
Das Bild zeigt ein UND-Gatter mit drei Eingängen. An den oberen Dateneingang ist keine Datenquelle angeschlossen oder keine Quelle erzeugt eine 0 oder 1 - der Eingang wird nicht getrieben. Der Wert des Einganges wird mit Z oder "offen" bezeichnet (es scheint, als sei der Eingang durch einen geöffneten Schalter vom Rest der Welt abgeschnitten). Der mittlere Eingang wird von genau einer Quelle mit einem Wert (1) versorgt - er wird (korrekt) getrieben und hat den gleichen Wert wie die treibende Quelle. An den unteren Eingang sind zwei Quellen angeschlossen, die unterschiedliche Werte liefern - die Quellen treiben gegeneinander, der Wert des Einganges ist undefiniert; wenn 0 und 1 als unterschiedliche Spannungen codiert sind, gibt es hier auf elektrischer Ebene einen Kurzschluß.
Wegen des undefinierten unteren Einganges (niemand weiß, welche Quelle zuerst - durch ihre Zerstörung - "nachgibt") ist auch der Ausgang des UND-Gatters undefiniert. Der Eingang mit Z als Wert ist hingegen kein Hindernis - sobald man sich der Notwendigkeit und Existenz dieses logischen Wertes bewußt ist, wird man sowieso eine dreiwertige Logik (mit 0, 1 und Z) verwenden; oftmals wird z.B. festgelegt, daß Z an einem Eingang wie 1 (oder 0) interpretiert wird.
Ein Bauteil, welches neben 0 und 1 einen dritten logischen Wert Z ("offen") verarbeitet und erzeugt. Ein Tri-State-Gatter besitzt einen Dateneingang x, einen Datenausgang y und einen Steuereingang output enable. Solange output enable 1 ist, erscheint der Wert von x unverändert an y; anderenfalls erscheint an y der Wert Z. Dieses hat auf elektrischer Ebene den gleichen Effekt, als sei die Verbindung zwischen Datenein- und -ausgang unterbrochen ("offen").
Ein T. wird dazu benutzt, Kurzschlüsse auf elektrischer Ebene zu vermeiden, indem jeder Bus nur von höchstens
einer Quelle getrieben wird.
x |
output enable |
y |
0 |
0 |
Z |
1 |
0 |
Z |
Z |
0 |
Z |
0 |
1 |
0 |
1 |
1 |
1 |
Z |
1 |
Z |
Sobald ein Cache einen Wert aufnimmt, markiert er den dazugehörigen Tag-Eintrag als valid (gültig); durch Invalidieren aller Tag-Einträge wird der Cache quasi geleert.
Dieses ist die in den "Lernmaterialien zur technischen Informatik" verwendete Abkürzung für "Von-Neumann-Rechner".
Ein n-Bit-Wort ist ein Tupel aus n Bits. Wenn man nur von "Wort" spricht, sollte
man vorher eindeutig klären, wieviele Bits man damit meint; andere klassische Bezeichnungen für n-Bit-Wörter:
Anzahl Bits |
Bezeichnung |
4 | Nibble |
8 | Byte |
16 | Word |
32 | Dword (Double Word), Word, Long Word |
64 | Qword (Quad Word), Word, Long Word |
8192 = 1024 Bytes | Kbyte |
8.388.608 = 1.048.576 Bytes | Mbyte |
8.589.934.592 = 1.073.741.824 Bytes | Gbyte |
8000 = 1000 Bytes | Kilobyte |
8.000.000 = 1.000.000 Bytes | Megabyte |
8.000.000.000 = 1.000.000.000 Bytes | Gigabyte |
Alle Caches beschleunigen das Lesen aus einem "langsamen" Speicher - für Schreibzugriffe gibt es zwei unterschiedliche Verhaltensweisen. Ein write through-Cache versucht nicht, aufeinanderfolgende Schreibzugriffe zu beschleunigen, sondern schreibt immer sofort "durch" in den "langsamen" Speicher. Er kann aber ein Lesen nach einem Schreiben schneller machen, wenn er die Werte auch in seinem Datenspeicher ablegt und sie so beim Lesen bereits "kennt". Ein write back-Cache versucht auch Schreiben nach Schreiben zu beschleunigen, indem er solange nicht in den "langsamen" Speicher, sehr wohl aber in seinen eigenen Datenspeicher schreibt, wie es nur geht. Ein guter write back-Cache merkt sich außerdem, ob die Daten, die er gespeichert hat und die, die im "langsamen" Speicher stehen, voneinander abweichen ("dirty" sind), was zusätzlich Schreibzugriffe einspart, aber die Verwaltungskosten erhöht.
Ein uniform resource locator, ist eine der "Adressen" des Internets wie "http://www.uni-hamburg.de"
oder "ftp://ftp.symantec.com/products/cafe/VisualCafe V2.0.exe".
Carsten Kelling 1997 (); letzte Änderung: 17. September 1997 |