Die Lücke zwischen abstrakten Maschinen und Computerarchitekturen schließen? [geschlossen]

11

Ich fühle mich immer zwischen abstrakten Maschinen (wie Turing-Maschinen) und Computerarchitekturen (einschließlich der Architekturen virtueller Maschinen, Von Neumanns Architektur) getrennt. Also würde ich gerne wissen, wie sie zusammenhängen? Wie beeinflusst einer den anderen? Referenzen werden ebenfalls geschätzt. Vielen Dank.

Tim
quelle
7
Turingmaschinen sind ein theoretisches Informatikmodell, um über Berechenbarkeit nachzudenken . In ähnlicher Weise ist die Lambda-Rechnung ein Informatikmodell für Berechnungen, das jedoch praktische Anwendungen im Design von Programmiersprachen gefunden hat. Während Lambda - Kalkül, Turing - Maschinen, und die tatsächlichen Computer , um die Dinge in Bezug zueinander äquivalent sind , sie können berechnen, sind sie völlig verschieden , wie sie funktionieren. Insbesondere beschreiben diese theoretischen Rechenmodelle nicht, was echte Hardware effizient leisten kann.
Amon
2
@amon Es scheint, dass Sie bereits die meisten Antworten geschrieben haben. Warum sollten Sie sie in einem Kommentar "verschwenden"?
Wie andere betonten, gibt es mehrere mathematische Modelle für "Computer": einige näher an Sprachen (partielle rekursive Funktionen, Lambda-Kalkül), andere näher an Hardware. Wenn Sie möchten, sollten Sie sich RAM-Maschinen ansehen ( Wikipedia-Link ): Sie sind näher an der realen Hardware als Turing-Maschinen.
Lorenzo Dematté

Antworten:

23

Turingmaschinen und ähnliche "Maschinen" sind Berechnungsmodelle , mit denen Probleme untersucht werden sollen wie:

  • Was kann berechnet werden
  • Die Komplexitätsklasse der Probleme
  • Beziehungen zwischen Komplexitätsklassen
  • Die Gleichwertigkeit verschiedener Arten, etwas zu berechnen

Zu diesem Zweck muss die Maschine selbst so einfach wie möglich sein. Programmierkomfort oder lästige Implementierungsprobleme spielen keine Rolle, da es sich um mathematische Objekte handelt und nur sehr wenige Programme jemals direkt für sie geschrieben wurden.

Umgekehrt konzentrieren sich die Architektur virtueller Maschinen und die tatsächliche Maschinenarchitektur auf Siliziumbasis auf die Ausführung eines bestimmten Programms . Die Maschine ist komplizierter als für die oben genannten Probleme unbedingt erforderlich, und es sind weniger (und offensichtlichere) Anweisungen erforderlich, um interessante Dinge zu tun. Nicht zu kompliziert, da sie noch verständlich (und effizient umsetzbar) sein müssen, aber komplizierter.

Die beiden Ansätze sind also grundsätzlich uneins. Abgesehen davon, dass beide auf dem Gebiet der Informatik tätig sind, haben sie nicht viel miteinander zu tun.


quelle
1
Vielen Dank. Aber ich fand " Turing-Maschinen und universelle Turing-Maschinen mit Analogie zu virtuellen Maschinen ", die ihre Beziehungen vorschlagen könnten, aber es gibt keine Details.
Tim
4
@Tim Ich würde vermuten, dass dieser Kurs nur Turing-Maschinen als Ausgangspunkt nimmt, um das Konzept einer abstrakten Maschine einzuführen, und dann schnell zu nützlicheren abstrakten Maschinen übergeht.
4

Die Hauptbeziehung besteht darin, dass Sie das theoretische Konstrukt im physischen simulieren können.

Die Tatsache, dass der Physiker zu allem fähig ist, was der Theoretische ist, führt dazu, dass theoretische Tests und Analysen der theoretischen Maschine als in der realen Welt umsetzbar erkannt werden können.

Das Halteproblem ist ein perfektes Beispiel für etwas, das sich auf einer Turingmaschine als unlösbar erwiesen hat, und durch den Nachweis auf der Turingmaschine kann somit erkannt werden, dass es auf einer realen Maschine unlösbar ist, die die Gesetze der Turingmaschine einhält.

Es ist der Unterschied zwischen dem Summieren von Dingen durch Zählen und dem Schreiben auf Papier. Es ist erwiesen, dass die Realität des Zählens dieselben Regeln erfüllt wie das Summieren auf einem Blatt Papier. Wenn Sie also die physische Zählung von Dingen simulieren, werden Ihre Ergebnisse als auf die reale Welt anwendbar erkannt. Sie wissen also, wie viel zwei Schokoriegel kosten, wenn Sie die Zählung mental simulieren, ohne das physische Geld zählen zu müssen, um das Ergebnis zu erzielen.

