Warum nicht gleich für RISC programmieren?

Smalltalk
Antworten
Benutzeravatar
c1ue
Beiträge: 98
Registriert: 27.03.2018 13:13:28

Warum nicht gleich für RISC programmieren?

Beitrag von c1ue » 08.12.2018 02:34:09

In modernen Prozessoren werkeln schon seit Generationen intern RISC Prozessoren die x86/x86_64 Befehle über einen kleinen Kompatibiltätslayer auf der CPU-Die Fläche ab.

Warum umgeht man nun diesen scheinbar unnötigen Schritt über den x86-layer nicht einfach?
Man könnte doch die x86-calls temporär umleiten, also eine Art Kompatibilitätslayer im Kernel, der diese calls in RISC übersetzt. Auf diese Weise hätten die Coder länger Zeit, Ihre Programme nach und nach an die neue Architektur anzupassen. Dann könnten die Kernel-maintainer dann Schritt für Schritt die x86-calls reduzieren, bis sie ganz aus dem Kernel verschwunden sind.

Ein weiterer Vorteil: Noch weitere Verbreitung/Verwendbarkeit ein und des selben codes auf vielen Plattformen.

Außerdem könnten auf diese Weise - Quellcodebereinigungen in allen FOSS Projekten vorausgesetzt - diverse Sicherheitslücken von Grund auf angegangen werden.

Was meint Ihr?
Wir erleben gerade die letzte Ruhe vor dem Sturm. Genießen wir sie, solange es noch geht

DeletedUserReAsG

Re: Warum nicht gleich für RISC programmieren?

Beitrag von DeletedUserReAsG » 08.12.2018 07:42:56

c1ue hat geschrieben: ↑ zum Beitrag ↑
08.12.2018 02:34:09
Was meint Ihr?
Ich meine: ich hätte gerne ’ne Informationsquelle. Obwohl ich von CPU-Design so gar keine Ahnung habe, würde ich die Aussage „In modernen Prozessoren werkeln schon seit Generationen intern RISC Prozessoren die x86/x86_64 Befehle über einen kleinen Kompatibiltätslayer auf der CPU-Die Fläche ab.“ in der Form erstmal stark anzweifeln. Insbesondere auch die Annahme, dass es, sofern denn vorhanden, direkt nutzbar wäre.
c1ue hat geschrieben: ↑ zum Beitrag ↑
08.12.2018 02:34:09
Man könnte doch die x86-calls temporär umleiten, also eine Art Kompatibilitätslayer im Kernel, der diese calls in RISC übersetzt.
Wenn du mal eine ARM-Maschine mit etwa qemu als „Kompatibilitätslayer“ auf einem x86-System emuliert hast, könntest du dir vorstellen, dass das möglicherweise nicht die beste Idee ist, und aufgrund der geringen Performance kaum Akzeptanz finden dürfte.

Benutzeravatar
bluestar
Beiträge: 2334
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Warum nicht gleich für RISC programmieren?

Beitrag von bluestar » 08.12.2018 11:14:03

Soweit ich mich an Inhalte aus meinem Studium sind x86-Prozessoren maximal RISC ähnlich.

Was deine Frage angeht, natürlich kannst du dich bei x86 Prozessoren auch auf den reduzierten Befehlssatz beschränken, allerdings gewinnst du damit nichts, du verlierst eher Performance. Als Beispiel, warum sollte ich AES in Software machen, wenn die CPU doch dafür beschleunigte Befehle bietet?

Benutzeravatar
c1ue
Beiträge: 98
Registriert: 27.03.2018 13:13:28

Re: Warum nicht gleich für RISC programmieren?

Beitrag von c1ue » 09.12.2018 21:48:32

Ich hab mal diese Seite (in Englisch) ausgegraben:

https://stackoverflow.com/questions/580 ... processors

Da ich diese Behauptung nun öfter gelesen haben, dass intern RISC werkelt, ging ich davon aus, dass dies auch zutreffend wäre.
Wir erleben gerade die letzte Ruhe vor dem Sturm. Genießen wir sie, solange es noch geht

DeletedUserReAsG

Re: Warum nicht gleich für RISC programmieren?

Beitrag von DeletedUserReAsG » 09.12.2018 22:24:43

Einerseits steht da „RISC like“, andererseits steht genau in dem Thread auch gleich der Grund, warum nicht direkt drauf zugegriffen wird, sondern über den Standard-x86-Befehlssatz: die interne Verarbeitung kann von Modell zu Modell verschieden sein, und man müsste seinen Kram für jedes einzelne CPU-Modell neu kompilieren. Dazu müssten die Compilerbauer ihre Sachen für jedes einzelne Modell anpassen, die ganzen Libs müssten für jedes einzelne Modell angepasst werden, etc..

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Warum nicht gleich für RISC programmieren?

Beitrag von eggy » 09.12.2018 23:17:19

c1ue hat geschrieben: ↑ zum Beitrag ↑
08.12.2018 02:34:09
Man könnte doch die x86-calls temporär umleiten, also eine Art Kompatibilitätslayer im Kernel, der diese calls in RISC übersetzt.

