Werden reale Anwendungen jemals einen flachen 128-Bit-Adressraum benötigen?


32

Das ist ein bisschen "ein Megabyte sollte für jeden reichen", aber ...

Ein flacher 64-Bit-Adressraum ermöglicht bis zu 4,3 Milliarden Mal mehr Speicherplatz als ein 32-Bit-Adressraum. Das sind 17.179.869.184 GiB.

Offensichtlich war der Übergang von 8 auf 16 Bit ziemlich schnell (ich betrachte die Dinge auf eine jugendliche Art und Weise und ignoriere all diese Mainframes und Minis, weil sie keinen Elite-Port betreiben konnten). Der Übergang von 16 Bit auf 32 Bit dauerte etwas länger und 32 Bit dauerten tatsächlich eine ganze Weile.

Jetzt haben wir 64 Bits, wäre es dumm zu sagen "17.179.869.184 GiB sollten für jeden reichen"?

Dies ist eine Frage des Programmierers, weil ich wirklich den Standpunkt der Programmierung im Auge habe. Selbst wenn ein Computer eines Tages scheinbar unendlich viel Arbeitsspeicher hat, bedeutet dies nicht, dass Anwendungen einen scheinbar unendlich flachen Adressraum benötigen.

Können wir Programmierer aufatmen und sagen: "Nun, was auch immer Ganzzahlen oder Gleitkommazahlen tun mögen, ich muss mir wenigstens keine Sorgen mehr machen, dass meine Zeiger weiter wachsen."


11
Wie viele Daten generiert der LHC pro Tag?
Peter Taylor

7
8-Bit-Prozessoren hatten tatsächlich einen 16-Bit-Adressraum - daher der "schnelle Übergang" :-)
Neil Butterworth

1
Ein 128-Bit-Adressraum liefert ungefähr so ​​viele Adressen, wie es Sterne im beobachtbaren Universum oder die Hälfte der Atome in unserer Galaxie gibt (bis zu einigen Größenordnungen).
Rein Henrichs

5
@Rein: Mit anderen Worten, nicht genug. Wie können wir ein Universum simulieren, dessen Speicheradressen nicht einmal für die Hälfte der Atome in unserer eigenen Galaxie ausreichen? amiright
quentin-starin

7
Ich denke, das kann ziemlich leicht beantwortet werden. Star Trek Holodeck. Genug gesagt.
Dunk

Antworten:


27

Ich glaube nicht, dass wir in absehbarer Zeit Maschinen mit mehr als 2 ^ 64 Bytes RAM haben werden, aber das ist noch nicht alles, wofür der Adressraum nützlich ist.

Für einige Zwecke ist es nützlich, andere Dinge in den Adressraum zu mappen, wobei Dateien ein wichtiges Beispiel sind. Ist es also sinnvoll, in absehbarer Zeit mehr als 2 ^ 64 Byte Speicher an einen Computer anzuschließen?

Ich muss ja sagen. Es muss weit über 2 ^ 64 Bytes Speicher geben, da dies nur etwa 17 Millionen Menschen mit Terabyte-Festplatten sind. Seit einigen Jahren gibt es Datenbanken mit mehreren Petabyte, und 2 ^ 64 sind nur ungefähr 17.000 Petabyte.

Ich denke, wir werden wahrscheinlich in den nächsten Jahrzehnten einen Adressraum von> 2 ^ 64 nutzen können.


4
Dies lässt mich an eine flache Adressierung denken, um alle im Internet verfügbaren Speicherbytes zu adressieren. Ich glaube, ich habe etwas über Betriebssysteme gehört, die eine flache Adressierung des gesamten Speichers auf dem System bieten (keine Notwendigkeit, Dateien in den Arbeitsspeicher zu mappen - sie sind bereits vorhanden). Wenn Sie eine IP-Adresse zu einem Teil Ihrer Speicheradresse machen, werden mehr als 64 Bit benötigt - IPv6 benötigt bereits 128 Bit nur für die Adresse. Es würde eine enorme Redundanz im Adressraum geben, aber es könnte trotzdem Sinn machen.
Steve314

2
Ja. Es würde das Leben vereinfachen, wenn Sie alle Ihre Laufwerke und Dateien in den Adressraum abbilden würden. Sehr viel Code, der sich mit der Manipulation von Dateien auf der Festplatte befasst, wäre viel einfacher, wenn Sie einfach einen Zeiger auf die gesamte Datei hätten. Eine Segment: Offset-Architektur wäre dafür ideal.
Loren Pechtel

Dies setzt voraus, dass jedes Byte aller Massenspeichergeräte direkt adressierbar ist.
Vartec

2
@ steve314: Sie denken an das einstufige Store- Konzept, das von IBM S / 38 entwickelt wurde. Interessantes Zeug, aber ich denke, es wäre schwierig, es in die heutigen Systeme zu integrieren.
TMN

1
@TMN: Nun, IBM i (aka i5 / OS, aka OS / 400) verwendet es immer noch und ist wohl immer noch eines der "heutigen Systeme".
Joachim Sauer

16

Wenn Computer nicht mit Durchbruchstechnologien beginnen, die es selbst in Laboratorien noch nicht gibt, ist es mit der aktuellen Siliziumtechnologie physikalisch einfach nicht möglich , mehr als 2 64 adressierbaren Speicherplatz zu haben . Die Technologie stößt an die physikalischen Grenzen . Die Geschwindigkeitsbegrenzung (GHz) wurde bereits vor einigen Jahren erreicht. Die Miniaturisierungsgrenze liegt ebenfalls sehr nahe. Derzeit ist die fortschrittlichste Technologie in der Produktion 20 nm, in Labors 4 nm mit Transistoren aus 7 Atomen.

Um es kurz zu machen, wie lange es dauert, bis eine neue Technologie entwickelt ist: Aktuelle Computer basieren auf Transistoren, die 1925 erfunden wurden, und die aktuelle Siliziumtechnologie stammt aus dem Jahr 1954.


Was alternative Technologien betrifft:

  • Optisches Computing - könnte die Rechengeschwindigkeit erhöhen, löst jedoch nicht das Miniaturisierungsproblem für den Speicher.
  • Quantum Computing - Um vollständig genutzt zu werden, ist ein völlig neues Programmierparadigma erforderlich. Wenn also 64- oder 128-Bit-Zeiger verwendet werden, sind Sie am wenigsten besorgt. Auch für diese Technologie gelten dieselben physikalischen Einschränkungen hinsichtlich der Miniaturisierung.
  • DNA-Computing - Dies sind Proof-of-Concept-Spielzeuge, die zur Lösung einer bestimmten Problemklasse entwickelt wurden. Nicht realisierbar. Um Berechnungen zu erhalten, die auf einem normalen PC in weniger als einer Sekunde durchgeführt würden, würde ein DNA-Tank von der Größe des Pazifischen Ozeans und einigen tausend Jahren benötigt. Da es sich um einen natürlichen biologischen Prozess handelt, gibt es keine Möglichkeit, diesen zu miniaturisieren oder zu beschleunigen.

4
Sie sagen also, dass es keine technologischen Durchbrüche mehr geben wird? Wir werden für immer an der Siliziumtechnologie festhalten. Radikal neue Dinge wie Quantencomputer oder DNA-Computer werden für immer in der Forschung bleiben. Glaubst du das wirklich?
Nikie

2
@nikie: Quantencomputer sind keine Zauberei. Sie benutzen immer noch Atome. Sie sind immer noch durch die Physik begrenzt. DNA-Computer? Sind Sie im Ernst??? Es ist völlig nutzlos, nicht nur ein Proof of Concept zu sein.
Vartec

4
@Thor: Nun, es ist auch physisch nicht möglich, den Menschen 2011 auf den Mond zu bringen.
Vartec

7
Warum -1? Die Zusammenfassung hat einige sehr solide Grundlagen. 2 ^ 64 ist eine sehr, sehr, sehr große Zahl. Es ist nicht 2 ^ 32 * 2, es ist viel größer und 2 ^ 128 ist ziemlich verrückt. Es würde sehr viel Zeit in Anspruch nehmen, nur um es zu tun for(unsigned __int128 i=0; i<2^128; i++){}. Bei der gegenwärtigen Technologie werden 128-Bit-Ganzzahlen nicht häufig verwendet. Abgesehen davon, dass Sie möglicherweise wieder in den ungeschützten Adressraum zurückkehren, ist es ziemlich unmöglich, versehentlich auf den Speicher anderer Anwendungen im 128-Bit-Adressraum zuzugreifen, selbst wenn Sie zufällig in zufällige Adressen schreiben.
Coder

2
@nikie: Quantencomputer sind für diese Diskussion irrelevant, da die Verwendung aktueller Speichermodelle (die hier behandelt werden) auf Quantencomputern ihren ganzen Zweck zunichte macht. Oh, und ja, DNA-Computer werden niemals wirklich von Nutzen sein. Es ist so, als würde man zellulare Automaten als Grundlage für ein Ausführungsmodell verwenden.
back2dos

15

Der angeschlossene Supercomputer Thorbjoern verfügt über ca. 2 ^ 47 B physischen Speicher.
Unter der Annahme, dass Moores Gesetz für den Speicher von Supercomputern gilt, wird er in nur 34 Jahren zu 2 ^ 64 B physischem Speicher. Das ist wie "OMG, das werden wir noch erleben !!!!". Vielleicht. Und in der Tat ist es faszinierend. Aber genauso irrelevant.

Die Frage ist, brauche ich einen 128-Bit-Adressraum, um 2 ^ 65 B physischen Speicher zu nutzen?
Die Antwort lautet NEIN . Ich benötige einen 128-Bit-Adressraum, um 2 ^ 65 B virtuellen Speicher von einem einzelnen Prozess aus zu adressieren .

Dies ist ein zentraler Punkt Ihrer Frage: " Brauchen reale Anwendungen jemals einen flachen 128-Bit - Adressraum?". " Need ", nicht unbedingt, man kommt mit weniger aus, macht den Adressraum gemappt (nicht flach); Dann hätten Sie aber keinen "flachen 128-Bit-Adressraum".

Angenommen, Sie möchten den Atomen auf der Erde eine physikalische Speicheradresse zuweisen (aus welchem ​​Grund auch immer, hauptsächlich, um dieses einfache Beispiel zu liefern ), beginnen Sie bei Null und zählen Sie weiter (setzen Sie sich mit mir in Verbindung, wenn Sie fertig sind). Jetzt möchte jemand anderes dasselbe mit Kepler-10c (der 568 Jahre entfernt ist) machen.

Sie möchten keinen Adresskonflikt , also weist die andere Person dem verfügbaren flachen Speicherplatz eine hohe Speicheradresse zu , sodass Sie, sie und die nächsten Personen direkt angesprochen werden können, ohne den Speicher zuzuordnen . Wenn Sie das nicht tun oder ohne eine Eins-zu-Eins-Beziehung zwischen Ihrem Speicher und seiner Adresse auskommen (Sie sind bereit, ein spärliches Array zu implementieren), können Sie mit einem 64-Bit-Speicher oder weniger auskommen.

Wann immer jemand vorschlägt " X Menge von Y wird ausreichen ", bleibt eine solche Vorhersage oft kurzlebig.

Die Frage ist also: Wie schnell werden wir einzelne Prozesse haben, die 2 ^ 65 B Speicher benötigen. Ich hoffe nie

Das große Problem unserer Zeit ist, dass die Rechenleistung einer einzelnen CPU begrenzt ist. Es gibt eine Größenbeschränkung, die durch die Größe der Atome definiert ist, und für eine gegebene Größe gibt es eine Begrenzung der Taktrate, die durch die Lichtgeschwindigkeit gegeben ist, die Geschwindigkeit, mit der sich Informationen über Änderungen in Magnetfeldern in unserem Universum ausbreiten.
Tatsächlich war das Limit vor ein paar Jahren erreicht und wir haben uns mit Taktraten niedergelassen, die unter denen vorher lagen . Die CPU-Leistung wird nicht mehr linear skaliert. Die Leistung wird jetzt durch Ausführung außerhalb der Reihenfolge, Verzweigungsvorhersage, größere Caches, mehr Operationscodes, Vektoroperationen und was nicht verbessert. Es wurde eine architektonische Optimierung vorgenommen .
Eine wichtige Idee ist die Parallelisierung. Das Problem bei der Parallelisierung ist, dass sie nicht vergrößert wird. Wenn Sie vor 20 Jahren langsamen Code geschrieben haben, hat er vor 10 Jahren viel schneller funktioniert. Wenn Sie jetzt langsamen Code schreiben, wird er in 10 Jahren nicht viel schneller.

Prozesse, die 2 ^ 65 B Speicher belegen, sind ein Zeichen äußerster Dummheit. Dies zeigt, dass es keine architektonische Optimierung gegeben hat . Um diese Daten sinnvoll zu verarbeiten, benötigen Sie etwa 10 Millionen Kerne, von denen die meisten Zeit damit verbringen würden, auf die Verfügbarkeit einer Ressource zu warten, da diese Kerne, die die Ressource tatsächlich erworben haben, physischen Speicher über Ethernet auf einem völlig anderen Computer verwenden. Der Schlüssel zum Umgang mit großen, komplexen Problemen besteht darin, sie in kleine, einfache Probleme zu zerlegen und keine immer größeren und komplexeren Systeme zu erstellen. Sie benötigen eine horizontale Partitionierung, wenn Sie mit Sh * Tloads von Daten arbeiten.

Aber selbst wenn man annimmt, soll dieser Wahnsinn weitergehen, sicher sein , 128 - Bit ist genug :

  • Die Erde hat ungefähr 8,87e + 49 Atome , was 2 ^ 166 Atomen entspricht, die wir haben .
  • Nehmen wir an, es kostet 2 ^ 20 Atome, ein Bit zu halten. Dies beinhaltet auch alle dazugehörigen Kabel und Kunststoffe sowie die dazugehörige Stromversorgung. Sie können nicht einfach Transistoren in eine Box werfen und sie als Computer bezeichnen. 2 ^ 20 scheint also eher optimistisch.
  • Um den Adressraum von 128 Bit zu nutzen, benötigen wir 2 ^ 133 Bit, also 2 ^ 152 Atome, die wir benötigen . Nehmen wir die gleiche Verteilung der Atome auf der Erde an und sehen wir uns an, wie viel Kruste wir aufnehmen müssen, um sie zu erhalten:

    let
       q  := ratio of atoms needed to atoms present = 2^-14
       Vc := volume of the crust to be used
       Ve := volume of the earth
       re := the radius of the earth = 6.38e6
       tc := the required thickness of the crust
       k  := 0.75*pi
    thus
                                 Vc / Ve = q 
       (k*re^3 - k*(re-tc)^3) / (k*re^3) = q
                    1 - ((re-tc) / re)^3 = q        
                              (re-tc)/re = root3(1-q)
                                      tc = re * (1 - root3(1-q))
                                      tc = 6.38e6 * (1 - (1 - 2^-14)^(1/3))
                                      tc = 129.804073
    

    Sie haben also 130 Meter auf der gesamten Oberfläche (einschließlich der 80% mit Wasser, Sand oder Eis bedeckt). Das wird nicht passieren. Sogar vorausgesetzt, Sie können es ausgraben (lol) und all diese Materie ist geeignet, um in Chips verarbeitet zu werden. Woher bekommen Sie die Energie?


8
Auf der anderen Seite bräuchte man einen sehr großen Computer, um die Umweltverträglichkeitsprüfung für den gesamten Strip-Mining-Planeten durchzuführen. Vielleicht würde sich das also rechtfertigen (hier ein bisschen Hitch Hikers holen)
Martin Beckett

2
Ein Bit = 10 ^ 6 Atome. Die ganze Erde = 10 ^ 50 Atome. Das ganze Universum = 10 ^ 80 Atome. Exponentielle Notation ist fantastisch! :-)
Konamiman

2
Es geht nicht darum, einen gesamten 128-Bit-Adressraum zu belegen, sondern einen 64-Bit-Adressraum. Ab wann benötigen wir ein zusätzliches Adressierungsbit über 64 Bit hinaus? Wie viel physikalischer Raum (Moleküle) wird für 2 ^ 65 Bytes benötigt?
David R Tribble

1
Sie sagen also, dass eine physikalische 128-Bit-Speicherarchitektur Fertigungskapazitäten im planetarischen Maßstab erfordert ?
Indolering

Einzelatomtransistoren wurden entwickelt. Wie kommen Sie zu den 2 ^ 20 (ungefähr einer Million) Atomen pro Bitzahl? en.wikipedia.org/wiki/5_nanometer
JimmyJames

8

Nun, wir könnten definitiv einen großen Adressraum verwenden.

Stell dir das vor:

  1. Der Adressraum ist nicht auf einen einzelnen Computer beschränkt. Stattdessen identifiziert eine Adresse eine Speicherzelle in einem universellen Adressraum eindeutig. Sie können also auf jedem Computer der Welt einen Zeiger auf eine Speicherzelle haben. Es muss ein Protokoll vorhanden sein, um das Lesen aus dem Remote-Speicher zu ermöglichen, dies ist jedoch ein Implementierungsdetail. :-)

  2. Der Speicher ist Write Once, Read Many, dh Sie können Daten nur einmal in eine Speicheradresse schreiben. Für einen veränderlichen Wert müssen Sie bei jeder Änderung einen neuen Speicher zuweisen. Wir Programmierer haben begonnen, die Vorteile der Unveränderlichkeit und des Transaktionsspeichers zu erkennen. Daher ist ein Hardware-Design, das nicht einmal das Überschreiben von Speicher zulässt, möglicherweise keine so unmögliche Idee.

Wenn Sie diese beiden Ideen kombinieren, benötigen Sie einen großen Adressraum.


Und warum sollten Sie jedes Byte jedes Computers auf der Welt ansprechen müssen? (Ich gehe davon aus, dass Sie nicht die NSA sind.)
David R Tribble

weil wir den weltumspannenden KI-Overlord von Hivemind aufbauen werden, um uns natürlich zur Erlösung zu führen!
Sara

7

Je leistungsfähiger Computer werden, desto komplexer werden die Probleme, mit denen sie arbeiten müssen.

Der größte auf top500.org aufgeführte Supercomputer ist http://www.top500.org/system/10587 mit etwa 220 TB RAM und 180000 Kernen. Mit anderen Worten, damit können "reale Anwendungen" auf dieser Plattform arbeiten.

Heutige Computer sind so leistungsfähig wie Supercomputer vor 10-15 Jahren (obwohl die Rechenleistung möglicherweise in Ihrer Grafikkarte verborgen ist).

Ein Faktor 100 im Speicher in 10-15 Jahren bedeutet also, dass der 64-Bit-Adressraum in etwa 100 Jahren ein begrenzender Faktor sein wird (da log (100 Millionen) / log (100) bei etwa 6 liegt), wenn der aktuelle Trend anhält.


hinweis: mathe nicht verifiziert, wahrscheinlich ganz aus.

17
es ist wie aus dem Jahr 1800 die Vorhersage, dass , wenn der Verkehr so viel wächst, werden ganze Städte von Bergen von Pferdemist :-P abgedeckt werden
vartec

1
220 GB sind heutzutage nicht mehr so ​​viel. Es gibt Server mit 256 GB RAM. 180000 Kerne? Nun das ist etwas :). Ich weise nur darauf hin, weil OPs Hauptanliegen die RAM-Größe ist.
Tamás Szelei

1
@vartec zeigt nur, dass Blindextrapolation möglicherweise nicht gültig ist. Das selbe hier.

6
Tamás hatte recht: In dem von Ihnen angegebenen Link steht "229376 GB", was eher 220 TB entspricht. Unter der Annahme, dass 4 MB L2-Cache pro Kern vorhanden sind, verfügen 180 KB-Kerne bereits über 720 GB L2-Cache;)
back2dos

5

Dieser ganze Thread ist ziemlich lustig zu lesen, sehr starke Meinung für und gegen ...

Hier etwas ..

Ich verstehe aus der Frage, dass es technologieunabhängig und nicht zeitgebunden war. Daher sind die aktuellen Entwicklungen in Silizium, Quantencomputern oder dem Infinite Monkey Peddling Abacus praktisch irrelevant.

Berechnungen und Extrapolationen sind auch ziemlich lustig, obwohl die Antwort von back2dos ziemlich gut funktioniert, um die schiere Größe dessen zu veranschaulichen, was diese Zahl darstellt. Also lasst uns damit arbeiten.

Setzen Sie Ihren Geist in die Zukunft, in der der Mensch nicht mehr an die Grenzen seines kleinen Planeten gebunden ist. Ein realistisches Transportmittel wurde entwickelt, um Transporte über sehr große Entfernungen zu ermöglichen, und die sozialen Strukturen (wirtschaftlich, politisch usw.) haben sich über Generationen hinweg entwickelt. Übergreifende pharaonische Projekte sind zu alltäglichen Orten geworden. Konzentrieren wir uns noch auf zwei Aspekte dieser weit hergeholten Zukunftsvision. Wenn man sich die Zeit nehmen möchte, um alle Details zu erklären, kann man das mit einer Reihe plausibler Entwicklungen aktueller Technologien erklären. Mit anderen Worten, eine plausible, wenn auch unwahrscheinliche Zukunft ... jedenfalls ...

