1.3. Theorie der Prozessrechentechnik history menue Letztmalig dran rumgefummelt: 12.10.12 19:17:44
Prozessrechner müssen Steuerungsaufgaben in Echtzeit übernehmen. Dafür muss ihre Hardware vorbereitet, jedoch auch ihre Software darauf eingestellt sein. Zudem arbeiten heute Mikrorechner im Verbund - sie sind also vernetzt - und periphere Aufgaben werden auch von peripheren Controllern übernommen.

+++ PROZESSRECHNER +++ PROZESSRECHNER +++ PROZESSRECHNER +++ PROZESSRECHNER +++ PROZESSRECHNER +++ PROZESSRECHNER +++
  1. Historie der Prozessrechentechnik
  2. Grundlegender Aufbau
  3. Informationsdarstellung in Rechnern
  4. Befehlsabarbeitungszyklus
  5. Rechnerbaugruppen
  6. Verwandte Themen

die Elektronikseiten

Logo für die Prozessrechentechnik

inhaltlich auf korrektem Stand - evtl. partiell unvollständig ;-)

Wissen für Fortgeschrittene der Informatik


1. Historie der Prozessrechentechnik history menue scroll up
 

Obwohl die Geschichte der elektronischen Rechentechnik erst bis in die Mitte des letzten Jahrhunderts zurückreicht, hat sie aufgrund eines beispiellosen Entwicklungstempos eine derartige Fülle von Rechnertypen und entsprechenden Bezeichnungen hervorgebracht, als „jüngstes Kind" die Mikrorechner, dass es geraten erscheint, an den Anfang eine Übersicht über die bisherige Entwicklung der Digitalrechner und ihrer Anwendungsgebiete zu stellen (Bild unten).
In zeitlicher Hinsicht lassen sich bisher 4 Etappen unterscheiden, die allgemein mit der jeweils verfügbaren Bauelementebasis (Elektronenröhren, diskrete Transistoren, integrierte Schaltkreise, großintegrierte Schaltkreise) im Zusammenhang gesehen werden und für die in den ersten 3 Etappen auch der Begriff Rechnergeneration geprägt wurde.

Entwicklungsetappen der Rechentechnik