Sowas willst Du nicht. Wirklich nicht. Eine zusätzliche Abstraktionsschicht würde hier nur unnötige Kosten verursachen. Kosten im Sinne von "sehr langsam machen". Grade im Kernel will man keine zusätzlichen Umwege.
c1ue hat geschrieben: ↑ zum Beitrag ↑
08.12.2018 02:34:09
Außerdem könnten auf diese Weise - Quellcodebereinigungen in allen FOSS Projekten vorausgesetzt - diverse Sicherheitslücken von Grund auf angegangen werden.
Du willst vorschlagen, dass jetzt alle FOSS Projekte in RISC Microcode geschrieben werden? Nen ähnlich Stand gabs vor ~50 Jahren mal, und dann hat man Hochsprachen wie Fortran und C entwickelt.
Als Programmierer willst Du, dass es Dir weitgehend egal sein kann, welche Architektur darunter werkelt. Das soll gefälligst das Problem der Compilerbauer sein - das Hobby (zugegebenermaßen ein sehr interessantes) bzw den Beruf haben die sich schließlich selbst ausgesucht :mrgreen:

Und warum glaubst Du, dass Sicherheitslücken durch die Verwendung von RISC Instruktionen seltener auftreten? Oder hab ich Dich falsch verstanden?

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Warum nicht gleich für RISC programmieren?

Beitrag von MSfree » 10.12.2018 08:24:57

eggy hat geschrieben: ↑ zum Beitrag ↑
09.12.2018 23:17:19
c1ue hat geschrieben: ↑ zum Beitrag ↑
08.12.2018 02:34:09
Man könnte doch die x86-calls temporär umleiten, also eine Art Kompatibilitätslayer im Kernel, der diese calls in RISC übersetzt.

Sowas willst Du nicht. Wirklich nicht. Eine zusätzliche Abstraktionsschicht würde hier nur unnötige Kosten verursachen. Kosten im Sinne von "sehr langsam machen". Grade im Kernel will man keine zusätzlichen Umwege.
So etwas gab es im Prinzip sogar schon einmal. Die CPUs von Transmeta hatten eine völlig eigenständige Architektur (zwar nicht RISC sondern VLIW ), die mittels Software die x86-Instruktionen in Befehle für die CPU umgesetzt hat. Der Umsetzer lief allerdings nicht im Kernel, sondern eine Schicht darunter. Heute würde man die x86-Schicht wohl als virtuelle Maschine bezeichnen. In Sachen Geschwindigkeit waren sie aber stets der Intel- und AMD-Konkurrenz unterlegen.
c1ue hat geschrieben: ↑ zum Beitrag ↑
08.12.2018 02:34:09
Außerdem könnten auf diese Weise - Quellcodebereinigungen in allen FOSS Projekten vorausgesetzt - diverse Sicherheitslücken von Grund auf angegangen werden.
Siehe Transmeta, man hätte z.B. für Erweiterungen des x86-Befehlssatzes nur den Umsetzer erweitern brauchen. Hardwarefehler wie Spectre hätte man in Software angehen können. Allerdings schützt einen das nicht vor Hardwarefehlern im eigenen RISC/VLIW-Design. Und, wenn man Hardwarefehler durch Software stopft, wie es Intel mit Microcode macht, kann das auch Auswirkungen in der Geschwindigkeit haben.

Benutzeravatar
c1ue
Beiträge: 98
Registriert: 27.03.2018 13:13:28

Re: Warum nicht gleich für RISC programmieren?

Beitrag von c1ue » 17.12.2018 23:21:38

eggy hat geschrieben: ↑ zum Beitrag ↑
09.12.2018 23:17:19
Und warum glaubst Du, dass Sicherheitslücken durch die Verwendung von RISC Instruktionen seltener auftreten? Oder hab ich Dich falsch verstanden?
Mein Gedanke ist: Wenn sämtliche Software sowieso komplett auf RISC angepasst würde, dann wäre die Wahrscheinlichkeit, dass versehentliche Backdoors im Quellcode gefunden würden, hoch, oder eben (bedingt durch die "neue Architektur") laufen die Backdoors dann ins Leere.
Wir erleben gerade die letzte Ruhe vor dem Sturm. Genießen wir sie, solange es noch geht

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Warum nicht gleich für RISC programmieren?

Beitrag von eggy » 18.12.2018 02:12:22

c1ue hat geschrieben: ↑ zum Beitrag ↑
17.12.2018 23:21:38
Mein Gedanke ist: Wenn sämtliche Software sowieso komplett auf RISC angepasst würde, dann wäre die Wahrscheinlichkeit, dass versehentliche Backdoors im Quellcode gefunden würden, hoch, oder eben (bedingt durch die "neue Architektur") laufen die Backdoors dann ins Leere.
Eher wahrscheinlich: es werden beim "eben mal kurz umschreiben" noch viel mehr neue Lücken eingebaut.

DeletedUserReAsG

Re: Warum nicht gleich für RISC programmieren?

Beitrag von DeletedUserReAsG » 18.12.2018 06:34:41

c1ue hat geschrieben: ↑ zum Beitrag ↑
17.12.2018 23:21:38
Wenn sämtliche Software sowieso komplett auf RISC angepasst würde, dann wäre die Wahrscheinlichkeit, dass versehentliche Backdoors im Quellcode gefunden würden, hoch, oder eben (bedingt durch die "neue Architektur") laufen die Backdoors dann ins Leere.
Umgeschrieben werden müssten in erster Linie Compiler und ’ne Handvoll Kram, der nicht portabel geschrieben wurde; alles andere würde nur neu kompiliert, oder, im Fall von Scripten, einfach direkt übernommen werden. Es gibt ja ganz Debian für PowerPC und diverse ARM-Versionen. Sind beides RISC-Sachen. Mir wäre nicht bekannt, dass bei deren Erstellung irgendwelche Sachen gefunden worden wären, die bei x86/64 übersehen wurden.

Antworten