Czy aplikacje świata rzeczywistego będą kiedykolwiek potrzebować 128-bitowej płaskiej przestrzeni adresowej?


32

To trochę „jeden megabajt powinien wystarczyć każdemu”, ale ...

64-bitowa płaska przestrzeń adresowa zapewnia do 4,3 miliarda razy więcej miejsca niż 32-bitowa przestrzeń adresowa. To 17 179 869 184 GiB.

Oczywiście przejście z 8 bitów na 16 bitów było dość szybkie (oglądam rzeczy po nastolatku w latach 80., ignorując te wszystkie komputery mainframe i minis, ponieważ nie mogły one obsługiwać portu Elite). Przejście z 16 bitów na 32 bity trwało nieco dłużej, a 32 bity trwały dość długo.

Teraz mamy 64 bity, czy głupotą byłoby powiedzieć „17 179 869 184 GiB powinno wystarczyć każdemu”?

To pytanie programistów, ponieważ naprawdę mam na myśli punkt widzenia programowania. Nawet jeśli pewnego dnia komputer ma pozornie nieskończoną ilość pamięci roboczej, nie oznacza to, że aplikacje będą musiały zobaczyć pozornie nieskończoną płaską przestrzeń adresową.

Zasadniczo, czy programiści mogą odetchnąć z ulgą i powiedzieć „cóż, cokolwiek by to zrobiły liczby całkowite lub zmiennoprzecinkowe, przynajmniej nie muszę się martwić, że moje wskaźniki wzrosną?”.


11
Ile danych generuje LHC każdego dnia?
Peter Taylor,

7
8-bitowe procesory faktycznie miały 16-bitową przestrzeń adresową - stąd „szybkie przejście” :-)
Neil Butterworth,

1
Aby zapewnić pewien kontekst, 128-bitowa przestrzeń adresowa zapewnia około tyle adresów, ile jest gwiazd we obserwowalnym wszechświecie lub połowie atomów w naszej galaktyce (z dokładnością do kilku rzędów wielkości).
Rein Henrichs

5
@ Ree: Innymi słowy, za mało. Jak możemy symulować wszechświat z niewystarczającą liczbą adresów pamięci dla nawet połowy atomów w samej naszej galaktyce. amiright
quentin-starin

7
Myślę, że można na to dość łatwo odpowiedzieć; Star Trek Holodeck. Wystarczająco powiedziane.
Dunk

Odpowiedzi:


27

Nie sądzę, żebyśmy mieli maszyny z więcej niż 2 ^ 64 bajtami pamięci RAM w dającej się przewidzieć przyszłości, ale to nie wszystko, do czego przydatna jest przestrzeń adresowa.

Do niektórych celów przydatne jest mapowanie innych rzeczy w przestrzeni adresowej, których ważnym przykładem są pliki. Czy rozsądne jest, aby w dającej się przewidzieć przyszłości do komputera podłączyć więcej niż 2 ^ 64 bajty dowolnego rodzaju pamięci?

Musiałbym powiedzieć tak. Tam musi być znacznie ponad 2 ^ 64 bajtów pamięci, ponieważ to tylko około 17 milionów ludzi z dyskami twardymi o pojemności terabajta. Od kilku lat mamy bazy danych zawierające wiele petabajtów, a 2 ^ 64 to tylko około 17 tysięcy petabajtów.

Myślę, że w ciągu kilku następnych dziesięcioleci prawdopodobnie użyjemy przestrzeni adresowej> 2 ^ 64.


4
To sprawia, że ​​myślę o płaskich adresach, aby adresować dowolny bajt pamięci dostępnej w Internecie. Myślę, że słyszałem coś o systemach operacyjnych, które zapewniają płaskie adresowanie całej pamięci w systemie (nie trzeba mapować plików do pamięci - już tam są). Przekształcenie adresu IP w część adresu pamięci z pewnością będzie wymagało więcej niż 64 bitów - IPv6 już potrzebuje 128 bitów tylko na ten adres. W przestrzeni adresowej będzie ogromna ilość nadmiarowości, ale i tak może to mieć sens.
Steve314

2
Tak. Uprościłoby to życie, gdyby zamapować wszystkie dyski i pliki w przestrzeni adresowej. Strasznie dużo kodu związanego z manipulowaniem plikami na dysku byłoby znacznie prostsze, gdybyś miał wskaźnik do całego pliku. Segment: architektura offsetowa byłaby idealna do tego rodzaju rzeczy.
Loren Pechtel

Zakłada się, że każdy bajt wszystkich urządzeń pamięci masowej byłby adresowalny bezpośrednio .
vartec

2
@ steve314: Zastanawiasz się nad koncepcją sklepu jednopoziomowego , której pionierem jest IBM S / 38. Ciekawe rzeczy, ale myślę, że trudno byłoby zintegrować je z dzisiejszymi systemami.
TMN

1
@TMN: cóż, IBM i (aka i5 / OS, aka OS / 400) nadal go używa i jest prawdopodobnie jednym z „współczesnych systemów”.
Joachim Sauer

16

