Technische Informatik 2:Folienwissen

Aus II-Wiki
Zur Navigation springen Zur Suche springen

Übersicht der Folien

2: 040, 050, 090, 120
3: 010, 020, 090, 120, 180, 190, 200
4: 010
5: 010, 040, 050, 080, 090
7: Allgmeine Begriffe

Bitte nur einzelne Absätze bearbeiten. Wenn jemand Strukturverbesserungen hat, kann er ja 'ne Diskussion auf machen

--Omega_Maisfeld 13. Jul 2005 13:37 (CEST)

Architekturmodellierung mit Petri-Netzen

Formale Definition von Petri-Netzen (2_040)

[...]

Schaltregeln (2_050)

  • Transitionen schalten nur, wenn sowohl alle Vor- als auch Nachbedingungen erfüllt sind
  • Vorbedingungen sind erfüllt, wenn: z.B. eine Marke im jeweiligen Platz liegt
  • Nachbedingungen sind erfüllt, wenn noch genug Platz ist die Marken im jeweiligen Platz abzulegen

Konflikte

Definition (2_090)

Konflikte treten nur dann auf, wenn mehrere Transitionen (zum selben Zeitpunkt) schaltfähig sind (Vor- und Nachbedingungen müssen erfüllt sein), aber das gleichzeitige Schalten aller Transitionen auf Grund gegenseitiger Beeinflussung der Schaltfähigkeit der Transitionen nicht möglich ist.

Arten (2_090)

  • Vorkonflikt: Die Markenanzahl im "Vor"-Platz würde beim gleichzeitigen Schalten negativ werden.
  • Nachkonflikt: Die Markenanzahl im "Nach"-Platz würde die Kapazität überschreiten.

Lösungsmöglichkeiten (2_100)

  • zusätzliche Vor- oder Nachkanten
  • zusätzliche Sonderkanten
  • wx Belegungen (Bewertungsfunktionen s. 2_120)
  • Konfliktwahrscheinlichkeiten
  • Prioritäten

Interpretierte Petri-Netze (2_120)

  • Bewertungsausdrücke an den Transitionen; sie sind schaltfähig, wenn der Wert des Ausdrucks "1" annimmt (x1^x2)
  • Ausgabefunktionen an den Plätzen; sie sind "1", wenn mindestens eine Marke vorhanden ist
  • Zeitbewertungsfuktion an den Transitionen; die Transitionen schalten erst, wenn sie für z.B. t>5s schaltfähig waren

Prozessor-Baugruppen und Prozessorzugeordnete Baugruppen

Grundarchitekturen (3_010)

Harvard - Archiktektur

  • Physikalische Trennung von Daten-, Befehls- und E/A-Bussen
  • demzufolge strikte Trennung der jeweiligen Einheiten
  • Vorteil: schneller, da gleichzeitiges Zugreifen auf Daten und Befehle möglich ist
  • Harvard-Architektur

Princeton (von Neumann) - Architektur

  • CPU kommuniziert mit allen peripheren Bauteilen über einen gemeinsamen Systembus
  • Befehls- und Datenspeicher können ein gemeinsamer physikalischer und/oder logischer Speicher sein
  • Vorteil: einfacher und modularer im Aufbau
  • Von-Neumann-Architektur

Prozessor Grundstruktur (3_020)

Die in 3_20 abgebildete Struktur ist die Grundstruktur, nach der jede CPU arbeitet, sei es die im Taschenrechner oder die von IBM's Cell (nur der Pentium 4 arbeitet noch mit Holzkohle).

Die Kästchen auf dem Bild haben verschiedene Aufgaben:

  • ALE (Arithmetische Logik Einheit) bzw. ALU (Arithmetical Logical Unit): Sie ist das Herzstück der CPU, denn sie ist für die Berechnung von Werten zuständig. Dabei brechnet sie aus bis zu 2 Eingangsoperanden zu einem Ausgangsoperanden mit Hilfe von arithmetischen (ADD, SUB, MULT...) oder logischen (OR, XOR, ...) Operationen zu verknüpfen, bzw. Sprünge, Vergleiche, Stackbefehle oder Bitbefehle durchführt. Einige Befehle geben einen Ergebnisstatus in Form von Flags (siehe PSR) zurück.
  • OR (Operandenregister) = Speicher für die zu verarbeitenden Operanden (Ergebnis typischerweise nach OR1). Je nach CPU-Typ gibt es mehrere davon, daher ORi.
  • OA (Operandenadressregister): hier liegt die Adresse des nächsten Operanden drin, wenn er ausm Speicher geholt werden muss.
  • PSR (Prozessorstatusregister) = Speicher für die Flags (Carry, Overflow, Frau-am-Rechner, etc pp)
  • BR (Befehlsregister): enthält den aktuellen Befehl in Maschinencode. Damit die ALU diesen Maschinencode auch versteht braucht man den BD.
  • BD (Befehlsdekoder): dekodiert die eingehenden Befehle, dass die ALU sie verarbeiten kann.
  • BA (Befehlsadressregister): zeigt auf die Adresse des folgenden Befehls. Die Befehlsadresse wird meist durch einfaches Inkrementieren geändert. Es besteht jedoch die Möglichkeit, sie auch mit Hilfe des DBIs zu verändern.

