
Zdjęcie z kolekcji autora
1. Historia
Pamięć bąbelkowa, czyli pamięć na cylindrycznych domenach magnetycznych, jest pamięcią nieulotną, opracowaną w Bell Labs w 1967 roku przez Andrew Bobecka. Badania wykazały, że małe cylindryczne domeny magnetyczne tworzą się w jednocyrkowych cienkowarstwowych ferrytach i granatach, gdy wystarczająco silne pole magnetyczne jest skierowane prostopadle do powierzchni warstwy. Zmieniając pole magnetyczne, można przesuwać te bąbelki. Takie właściwości sprawiają, że bąbelki magnetyczne są idealnym medium do budowy sekwencyjnych magazynów bitów, podobnych do rejestru przesuwnego, w którym obecność lub brak bąbelka na określonej pozycji oznacza zero lub jeden wartość bitu. Średnica bąbelka wynosi dziesiąte części mikrona, jeden chip może przechowywać tysiące bitów danych. Na przykład, wiosną 1977 roku Texas Instruments po raz pierwszy wprowadziła na rynek chip o pojemności 92304 bitów. Ta pamięć jest nieulotna, co czyni ją podobną do taśmy magnetycznej lub dysku, ale ponieważ jest to pamięć stałoprzewodowa i nie zawiera ruchomych części, jest bardziej niezawodna niż taśma lub dysk, nie wymaga konserwacji oraz ma znacznie mniejsze wymiary i wagę, a także może być używana w przenośnych urządzeniach.
Początkowo wynalazca pamięci bąbelkowej, Andrew Bobeck, zaproponował "jednowymiarową" wersję pamięci, w postaci nici, na którą nawinięta jest cienka taśma materiału ferromagnetycznego. Taka pamięć nazywała się „twistorem” i była nawet produkowana seryjnie, jednak wkrótce została wyparta przez „dwuwymiarową” wersję.
Możesz zapoznać się z historią powstania pamięci bąbelkowej w [1-3].
2. Zasada działania
Proszę wybaczyć, nie jestem fizykiem, więc przedstawienie będzie bardzo przybliżone.
Niektóre materiały (np. garnet gadolinowo-galinowy) mają właściwość namagnesowywania się tylko w jednym kierunku, a jeśli wzdłuż tej osi nałożymy stałe pole magnetyczne, namagnesowane obszary utworzą coś w rodzaju bąbelków, jak pokazano na poniższym rysunku. Każdy bąbelek ma zaledwie kilka mikronów średnicy.
Załóżmy, że mamy cienką, o grubości około 0,001 cala, krystaliczną folię wykonaną z takiego materiału, naniesioną na niemagnetyczny, na przykład szklany, podkład.

Wszystko sprowadza się do magicznych pęcherzyków. Obraz po lewej stronie - pole magnetyczne nie występuje, obraz po prawej stronie - pole magnetyczne skierowane jest prostopadle do powierzchni folii.
Jeśli na powierzchni folii z takiego materiału stworzymy wzór z materiału magnetycznego, na przykład z permalloyu, stopu żelaza i niklu, pęcherzyki będą przyciągane do elementów tego wzoru. Zazwyczaj stosuje się wzory w kształcie elementów T-kształtnych lub V-kształtnych.
Pojedynczy pęcherzyk może być formowany polem magnetycznym o wartości 100-200 erstedów, które działa prostopadle do folii magnetycznej, a jest wytwarzane przez magnes trwały. Podczas gdy obracające się pole magnetyczne, utworzone przez dwie cewki w kierunkach XY, pozwala przesuwać pęcherzyki-domeny z jednego „wyspy” magnetycznej do drugiej, jak pokazano na rysunku. Po czterokrotnej zmianie kierunku pola magnetycznego, domena przemieści się z jednej wyspy do sąsiedniej.

Wszystko to pozwala rozpatrywać urządzenie CMD jako rejestr przesuwny. Jeśli utworzymy pęcherze na jednym końcu rejestru i wykryjemy je na drugim, możemy wpisać określony wzór pęcherzyków w okrąg i używać systemu jako pamięci, odczytując i zapisując bity w określonych momentach czasu.
Stąd wynikają zalety i wady pamięci na CMD: zaletą jest niezależność od zasilania (dopóki działające prostopadłe pole wytwarzane przez magnesy trwałe utrzymuje pęcherzyki w miejscu, nie znikną one ani nie przesuną się ze swoich pozycji), a wadą - długi czas dostępu, ponieważ aby uzyskać dostęp do dowolnego bitu, trzeba obrócić cały rejestr przesuwny do odpowiedniej pozycji, a im jest on dłuższy, tym więcej cykli to wymaga.

