Czy komputer bez pamięci RAM, ale z dyskiem, odpowiada komputerowi z pamięcią RAM?

18

Jak rozumiem, pamięć jest wykorzystywana do wielu rzeczy. Służy jako pamięć podręczna dysku i zawiera instrukcje programów oraz ich stos i stos. Oto eksperyment myślowy. Jeśli ktoś nie dba o szybkość lub czas, jaki zajmuje komputerowi wykonanie chrupnięcia, jaka jest minimalna ilość pamięci, jaką można mieć, zakładając, że ma on bardzo duży dysk? Czy można zrezygnować z pamięci i po prostu mieć dysk?

Buforowanie dysku oczywiście nie jest wymagane. Jeśli skonfigurujemy miejsce wymiany na dysku, stos programu i sterta również nie będą wymagały pamięci. Czy jest coś, co wymaga obecności pamięci?

Bzdury
źródło
3
Jaka jest idea tego pytania?
Yves Daoust,
12
Zdefiniuj „dysk”. Szybko zbliżamy się do świata bezbożnego (cieszę się, że Terry Pratchett nie musi tego świadczyć). Oznacza to, że cała pamięć będzie w jakimś stanie półprzewodnikowym, co jest odpowiedzią na twoje pytanie, choć prawdopodobnie w odwrotnej kolejności.
Peter - Przywróć Monikę
2
Pamięć jest pamięcią jest pamięcią
Édouard,
8
Pamięć adresowalna losowo nie jest, zgodnie z moją najlepszą wiedzą, wymogiem dla komputerów. Taśmy z maszyny Turinga nie można losowo adresować. Nic nie stoi na przeszkodzie, aby czytać / pisać tylko jeden bit na blok, jeśli chcesz.
Édouard

Odpowiedzi:

24

Pewnie. Zasadniczo, mając odpowiedni sprzęt, możesz mieć tylko dysk, na którym wszystko jest przechowywane na dysku. Za każdym razem, gdy CPU wykonuje instrukcję ładowania lub przechowywania, może istnieć sprzęt, który zamienia to w dysk do odczytu lub zapisu. Byłoby to bardzo wolne: na dysku magnetycznym każde wyszukiwanie zajmuje około 10 ms, dzięki czemu można wykonać około 100 odczytów i zapisów o swobodnym dostępie na sekundę.

Niektóre systemy mają przypisane pamięci flash do przestrzeni adresowej. Pamięć flash zapewnia nieulotną (trwałą) pamięć. W pewnym sensie przypomina to to, o czym wspomniałeś - chociaż te systemy zwykle również mają pamięć RAM.

DW
źródło
6
@MSalters ma dobrą rację, że jeśli zmodyfikujemy dysk (lub nałożymy na niego dodatkowy sprzęt), aby był podobny do RAM, to równie dobrze możemy nazwać go RAM. Problem polega na tym, że pytanie „Czy można pozbyć się pamięci i po prostu mieć dysk” jest zbyt niejasne. Co rozumiemy przez pamięć i dysk? Czy mamy na myśli te, które istnieją w nowoczesnym komputerze stacjonarnym? Zatem odpowiedź brzmi nie. Czy mamy na myśli jakąś hipotetyczną pamięć i dysk? W takim przypadku rozróżnienie między nimi jest jednak niewyraźne, a pytanie jest równoważne z „czy można mieć komputer z mechaniczną pamięcią RAM?” .
JBentley,
1
Rodzaj AS / 400 działa w ten sposób. Istnieje pamięć jednopoziomowa i tylko jedna przestrzeń adresowa. Dysk i pamięć są łączone w jedną abstrakcję pamięci przez oprogramowanie układowe platformy, sam system operacyjny widzi tylko jedną płaską, zunifikowaną przestrzeń do przechowywania. Nie ma wskaźników, tylko odwołania do obiektów. Obiekty są przenoszone z pamięci na dysk iz powrotem przez oprogramowanie układowe platformy (BIOS w PC-speak, SLIC w AS / 400-speak). Nie miałoby to żadnego znaczenia dla systemu operacyjnego i aplikacji, gdybyś usunął dyski i miał tylko pamięć RAM lub usunął pamięć RAM i miał tylko dyski.
Jörg W Mittag
Myślę też, że życie dysków twardych będzie znacznie krótsze. A nawet gorzej dla dysku SSD. Najprawdopodobniej powód, dla którego telefony z Androidem nie mają zamiany
Suici Doga
16

