Esegui un computer senza RAM? [duplicare]


14

Stavo leggendo il tempo di recupero della CPU , dove ho scoperto che le CPU impiegano molto meno tempo per accedere ai dati dalla RAM rispetto all'accesso a un disco rigido e che la RAM è presente per la memorizzazione delle informazioni e dei dati dell'esecuzione del programma.

Quindi mi chiedevo cosa succederà quando usiamo solo un disco rigido ma non RAM?



1
@Cornelius grazie per la tua risposta, lo controllerò :)
Akash ujjwal

12
Ciò che accade sono alcuni segnali acustici quindi lo schermo diventa vuoto.
arch-abit,

1
La mia domanda è: posso almeno provare che una scheda grafica funziona? Il video o il monitor funzionerebbero minimamente?
Maresciallo artigianale

Risposte:


27

Ad un certo punto questo si pone sulla questione di ciò che conta anche come "RAM". Esistono molte CPU e microcontrollori che dispongono di molta memoria su chip per eseguire piccoli sistemi operativi senza chip RAM separati collegati. In realtà, questo è in realtà relativamente comune nel mondo dei sistemi embedded. Quindi, se ti riferisci semplicemente a non avere chip RAM separati collegati, allora sì, puoi farlo con molti chip attuali, specialmente quelli progettati per il mondo embedded. L'ho fatto da solo al lavoro. Tuttavia, poiché l'unica vera differenza tra memoria su chip indirizzabile e chip RAM separati è solo la posizione (e, ovviamente, la latenza), è perfettamente ragionevole considerare la memoria su chip come RAM. Se lo conti come RAM, allora il numero di corrente,

Se ti riferisci a un normale PC, no, non puoi eseguirlo senza RAM stick separate collegate, ma questo è solo perché il BIOS è progettato per non tentare di avviarsi senza RAM installata (che è, a sua volta, perché tutto i moderni sistemi operativi per PC richiedono l'esecuzione della RAM, soprattutto perché le macchine x86 in genere non consentono di indirizzare direttamente la memoria su chip; viene utilizzata esclusivamente come cache.)

Infine, come ha detto Zeiss, non esiste alcun motivo teorico che non si possa progettare un computer per funzionare senza alcuna RAM, a parte un paio di registri. La RAM esiste solo perché è più economica della memoria su chip e molto più veloce dei dischi. I computer moderni hanno una gerarchia di ricordi che vanno da grandi, ma lenti a molto veloci, ma piccoli. La gerarchia normale è qualcosa del genere:

  • Registri: molto veloci (possono essere gestiti direttamente dalle istruzioni della CPU, generalmente senza latenza aggiuntiva), ma di solito molto piccoli (i core del processore x86 a 64 bit hanno solo 16 registri di uso generale, ad esempio, ognuno dei quali è in grado di memorizzare un numero singolo a 64 bit.) Le dimensioni dei registri sono generalmente ridotte perché i registri sono molto costosi per byte.
  • Cache CPU: ancora molto veloci (spesso con una latenza di 1-2 cicli) e significativamente più grandi dei registri, ma comunque molto più piccole (e molto più veloci) della normale DRAM. La cache della CPU è anche molto più costosa per byte della DRAM, motivo per cui è in genere molto più piccola. Inoltre, molte CPU hanno gerarchie anche all'interno della cache. Di solito hanno cache più piccole e più veloci (L1 e L2) oltre a cache più grandi e più lente (L3.)
  • DRAM (quella che la maggior parte delle persone definisce "RAM") - Molto più lenta della cache (la latenza di accesso tende a essere decine a centinaia di cicli di clock), ma molto più economica per byte e, quindi, in genere molto più grande della cache. La DRAM è comunque, molte volte più veloce dell'accesso al disco (di solito da centinaia a migliaia di volte più veloce).
  • Dischi: sono di nuovo molto più lenti della DRAM, ma generalmente anche molto più economici per byte e, quindi, molto più grandi. Inoltre, i dischi sono in genere non volatili, il che significa che consentono il salvataggio dei dati anche dopo la fine di un processo (nonché dopo il riavvio del computer).

Si noti che l'intero motivo delle gerarchie di memoria è semplicemente l'economia. Non vi è alcuna ragione teorica (almeno non nell'ambito dell'informatica) per cui non potremmo avere un terabyte di registri non volatili su un dado CPU. Il problema è che sarebbe follemente difficile e costoso da costruire. Avere gerarchie che vanno da piccole quantità di memoria molto costosa a grandi quantità di memoria economica ci consente di mantenere velocità elevate con costi ragionevoli.


ora finalmente ottengo ciò di cui ho bisogno. Hai risposto esattamente a cosa sto aspettando. Grazie mille :)
akash ujjwal il