Wer sich noch an TI1 bzw. AlPro erinnern kann: BA und BR zusammen machen in etwa das, was der Befehlszähler der Registermaschine macht.

  • AST (Ablaufsteuerung) = sequentielle Schaltung, die das logisch-zeitliche Verhalten der Befehle steuert - sie sorgt dafür, dass während der Befehlsabarbeitung alles einer bestimmten Vorgabe folgt. Daher ist sie mit allen übrigen Prozessorbaugruppen verbunden. (siehe Prinzipieller Ablauf)
  • Busse: öffentliche Datennahverkehrsmittel. Getrennte Busse für Daten (DB), Adressen (AB) und Steuersignale (SB). Bedingt durch ihren Aufbau brauchen sie eine elektronische Verstärkung, die Treiber (DT, AT, ST). Vor der Signalverstärkung werden die jeweiligen Busse als intern gekennzeichnet (DBI, ABI, SBI). Die Treiber sind also das Tor zur "Welt außerhalb der CPU".

Verallgemeinerter Befehlsablauf im Prozessor (3_090)

Programmablauf (3_120)

  • Verzweigung (JMP): Nach diesem Befehl zeigt das BA auf den neuen Befehl auf den gerspungen wird.
  • Unterprogammaufruf (CALL mit RET (Rückkehr)): Mit CALL kann man ein Unterprogramm aufrufen, etwa so, wie wenn man in einer Hochsprache eine Funktion aufruft. Dabei springt man aus dem aktuellen Befehlsablauf heraus in ein Unterprogramm und an dessen Ende (RET) wieder zurück an die Stelle unter den Aufruf (CALL). Vor dem Sprung wird die Adresse des Befehls nach dem CALL sowie der Inhalt des PSR in den Stack kopiert, damit man nach dem RET wieder an die Aufrufstelle zurückfindet und den Ausgangszustand wieder herstellen kann. Danach wird dann der BA mit dem Sprungziel gesetzt und das Unterprogramm abgearbeitet.

Buszyklus, synchron, lesen (3_180)

Beim synchronen Lesen vom Speicher sind Prozessor und Speicher zeitlich aufeinander abgestimmt - daher "synchron".