Die mit Elektronenröhren realisierten ersten Digitalrechner (1. Generation, Elektronenrechner) wurden ausschließlich für die Bewältigung umfangreicher wissenschaftlich-technischer Rechnungen projektiert. Diese Anlagen mit für heutige Maßstäbe riesigen Ausmaßen, großem Energieverbrauch, hohen Anschaffungs- und Betriebskosten wiesen eine Leistung auf, die gegenwärtig bereits von einem mittleren Taschen- oder Tischrechner erwartet wird. Mit ihnen wurde jedoch ein neuer Maschinentyp geboren, dessen prinzipielle Struktur und Arbeitsweise nach wie vor das Bild der Rechentechnik prägt. Aufgrund der Anwendung dieser Anlagen zur Zahlenverarbeitung wurde der Begriff Rechner (Computer) eingeführt, der ebenfalls überdauerte, obwohl sich der Schwerpunkt der Anwendungen längst auf andere Aufgaben verlagert hat.
Diese Veränderung des Einsatzgebietes erfolgte bereits in der 2. Etappe: Die Erfindung und industrielle Fertigung des Transistors ermöglichten den Bau von Rechenanlagen mit geringeren Abmessungen, niedrigeren Herstellungs- und Betriebskosten und damit den breiteren Einsatz der Rechner in Industrie und Wirtschaft (2. Generation). Aus der Synthese mit der mechanischen Lochkartentechnik entstanden Anlagen, die vorwiegend zur kommerziellen Datenverarbeitung eingesetzt wurden. Dementsprechend wurde der Begriff elektronische Datenverarbeitungsanlage (EDVA) zur am häufigsten verwendeten Bezeichnung für Digitalrechner. Im Unterschied zur wissenschaftlich-technischen Rechnung stehen bei der Datenverarbeitung die Eingabe und Ausgabe und die Archivierung (Speicherung) großer Zahlenmengen im Vordergrund, während die Verarbeitungsvorgänge (Rechenoperationen) im Verhältnis dazu in den Hintergrund treten. In die 2. Etappe fielen aber auch die ersten Versuche, Rechner als Steuereinrichtungen für industrielle Prozesse einzusetzen (Prozessrechner). Damit wurde ein Anwendungsfeld mit grundsätzlich anderem Anforderungsprofil erschlossen. Diese Rechner hatten und haben in erster Linie die Aufgabe, Meßgrößen des Prozesses zu „beobachten", um daraus Stellbefehle zu „berechnen", die entweder direkt den Prozess steuern oder (wie für die 2. Etappe typisch war) den Bediener bei der Prozessführung unterstützen. Entscheidend ist, dass immer bestimmte, durch die Prozessdynamik bedingte Zeitforderungen zwischen Aufnahme und Ausgabe der Information eingehalten werden müssen. Es entsteht also die neue Situation, dass die „Rechenergebnisse" nur dann brauchbar sind, wenn sie nicht nur richtig, sondern auch in einer vorgegebenen Zeit zur Verfügung stehen. Für diese Klasse von Anwendungen wurde der Begriff Echtzeitverarbeitung (real time processing) eingeführt. Technisch gesehen, müssen diese Rechner mit spezifischen Details ausgerüstet werden, um insbesondere ihre Aufnahmebereitschaft zu beschleunigen (Unterbrechungssystem) und ihre Zuverlässigkeit zu erhöhen. Im Gegensatz zur EDV-Anlage, die nacheinander die unterschiedlichsten Aufgaben für mehrere Nutzer lösen muss und damit ständig mit anderen Programmen geladen wird, laufen die Steuerrechner ständig mit einem Programm. Die Aufspaltung in die Linie der EDV-Anlagen und der Prozessrechner ist auch in den folgenden Entwicklungsetappen zu erkennen, obgleich die technischen Unterschiede beider Rechnertypen wieder weitgehend verschwinden. Die 3. Etappe wurde von den Rechnern der 3. Generation (ESER-Anlagen) geprägt. Sie sind eine direkte Weiterentwicklung der EDV-Anlagen der 2. Generation. Die Verfügbarkeit integrierter Schaltkreise, verbunden mit verbesserten Rechnerstrukturen, führte zu einer weiteren Steigerung des Leistungs-Kosten-Verhältnisses dieser großen Rechenanlagen. Charakteristisch für diese Anlagen ist ein modularer Aufbau, bestehend aus Zentraleinheiten (Digitalrechnern) mit aufsteigender Leistungsfähigkeit (Rechnerfamilien) und aus einer Palette verschiedener Eingabe/Ausgabe-Geräte und Massenspeicher (Magnetplatten-, Magnetbandgeräte). Damit bot sich erstmals die Möglichkeit, an das Anwendungsprofil angepasste Konfigurationen zusammenzustellen. Obwohl diese Anlagen vorwiegend für die Zwecke der kommerziellen Datenverarbeitung eingesetzt wurden und werden, sind sie aufgrund ihrer technischen Merkmale ebenso für wissenschaftlich-technische Berechnungen als auch für Prozesssteuerungen einsetzbar (Universalrechner). In jedem Fall handelt es sich aber um Rechenanlagen, die aufgrund ihrer Abmessungen und Klimaforderungen eigene Räume zur Aufstellung erfordern (Rechenzentrum). Die Linie der Prozessrechner mündete in dieser 3. Etappe zu einem Teil wieder in die Linie der EDV-Anlagen, entwickelte sich aber auch eigenständig weiter, um insbesondere volumenmäßig (zwangsläufig auch leistungsmäßig) kleinere Anlagen bereitzustellen. Damit entstanden neue Begriffe, wie Kleinrechner, Kleinsteuerrechner, Kompaktrechner, Minirechner.
Die Kleinrechner eröffneten zugleich ein weiteres Einsatzgebiet der elektronischen Rechentechnik, nämlich die dezentrale Datenverarbeitung und die Verfügbarkeit von Rechnerleistung in der Nähe des Arbeitsplatzes. Die Nachteile des Rechenzentrumbetriebs, insbesondere der begrenzte Zugriff des Nutzers und die langen Programmumschlagzeiten, konnten damit bei einigen Anwendungen wieder vermieden werden. Um das Bild zu vervollständigen, muss auch vermerkt werden, dass in der 3. Etappe die Außenseiterlinie der Superrechner begann. 
Zielstellung beim Entwurf dieser Maschinen war und ist, ohne Rücksicht auf ökonomische Grenzen die für den jeweiligen Stand der Elektronik maximale Rechenleistung zu erreichen. Das Leistungsvermögen solcher Anlagen reicht inzwischen bis zu einigen 100 Millionen Rechenoperationen je Sekunde. Sie sind damit die eigentlichen Nachfolger der Digitalrechner der 1. Generation in dem Sinne, dass sie für die Ausführung wissenschaftlich-technischer Berechnungen extremen Umfangs bestimmt sind (z. B. in der wissenschaftlichen Forschung, für die Simulation komplizierter Systeme). Um die Notwendigkeit und die Leistungsfähigkeit solcher Rechner zu demonstrieren, wollen wir folgendes Zahlenbeispiel betrachten: Für die Vorausberechnung der globalen Wetterentwicklung mit Hilfe eines mathematischen Modells, das die physikalischen Vorgänge in der Atmosphäre näherungsweise nachbildet, seien nach Eingabe des Ist-Zustandes für eine 24-h-Prognose 1010...1011 Rechenoperationen notwendig. Ein mittlerer Rechner der 3. Generation mit einer typischen Operationsgeschwindigkeit von etwa 300000 Operationen je Sekunde würde dazu eine Rechenzeit zwischen 10 und 100 Stunden benötigen, also letztlich der realen Wetterentwicklung hinterherlaufen. Ein Superrechner mit 100 Millionen Operationen je Sekunde leistet die gleiche Arbeit in 2...20 Minuten.
In den 70er Jahren wurde nun eine 4. Etappe der elektronischen Rechentechnik eingeleitet, die durch die Mikrorechner geprägt ist.
Eigentlich sind die Mikrorechner „nur" ein folgerichtiges Ergebnis der Weiterentwicklung der integrierten Schaltungstechnik, in dem es technisch möglich wird, zunehmend größere Funktionseinheiten auf einem Schaltkreis zu integrieren und damit größere Baugruppen bzw. komplette Rechner mit dieser Technologie herzustellen. In funktioneller Hinsicht unterscheiden sie sich nicht von den anderen Rechnertypen. Leistungsmäßig bildeten sie (zumindest anfangs) die unterste Schicht der Rechner. Trotzdem haben sie einen Umwälzungsprozess ausgelöst, der durchaus berechtigt, von einer neuen Etappe der elektronischen Rechentechnik zu sprechen. Wodurch ist dies begründet? Die neue Qualität dieser Rechner besteht darin, dass leistungsfähige Digitalrechner in Form von Baugruppen bzw. Bauelementen zur Verfügung stehen und nicht mehr wie bisher als eigenständige Geräte produziert werden.

Dies hat vor allem 2 Auswirkungen.

  1. Dezentralisierung der Rechnerleistung, 

  2. Gerät-Rechner-Integration.