In realtà, il motivo per cui i PC non si avviano senza RAM è il BIOS, se il codice BIOS non è in grado di trovare un indirizzo di trasferimento nella RAM, si interrompe. Tutto quello che sentirai è il ronzio dell'alimentazione e il rumore dei fan e forse dei dischi rotanti, ma il computer è praticamente morto. La CPU non ha mai la possibilità di far funzionare tutto. Quindi sì, la RAM è piuttosto importante.
arch-abit,

@ arch-abit sì è vero, ma la RAM è un componente necessario per far funzionare un computer?
Akash ujjwal,

2
Oltre a quanto affermato da @reirab è possibile eseguire un 'PC' senza DRAM nel senso di eseguire le istruzioni: questa è la modalità in cui il sistema funziona prima che il controller DRAM sia inizializzato (è fatto da BIOS / EFI / Coreboot ecc.). Tuttavia, è improbabile che tu sia in grado di fare qualcosa di utile poiché la maggior parte dei componenti probabilmente utilizza DMA comunque.
Maciej Piechotka,

1
I registri cpu x86 a 32 bit sono solo 32 bit, non 64 e cpus x86 a 64 bit ne hanno 32 anziché 8.
psusi,

23

Sarebbe teoricamente possibile progettare un computer per funzionare con pochissima (pochi registri) o senza RAM (cercare la definizione di una macchina di Turing - che può effettivamente essere costruita in un'implementazione sufficientemente grande / veloce di Conway's Life simulazione).

La ragione per cui tutti i computer del mondo reale usano la RAM è, in primo luogo, storica: la memoria principale (il prototipo per la RAM, solo semi-volatile) precede di gran lunga l'archiviazione di massa come il tamburo magnetico o il disco (anche se è arrivato dopo schede perforate e nastro di carta - il primo dei quali risale, nella sua forma primitiva, al 1801 (sì, l'inizio del 19 ° secolo; i telai Jacquard utilizzavano schede perforate per tessere automaticamente un modello di colore di complessità arbitraria decenni prima ancora che i motori Babference Difference Engines o Hollerith); in secondo luogo , La RAM (come la memoria principale), essendo elettronica, è molto più veloce di qualsiasi dispositivo che dipende dal movimento fisico del supporto di memorizzazione per presentare i dati a un meccanismo di lettura / scrittura.

Un sistema o una complessità simile a un moderno computer Windows o Linux in esecuzione senza RAM (analogamente a una vera macchina Turing), richiederebbero giorni solo per l'avvio e ore per aggiornare lo schermo per un'interfaccia grafica a risoluzioni moderne. Anche un sistema operativo di solo testo paragonabile a CP / M o alle prime versioni di DOS richiederebbe molto tempo per raggiungere il prompt dei comandi iniziale.


4
Penso che potresti forse considerare alcuni DSP (processori di segnali digitali) e microprocessori simili come computer che funzionano senza RAM, poiché essenzialmente eseguono calcoli su un flusso continuo di dati.
jamesqf,

1
Penso che le tue stime sulla lentezza di una macchina "solo memoria virtuale" siano un po 'esagerate, ma in linea di principio giuste.
leftaroundabout

1
Poiché il disco è> 1.000.000 più lento della RAM, penso che la stima sia, se non altro, bassa.
Dancrumb,

2
@Dancrumb Non sono sicuro da dove provengano le tue 1.000.000 (volte?). DDR3 SDRAM può fornirti nell'ordine di 10 GB / s , mentre anche un HDD rotazionale a 7200 rpm ti darà circa 100 MB / s (0,1 GB / s) in sequenza. Questo è un fattore 100; sicuramente significativo, ma molto diverso da 1.000.000 di volte. Laddove la RAM sorpassa notevolmente un HDD è in latenza di ricerca, ma è possibile alleviarlo notevolmente utilizzando un SSD. DDR3 ha una latenza nella regione di 10 ns e un SSD veloce potrebbe avere una latenza nella regione di 10.000 ns (100k IOPS), per un fattore 1.000; ancora molto lontano da 1.000.000.
un CVn

