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.
architecture
Tim
quelle
quelle
Antworten:
Turingmaschinen und ähnliche "Maschinen" sind Berechnungsmodelle , mit denen Probleme untersucht werden sollen wie:
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
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.
quelle
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.
quelle
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.
quelle
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:
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
quelle
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:
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.
quelle