Come funziona Memtest86 con RAM difettosa?


17

Stavo leggendo un'altra domanda su Memtest e ho iniziato a chiedermi: come funziona Memtest86 con RAM difettosa?

Pensaci: Memtest86 ha bisogno di archiviare informazioni su quanto è grande la RAM, cosa ha messo nella RAM per confrontare in seguito, dove aggiornare lo schermo e molte altre informazioni. L'atto di utilizzare una variabile richiede che la RAM funzioni correttamente. Ma come si possono ottenere risultati affidabili quando si esegue il programma su RAM eventualmente difettosa?

Un'analogia con questo sta eseguendo un programma di controllo del disco rigido dal disco rigido che stai controllando. Non lo faresti mai, un blocco errato potrebbe influenzare il programma in molti modi inaspettati

Come funziona Memtest86 con RAM difettosa?


2
Cordiali saluti, tutto il lavoro svolto dalla CPU viene eseguito nella RAM. Quando un programma viene eseguito, viene eseguito nella RAM, non ha nulla a che fare con le variabili. Potresti scrivere un programma che non fa assolutamente nulla e non usa mai alcuna variabile, ma quel programma risiede nella memoria. Domanda molto interessante però.
Keltari,

2
Poiché tutti i programmi (non banali) usano variabili, il trucco per tester / esercitatori di memoria è di memorizzare le loro variabili nei registri, piuttosto che nella memoria. Ciò significa anche che nessuno stack! Alcuni programmi di memoria vengono eseguiti al di fuori della ROM (ad es. Architettura di Harvard) o, se residente nella RAM sotto test, riposizionano il codice dopo ogni passaggio. L'esito positivo o negativo dell'esecuzione del programma di test in varie posizioni della RAM faceva parte dell'esercizio fisico. Naturalmente ci sono probabilmente tester di memoria scritti male che usano la RAM sotto test come un normale programma
segatura

@Keltari tecnicamente, parti del BIOS escono direttamente dal flash NOR ....
rackandboneman

Risposte:


9

Principalmente perché la quantità di RAM necessaria per caricare memtest è estremamente ridotta. Se il programma viene eseguito, è probabile che la memoria in quest'area sia corretta.

La possibilità che-

  1. La piccola sezione del memtest di memoria caricata è errata.
  2. Era ancora abbastanza buono da poter completare tutti i test con successo senza problemi evidenti.

È altamente improbabile.


7

Memtest è abbastanza durevole in quanto non dipende dalla RAM che sta testando.

Ad esempio, il test 0 utilizza un algoritmo di camminata e tutto ciò che serve per quel test è un singolo puntatore (probabilmente memorizzato nella cache), perché confronta solo due indirizzi di memoria consecutivi.

Quindi, se abbiamo una chiavetta RAM a 3 bit, memtest la carica con questo:

<pointer location> 00000001 00000010 00000100 00001000 00010000 00100000 01000000

E se il primo indirizzo è danneggiato, confronterà due posizioni casuali:

00000001 00100000

E continuerà a fallire, anche se le variabili di memtest sono corrotte.


3

Memtest deve assolutamente fare almeno un presupposto, che almeno la memoria in cui è caricata è buona. Successivamente è in grado di scansionare e testare il resto della memoria nella sua interezza.

Può essere che sia ancora in grado di leggere e rilevare errori nella propria memoria poiché, essendo l'unico programma caricato, dovrebbe avere accesso praticamente a tutta la memoria del sistema e quindi essere in grado di leggere e confrontare quella memoria con un campione "noto buono".


Pensavo principalmente ai cambiamenti nel comportamento che una RAM cattiva poteva fare. Ad esempio se il ram cattivo ha cambiato la logica in modo che tutti i test risultassero sempre veri.
TheLQ

Direi che è possibile che un singolo bit capovolga una falsa lettura come vera durante il test, ma è più probabile che il bit che lancia sia in qualcosa di molto più critico, in Memtest mi aspetterei la dimensione della corsa effettiva il codice deve essere più grande dei "casi di test" e quindi mi aspetto che un piccolo errore causi un arresto anomalo del programma prima che rilevi un passaggio al posto di un errore. Devo ammettere che è una possibilità però.
Mokubai

1

Essendo piccolo. Se un po 'di RAM è danneggiata, più piccolo è il programma, meno è probabile che una parte del programma si trovi in ​​uno dei punti negativi. Considerando che l'avvio abbastanza lontano da caricare il test di memoria comporterà un po 'di codice del firmware usando la RAM, le probabilità sono che se riesci ad arrivare così lontano, le aree basse della RAM stanno funzionando abbastanza bene da poter eseguire memtest da esse.


1

Pensaci: Memtest86 ha bisogno di archiviare informazioni su quanto è grande la RAM, cosa ha messo nella RAM per confrontare in seguito, dove aggiornare lo schermo e molte altre informazioni. L'atto di utilizzare una variabile richiede che la RAM funzioni correttamente. Ma come si possono ottenere risultati affidabili quando si esegue il programma su RAM eventualmente difettosa?

Bene, questo è ciò che fa Memtest: scrive vari schemi (conosciuti) nella RAM, li legge e li confronta. In caso di errata corrispondenza, la RAM deve essere corrotta.

Un'analogia con questo sta eseguendo un programma di controllo del disco rigido dal disco rigido che stai controllando. Non lo faresti mai, un blocco errato potrebbe influenzare il programma in molti modi inaspettati

Mentre questo è vero, ci sono alcuni casi in cui non hai scelta. Finché è possibile caricare correttamente il programma, dovrebbe essere in grado di eseguire le sue attività diagnostiche (anche se è in esecuzione su un supporto difettoso di qualche tipo).

Come funziona Memtest86 con RAM difettosa?

Bene, deve prima caricarsi nella memoria. Nella maggior parte dei casi, questa memoria sarà comunque buona. Nel caso contrario , Memtest determinerà molto probabilmente che il programma stesso è corrotto confrontando alcune variabili sul posto con un checksum. Nel caso in cui non corrispondano, sapresti immediatamente che la tua RAM è danneggiata o che la copia che hai scaricato è corrotta (e sarebbe un compito banale determinare se quest'ultima è la causa o meno).


TL, DR: Memtest86 + funziona solo supponendo che il primo megabyte della RAM sia ancora valido (la posizione in cui verrebbe caricato molto probabilmente). Supponendo che quest'area sia danneggiata, Memtest86 + non funzionerebbe semplicemente (il che è un indicatore abbastanza veloce che la tua RAM è difettosa senza nemmeno aver eseguito i test).


0

Se la RAM in cui l'applicazione sta salvando le variabili è errata, la maggior parte dei test fallirà.

L'algoritmo scrive tutti i tipi di modelli diversi e quindi controlla se sono ben scritti leggendoli di nuovo, se una scrittura o una lettura non sono andate correttamente, il test in questione fallirà. Eseguendo la maggior parte dei test e lasciandolo funzionare per diverse ore, puoi quindi vedere quanto è stabile la tua RAM ...

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.