O ile komputery nie zaczną stosować przełomowych technologii, które jeszcze nie istnieją nawet w laboratoriach, posiadanie ponad 2 64 adresowalnej przestrzeni nie jest fizycznie możliwe przy obecnej technologii krzemowej . Technologia osiąga granice fizyczne . Limit prędkości (GHz) został osiągnięty już kilka lat temu. Limit miniaturyzacji jest również bardzo bliski. Obecnie najbardziej zaawansowana technologia produkcji to 20 nm, w laboratoriach 4 nm z tranzystorami wykonanymi z 7 atomów.

Po prostu z perspektywy czasu, jak długo zajmuje opracowanie nowej technologii: obecne komputery oparte są na tranzystorach wynalezionych w 1925 roku, a obecna technologia krzemowa pochodzi z 1954 roku.


Jeśli chodzi o technologie alternatywne:

  • obliczenia optyczne - mogą przyspieszyć obliczenia, ale nie rozwiązują problemu miniaturyzacji pamięci;
  • obliczenia kwantowe - do pełnego wykorzystania będą wymagały zupełnie nowego paradygmatu programowania, więc jeśli wskaźniki będą 64- lub 128-bitowe, to najmniej zmartwień. W przypadku tej technologii obowiązują również te same fizyczne ograniczenia dotyczące miniaturyzacji;
  • Obliczenia DNA - są to zabawki oparte na koncepcji, zaprojektowane w celu rozwiązania jednej szczególnej klasy problemów. Niemożliwe do użycia w prawdziwym życiu. Aby uzyskać obliczenia, które na normalnym komputerze PC zostałyby wykonane w ciągu jednej sekundy, potrzebny byłby zbiornik DNA wielkości Pacyfiku i kilka tysięcy lat. Ponieważ jest to naturalny, biologiczny proces, nie ma sposobu na miniaturyzację lub przyspieszenie.

4
Więc w zasadzie mówisz, że nie będzie już żadnych przełomów technologicznych? Utkniemy na zawsze w technologii krzemowej. Radykalnie nowe rzeczy, takie jak obliczenia kwantowe lub komputery DNA, pozostaną w badaniach na zawsze. naprawdę w to wierzysz?
nikie

2
@nikie: komputery kwantowe nie są magią. Nadal używają atomów. Nadal są ograniczone przez fizykę. Komputery DNA? Mówisz poważnie??? Jest to całkowicie bezużyteczne poza dowodem koncepcji.
vartec

4
@Thor: cóż, fizycznie nie jest możliwe postawienie człowieka na Księżycu w 2011 roku.
vartec

7
Dlaczego -1? Podsumowanie ma pewne solidne uzasadnienie. 2 ^ 64 to bardzo, bardzo, bardzo duża liczba. To nie jest 2 ^ 32 * 2, jest o wiele większy, a 2 ^ 128 jest całkiem szalony. Zajmie to dużo czasu for(unsigned __int128 i=0; i<2^128; i++){}. Przy obecnej technologii nie ma większego zastosowania 128-bitowych liczb całkowitych. Oprócz powrotu do niezabezpieczonej przestrzeni adresowej, ponieważ przypadkowe nadepnięcie na pamięć innych aplikacji w 128-bitowej przestrzeni adresowej byłoby prawie niemożliwe, nawet gdybyś pisał losowo na losowe adresy.
Koder

2
@nikie: Komputery kwantowe nie mają znaczenia dla tych dyskusji, ponieważ używanie obecnych modeli pamięci (które są tutaj przedmiotem) na komputerach kwantowych nie udaje się w pełni. No i tak, komputery DNA nigdy nie będą faktycznie użyteczne. To tak, jakby używać automatów komórkowych jako podstawy modelu wykonawczego.
back2dos

15

Połączony superkomputer Thorbjoern ma około 2 ^ 47 B pamięci fizycznej.
Zakładając, że prawo Moore'a dotyczy pamięci superkomputerów, stanie się 2 ^ 64 B pamięci fizycznej za zaledwie 34 lata. To jest jak „OMG, damy radę to zobaczyć !!!!”. Może. I rzeczywiście jest fascynujący. Ale równie nieistotne.

Pytanie brzmi: czy potrzebuję 128-bitowej przestrzeni adresowej, aby użyć 2 ^ 65 B pamięci fizycznej?
Odpowiedź brzmi NIE . Potrzebuję 128-bitowej przestrzeni adresowej, aby adresować 2 ^ 65 B pamięci wirtualnej z jednego procesu .

To jest kluczowy punkt pytania: „Czy aplikacje świata rzeczywistego będą kiedykolwiek potrzebować 128-bitowej płaskiej przestrzeni adresowej?”. „ Potrzeba ”, nie absolutnie, można sobie poradzić z mniejszym, zmapować przestrzeń adresową (nie płaską); ale wtedy nie byłoby „płaskiej 128-bitowej przestrzeni adresowej”.

Jako przykład załóżmy, że chciałeś przypisać atomom fizyczny adres pamięci (z dowolnego powodu, głównie w celu podania tego prostego przykładu), zacznij od zera i licz dalej (wróć do mnie, kiedy skończysz). Teraz ktoś inny chce zrobić to samo na Kepler-10c (w odległości 568 km).