Pod względem obliczalności wiadomo, że każdy współczesny komputer może być symulowany przez maszynę Turinga, której jedynym miejscem przechowywania są pojedyncze, liniowe komórki taśmy, które można zapisać. Zakładając, że możesz dodawać nieograniczoną ilość miejsca na dysku, komputer posiadający tylko dyski twarde jest równie wydajny. Z pewnością możesz stworzyć komputer bez pamięci.

Oczywiście nie ma dysków twardych o „nieograniczonej przestrzeni”, ale nie ma też nieograniczonej pamięci RAM.

Istnieje wiele praktycznych problemów, na przykład potrzebne byłyby konwencje mapowania różnych obszarów i adresów na dysku, system operacyjny, który zapisał na dysku w celu przechowywania danych pośrednich i adresów dysków zarządzanych. W rzeczywistości skończyłbyś ściśle symulacją pamięci RAM na dysku twardym.

jmite
źródło
14

Pytanie nie jest czysto akademickie. Historycznie wiadomo, że jeden z najwcześniej produkowanych komputerów (przepraszam, nie pamiętam, który z nich) nie miał pamięci RAM - wszystkie programy były wykonywane przez pobieranie instrukcji bezpośrednio z bębna magnetycznego [obracający się cylinder z zewnętrzną powierzchnią magnesowalną (dyski przyszły później)]. To było stosunkowo wolne, ale znacznie tańsze niż wiele konkurencji. [to było dawno temu w czasach 'tubowych']

Co ciekawe, przyszedł z przestarzałym narzędziem znanym jako „optymalizujący asembler” - tj. Asembler nie tylko generował instrukcje maszynowe, ale zapisywał je na bębnie nie po kolei, aby zminimalizować, dla każdej instrukcji, ilość czasu czekam, aż bęben obróci się do następnego.

PMar
źródło
3
Być może myślisz o Stantec Zebra - archive.computerhistory.org/resources/text/Standard/… . Nadal mieli jeden na wydziale CS, kiedy poszedłem na uniwersytet w 1967 roku.
David Marshall
3
Właściwie myślę, że mogłem myśleć o IBM 1408.
PM
8
Zobacz także Story of Mel ( catb.org/jargon/html/story-of-mel.html ), która dotyczy programisty, który pracował na Royal McBee LPG-30, który miał pamięć bębna.
db48x
@ db48x: Zapomniałem, jak fajna była ta historia. Prawdopodobnie nie czytałem tego przez 10 lat.
Peter Cordes,
7

Nie. Dyski twarde nie są adresowalne losowo, jak pamięć RAM. Zamiast tego są to blokowe urządzenia magazynujące. Nie możesz czytać ani pisać z nich bajtu. Twój procesor nie może jednocześnie odczytać całego sektora, potrzebują tego losowego dostępu. Systemy operacyjne ukrywają przed Tobą ten poziom szczegółowości, ale robią to, wczytując cały sektor do pamięci RAM, modyfikując go i zapisując.

W rezultacie potrzebujesz jednego bloku magazynu o dostępie swobodnym. Może to być pamięć podręczna procesora wykonana z SRAM (szybkiej pamięci RAM).

To nie tylko dyski. Pamięć flash jest z założenia zbudowana z bloków, co jest kluczem do jej niskiej ceny. Ma nawet bloki znacznie większe niż normalne sektory dysku, ale wykorzystuje wewnętrznie pamięć RAM, aby ukryć to przed systemem operacyjnym.

Możesz sprawić, aby trwała pamięć masowa była bezpośrednio wykorzystywana przez procesor. Pamięć EEPROM należałaby do tej kategorii (elektronicznie kasowalna programowalna pamięć „tylko do odczytu” - chociaż „zoptymalizowany do odczytu” byłby faktycznie lepszym opisem).