Das erste Projekt namens Colossus in Erinnerung an diesen ersten elektronischen Computer, da es der erste planetarische Computer ist. Die Colossus Brotherhood hat in der Tat ein Mittel gefunden, um einen kleinen Planetoiden einzufangen und in einen funktionierenden Computer umzuwandeln. Kürzlich im Kuyper-Gürtel entdeckt, der besonders reich an schmelzbaren Isotopen ist, wodurch er energetisch autonom ist, haben sie den Konstruktionsprozess mit Sonden, Robotern usw. vollständig autonom gemacht, wodurch das Computersystem selbstreparierend und selbstkonstruierend wird. Unter diesen Umständen wäre es denkbar, dass der 2 ^ 64-Adressraum für dieses Projekt etwas begrenzt ist, da ein kontinuierlicher Adressraum zur einfachen Portierung von Anwendungen, die bereits für ein anderes Projekt vorhanden sind, angestrebt wird.

Das andere Projekt ist eher ein Experiment zur Vernetzung als ein physisches System. Es hat jedoch schnell gezeigt, dass ein größerer Adressraum erforderlich ist. Vor 540 Jahren spielte ein junger Hacker mit der Idee, ein gigantisches Botnetz zu schaffen. Das Internet war bereits um die aufkommenden Kolonien rund um das Sonnensystem erweitert worden, die auf den großen Fortschritten bei der Fusionsenergie aufbauten. Seine Idee war es, kleine Bots über das Netzwerk zu verteilen, aber die Nutzlast sollte eine einheitliche virtuelle Maschine bereitstellen, auf der Code geschrieben werden würde, vorausgesetzt, er hätte die gesamte Leistung aller Bots zusammen. Beim Compiler und der Bereitstellung wurden große Anstrengungen unternommen, um Verzögerungen und ausgefeilte Algorithmen zu optimieren, die der inhärenten Unzuverlässigkeit des zugrunde liegenden Mediums Rechnung tragen sollen. Eine Sprache wurde speziell für dieses neue Ziel geschrieben. " Unser Hacker gründete stattdessen ein Dachunternehmen und verkaufte die Rechenleistung an den Meistbietenden. Als er starb, spendete er dieses Botnetz und alle Technologien an eine Stiftung. Zu diesem Zeitpunkt lief das Botnetz bereits seit 64 Jahren und war bereits vor einiger Zeit über den 2 ^ 64-Adressraum hinausgewachsen, was die 1000 Jahre alte Annahme erschütterte, dass wir niemals einen größeren Adressraum benötigen würden. Heutzutage ist 2 ^ 128 die Norm und was für Colossus verwendet wird, aber es ist bereits geplant, dies auf 2 ^ 256 zu erweitern. Unser Hacker gründete stattdessen ein Dachunternehmen und verkaufte die Rechenleistung an den Meistbietenden. Als er starb, spendete er dieses Botnetz und alle Technologien an eine Stiftung. Zu diesem Zeitpunkt lief das Botnetz bereits seit 64 Jahren und war bereits vor einiger Zeit über den 2 ^ 64-Adressraum hinausgewachsen, was die 1000 Jahre alte Annahme erschütterte, dass wir niemals einen größeren Adressraum benötigen würden. Heutzutage ist 2 ^ 128 die Norm und was für Colossus verwendet wird, aber es ist bereits geplant, dies auf 2 ^ 256 zu erweitern.

Wahrscheinlich könnte ich mir quasi plausibelere Szenarien einfallen lassen, die zeigen, dass ja ... es durchaus möglich ist, ja fast sicher, dass wir eines Tages einen Adressraum benötigen, der größer ist als dieser.

Allerdings glaube ich nicht, dass ich darüber den Schlaf verlieren würde. Wenn Ihre Anwendung einen bestimmten Adressraum benötigt, um korrekt zu funktionieren, wird sie höchstwahrscheinlich in einer VM laufen, die alles bietet, was sie benötigt ...

Also ... kurze Antwort ...

JA, höchstwahrscheinlich

aber

Warum nicht damit umgehen, wenn das Problem auftritt? Ich persönlich gehe nie davon aus, dass meine Programme keine Überraschungen enthalten.


2
Ich freue mich über die Detailgenauigkeit Ihres fiktiven Beispiels. Schreiben Sie irgendwo eine Kurzgeschichte?
Christopher Bibbs

2

Adresspositionen haben logarithmische Kosten in Bezug auf die Adressbreite, sodass wir obere Grenzen basierend auf den fraglichen Parametern berücksichtigen können:

64-Bit für Sandpartikel auf der Erde = 7,5x10 ^ 18
128-Bit für Sterne im beobachtbaren Universum = 10 ^ 24
256-Bit für Partikel auf der Erde = 10 ^ 50
512-Bit für Partikel im beobachtbaren Universum = 10 ^ 82
1024 -Bit für kubische Dielenlängen im beobachtbaren Universum = 4,65 × 10 ^ 185

  • Die für Hashing, Sicherheit und Indizierung eingeführte Sparsity

6.6106 ... × 10 ^ 122-Bit für mögliche Partikelkonfigurationen im beobachtbaren Universum = 10 ^ (10 ^ 122)

Wir könnten die möglichen Konfigurationen als Obergrenze für die größtmögliche physikalisch konstruierbare Speicheradresse annehmen.


Um die für n Adressen erforderliche Breite zu berechnen , geben Sie Folgendes in wolfram alpha ein: 2 ^ ceil (log2 (log2 ( n )))
Timothy Swan