Nie chcesz się starcia adres, by druga osoba przydziela wysokiej adres pamięci w płaskiej przestrzeni pamięci dostępnej, który pozwala, je, a następnego ludzie być bezpośrednio skierowana, bez mapowania pamięci. Jeśli nie będziesz tego robić lub nie będziesz w stanie poradzić sobie bez relacji jeden-do-jednego między pamięcią a jej adresem (jesteś gotów zaimplementować rzadką tablicę), możesz sobie poradzić z pamięcią o 64-bitowej pamięci lub mniej.

Ilekroć ktoś zaproponuje „ X ilość Y będzie wystarczająca ”, taka prognoza często pozostaje krótkotrwała.

Pytanie zatem brzmi: jak szybko będziemy mieli pojedyncze procesy , które zużyją 2 ^ 65 B pamięci. Mam nadzieję, że nigdy.

Dużym problemem naszych czasów jest to, że moc obliczeniowa pojedynczego procesora jest ograniczona. Istnieje granica wielkości określona przez wielkość atomów, a dla danego rozmiaru istnieje granica częstotliwości zegara, podana przez prędkość światła, prędkość, z jaką propagowane są informacje o zmianach pól magnetycznych w naszym wszechświecie.
W rzeczywistości limit został osiągnięty kilka lat temu, a my ustaliliśmy stawki taktowania poniżej tego, co poprzednio. Moc procesora nie będzie już powiększana liniowo. Wydajność jest teraz zwiększona poprzez wykonanie poza kolejnością, przewidywanie gałęzi, większe pamięci podręczne, więcej kodów operacyjnych, operacje wektorowe i inne. Nastąpiła optymalizacja architektoniczna .
Ważnym pomysłem jest równoległość. Problem z równoległością polega na tym, że nie skaluje się. Jeśli napisałeś wolny kod 20 lat temu, działał on znacznie szybciej 10 lat temu. Jeśli teraz napiszesz wolny kod, nie będzie on znacznie szybszy za 10 lat.

Procesy wykorzystujące 2 ^ 65 B pamięci są oznaką największej głupoty. To pokazuje, że nie było optymalizacji architektonicznej . Aby rozsądnie przetworzyć te dane, potrzebujesz około 10 milionów rdzeni, z których większość spędziłaby czas czekając, aż jakiś zasób stanie się dostępny, ponieważ te rdzenie, które faktycznie nabyły zasób, używają pamięci fizycznej przez sieć Ethernet na zupełnie innym komputerze. Kluczem do radzenia sobie z dużymi, złożonymi problemami jest ich rozkład na małe, proste problemy i nie budowanie coraz większych i coraz bardziej złożonych systemów. Potrzebujesz partycjonowania poziomego, gdy masz do czynienia z sh * ładunkami danych.

Ale nawet zakładając, ten obłęd powinien iść dalej, pewny, 128 bit jest wystarczająco :

  • Ziemia ma około 8,87e + 49 atomów , czyli 2 ^ 166 atomów, które mamy .
  • Załóżmy, że posiadanie jednego bitu kosztuje 2 ^ 20 atomów. Dotyczy to również całego okablowania i tworzyw sztucznych oraz związanej z tym energii. Nie możesz po prostu wrzucić tranzystorów do skrzynki i nazwać to komputerem. Więc 2 ^ 20 wydaje się raczej optymistyczne.
  • Aby użyć 128-bitowej przestrzeni adresowej, potrzebujemy 2 ^ 133 bitów, więc potrzebujemy 2 ^ 152 atomów . Zakładając równy rozkład atomów na ziemi, zobaczmy, ile skorupy musimy wziąć, aby je uzyskać:

    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
    

    Masz 130 metrów do pokonania na całej powierzchni (w tym 80% pokrytych wodą, piaskiem lub lodem). To się nie wydarzy. Nawet zakładając, że możesz go wykopać (lol) i cała ta materia nadaje się do przetworzenia na chipy, skąd weźmiesz energię?


8
Z drugiej strony potrzebny byłby bardzo duży komputer do przeprowadzenia oceny oddziaływania na środowisko dla wydobycia odkrywkowego całej planety, więc być może usprawiedliwiłby się (trochę tu autostopowiczów)
Martin Beckett

2
Jeden bit = 10 ^ 6 atomów. Cała Ziemia = 10 ^ 50 atomów. Cały wszechświat = 10 ^ 80 atomów. Notacja wykładnicza jest niesamowita! :-)
Konamiman

2
Nie chodzi o to, aby wykorzystać całą 128-bitową przestrzeń adresową, ale o wykorzystanie 64-bitowej przestrzeni adresowej. Więc w którym momencie potrzebujemy jednego dodatkowego bitu adresowania poza 64 bitami? Ile przestrzeni fizycznej (cząsteczki) potrzeba na 2 ^ 65 bajtów?
David R Tribble

1
Mówisz więc, że fizyczna 128-bitowa architektura pamięci wymaga możliwości produkcyjnych na skalę planetarną ?
Indolering

Opracowano tranzystory z pojedynczym atomem. Jak dochodzisz do 2 ^ 20 (około miliona) atomów na liczbę bitów? en.wikipedia.org/wiki/5_nanometer
JimmyJames