MSalters
źródło
5
Myślę, że Twoje „Nie” powinno brzmieć „Tak, ale wymagałoby to niestandardowych dysków”.
Taemyr
3
Z pewnością możesz odczytać bajt na obu. Nie możesz napisać pojedynczego bajtu, ponieważ zapis wymaga całego bloku na raz. Jednak w zasadzie nie ma powodu, dla którego nie można zmodyfikować bloku, kopiując niezmodyfikowane dane z oryginalnego bloku do nowego bloku, w razie potrzeby zapisując nowe dane, a następnie kopiując je z powrotem do oryginalnego bloku. Zużyjesz dysk dość szybko, ale i tak jest to nieuniknione w pytaniu PO.
Graham
3
„Blokowanie” odbywa się w celu efektywnego wykorzystania fizycznego miejsca na dysku: potrzebujesz miejsca wokół każdego kawałka „prawdziwych” danych, aby zidentyfikować blok, zapewnić przestrzeń „ochronną” między blokami itp. Nie ma technicznych powodów, dla których bloki nie mogłyby być jednym bajt długi (ale prędkość spadłaby jeszcze bardziej, podobnie jak pojemność).
TripeHound,
6
W rzeczywistości nawet obecna pamięć RAM nie jest tak naprawdę adresowalna bajtowo - DDR3 działa w seriach, a minimalny rozmiar odczytu / zapisu wynosi 8 64-bitowych słów (tj. 64 bajtów); Nie jestem ekspertem, ale założę się, że wymagany jest również wyrównany dostęp. Wszystko to nie różni się tak bardzo od starszych dysków, w których rozmiar bloku był rzędu 512 bajtów, więc powiedziałbym, że te rozróżnienia są głównie historyczne, linia naprawdę zaciera się.
Matteo Italia,
1
(ponadto nic nie stoi na przeszkodzie, aby użyć całego bloku - bez względu na rozmiar - wystarczy trzymać jeden bajt - trochę nieefektywnie, ale dopóki nie płacę dyskom, wszystko jest w porządku)
Matteo Italia
1

Gdy korzystasz z pamięci wirtualnej i potrzebujesz obsługi błędów strony, przynajmniej obsługa wyjątków obsługuje błąd strony, sterownik dysku, który odczytuje dane z dysku twardego i najpierw zapisuje brudne strony na dysku, a tabele stron potrzebują cały czas być w pamięci RAM. Ponieważ jeśli nie są one w pamięci RAM, nie można zamienić ich z powrotem na pamięć RAM. Ponadto potrzebujesz miejsca na co najmniej jedną stronę pamięci RAM.

Jeśli miałeś procesor taki jak potężny 12-rdzeniowy Xeon z 30 MB pamięci podręcznej, może być możliwe posiadanie systemu bez pamięci RAM lub dysku twardego, ale używaj tylko pamięci podręcznej. (Nie jestem pewien, czy to faktycznie działa lub czy z jakiegoś powodu wymagana jest pamięć RAM).

gnasher729
źródło
IIRC, x86 ma tryb, w którym wykorzystuje wewnętrzną pamięć podręczną jako pamięć główną. electronics.stackexchange.com/questions/16485/... ma pewne szczegóły. Myślę, że czasami nazywa się to „trybem zapełniania”, tzn. Procesor nie próbuje faktycznie wypełnić linii pamięci podręcznej z pamięci zewnętrznej. Może to wykluczać użycie DMA do we / wy dysku twardego, ponieważ „agent systemowy” nie może DMA do pamięci podręcznej L3. Może działać na Skylake z L4 eDRAM, ponieważ jest skonfigurowany jako pamięć podręczna po stronie pamięci (w przeciwieństwie do Broadwell), która może buforować wszystko , w tym DMA. Programowane IO nadal będzie działać na dysku.
Peter Cordes,
Oczywiście w tym momencie używasz System-on-Chip z 128 MB pamięci RAM, co było przyzwoitą kwotą 15 lat temu. Tylko z pamięcią podręczną L3 SRAM, to wciąż 4 do 8 MB w układzie biurkowym, co może być wystarczające dla bardzo uproszczonego Linuksa, ale wystarczająco łatwe dla DOS. Jeśli większość kodu znajduje się w pamięci ROM, a nie w pamięci RAM, to w porządku.
Peter Cordes,
1

