# Memoria a nucleo magnetico

La memoria a nucleo magnetico o memoria a nuclei di ferrite è una tipologia di memoria informatica non volatile. Questa utilizza piccoli anelli magnetici di ceramica per memorizzare le informazioni digitali. I dati sono memorizzati tramite la variazione della polarità del campo magnetico degli anelli. Queste memorie furono utilizzate nei primi computer prima della diffusione delle memorie a semiconduttori.

## Storia

Le prime ricerche sulle memorie a nuclei magnetici furono svolte da An Wang e Way-Dong Woo, due ricercatori statunitensi che svilupparono nel 1949 il pulse transfer controlling device. Il nome indica un dispositivo che tramite campo magnetico dovrebbe controllare l'attivazione di un sistema elettromeccanico. Wang e Woo lavoravano all'Università di Harvard, quest'università a differenza del MIT non era interessata a promuovere le invenzioni sviluppate internamente. Comunque Wang riuscì a farsi assegnare il brevetto dell'invenzione.
Intanto Jay Forrester presso il MIT stava sviluppando il computer Whirlwind ed era venuto a conoscenza delle ricerche di Wang e di Woo. Il computer Whirlwind richiedeva una memoria principale molto veloce (per l'epoca) per poter eseguire un simulatore di volo in tempo reale. Inizialmente Forrester aveva pensato di utilizzare i tubi Williams per la memoria principale, ma questi erano intrinsecamente inaffidabili e di difficile gestione.
Due problemi dovettero essere risolti per lo sviluppo delle memorie magnetiche e anche delle moderne memorie per computer: la cancellazione del dato letto e l'enorme numero di collegamenti necessari. Il fatto che l'accesso ai dati causava la cancellazione degli stessi fu risolto da Wang associando a ogni lettura una riscrittura del dato stesso. Per il secondo problema, Forrester, nel contempo, era riuscito a utilizzare un ridotto numero di collegamenti per gestire un ampio numero di nuclei magnetici. Il progetto di Forrester richiedeva che uno dei fili attraversasse i nuclei magnetici con un'inclinazione di 45°: poiché ciò non poteva essere eseguito in modo automatico dalle macchine, le memorie vennero assemblate manualmente con l'ausilio di microscopio e strumenti di precisione.
Alla fine degli anni cinquanta, alcuni impianti industriali erano stati attivati nell'estremo oriente. In quegli impianti lavoravano dei salariati che si accontentavano di stipendi molto modesti, permettendo di abbassare notevolmente il prezzo delle memorie. Negli anni '60 le memorie a nuclei magnetici divennero, così, la più diffusa memoria per computer, sostituendo le economiche ma molto lente memorie a tamburo e le veloci ma costose memorie a valvole termoioniche. Alcune società utilizzarono anche lavoratori scandinavi, che dopo le ristrutturazioni del settore tessile si trovavano senza lavoro.
All'inizio le memorie costavano circa un dollaro per elemento, ma verso la fine erano arrivate a costare circa un centesimo di dollaro per elemento. Queste memorie comunque vennero sostituite negli anni settanta dalle memorie a semiconduttori.
Il Dr. Wang riuscì ad avere il brevetto sulla sua invenzione solo nel 1955, quando già diverse società utilizzavano quella tecnologia e quindi Wang avviò una serie di azioni legali per la violazione delle sue proprietà intellettuali. Nel 1956 IBM pagò 500.000 dollari a Wang per acquisire il brevetto e porre fine alle cause legali. Wang utilizzò i fondi per ingrandire i Wang Laboratories, un laboratorio di ricerca fondato con il Dr. Ge-Yao Chu. Successivamente, nel 1964, l'IBM acquisì anche dal MIT i brevetti che coprivano le invenzioni di Forrester per 13 milioni di dollari.
Le memorie a nucleo magnetico facevano parte di una serie di tecnologie legate alle proprietà magnetiche dei materiali. Negli anni cinquanta erano state sviluppate le valvole termoioniche, dispositivi sofisticati da produrre, fragili, relativamente ingombranti e che consumavano molta corrente. Le memorie a nucleo magnetico invece erano dispositivi piccoli, solidi e a basso consumo. Spesso vennero utilizzate per applicazioni militari, visto la loro robustezza. Un esempio famoso era il computer MOBIDIC sviluppato dalla Sylvania per la United States Army Signal Corps.

## Descrizione
### Funzionamento delle memorie a nucleo magnetico

Inizialmente i nuclei magnetici vennero realizzati con delle sostanze ceramiche magnetiche, ma in seguito furono usate le ferriti. Gli anelli era disposti su una griglia di fili, che portavano i segnali di gestione della memoria. Nei primi sistemi si utilizzavano quattro fili: X,Y, Sense e Inibizione; in seguito, la linea Sense e quella di inibizione furono combinate in una sola. Ogni anello memorizzava un singolo stato digitale, ogni griglia bidimensionale era accessibile in un solo ciclo di clock e permetteva la manipolazione di un singolo anello. Impilando in modo opportuno un certo numero di griglie si poteva ottenere la lettura o scrittura di una parola in un solo ciclo di clock.
Gli anelli magnetici basavano la loro capacità di memorizzare le informazioni sull'isteresi del materiale ferromagnetico: gli anelli, sottoposti a un sufficiente campo magnetico, tendevano a mantenere lo stato magnetico fino a quando sopraggiungeva un nuovo campo magnetico opposto di adeguata intensità in grado di invertire la magnetizzazione del materiale. Come detto, ogni anello era attraversato dalle linee X e Y. Se si voleva scrivere un particolare anello si attivavano le sue linee X e Y con opportuna polarità: solo quell'anello vedeva l'intero campo magnetico (somma di quello portato dalle linee X e Y), mentre gli altri anelli si trovavano a vedere solo metà o nessun campo magnetico, quindi solo l'anello indirizzato veniva interessato da un campo magnetico sufficiente per modificare la polarità dela magnetizzazione.

### Scrittura e lettura

La lettura in questo genere di memorie è un'operazione relativamente complessa: si porta a 0 il bit indirizzato per la lettura e si pilotano le linee X e Y a metà potenza nella direzione che causa il campo magnetico che memorizza lo 0 nella memoria. Se la memoria è effettivamente a 0 non succede nulla, ma se la memoria conteneva un campo magnetico che indicava il bit 1 allora sulla linea di Sense si sarebbe letto un breve impulso elettrico dovuto al cambio di polarità del nucleo magnetico. Quindi il gestore della memoria, dopo aver indirizzato le opportune linee X e Y, controlla la linea di Sense della memoria per verificare la presenza di 0 o 1. Questa metodo di lettura è distruttivo, dato che altera i dati portando sempre la memoria allo stato 0.
La scrittura segue un principio simile, tranne che la memoria viene sempre posta a 1. La scrittura parte dal presupposto che le celle siano già a 0 per via di una precedente lettura e attiva le linee X e Y al fine di produrre una variazione di campo magnetico che porti il campo magnetico del nucleo magnetico fino allo stato 1. Se nella cella va effettivamente scritto 1 la procedura termina; se invece nella linea va posto il segnale 0 si impedisce la scrittura tramite la linea di inibizione. In questa linea viene fatta scorrere una piccola corrente in verso opposto che genera un campo magnetico opposto a quello generato dalle linee X e Y e che impedisce di modificare lo stato del nucleo lasciando quindi la memoria allo stato 0.
Dato che la linea di Sense e quella d'inibizione non venivano utilizzate contemporaneamente, si decise di utilizzare una sola linea per entrambe le funzioni con un apposito circuito che commutava la funzione della linea a seconda che ci fosse una lettura o una scrittura.
Dato che ogni lettura richiedeva anche una scrittura, molti computer si avvantaggiarono del fatto. I computer inclusero delle istruzioni in grado di mettere in pausa il processo di scrittura dopo quello di lettura. In questo modo se il computer doveva leggere e subito dopo scrivere la stessa cella di memoria poteva effettuare l'operazione in un solo passaggio. La memoria leggeva il dato, lo inviava al processore e si poneva in pausa. Il processore elaborava il dato e inviava il nuovo dato che veniva scritto direttamente dalla memoria durante l'operazione di scrittura necessaria per rigenerare lo stato della memoria. Questo permetteva di evitare una scrittura inutile velocizzando il computer.

### Altri tipologie di memorie magnetiche

Una variante delle memorie magnetiche basate sull'utilizzo di anelli posti lungo una linea (e non su una matrice come spiegato prima) vennero utilizzati per costruire dei registri per computer. Queste memorie erano dotate di linee di "word read" (lettura della parola), "word write" (scrittura della parola) e di linee di sense/write per ogni bit. Per leggere o cancellare la memoria si applicava la piena corrente alla linea di lettura della parola, questo azzerava i nuclei e produceva degli impulsi lungo le linee di sense/write se era presente un campo magnetico associato allo stato uno. Per scrivere il dato si poneva la linea di scrittura a metà potenza e le linee di sense/write venivano poste a metà potenza su ogni nucleo che si voleva impostare a uno. Questa configurazione permetteva di leggere e scrive più bit in parallelo per piano e quindi era più rapida della struttura classica a matrice, inoltre utilizzando più linee si potevano leggere e scrivere più parole in contemporanea.
Un'altra forma di memoria a nucleo magnetico era la core rope memory. Questa memorie era di tipo ROM, in questa memoria i nuclei magnetici servivano solamente come dei mini trasformatori, la presenza o assenza di un filo all'interno del nucleo magnetico produceva un diverso segnale elettrico che veniva letto come zero o uno dalla memoria.

### Caratteristiche fisiche

La velocità di queste memorie era dell'ordine del Megahertz (velocità analoga a quella dei computer degli anni ottanta come il Commodore 64 o l'Apple II). I primi sistemi avevano un tempo di lettura di 6 microsecondi, che in seguito venne ridotto fino a 1.2 microsecondi all'inizio degli anni settanta. Alla fine degli anni settanta si era arrivati ad avere dei modelli da 600 nanosecondi. Per rendere le memorie più veloci si potevano usare più griglie in parallelo in modo da effettuare letture e scritture simultanee.
Le memorie magnetiche mantenevano lo stato indefinitivamente anche senza alimentazione. Inoltre questa tipologia di memorie è relativamente poco soggetta agli impulsi elettromagnetici e alle radiazioni. Queste sono caratteristiche importanti nelle applicazioni spaziali e militari difatti queste memorie vennero utilizzate per molti anni in questi settori anche dopo la diffusione delle memorie a semiconduttori. Per esempio i computer dello Space Shuttle inizialmente utilizzavano questa tipologia di memorie. Le memorie magnetiche sopravvissero al disastro dello Space Shuttle Challenger e permisero alla commissione d'inchiesta di aver un resoconto su cosa misurò il computer prima dell'esplosione.
Una caratteristica di queste memorie è che sono pilotate in corrente e non in tensione come invece molti altri tipi di memoria. La selezione di un bit nelle memorie migliori richiedeva circa 400 mA, nelle memorie più lente e grandi la corrente richiesta era maggiore.
Una caratteristica delle memorie magnetiche è che il ciclo di isteresi è sensibile alla temperatura. Una variazione di temperatura richiedeva anche una variazione della corrente inserita nelle linee difatti i circuiti di gestione delle memorie includevano un sensore di temperatura al fine di fornire la giusta corrente alle linee. La DEC per i sistemi PDP utilizzava un sistema di condizionamento ad aria per mantenere la temperatura entro i limiti operativi. Altre società come IBM invece preferivano tenere le memorie a una temperatura di esercizio superiore a quella ambientale con dei riscaldatori, per esempio l'IBM 1620 utilizza dei riscaldatori che tenevano le memoria a 41 gradi e richiedevano fino a mezz'ora per andare in temperatura, sistemi come l'IBM 709, IBM 7090 e l'IBM 7030 invece utilizzano bagni d'olio per controllare la temperatura delle memorie.