Wzór elementów magnetycznych na folii magnetycznej CMD.
Tworzenie domeny magnetycznej nazywa się po angielsku „nucleation”, a polega na przyłożeniu prądu o natężeniu kilku set miliamperów przez około 100 ns, co generuje pole magnetyczne prostopadłe do folii i przeciwne do pola stałego magnesu. W wyniku tego powstaje „bąbel” magnetyczny — cylindryczna domena magnetyczna w folii. Niestety, proces ten w dużym stopniu zależy od temperatury, co może prowadzić do niepowodzenia w zapisaniu danych, w którym bąbel nie zostaje utworzony lub powstaje kilka bąbli.
Do odczytu danych z folii stosuje się kilka technik.
Jedna z metod, nieinwazyjne odczytywanie, polega na wykrywaniu słabego pola magnetycznego cylindrycznej domeny za pomocą czujnika magnetorezystywnego.
Drugą metodą jest destrukcyjne odczytywanie. Bąbel zostaje skierowany na specjalny tor generowania/wykrywania, na którym bąbel jest niszczony poprzez namagnesowanie materiału w kierunku prostym. Jeśli materiał był namagnesowany w przeciwnym kierunku, to znaczy, że bąbel był obecny, spowoduje to większy prąd w cewce, który jest wykrywany przez układ elektroniczny. Po tym bąbel powinien być ponownie wygenerowany na specjalnym torze zapisu.

Jednak, jeśli pamięć będzie zorganizowana jako jeden ciągły blok, będzie miała dwie poważne wady. Po pierwsze, czas dostępu będzie bardzo duży. Po drugie, jedna wada w łańcuchu doprowadzi do całkowitej awarii całego urządzenia. Dlatego pamięć organizuje się w postaci jednego głównego toru oraz wielu podległych torów, jak pokazano na rysunku.

Pamięć bąbelkowa z jednym ciągłym torem

Pamięć bąbelkowa z torami głównymi/podległymi
Taka konfiguracja pamięci pozwala nie tylko znacznie skrócić czas dostępu, ale również umożliwia produkcję urządzeń pamięci zawierających pewną liczbę uszkodzonych torów. Kontroler pamięci musi je uwzględniać i omijać podczas operacji odczytu/zapisu.
Na poniższym rysunku przedstawiony jest przekrój „chipu” pamięci bąbelkowej.

Możesz również przeczytać o zasadzie działania pamięci bąbelkowej w [4, 5].
3. Intel 7110
Intel 7110 — moduł pamięci szeregowej, MBM (pamięć magnetyczna) o pojemności 1 MB (1048576 bitów). To on jest przedstawiony na KDPW. 1 megabit to pojemność do przechowywania danych użytkowników, a wraz z nadmiarowymi ścieżkami całkowita pojemność wynosi 1310720 bitów. Urządzenie zawiera 320 pętli (loops) o pojemności 4096 bitów każda, ale do danych użytkowników wykorzystywane jest tylko 256 z nich, reszta to rezerwa na wymianę „uszkodzonych” ścieżek oraz do przechowywania nadmiarowego kodu korekcji błędów. Urządzenie ma architekturę „główna ścieżka-ścieżki podrzędne” (major track-minor loop). Informacje o aktywnych ścieżkach znajdują się w osobnej ścieżce rozruchowej (bootstrap loop). Na KDPW można zobaczyć kod szesnastkowy wydrukowany bezpośrednio na module. To mapa „uszkodzonych” ścieżek, 80 cyfr szesnastkowych reprezentuje 320 ścieżek danych, aktywne są reprezentowane przez bit 1, a nieaktywne przez bit 0.
Możesz zapoznać się z oryginalną dokumentacją modułu w [7].
Urządzenie ma obudowę z dwurzędowym rozmieszczeniem pinów i montuje się bez lutowania (w gnieździe).
Struktura modułu przedstawiona jest na rysunku:

Tablica pamięci dzieli się na dwie „połówki” (half sections), z których każda dzieli się na dwie „ćwiartki” (quads), każda ćwiartka ma 80 podrzędnych ścieżek. Moduł zawiera płytkę z materiałem magnetycznym umieszczoną wewnątrz dwóch ortogonalnych cewek, tworzących wirujące pole magnetyczne. W tym celu na cewki podawane są sygnały prądu w kształcie trójkąta, przesunięte o 90 stopni względem siebie. Zespół z płytki i cewek umieszczony jest między magnesami stałymi oraz włożony do ekranu magnetycznego, który zamyka strumień magnetyczny generowany przez magnesy stałe i ekranował urządzenie przed zewnętrznymi polami magnetycznymi. Płytka jest umieszczona pod kątem 2,5 stopnia, co tworzy niewielkie przesunięcie pola wzdłuż nachylenia. To pole jest znikome w porównaniu z polem cewek i nie przeszkadza w ruchu pęcherzyków podczas pracy urządzenia, ale przesuwa pęcherzyki w stałe pozycje względem elementów permalojujących, gdy urządzenie jest wyłączone. Silna komponenta prostopadła magnesów stałych utrzymuje istnienie magnetycznych domen pęcherzykowych.

Moduł zawiera następujące węzły:
- Ścieżki pamięci. To właśnie te ścieżki z elementów permalowe, które zatrzymują i kierują bańkami.
- Generator replikacji. Służy do replikacji bańki, która nieustannie znajduje się w miejscu generacji.
- Ścieżka wejściowa i węzły wymiany. Wygenerowane bańki poruszają się wzdłuż ścieżki wejściowej. Bańki przemieszczają się do jednej z 80 podrzędnych ścieżek.
- Ścieżka wyjściowa i węzeł replikacji. Bańki są odczytywane z ścieżek danych bez ich zniszczenia. Bańka jest dzielona na dwie części, z których jedna kierowana jest na ścieżkę wyjściową.
- Detektor. Bańki z ścieżki wyjściowej trafiają do detektora magnetorezystancyjnego.
- Ścieżka rozruchowa. Ścieżka rozruchowa zawiera informacje o aktywnych i nieaktywnych ścieżkach danych.
Poniżej przyjrzymy się tym węzłom dokładniej. Możesz także zapoznać się z opisem tych węzłów w [6].
Generacja bańki

Aby wygenerować bańkę, na początku ścieżki wejściowej znajduje się przewodnik, wygięty w małą pętlę. Podawany jest impuls prądu, który w bardzo małym obszarze tworzy pole magnetyczne silniejsze niż pole magnesów stałych. Impuls w tym miejscu tworzy bańkę, która pozostaje stała, wspierana przez stałe pole magnetyczne, i krąży wzdłuż elementu permalowego pod wpływem wirującego pola magnetycznego. Jeśli musimy zapisać jedynkę w pamięci, podajemy krótki impuls do przewodzącej pętli, a w rezultacie rodzą się dwie bańki (na rysunku oznaczone jako Bubble split seed). Jedna z baniek kieruje się wzdłuż ścieżki permalowej pod wpływem wirującego pola, druga pozostaje na miejscu i szybko przybiera pierwotny rozmiar. Następnie przemieszcza się do jednej z podrzędnych ścieżek i zamienia się miejscami z bańką, która tam krąży. Ta z kolei dociera do końca ścieżki wejściowej i znika.
Wymiana baniek

Wymiana baniek zachodzi, gdy do odpowiedniego przewodnika podawany jest impuls prądu prostokątnego. W tym momencie nie dochodzi do podziału bańki na dwie części.
Odczyt danych