Jest to koncepcyjnie możliwe. Pamięć RAM to tylko poziom buforowania. Istnieje wiele poziomów buforowania we współczesnym komputerze (patrz pamięci podręczne L1, L2, L3 .. procesora, oczywiście Ram, obszar wymiany - który jest logiczną sekcją dysku używanego jako pamięć RAM ... -), jeśli umieścisz lub dodaj jeden, urządzenie będzie działać. Na przykład dysk CD Ubuntu na żywo może nie używać poziomu buforowania dysku twardego. Jednak nie sądzę, aby istniał jakikolwiek system operacyjny, który może obsługiwać brak poziomu pamięci RAM.

Picci
źródło
1
To nie jest system operacyjny, ale sprzęt, który został zaprojektowany i wymaga instrukcji w ram (właściwie odwzorowany w przestrzeni adresowej).
Ángel
@Angel jest naprawdę wymagane w nowoczesnym systemie operacyjnym, aby tekst (instrukcje), bss, stos i stos były ładowane do pamięci, aby program mógł zostać uruchomiony? Czy nie mogą być na wymianie (dysku)? Powiedzmy w systemie Linux.
Tosh
1
Mówimy o informatyce czy inżynierii komputerowej? Nie znam implementacji systemu operacyjnego, ani poziomu sprzętowego, bazuję tylko na tezie Church-Turinga. Być może jest to niemożliwe przy użyciu obecnego sprzętu dostępnego na rynku lub przy użyciu istniejących systemów operacyjnych, ale może to być możliwe w scenariuszu teoretycznym.
Picci,
1
@Tosh to nie jest problem z systemem operacyjnym, ale ze sprzętem. Twój procesor wykonuje jedną instrukcję znajdującą się pod adresem pamięci wskazanym przez wskaźnik instrukcji. Tak więc samo posiadanie dysku nie będzie działać (bez zmiany sprzętu). Odpowiadając na twoje pytanie, nie wszystkie sekcje musiałyby zostać załadowane do pamięci, w rzeczywistości system operacyjny może je załadować tylko wtedy, gdy program próbuje uzyskać do nich dostęp. Jako skrajny przykład licznika można uruchomić program „z dysku” za pomocą emulatora, który odczytuje jedno słowo * na raz z dysku twardego. Ale swój musiałby mieć w pamięci, więc będzie trzeba jeszcze trochę pamięci RAM.
Ángel
1
Przepraszamy, @Tosh: „Twój emulator musiałby być w pamięci”.
Ángel
-1

Technicznie RAM jest podstawową pamięcią ulotną, która służy do poprawy szybkości przetwarzania. Po zaniku zasilania dane w pamięci podstawowej zostają utracone. Jeśli użyjemy dysku, tj., Jak mówisz, tylko dysku, a nie pamięci RAM, nadal moglibyśmy uruchomić nasz komputer, ale byłoby więcej narzutu odczytu, co znacznie spowolniłoby system. Dlatego używamy pamięci RAM.

Sanket Gupte
źródło
Witamy w CS.SE! Czy możesz uzasadnić swoje twierdzenie, że więcej narzutu odczytu i zapisu zwiększa ryzyko częstej awarii systemu? To nie brzmi dla mnie dobrze.
DW
To zależy od tego, z czego korzystasz. Podobnie jak w systemach Unix / Linux istnieje koncepcja znana jako bufor bufora. Może być używany do przechowywania wstępnie wybranych bloków lub bloków oznaczonych do opóźnionego zapisu. Ale w systemie Windows lub Mac nie ma takiej koncepcji. Dlatego musisz uzyskać dostęp do wymaganych bloków z pamięci dodatkowej. Teraz, gdy uruchomione są równoległe procesy, narzut odczytu zapisu zwiększyłby się, a w konsekwencji prędkość przetwarzania spadła. Procesy nie będą mogły zostać uruchomione, spowalniając w ten sposób komputer, który zaczyna się zawieszać, a następnie ulega awarii
Sanket Gupte
2
To brzmi jak nieporozumienie. Spowolnienie komputera nie oznacza, że ​​komputer się zawiesi.
DW