Ansicht umschalten
Avatar von die kleine Himbeere
  • die kleine Himbeere

mehr als 1000 Beiträge seit 25.10.2012

Stimmt nicht

ARMv8 bot eine Erweiterung auf 64 Bit, war aber auch weiterhin für reine 32-Bit-Prozessoren definiert. So blieb das Profil ARMv8-M grundsätzlich 32-bittig, R und A gibt es für beides.

Nur ARMv8A ist 32- und 64-bittig.

ARMv8 (ohne das "A") hat keinen 32-Bit-Support mehr.

Ein Beispiel für ARMv8A sind die Raspberry-Pi Modelle 3 und höher. Diese können sowohl ein 32- oder 64-Bit Kernel verwenden, der Userspace ist hingegen - zumindest unter Raspbian - immer 32 Bit.

Dadurch läuft eine SD-Karte mit Raspbian auf jedem RPi-Modell, nicht nur auf den neuesten.

Hinweis: Um das 64-Bit-Kernel zu aktivieren, in der /boot/config.txt

einen Abschnitt

[pi3] arm_64bit=1 [pi4] arm_64bit=1

hinzufĂĽgen. Allerdings muss dazu auch ein aktuelles Raspbian installiert sein, welches bereits ein 64-Bit-Kernel in /boot mitliefert.

Man hat dann das beste zweier Welten:

* Ein 64-Bit Kernel so dass ein größtmöglicher Teil des 32-Bit Adressraums für die Benutzerprozesse zur Verfügung steht. (Bei einem 32-Bit-Kernel wird in der Regel die Hälfte des Adressraums eines Prozesses für den Zugriff vom Kernel aus reserviert.)

* Ein 32-Bit Userspace, bei dem Pointer und size_t Variablen nur halb so groß sind wie es bei einem 64-Bit Userspace der Fall wäre, und daher auf dein RPi-Modellen mit nur wenig RAM (weniger als 4 GiB) viel von diesem wenigen RAM einspart.

* Überwiegend schneller. 32-Bit-Programme sind in der Regel schneller als 64-Bit-Programme, da sie weniger Speicher bewegen müssen. Bei einem Vergleich des 32-Bit APIs (das x32 API, nicht zu verwechseln mit dem i386- oder i686-API) vs. dem 64-Bit API (das normale amd64-API) auf der amd64-Architektur wurde ein Performance-Einbruch von bis zu 20 % durch die Verwendung des 64-Bit-APIs gemessen. Der Grund waren die zusätzlichen Speicherzugriffe wegen der größeren Pointer- und size_t-Variablen. Bei ARM wird der Unterschied zwar geringer sein da zusätzliche Register im 64-Bit Modus einige Programme beschleunigen könnten. Aber vermutlich wird das trotzdem nur selten ausreichen um die zusätzlichen Speicherzugriffe zu kompensieren.

* Portabel - die 32-Bit-Programme laufen auch unter einem RPi1 und RPi0 - dort wird nur ein anderes Kernel geladen; der Rest bleibt gleich.

Bewerten
- +
Ansicht umschalten