Derzeit wird ein theoretisches Modell, das als "Quantum Turing Machine" bekannt ist, analysiert und getestet, um festzustellen, welche Einrichtungen für Quantencomputer verfügbar sein werden. Es ist sinnvoll, mit diesen Modellen zu arbeiten, wenn die physische Version ihres Modells sowohl übermäßig teuer als auch selten ist und aktuelle Implementierungen immer noch sehr fehlen. Die theoretischen Modelle werden verwendet, um zu zeigen, was wir möglicherweise tun können, wenn sich unsere physischen Implementierungen verbessern.

Jimmy Hoffa
quelle
1

Sie sind ungefähr so ​​verwandt wie das Space Shuttle mit einem Ballon, den Sie mit Ihrem Atem aufblasen und dann loslassen und zusehen, wie er wegfliegt.

Das Grundprinzip, etwas in eine Richtung auszutreiben, um etwas in die entgegengesetzte Richtung zu treiben, ist da.

Hier enden die Ähnlichkeiten.

Mike Nakis
quelle
1

Ich sehe die theoretischen Maschinen als Brücke zwischen realer Berechnung und Mathematik. Eine Turing-Maschine ist leistungsfähig genug, um jede reale Architektur oder Programmiersprache zu simulieren, einfach genug, um leicht simuliert zu werden, und vor allem einfach genug, um Gegenstand einigermaßen einfacher mathematischer Überlegungen und Beweise zu sein.

Patricia Shanahan
quelle
1

Es ist wichtig zu wissen, dass die Definition von Berechnung nicht "das ist, was Computer tun". Die Berechnung ist älter als Computer. Computer erhielten ihren Namen, weil sie erstellt wurden, um die Rechenaufgabe zu unterstützen, und nicht, weil sie sie definieren.

Bei der Turing-Maschine geht es also nicht darum, wie Computer funktionieren. Es geht darum, ob ein Problem berechenbar ist oder nicht - das heißt, durch einen formalen logischen / mathematischen Prozess lösbar. Es sagt nichts darüber aus, wie dieser Prozess implementiert werden könnte. Wenn es berechenbar ist, kann es von Menschen mit Bleistiften und Papier bei ausreichender Zeit oder mit Computern oder (das ist wichtig) mit jedem System gelöst werden, von dem gezeigt werden kann, dass es vollständig ist .

Die Turing-Maschine macht also zwei sehr wichtige Dinge:

  1. Bietet einen Test für die Berechenbarkeit eines Problems / einer Aufgabe.
  2. Bietet einen Test für jedes System, um zu zeigen, ob es eine berechenbare Aufgabe berechnen kann.

Der erste Punkt ermöglicht es uns, über Probleme nachzudenken, ohne von realen Implementierungen abgelenkt zu werden. Dies ist eine gute Sache, da die reale Hardware häufig Menschen mit irrelevanten Details ablenkt (z. B. "Was passiert, wenn der Speicher oder Speicherplatz knapp wird?", Da Turing-Maschinen über unendliche Ressourcen verfügen). Eine nachweisbare theoretische Lösung kann für eine Turingmaschine entwickelt werden, und dann muss sie nur noch in etwas übersetzt werden, das auf einer bestimmten Architektur funktioniert.

Der zweite Punkt ermöglicht es uns, die Fähigkeit einer Implementierung zu überprüfen, ohne viele verschiedene Tests durchführen zu müssen. Wenn es eine Turingmaschine simulieren kann, kann es alles tun, was die Turingmaschine kann. Da Turing-Maschinen alles Berechenbare berechnen können, kann es auch.

Das bedeutet, dass die Beziehung zwischen der Turing-Maschine und jeder wirklich praktischen Computerarchitektur (auch virtuellen) nur eines ist: Sie können rechnen.

Von Neumanns Architektur war ein Versuch, eine Entwurfsvorlage für effektive elektronische Allzweck- Digitalcomputer zu erstellen . Turings Arbeit lieferte den Beweis seiner Gültigkeit

itsbruce
quelle
-1

Wenn Sie darüber nachdenken, sind Architekturen abstrakte Maschinen. Sie beschreiben, wie sich ein Klumpen sorgfältig hergestellten Siliziums "verhalten" sollte. Der Unterschied zwischen den Architekturen und den Turing-Maschinen ist eher eine Frage des Maßstabs als eine grundlegende Änderung des Ansatzes.