8

Cóż, zdecydowanie możemy użyć dużej przestrzeni adresowej.

Wyobraź to sobie:

  1. Przestrzeń adresowa nie jest ograniczona do jednego komputera. Zamiast tego adres jednoznacznie identyfikuje komórkę pamięci w uniwersalnej przestrzeni adresowej. Możesz mieć wskaźnik do komórki pamięci na dowolnym komputerze na świecie. Potrzebny będzie protokół umożliwiający odczyt ze zdalnej pamięci, ale to szczegół implementacji. :-)

  2. Pamięć to Write One, Read Many, tzn. Dane można zapisać tylko raz na adres pamięci. Aby uzyskać zmienną wartość, będziesz musiał przydzielić nowy kawałek pamięci za każdym razem, gdy się zmieni. My, programiści, zaczęliśmy dostrzegać zalety niezmienności i pamięci transakcyjnej, więc konstrukcja sprzętu, która nawet nie pozwala na nadpisywanie pamięci, może nie być tak niemożliwym pomysłem.

Połącz te dwa pomysły, a będziesz potrzebować ogromnej przestrzeni adresowej.


I dlaczego miałbyś zajmować się każdym bajtem każdego komputera na świecie? (Zakładam, że nie jesteś NSA.)
David R Tribble,

ponieważ zamierzamy zbudować światowego władcę sztucznej inteligencji, który poprowadzi nas do zbawienia!
sara

7

Im bardziej wydajne stają się komputery, tym bardziej złożone problemy wymagają współpracy.

Największy superkomputer wymieniony na top500.org to http://www.top500.org/system/10587 z około 220 TB pamięci RAM i 180000 rdzeni. Innymi słowy, z tym mogą współpracować „aplikacje z prawdziwego życia” na tej platformie.

Dzisiejsze komputery są tak potężne jak superkomputery 10–15 lat temu (nawet jeśli moc obliczeniowa może być ukryta na karcie graficznej).

Zatem współczynnik 100 w pamięci za 10-15 lat będzie oznaczał, że 64-bitowa przestrzeń adresowa będzie czynnikiem ograniczającym za około 100 lat (ponieważ log (100 milionów) / log (100) wynosi około 6), jeśli obecny trend się utrzyma.


Uwaga: matematyka niezweryfikowana, prawdopodobnie całkiem nie na miejscu.

17
to tak jak z prognoz z 1800 roku, że jeśli ruch tak bardzo wzrośnie, całe miasta zostaną pokryte górami nawozu końskiego :-P
vartec

1
220 GB to dziś niewiele. Istnieją serwery z 256 GB pamięci RAM. 180000 rdzeni? To już coś :). Wskazuję tylko na to, ponieważ głównym problemem OP jest rozmiar pamięci RAM.
Tamás Szelei

1
@vartec, pokazuje tylko, że ślepa ekstrapolacja może być nieprawidłowa. To samo tutaj.

6
Tamás miał rację: w podanym linku jest napisane „229376 GB”, co byłoby bardziej jak 220 TB. Ponadto, zakładając 4 MB pamięci podręcznej L2 na rdzeń, rdzenie 180 KB mają już 720 GB pamięci podręcznej L2;)
back2dos

5

Cały ten wątek jest dość zabawny do przeczytania, bardzo silna opinia za i przeciw ...

Tutaj coś ..

Rozumiem z pytania, że ​​był on niezależny od technologii i nie był związany czasem. W związku z tym obecny rozwój komputerów krzemowych, komputerów kwantowych lub Infacite Monkey Peddling Abacus jest w rzeczywistości nieistotny.

Obliczenia i ekstrapolacje są również dość zabawne, chociaż odpowiedź back2dos działa całkiem dobrze, aby zilustrować rozmiar tego, co reprezentuje ta liczba. więc pracujmy z tym.

Wyobraźcie sobie przyszłość, w której człowiek nie jest już ograniczony do małej planety, opracowano realistyczny środek transportu, który umożliwia transport na bardzo duże odległości, a struktury społeczne (gospodarcze, polityczne itp.) Ewoluowały, by przekroczyć pokolenia. Projekty faraońskie stały się powszechnymi miejscami. Skoncentrujmy się jednak na dwóch aspektach tej dalekosiężnej wizji przyszłości, jeśli jednak chcemy poświęcić czas na wyjaśnienie wszystkich szczegółów, jestem pewien, że można to zracjonalizować poprzez serię prawdopodobnych zmian w obecnych technologiach. Innymi słowy, prawdopodobna, choć mało prawdopodobna przyszłość ... w każdym razie ...

Pierwszy projekt o nazwie Colossus ku pamięci tego pierwszego komputera elektronicznego, ponieważ jest to pierwszy komputer planetarny. Bractwo Kolosów rzeczywiście wymyśliło sposób na schwytanie małej planetoidy i przekształcenie jej w działający komputer. Niedawno odkryte w pasie Kuypera, który jest perkulująco bogaty w topliwe izotopy, co czyni go energetycznie autonomicznym, uczyniły proces budowy całkowicie autonomicznym z sondami, robotami itp., Dzięki czemu system komputerowy sam się naprawia i buduje. W tym stanie można sobie wyobrazić, że przestrzeń adresowa 2 ^ 64 jest nieco ograniczona dla tego projektu, ponieważ chcą uzyskać ciągłą przestrzeń adresową do łatwego przenoszenia aplikacji już istniejących dla innego projektu, również w toku.

