Propongo un articolo "vintage" apparso sul mio vecchio sito (non più online) riguardante le sperimentazioni condotte sulle memorie a nucleo magnetico.
Indice |
Premessa
L’interesse verso questo tipo di memoria nasce dalle letture fatte sul AGC (Apollo Guidance Computer) questo computer è stato creato negli anni ’60 per il viaggio spaziale e l’esplorazione lunare, era installato sulle navicelle Apollo (CM) e sui moduli lunari (LEM), il suo pannello di controllo aveva l’aspetto di una grossa calcolatrice con una tastiera, un display a segmenti (VFD) e una decina di spie luminose, era denominato “DSKY” dalla contrazione (DIS)play-(KEY)board. I compiti del computer erano garantire l’orientamento della navetta, (collimando stelle fisse con i periscopi/giroscopi) il computer acquisiva dei punti fissi su cui basarsi per calcolare le rotte.
L’output sul DISKEY erano numeri, di un colore verde brillante, e ci si interagiva con un linguaggio (Verb = azione, Noun = dato sul quale compiere l'azione), ogni programma e "menu", era indicato da un numero ele pagine del sottomenu o le scelte, da altri numeri, agli astronauti era richiesto di impararli a memoria, quando invece il software richiedeva l’inserimento di un parametro da parte dell’utente, il display lampeggiava. Il suo software, sistema operativo e applicativi tutto in uno, era letteralmente “cucito” nei nuclei magnetici di una rope-memory e si chiamava COLOSSUS 249. Questo aveva una grande qualità, essendo il computer "poco potente" si decise di progettare il software in un modo che i vari Task veniva assegnata una priorità e se il computer era sovraccarico poteva tralasciare operazioni considerate poco importanti come ad esempio aggiornare il display. Mi incuriosiva sapere quali erano le sue caratteristiche, “clock” e quantità di RAM. Aveva grande potenza per il tempo (1MHz), fatto totalmente di circuiti integrati (inventati in quel periodo), aveva la capacità di lavorare in multitasking. Rimasi colpito dall’aspetto costruttivo di tutto il computer ma due parti mi conquistarono, erano la RAM (1KB a parole da 16bit, core-memory) e la ROM (12KB, rope-memory) che conteneva COLOSSUS 249, nessuna unità nastro o disco.
Storia
Le memorie a nucleo magnetico (magnetic core memory) sono state utilizzate nei computer digitali dagli anni ’50, fino agli anni ’70 quando l’avvento dei chip di memoria le ha definitivamente rese obsolete. Secondo alcune fonti alcune macchine con RAM a nucleo magnetico sarebbero sopravvissute fino all’anno 2004 in alcuni sistemi di controllo telefonico (non documentato). Memorie di questo tipo sono rimaste in servizio sui computer dello space Shuttle, in quanto rispondono a criteri di affidabilità difficilmente raggiungibili dalle memorie moderne, sono impiegate in quanto immuni alle radiazioni presenti nello spazio.
Principio di Funzionamento
Il principio sul quale è fondato il funzionamento di queste
memorie è abbastanza semplice, tuttavia la difficoltà nella costruzione ele dimensioni dell’installazione in relazione alla sua capacità in Byte, rendono sconveniente l’utilizzo di queste memorie.Dobbiamo vedere questa tecnologia come superata, ma a volte la parolasuperata non è sinonimo di scarsa funzionalità, questo tipo di memorie sono efficienti, veloci ed affidabili, infatti mantengono l’informazioneanche quando viene rimossa l’alimentazione, una caratteristica piacevole se si è nello spazio e si interrompe o si deve togliere l’alimentazione.
Le velocità di accesso va dai 200 KHz a 1 MHz, l’informazione (BIT) presente in un nucleo può essere cancellata solo ri-magnetizzando il nucleo oppure smagnetizzandolo.
E’ sicuramente buona norma, non avvicinare oggetti magnetici ai nuclei, questi sono fabbricati per pressatura a caldo di una specifica mescola di polveri non conduttive di ossido di ferro, sono di varie dimensioni, di forma toroidale (ciambella) a sezione quadrata.
Decidiamo in modo arbitrario di assegnare il valore binario 1 a nuclei che sono magnetizzati in senso orario e di assegnare il binario 0 a nuclei magnetizzati in senso antiorario.
Guardando un nucleo poggiato davanti a noi ed avendo il filo uscente dal nucleo e diretto verso di noi, abbiamo un 1 binario se la corrente è entra nel nucleo e uno 0 se la corrente è uscente, si ribadisce che questa è una convenzione per questo progetto, quindi non bisogna assumerla per altri progetti simili o per eventuali moduli di core-memory prodotti da aziende specializzate.
La magnetizzazione del nucleo avviene per induzione, al passare di un impulso elettrico nei fili che attraversano il nucleo, questi fili sono gli address wire, gli indirizzi della memoria, ci torneremo più tardi.Se consideriamo un array di memoria costituito da 4 bit, possiamo vedere come avviene l’indirizzamento di un bit di memoria, per leggere o scrivere su un nucleo dobbiamo inviare un impulso di corrente all’indirizzo voluto, nell’esempio X1-Y1, in questo modo magnetizziamo il nucleo in senso orario (binario 1) o in senso antiorario (binario 0). Nell’esempio riportato il senso delle correnti fa in modo che il bit numero 1 sia magnetizzato come uno 0 binario (senso di rotazione del flusso magnetico antiorario).
Gli osservatori più attenti, potranno obiettare: “ma perché anche il nucleo bit 2 non si è magnetizzato ? anche lui è attraversato dalla corrente che scorre sul filo Y1. Questo non può avvenire, perché la corrente che scorre su un filo è la metà della corrente necessaria a magnetizzare un nucleo, quindi tutti i nuclei attraversati dal filo Y1 subiranno ½ dell’energia necessaria alla magnetizzazione, mentre solo il nucleo bit 1 verrà attraversato dalla corrente necessaria, ½ di questa corrente gli arriva lungo Y1 e ½ gli arriva lungo X1.
Lettura e Scrittura
Il ciclo di lettura e scrittura di questa RAM è un ciclo distruttivo, questo significa che per leggere un byte (8 bi quindi 8 nuclei) dobbiamo riscriverci sopra, questa modalità verrà resa chiara in questo paragrafo. Come già accennato la capacità più interessante di queste memorie e che mantengono l’informazione anche quando l’alimentazione viene tolta, tuttavia possono presentarsi dei problemi nei casi in cui l’alimentazione venga tolta durante un ciclo di lettura o scrittura, infatti ci ritroveremo con un byte scritto a metà quindi con un byte ha cambiato valore dall’originale ma continua ad avere senso.Supponiamo di avere la nostra RAM di 4 bit e di voler conoscere il valore memorizzato in ogni nucleo, attiviamo un ciclo di lettura, per convenzione scriviamo il valore binario 1 in tutti i nuclei.Possiamo avere due casi, il primo in cui il nucleo contiene già il valore 1 (magnetizzato in senso orario), quindi al nuovo tentativo di magnetizzazione (scrittura di un 1) il campo magnetico dentro al nucleo non cambia.Il nucleo contiene il valore 0 (magnetizzato in senso antiorario), quindi al nuovo tentativo di magnetizzazione (scrittura di un 1) il campo magnetico all’interno del nucleo è forzato a cambiare direzione, ad annullarsi ed infine a riprendere in verso contrario, magnetizzando il nucleo nell’altro senso (orario). In questo caso l’effetto su un terzo filo che attraversa i nuclei sense wire è molto diverso da quello che si può osservare nel caso 1.
Controllers e Drivers
Per leggere e scrivere una memoria di questo tipo serve una circuiteria di contorno alla quale via software (ES. tramite Arduino o un altro MCU) inviamo l’indirizzo del Byte da leggere e questo ci restituisce il suo valore, oppure inviamo una Byte da scrivere e questi lo scrive dove ha spazio.Questo approccio poteva avere senso molto tempo fa, perché avrebbe fatto lavorare meno la CPU del computer, ma ai fini di questo esperimento ed avendo una “CPU” esuberante in termini di prestazioni, possiamo implementare molte operazioni via software, diminuendo la complessità costruttiva del controller ed il suo costo.In linea generale i circuiti di controllo sono costituiti da driver capaci di iniettare sul filo (address wire) un impulso di corrente di una certa durata e di farlo in entrambi i versi, in quanto la nostra capacità di scrivere 1 o 0 è data dal senso della corrente (vedi schema 1).
Sense Wire
In realtà nella RAM esiste un terzo filo che attraversa ogni nucleo, questi è chiamato sense wire, questo filo ci serve a “sentire” quando avviene un cambiamento di campo magnetico come quello indicato precedentemente nel punto 2).
Nel caso 1) indicato nel precedente paragrafo (scrittura di un 1 su un 1 preesistente) un impulso sul sense wire viene generato, ma questo impulso è molto diverso dall’impulso che invece si genera nel caso 2) quando forziamo un nucleo a cambiare verso della magnetizzazione.Mettendo tutte queste cose insieme possiamo vedere l’algoritmo di lettura completo:
scrittura di un 1 binario sul nucleo BIT1, impulso elettrico su X1 e Y1, contemporaneamente lettura sul sense wire,
se l’impulso è “piccolo” allora il nucleo era già un 1
se l'impulso è “grande” allora il nucleo era uno 0
Prima si era parlato di lettura distruttiva, ed infatti nell’esempio, per scoprire che un nucleo è 0 dobbiamo cambiare il suo valore in 1, da questo punto risulta ovvio che quando leggiamo, facciamo un ciclo che permuta tutti gli indirizzi della parola da leggere (Es. 1 byte 8 bit, 8 nuclei), immagazziniamo il valore letto da qualche parte e poi riscriviamo il byte come era prima della lettura.
Bus di Controllo e Bus Dati
Nell’architettura dei computer esistono due linee principali attraverso le quali si accede alla RAM per scrivere o leggere i dati, una è il bus dati, dal quale i dati vengono inviati e ritornano, ed una è il bus di controllo dal quale passano i “comandi” perché la RAM sia attivata e per inviare l’indirizzo delle locazioni di memoria che si vogliono leggere e scrivere.E’ evidente che non possiamo avere un BUS per gli indirizzi grande quanti sono gli address wire in una RAM costituita da 8 Byte e contenente 64 nuclei avremo 16 address wire più due sense wire. Esistono delle configurazioni di array di memoria molto complesse come percorso dei fili, queste sono state sviluppate perché aumentando la capacità della RAM si avrebbe a che fare con migliaia di address wire e quindi con una circuiteria di controllo imponente, questi diversi layout di memoria non verranno trattati qui, ma potranno essere trovati nella bibliografia, indicata a fondo pagina.
Disturbi e Problemi
Un sistema costituito da fili, nuclei magnetici è attraversato da campi elettrici e magnetici, è sicuramente incline a subire disturbi e problemi di vario tipo, fortunatamente questi problemi diventano apprezzabili sono quando gli array di memoria diventano grandi, ed in quelle condizioni anche la temperatura gioca il suo ruolo nelle proprietà magnetiche dei nuclei, in questi sistemi di grosse dimensioni il sense wire è sottoposto ad accoppiamenti vari (induttivi e capacitivi) che generano disturbi nello stesso.I pratica banchi di memoria magnetica di grandi dimensioni devono avere circuiti di lettura e scrittura nei quali i segnali devono avere tolleranze più strette per funzionare in modo corretto.
Prototipi e Test
Il prototipo mostrato nelle foto seguenti è costituito da 64 nuclei del diametro esterno di 2 mm, organizzati in 8 parole da 8 bit, in pratica 8 Byte di RAM, si è tentato di miniaturizzare il più possibile la costruzione tuttavia è impossibile ridurre ancora le dimensioni senza l'ausilio di un montaggio "meccanizzato"
alcune foto dei drivers e della realizzazione del prototipo
conclusione
Il prototipo realizzato ha permesso di sperimentare questa tecnica ormai obsoleta, ma il suo funzionamento è talvolta erratico se si cerca di scrivere velocemente (a causa dell'implementazione sbrigativa), tuttavia è interessante notare che memorie di questo tipo potrebbero essere realizzate anche in forma di ROM per caricare un programma fisso in memoria.

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)