1
Sie haben Recht, dass es nützlich sein kann, über hochredundante Adressräume zu verfügen, in denen die meisten Adressen überhaupt nicht auf etwas verweisen, wie in Ihrem Hashing - Punkt usw., aber ich denke, jemand hat sogar vorgeschlagen, URLs in virtuelle Maschinenadressen zu codieren (nicht nur eine Hashes von ihnen), es gibt also keine Obergrenze dafür, wie verschwenderisch / redundant ein zukünftiges virtuelles Adressierungsschema sein könnte. Natürlich klingt es nicht nach einer guten Idee, Daten in Adressen zu codieren (anstatt sie bei Bedarf in potenziell geschützten Tabellen nachzuschlagen).
Steve314

0

Nun, ich denke, dass Sie in den kommenden Jahren wahrscheinlich aufatmen können. Betrachtet man die Innovationsgeschwindigkeit bei Hardware, so lässt sich feststellen, dass in den letzten Jahren keine nennenswerten Durchbrüche erzielt wurden. CPUs mit Frequenzen von 2 x GHz gibt es schon seit einiger Zeit und jeder Anstieg der Rechenleistung ist heutzutage darauf zurückzuführen, dass mehr Kerne auf den Chip gepackt werden. Die Laufwerkskapazität steigt immer noch, aber nicht in dem Maße wie vor 10 Jahren.

Ich denke, dass unsere derzeitige Technologie an die Grenzen der Physik stößt.

Was heißt das für die Zukunft? Ich denke, um neue Quantensprünge in der Informationsverarbeitung zu erzielen, müssen ganz neue Technologien eingesetzt werden. Diese Technologien werden wahrscheinlich "Software" verwenden, wenn auch möglicherweise in einem Kontext, der dem, was er heute ist, ziemlich fremd ist. Und wer weiß, welche Adressraumanforderungen sie haben oder bereitstellen können? Oder ob Adressraum in dieser Technologie überhaupt ein sinnvolles Konzept ist?

Also zieh dich jetzt noch nicht zurück.


CPU-Geschwindigkeit ist ein etwas anderes Konzept als Speichergröße.

Ich bin mir nicht sicher, ob Sie die Schlussfolgerung ziehen können, dass die Annäherung an die Grenzen der Physik etwas damit zu tun hat, dass die Prozessorgeschwindigkeit in den letzten Jahren nicht sehr gestiegen ist. Es ist eine Tatsache, dass in den letzten Jahren Multicore-CPUs im Trend lagen und die CPU-Hersteller ihr Geld in die optimale Nutzung all dieser Prozessoren investieren, anstatt ihr Geld für Taktungsverbesserungen auszugeben. Sogar die großen Unternehmen haben ein Limit für ihre F & E-Dollars. Die Laufwerkskapazität steigt immer noch ziemlich schnell IMO. Habe gerade ein 3-TB-Laufwerk für 140 USD gesehen.
Dunk

0

Ja, das wird es geben. (Spiele? Künstliche Intelligenz?)

Eine passendere Frage könnte jedoch sein, ob sie für den typischen Programmierer gilt. Stellen Sie sich vor, wie Ruby Zahlen bei Bedarf automatisch von FixNum nach BigNum und zurück konvertiert. Es würde mich wundern, wenn andere Sprachen (zumindest die dynamischen) letztendlich nicht dasselbe tun würden.


1
Oh ja. zur Hölle, ja. Ich möchte ein Spiel spielen, das sooo cool ist, dass es 128-Bit-Arithmetik verwenden muss !!!!!!!!!
Chani

1
Duke Nukem Forever Rev 2.0? Oder Madden Football 2025?
John R. Strohm

0

Diese Menge an Informationen zu speichern ist eine Sache und etwas Nützliches damit zu tun ist eine andere. Aus meiner Sicht sehe ich keinen Bedarf für diesen Speicher, es sei denn, wir haben die Rechenleistung, um ihn zu nutzen. Vielleicht ist das Zwischenspeichern großer Datenbanken eine Sache, aber für die numerische Verarbeitung brauchen wir meiner Meinung nach zuerst Prozessoren.


0

Brauchen Anwendungen jemals so viel Speicher? Gut möglich. Anwendungen wie Wettervorhersagen, physikalische Simulationen im Allgemeinen oder Kryptografie werden wahrscheinlich immer von mehr Speicher und mehr Rechenleistung profitieren. Und wer weiß, wie die Killer-App in 50-100 Jahren aussehen wird? Holografische Displays? Regenbogentabellen für jedes mögliche 100-stellige Passwort?

Ist es physisch möglich, so viel Gedächtnis darzustellen? Auf jeden Fall möglich. Beispielsweise kann ein 100-Qubit-Quantencomputer die gleiche Anzahl von Zuständen wie ein klassischer 2 ^ 100-Bit-Computer darstellen. Viel mehr als die 2 ^ 67 Bits Adressraum, die wir jetzt haben. (Ich weiß, ein 100-Qubit-Quantencomputer klingt wie Science-Fiction. Ich bin nicht davon überzeugt, dass es jemals möglich sein wird, einen zu bauen. Andererseits könnte man das wahrscheinlich auch über jede andere Technologie sagen, die 50 verwendet wird oder in 100 Jahren.)

Aber ich bezweifle ernsthaft, dass "flache Adressräume" bis dahin die Hauptsorge sein werden. Vielleicht entwickeln wir bis dahin Quantenalgorithmen, bei denen das Konzept eines "Adressraums" wenig Sinn macht. Selbst wenn Computer "klassisch" bleiben, werden wir wahrscheinlich mit einer beängstigenden Anzahl von Prozessoreinheiten mit ungleichmäßigem Speicher zu tun haben.


