redundanzfreier Befehlssatz

OP (Firma: dm2sh) #2627913
Lesenswert?

Hallo,

alle bekannten Rechner/Befehlssätze erlauben es, Programme, welche die 
selbe Aufgabe übernehmen, unterschiedlich zu implementieren

Interessant wäre es doch, wenn man eine Architektur/Befehlssatz finden 
würde, bei dem immer nur ein einziges Programm zur Realisierung einer 
Aufgabe gefunden werden kann. Das Programm ist dabei immer optimal. Es 
kann nicht optimiert werden, weder in Geschwindigkeit noch 
Speicherbedarf.

Wie könnte so etwas aussehen?
Innere Zustände könnten schließlich nicht auf niedriger Ebene 
programmiert werden. (keine freie Registerwahl -> keine GPR,...)
Gast #2627929
Lesenswert?

Nunja. Du müsstest das vielleicht aus einzelnen gates aufbauen? Aber im 
Grunde brauchst du irgendwas wie einen mathematischen Beweis, dass eine 
beste Lösung existiert. Das hört sich nach einem Jahrhundertproblem an.
Gast #2627944
Lesenswert?

Meiner Meinung nach einzige (theoretische) Möglichkeit:
Es gibt für jedes Problem einen Befehl und es können nicht mehrere 
Befehle verkettet werden.
sonst kann man immer mehrere Programme finden, die genau das gleiche 
Ergebnis liefern.
Gast #2627950
Lesenswert?

Stefan Helmert schrieb:
> Interessant wäre es doch, wenn man eine Architektur/Befehlssatz finden
> würde, bei dem immer nur ein einziges Programm zur Realisierung einer
> Aufgabe gefunden werden kann. Das Programm ist dabei immer optimal. Es
> kann nicht optimiert werden, weder in Geschwindigkeit noch
> Speicherbedarf.
>
> Wie könnte so etwas aussehen?

So etwas kann für eine Turing-mächtige Maschine nicht existieren. Gäbe 
es eine Sprache, die dies darstellen könnte, wäre über die Reduktion des 
Äquivalenzproblems auch das Halteproblem gelöst.
Eine Entscheidung des Halteproblems ist jedoch bewiesener Maßen nicht 
auf der Menge aller Turingmaschinen möglich. (siehe Diagonalsprache)

Du müsstest also schon die Möglichkeiten deiner Maschine stark 
einschränken, damit es so etwas geben kann.
(Firma: guloshop.de) #2627952
Lesenswert?

hmmm schrieb:
> Meiner Meinung nach einzige (theoretische) Möglichkeit:
> Es gibt für jedes Problem einen Befehl und es können nicht mehrere
> Befehle verkettet werden.
> sonst kann man immer mehrere Programme finden, die genau das gleiche
> Ergebnis liefern.

Das ist eine ausgezeichnete Idee!
Am besten, es gibt auch für die automatische Suche nach der vom 
Thread-Ersteller gewünschten Rechnerarchitektur einen solchen Befehl, 
dann haben wir das Problem gelöst. :-)
Gast #2627978
Lesenswert?

Markus W. schrieb:
> hmmm schrieb:
>> Meiner Meinung nach einzige (theoretische) Möglichkeit:
>> Es gibt für jedes Problem einen Befehl und es können nicht mehrere
>> Befehle verkettet werden.
>> sonst kann man immer mehrere Programme finden, die genau das gleiche
>> Ergebnis liefern.
>
> Das ist eine ausgezeichnete Idee!
> Am besten, es gibt auch für die automatische Suche nach der vom
> Thread-Ersteller gewünschten Rechnerarchitektur einen solchen Befehl,
> dann haben wir das Problem gelöst. :-)

Das bringt mich darauf, dass die Suche eindeutig bestimmen muss welches 
Problem es ist -> Äquivalente Probleme könnten das ganze wieder 
zerstören.
Gast #2627981
Lesenswert?

Hallo,