Dane są przesyłane na tor wyjściowy poprzez replikację i dalej krążą w swoim torze po odczycie. W ten sposób w tym urządzeniu wprowadzono nieniszczący sposób odczytu. Aby wykonać replikację, bąbel kierowany jest pod podłużny element z permalloju, pod którym się rozciąga. Na górze znajduje się również przewodnik w kształcie pętli; jeśli do pętli zostanie podany impuls prądu, bąbel podzieli się na dwie części. Impuls prądu składa się z krótkiego odcinka o dużym natężeniu prądu, aby podzielić bąbel na dwie części, a następnie z dłuższego odcinka o mniejszym natężeniu, aby skierować bąbel na tor wyjściowy.
Na końcu toru wyjściowego znajduje się detektor bąbla, mostek magnetorezystywny wykonany z elementów permallowych, tworzących długą pętlę. Gdy bąbel magnetyczny dostaje się pod element permallowy, jego oporność się zmienia, a na wyjściu mostka pojawia się różnica potencjałów na poziomie kilku milivoltów. Kształt elementów permallowych został dobrany tak, aby bąbel poruszał się wzdłuż nich; na końcu trafia na specjalną „ochronną” szynę i znika.
Nadwyżka
Urządzenie zawiera 320 torów, z których każdy ma 4096 bitów. Z tego 272 aktywnych, 48 zapasowych, nieaktywnych.
Tor rozruchowy (Boot Loop)
Urządzenie zawiera 320 torów danych, z których 256 przeznaczone jest do przechowywania danych użytkownika, a pozostałe mogą być uszkodzone lub mogą służyć jako zapasowe do wymiany uszkodzonych. Jeden dodatkowy tor zawiera informacje o użyciu torów danych, 12 bitów na każdy tor. Gdy system zostaje zasilony, musi zostać zainicjowany. W procesie inicjalizacji kontroler musi odczytać tor rozruchowy i zapisać informacje z niego w specjalnym rejestrze układu formatowania/czujnika prądu. Wówczas kontroler będzie używać tylko aktywnych torów, a nieaktywne będą ignorowane i nie będzie na nich dokonywana zapis.
Przechowywanie danych — struktura
Z perspektywy użytkownika dane są przechowywane w 2048 stronach po 512 bitów każda. 256 bajtów danych, 14 bitów kodu korekcji błędów i 2 nieużywane bity są przechowywane w każdej połowie urządzenia.
Korekcja błędów
Wykrywanie i korekcja błędów mogą być realizowane przez układ scalony czujnika prądu, który zawiera dekoder 14-bitowego kodu, korygującego pojedynczy błąd długości do 5 bitów (błąd burst) w każdym bloku 270 bitów (łącznie z samym kodem). Kod jest dopisywany na końcu każdego bloku 256-bitowego. Kod korekcji może być używany lub nie, według woli użytkownika, a sprawdzenie kodu może być włączone lub wyłączone w kontrolerze. Jeśli kod nie jest używany, wszystkie 270 bitów mogą być wykorzystane na dane użytkownika.
Czas dostępu
Pole magnetyczne obraca się z częstotliwością 50 kHz. Średni czas dostępu do pierwszego bitu pierwszej strony wynosi 41 ms, co stanowi połowę czasu potrzebnego do wykonania pełnego cyklu na ścieżce plus czas przejścia zewnętrznej ścieżki.
320 aktywnych i zapasowych ścieżek jest podzielonych na cztery części po 80 ścieżek każda. Taka organizacja skraca czas dostępu. Czwórki są adresowane parami: każda para czwórek zawiera parzyste i nieparzyste bity słowa odpowiednio. Urządzenie zawiera cztery wejściowe ścieżki z czterema początkowymi bąbelkami i cztery wyjściowe ścieżki. Wyjściowe ścieżki korzystają z dwóch detektorów, które są zorganizowane w taki sposób, że do jednego detektora nigdy nie trafiają dwa bąbelki z dwóch ścieżek jednocześnie. W ten sposób cztery strumienie bąbelków są multiplexowane i przekształcane w dwa strumienie bitów, a następnie przechowywane w rejestrach układu scalonego czujnika prądu. Tam zawartość rejestrów jest ponownie multiplexowana i przez interfejs szeregowy trafia do kontrolera.
W drugiej części artykułu dokładniej przyjrzymy się schematowi kontrolera pamięci bąbelkowej.
4. Lista literatury
Autor znalazł w najciemniejszych zakątkach sieci i zgromadził dla was masę przydatnych informacji technicznych o pamięci CMMD, jej historii i innych powiązanych aspektach:
1. — Dwie pamięci inżyniera Bobka
2. — Dwie pamięci inżyniera Bobka (część 2)
3. — Pamięć bąbelkowa
4. Adaptacja pamięci magnetycznej bąbelkowej w standardowym środowisku mikrokomputerowym
5. — Pamięć bąbelkowa Texas Instruments TIB 0203
6. — Podręcznik komponentów pamięci. Intel 1983.
7. 7110 1-megabajtowa pamięć bąbelkowa
Źródło: habr.com