Drugi projekt to raczej eksperyment w sieci niż system fizyczny, jednak szybko wykazał, że potrzebna jest większa przestrzeń adresowa. 540 lat temu młody haker bawił się pomysłem stworzenia gigantycznej sieci botów. Internet już się rozszerzył, obejmując powstające kolonie wokół Układu Słonecznego, opierając się na znacznych postępach w dziedzinie energii syntezy jądrowej. Jego ideą było, aby małe boty były rozmieszczone w sieci, ale ładunek miał zapewnić zunifikowaną maszynę wirtualną, w której kod byłby zapisywany, zakładając, że ma on moc wszystkich botów razem. Wielkie wysiłki włożono w kompilator i wdrożenie, próbując zoptymalizować opóźnienia i wyrafinowane algorytmy zaprojektowane w celu uwzględnienia nieodłącznej niewiarygodności podstawowego medium. Specjalnie napisano język, by kierować reklamy na ten nowy „ zamiast tego nasz haker stworzył firmę parasolową i sprzedaje moc obliczeniową oferentowi, który zaoferuje najwyższą cenę. Kiedy zmarł, podarował ten botnet i wszystkie technologie fundacji. W tym momencie botnet działał już od 64 lat i już dość dawno przekroczył przestrzeń adresową 2 ^ 64, niszcząc 1000-letnie przekonanie, że nigdy nie będziemy potrzebować większej przestrzeni adresowej. Obecnie 2 ^ 128 jest normą i tym, co zostanie użyte dla Kolosa, ale są już plany rozszerzenia tego do 2 ^ 256. zamiast tego nasz haker stworzył firmę parasolową i sprzedaje moc obliczeniową oferentowi, który zaoferuje najwyższą cenę. Kiedy zmarł, podarował ten botnet i wszystkie technologie fundacji. W tym momencie botnet działał już od 64 lat i już dość dawno przekroczył przestrzeń adresową 2 ^ 64, niszcząc 1000-letnie przekonanie, że nigdy nie będziemy potrzebować większej przestrzeni adresowej. Obecnie 2 ^ 128 jest normą i tym, co zostanie użyte dla Kolosa, ale są już plany rozszerzenia tego do 2 ^ 256.

Prawdopodobnie mógłbym wymyślić bardziej quasi-prawdopodobne scenariusze, które pokazują, że tak ... jest całkiem możliwe, nie, prawie pewne, że pewnego dnia będziemy potrzebować większej przestrzeni adresowej.

To powiedziawszy, jednak nie sądzę, żebym przespał to, jeśli twoja aplikacja wymaga pewnej przestrzeni adresowej do poprawnego działania, najprawdopodobniej będzie żyła na maszynie wirtualnej, która daje wszystko, czego potrzebuje ...

Tak więc ... krótka odpowiedź ...

TAK, najprawdopodobniej

ale

Dlaczego nie poradzić sobie z tym, gdy pojawia się problem ... Osobiście nigdy nie zakładam w swoich programach, więc nigdy nie mam niespodzianek.


2
Jestem rozbawiony poziomem szczegółowości w twoim fikcyjnym przykładzie. Czy gdzieś piszesz krótką historię?
Christopher Bibbs,

2

Lokalizacje adresów mają logarytmiczny koszt w odniesieniu do szerokości adresu, dzięki czemu możemy rozważyć górne granice na podstawie danych parametrów:

64-bit dla cząstek piasku na ziemi = 7,5x10 ^ 18
128-bit dla gwiazd w obserwowalnym wszechświecie = 10 ^ 24
256-bit dla cząstek na ziemi = 10 ^ 50
512-bit dla cząstek w obserwowalnym wszechświecie = 10 ^ 82
1024 -bit dla długości sześciennych desek w obserwowalnym wszechświecie = 4,65 × 10 ^ 185

  • Sparsity wprowadzono mieszający, bezpieczeństwo i indeksowania

6,6106 ... × 10 ^ 122-bit dla możliwych konfiguracji cząstek w obserwowalnym wszechświecie = 10 ^ (10 ^ 122)

Możemy przyjąć możliwe konfiguracje za górną granicę największego fizycznie możliwego do zbudowania adresu pamięci.


Aby obliczyć szerokość potrzebną dla n adresów, wpisz to w wolfram alpha: 2 ^ ceil (log2 (log2 ( n )))
Timothy Swan

1
Masz rację, że przydatne mogą być wysoce redundantne przestrzenie adresowe, w których większość adresów w ogóle nie odnosi się do niczego, jak w twoim haszowaniu itp., Ale myślę, że ktoś nawet sugerował kodowanie adresów URL w adresach wirtualnych maszyny (nie tylko skrótów), więc tak naprawdę nie ma górnej granicy tego, jak marnotrawny / zbędny może być jakiś przyszły wirtualny schemat adresowania. Nie oznacza to, że kodowanie danych w adresach (w przeciwieństwie do wyszukiwania ich w potencjalnie chronionych tabelach, gdy to konieczne) brzmi jak dobry pomysł.
Steve314,

0

Cóż, myślę, że przez kilka lat prawdopodobnie odetchniesz z ulgą. Patrząc na szybkość innowacji w sprzęcie, można zauważyć, że w ciągu ostatnich kilku lat nie nastąpił znaczący przełom. Procesory z częstotliwościami 2.x GHz istnieją już od jakiegoś czasu, a każdy wzrost mocy obliczeniowej w dzisiejszych czasach wynika z upakowania większej liczby rdzeni na chipie. Pojemność napędu wciąż rośnie, ale nie w takim samym tempie jak 10 lat temu.

Myślę, że nasza obecna technologia zbliża się do granic fizyki.

Co to oznacza dla przyszłości? Myślę, że w celu uzyskania nowych skoków kwantowych w przetwarzaniu informacji konieczne będzie wykorzystanie całkowicie nowych technologii. Technologie te prawdopodobnie wykorzystają „oprogramowanie”, choć być może w kontekście zupełnie innym niż to, czym jest dzisiaj. A kto wie, jakie wymagania dotyczące przestrzeni adresowej mają lub mogą zapewnić? A może przestrzeń adresowa jest nawet sensowną koncepcją w tej technologii?

Więc jeszcze nie przechodź na emeryturę.


prędkość procesora jest nieco inną koncepcją niż wielkość pamięci.

Nie jestem pewien, czy można wyciągnąć wniosek, że ponieważ prędkość procesorów nie wzrosła znacznie w ciągu ostatnich kilku lat, ma to coś wspólnego z zbliżaniem się do granic fizyki. Faktem jest, że procesory wielordzeniowe były w modzie w ciągu ostatnich kilku lat i być może producenci procesorów inwestują swoje pieniądze w to, jak najlepiej wykorzystać wszystkie te procesory razem, zamiast wydawać pieniądze na ulepszenia taktowania. Nawet duże firmy mają limit swoich dolarów na badania i rozwój. Napęd wciąż rośnie dość szybko IMO. Właśnie zobaczyłem dysk 3 TB za 140 USD.
Dunk

0

Tak, będzie. (Gry? Rzeczy związane ze sztuczną inteligencją?)

Bardziej odpowiednim pytaniem może być jednak to, czy będzie się liczyć do typowego programisty. Pomyśl o tym, jak Ruby automatycznie konwertuje liczby z FixNum na BigNum iz powrotem w razie potrzeby. Byłbym zaskoczony, gdyby inne języki (przynajmniej te dynamiczne) ostatecznie nie zrobiły tego samego.


1
o tak. o tak. Chcę zagrać w grę, która jest tak fajna, że ​​wymaga 128-bitowej arytmetyki !!!!!!!!!
Chani

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

0

Przechowywanie takiej ilości informacji to jedno, a robienie z nimi czegoś pożytecznego to drugie. Z mojego punktu widzenia nie widzę potrzeby korzystania z tej pamięci, chyba że mamy moc obliczeniową do jej wykorzystania. Być może buforowanie ogromnych baz danych to jedno, ale myślę, że najpierw potrzebujemy procesorów.


0

Czy aplikacje będą kiedykolwiek potrzebować tyle pamięci? Całkiem możliwe. Aplikacje takie jak prognozy pogody, ogólnie symulacje fizyczne lub kryptografia prawdopodobnie zawsze skorzystają z większej pamięci i większej mocy obliczeniowej. A kto wie, jaka będzie aplikacja dla zabójców za 50-100 lat? Wyświetlacze holograficzne? Tęczowe tabele dla każdego możliwego hasła składającego się z 100 znaków?

Czy fizycznie możliwe jest reprezentowanie tak dużej ilości pamięci? Zdecydowanie możliwe. Na przykład komputer kwantowy o 100 kubitach może reprezentować tę samą liczbę stanów, co klasyczny komputer 2–100 bitowy. O wiele więcej niż 2 ^ 67 bitów przestrzeni adresowej, którą mamy teraz. (Wiem, 100-kubitowy komputer kwantowy brzmi jak science fiction. Nie jestem przekonany, czy kiedykolwiek będzie można go zbudować. Z drugiej strony to samo można by prawdopodobnie powiedzieć o każdej technologii, która zostanie użyta 50 lub za 100 lat.)

Ale poważnie wątpię, że do tego czasu głównym zmartwieniem będą „płaskie przestrzenie adresowe”. Być może do tego czasu opracujemy algorytmy kwantowe, w których koncepcja „przestrzeni adresowej” nie ma większego sensu. Nawet jeśli komputery pozostaną „klasyczne”, prawdopodobnie będziemy mieli do czynienia z przerażającą liczbą jednostek przetwarzających z dołączoną niejednolitą pamięcią.


„Komputer kwantowy o 100 kubitach może reprezentować tę samą liczbę stanów, co klasyczny komputer 2–100 bitowy”. Nie tak naprawdę działają kubity. Komputer 100-kubitowy może reprezentować tę samą liczbę stanów, co komputer 100-bitowy. Różnica polega na tym, że komputer o kubitowości 100 może reprezentować superpozycję wszystkich tych stanów w jednym momencie. Inną rzeczą kubitów jest to, że kiedy je przeczytasz, otrzymasz tylko jedną odpowiedź i będzie ona całkowicie losowa.
JimmyJames

@JimmyJames: Dokładnie. Więc jeśli chcesz reprezentować te same informacje, które komputer kwantowy o 100 kubitach ma w jednym momencie w klasycznym komputerze (np. W celu jego symulacji), potrzebujesz znacznie więcej niż 100 bitów. To co powiedziałem. (A zresztą miał na myśli.)
nikie

Znowu nie tak to działa. 2-bitowy rejestr może reprezentować 4 wartości. Rejestr 2-kubitowy może reprezentować 4 wartości. Oba są w stanie reprezentować ten sam zakres wartości. Rejestr kubitów może reprezentować wszystkie 4 jednocześnie. To jest różnica.
JimmyJames

@JimmyJames: To tak, jakby powiedzieć, że 2-bitowy „klasyczny” rejestr może reprezentować 2 wartości, ale jednocześnie. Pomyśl o tym w ten sposób: Jeśli chcesz symulować komputer kwantowy na komputerze klasycznym, ile bitów potrzebujesz do przechowywania pełnego stanu 2-kubitowego komputera kwantowego w dowolnym momencie t ?
nikie

Rozumiem, ale ja, ale brakuje ci tego, że nie możesz pobrać określonej wartości z kubitów. To znaczy, biorąc pod uwagę kubit w superpozycji, gdy zostanie odczytany, otrzymasz 1 lub 0, ale nie możesz pobrać obu wartości z powodu dekoherencji: en.wikipedia.org/wiki/Quantum_decoherence
JimmyJames

0

Co by się stało, gdyby każda lokalizacja pamięci miała globalnie unikalny adres?

  • Protokoły sieciowe mogą stać się o wiele prostsze.
  • Rozproszone obiekty byłyby interesujące - wszystkie obiekty mogłyby istnieć w tej samej przestrzeni pamięci.
  • Może zmienilibyśmy pamięć na „napisz raz” i uwzględnilibyśmy czas jako część struktury adresu. Możesz czytać obiekty, które istniały w przeszłości.
  • Cała pamięć dodatkowa byłaby adresowalna bezpośrednio. Żegnaj FILE, fopen()itp
  • Możesz zostać aresztowany za pisanie pod złym wskaźnikiem i za podrywanie za czyjąś maszynę.
  • Studenci musieliby zostać poddani kontroli przesiewowej przed pierwszą klasą CS: bardzo niewiele osób jest w stanie wytrzymać wir Total Perspective .

0

Po prostu „głośno myślę” tutaj, ale przyszło mi do głowy, że można zrobić ciekawe rzeczy semantyczne z pozostałymi 64 bitami na, powiedzmy, 128-bitowym komputerze. Por. sposób, w jaki działa IP.

Jestem pewien, że ludzie mogą wymyślić zabawne zastosowania dla czegoś takiego. :) Czy ktoś wie, do czego PS3 używa swoich 128-bitowych adresów? Na pewno nie zmarnowałbyś całej dodatkowej pamięci (a mówię tylko o pamięci dla rzeczywistych adresów, a nie o tym, na co wskazują te adresy). Adresy jako dane. Możesz nawet zakodować gałąź w samym adresie ... tzn. 0x [ifAddress] [elseAddress] Systemy wielordzeniowe również mogą skorzystać z tego rodzaju segmentacji. I i...


0

Czy jest jakiś powód, aby wyjść ponad architekturę 64-bitową? (18446,744,073,709,551,615 bajtów pamięci adresowalnej)

Stosując standard IEEE 1541-2002 dotyczący stosowania prefiksów dla binarnych wielokrotności jednostek miar związanych z elektroniką cyfrową i obliczeniami, widzimy, że:

1 bajt = 8 bitów, 1 kilobajt = 1024 bajtów, 1 megabajt = 1024 KB, 1 gigabajt = 1024 MB, 1 terabajt = 1024 GB, 1 petabajt = 1024 TB, 1 eksabajt = 1024 PB

I tak dalej w przypadku Zettabyte, Yottabyte, Xenottabyte, Shilentnobyte, Domegemegrottebyte, Icosebyte i Monoicosebyte.

Szacuje się, że całkowita pamięć dyskowa Ziemi będzie wynosić około 2500 eksabajtów na 2016 r.

64-bitowy rejestr ma bezpośredni dostęp do 15 eksabajtów pamięci. Do rejestru 128-bitowego można uzyskać bezpośredni dostęp do 3,40282367 × 10 ^ 35 Zettabajtów. Lub 295,147,905,247,928,000 Monoicosebytes.

Widzimy więc, że 128-bitowy rejestr byłby w dobrej sytuacji, aby uzyskać dostęp do całej pamięci Ziemi, wszystkiego, co kiedykolwiek wysłano w Internecie, każdego słowa, które kiedykolwiek powiedziano lub napisano, każdego filmu i wielu innych rzeczy, przez dłuższy czas .

Tak więc odpowiedź brzmi: tak , w oczekiwaniu na strukturę, która może wskazywać na każdą cyfrową rzecz, która kiedykolwiek była lub będzie .


0

Najlepsze oszacowanie, jakie mogę znaleźć dla liczby neuronów w przeciętnym ludzkim mózgu, wynosi około 86 miliardów. Ogólnie nie możemy bezpośrednio porównać pamięci RAM z neuronami, ale w sieci neuronowej można to zrobić. Zajmuje wiele adresów reprezentujących stan neuronu lub synapsy. Więc wyrzucę zgadywankę i powiem, że patrzymy na coś w rodzaju bilionów adresów, aby stworzyć sieć neuronową, która byłaby porównywalna z ludzkim mózgiem. Więc jeśli można to zrobić, nie rozumiem, dlaczego nie poszedłby o wiele dalej. Rodzaje problemów, które taka sieć mogłaby rozważyć, wykraczałyby poza nasze możliwości zrozumienia, a także dlaczego musiałyby być tak duże, aby to zrobić.


0

To przestrzeń adresowa. Powiedzmy, że zmieniamy standard C, aby realloc nie mógł zmienić używanego wskaźnika. Mogę dziś przydzielić 2 ^ 33 bloków pamięci (wymagałoby 192 GB pamięci RAM na moim komputerze Mac, 8 miliardów razy 8-bajtowy wskaźnik i 16-bajtowej przydzielonej przestrzeni, więc nie mogę teraz tego zrobić, ale mogę kupić komputer Mac, który może to zrobić bez zaciągania nowej hipoteki).

I mogę ponownie przydzielić dowolny z tych wskaźników, aby pomieścić 2 ^ 33 bajty. Jednak niewiele w tym samym czasie :-) Jeśli realloc nie pozwala na przesuwanie wskaźników, a dozwolone są 2 ^ 33 bajty, oryginalne wskaźniki muszą znajdować się w odległości 2 ^ 33 bajtów, co oznacza, że ​​potrzebne są 2 ^ 66 bajtów pamięci.


-1

Jasne, nie widzę powodu, dla którego taka ilość miejsca nie byłaby potrzebna w przyszłości. Jeśli weźmiesz pod uwagę tworzenie gier, nie ma ograniczeń co do tego, jak realistyczna lub złożona może być gra, prawda? (Szczegół grafiki / liczby zastosowanych wielokątów i algorytmów definiujących interakcję i zachowanie obiektów)?

Kto wie, za 10 lat będziemy mogli grać w gry o pojemności 10 TB z minimalnymi wymaganiami pamięci RAM 12 GB i 8-rdzeniowym procesorem. : P


Nie ma ograniczeń co do szczegółów. Ale istnieje granica dla krzemu.
Billy ONeal,

-1

20 lat temu na świecie żyło o 2 miliardy ludzi mniej, a większość systemów komputerowych miała pamięć adresowalną, którą można było zmierzyć w kilobajtach. Obecnie populacja świata rośnie w tym samym tempie, a liczba użytkowników komputerów rośnie wykładniczo każdego roku.

Prawdą jest, że bardzo niewiele systemów potrzebuje pełnej 64-bajtowej przestrzeni adresowej. Jednak niektóre systemy przechowują terabajty informacji każdego dnia. Było to możliwe dzięki wzrostowi liczby użytkowników komputerów i prędkości Internetu. Możemy już obsługiwać prędkości Internetu 10 GB / s już po 23 latach od wynalezienia HTTP. Przy takim tempie myślę, że głupotą byłoby nie oczekiwać prędkości Internetu 1 TB / s lub wyższej za 50 lat. Kiedy wszyscy możemy przenieść dane tak szybko, będzie ich więcej, a więcej osób będzie je przechowywać i prawie nieuniknione będzie kolejne szerokie przejście do systemu 128-bitowego, a ostatecznie 256 i 512 bitów.


Masz rację pod każdym względem, jednak przegapiłeś mój punkt. Przemysł komputerowy ma mniej niż 100 lat i jeśli nadal będzie się rozwijał tak, jak to miało miejsce w ostatnich dziesięcioleciach, głupotą byłoby nie tylko zakładać, że w tym momencie przekroczyliśmy nasze granice, ale ignoruje on wymagania przyszłości. Przestrzeń adresowa nie jest jedynym powodem, dla którego potrzebujemy architektury 64-bitowej. Zestawy instrukcji mogą rosnąć tak duże, że wskaźniki o szerokości 128 bitów są bardziej wydajne i preferowane. Kolejną korzyścią jest przestrzeń rejestru procesora, która przełącza się na architekturę wyższego poziomu.
Andrew Katz

Nie wiem, dlaczego napisałem te wszystkie komentarze - po prostu zły nastrój jest moją najlepszą wymówką. Głos nie jest jednak mój.
Steve314

-1

tak, aplikacje nie wypełniają każdego bajtu przestrzeni wirtualnej. Największą korzyścią byłaby randomizacja układu przestrzeni adresowej.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.