"100-Qubit-Quantencomputer können die gleiche Anzahl von Zuständen darstellen wie ein klassischer 2 ^ 100-Bit-Computer." So funktionieren Qubits nicht wirklich. Ein 100-Qubit-Computer kann dieselbe Anzahl von Zuständen wie ein 100-Bit-Computer darstellen. Der Unterschied besteht darin, dass der 100-Qubit-Computer die Überlagerung all dieser Zustände auf einmal darstellen kann. Die andere Sache über Qubits ist, dass wenn Sie sie lesen, Sie nur eine Antwort erhalten und es völlig zufällig sein wird.
JimmyJames

@ JimmyJames: Genau. Wenn Sie also die gleichen Informationen darstellen möchten, die ein 100-Qubit-Quantencomputer zu einem bestimmten Zeitpunkt in einem klassischen Computer hat (z. B. um sie zu simulieren), benötigen Sie weit mehr als 100 Bits. Das ist, was ich gesagt habe. (Oder jedenfalls gemeint.)
Nikie

Auch so funktioniert es nicht. Ein 2-Bit-Register kann 4 Werte darstellen. Ein 2-Qubit-Register kann 4 Werte darstellen. Beide können den gleichen Wertebereich darstellen. Das Qubit-Register kann alle 4 gleichzeitig darstellen. Das ist der unterschied
JimmyJames

@JimmyJames: Das ist so, als würde man sagen, ein 2-Bit-Register "klassisch" kann 2 Werte darstellen, aber gleichzeitig. Denken Sie an es auf diese Weise: Wenn Sie einen Quantencomputer in einem klassischen Computer, wie viele Bits würden Sie brauchen , um zu speichern den vollen Zustand des 2-Qubit - Quantencomputer jederzeit simulieren wollte t ?
Nikie

Ich verstehe es aber mir fehlt doch, dass man aus den Qubits keinen bestimmten Wert abrufen kann. Das heißt, wenn ein Qubit in Überlagerung gelesen wird, erhalten Sie entweder 1 oder 0, können jedoch aufgrund von Dekohärenz nicht beide Werte abrufen: en.wikipedia.org/wiki/Quantum_decoherence
JimmyJames

0

Was würde passieren, wenn jeder Speicherort eine global eindeutige Adresse hätte?

  • Netzwerkprotokolle könnten viel einfacher werden.
  • Interessant wären verteilte Objekte - alle Objekte könnten im gleichen Speicherbereich existieren.
  • Vielleicht würden wir auf "einmal schreiben" umschalten und die Zeit als Teil der Adressstruktur einbeziehen. Sie konnten Objekte lesen, die in der Vergangenheit existierten.
  • Alle sekundären Speicher wären direkt adressierbar. Auf Wiedersehen FILE, fopen()usw.
  • Sie könnten festgenommen werden, weil Sie an einen schlechten Zeiger geschrieben und die Maschine eines anderen abgespritzt haben.
  • Die Schüler müssten vor dem ersten CS-Kurs gescreent werden: Nur sehr wenige Menschen können dem Total Perspective Vortex widerstehen .

0

Ich habe hier nur "laut gedacht", aber mir ist gerade eingefallen, dass man mit den verbleibenden 64 Bit auf einem 128-Bit-Computer interessante semantische Dinge machen kann. Vgl. die Art und Weise IP funktioniert.

Ich bin sicher, die Leute könnten sich lustige Verwendungszwecke für so etwas einfallen lassen. :) Weiß jemand, wofür die PS3 ihre 128-Bit-Adressen verwendet? Sicherlich würden Sie nicht den ganzen zusätzlichen Speicher verschwenden (und ich spreche nur über den Speicher für die tatsächlichen Adressen, und nicht darüber, auf was diese Adressen verweisen). Adressen als Daten. Sie könnten sogar eine Verzweigung in der Adresse selbst kodieren ... zB 0x [ifAddress] [elseAddress] Multi-Core-Systeme könnten ebenfalls von dieser Art der Segmentierung profitieren. Und und...


0

Gibt es einen Grund, die 64-Bit-Architektur zu übertreffen? (18.446.744.073.709.551.615 Byte adressierbarer Speicher)

Unter Verwendung des IEEE 1541-2002-Standards zur Verwendung von Präfixen für binäre Vielfache von Maßeinheiten in Bezug auf digitale Elektronik und Computer sehen wir Folgendes:

1 Byte = 8 Bits, 1 Kilobyte = 1024 Bytes, 1 Megabyte = 1024 KB, 1 Gigabyte = 1024 MB, 1 Terabyte = 1024 GB, 1 Petabyte = 1024 TB, 1 Exabyte = 1024 PB

Und so weiter für Zettabyte, Yottabyte, Xenottabyte, Shilentnobyte, Domegemegrottebyte, Icosebyte und Monoicosebyte.

Der Gesamtspeicher für Erdlaufwerke wird für 2016 auf etwa 2.500 Exabyte geschätzt.

Ein 64-Bit-Register kann direkt auf 15 Exabyte Speicher zugreifen. Ein 128-Bit-Register kann direkt auf 3,40282367 × 10 ^ 35 Zettabyte zugreifen. Oder 295.147.905.247.928.000 Monoicosebytes.

Wir können also sehen, dass ein 128-Bit-Register in einer guten Position wäre, um für eine geraume Zeit auf den gesamten Speicher der Erde zuzugreifen, auf alles, was jemals im Internet gesendet wurde, auf jedes Wort, das jemals gesprochen oder geschrieben wurde, auf jeden Film und vieles mehr .