Zu 1. Da das Kosten-Leistungs-Verhältnis in der bisherigen Entwicklung zugunsten der großen Rechenanlagen sprach, herrschte als Grundtendenz die zunehmende Zentralisierung der Rechnerleistung vor. Dementsprechend musste sowohl in der Datenverarbeitung als auch bei wissenschaftlich-technischen Rechnungen der Transport der Eingabe- und Ausgabeinformationen entweder körperlich in Form von geeigneten Datenträgern oder elektrisch mit Hilfe von Datenübertragungseinrichtungen zu bzw. von den Rechenzentren bewerkstelligt werden. In der Prozesssteuerung war man bemüht, möglichst viele Aufgaben durch einen zentralisierten Rechner parallel abarbeiten zu lassen, was zu einer weiträumigen Verkabelung zwischen Rechner und Peripherie führte.
Dieser Prozess wird beim Einsatz der Mikrorechner nun wieder umgekehrt, indem eine zunehmende Dezentralisierung der Rechnerleistung ökonomisch möglich wird. Die Vorteile einer Dezentralisierung sind in erster Linie - auf dem Gebiet der Datenverarbeitung und Rechentechnik die Verfügbarkeit von Verarbeitungs- und Speicherkapazität am Arbeitsplatz, - auf dem Gebiet der Prozesssteuerung die funktionelle Entflechtung der Steueraufgaben und damit eine bessere Übersicht beim Systementwurf und bei der Wartung sowie eine erhöhte Zuverlässigkeit durch die begrenzte Wirkungsbreite eines Rechnerausfalls.
Die Dezentralisierung führt aber nicht zwangsläufig zu einer Vereinzelung in viele isolierte Rechner. Vielmehr ist es bei der Mehrzahl der Anwendungen erforderlich, zwischen den dezentralen Rechnern Informationen auszutauschen bis hin zum Aufbau hierarchischer Rechnerstrukturen. Der Rechnerverbund in Form von Mehrrechnersystemen (bei lokal konzentrierter Anordnung der Mikrorechner) oder in Form von Rechnernetzen (bei entfernt angeordneten und über Leitungen bzw. Nachrichtennetze verbundenen Rechnern) wird daher zunehmend das Bild dieser Etappe der Rechentechnik prägen.
Zu 2. Durch die Volumen- und Kostenreduzierung eröffnet sich eine Vielzahl neuer Anwendungsgebiete für Rechner, deren gemeinsames Merkmal die Gerät-Rechner-Integration ist. Durch die direkte räumliche Anordnung von Rechnern in vorhandenen Geräten (z. B. in Verarbeitungsmaschinen, Haushaltsgeräten, Meßeinrichtungen, Fahrzeugen usw.) sind neue Leistungsmerkmale (Intelligenz) erreichbar. Aber auch bisher vollkommen unbekannte Anwendungen werden erschlossen (z. B. elektronische Spiele).
Im Bild oben wurde der Mikrorechner in die Prozessrechnerlinie eingeordnet. 
Wenn wir die Steuerung von Geräten und Maschinen aller Art unter dem Oberbegriff Prozesssteuerung einordnen, entspricht dies durchaus dem ursprünglichen und auch gegenwärtigen Einsatzprofil der Mikrorechner. Dabei darf aber nicht übersehen werden, dass sich inzwischen auch die Rechnerhersteller selbst dieser Schaltkreise bedienen (in erster Linie die Hersteller von Büromaschinen und Kleinrechnern, aber auch bei den Großrechnern werden die Vorteile der Großintegration zunehmend genutzt). Eine Definition in dem Sinne - Mikrorechner und Rechner auf Basis großintegrierter Schaltkreise - kann damit nur für eine kurze Übergangsphase Gültigkeit haben, da zukünftig nur noch Mikrorechner in diesem allgemeinen Sinne existieren werden. So erhebt sich letztlich die Frage, Was eigentlich das Typische eines Mikrorechners ist und ob eine eigenständige Darstellung der Mikrorechentechnik überhaupt notwendig ist. Zur Beantwortung dieser Frage und zur Abgrenzung des in diesem Buch behandelten Gegenstandes wollen wir daher zunächst die wichtigsten Anwendungsgebiete der Mikrorechner in der Daten- und Rechentechnik selbst analysieren. Es lassen sich die folgenden 3 Produktlinien erkennen:

  1. Dezentrale Rechner für universelle oder spezielle Entwurfsarbeiten, Das Spektrum dieser Rechner reicht von den programmierbaren Taschenrechnern über Heimcomputer bis zu sehr leistungsfähigen Systemen. Obwohl diese Geräte volumenmäßig oft nur Auf-Tisch-Geräte sind, kann mit ihnen aufgrund ihrer leistungsfähigen Peripherie (z. B. grafische Farbbildschirm-Ausgabe, Plotter) und aufgrund ihrer auf Massenspeichern (Platten- und Floppydisk-Speicher) verfügbaren Programmsysteme inzwischen ein großer Teil der bisher den Rechenzentren vorbehaltenen Aufgaben direkt am Arbeitsplatz abgewickelt werden.

  2. Geräte zur Rationalisierung der Büroarbeit und dazu angepasste Kommunikationssysteme. Während die erste Produktlinie als Dezentralisierung der wissenschaftlich-technischen Rechnung gesehen werden kann, handelt es sich hier um die Dezentralisierung der Datenverarbeitung. Die Ablösung der mechanischen bzw. elektromechanischen Büromaschinen durch elektronische, auf Mikrorechnern basierende Geräte und die dezentrale Anwendung der elektronischen Datenverarbeitung und -Speicherung im Büro wird ein wichtiges Rationalisierungsvorhaben in den folgenden Jahren werden. Damit wird zugleich die Wandlung der Kommunikationstechnik einhergehen, da sich der Anschluss dieser Bürocomputer an Nachrichtennetze anbietet und somit erweiterte Möglichkeiten für den Austausch von Text- und Bildinformationen auf elektrischem Wege geboten werden (Teletex- und Faksimiledienste, Bildschirmtext).

  3. Terminals für weiträumige Informationssysteme. Obwohl die bisher betrachteten Geräte in erster Linie für den dezentralen Einsatz vorgesehen sind, bedeutet es keinen beträchtlichen Mehraufwand, sie so auszustatten, dass eine Kopplung mit weiteren dezentralen Systemen bzw. mit zentralen Rechnern über Datenübertragungseinrichtungen möglich wird. Sie sind dann Endpunkte (Terminals) eines oft weiträumigen Informationssystems (Datenbanken, Auskunfts- und Buchungssysteme). Für eine Reihe von speziellen Anwendungen wird es notwendig, funktionsbezogene Terminals auf der Basis von Mikrorechnern zu fertigen, z. B. Bedienplätze für die Platzreservierung bei Verkehrsgesellschaften, Schalterterminals für Sparkassen und Banken, Kassenterminals usw.
    Allen diesen Produkten ist gemeinsam, dass sie im Kern einen oder mehrere Mikrorechner enthalten und durch spezielle Peripherie und Software auf die jeweilige Funktion zugeschnitten sind. Sie werden also von einem Hersteller hardwaremäßig und zum Teil auch softwareseitig als komplette Finalprodukte 2- Der Mikrorechneranwender muss bevorzugt über Kenntnisse auf funktioneller Ebene verfügen. Die durch die Fortschritte in der Mikroelektronik ermöglichte Großintegration von Funktionseinheiten hat zur Folge, dass sich der Hardwareentwurf wesentlich vereinfacht und beim Anwender dazu keine tiefer gehenden elektronischen Kenntnisse erforderlich sind. Es wird deshalb in diesem Buch auf die Darstellung des „elektronischen Hintergrundes" der -Mikrorechentechnik bewusst verzichtet. Die interne Realisierung der Schaltkreise und die zum Einsatz kommende Halbleitertechnologie sind für den Anwender nur insofern von Interesse, als dadurch einige Grundparameter (z. B. Schaltgeschwindigkeit, Leistungsaufnahme, Packungsdichte) bestimmt werden. Entscheidend sind vielmehr Kenntnisse über die nach außen wirkende Funktion, um durch Komposition der Bausteine und Module die für den vorliegenden Anwendungsfall optimale Rechnerkonfiguration zu finden.

 

  1. Der Mikrorechneranwender hat es mit Anwendungsfällen zu tun, die zur Klasse der Echtzeitsysteme zählen. Die Integration eines Rechners in ein Gerät, die Anwendung zur Automatisierung technischer oder technologischer Prozesse oder zur Unterstützung eines von Menschen ausgeführten Entwurfsprozesses erfordert immer das Einhalten von Zeitbedingungen bei der Programmabarbeitung. Wir werden deshalb im folgenden Kapitel zunächst diese Anwendungsklasse näher analysieren.