was den nicht redundanten Befehlssatz angeht, ist man bei der 
Turingmaschine mit dem Alfabet 0,1 richtig, die kennt nur die Befehle:

Stehenbleiben, 0 Schreiben, neuer Zustand n
Stehenbleiben, 1 Schreiben, neuer Zustand n
nach Links, 0 Schreiben, neuer Zustand n
nach Links, 1 Schreiben, neuer Zustand n
nach Rechts, 0 Schreiben, neuer Zustand n
nach Rechts, 1 Schreiben, neuer Zustand n

das ist minimal und nicht redundand. Bewiesen wurden die Sätze
"Alles was berechenbar ist, ist durch eine Turingmaschine berechenbar" 
und
"Alles was nicht durch eine Turingmaschoine berechenbar ist, kann 
überhaupt nicht berechnet werden".

M.a.W. jedes sinnvolle Rechenprogramm lässt sich auch auf einer 
Turingmaschine programmieren und ausführen, was bedeutet, der obige 
Befehlssatz reicht für alle Programme aus. Über die Eindeutigkeit ist 
damit allerdings nichts ausgesagt, dass ein Programm mit minimalem 
Befehlssatz nur auf eine einzige Art realisiert werden kann ist meiner 
Meinung nach auch von vornherein falsch.

Allerings ist die ganze Frage etwas spät dran, Alan Turing hat die 
Turingmaschine 1920 definiert. Wenn der Fragesteller noch ein paar Jahre 
gewartet hätte, könnte die Antwort hundertjährigen Geburtstag feiern.

Reinhard Kern
#2628208
Lesenswert?

Stefan Helmert schrieb:

> Interessant wäre es doch, wenn man eine Architektur/Befehlssatz finden
> würde, bei dem immer nur ein einziges Programm zur Realisierung einer
> Aufgabe gefunden werden kann.

Deine Anforderung lässt sich mit einer frei mikroprogrammierbaren 
Maschine lösen, in dem das Programm im Mikrocode steckt. Der gehört im 
allgemeinen Verständnis zur Maschine und nicht zum Programm. Alternativ 
kannst du auch das ganze Programm in VHDL formulieren und in ein FPGA 
stecken.

In gewisser Weise bist du hier im Forum damit goldrichtig. Denn viele 
Mikrocontrolleranwendungen sind Maschinen, in denen sich nur ein 
einziges Programm zur Realisierung einer Aufgabe finden lässt. 
Insbesondere wenn schlussendlich maskenprogrammiert.
Gast #2628313
Lesenswert?

A. K. schrieb:
> Eher Kurt Gödel. Der hatte auch mehr Grund dazu gegeben als Turing.
> Immerhin hatte er Hilberts Traum einer perfekten Mathematik gründlich
> den Boden weggezogen.

Ja da sind die Weisskittel wohl zu spät gekommen. Früher war Mathematik 
viel einfacher und vor allem hoffnungsvoller.

Tom schrieb:
> solange A+B das gleiche ist wie B+A und C*D das gleiche wie D*C wird
> sich die Vision des TO wohl nicht realisieren lassen.....

Und (a+b)+c = a+(b+c) usw. Man dürfte überhaupt keine Gleichungen mehr 
umformen, denn das bedeutet immer Äquivalenz der beiden 
Gleichungsformen. Also garkeine Mathematik mehr.

Gruss Reinhard
#2628334
Lesenswert?

Stefan Helmert schrieb:
> Interessant wäre es doch, wenn man eine Architektur/Befehlssatz finden
> würde, bei dem immer nur ein einziges Programm zur Realisierung einer
> Aufgabe gefunden werden kann. Das Programm ist dabei immer optimal.

Das schließt sich gegenseitig aus. Entweder optimal oder keine 
Redundanz.

Es gibt immer mehrere Befehle, mit denen das gleiche gemacht werden 
kann.
Ansonsten dürfte es nur einen Befehl geben. In der Digitalrechnik kann 
man alles mit einem NAND realisieren. Genauso kann man alle Programme 
nur mit einem NAND schreiben.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren