Czy uruchomić komputer bez pamięci RAM? [duplikować]

14

Czytałem o czasie pobierania procesora , gdzie stwierdziłem, że procesory potrzebują dużo mniej czasu na dostęp do danych z pamięci RAM w porównaniu z dostępem do dysku twardego, i że pamięć RAM jest dostępna do przechowywania informacji i danych wykonującego programu.

Potem zastanawiałem się, co się stanie, gdy użyjemy tylko dysku twardego, ale bez pamięci RAM?

akash ujjwal
źródło
1
Podobne: superuser.com/q/805340/334004
Cornelius
1
@Cornelius dzięki za odpowiedź, sprawdzę :)
akash ujjwal
12
To, co się dzieje, to kilka sygnałów dźwiękowych, a następnie ekran staje się pusty.
arch-abit
1
Moje pytanie brzmi: czy mogę przynajmniej przetestować działanie karty graficznej? Czy wideo lub monitor będą działać minimalnie?
marszałkowaty statek

Odpowiedzi:

27

W pewnym momencie pojawia się pytanie, co nawet liczy się jako „RAM”. Istnieje wiele procesorów i mikrokontrolerów, które mają mnóstwo wbudowanej pamięci do uruchamiania małych systemów operacyjnych bez oddzielnych układów RAM. W rzeczywistości jest to stosunkowo powszechne w świecie systemów wbudowanych. Tak więc, jeśli chodzi ci tylko o to, że nie masz żadnych oddzielnych układów RAM, możesz to zrobić z wieloma obecnymi układami, zwłaszcza tymi zaprojektowanymi dla świata osadzonego. Zrobiłem to sam w pracy. Ponieważ jednak jedyną prawdziwą różnicą między adresowalną pamięcią wewnętrzną i oddzielnymi układami pamięci RAM jest tylko lokalizacja (i, oczywiście, opóźnienie), całkowicie rozsądne jest uznanie pamięci na chipie za pamięć RAM. Jeśli liczysz to jako pamięć RAM, liczba obecnych,

Jeśli masz na myśli normalny komputer, nie możesz go uruchomić bez podłączonych oddzielnych pamięci RAM, ale tylko dlatego, że BIOS nie jest zaprojektowany, aby uruchamiać się bez zainstalowanej pamięci RAM (to z kolei dlatego, że wszystkie nowoczesne systemy operacyjne na PC wymagają pamięci RAM do uruchomienia, zwłaszcza, że ​​maszyny x86 zazwyczaj nie pozwalają bezpośrednio adresować pamięci na chipie; jest używana wyłącznie jako pamięć podręczna).

Wreszcie, jak powiedział Zeiss, nie ma teoretycznego powodu, dla którego nie można zaprojektować komputera do pracy bez pamięci RAM, oprócz kilku rejestrów. Pamięć RAM istnieje wyłącznie dlatego, że jest tańsza niż pamięć na chipie i znacznie szybsza niż dyski. Współczesne komputery mają hierarchię pamięci, od dużych, ale powolnych po bardzo szybkie, ale małe. Normalna hierarchia wygląda mniej więcej tak:

  • Rejestry - bardzo szybkie (mogą być obsługiwane bezpośrednio przez instrukcje procesora, zazwyczaj bez dodatkowych opóźnień), ale zwykle bardzo małe (64-bitowe rdzenie procesorów x86 mają na przykład tylko 16 rejestrów ogólnego przeznaczenia, z których każdy może przechowywać pojedynczy 64-bitowy numer.) Rozmiary rejestrów są na ogół małe, ponieważ rejestry są bardzo drogie na bajt.
  • Pamięć podręczna procesora - nadal bardzo szybka (często opóźnienie 1–2 cykli) i znacznie większa niż rejestry, ale wciąż znacznie mniejsza (i znacznie szybsza) niż normalna pamięć DRAM. Pamięć podręczna procesora jest również znacznie droższa na bajt niż pamięć DRAM, dlatego zwykle jest znacznie mniejsza. Ponadto wiele procesorów faktycznie ma hierarchie nawet w pamięci podręcznej. Zwykle mają mniejsze, szybsze pamięci podręczne (L1 i L2) oprócz większych i wolniejszych pamięci podręcznych (L3.)
  • DRAM (co większość ludzi uważa za „RAM”) - Znacznie wolniej niż pamięć podręczna (opóźnienie dostępu to zwykle dziesiątki do setek cykli zegara), ale znacznie tańsze na bajt, a zatem zwykle znacznie większe niż pamięć podręczna. Pamięć DRAM wciąż jest jednak wiele razy szybsza niż dostęp do dysku (zwykle setki do tysięcy razy szybszy).
  • Dyski - znowu są one znacznie wolniejsze niż DRAM, ale generalnie znacznie tańsze na bajt, a zatem znacznie większe. Ponadto dyski są zwykle nieulotne, co oznacza, że ​​umożliwiają zapisywanie danych nawet po zakończeniu procesu (a także po ponownym uruchomieniu komputera).

Zauważ, że cały powód hierarchii pamięci to po prostu ekonomia. Nie ma teoretycznego powodu (przynajmniej w dziedzinie informatyki), dlaczego nie mogliśmy mieć terabajtu nieulotnych rejestrów na matrycy procesora. Problem polega na tym, że jego budowa byłaby niesamowicie trudna i droga. Posiadanie hierarchii, od niewielkich ilości bardzo drogiej pamięci po duże ilości taniej pamięci, pozwala nam utrzymać duże prędkości przy rozsądnych kosztach.

reirab
źródło
teraz wreszcie dostaję to, czego potrzebuję. Odpowiedziałeś Dokładnie, co aspektuję. Dziękuję bardzo :)
akash ujjwal
W rzeczywistości powodem, dla którego komputery nie uruchamiają się bez pamięci RAM, jest BIOS, jeśli kod BIOS nie jest w stanie znaleźć adresu relokacji w pamięci RAM, zostaje przerwany. Wszystko, co usłyszysz, to brzęczenie zasilacza, hałas wentylatorów i może wirujące dyski - ale komputer jest w zasadzie martwy. Procesor nigdy nie ma szansy, aby wszystko działało. Tak, więc pamięć RAM jest bardzo ważna.
arch-abit
@ arch-abit tak, to prawda, ale czy pamięć RAM jest niezbędna do uruchomienia komputera?
akash ujjwal
2
Oprócz tego, co powiedział @reirab, możliwe jest uruchomienie komputera bez pamięci DRAM w sensie wykonywania instrukcji - jest to tryb, w którym system działa przed zainicjowaniem kontrolera DRAM (odbywa się to przez BIOS / EFI / Coreboot itp.). Jednak jest mało prawdopodobne, abyś był w stanie zrobić coś pożytecznego, ponieważ większość komponentów i tak prawdopodobnie używa DMA .
Maciej Piechotka
1
32-bitowe rejestry procesorów x86 mają tylko 32 bity, a nie 64, a 64-bitowe procesory x86 mają 32, a nie 8.
psusi
23

Byłoby teoretycznie możliwe zaprojektowanie komputera do pracy z bardzo niewiele (o wartości kilku rejestry) lub brak pamięci RAM (spojrzeć na definicję maszynie Turinga - który w rzeczywistości może być skonstruowany w odpowiednio dużej / szybkiego wdrożenia Conwaya Życia symulacja).

Powodem, dla którego wszystkie komputery w świecie rzeczywistym korzystają z pamięci RAM, jest po pierwsze: pamięć rdzeniowa (prototyp pamięci RAM, tylko częściowo nieulotna) znacznie wyprzedza pamięć masową, taką jak bęben magnetyczny lub dysk (chociaż pojawiła się po kartach perforowanych i taśmie papierowej - pierwsza z nich pochodzi w prymitywnej formie z 1801 r. (tak, początek XIX wieku; krosna żakardowe używały kart dziurkowanych, aby automatycznie wyplatać wzór koloru o dowolnej złożoności dziesięcioleci, zanim nawet silniki różnicowe Babbage'a lub tabulatory Holleritha); po drugie , Pamięć RAM (podobnie jak pamięć rdzenia), ponieważ jest elektroniczna, jest znacznie szybsza niż jakiekolwiek urządzenie, które polega na fizycznym ruchu nośnika pamięci w celu przedstawienia danych mechanizmowi odczytu / zapisu.

System lub złożoność podobna do współczesnego komputera z systemem Windows lub Linux działającego bez pamięci RAM (podobnie jak w prawdziwej maszynie Turinga) zajęłoby kilka dni, a aktualizacja godzin graficznego interfejsu graficznego przy współczesnych rozdzielczościach zajęłaby kilka godzin. Nawet tekstowy system operacyjny porównywalny do CP / M lub wczesnych wersji DOS zajmie bardzo dużo czasu, zanim dotrze do początkowego wiersza polecenia.

Zeiss Ikon
źródło
4
Myślę, że możesz rozważyć niektóre procesory DSP (cyfrowe procesory sygnałowe) i podobne mikroprocesory jako komputery działające bez pamięci RAM, ponieważ zasadniczo wykonują obliczenia na ciągłym strumieniu danych.
jamesqf
1
Myślę, że twoje oceny powolności maszyny „tylko z pamięcią wirtualną” są nieco przesadzone, ale w zasadzie słuszne.
leftaroundabout
1
Ponieważ dysk jest> 1 000 000 wolniejszy niż pamięć RAM, myślę, że szacunek jest, jeśli w ogóle, niski.
Dancrumb
2
@Dancrumb Nie jestem pewien, skąd pochodził Twój milion (razy?). DDR3 SDRAM może dać ci rzędu 10 GB / s , podczas gdy nawet obrotowy HDD 7200 obr./min zapewni ci około 100 MB / s (0,1 GB / s) sekwencyjnie. To współczynnik 100; z pewnością znaczące, ale dalekie od 1 000 000 razy. Tam, gdzie pamięć RAM znacznie przewyższa wydajność dysku twardego, opóźnienie wyszukiwania jest duże, ale można to znacznie złagodzić za pomocą dysku SSD. DDR3 ma opóźnienie w regionie 10 ns, a szybki dysk SSD może mieć opóźnienie w regionie 10 000 ns (100 000 IOPS), dla współczynnika 1000; wciąż daleko od 1 000 000.
CVn
1
@PeterCordes Edytowane, więc nie wydaje się, że twierdzę, że Win / Linux może działać bez pamięci RAM.
Zeiss Ikon,
10

Możesz, ponieważ kiedy uruchamia się procesor x86, pamięć podręczna L2 jest początkowo pamięcią SRAM, zanim zostanie użyta jako pamięć podręczna. Możesz więc pisać własne biosy, aby nie inicjalizować pamięci RAM i używać tylko niewielkiej ilości pamięci SRAM w procesorze jako pamięci RAM, a nie pamięci podręcznej L2 / L3.

Wystarczy przeczytać wytyczne BIOS-u od producentów procesorów.

Avlin
źródło
4
+1 za stwierdzenie tego. W rzeczywistości każdy system x86 (komputer) uruchamia się „bez użycia pamięci RAM”. Kod Bios najpierw wykrywa, czy jest jakiś taran, i wydaje sygnał dźwiękowy, jeśli nie ma. Ten kod może działać bez pamięci RAM;) (ofc niewiele można zrobić bez pamięci RAM, na pewno rejestry nie byłyby wystarczające do obsługi dysku twardego i używania go jako „pamięci RAM”)
Sebi
10

WSZYSTKIE nowoczesne, standardowe, uniwersalne procesory zasadniczo działają w następujący sposób:

  • CPU utrzymuje rejestr, który wskazuje w swojej przestrzeni adresowej na następną instrukcję
  • Procesor pobiera wszystko, co znajduje się w tej przestrzeni adresowej i rejestruje przyrosty
  • Jeśli instrukcja wymaga dodatkowych informacji, takich jak adres docelowy lub inny argument, jest również pobierana
  • CPU wykonuje instrukcje
  • Jeśli instrukcja jest skokiem, wywołaniem, powrotem, powrotem z przerwania lub rozgałęzieniem, może zmodyfikować rejestr wskazujący następną instrukcję.
  • Powtarzać

Procesor pobiera wszystko, co znajduje się w tej przestrzeni adresowej i rejestruje przyrosty

Co może „żyć” w przestrzeni adresowej?

  • Nic (może zwrócić zera, losowe dane lub spowodować zablokowanie procesora)
  • RAM (RAM płyty głównej, RAM z urządzenia PCI, takiego jak karta graficzna itp.)
  • ROM
  • Rejestry urządzenia we / wy (obejmuje to „wewnętrzne urządzenia we / wy”, takie jak lokalny APIC procesora)
  • Nowoczesne procesory pozwalają na „buforowanie jako RAM”, więc część pamięci podręcznej procesorów może pojawić się w przestrzeni adresowej

Uwaga: „dysku twardego” nie ma na tej liście. Dysk twardy nie jest bezpośrednio podłączony do procesora. Dane przychodzą i wychodzą z dysku twardego za pośrednictwem urządzenia we / wy (adaptera hosta SATA) podłączonego do procesora.

Urządzenie I / O używa DMA do ładowania / zapisywania danych na / z dysku twardego. Oznacza to, że urządzenie we / wy bezpośrednio odczytuje / zapisuje samą pamięć RAM - bez interwencji procesora - a także zależy od obecności pamięci RAM. Ale jeśli dane nie zostały załadowane do pamięci RAM przez urządzenie we / wy, procesor nie ma szans na ich zobaczenie.

Dlatego nie możesz mieć instrukcji pobierania CPU bezpośrednio z dysku twardego.


To, co dzieje się podczas błędu strony, to:

  • Procesor próbuje uzyskać dostęp do strony pamięci oznaczonej jako zamieniona w lokalnych tabelach stron procesora (które są zawsze obecne w pamięci RAM).
  • Ten dostęp powoduje wyjątek błędu strony w CPU.
  • Procesor, teraz w trybie jądra, patrzy na stronę, do której inny proces próbował uzyskać dostęp.
  • Jądro zauważa, że ​​proces użytkownika próbuje uzyskać dostęp do zamienionej strony i wywołuje normalny proces we / wy, aby zamienić tę stronę z powrotem z dysku. Jest to ten sam proces, który zostałby zastosowany podczas ładowania / zapisywania innych danych z dysku. Nie inaczej jest tylko dlatego, że procesor stronicuje w zamienionej pamięci.
  • Procesor następnie kontroluje ręce z powrotem do przerwanego procesu, który trwa tak, jakby nic się nie wydarzyło.

Tak więc procesor potrzebujący pobrać dane z dysku, ponieważ pamięć jest zamieniona, nie jest inaczej.

LawrenceC
źródło
2
+1za bycie tutaj jedyną odpowiedzią na prawdziwy problem, nie tylko co się stanie , ale także dlaczego .
@ultrasawblade dlaczego nie procesor ma szansę zobaczyć dane, nawet jeśli procesor żąda strony (informacji), a jeśli nie jest dostępny w pamięci RAM (pamięć podstawowa), wtedy występuje błąd strony, następnie żądanie procesora do dysku twardego dla te pożądane dane. Oznacza to, że procesor musi w końcu przejść na dysk twardy w celu uzyskania wymaganych informacji.
akash ujjwal
2
Zobacz zmiany. Przywoływanie jądra w pamięci zamiennej nie różni się od ładowania programu lub programu do odczytu / zapisu na dysk. Dzieje się tak po prostu w jądrze i za kulisami procesu użytkownika, ale nie za kulisami jądra.
LawrenceC,
Pamiętaj, że przynajmniej x86 może używać pamięci podręcznej jako pamięci RAM z trybem braku zapełnienia, ale wtedy jesteś w tej samej łodzi, co mikrokontrolery, które są wyposażone we wbudowaną pamięć RAM. Uruchamianie procesora tylko z pamięcią ROM i bez zapisywalnej przestrzeni adresowej jest prawdopodobne (jeśli cały twój stan mieści się w rejestrach, i pamiętaj, że najnowsze procesory x86 mają trzydzieści dwa rejestry wektorowe 512M ZMM ...) Ale zgodził się, że nie jest możliwe bez czytelna przestrzeń adresowa dla kodu (oraz GDT / LDT / IDT i innych tabel dla x86).
Peter Cordes,
7

Komputer osobisty wymaga pamięci RAM do uruchomienia. Każda aplikacja uruchomiona z dysku twardego zostanie najpierw skopiowana do pamięci RAM przed uruchomieniem.

Więc jeśli nie masz pamięci RAM w komputerze, komputer się nie uruchomi, prawdopodobnie wyda kilka sygnałów ostrzegawczych, aby poinformować, że nie ma zainstalowanej pamięci RAM.

LPChip
źródło
5
Potem pukasz w czoło i mówisz: „Nie powinienem był próbować instalować tych RAM-RAMów w wyłożonym wykładziną środowisku o wilgotności mniejszej niż 10%, 27 grudnia na półkuli północnej?” Tak?
arch-abit
@LPChip dlaczego jest przechowywany w pamięci RAM, co jest jego głównym celem. Aby przyspieszyć działanie systemu lub skrócić czas dostępu, wbudowana pamięć podręczna pozwala to zrobić. Czy mam rację, czy źle?
akash ujjwal
1
Pamięć RAM to szybka pamięć, dostęp do dysku jest wolny, pamięć nieulotna, a pamięć podręczna procesora jest dostępna z innych powodów.
Fiasco Labs,
1
@FiascoLabs W rzeczywistości pamięć podręczna procesora istnieje z tego samego powodu, co pamięć RAM: to naprawdę szybka pamięć. Jest znacznie szybszy niż pamięć RAM, ale droższy na bajt.
reirab
A komputer nie będzie działał na nim autonomicznie, stąd „inne powody”
Fiasco Labs
5

Komputer się nie uruchomi. Pamięć RAM jest istotną częścią udanego postu z płyty głównej. Gdy pamięć RAM nie jest obecna lub jest uszkodzona, wiele płyt głównych zwykle podaje kody dźwiękowe wskazujące, gdzie szukać rozwiązania problemu.

Carl B.
źródło
Tak, to były małe metalowe pierścienie, które miały zostać namagnesowane / rozmagnesowane. en.wikipedia.org/wiki/Magnetic-core_memory (W odpowiedzi na komentarz na temat starych komputerów lampowych, które zostały usunięte)
Fiasco Labs
2

W rzeczywistości można w co najmniej dwóch przypadkach uruchomić komputer bez pamięci RAM

  1. Pierwsze stare mechaniczne „komputery” (konstrukcja Konrada Zuse'a i komputer Charlesa Babbage'a były urządzeniami mechanicznymi bez pamięci RAM, nadal są nazywane komputerami)

  2. Nowoczesny komputer bez pamięci RAM i tylko procesor (układ) z rejestrami . W większości przypadków masz SRAM (pamięć podręczną) na procesorze, ale najszybsza pamięć komputera nazywa się rejestrami znajdującymi się na chipie, a technicznie rejestry na chipie nie są RAM.

Niklas
źródło
1
Dzięki za tę odpowiedź - po raz pierwszy przypominam sobie o Zuse i jego wczesnych komputerach elektromechanicznych (chociaż najwcześniejsze odczyty, które przypominam o komputerach, zawsze mówiły o „przekaźnikach” jako o jednostkach przełączających, wszystkie inne wczesne komputery wydają się używać lamp próżniowych ).
Zeiss Ikon,
1

Po prostu się nie uruchomi. Płyta główna najprawdopodobniej wyda dźwięk w nietypowy sposób i wyłączy się. Jeśli nie masz wystarczającej ilości pamięci RAM, nawet 128 MB dla systemu Windows XP, program odmówi instalacji (faktycznie próbował tego na starym komputerze; jeden z układów nie został poprawnie umieszczony). Tak więc przy obecnych ustawieniach jest to niemożliwe. Nawet jeśli można wyłączyć sprawdzanie płyty głównej, procesor nie może odczytać danych bezpośrednio z dysku twardego i potrzebuje pamięci RAM do każdej operacji.

Sądzę, że teoretycznie możliwe byłoby zbudowanie maszyny, która zużywa niewiele pamięci RAM lub nie ma jej wcale, ale byłaby nieefektywna.

Łukasz
źródło