Die Antwort lautet also Ja , bis ein Framework vorliegt , das auf jedes digitale Objekt hinweisen kann, das jemals war oder sein wird .


0

Die beste Schätzung, die ich für die Anzahl der Neuronen in einem durchschnittlichen menschlichen Gehirn finden kann, liegt bei 86 Milliarden. Wir können RAM im Allgemeinen nicht direkt mit Neuronen vergleichen, aber in einem neuronalen Netzwerk ist das möglich. Es nimmt eine Reihe von Adressen in Anspruch, um den Zustand eines Neurons oder einer Synapse darzustellen. Also werde ich eine wilde Vermutung aufgeben und sagen, wir schauen uns so etwas wie eine Billion Adressen an, um ein neuronales Netzwerk zu schaffen, das mit einem menschlichen Gehirn vergleichbar wäre. Wenn das möglich ist, verstehe ich nicht, warum es nicht viel weiter gehen würde. Die Art der Probleme, mit denen sich ein solches Netzwerk befassen könnte, würde sich unserer Fähigkeit, sie zu verstehen, entziehen und auch, warum sie dazu so groß sein müssten.


0

Es ist Adressraum. Nehmen wir an, wir ändern den C-Standard, sodass Realloc den verwendeten Zeiger nicht ändern darf. Ich kann heute 2 ^ 33 Speicherblöcke zuweisen (würde 192 GB RAM auf meinem Mac, 8 Milliarden mal 8 Byte Zeiger und 16 Byte zugewiesenen Speicherplatz erfordern, also kann ich das jetzt nicht tun, aber ich könnte mir einen Mac kaufen, der das kann ohne eine neue Hypothek aufzunehmen).

Und ich kann jeden dieser Zeiger neu zuordnen, um 2 ^ 33 Bytes zu halten. Nicht viele gleichzeitig :-) Wenn Realloc das Verschieben von Zeigern nicht zulässt und 2 ^ 33 Bytes zulässig sind, müssen die ursprünglichen Zeiger 2 ^ 33 Bytes voneinander entfernt sein, was bedeutet, dass 2 ^ 66 Bytes Speicher benötigt werden.


-1

Klar, ich sehe keinen Grund, warum in Zukunft nicht so viel Platz benötigt wird. Wenn Sie über die Entwicklung von Spielen nachdenken, gibt es keine Grenzen dafür, wie realistisch oder komplex ein Spiel sein kann, oder? (Detail der verwendeten Grafiken / Anzahl der Polygone und Algorithmen, die die Interaktion und das Verhalten von Objekten definieren)?

Wer weiß, in 10 Jahren könnten wir 10-TB-Spiele mit Mindestanforderungen von 12 GB RAM und einem 8-Core-Prozessor spielen. : P


Dem Detail sind keine Grenzen gesetzt. Silizium kennt jedoch Grenzen.
Billy ONeal

-1

Vor 20 Jahren gab es 2 Milliarden weniger Menschen auf der Erde und die meisten Computersysteme verfügten über adressierbaren Speicher, der in Kilobyte gemessen werden konnte. Heutzutage nimmt die Weltbevölkerung mit der gleichen Geschwindigkeit zu und die Anzahl der Computernutzer steigt jedes Jahr exponentiell an.

Es ist richtig, dass nur sehr wenige Systeme einen vollen 64-Byte-Adressraum benötigen. Einige Systeme speichern jedoch täglich Terabyte an Informationen. Dies war aufgrund der Zunahme der Computerbenutzer und der Internetgeschwindigkeiten möglich. Bereits 23 Jahre nach der Erfindung von HTTP können wir Internetgeschwindigkeiten von 10 GB / s unterstützen. Bei dieser Geschwindigkeit halte ich es für töricht, in 50 Jahren nicht mit einer Internetgeschwindigkeit von 1 TB / s oder mehr zu rechnen. Wenn wir alle Daten so schnell verschieben können, müssen mehr Daten gespeichert werden, während mehr Personen zum Speichern dieser Daten vorhanden sind, und es ist fast unvermeidlich, dass es einen weiteren umfassenden Übergang in ein 128-Bit-System geben muss, und schließlich 256 und 512 bit.


Sie haben in jeder Hinsicht Recht, aber Sie haben meinen Standpunkt verpasst. Die Computerbranche ist weniger als 100 Jahre alt und wenn sie wie in den letzten Jahrzehnten weiter wächst, wäre es nicht nur töricht anzunehmen, dass wir zu diesem Zeitpunkt an unsere Grenzen gestoßen sind, sondern sie kennt die Anforderungen nicht der Zukunft. Der Adressraum ist nicht der einzige Grund, warum wir eine 64-Bit-Architektur benötigen würden. Befehlssätze können so groß werden, dass Zeiger mit einer Breite von 128 Bit effizienter und bevorzugter sind. Ein weiterer Vorteil ist der CPU-Registrierungsspeicher, der durch den Wechsel zu einer höheren Bitarchitektur bereitgestellt wird.
Andrew Katz

Ich weiß nicht, warum ich all diese Kommentare geschrieben habe - nur schlechte Laune ist meine beste Entschuldigung. Die Gegenstimme ist jedoch nicht meine.
Steve314

-1

Ja, Apps füllen nicht jedes Byte des virtuellen Speicherplatzes aus. Die Randomisierung des Adressraum-Layouts würde den größten Vorteil bringen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.