1
@PeterCordes Modificato in modo che non sembri che sostengo che Win / Linux possa funzionare senza RAM.
Zeiss Ikon,

10

È possibile, perché quando si avvia una CPU x86, la cache L2 è inizialmente una SRAM prima di essere utilizzata come cache. Quindi puoi scrivere il tuo bios per non inizializzare la RAM e usare solo la piccola quantità di SRAM all'interno della CPU come RAM piuttosto che cache L2 / L3.

Basta leggere le linee guida del BIOS dai produttori di CPU.


4
+1 per averlo dichiarato. In effetti, ogni sistema x86 (computer) si avvia "senza usare ram". Il codice BIOS rileva prima se c'è qualche ram e emette un segnale acustico nel caso in cui non ce ne sia. Questo codice può essere eseguito senza ram;) (spesso non si può fare molto senza ram, sicuramente i registri non sarebbero sufficienti per gestire l'HDD e utilizzarlo "come ram")
Sebi

10

TUTTE le CPU moderne, standard e generiche funzionano fondamentalmente in questo modo:

  • La CPU mantiene un registro che punta nel suo spazio degli indirizzi all'istruzione successiva
  • La CPU recupera tutto ciò che si trova nello spazio degli indirizzi e incrementa il registro
  • Se l'istruzione necessita di informazioni aggiuntive, come un indirizzo di destinazione o un altro operando, viene anche recuperata
  • La CPU esegue le istruzioni
  • Se l'istruzione è un salto, una chiamata, un ritorno, un ritorno dall'interruzione o una diramazione, può modificare il registro che punta all'istruzione successiva.
  • Ripetere

La CPU recupera tutto ciò che si trova nello spazio degli indirizzi e incrementa il registro