Wenn der Prozessor Daten aus dem Speicher benötigt, dann schickt er die Adresse (in OA) der Speicherzelle über den Adressbus zum Speicher und setzt MRD (Memory Read Data) auf "1" um ein "Speicher lesen" zu signalisieren. Dann wartet der Prozessor solange, wie ein Speicher normalerweise zum Daten intern auslesen und auf den Datenbus schreiben braucht, plus eine gewisse Toleranzzeit (falls der Speicher mal länger braucht ("Wenns mal länger dauert"). In der Zeit liest der Speicher die Daten von der Adresse, die auf dem Adressbus liegt, und gibt das Ergebnis auf den Datenbus aus. Sobald die Wartezeit des Prozessors verstrichen ist, liest dieser die Daten vom Datenbus ein und schreibt sie in ein Register seiner Wahl (ORi). Anschließend schaltet er das MRD-Steuersignal wieder auf "0", damit der Speicher wieder inaktiv werden und somit auf einen neuen Speicherbefehl warten kann. Nun kann der Prozessor mit der internen Abarbeitung seiner Befehle fortfahren.

Für die Freaks (ignore for TI2-Klausur): Der gemeine PC-Hardware-Tuner weiß ja was mit dem Begriff Speicherlatenzen anzufangen. DRAM Command Time beschreibt dabei die Zeit bis zum Aufruf der MRD (meist 1 Takt), RAS und CAS die Zeit, die der MRD braucht, um Daten aus dem Speicher zu holen (RAS ist die Row-Zeit und CAS halt die Cols-Zeit). Aus RAS und CAS bestimmt sich der CL-Wert des Speichers (meist CL2 bis CL3).

Das synchrone Lesen von der Eingabe funktioniert analog, nur das überall "Speicher" durch "Eingabe" bzw. "Input" ersetzt wird und der MRD heißt dann IOR (Input Output Read).

Buszyklus, synchron, schreiben (3_190)

Das ganze funktioniert im Endeffekt genauso, wie vom Speicher zu Lesen. Die einzigen Unterschiede sind, dass der Prozessor außer der Adresse auf den Adressbus auch die zu schreibenden Daten auf den Datenbus packt bevor er dem Speicher das Signal gibt aktiv zu werden. Dies geschieht hier anstelle des "MRD" durch das "MWT" (Memory Write).

  • Danach wird wieder gewartet, bis der Speicher fertig ist;
  • das MWT auf "0" gesetzt, damit der Speicher auf neue Anfragen reagieren kann;
  • und mit der Befehlsabarbeitung fortgefahren.

Bei der Ausgabe von Daten (auf andere Hardware als dem Speicher) wird wieder "Speicher" durch "Ausgabe" und MWT durch IOW (Input Output Write) ersetzt.

Buszyklus, asynchron, lesen (3_200)

Beim asynchronen Auslesen von Speicheradressen wartet der Prozessor genau so lange, bis der Speicher fertig ist die Daten zu liefern. Speicher und Prozessor laufen also asynchron.

Der Anfang des Lesens entspricht dem des "synchronen Speicherlesens"

"Will" der Prozessor Daten aus dem Speicher lesen, so schreibt er die Adresse, die er auslesen soll, auf den Adressbus. Anschließend setzt er das Steuersignal MRD auf "1", um dem Speicher den Lesebefehl zu signalisieren. Der Prozessor wartet nun solange, bis er vom Speicher eine Bestätigung erhält, dass die Speicherzelle erfolgreich ausgelesen wurde und sich die angeforderten Daten auf dem Datenbus befinden. Dieses "OK" erfolgt durch Setzen des XACK (eXecution ACKnowledge) durch den Speicher. Sobald der Prozessor das XACK erhalten hat, schreibt er den Wert, der vom Speicher auf den Datenbus geschrieben wurde, in ein Register. Anschließend setzt er das MRD wieder auf "0", damit der Speicher passiv werden kann. Dabei setzt der Speicher das XACK wieder auf "0". Der Prozessor kann nun weiterarbeiten.

Auch hier gilt mal wieder, dass man "Speicher" einfach wieder durch "I/O" erstzen kann.

Buszyklus: synchron vs. asynchron

Nachteil des asynchronen Speicherzugriffs ist ein, gegenüber dem synchronen Zugriff, komplizierterer Aufbau. Außerdem dauert der asynchrone Zugriff länger als der synchrone, da der Prozessor erst auf die Bestätigung warten muss. [Beim synchronen Zugriff muss die CPU zwar noch die gewisse Sicherheitswartezeit idlen, aber der Zugriff ist trotzdem schneller.]

Vorteil des asynchronen Zugriffs ist, dass man unterschiedlich schnelle Speicher verwenden kann. Beim Synchronen klappt das logischerweise nicht.

Im PC verwendet man synchronen Zugriff: SDRAM (Synchronous Dynamic Random Access Memory). Daher richtet sich der PC beim Einsetzen von mehreren Speichermodulen immer nach dem langsamsten, also nach dem "schwächsten Glied" der Kette.

Speicherbaugruppen

Grundelemente der Speichertechnik (4_S010)

sRAM

Aufbau:
  • besteht aus einer bistabilen Kippstufe (Flip-Flop)
Eigenschaften:
  • hält seine Daten solange die Spannung nicht zusammenbricht

dRAM

Aufbau:
  • besteht aus einem Kondensator
Eigenschaften:
  • hält seine Daten solange der Kondensator seine Spannung über einer bestimmten Schwellspannung hält
  • muss regelmäßig "refresht" werden

Speicherbaugruppe mit ROM oder sRAM (4_010)

  • Die binäre Speicheradresse aus (AB) wird in einen binären Ahigh- (die höherwertigen Bits) und Alow-Teil (die niederwertigen Bits) zerlegt (nachdem sie vom Treiber verstärkt wurde).
  • Der Decoder dekodiert Ahigh und steuert je einen Speicher an (über CE0 bis CEn).
    Mit n Ahigh Bits lassen sich maximal 2n CE-Leitungen schalten. Zu beachten ist, das jeweils 2 Speicherzellen (odd und even) über ein identisches CEi angesprochen werden.
  • Über Alow wird eindeutig ein Byte in der bereits bestimmten Speicherzelle ausgewählt.

Somit wählt Ahigh die Speicherzelle und Alow die Nummer des jeweiligen Bytes in der Speicherzelle aus. Damit ist ein eindeutiger Wertzugriff möglich.

Jetzt zu der Sache mit odd und even: Die CPU hat die Möglichkeit, nicht nur einzelne Bytes, sondern gleich ein ganzes Wort auf einmal aus dem Speicher zu holen. Ob der Speicher nur ein Byte oder ein Wort bringen soll, entscheidet das BHE-Bit (Byte High Enable).

  • Ist BHE auf "1" gesetzt, werden odd und even gleichzeitig angesprochen, jedes der beiden spuckt jeweils ein Byte aus und diese beiden Bytes werden dann zu einem Wort zusammengesetzt.
  • Ist BHE "0", dann wird nur eine Speicherzelle, also entweder odd oder even ausgewählt. Welche von beiden ausgewählt werden soll, entscheidet der Dekoder an Hand eines Bits von Ahigh.

Funktionseinheiten für Ein- und Ausgabe

Grundelemente der parallelen dig. E/A (5_010)

Ausgabe:
Falls der Prozessor Daten ausgeben will, schreibt er auf den Datenbus die Ausgabeaten und auf den Adressbus die Adresse des Ausgangs. Um eine Ausgabe zu signalisieren, setzt er das IOW (Input Output Write) auf "1". Adressbus und IOW werden von einem Decoder ausgewertet und der Ausgang angesprochen, über den die Daten ausgegeben werden sollen. Der Decoder ist also nichts anderes, als ein Demultiplexer mit zusätzlichen Eingängen, die festlegen, ob geschrieben oder gelesen werden soll. Dieses Ansprechen der Ausgänge erfolgt mit Hilfe des Strobe (STB) Signals. Sobald ein Ausgangsregister ein Strobesignal erhält, übernimmt es die Daten aus dem Datenbus und stellt sie über den externen Datenbus der Peripherie zur Verfügung. Dabei arbeitet das Register wie ein Flip-Flop und hält die Daten solange, bis ein neues Übernahmesignal (Strobe) vom Decoder kommt.


Eingabe
Funktioniert prinzipiell genauso wie die Ausgabe.

  • Prozessor schreibt auf den Adressbus die Adresse, von der er lesen will
  • IOR (Input Output Read) wird auf "1" gesetzt
  • Decoder wertet die Adresse und IOR aus und erzeugt das Output-Enable (OE) Signal an dem Ausgang, von dem gelesen werden soll
  • Tristatetreiber reicht Signal vom äußeren Datenbus Din auf den internen Dout weiter

(A.d.R: Warum die Bezeichnung? - Weil von der E/A-Einheit aus geschaut wird - Über Din kommen die Daten in die E/A-Einheit rein und über den Dout gehen sie halt wieder raus, an den Prozessor)

Der Tristatetreiber ist dafür da, damit prozessorinterne Komponenten nicht zerstört werden, sobald an den äußeren Datenbus eine "1" angelegt wird. Denn der Treiber ist hochohmig, solange kein OE anliegt und somit werden in dieser Zeit auch keine Daten von außen nach innen durchgereicht. Zur Erinnerung TI1: Man darf nicht zwei Ausgänge miteinander verbinden, sonst "wird die Schaltung zu einem schlechten Widerstand".

Gundstruktur bzw. Ablauf zur synchr. Parall-E/A (5_040 und 5_050)

Die parallele digitale E/A wird nun um eine Synchronisation erweitert. Wozu ist das gut? Naja, nehmen wir mal an, diese E/A vermittelt zwischen PC und Drucker. Will man jetzt "Hello" drucken, dann kann der Drucker zwar das H und das e drucken, er kann ohne Synchro aber nicht unterscheiden, wann das erste l aufhört und das zweite l anfängt, weil die l's die selbe Adresse haben.

Damit man dieses Problem löst, muss man die beiden zu verbindenen Geräte mittels der E/A synchronisieren. Bus1 ist z. B. der PC (Sender), Bus2 ist der Drucker (Empfänger). Die beiden Synchronisierungslogiken steuern nun den Ablauf des Sendens und Empfangens.

Wenn die Empfängerlogik der Meinung ist, der empfangende Bus wäre bereit Daten aufzunehmen so signalisiert sie das mit einem Ready (RDY). ["Juhuuu, hier, ich bin frei, ich kann Daten aufnehmen"]
Sind Daten beim Sender verfügbar (und RDY ist auf eins) wird von der Sende-Synchrologik die DAV-Leitung (Data available - Daten verfügbar) auf eins gesetzt. ["Jooo, und ich kann dir Daten geben"]

Nun werden die Daten vom Empfänger mittels paralleler digitaler Eingabe entgegengenommen und anschließend das RDY ausgeschalten. Dadurch weiß der Sender, dass der Empfänger die Daten gelesen hat und nun erstmal keine Daten mehr entgegenehmen kann. Der Sender wird wieder passiv (DAV=0) und der Empfänger verarbeitet die gelesenen Daten. Nach der Verarbeitung geht der ganze Rassel wieder von vorn los.

Grundstruktur der asynchronen seriellen E/A(5_080)

Diese Geschichte wird etwas komplizierter. Serieller Datenaustausch heißt: Es gibt nur eine Leitung, also is etwas Organisation nötig, um das reibungslos zu managen.

Sender:
Genauer gesagt kommt die serielle E/A nicht ohne die parallele E/A aus. Wir machens wieder so wie oben: Der PC will Daten an den Drucker geben. Also schickt der die Daten auf einen Datenbus und die werden jetzt auf ein Parallel-Aus gegeben. Dort warten sie erstmal. Das Ziel ist, die Daten in ein Schiebergister zu schreiben. Das geht nur, wenn das Schiebergister Platz hat. Dazu wird ans Schiebergister (SR) ein Takt angelegt (später dazu mehr). Mit diesem kann nun ein RDY an das parellele Aus gesendet werden, welches nun, da unsere daten da ja noch drin liegen, ein DAV zurückgibt. Das heißt, das SR kann Daten aufehmen und diese Daten sind auch da. Also passierts, die Daten kommen in Schiebergister. DAV und RDY werden wieder auf 0 gesetzt.

Übertragung:
Hier beginnt die eigentliche serielle Übetragung: Die Daten im Schiebergister des Senders werden mit einem Start- und Stoppbit versehen und - wusch - zum Schiebregister des Empfängers gesendet. [Deshalb staht da auch "n+2" beim Takt - n Datenbits plus 1 Start- und 1 Stoppbit, wenn die durch sind, gibts ein neues RDY].

Empfänger
Naja und der Empfang der Daten auf der Empfängerseite funzt genauso, nur andersrum: Die Daten aus dem SR kommen wieder in eine parallele Eingabe-Einheit, vorher werden sie noch durch eine Start-Stopp-Erkennung gejagt. Naja und zu guter Letzt werden sie auf den DB des Empfängergeräts geschrieben, fertig.

Datenformate bei der asynchonen seriellen Übertragung (5_090)

  • Bei serieller asynchroner Übertragung kann man nur kurze Datenblöcke übertragen, im Beispiel hier sind es lediglich 8 Datenbits (D0 bis D7)
  • Man benötigt ein Start- und ein Stoppbit (damit die Schaltung weiß, wo der Block aufhört bzw. wieder endet)
  • optional kann man ein Parity-Bit (Prüfbit) einbauen, so das der Block auf Übertragungsfehler überprüft werden kann.

Parallele vs. Serielle E/A

Parallel:

  • n Leitungen > höherer Verbindungswaufwand
  • 1 Zeitfenster, n Signale
  • schneller über die Zeit
  • Rechnerintern
  • Beispiele: PC <-> Drucker (Parallel Port)

Seriell

  • nur eine Leitung > geringerer Aufwand
  • n Zeitfenster, je ein Signal
  • langsamer
  • Rechnerextern
  • Beispiele: USB, COM (Modem, serielle Mäuse), Ethernet, S/PDIF

Synchrone vs. Asynchrone E/A

Synchron:

  • Vorteile: Mehrteilnehmerbetrieb, längere Datenblöcke, CRC als Sicherungsverfahren
  • Nachteile: komplizierte Realisierung

Asynchron

  • Vorteile: Keine Taktübertragung nötig, einfach zu realisieren
  • Nachteile: Nur kurze Datenblöcke, lediglich Parität als Sicherung (damit nur Fehler von maximal 1 Bit erkennbar)