Bisher haben wir vorausgesetzt, dass die Steuereinrichtung durch einen Rechner realisiert wird, wie es auch dem Anliegen dieses Buches entspricht. Trotzdem sollen im folgenden alternative Lösungen betrachtet werden, um zu erkennen, unter welchen Bedingungen ein Einsatz von Rechnern zweckmäßig und möglich ist.
Betrachten wir zunächst ein einfaches Beispiel für eine Steuerungsaufgabe entsprechend Bild unten: Der Antrieb einer Bearbeitungsmaschine soll von einem Bediener nur unter der Bedingung manuell einschaltbar sein (A1 = 1), dass zuvor eine Schutzvorrichtung den Arbeitsraum absichert. Eine Lichtschranke dient zur Signalisierung der Lage dieser Schutzvorrichtung. Ist die Schutzvorrichtung eingeschaltet, so ergibt sich das Signal E2 = 1 der Lichtschranke. Das Einschalten der Maschine (El = 1) ohne ordnungsgemäße Sicherung wird dem Bediener als Fehlbedienung mit Hilfe eines Warnsignals (A2 = 1) angezeigt. Die Steuerung muss in diesem Fall verhindern, dass der Motor arbeitet (Al = 0).
Der Zusammenhang zwischen den Ausgangs- und Eingangsgrößen der zu realisierenden Steuereinrichtung kann in diesem Fall durch eine Schalttabelle angegeben bzw. durch kombinatorische logische Funktionen analytisch beschrieben werden 
Dieses Beispiel steht für eine große Klasse von Steuerungsaufgaben, bei denen die Zustände der Ausgangsgrößen zu jedem Zeitpunkt allein von den Zuständen am Eingang zum gleichen Zeitpunkt abhängen, also die vorhergehenden Situationen keinen Einfluss auf den weiteren Ablauf haben. Zur Realisierung solcher Steuereinrichtungen bietet die Elektronik folgende Möglichkeiten Verwendung von Logikbausteinen Von der elektronischen Industrie werden seit langem (noch vor der Herstellung integrierter Schaltkreise) Sätze von Logik-Grundbausteinen (UND-, ODER-Bausteine, Negatoren, Flipflops usw.) zum Aufbau von Steuerungen angeboten. Der Entwurf einer Steuerung mit diesen Bausteinen erfordert folgende Schritte:
- Ermitteln der zu realisierenden logischen Funktionen A{ = f (El, E2---, E„) zwischen den Ausgangs- und Eingangsgrößen aus der vorgegebenen Aufgabenstellung, damit immer seltener durch ökonomische Faktoren als vielmehr durch die Tatsache ihrer gegenüber einer Hardwarelösung langsameren Arbeitsweise bestimmt. 
Für solche Anwendungen, die sehr hohe Forderungen hinsichtlich der Reaktionsgeschwindigkeit der Steuereinrichtung stellen, wird auch zukünftig der Aufbau verdrahteter Steuerungen notwendig sein.

 

Beispiel für eine kleine Steueraufgabe


2. Grundlegender Rechneraufbau history menue scroll up
Die Bezeichnung Rechner (Computer) ist dem ursprünglichen Anwendungsgebiet dieser Anlagen entlehnt, nämlich der Ausführung wissenschaftlich-technischer Berechnungen. Für das Verstehen des Aufbaus und der Arbeitsweise ist es dagegen zweckmäßig, zunächst keine Assoziationen zu solchen Anwendungen herzustellen oder gar mit dem Rechnerbegriff die Vorstellung von elektronischen Tisch- und Taschenrechnern zu verbinden.
Als Rechner wollen wir vielmehr programmgesteuerte elektronische Einrichtungen bezeichnen, die Informationen verarbeiten, speichern, an die Umwelt ausgeben und von dieser aufnehmen können.
Dementsprechend besteht ein Rechner aus folgenden Funktionseinheiten (oben):

Grundlegender Rechneraufbau und Datentransfer

 

  • Zentralprozessor (Verarbeitung der Information, Steuerung der Programmabarbeitung)

  • Speicher (Speicherung der Information, Speicherung des Programms)

  • Eingabe/Ausgabe-System (Informationsaustausch mit der Umwelt)

Genauer müssen wir dabei noch klären, was in diesem Fall unter Information zu verstehen ist.


3. Informationsdarstellung in Rechnern history menue scroll up
Informationen können rechnerintern nur durch Binärwörter endlicher Breite (Datenwort, Daten) dargestellt und verarbeitet werden. Vereinfachend nehmen wir zunächst an, dass die Wortbreite für einen bestimmten Rechnertyp konstant ist, also die Information immer in folgender Form transportiert, verarbeitet und gespeichert wird:
Jede Wortstelle besteht aus einem Binärzeichen (Bit), das die Werte 0 oder 1 annehmen kann. (Diese Informationsdarstellung ist durch die Tatsache bedingt, dass Rechner bisher ausschließlich mit Hilfe solcher elektronischer Grundbausteine 
realisiert werden, die zwei verschiedene elektrische Zustände einnehmen können.)
Bei einer Wortbreite von N bit lassen sich insgesamt 2n verschiedene Binärwörter bilden, also 2n verschiedene Zustände darstellen.
Betrachten wir als Beispiel den Fall N = 3. Die 8 verschiedenen Binärwörter lauten:

000, 001, 010, 100, 011, 110, 101, 111.

Diesen Wörtern kann nun eine beliebige Bedeutung zugeordnet werden. So könnten diese 8 Wörter zum Beispiel benutzt werden, um 8 Zahlenwerte (0, 1, 7 oder -4, -3, ..., 0, -.., -}-3), 8 Buchstaben (A, B, C, .-., H), 8 verschiedene Farben eines Gegenstandes oder 8 Steueranweisungen für ein Gerät (Motor ein, Heizung ein, . . .) usw. zu verschlüsseln.
Die Festlegung der jeweils gültigen Zuordnung (Verschlüsselung) wird als Kode bezeichnet. Damit können wir den Rechnerbegriff wie folgt konkreter fassen: 
Ein Rechner ist eine programmgesteuerte elektronische Einrichtung zur Verarbeitung, Speicherung und Eingabe/Ausgabe von Binärwörtern endlicher (meist konstanter) Breite, denen eine beliebige Bedeutung zugeordnet werden kann. (Die Zuordnung von Zahlenwerten ist dabei ein Spezialfall.)
Die Wortbreite ist somit eine wichtige Kenngröße eines Rechners. Sie ist bei den einzelnen Rechnertypen verschieden. Die Rechenanlagen der 3. Generation (ESER-Reihe) weisen z. B. eine Standard-Wortbreite von 32 bit, Prozess- und Minirechner meist 16 bit auf. Die Mikrorechner werden inzwischen mit Wortbreiten von 4, 8, 16 und 32 bit produziert, wobei der Schwerpunkt der Fertigung bei 8- und 16-bit-Prozessoren liegt.
Wir wollen uns deshalb der Frage zuwenden, wie muss oder sollte die Wortbreite eines Rechners gewählt werden. Die folgende Tabelle zeigt anhand einiger Zahlenpaare, wie durch Verdoppelung der Wortbreite die Anzahl der kodierbaren Zustände exponentiell wächst:

Wortbreite N Anzahl der Binärwörter 2n

4 16

8 256

16 65 536

32 4294367296
Es ist zunächst naheliegend anzunehmen, dass die Wortbreite entsprechend der Anzahl der Zustände gewählt wird, die im jeweiligen Anwendungsfall unterschieden werden müssen.
Betrachten wir einige Beispiele:

1. Um die Dezimalziffern 0...9 zu kodieren, reicht bereits eine Wortbreite von 4 bit. Die Kodetabelle könnte wie folgt lauten:

Dabei bleiben 6 Binärwörter übrig, die in diesem Fall nicht verwendet werden: 
0 0000
1 0001
2 0010 1010
3 0011 1011 
4 0100 1100 
5 0101 1101 
6 0110 1110 
7 0111 1111 
8 1000
9 1001

Diese Zuordnung wird oft angewendet und als BCD-Kode bezeichnet.

2. Die Kodierung eines kompletten Zeichensatzes für Textausgabe (Groß- und Kleinbuchstaben, Ziffern, Sonderzeichen) erfordert bereits eine Wortbreite von 7 bit. Hierfür ist eine Kodetabelle (ISO-7-bit-Kode) international standardisiert worden.
3. Sollen rationale Zahlen rechnerintern kodiert werden, dann sind mit wachsendem Zahlenbereich sehr schnell große Wortbreiten notwendig. Die Darstellung aller sechsstelligen positiven und negativen Zahlen im Festkommaformat (Komma beliebig, aber fest vereinbart) erfordert z. B. die Unterscheidung von 1999999 Zahlen (Zuständen) und damit eine Wortbreite von 21 bit.
Aus den Beispielen ist ersichtlich, dass bei Anwendung der Rechner zur Zahlenverarbeitung im Interesse eines großen darstellbaren Zahlenbereichs (und damit einer hohen Rechengenauigkeit) eine möglichst große Wortbreite zu realisieren ist.
Dem steht entgegen, dass die Wortbreite entscheidend den technischen Aufwand und damit die Kosten eines Rechners bestimmt. Elektronische Speicherzellen können nur ein Bit speichern, die Logikbausteine verarbeiten nur einstellige Binärwörter, so dass alle diese Baustufen N-fach parallel angeordnet werden müssen. Als Transportwege zwischen den Baugruppen werden Bündel ven jeweils N Leiterbahnen erforderlich.
Es ist folglich beim Entwurf eines Rechners bzw. seines Zentralprozessors notwendig, einen Kompromiss zwischen Wortbreite und Leistungsfähigkeit zur Zahlenverarbeitung zu schließen. Dies führt oft dazu, dass die durch die Wortbreite gegebene Anzahl unterschiedlicher Wörter nicht ausreicht, um die für den jeweiligen Anwendungsfall benötigten Zustände zu kodieren. Insbesondere gilt das bei Zahlenrechnungen. Der Ausweg kann nur darin bestehen, dass mehrere Binärwörter zur Informationsdarstellung herangezogen werden. Da aber Rechner meist nur Binärwörter in ihrer Standardwortbreite in einem Schritt verarbeiten, transportieren und speichern können, müssen dann diese Vorgänge in zeitlich aufeinanderfolgenden Schritten ausgeführt werden. Das heißt, anstelle eines Befehls sind bereits Programme notwendig, um Elementaroperationen zu realisieren. 
Folglich werden sich die Ausführungszeiten erheblich vergrößern. Es gilt also zu vermerken:
Trotz einer endlichen Wortbreite lassen sich rechnerintern beliebig viele Zustände (bzw. ein beliebig großer Zahlenbereich) darstellen und verarbeiten. 
Überschreitet die Anzahl der Zustände aber den durch die Wortbreite des Rechners vorgegebenen Bereich, dann geht dies zu Lastender Arbeitsgeschwindigkeit des Rechners.
Durch eine „geschickte" Kodierung der Zahlen kann die Arbeitsgeschwindigkeit in bestimmtem Maße beeinflusst werden. In der rechentechnischen Literatur wird daher dieser Problematik gewöhnlich breiter Raum gewidmet. Beim Rechnereinsatz für Steuerungsaufgaben spielen dagegen Rechenprozesse meist eine untergeordnete Rolle. Es soll deshalb nur die einfachste Möglichkeit der Kodierung von Dezimalzahlen und zwar die Kodierung als Dualzahl ohne Vorzeichen, betrachtet werden
In diesem Fall wird jeder Bitstelle des Datenwortes wie folgt eine Wertigkeit mit aufsteigenden Potenzen zur Basis 2 zugeordnet:
Folglich lassen sich mit dieser ,Kodierung die natürlichen Zahlen im Bereich von 0 ... 2r' - 1 darstellen.