Cosa può "vivere" in uno spazio degli indirizzi?

  • Niente (può restituire zeri, dati casuali o causare il blocco della CPU)
  • RAM (RAM della scheda madre, RAM da un dispositivo PCI come una scheda grafica, ecc.)
  • rom
  • Registri di un dispositivo I / O (questo include "dispositivi I / O interni" come l'APIC locale della CPU)
  • Le moderne CPU consentono la "cache come RAM" in modo che una parte della cache delle CPU possa apparire nello spazio degli indirizzi

Si noti che "disco rigido" non è in tale elenco. Il disco rigido non è collegato direttamente alla CPU. I dati arrivano e escono dal disco rigido tramite un dispositivo I / O (adattatore host SATA) collegato alla CPU.

Il dispositivo I / O utilizza DMA per caricare / salvare i dati sul / dal disco rigido. Ciò significa che il dispositivo I / O legge / scrive direttamente la RAM stessa - senza l'intervento della CPU - e si basa anche sul fatto che la RAM è presente. Ma se i dati non sono stati caricati nella RAM dal dispositivo I / O la CPU non ha alcuna possibilità di vederli.

Quindi non è possibile avere le istruzioni per il recupero della CPU direttamente dal disco rigido.


Cosa succede durante un errore di pagina è:

  • La CPU tenta di accedere a una pagina di memoria contrassegnata come scambiata nelle tabelle delle pagine della CPU locale (che sono sempre presenti nella RAM).
  • Questo accesso provoca un'eccezione di errore di pagina nella CPU.
  • La CPU, ora in modalità kernel, esamina la pagina a cui l'altro processo stava tentando di accedere.
  • Il kernel nota che un processo utente sta tentando di accedere a una pagina scambiata e invoca il normale processo I / O per scambiare quella pagina dal disco. Questo è lo stesso processo che verrebbe utilizzato durante il caricamento / salvataggio di altri dati dal disco. Non è diverso solo perché la CPU esegue il paging nella memoria scambiata.
  • La CPU quindi passa il controllo al processo interrotto, che continua come se nulla fosse successo.

Quindi la CPU che necessita di ottenere dati dal disco perché la memoria viene scambiata non è diversa.


2
+1per essere l'unica risposta qui che affronta il vero problema, non solo di ciò che accadrebbe , ma anche del perché .

@ultrasawblade perché non cpu ha la possibilità di vedere i dati, anche se cpu richiede una pagina (informazioni) e se non è disponibile in ram (memoria primaria), allora si verifica un errore di pagina, quindi cpu richiede al disco fisso per quei dati desiderati. Ciò significa che cpu deve infine andare sul disco rigido per le informazioni richieste.
Akash ujjwal,

2
Vedi le modifiche. Il paging del kernel nella memoria scambiata non è diverso dal caricamento di un programma o dalla lettura / scrittura di un programma su disco. Accade solo all'interno del kernel e dietro le quinte di un processo utente, ma non dietro le quinte del kernel.
LawrenceC,

Nota che x86 almeno può usare la cache come RAM con modalità no-fill, ma poi sei nella stessa barca dei microcontrollori forniti con una RAM integrata. L'esecuzione della CPU con solo ROM e nessuno spazio di indirizzi scrivibile è plausibile (se tutto il tuo stato si adatta ai registri e nota che le più recenti CPU x86 hanno trentadue registri vettoriali ZMM 512b ...) Ma concordato che non è plausibile senza spazio di indirizzi leggibile per codice (e GDT / LDT / IDT e altre tabelle per x86).
Peter Cordes,

7

Un personal computer richiede RAM per funzionare. Ogni applicazione avviata dal disco rigido verrà copiata nella RAM prima di essere eseguita.

Quindi, se non hai RAM nel tuo computer, il tuo computer non si avvierà, probabilmente ti darà diversi segnali acustici di avviso per farti sapere che non è installata alcuna RAM.


5
Poi bussi alla fronte e dici "Non avrei dovuto provare a installare queste chiavette RAM in un ambiente con moquette con umidità inferiore al 10%, nel 27 dicembre nell'emisfero settentrionale?" Sì?
arch-abit,

@LPChip perché è archiviato in Ram qual è lo scopo principale di esso. Per rendere il sistema veloce o ridurre i tempi di accesso, è presente una cache integrata per farlo. Ho ragione o torto?
Akash ujjwal,

1
La RAM è una memoria veloce, l'accesso al disco è lento, la memoria non volatile e la cache della CPU è lì per altri motivi.
Fiasco Labs,

1
@FiascoLabs In realtà, la cache della CPU è lì per lo stesso motivo della RAM: è una memoria davvero veloce. È molto più veloce della RAM, ma più costoso per byte.
reirab

E un computer non funzionerà autonomamente su di esso, quindi "altri motivi"
Fiasco Labs,

5

Il computer non funzionerà. La RAM è una parte essenziale di post di successo dalla scheda madre. Quando la RAM non è presente o danneggiata, molte schede madri in genere forniscono segnali acustici per indicare dove cercare la risoluzione dei problemi.


Sì, erano piccoli anelli di metallo che sarebbero stati magnetizzati / smagnetizzati. en.wikipedia.org/wiki/Magnetic-core_memory (In risposta a un commento sui vecchi computer a valvole a vuoto che è stato cancellato)
Fiasco Labs

2

In realtà in almeno due casi è possibile eseguire un computer senza quella che viene tecnicamente definita RAM

  1. I primi vecchi "computer" meccanici (la costruzione di Konrad Zuse e il computer di Charles Babbage erano dispositivi meccanici senza arestill di RAM chiamati computer)

  2. Un computer moderno senza RAM e solo un processore (chip) con registri . Nella maggior parte dei casi hai SRAM (memoria cache) sul processore, ma la memoria del computer più veloce si chiama registri situati sul chip e tecnicamente i registri sul chip non sono RAM.


1
Grazie per questa risposta - la prima volta che ricordo di aver sentito parlare di Zuse e dei suoi primi computer elettromeccanici (anche se le prime letture che ricordo sui computer parlavano sempre di "relè" come unità di commutazione, tutti gli altri primi computer sembravano aver usato tubi a vuoto ).
Zeiss Ikon,

1

Semplicemente non funzionerà. Molto probabilmente la scheda madre emetterà un segnale acustico in modo insolito e si spegnerà. Se non hai abbastanza RAM, anche 128 MB per Windows XP, si rifiuterà di installarlo (in realtà ha provato questo con un vecchio computer; uno dei chip non è stato posizionato correttamente). Quindi, con le attuali configurazioni è impossibile. Anche se è possibile disabilitare i controlli della scheda madre, la CPU non può leggere i dati direttamente dal disco rigido e necessita di RAM per ogni operazione.

Immagino, in teoria sarebbe possibile costruire una macchina che utilizza poca o nessuna RAM, ma sarebbe inefficace.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.