Halt and Catch Fire: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
fix |
||
(28 versioni intermedie di 21 utenti non mostrate) | |||
Riga 1:
{{nota disambigua|l'omonima serie televisiva|Halt and Catch Fire (serie televisiva)}}
'''Halt and Catch Fire''', conosciuto anche con la sigla mnemonica di '''HCF''', descrive una o più istruzioni non documentate e semi mitiche dagli effetti potenzialmente distruttivi incluse in molte architetture e utilizzate per poter effettuare agevolmente particolari test durante lo sviluppo dei prodotti. Il primo esempio conosciuto risale al computer [[IBM System/360]].▼
{{F|componenti per computer|marzo 2013|Nessuna fonte}}
'''Halt and Catch Fire''' (fermati e prendi fuoco), indicato con la sigla mnemonica di '''HCF''', è un'istruzione fittizia del linguaggio [[assembly]] - intesa prevalentemente come uno scherzo - che è stata usata per definire istruzioni solitamente non documentate che portano la CPU in uno stato da cui può essere fatta uscire solo con un reset.
▲
[[Categoria:Microprocessore]]▼
== Origine ==
Si ritiene che l'origine del nome risalga ad un aneddoto apocrifo in circolazione nei primi anni sessanta del XX secolo. Si raccontava che gli ingegneri che lavoravano allo sviluppo sui computer [[IBM System/360]] avessero aumentato le correnti di lettura/scrittura delle [[Memoria a nucleo magnetico|memorie a nucleo magnetico]] al fine di migliorare le prestazioni. La modifica non avrebbe avuto effetti durante la normale operatività del computer, ma purtroppo l'istruzione di spegnimento HALT era implementata con un ciclo generato da un'istruzione di salto a se stessa, cosa che provocava l'accesso ripetuto e rapidissimo alla medesima cella di memoria, il che avrebbe provocato il surriscaldamento dei fili al punto che essi avrebbero iniziato a fumare.
== Nelle CPU moderne ==
=== Motorola 6800 ===
Il microprocessore [[Motorola 6800]] è il primo prodotto dove è stata identificata un'istruzione '''HCF'''. L'istruzione, introdotta quasi sicuramente durante le fasi di test del prodotto, spinge il processore a modificare rapidamente le uscite delle linee collegate al [[Bus (informatica)|bus]] di sistema, consentendo una rapida verifica del funzionamento di tutte le linee.
L'uso di tale codice mette il processore in uno stato in cui non può più rispondere agli interrupt, cosicché l'unico modo per ritornare alla normale attività è quello di resettare l'apparato.
La medesima istruzione è presente nel microprocessore [[Motorola 6809]].
=== Intel x86 ===
Il processore [[Intel 8086]] e i successivi processori della [[architettura x86|serie x86]] implementano un'istruzione HLT (alt) che interrompe l'esecuzione delle istruzioni e mette il processore in uno stato di blocco. Esistono una serie di condizioni (un interrupt, un'eccezione di debug e vari altri segnali) che riportano il processore nello stato normale.
Tuttavia le prime versioni del chip IntelDX4 avevano un problema che impediva a tali eventi di far tornare allo stato normale il processore, cosa che in effetti rendeva il comportamento dell'istruzione HLT equivalente ad un'istruzione HCF.
==== Pentium F00F bug ====
Molti processori della linea Intel [[Pentium]] possono essere bloccati mandando in esecuzione del codice macchina contenente la sequenza di byte <code>F0 0F C7 C8</code>, corrispondente all'istruzione assembly:
<code>lock cmpxchg8b eax</code>
L'istruzione comparerebbe il valore dei registri ''edx'' e ''eax'' con un valore a 8 byte di una locazione di memoria, ma in questo caso al posto della locazione di memoria è usato un registro della CPU. In circostanze normali, l'istruzione provocherebbe un'eccezione, ma l'uso del prefisso ''lock'' (che di solito previene l'accesso contemporaneo di due processori alla stessa locazione di memoria) spinge la CPU ad utilizzare una modalità di accesso al bus non consentita, bloccando l'esecuzione immediatamente dopo.
Tale comportamento è conosciuto con il nome ''Pentium F00F bug''. Sebbene nessun compilatore generi codice macchina con tale istruzione, un hacker può inserirla appositamente in un programma causando il blocco del computer dove questo venga eseguito.
Dopo la scoperta del bug, sono stati sviluppati dei meccanismi per prevenire il blocco del computer. Il bug è stato corretto nei processori Intel delle serie successive.
{{Portale|informatica}}
▲[[Categoria:Microprocessore]]
|