wozu mehr bits



  • Hi, kann mir jemand sagen was es bringt, mehr bits zu haben? Also es gibt ja 32, 64 etc bitsysteme und so.



  • Es sind weniger Instruktionen nötig um mit 64 bit zu rechnen? 🤡 Ansonsten, was genau meinst du mit System? Wie groß Pointer sind? Wie groß CPU-Register sind?



  • Es gibt da eine Menge Punkte. Hier sind zum Beispiel zwei weitere:

    1. Die Menge an adressierbarem Speicher vergroessert sich.

    2. Rechenoperationen werden genauer.



  • Auf die meisten CPUs lassen sich ja 32-Bit und 64-Bit Betriebssysteme installieren.
    Man kann sich tatsächlich fragen, was 64-Bit da bringt, Genauigkeit der Rechenoperationen und Anzahl nötiger Instruktionen macht da nämlich keinen Unterschied (wenn mans drauf anlegt).

    Der wichtigste Unterschied ist

    1. Die Menge an adressierbarem Speicher vergroessert sich.

    Das heisst nicht Speicher, den das Betriebssystem verbarbeiten kann (dank PAE rechnet das OS intern auch bei 32-Bit mit 64-Bit Zeigern) und auch nicht, dass 64-Bit erst etwas bringt, wenn ein Programm mehr als 3GB verbraucht.

    Wenn ein Programm 1GB allokiert, muss ihm ein Pointer gegeben werden, bei dem garantiert die dahinterliegenden 1GB frei verfügbar sind. Wenn das Programm 1GB anfordert (belegter Adressraum 0GB-1GB), dann 1.2GB (belegter Addressraum 0GB-2.2GB), dann die 1GB freigibt (1GB-2.2GB) und dann nochmal 1.2GB verlangt führt das unter 32Bit sehr wahrscheinlich schon zu Schwierigkeiten (2.2GB-3.4GB sind schon über der Grenze, da das Betriebssystem den Raum 3GB-4GB für sich reserviert).

    Zudem kann das Betriebssystem overcommitten, d.h. wenn ein Programm 100GB Speicher anfordert, sagt man ihm einfach mal zu, stellt ihn aber erst bereit, wenn er auch wirklich benutzt wird. (Gut, das passiert nicht so extrem, aber es ist in geringerem Ausmass sehr üblich.)

    Erweiterter Adressraum ist daher ziemlich praktisch ab >2GB RAM.



  • Man kann direkt mit größeren Zahlen (auch im Nachkommabereich) rechnen oder Adressen indexieren bzw. abbilden. Versuch mal 2^256 im handelsüblichen Taschenrechner. Die Zahlenobergrenze für 8 Bit ist 256, wäre doof, wenn Schultaschenrechner nicht mehr könnten. Natürlich könnten sie mehr, müssten dann aber mehr Speicherstellen zum Abbilden (und Algorithmen) mitbringen)(Man könnte sich ja vorstellen, eine größere Zahl als 256 bei einem 8 Bit Taschenrechner wird nacheinander angezeigt, in 4Bit Häppchen im 3 Sekundentakt zum bequemen Mitschreiben, oder anders codiert (kostet aber alles Rechenleistung). 😉

    Bei Reglern wie ein Lautstärkeregler in digitaler Ausführung, kann man mit noch mehr Abstufungen die "Stufenlosigkeit" eines analogen Lautstärkereglers nachempfinden. In den Anfangszeiten der Digitaltechnik galt so 2^5 (32 Abstufungen) schon als komfortabel bzw. "stufenlos". Um Wellenformen, sowas wie Sinuskurven, (einigermaßen) sinnvoll abzutasten, brauchst du etwa 2^8 - 2^12. Bei 2^14 kommt man schon zu sehr guten Ergebnissen. Der Standard bei CDs, 16 Bit war etwas zu kurzsichichtig. Die Auflösung ist zwar sehr gut für Tonabtastungen, aber andere Sachen, wie Quantisierungsrauschen, Abtastfehler, oder Redynamisierung spielen auch noch eine Rolle, so hatte man später das Format auf 20 Bit und 24 Bit erweitert. In Digitalsynthesizern gab es oft 64 Speicherplätze, also 2^6 bzw. . Dieser kleine Speicher hatte in der Regel kostentechnische Gründe, Speicherbausteine (etwa um den Speicher anzusteuern) waren teuer.

    Die Multimediaerweiterungen beim Intel haben eher marketingtechnische Gründe, Grafikkarten ersetzen sie nicht. Je größer aber hier die Bitbreite, desto größere Datenhappen können auf die Schnelle verarbeitet werden, noch mehr 3D, noch flüssigeres Wasser, coole Helden mit coole Spiegelbrillen usw. oder Video und Bildbearbeitung geht spürbar schneller, das ist für Profis ein Segen.



  • Also je mehr speicher reserviert wird, desto mehr bit werden für die pointeradressen in anspruch genommen, welche ab einer gewissen gb zahl die 32 bit ausreizen?


  • Mod

    kamelkacke schrieb:

    Also je mehr speicher reserviert wird, desto mehr bit werden für die pointeradressen in anspruch genommen, welche ab einer gewissen gb zahl die 32 bit ausreizen?

    Nein. Die Pointer sind immer gleich groß. Ebenso wie fast alle anderen Formen von Daten. Eine 10 belegt genau so viel Speicherplatz wie eine 100. Es gibt dann eben so etwas wie führende Nullen in den Daten.



  • Also diese betriebssystembits sind für die kommunikation aller prozesse verantwortlich, die pro sekunde unterschiedlich oft millionen mal, abhängig von komponenten wie zb prozessor usw., mit jeweils verschiedenen inhalten ausgeführt werden. Wie eine sms, die durch eine maximale zeichenlänge begrenzt ist, sind auch bitoperationen durch ihre bitbreite begrenzt. Die expansion von 32 auf 64 ist zwar nicht unbedingt nötig, aber bringt trotzdem vorteile, wie qualität und präzision. Jede "Bitoperation" wird an den prozessor gesendet und dort weiterverarbeitet.

    Habe ich das so richtig verstanden?

    Und wird der rechner durch die expansion von 32 auf 64 nicht (manchmal)unnötig langsamer, da er für bei verschiedenen prozessen doppelt so lange rechnet für teilweise unnötige präzision?

    Bzw. werden statt unnötiger präzision manchmal zwei "normale" prozesse behandelt, die sonst hintereinander in einem 32 bit system verarbeitet werden würden?

    Wenn ich kompletten und unverbesserlichen Mist schreibe, postet mir bitte ein stichwort nachdem ich googlen kann. ^^ Ansonsten schonmal danke für alle gegebenen Antworten!!!!!!!



  • Die Anzahl der möglichen Opcodes kann steigen.



  • Zu Bitoperationen, damit ist das Beispiel leichter: Angenommen du willst rechnen "c = a xor b" wobei a, b und c 64-bit Integer sind. Auf einem 64-Bit Prozessor ist das eine Instruktion, auf einem 32-bit Rechner 2.

    Zu Pointern: Jedes Byte im Speicher will adressiert werden können. Preisfrage: Wie viele verschiedene Byte kannst du mit einem 32-bit Pointer adressieren? Genau, nur 2^32, das sind 4 GB. (In der Praxis aus verschiedenen Gründen etwas weniger.) Heißt, wenn in deinem Programm ein Pointer 32 bit groß ist, kann dein Programm auch maximal nur 4GB Speicher adressieren.

    Und wird der rechner durch die expansion von 32 auf 64 nicht (manchmal)unnötig langsamer, da er für bei verschiedenen prozessen doppelt so lange rechnet für teilweise unnötige präzision?

    Nein, die Addition selbst geschiet ja in Hardware, den Zeitunterschied zwischen einer 64 und einer 32 bit Addition auf einem handelsüblichen PC kannst du mit normalen Mitteln gar nicht messen. (Den Zeitunterschied zwischen einer und zwei Additionen schon.) 64-bit Programme können allerdings langsamer werden. Denn die Pointer in dem Programm sind jetzt alle doppelt so groß wie vorher, und dadurch kann es passieren dass wichtige Daten nicht mehr komplett in den CPU-Cache passen. Aber das ist schon, sagen wir mal, unwahrscheinlich und recht speziell.



  • Ich weiß es schrieb:

    Die Anzahl der möglichen Opcodes kann steigen.

    Welchen Prozessor kennst du denn, der mit dem Sprung auf 64 Bit Wortbreite auch die Instruktionslänge erhöhrt hat? Die RISCs wie Power, SPARC und MIPS sind doch auch in den 64-Bit-Inkarnationen bei 32 Bit langen Befehlen geblieben. Auch der Alpha hatte 32-Bit-Instruktionen. Bei Maschinen mit variabler Befehlslänge gibt es sowieso keinen Zusammenhang mit der Wortbreite. VAXen hatten bis zu über 50 Byte lange Befehle. Auch i386 hat >10 Byte lange Befehle.



  • besserwisser schrieb:

    Ich weiß es schrieb:

    Die Anzahl der möglichen Opcodes kann steigen.

    Welchen Prozessor kennst du denn, der mit dem Sprung auf 64 Bit Wortbreite auch die Instruktionslänge erhöhrt hat?

    ARM.



  • 1. Also die Adressierung bei einem 32bit system über 4gb ist zwar ungünstig aber ergibt immernoch sinn, es ist halt nur zeitaufwendiger und minimal rechenintensiver?


  • Mod

    kamelkacke schrieb:

    1. Also die Adressierung bei einem 32bit system über 4gb ist zwar ungünstig aber ergibt immernoch sinn, es ist halt nur zeitaufwendiger und minimal rechenintensiver?

    Das ist zwar richtig, aber wenn du das hier dem Thread entnommen hast, dann solltest du noch mal an deinem Textverständnis arbeiten. Ob das Sinn macht, dies zu tun, sei mal so dahin gestellt. Manchmal braucht ein System auch einfach nicht mehr Speicher. Die Technik um in einem 32 Bit System über 4GB zu adressieren doch ist eher exotisch (Linux macht das bei speziellen Einstellungen, Windows muss man regelrecht hacken um ihm das beizubringen, keine Ahnung bei Mac OS), was mich noch viel mehr wundern lässt, wo du diese Idee her hast.



  • ARM schrieb:

    ARM.

    Öhm, wie kommst du darauf? Ich habe mir ARM64/AArch64 noch nicht ausführlich angesehen, aber das hätte mich doch sehr gewundert.

    http://www.arm.com/products/processors/armv8-architecture.php schrieb:

    A64 is a 32-bit fixed-length instruction set

    http://www.arm.com/files/downloads/ARMv8_Architecture.pdf schrieb:

    New fixed length Instruction set
    - Instructions are 32 bits in size



  • Gregor schrieb:

    1. Die Menge an adressierbarem Speicher vergroessert sich.

    Das halte ich für ein Gerücht.



  • Ich weiß es schrieb:

    Die Anzahl der möglichen Opcodes kann steigen.

    Die kann auch bei einem 8-Bitter >256 sein. Man nimmt eben mehr als 1 Byte.



  • reich schrieb:

    ARM schrieb:

    ARM.

    Öhm, wie kommst du darauf? Ich habe mir ARM64/AArch64 noch nicht ausführlich angesehen, aber das hätte mich doch sehr gewundert.

    http://www.arm.com/products/processors/armv8-architecture.php schrieb:

    A64 is a 32-bit fixed-length instruction set

    http://www.arm.com/files/downloads/ARMv8_Architecture.pdf schrieb:

    New fixed length Instruction set
    - Instructions are 32 bits in size

    Dann guck dir mal an, wie es vor ARM64 war.



  • SeppJ schrieb:

    was mich noch viel mehr wundern lässt, wo du diese Idee her hast.

    Der Post von 90043950345 auf Seite 1 mit dem Taschenrechnerbeispiel, stichwort: häppchenweise.

    Ist der Ursprung meiner These falsch?



  • Ich wundere mich schon manchmal über die mangelhafte Qualität mancher Antworten hier. Da wird mit Qualität der Ergebnisse argumentiert und es sei ein Gerücht, dass sich die Menge an adressierbaren Speicher vergrößert. Um nur 2 Sachen zu nennen. Es ist doch eigentlich eine einfache Frage, die man mit ein wenig Fachverstand leicht beantworten kann.

    Der Hauptgrund für 64 Bit ist tatsächlich der adressierbare Speicher. mit 32 Bit kann man maximal 4GB adressieren, da ein Zeiger eben 32 Bit lang ist. Ein Prozess kann also ohne Tricks wie PAE maximal 4GB Speicher verwenden.

    Die Qualität der Ergebnisse unterscheiden sich nicht. Alle Rechenoperationen liefern weiterhin das gleiche richtige Ergebnis. Auch sind Fließkommazahlen standardisiert. Die Genauigkeit der Fließkommazahlen unterscheidet sich zwischen 32 und 64 Bit Systemen nicht.

    Die Performance ist weitestgehend gleich. Ein 64 Bit-Prozess benötigt in der Regel ein wenig mehr Speicher da Zeiger, die in Programmen immer Zahlreich vorhanden sind eben doppelt so viel Speicher benötigen. Dadurch wird der Cache auch ein wenig ineffizienter. Aber dafür kann man eben wesentlich mehr Speicher Adressieren. Nämlich 16 Exabytes statt 4 Gigabytes.



  • tntnet schrieb:

    Der Hauptgrund für 64 Bit ist tatsächlich der adressierbare Speicher. mit 32 Bit kann man maximal 4GB adressieren, da ein Zeiger eben 32 Bit lang ist.

    Schon mal was von Adressbus und Datenbus gehört? Und dass sie nicht die gleiche Breite haben müssen, ja dass gleiche Bitanzahl sogar ein Sonderfall ist? Nicht? Egal, weitermachen mit pseudoschlauer Dampfplauderei. 🙄


Anmelden zum Antworten