Betrachten wir einige Kodierbeispiele für die bei Mikrorechnern oft verwendete Wortbreite von 8 bit: Der darstellbare Zahlenbereich reicht dementsprechend 
von 0 ... 255, und es gelten die folgenden Zuordnungen:

1 0 I 1 1 0 0 1 f 271

128 +32 +16 +2 +1 = 179

0 I 1 I 0 0 1 T 1 0 0

64 +8 +4 = 76

1 1 1 1 1 I 1 1 ( 1

128 +64 +32 +16 +8 +4 +2 +1 = 255. 

4. Befehlsabarbeitungszyklus history menue scroll up
Von den im Bild 2.11 dargestellten Funktionseinheiten ist der Zentralprozessor der eigentliche Kern, der aktive Teil des Rechners. Als Zentralprozessor (ZVE zentrale Verarbeitungseinheit oder engl. CPU central processing unit) wird die Funktionseinheit eines Rechners bezeichnet, die, von einem Grundtakt gesteuert, dafür sorgt, dass in endloser Folge Befehle ausgeführt werden.
Jeder Prozessor besitzt dabei einen bestimmten Befehlssatz, d. h. eine Menge von Befehlswörtern, die er „versteht" und ausführen kann. Mit Anlegen des Grundtaktes beginnt der Prozessor seine Arbeit und durchläuft fortlaufend sog. Befehlszyklen.

Unter einem Befehlszyklus (Befehlsschleife) wird der Zeitabschnitt zur Ausführung eines Befehls verstanden. Während dieser Zeit muss der Prozessor die folgenden Aufgaben erfüllen:

Befehlszyklus und Kommunikationsarten in den Phasen des Befehlszyklus

  1. Holen des Befehls. Der Prozessor verfügt über einen Speicherplatz für jeweils einen Befehl, das Befehlsregister. In dieses Befehlsregister muss daher zuerst ein Befehl aus dem Programmspeicher geladen werden. Der Prozessor startet 
    dazu einen Lesevorgang mit dem Programmspeicher und erhält den in diesem Befehlszyklus auszuführenden Befehl übermittelt.

  2. Ausführung des Befehls. Der Inhalt des Befehlsregisters wird anschließend vom Prozessor analysiert (dekodiert) und eine für den speziellen Befehl typische Folge von elementaren Ausführungsschritten vollzogen. In Abhängigkeit 
    vom Befehlswort sind dazu entweder nur Aktionen innerhalb des Prozessors oder aber Transportvorgänge (Kommunikationen) mit der Speicherbaugruppe (Lesen oder Schreiben) bzw. mit den Eingabe/Ausgabe-Kanälen notwendig. 
    Die Dauer dieser Zeitphase kann daher unterschiedlich lang sein.

  3. Bestimmung der Folgebefehlsadresse. Bevor ein weiterer Befehlszyklus gestartet werden kann, ist es erforderlich, die entsprechende Adresse für den Programmspeicher zu ermitteln. Naheliegend wäre anzunehmen, dass die Befehle im Programmspeicher lückenlos, in aufeinanderfolgenden Speicherplätzen abgespeichert sind. Dann müsste die Speicheradresse einfach weitergezählt (erhöht) werden. Dieser „Mechanismus" allein reicht nicht aus, denn dann würde sich das Arbeitsprinzip der Rechner nicht von den schon seit Jahrhunderten bekannten Automaten unterscheiden, die durch ein sequentielles Programm (damals gespeichert auf rotierenden nockenbehafteten Walzen u. ä.) gesteuert wurden. Die neue Qualität der Rechner als programmgesteuerte Automaten besteht jedoch gerade darin, dass sie fähig sind, Programmverzweigungen auszuführen. Das heißt, in Abhängigkeit von zuvor erhaltenen Verarbeitungsergebnissen (Resultat Null, Überlauf des Wertebereichs usw.) ist eine alternative Programmfortsetzung möglich, indem durch spezielle Befehle (Sprungbefehle) das Programm vom Programmierer in mindestens 2 Richtungen verzweigt werden kann. Die Wirkung dieser Befehle besteht darin, dass bei Erfüllung der Sprungbedingungen durch die zuvor erhaltenen Resultate nicht die Befehlsadresse weitergezählt wird, sondern eine im Befehlswort angegebene neue Adresse übernommen wird. Diese bildet die Basis für das Weiterzählen in den folgenden Befehlszyklen, solange, bis ein weiterer Sprungbefehl im Programm vorkommt.
    Da die Sprungadresse auch eine zurückliegende Befehlsadresse sein kann, lassen sich auf diese Weise auch Programmschleifen programmieren.

  4. Prüfung auf Unterbrechungsforderungen. Mit Hilfe der Sprungbefehle sind nur Programmverzweigungen programmierbar, die zu einem determinierten Zeitpunkt erfolgen, nämlich zu dem Zeitpunkt, an dem der Prozessor bei der sequentiellen Programmabarbeitung bei diesem Sprungbefehl angelangt ist. 
    Bei vielen Echtzeitanwendungen ist es jedoch erforderlich, möglichst schnell auf bestimmte Ereignisse zu reagieren, die sich in der Umwelt des Prozessors zu zufälligen Zeitpunkten ereignen können. Es muss also bei Eintreten einer solchen Situation ein „Sprung" zu einem Programmabschnitt erfolgen, der die dann notwendige Reaktion des Rechners bewirkt. Dies bedeutet, dass eine Unterbrechung (interrupt) des gerade in Abarbeitung befindlichen Programmteils vorgenommen werden muss. Aufgrund des Zufallcharakters kann diese Art der Programmverzweigung nicht im Programm vorausgeplant werden, sie muss vielmehr durch eine spezielle Hardwareeinrichtung erkannt und erzwungen werden. Diese Baugruppe eines Rechners wird als Unterbrechungssystem bezeichnet und ist (zumindest teilweise) Bestandteil jedes Zentralprozessors.
    Selbstverständlich kann eine auftretende Unterbrechungsforderung (Unterbrechungssignal) nicht sofort die Arbeit des Prozessors abbrechen. Nachdem aber der laufende Befehl abgearbeitet und die neue Befehlsfolgeadresse ermittelt worden ist, wird vor dem Start eines neuen Zyklus immer erst geprüft, ob in der Zwischenzeit Unterbrechungsforderungen aufgetreten sind (Bild 2.12). 
    Ist dies der Fall, dann wird die eigentliche Folgeadresse „gerettet" (auf speziell dafür vorgesehene Speicherplätze) und durch das Unterbrechungssystem die für die konkrete Unterbrechungsursache vorgesehene Startadresse des  Unterbrechungsbehandlungsprogramms (interrupt-service-routine) bereitgestellt. Auf diese Weise wird gewährleistet, dass nach Abarbeitung dieses Unterbreehungsbehandlungsprogramms die ursprüngliche Folgebefehlsadresse zurückgeholt und das unterbrochene Programm ohne Informationsverlust (allerdings mit Zeitverzug) fortgesetzt werden kann.
    Es gilt also zu unterscheiden: Die sequentielle Abarbeitungsfolge eines Programms kann verlassen werden durch:

Sprungbefehle und Unterbrechungsforderungen

Die Wirkung ist in beiden Fällen gleich: Die Fortsetzung des Programms erfolgt nicht mit dem Folgebefehl des Programmspeichers, sondern an einer vom Programmierer festgelegten anderen Stelle. Das Wesen ist dabei aber grundverschieden: Durch einen Sprung wird eine determinierte Verzweigung im Programm geschaffen, um auf bestimmte Ereignisse, die bei der Programmausführung eingetreten sind, zu reagieren. 
Die Unterbrechung ist dagegen eine Programmverzweigung aufgrund zufälliger Ereignisse, die unabhängig vom gerade in Arbeit befindlichen Programmabschnitt eingetreten sind, aber einer sofortigen Reaktion durch den Rechner bedürfen.
Die Unterbrechungsfähigkeit ist ein entscheidendes Instrument bei der Echtzeitverarbeitung. Die Leistungsfähigkeit des Unterbrechungssystems (z. B. die erforderliche Umschaltzeit) ist deshalb eine der wichtigsten Kenngrößen für Rechner dieser Einsatzklasse.
Kehren wir nun noch einmal zurück zum Befehlszyklus mit den vier Aufgaben: Befehl holen, Befehl ausführen, Folgebefehlsadresse ermitteln, Unterbrechungen prüfen. Den Antrieb für diesen sich fortlaufend wiederholenden Zyklus bildet der dem Zentralprozessor zugeführte Grundtakt. Für jede Aufgabe wird eine Anzahl solcher Taktperioden benötigt. Die Phase der Befehlsausführung erfordert bei den meisten Prozessoren eine unterschiedliche Taktanzahl entsprechend dem Umfang der zu leistenden Arbeit. Folglich gilt, dass die Befehlsausführungszeiten zwar verschieden lang sind, aber stets ein ganzzahliges Vielfaches dieser Grundtaktperiode betragen (Bild 2.13). Der Grundtakt bildet somit ein synchrones Zeitraster, nach dem nicht nur alle internen Transport- und Verarbeitungsschritte, sondern auch die Eingabe/Ausgabe-Vorgänge zur Umwelt ablaufen.
Dieser Takt bestimmt zugleich die Arbeitsgeschwindigkeit des Rechners und wird folglich so schnell wie möglich gewählt. Aufgrund der inneren Verzögerungszeiten der elektronischen Grundbausteine wird er jedoch begrenzt. Ein Hauptziel 
bei der Weiterentwicklung der Herstellungsverfahren integrierter Schaltkreise besteht deshalb in der Erhöhung der zulässigen Taktfrequenzen. Gegenwärtig arbeiten die am häufigsten eingesetzten Mikrorechner- und Mikroprozessorschaltkreise mit Taktfrequenzen bis etwa 10 MHz.
Bei der bisherigen Betrachtung des Befehlszyklus wurde davon ausgegangen, dass alle vier Aufgaben zeitlich nacheinander ausgeführt werden. Eine genauere Analyse ergibt, dass es möglich ist, sowohl innerhalb eines Befehlszyklus bestimmte Vorgänge zeitlich parallel abzuwickeln als auch gewisse Aufgaben der aufeinanderfolgenden Zyklen zu überlappen (pipelining), um die Arbeitsgeschwindigkeit zu erhöhen. Bild 2.14 zeigt, wie noch während der Phase der Befehlsausführung bereits der Folgebefehl geholt wird, der allerdings nur dann zur Ausführung gelangt, wenn keine Unterbrechungsforderungen vorliegen.


Prozessortakt und Befehlszyklus 

Überlappung der Befehlszyklen (Pipeling) 


5. Rechnerbaugruppen history menue scroll up
Aus der Aktionsfolge des Befehlszyklus (Bilder zu 4) lassen sich unmittelbar die notwendigen Baugruppen eines Prozessors und eines Rechners ableiten. Bild oben zeigt die Blockstruktur, die wir im folgenden schrittweise entwickeln wollen.
Betrachten wir zunächst die in der linken Hälfte angeordneten Baugruppen, die für die fortlaufende Durchführung der Befehlszyklen sorgen: Das Befehlsregister bewahrt für die Dauer eines Zyklus den abzuarbeitenden Befehl auf und liefert damit die Eingangsinformation für den Befehlsdekoder, der vom Grundtakt gesteuert alle Steuersignale für die übrigen Rechnerbaugruppen erzeugt. Der Befehlsdekoder ist dementsprechend eine komplexe Baugruppe, durch deren Aufbau der Befehlssatz des Rechners festgelegt ist.

Rechnerbaugruppen

Die für den konkreten Anwendungsfall benötigte Gesamtheit an Befehlen (Programmsystem) wird im Programmspeicher aufbewahrt. Am Anfang des Befehlszyklus wird der Befehl aus diesem Speicher gelesen und ins Befehlsregister transportiert. Die Adresse für den Programmspeicher wird im Befehlsadressregister (Programmzähler oder engl. PC programm counter) zuvor bereitgestellt. 
Der Inhalt des Programmzählers wird danach entweder weitergezählt oder es wird eine neue Folgebefehlsadresse eingetragen, falls ein Sprungbefehl in diesem Zyklus dekodiert worden ist.
Das Unterbrechungssystem fängt die Unterbrechungsforderungen auf und bewirkt, nachdem der laufende Befehl ausgeführt worden ist und solche Forderungen vorliegen, dass der Inhalt des Programmzählers gerettet und eine Startadresse zur Unterbrechungsbehandlung eingetragen wird. Die Rettung des Programmzählerinhalts und evtl. weiterer Zustandsinformationen des Zentralprozessors zum Unterbrechungszeitpunkt erfolgt in einem speziellen Speicherbereich, dem Statusspeicher. Auf der rechten Seite im Bild oben sind jene Baugruppen dargestellt, die zur Realisierung der eigentlichen Arbeitsaufgaben eines Rechners dienen:
Den Kern bildet die Arithmetik/Logik-Einheit (ALU - arithmetic logic unit oder älter: Rechenwerk). Durch Steuersignale vom Befehlsdekoder ausgewählt, wird in dieser Baugruppe jeweils eine arithmetische oder eine logische Operation ausgeführt, mit der 1 oder 2 Operanden zu einem neuen Binärwort verarbeitet werden. Dieser Vorgang erfolgt sehr schnell, meist innerhalb einer Grundtaktperiode. Der Umfang der mit dieser Baugruppe realisierbaren Funktionen bestimmt damit entscheidend die Leistungsfähigkeit eines Rechners. Die Arithmetik/Logik-Einheit ist neben dem Befehlsdekoder eine zweite komplexe Baugruppe. Dementsprechend wird oft zur Aufwandsverringerung an dieser Baugruppe gespart und nur ein Mindestumfang, insbesondere bei den arithmetischen Operationen, vorgesehen. Höhere Arithmetikoperationen müssen dann durch Programme (softwaremäßig) auf die implementierten (hardwaremäßig realisierten) Grundoperationen zurückgeführt werden. Einsparungen an diesem Teil der Hardware führen also zu größerem Programmaufwand und langsamerer Arbeitsweise des Rechners.
Die in der ALU zu verarbeitenden Binärwörter (Operanden, Daten) werden von bestimmten Plätzen des Datenspeichers entnommen und das Ergebnis dort wieder abgespeichert. Da für die Transportvorgänge (Kommunikationen) zwischen der ALU und dem Datenspeicher einige Grundtaktperioden nötig sind, wird oft ein kleiner Teil dieses Datenspeichers „in Nähe" der ALU angeordnet und dann als Registersatz (Registerbank) bezeichnet. Der Zugriff zu diesen Registern erfolgt sehr schnell und führt zu kürzeren Befehlsausführungszeiten.Zwischen Datenspeicher/Registersatz und ALU ist folglich ein Transportweg für Daten erforderlich, der auch zu allen E/A-Toren führt. Die E/A-Tore (E/A-Ports) sind die Koppelelemente zwischen Rechner und Umwelt. Ihre Funktion kann am einfachsten wie folgt erklärt werden: E/A-Ports sind Speicherplätze für jeweils ein Wort, mit denen aber im Unterschied zu den Speicherplätzen des Datenspeichers der Prozessor entweder nur Leseoperationen (Eingabeport) oder nur Schreiboperationen (Ausgabeport) ausführen kann. Die jeweilige Gegenfunktion wird dementsprechend von der Umwelt ausgeführt.
Zur Auswahl eines Platzes aus der Gesamtheit ist sowohl für den Datenspeicher und Registersatz als auch für die E/A-Tore die Angabe einer Adresse erforderlich. 
Diese Adressinformation wird über einen weiteren Transportweg geführt, der vom Befehlsdekoder gespeist wird.
Die Darstellung gemäß Bild oben soll die Gliederung eines Rechners in 2 Hauptteile verdeutlichen: Den steuernden Teil (dazugehörige Baugruppen rot umrandet), der vom Grundtakt angetrieben in synchroner Arbeitsweise laufend Befehlszyklen durchläuft, und den gesteuerten Teil (dazugehörige Baugruppen schwarz umrandet), der entsprechend der aus dem Programmspeicher ausgelesenen Befehlsfolge zur Ausführung bestimmter Verarbeitungs- und Transportoperationen zwischen ALU, Datenspeicher und E/A-Ports veranlasst wird. Die Kopplung zwischen diesen beiden Teilen erfolgt in erster Linie durch vom Steuerteil ausgehende Signale mit 2 Ausnahmen: Zur Ausführung bedingter Sprünge ist eine Rückkopplung von der rechten Seite zu der Baugruppe, die über die Folgebefehlsadresse entscheidet, notwendig, um die Eigenschaften (engl. flags) des letzten Resultats zu übermitteln. Außerdem muss für den Steuerteil die Möglichkeit bestehen, auf Registerinhalte zurückzugreifen.
Das Bild oben soll in erster Linie die funktionellen Zusammenhänge zwischen den Baugruppen eines Rechners verdeutlichen. Die praktische Realisierung kann davon durchaus abweichen. So werden z. B. die verschiedenen Speicher oft zu einem Speicherblock vereinigt und dementsprechend über einen gemeinsamen Transportweg angeschlossen.


6. Verwandte Themen history menue scroll up

Was ist alles mit dem Betriebssystem eines Microcomputers verwandt? Antwort: faktisch der gesamte Bereich der Digitalelektronik und sowieso die gesamte Technik der Software-Technologie der Vergangenheit, Gegenwart sowie zumindest der nächsten Zukunft.

Der LC-80 Simulator

POLYCOMPUTER

Z80-CPU

Mnemonic-Code-Notation

höhere Programmierwerkzeuge

... und so funktioniert ein Computer

 

die beliebte alphabetisch sortierte Schnell-Liste

die beliebte numerisch sortierte Schnell-Liste

Allgemeine FLAG-Wirkung

FLAG-Wirkung auf OP-Code-Gruppen

Alphabetisch sortierte Dokumentation

FLAG Teile I

FLAG Teile 2

Allgemeine Funktionssymbolik

Aktuelles sowie weiterentwickeltes Betriebssystem

Blockschaltbild eines Einchiprechners

PIC5-Schaltungssammlung

das E-Blocks-Kid

Projekt Assemblerprogrammierung

Speicherprogrammierbaren Steuerungen - SPS

 


zur Hauptseite
© Samuel-von-Pufendorf-Gymnasium Flöha © Frank Rost Februar 2001

... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-)

„Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“

Diddi Hallervorden, dt. Komiker und Kabarettist

Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-)