- Registriert
- 6 Mai 2021
- Beiträge
- 1.630
- Erhaltene Likes
- 3.971
@iqjet
Du liegst da falsch. Den TS3 Server gibt es nicht für ARM kompiliert. Den gibt es nur als x86 bzw x64 Kompilat.
Das ist auf einem ARM-Prozessor nicht lauffähig. Das ist genau so, wie wenn ich Dich jetzt los schicke und bei der chinesischen Telefonvermittlung anrufen lassen mit der Bitte Du willst Herrn Mayer sprechen. Am andern Ende versteht dich niemand. Genau so wenig wie ein ARM Prozessor x86 Maschinencode versteht.
Es gibt Ubuntu für ARM, sicher. Das kann man auch auf RISC5 laufen lassen oder PowerPC. Das ist ja nicht das Problem. Es ist Quelloffen, und Du kannst es für alles kompilieren, wofür es eben Unterstützung gibt (was letztlich aufs selbe hinaus läuft wie vorkompilierte Binaries, weil niemand portiert das ja mal eben auf eine neue Zielplattform). Den TS3 gibt es aber nicht quelloffen. Man kann da nichts für ARM kompilieren und angeboten werden die fertigen Binaries nur für x86, für eben Linux, Windows und MacOS.
Um den TS3 Server also auf der ARM Architektur laufen zu lassen, braucht man eine Emulation oder einen JIT-Compiler der zur Laufzeit den Maschinencode auf andere Architekturen umsetzt. So macht das Intel's Android-Implementierung von ARM auf x86, Apples Rosette mit der x86 zu ARM Umsetzung oder auch Windows mit ebenso x86 zu ARM. Im "general purpose" Bereich übernimmt diese Aufgabe QEMU.
Während ARM auf x86 aber quasi problemfrei geht, stellt x86 auf ARM aber ein großes Problem dar, was an dem Unvermögen quasi aller reinen RISC (wobei "Reduced" in dem Kontext seit langem ein Wortwitz ist) Architekturen liegt, nicht direkt mit dem Speicher arbeiten zu können, sondern alles über Load/Store-Instruktionen transferieren zu müssen. Das ist bei komplexeren Architekturen genau nicht der Fall, sie können bei Instruktionen unmittelbar auf Speicherbereiche zugreifen.
Beispiel:
mov ax, ds:[cx+1]
Um das in ARM zu wandeln muss man das machen:
add r1, lr, r2
add r1, r1, #1
ldr r0, r1
man kann zwar LDR indizieren, wie z.B. so:
ldr r0, r1, #1
Technisch passiert aber das selbe auf "Prozessoreben", weswegen ich das zum Verständnis oben so geschrieben hab, wie ich es geschrieben hab. Das letztere ist eine vereinfachte Schreibweise die letztlich der Assambler versteht und entsprechend umsetzt.
Macht im Übrigen auch klar, was das Problem ist und wo die Nachteile von ARM liegen, im Übrigen auch RISC5 - wo letzteres aber noch weitere Haken lauern.
Apple "korrigierte" genau diesen eklatanten Nachteil bei seiner M1 CPU damit, dass sie exakt diese fehlende Fähigkeit so hinzufügten, dass der Code per JIT effizienter übersetzt werden kann. Sie haben der CPU also schlicht und einfach CISC-Fähigkeiten gegeben. Genau so wie Intel den CPUs seit dem Pentium RISC-Fähigkeiten gab, das heißt dann dort Micro-Ops. Was auch immer das lustige daran ist, wenn Leute schwaddronieren das eine oder andere sei besser aus Prinzip, ohne einen leisen Schimmer zu haben wovon sie da eigentlich reden.
Also nein: TS3 läuft nicht nativ auf dem System. Es braucht eine Emulation, entweder per QEMU oder einer der - wie das immer so ist in der Linux-Welt - elfendrölfzigtausend anderer Forks oder Alternativlösungen, die es da so gibt. Da es, wie erklärt, ein grunsätzliches Problem dabei gibt x86 Maschinencode auf ARM zu transcoden, ist die Performance halt... naja... kubikscheiße.
Du liegst da falsch. Den TS3 Server gibt es nicht für ARM kompiliert. Den gibt es nur als x86 bzw x64 Kompilat.
Das ist auf einem ARM-Prozessor nicht lauffähig. Das ist genau so, wie wenn ich Dich jetzt los schicke und bei der chinesischen Telefonvermittlung anrufen lassen mit der Bitte Du willst Herrn Mayer sprechen. Am andern Ende versteht dich niemand. Genau so wenig wie ein ARM Prozessor x86 Maschinencode versteht.
Es gibt Ubuntu für ARM, sicher. Das kann man auch auf RISC5 laufen lassen oder PowerPC. Das ist ja nicht das Problem. Es ist Quelloffen, und Du kannst es für alles kompilieren, wofür es eben Unterstützung gibt (was letztlich aufs selbe hinaus läuft wie vorkompilierte Binaries, weil niemand portiert das ja mal eben auf eine neue Zielplattform). Den TS3 gibt es aber nicht quelloffen. Man kann da nichts für ARM kompilieren und angeboten werden die fertigen Binaries nur für x86, für eben Linux, Windows und MacOS.
Um den TS3 Server also auf der ARM Architektur laufen zu lassen, braucht man eine Emulation oder einen JIT-Compiler der zur Laufzeit den Maschinencode auf andere Architekturen umsetzt. So macht das Intel's Android-Implementierung von ARM auf x86, Apples Rosette mit der x86 zu ARM Umsetzung oder auch Windows mit ebenso x86 zu ARM. Im "general purpose" Bereich übernimmt diese Aufgabe QEMU.
Während ARM auf x86 aber quasi problemfrei geht, stellt x86 auf ARM aber ein großes Problem dar, was an dem Unvermögen quasi aller reinen RISC (wobei "Reduced" in dem Kontext seit langem ein Wortwitz ist) Architekturen liegt, nicht direkt mit dem Speicher arbeiten zu können, sondern alles über Load/Store-Instruktionen transferieren zu müssen. Das ist bei komplexeren Architekturen genau nicht der Fall, sie können bei Instruktionen unmittelbar auf Speicherbereiche zugreifen.
Beispiel:
mov ax, ds:[cx+1]
Um das in ARM zu wandeln muss man das machen:
add r1, lr, r2
add r1, r1, #1
ldr r0, r1
man kann zwar LDR indizieren, wie z.B. so:
ldr r0, r1, #1
Technisch passiert aber das selbe auf "Prozessoreben", weswegen ich das zum Verständnis oben so geschrieben hab, wie ich es geschrieben hab. Das letztere ist eine vereinfachte Schreibweise die letztlich der Assambler versteht und entsprechend umsetzt.
Macht im Übrigen auch klar, was das Problem ist und wo die Nachteile von ARM liegen, im Übrigen auch RISC5 - wo letzteres aber noch weitere Haken lauern.
Apple "korrigierte" genau diesen eklatanten Nachteil bei seiner M1 CPU damit, dass sie exakt diese fehlende Fähigkeit so hinzufügten, dass der Code per JIT effizienter übersetzt werden kann. Sie haben der CPU also schlicht und einfach CISC-Fähigkeiten gegeben. Genau so wie Intel den CPUs seit dem Pentium RISC-Fähigkeiten gab, das heißt dann dort Micro-Ops. Was auch immer das lustige daran ist, wenn Leute schwaddronieren das eine oder andere sei besser aus Prinzip, ohne einen leisen Schimmer zu haben wovon sie da eigentlich reden.
Also nein: TS3 läuft nicht nativ auf dem System. Es braucht eine Emulation, entweder per QEMU oder einer der - wie das immer so ist in der Linux-Welt - elfendrölfzigtausend anderer Forks oder Alternativlösungen, die es da so gibt. Da es, wie erklärt, ein grunsätzliches Problem dabei gibt x86 Maschinencode auf ARM zu transcoden, ist die Performance halt... naja... kubikscheiße.