Der Vorteil von Turing-Maschinen besteht darin, dass es eine Reihe nützlicher Beweise gibt, die mit einer Turing-Maschine sehr einfach zu erstellen sind. Es ist einfach zu beweisen, dass jede Maschine, die leistungsfähig genug ist, um eine Turing-Maschine zu simulieren, jedes Problem lösen kann, das eine Turing-Maschine kann (duh). Interessanter wird es jedoch, wenn Sie eine berechenbare Funktion definieren . Es stellt sich heraus, dass es viele kompatible Definitionen einer berechenbaren Funktion gibt. Wenn Sie Ihr gesamtes Verhalten als berechenbare Funktionen definieren können, können Sie in einer Turing-Maschine simuliert werden.

Angenommen, Sie haben eine Architektur, die Programme im LISP-Stil direkt unterstützt, und eine andere wie x86, die prozeduraler ist. Ihr Freund behauptet: "LISP ist ausdrucksvoller, sodass Sie Programme auf diesem Computer schreiben können, die Sie niemals auf Ihrem x86 schreiben könnten." Dies ist brutal zu kontern (zumal Sie wahrscheinlich nicht genug LISP kennen). Sie können jedoch mehrere abstrakte Maschinen wie die Turing-Maschine missbrauchen:

  • Ihre LISP-Maschine mag ausgefallen sein, aber alles, was sie tun kann, ist auf Lambda-Kalkül reduzierbar. Dein Freund nickt eifrig. Lambda-Kalkül ist für funktionale Programmierer ein Kult.
  • Mein x86 mag schick sein, aber alles, was es tun kann, ist auf einen Registercomputer reduzierbar. Nochmals keine Frage von deinem Freund. Register sind in der modernen Computertheorie so einfach!
  • Jede Registermaschine kann als Turingmaschine modelliert werden, die diese Registermaschine simuliert. Jetzt wundert sich Ihr Freund, warum Sie auf die Punch-Tape-Ära zurückblicken.
  • Und Ihre Lambda-Rechenmaschine kann auch auf eine Turing-Maschine reduziert werden. * Ihr Freund protestiert, aber Sie weisen sie auf die These von Church-Turing hin, und sie lassen beschämt den Kopf hängen.
  • Somit kann meine x86-Box alles, was Ihre ausgefallene LISP-basierte Maschine kann!

Es gibt natürlich viele andere Beispiele. Conways Spiel des Lebens hat sich als vollständig erwiesen, was bedeutet, dass es theoretisch alles kann, was Ihr Computer kann. Der einfachste Weg, dies zu tun, war der Bau einer Turing-Maschine im Leben . Ich spreche das an, weil dies ein Fall von einer abstrakten Maschine wäre, die Sie als wörtliche Architektur behandeln! Sie können sich vorstellen, wie schwer der Anspruch auf Berechenbarkeit im Leben ohne die Hilfe abstrakter Modelle wäre (ich bin mir sicher, dass ich kein x64 mit Cache-Peeking modelliere, nur um zu beweisen, dass das Leben berechenbar ist!).


Letztendlich besteht der große Unterschied zwischen Architekturen und abstrakten Maschinen darin, dass Architekturen normalerweise die Leistung betreffen. Architekturen möchten wissen, wie schnell Sie etwas tun können. Abstrakte Maschinen begnügen sich in der Regel damit, nur zu wissen, ob Sie können. Betrachten Sie den Universal Konstruktor, der für von Neuman-Zustandsmaschinen entwickelt wurde. Es war genug zu beweisen, dass die UC funktionieren konnte , egal, dass die Autoren nie genug Rechenleistung hatten, um es tatsächlich durchzuhalten.

Der Preis, den Architekturen zahlen, um zu demonstrieren, wie schnell sie arbeiten können, ist, dass es oft furchtbar schwierig ist zu beweisen, dass sie alles berechnen können . Dafür drehen sich die Architekturen gleich wieder um und beginnen, abstrakte Maschinen zu verwenden.

Cort Ammon
quelle
1
Ihre angegebenen Argumentationsbeispiele sind technisch nicht korrekt. Wenn Sie angeben, dass eine Turingmaschine alles kann, was eine Registermaschine oder x86 mahine kann, bedeutet dies nicht zwangsläufig, dass eine x86-Maschine alles kann, was eine Registermaschine oder eine Turingmaschine kann können. Als Gegenbeispiel kann jeder endliche Automat auch auf eine Turing-Maschine reduziert werden, ist aber eindeutig nicht gleichbedeutend mit Lambda-Kalkül oder LISP. Direktionalität ist wichtig - wenn Sie angeben möchten, dass "meine x86-Box alles kann, was Ihr ausgefallener LISP-basierter Computer kann", ist eine Reduzierung von Turing auf x86 erforderlich, nicht von x86 auf Turing.
Peteris